@plait/core 0.53.0 → 0.54.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.
- package/board/board.component.d.ts +1 -1
- package/constants/selection.d.ts +1 -0
- package/esm2022/board/board.component.mjs +6 -4
- package/esm2022/constants/selection.mjs +2 -1
- package/esm2022/interfaces/board.mjs +5 -1
- package/esm2022/interfaces/path.mjs +2 -2
- package/esm2022/interfaces/rectangle-client.mjs +4 -1
- package/esm2022/interfaces/selection.mjs +2 -2
- package/esm2022/plugins/create-board.mjs +7 -5
- package/esm2022/plugins/with-hotkey.mjs +3 -3
- package/esm2022/plugins/with-moving.mjs +7 -6
- package/esm2022/plugins/with-selection.mjs +7 -5
- package/esm2022/transforms/element.mjs +2 -2
- package/esm2022/utils/angle.mjs +42 -3
- package/esm2022/utils/common.mjs +3 -2
- package/esm2022/utils/debug.mjs +16 -1
- package/esm2022/utils/element.mjs +3 -3
- package/esm2022/utils/fragment.mjs +5 -0
- package/esm2022/utils/group.mjs +11 -5
- package/esm2022/utils/index.mjs +2 -1
- package/esm2022/utils/moving-snap.mjs +372 -0
- package/esm2022/utils/selection.mjs +2 -3
- package/esm2022/utils/weak-maps.mjs +2 -1
- package/fesm2022/plait-core.mjs +1092 -1015
- package/fesm2022/plait-core.mjs.map +1 -1
- package/interfaces/board.d.ts +4 -2
- package/interfaces/rectangle-client.d.ts +1 -0
- package/interfaces/selection.d.ts +1 -1
- package/package.json +1 -1
- package/utils/angle.d.ts +6 -1
- package/utils/debug.d.ts +1 -0
- package/utils/fragment.d.ts +2 -0
- package/utils/group.d.ts +2 -2
- package/utils/index.d.ts +1 -0
- package/utils/{reaction-manager.d.ts → moving-snap.d.ts} +3 -3
- package/utils/selection.d.ts +1 -1
- package/utils/weak-maps.d.ts +1 -0
- package/esm2022/utils/reaction-manager.mjs +0 -371
|
@@ -29,7 +29,7 @@ export declare class PlaitBoardComponent implements BoardComponentInterface, OnI
|
|
|
29
29
|
plaitBoardInitialized: EventEmitter<PlaitBoard>;
|
|
30
30
|
get host(): SVGSVGElement;
|
|
31
31
|
get hostClass(): string;
|
|
32
|
-
getBrowserClassName(): "" | "
|
|
32
|
+
getBrowserClassName(): "safari" | "chrome" | "firefox" | "";
|
|
33
33
|
get readonly(): boolean | undefined;
|
|
34
34
|
get isFocused(): boolean;
|
|
35
35
|
get disabledScrollOnNonFocus(): boolean | undefined;
|
package/constants/selection.d.ts
CHANGED
|
@@ -8,8 +8,8 @@ import { withBoard } from '../plugins/with-board';
|
|
|
8
8
|
import { withHistory } from '../plugins/with-history';
|
|
9
9
|
import { withHandPointer } from '../plugins/with-hand';
|
|
10
10
|
import { withSelection } from '../plugins/with-selection';
|
|
11
|
-
import { IS_CHROME, IS_FIREFOX, IS_SAFARI, getClipboardData, getRectangleByElements, getSelectedElements, toHostPoint, toViewBoxPoint } from '../utils';
|
|
12
|
-
import { BOARD_TO_ON_CHANGE, BOARD_TO_COMPONENT, BOARD_TO_ELEMENT_HOST, BOARD_TO_HOST, BOARD_TO_ROUGH_SVG, BOARD_TO_MOVING_POINT_IN_BOARD, BOARD_TO_MOVING_POINT, BOARD_TO_AFTER_CHANGE } from '../utils/weak-maps';
|
|
11
|
+
import { IS_CHROME, IS_FIREFOX, IS_SAFARI, deleteFragment, getClipboardData, getRectangleByElements, getSelectedElements, toHostPoint, toViewBoxPoint } from '../utils';
|
|
12
|
+
import { BOARD_TO_ON_CHANGE, BOARD_TO_COMPONENT, BOARD_TO_ELEMENT_HOST, BOARD_TO_HOST, BOARD_TO_ROUGH_SVG, BOARD_TO_MOVING_POINT_IN_BOARD, BOARD_TO_MOVING_POINT, BOARD_TO_AFTER_CHANGE, IS_BOARD_ALIVE } from '../utils/weak-maps';
|
|
13
13
|
import { initializeViewportOffset, initializeViewBox, isFromViewportChange, setIsFromViewportChange, initializeViewportContainer, updateViewportOffset, updateViewportByScrolling } from '../utils/viewport';
|
|
14
14
|
import { withViewport } from '../plugins/with-viewport';
|
|
15
15
|
import { withMoving } from '../plugins/with-moving';
|
|
@@ -98,6 +98,7 @@ export class PlaitBoardComponent {
|
|
|
98
98
|
BOARD_TO_COMPONENT.set(this.board, this);
|
|
99
99
|
BOARD_TO_ROUGH_SVG.set(this.board, roughSVG);
|
|
100
100
|
BOARD_TO_HOST.set(this.board, this.host);
|
|
101
|
+
IS_BOARD_ALIVE.set(this.board, true);
|
|
101
102
|
BOARD_TO_ELEMENT_HOST.set(this.board, {
|
|
102
103
|
host: elementHost,
|
|
103
104
|
upperHost: elementUpperHost,
|
|
@@ -271,7 +272,7 @@ export class PlaitBoardComponent {
|
|
|
271
272
|
event.preventDefault();
|
|
272
273
|
const rectangle = getRectangleByElements(this.board, selectedElements, false);
|
|
273
274
|
this.board.setFragment(event.clipboardData, null, rectangle, 'cut');
|
|
274
|
-
this.board
|
|
275
|
+
deleteFragment(this.board);
|
|
275
276
|
});
|
|
276
277
|
}
|
|
277
278
|
viewportScrollListener() {
|
|
@@ -353,6 +354,7 @@ export class PlaitBoardComponent {
|
|
|
353
354
|
BOARD_TO_ROUGH_SVG.delete(this.board);
|
|
354
355
|
BOARD_TO_HOST.delete(this.board);
|
|
355
356
|
BOARD_TO_ELEMENT_HOST.delete(this.board);
|
|
357
|
+
IS_BOARD_ALIVE.set(this.board, false);
|
|
356
358
|
BOARD_TO_ON_CHANGE.delete(this.board);
|
|
357
359
|
BOARD_TO_AFTER_CHANGE.set(this.board, () => { });
|
|
358
360
|
}
|
|
@@ -431,4 +433,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
431
433
|
type: ContentChildren,
|
|
432
434
|
args: [PlaitIslandBaseComponent, { descendants: true }]
|
|
433
435
|
}] } });
|
|
434
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvYm9hcmQvYm9hcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBS0wsTUFBTSxFQUdOLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssTUFBTSxtQkFBbUIsQ0FBQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUE0QyxNQUFNLHFCQUFxQixDQUFDO0FBSTNGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxFQUNULGdCQUFnQixFQUNoQixzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxjQUFjLEVBQ2pCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLDhCQUE4QixFQUM5QixxQkFBcUIsRUFD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b250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCByb3VnaCBmcm9tICdyb3VnaGpzL2Jpbi9yb3VnaCc7XG5pbXBvcnQgeyBSb3VnaFNWRyB9IGZyb20gJ3JvdWdoanMvYmluL3N2Zyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEJvYXJkQ2hhbmdlRXZlbnQsIFBsYWl0Qm9hcmRPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXRQbHVnaW4gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BsdWdpbic7XG5pbXBvcnQgeyBWaWV3cG9ydCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdmlld3BvcnQnO1xuaW1wb3J0IHsgY3JlYXRlQm9hcmQgfSBmcm9tICcuLi9wbHVnaW5zL2NyZWF0ZS1ib2FyZCc7XG5pbXBvcnQgeyB3aXRoQm9hcmQgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtYm9hcmQnO1xuaW1wb3J0IHsgd2l0aEhpc3RvcnkgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtaGlzdG9yeSc7XG5pbXBvcnQgeyB3aXRoSGFuZFBvaW50ZXIgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtaGFuZCc7XG5pbXBvcnQgeyB3aXRoU2VsZWN0aW9uIH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLXNlbGVjdGlvbic7XG5pbXBvcnQge1xuICAgIElTX0NIUk9NRSxcbiAgICBJU19GSVJFRk9YLFxuICAgIElTX1NBRkFSSSxcbiAgICBnZXRDbGlwYm9hcmREYXRhLFxuICAgIGdldFJlY3RhbmdsZUJ5RWxlbWVudHMsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICB0b0hvc3RQb2ludCxcbiAgICB0b1ZpZXdCb3hQb2ludFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge1xuICAgIEJPQVJEX1RPX09OX0NIQU5HRSxcbiAgICBCT0FSRF9UT19DT01QT05FTlQsXG4gICAgQk9BUkRfVE9fRUxFTUVOVF9IT1NULFxuICAgIEJPQVJEX1RPX0hPU1QsXG4gICAgQk9BUkRfVE9fUk9VR0hfU1ZHLFxuICAgIEJPQVJEX1RPX01PVklOR19QT0lOVF9JTl9CT0FSRCxcbiAgICBCT0FSRF9UT19NT1ZJTkdfUE9JTlQsXG4gICAgQk9BUkRfVE9fQUZURVJfQ0hBTkdFXG59IGZyb20gJy4uL3V0aWxzL3dlYWstbWFwcyc7XG5pbXBvcnQgeyBCb2FyZENvbXBvbmVudEludGVyZmFjZSB9IGZyb20gJy4vYm9hcmQuY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQge1xuICAgIGluaXRpYWxpemVWaWV3cG9ydE9mZnNldCxcbiAgICBpbml0aWFsaXplVmlld0JveCxcbiAgICBpc0Zyb21WaWV3cG9ydENoYW5nZSxcbiAgICBzZXRJc0Zyb21WaWV3cG9ydENoYW5nZSxcbiAgICBpbml0aWFsaXplVmlld3BvcnRDb250YWluZXIsXG4gICAgdXBkYXRlVmlld3BvcnRPZmZzZXQsXG4gICAgdXBkYXRlVmlld3BvcnRCeVNjcm9sbGluZ1xufSBmcm9tICcuLi91dGlscy92aWV3cG9ydCc7XG5pbXBvcnQgeyB3aXRoVmlld3BvcnQgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtdmlld3BvcnQnO1xuaW1wb3J0IHsgd2l0aE1vdmluZyB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1tb3ZpbmcnO1xuaW1wb3J0IHsgaGFzSW5wdXRPclRleHRhcmVhVGFyZ2V0IH0gZnJvbSAnLi4vdXRpbHMvZG9tL2NvbW1vbic7XG5pbXBvcnQgeyB3aXRoT3B0aW9ucyB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1vcHRpb25zJztcbmltcG9ydCB7IFBsYWl0SXNsYW5kQmFzZUNvbXBvbmVudCwgaGFzT25Cb2FyZENoYW5nZSB9IGZyb20gJy4uL2NvcmUvaXNsYW5kL2lzbGFuZC1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCb2FyZFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zL2JvYXJkJztcbmltcG9ydCB7IFBsYWl0VGhlbWUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RoZW1lJztcbmltcG9ydCB7IHdpdGhIb3RrZXkgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtaG90a2V5JztcbmltcG9ydCB7IEhPU1RfQ0xBU1NfTkFNRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQbGFpdENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaW1hZ2UtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IGlzUHJldmVudFRvdWNoTW92ZSB9IGZyb20gJy4uL3V0aWxzL3RvdWNoJztcbmltcG9ydCB7IFBsYWl0Q2hpbGRyZW5FbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS9jaGlsZHJlbi9jaGlsZHJlbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgWk9PTV9TVEVQIH0gZnJvbSAnLi4vY29uc3RhbnRzL3pvb20nO1xuaW1wb3J0IHsgd2l0aFJlbGF0ZWRGcmFnbWVudCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1yZWxhdGVkLWZyYWdtZW50JztcblxuY29uc3QgRWxlbWVudEhvc3RDbGFzcyA9ICdlbGVtZW50LWhvc3QnO1xuY29uc3QgRWxlbWVudFVwcGVySG9zdENsYXNzID0gJ2VsZW1lbnQtdXBwZXItaG9zdCc7XG5jb25zdCBFbGVtZW50QWN0aXZlSG9zdENsYXNzID0gJ2VsZW1lbnQtYWN0aXZlLWhvc3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BsYWl0LWJvYXJkJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwidmlld3BvcnQtY29udGFpbmVyXCIgI3ZpZXdwb3J0Q29udGFpbmVyPlxuICAgICAgICAgICAgPHN2ZyAjc3ZnIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIiBjbGFzcz1cImJvYXJkLWhvc3Qtc3ZnXCI+XG4gICAgICAgICAgICAgICAgPGcgY2xhc3M9XCJlbGVtZW50LWhvc3RcIj48L2c+XG4gICAgICAgICAgICAgICAgPGcgY2xhc3M9XCJlbGVtZW50LXVwcGVyLWhvc3RcIj48L2c+XG4gICAgICAgICAgICAgICAgPGcgY2xhc3M9XCJlbGVtZW50LWFjdGl2ZS1ob3N0XCI+PC9nPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8cGxhaXQtY2hpbGRyZW4gW2JvYXJkXT1cImJvYXJkXCIgW2VmZmVjdF09XCJlZmZlY3RcIj48L3BsYWl0LWNoaWxkcmVuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbUGxhaXRDb250ZXh0U2VydmljZV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbUGxhaXRDaGlsZHJlbkVsZW1lbnRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFBsYWl0Qm9hcmRDb21wb25lbnQgaW1wbGVtZW50cyBCb2FyZENvbXBvbmVudEludGVyZmFjZSwgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgaGFzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIGVmZmVjdCA9IHt9O1xuXG4gICAgYm9hcmQhOiBQbGFpdEJvYXJkO1xuXG4gICAgcm91Z2hTVkchOiBSb3VnaFNWRztcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXIhOiBSZXNpemVPYnNlcnZlcjtcblxuICAgIEBJbnB1dCgpIHBsYWl0VmFsdWU6IFBsYWl0RWxlbWVudFtdID0gW107XG5cbiAgICBASW5wdXQoKSBwbGFpdFZpZXdwb3J0ITogVmlld3BvcnQ7XG5cbiAgICBASW5wdXQoKSBwbGFpdFBsdWdpbnM6IFBsYWl0UGx1Z2luW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHBsYWl0T3B0aW9ucz86IFBsYWl0Qm9hcmRPcHRpb25zO1xuXG4gICAgQElucHV0KCkgcGxhaXRUaGVtZT86IFBsYWl0VGhlbWU7XG5cbiAgICBAT3V0cHV0KCkgcGxhaXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxQbGFpdEJvYXJkQ2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIHBsYWl0Qm9hcmRJbml0aWFsaXplZDogRXZlbnRFbWl0dGVyPFBsYWl0Qm9hcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgZ2V0IGhvc3QoKTogU1ZHU1ZHRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnN2Zy5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBob3N0Q2xhc3MoKSB7XG4gICAgICAgIHJldHVybiBgJHtIT1NUX0NMQVNTX05BTUV9IHBvaW50ZXItJHt0aGlzLmJvYXJkLnBvaW50ZXJ9IHRoZW1lLSR7dGhpcy5ib2FyZC50aGVtZS50aGVtZUNvbG9yTW9kZX0gJHt0aGlzLmdldEJyb3dzZXJDbGFzc05hbWUoKX1gO1xuICAgIH1cblxuICAgIGdldEJyb3dzZXJDbGFzc05hbWUoKSB7XG4gICAgICAgIGlmIChJU19TQUZBUkkpIHtcbiAgICAgICAgICAgIHJldHVybiAnc2FmYXJpJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoSVNfQ0hST01FKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2Nocm9tZSc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKElTX0ZJUkVGT1gpIHtcbiAgICAgICAgICAgIHJldHVybiAnZmlyZWZveCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MucmVhZG9ubHknKVxuICAgIGdldCByZWFkb25seSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYm9hcmQub3B0aW9ucy5yZWFkb25seTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZvY3VzZWQnKVxuICAgIGdldCBpc0ZvY3VzZWQoKSB7XG4gICAgICAgIHJldHVybiBQbGFpdEJvYXJkLmlzRm9jdXModGhpcy5ib2FyZCk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZC1zY3JvbGwnKVxuICAgIGdldCBkaXNhYmxlZFNjcm9sbE9uTm9uRm9jdXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJvYXJkLm9wdGlvbnMuZGlzYWJsZWRTY3JvbGxPbk5vbkZvY3VzICYmICFQbGFpdEJvYXJkLmlzRm9jdXModGhpcy5ib2FyZCk7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnc3ZnJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBzdmchOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgndmlld3BvcnRDb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHZpZXdwb3J0Q29udGFpbmVyITogRWxlbWVudFJlZjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUGxhaXRJc2xhbmRCYXNlQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIGlzbGFuZHM/OiBRdWVyeUxpc3Q8UGxhaXRJc2xhbmRCYXNlQ29tcG9uZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudEhvc3QgPSB0aGlzLmhvc3QucXVlcnlTZWxlY3RvcihgLiR7RWxlbWVudEhvc3RDbGFzc31gKSBhcyBTVkdHRWxlbWVudDtcbiAgICAgICAgY29uc3QgZWxlbWVudFVwcGVySG9zdCA9IHRoaXMuaG9zdC5xdWVyeVNlbGVjdG9yKGAuJHtFbGVtZW50VXBwZXJIb3N0Q2xhc3N9YCkgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRBY3RpdmVIb3N0ID0gdGhpcy5ob3N0LnF1ZXJ5U2VsZWN0b3IoYC4ke0VsZW1lbnRBY3RpdmVIb3N0Q2xhc3N9YCkgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHJvdWdoU1ZHID0gcm91Z2guc3ZnKHRoaXMuaG9zdCBhcyBTVkdTVkdFbGVtZW50LCB7XG4gICAgICAgICAgICBvcHRpb25zOiB7IHJvdWdobmVzczogMCwgc3Ryb2tlV2lkdGg6IDEgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3VnaFNWRyA9IHJvdWdoU1ZHO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVQbHVnaW5zKCk7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUhvb2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy52aWV3cG9ydFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLndoZWVsWm9vbUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2VsZWF2ZScpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIEJPQVJEX1RPX01PVklOR19QT0lOVC5kZWxldGUodGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBCT0FSRF9UT19DT01QT05FTlQuc2V0KHRoaXMuYm9hcmQsIHRoaXMpO1xuICAgICAgICBCT0FSRF9UT19ST1VHSF9TVkcuc2V0KHRoaXMuYm9hcmQsIHJvdWdoU1ZHKTtcbiAgICAgICAgQk9BUkRfVE9fSE9TVC5zZXQodGhpcy5ib2FyZCwgdGhpcy5ob3N0KTtcbiAgICAgICAgQk9BUkRfVE9fRUxFTUVOVF9IT1NULnNldCh0aGlzLmJvYXJkLCB7XG4gICAgICAgICAgICBob3N0OiBlbGVtZW50SG9zdCxcbiAgICAgICAgICAgIHVwcGVySG9zdDogZWxlbWVudFVwcGVySG9zdCxcbiAgICAgICAgICAgIGFjdGl2ZUhvc3Q6IGVsZW1lbnRBY3RpdmVIb3N0LFxuICAgICAgICAgICAgY29udGFpbmVyOiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIHZpZXdwb3J0Q29udGFpbmVyOiB0aGlzLnZpZXdwb3J0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgfSk7XG4gICAgICAgIEJPQVJEX1RPX09OX0NIQU5HRS5zZXQodGhpcy5ib2FyZCwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBCT0FSRF9UT19BRlRFUl9DSEFOR0Uuc2V0KHRoaXMuYm9hcmQsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hhbmdlRXZlbnQ6IFBsYWl0Qm9hcmRDaGFuZ2VFdmVudCA9IHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IHRoaXMuYm9hcmQuY2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnM6IHRoaXMuYm9hcmQub3BlcmF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgdmlld3BvcnQ6IHRoaXMuYm9hcmQudmlld3BvcnQsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbjogdGhpcy5ib2FyZC5zZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lOiB0aGlzLmJvYXJkLnRoZW1lXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUlzbGFuZHMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsYWl0Q2hhbmdlLmVtaXQoY2hhbmdlRXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmhhc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUlzbGFuZHMoKTtcbiAgICB9XG5cbiAgICB1cGRhdGUoKSB7XG4gICAgICAgIHRoaXMuZWZmZWN0ID0ge307XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICh0aGlzLmhhc0luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZUNoYW5nZSA9IGNoYW5nZXNbJ3BsYWl0VmFsdWUnXTtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBjaGFuZ2VzWydwbGFpdE9wdGlvbnMnXTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlQ2hhbmdlKSB0aGlzLmJvYXJkLmNoaWxkcmVuID0gdmFsdWVDaGFuZ2UuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMpIHRoaXMuYm9hcmQub3B0aW9ucyA9IG9wdGlvbnMuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGxhaXRCb2FyZEluaXRpYWxpemVkLmVtaXQodGhpcy5ib2FyZCk7XG4gICAgICAgIGluaXRpYWxpemVWaWV3cG9ydENvbnRhaW5lcih0aGlzLmJvYXJkKTtcbiAgICAgICAgaW5pdGlhbGl6ZVZpZXdCb3godGhpcy5ib2FyZCk7XG4gICAgICAgIGluaXRpYWxpemVWaWV3cG9ydE9mZnNldCh0aGlzLmJvYXJkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVQbHVnaW5zKCkge1xuICAgICAgICBsZXQgYm9hcmQgPSB3aXRoUmVsYXRlZEZyYWdtZW50KFxuICAgICAgICAgICAgd2l0aEhvdGtleShcbiAgICAgICAgICAgICAgICB3aXRoSGFuZFBvaW50ZXIoXG4gICAgICAgICAgICAgICAgICAgIHdpdGhIaXN0b3J5KFxuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFNlbGVjdGlvbih3aXRoTW92aW5nKHdpdGhCb2FyZCh3aXRoVmlld3BvcnQod2l0aE9wdGlvbnMoY3JlYXRlQm9hcmQodGhpcy5wbGFpdFZhbHVlLCB0aGlzLnBsYWl0T3B0aW9ucykpKSkpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnBsYWl0UGx1Z2lucy5mb3JFYWNoKHBsdWdpbiA9PiB7XG4gICAgICAgICAgICBib2FyZCA9IHBsdWdpbihib2FyZCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmJvYXJkID0gYm9hcmQ7XG5cbiAgICAgICAgaWYgKHRoaXMucGxhaXRWaWV3cG9ydCkge1xuICAgICAgICAgICAgdGhpcy5ib2FyZC52aWV3cG9ydCA9IHRoaXMucGxhaXRWaWV3cG9ydDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBsYWl0VGhlbWUpIHtcbiAgICAgICAgICAgIHRoaXMuYm9hcmQudGhlbWUgPSB0aGlzLnBsYWl0VGhlbWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVIb29rTGlzdGVuZXIoKSB7XG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmhvc3QsICdtb3VzZWRvd24nKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLm1vdXNlZG93bihldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLmhvc3QsICdwb2ludGVyZG93bicpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5wb2ludGVyRG93bihldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5ob3N0LCAnbW91c2Vtb3ZlJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgQk9BUkRfVE9fTU9WSU5HX1BPSU5UX0lOX0JPQVJELnNldCh0aGlzLmJvYXJkLCBbZXZlbnQueCwgZXZlbnQueV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQubW91c2Vtb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHRoaXMuaG9zdCwgJ3BvaW50ZXJtb3ZlJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBCT0FSRF9UT19NT1ZJTkdfUE9JTlRfSU5fQk9BUkQuc2V0KHRoaXMuYm9hcmQsIFtldmVudC54LCBldmVudC55XSk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5wb2ludGVyTW92ZShldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5ob3N0LCAnbW91c2VsZWF2ZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIEJPQVJEX1RPX01PVklOR19QT0lOVF9JTl9CT0FSRC5kZWxldGUodGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5tb3VzZWxlYXZlKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHRoaXMuaG9zdCwgJ3BvaW50ZXJsZWF2ZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgQk9BUkRfVE9fTU9WSU5HX1BPSU5UX0lOX0JPQVJELmRlbGV0ZSh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLnBvaW50ZXJMZWF2ZShldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZW1vdmUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBCT0FSRF9UT19NT1ZJTkdfUE9JTlQuc2V0KHRoaXMuYm9hcmQsIFtldmVudC54LCBldmVudC55XSk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5nbG9iYWxNb3VzZW1vdmUoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4oZG9jdW1lbnQsICdwb2ludGVybW92ZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgQk9BUkRfVE9fTU9WSU5HX1BPSU5ULnNldCh0aGlzLmJvYXJkLCBbZXZlbnQueCwgZXZlbnQueV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQuZ2xvYmFsUG9pbnRlck1vdmUoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuaG9zdCwgJ21vdXNldXAnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLm1vdXNldXAoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5ob3N0LCAncG9pbnRlcnVwJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLnBvaW50ZXJVcChldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZXVwJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5nbG9iYWxNb3VzZXVwKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KGRvY3VtZW50LCAncG9pbnRlcnVwJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLmdsb2JhbFBvaW50ZXJVcChldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5ob3N0LCAnZGJsY2xpY2snKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzRm9jdXNlZCAmJiAhUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcodGhpcy5ib2FyZCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQuZGJsQ2xpY2soZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5ZG93bicpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgdGFwKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5nbG9iYWxLZXlEb3duKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gdGhpcy5pc0ZvY3VzZWQgJiYgIVBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKHRoaXMuYm9hcmQpICYmICFoYXNJbnB1dE9yVGV4dGFyZWFUYXJnZXQoZXZlbnQudGFyZ2V0KSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5rZXlEb3duKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleXVwJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5pc0ZvY3VzZWQgJiYgIVBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKHRoaXMuYm9hcmQpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkPy5rZXlVcChldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8Q2xpcGJvYXJkRXZlbnQ+KGRvY3VtZW50LCAnY29weScpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuaXNGb2N1c2VkICYmICFQbGFpdEJvYXJkLmhhc0JlZW5UZXh0RWRpdGluZyh0aGlzLmJvYXJkKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyh0aGlzLmJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5zZXRGcmFnbWVudChldmVudC5jbGlwYm9hcmREYXRhLCBudWxsLCByZWN0YW5nbGUsICdjb3B5Jyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8Q2xpcGJvYXJkRXZlbnQ+KGRvY3VtZW50LCAncGFzdGUnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzRm9jdXNlZCAmJiAhUGxhaXRCb2FyZC5pc1JlYWRvbmx5KHRoaXMuYm9hcmQpICYmICFQbGFpdEJvYXJkLmhhc0JlZW5UZXh0RWRpdGluZyh0aGlzLmJvYXJkKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKGNsaXBib2FyZEV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vdXNlUG9pbnQgPSBQbGFpdEJvYXJkLmdldE1vdmluZ1BvaW50SW5Cb2FyZCh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAobW91c2VQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRQb2ludCA9IHRvVmlld0JveFBvaW50KHRoaXMuYm9hcmQsIHRvSG9zdFBvaW50KHRoaXMuYm9hcmQsIG1vdXNlUG9pbnRbMF0sIG1vdXNlUG9pbnRbMV0pKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xpcGJvYXJkRGF0YSA9IGF3YWl0IGdldENsaXBib2FyZERhdGEoY2xpcGJvYXJkRXZlbnQuY2xpcGJvYXJkRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQuaW5zZXJ0RnJhZ21lbnQoY2xpcGJvYXJkRXZlbnQuY2xpcGJvYXJkRGF0YSwgY2xpcGJvYXJkRGF0YSwgdGFyZ2V0UG9pbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxDbGlwYm9hcmRFdmVudD4oZG9jdW1lbnQsICdjdXQnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzRm9jdXNlZCAmJiAhUGxhaXRCb2FyZC5pc1JlYWRvbmx5KHRoaXMuYm9hcmQpICYmICFQbGFpdEJvYXJkLmhhc0JlZW5UZXh0RWRpdGluZyh0aGlzLmJvYXJkKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyh0aGlzLmJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5zZXRGcmFnbWVudChldmVudC5jbGlwYm9hcmREYXRhLCBudWxsLCByZWN0YW5nbGUsICdjdXQnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLmRlbGV0ZUZyYWdtZW50KGV2ZW50LmNsaXBib2FyZERhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2aWV3cG9ydFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy52aWV3cG9ydENvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNGcm9tVmlld3BvcnRDaGFuZ2UodGhpcy5ib2FyZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRnJvbVZpZXdwb3J0Q2hhbmdlKHRoaXMuYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzY3JvbGxMZWZ0LCBzY3JvbGxUb3AgfSA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICB1cGRhdGVWaWV3cG9ydEJ5U2Nyb2xsaW5nKHRoaXMuYm9hcmQsIHNjcm9sbExlZnQsIHNjcm9sbFRvcCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMudmlld3BvcnRDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ3RvdWNobW92ZScsIHsgcGFzc2l2ZTogZmFsc2UgfSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpc1ByZXZlbnRUb3VjaE1vdmUodGhpcy5ib2FyZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVsZW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgICBpbml0aWFsaXplVmlld3BvcnRDb250YWluZXIodGhpcy5ib2FyZCk7XG4gICAgICAgICAgICBpbml0aWFsaXplVmlld0JveCh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgIHVwZGF0ZVZpZXdwb3J0T2Zmc2V0KHRoaXMuYm9hcmQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplSXNsYW5kcygpIHtcbiAgICAgICAgdGhpcy5pc2xhbmRzPy5mb3JFYWNoKGlzbGFuZCA9PiB7XG4gICAgICAgICAgICBpc2xhbmQuaW5pdGlhbGl6ZSh0aGlzLmJvYXJkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVJc2xhbmRzKCkge1xuICAgICAgICB0aGlzLmlzbGFuZHM/LmZvckVhY2goaXNsYW5kID0+IHtcbiAgICAgICAgICAgIGlmIChoYXNPbkJvYXJkQ2hhbmdlKGlzbGFuZCkpIHtcbiAgICAgICAgICAgICAgICBpc2xhbmQub25Cb2FyZENoYW5nZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNsYW5kLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHdoZWVsWm9vbUxpc3RlbmVyKCkge1xuICAgICAgICBmcm9tRXZlbnQ8V2hlZWxFdmVudD4odGhpcy5ob3N0LCAnd2hlZWwnLCB7IHBhc3NpdmU6IGZhbHNlIH0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIENyZWRpdHMgdG8gZXhjYWxpZHJhd1xuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9leGNhbGlkcmF3L2V4Y2FsaWRyYXcvYmxvYi9iN2Q3Y2NjOTI5Njk2Y2MxN2I0Y2MzNDQ1MmU0YWZkODQ2ZDU5ZjRmL3NyYy9jb21wb25lbnRzL0FwcC50c3gjTDkwNjBcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGVsdGFYLCBkZWx0YVkgfSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB6b29tID0gdGhpcy5ib2FyZC52aWV3cG9ydC56b29tO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaWduID0gTWF0aC5zaWduKGRlbHRhWSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IE1BWF9TVEVQID0gWk9PTV9TVEVQICogMTAwO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhYnNEZWx0YSA9IE1hdGguYWJzKGRlbHRhWSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZWx0YSA9IGRlbHRhWTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFic0RlbHRhID4gTUFYX1NURVApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhID0gTUFYX1NURVAgKiBzaWduO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdab29tID0gem9vbSAtIGRlbHRhIC8gMTAwO1xuICAgICAgICAgICAgICAgICAgICAvLyBpbmNyZWFzZSB6b29tIHN0ZXBzIHRoZSBtb3JlIHpvb21lZC1pbiB3ZSBhcmUgKGFwcGxpZXMgdG8gPjEwMCUgb25seSlcbiAgICAgICAgICAgICAgICAgICAgbmV3Wm9vbSArPVxuICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5sb2cxMChNYXRoLm1heCgxLCB6b29tKSkgKlxuICAgICAgICAgICAgICAgICAgICAgICAgLXNpZ24gKlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkdWNlZCBhbXBsaWZpY2F0aW9uIGZvciBzbWFsbCBkZWx0YXMgKHNtYWxsIG1vdmVtZW50cyBvbiBhIHRyYWNrcGFkKVxuICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5taW4oMSwgYWJzRGVsdGEgLyAyMCk7XG4gICAgICAgICAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVab29tKHRoaXMuYm9hcmQsIG5ld1pvb20sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0cmFja0J5ID0gKGluZGV4OiBudW1iZXIsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5pZDtcbiAgICB9O1xuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgJiYgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgICBCT0FSRF9UT19ST1VHSF9TVkcuZGVsZXRlKHRoaXMuYm9hcmQpO1xuICAgICAgICBCT0FSRF9UT19DT01QT05FTlQuZGVsZXRlKHRoaXMuYm9hcmQpO1xuICAgICAgICBCT0FSRF9UT19ST1VHSF9TVkcuZGVsZXRlKHRoaXMuYm9hcmQpO1xuICAgICAgICBCT0FSRF9UT19IT1NULmRlbGV0ZSh0aGlzLmJvYXJkKTtcbiAgICAgICAgQk9BUkRfVE9fRUxFTUVOVF9IT1NULmRlbGV0ZSh0aGlzLmJvYXJkKTtcbiAgICAgICAgQk9BUkRfVE9fT05fQ0hBTkdFLmRlbGV0ZSh0aGlzLmJvYXJkKTtcbiAgICAgICAgQk9BUkRfVE9fQUZURVJfQ0hBTkdFLnNldCh0aGlzLmJvYXJkLCAoKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgbWFya0ZvckNoZWNrKCkge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSXNsYW5kcygpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
436
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvYm9hcmQvYm9hcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBS0wsTUFBTSxFQUdOLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssTUFBTSxtQkFBbUIsQ0FBQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUE0QyxNQUFNLHFCQUFxQixDQUFDO0FBSTNGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxFQUNULGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsY0FBYyxFQUNqQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsYUFBYSxFQUNiLGtCQUFrQixFQUNsQiw4QkFBOEIsRUFDOUIs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RSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHQSxPQUFPO3NCQUF4RSxlQUFlO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCByb3VnaCBmcm9tICdyb3VnaGpzL2Jpbi9yb3VnaCc7XG5pbXBvcnQgeyBSb3VnaFNWRyB9IGZyb20gJ3JvdWdoanMvYmluL3N2Zyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEJvYXJkQ2hhbmdlRXZlbnQsIFBsYWl0Qm9hcmRPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXRQbHVnaW4gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BsdWdpbic7XG5pbXBvcnQgeyBWaWV3cG9ydCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdmlld3BvcnQnO1xuaW1wb3J0IHsgY3JlYXRlQm9hcmQgfSBmcm9tICcuLi9wbHVnaW5zL2NyZWF0ZS1ib2FyZCc7XG5pbXBvcnQgeyB3aXRoQm9hcmQgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtYm9hcmQnO1xuaW1wb3J0IHsgd2l0aEhpc3RvcnkgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtaGlzdG9yeSc7XG5pbXBvcnQgeyB3aXRoSGFuZFBvaW50ZXIgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtaGFuZCc7XG5pbXBvcnQgeyB3aXRoU2VsZWN0aW9uIH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLXNlbGVjdGlvbic7XG5pbXBvcnQge1xuICAgIElTX0NIUk9NRSxcbiAgICBJU19GSVJFRk9YLFxuICAgIElTX1NBRkFSSSxcbiAgICBkZWxldGVGcmFnbWVudCxcbiAgICBnZXRDbGlwYm9hcmREYXRhLFxuICAgIGdldFJlY3RhbmdsZUJ5RWxlbWVudHMsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICB0b0hvc3RQb2ludCxcbiAgICB0b1ZpZXdCb3hQb2ludFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge1xuICAgIEJPQVJEX1RPX09OX0NIQU5HRSxcbiAgICBCT0FSRF9UT19DT01QT05FTlQsXG4gICAgQk9BUkRfVE9fRUxFTUVOVF9IT1NULFxuICAgIEJPQVJEX1RPX0hPU1QsXG4gICAgQk9BUkRfVE9fUk9VR0hfU1ZHLFxuICAgIEJPQVJEX1RPX01PVklOR19QT0lOVF9JTl9CT0FSRCxcbiAgICBCT0FSRF9UT19NT1ZJTkdfUE9JTlQsXG4gICAgQk9BUkRfVE9fQUZURVJfQ0hBTkdFLFxuICAgIElTX0JPQVJEX0FMSVZFXG59IGZyb20gJy4uL3V0aWxzL3dlYWstbWFwcyc7XG5pbXBvcnQgeyBCb2FyZENvbXBvbmVudEludGVyZmFjZSB9IGZyb20gJy4vYm9hcmQuY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQge1xuICAgIGluaXRpYWxpemVWaWV3cG9ydE9mZnNldCxcbiAgICBpbml0aWFsaXplVmlld0JveCxcbiAgICBpc0Zyb21WaWV3cG9ydENoYW5nZSxcbiAgICBzZXRJc0Zyb21WaWV3cG9ydENoYW5nZSxcbiAgICBpbml0aWFsaXplVmlld3BvcnRDb250YWluZXIsXG4gICAgdXBkYXRlVmlld3BvcnRPZmZzZXQsXG4gICAgdXBkYXRlVmlld3BvcnRCeVNjcm9sbGluZ1xufSBmcm9tICcuLi91dGlscy92aWV3cG9ydCc7XG5pbXBvcnQgeyB3aXRoVmlld3BvcnQgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtdmlld3BvcnQnO1xuaW1wb3J0IHsgd2l0aE1vdmluZyB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1tb3ZpbmcnO1xuaW1wb3J0IHsgaGFzSW5wdXRPclRleHRhcmVhVGFyZ2V0IH0gZnJvbSAnLi4vdXRpbHMvZG9tL2NvbW1vbic7XG5pbXBvcnQgeyB3aXRoT3B0aW9ucyB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1vcHRpb25zJztcbmltcG9ydCB7IFBsYWl0SXNsYW5kQmFzZUNvbXBvbmVudCwgaGFzT25Cb2FyZENoYW5nZSB9IGZyb20gJy4uL2NvcmUvaXNsYW5kL2lzbGFuZC1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCb2FyZFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zL2JvYXJkJztcbmltcG9ydCB7IFBsYWl0VGhlbWUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RoZW1lJztcbmltcG9ydCB7IHdpdGhIb3RrZXkgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtaG90a2V5JztcbmltcG9ydCB7IEhPU1RfQ0xBU1NfTkFNRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQbGFpdENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaW1hZ2UtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IGlzUHJldmVudFRvdWNoTW92ZSB9IGZyb20gJy4uL3V0aWxzL3RvdWNoJztcbmltcG9ydCB7IFBsYWl0Q2hpbGRyZW5FbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS9jaGlsZHJlbi9jaGlsZHJlbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgWk9PTV9TVEVQIH0gZnJvbSAnLi4vY29uc3RhbnRzL3pvb20nO1xuaW1wb3J0IHsgd2l0aFJlbGF0ZWRGcmFnbWVudCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1yZWxhdGVkLWZyYWdtZW50JztcblxuY29uc3QgRWxlbWVudEhvc3RDbGFzcyA9ICdlbGVtZW50LWhvc3QnO1xuY29uc3QgRWxlbWVudFVwcGVySG9zdENsYXNzID0gJ2VsZW1lbnQtdXBwZXItaG9zdCc7XG5jb25zdCBFbGVtZW50QWN0aXZlSG9zdENsYXNzID0gJ2VsZW1lbnQtYWN0aXZlLWhvc3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BsYWl0LWJvYXJkJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwidmlld3BvcnQtY29udGFpbmVyXCIgI3ZpZXdwb3J0Q29udGFpbmVyPlxuICAgICAgICAgICAgPHN2ZyAjc3ZnIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIiBjbGFzcz1cImJvYXJkLWhvc3Qtc3ZnXCI+XG4gICAgICAgICAgICAgICAgPGcgY2xhc3M9XCJlbGVtZW50LWhvc3RcIj48L2c+XG4gICAgICAgICAgICAgICAgPGcgY2xhc3M9XCJlbGVtZW50LXVwcGVyLWhvc3RcIj48L2c+XG4gICAgICAgICAgICAgICAgPGcgY2xhc3M9XCJlbGVtZW50LWFjdGl2ZS1ob3N0XCI+PC9nPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8cGxhaXQtY2hpbGRyZW4gW2JvYXJkXT1cImJvYXJkXCIgW2VmZmVjdF09XCJlZmZlY3RcIj48L3BsYWl0LWNoaWxkcmVuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbUGxhaXRDb250ZXh0U2VydmljZV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbUGxhaXRDaGlsZHJlbkVsZW1lbnRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFBsYWl0Qm9hcmRDb21wb25lbnQgaW1wbGVtZW50cyBCb2FyZENvbXBvbmVudEludGVyZmFjZSwgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgaGFzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIGVmZmVjdCA9IHt9O1xuXG4gICAgYm9hcmQhOiBQbGFpdEJvYXJkO1xuXG4gICAgcm91Z2hTVkchOiBSb3VnaFNWRztcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXIhOiBSZXNpemVPYnNlcnZlcjtcblxuICAgIEBJbnB1dCgpIHBsYWl0VmFsdWU6IFBsYWl0RWxlbWVudFtdID0gW107XG5cbiAgICBASW5wdXQoKSBwbGFpdFZpZXdwb3J0ITogVmlld3BvcnQ7XG5cbiAgICBASW5wdXQoKSBwbGFpdFBsdWdpbnM6IFBsYWl0UGx1Z2luW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHBsYWl0T3B0aW9ucz86IFBsYWl0Qm9hcmRPcHRpb25zO1xuXG4gICAgQElucHV0KCkgcGxhaXRUaGVtZT86IFBsYWl0VGhlbWU7XG5cbiAgICBAT3V0cHV0KCkgcGxhaXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxQbGFpdEJvYXJkQ2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIHBsYWl0Qm9hcmRJbml0aWFsaXplZDogRXZlbnRFbWl0dGVyPFBsYWl0Qm9hcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgZ2V0IGhvc3QoKTogU1ZHU1ZHRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnN2Zy5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBob3N0Q2xhc3MoKSB7XG4gICAgICAgIHJldHVybiBgJHtIT1NUX0NMQVNTX05BTUV9IHBvaW50ZXItJHt0aGlzLmJvYXJkLnBvaW50ZXJ9IHRoZW1lLSR7dGhpcy5ib2FyZC50aGVtZS50aGVtZUNvbG9yTW9kZX0gJHt0aGlzLmdldEJyb3dzZXJDbGFzc05hbWUoKX1gO1xuICAgIH1cblxuICAgIGdldEJyb3dzZXJDbGFzc05hbWUoKSB7XG4gICAgICAgIGlmIChJU19TQUZBUkkpIHtcbiAgICAgICAgICAgIHJldHVybiAnc2FmYXJpJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoSVNfQ0hST01FKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2Nocm9tZSc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKElTX0ZJUkVGT1gpIHtcbiAgICAgICAgICAgIHJldHVybiAnZmlyZWZveCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MucmVhZG9ubHknKVxuICAgIGdldCByZWFkb25seSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYm9hcmQub3B0aW9ucy5yZWFkb25seTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZvY3VzZWQnKVxuICAgIGdldCBpc0ZvY3VzZWQoKSB7XG4gICAgICAgIHJldHVybiBQbGFpdEJvYXJkLmlzRm9jdXModGhpcy5ib2FyZCk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZC1zY3JvbGwnKVxuICAgIGdldCBkaXNhYmxlZFNjcm9sbE9uTm9uRm9jdXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJvYXJkLm9wdGlvbnMuZGlzYWJsZWRTY3JvbGxPbk5vbkZvY3VzICYmICFQbGFpdEJvYXJkLmlzRm9jdXModGhpcy5ib2FyZCk7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnc3ZnJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBzdmchOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgndmlld3BvcnRDb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHZpZXdwb3J0Q29udGFpbmVyITogRWxlbWVudFJlZjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUGxhaXRJc2xhbmRCYXNlQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIGlzbGFuZHM/OiBRdWVyeUxpc3Q8UGxhaXRJc2xhbmRCYXNlQ29tcG9uZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudEhvc3QgPSB0aGlzLmhvc3QucXVlcnlTZWxlY3RvcihgLiR7RWxlbWVudEhvc3RDbGFzc31gKSBhcyBTVkdHRWxlbWVudDtcbiAgICAgICAgY29uc3QgZWxlbWVudFVwcGVySG9zdCA9IHRoaXMuaG9zdC5xdWVyeVNlbGVjdG9yKGAuJHtFbGVtZW50VXBwZXJIb3N0Q2xhc3N9YCkgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRBY3RpdmVIb3N0ID0gdGhpcy5ob3N0LnF1ZXJ5U2VsZWN0b3IoYC4ke0VsZW1lbnRBY3RpdmVIb3N0Q2xhc3N9YCkgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHJvdWdoU1ZHID0gcm91Z2guc3ZnKHRoaXMuaG9zdCBhcyBTVkdTVkdFbGVtZW50LCB7XG4gICAgICAgICAgICBvcHRpb25zOiB7IHJvdWdobmVzczogMCwgc3Ryb2tlV2lkdGg6IDEgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3VnaFNWRyA9IHJvdWdoU1ZHO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVQbHVnaW5zKCk7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUhvb2tMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy52aWV3cG9ydFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLndoZWVsWm9vbUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2VsZWF2ZScpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIEJPQVJEX1RPX01PVklOR19QT0lOVC5kZWxldGUodGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBCT0FSRF9UT19DT01QT05FTlQuc2V0KHRoaXMuYm9hcmQsIHRoaXMpO1xuICAgICAgICBCT0FSRF9UT19ST1VHSF9TVkcuc2V0KHRoaXMuYm9hcmQsIHJvdWdoU1ZHKTtcbiAgICAgICAgQk9BUkRfVE9fSE9TVC5zZXQodGhpcy5ib2FyZCwgdGhpcy5ob3N0KTtcbiAgICAgICAgSVNfQk9BUkRfQUxJVkUuc2V0KHRoaXMuYm9hcmQsIHRydWUpO1xuICAgICAgICBCT0FSRF9UT19FTEVNRU5UX0hPU1Quc2V0KHRoaXMuYm9hcmQsIHtcbiAgICAgICAgICAgIGhvc3Q6IGVsZW1lbnRIb3N0LFxuICAgICAgICAgICAgdXBwZXJIb3N0OiBlbGVtZW50VXBwZXJIb3N0LFxuICAgICAgICAgICAgYWN0aXZlSG9zdDogZWxlbWVudEFjdGl2ZUhvc3QsXG4gICAgICAgICAgICBjb250YWluZXI6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgdmlld3BvcnRDb250YWluZXI6IHRoaXMudmlld3BvcnRDb250YWluZXIubmF0aXZlRWxlbWVudFxuICAgICAgICB9KTtcbiAgICAgICAgQk9BUkRfVE9fT05fQ0hBTkdFLnNldCh0aGlzLmJvYXJkLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIEJPQVJEX1RPX0FGVEVSX0NIQU5HRS5zZXQodGhpcy5ib2FyZCwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGFuZ2VFdmVudDogUGxhaXRCb2FyZENoYW5nZUV2ZW50ID0ge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogdGhpcy5ib2FyZC5jaGlsZHJlbixcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uczogdGhpcy5ib2FyZC5vcGVyYXRpb25zLFxuICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydDogdGhpcy5ib2FyZC52aWV3cG9ydCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uOiB0aGlzLmJvYXJkLnNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdGhlbWU6IHRoaXMuYm9hcmQudGhlbWVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSXNsYW5kcygpO1xuICAgICAgICAgICAgICAgIHRoaXMucGxhaXRDaGFuZ2UuZW1pdChjaGFuZ2VFdmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaGFzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplSXNsYW5kcygpO1xuICAgIH1cblxuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgdGhpcy5lZmZlY3QgPSB7fTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlQ2hhbmdlID0gY2hhbmdlc1sncGxhaXRWYWx1ZSddO1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGNoYW5nZXNbJ3BsYWl0T3B0aW9ucyddO1xuXG4gICAgICAgICAgICBpZiAodmFsdWVDaGFuZ2UpIHRoaXMuYm9hcmQuY2hpbGRyZW4gPSB2YWx1ZUNoYW5nZS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBpZiAob3B0aW9ucykgdGhpcy5ib2FyZC5vcHRpb25zID0gb3B0aW9ucy5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wbGFpdEJvYXJkSW5pdGlhbGl6ZWQuZW1pdCh0aGlzLmJvYXJkKTtcbiAgICAgICAgaW5pdGlhbGl6ZVZpZXdwb3J0Q29udGFpbmVyKHRoaXMuYm9hcmQpO1xuICAgICAgICBpbml0aWFsaXplVmlld0JveCh0aGlzLmJvYXJkKTtcbiAgICAgICAgaW5pdGlhbGl6ZVZpZXdwb3J0T2Zmc2V0KHRoaXMuYm9hcmQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVBsdWdpbnMoKSB7XG4gICAgICAgIGxldCBib2FyZCA9IHdpdGhSZWxhdGVkRnJhZ21lbnQoXG4gICAgICAgICAgICB3aXRoSG90a2V5KFxuICAgICAgICAgICAgICAgIHdpdGhIYW5kUG9pbnRlcihcbiAgICAgICAgICAgICAgICAgICAgd2l0aEhpc3RvcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoU2VsZWN0aW9uKHdpdGhNb3Zpbmcod2l0aEJvYXJkKHdpdGhWaWV3cG9ydCh3aXRoT3B0aW9ucyhjcmVhdGVCb2FyZCh0aGlzLnBsYWl0VmFsdWUsIHRoaXMucGxhaXRPcHRpb25zKSkpKSkpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucGxhaXRQbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHtcbiAgICAgICAgICAgIGJvYXJkID0gcGx1Z2luKGJvYXJkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYm9hcmQgPSBib2FyZDtcblxuICAgICAgICBpZiAodGhpcy5wbGFpdFZpZXdwb3J0KSB7XG4gICAgICAgICAgICB0aGlzLmJvYXJkLnZpZXdwb3J0ID0gdGhpcy5wbGFpdFZpZXdwb3J0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucGxhaXRUaGVtZSkge1xuICAgICAgICAgICAgdGhpcy5ib2FyZC50aGVtZSA9IHRoaXMucGxhaXRUaGVtZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZUhvb2tMaXN0ZW5lcigpIHtcbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuaG9zdCwgJ21vdXNlZG93bicpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQubW91c2Vkb3duKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHRoaXMuaG9zdCwgJ3BvaW50ZXJkb3duJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLnBvaW50ZXJEb3duKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmhvc3QsICdtb3VzZW1vdmUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBCT0FSRF9UT19NT1ZJTkdfUE9JTlRfSU5fQk9BUkQuc2V0KHRoaXMuYm9hcmQsIFtldmVudC54LCBldmVudC55XSk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5tb3VzZW1vdmUoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5ob3N0LCAncG9pbnRlcm1vdmUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIEJPQVJEX1RPX01PVklOR19QT0lOVF9JTl9CT0FSRC5zZXQodGhpcy5ib2FyZCwgW2V2ZW50LngsIGV2ZW50LnldKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLnBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmhvc3QsICdtb3VzZWxlYXZlJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgQk9BUkRfVE9fTU9WSU5HX1BPSU5UX0lOX0JPQVJELmRlbGV0ZSh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLm1vdXNlbGVhdmUoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5ob3N0LCAncG9pbnRlcmxlYXZlJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBCT0FSRF9UT19NT1ZJTkdfUE9JTlRfSU5fQk9BUkQuZGVsZXRlKHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQucG9pbnRlckxlYXZlKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ21vdXNlbW92ZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIEJPQVJEX1RPX01PVklOR19QT0lOVC5zZXQodGhpcy5ib2FyZCwgW2V2ZW50LngsIGV2ZW50LnldKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLmdsb2JhbE1vdXNlbW92ZShldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pihkb2N1bWVudCwgJ3BvaW50ZXJtb3ZlJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBCT0FSRF9UT19NT1ZJTkdfUE9JTlQuc2V0KHRoaXMuYm9hcmQsIFtldmVudC54LCBldmVudC55XSk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5nbG9iYWxQb2ludGVyTW92ZShldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5ob3N0LCAnbW91c2V1cCcpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQubW91c2V1cChldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLmhvc3QsICdwb2ludGVydXAnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQucG9pbnRlclVwKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ21vdXNldXAnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLmdsb2JhbE1vdXNldXAoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4oZG9jdW1lbnQsICdwb2ludGVydXAnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQuZ2xvYmFsUG9pbnRlclVwKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmhvc3QsICdkYmxjbGljaycpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuaXNGb2N1c2VkICYmICFQbGFpdEJvYXJkLmhhc0JlZW5UZXh0RWRpdGluZyh0aGlzLmJvYXJkKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5kYmxDbGljayhldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnQsICdrZXlkb3duJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICB0YXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLmdsb2JhbEtleURvd24oZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiB0aGlzLmlzRm9jdXNlZCAmJiAhUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcodGhpcy5ib2FyZCkgJiYgIWhhc0lucHV0T3JUZXh0YXJlYVRhcmdldChldmVudC50YXJnZXQpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLmtleURvd24oZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5dXAnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzRm9jdXNlZCAmJiAhUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcodGhpcy5ib2FyZCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQ/LmtleVVwKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxDbGlwYm9hcmRFdmVudD4oZG9jdW1lbnQsICdjb3B5JylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5pc0ZvY3VzZWQgJiYgIVBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKHRoaXMuYm9hcmQpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHModGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKHRoaXMuYm9hcmQsIHNlbGVjdGVkRWxlbWVudHMsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLnNldEZyYWdtZW50KGV2ZW50LmNsaXBib2FyZERhdGEsIG51bGwsIHJlY3RhbmdsZSwgJ2NvcHknKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxDbGlwYm9hcmRFdmVudD4oZG9jdW1lbnQsICdwYXN0ZScpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuaXNGb2N1c2VkICYmICFQbGFpdEJvYXJkLmlzUmVhZG9ubHkodGhpcy5ib2FyZCkgJiYgIVBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKHRoaXMuYm9hcmQpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyAoY2xpcGJvYXJkRXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbW91c2VQb2ludCA9IFBsYWl0Qm9hcmQuZ2V0TW92aW5nUG9pbnRJbkJvYXJkKHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmIChtb3VzZVBvaW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFBvaW50ID0gdG9WaWV3Qm94UG9pbnQodGhpcy5ib2FyZCwgdG9Ib3N0UG9pbnQodGhpcy5ib2FyZCwgbW91c2VQb2ludFswXSwgbW91c2VQb2ludFsxXSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGlwYm9hcmREYXRhID0gYXdhaXQgZ2V0Q2xpcGJvYXJkRGF0YShjbGlwYm9hcmRFdmVudC5jbGlwYm9hcmREYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5pbnNlcnRGcmFnbWVudChjbGlwYm9hcmRFdmVudC5jbGlwYm9hcmREYXRhLCBjbGlwYm9hcmREYXRhLCB0YXJnZXRQb2ludCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PENsaXBib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2N1dCcpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuaXNGb2N1c2VkICYmICFQbGFpdEJvYXJkLmlzUmVhZG9ubHkodGhpcy5ib2FyZCkgJiYgIVBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKHRoaXMuYm9hcmQpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHModGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKHRoaXMuYm9hcmQsIHNlbGVjdGVkRWxlbWVudHMsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLnNldEZyYWdtZW50KGV2ZW50LmNsaXBib2FyZERhdGEsIG51bGwsIHJlY3RhbmdsZSwgJ2N1dCcpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZUZyYWdtZW50KHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2aWV3cG9ydFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy52aWV3cG9ydENvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNGcm9tVmlld3BvcnRDaGFuZ2UodGhpcy5ib2FyZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRnJvbVZpZXdwb3J0Q2hhbmdlKHRoaXMuYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzY3JvbGxMZWZ0LCBzY3JvbGxUb3AgfSA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICB1cGRhdGVWaWV3cG9ydEJ5U2Nyb2xsaW5nKHRoaXMuYm9hcmQsIHNjcm9sbExlZnQsIHNjcm9sbFRvcCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMudmlld3BvcnRDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ3RvdWNobW92ZScsIHsgcGFzc2l2ZTogZmFsc2UgfSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpc1ByZXZlbnRUb3VjaE1vdmUodGhpcy5ib2FyZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVsZW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgICBpbml0aWFsaXplVmlld3BvcnRDb250YWluZXIodGhpcy5ib2FyZCk7XG4gICAgICAgICAgICBpbml0aWFsaXplVmlld0JveCh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgIHVwZGF0ZVZpZXdwb3J0T2Zmc2V0KHRoaXMuYm9hcmQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplSXNsYW5kcygpIHtcbiAgICAgICAgdGhpcy5pc2xhbmRzPy5mb3JFYWNoKGlzbGFuZCA9PiB7XG4gICAgICAgICAgICBpc2xhbmQuaW5pdGlhbGl6ZSh0aGlzLmJvYXJkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVJc2xhbmRzKCkge1xuICAgICAgICB0aGlzLmlzbGFuZHM/LmZvckVhY2goaXNsYW5kID0+IHtcbiAgICAgICAgICAgIGlmIChoYXNPbkJvYXJkQ2hhbmdlKGlzbGFuZCkpIHtcbiAgICAgICAgICAgICAgICBpc2xhbmQub25Cb2FyZENoYW5nZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNsYW5kLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHdoZWVsWm9vbUxpc3RlbmVyKCkge1xuICAgICAgICBmcm9tRXZlbnQ8V2hlZWxFdmVudD4odGhpcy5ob3N0LCAnd2hlZWwnLCB7IHBhc3NpdmU6IGZhbHNlIH0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIENyZWRpdHMgdG8gZXhjYWxpZHJhd1xuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9leGNhbGlkcmF3L2V4Y2FsaWRyYXcvYmxvYi9iN2Q3Y2NjOTI5Njk2Y2MxN2I0Y2MzNDQ1MmU0YWZkODQ2ZDU5ZjRmL3NyYy9jb21wb25lbnRzL0FwcC50c3gjTDkwNjBcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGVsdGFYLCBkZWx0YVkgfSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB6b29tID0gdGhpcy5ib2FyZC52aWV3cG9ydC56b29tO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaWduID0gTWF0aC5zaWduKGRlbHRhWSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IE1BWF9TVEVQID0gWk9PTV9TVEVQICogMTAwO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhYnNEZWx0YSA9IE1hdGguYWJzKGRlbHRhWSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZWx0YSA9IGRlbHRhWTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFic0RlbHRhID4gTUFYX1NURVApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhID0gTUFYX1NURVAgKiBzaWduO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdab29tID0gem9vbSAtIGRlbHRhIC8gMTAwO1xuICAgICAgICAgICAgICAgICAgICAvLyBpbmNyZWFzZSB6b29tIHN0ZXBzIHRoZSBtb3JlIHpvb21lZC1pbiB3ZSBhcmUgKGFwcGxpZXMgdG8gPjEwMCUgb25seSlcbiAgICAgICAgICAgICAgICAgICAgbmV3Wm9vbSArPVxuICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5sb2cxMChNYXRoLm1heCgxLCB6b29tKSkgKlxuICAgICAgICAgICAgICAgICAgICAgICAgLXNpZ24gKlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkdWNlZCBhbXBsaWZpY2F0aW9uIGZvciBzbWFsbCBkZWx0YXMgKHNtYWxsIG1vdmVtZW50cyBvbiBhIHRyYWNrcGFkKVxuICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5taW4oMSwgYWJzRGVsdGEgLyAyMCk7XG4gICAgICAgICAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVab29tKHRoaXMuYm9hcmQsIG5ld1pvb20sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0cmFja0J5ID0gKGluZGV4OiBudW1iZXIsIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5pZDtcbiAgICB9O1xuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgJiYgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgICBCT0FSRF9UT19ST1VHSF9TVkcuZGVsZXRlKHRoaXMuYm9hcmQpO1xuICAgICAgICBCT0FSRF9UT19DT01QT05FTlQuZGVsZXRlKHRoaXMuYm9hcmQpO1xuICAgICAgICBCT0FSRF9UT19ST1VHSF9TVkcuZGVsZXRlKHRoaXMuYm9hcmQpO1xuICAgICAgICBCT0FSRF9UT19IT1NULmRlbGV0ZSh0aGlzLmJvYXJkKTtcbiAgICAgICAgQk9BUkRfVE9fRUxFTUVOVF9IT1NULmRlbGV0ZSh0aGlzLmJvYXJkKTtcbiAgICAgICAgSVNfQk9BUkRfQUxJVkUuc2V0KHRoaXMuYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgQk9BUkRfVE9fT05fQ0hBTkdFLmRlbGV0ZSh0aGlzLmJvYXJkKTtcbiAgICAgICAgQk9BUkRfVE9fQUZURVJfQ0hBTkdFLnNldCh0aGlzLmJvYXJkLCAoKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgbWFya0ZvckNoZWNrKCkge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSXNsYW5kcygpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export const ATTACHED_ELEMENT_CLASS_NAME = 'plait-board-attached';
|
|
2
2
|
export const ACTIVE_STROKE_WIDTH = 1;
|
|
3
|
+
export const SNAPPING_STROKE_WIDTH = 2;
|
|
3
4
|
export const SELECTION_RECTANGLE_CLASS_NAME = 'selection-rectangle';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvY29uc3RhbnRzL3NlbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxzQkFBc0IsQ0FBQztBQUVsRSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7QUFFckMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBRXZDLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFUVEFDSEVEX0VMRU1FTlRfQ0xBU1NfTkFNRSA9ICdwbGFpdC1ib2FyZC1hdHRhY2hlZCc7XG5cbmV4cG9ydCBjb25zdCBBQ1RJVkVfU1RST0tFX1dJRFRIID0gMTtcblxuZXhwb3J0IGNvbnN0IFNOQVBQSU5HX1NUUk9LRV9XSURUSCA9IDI7XG5cbmV4cG9ydCBjb25zdCBTRUxFQ1RJT05fUkVDVEFOR0xFX0NMQVNTX05BTUUgPSAnc2VsZWN0aW9uLXJlY3RhbmdsZSc7XG4iXX0=
|
|
@@ -12,6 +12,10 @@ export const PlaitBoard = {
|
|
|
12
12
|
IS_BOARD_CACHE.set(value, isBoard);
|
|
13
13
|
return isBoard;
|
|
14
14
|
},
|
|
15
|
+
isAlive(board) {
|
|
16
|
+
const isAlive = IS_BOARD_CACHE.get(board);
|
|
17
|
+
return !!isAlive;
|
|
18
|
+
},
|
|
15
19
|
findPath(board, node) {
|
|
16
20
|
const path = [];
|
|
17
21
|
let child = node;
|
|
@@ -95,4 +99,4 @@ export const PlaitBoard = {
|
|
|
95
99
|
return (board.options.themeColors || ThemeColors);
|
|
96
100
|
}
|
|
97
101
|
};
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9pbnRlcmZhY2VzL2JvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsOEJBQThCLEVBQzlCLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixjQUFjLEVBQ2pCLE1BQU0sb0JBQW9CLENBQUM7QUFLNUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJMUQsT0FBTyxFQUEwQixXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBd0ZqRSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDdEIsT0FBTyxDQUFDLEtBQVU7UUFDZCxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sYUFBYSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxPQUFPLEtBQUssQ0FBQyxRQUFRLEtBQUssVUFBVSxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUM7UUFDMUYsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkMsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNELFFBQVEsQ0FBQyxLQUFpQixFQUFFLElBQWU7UUFDdkMsTUFBTSxJQUFJLEdBQVMsRUFBRSxDQUFDO1FBQ3RCLElBQUksS0FBSyxHQUFhLElBQUksQ0FBQztRQUMzQixPQUFPLElBQUksRUFBRSxDQUFDO1lBQ1YsTUFBTSxNQUFNLEdB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QztJQUNELHFCQUFxQixDQUFDLEtBQWlCO1FBQ25DLE9BQU8sOEJBQThCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxLQUFpQjtRQUNsQyxNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDekUsSUFBSSxLQUFLLElBQUksZ0NBQWdDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1RSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELGNBQWMsQ0FBb0MsS0FBaUI7UUFDL0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBUSxDQUFDO0lBQzdELENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRQb2ludGVyVHlwZSB9IGZyb20gJy4vcG9pbnRlcic7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlLCBQbGFpdEVsZW1lbnQgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCB9IGZyb20gJy4uL2NvcmUvZWxlbWVudC9jb250ZXh0JztcbmltcG9ydCB7IFBsYWl0SGlzdG9yeSB9IGZyb20gJy4vaGlzdG9yeSc7XG5pbXBvcnQgeyBQbGFpdE9wZXJhdGlvbiB9IGZyb20gJy4vb3BlcmF0aW9uJztcbmltcG9ydCB7IFNlbGVjdGlvbiB9IGZyb20gJy4vc2VsZWN0aW9uJztcbmltcG9ydCB7IFZpZXdwb3J0IH0gZnJvbSAnLi92aWV3cG9ydCc7XG5pbXBvcnQgeyBQbGFpdFBsdWdpbkVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlL2VsZW1lbnQvcGx1Z2luLWVsZW1lbnQnO1xuaW1wb3J0IHtcbiAgICBCT0FSRF9UT19DT01QT05FTlQsXG4gICAgQk9BUkRfVE9fRUxFTUVOVF9IT1NULFxuICAgIEJPQVJEX1RPX0hPU1QsXG4gICAgQk9BUkRfVE9fTU9WSU5HX1BPSU5ULFxuICAgIEJPQVJEX1RPX01PVklOR19QT0lOVF9JTl9CT0FSRCxcbiAgICBCT0FSRF9UT19ST1VHSF9TVkcsXG4gICAgSVNfQk9BUkRfQ0FDSEUsXG4gICAgSVNfVEVYVF9FRElUQUJMRSxcbiAgICBOT0RFX1RPX0lOREVYLFxuICAgIE5PREVfVE9fUEFSRU5UXG59IGZyb20gJy4uL3V0aWxzL3dlYWstbWFwcyc7XG5pbXBvcnQgeyBSb3VnaFNWRyB9IGZyb20gJ3JvdWdoanMvYmluL3N2Zyc7XG5pbXBvcnQgeyBCb2FyZENvbXBvbmVudEludGVyZmFjZSB9IGZyb20gJy4uL2JvYXJkL2JvYXJkLmNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuL3BvaW50JztcbmltcG9ydCB7IFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJy4vcmVjdGFuZ2xlLWNsaWVudCc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvZWxlbWVudCc7XG5pbXBvcnQgeyBQYXRoUmVmLCBQYXRoUmVmT3B0aW9ucyB9IGZyb20gJy4vcGF0aC1yZWYnO1xuaW1wb3J0IHsgQW5jZXN0b3IsIFBsYWl0Tm9kZSB9IGZyb20gJy4vbm9kZSc7XG5pbXBvcnQgeyBQYXRoIH0gZnJvbSAnLi9wYXRoJztcbmltcG9ydCB7IFBsYWl0VGhlbWUsIFRoZW1lQ29sb3IsIFRoZW1lQ29sb3JzIH0gZnJvbSAnLi90aGVtZSc7XG5pbXBvcnQgeyBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFJlY3RhbmdsZSB9IGZyb20gJy4uL3V0aWxzL21hdGgnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkRGF0YSwgV3JpdGFibGVDbGlwYm9hcmRDb250ZXh0IH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0Qm9hcmQge1xuICAgIHZpZXdwb3J0OiBWaWV3cG9ydDtcbiAgICBjaGlsZHJlbjogUGxhaXRFbGVtZW50W107XG4gICAgdGhlbWU6IFBsYWl0VGhlbWU7XG4gICAgb3BlcmF0aW9uczogUGxhaXRPcGVyYXRpb25bXTtcbiAgICAvLyByZWNvcmQgcG9pbnRlciBzZWxlY3Rpb24gb3IgZHJhZyBzZWxlY3Rpb25cbiAgICAvLyBpdCB3aWxsIGJlIGRpcnR5IHdoZW4gYm9hcmQgdmlld3BvcnQgY2hhbmdlXG4gICAgc2VsZWN0aW9uOiBTZWxlY3Rpb24gfCBudWxsO1xuICAgIHBvaW50ZXI6IFBsYWl0UG9pbnRlclR5cGUgfCBzdHJpbmc7XG4gICAgaGlzdG9yeTogUGxhaXRIaXN0b3J5O1xuICAgIG9wdGlvbnM6IFBsYWl0Qm9hcmRPcHRpb25zO1xuICAgIHVuZG86ICgpID0+IHZvaWQ7XG4gICAgcmVkbzogKCkgPT4gdm9pZDtcbiAgICBhcHBseTogKG9wZXJhdGlvbjogUGxhaXRPcGVyYXRpb24pID0+IHZvaWQ7XG4gICAgb25DaGFuZ2U6ICgpID0+IHZvaWQ7XG4gICAgYWZ0ZXJDaGFuZ2U6ICgpID0+IHZvaWQ7XG4gICAgbW91c2Vkb3duOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgbW91c2Vtb3ZlOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgbW91c2VsZWF2ZTogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICAgIG1vdXNldXA6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgICBnbG9iYWxNb3VzZW1vdmU6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgICBnbG9iYWxNb3VzZXVwOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAga2V5RG93bjogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkO1xuICAgIGdsb2JhbEtleURvd246IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZDtcbiAgICBrZXlVcDogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkO1xuICAgIHNldEZyYWdtZW50OiAoXG4gICAgICAgIGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwsXG4gICAgICAgIGNsaXBib2FyZENvbnRleHQ6IFdyaXRhYmxlQ2xpcGJvYXJkQ29udGV4dCB8IG51bGwsXG4gICAgICAgIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50IHwgbnVsbCxcbiAgICAgICAgdHlwZTogJ2NvcHknIHwgJ2N1dCdcbiAgICApID0+IHZvaWQ7XG4gICAgaW5zZXJ0RnJhZ21lbnQ6IChkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsLCBjbGlwYm9hcmREYXRhOiBDbGlwYm9hcmREYXRhIHwgbnVsbCwgdGFyZ2V0UG9pbnQ6IFBvaW50KSA9PiB2b2lkO1xuICAgIGRlbGV0ZUZyYWdtZW50OiAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCkgPT4gdm9pZDtcbiAgICBnZXREZWxldGVkRnJhZ21lbnQ6IChkYXRhOiBQbGFpdEVsZW1lbnRbXSkgPT4gUGxhaXRFbGVtZW50W107XG4gICAgZ2V0UmVsYXRlZEZyYWdtZW50OiAoZGF0YTogUGxhaXRFbGVtZW50W10pID0+IFBsYWl0RWxlbWVudFtdO1xuICAgIGRibENsaWNrOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgZHJhd0VsZW1lbnQ6IChjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiBTVkdHRWxlbWVudFtdIHwgQ29tcG9uZW50VHlwZTxQbGFpdFBsdWdpbkVsZW1lbnRDb21wb25lbnQ+O1xuICAgIHJlZHJhd0VsZW1lbnQ6IChjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0LCBwcmV2aW91c0NvbnRleHQ/OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiBTVkdHRWxlbWVudFtdIHwgdm9pZDtcbiAgICBkZXN0cm95RWxlbWVudDogKGNvbnRleHQ6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQpID0+IHZvaWQ7XG4gICAgaXNSZWN0YW5nbGVIaXQ6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQsIHJhbmdlOiBTZWxlY3Rpb24pID0+IGJvb2xlYW47XG4gICAgLy8gV2hlbiB0aGUgZWxlbWVudCBoYXMgbm8gZmlsbCBjb2xvciwgaXQgaXMgY29uc2lkZXJlZCBhIGhpdCBvbmx5IGlmIGl0IGhpdHMgdGhlIGJvcmRlci5cbiAgICBpc0hpdDogKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgcG9pbnQ6IFBvaW50KSA9PiBib29sZWFuO1xuICAgIGlzSW5zaWRlUG9pbnQ6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQsIHBvaW50OiBQb2ludCkgPT4gYm9vbGVhbjtcbiAgICBpc1JlY3Vyc2lvbjogKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4gYm9vbGVhbjtcbiAgICBpc01vdmFibGU6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IGJvb2xlYW47XG4gICAgZ2V0UmVjdGFuZ2xlOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBSZWN0YW5nbGVDbGllbnQgfCBudWxsO1xuICAgIGlzV2l0aGluU2VsZWN0aW9uOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBib29sZWFuO1xuICAgIHBhdGhSZWY6IChwYXRoOiBQYXRoLCBvcHRpb25zPzogUGF0aFJlZk9wdGlvbnMpID0+IFBhdGhSZWY7XG4gICAgcGF0aFJlZnM6ICgpID0+IFNldDxQYXRoUmVmPjtcbiAgICBhcHBseVRoZW1lOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB2b2lkO1xuICAgIGlzQWxpZ246IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IGJvb2xlYW47XG4gICAgaXNJbWFnZUJpbmRpbmdBbGxvd2VkOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBib29sZWFuO1xuICAgIGNhbkFkZFRvR3JvdXA6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IGJvb2xlYW47XG5cbiAgICAvLyBwb2ludGVyIGhvb2tcbiAgICBwb2ludGVyRG93bjogKHBvaW50ZXI6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgICBwb2ludGVyTW92ZTogKHBvaW50ZXI6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgICBwb2ludGVyVXA6IChwb2ludGVyOiBQb2ludGVyRXZlbnQpID0+IHZvaWQ7XG4gICAgcG9pbnRlckNhbmNlbDogKHBvaW50ZXI6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgICBwb2ludGVyT3V0OiAocG9pbnRlcjogUG9pbnRlckV2ZW50KSA9PiB2b2lkO1xuICAgIHBvaW50ZXJMZWF2ZTogKHBvaW50ZXI6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgICBnbG9iYWxQb2ludGVyTW92ZTogKHBvaW50ZXI6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgICBnbG9iYWxQb2ludGVyVXA6IChwb2ludGVyOiBQb2ludGVyRXZlbnQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRCb2FyZENoYW5nZUV2ZW50IHtcbiAgICBjaGlsZHJlbjogUGxhaXRFbGVtZW50W107XG4gICAgb3BlcmF0aW9uczogUGxhaXRPcGVyYXRpb25bXTtcbiAgICB2aWV3cG9ydDogVmlld3BvcnQ7XG4gICAgc2VsZWN0aW9uOiBTZWxlY3Rpb24gfCBudWxsO1xuICAgIHRoZW1lOiBQbGFpdFRoZW1lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0Qm9hcmRPcHRpb25zIHtcbiAgICByZWFkb25seT86IGJvb2xlYW47XG4gICAgaGlkZVNjcm9sbGJhcj86IGJvb2xlYW47XG4gICAgZGlzYWJsZWRTY3JvbGxPbk5vbkZvY3VzPzogYm9vbGVhbjtcbiAgICB0aGVtZUNvbG9ycz86IFRoZW1lQ29sb3JbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdEJvYXJkTW92ZSB7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFBsYWl0Qm9hcmQgPSB7XG4gICAgaXNCb2FyZCh2YWx1ZTogYW55KTogdmFsdWUgaXMgUGxhaXRCb2FyZCB7XG4gICAgICAgIGNvbnN0IGNhY2hlZElzQm9hcmQgPSBJU19CT0FSRF9DQUNIRS5nZXQodmFsdWUpO1xuICAgICAgICBpZiAoY2FjaGVkSXNCb2FyZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkSXNCb2FyZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0JvYXJkID0gdHlwZW9mIHZhbHVlLm9uQ2hhbmdlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2YWx1ZS5hcHBseSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgICAgSVNfQk9BUkRfQ0FDSEUuc2V0KHZhbHVlLCBpc0JvYXJkKTtcbiAgICAgICAgcmV0dXJuIGlzQm9hcmQ7XG4gICAgfSxcbiAgICBmaW5kUGF0aChib2FyZDogUGxhaXRCb2FyZCwgbm9kZTogUGxhaXROb2RlKTogUGF0aCB7XG4gICAgICAgIGNvbnN0IHBhdGg6IFBhdGggPSBbXTtcbiAgICAgICAgbGV0IGNoaWxkOiBBbmNlc3RvciA9IG5vZGU7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBOT0RFX1RPX1BBUkVOVC5nZXQoY2hpbGQgYXMgUGxhaXRFbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChwYXJlbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChQbGFpdEJvYXJkLmlzQm9hcmQoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGkgPSBOT0RFX1RPX0lOREVYLmdldChjaGlsZCBhcyBQbGFpdEVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGkgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGF0aC51bnNoaWZ0KGkpO1xuICAgICAgICAgICAgY2hpbGQgPSBwYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZmluZCB0aGUgcGF0aCBmb3IgUGxhaXQgbm9kZTogJHtKU09OLnN0cmluZ2lmeShub2RlKX1gKTtcbiAgICB9LFxuICAgIGdldEhvc3QoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgcmV0dXJuIEJPQVJEX1RPX0hPU1QuZ2V0KGJvYXJkKSBhcyBTVkdTVkdFbGVtZW50O1xuICAgIH0sXG4gICAgZ2V0RWxlbWVudEhvc3QoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgcmV0dXJuIEJPQVJEX1RPX0VMRU1FTlRfSE9TVC5nZXQoYm9hcmQpPy5ob3N0IGFzIFNWR1NWR0VsZW1lbnQ7XG4gICAgfSxcbiAgICBnZXRFbGVtZW50VXBwZXJIb3N0KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgICAgIHJldHVybiBCT0FSRF9UT19FTEVNRU5UX0hPU1QuZ2V0KGJvYXJkKT8udXBwZXJIb3N0IGFzIFNWR1NWR0VsZW1lbnQ7XG4gICAgfSxcbiAgICBnZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgICAgICByZXR1cm4gQk9BUkRfVE9fRUxFTUVOVF9IT1NULmdldChib2FyZCk/LmFjdGl2ZUhvc3QgYXMgU1ZHU1ZHRWxlbWVudDtcbiAgICB9LFxuICAgIGdldFJvdWdoU1ZHKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgICAgIHJldHVybiBCT0FSRF9UT19ST1VHSF9TVkcuZ2V0KGJvYXJkKSBhcyBSb3VnaFNWRztcbiAgICB9LFxuICAgIGdldENvbXBvbmVudChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgICAgICByZXR1cm4gQk9BUkRfVE9fQ09NUE9ORU5ULmdldChib2FyZCkgYXMgQm9hcmRDb21wb25lbnRJbnRlcmZhY2U7XG4gICAgfSxcbiAgICBnZXRCb2FyZENvbnRhaW5lcihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgICAgICByZXR1cm4gQk9BUkRfVE9fRUxFTUVOVF9IT1NULmdldChib2FyZCk/LmNvbnRhaW5lciBhcyBIVE1MRWxlbWVudDtcbiAgICB9LFxuICAgIGdldFJlY3RhbmdsZShib2FyZDogUGxhaXRCb2FyZCkge1xuICAgICAgICByZXR1cm4gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgYm9hcmQuY2hpbGRyZW4sIHRydWUpO1xuICAgIH0sXG4gICAgZ2V0Vmlld3BvcnRDb250YWluZXIoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgcmV0dXJuIEJPQVJEX1RPX0VMRU1FTlRfSE9TVC5nZXQoYm9hcmQpPy52aWV3cG9ydENvbnRhaW5lciBhcyBIVE1MRWxlbWVudDtcbiAgICB9LFxuICAgIGlzRm9jdXMoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgcmV0dXJuICEhYm9hcmQuc2VsZWN0aW9uO1xuICAgIH0sXG4gICAgaXNSZWFkb25seShib2FyZDogUGxhaXRCb2FyZCkge1xuICAgICAgICByZXR1cm4gYm9hcmQub3B0aW9ucy5yZWFkb25seTtcbiAgICB9LFxuICAgIGhhc0JlZW5UZXh0RWRpdGluZyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgICAgICByZXR1cm4gISFJU19URVhUX0VESVRBQkxFLmdldChib2FyZCk7XG4gICAgfSxcbiAgICBnZXRQb2ludGVyPFQgPSBQbGFpdFBvaW50ZXJUeXBlPihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgICAgICByZXR1cm4gYm9hcmQucG9pbnRlciBhcyBUO1xuICAgIH0sXG4gICAgaXNQb2ludGVyPFQgPSBQbGFpdFBvaW50ZXJUeXBlPihib2FyZDogUGxhaXRCb2FyZCwgcG9pbnRlcjogVCkge1xuICAgICAgICByZXR1cm4gYm9hcmQucG9pbnRlciA9PT0gcG9pbnRlcjtcbiAgICB9LFxuICAgIGlzSW5Qb2ludGVyPFQgPSBQbGFpdFBvaW50ZXJUeXBlPihib2FyZDogUGxhaXRCb2FyZCwgcG9pbnRlcnM6IFRbXSkge1xuICAgICAgICBjb25zdCBwb2ludCA9IGJvYXJkLnBvaW50ZXIgYXMgVDtcbiAgICAgICAgcmV0dXJuIHBvaW50ZXJzLmluY2x1ZGVzKHBvaW50KTtcbiAgICB9LFxuICAgIGdldE1vdmluZ1BvaW50SW5Cb2FyZChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgICAgICByZXR1cm4gQk9BUkRfVE9fTU9WSU5HX1BPSU5UX0lOX0JPQVJELmdldChib2FyZCk7XG4gICAgfSxcbiAgICBpc01vdmluZ1BvaW50SW5Cb2FyZChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgICAgICBjb25zdCBwb2ludCA9IEJPQVJEX1RPX01PVklOR19QT0lOVC5nZXQoYm9hcmQpO1xuICAgICAgICBjb25zdCByZWN0ID0gUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGlmIChwb2ludCAmJiBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFJlY3RhbmdsZShwb2ludFswXSwgcG9pbnRbMV0sIHJlY3QpID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcbiAgICBnZXRUaGVtZUNvbG9yczxUIGV4dGVuZHMgVGhlbWVDb2xvciA9IFRoZW1lQ29sb3I+KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgICAgIHJldHVybiAoYm9hcmQub3B0aW9ucy50aGVtZUNvbG9ycyB8fCBUaGVtZUNvbG9ycykgYXMgVFtdO1xuICAgIH1cbn07XG4iXX0=
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9pbnRlcmZhY2VzL2JvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsOEJBQThCLEVBQzlCLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixjQUFjLEVBQ2pCLE1BQU0sb0JBQW9CLENBQUM7QUFLNUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJMUQsT0FBTyxFQUEwQixXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBeUZqRSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDdEIsT0FBTyxDQUFDLEtBQVU7UUFDZCxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sYUFBYSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxPQUFPLEtBQUssQ0FBQyxRQUFRLEtBQUssVUFBVSxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUM7UUFDMUYsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkMsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sQ0FBQyxLQUFpQjtRQUNyQixNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNyQixDQUFDO0lBQ0QsUUFBUSxDQUFDLEtB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LENBQXVCLEtBQWlCLEVBQUUsUUFBYTtRQUM5RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBWSxDQUFDO1FBQ2pDLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QscUJBQXFCLENBQUMsS0FBaUI7UUFDbkMsT0FBTyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELG9CQUFvQixDQUFDLEtBQWlCO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN6RSxJQUFJLEtBQUssSUFBSSxnQ0FBZ0MsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVFLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsY0FBYyxDQUFvQyxLQUFpQjtRQUMvRCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFRLENBQUM7SUFDN0QsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdFBvaW50ZXJUeXBlIH0gZnJvbSAnLi9wb2ludGVyJztcbmltcG9ydCB7IENvbXBvbmVudFR5cGUsIFBsYWl0RWxlbWVudCB9IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0IH0gZnJvbSAnLi4vY29yZS9lbGVtZW50L2NvbnRleHQnO1xuaW1wb3J0IHsgUGxhaXRIaXN0b3J5IH0gZnJvbSAnLi9oaXN0b3J5JztcbmltcG9ydCB7IFBsYWl0T3BlcmF0aW9uIH0gZnJvbSAnLi9vcGVyYXRpb24nO1xuaW1wb3J0IHsgU2VsZWN0aW9uIH0gZnJvbSAnLi9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgVmlld3BvcnQgfSBmcm9tICcuL3ZpZXdwb3J0JztcbmltcG9ydCB7IFBsYWl0UGx1Z2luRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUvZWxlbWVudC9wbHVnaW4tZWxlbWVudCc7XG5pbXBvcnQge1xuICAgIEJPQVJEX1RPX0NPTVBPTkVOVCxcbiAgICBCT0FSRF9UT19FTEVNRU5UX0hPU1QsXG4gICAgQk9BUkRfVE9fSE9TVCxcbiAgICBCT0FSRF9UT19NT1ZJTkdfUE9JTlQsXG4gICAgQk9BUkRfVE9fTU9WSU5HX1BPSU5UX0lOX0JPQVJELFxuICAgIEJPQVJEX1RPX1JPVUdIX1NWRyxcbiAgICBJU19CT0FSRF9DQUNIRSxcbiAgICBJU19URVhUX0VESVRBQkxFLFxuICAgIE5PREVfVE9fSU5ERVgsXG4gICAgTk9ERV9UT19QQVJFTlRcbn0gZnJvbSAnLi4vdXRpbHMvd2Vhay1tYXBzJztcbmltcG9ydCB7IFJvdWdoU1ZHIH0gZnJvbSAncm91Z2hqcy9iaW4vc3ZnJztcbmltcG9ydCB7IEJvYXJkQ29tcG9uZW50SW50ZXJmYWNlIH0gZnJvbSAnLi4vYm9hcmQvYm9hcmQuY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4vcG9pbnQnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi9yZWN0YW5nbGUtY2xpZW50JztcbmltcG9ydCB7IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMgfSBmcm9tICcuLi91dGlscy9lbGVtZW50JztcbmltcG9ydCB7IFBhdGhSZWYsIFBhdGhSZWZPcHRpb25zIH0gZnJvbSAnLi9wYXRoLXJlZic7XG5pbXBvcnQgeyBBbmNlc3RvciwgUGxhaXROb2RlIH0gZnJvbSAnLi9ub2RlJztcbmltcG9ydCB7IFBhdGggfSBmcm9tICcuL3BhdGgnO1xuaW1wb3J0IHsgUGxhaXRUaGVtZSwgVGhlbWVDb2xvciwgVGhlbWVDb2xvcnMgfSBmcm9tICcuL3RoZW1lJztcbmltcG9ydCB7IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlIH0gZnJvbSAnLi4vdXRpbHMvbWF0aCc7XG5pbXBvcnQgeyBDbGlwYm9hcmREYXRhLCBXcml0YWJsZUNsaXBib2FyZENvbnRleHQgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRCb2FyZCB7XG4gICAgdmlld3BvcnQ6IFZpZXdwb3J0O1xuICAgIGNoaWxkcmVuOiBQbGFpdEVsZW1lbnRbXTtcbiAgICB0aGVtZTogUGxhaXRUaGVtZTtcbiAgICBvcGVyYXRpb25zOiBQbGFpdE9wZXJhdGlvbltdO1xuICAgIC8vIHJlY29yZCBwb2ludGVyIHNlbGVjdGlvbiBvciBkcmFnIHNlbGVjdGlvblxuICAgIC8vIGl0IHdpbGwgYmUgZGlydHkgd2hlbiBib2FyZCB2aWV3cG9ydCBjaGFuZ2VcbiAgICBzZWxlY3Rpb246IFNlbGVjdGlvbiB8IG51bGw7XG4gICAgcG9pbnRlcjogUGxhaXRQb2ludGVyVHlwZSB8IHN0cmluZztcbiAgICBoaXN0b3J5OiBQbGFpdEhpc3Rvcnk7XG4gICAgb3B0aW9uczogUGxhaXRCb2FyZE9wdGlvbnM7XG4gICAgdW5kbzogKCkgPT4gdm9pZDtcbiAgICByZWRvOiAoKSA9PiB2b2lkO1xuICAgIGFwcGx5OiAob3BlcmF0aW9uOiBQbGFpdE9wZXJhdGlvbikgPT4gdm9pZDtcbiAgICBvbkNoYW5nZTogKCkgPT4gdm9pZDtcbiAgICBhZnRlckNoYW5nZTogKCkgPT4gdm9pZDtcbiAgICBkcmF3QWN0aXZlUmVjdGFuZ2xlOiAoKSA9PiBTVkdHRWxlbWVudCB8IG51bGw7XG4gICAgbW91c2Vkb3duOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgbW91c2Vtb3ZlOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgbW91c2VsZWF2ZTogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICAgIG1vdXNldXA6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgICBnbG9iYWxNb3VzZW1vdmU6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgICBnbG9iYWxNb3VzZXVwOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAga2V5RG93bjogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkO1xuICAgIGdsb2JhbEtleURvd246IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZDtcbiAgICBrZXlVcDogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkO1xuICAgIHNldEZyYWdtZW50OiAoXG4gICAgICAgIGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwsXG4gICAgICAgIGNsaXBib2FyZENvbnRleHQ6IFdyaXRhYmxlQ2xpcGJvYXJkQ29udGV4dCB8IG51bGwsXG4gICAgICAgIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50IHwgbnVsbCxcbiAgICAgICAgdHlwZTogJ2NvcHknIHwgJ2N1dCdcbiAgICApID0+IHZvaWQ7XG4gICAgaW5zZXJ0RnJhZ21lbnQ6IChkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsLCBjbGlwYm9hcmREYXRhOiBDbGlwYm9hcmREYXRhIHwgbnVsbCwgdGFyZ2V0UG9pbnQ6IFBvaW50KSA9PiB2b2lkO1xuICAgIGRlbGV0ZUZyYWdtZW50OiAoZGF0YTogUGxhaXRFbGVtZW50W10pID0+IHZvaWQ7XG4gICAgZ2V0RGVsZXRlZEZyYWdtZW50OiAoZGF0YTogUGxhaXRFbGVtZW50W10pID0+IFBsYWl0RWxlbWVudFtdO1xuICAgIGdldFJlbGF0ZWRGcmFnbWVudDogKGRhdGE6IFBsYWl0RWxlbWVudFtdLCBvcmlnaW5EYXRhPzogUGxhaXRFbGVtZW50W10pID0+IFBsYWl0RWxlbWVudFtdO1xuICAgIGRibENsaWNrOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgZHJhd0VsZW1lbnQ6IChjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiBTVkdHRWxlbWVudFtdIHwgQ29tcG9uZW50VHlwZTxQbGFpdFBsdWdpbkVsZW1lbnRDb21wb25lbnQ+O1xuICAgIHJlZHJhd0VsZW1lbnQ6IChjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0LCBwcmV2aW91c0NvbnRleHQ/OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiBTVkdHRWxlbWVudFtdIHwgdm9pZDtcbiAgICBkZXN0cm95RWxlbWVudDogKGNvbnRleHQ6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQpID0+IHZvaWQ7XG4gICAgaXNSZWN0YW5nbGVIaXQ6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQsIHJhbmdlOiBTZWxlY3Rpb24pID0+IGJvb2xlYW47XG4gICAgLy8gV2hlbiB0aGUgZWxlbWVudCBoYXMgbm8gZmlsbCBjb2xvciwgaXQgaXMgY29uc2lkZXJlZCBhIGhpdCBvbmx5IGlmIGl0IGhpdHMgdGhlIGJvcmRlci5cbiAgICBpc0hpdDogKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgcG9pbnQ6IFBvaW50KSA9PiBib29sZWFuO1xuICAgIGlzSW5zaWRlUG9pbnQ6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQsIHBvaW50OiBQb2ludCkgPT4gYm9vbGVhbjtcbiAgICBpc1JlY3Vyc2lvbjogKGVsZW1lbnQ6IFBsYWl0RWxlbWVudCkgPT4gYm9vbGVhbjtcbiAgICBpc01vdmFibGU6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IGJvb2xlYW47XG4gICAgZ2V0UmVjdGFuZ2xlOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBSZWN0YW5nbGVDbGllbnQgfCBudWxsO1xuICAgIGlzV2l0aGluU2VsZWN0aW9uOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBib29sZWFuO1xuICAgIHBhdGhSZWY6IChwYXRoOiBQYXRoLCBvcHRpb25zPzogUGF0aFJlZk9wdGlvbnMpID0+IFBhdGhSZWY7XG4gICAgcGF0aFJlZnM6ICgpID0+IFNldDxQYXRoUmVmPjtcbiAgICBhcHBseVRoZW1lOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB2b2lkO1xuICAgIGlzQWxpZ246IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IGJvb2xlYW47XG4gICAgaXNJbWFnZUJpbmRpbmdBbGxvd2VkOiAoZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiBib29sZWFuO1xuICAgIGNhbkFkZFRvR3JvdXA6IChlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IGJvb2xlYW47XG5cbiAgICAvLyBwb2ludGVyIGhvb2tcbiAgICBwb2ludGVyRG93bjogKHBvaW50ZXI6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgICBwb2ludGVyTW92ZTogKHBvaW50ZXI6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgICBwb2ludGVyVXA6IChwb2ludGVyOiBQb2ludGVyRXZlbnQpID0+IHZvaWQ7XG4gICAgcG9pbnRlckNhbmNlbDogKHBvaW50ZXI6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgICBwb2ludGVyT3V0OiAocG9pbnRlcjogUG9pbnRlckV2ZW50KSA9PiB2b2lkO1xuICAgIHBvaW50ZXJMZWF2ZTogKHBvaW50ZXI6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgICBnbG9iYWxQb2ludGVyTW92ZTogKHBvaW50ZXI6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgICBnbG9iYWxQb2ludGVyVXA6IChwb2ludGVyOiBQb2ludGVyRXZlbnQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhaXRCb2FyZENoYW5nZUV2ZW50IHtcbiAgICBjaGlsZHJlbjogUGxhaXRFbGVtZW50W107XG4gICAgb3BlcmF0aW9uczogUGxhaXRPcGVyYXRpb25bXTtcbiAgICB2aWV3cG9ydDogVmlld3BvcnQ7XG4gICAgc2VsZWN0aW9uOiBTZWxlY3Rpb24gfCBudWxsO1xuICAgIHRoZW1lOiBQbGFpdFRoZW1lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsYWl0Qm9hcmRPcHRpb25zIHtcbiAgICByZWFkb25seT86IGJvb2xlYW47XG4gICAgaGlkZVNjcm9sbGJhcj86IGJvb2xlYW47XG4gICAgZGlzYWJsZWRTY3JvbGxPbk5vbkZvY3VzPzogYm9vbGVhbjtcbiAgICB0aGVtZUNvbG9ycz86IFRoZW1lQ29sb3JbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFpdEJvYXJkTW92ZSB7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFBsYWl0Qm9hcmQgPSB7XG4gICAgaXNCb2FyZCh2YWx1ZTogYW55KTogdmFsdWUgaXMgUGxhaXRCb2FyZCB7XG4gICAgICAgIGNvbnN0IGNhY2hlZElzQm9hcmQgPSBJU19CT0FSRF9DQUNIRS5nZXQodmFsdWUpO1xuICAgICAgICBpZiAoY2FjaGVkSXNCb2FyZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkSXNCb2FyZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0JvYXJkID0gdHlwZW9mIHZhbHVlLm9uQ2hhbmdlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2YWx1ZS5hcHBseSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgICAgSVNfQk9BUkRfQ0FDSEUuc2V0KHZhbHVlLCBpc0JvYXJkKTtcbiAgICAgICAgcmV0dXJuIGlzQm9hcmQ7XG4gICAgfSxcbiAgICBpc0FsaXZlKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgICAgIGNvbnN0IGlzQWxpdmUgPSBJU19CT0FSRF9DQUNIRS5nZXQoYm9hcmQpO1xuICAgICAgICByZXR1cm4gISFpc0FsaXZlO1xuICAgIH0sXG4gICAgZmluZFBhdGgoYm9hcmQ6IFBsYWl0Qm9hcmQsIG5vZGU6IFBsYWl0Tm9kZSk6IFBhdGgge1xuICAgICAgICBjb25zdCBwYXRoOiBQYXRoID0gW107XG4gICAgICAgIGxldCBjaGlsZDogQW5jZXN0b3IgPSBub2RlO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gTk9ERV9UT19QQVJFTlQuZ2V0KGNoaWxkIGFzIFBsYWl0RWxlbWVudCk7XG4gICAgICAgICAgICBpZiAocGFyZW50ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc0JvYXJkKGNoaWxkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpID0gTk9ERV9UT19JTkRFWC5nZXQoY2hpbGQgYXMgUGxhaXRFbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChpID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhdGgudW5zaGlmdChpKTtcbiAgICAgICAgICAgIGNoaWxkID0gcGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGZpbmQgdGhlIHBhdGggZm9yIFBsYWl0IG5vZGU6ICR7SlNPTi5zdHJpbmdpZnkobm9kZSl9YCk7XG4gICAgfSxcbiAgICBnZXRIb3N0KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgICAgIHJldHVybiBCT0FSRF9UT19IT1NULmdldChib2FyZCkgYXMgU1ZHU1ZHRWxlbWVudDtcbiAgICB9LFxuICAgIGdldEVsZW1lbnRIb3N0KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgICAgIHJldHVybiBCT0FSRF9UT19FTEVNRU5UX0hPU1QuZ2V0KGJvYXJkKT8uaG9zdCBhcyBTVkdTVkdFbGVtZW50O1xuICAgIH0sXG4gICAgZ2V0RWxlbWVudFVwcGVySG9zdChib2FyZDogUGxhaXRCb2FyZCkge1xuICAgICAgICByZXR1cm4gQk9BUkRfVE9fRUxFTUVOVF9IT1NULmdldChib2FyZCk/LnVwcGVySG9zdCBhcyBTVkdTVkdFbGVtZW50O1xuICAgIH0sXG4gICAgZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgcmV0dXJuIEJPQVJEX1RPX0VMRU1FTlRfSE9TVC5nZXQoYm9hcmQpPy5hY3RpdmVIb3N0IGFzIFNWR1NWR0VsZW1lbnQ7XG4gICAgfSxcbiAgICBnZXRSb3VnaFNWRyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgICAgICByZXR1cm4gQk9BUkRfVE9fUk9VR0hfU1ZHLmdldChib2FyZCkgYXMgUm91Z2hTVkc7XG4gICAgfSxcbiAgICBnZXRDb21wb25lbnQoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgcmV0dXJuIEJPQVJEX1RPX0NPTVBPTkVOVC5nZXQoYm9hcmQpIGFzIEJvYXJkQ29tcG9uZW50SW50ZXJmYWNlO1xuICAgIH0sXG4gICAgZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgcmV0dXJuIEJPQVJEX1RPX0VMRU1FTlRfSE9TVC5nZXQoYm9hcmQpPy5jb250YWluZXIgYXMgSFRNTEVsZW1lbnQ7XG4gICAgfSxcbiAgICBnZXRSZWN0YW5nbGUoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgcmV0dXJuIGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGJvYXJkLmNoaWxkcmVuLCB0cnVlKTtcbiAgICB9LFxuICAgIGdldFZpZXdwb3J0Q29udGFpbmVyKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgICAgIHJldHVybiBCT0FSRF9UT19FTEVNRU5UX0hPU1QuZ2V0KGJvYXJkKT8udmlld3BvcnRDb250YWluZXIgYXMgSFRNTEVsZW1lbnQ7XG4gICAgfSxcbiAgICBpc0ZvY3VzKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgICAgIHJldHVybiAhIWJvYXJkLnNlbGVjdGlvbjtcbiAgICB9LFxuICAgIGlzUmVhZG9ubHkoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgcmV0dXJuIGJvYXJkLm9wdGlvbnMucmVhZG9ubHk7XG4gICAgfSxcbiAgICBoYXNCZWVuVGV4dEVkaXRpbmcoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgcmV0dXJuICEhSVNfVEVYVF9FRElUQUJMRS5nZXQoYm9hcmQpO1xuICAgIH0sXG4gICAgZ2V0UG9pbnRlcjxUID0gUGxhaXRQb2ludGVyVHlwZT4oYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgcmV0dXJuIGJvYXJkLnBvaW50ZXIgYXMgVDtcbiAgICB9LFxuICAgIGlzUG9pbnRlcjxUID0gUGxhaXRQb2ludGVyVHlwZT4oYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50ZXI6IFQpIHtcbiAgICAgICAgcmV0dXJuIGJvYXJkLnBvaW50ZXIgPT09IHBvaW50ZXI7XG4gICAgfSxcbiAgICBpc0luUG9pbnRlcjxUID0gUGxhaXRQb2ludGVyVHlwZT4oYm9hcmQ6IFBsYWl0Qm9hcmQsIHBvaW50ZXJzOiBUW10pIHtcbiAgICAgICAgY29uc3QgcG9pbnQgPSBib2FyZC5wb2ludGVyIGFzIFQ7XG4gICAgICAgIHJldHVybiBwb2ludGVycy5pbmNsdWRlcyhwb2ludCk7XG4gICAgfSxcbiAgICBnZXRNb3ZpbmdQb2ludEluQm9hcmQoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgcmV0dXJuIEJPQVJEX1RPX01PVklOR19QT0lOVF9JTl9CT0FSRC5nZXQoYm9hcmQpO1xuICAgIH0sXG4gICAgaXNNb3ZpbmdQb2ludEluQm9hcmQoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgY29uc3QgcG9pbnQgPSBCT0FSRF9UT19NT1ZJTkdfUE9JTlQuZ2V0KGJvYXJkKTtcbiAgICAgICAgY29uc3QgcmVjdCA9IFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBpZiAocG9pbnQgJiYgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRSZWN0YW5nbGUocG9pbnRbMF0sIHBvaW50WzFdLCByZWN0KSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgZ2V0VGhlbWVDb2xvcnM8VCBleHRlbmRzIFRoZW1lQ29sb3IgPSBUaGVtZUNvbG9yPihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgICAgICByZXR1cm4gKGJvYXJkLm9wdGlvbnMudGhlbWVDb2xvcnMgfHwgVGhlbWVDb2xvcnMpIGFzIFRbXTtcbiAgICB9XG59O1xuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import produce from 'immer';
|
|
1
|
+
import { produce } from 'immer';
|
|
2
2
|
export const Path = {
|
|
3
3
|
/**
|
|
4
4
|
* Get a list of ancestor paths for a given path.
|
|
@@ -181,4 +181,4 @@ export const Path = {
|
|
|
181
181
|
});
|
|
182
182
|
}
|
|
183
183
|
};
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2ludGVyZmFjZXMvcGF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE9BQU8sTUFBTSxPQUFPLENBQUM7QUFTNUIsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHO0lBQ2hCOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLElBQVUsRUFBRSxVQUE2QixFQUFFO1FBQ2pELE1BQU0sRUFBRSxPQUFPLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ3BDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXZDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNKLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0Q7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLElBQVUsRUFBRSxVQUE2QixFQUFFO1FBQzlDLE1BQU0sRUFBRSxPQUFPLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxHQUFXLEVBQUUsQ0FBQztRQUV4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNW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ImltcG9ydCBwcm9kdWNlIGZyb20gJ2ltbWVyJztcbmltcG9ydCB7IFBsYWl0T3BlcmF0aW9uIH0gZnJvbSAnLi9vcGVyYXRpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhdGhMZXZlbHNPcHRpb25zIHtcbiAgICByZXZlcnNlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgUGF0aCA9IG51bWJlcltdO1xuXG5leHBvcnQgY29uc3QgUGF0aCA9IHtcbiAgICAvKipcbiAgICAgKiBHZXQgYSBsaXN0IG9mIGFuY2VzdG9yIHBhdGhzIGZvciBhIGdpdmVuIHBhdGguXG4gICAgICpcbiAgICAgKiBUaGUgcGF0aHMgYXJlIHNvcnRlZCBmcm9tIHNoYWxsb3dlc3QgdG8gZGVlcGVzdCBhbmNlc3Rvci4gSG93ZXZlciwgaWYgdGhlXG4gICAgICogYHJldmVyc2U6IHRydWVgIG9wdGlvbiBpcyBwYXNzZWQsIHRoZXkgYXJlIHJldmVyc2VkLlxuICAgICAqL1xuICAgIGFuY2VzdG9ycyhwYXRoOiBQYXRoLCBvcHRpb25zOiBQYXRoTGV2ZWxzT3B0aW9ucyA9IHt9KTogUGF0aFtdIHtcbiAgICAgICAgY29uc3QgeyByZXZlcnNlID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gICAgICAgIGxldCBwYXRocyA9IFBhdGgubGV2ZWxzKHBhdGgsIG9wdGlvbnMpO1xuXG4gICAgICAgIGlmIChyZXZlcnNlKSB7XG4gICAgICAgICAgICBwYXRocyA9IHBhdGhzLnNsaWNlKDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGF0aHMgPSBwYXRocy5zbGljZSgwLCAtMSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGF0aHM7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBHZXQgYSBsaXN0IG9mIHBhdGhzIGF0IGV2ZXJ5IGxldmVsIGRvd24gdG8gYSBwYXRoLiBOb3RlOiB0aGlzIGlzIHRoZSBzYW1lXG4gICAgICogYXMgYFBhdGguYW5jZXN0b3JzYCwgYnV0IGluY2x1ZGluZyB0aGUgcGF0aCBpdHNlbGYuXG4gICAgICpcbiAgICAgKiBUaGUgcGF0aHMgYXJlIHNvcnRlZCBmcm9tIHNoYWxsb3dlc3QgdG8gZGVlcGVzdC4gSG93ZXZlciwgaWYgdGhlIGByZXZlcnNlOlxuICAgICAqIHRydWVgIG9wdGlvbiBpcyBwYXNzZWQsIHRoZXkgYXJlIHJldmVyc2VkLlxuICAgICAqL1xuICAgIGxldmVscyhwYXRoOiBQYXRoLCBvcHRpb25zOiBQYXRoTGV2ZWxzT3B0aW9ucyA9IHt9KTogUGF0aFtdIHtcbiAgICAgICAgY29uc3QgeyByZXZlcnNlID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gICAgICAgIGNvbnN0IGxpc3Q6IFBhdGhbXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxpc3QucHVzaChwYXRoLnNsaWNlKDAsIGkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXZlcnNlKSB7XG4gICAgICAgICAgICBsaXN0LnJldmVyc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH0sXG4gICAgcGFyZW50KHBhdGg6IFBhdGgpOiBQYXRoIHtcbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBnZXQgdGhlIHBhcmVudCBwYXRoIG9mIHRoZSByb290IHBhdGggWyR7cGF0aH1dLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhdGguc2xpY2UoMCwgLTEpO1xuICAgIH0sXG4gICAgbmV4dChwYXRoOiBQYXRoKTogUGF0aCB7XG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZ2V0IHRoZSBuZXh0IHBhdGggb2YgYSByb290IHBhdGggWyR7cGF0aH1dLCBiZWNhdXNlIGl0IGhhcyBubyBuZXh0IGluZGV4LmApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhc3QgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgICAgIHJldHVybiBwYXRoLnNsaWNlKDAsIC0xKS5jb25jYXQobGFzdCArIDEpO1xuICAgIH0sXG4gICAgaGFzUHJldmlvdXMocGF0aDogUGF0aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcGF0aFtwYXRoLmxlbmd0aCAtIDFdID4gMDtcbiAgICB9LFxuICAgIHByZXZpb3VzKHBhdGg6IFBhdGgpOiBQYXRoIHtcbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBnZXQgdGhlIG5leHQgcGF0aCBvZiBhIHJvb3QgcGF0aCBbJHtwYXRofV0sIGJlY2F1c2UgaXQgaGFzIG5vIHByZXZpb3VzIGluZGV4LmApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhc3QgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgICAgIHJldHVybiBwYXRoLnNsaWNlKDAsIC0xKS5jb25jYXQobGFzdCAtIDEpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgYSBwYXRoIGlzIGFuIGFuY2VzdG9yIG9mIGFub3RoZXIuXG4gICAgICovXG5cbiAgICBpc0FuY2VzdG9yKHBhdGg6IFBhdGgsIGFub3RoZXI6IFBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHBhdGgubGVuZ3RoIDwgYW5vdGhlci5sZW5ndGggJiYgUGF0aC5jb21wYXJlKHBhdGgsIGFub3RoZXIpID09PSAwO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQ29tcGFyZSBhIHBhdGggdG8gYW5vdGhlciwgcmV0dXJuaW5nIGFuIGludGVnZXIgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBwYXRoXG4gICAgICogd2FzIGJlZm9yZSwgYXQsIG9yIGFmdGVyIHRoZSBvdGhlci5cbiAgICAgKlxuICAgICAqIE5vdGU6IFR3byBwYXRocyBvZiB1bmVxdWFsIGxlbmd0aCBjYW4gc3RpbGwgcmVjZWl2ZSBhIGAwYCByZXN1bHQgaWYgb25lIGlzXG4gICAgICogZGlyZWN0bHkgYWJvdmUgb3IgYmVsb3cgdGhlIG90aGVyLiBJZiB5b3Ugd2FudCBleGFjdCBtYXRjaGluZywgdXNlXG4gICAgICogW1tQYXRoLmVxdWFsc11dIGluc3RlYWQuXG4gICAgICovXG4gICAgY29tcGFyZShwYXRoOiBQYXRoLCBhbm90aGVyOiBQYXRoKTogLTEgfCAwIHwgMSB7XG4gICAgICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKHBhdGgubGVuZ3RoLCBhbm90aGVyLmxlbmd0aCk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaW47IGkrKykge1xuICAgICAgICAgICAgaWYgKHBhdGhbaV0gPCBhbm90aGVyW2ldKSByZXR1cm4gLTE7XG4gICAgICAgICAgICBpZiAocGF0aFtpXSA+IGFub3RoZXJbaV0pIHJldHVybiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGEgcGF0aCBpcyBleGFjdGx5IGVxdWFsIHRvIGFub3RoZXIuXG4gICAgICovXG5cbiAgICBlcXVhbHMocGF0aDogUGF0aCwgYW5vdGhlcjogUGF0aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcGF0aC5sZW5ndGggPT09IGFub3RoZXIubGVuZ3RoICYmIHBhdGguZXZlcnkoKG4sIGkpID0+IG4gPT09IGFub3RoZXJbaV0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgYSBwYXRoIGVuZHMgYmVmb3JlIG9uZSBvZiB0aGUgaW5kZXhlcyBpbiBhbm90aGVyLlxuICAgICAqL1xuXG4gICAgZW5kc0JlZm9yZShwYXRoOiBQYXRoLCBhbm90aGVyOiBQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGkgPSBwYXRoLmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IGFzID0gcGF0aC5zbGljZSgwLCBpKTtcbiAgICAgICAgY29uc3QgYnMgPSBhbm90aGVyLnNsaWNlKDAsIGkpO1xuICAgICAgICBjb25zdCBhdiA9IHBhdGhbaV07XG4gICAgICAgIGNvbnN0IGJ2ID0gYW5vdGhlcltpXTtcbiAgICAgICAgcmV0dXJuIFBhdGguZXF1YWxzKGFzLCBicykgJiYgYXYgPCBidjtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGEgcGF0aCBpcyBhIHNpYmxpbmcgb2YgYW5vdGhlci5cbiAgICAgKi9cbiAgICBpc1NpYmxpbmcocGF0aDogUGF0aCwgYW5vdGhlcjogUGF0aCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAocGF0aC5sZW5ndGggIT09IGFub3RoZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcyA9IHBhdGguc2xpY2UoMCwgLTEpO1xuICAgICAgICBjb25zdCBicyA9IGFub3RoZXIuc2xpY2UoMCwgLTEpO1xuICAgICAgICBjb25zdCBhbCA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgYmwgPSBhbm90aGVyW2Fub3RoZXIubGVuZ3RoIC0gMV07XG4gICAgICAgIHJldHVybiBhbCAhPT0gYmwgJiYgUGF0aC5lcXVhbHMoYXMsIGJzKTtcbiAgICB9LFxuICAgIHRyYW5zZm9ybShwYXRoOiBQYXRoIHwgbnVsbCwgb3BlcmF0aW9uOiBQbGFpdE9wZXJhdGlvbik6IFBhdGggfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHByb2R1Y2UocGF0aCwgcCA9PiB7XG4gICAgICAgICAgICAvLyBQRVJGOiBFeGl0IGVhcmx5IGlmIHRoZSBvcGVyYXRpb24gaXMgZ3VhcmFudGVlZCBub3QgdG8gaGF2ZSBhbiBlZmZlY3QuXG4gICAgICAgICAgICBpZiAoIXBhdGggfHwgcGF0aD8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvbi50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaW5zZXJ0X25vZGUnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcGF0aDogb3AgfSA9IG9wZXJhdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoUGF0aC5lcXVhbHMob3AsIHApIHx8IFBhdGguZW5kc0JlZm9yZShvcCwgcCkgfHwgUGF0aC5pc0FuY2VzdG9yKG9wLCBwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcFtvcC5sZW5ndGggLSAxXSArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAncmVtb3ZlX25vZGUnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcGF0aDogb3AgfSA9IG9wZXJhdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoUGF0aC5lcXVhbHMob3AsIHApIHx8IFBhdGguaXNBbmNlc3RvcihvcCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFBhdGguZW5kc0JlZm9yZShvcCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBbb3AubGVuZ3RoIC0gMV0gLT0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhc2UgJ21vdmVfbm9kZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwYXRoOiBvcCwgbmV3UGF0aDogb25wIH0gPSBvcGVyYXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIG9sZCBhbmQgbmV3IHBhdGggYXJlIHRoZSBzYW1lLCBpdCdzIGEgbm8tb3AuXG4gICAgICAgICAgICAgICAgICAgIGlmIChQYXRoLmVxdWFscyhvcCwgb25wKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFBhdGguaXNBbmNlc3RvcihvcCwgcCkgfHwgUGF0aC5lcXVhbHMob3AsIHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb3B5ID0gb25wLnNsaWNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvcC5sZW5ndGggPD0gb25wLmxlbmd0aCBpcyBkaWZmZXJlbnQgZm9yIHNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByZXNvbHZlIGRyYWcgZnJvbSBbMCwgMF0gdG8gWzAsIDNdIGlzc3VlXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoUGF0aC5lbmRzQmVmb3JlKG9wLCBvbnApICYmIG9wLmxlbmd0aCA8PSBvbnAubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weVtvcC5sZW5ndGggLSAxXSAtPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29weS5jb25jYXQocC5zbGljZShvcC5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChQYXRoLmlzU2libGluZyhvcCwgb25wKSAmJiAoUGF0aC5pc0FuY2VzdG9yKG9ucCwgcCkgfHwgUGF0aC5lcXVhbHMob25wLCBwKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQYXRoLmVuZHNCZWZvcmUob3AsIHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcFtvcC5sZW5ndGggLSAxXSAtPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwW29wLmxlbmd0aCAtIDFdICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoUGF0aC5lbmRzQmVmb3JlKG9ucCwgcCkgfHwgUGF0aC5lcXVhbHMob25wLCBwKSB8fCBQYXRoLmlzQW5jZXN0b3Iob25wLCBwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBhdGguZW5kc0JlZm9yZShvcCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwW29wLmxlbmd0aCAtIDFdIC09IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHBbb25wLmxlbmd0aCAtIDFdICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoUGF0aC5lbmRzQmVmb3JlKG9wLCBwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBhdGguZXF1YWxzKG9ucCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwW29ucC5sZW5ndGggLSAxXSArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBwW29wLmxlbmd0aCAtIDFdIC09IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfSk7XG4gICAgfVxufTtcbiJdfQ==
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2ludGVyZmFjZXMvcGF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBU2hDLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRztJQUNoQjs7Ozs7T0FLRztJQUNILFNBQVMsQ0FBQyxJQUFVLEVBQUUsVUFBNkIsRUFBRTtRQUNqRCxNQUFNLEVBQUUsT0FBTyxHQUFHLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUNwQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV2QyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsQ0FBQzthQUFNLENBQUM7WUFDSixLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxJQUFVLEVBQUUsVUFBNkIsRUFBRTtRQUM5QyxNQUFNLEVBQUUsT0FBTyxHQUFHLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBVyxFQUFFLENBQUM7UUFFeEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUVELElBQUksT0FBTyxFQUFF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Q29udGVudCI6WyJpbXBvcnQgeyBwcm9kdWNlIH0gZnJvbSAnaW1tZXInO1xuaW1wb3J0IHsgUGxhaXRPcGVyYXRpb24gfSBmcm9tICcuL29wZXJhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0aExldmVsc09wdGlvbnMge1xuICAgIHJldmVyc2U/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBQYXRoID0gbnVtYmVyW107XG5cbmV4cG9ydCBjb25zdCBQYXRoID0ge1xuICAgIC8qKlxuICAgICAqIEdldCBhIGxpc3Qgb2YgYW5jZXN0b3IgcGF0aHMgZm9yIGEgZ2l2ZW4gcGF0aC5cbiAgICAgKlxuICAgICAqIFRoZSBwYXRocyBhcmUgc29ydGVkIGZyb20gc2hhbGxvd2VzdCB0byBkZWVwZXN0IGFuY2VzdG9yLiBIb3dldmVyLCBpZiB0aGVcbiAgICAgKiBgcmV2ZXJzZTogdHJ1ZWAgb3B0aW9uIGlzIHBhc3NlZCwgdGhleSBhcmUgcmV2ZXJzZWQuXG4gICAgICovXG4gICAgYW5jZXN0b3JzKHBhdGg6IFBhdGgsIG9wdGlvbnM6IFBhdGhMZXZlbHNPcHRpb25zID0ge30pOiBQYXRoW10ge1xuICAgICAgICBjb25zdCB7IHJldmVyc2UgPSBmYWxzZSB9ID0gb3B0aW9ucztcbiAgICAgICAgbGV0IHBhdGhzID0gUGF0aC5sZXZlbHMocGF0aCwgb3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKHJldmVyc2UpIHtcbiAgICAgICAgICAgIHBhdGhzID0gcGF0aHMuc2xpY2UoMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXRocyA9IHBhdGhzLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXRocztcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIEdldCBhIGxpc3Qgb2YgcGF0aHMgYXQgZXZlcnkgbGV2ZWwgZG93biB0byBhIHBhdGguIE5vdGU6IHRoaXMgaXMgdGhlIHNhbWVcbiAgICAgKiBhcyBgUGF0aC5hbmNlc3RvcnNgLCBidXQgaW5jbHVkaW5nIHRoZSBwYXRoIGl0c2VsZi5cbiAgICAgKlxuICAgICAqIFRoZSBwYXRocyBhcmUgc29ydGVkIGZyb20gc2hhbGxvd2VzdCB0byBkZWVwZXN0LiBIb3dldmVyLCBpZiB0aGUgYHJldmVyc2U6XG4gICAgICogdHJ1ZWAgb3B0aW9uIGlzIHBhc3NlZCwgdGhleSBhcmUgcmV2ZXJzZWQuXG4gICAgICovXG4gICAgbGV2ZWxzKHBhdGg6IFBhdGgsIG9wdGlvbnM6IFBhdGhMZXZlbHNPcHRpb25zID0ge30pOiBQYXRoW10ge1xuICAgICAgICBjb25zdCB7IHJldmVyc2UgPSBmYWxzZSB9ID0gb3B0aW9ucztcbiAgICAgICAgY29uc3QgbGlzdDogUGF0aFtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gcGF0aC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGlzdC5wdXNoKHBhdGguc2xpY2UoMCwgaSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJldmVyc2UpIHtcbiAgICAgICAgICAgIGxpc3QucmV2ZXJzZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfSxcbiAgICBwYXJlbnQocGF0aDogUGF0aCk6IFBhdGgge1xuICAgICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGdldCB0aGUgcGFyZW50IHBhdGggb2YgdGhlIHJvb3QgcGF0aCBbJHtwYXRofV0uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGF0aC5zbGljZSgwLCAtMSk7XG4gICAgfSxcbiAgICBuZXh0KHBhdGg6IFBhdGgpOiBQYXRoIHtcbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBnZXQgdGhlIG5leHQgcGF0aCBvZiBhIHJvb3QgcGF0aCBbJHtwYXRofV0sIGJlY2F1c2UgaXQgaGFzIG5vIG5leHQgaW5kZXguYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGFzdCA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcbiAgICAgICAgcmV0dXJuIHBhdGguc2xpY2UoMCwgLTEpLmNvbmNhdChsYXN0ICsgMSk7XG4gICAgfSxcbiAgICBoYXNQcmV2aW91cyhwYXRoOiBQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBwYXRoW3BhdGgubGVuZ3RoIC0gMV0gPiAwO1xuICAgIH0sXG4gICAgcHJldmlvdXMocGF0aDogUGF0aCk6IFBhdGgge1xuICAgICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGdldCB0aGUgbmV4dCBwYXRoIG9mIGEgcm9vdCBwYXRoIFske3BhdGh9XSwgYmVjYXVzZSBpdCBoYXMgbm8gcHJldmlvdXMgaW5kZXguYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGFzdCA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcbiAgICAgICAgcmV0dXJuIHBhdGguc2xpY2UoMCwgLTEpLmNvbmNhdChsYXN0IC0gMSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBhIHBhdGggaXMgYW4gYW5jZXN0b3Igb2YgYW5vdGhlci5cbiAgICAgKi9cblxuICAgIGlzQW5jZXN0b3IocGF0aDogUGF0aCwgYW5vdGhlcjogUGF0aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcGF0aC5sZW5ndGggPCBhbm90aGVyLmxlbmd0aCAmJiBQYXRoLmNvbXBhcmUocGF0aCwgYW5vdGhlcikgPT09IDA7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBDb21wYXJlIGEgcGF0aCB0byBhbm90aGVyLCByZXR1cm5pbmcgYW4gaW50ZWdlciBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHBhdGhcbiAgICAgKiB3YXMgYmVmb3JlLCBhdCwgb3IgYWZ0ZXIgdGhlIG90aGVyLlxuICAgICAqXG4gICAgICogTm90ZTogVHdvIHBhdGhzIG9mIHVuZXF1YWwgbGVuZ3RoIGNhbiBzdGlsbCByZWNlaXZlIGEgYDBgIHJlc3VsdCBpZiBvbmUgaXNcbiAgICAgKiBkaXJlY3RseSBhYm92ZSBvciBiZWxvdyB0aGUgb3RoZXIuIElmIHlvdSB3YW50IGV4YWN0IG1hdGNoaW5nLCB1c2VcbiAgICAgKiBbW1BhdGguZXF1YWxzXV0gaW5zdGVhZC5cbiAgICAgKi9cbiAgICBjb21wYXJlKHBhdGg6IFBhdGgsIGFub3RoZXI6IFBhdGgpOiAtMSB8IDAgfCAxIHtcbiAgICAgICAgY29uc3QgbWluID0gTWF0aC5taW4ocGF0aC5sZW5ndGgsIGFub3RoZXIubGVuZ3RoKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pbjsgaSsrKSB7XG4gICAgICAgICAgICBpZiAocGF0aFtpXSA8IGFub3RoZXJbaV0pIHJldHVybiAtMTtcbiAgICAgICAgICAgIGlmIChwYXRoW2ldID4gYW5vdGhlcltpXSkgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gMDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgYSBwYXRoIGlzIGV4YWN0bHkgZXF1YWwgdG8gYW5vdGhlci5cbiAgICAgKi9cblxuICAgIGVxdWFscyhwYXRoOiBQYXRoLCBhbm90aGVyOiBQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBwYXRoLmxlbmd0aCA9PT0gYW5vdGhlci5sZW5ndGggJiYgcGF0aC5ldmVyeSgobiwgaSkgPT4gbiA9PT0gYW5vdGhlcltpXSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBhIHBhdGggZW5kcyBiZWZvcmUgb25lIG9mIHRoZSBpbmRleGVzIGluIGFub3RoZXIuXG4gICAgICovXG5cbiAgICBlbmRzQmVmb3JlKHBhdGg6IFBhdGgsIGFub3RoZXI6IFBhdGgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaSA9IHBhdGgubGVuZ3RoIC0gMTtcbiAgICAgICAgY29uc3QgYXMgPSBwYXRoLnNsaWNlKDAsIGkpO1xuICAgICAgICBjb25zdCBicyA9IGFub3RoZXIuc2xpY2UoMCwgaSk7XG4gICAgICAgIGNvbnN0IGF2ID0gcGF0aFtpXTtcbiAgICAgICAgY29uc3QgYnYgPSBhbm90aGVyW2ldO1xuICAgICAgICByZXR1cm4gUGF0aC5lcXVhbHMoYXMsIGJzKSAmJiBhdiA8IGJ2O1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgYSBwYXRoIGlzIGEgc2libGluZyBvZiBhbm90aGVyLlxuICAgICAqL1xuICAgIGlzU2libGluZyhwYXRoOiBQYXRoLCBhbm90aGVyOiBQYXRoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCAhPT0gYW5vdGhlci5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFzID0gcGF0aC5zbGljZSgwLCAtMSk7XG4gICAgICAgIGNvbnN0IGJzID0gYW5vdGhlci5zbGljZSgwLCAtMSk7XG4gICAgICAgIGNvbnN0IGFsID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgICAgICBjb25zdCBibCA9IGFub3RoZXJbYW5vdGhlci5sZW5ndGggLSAxXTtcbiAgICAgICAgcmV0dXJuIGFsICE9PSBibCAmJiBQYXRoLmVxdWFscyhhcywgYnMpO1xuICAgIH0sXG4gICAgdHJhbnNmb3JtKHBhdGg6IFBhdGggfCBudWxsLCBvcGVyYXRpb246IFBsYWl0T3BlcmF0aW9uKTogUGF0aCB8IG51bGwge1xuICAgICAgICByZXR1cm4gcHJvZHVjZShwYXRoLCBwID0+IHtcbiAgICAgICAgICAgIC8vIFBFUkY6IEV4aXQgZWFybHkgaWYgdGhlIG9wZXJhdGlvbiBpcyBndWFyYW50ZWVkIG5vdCB0byBoYXZlIGFuIGVmZmVjdC5cbiAgICAgICAgICAgIGlmICghcGF0aCB8fCBwYXRoPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN3aXRjaCAob3BlcmF0aW9uLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpbnNlcnRfbm9kZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwYXRoOiBvcCB9ID0gb3BlcmF0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChQYXRoLmVxdWFscyhvcCwgcCkgfHwgUGF0aC5lbmRzQmVmb3JlKG9wLCBwKSB8fCBQYXRoLmlzQW5jZXN0b3Iob3AsIHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwW29wLmxlbmd0aCAtIDFdICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdyZW1vdmVfbm9kZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwYXRoOiBvcCB9ID0gb3BlcmF0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChQYXRoLmVxdWFscyhvcCwgcCkgfHwgUGF0aC5pc0FuY2VzdG9yKG9wLCBwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoUGF0aC5lbmRzQmVmb3JlKG9wLCBwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcFtvcC5sZW5ndGggLSAxXSAtPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnbW92ZV9ub2RlJzoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHBhdGg6IG9wLCBuZXdQYXRoOiBvbnAgfSA9IG9wZXJhdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgb2xkIGFuZCBuZXcgcGF0aCBhcmUgdGhlIHNhbWUsIGl0J3MgYSBuby1vcC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFBhdGguZXF1YWxzKG9wLCBvbnApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoUGF0aC5pc0FuY2VzdG9yKG9wLCBwKSB8fCBQYXRoLmVxdWFscyhvcCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvcHkgPSBvbnAuc2xpY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wLmxlbmd0aCA8PSBvbnAubGVuZ3RoIGlzIGRpZmZlcmVudCBmb3Igc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc29sdmUgZHJhZyBmcm9tIFswLCAwXSB0byBbMCwgM10gaXNzdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQYXRoLmVuZHNCZWZvcmUob3AsIG9ucCkgJiYgb3AubGVuZ3RoIDw9IG9ucC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5W29wLmxlbmd0aCAtIDFdIC09IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb3B5LmNvbmNhdChwLnNsaWNlKG9wLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFBhdGguaXNTaWJsaW5nKG9wLCBvbnApICYmIChQYXRoLmlzQW5jZXN0b3Iob25wLCBwKSB8fCBQYXRoLmVxdWFscyhvbnAsIHApKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBhdGguZW5kc0JlZm9yZShvcCwgcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwW29wLmxlbmd0aCAtIDFdIC09IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBbb3AubGVuZ3RoIC0gMV0gKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChQYXRoLmVuZHNCZWZvcmUob25wLCBwKSB8fCBQYXRoLmVxdWFscyhvbnAsIHApIHx8IFBhdGguaXNBbmNlc3RvcihvbnAsIHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoUGF0aC5lbmRzQmVmb3JlKG9wLCBwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBbb3AubGVuZ3RoIC0gMV0gLT0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcFtvbnAubGVuZ3RoIC0gMV0gKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChQYXRoLmVuZHNCZWZvcmUob3AsIHApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoUGF0aC5lcXVhbHMob25wLCBwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBbb25wLmxlbmd0aCAtIDFdICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHBbb3AubGVuZ3RoIC0gMV0gLT0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuIl19
|
|
@@ -99,6 +99,9 @@ export const RectangleClient = {
|
|
|
99
99
|
getCenterPoint: (rectangle) => {
|
|
100
100
|
return [rectangle.x + rectangle.width / 2, rectangle.y + rectangle.height / 2];
|
|
101
101
|
},
|
|
102
|
+
getCenterPointByPoints: (points) => {
|
|
103
|
+
return RectangleClient.getCenterPoint(RectangleClient.getRectangleByPoints(points));
|
|
104
|
+
},
|
|
102
105
|
getEdgeCenterPoints: (rectangle) => {
|
|
103
106
|
return [
|
|
104
107
|
[rectangle.x + rectangle.width / 2, rectangle.y],
|
|
@@ -151,4 +154,4 @@ export const RectangleClient = {
|
|
|
151
154
|
};
|
|
152
155
|
}
|
|
153
156
|
};
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdGFuZ2xlLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2ludGVyZmFjZXMvcmVjdGFuZ2xlLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzNCLEtBQUssRUFBRSxDQUFDLE1BQXVCLEVBQUUsTUFBdUIsRUFBRSxFQUFFO1FBQ3hELE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUNELE1BQU0sRUFBRSxDQUFDLE1BQXVCLEVBQUUsTUFBdUIsRUFBRSxFQUFFO1FBQ3pELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN2RCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNuSCx5REFBeUQ7UUFDekQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLEtBQUssQ0FB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Q04sQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByb3RhdGUgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4vcG9pbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlY3RhbmdsZUNsaWVudCB7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFt4LCB5XSB4LHkgYmV0d2VlbiAwIGFuZCAxXG4gKiByZXByZXNlbnRzIGEgcG9pbnQgaW4gdGhlIHJlY3RhbmdsZVxuICovXG5leHBvcnQgdHlwZSBQb2ludE9mUmVjdGFuZ2xlID0gW251bWJlciwgbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IFJlY3RhbmdsZUNsaWVudCA9IHtcbiAgICBpc0hpdDogKG9yaWdpbjogUmVjdGFuZ2xlQ2xpZW50LCB0YXJnZXQ6IFJlY3RhbmdsZUNsaWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0WChvcmlnaW4sIHRhcmdldCkgJiYgUmVjdGFuZ2xlQ2xpZW50LmlzSGl0WShvcmlnaW4sIHRhcmdldCk7XG4gICAgfSxcbiAgICBpc0hpdFg6IChvcmlnaW46IFJlY3RhbmdsZUNsaWVudCwgdGFyZ2V0OiBSZWN0YW5nbGVDbGllbnQpID0+IHtcbiAgICAgICAgY29uc3QgbWluWCA9IG9yaWdpbi54IDwgdGFyZ2V0LnggPyBvcmlnaW4ueCA6IHRhcmdldC54O1xuICAgICAgICBjb25zdCBtYXhYID0gb3JpZ2luLnggKyBvcmlnaW4ud2lkdGggPiB0YXJnZXQueCArIHRhcmdldC53aWR0aCA/IG9yaWdpbi54ICsgb3JpZ2luLndpZHRoIDogdGFyZ2V0LnggKyB0YXJnZXQud2lkdGg7XG4gICAgICAgIC8vIGZsb2F0IGNhbGN1bGF0ZSBlcnJvciggZWc6IDEuNDIxMDg1NDcxNTIwMjAwNGUtMTQgPiAwKVxuICAgICAgICBpZiAoTWF0aC5mbG9vcihtYXhYIC0gbWluWCAtIG9yaWdpbi53aWR0aCAtIHRhcmdldC53aWR0aCkgPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGlzSGl0WTogKG9yaWdpbjogUmVjdGFuZ2xlQ2xpZW50LCB0YXJnZXQ6IFJlY3RhbmdsZUNsaWVudCkgPT4ge1xuICAgICAgICBjb25zdCBtaW5ZID0gb3JpZ2luLnkgPCB0YXJnZXQueSA/IG9yaWdpbi55IDogdGFyZ2V0Lnk7XG4gICAgICAgIGNvbnN0IG1heFkgPSBvcmlnaW4ueSArIG9yaWdpbi5oZWlnaHQgPiB0YXJnZXQueSArIHRhcmdldC5oZWlnaHQgPyBvcmlnaW4ueSArIG9yaWdpbi5oZWlnaHQgOiB0YXJnZXQueSArIHRhcmdldC5oZWlnaHQ7XG4gICAgICAgIC8vIGZsb2F0IGNhbGN1bGF0ZSBlcnJvciggZWc6IDEuNDIxMDg1NDcxNTIwMjAwNGUtMTQgPiAwKVxuICAgICAgICBpZiAoTWF0aC5mbG9vcihtYXhZIC0gbWluWSAtIG9yaWdpbi5oZWlnaHQgLSB0YXJnZXQuaGVpZ2h0KSA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZ2V0UG9pbnRzKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55XSxcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0XVxuICAgICAgICBdIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgIH0sXG4gICAgZ2V0UmVjdGFuZ2xlQnlDZW50ZXJQb2ludChwb2ludDogUG9pbnQsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludChbcG9pbnRbMF0gLSB3aWR0aCAvIDIsIHBvaW50WzFdIC0gaGVpZ2h0IC8gMl0sIHdpZHRoLCBoZWlnaHQpO1xuICAgIH0sXG4gICAgZ2V0UmVjdGFuZ2xlQnlQb2ludChwb2ludDogUG9pbnQsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogUmVjdGFuZ2xlQ2xpZW50IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHBvaW50WzBdLFxuICAgICAgICAgICAgeTogcG9pbnRbMV0sXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgZ2V0UmVjdGFuZ2xlQnlQb2ludHMocG9pbnRzOiBQb2ludFtdKTogUmVjdGFuZ2xlQ2xpZW50IHtcbiAgICAgICAgY29uc3QgeEFycmF5ID0gcG9pbnRzLm1hcChlbGUgPT4gZWxlWzBdKTtcbiAgICAgICAgY29uc3QgeUFycmF5ID0gcG9pbnRzLm1hcChlbGUgPT4gZWxlWzFdKTtcbiAgICAgICAgY29uc3QgeE1pbiA9IE1hdGgubWluKC4uLnhBcnJheSk7XG4gICAgICAgIGNvbnN0IHhNYXggPSBNYXRoLm1heCguLi54QXJyYXkpO1xuICAgICAgICBjb25zdCB5TWluID0gTWF0aC5taW4oLi4ueUFycmF5KTtcbiAgICAgICAgY29uc3QgeU1heCA9IE1hdGgubWF4KC4uLnlBcnJheSk7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB7IHg6IHhNaW4sIHk6IHlNaW4sIHdpZHRoOiB4TWF4IC0geE1pbiwgaGVpZ2h0OiB5TWF4IC0geU1pbiB9O1xuICAgICAgICByZXR1cm4gcmVjdDtcbiAgICB9LFxuICAgIGdldENvcm5lclBvaW50c0J5UG9pbnRzKHBvaW50czogUG9pbnRbXSkge1xuICAgICAgICBjb25zdCB4QXJyYXkgPSBwb2ludHMubWFwKGVsZSA9PiBlbGVbMF0pO1xuICAgICAgICBjb25zdCB5QXJyYXkgPSBwb2ludHMubWFwKGVsZSA9PiBlbGVbMV0pO1xuICAgICAgICBjb25zdCB4TWluID0gTWF0aC5taW4oLi4ueEFycmF5KTtcbiAgICAgICAgY29uc3QgeE1heCA9IE1hdGgubWF4KC4uLnhBcnJheSk7XG4gICAgICAgIGNvbnN0IHlNaW4gPSBNYXRoLm1pbiguLi55QXJyYXkpO1xuICAgICAgICBjb25zdCB5TWF4ID0gTWF0aC5tYXgoLi4ueUFycmF5KTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFt4TWluLCB5TWluXSxcbiAgICAgICAgICAgIFt4TWF4LCB5TWluXSxcbiAgICAgICAgICAgIFt4TWF4LCB5TWF4XSxcbiAgICAgICAgICAgIFt4TWluLCB5TWF4XVxuICAgICAgICBdIGFzIFtQb2ludCwgUG9pbnQsIFBvaW50LCBQb2ludF07XG4gICAgfSxcbiAgICBnZXRPdXRsaW5lUmVjdGFuZ2xlOiAocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9mZnNldDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiByZWN0YW5nbGUueCArIG9mZnNldCxcbiAgICAgICAgICAgIHk6IHJlY3RhbmdsZS55ICsgb2Zmc2V0LFxuICAgICAgICAgICAgd2lkdGg6IHJlY3RhbmdsZS53aWR0aCAtIG9mZnNldCAqIDIsXG4gICAgICAgICAgICBoZWlnaHQ6IHJlY3RhbmdsZS5oZWlnaHQgLSBvZmZzZXQgKiAyXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBpbmZsYXRlOiAocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIGRlbHRhOiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgaGFsZiA9IGRlbHRhIC8gMjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHJlY3RhbmdsZS54IC0gaGFsZixcbiAgICAgICAgICAgIHk6IHJlY3RhbmdsZS55IC0gaGFsZixcbiAgICAgICAgICAgIHdpZHRoOiByZWN0YW5nbGUud2lkdGggKyBoYWxmICogMixcbiAgICAgICAgICAgIGhlaWdodDogcmVjdGFuZ2xlLmhlaWdodCArIGhhbGYgKiAyXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBpc0VxdWFsOiAocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG90aGVyUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHJlY3RhbmdsZS54ID09PSBvdGhlclJlY3RhbmdsZS54ICYmXG4gICAgICAgICAgICByZWN0YW5nbGUueSA9PT0gb3RoZXJSZWN0YW5nbGUueSAmJlxuICAgICAgICAgICAgcmVjdGFuZ2xlLndpZHRoID09PSBvdGhlclJlY3RhbmdsZS53aWR0aCAmJlxuICAgICAgICAgICAgcmVjdGFuZ2xlLmhlaWdodCA9PT0gb3RoZXJSZWN0YW5nbGUuaGVpZ2h0XG4gICAgICAgICk7XG4gICAgfSxcbiAgICBnZXRDb3JuZXJQb2ludHM6IChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgW3JlY3RhbmdsZS54LCByZWN0YW5nbGUueV0sXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS55XSxcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0XSxcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0XVxuICAgICAgICBdIGFzIFtQb2ludCwgUG9pbnQsIFBvaW50LCBQb2ludF07XG4gICAgfSxcbiAgICBnZXRDZW50ZXJQb2ludDogKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXSBhcyBQb2ludDtcbiAgICB9LFxuXG4gICAgZ2V0RWRnZUNlbnRlclBvaW50czogKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyLCByZWN0YW5nbGUueV0sXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDJdLFxuICAgICAgICAgICAgW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMiwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0XSxcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl1cbiAgICAgICAgXSBhcyBbUG9pbnQsIFBvaW50LCBQb2ludCwgUG9pbnRdO1xuICAgIH0sXG4gICAgZ2V0Q29ubmVjdGlvblBvaW50OiAocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludE9mUmVjdGFuZ2xlKSA9PiB7XG4gICAgICAgIHJldHVybiBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiBwb2ludFswXSwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0ICogcG9pbnRbMV1dIGFzIFBvaW50O1xuICAgIH0sXG4gICAgZXhwYW5kKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBsZWZ0OiBudW1iZXIsIHRvcDogbnVtYmVyID0gbGVmdCwgcmlnaHQ6IG51bWJlciA9IGxlZnQsIGJvdHRvbTogbnVtYmVyID0gdG9wKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiByZWN0YW5nbGUueCAtIGxlZnQsXG4gICAgICAgICAgICB5OiByZWN0YW5nbGUueSAtIHRvcCxcbiAgICAgICAgICAgIHdpZHRoOiByZWN0YW5nbGUud2lkdGggKyBsZWZ0ICsgcmlnaHQsXG4gICAgICAgICAgICBoZWlnaHQ6IHJlY3RhbmdsZS5oZWlnaHQgKyB0b3AgKyBib3R0b21cbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGdldEdhcENlbnRlcihyZWN0YW5nbGUxOiBSZWN0YW5nbGVDbGllbnQsIHJlY3RhbmdsZTI6IFJlY3RhbmdsZUNsaWVudCwgaXNIb3Jpem9udGFsOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGF4aXMgPSBpc0hvcml6b250YWwgPyAneCcgOiAneSc7XG4gICAgICAgIGNvbnN0IHNpZGUgPSBpc0hvcml6b250YWwgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIGNvbnN0IGFsaWduID0gW3JlY3RhbmdsZTFbYXhpc10sIHJlY3RhbmdsZTFbYXhpc10gKyByZWN0YW5nbGUxW3NpZGVdLCByZWN0YW5nbGUyW2F4aXNdLCByZWN0YW5nbGUyW2F4aXNdICsgcmVjdGFuZ2xlMltzaWRlXV07XG4gICAgICAgIGNvbnN0IHNvcnRBcnIgPSBhbGlnbi5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICAgIHJldHVybiAoc29ydEFyclsxXSArIHNvcnRBcnJbMl0pIC8gMjtcbiAgICB9LFxuICAgIGlzUG9pbnRJblJlY3RhbmdsZShyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHggPSBwb2ludFswXSxcbiAgICAgICAgICAgIHkgPSBwb2ludFsxXTtcbiAgICAgICAgcmV0dXJuIHggPiByZWN0YW5nbGUueCAmJiB4IDwgcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggJiYgeSA+IHJlY3RhbmdsZS55ICYmIHkgPCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQ7XG4gICAgfSxcbiAgICBnZXRCb3VuZGluZ1JlY3RhbmdsZShyZWN0YW5nbGVzOiBSZWN0YW5nbGVDbGllbnRbXSk6IFJlY3RhbmdsZUNsaWVudCB7XG4gICAgICAgIGlmIChyZWN0YW5nbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZWN0YW5nbGVzIGNhbiBub3QgYmUgZW1wdHkgYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbWluWCA9IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICAgIGxldCBtaW5ZID0gTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgICAgbGV0IG1heFggPSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG4gICAgICAgIGxldCBtYXhZID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuICAgICAgICByZWN0YW5nbGVzLmZvckVhY2gocmVjdCA9PiB7XG4gICAgICAgICAgICBtaW5YID0gTWF0aC5taW4obWluWCwgcmVjdC54KTtcbiAgICAgICAgICAgIG1pblkgPSBNYXRoLm1pbihtaW5ZLCByZWN0LnkpO1xuICAgICAgICAgICAgbWF4WCA9IE1hdGgubWF4KG1heFgsIHJlY3QueCArIHJlY3Qud2lkdGgpO1xuICAgICAgICAgICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHJlY3QueSArIHJlY3QuaGVpZ2h0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBtaW5YLFxuICAgICAgICAgICAgeTogbWluWSxcbiAgICAgICAgICAgIHdpZHRoOiBtYXhYIC0gbWluWCxcbiAgICAgICAgICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgICAgICAgfTtcbiAgICB9XG59O1xuIl19
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdGFuZ2xlLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2ludGVyZmFjZXMvcmVjdGFuZ2xlLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzNCLEtBQUssRUFBRSxDQUFDLE1BQXVCLEVBQUUsTUFBdUIsRUFBRSxFQUFFO1FBQ3hELE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUNELE1BQU0sRUFBRSxDQUFDLE1BQXVCLEVBQUUsTUFBdUIsRUFBRSxFQUFFO1FBQ3pELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN2RCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNuSCx5REFBeUQ7UUFDekQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLEtBQUssQ0FB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SCxPQUFPO1lBQ0gsQ0FBQyxFQUFFLElBQUk7WUFDUCxDQUFDLEVBQUUsSUFBSTtZQUNQLEtBQUssRUFBRSxJQUFJLEdBQUcsSUFBSTtZQUNsQixNQUFNLEVBQUUsSUFBSSxHQUFHLElBQUk7U0FDdEIsQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcm90YXRlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuL3BvaW50JztcblxuZXhwb3J0IGludGVyZmFjZSBSZWN0YW5nbGVDbGllbnQge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBbeCwgeV0geCx5IGJldHdlZW4gMCBhbmQgMVxuICogcmVwcmVzZW50cyBhIHBvaW50IGluIHRoZSByZWN0YW5nbGVcbiAqL1xuZXhwb3J0IHR5cGUgUG9pbnRPZlJlY3RhbmdsZSA9IFtudW1iZXIsIG51bWJlcl07XG5cbmV4cG9ydCBjb25zdCBSZWN0YW5nbGVDbGllbnQgPSB7XG4gICAgaXNIaXQ6IChvcmlnaW46IFJlY3RhbmdsZUNsaWVudCwgdGFyZ2V0OiBSZWN0YW5nbGVDbGllbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5pc0hpdFgob3JpZ2luLCB0YXJnZXQpICYmIFJlY3RhbmdsZUNsaWVudC5pc0hpdFkob3JpZ2luLCB0YXJnZXQpO1xuICAgIH0sXG4gICAgaXNIaXRYOiAob3JpZ2luOiBSZWN0YW5nbGVDbGllbnQsIHRhcmdldDogUmVjdGFuZ2xlQ2xpZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG1pblggPSBvcmlnaW4ueCA8IHRhcmdldC54ID8gb3JpZ2luLnggOiB0YXJnZXQueDtcbiAgICAgICAgY29uc3QgbWF4WCA9IG9yaWdpbi54ICsgb3JpZ2luLndpZHRoID4gdGFyZ2V0LnggKyB0YXJnZXQud2lkdGggPyBvcmlnaW4ueCArIG9yaWdpbi53aWR0aCA6IHRhcmdldC54ICsgdGFyZ2V0LndpZHRoO1xuICAgICAgICAvLyBmbG9hdCBjYWxjdWxhdGUgZXJyb3IoIGVnOiAxLjQyMTA4NTQ3MTUyMDIwMDRlLTE0ID4gMClcbiAgICAgICAgaWYgKE1hdGguZmxvb3IobWF4WCAtIG1pblggLSBvcmlnaW4ud2lkdGggLSB0YXJnZXQud2lkdGgpIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBpc0hpdFk6IChvcmlnaW46IFJlY3RhbmdsZUNsaWVudCwgdGFyZ2V0OiBSZWN0YW5nbGVDbGllbnQpID0+IHtcbiAgICAgICAgY29uc3QgbWluWSA9IG9yaWdpbi55IDwgdGFyZ2V0LnkgPyBvcmlnaW4ueSA6IHRhcmdldC55O1xuICAgICAgICBjb25zdCBtYXhZID0gb3JpZ2luLnkgKyBvcmlnaW4uaGVpZ2h0ID4gdGFyZ2V0LnkgKyB0YXJnZXQuaGVpZ2h0ID8gb3JpZ2luLnkgKyBvcmlnaW4uaGVpZ2h0IDogdGFyZ2V0LnkgKyB0YXJnZXQuaGVpZ2h0O1xuICAgICAgICAvLyBmbG9hdCBjYWxjdWxhdGUgZXJyb3IoIGVnOiAxLjQyMTA4NTQ3MTUyMDIwMDRlLTE0ID4gMClcbiAgICAgICAgaWYgKE1hdGguZmxvb3IobWF4WSAtIG1pblkgLSBvcmlnaW4uaGVpZ2h0IC0gdGFyZ2V0LmhlaWdodCkgPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGdldFBvaW50cyhyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgW3JlY3RhbmdsZS54LCByZWN0YW5nbGUueV0sXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodF1cbiAgICAgICAgXSBhcyBbUG9pbnQsIFBvaW50XTtcbiAgICB9LFxuICAgIGdldFJlY3RhbmdsZUJ5Q2VudGVyUG9pbnQocG9pbnQ6IFBvaW50LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnQoW3BvaW50WzBdIC0gd2lkdGggLyAyLCBwb2ludFsxXSAtIGhlaWdodCAvIDJdLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICB9LFxuICAgIGdldFJlY3RhbmdsZUJ5UG9pbnQocG9pbnQ6IFBvaW50LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IFJlY3RhbmdsZUNsaWVudCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBwb2ludFswXSxcbiAgICAgICAgICAgIHk6IHBvaW50WzFdLFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHRcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGdldFJlY3RhbmdsZUJ5UG9pbnRzKHBvaW50czogUG9pbnRbXSk6IFJlY3RhbmdsZUNsaWVudCB7XG4gICAgICAgIGNvbnN0IHhBcnJheSA9IHBvaW50cy5tYXAoZWxlID0+IGVsZVswXSk7XG4gICAgICAgIGNvbnN0IHlBcnJheSA9IHBvaW50cy5tYXAoZWxlID0+IGVsZVsxXSk7XG4gICAgICAgIGNvbnN0IHhNaW4gPSBNYXRoLm1pbiguLi54QXJyYXkpO1xuICAgICAgICBjb25zdCB4TWF4ID0gTWF0aC5tYXgoLi4ueEFycmF5KTtcbiAgICAgICAgY29uc3QgeU1pbiA9IE1hdGgubWluKC4uLnlBcnJheSk7XG4gICAgICAgIGNvbnN0IHlNYXggPSBNYXRoLm1heCguLi55QXJyYXkpO1xuICAgICAgICBjb25zdCByZWN0ID0geyB4OiB4TWluLCB5OiB5TWluLCB3aWR0aDogeE1heCAtIHhNaW4sIGhlaWdodDogeU1heCAtIHlNaW4gfTtcbiAgICAgICAgcmV0dXJuIHJlY3Q7XG4gICAgfSxcbiAgICBnZXRDb3JuZXJQb2ludHNCeVBvaW50cyhwb2ludHM6IFBvaW50W10pIHtcbiAgICAgICAgY29uc3QgeEFycmF5ID0gcG9pbnRzLm1hcChlbGUgPT4gZWxlWzBdKTtcbiAgICAgICAgY29uc3QgeUFycmF5ID0gcG9pbnRzLm1hcChlbGUgPT4gZWxlWzFdKTtcbiAgICAgICAgY29uc3QgeE1pbiA9IE1hdGgubWluKC4uLnhBcnJheSk7XG4gICAgICAgIGNvbnN0IHhNYXggPSBNYXRoLm1heCguLi54QXJyYXkpO1xuICAgICAgICBjb25zdCB5TWluID0gTWF0aC5taW4oLi4ueUFycmF5KTtcbiAgICAgICAgY29uc3QgeU1heCA9IE1hdGgubWF4KC4uLnlBcnJheSk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBbeE1pbiwgeU1pbl0sXG4gICAgICAgICAgICBbeE1heCwgeU1pbl0sXG4gICAgICAgICAgICBbeE1heCwgeU1heF0sXG4gICAgICAgICAgICBbeE1pbiwgeU1heF1cbiAgICAgICAgXSBhcyBbUG9pbnQsIFBvaW50LCBQb2ludCwgUG9pbnRdO1xuICAgIH0sXG4gICAgZ2V0T3V0bGluZVJlY3RhbmdsZTogKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvZmZzZXQ6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogcmVjdGFuZ2xlLnggKyBvZmZzZXQsXG4gICAgICAgICAgICB5OiByZWN0YW5nbGUueSArIG9mZnNldCxcbiAgICAgICAgICAgIHdpZHRoOiByZWN0YW5nbGUud2lkdGggLSBvZmZzZXQgKiAyLFxuICAgICAgICAgICAgaGVpZ2h0OiByZWN0YW5nbGUuaGVpZ2h0IC0gb2Zmc2V0ICogMlxuICAgICAgICB9O1xuICAgIH0sXG4gICAgaW5mbGF0ZTogKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBkZWx0YTogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGhhbGYgPSBkZWx0YSAvIDI7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiByZWN0YW5nbGUueCAtIGhhbGYsXG4gICAgICAgICAgICB5OiByZWN0YW5nbGUueSAtIGhhbGYsXG4gICAgICAgICAgICB3aWR0aDogcmVjdGFuZ2xlLndpZHRoICsgaGFsZiAqIDIsXG4gICAgICAgICAgICBoZWlnaHQ6IHJlY3RhbmdsZS5oZWlnaHQgKyBoYWxmICogMlxuICAgICAgICB9O1xuICAgIH0sXG4gICAgaXNFcXVhbDogKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBvdGhlclJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICByZWN0YW5nbGUueCA9PT0gb3RoZXJSZWN0YW5nbGUueCAmJlxuICAgICAgICAgICAgcmVjdGFuZ2xlLnkgPT09IG90aGVyUmVjdGFuZ2xlLnkgJiZcbiAgICAgICAgICAgIHJlY3RhbmdsZS53aWR0aCA9PT0gb3RoZXJSZWN0YW5nbGUud2lkdGggJiZcbiAgICAgICAgICAgIHJlY3RhbmdsZS5oZWlnaHQgPT09IG90aGVyUmVjdGFuZ2xlLmhlaWdodFxuICAgICAgICApO1xuICAgIH0sXG4gICAgZ2V0Q29ybmVyUG9pbnRzOiAocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnldLFxuICAgICAgICAgICAgW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoLCByZWN0YW5nbGUueV0sXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodF0sXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLngsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodF1cbiAgICAgICAgXSBhcyBbUG9pbnQsIFBvaW50LCBQb2ludCwgUG9pbnRdO1xuICAgIH0sXG4gICAgZ2V0Q2VudGVyUG9pbnQ6IChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMiwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl0gYXMgUG9pbnQ7XG4gICAgfSxcbiAgICBnZXRDZW50ZXJQb2ludEJ5UG9pbnRzOiAocG9pbnRzOiBQb2ludFtdKSA9PiB7XG4gICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQoUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHBvaW50cykpO1xuICAgIH0sXG4gICAgZ2V0RWRnZUNlbnRlclBvaW50czogKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyLCByZWN0YW5nbGUueV0sXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCAvIDJdLFxuICAgICAgICAgICAgW3JlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoIC8gMiwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0XSxcbiAgICAgICAgICAgIFtyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMl1cbiAgICAgICAgXSBhcyBbUG9pbnQsIFBvaW50LCBQb2ludCwgUG9pbnRdO1xuICAgIH0sXG4gICAgZ2V0Q29ubmVjdGlvblBvaW50OiAocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHBvaW50OiBQb2ludE9mUmVjdGFuZ2xlKSA9PiB7XG4gICAgICAgIHJldHVybiBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggKiBwb2ludFswXSwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0ICogcG9pbnRbMV1dIGFzIFBvaW50O1xuICAgIH0sXG4gICAgZXhwYW5kKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBsZWZ0OiBudW1iZXIsIHRvcDogbnVtYmVyID0gbGVmdCwgcmlnaHQ6IG51bWJlciA9IGxlZnQsIGJvdHRvbTogbnVtYmVyID0gdG9wKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiByZWN0YW5nbGUueCAtIGxlZnQsXG4gICAgICAgICAgICB5OiByZWN0YW5nbGUueSAtIHRvcCxcbiAgICAgICAgICAgIHdpZHRoOiByZWN0YW5nbGUud2lkdGggKyBsZWZ0ICsgcmlnaHQsXG4gICAgICAgICAgICBoZWlnaHQ6IHJlY3RhbmdsZS5oZWlnaHQgKyB0b3AgKyBib3R0b21cbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGdldEdhcENlbnRlcihyZWN0YW5nbGUxOiBSZWN0YW5nbGVDbGllbnQsIHJlY3RhbmdsZTI6IFJlY3RhbmdsZUNsaWVudCwgaXNIb3Jpem9udGFsOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGF4aXMgPSBpc0hvcml6b250YWwgPyAneCcgOiAneSc7XG4gICAgICAgIGNvbnN0IHNpZGUgPSBpc0hvcml6b250YWwgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIGNvbnN0IGFsaWduID0gW3JlY3RhbmdsZTFbYXhpc10sIHJlY3RhbmdsZTFbYXhpc10gKyByZWN0YW5nbGUxW3NpZGVdLCByZWN0YW5nbGUyW2F4aXNdLCByZWN0YW5nbGUyW2F4aXNdICsgcmVjdGFuZ2xlMltzaWRlXV07XG4gICAgICAgIGNvbnN0IHNvcnRBcnIgPSBhbGlnbi5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICAgIHJldHVybiAoc29ydEFyclsxXSArIHNvcnRBcnJbMl0pIC8gMjtcbiAgICB9LFxuICAgIGlzUG9pbnRJblJlY3RhbmdsZShyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgICAgIGNvbnN0IHggPSBwb2ludFswXSxcbiAgICAgICAgICAgIHkgPSBwb2ludFsxXTtcbiAgICAgICAgcmV0dXJuIHggPiByZWN0YW5nbGUueCAmJiB4IDwgcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggJiYgeSA+IHJlY3RhbmdsZS55ICYmIHkgPCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQ7XG4gICAgfSxcbiAgICBnZXRCb3VuZGluZ1JlY3RhbmdsZShyZWN0YW5nbGVzOiBSZWN0YW5nbGVDbGllbnRbXSk6IFJlY3RhbmdsZUNsaWVudCB7XG4gICAgICAgIGlmIChyZWN0YW5nbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZWN0YW5nbGVzIGNhbiBub3QgYmUgZW1wdHkgYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbWluWCA9IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICAgIGxldCBtaW5ZID0gTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgICAgbGV0IG1heFggPSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG4gICAgICAgIGxldCBtYXhZID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuICAgICAgICByZWN0YW5nbGVzLmZvckVhY2gocmVjdCA9PiB7XG4gICAgICAgICAgICBtaW5YID0gTWF0aC5taW4obWluWCwgcmVjdC54KTtcbiAgICAgICAgICAgIG1pblkgPSBNYXRoLm1pbihtaW5ZLCByZWN0LnkpO1xuICAgICAgICAgICAgbWF4WCA9IE1hdGgubWF4KG1heFgsIHJlY3QueCArIHJlY3Qud2lkdGgpO1xuICAgICAgICAgICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHJlY3QueSArIHJlY3QuaGVpZ2h0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBtaW5YLFxuICAgICAgICAgICAgeTogbWluWSxcbiAgICAgICAgICAgIHdpZHRoOiBtYXhYIC0gbWluWCxcbiAgICAgICAgICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgICAgICAgfTtcbiAgICB9XG59O1xuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export const SELECTION_BORDER_COLOR = '#6698FF';
|
|
2
|
-
export const SELECTION_FILL_COLOR = '#
|
|
2
|
+
export const SELECTION_FILL_COLOR = '#6698FF25'; // opacity 0.25
|
|
3
3
|
export const Selection = {
|
|
4
4
|
isCollapsed(selection) {
|
|
5
5
|
if (selection.anchor[0] == selection.focus[0] && selection.anchor[1] === selection.focus[1]) {
|
|
@@ -10,4 +10,4 @@ export const Selection = {
|
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
};
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvaW50ZXJmYWNlcy9zZWxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsU0FBUyxDQUFDO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLFdBQVcsQ0FBQyxDQUFDLGVBQWU7QUFPaEUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHO0lBQ3JCLFdBQVcsQ0FBQyxTQUFvQjtRQUM1QixJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxRixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi9wb2ludCc7XG5cbmV4cG9ydCBjb25zdCBTRUxFQ1RJT05fQk9SREVSX0NPTE9SID0gJyM2Njk4RkYnO1xuZXhwb3J0IGNvbnN0IFNFTEVDVElPTl9GSUxMX0NPTE9SID0gJyM2Njk4RkYyNSc7IC8vIG9wYWNpdHkgMC4yNVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvbiB7XG4gICAgYW5jaG9yOiBQb2ludDtcbiAgICBmb2N1czogUG9pbnQ7XG59XG5cbmV4cG9ydCBjb25zdCBTZWxlY3Rpb24gPSB7XG4gICAgaXNDb2xsYXBzZWQoc2VsZWN0aW9uOiBTZWxlY3Rpb24pIHtcbiAgICAgICAgaWYgKHNlbGVjdGlvbi5hbmNob3JbMF0gPT0gc2VsZWN0aW9uLmZvY3VzWzBdICYmIHNlbGVjdGlvbi5hbmNob3JbMV0gPT09IHNlbGVjdGlvbi5mb2N1c1sxXSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIl19
|