@plait/mind 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.
@@ -11,4 +11,4 @@ export const MindNode = {
11
11
  return node;
12
12
  }
13
13
  };
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2ludGVyZmFjZXMvbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkEsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHO0lBQ3BCLEdBQUcsQ0FBQyxJQUFjLEVBQUUsSUFBVTtRQUMxQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsSUFBSSxHQUFHLENBQUMsQ0FBQzthQUNqRTtZQUNELElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNaW5kTGF5b3V0VHlwZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IFBhdGggfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4vZWxlbWVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluZE5vZGUge1xuICAgIGRlcHRoOiBudW1iZXI7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICAgIGhHYXA6IG51bWJlcjtcbiAgICB2R2FwOiBudW1iZXI7XG4gICAgY2hpbGRyZW46IE1pbmROb2RlW107XG4gICAgb3JpZ2luOiBNaW5kRWxlbWVudDtcbiAgICBwYXJlbnQ6IE1pbmROb2RlO1xuICAgIGxlZnQ6IGJvb2xlYW47XG4gICAgdXA6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBNaW5kTm9kZSA9IHtcbiAgICBnZXQocm9vdDogTWluZE5vZGUsIHBhdGg6IFBhdGgpIHtcbiAgICAgICAgbGV0IG5vZGUgPSByb290O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHAgPSBwYXRoW2ldO1xuICAgICAgICAgICAgaWYgKCFub2RlIHx8ICFub2RlLmNoaWxkcmVuIHx8ICFub2RlLmNoaWxkcmVuW3BdKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhIGRlc2NlbmRhbnQgYXQgcGF0aCBbJHtwYXRofV1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGUgPSBub2RlLmNoaWxkcmVuW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbn07XG5cbi8vIG1pbmQgbm9kZSBleHRlbmQg5pSv5oyB55qE5biD5bGA57G75Z6LXG5leHBvcnQgdHlwZSBFeHRlbmRMYXlvdXRUeXBlID0gRXhjbHVkZTxNaW5kTGF5b3V0VHlwZSwgTWluZExheW91dFR5cGUuc3RhbmRhcmQ+O1xuXG5leHBvcnQgdHlwZSBDb29yZGluYXRlVHlwZSA9IHtcbiAgICBzdGFydFg6IG51bWJlcjtcbiAgICBzdGFydFk6IG51bWJlcjtcbiAgICBlbmRYOiBudW1iZXI7XG4gICAgZW5kWTogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRXh0ZW5kVW5kZXJsaW5lQ29vcmRpbmF0ZVR5cGUgPSB7XG4gICAgW2tleSBpbiBFeHRlbmRMYXlvdXRUeXBlXTogQ29vcmRpbmF0ZVR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBEZXRlY3RSZXN1bHQgPSAndG9wJyB8ICdib3R0b20nIHwgJ3JpZ2h0JyB8ICdsZWZ0JyB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIFJvb3RCYXNlRGlyZWN0aW9uID0gJ3JpZ2h0JyB8ICdsZWZ0JyB8IG51bGw7XG4iXX0=
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL2ludGVyZmFjZXMvbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkEsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHO0lBQ3BCLEdBQUcsQ0FBQyxJQUFjLEVBQUUsSUFBVTtRQUMxQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsSUFBSSxHQUFHLENBQUMsQ0FBQzthQUNqRTtZQUNELElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNaW5kTGF5b3V0VHlwZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IFBhdGggfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4vZWxlbWVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluZE5vZGUge1xuICAgIGRlcHRoOiBudW1iZXI7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICAgIGhHYXA6IG51bWJlcjtcbiAgICB2R2FwOiBudW1iZXI7XG4gICAgY2hpbGRyZW46IE1pbmROb2RlW107XG4gICAgb3JpZ2luOiBNaW5kRWxlbWVudDtcbiAgICBwYXJlbnQ6IE1pbmROb2RlO1xuICAgIGxlZnQ6IGJvb2xlYW47XG4gICAgdXA6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBNaW5kTm9kZSA9IHtcbiAgICBnZXQocm9vdDogTWluZE5vZGUsIHBhdGg6IFBhdGgpIHtcbiAgICAgICAgbGV0IG5vZGUgPSByb290O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHAgPSBwYXRoW2ldO1xuICAgICAgICAgICAgaWYgKCFub2RlIHx8ICFub2RlLmNoaWxkcmVuIHx8ICFub2RlLmNoaWxkcmVuW3BdKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhIGRlc2NlbmRhbnQgYXQgcGF0aCBbJHtwYXRofV1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGUgPSBub2RlLmNoaWxkcmVuW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbn07XG5cbmV4cG9ydCB0eXBlIEV4dGVuZExheW91dFR5cGUgPSBFeGNsdWRlPE1pbmRMYXlvdXRUeXBlLCBNaW5kTGF5b3V0VHlwZS5zdGFuZGFyZD47XG5cbmV4cG9ydCB0eXBlIENvb3JkaW5hdGVUeXBlID0ge1xuICAgIHN0YXJ0WDogbnVtYmVyO1xuICAgIHN0YXJ0WTogbnVtYmVyO1xuICAgIGVuZFg6IG51bWJlcjtcbiAgICBlbmRZOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBFeHRlbmRVbmRlcmxpbmVDb29yZGluYXRlVHlwZSA9IHtcbiAgICBba2V5IGluIEV4dGVuZExheW91dFR5cGVdOiBDb29yZGluYXRlVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIERldGVjdFJlc3VsdCA9ICd0b3AnIHwgJ2JvdHRvbScgfCAncmlnaHQnIHwgJ2xlZnQnIHwgbnVsbDtcblxuZXhwb3J0IHR5cGUgUm9vdEJhc2VEaXJlY3Rpb24gPSAncmlnaHQnIHwgJ2xlZnQnIHwgbnVsbDtcbiJdfQ==
@@ -131,7 +131,7 @@ export const withNodeDnd = (board) => {
131
131
  let insertPath = targetPathRef.current;
132
132
  const parentPath = Path.parent(targetPathRef.current || targetPath);
133
133
  if (!insertPath) {
134
- //当插入位置和选中节点位置相同时,使用记录的 previousPath
134
+ // When the insertion position and the selected node position are the same, the recorded previousPath is used
135
135
  const previousPath = targetPreviousPathRef && targetPreviousPathRef.unref();
136
136
  if (previousPath) {
137
137
  insertPath = Path.next(previousPath);
@@ -175,4 +175,4 @@ export const withNodeDnd = (board) => {
175
175
  };
176
176
  return board;
177
177
  };
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1ub2RlLWRuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1ub2RlLWRuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsNEJBQTRCLEVBQzVCLElBQUksRUFDSixVQUFVLEVBRVYsT0FBTyxFQUNQLGNBQWMsRUFDZCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsU0FBUyxFQUNULGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsY0FBYyxFQUNkLG9CQUFvQixFQUN2QixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcvRCxPQUFPLEVBQ0gsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyx3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLGlDQUFpQyxFQUNwQyxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFF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YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIFBhdGgsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICB0b1BvaW50LFxuICAgIHRyYW5zZm9ybVBvaW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBkZXB0aEZpcnN0UmVjdXJzaW9uLFxuICAgIGNyZWF0ZUcsXG4gICAgUGxhaXROb2RlLFxuICAgIFBsYWl0UG9pbnRlclR5cGUsXG4gICAgaXNNYWluUG9pbnRlcixcbiAgICBDb3JlVHJhbnNmb3JtcyxcbiAgICBnZXRIaXRFbGVtZW50QnlQb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUsIGdldE5vbkFic3RyYWN0Q2hpbGRyZW4gfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IERldGVjdFJlc3VsdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5cbmltcG9ydCB7XG4gICAgZGVsZXRlRWxlbWVudEhhbmRsZUFic3RyYWN0LFxuICAgIGRlbGV0ZUVsZW1lbnRzSGFuZGxlUmlnaHROb2RlQ291bnQsXG4gICAgZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0LFxuICAgIGdldEZpcnN0TGV2ZWxFbGVtZW50LFxuICAgIGdldE92ZXJhbGxBYnN0cmFjdHMsXG4gICAgZ2V0VmFsaWRBYnN0cmFjdFJlZnMsXG4gICAgaW5zZXJ0RWxlbWVudEhhbmRsZUFic3RyYWN0LFxuICAgIGluc2VydEVsZW1lbnRIYW5kbGVSaWdodE5vZGVDb3VudFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBhZGRBY3RpdmVPbkRyYWdPcmlnaW4sIGlzRHJhZ2dpbmcsIGlzRHJvcFN0YW5kYXJkUmlnaHQsIHJlbW92ZUFjdGl2ZU9uRHJhZ09yaWdpbiwgc2V0SXNEcmFnZ2luZyB9IGZyb20gJy4uL3V0aWxzL2RuZC9jb21tb24nO1xuaW1wb3J0IHsgZGV0ZWN0RHJvcFRhcmdldCwgZ2V0UGF0aEJ5RHJvcFRhcmdldCB9IGZyb20gJy4uL3V0aWxzL2RuZC9kZXRlY3Rvcic7XG5pbXBvcnQgeyBkcmF3RmFrZURyYWdOb2RlLCBkcmF3RmFrZURyb3BOb2RlIH0gZnJvbSAnLi4vdXRpbHMvZHJhdy9ub2RlLWRuZCc7XG5pbXBvcnQgeyBNaW5kVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgYWRqdXN0QWJzdHJhY3RUb05vZGUgfSBmcm9tICcuLi91dGlscy9ub2RlL2FkanVzdC1ub2RlJztcblxuY29uc3QgRFJBR19NT1ZFX0JVRkZFUiA9IDU7XG5cbmV4cG9ydCBjb25zdCB3aXRoTm9kZURuZCA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsgcG9pbnRlckRvd24sIHBvaW50ZXJNb3ZlLCBnbG9iYWxQb2ludGVyVXAgfSA9IGJvYXJkO1xuXG4gICAgbGV0IGFjdGl2ZUVsZW1lbnRzOiBNaW5kRWxlbWVudFtdID0gW107XG4gICAgbGV0IGNvcnJlc3BvbmRpbmdFbGVtZW50czogTWluZEVsZW1lbnRbXSA9IFtdO1xuICAgIGxldCBzdGFydFBvaW50OiBQb2ludDtcbiAgICBsZXQgZHJhZ0Zha2VOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGZha2VEcm9wTm9kZUc6IFNWR0dFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIGxldCBkcm9wVGFyZ2V0OiB7IHRhcmdldDogTWluZEVsZW1lbnQ7IGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0IH0gfCBudWxsID0gbnVsbDtcbiAgICBsZXQgdGFyZ2V0UGF0aDogUGF0aDtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSB8fFxuICAgICAgICAgICAgUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcoYm9hcmQpIHx8XG4gICAgICAgICAgICAhUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSB8fFxuICAgICAgICAgICAgIWlzTWFpblBvaW50ZXIoZXZlbnQpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRIaXRFbGVtZW50QnlQb2ludChib2FyZCwgcG9pbnQpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBoaXRFbGVtZW50ICYmXG4gICAgICAgICAgICBNaW5kRWxlbWVudC5pc01pbmRFbGVtZW50KGJvYXJkLCBoaXRFbGVtZW50KSAmJlxuICAgICAgICAgICAgIVBsYWl0TWluZC5pc01pbmQoaGl0RWxlbWVudCkgJiZcbiAgICAgICAgICAgICFBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChoaXRFbGVtZW50KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzID0gc2VsZWN0ZWRFbGVtZW50cy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgZWxlbWVudCA9PiBNaW5kRWxlbWVudC5pc01pbmRFbGVtZW50KGJvYXJkLCBlbGVtZW50KSAmJiAhZWxlbWVudC5pc1Jvb3QgJiYgIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpXG4gICAgICAgICAgICApIGFzIE1pbmRFbGVtZW50W107XG4gICAgICAgICAgICBjb25zdCBpc011bHRpcGxlID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPiAwICYmIHNlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMoaGl0RWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnRzID0gdGFyZ2V0RWxlbWVudHM7XG4gICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IHBvaW50O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVFbGVtZW50cyA9IFtoaXRFbGVtZW50XTtcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gcG9pbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWN0aXZlRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb3JyZXNwb25kaW5nRWxlbWVudHMgPSBnZXRPdmVyYWxsQWJzdHJhY3RzKGJvYXJkLCBhY3RpdmVFbGVtZW50cyk7XG4gICAgICAgIH1cblxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgLy8gY29uc3QgeHggPSBhY3RpdmVFbGVtZW50cy5cbiAgICAgICAgaWYgKCFib2FyZC5vcHRpb25zLnJlYWRvbmx5ICYmIGFjdGl2ZUVsZW1lbnRzLmxlbmd0aCAmJiBzdGFydFBvaW50KSB7XG4gICAgICAgICAgICAvLyBwcmV2ZW50IHRleHQgZnJvbSBiZWluZyBzZWxlY3RlZFxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KHN0YXJ0UG9pbnRbMF0sIHN0YXJ0UG9pbnRbMV0sIGVuZFBvaW50WzBdLCBlbmRQb2ludFsxXSk7XG4gICAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBEUkFHX01PVkVfQlVGRkVSKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRJc0RyYWdnaW5nKGJvYXJkLCB0cnVlKTtcblxuICAgICAgICAgICAgZmFrZURyb3BOb2RlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjb25zdCBkZXRlY3RQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgICAgIGRyb3BUYXJnZXQgPSBkZXRlY3REcm9wVGFyZ2V0KGJvYXJkLCBkZXRlY3RQb2ludCwgZHJvcFRhcmdldCwgWy4uLmFjdGl2ZUVsZW1lbnRzLCAuLi5jb3JyZXNwb25kaW5nRWxlbWVudHNdKTtcbiAgICAgICAgICAgIGlmIChkcm9wVGFyZ2V0Py50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRQYXRoID0gZ2V0UGF0aEJ5RHJvcFRhcmdldChib2FyZCwgZHJvcFRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBmYWtlRHJvcE5vZGVHID0gZHJhd0Zha2VEcm9wTm9kZShib2FyZCwgZHJvcFRhcmdldCwgdGFyZ2V0UGF0aCk7XG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKS5hcHBlbmRDaGlsZChmYWtlRHJvcE5vZGVHKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0WCA9IGVuZFBvaW50WzBdIC0gc3RhcnRQb2ludFswXTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldFkgPSBlbmRQb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV07XG4gICAgICAgICAgICBkcmFnRmFrZU5vZGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGRyYWdGYWtlTm9kZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgICAgICBbLi4uYWN0aXZlRWxlbWVudHMsIC4uLmNvcnJlc3BvbmRpbmdFbGVtZW50c10uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICBhZGRBY3RpdmVPbkRyYWdPcmlnaW4oZWxlbWVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZUcgPSBkcmF3RmFrZURyYWdOb2RlKGJvYXJkLCBlbGVtZW50LCBvZmZzZXRYLCBvZmZzZXRZKTtcbiAgICAgICAgICAgICAgICBkcmFnRmFrZU5vZGVHPy5hcHBlbmRDaGlsZChub2RlRyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKS5hcHBlbmRDaGlsZChkcmFnRmFrZU5vZGVHKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsUG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZmlyc3RMZXZlbEVsZW1lbnRzID0gZ2V0Rmlyc3RMZXZlbEVsZW1lbnQoYWN0aXZlRWxlbWVudHMpO1xuICAgICAgICBpZiAoIWJvYXJkLm9wdGlvbnMucmVhZG9ubHkgJiYgZmlyc3RMZXZlbEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgZmlyc3RMZXZlbEVsZW1lbnRzLnB1c2goLi4uY29ycmVzcG9uZGluZ0VsZW1lbnRzKTtcbiAgICAgICAgICAgIGlmIChpc0RyYWdnaW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgICAgIGZpcnN0TGV2ZWxFbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVBY3RpdmVPbkRyYWdPcmlnaW4oZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZHJvcFRhcmdldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFBhdGhSZWYgPSBib2FyZC5wYXRoUmVmKHRhcmdldFBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFByZXZpb3VzUGF0aFJlZiA9IFBhdGguaGFzUHJldmlvdXModGFyZ2V0UGF0aCkgJiYgYm9hcmQucGF0aFJlZihQYXRoLnByZXZpb3VzKHRhcmdldFBhdGgpKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50UGF0aFJlZiA9IGJvYXJkLnBhdGhSZWYoUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZHJvcFRhcmdldC50YXJnZXQpKTtcbiAgICAgICAgICAgICAgICBsZXQgYWJzdHJhY3RSZWZzID0gZ2V0VmFsaWRBYnN0cmFjdFJlZnMoYm9hcmQsIGZpcnN0TGV2ZWxFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsRWxlbWVudHMgPSBmaXJzdExldmVsRWxlbWVudHNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihlbGVtZW50ID0+ICFhYnN0cmFjdFJlZnMuc29tZShyZWZzID0+IHJlZnMuYWJzdHJhY3QgPT09IGVsZW1lbnQpKVxuICAgICAgICAgICAgICAgICAgICAubWFwKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkanVzdEFic3RyYWN0VG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzUHJldmlvdXNOb2RlID0gdGFyZ2V0UGF0aFt0YXJnZXRQYXRoLmxlbmd0aCAtIDFdICE9PSAwO1xuICAgICAgICAgICAgICAgIGlmIChoYXNQcmV2aW91c05vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNFbGVtZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgUGF0aC5wcmV2aW91cyh0YXJnZXRQYXRoKSkgYXMgTWluZEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdBYnN0cmFjdCA9IGdldENvcnJlc3BvbmRpbmdBYnN0cmFjdChwcmV2aW91c0VsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRIYXNDb3JyZXNwb25kQWJzdHJhY3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZ0Fic3RyYWN0ICYmIGNvcnJlc3BvbmRpbmdBYnN0cmFjdC5lbmQgIT09IHRhcmdldFBhdGhbdGFyZ2V0UGF0aC5sZW5ndGggLSAxXSAtIDE7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRIYXNDb3JyZXNwb25kQWJzdHJhY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkanVzdGVkTm9kZSA9IGFic3RyYWN0UmVmcy5tYXAocmVmID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWRqdXN0QWJzdHJhY3RUb05vZGUocmVmLmFic3RyYWN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsRWxlbWVudHMucHVzaCguLi5hZGp1c3RlZE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWJzdHJhY3RSZWZzID0gW107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBlZmZlY3RlZEFic3RyYWN0cyA9IGRlbGV0ZUVsZW1lbnRIYW5kbGVBYnN0cmFjdChib2FyZCwgZmlyc3RMZXZlbEVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICBpbnNlcnRFbGVtZW50SGFuZGxlQWJzdHJhY3QoYm9hcmQsIHRhcmdldFBhdGgsIG5vcm1hbEVsZW1lbnRzLmxlbmd0aCwgZmFsc2UsIGVmZmVjdGVkQWJzdHJhY3RzKTtcbiAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5zZXRBYnN0cmFjdHNCeVJlZnMoYm9hcmQsIGVmZmVjdGVkQWJzdHJhY3RzKTtcblxuICAgICAgICAgICAgICAgIGxldCByZWZzID0gZGVsZXRlRWxlbWVudHNIYW5kbGVSaWdodE5vZGVDb3VudChib2FyZCwgZmlyc3RMZXZlbEVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBQYXRoLnBhcmVudCh0YXJnZXRQYXRoKSkgYXMgTWluZEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkQ2hhbmdlUm9vdCA9IGlzRHJvcFN0YW5kYXJkUmlnaHQocGFyZW50LCBkcm9wVGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQ2hhbmdlUm9vdCAmJiB0YXJnZXRFbGVtZW50UGF0aFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZnMgPSBpbnNlcnRFbGVtZW50SGFuZGxlUmlnaHROb2RlQ291bnQoYm9hcmQsIHRhcmdldEVsZW1lbnRQYXRoUmVmLmN1cnJlbnQuc2xpY2UoMCwgMSksIG5vcm1hbEVsZW1lbnRzLmxlbmd0aCwgcmVmcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgTWluZFRyYW5zZm9ybXMuc2V0UmlnaHROb2RlQ291bnRCeVJlZnMoYm9hcmQsIHJlZnMpO1xuICAgICAgICAgICAgICAgIENvcmVUcmFuc2Zvcm1zLnJlbW92ZUVsZW1lbnRzKGJvYXJkLCBmaXJzdExldmVsRWxlbWVudHMpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGluc2VydFBhdGggPSB0YXJnZXRQYXRoUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50UGF0aCA9IFBhdGgucGFyZW50KHRhcmdldFBhdGhSZWYuY3VycmVudCB8fCB0YXJnZXRQYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWluc2VydFBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgLy/lvZPmj5LlhaXkvY3nva7lkozpgInkuK3oioLngrnkvY3nva7nm7jlkIzml7bvvIzkvb/nlKjorrDlvZXnmoQgcHJldmlvdXNQYXRoXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUGF0aCA9IHRhcmdldFByZXZpb3VzUGF0aFJlZiAmJiB0YXJnZXRQcmV2aW91c1BhdGhSZWYudW5yZWYoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzUGF0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0UGF0aCA9IFBhdGgubmV4dChwcmV2aW91c1BhdGgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgcGFyZW50UGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGdldE5vbkFic3RyYWN0Q2hpbGRyZW4ocGFyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydFBhdGggPSBbLi4ucGFyZW50UGF0aCwgY2hpbGRyZW4ubGVuZ3RoIHx8IDBdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgTWluZFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZXMoYm9hcmQsIG5vcm1hbEVsZW1lbnRzLCBpbnNlcnRQYXRoKTtcblxuICAgICAgICAgICAgICAgIGlmIChhYnN0cmFjdFJlZnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLmluc2VydEFic3RyYWN0Tm9kZXMoYm9hcmQsIGFic3RyYWN0UmVmcywgbm9ybWFsRWxlbWVudHMsIGluc2VydFBhdGgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RWxlbWVudFBhdGhSZWYuY3VycmVudCAmJlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRQYXRoUmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgUGF0aC5pc0FuY2VzdG9yKHRhcmdldEVsZW1lbnRQYXRoUmVmLmN1cnJlbnQsIHRhcmdldFBhdGhSZWYuY3VycmVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgZHJvcFRhcmdldC50YXJnZXQuaXNDb2xsYXBzZWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IGlzQ29sbGFwc2VkOiBmYWxzZSB9LCB0YXJnZXRFbGVtZW50UGF0aFJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGFyZ2V0RWxlbWVudFBhdGhSZWYudW5yZWYoKTtcbiAgICAgICAgICAgICAgICB0YXJnZXRQYXRoUmVmLnVucmVmKCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgc2V0QWN0aXZlRWxlbWVudHM6IE1pbmRFbGVtZW50W10gPSBbXTtcbiAgICAgICAgICAgICAgICBkZXB0aEZpcnN0UmVjdXJzaW9uKChib2FyZCBhcyB1bmtub3duKSBhcyBNaW5kRWxlbWVudCwgbm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBhY3RpdmVFbGVtZW50cy5zb21lKGVsZW1lbnQgPT4gZWxlbWVudC5pZCA9PT0gbm9kZS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRBY3RpdmVFbGVtZW50cy5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLmFkZFNlbGVjdGlvbldpdGhUZW1wb3JhcnlFbGVtZW50cyhib2FyZCwgc2V0QWN0aXZlRWxlbWVudHMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRJc0RyYWdnaW5nKGJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICBhY3RpdmVFbGVtZW50cyA9IFtdO1xuICAgICAgICAgICAgZHJhZ0Zha2VOb2RlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBkcmFnRmFrZU5vZGVHID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgZmFrZURyb3BOb2RlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBmYWtlRHJvcE5vZGVHID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgZHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZ2xvYmFsUG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1ub2RlLWRuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1ub2RlLWRuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsNEJBQTRCLEVBQzVCLElBQUksRUFDSixVQUFVLEVBRVYsT0FBTyxFQUNQLGNBQWMsRUFDZCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsU0FBUyxFQUNULGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsY0FBYyxFQUNkLG9CQUFvQixFQUN2QixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcvRCxPQUFPLEVBQ0gsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyx3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLGlDQUFpQyxFQUNwQyxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFFM0IsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQzdDLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUU1RCxJQUFJLGNBQWMsR0FBa0IsRUFBRSxDQUFDO0lBQ3ZDLElBQUkscUJBQXFCLEdBQWtCLEVBQUUsQ0FBQztJQUM5QyxJQUFJLFVBQWlCLENBQUM7SUFDdEIsSUFBSSxhQUFzQyxDQUFDO0lBQzNDLElBQUksYUFBc0MsQ0FBQztJQUMzQyxJQUFJLFVBQVUsR0FBK0QsSUFBSSxDQUFDO0lBQ2xGLElBQUksVUFBZ0IsQ0FBQztJQUVyQixLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFO1FBQ3hDLElBQ0ksVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFDNUIsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztZQUNwQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztZQUN4RCxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFDdkI7WUFDRSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkIsT0FBTztTQUNWO1FBQ0QsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFGLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsTUFBTSxVQUFVLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RELElBQ0ksVUFBVTtZQUNWLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQztZQUM1QyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1lBQzdCLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFDdEM7WUFDRSxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQzFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FDOUYsQ0FBQztZQUNuQixNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN4RixJQUFJLFVBQVUsRUFBRTtnQkFDWixjQUFjLEdBQUcsY0FBYyxDQUFDO2dCQUNoQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2FBQ3RCO2lCQUFNO2dCQUNILGNBQWMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM5QixVQUFVLEdBQUcsS0FBSyxDQUFDO2FBQ3RCO1NBQ0o7UUFFRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUU7WUFDdkIscUJBQXFCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1NBQ3RFO1FBRUQsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7UUFDeEMsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsTUFBTSxJQUFJLFVBQVUsRUFBRTtZQUNoRSxtQ0FBbUM7WUFDbkMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RixNQUFNLFFBQVEsR0FBRyw0QkFBNEIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RyxJQUFJLFFBQVEsR0FBRyxnQkFBZ0IsRUFBRTtnQkFDN0IsT0FBTzthQUNWO1lBRUQsYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUUzQixhQUFhLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDeEIsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hHLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsY0FBYyxFQUFFLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1lBQzdHLElBQUksVUFBVSxFQUFFLE1BQU0sRUFBRTtnQkFDcEIsVUFBVSxHQUFHLG1CQUFtQixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFFcEQsYUFBYSxHQUFHLGdCQUFnQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ2hFLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ3hEO1lBRUQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN4QixhQUFhLEdBQUcsT0FBTyxFQUFFLENBQUM7WUFDMUIsQ0FBQyxHQUFHLGNBQWMsRUFBRSxHQUFHLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUM1RCxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztZQUNILGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRSxhQUFhLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1lBRUgsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDeEQ7UUFFRCxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLGVBQWUsR0FBRyxDQUFDLEtBQW1CLEVBQUUsRUFBRTtRQUM1QyxNQUFNLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUU7WUFDdEQsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcscUJBQXFCLENBQUMsQ0FBQztZQUNsRCxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDbkIsa0JBQWtCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNqQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDdEMsQ0FBQyxDQUFDLENBQUM7YUFDTjtZQUNELElBQUksVUFBVSxFQUFFO2dCQUNaLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ2hELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDdkcsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUMxRixJQUFJLFlBQVksR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztnQkFDbkUsTUFBTSxjQUFjLEdBQUcsa0JBQWtCO3FCQUNwQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxDQUFDO3FCQUN4RSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1gsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUNsQyxPQUFPLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUN4QztvQkFDRCxPQUFPLE9BQU8sQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLENBQUM7Z0JBRVAsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoRSxJQUFJLGVBQWUsRUFBRTtvQkFDakIsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBZ0IsQ0FBQztvQkFDdkYsTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDeEUsTUFBTSwyQkFBMkIsR0FDN0IscUJBQXFCLElBQUkscUJBQXFCLENBQUMsR0FBRyxLQUFLLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDakcsSUFBSSwyQkFBMkIsRUFBRTt3QkFDN0IsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTs0QkFDeEMsT0FBTyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQzlDLENBQUMsQ0FBQyxDQUFDO3dCQUNILGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQzt3QkFDckMsWUFBWSxHQUFHLEVBQUUsQ0FBQztxQkFDckI7aUJBQ0o7Z0JBRUQsTUFBTSxpQkFBaUIsR0FBRywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztnQkFDakYsMkJBQTJCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxjQUFjLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNoRyxjQUFjLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUM7Z0JBRTVELElBQUksSUFBSSxHQUFHLGtDQUFrQyxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUN6RSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFnQixDQUFDO2dCQUM1RSxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDakUsSUFBSSxnQkFBZ0IsSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLEVBQUU7b0JBQ2xELElBQUksR0FBRyxpQ0FBaUMsQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDMUg7Z0JBRUQsY0FBYyxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDcEQsY0FBYyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztnQkFFekQsSUFBSSxVQUFVLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQztnQkFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNiLDZHQUE2RztvQkFDN0csTUFBTSxZQUFZLEdBQUcscUJBQXFCLElBQUkscUJBQXFCLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQzVFLElBQUksWUFBWSxFQUFFO3dCQUNkLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUN4Qzt5QkFBTTt3QkFDSCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQzt3QkFDaEQsTUFBTSxRQUFRLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ2hELFVBQVUsR0FBRyxDQUFDLEdBQUcsVUFBVSxFQUFFLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7cUJBQ3REO2lCQUNKO2dCQUVELGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFFOUQsSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFO29CQUNyQixjQUFjLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7aUJBQ3ZGO2dCQUVELElBQ0ksb0JBQW9CLENBQUMsT0FBTztvQkFDNUIsYUFBYSxDQUFDLE9BQU87b0JBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUM7b0JBQ3BFLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUMvQjtvQkFDRSxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDbkY7Z0JBQ0Qsb0JBQW9CLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzdCLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFFdEIsSUFBSSxpQkFBaUIsR0FBa0IsRUFBRSxDQUFDO2dCQUMxQyxtQkFBbUIsQ0FBRSxLQUFnQyxFQUFFLElBQUksQ0FBQyxFQUFFO29CQUMxRCxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzFFLElBQUksVUFBVSxFQUFFO3dCQUNaLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDaEM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsVUFBVSxDQUFDLGlDQUFpQyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2FBQzFFO1lBRUQsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QixjQUFjLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN4QixhQUFhLEdBQUcsU0FBUyxDQUFDO1lBQzFCLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN4QixhQUFhLEdBQUcsU0FBUyxDQUFDO1lBQzFCLFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDckI7UUFDRCxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LFxuICAgIFBhdGgsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQb2ludCxcbiAgICB0b1BvaW50LFxuICAgIHRyYW5zZm9ybVBvaW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBkZXB0aEZpcnN0UmVjdXJzaW9uLFxuICAgIGNyZWF0ZUcsXG4gICAgUGxhaXROb2RlLFxuICAgIFBsYWl0UG9pbnRlclR5cGUsXG4gICAgaXNNYWluUG9pbnRlcixcbiAgICBDb3JlVHJhbnNmb3JtcyxcbiAgICBnZXRIaXRFbGVtZW50QnlQb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUsIGdldE5vbkFic3RyYWN0Q2hpbGRyZW4gfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IERldGVjdFJlc3VsdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5cbmltcG9ydCB7XG4gICAgZGVsZXRlRWxlbWVudEhhbmRsZUFic3RyYWN0LFxuICAgIGRlbGV0ZUVsZW1lbnRzSGFuZGxlUmlnaHROb2RlQ291bnQsXG4gICAgZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0LFxuICAgIGdldEZpcnN0TGV2ZWxFbGVtZW50LFxuICAgIGdldE92ZXJhbGxBYnN0cmFjdHMsXG4gICAgZ2V0VmFsaWRBYnN0cmFjdFJlZnMsXG4gICAgaW5zZXJ0RWxlbWVudEhhbmRsZUFic3RyYWN0LFxuICAgIGluc2VydEVsZW1lbnRIYW5kbGVSaWdodE5vZGVDb3VudFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBhZGRBY3RpdmVPbkRyYWdPcmlnaW4sIGlzRHJhZ2dpbmcsIGlzRHJvcFN0YW5kYXJkUmlnaHQsIHJlbW92ZUFjdGl2ZU9uRHJhZ09yaWdpbiwgc2V0SXNEcmFnZ2luZyB9IGZyb20gJy4uL3V0aWxzL2RuZC9jb21tb24nO1xuaW1wb3J0IHsgZGV0ZWN0RHJvcFRhcmdldCwgZ2V0UGF0aEJ5RHJvcFRhcmdldCB9IGZyb20gJy4uL3V0aWxzL2RuZC9kZXRlY3Rvcic7XG5pbXBvcnQgeyBkcmF3RmFrZURyYWdOb2RlLCBkcmF3RmFrZURyb3BOb2RlIH0gZnJvbSAnLi4vdXRpbHMvZHJhdy9ub2RlLWRuZCc7XG5pbXBvcnQgeyBNaW5kVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgYWRqdXN0QWJzdHJhY3RUb05vZGUgfSBmcm9tICcuLi91dGlscy9ub2RlL2FkanVzdC1ub2RlJztcblxuY29uc3QgRFJBR19NT1ZFX0JVRkZFUiA9IDU7XG5cbmV4cG9ydCBjb25zdCB3aXRoTm9kZURuZCA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IHsgcG9pbnRlckRvd24sIHBvaW50ZXJNb3ZlLCBnbG9iYWxQb2ludGVyVXAgfSA9IGJvYXJkO1xuXG4gICAgbGV0IGFjdGl2ZUVsZW1lbnRzOiBNaW5kRWxlbWVudFtdID0gW107XG4gICAgbGV0IGNvcnJlc3BvbmRpbmdFbGVtZW50czogTWluZEVsZW1lbnRbXSA9IFtdO1xuICAgIGxldCBzdGFydFBvaW50OiBQb2ludDtcbiAgICBsZXQgZHJhZ0Zha2VOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGZha2VEcm9wTm9kZUc6IFNWR0dFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIGxldCBkcm9wVGFyZ2V0OiB7IHRhcmdldDogTWluZEVsZW1lbnQ7IGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0IH0gfCBudWxsID0gbnVsbDtcbiAgICBsZXQgdGFyZ2V0UGF0aDogUGF0aDtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgUGxhaXRCb2FyZC5pc1JlYWRvbmx5KGJvYXJkKSB8fFxuICAgICAgICAgICAgUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcoYm9hcmQpIHx8XG4gICAgICAgICAgICAhUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSB8fFxuICAgICAgICAgICAgIWlzTWFpblBvaW50ZXIoZXZlbnQpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRIaXRFbGVtZW50QnlQb2ludChib2FyZCwgcG9pbnQpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBoaXRFbGVtZW50ICYmXG4gICAgICAgICAgICBNaW5kRWxlbWVudC5pc01pbmRFbGVtZW50KGJvYXJkLCBoaXRFbGVtZW50KSAmJlxuICAgICAgICAgICAgIVBsYWl0TWluZC5pc01pbmQoaGl0RWxlbWVudCkgJiZcbiAgICAgICAgICAgICFBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChoaXRFbGVtZW50KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRzID0gc2VsZWN0ZWRFbGVtZW50cy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgZWxlbWVudCA9PiBNaW5kRWxlbWVudC5pc01pbmRFbGVtZW50KGJvYXJkLCBlbGVtZW50KSAmJiAhZWxlbWVudC5pc1Jvb3QgJiYgIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpXG4gICAgICAgICAgICApIGFzIE1pbmRFbGVtZW50W107XG4gICAgICAgICAgICBjb25zdCBpc011bHRpcGxlID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPiAwICYmIHNlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMoaGl0RWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnRzID0gdGFyZ2V0RWxlbWVudHM7XG4gICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IHBvaW50O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVFbGVtZW50cyA9IFtoaXRFbGVtZW50XTtcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gcG9pbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWN0aXZlRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb3JyZXNwb25kaW5nRWxlbWVudHMgPSBnZXRPdmVyYWxsQWJzdHJhY3RzKGJvYXJkLCBhY3RpdmVFbGVtZW50cyk7XG4gICAgICAgIH1cblxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgLy8gY29uc3QgeHggPSBhY3RpdmVFbGVtZW50cy5cbiAgICAgICAgaWYgKCFib2FyZC5vcHRpb25zLnJlYWRvbmx5ICYmIGFjdGl2ZUVsZW1lbnRzLmxlbmd0aCAmJiBzdGFydFBvaW50KSB7XG4gICAgICAgICAgICAvLyBwcmV2ZW50IHRleHQgZnJvbSBiZWluZyBzZWxlY3RlZFxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KHN0YXJ0UG9pbnRbMF0sIHN0YXJ0UG9pbnRbMV0sIGVuZFBvaW50WzBdLCBlbmRQb2ludFsxXSk7XG4gICAgICAgICAgICBpZiAoZGlzdGFuY2UgPCBEUkFHX01PVkVfQlVGRkVSKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRJc0RyYWdnaW5nKGJvYXJkLCB0cnVlKTtcblxuICAgICAgICAgICAgZmFrZURyb3BOb2RlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjb25zdCBkZXRlY3RQb2ludCA9IHRyYW5zZm9ybVBvaW50KGJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCkpKTtcbiAgICAgICAgICAgIGRyb3BUYXJnZXQgPSBkZXRlY3REcm9wVGFyZ2V0KGJvYXJkLCBkZXRlY3RQb2ludCwgZHJvcFRhcmdldCwgWy4uLmFjdGl2ZUVsZW1lbnRzLCAuLi5jb3JyZXNwb25kaW5nRWxlbWVudHNdKTtcbiAgICAgICAgICAgIGlmIChkcm9wVGFyZ2V0Py50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRQYXRoID0gZ2V0UGF0aEJ5RHJvcFRhcmdldChib2FyZCwgZHJvcFRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBmYWtlRHJvcE5vZGVHID0gZHJhd0Zha2VEcm9wTm9kZShib2FyZCwgZHJvcFRhcmdldCwgdGFyZ2V0UGF0aCk7XG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKS5hcHBlbmRDaGlsZChmYWtlRHJvcE5vZGVHKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0WCA9IGVuZFBvaW50WzBdIC0gc3RhcnRQb2ludFswXTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldFkgPSBlbmRQb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV07XG4gICAgICAgICAgICBkcmFnRmFrZU5vZGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGRyYWdGYWtlTm9kZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgICAgICBbLi4uYWN0aXZlRWxlbWVudHMsIC4uLmNvcnJlc3BvbmRpbmdFbGVtZW50c10uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICBhZGRBY3RpdmVPbkRyYWdPcmlnaW4oZWxlbWVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZUcgPSBkcmF3RmFrZURyYWdOb2RlKGJvYXJkLCBlbGVtZW50LCBvZmZzZXRYLCBvZmZzZXRZKTtcbiAgICAgICAgICAgICAgICBkcmFnRmFrZU5vZGVHPy5hcHBlbmRDaGlsZChub2RlRyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKS5hcHBlbmRDaGlsZChkcmFnRmFrZU5vZGVHKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsUG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZmlyc3RMZXZlbEVsZW1lbnRzID0gZ2V0Rmlyc3RMZXZlbEVsZW1lbnQoYWN0aXZlRWxlbWVudHMpO1xuICAgICAgICBpZiAoIWJvYXJkLm9wdGlvbnMucmVhZG9ubHkgJiYgZmlyc3RMZXZlbEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgZmlyc3RMZXZlbEVsZW1lbnRzLnB1c2goLi4uY29ycmVzcG9uZGluZ0VsZW1lbnRzKTtcbiAgICAgICAgICAgIGlmIChpc0RyYWdnaW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgICAgIGZpcnN0TGV2ZWxFbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVBY3RpdmVPbkRyYWdPcmlnaW4oZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZHJvcFRhcmdldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFBhdGhSZWYgPSBib2FyZC5wYXRoUmVmKHRhcmdldFBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFByZXZpb3VzUGF0aFJlZiA9IFBhdGguaGFzUHJldmlvdXModGFyZ2V0UGF0aCkgJiYgYm9hcmQucGF0aFJlZihQYXRoLnByZXZpb3VzKHRhcmdldFBhdGgpKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50UGF0aFJlZiA9IGJvYXJkLnBhdGhSZWYoUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZHJvcFRhcmdldC50YXJnZXQpKTtcbiAgICAgICAgICAgICAgICBsZXQgYWJzdHJhY3RSZWZzID0gZ2V0VmFsaWRBYnN0cmFjdFJlZnMoYm9hcmQsIGZpcnN0TGV2ZWxFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsRWxlbWVudHMgPSBmaXJzdExldmVsRWxlbWVudHNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihlbGVtZW50ID0+ICFhYnN0cmFjdFJlZnMuc29tZShyZWZzID0+IHJlZnMuYWJzdHJhY3QgPT09IGVsZW1lbnQpKVxuICAgICAgICAgICAgICAgICAgICAubWFwKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkanVzdEFic3RyYWN0VG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzUHJldmlvdXNOb2RlID0gdGFyZ2V0UGF0aFt0YXJnZXRQYXRoLmxlbmd0aCAtIDFdICE9PSAwO1xuICAgICAgICAgICAgICAgIGlmIChoYXNQcmV2aW91c05vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNFbGVtZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgUGF0aC5wcmV2aW91cyh0YXJnZXRQYXRoKSkgYXMgTWluZEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdBYnN0cmFjdCA9IGdldENvcnJlc3BvbmRpbmdBYnN0cmFjdChwcmV2aW91c0VsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRIYXNDb3JyZXNwb25kQWJzdHJhY3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZ0Fic3RyYWN0ICYmIGNvcnJlc3BvbmRpbmdBYnN0cmFjdC5lbmQgIT09IHRhcmdldFBhdGhbdGFyZ2V0UGF0aC5sZW5ndGggLSAxXSAtIDE7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRIYXNDb3JyZXNwb25kQWJzdHJhY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkanVzdGVkTm9kZSA9IGFic3RyYWN0UmVmcy5tYXAocmVmID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWRqdXN0QWJzdHJhY3RUb05vZGUocmVmLmFic3RyYWN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsRWxlbWVudHMucHVzaCguLi5hZGp1c3RlZE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWJzdHJhY3RSZWZzID0gW107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBlZmZlY3RlZEFic3RyYWN0cyA9IGRlbGV0ZUVsZW1lbnRIYW5kbGVBYnN0cmFjdChib2FyZCwgZmlyc3RMZXZlbEVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICBpbnNlcnRFbGVtZW50SGFuZGxlQWJzdHJhY3QoYm9hcmQsIHRhcmdldFBhdGgsIG5vcm1hbEVsZW1lbnRzLmxlbmd0aCwgZmFsc2UsIGVmZmVjdGVkQWJzdHJhY3RzKTtcbiAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5zZXRBYnN0cmFjdHNCeVJlZnMoYm9hcmQsIGVmZmVjdGVkQWJzdHJhY3RzKTtcblxuICAgICAgICAgICAgICAgIGxldCByZWZzID0gZGVsZXRlRWxlbWVudHNIYW5kbGVSaWdodE5vZGVDb3VudChib2FyZCwgZmlyc3RMZXZlbEVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBQYXRoLnBhcmVudCh0YXJnZXRQYXRoKSkgYXMgTWluZEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkQ2hhbmdlUm9vdCA9IGlzRHJvcFN0YW5kYXJkUmlnaHQocGFyZW50LCBkcm9wVGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQ2hhbmdlUm9vdCAmJiB0YXJnZXRFbGVtZW50UGF0aFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZnMgPSBpbnNlcnRFbGVtZW50SGFuZGxlUmlnaHROb2RlQ291bnQoYm9hcmQsIHRhcmdldEVsZW1lbnRQYXRoUmVmLmN1cnJlbnQuc2xpY2UoMCwgMSksIG5vcm1hbEVsZW1lbnRzLmxlbmd0aCwgcmVmcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgTWluZFRyYW5zZm9ybXMuc2V0UmlnaHROb2RlQ291bnRCeVJlZnMoYm9hcmQsIHJlZnMpO1xuICAgICAgICAgICAgICAgIENvcmVUcmFuc2Zvcm1zLnJlbW92ZUVsZW1lbnRzKGJvYXJkLCBmaXJzdExldmVsRWxlbWVudHMpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGluc2VydFBhdGggPSB0YXJnZXRQYXRoUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50UGF0aCA9IFBhdGgucGFyZW50KHRhcmdldFBhdGhSZWYuY3VycmVudCB8fCB0YXJnZXRQYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWluc2VydFBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiB0aGUgaW5zZXJ0aW9uIHBvc2l0aW9uIGFuZCB0aGUgc2VsZWN0ZWQgbm9kZSBwb3NpdGlvbiBhcmUgdGhlIHNhbWUsIHRoZSByZWNvcmRlZCBwcmV2aW91c1BhdGggaXMgdXNlZFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1BhdGggPSB0YXJnZXRQcmV2aW91c1BhdGhSZWYgJiYgdGFyZ2V0UHJldmlvdXNQYXRoUmVmLnVucmVmKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1BhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydFBhdGggPSBQYXRoLm5leHQocHJldmlvdXNQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHBhcmVudFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBnZXROb25BYnN0cmFjdENoaWxkcmVuKHBhcmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRQYXRoID0gWy4uLnBhcmVudFBhdGgsIGNoaWxkcmVuLmxlbmd0aCB8fCAwXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLmluc2VydE5vZGVzKGJvYXJkLCBub3JtYWxFbGVtZW50cywgaW5zZXJ0UGF0aCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoYWJzdHJhY3RSZWZzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5pbnNlcnRBYnN0cmFjdE5vZGVzKGJvYXJkLCBhYnN0cmFjdFJlZnMsIG5vcm1hbEVsZW1lbnRzLCBpbnNlcnRQYXRoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldEVsZW1lbnRQYXRoUmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UGF0aFJlZi5jdXJyZW50ICYmXG4gICAgICAgICAgICAgICAgICAgIFBhdGguaXNBbmNlc3Rvcih0YXJnZXRFbGVtZW50UGF0aFJlZi5jdXJyZW50LCB0YXJnZXRQYXRoUmVmLmN1cnJlbnQpICYmXG4gICAgICAgICAgICAgICAgICAgIGRyb3BUYXJnZXQudGFyZ2V0LmlzQ29sbGFwc2VkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgeyBpc0NvbGxhcHNlZDogZmFsc2UgfSwgdGFyZ2V0RWxlbWVudFBhdGhSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRhcmdldEVsZW1lbnRQYXRoUmVmLnVucmVmKCk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0UGF0aFJlZi51bnJlZigpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHNldEFjdGl2ZUVsZW1lbnRzOiBNaW5kRWxlbWVudFtdID0gW107XG4gICAgICAgICAgICAgICAgZGVwdGhGaXJzdFJlY3Vyc2lvbigoYm9hcmQgYXMgdW5rbm93bikgYXMgTWluZEVsZW1lbnQsIG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gYWN0aXZlRWxlbWVudHMuc29tZShlbGVtZW50ID0+IGVsZW1lbnQuaWQgPT09IG5vZGUuaWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlRWxlbWVudHMucHVzaChub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5hZGRTZWxlY3Rpb25XaXRoVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQsIHNldEFjdGl2ZUVsZW1lbnRzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2V0SXNEcmFnZ2luZyhib2FyZCwgZmFsc2UpO1xuICAgICAgICAgICAgYWN0aXZlRWxlbWVudHMgPSBbXTtcbiAgICAgICAgICAgIGRyYWdGYWtlTm9kZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgZHJhZ0Zha2VOb2RlRyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGZha2VEcm9wTm9kZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgZmFrZURyb3BOb2RlRyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGRyb3BUYXJnZXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGdsb2JhbFBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
@@ -3,7 +3,7 @@ import { getCorrectLayoutByElement } from './get-correct-layout-by-element';
3
3
  export const getBranchLayouts = (board, element) => {
4
4
  const layouts = [];
5
5
  if (element.layout) {
6
- // TODO: getCorrectLayoutByElement 含有递归操作,getBranchLayouts 本身也有递归操作,有待优化
6
+ // TODO: getCorrectLayoutByElement Contains recursive operations. getBranchLayouts itself also has recursive operations and needs to be optimized.
7
7
  layouts.unshift(getCorrectLayoutByElement(board, element));
8
8
  }
9
9
  let parent = MindElement.findParent(element);
@@ -15,4 +15,4 @@ export const getBranchLayouts = (board, element) => {
15
15
  }
16
16
  return layouts;
17
17
  };
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWJyYW5jaC1sYXlvdXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvcXVlcmllcy9nZXQtYnJhbmNoLWxheW91dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUc1RSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBb0IsRUFBRSxFQUFFO0lBQ3hFLE1BQU0sT0FBTyxHQUFxQixFQUFFLENBQUM7SUFDckMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ2hCLHdFQUF3RTtRQUN4RSxPQUFPLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQzlEO0lBQ0QsSUFBSSxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxPQUFPLE1BQU0sRUFBRTtRQUNYLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsTUFBTSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDM0M7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBnZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50IH0gZnJvbSAnLi9nZXQtY29ycmVjdC1sYXlvdXQtYnktZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuXG5leHBvcnQgY29uc3QgZ2V0QnJhbmNoTGF5b3V0cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBsYXlvdXRzOiBNaW5kTGF5b3V0VHlwZVtdID0gW107XG4gICAgaWYgKGVsZW1lbnQubGF5b3V0KSB7XG4gICAgICAgIC8vIFRPRE86IGdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQg5ZCr5pyJ6YCS5b2S5pON5L2c77yMZ2V0QnJhbmNoTGF5b3V0cyDmnKzouqvkuZ/mnInpgJLlvZLmk43kvZzvvIzmnInlvoXkvJjljJZcbiAgICAgICAgbGF5b3V0cy51bnNoaWZ0KGdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpKTtcbiAgICB9XG4gICAgbGV0IHBhcmVudCA9IE1pbmRFbGVtZW50LmZpbmRQYXJlbnQoZWxlbWVudCk7XG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgICBpZiAocGFyZW50LmxheW91dCkge1xuICAgICAgICAgICAgbGF5b3V0cy51bnNoaWZ0KHBhcmVudC5sYXlvdXQpO1xuICAgICAgICB9XG4gICAgICAgIHBhcmVudCA9IE1pbmRFbGVtZW50LmZpbmRQYXJlbnQocGFyZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIGxheW91dHM7XG59O1xuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWJyYW5jaC1sYXlvdXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvcXVlcmllcy9nZXQtYnJhbmNoLWxheW91dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUc1RSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBb0IsRUFBRSxFQUFFO0lBQ3hFLE1BQU0sT0FBTyxHQUFxQixFQUFFLENBQUM7SUFDckMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ2hCLGtKQUFrSjtRQUNsSixPQUFPLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQzlEO0lBQ0QsSUFBSSxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxPQUFPLE1BQU0sRUFBRTtRQUNYLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsTUFBTSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDM0M7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZExheW91dFR5cGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBnZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50IH0gZnJvbSAnLi9nZXQtY29ycmVjdC1sYXlvdXQtYnktZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuXG5leHBvcnQgY29uc3QgZ2V0QnJhbmNoTGF5b3V0cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBsYXlvdXRzOiBNaW5kTGF5b3V0VHlwZVtdID0gW107XG4gICAgaWYgKGVsZW1lbnQubGF5b3V0KSB7XG4gICAgICAgIC8vIFRPRE86IGdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQgQ29udGFpbnMgcmVjdXJzaXZlIG9wZXJhdGlvbnMuIGdldEJyYW5jaExheW91dHMgaXRzZWxmIGFsc28gaGFzIHJlY3Vyc2l2ZSBvcGVyYXRpb25zIGFuZCBuZWVkcyB0byBiZSBvcHRpbWl6ZWQuXG4gICAgICAgIGxheW91dHMudW5zaGlmdChnZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGJvYXJkLCBlbGVtZW50KSk7XG4gICAgfVxuICAgIGxldCBwYXJlbnQgPSBNaW5kRWxlbWVudC5maW5kUGFyZW50KGVsZW1lbnQpO1xuICAgIHdoaWxlIChwYXJlbnQpIHtcbiAgICAgICAgaWYgKHBhcmVudC5sYXlvdXQpIHtcbiAgICAgICAgICAgIGxheW91dHMudW5zaGlmdChwYXJlbnQubGF5b3V0KTtcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnQgPSBNaW5kRWxlbWVudC5maW5kUGFyZW50KHBhcmVudCk7XG4gICAgfVxuICAgIHJldHVybiBsYXlvdXRzO1xufTtcbiJdfQ==
@@ -96,7 +96,7 @@ export function getRelativeStartEndByAbstractRef(abstractRef, elements) {
96
96
  return { start, end };
97
97
  }
98
98
  export const insertElementHandleAbstract = (board, path, step = 1,
99
- //由此区分拖拽和新增到概要概括最后一个节点
99
+ // This distinguishes between dragging and adding to the last node summarized in the abstract node
100
100
  isExtendPreviousNode = true, effectedAbstracts = new Map()) => {
101
101
  const parent = PlaitNode.parent(board, path);
102
102
  const hasPreviousNode = path[path.length - 1] !== 0;
@@ -167,4 +167,4 @@ export const isChildOfAbstract = (board, element) => {
167
167
  const ancestors = MindElement.getAncestors(board, element);
168
168
  return !!ancestors.find(value => AbstractNode.isAbstract(value));
169
169
  };
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvYWJzdHJhY3QvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxJQUFJLEVBQWMsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4RSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGFBQTBCLEVBQUUsRUFBRTtJQUMzRCxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsY0FBZSxDQUFDO0lBQ3JELE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDeEMsSUFBSSxhQUFhLEdBQUcsRUFBRSxFQUNsQixZQUFZLEdBQUcsRUFBRSxDQUFDO0lBRXRCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxjQUFjLEVBQUU7WUFDOUQsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixTQUFTO1NBQ1o7UUFDRCxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxjQUFjLEVBQUU7WUFDakUsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixTQUFTO1NBQ1o7UUFFRCxJQUFJLENBQUMsR0FBRyxjQUFjLEVBQUU7WUFDcEIsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjthQUFNO1lBQ0gsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtLQUNKO0lBRUQsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUFxQixFQUFFLEVBQUU7SUFDbkQsT0FBTyxDQUFDLENBQUMsd0JBQXdCLENBQUMsT0FBc0IsQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQXFCLEVBQUUsRUFBRTtJQUNwRCxPQUFPLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDaEgsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxPQUFvQixFQUFFLEVBQUU7SUFDN0QsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFzQixDQUFDLENBQUM7SUFDOUQsSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUU5QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ2hDLE9BQU8sWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxZQUFZLElBQUksS0FBSyxDQUFDLEtBQU0sSUFBSSxZQUFZLElBQUksS0FBSyxDQUFDLEdBQUksQ0FBQztJQUN4RyxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBb0IsRUFBRSxFQUFFO0lBQ3ZELE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBc0IsQ0FBQyxDQUFDO0lBQzlELElBQUksQ0FBQyxNQUFNO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDdkIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQU0sR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNuRyxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBaUIsRUFBRSxRQUF1QixFQUFFLEVBQUU7SUFDOUUsTUFBTSxnQkFBZ0IsR0FBa0IsRUFBRSxDQUFDO0lBQzNDLFFBQVE7U0FDSCxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVFLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNiLE1BQU0sUUFBUSxHQUFHLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzVGLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDO1lBQ2hDLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBTSxFQUFFLEdBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0gsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ25DO1NBQ0o7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLE9BQU8sZ0JBQWtELENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBT0Y7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsUUFBdUIsRUFBRSxFQUFFO0lBQy9FLE1BQU0saUJBQWlCLEdBQWtCLEVBQUUsQ0FBQztJQUM1QyxRQUFRO1NBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1RSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDYixNQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1QyxNQUFNLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQ2hGLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUNkLGlCQUFpQixDQUFDLElBQUksQ0FBQztvQkFDbkIsUUFBUSxFQUFFLFFBQXNDO29CQUNoRCxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUM7aUJBQ3RCLENBQUMsQ0FBQzthQUNOO2lCQUFNO2dCQUNILGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDbkQ7U0FDSjtJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsT0FBTyxpQkFBaUIsQ0FBQztBQUM3QixDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsZ0NBQWdDLENBQUMsV0FBd0IsRUFBRSxRQUF1QjtJQUM5RixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RixPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQzFCLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUN2QyxLQUFpQixFQUNqQixJQUFVLEVBQ1YsSUFBSSxHQUFHLENBQUM7QUFDUixzQkFBc0I7QUFDdEIsdUJBQWdDLElBQUksRUFDcEMsb0JBQW9CLElBQUksR0FBRyxFQUFvRCxFQUNqRixFQUFFO0lBQ0EsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFnQixDQUFDO0lBQzVELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxJQUFJLGVBQThCLENBQUM7SUFFbkMsSUFBSSxDQUFDLGVBQWUsRUFBRTtRQUNsQixlQUFlLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDckY7U0FBTTtRQUNILE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQWdCLENBQUM7UUFDakYsZUFBZSxHQUFHLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3pEO0lBRUQsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFO1FBQ3hCLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxhQUFhLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ2hCLGFBQWEsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO2FBQ2xEO1lBQ0QsYUFBYSxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNqRCxhQUFhLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0tBQ047SUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFO1FBQ2xCLE9BQU8saUJBQWlCLENBQUM7S0FDNUI7SUFFRCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFnQixDQUFDO0lBQ2pGLE1BQU0scUJBQXFCLEdBQUcsd0JBQXdCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDeEUsTUFBTSxZQUFZLEdBQUcsQ0FBQyxvQkFBb0IsSUFBSSxxQkFBcUIsSUFBSSxxQkFBcUIsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRS9ILElBQUkscUJBQXFCLElBQUksQ0FBQyxZQUFZLEVBQUU7UUFDeEMsSUFBSSxhQUFhLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNoQixhQUFhLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDL0Q7UUFDRCxhQUFhLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO0tBQ2hEO0lBRUQsT0FBTyxpQkFBaUIsQ0FBQztBQUM3QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUN2QyxLQUFpQixFQUNqQixpQkFBZ0MsRUFDaEMsb0JBQW9CLElBQUksR0FBRyxFQUFvRCxFQUNqRixFQUFFO0lBQ0EsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDM0csSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFO2dCQUN4QixlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUMvQixJQUFJLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3BELElBQUksQ0FBQyxhQUFhLEVBQUU7d0JBQ2hCLGFBQWEsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO3dCQUNyQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO3FCQUNsRDtvQkFDRCxhQUFhLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUM5QyxhQUFhLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDLENBQUMsQ0FBQzthQUNOO1lBRUQsTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3RCxJQUFJLHFCQUFxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEVBQUU7Z0JBQzdFLElBQUksYUFBYSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUNoQixhQUFhLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFFckMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLGFBQWEsQ0FBQyxDQUFDO2lCQUMvRDtnQkFDRCxhQUFhLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQzdDO1NBQ0o7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8saUJBQWlCLENBQUM7QUFDN0IsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQW9CLEVBQUUsRUFBRTtJQUN6RSxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQWtCLENBQUM7SUFDNUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNyRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdE5vZGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFBhdGgsIFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUGxhaXROb2RlIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuXG5leHBvcnQgY29uc3Qgc2VwYXJhdGVDaGlsZHJlbiA9IChwYXJlbnRFbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gcGFyZW50RWxlbWVudC5yaWdodE5vZGVDb3VudCE7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuICAgIGxldCByaWdodENoaWxkcmVuID0gW10sXG4gICAgICAgIGxlZnRDaGlsZHJlbiA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpICYmIGNoaWxkLmVuZCA8IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICByaWdodENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSAmJiBjaGlsZC5zdGFydCA+PSByaWdodE5vZGVDb3VudCkge1xuICAgICAgICAgICAgbGVmdENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA8IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICByaWdodENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGVmdENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbGVmdENoaWxkcmVuLCByaWdodENoaWxkcmVuIH07XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZXRBYnN0cmFjdCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gISFnZXRDb3JyZXNwb25kaW5nQWJzdHJhY3QoZWxlbWVudCBhcyBNaW5kRWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgY2FuU2V0QWJzdHJhY3QgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuICFQbGFpdEVsZW1lbnQuaXNSb290RWxlbWVudChlbGVtZW50KSAmJiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkgJiYgIWlzU2V0QWJzdHJhY3QoZWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0ID0gKGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgcGFyZW50ID0gTWluZEVsZW1lbnQuZmluZFBhcmVudChlbGVtZW50IGFzIE1pbmRFbGVtZW50KTtcbiAgICBpZiAoIXBhcmVudCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGVsZW1lbnRJbmRleCA9IHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGVsZW1lbnQpO1xuICAgIHJldHVybiBwYXJlbnQuY2hpbGRyZW4uZmluZChjaGlsZCA9PiB7XG4gICAgICAgIHJldHVybiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgZWxlbWVudEluZGV4ID49IGNoaWxkLnN0YXJ0ISAmJiBlbGVtZW50SW5kZXggPD0gY2hpbGQuZW5kITtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCZWhpbmRBYnN0cmFjdHMgPSAoZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBwYXJlbnQgPSBNaW5kRWxlbWVudC5maW5kUGFyZW50KGVsZW1lbnQgYXMgTWluZEVsZW1lbnQpO1xuICAgIGlmICghcGFyZW50KSByZXR1cm4gW107XG4gICAgY29uc3QgaW5kZXggPSBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihlbGVtZW50KTtcbiAgICByZXR1cm4gcGFyZW50LmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgY2hpbGQuc3RhcnQhID4gaW5kZXgpO1xufTtcblxuLyoqXG4gKiByZXR1cm4gY29ycmVzcG9uZGluZyBhYnN0cmFjdCB0aGF0IGlzIG5vdCBjaGlsZCBvZiBlbGVtZW50c1xuICovXG5leHBvcnQgY29uc3QgZ2V0T3ZlcmFsbEFic3RyYWN0cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IE1pbmRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBvdmVyYWxsQWJzdHJhY3RzOiBNaW5kRWxlbWVudFtdID0gW107XG4gICAgZWxlbWVudHNcbiAgICAgICAgLmZpbHRlcih2YWx1ZSA9PiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QodmFsdWUpICYmICFQbGFpdE1pbmQuaXNNaW5kKHZhbHVlKSlcbiAgICAgICAgLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWJzdHJhY3QgPSBnZXRDb3JyZXNwb25kaW5nQWJzdHJhY3QodmFsdWUpO1xuICAgICAgICAgICAgaWYgKGFic3RyYWN0ICYmIGVsZW1lbnRzLmluZGV4T2YoYWJzdHJhY3QpID09PSAtMSAmJiBvdmVyYWxsQWJzdHJhY3RzLmluZGV4T2YoYWJzdHJhY3QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gYWJzdHJhY3Q7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KHZhbHVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc092ZXJhbGwgPSBwYXJlbnQuY2hpbGRyZW4uc2xpY2Uoc3RhcnQhLCBlbmQhICsgMSkuZXZlcnkoaW5jbHVkZWRFbGVtZW50ID0+IGVsZW1lbnRzLmluZGV4T2YoaW5jbHVkZWRFbGVtZW50KSA+IC0xKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNPdmVyYWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJhbGxBYnN0cmFjdHMucHVzaChhYnN0cmFjdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICByZXR1cm4gb3ZlcmFsbEFic3RyYWN0cyBhcyAoTWluZEVsZW1lbnQgJiBBYnN0cmFjdE5vZGUpW107XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0UmVmIHtcbiAgICBhYnN0cmFjdDogTWluZEVsZW1lbnQgJiBBYnN0cmFjdE5vZGU7XG4gICAgcmVmZXJlbmNlczogTWluZEVsZW1lbnRbXTtcbn1cblxuLyoqXG4gKiBhYnN0cmFjdCBub2RlIGlzIHZhbGlkIHdoZW4gZWxlbWVudHMgY29udGFpbnMgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaXQgaXMgcmVmZXJlbmNlZCB3aXRoXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRWYWxpZEFic3RyYWN0UmVmcyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IE1pbmRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCB2YWxpZEFic3RyYWN0UmVmczogQWJzdHJhY3RSZWZbXSA9IFtdO1xuICAgIGVsZW1lbnRzXG4gICAgICAgIC5maWx0ZXIodmFsdWUgPT4gIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KHZhbHVlKSAmJiAhUGxhaXRNaW5kLmlzTWluZCh2YWx1ZSkpXG4gICAgICAgIC5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFic3RyYWN0ID0gZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0KHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChhYnN0cmFjdCAmJiBlbGVtZW50cy5pbmRleE9mKGFic3RyYWN0KSA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHZhbGlkQWJzdHJhY3RSZWZzLmZpbmRJbmRleCh2YWx1ZSA9PiB2YWx1ZS5hYnN0cmFjdCA9PT0gYWJzdHJhY3QpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRBYnN0cmFjdFJlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBhYnN0cmFjdDogYWJzdHJhY3QgYXMgTWluZEVsZW1lbnQgJiBBYnN0cmFjdE5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbdmFsdWVdXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkQWJzdHJhY3RSZWZzW2luZGV4XS5yZWZlcmVuY2VzLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgcmV0dXJuIHZhbGlkQWJzdHJhY3RSZWZzO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlbGF0aXZlU3RhcnRFbmRCeUFic3RyYWN0UmVmKGFic3RyYWN0UmVmOiBBYnN0cmFjdFJlZiwgZWxlbWVudHM6IE1pbmRFbGVtZW50W10pIHtcbiAgICBjb25zdCBzdGFydCA9IGVsZW1lbnRzLmluZGV4T2YoYWJzdHJhY3RSZWYucmVmZXJlbmNlc1swXSk7XG4gICAgY29uc3QgZW5kID0gZWxlbWVudHMuaW5kZXhPZihhYnN0cmFjdFJlZi5yZWZlcmVuY2VzW2Fic3RyYWN0UmVmLnJlZmVyZW5jZXMubGVuZ3RoIC0gMV0pO1xuICAgIHJldHVybiB7IHN0YXJ0LCBlbmQgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGluc2VydEVsZW1lbnRIYW5kbGVBYnN0cmFjdCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBwYXRoOiBQYXRoLFxuICAgIHN0ZXAgPSAxLFxuICAgIC8v55Sx5q2k5Yy65YiG5ouW5ou95ZKM5paw5aKe5Yiw5qaC6KaB5qaC5ous5pyA5ZCO5LiA5Liq6IqC54K5XG4gICAgaXNFeHRlbmRQcmV2aW91c05vZGU6IGJvb2xlYW4gPSB0cnVlLFxuICAgIGVmZmVjdGVkQWJzdHJhY3RzID0gbmV3IE1hcDxNaW5kRWxlbWVudCwgUGljazxBYnN0cmFjdE5vZGUsICdzdGFydCcgfCAnZW5kJz4+KClcbikgPT4ge1xuICAgIGNvbnN0IHBhcmVudCA9IFBsYWl0Tm9kZS5wYXJlbnQoYm9hcmQsIHBhdGgpIGFzIE1pbmRFbGVtZW50O1xuICAgIGNvbnN0IGhhc1ByZXZpb3VzTm9kZSA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXSAhPT0gMDtcbiAgICBsZXQgYmVoaW5kQWJzdHJhY3RzOiBNaW5kRWxlbWVudFtdO1xuXG4gICAgaWYgKCFoYXNQcmV2aW91c05vZGUpIHtcbiAgICAgICAgYmVoaW5kQWJzdHJhY3RzID0gcGFyZW50LmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIFBhdGgucHJldmlvdXMocGF0aCkpIGFzIE1pbmRFbGVtZW50O1xuICAgICAgICBiZWhpbmRBYnN0cmFjdHMgPSBnZXRCZWhpbmRBYnN0cmFjdHMoc2VsZWN0ZWRFbGVtZW50KTtcbiAgICB9XG5cbiAgICBpZiAoYmVoaW5kQWJzdHJhY3RzLmxlbmd0aCkge1xuICAgICAgICBiZWhpbmRBYnN0cmFjdHMuZm9yRWFjaChhYnN0cmFjdCA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3UHJvcGVydGllcyA9IGVmZmVjdGVkQWJzdHJhY3RzLmdldChhYnN0cmFjdCk7XG4gICAgICAgICAgICBpZiAoIW5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0aWVzID0geyBzdGFydDogMCwgZW5kOiAwIH07XG4gICAgICAgICAgICAgICAgZWZmZWN0ZWRBYnN0cmFjdHMuc2V0KGFic3RyYWN0LCBuZXdQcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMuc3RhcnQgPSBuZXdQcm9wZXJ0aWVzLnN0YXJ0ICsgc3RlcDtcbiAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMuZW5kID0gbmV3UHJvcGVydGllcy5lbmQgKyBzdGVwO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWhhc1ByZXZpb3VzTm9kZSkge1xuICAgICAgICByZXR1cm4gZWZmZWN0ZWRBYnN0cmFjdHM7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgUGF0aC5wcmV2aW91cyhwYXRoKSkgYXMgTWluZEVsZW1lbnQ7XG4gICAgY29uc3QgY29ycmVzcG9uZGluZ0Fic3RyYWN0ID0gZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0KHNlbGVjdGVkRWxlbWVudCk7XG4gICAgY29uc3QgaXNEcmFnVG9MYXN0ID0gIWlzRXh0ZW5kUHJldmlvdXNOb2RlICYmIGNvcnJlc3BvbmRpbmdBYnN0cmFjdCAmJiBjb3JyZXNwb25kaW5nQWJzdHJhY3QuZW5kID09PSBwYXRoW3BhdGgubGVuZ3RoIC0gMV0gLSAxO1xuXG4gICAgaWYgKGNvcnJlc3BvbmRpbmdBYnN0cmFjdCAmJiAhaXNEcmFnVG9MYXN0KSB7XG4gICAgICAgIGxldCBuZXdQcm9wZXJ0aWVzID0gZWZmZWN0ZWRBYnN0cmFjdHMuZ2V0KGNvcnJlc3BvbmRpbmdBYnN0cmFjdCk7XG4gICAgICAgIGlmICghbmV3UHJvcGVydGllcykge1xuICAgICAgICAgICAgbmV3UHJvcGVydGllcyA9IHsgc3RhcnQ6IDAsIGVuZDogMCB9O1xuICAgICAgICAgICAgZWZmZWN0ZWRBYnN0cmFjdHMuc2V0KGNvcnJlc3BvbmRpbmdBYnN0cmFjdCwgbmV3UHJvcGVydGllcyk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3UHJvcGVydGllcy5lbmQgPSBuZXdQcm9wZXJ0aWVzLmVuZCArIHN0ZXA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVmZmVjdGVkQWJzdHJhY3RzO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUVsZW1lbnRIYW5kbGVBYnN0cmFjdCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBkZWxldGFibGVFbGVtZW50czogTWluZEVsZW1lbnRbXSxcbiAgICBlZmZlY3RlZEFic3RyYWN0cyA9IG5ldyBNYXA8TWluZEVsZW1lbnQsIFBpY2s8QWJzdHJhY3ROb2RlLCAnc3RhcnQnIHwgJ2VuZCc+PigpXG4pID0+IHtcbiAgICBkZWxldGFibGVFbGVtZW50cy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICBpZiAoIVBsYWl0TWluZC5pc01pbmQobm9kZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGJlaGluZEFic3RyYWN0cyA9IGdldEJlaGluZEFic3RyYWN0cyhub2RlKS5maWx0ZXIoYWJzdHJhY3QgPT4gIWRlbGV0YWJsZUVsZW1lbnRzLmluY2x1ZGVzKGFic3RyYWN0KSk7XG4gICAgICAgICAgICBpZiAoYmVoaW5kQWJzdHJhY3RzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGJlaGluZEFic3RyYWN0cy5mb3JFYWNoKGFic3RyYWN0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld1Byb3BlcnRpZXMgPSBlZmZlY3RlZEFic3RyYWN0cy5nZXQoYWJzdHJhY3QpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMgPSB7IHN0YXJ0OiAwLCBlbmQ6IDAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdGVkQWJzdHJhY3RzLnNldChhYnN0cmFjdCwgbmV3UHJvcGVydGllcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV3UHJvcGVydGllcy5zdGFydCA9IG5ld1Byb3BlcnRpZXMuc3RhcnQgLSAxO1xuICAgICAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0aWVzLmVuZCA9IG5ld1Byb3BlcnRpZXMuZW5kIC0gMTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY29ycmVzcG9uZGluZ0Fic3RyYWN0ID0gZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0KG5vZGUpO1xuICAgICAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdBYnN0cmFjdCAmJiAhZGVsZXRhYmxlRWxlbWVudHMuaW5jbHVkZXMoY29ycmVzcG9uZGluZ0Fic3RyYWN0KSkge1xuICAgICAgICAgICAgICAgIGxldCBuZXdQcm9wZXJ0aWVzID0gZWZmZWN0ZWRBYnN0cmFjdHMuZ2V0KGNvcnJlc3BvbmRpbmdBYnN0cmFjdCk7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXdQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMgPSB7IHN0YXJ0OiAwLCBlbmQ6IDAgfTtcblxuICAgICAgICAgICAgICAgICAgICBlZmZlY3RlZEFic3RyYWN0cy5zZXQoY29ycmVzcG9uZGluZ0Fic3RyYWN0LCBuZXdQcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3UHJvcGVydGllcy5lbmQgPSBuZXdQcm9wZXJ0aWVzLmVuZCAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZWZmZWN0ZWRBYnN0cmFjdHM7XG59O1xuXG5leHBvcnQgY29uc3QgaXNDaGlsZE9mQWJzdHJhY3QgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgYW5jZXN0b3JzID0gTWluZEVsZW1lbnQuZ2V0QW5jZXN0b3JzKGJvYXJkLCBlbGVtZW50KSBhcyBNaW5kRWxlbWVudFtdO1xuICAgIHJldHVybiAhIWFuY2VzdG9ycy5maW5kKHZhbHVlID0+IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KHZhbHVlKSk7XG59O1xuIl19
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvYWJzdHJhY3QvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxJQUFJLEVBQWMsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4RSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGFBQTBCLEVBQUUsRUFBRTtJQUMzRCxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsY0FBZSxDQUFDO0lBQ3JELE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDeEMsSUFBSSxhQUFhLEdBQUcsRUFBRSxFQUNsQixZQUFZLEdBQUcsRUFBRSxDQUFDO0lBRXRCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxjQUFjLEVBQUU7WUFDOUQsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixTQUFTO1NBQ1o7UUFDRCxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxjQUFjLEVBQUU7WUFDakUsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixTQUFTO1NBQ1o7UUFFRCxJQUFJLENBQUMsR0FBRyxj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bXBvcnQgeyBBYnN0cmFjdE5vZGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFBhdGgsIFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUGxhaXROb2RlIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuXG5leHBvcnQgY29uc3Qgc2VwYXJhdGVDaGlsZHJlbiA9IChwYXJlbnRFbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gcGFyZW50RWxlbWVudC5yaWdodE5vZGVDb3VudCE7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuICAgIGxldCByaWdodENoaWxkcmVuID0gW10sXG4gICAgICAgIGxlZnRDaGlsZHJlbiA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpICYmIGNoaWxkLmVuZCA8IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICByaWdodENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSAmJiBjaGlsZC5zdGFydCA+PSByaWdodE5vZGVDb3VudCkge1xuICAgICAgICAgICAgbGVmdENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA8IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICByaWdodENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGVmdENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbGVmdENoaWxkcmVuLCByaWdodENoaWxkcmVuIH07XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZXRBYnN0cmFjdCA9IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gISFnZXRDb3JyZXNwb25kaW5nQWJzdHJhY3QoZWxlbWVudCBhcyBNaW5kRWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgY2FuU2V0QWJzdHJhY3QgPSAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuICFQbGFpdEVsZW1lbnQuaXNSb290RWxlbWVudChlbGVtZW50KSAmJiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkgJiYgIWlzU2V0QWJzdHJhY3QoZWxlbWVudCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0ID0gKGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgcGFyZW50ID0gTWluZEVsZW1lbnQuZmluZFBhcmVudChlbGVtZW50IGFzIE1pbmRFbGVtZW50KTtcbiAgICBpZiAoIXBhcmVudCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGVsZW1lbnRJbmRleCA9IHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGVsZW1lbnQpO1xuICAgIHJldHVybiBwYXJlbnQuY2hpbGRyZW4uZmluZChjaGlsZCA9PiB7XG4gICAgICAgIHJldHVybiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgZWxlbWVudEluZGV4ID49IGNoaWxkLnN0YXJ0ISAmJiBlbGVtZW50SW5kZXggPD0gY2hpbGQuZW5kITtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCZWhpbmRBYnN0cmFjdHMgPSAoZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBwYXJlbnQgPSBNaW5kRWxlbWVudC5maW5kUGFyZW50KGVsZW1lbnQgYXMgTWluZEVsZW1lbnQpO1xuICAgIGlmICghcGFyZW50KSByZXR1cm4gW107XG4gICAgY29uc3QgaW5kZXggPSBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihlbGVtZW50KTtcbiAgICByZXR1cm4gcGFyZW50LmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgY2hpbGQuc3RhcnQhID4gaW5kZXgpO1xufTtcblxuLyoqXG4gKiByZXR1cm4gY29ycmVzcG9uZGluZyBhYnN0cmFjdCB0aGF0IGlzIG5vdCBjaGlsZCBvZiBlbGVtZW50c1xuICovXG5leHBvcnQgY29uc3QgZ2V0T3ZlcmFsbEFic3RyYWN0cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IE1pbmRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBvdmVyYWxsQWJzdHJhY3RzOiBNaW5kRWxlbWVudFtdID0gW107XG4gICAgZWxlbWVudHNcbiAgICAgICAgLmZpbHRlcih2YWx1ZSA9PiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QodmFsdWUpICYmICFQbGFpdE1pbmQuaXNNaW5kKHZhbHVlKSlcbiAgICAgICAgLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWJzdHJhY3QgPSBnZXRDb3JyZXNwb25kaW5nQWJzdHJhY3QodmFsdWUpO1xuICAgICAgICAgICAgaWYgKGFic3RyYWN0ICYmIGVsZW1lbnRzLmluZGV4T2YoYWJzdHJhY3QpID09PSAtMSAmJiBvdmVyYWxsQWJzdHJhY3RzLmluZGV4T2YoYWJzdHJhY3QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gYWJzdHJhY3Q7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KHZhbHVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc092ZXJhbGwgPSBwYXJlbnQuY2hpbGRyZW4uc2xpY2Uoc3RhcnQhLCBlbmQhICsgMSkuZXZlcnkoaW5jbHVkZWRFbGVtZW50ID0+IGVsZW1lbnRzLmluZGV4T2YoaW5jbHVkZWRFbGVtZW50KSA+IC0xKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNPdmVyYWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJhbGxBYnN0cmFjdHMucHVzaChhYnN0cmFjdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICByZXR1cm4gb3ZlcmFsbEFic3RyYWN0cyBhcyAoTWluZEVsZW1lbnQgJiBBYnN0cmFjdE5vZGUpW107XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0UmVmIHtcbiAgICBhYnN0cmFjdDogTWluZEVsZW1lbnQgJiBBYnN0cmFjdE5vZGU7XG4gICAgcmVmZXJlbmNlczogTWluZEVsZW1lbnRbXTtcbn1cblxuLyoqXG4gKiBhYnN0cmFjdCBub2RlIGlzIHZhbGlkIHdoZW4gZWxlbWVudHMgY29udGFpbnMgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaXQgaXMgcmVmZXJlbmNlZCB3aXRoXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRWYWxpZEFic3RyYWN0UmVmcyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IE1pbmRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCB2YWxpZEFic3RyYWN0UmVmczogQWJzdHJhY3RSZWZbXSA9IFtdO1xuICAgIGVsZW1lbnRzXG4gICAgICAgIC5maWx0ZXIodmFsdWUgPT4gIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KHZhbHVlKSAmJiAhUGxhaXRNaW5kLmlzTWluZCh2YWx1ZSkpXG4gICAgICAgIC5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFic3RyYWN0ID0gZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0KHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChhYnN0cmFjdCAmJiBlbGVtZW50cy5pbmRleE9mKGFic3RyYWN0KSA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHZhbGlkQWJzdHJhY3RSZWZzLmZpbmRJbmRleCh2YWx1ZSA9PiB2YWx1ZS5hYnN0cmFjdCA9PT0gYWJzdHJhY3QpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRBYnN0cmFjdFJlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBhYnN0cmFjdDogYWJzdHJhY3QgYXMgTWluZEVsZW1lbnQgJiBBYnN0cmFjdE5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbdmFsdWVdXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkQWJzdHJhY3RSZWZzW2luZGV4XS5yZWZlcmVuY2VzLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgcmV0dXJuIHZhbGlkQWJzdHJhY3RSZWZzO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlbGF0aXZlU3RhcnRFbmRCeUFic3RyYWN0UmVmKGFic3RyYWN0UmVmOiBBYnN0cmFjdFJlZiwgZWxlbWVudHM6IE1pbmRFbGVtZW50W10pIHtcbiAgICBjb25zdCBzdGFydCA9IGVsZW1lbnRzLmluZGV4T2YoYWJzdHJhY3RSZWYucmVmZXJlbmNlc1swXSk7XG4gICAgY29uc3QgZW5kID0gZWxlbWVudHMuaW5kZXhPZihhYnN0cmFjdFJlZi5yZWZlcmVuY2VzW2Fic3RyYWN0UmVmLnJlZmVyZW5jZXMubGVuZ3RoIC0gMV0pO1xuICAgIHJldHVybiB7IHN0YXJ0LCBlbmQgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGluc2VydEVsZW1lbnRIYW5kbGVBYnN0cmFjdCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBwYXRoOiBQYXRoLFxuICAgIHN0ZXAgPSAxLFxuICAgIC8vIFRoaXMgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGRyYWdnaW5nIGFuZCBhZGRpbmcgdG8gdGhlIGxhc3Qgbm9kZSBzdW1tYXJpemVkIGluIHRoZSBhYnN0cmFjdCBub2RlXG4gICAgaXNFeHRlbmRQcmV2aW91c05vZGU6IGJvb2xlYW4gPSB0cnVlLFxuICAgIGVmZmVjdGVkQWJzdHJhY3RzID0gbmV3IE1hcDxNaW5kRWxlbWVudCwgUGljazxBYnN0cmFjdE5vZGUsICdzdGFydCcgfCAnZW5kJz4+KClcbikgPT4ge1xuICAgIGNvbnN0IHBhcmVudCA9IFBsYWl0Tm9kZS5wYXJlbnQoYm9hcmQsIHBhdGgpIGFzIE1pbmRFbGVtZW50O1xuICAgIGNvbnN0IGhhc1ByZXZpb3VzTm9kZSA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXSAhPT0gMDtcbiAgICBsZXQgYmVoaW5kQWJzdHJhY3RzOiBNaW5kRWxlbWVudFtdO1xuXG4gICAgaWYgKCFoYXNQcmV2aW91c05vZGUpIHtcbiAgICAgICAgYmVoaW5kQWJzdHJhY3RzID0gcGFyZW50LmNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIFBhdGgucHJldmlvdXMocGF0aCkpIGFzIE1pbmRFbGVtZW50O1xuICAgICAgICBiZWhpbmRBYnN0cmFjdHMgPSBnZXRCZWhpbmRBYnN0cmFjdHMoc2VsZWN0ZWRFbGVtZW50KTtcbiAgICB9XG5cbiAgICBpZiAoYmVoaW5kQWJzdHJhY3RzLmxlbmd0aCkge1xuICAgICAgICBiZWhpbmRBYnN0cmFjdHMuZm9yRWFjaChhYnN0cmFjdCA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3UHJvcGVydGllcyA9IGVmZmVjdGVkQWJzdHJhY3RzLmdldChhYnN0cmFjdCk7XG4gICAgICAgICAgICBpZiAoIW5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0aWVzID0geyBzdGFydDogMCwgZW5kOiAwIH07XG4gICAgICAgICAgICAgICAgZWZmZWN0ZWRBYnN0cmFjdHMuc2V0KGFic3RyYWN0LCBuZXdQcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMuc3RhcnQgPSBuZXdQcm9wZXJ0aWVzLnN0YXJ0ICsgc3RlcDtcbiAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMuZW5kID0gbmV3UHJvcGVydGllcy5lbmQgKyBzdGVwO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWhhc1ByZXZpb3VzTm9kZSkge1xuICAgICAgICByZXR1cm4gZWZmZWN0ZWRBYnN0cmFjdHM7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gUGxhaXROb2RlLmdldChib2FyZCwgUGF0aC5wcmV2aW91cyhwYXRoKSkgYXMgTWluZEVsZW1lbnQ7XG4gICAgY29uc3QgY29ycmVzcG9uZGluZ0Fic3RyYWN0ID0gZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0KHNlbGVjdGVkRWxlbWVudCk7XG4gICAgY29uc3QgaXNEcmFnVG9MYXN0ID0gIWlzRXh0ZW5kUHJldmlvdXNOb2RlICYmIGNvcnJlc3BvbmRpbmdBYnN0cmFjdCAmJiBjb3JyZXNwb25kaW5nQWJzdHJhY3QuZW5kID09PSBwYXRoW3BhdGgubGVuZ3RoIC0gMV0gLSAxO1xuXG4gICAgaWYgKGNvcnJlc3BvbmRpbmdBYnN0cmFjdCAmJiAhaXNEcmFnVG9MYXN0KSB7XG4gICAgICAgIGxldCBuZXdQcm9wZXJ0aWVzID0gZWZmZWN0ZWRBYnN0cmFjdHMuZ2V0KGNvcnJlc3BvbmRpbmdBYnN0cmFjdCk7XG4gICAgICAgIGlmICghbmV3UHJvcGVydGllcykge1xuICAgICAgICAgICAgbmV3UHJvcGVydGllcyA9IHsgc3RhcnQ6IDAsIGVuZDogMCB9O1xuICAgICAgICAgICAgZWZmZWN0ZWRBYnN0cmFjdHMuc2V0KGNvcnJlc3BvbmRpbmdBYnN0cmFjdCwgbmV3UHJvcGVydGllcyk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3UHJvcGVydGllcy5lbmQgPSBuZXdQcm9wZXJ0aWVzLmVuZCArIHN0ZXA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVmZmVjdGVkQWJzdHJhY3RzO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUVsZW1lbnRIYW5kbGVBYnN0cmFjdCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBkZWxldGFibGVFbGVtZW50czogTWluZEVsZW1lbnRbXSxcbiAgICBlZmZlY3RlZEFic3RyYWN0cyA9IG5ldyBNYXA8TWluZEVsZW1lbnQsIFBpY2s8QWJzdHJhY3ROb2RlLCAnc3RhcnQnIHwgJ2VuZCc+PigpXG4pID0+IHtcbiAgICBkZWxldGFibGVFbGVtZW50cy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICBpZiAoIVBsYWl0TWluZC5pc01pbmQobm9kZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGJlaGluZEFic3RyYWN0cyA9IGdldEJlaGluZEFic3RyYWN0cyhub2RlKS5maWx0ZXIoYWJzdHJhY3QgPT4gIWRlbGV0YWJsZUVsZW1lbnRzLmluY2x1ZGVzKGFic3RyYWN0KSk7XG4gICAgICAgICAgICBpZiAoYmVoaW5kQWJzdHJhY3RzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGJlaGluZEFic3RyYWN0cy5mb3JFYWNoKGFic3RyYWN0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld1Byb3BlcnRpZXMgPSBlZmZlY3RlZEFic3RyYWN0cy5nZXQoYWJzdHJhY3QpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW5ld1Byb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMgPSB7IHN0YXJ0OiAwLCBlbmQ6IDAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdGVkQWJzdHJhY3RzLnNldChhYnN0cmFjdCwgbmV3UHJvcGVydGllcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV3UHJvcGVydGllcy5zdGFydCA9IG5ld1Byb3BlcnRpZXMuc3RhcnQgLSAxO1xuICAgICAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0aWVzLmVuZCA9IG5ld1Byb3BlcnRpZXMuZW5kIC0gMTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY29ycmVzcG9uZGluZ0Fic3RyYWN0ID0gZ2V0Q29ycmVzcG9uZGluZ0Fic3RyYWN0KG5vZGUpO1xuICAgICAgICAgICAgaWYgKGNvcnJlc3BvbmRpbmdBYnN0cmFjdCAmJiAhZGVsZXRhYmxlRWxlbWVudHMuaW5jbHVkZXMoY29ycmVzcG9uZGluZ0Fic3RyYWN0KSkge1xuICAgICAgICAgICAgICAgIGxldCBuZXdQcm9wZXJ0aWVzID0gZWZmZWN0ZWRBYnN0cmFjdHMuZ2V0KGNvcnJlc3BvbmRpbmdBYnN0cmFjdCk7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXdQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1Byb3BlcnRpZXMgPSB7IHN0YXJ0OiAwLCBlbmQ6IDAgfTtcblxuICAgICAgICAgICAgICAgICAgICBlZmZlY3RlZEFic3RyYWN0cy5zZXQoY29ycmVzcG9uZGluZ0Fic3RyYWN0LCBuZXdQcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3UHJvcGVydGllcy5lbmQgPSBuZXdQcm9wZXJ0aWVzLmVuZCAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZWZmZWN0ZWRBYnN0cmFjdHM7XG59O1xuXG5leHBvcnQgY29uc3QgaXNDaGlsZE9mQWJzdHJhY3QgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgYW5jZXN0b3JzID0gTWluZEVsZW1lbnQuZ2V0QW5jZXN0b3JzKGJvYXJkLCBlbGVtZW50KSBhcyBNaW5kRWxlbWVudFtdO1xuICAgIHJldHVybiAhIWFuY2VzdG9ycy5maW5kKHZhbHVlID0+IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KHZhbHVlKSk7XG59O1xuIl19
@@ -85,7 +85,7 @@ export const directionDetector = (targetNode, centerPoint) => {
85
85
  const left = targetNode.x;
86
86
  const right = targetNode.x + targetNode.width;
87
87
  const direction = [];
88
- // x
88
+ // x-axis
89
89
  if (centerPoint[1] > y && centerPoint[1] < y + height) {
90
90
  if (centerPoint[0] > left && centerPoint[0] < xCenter) {
91
91
  direction.push('left');
@@ -93,7 +93,7 @@ export const directionDetector = (targetNode, centerPoint) => {
93
93
  if (centerPoint[0] > xCenter && centerPoint[0] < right) {
94
94
  direction.push('right');
95
95
  }
96
- // 重合区域,返回两个方向
96
+ // Overlapping area, return in both directions
97
97
  if ((centerPoint[0] > x && centerPoint[0] < xCenter) || (centerPoint[0] > xCenter && centerPoint[0] < x + width)) {
98
98
  if (centerPoint[1] < yCenter) {
99
99
  direction.push('top');
@@ -104,7 +104,7 @@ export const directionDetector = (targetNode, centerPoint) => {
104
104
  }
105
105
  return direction.length ? direction : null;
106
106
  }
107
- // y
107
+ // y-axis
108
108
  if (centerPoint[0] > x && centerPoint[0] < x + width) {
109
109
  if (centerPoint[1] > top && centerPoint[1] < yCenter) {
110
110
  direction.push('top');
@@ -133,17 +133,14 @@ export const getPathByDropTarget = (board, dropTarget) => {
133
133
  ? getRootLayout(dropTarget?.target)
134
134
  : MindQueries.getCorrectLayoutByElement(board, MindElement.getParent(dropTarget?.target));
135
135
  const children = getNonAbstractChildren(dropTarget.target);
136
- // 上下布局:左右是兄弟节点,上下是子节点
137
136
  if (isVerticalLogicLayout(layout)) {
138
137
  if (dropTarget.detectResult === 'top' || dropTarget.detectResult === 'bottom') {
139
138
  targetPath.push(children.length);
140
139
  }
141
- // 如果是左,位置不变,右则插入到下一个兄弟节点
142
140
  if (dropTarget.detectResult === 'right') {
143
141
  targetPath = Path.next(targetPath);
144
142
  }
145
143
  }
146
- // 水平布局/标准布局:上下是兄弟节点,左右是子节点
147
144
  if (isHorizontalLogicLayout(layout)) {
148
145
  if (dropTarget.detectResult === 'right') {
149
146
  if (PlaitMind.isMind(dropTarget?.target) && isStandardLayout(layout)) {
@@ -156,12 +153,10 @@ export const getPathByDropTarget = (board, dropTarget) => {
156
153
  if (dropTarget.detectResult === 'left') {
157
154
  targetPath.push(children.length);
158
155
  }
159
- // 如果是上,位置不变,下插入到下一个兄弟节点
160
156
  if (dropTarget.detectResult === 'bottom') {
161
157
  targetPath = Path.next(targetPath);
162
158
  }
163
159
  }
164
- // 缩进布局:上下是兄弟节点,左右是子节点,但上(左上/右上),探测到上是子节点,下则位置不变,反之同理。
165
160
  if (isIndentedLayout(layout)) {
166
161
  if (isTopLayout(layout) && dropTarget.detectResult === 'top') {
167
162
  targetPath = Path.next(targetPath);
@@ -178,4 +173,4 @@ export const getPathByDropTarget = (board, dropTarget) => {
178
173
  }
179
174
  return targetPath;
180
175
  };
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9kbmQvZGV0ZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFTLG1CQUFtQixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUvRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUNILGNBQWMsRUFDZCxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLHFCQUFxQixFQUN4QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBaUIsRUFBRSxJQUFjLEVBQUUsYUFBNkIsRUFBeUIsRUFBRTtJQUMxSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUM5RCxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMseUJBQXlCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsTUFBcUIsQ0FBQyxDQUFDO1FBQ3RHLElBQUks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QUFDO1NBQ3RDO1FBQ0QsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLFlBQVksS0FBSyxRQUFRLEVBQUU7WUFDaEUsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDdEM7UUFDRCxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsWUFBWSxLQUFLLE1BQU0sRUFBRTtZQUM1RCxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNwQztRQUNELElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxZQUFZLEtBQUssT0FBTyxFQUFFO1lBQzlELFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BDO0tBQ0o7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNaW5kRWxlbWVudCwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBkZXB0aEZpcnN0UmVjdXJzaW9uLCBQYXRoLCBnZXRJc1JlY3Vyc2lvbkZ1bmMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBEZXRlY3RSZXN1bHQsIE1pbmROb2RlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5Tm9kZSB9IGZyb20gJy4uL3Bvc2l0aW9uL25vZGUnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IGdldFJvb3RMYXlvdXQgfSBmcm9tICcuLi9sYXlvdXQnO1xuaW1wb3J0IHtcbiAgICBNaW5kTGF5b3V0VHlwZSxcbiAgICBnZXROb25BYnN0cmFjdENoaWxkcmVuLFxuICAgIGlzSG9yaXpvbnRhbExvZ2ljTGF5b3V0LFxuICAgIGlzSW5kZW50ZWRMYXlvdXQsXG4gICAgaXNTdGFuZGFyZExheW91dCxcbiAgICBpc1RvcExheW91dCxcbiAgICBpc1ZlcnRpY2FsTG9naWNMYXlvdXRcbn0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgaXNCb3R0b21MYXlvdXQsIGlzUmlnaHRMYXlvdXQsIGlzTGVmdExheW91dCwgQWJzdHJhY3ROb2RlIH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgaXNDaGlsZEVsZW1lbnQgfSBmcm9tICcuLi9taW5kJztcblxuZXhwb3J0IGNvbnN0IGRpcmVjdGlvbkNvcnJlY3RvciA9IChib2FyZDogUGxhaXRCb2FyZCwgbm9kZTogTWluZE5vZGUsIGRldGVjdFJlc3VsdHM6IERldGVjdFJlc3VsdFtdKTogRGV0ZWN0UmVzdWx0W10gfCBudWxsID0+IHtcbiAgICBpZiAoIW5vZGUub3JpZ2luLmlzUm9vdCAmJiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3Qobm9kZS5vcmlnaW4pKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudExheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQoYm9hcmQsIG5vZGU/LnBhcmVudC5vcmlnaW4gYXMgTWluZEVsZW1lbnQpO1xuICAgICAgICBpZiAoaXNTdGFuZGFyZExheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSBub2RlLnBhcmVudC5jaGlsZHJlbi5maW5kSW5kZXgoeCA9PiB4ID09PSBub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGlzTGVmdCA9IGlkeCA+PSAobm9kZS5wYXJlbnQub3JpZ2luLnJpZ2h0Tm9kZUNvdW50IHx8IDApO1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbG93ZWREaXJlY3Rpb24oZGV0ZWN0UmVzdWx0cywgW2lzTGVmdCA/ICdyaWdodCcgOiAnbGVmdCddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0xlZnRMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbG93ZWREaXJlY3Rpb24oZGV0ZWN0UmVzdWx0cywgWydyaWdodCddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1JpZ2h0TGF5b3V0KHBhcmVudExheW91dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRBbGxvd2VkRGlyZWN0aW9uKGRldGVjdFJlc3VsdHMsIFsnbGVmdCddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJlbnRMYXlvdXQgPT09IE1pbmRMYXlvdXRUeXBlLnVwd2FyZCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbG93ZWREaXJlY3Rpb24oZGV0ZWN0UmVzdWx0cywgWydib3R0b20nXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyZW50TGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5kb3dud2FyZCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbG93ZWREaXJlY3Rpb24oZGV0ZWN0UmVzdWx0cywgWyd0b3AnXSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBsYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGJvYXJkLCBub2RlPy5vcmlnaW4gYXMgTWluZEVsZW1lbnQpO1xuICAgICAgICBpZiAoaXNTdGFuZGFyZExheW91dChsYXlvdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0QWxsb3dlZERpcmVjdGlvbihkZXRlY3RSZXN1bHRzLCBbJ3RvcCcsICdib3R0b20nXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS51cHdhcmQpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRBbGxvd2VkRGlyZWN0aW9uKGRldGVjdFJlc3VsdHMsIFsnbGVmdCcsICdyaWdodCcsICdib3R0b20nXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS5kb3dud2FyZCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbG93ZWREaXJlY3Rpb24oZGV0ZWN0UmVzdWx0cywgWydsZWZ0JywgJ3JpZ2h0JywgJ3RvcCddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0xlZnRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbG93ZWREaXJlY3Rpb24oZGV0ZWN0UmVzdWx0cywgWydyaWdodCcsICd0b3AnLCAnYm90dG9tJ10pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzUmlnaHRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbG93ZWREaXJlY3Rpb24oZGV0ZWN0UmVzdWx0cywgWydsZWZ0JywgJ3RvcCcsICdib3R0b20nXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbGxvd2VkRGlyZWN0aW9uID0gKGRldGVjdFJlc3VsdHM6IERldGVjdFJlc3VsdFtdLCBpbGxlZ2FsRGlyZWN0aW9uczogRGV0ZWN0UmVzdWx0W10pOiBEZXRlY3RSZXN1bHRbXSB8IG51bGwgPT4ge1xuICAgIGNvbnN0IGRpcmVjdGlvbnMgPSBkZXRlY3RSZXN1bHRzO1xuICAgIGlsbGVnYWxEaXJlY3Rpb25zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IGJvdHRvbURpcmVjdGlvbkluZGV4ID0gZGlyZWN0aW9ucy5maW5kSW5kZXgoZGlyZWN0aW9uID0+IGRpcmVjdGlvbiA9PT0gaXRlbSk7XG4gICAgICAgIGlmIChib3R0b21EaXJlY3Rpb25JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGRpcmVjdGlvbnMuc3BsaWNlKGJvdHRvbURpcmVjdGlvbkluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkaXJlY3Rpb25zLmxlbmd0aCA/IGRpcmVjdGlvbnMgOiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGRldGVjdERyb3BUYXJnZXQgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgZGV0ZWN0UG9pbnQ6IFBvaW50LFxuICAgIGRyb3BUYXJnZXQ6IHsgdGFyZ2V0OiBNaW5kRWxlbWVudDsgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQgfSB8IG51bGwsXG4gICAgYWN0aXZlRWxlbWVudHM6IE1pbmRFbGVtZW50W11cbikgPT4ge1xuICAgIGxldCBkZXRlY3RSZXN1bHQ6IERldGVjdFJlc3VsdFtdIHwgbnVsbCA9IG51bGw7XG4gICAgZGVwdGhGaXJzdFJlY3Vyc2lvbihcbiAgICAgICAgKGJvYXJkIGFzIHVua25vd24pIGFzIE1pbmRFbGVtZW50LFxuICAgICAgICBlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGlmICghTWluZEVsZW1lbnQuaXNNaW5kRWxlbWVudChib2FyZCwgZWxlbWVudCkgfHwgZGV0ZWN0UmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBkaXJlY3Rpb25zID0gZGlyZWN0aW9uRGV0ZWN0b3Iobm9kZSwgZGV0ZWN0UG9pbnQpO1xuICAgICAgICAgICAgaWYgKGRpcmVjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBkZXRlY3RSZXN1bHQgPSBkaXJlY3Rpb25Db3JyZWN0b3IoYm9hcmQsIG5vZGUsIGRpcmVjdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCBpc1ZhbGlkID0gYWN0aXZlRWxlbWVudHMuZXZlcnkoZWxlbWVudCA9PiBpc1ZhbGlkVGFyZ2V0KGVsZW1lbnQsIG5vZGUub3JpZ2luKSk7XG4gICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ICYmIGlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICBkcm9wVGFyZ2V0ID0geyB0YXJnZXQ6IG5vZGUub3JpZ2luLCBkZXRlY3RSZXN1bHQ6IGRldGVjdFJlc3VsdFswXSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnZXRJc1JlY3Vyc2lvbkZ1bmMoYm9hcmQpXG4gICAgKTtcbiAgICByZXR1cm4gZHJvcFRhcmdldDtcbn07XG5cbmV4cG9ydCBjb25zdCBkaXJlY3Rpb25EZXRlY3RvciA9ICh0YXJnZXROb2RlOiBNaW5kTm9kZSwgY2VudGVyUG9pbnQ6IFBvaW50KTogRGV0ZWN0UmVzdWx0W10gfCBudWxsID0+IHtcbiAgICBjb25zdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGdldFJlY3RhbmdsZUJ5Tm9kZSh0YXJnZXROb2RlKTtcbiAgICBjb25zdCB5Q2VudGVyID0geSArIGhlaWdodCAvIDI7XG4gICAgY29uc3QgeENlbnRlciA9IHggKyB3aWR0aCAvIDI7XG5cbiAgICBjb25zdCB0b3AgPSB0YXJnZXROb2RlLnk7XG4gICAgY29uc3QgYm90dG9tID0gdGFyZ2V0Tm9kZS55ICsgdGFyZ2V0Tm9kZS5oZWlnaHQ7XG4gICAgY29uc3QgbGVmdCA9IHRhcmdldE5vZGUueDtcbiAgICBjb25zdCByaWdodCA9IHRhcmdldE5vZGUueCArIHRhcmdldE5vZGUud2lkdGg7XG4gICAgY29uc3QgZGlyZWN0aW9uOiBEZXRlY3RSZXN1bHRbXSA9IFtdO1xuXG4gICAgLy8geCDovbRcbiAgICBpZiAoY2VudGVyUG9pbnRbMV0gPiB5ICYmIGNlbnRlclBvaW50WzFdIDwgeSArIGhlaWdodCkge1xuICAgICAgICBpZiAoY2VudGVyUG9pbnRbMF0gPiBsZWZ0ICYmIGNlbnRlclBvaW50WzBdIDwgeENlbnRlcikge1xuICAgICAgICAgICAgZGlyZWN0aW9uLnB1c2goJ2xlZnQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2VudGVyUG9pbnRbMF0gPiB4Q2VudGVyICYmIGNlbnRlclBvaW50WzBdIDwgcmlnaHQpIHtcbiAgICAgICAgICAgIGRpcmVjdGlvbi5wdXNoKCdyaWdodCcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOmHjeWQiOWMuuWfn++8jOi/lOWbnuS4pOS4quaWueWQkVxuICAgICAgICBpZiAoKGNlbnRlclBvaW50WzBdID4geCAmJiBjZW50ZXJQb2ludFswXSA8IHhDZW50ZXIpIHx8IChjZW50ZXJQb2ludFswXSA+IHhDZW50ZXIgJiYgY2VudGVyUG9pbnRbMF0gPCB4ICsgd2lkdGgpKSB7XG4gICAgICAgICAgICBpZiAoY2VudGVyUG9pbnRbMV0gPCB5Q2VudGVyKSB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uLnB1c2goJ3RvcCcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24ucHVzaCgnYm90dG9tJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpcmVjdGlvbi5sZW5ndGggPyBkaXJlY3Rpb24gOiBudWxsO1xuICAgIH1cblxuICAgIC8vIHkg6L20XG4gICAgaWYgKGNlbnRlclBvaW50WzBdID4geCAmJiBjZW50ZXJQb2ludFswXSA8IHggKyB3aWR0aCkge1xuICAgICAgICBpZiAoY2VudGVyUG9pbnRbMV0gPiB0b3AgJiYgY2VudGVyUG9pbnRbMV0gPCB5Q2VudGVyKSB7XG4gICAgICAgICAgICBkaXJlY3Rpb24ucHVzaCgndG9wJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNlbnRlclBvaW50WzFdID4geUNlbnRlciAmJiBjZW50ZXJQb2ludFsxXSA8IGJvdHRvbSkge1xuICAgICAgICAgICAgZGlyZWN0aW9uLnB1c2goJ2JvdHRvbScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoY2VudGVyUG9pbnRbMV0gPiB5ICYmIGNlbnRlclBvaW50WzFdIDwgeSArIGhlaWdodCkgfHwgKGNlbnRlclBvaW50WzFdID4geUNlbnRlciAmJiBjZW50ZXJQb2ludFsxXSA8IHkgKyBoZWlnaHQpKSB7XG4gICAgICAgICAgICBpZiAoY2VudGVyUG9pbnRbMF0gPCB4Q2VudGVyKSB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uLnB1c2goJ2xlZnQnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uLnB1c2goJ3JpZ2h0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpcmVjdGlvbi5sZW5ndGggPyBkaXJlY3Rpb24gOiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWRUYXJnZXQgPSAob3JpZ2luOiBNaW5kRWxlbWVudCwgdGFyZ2V0OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIHJldHVybiBvcmlnaW4gIT09IHRhcmdldCAmJiAhaXNDaGlsZEVsZW1lbnQob3JpZ2luLCB0YXJnZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFBhdGhCeURyb3BUYXJnZXQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGRyb3BUYXJnZXQ6IHsgdGFyZ2V0OiBNaW5kRWxlbWVudDsgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQgfSkgPT4ge1xuICAgIGxldCB0YXJnZXRQYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgZHJvcFRhcmdldD8udGFyZ2V0KTtcbiAgICBjb25zdCBsYXlvdXQgPSBQbGFpdE1pbmQuaXNNaW5kKGRyb3BUYXJnZXQ/LnRhcmdldClcbiAgICAgICAgPyBnZXRSb290TGF5b3V0KGRyb3BUYXJnZXQ/LnRhcmdldClcbiAgICAgICAgOiBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGJvYXJkLCBNaW5kRWxlbWVudC5nZXRQYXJlbnQoZHJvcFRhcmdldD8udGFyZ2V0KSk7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBnZXROb25BYnN0cmFjdENoaWxkcmVuKGRyb3BUYXJnZXQudGFyZ2V0KTtcbiAgICAvLyDkuIrkuIvluIPlsYDvvJrlt6blj7PmmK/lhYTlvJ/oioLngrnvvIzkuIrkuIvmmK/lrZDoioLngrlcbiAgICBpZiAoaXNWZXJ0aWNhbExvZ2ljTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgaWYgKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAndG9wJyB8fCBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgIHRhcmdldFBhdGgucHVzaChjaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWmguaenOaYr+W3pu+8jOS9jee9ruS4jeWPmO+8jOWPs+WImeaPkuWFpeWIsOS4i+S4gOS4quWFhOW8n+iKgueCuVxuICAgICAgICBpZiAoZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIHRhcmdldFBhdGggPSBQYXRoLm5leHQodGFyZ2V0UGF0aCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8g5rC05bmz5biD5bGAL+agh+WHhuW4g+WxgO+8muS4iuS4i+aYr+WFhOW8n+iKgueCue+8jOW3puWPs+aYr+WtkOiKgueCuVxuICAgIGlmIChpc0hvcml6b250YWxMb2dpY0xheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGlmIChkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgaWYgKFBsYWl0TWluZC5pc01pbmQoZHJvcFRhcmdldD8udGFyZ2V0KSAmJiBpc1N0YW5kYXJkTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRQYXRoLnB1c2goZHJvcFRhcmdldD8udGFyZ2V0LnJpZ2h0Tm9kZUNvdW50ISk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRhcmdldFBhdGgucHVzaChjaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoLnB1c2goY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDlpoLmnpzmmK/kuIrvvIzkvY3nva7kuI3lj5jvvIzkuIvmj5LlhaXliLDkuIvkuIDkuKrlhYTlvJ/oioLngrlcbiAgICAgICAgaWYgKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgdGFyZ2V0UGF0aCA9IFBhdGgubmV4dCh0YXJnZXRQYXRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIOe8qei/m+W4g+WxgO+8muS4iuS4i+aYr+WFhOW8n+iKgueCue+8jOW3puWPs+aYr+WtkOiKgueCue+8jOS9huS4iu+8iOW3puS4ii/lj7PkuIrvvInvvIzmjqLmtYvliLDkuIrmmK/lrZDoioLngrnvvIzkuIvliJnkvY3nva7kuI3lj5jvvIzlj43kuYvlkIznkIbjgIJcbiAgICBpZiAoaXNJbmRlbnRlZExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGlmIChpc1RvcExheW91dChsYXlvdXQpICYmIGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAndG9wJykge1xuICAgICAgICAgICAgdGFyZ2V0UGF0aCA9IFBhdGgubmV4dCh0YXJnZXRQYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNCb3R0b21MYXlvdXQobGF5b3V0KSAmJiBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgIHRhcmdldFBhdGggPSBQYXRoLm5leHQodGFyZ2V0UGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTGVmdExheW91dChsYXlvdXQpICYmIGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgIHRhcmdldFBhdGgucHVzaChjaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1JpZ2h0TGF5b3V0KGxheW91dCkgJiYgZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIHRhcmdldFBhdGgucHVzaChjaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXRQYXRoO1xufTtcbiJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9kbmQvZGV0ZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFTLG1CQUFtQixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUvRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUNILGNBQWMsRUFDZCxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLHFCQUFxQixFQUN4QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBaUIsRUFBRSxJQUFjLEVBQUUsYUFBNkIsRUFBeUIsRUFBRTtJQUMxSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUM5RCxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMseUJBQXlCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsTUFBcUIsQ0FBQyxDQUFDO1FBQ3RHLElBQUks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QUssUUFBUSxFQUFFO1lBQ2hFLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLFlBQVksS0FBSyxNQUFNLEVBQUU7WUFDNUQsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDcEM7UUFDRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsWUFBWSxLQUFLLE9BQU8sRUFBRTtZQUM5RCxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNwQztLQUNKO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgZGVwdGhGaXJzdFJlY3Vyc2lvbiwgUGF0aCwgZ2V0SXNSZWN1cnNpb25GdW5jIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgRGV0ZWN0UmVzdWx0LCBNaW5kTm9kZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuLi9wb3NpdGlvbi9ub2RlJztcbmltcG9ydCB7IE1pbmRRdWVyaWVzIH0gZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBnZXRSb290TGF5b3V0IH0gZnJvbSAnLi4vbGF5b3V0JztcbmltcG9ydCB7XG4gICAgTWluZExheW91dFR5cGUsXG4gICAgZ2V0Tm9uQWJzdHJhY3RDaGlsZHJlbixcbiAgICBpc0hvcml6b250YWxMb2dpY0xheW91dCxcbiAgICBpc0luZGVudGVkTGF5b3V0LFxuICAgIGlzU3RhbmRhcmRMYXlvdXQsXG4gICAgaXNUb3BMYXlvdXQsXG4gICAgaXNWZXJ0aWNhbExvZ2ljTGF5b3V0XG59IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGlzQm90dG9tTGF5b3V0LCBpc1JpZ2h0TGF5b3V0LCBpc0xlZnRMYXlvdXQsIEFic3RyYWN0Tm9kZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGlzQ2hpbGRFbGVtZW50IH0gZnJvbSAnLi4vbWluZCc7XG5cbmV4cG9ydCBjb25zdCBkaXJlY3Rpb25Db3JyZWN0b3IgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIG5vZGU6IE1pbmROb2RlLCBkZXRlY3RSZXN1bHRzOiBEZXRlY3RSZXN1bHRbXSk6IERldGVjdFJlc3VsdFtdIHwgbnVsbCA9PiB7XG4gICAgaWYgKCFub2RlLm9yaWdpbi5pc1Jvb3QgJiYgIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KG5vZGUub3JpZ2luKSkge1xuICAgICAgICBjb25zdCBwYXJlbnRMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGJvYXJkLCBub2RlPy5wYXJlbnQub3JpZ2luIGFzIE1pbmRFbGVtZW50KTtcbiAgICAgICAgaWYgKGlzU3RhbmRhcmRMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gbm9kZS5wYXJlbnQuY2hpbGRyZW4uZmluZEluZGV4KHggPT4geCA9PT0gbm9kZSk7XG4gICAgICAgICAgICBjb25zdCBpc0xlZnQgPSBpZHggPj0gKG5vZGUucGFyZW50Lm9yaWdpbi5yaWdodE5vZGVDb3VudCB8fCAwKTtcbiAgICAgICAgICAgIHJldHVybiBnZXRBbGxvd2VkRGlyZWN0aW9uKGRldGVjdFJlc3VsdHMsIFtpc0xlZnQgPyAncmlnaHQnIDogJ2xlZnQnXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNMZWZ0TGF5b3V0KHBhcmVudExheW91dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRBbGxvd2VkRGlyZWN0aW9uKGRldGVjdFJlc3VsdHMsIFsncmlnaHQnXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNSaWdodExheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0QWxsb3dlZERpcmVjdGlvbihkZXRlY3RSZXN1bHRzLCBbJ2xlZnQnXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyZW50TGF5b3V0ID09PSBNaW5kTGF5b3V0VHlwZS51cHdhcmQpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRBbGxvd2VkRGlyZWN0aW9uKGRldGVjdFJlc3VsdHMsIFsnYm90dG9tJ10pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcmVudExheW91dCA9PT0gTWluZExheW91dFR5cGUuZG93bndhcmQpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRBbGxvd2VkRGlyZWN0aW9uKGRldGVjdFJlc3VsdHMsIFsndG9wJ10pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChib2FyZCwgbm9kZT8ub3JpZ2luIGFzIE1pbmRFbGVtZW50KTtcbiAgICAgICAgaWYgKGlzU3RhbmRhcmRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEFsbG93ZWREaXJlY3Rpb24oZGV0ZWN0UmVzdWx0cywgWyd0b3AnLCAnYm90dG9tJ10pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxheW91dCA9PT0gTWluZExheW91dFR5cGUudXB3YXJkKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0QWxsb3dlZERpcmVjdGlvbihkZXRlY3RSZXN1bHRzLCBbJ2xlZnQnLCAncmlnaHQnLCAnYm90dG9tJ10pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxheW91dCA9PT0gTWluZExheW91dFR5cGUuZG93bndhcmQpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRBbGxvd2VkRGlyZWN0aW9uKGRldGVjdFJlc3VsdHMsIFsnbGVmdCcsICdyaWdodCcsICd0b3AnXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNMZWZ0TGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRBbGxvd2VkRGlyZWN0aW9uKGRldGVjdFJlc3VsdHMsIFsncmlnaHQnLCAndG9wJywgJ2JvdHRvbSddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1JpZ2h0TGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRBbGxvd2VkRGlyZWN0aW9uKGRldGVjdFJlc3VsdHMsIFsnbGVmdCcsICd0b3AnLCAnYm90dG9tJ10pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWxsb3dlZERpcmVjdGlvbiA9IChkZXRlY3RSZXN1bHRzOiBEZXRlY3RSZXN1bHRbXSwgaWxsZWdhbERpcmVjdGlvbnM6IERldGVjdFJlc3VsdFtdKTogRGV0ZWN0UmVzdWx0W10gfCBudWxsID0+IHtcbiAgICBjb25zdCBkaXJlY3Rpb25zID0gZGV0ZWN0UmVzdWx0cztcbiAgICBpbGxlZ2FsRGlyZWN0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBib3R0b21EaXJlY3Rpb25JbmRleCA9IGRpcmVjdGlvbnMuZmluZEluZGV4KGRpcmVjdGlvbiA9PiBkaXJlY3Rpb24gPT09IGl0ZW0pO1xuICAgICAgICBpZiAoYm90dG9tRGlyZWN0aW9uSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBkaXJlY3Rpb25zLnNwbGljZShib3R0b21EaXJlY3Rpb25JbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGlyZWN0aW9ucy5sZW5ndGggPyBkaXJlY3Rpb25zIDogbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBkZXRlY3REcm9wVGFyZ2V0ID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGRldGVjdFBvaW50OiBQb2ludCxcbiAgICBkcm9wVGFyZ2V0OiB7IHRhcmdldDogTWluZEVsZW1lbnQ7IGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0IH0gfCBudWxsLFxuICAgIGFjdGl2ZUVsZW1lbnRzOiBNaW5kRWxlbWVudFtdXG4pID0+IHtcbiAgICBsZXQgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHRbXSB8IG51bGwgPSBudWxsO1xuICAgIGRlcHRoRmlyc3RSZWN1cnNpb24oXG4gICAgICAgIChib2FyZCBhcyB1bmtub3duKSBhcyBNaW5kRWxlbWVudCxcbiAgICAgICAgZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBpZiAoIU1pbmRFbGVtZW50LmlzTWluZEVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpIHx8IGRldGVjdFJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBNaW5kRWxlbWVudC5nZXROb2RlKGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9ucyA9IGRpcmVjdGlvbkRldGVjdG9yKG5vZGUsIGRldGVjdFBvaW50KTtcbiAgICAgICAgICAgIGlmIChkaXJlY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgZGV0ZWN0UmVzdWx0ID0gZGlyZWN0aW9uQ29ycmVjdG9yKGJvYXJkLCBub2RlLCBkaXJlY3Rpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRyb3BUYXJnZXQgPSBudWxsO1xuICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IGFjdGl2ZUVsZW1lbnRzLmV2ZXJ5KGVsZW1lbnQgPT4gaXNWYWxpZFRhcmdldChlbGVtZW50LCBub2RlLm9yaWdpbikpO1xuICAgICAgICAgICAgaWYgKGRldGVjdFJlc3VsdCAmJiBpc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgZHJvcFRhcmdldCA9IHsgdGFyZ2V0OiBub2RlLm9yaWdpbiwgZGV0ZWN0UmVzdWx0OiBkZXRlY3RSZXN1bHRbMF0gfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ2V0SXNSZWN1cnNpb25GdW5jKGJvYXJkKVxuICAgICk7XG4gICAgcmV0dXJuIGRyb3BUYXJnZXQ7XG59O1xuXG5leHBvcnQgY29uc3QgZGlyZWN0aW9uRGV0ZWN0b3IgPSAodGFyZ2V0Tm9kZTogTWluZE5vZGUsIGNlbnRlclBvaW50OiBQb2ludCk6IERldGVjdFJlc3VsdFtdIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRSZWN0YW5nbGVCeU5vZGUodGFyZ2V0Tm9kZSk7XG4gICAgY29uc3QgeUNlbnRlciA9IHkgKyBoZWlnaHQgLyAyO1xuICAgIGNvbnN0IHhDZW50ZXIgPSB4ICsgd2lkdGggLyAyO1xuXG4gICAgY29uc3QgdG9wID0gdGFyZ2V0Tm9kZS55O1xuICAgIGNvbnN0IGJvdHRvbSA9IHRhcmdldE5vZGUueSArIHRhcmdldE5vZGUuaGVpZ2h0O1xuICAgIGNvbnN0IGxlZnQgPSB0YXJnZXROb2RlLng7XG4gICAgY29uc3QgcmlnaHQgPSB0YXJnZXROb2RlLnggKyB0YXJnZXROb2RlLndpZHRoO1xuICAgIGNvbnN0IGRpcmVjdGlvbjogRGV0ZWN0UmVzdWx0W10gPSBbXTtcblxuICAgIC8vIHgtYXhpc1xuICAgIGlmIChjZW50ZXJQb2ludFsxXSA+IHkgJiYgY2VudGVyUG9pbnRbMV0gPCB5ICsgaGVpZ2h0KSB7XG4gICAgICAgIGlmIChjZW50ZXJQb2ludFswXSA+IGxlZnQgJiYgY2VudGVyUG9pbnRbMF0gPCB4Q2VudGVyKSB7XG4gICAgICAgICAgICBkaXJlY3Rpb24ucHVzaCgnbGVmdCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjZW50ZXJQb2ludFswXSA+IHhDZW50ZXIgJiYgY2VudGVyUG9pbnRbMF0gPCByaWdodCkge1xuICAgICAgICAgICAgZGlyZWN0aW9uLnB1c2goJ3JpZ2h0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3ZlcmxhcHBpbmcgYXJlYSwgcmV0dXJuIGluIGJvdGggZGlyZWN0aW9uc1xuICAgICAgICBpZiAoKGNlbnRlclBvaW50WzBdID4geCAmJiBjZW50ZXJQb2ludFswXSA8IHhDZW50ZXIpIHx8IChjZW50ZXJQb2ludFswXSA+IHhDZW50ZXIgJiYgY2VudGVyUG9pbnRbMF0gPCB4ICsgd2lkdGgpKSB7XG4gICAgICAgICAgICBpZiAoY2VudGVyUG9pbnRbMV0gPCB5Q2VudGVyKSB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uLnB1c2goJ3RvcCcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24ucHVzaCgnYm90dG9tJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpcmVjdGlvbi5sZW5ndGggPyBkaXJlY3Rpb24gOiBudWxsO1xuICAgIH1cblxuICAgIC8vIHktYXhpc1xuICAgIGlmIChjZW50ZXJQb2ludFswXSA+IHggJiYgY2VudGVyUG9pbnRbMF0gPCB4ICsgd2lkdGgpIHtcbiAgICAgICAgaWYgKGNlbnRlclBvaW50WzFdID4gdG9wICYmIGNlbnRlclBvaW50WzFdIDwgeUNlbnRlcikge1xuICAgICAgICAgICAgZGlyZWN0aW9uLnB1c2goJ3RvcCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjZW50ZXJQb2ludFsxXSA+IHlDZW50ZXIgJiYgY2VudGVyUG9pbnRbMV0gPCBib3R0b20pIHtcbiAgICAgICAgICAgIGRpcmVjdGlvbi5wdXNoKCdib3R0b20nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGNlbnRlclBvaW50WzFdID4geSAmJiBjZW50ZXJQb2ludFsxXSA8IHkgKyBoZWlnaHQpIHx8IChjZW50ZXJQb2ludFsxXSA+IHlDZW50ZXIgJiYgY2VudGVyUG9pbnRbMV0gPCB5ICsgaGVpZ2h0KSkge1xuICAgICAgICAgICAgaWYgKGNlbnRlclBvaW50WzBdIDwgeENlbnRlcikge1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbi5wdXNoKCdsZWZ0Jyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbi5wdXNoKCdyaWdodCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaXJlY3Rpb24ubGVuZ3RoID8gZGlyZWN0aW9uIDogbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkVGFyZ2V0ID0gKG9yaWdpbjogTWluZEVsZW1lbnQsIHRhcmdldDogTWluZEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gb3JpZ2luICE9PSB0YXJnZXQgJiYgIWlzQ2hpbGRFbGVtZW50KG9yaWdpbiwgdGFyZ2V0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQYXRoQnlEcm9wVGFyZ2V0ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBkcm9wVGFyZ2V0OiB7IHRhcmdldDogTWluZEVsZW1lbnQ7IGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0IH0pID0+IHtcbiAgICBsZXQgdGFyZ2V0UGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGRyb3BUYXJnZXQ/LnRhcmdldCk7XG4gICAgY29uc3QgbGF5b3V0ID0gUGxhaXRNaW5kLmlzTWluZChkcm9wVGFyZ2V0Py50YXJnZXQpXG4gICAgICAgID8gZ2V0Um9vdExheW91dChkcm9wVGFyZ2V0Py50YXJnZXQpXG4gICAgICAgIDogTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChib2FyZCwgTWluZEVsZW1lbnQuZ2V0UGFyZW50KGRyb3BUYXJnZXQ/LnRhcmdldCkpO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gZ2V0Tm9uQWJzdHJhY3RDaGlsZHJlbihkcm9wVGFyZ2V0LnRhcmdldCk7XG4gICAgaWYgKGlzVmVydGljYWxMb2dpY0xheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGlmIChkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ3RvcCcgfHwgZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoLnB1c2goY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIHRhcmdldFBhdGggPSBQYXRoLm5leHQodGFyZ2V0UGF0aCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzSG9yaXpvbnRhbExvZ2ljTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgaWYgKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICBpZiAoUGxhaXRNaW5kLmlzTWluZChkcm9wVGFyZ2V0Py50YXJnZXQpICYmIGlzU3RhbmRhcmRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFBhdGgucHVzaChkcm9wVGFyZ2V0Py50YXJnZXQucmlnaHROb2RlQ291bnQhKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0UGF0aC5wdXNoKGNoaWxkcmVuLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgIHRhcmdldFBhdGgucHVzaChjaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgIHRhcmdldFBhdGggPSBQYXRoLm5leHQodGFyZ2V0UGF0aCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBpZiAoaXNUb3BMYXlvdXQobGF5b3V0KSAmJiBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgIHRhcmdldFBhdGggPSBQYXRoLm5leHQodGFyZ2V0UGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQm90dG9tTGF5b3V0KGxheW91dCkgJiYgZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoID0gUGF0aC5uZXh0KHRhcmdldFBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0xlZnRMYXlvdXQobGF5b3V0KSAmJiBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoLnB1c2goY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNSaWdodExheW91dChsYXlvdXQpICYmIGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICB0YXJnZXRQYXRoLnB1c2goY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0UGF0aDtcbn07XG4iXX0=
@@ -15,7 +15,6 @@ export function drawIndentedLink(board, node, child, defaultStroke = null, needD
15
15
  beginY = isChildUp(node, child) ? beginRectangle.y : beginRectangle.y + beginRectangle.height;
16
16
  endX = node.left ? endNode.x + endNode.hGap + endRectangle.width : endNode.x + endNode.hGap;
17
17
  endY = isUnderlineShape ? endNode.y + endNode.height - endNode.vGap : endNode.y + endNode.height / 2;
18
- //根据位置,设置正负参数
19
18
  let plusMinus = isChildUp(node, child) ? (node.left ? [-1, -1] : [1, -1]) : node.left ? [-1, 1] : [1, 1];
20
19
  let curve = [
21
20
  [beginX, beginY],
@@ -41,4 +40,4 @@ export function drawIndentedLink(board, node, child, defaultStroke = null, needD
41
40
  const points = pointsOnBezierCurves(curve, 0.001);
42
41
  return drawBezierPath(points, { stroke: branchColor, strokeWidth: branchWidth });
43
42
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZW50ZWQtbGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXcvbm9kZS1saW5rL2luZGVudGVkLWxpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxFQUFxQixjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDekUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEksT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVFLE1BQU0sVUFBVSxnQkFBZ0IsQ0FDNUIsS0FBaUIsRUFDakIsSUFBYyxFQUNkLEtBQWUsRUFDZixnQkFBK0IsSUFBSSxFQUNuQyxpQkFBaUIsR0FBRyxJQUFJLEVBQ3hCLGtCQUEyQjtJQUUzQixNQUFNLFdBQVcsR0FBRywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixJQUFJLDJCQUEyQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUYsTUFBTSxXQUFXLEdBQUcsYUFBYSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxJQUFJLDJCQUEyQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbEgsTUFBTSxnQkFBZ0IsR0FBSSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBc0IsS0FBSyxnQkFBZ0IsQ0FBQyxT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RSxDQUFDLENBQUM7QUFDaEcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvaW50c09uQmV6aWVyQ3VydmVzIH0gZnJvbSAncG9pbnRzLW9uLWN1cnZlJztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBkcmF3QmV6aWVyUGF0aCwgZHJhd0xpbmVhclBhdGggfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBnZXRTaGFwZUJ5RWxlbWVudCwgZ2V0UmVjdGFuZ2xlQnlOb2RlLCBpc0NoaWxkVXAgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBnZXRCcmFuY2hDb2xvckJ5TWluZEVsZW1lbnQsIGdldEJyYW5jaFNoYXBlQnlNaW5kRWxlbWVudCwgZ2V0QnJhbmNoV2lkdGhCeU1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vbm9kZS1zdHlsZS9icmFuY2gnO1xuaW1wb3J0IHsgQnJhbmNoU2hhcGUsIE1pbmRFbGVtZW50U2hhcGUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gZHJhd0luZGVudGVkTGluayhcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBub2RlOiBNaW5kTm9kZSxcbiAgICBjaGlsZDogTWluZE5vZGUsXG4gICAgZGVmYXVsdFN0cm9rZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgbmVlZERyYXdVbmRlcmxpbmUgPSB0cnVlLFxuICAgIGRlZmF1bHRTdHJva2VXaWR0aD86IG51bWJlclxuKSB7XG4gICAgY29uc3QgYnJhbmNoU2hhcGUgPSBnZXRCcmFuY2hTaGFwZUJ5TWluZEVsZW1lbnQoYm9hcmQsIG5vZGUub3JpZ2luKTtcbiAgICBjb25zdCBicmFuY2hXaWR0aCA9IGRlZmF1bHRTdHJva2VXaWR0aCB8fCBnZXRCcmFuY2hXaWR0aEJ5TWluZEVsZW1lbnQoYm9hcmQsIG5vZGUub3JpZ2luKTtcbiAgICBjb25zdCBicmFuY2hDb2xvciA9IGRlZmF1bHRTdHJva2UgfHwgbm9kZS5vcmlnaW4/LmJyYW5jaENvbG9yIHx8IGdldEJyYW5jaENvbG9yQnlNaW5kRWxlbWVudChib2FyZCwgY2hpbGQub3JpZ2luKTtcblxuICAgIGNvbnN0IGlzVW5kZXJsaW5lU2hhcGUgPSAoZ2V0U2hhcGVCeUVsZW1lbnQoYm9hcmQsIGNoaWxkLm9yaWdpbikgYXMgTWluZEVsZW1lbnRTaGFwZSkgPT09IE1pbmRFbGVtZW50U2hhcGUudW5kZXJsaW5lO1xuICAgIGxldCBiZWdpblgsXG4gICAgICAgIGJlZ2luWSxcbiAgICAgICAgZW5kWCxcbiAgICAgICAgZW5kWSxcbiAgICAgICAgYmVnaW5Ob2RlID0gbm9kZSxcbiAgICAgICAgZW5kTm9kZSA9IGNoaWxkO1xuICAgIGNvbnN0IGJlZ2luUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKGJlZ2luTm9kZSk7XG4gICAgY29uc3QgZW5kUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKGVuZE5vZGUpO1xuXG4gICAgYmVnaW5YID0gYmVnaW5Ob2RlLnggKyBiZWdpbk5vZGUud2lkdGggLyAyO1xuICAgIGJlZ2luWSA9IGlzQ2hpbGRVcChub2RlLCBjaGlsZCkgPyBiZWdpblJlY3RhbmdsZS55IDogYmVnaW5SZWN0YW5nbGUueSArIGJlZ2luUmVjdGFuZ2xlLmhlaWdodDtcbiAgICBlbmRYID0gbm9kZS5sZWZ0ID8gZW5kTm9kZS54ICsgZW5kTm9kZS5oR2FwICsgZW5kUmVjdGFuZ2xlLndpZHRoIDogZW5kTm9kZS54ICsgZW5kTm9kZS5oR2FwO1xuICAgIGVuZFkgPSBpc1VuZGVybGluZVNoYXBlID8gZW5kTm9kZS55ICsgZW5kTm9kZS5oZWlnaHQgLSBlbmROb2RlLnZHYXAgOiBlbmROb2RlLnkgKyBlbmROb2RlLmhlaWdodCAvIDI7XG4gICAgLy/moLnmja7kvY3nva7vvIzorr7nva7mraPotJ/lj4LmlbBcbiAgICBsZXQgcGx1c01pbnVzID0gaXNDaGlsZFVwKG5vZGUsIGNoaWxkKSA/IChub2RlLmxlZnQgPyBbLTEsIC0xXSA6IFsxLCAtMV0pIDogbm9kZS5sZWZ0ID8gWy0xLCAxXSA6IFsxLCAxXTtcblxuICAgIGxldCBjdXJ2ZTogUG9pbnRbXSA9IFtcbiAgICAgICAgW2JlZ2luWCwgYmVnaW5ZXSxcbiAgICAgICAgW2JlZ2luWCwgYmVnaW5ZXSxcbiAgICAgICAgW2JlZ2luWCwgYmVnaW5ZXSxcbiAgICAgICAgW2JlZ2luWCwgZW5kWSAtIChlbmROb2RlLmhHYXAgKiAzICogcGx1c01pbnVzWzFdKSAvIDVdLFxuICAgICAgICBbYmVnaW5YLCBlbmRZIC0gKGVuZE5vZGUuaEdhcCAqIHBsdXNNaW51c1sxXSkgLyA1XSxcbiAgICAgICAgW2JlZ2luWCArIChlbmROb2RlLmhHYXAgKiBwbHVzTWludXNbMF0pIC8gNCwgZW5kWV0sXG4gICAgICAgIFtiZWdpblggKyAoZW5kTm9kZS5oR2FwICogcGx1c01pbnVzWzBdICogMykgLyA1LCBlbmRZXSxcbiAgICAgICAgaXNVbmRlcmxpbmVTaGFwZSAmJiBuZWVkRHJhd1VuZGVybGluZSA/IFtlbmRYICsgKGVuZE5vZGUud2lkdGggLSBlbmROb2RlLmhHYXAgKiAyKSAqIHBsdXNNaW51c1swXSwgZW5kWV0gOiBbZW5kWCwgZW5kWV0sXG4gICAgICAgIGlzVW5kZXJsaW5lU2hhcGUgJiYgbmVlZERyYXdVbmRlcmxpbmUgPyBbZW5kWCArIChlbmROb2RlLndpZHRoIC0gZW5kTm9kZS5oR2FwICogMikgKiBwbHVzTWludXNbMF0sIGVuZFldIDogW2VuZFgsIGVuZFldLFxuICAgICAgICBpc1VuZGVybGluZVNoYXBlICYmIG5lZWREcmF3VW5kZXJsaW5lID8gW2VuZFggKyAoZW5kTm9kZS53aWR0aCAtIGVuZE5vZGUuaEdhcCAqIDIpICogcGx1c01pbnVzWzBdLCBlbmRZXSA6IFtlbmRYLCBlbmRZXVxuICAgIF07XG5cbiAgICBpZiAoYnJhbmNoU2hhcGUgPT09IEJyYW5jaFNoYXBlLnBvbHlsaW5lKSB7XG4gICAgICAgIGNvbnN0IHBvbHlsaW5lUG9pbnRzID0gW1xuICAgICAgICAgICAgW2JlZ2luWCwgYmVnaW5ZXSxcbiAgICAgICAgICAgIFtiZWdpblgsIGVuZFldLFxuICAgICAgICAgICAgW2VuZFgsIGVuZFldLFxuICAgICAgICAgICAgaXNVbmRlcmxpbmVTaGFwZSAmJiBuZWVkRHJhd1VuZGVybGluZSA/IFtlbmRYICsgKGVuZE5vZGUud2lkdGggLSBlbmROb2RlLmhHYXAgKiAyKSAqIHBsdXNNaW51c1swXSwgZW5kWV0gOiBbZW5kWCwgZW5kWV1cbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gZHJhd0xpbmVhclBhdGgocG9seWxpbmVQb2ludHMgYXMgUG9pbnRbXSwgeyBzdHJva2U6IGJyYW5jaENvbG9yLCBzdHJva2VXaWR0aDogYnJhbmNoV2lkdGggfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcG9pbnRzID0gcG9pbnRzT25CZXppZXJDdXJ2ZXMoY3VydmUsIDAuMDAxKTtcbiAgICByZXR1cm4gZHJhd0JlemllclBhdGgocG9pbnRzIGFzIFBvaW50W10sIHsgc3Ryb2tlOiBicmFuY2hDb2xvciwgc3Ryb2tlV2lkdGg6IGJyYW5jaFdpZHRoIH0pO1xufVxuIl19
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZW50ZWQtbGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXcvbm9kZS1saW5rL2luZGVudGVkLWxpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxFQUFxQixjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDekUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEksT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVFLE1BQU0sVUFBVSxnQkFBZ0IsQ0FDNUIsS0FBaUIsRUFDakIsSUFBYyxFQUNkLEtBQWUsRUFDZixnQkFBK0IsSUFBSSxFQUNuQyxpQkFBaUIsR0FBRyxJQUFJLEVBQ3hCLGtCQUEyQjtJQUUzQixNQUFNLFdBQVcsR0FBRywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixJQUFJLDJCQUEyQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUYsTUFBTSxXQUFXLEdBQUcsYUFBYSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxJQUFJLDJCQUEyQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbEgsTUFBTSxnQkFBZ0IsR0FBSSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBc0IsS0FBSyxnQkFBZ0IsQ0FBQyxT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QztBQUNoRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9pbnRzT25CZXppZXJDdXJ2ZXMgfSBmcm9tICdwb2ludHMtb24tY3VydmUnO1xuaW1wb3J0IHsgTWluZE5vZGUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIGRyYXdCZXppZXJQYXRoLCBkcmF3TGluZWFyUGF0aCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGdldFNoYXBlQnlFbGVtZW50LCBnZXRSZWN0YW5nbGVCeU5vZGUsIGlzQ2hpbGRVcCB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IGdldEJyYW5jaENvbG9yQnlNaW5kRWxlbWVudCwgZ2V0QnJhbmNoU2hhcGVCeU1pbmRFbGVtZW50LCBnZXRCcmFuY2hXaWR0aEJ5TWluZEVsZW1lbnQgfSBmcm9tICcuLi8uLi9ub2RlLXN0eWxlL2JyYW5jaCc7XG5pbXBvcnQgeyBCcmFuY2hTaGFwZSwgTWluZEVsZW1lbnRTaGFwZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3SW5kZW50ZWRMaW5rKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIG5vZGU6IE1pbmROb2RlLFxuICAgIGNoaWxkOiBNaW5kTm9kZSxcbiAgICBkZWZhdWx0U3Ryb2tlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBuZWVkRHJhd1VuZGVybGluZSA9IHRydWUsXG4gICAgZGVmYXVsdFN0cm9rZVdpZHRoPzogbnVtYmVyXG4pIHtcbiAgICBjb25zdCBicmFuY2hTaGFwZSA9IGdldEJyYW5jaFNoYXBlQnlNaW5kRWxlbWVudChib2FyZCwgbm9kZS5vcmlnaW4pO1xuICAgIGNvbnN0IGJyYW5jaFdpZHRoID0gZGVmYXVsdFN0cm9rZVdpZHRoIHx8IGdldEJyYW5jaFdpZHRoQnlNaW5kRWxlbWVudChib2FyZCwgbm9kZS5vcmlnaW4pO1xuICAgIGNvbnN0IGJyYW5jaENvbG9yID0gZGVmYXVsdFN0cm9rZSB8fCBub2RlLm9yaWdpbj8uYnJhbmNoQ29sb3IgfHwgZ2V0QnJhbmNoQ29sb3JCeU1pbmRFbGVtZW50KGJvYXJkLCBjaGlsZC5vcmlnaW4pO1xuXG4gICAgY29uc3QgaXNVbmRlcmxpbmVTaGFwZSA9IChnZXRTaGFwZUJ5RWxlbWVudChib2FyZCwgY2hpbGQub3JpZ2luKSBhcyBNaW5kRWxlbWVudFNoYXBlKSA9PT0gTWluZEVsZW1lbnRTaGFwZS51bmRlcmxpbmU7XG4gICAgbGV0IGJlZ2luWCxcbiAgICAgICAgYmVnaW5ZLFxuICAgICAgICBlbmRYLFxuICAgICAgICBlbmRZLFxuICAgICAgICBiZWdpbk5vZGUgPSBub2RlLFxuICAgICAgICBlbmROb2RlID0gY2hpbGQ7XG4gICAgY29uc3QgYmVnaW5SZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeU5vZGUoYmVnaW5Ob2RlKTtcbiAgICBjb25zdCBlbmRSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeU5vZGUoZW5kTm9kZSk7XG5cbiAgICBiZWdpblggPSBiZWdpbk5vZGUueCArIGJlZ2luTm9kZS53aWR0aCAvIDI7XG4gICAgYmVnaW5ZID0gaXNDaGlsZFVwKG5vZGUsIGNoaWxkKSA/IGJlZ2luUmVjdGFuZ2xlLnkgOiBiZWdpblJlY3RhbmdsZS55ICsgYmVnaW5SZWN0YW5nbGUuaGVpZ2h0O1xuICAgIGVuZFggPSBub2RlLmxlZnQgPyBlbmROb2RlLnggKyBlbmROb2RlLmhHYXAgKyBlbmRSZWN0YW5nbGUud2lkdGggOiBlbmROb2RlLnggKyBlbmROb2RlLmhHYXA7XG4gICAgZW5kWSA9IGlzVW5kZXJsaW5lU2hhcGUgPyBlbmROb2RlLnkgKyBlbmROb2RlLmhlaWdodCAtIGVuZE5vZGUudkdhcCA6IGVuZE5vZGUueSArIGVuZE5vZGUuaGVpZ2h0IC8gMjtcblxuICAgIGxldCBwbHVzTWludXMgPSBpc0NoaWxkVXAobm9kZSwgY2hpbGQpID8gKG5vZGUubGVmdCA/IFstMSwgLTFdIDogWzEsIC0xXSkgOiBub2RlLmxlZnQgPyBbLTEsIDFdIDogWzEsIDFdO1xuXG4gICAgbGV0IGN1cnZlOiBQb2ludFtdID0gW1xuICAgICAgICBbYmVnaW5YLCBiZWdpblldLFxuICAgICAgICBbYmVnaW5YLCBiZWdpblldLFxuICAgICAgICBbYmVnaW5YLCBiZWdpblldLFxuICAgICAgICBbYmVnaW5YLCBlbmRZIC0gKGVuZE5vZGUuaEdhcCAqIDMgKiBwbHVzTWludXNbMV0pIC8gNV0sXG4gICAgICAgIFtiZWdpblgsIGVuZFkgLSAoZW5kTm9kZS5oR2FwICogcGx1c01pbnVzWzFdKSAvIDVdLFxuICAgICAgICBbYmVnaW5YICsgKGVuZE5vZGUuaEdhcCAqIHBsdXNNaW51c1swXSkgLyA0LCBlbmRZXSxcbiAgICAgICAgW2JlZ2luWCArIChlbmROb2RlLmhHYXAgKiBwbHVzTWludXNbMF0gKiAzKSAvIDUsIGVuZFldLFxuICAgICAgICBpc1VuZGVybGluZVNoYXBlICYmIG5lZWREcmF3VW5kZXJsaW5lID8gW2VuZFggKyAoZW5kTm9kZS53aWR0aCAtIGVuZE5vZGUuaEdhcCAqIDIpICogcGx1c01pbnVzWzBdLCBlbmRZXSA6IFtlbmRYLCBlbmRZXSxcbiAgICAgICAgaXNVbmRlcmxpbmVTaGFwZSAmJiBuZWVkRHJhd1VuZGVybGluZSA/IFtlbmRYICsgKGVuZE5vZGUud2lkdGggLSBlbmROb2RlLmhHYXAgKiAyKSAqIHBsdXNNaW51c1swXSwgZW5kWV0gOiBbZW5kWCwgZW5kWV0sXG4gICAgICAgIGlzVW5kZXJsaW5lU2hhcGUgJiYgbmVlZERyYXdVbmRlcmxpbmUgPyBbZW5kWCArIChlbmROb2RlLndpZHRoIC0gZW5kTm9kZS5oR2FwICogMikgKiBwbHVzTWludXNbMF0sIGVuZFldIDogW2VuZFgsIGVuZFldXG4gICAgXTtcblxuICAgIGlmIChicmFuY2hTaGFwZSA9PT0gQnJhbmNoU2hhcGUucG9seWxpbmUpIHtcbiAgICAgICAgY29uc3QgcG9seWxpbmVQb2ludHMgPSBbXG4gICAgICAgICAgICBbYmVnaW5YLCBiZWdpblldLFxuICAgICAgICAgICAgW2JlZ2luWCwgZW5kWV0sXG4gICAgICAgICAgICBbZW5kWCwgZW5kWV0sXG4gICAgICAgICAgICBpc1VuZGVybGluZVNoYXBlICYmIG5lZWREcmF3VW5kZXJsaW5lID8gW2VuZFggKyAoZW5kTm9kZS53aWR0aCAtIGVuZE5vZGUuaEdhcCAqIDIpICogcGx1c01pbnVzWzBdLCBlbmRZXSA6IFtlbmRYLCBlbmRZXVxuICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiBkcmF3TGluZWFyUGF0aChwb2x5bGluZVBvaW50cyBhcyBQb2ludFtdLCB7IHN0cm9rZTogYnJhbmNoQ29sb3IsIHN0cm9rZVdpZHRoOiBicmFuY2hXaWR0aCB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBwb2ludHMgPSBwb2ludHNPbkJlemllckN1cnZlcyhjdXJ2ZSwgMC4wMDEpO1xuICAgIHJldHVybiBkcmF3QmV6aWVyUGF0aChwb2ludHMgYXMgUG9pbnRbXSwgeyBzdHJva2U6IGJyYW5jaENvbG9yLCBzdHJva2VXaWR0aDogYnJhbmNoV2lkdGggfSk7XG59XG4iXX0=
@@ -32,12 +32,11 @@ export function drawLogicLink(board, parent, node, isHorizontal, defaultStroke =
32
32
  }
33
33
  let beginPoint = getPointByPlacement(parentClient, beginPlacement);
34
34
  let endPoint = getPointByPlacement(nodeClient, endPlacement);
35
- // ② 确定凸出直线,从起始点开始画一条直线,从直线的结束位置绘制曲线,保证收起图标可以完美覆盖起始连线,根节点不需要这条直线
36
- // 绘制贝塞尔曲线要求,需要增加三个点,正常两个点就可以确定这条直线
35
+ // ② Determine the convex straight line
37
36
  const straightLineDistance = 8;
38
37
  const beginPoint2 = hasStraightLine ? moveXOfPoint(beginPoint, straightLineDistance, linkDirection) : beginPoint;
39
38
  let straightLine = hasStraightLine ? [beginPoint, beginPoint2, beginPoint2] : [];
40
- // ③ 确定曲线
39
+ // ③ Determine the curve
41
40
  const beginBufferDistance = (parent.hGap + node.hGap) / 3;
42
41
  const endBufferDistance = -(parent.hGap + node.hGap) / 2.4;
43
42
  let curve = [
@@ -46,7 +45,7 @@ export function drawLogicLink(board, parent, node, isHorizontal, defaultStroke =
46
45
  moveXOfPoint(endPoint, endBufferDistance, linkDirection),
47
46
  endPoint
48
47
  ];
49
- // ④ 下划线绘制,underline shape and horizontal
48
+ // ④ underline shape and horizontal
50
49
  const underlineEnd = moveXOfPoint(endPoint, nodeClient.width, linkDirection);
51
50
  const underline = hasUnderlineShape && isHorizontal ? [underlineEnd, underlineEnd, underlineEnd] : [];
52
51
  const points = pointsOnBezierCurves([...straightLine, ...curve, ...underline]);
@@ -64,4 +63,4 @@ export function drawLogicLink(board, parent, node, isHorizontal, defaultStroke =
64
63
  }
65
64
  return PlaitBoard.getRoughSVG(board).curve(points, { stroke: branchColor, strokeWidth: branchWidth });
66
65
  }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naWMtbGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXcvbm9kZS1saW5rL2xvZ2ljLWxpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBUyxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsSCxPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEksT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVFLE1BQU0sVUFBVSxhQUFhLENBQ3pCLEtBQWlCLEVBQ2pCLE1BQWdCLEVBQ2hCLElBQWMsRUFDZCxZQUFxQixFQUNyQixnQkFBK0IsSUFBSSxFQUNuQyxrQkFBMkI7SUFFM0IsTUFBTSxXQUFXLEdBQUcsMkJBQTJCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RSxNQUFNLFdBQVcsR0FBRyxhQUFhLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxXQUFXLElBQUksMkJBQTJCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuSCxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsSUFBSSwyQkFBMkIsQ0FBQyxLQUFLLEVBQUUs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LW9uLWN1cnZlJztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBkcmF3TGluZWFyUGF0aCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5Tm9kZSwgZ2V0U2hhcGVCeUVsZW1lbnQgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBnZXRMYXlvdXREaXJlY3Rpb24sIGdldFBvaW50QnlQbGFjZW1lbnQsIG1vdmVYT2ZQb2ludCwgdHJhbnNmb3JtUGxhY2VtZW50IH0gZnJvbSAnLi4vLi4vcG9pbnQtcGxhY2VtZW50JztcbmltcG9ydCB7IEhvcml6b250YWxQbGFjZW1lbnQsIFBvaW50UGxhY2VtZW50LCBWZXJ0aWNhbFBsYWNlbWVudCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvdHlwZXMnO1xuaW1wb3J0IHsgZ2V0QnJhbmNoQ29sb3JCeU1pbmRFbGVtZW50LCBnZXRCcmFuY2hTaGFwZUJ5TWluZEVsZW1lbnQsIGdldEJyYW5jaFdpZHRoQnlNaW5kRWxlbWVudCB9IGZyb20gJy4uLy4uL25vZGUtc3R5bGUvYnJhbmNoJztcbmltcG9ydCB7IEJyYW5jaFNoYXBlLCBNaW5kRWxlbWVudFNoYXBlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcblxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdMb2dpY0xpbmsoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgcGFyZW50OiBNaW5kTm9kZSxcbiAgICBub2RlOiBNaW5kTm9kZSxcbiAgICBpc0hvcml6b250YWw6IGJvb2xlYW4sXG4gICAgZGVmYXVsdFN0cm9rZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4gICAgZGVmYXVsdFN0cm9rZVdpZHRoPzogbnVtYmVyXG4pIHtcbiAgICBjb25zdCBicmFuY2hTaGFwZSA9IGdldEJyYW5jaFNoYXBlQnlNaW5kRWxlbWVudChib2FyZCwgcGFyZW50Lm9yaWdpbik7XG4gICAgY29uc3QgYnJhbmNoQ29sb3IgPSBkZWZhdWx0U3Ryb2tlIHx8IHBhcmVudC5vcmlnaW4/LmJyYW5jaENvbG9yIHx8IGdldEJyYW5jaENvbG9yQnlNaW5kRWxlbWVudChib2FyZCwgbm9kZS5vcmlnaW4pO1xuICAgIGNvbnN0IGJyYW5jaFdpZHRoID0gZGVmYXVsdFN0cm9rZVdpZHRoIHx8IGdldEJyYW5jaFdpZHRoQnlNaW5kRWxlbWVudChib2FyZCwgcGFyZW50Lm9yaWdpbik7XG4gICAgY29uc3QgaGFzU3RyYWlnaHRMaW5lID0gYnJhbmNoU2hhcGUgPT09IEJyYW5jaFNoYXBlLnBvbHlsaW5lID8gdHJ1ZSA6ICFwYXJlbnQub3JpZ2luLmlzUm9vdDtcbiAgICBjb25zdCBwYXJlbnRTaGFwZSA9IGdldFNoYXBlQnlFbGVtZW50KGJvYXJkLCBwYXJlbnQub3JpZ2luKTtcbiAgICBjb25zdCBzaGFwZSA9IGdldFNoYXBlQnlFbGVtZW50KGJvYXJkLCBub2RlLm9yaWdpbik7XG4gICAgY29uc3QgaGFzVW5kZXJsaW5lU2hhcGUgPSBzaGFwZSA9PT0gTWluZEVsZW1lbnRTaGFwZS51bmRlcmxpbmU7XG4gICAgY29uc3QgaGFzVW5kZXJsaW5lU2hhcGVPZlBhcmVudCA9IHBhcmVudFNoYXBlID09PSBNaW5kRWxlbWVudFNoYXBlLnVuZGVybGluZTtcbiAgICBjb25zdCBub2RlQ2xpZW50ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKG5vZGUpO1xuICAgIGNvbnN0IHBhcmVudENsaWVudCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShwYXJlbnQpO1xuICAgIGNvbnN0IGxpbmtEaXJlY3Rpb24gPSBnZXRMYXlvdXREaXJlY3Rpb24obm9kZSwgaXNIb3Jpem9udGFsKTtcblxuICAgIC8vIOKRoCBlbnN1cmUgYmVnaW4gcGxhY2VtZW50IGFuZCBlbmQgcGxhY2VtZW50XG4gICAgLy8gYmVnaW4gcGxhY2VtZW50IHJlcHJlc2VudCBwYXJlbnQgY29ubmVjdG9yIHBvc2l0aW9uIGFuZCBlbmQgcGxhY2VtZW50IHJlcHJlc2VudCBjaGlsZCBjb25uZWN0b3JcbiAgICBjb25zdCBiZWdpblBsYWNlbWVudDogUG9pbnRQbGFjZW1lbnQgPSBbSG9yaXpvbnRhbFBsYWNlbWVudC5yaWdodCwgVmVydGljYWxQbGFjZW1lbnQubWlkZGxlXTtcbiAgICBjb25zdCBlbmRQbGFjZW1lbnQ6IFBvaW50UGxhY2VtZW50ID0gW0hvcml6b250YWxQbGFjZW1lbnQubGVmdCwgVmVydGljYWxQbGFjZW1lbnQubWlkZGxlXTtcblxuICAgIHRyYW5zZm9ybVBsYWNlbWVudChiZWdpblBsYWNlbWVudCwgbGlua0RpcmVjdGlvbik7XG4gICAgdHJhbnNmb3JtUGxhY2VtZW50KGVuZFBsYWNlbWVudCwgbGlua0RpcmVjdGlvbik7XG5cbiAgICAvLyB1bmRlcmxpbmUgc2hhcGUgYW5kIGhvcml6b250YWxcbiAgICBpZiAoaXNIb3Jpem9udGFsICYmIGhhc1VuZGVybGluZVNoYXBlT2ZQYXJlbnQgJiYgIXBhcmVudC5vcmlnaW4uaXNSb290KSB7XG4gICAgICAgIGJlZ2luUGxhY2VtZW50WzFdID0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tO1xuICAgIH1cbiAgICBpZiAoaXNIb3Jpem9udGFsICYmIGhhc1VuZGVybGluZVNoYXBlKSB7XG4gICAgICAgIGVuZFBsYWNlbWVudFsxXSA9IFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbTtcbiAgICB9XG5cbiAgICBsZXQgYmVnaW5Qb2ludCA9IGdldFBvaW50QnlQbGFjZW1lbnQocGFyZW50Q2xpZW50LCBiZWdpblBsYWNlbWVudCk7XG4gICAgbGV0IGVuZFBvaW50ID0gZ2V0UG9pbnRCeVBsYWNlbWVudChub2RlQ2xpZW50LCBlbmRQbGFjZW1lbnQpO1xuXG4gICAgLy8g4pGhIOehruWumuWHuOWHuuebtOe6v++8jOS7jui1t+Wni+eCueW8gOWni+eUu+S4gOadoeebtOe6v++8jOS7juebtOe6v+eahOe7k+adn+S9jee9rue7mOWItuabsue6v++8jOS/neivgeaUtui1t+Wbvuagh+WPr+S7peWujOe+juimhueblui1t+Wni+i/nue6v++8jOagueiKgueCueS4jemcgOimgei/meadoeebtOe6v1xuICAgIC8vIOe7mOWItui0neWhnuWwlOabsue6v+imgeaxgu+8jOmcgOimgeWinuWKoOS4ieS4queCue+8jOato+W4uOS4pOS4queCueWwseWPr+S7peehruWumui/meadoeebtOe6v1xuICAgIGNvbnN0IHN0cmFpZ2h0TGluZURpc3RhbmNlID0gODtcbiAgICBjb25zdCBiZWdpblBvaW50MiA9IGhhc1N0cmFpZ2h0TGluZSA/IG1vdmVYT2ZQb2ludChiZWdpblBvaW50LCBzdHJhaWdodExpbmVEaXN0YW5jZSwgbGlua0RpcmVjdGlvbikgOiBiZWdpblBvaW50O1xuICAgIGxldCBzdHJhaWdodExpbmU6IFBvaW50W10gPSBoYXNTdHJhaWdodExpbmUgPyBbYmVnaW5Qb2ludCwgYmVnaW5Qb2ludDIsIGJlZ2luUG9pbnQyXSA6IFtdO1xuXG4gICAgLy8g4pGiIOehruWumuabsue6v1xuICAgIGNvbnN0IGJlZ2luQnVmZmVyRGlzdGFuY2UgPSAocGFyZW50LmhHYXAgKyBub2RlLmhHYXApIC8gMztcbiAgICBjb25zdCBlbmRCdWZmZXJEaXN0YW5jZSA9IC0ocGFyZW50LmhHYXAgKyBub2RlLmhHYXApIC8gMi40O1xuICAgIGxldCBjdXJ2ZTogUG9pbnRbXSA9IFtcbiAgICAgICAgYmVnaW5Qb2ludDIsXG4gICAgICAgIG1vdmVYT2ZQb2ludChiZWdpblBvaW50MiwgYmVnaW5CdWZmZXJEaXN0YW5jZSwgbGlua0RpcmVjdGlvbiksXG4gICAgICAgIG1vdmVYT2ZQb2ludChlbmRQb2ludCwgZW5kQnVmZmVyRGlzdGFuY2UsIGxpbmtEaXJlY3Rpb24pLFxuICAgICAgICBlbmRQb2ludFxuICAgIF07XG5cbiAgICAvLyDikaMg5LiL5YiS57q/57uY5Yi277yMdW5kZXJsaW5lIHNoYXBlIGFuZCBob3Jpem9udGFsXG4gICAgY29uc3QgdW5kZXJsaW5lRW5kID0gbW92ZVhPZlBvaW50KGVuZFBvaW50LCBub2RlQ2xpZW50LndpZHRoLCBsaW5rRGlyZWN0aW9uKTtcbiAgICBjb25zdCB1bmRlcmxpbmU6IFBvaW50W10gPSBoYXNVbmRlcmxpbmVTaGFwZSAmJiBpc0hvcml6b250YWwgPyBbdW5kZXJsaW5lRW5kLCB1bmRlcmxpbmVFbmQsIHVuZGVybGluZUVuZF0gOiBbXTtcblxuICAgIGNvbnN0IHBvaW50cyA9IHBvaW50c09uQmV6aWVyQ3VydmVzKFsuLi5zdHJhaWdodExpbmUsIC4uLmN1cnZlLCAuLi51bmRlcmxpbmVdKTtcblxuICAgIGlmIChicmFuY2hTaGFwZSA9PT0gQnJhbmNoU2hhcGUucG9seWxpbmUpIHtcbiAgICAgICAgY29uc3QgYnVmZmVyID0gODtcbiAgICAgICAgY29uc3QgbW92ZVBvaW50ID0gbW92ZVhPZlBvaW50KGJlZ2luUG9pbnQyLCBidWZmZXIsIGxpbmtEaXJlY3Rpb24pO1xuICAgICAgICBjb25zdCBwb2x5bGluZVBvaW50cyA9IFtcbiAgICAgICAgICAgIC4uLnN0cmFpZ2h0TGluZSxcbiAgICAgICAgICAgIG1vdmVQb2ludCxcbiAgICAgICAgICAgIGlzSG9yaXpvbnRhbCA/IFttb3ZlUG9pbnRbMF0sIGVuZFBvaW50WzFdXSA6IFtlbmRQb2ludFswXSwgbW92ZVBvaW50WzFdXSxcbiAgICAgICAgICAgIGVuZFBvaW50LFxuICAgICAgICAgICAgLi4udW5kZXJsaW5lXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBkcmF3TGluZWFyUGF0aChwb2x5bGluZVBvaW50cyBhcyBQb2ludFtdLCB7IHN0cm9rZTogYnJhbmNoQ29sb3IsIHN0cm9rZVdpZHRoOiBicmFuY2hXaWR0aCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLmN1cnZlKHBvaW50cyBhcyBhbnksIHsgc3Ryb2tlOiBicmFuY2hDb2xvciwgc3Ryb2tlV2lkdGg6IGJyYW5jaFdpZHRoIH0pO1xufVxuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naWMtbGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXcvbm9kZS1saW5rL2xvZ2ljLWxpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBUyxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsSCxPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEksT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVFLE1BQU0sVUFBVSxhQUFhLENBQ3pCLEtBQWlCLEVBQ2pCLE1BQWdCLEVBQ2hCLElBQWMsRUFDZCxZQUFxQixFQUNyQixnQkFBK0IsSUFBSSxFQUNuQyxrQkFBMkI7SUFFM0IsTUFBTSxXQUFXLEdBQUcsMkJBQTJCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RSxNQUFNLFdBQVcsR0FBRyxhQUFhLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxXQUFXLElBQUksMkJBQTJCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuSCxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsSUFBSSwyQkFBMkIsQ0FBQyxLQUFLLEVBQUUs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LEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM3RSxNQUFNLFNBQVMsR0FBWSxpQkFBaUIsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRS9HLE1BQU0sTUFBTSxHQUFHLG9CQUFvQixDQUFDLENBQUMsR0FBRyxZQUFZLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBRS9FLElBQUksV0FBVyxLQUFLLFdBQVcsQ0FBQyxRQUFRLEVBQUU7UUFDdEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sY0FBYyxHQUFHO1lBQ25CLEdBQUcsWUFBWTtZQUNmLFNBQVM7WUFDVCxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEUsUUFBUTtZQUNSLEdBQUcsU0FBUztTQUNmLENBQUM7UUFDRixPQUFPLGNBQWMsQ0FBQyxjQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztLQUN2RztJQUNELE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUNqSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9pbnRzT25CZXppZXJDdXJ2ZXMgfSBmcm9tICdwb2ludHMtb24tY3VydmUnO1xuaW1wb3J0IHsgTWluZE5vZGUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIGRyYXdMaW5lYXJQYXRoIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlOb2RlLCBnZXRTaGFwZUJ5RWxlbWVudCB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IGdldExheW91dERpcmVjdGlvbiwgZ2V0UG9pbnRCeVBsYWNlbWVudCwgbW92ZVhPZlBvaW50LCB0cmFuc2Zvcm1QbGFjZW1lbnQgfSBmcm9tICcuLi8uLi9wb2ludC1wbGFjZW1lbnQnO1xuaW1wb3J0IHsgSG9yaXpvbnRhbFBsYWNlbWVudCwgUG9pbnRQbGFjZW1lbnQsIFZlcnRpY2FsUGxhY2VtZW50IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy90eXBlcyc7XG5pbXBvcnQgeyBnZXRCcmFuY2hDb2xvckJ5TWluZEVsZW1lbnQsIGdldEJyYW5jaFNoYXBlQnlNaW5kRWxlbWVudCwgZ2V0QnJhbmNoV2lkdGhCeU1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vbm9kZS1zdHlsZS9icmFuY2gnO1xuaW1wb3J0IHsgQnJhbmNoU2hhcGUsIE1pbmRFbGVtZW50U2hhcGUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gZHJhd0xvZ2ljTGluayhcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBwYXJlbnQ6IE1pbmROb2RlLFxuICAgIG5vZGU6IE1pbmROb2RlLFxuICAgIGlzSG9yaXpvbnRhbDogYm9vbGVhbixcbiAgICBkZWZhdWx0U3Ryb2tlOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBkZWZhdWx0U3Ryb2tlV2lkdGg/OiBudW1iZXJcbikge1xuICAgIGNvbnN0IGJyYW5jaFNoYXBlID0gZ2V0QnJhbmNoU2hhcGVCeU1pbmRFbGVtZW50KGJvYXJkLCBwYXJlbnQub3JpZ2luKTtcbiAgICBjb25zdCBicmFuY2hDb2xvciA9IGRlZmF1bHRTdHJva2UgfHwgcGFyZW50Lm9yaWdpbj8uYnJhbmNoQ29sb3IgfHwgZ2V0QnJhbmNoQ29sb3JCeU1pbmRFbGVtZW50KGJvYXJkLCBub2RlLm9yaWdpbik7XG4gICAgY29uc3QgYnJhbmNoV2lkdGggPSBkZWZhdWx0U3Ryb2tlV2lkdGggfHwgZ2V0QnJhbmNoV2lkdGhCeU1pbmRFbGVtZW50KGJvYXJkLCBwYXJlbnQub3JpZ2luKTtcbiAgICBjb25zdCBoYXNTdHJhaWdodExpbmUgPSBicmFuY2hTaGFwZSA9PT0gQnJhbmNoU2hhcGUucG9seWxpbmUgPyB0cnVlIDogIXBhcmVudC5vcmlnaW4uaXNSb290O1xuICAgIGNvbnN0IHBhcmVudFNoYXBlID0gZ2V0U2hhcGVCeUVsZW1lbnQoYm9hcmQsIHBhcmVudC5vcmlnaW4pO1xuICAgIGNvbnN0IHNoYXBlID0gZ2V0U2hhcGVCeUVsZW1lbnQoYm9hcmQsIG5vZGUub3JpZ2luKTtcbiAgICBjb25zdCBoYXNVbmRlcmxpbmVTaGFwZSA9IHNoYXBlID09PSBNaW5kRWxlbWVudFNoYXBlLnVuZGVybGluZTtcbiAgICBjb25zdCBoYXNVbmRlcmxpbmVTaGFwZU9mUGFyZW50ID0gcGFyZW50U2hhcGUgPT09IE1pbmRFbGVtZW50U2hhcGUudW5kZXJsaW5lO1xuICAgIGNvbnN0IG5vZGVDbGllbnQgPSBnZXRSZWN0YW5nbGVCeU5vZGUobm9kZSk7XG4gICAgY29uc3QgcGFyZW50Q2xpZW50ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKHBhcmVudCk7XG4gICAgY29uc3QgbGlua0RpcmVjdGlvbiA9IGdldExheW91dERpcmVjdGlvbihub2RlLCBpc0hvcml6b250YWwpO1xuXG4gICAgLy8g4pGgIGVuc3VyZSBiZWdpbiBwbGFjZW1lbnQgYW5kIGVuZCBwbGFjZW1lbnRcbiAgICAvLyBiZWdpbiBwbGFjZW1lbnQgcmVwcmVzZW50IHBhcmVudCBjb25uZWN0b3IgcG9zaXRpb24gYW5kIGVuZCBwbGFjZW1lbnQgcmVwcmVzZW50IGNoaWxkIGNvbm5lY3RvclxuICAgIGNvbnN0IGJlZ2luUGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LnJpZ2h0LCBWZXJ0aWNhbFBsYWNlbWVudC5taWRkbGVdO1xuICAgIGNvbnN0IGVuZFBsYWNlbWVudDogUG9pbnRQbGFjZW1lbnQgPSBbSG9yaXpvbnRhbFBsYWNlbWVudC5sZWZ0LCBWZXJ0aWNhbFBsYWNlbWVudC5taWRkbGVdO1xuXG4gICAgdHJhbnNmb3JtUGxhY2VtZW50KGJlZ2luUGxhY2VtZW50LCBsaW5rRGlyZWN0aW9uKTtcbiAgICB0cmFuc2Zvcm1QbGFjZW1lbnQoZW5kUGxhY2VtZW50LCBsaW5rRGlyZWN0aW9uKTtcblxuICAgIC8vIHVuZGVybGluZSBzaGFwZSBhbmQgaG9yaXpvbnRhbFxuICAgIGlmIChpc0hvcml6b250YWwgJiYgaGFzVW5kZXJsaW5lU2hhcGVPZlBhcmVudCAmJiAhcGFyZW50Lm9yaWdpbi5pc1Jvb3QpIHtcbiAgICAgICAgYmVnaW5QbGFjZW1lbnRbMV0gPSBWZXJ0aWNhbFBsYWNlbWVudC5ib3R0b207XG4gICAgfVxuICAgIGlmIChpc0hvcml6b250YWwgJiYgaGFzVW5kZXJsaW5lU2hhcGUpIHtcbiAgICAgICAgZW5kUGxhY2VtZW50WzFdID0gVmVydGljYWxQbGFjZW1lbnQuYm90dG9tO1xuICAgIH1cblxuICAgIGxldCBiZWdpblBvaW50ID0gZ2V0UG9pbnRCeVBsYWNlbWVudChwYXJlbnRDbGllbnQsIGJlZ2luUGxhY2VtZW50KTtcbiAgICBsZXQgZW5kUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KG5vZGVDbGllbnQsIGVuZFBsYWNlbWVudCk7XG5cbiAgICAvLyDikaEgRGV0ZXJtaW5lIHRoZSBjb252ZXggc3RyYWlnaHQgbGluZVxuICAgIGNvbnN0IHN0cmFpZ2h0TGluZURpc3RhbmNlID0gODtcbiAgICBjb25zdCBiZWdpblBvaW50MiA9IGhhc1N0cmFpZ2h0TGluZSA/IG1vdmVYT2ZQb2ludChiZWdpblBvaW50LCBzdHJhaWdodExpbmVEaXN0YW5jZSwgbGlua0RpcmVjdGlvbikgOiBiZWdpblBvaW50O1xuICAgIGxldCBzdHJhaWdodExpbmU6IFBvaW50W10gPSBoYXNTdHJhaWdodExpbmUgPyBbYmVnaW5Qb2ludCwgYmVnaW5Qb2ludDIsIGJlZ2luUG9pbnQyXSA6IFtdO1xuXG4gICAgLy8g4pGiIERldGVybWluZSB0aGUgY3VydmVcbiAgICBjb25zdCBiZWdpbkJ1ZmZlckRpc3RhbmNlID0gKHBhcmVudC5oR2FwICsgbm9kZS5oR2FwKSAvIDM7XG4gICAgY29uc3QgZW5kQnVmZmVyRGlzdGFuY2UgPSAtKHBhcmVudC5oR2FwICsgbm9kZS5oR2FwKSAvIDIuNDtcbiAgICBsZXQgY3VydmU6IFBvaW50W10gPSBbXG4gICAgICAgIGJlZ2luUG9pbnQyLFxuICAgICAgICBtb3ZlWE9mUG9pbnQoYmVnaW5Qb2ludDIsIGJlZ2luQnVmZmVyRGlzdGFuY2UsIGxpbmtEaXJlY3Rpb24pLFxuICAgICAgICBtb3ZlWE9mUG9pbnQoZW5kUG9pbnQsIGVuZEJ1ZmZlckRpc3RhbmNlLCBsaW5rRGlyZWN0aW9uKSxcbiAgICAgICAgZW5kUG9pbnRcbiAgICBdO1xuXG4gICAgLy8g4pGjIHVuZGVybGluZSBzaGFwZSBhbmQgaG9yaXpvbnRhbFxuICAgIGNvbnN0IHVuZGVybGluZUVuZCA9IG1vdmVYT2ZQb2ludChlbmRQb2ludCwgbm9kZUNsaWVudC53aWR0aCwgbGlua0RpcmVjdGlvbik7XG4gICAgY29uc3QgdW5kZXJsaW5lOiBQb2ludFtdID0gaGFzVW5kZXJsaW5lU2hhcGUgJiYgaXNIb3Jpem9udGFsID8gW3VuZGVybGluZUVuZCwgdW5kZXJsaW5lRW5kLCB1bmRlcmxpbmVFbmRdIDogW107XG5cbiAgICBjb25zdCBwb2ludHMgPSBwb2ludHNPbkJlemllckN1cnZlcyhbLi4uc3RyYWlnaHRMaW5lLCAuLi5jdXJ2ZSwgLi4udW5kZXJsaW5lXSk7XG5cbiAgICBpZiAoYnJhbmNoU2hhcGUgPT09IEJyYW5jaFNoYXBlLnBvbHlsaW5lKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IDg7XG4gICAgICAgIGNvbnN0IG1vdmVQb2ludCA9IG1vdmVYT2ZQb2ludChiZWdpblBvaW50MiwgYnVmZmVyLCBsaW5rRGlyZWN0aW9uKTtcbiAgICAgICAgY29uc3QgcG9seWxpbmVQb2ludHMgPSBbXG4gICAgICAgICAgICAuLi5zdHJhaWdodExpbmUsXG4gICAgICAgICAgICBtb3ZlUG9pbnQsXG4gICAgICAgICAgICBpc0hvcml6b250YWwgPyBbbW92ZVBvaW50WzBdLCBlbmRQb2ludFsxXV0gOiBbZW5kUG9pbnRbMF0sIG1vdmVQb2ludFsxXV0sXG4gICAgICAgICAgICBlbmRQb2ludCxcbiAgICAgICAgICAgIC4uLnVuZGVybGluZVxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gZHJhd0xpbmVhclBhdGgocG9seWxpbmVQb2ludHMgYXMgUG9pbnRbXSwgeyBzdHJva2U6IGJyYW5jaENvbG9yLCBzdHJva2VXaWR0aDogYnJhbmNoV2lkdGggfSk7XG4gICAgfVxuICAgIHJldHVybiBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKS5jdXJ2ZShwb2ludHMgYXMgYW55LCB7IHN0cm9rZTogYnJhbmNoQ29sb3IsIHN0cm9rZVdpZHRoOiBicmFuY2hXaWR0aCB9KTtcbn1cbiJdfQ==