@scion/workbench 17.0.0-beta.8 → 18.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/activation-instant.provider.mjs +3 -3
- package/esm2022/lib/common/asserts.util.mjs +1 -1
- package/esm2022/lib/common/coerce-observable.pipe.mjs +3 -3
- package/esm2022/lib/common/dom.util.mjs +1 -1
- package/esm2022/lib/common/filter-by-predicate.pipe.mjs +3 -3
- package/esm2022/lib/common/filter-by-text.pipe.mjs +3 -3
- package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +4 -4
- package/esm2022/lib/common/instanceof.pipe.mjs +3 -3
- package/esm2022/lib/common/map-coerce.pipe.mjs +3 -3
- package/esm2022/lib/common/null-if-empty.pipe.mjs +4 -4
- package/esm2022/lib/common/observables.mjs +1 -1
- package/esm2022/lib/common/stringify-error.util.mjs +1 -1
- package/esm2022/lib/common/typeof.pipe.mjs +3 -3
- package/esm2022/lib/common//311/265destroy-ref.mjs +1 -1
- package/esm2022/lib/content-projection/content-as-overlay.component.mjs +3 -3
- package/esm2022/lib/content-projection/content-projection.directive.mjs +4 -4
- package/esm2022/lib/content-projection/view-container.reference.mjs +1 -1
- package/esm2022/lib/dialog/dialog-footer/dialog-action-filter.pipe.mjs +3 -3
- package/esm2022/lib/dialog/dialog-footer/dialog-footer.component.mjs +3 -3
- package/esm2022/lib/dialog/dialog-footer/workbench-dialog-action.directive.mjs +9 -6
- package/esm2022/lib/dialog/dialog-footer/workbench-dialog-footer.directive.mjs +9 -6
- package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +3 -3
- package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +9 -6
- package/esm2022/lib/dialog/movable.directive.mjs +4 -4
- package/esm2022/lib/dialog/resizable.directive.mjs +4 -4
- package/esm2022/lib/dialog/workbench-dialog.component.mjs +53 -24
- package/esm2022/lib/dialog/workbench-dialog.registry.mjs +4 -4
- package/esm2022/lib/dialog/workbench-dialog.service.mjs +3 -3
- package/esm2022/lib/dialog//311/265workbench-dialog.mjs +2 -2
- package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +4 -4
- package/esm2022/lib/executor/single-task-executor.mjs +26 -7
- package/esm2022/lib/filter-field/filter-field.component.mjs +4 -4
- package/esm2022/lib/glass-pane/glass-pane.directive.mjs +15 -7
- package/esm2022/lib/layout/grid-element/grid-element.component.mjs +4 -4
- package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +3 -3
- package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +4 -4
- package/esm2022/lib/layout/migration/workbench-layout-migration-v4.service.mjs +4 -4
- package/esm2022/lib/layout/workbench-layout.component.mjs +3 -3
- package/esm2022/lib/layout/workbench-layout.factory.mjs +3 -3
- package/esm2022/lib/layout/workbench-layout.service.mjs +3 -3
- package/esm2022/lib/layout/workbench-layouts.util.mjs +1 -1
- package/esm2022/lib/layout/workench-layout-serializer.service.mjs +4 -6
- package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +3 -3
- package/esm2022/lib/layout//311/265workbench-layout.mjs +7 -7
- package/esm2022/lib/logging/console-appender.service.mjs +4 -4
- package/esm2022/lib/logging/logger.mjs +3 -3
- package/esm2022/lib/logging/logging.model.mjs +3 -3
- package/esm2022/lib/logging//311/265logger.mjs +4 -4
- package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +4 -4
- package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +3 -3
- package/esm2022/lib/message-box/workbench-message-box.component.mjs +15 -6
- package/esm2022/lib/message-box/workbench-message-box.service.mjs +3 -3
- package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +4 -4
- package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +1 -1
- package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +26 -13
- package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +25 -13
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +4 -4
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +11 -11
- package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +5 -5
- package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +9 -7
- package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +112 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +43 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +11 -9
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +34 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.mjs +88 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.mjs +32 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +121 -0
- package/esm2022/lib/microfrontend-platform/microfrontend-notification/microfrontend-notification-intent-handler.service.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-platform-config-loader.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +4 -4
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +9 -6
- package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +9 -15
- package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +3 -3
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +4 -4
- package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +16 -9
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +4 -4
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +4 -4
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +4 -4
- package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +1 -1
- package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +43 -14
- package/esm2022/lib/migration/workbench-migrator.mjs +1 -1
- package/esm2022/lib/notification/notification-css-classes.pipe.mjs +3 -3
- package/esm2022/lib/notification/notification-list.component.mjs +3 -3
- package/esm2022/lib/notification/notification.component.mjs +4 -4
- package/esm2022/lib/notification/notification.service.mjs +4 -4
- package/esm2022/lib/notification/text-notification.component.mjs +3 -3
- package/esm2022/lib/notification//311/265notification.mjs +1 -1
- package/esm2022/lib/page-not-found/format-url.pipe.mjs +3 -3
- package/esm2022/lib/page-not-found/page-not-found.component.mjs +3 -3
- package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +3 -3
- package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +3 -3
- package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +4 -4
- package/esm2022/lib/part/part-bar/part-bar.component.mjs +4 -4
- package/esm2022/lib/part/part-portal.pipe.mjs +4 -4
- package/esm2022/lib/part/part.component.mjs +3 -3
- package/esm2022/lib/part/view-context-menu/accelerator-format.pipe.mjs +4 -4
- package/esm2022/lib/part/view-context-menu/text.component.mjs +3 -3
- package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +4 -4
- package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +4 -4
- package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +4 -4
- package/esm2022/lib/part/view-list/view-list.component.mjs +3 -3
- package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +4 -4
- package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +3 -3
- package/esm2022/lib/part/view-tab/view-tab.component.mjs +4 -4
- package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +3 -3
- package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +3 -3
- package/esm2022/lib/part/workbench-part-action.registry.mjs +3 -3
- package/esm2022/lib/part/workbench-part.registry.mjs +3 -3
- package/esm2022/lib/part//311/265workbench-part.model.mjs +1 -1
- package/esm2022/lib/perspective/migration/workbench-perspective-migration-v2.service.mjs +4 -4
- package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +4 -4
- package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +4 -4
- package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +4 -4
- package/esm2022/lib/perspective/workbench-perspective.registry.mjs +3 -3
- package/esm2022/lib/perspective/workbench-perspective.service.mjs +4 -4
- package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +4 -4
- package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +1 -1
- package/esm2022/lib/popup/popup.component.mjs +22 -10
- package/esm2022/lib/popup/popup.config.mjs +3 -1
- package/esm2022/lib/popup/popup.service.mjs +4 -4
- package/esm2022/lib/portal/wb-component-portal.mjs +1 -1
- package/esm2022/lib/portal/workbench-portal-outlet.directive.mjs +4 -4
- package/esm2022/lib/registry/workbench-object-registry.mjs +1 -1
- package/esm2022/lib/routing/empty-outlet/empty-outlet.component.mjs +3 -3
- package/esm2022/lib/routing/router.util.mjs +8 -2
- package/esm2022/lib/routing/routing.model.mjs +1 -1
- package/esm2022/lib/routing/url-segment-matcher.mjs +1 -1
- package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +4 -4
- package/esm2022/lib/routing/workbench-dialog-differ.mjs +5 -5
- package/esm2022/lib/routing/workbench-layout-differ.mjs +3 -3
- package/esm2022/lib/routing/workbench-message-box-differ.mjs +51 -0
- package/esm2022/lib/routing/workbench-popup-differ.mjs +3 -3
- package/esm2022/lib/routing/workbench-router-link.directive.mjs +5 -5
- package/esm2022/lib/routing/workbench-router.service.mjs +3 -3
- package/esm2022/lib/routing/workbench-url-observer.service.mjs +52 -69
- package/esm2022/lib/routing//311/265location.mjs +3 -3
- package/esm2022/lib/routing//311/265workbench-router.service.mjs +9 -12
- package/esm2022/lib/startup/splash/splash.component.mjs +3 -3
- package/esm2022/lib/startup/workbench-initializer.mjs +1 -1
- package/esm2022/lib/startup/workbench-launcher.service.mjs +7 -7
- package/esm2022/lib/storage/workbench-storage.mjs +3 -3
- package/esm2022/lib/testing/workbench-testing.module.mjs +4 -4
- package/esm2022/lib/testing/workbench.provider.mjs +3 -3
- package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +4 -4
- package/esm2022/lib/view/view-move-handler.service.mjs +4 -4
- package/esm2022/lib/view/view-portal.pipe.mjs +4 -4
- package/esm2022/lib/view/view.component.mjs +17 -10
- package/esm2022/lib/view/workbench-view-route-guards.mjs +1 -1
- package/esm2022/lib/view/workbench-view.registry.mjs +3 -3
- package/esm2022/lib/view//311/265workbench-view.model.mjs +1 -1
- package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +1 -1
- package/esm2022/lib/view-dnd/requires-drop-zone.pipe.mjs +4 -4
- package/esm2022/lib/view-dnd/view-drag.service.mjs +4 -4
- package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +3 -3
- package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +4 -4
- package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +5 -5
- package/esm2022/lib/workbench.component.mjs +10 -6
- package/esm2022/lib/workbench.constants.mjs +5 -1
- package/esm2022/lib/workbench.module.mjs +4 -4
- package/esm2022/lib/workbench.provider.mjs +1 -1
- package/esm2022/lib/workbench.service.mjs +3 -3
- package/esm2022/lib//311/265workbench.service.mjs +3 -3
- package/fesm2022/scion-workbench.mjs +1179 -714
- package/fesm2022/scion-workbench.mjs.map +1 -1
- package/lib/common/objects.util.d.ts +2 -2
- package/lib/dialog/workbench-dialog.component.d.ts +16 -7
- package/lib/executor/single-task-executor.d.ts +6 -1
- package/lib/glass-pane/glass-pane.directive.d.ts +21 -0
- package/lib/message-box/workbench-message-box.component.d.ts +3 -0
- package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +7 -1
- package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +1 -0
- package/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.d.ts +39 -0
- package/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.d.ts +25 -0
- package/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.d.ts +3 -2
- package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.d.ts +10 -0
- package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.d.ts +28 -0
- package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.d.ts +11 -0
- package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.d.ts +48 -0
- package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +3 -7
- package/lib/microfrontend-platform/workbench-microfrontend-support.d.ts +1 -1
- package/lib/popup/popup.component.d.ts +1 -0
- package/lib/routing/router.util.d.ts +4 -0
- package/lib/routing/workbench-message-box-differ.d.ts +25 -0
- package/lib/routing/workbench-url-observer.service.d.ts +7 -25
- package/lib/routing//311/265workbench-router.service.d.ts +3 -4
- package/lib/workbench.constants.d.ts +4 -0
- package/package.json +10 -10
- package/esm2022/lib/layout/migration/model/workbench-layout-migration-v1.model.mjs +0 -11
- package/esm2022/lib/layout/migration/workbench-layout-migration-v2.service.mjs +0 -59
- package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.service.mjs +0 -46
- package/lib/layout/migration/model/workbench-layout-migration-v1.model.d.ts +0 -16
- package/lib/layout/migration/workbench-layout-migration-v2.service.d.ts +0 -13
- package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.service.d.ts +0 -17
|
@@ -63,4 +63,4 @@ export const WorkbenchLayouts = {
|
|
|
63
63
|
return viewId?.startsWith(VIEW_ID_PREFIX) ?? false;
|
|
64
64
|
},
|
|
65
65
|
};
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWxheW91dHMudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2xheW91dC93b3JrYmVuY2gtbGF5b3V0cy51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBQ0gsT0FBTyxFQUFDLEtBQUssRUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUU3QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFdEQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUU5Qjs7T0FFRztJQUNILFlBQVksRUFBRSxDQUFDLE9BQTBCLEVBQVcsRUFBRTtRQUNwRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBUyxDQUFDO1FBQ2pDLElBQUksT0FBTyxZQUFZLEtBQUssRUFBRSxDQUFDO1lBQzdCLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEIsQ0FBQzthQUNJLENBQUM7WUFDSixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzdELEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsb0JBQW9CLEVBQUUsQ0FBQyxPQUEwQixFQUFXLEVBQUU7UUFDNUQsSUFBSSxPQUFPLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDN0IsT0FBTyxPQUFPLENBQUMsRUFBRSxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELE9BQU8sZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4SCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUIsRUFBRSxDQUFDLE9BQXlCLEVBQVUsRUFBRTtRQUN2RCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUM1QixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzthQUM5RCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksR0FBRyxFQUFVLENBQUMsQ0FBQztRQUV2RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hCLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFXLENBQUM7WUFDakQsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFXLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLEVBQUUsQ0FBQyxNQUFpQyxFQUFvQixFQUFFO1FBQ2hFLE9BQU8sTUFBTSxFQUFFLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDckQsQ0FBQztDQUNPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5pbXBvcnQge01QYXJ0LCBNVHJlZU5vZGV9IGZyb20gJy4vd29ya2JlbmNoLWxheW91dC5tb2RlbCc7XG5pbXBvcnQge01BSU5fQVJFQX0gZnJvbSAnLi93b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7Vmlld0lkfSBmcm9tICcuLi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcbmltcG9ydCB7VklFV19JRF9QUkVGSVh9IGZyb20gJy4uL3dvcmtiZW5jaC5jb25zdGFudHMnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGhlbHBlciBmdW5jdGlvbnMgZm9yIG9wZXJhdGluZyBvbiBhIHdvcmtiZW5jaCBsYXlvdXQuXG4gKi9cbmV4cG9ydCBjb25zdCBXb3JrYmVuY2hMYXlvdXRzID0ge1xuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSBjb2xsZWN0cyBhbGwgcGFydHMgb2YgYSBnaXZlbiBlbGVtZW50IGFuZCBpdHMgZGVzY2VuZGFudHMuXG4gICAqL1xuICBjb2xsZWN0UGFydHM6IChlbGVtZW50OiBNUGFydCB8IE1UcmVlTm9kZSk6IE1QYXJ0W10gPT4ge1xuICAgIGNvbnN0IHBhcnRzID0gbmV3IEFycmF5PE1QYXJ0PigpO1xuICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgTVBhcnQpIHtcbiAgICAgIHBhcnRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcGFydHMucHVzaCguLi5Xb3JrYmVuY2hMYXlvdXRzLmNvbGxlY3RQYXJ0cyhlbGVtZW50LmNoaWxkMSkpO1xuICAgICAgcGFydHMucHVzaCguLi5Xb3JrYmVuY2hMYXlvdXRzLmNvbGxlY3RQYXJ0cyhlbGVtZW50LmNoaWxkMikpO1xuICAgIH1cbiAgICByZXR1cm4gcGFydHM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRlc3RzIGlmIHRoZSBnaXZlbiB7QGxpbmsgTVRyZWVOb2RlfSBvciB7QGxpbmsgTVBhcnR9IGlzIHZpc2libGUuXG4gICAqXG4gICAqIC0gQSBwYXJ0IGlzIGNvbnNpZGVyZWQgdmlzaWJsZSBpZiBpdCBpcyB0aGUgbWFpbiBhcmVhIHBhcnQgb3IgaGFzIGF0IGxlYXN0IG9uZSB2aWV3LlxuICAgKiAtIEEgbm9kZSBpcyBjb25zaWRlcmVkIHZpc2libGUgaWYgaXQgaGFzIGF0IGxlYXN0IG9uZSB2aXNpYmxlIHBhcnQgaW4gaXRzIGNoaWxkIGhpZXJhcmNoeS5cbiAgICovXG4gIGlzR3JpZEVsZW1lbnRWaXNpYmxlOiAoZWxlbWVudDogTVRyZWVOb2RlIHwgTVBhcnQpOiBib29sZWFuID0+IHtcbiAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIE1QYXJ0KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5pZCA9PT0gTUFJTl9BUkVBIHx8IGVsZW1lbnQudmlld3MubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgcmV0dXJuIFdvcmtiZW5jaExheW91dHMuaXNHcmlkRWxlbWVudFZpc2libGUoZWxlbWVudC5jaGlsZDEpIHx8IFdvcmtiZW5jaExheW91dHMuaXNHcmlkRWxlbWVudFZpc2libGUoZWxlbWVudC5jaGlsZDIpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgbmV4dCBhdmFpbGFibGUgdmlldyBpZC5cbiAgICovXG4gIGNvbXB1dGVOZXh0Vmlld0lkOiAodmlld0lkczogSXRlcmFibGU8Vmlld0lkPik6IFZpZXdJZCA9PiB7XG4gICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh2aWV3SWRzKVxuICAgICAgLm1hcCh2aWV3SWQgPT4gTnVtYmVyKHZpZXdJZC5zdWJzdHJpbmcoVklFV19JRF9QUkVGSVgubGVuZ3RoKSkpXG4gICAgICAucmVkdWNlKChzZXQsIGlkKSA9PiBzZXQuYWRkKGlkKSwgbmV3IFNldDxudW1iZXI+KCkpO1xuXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gaWRzLnNpemU7IGkrKykge1xuICAgICAgaWYgKCFpZHMuaGFzKGkpKSB7XG4gICAgICAgIHJldHVybiBWSUVXX0lEX1BSRUZJWC5jb25jYXQoYCR7aX1gKSBhcyBWaWV3SWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBWSUVXX0lEX1BSRUZJWC5jb25jYXQoYCR7aWRzLnNpemUgKyAxfWApIGFzIFZpZXdJZDtcbiAgfSxcblxuICAvKipcbiAgICogVGVzdHMgaWYgdGhlIGdpdmVuIGlkIG1hdGNoZXMgdGhlIGZvcm1hdCBvZiBhIHZpZXcgaWRlbnRpZmllciAoZS5nLiwgYHZpZXcuMWAsIGB2aWV3LjJgLCBldGMuKS5cbiAgICpcbiAgICogQHNlZSBWaWV3SWRcbiAgICovXG4gIGlzVmlld0lkOiAodmlld0lkOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogdmlld0lkIGlzIFZpZXdJZCA9PiB7XG4gICAgcmV0dXJuIHZpZXdJZD8uc3RhcnRzV2l0aChWSUVXX0lEX1BSRUZJWCkgPz8gZmFsc2U7XG4gIH0sXG59IGFzIGNvbnN0O1xuIl19
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
import { inject, Injectable } from '@angular/core';
|
|
11
11
|
import { MPart, MTreeNode } from './workbench-layout.model';
|
|
12
12
|
import { UrlSegment } from '@angular/router';
|
|
13
|
-
import { WorkbenchLayoutMigrationV2 } from './migration/workbench-layout-migration-v2.service';
|
|
14
13
|
import { WorkbenchLayoutMigrationV3 } from './migration/workbench-layout-migration-v3.service';
|
|
15
14
|
import { WorkbenchMigrator } from '../migration/workbench-migrator';
|
|
16
15
|
import { WorkbenchLayoutMigrationV4 } from './migration/workbench-layout-migration-v4.service';
|
|
@@ -22,7 +21,6 @@ import * as i0 from "@angular/core";
|
|
|
22
21
|
export class WorkbenchLayoutSerializer {
|
|
23
22
|
constructor() {
|
|
24
23
|
this._workbenchLayoutMigrator = new WorkbenchMigrator()
|
|
25
|
-
.registerMigration(1, inject(WorkbenchLayoutMigrationV2))
|
|
26
24
|
.registerMigration(2, inject(WorkbenchLayoutMigrationV3))
|
|
27
25
|
.registerMigration(3, inject(WorkbenchLayoutMigrationV4));
|
|
28
26
|
}
|
|
@@ -92,10 +90,10 @@ export class WorkbenchLayoutSerializer {
|
|
|
92
90
|
return [viewId, segments.map(segment => new UrlSegment(segment.path, segment.parameters))];
|
|
93
91
|
}));
|
|
94
92
|
}
|
|
95
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
96
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
93
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
94
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutSerializer, providedIn: 'root' }); }
|
|
97
95
|
}
|
|
98
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLayoutSerializer, decorators: [{
|
|
99
97
|
type: Injectable,
|
|
100
98
|
args: [{ providedIn: 'root' }]
|
|
101
99
|
}] });
|
|
@@ -117,4 +115,4 @@ const TRANSIENT_FIELDS = new Set().add('parent').add('migrated');
|
|
|
117
115
|
* Format: <json>//<version>
|
|
118
116
|
*/
|
|
119
117
|
const VERSION_SEPARATOR = '//';
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VuY2gtbGF5b3V0LXNlcmlhbGl6ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2xheW91dC93b3JrZW5jaC1sYXlvdXQtc2VyaWFsaXplci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLEtBQUssRUFBYSxTQUFTLEVBQWEsTUFBTSwwQkFBMEIsQ0FBQztBQUVqRixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDN0YsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDN0YsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFbEUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDN0YsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOztBQUUvQzs7R0FFRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFHVSw2QkFBd0IsR0FBRyxJQUFJLGlCQUFpQixFQUFFO2FBQ3ZELGlCQUFpQixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQzthQUN4RCxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7YUFDeEQsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUM7S0F5RjdEO0lBNUVRLGFBQWEsQ0FBQyxJQUFrQyxFQUFFLE9BQWdHO1FBQ3ZKLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBUyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFO1lBQzNCLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDL0I7UUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRTtZQUN4QixlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRTtZQUN6QyxlQUFlLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDekM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMvQyxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLGlCQUFpQixHQUFHLHdCQUF3QixFQUFFLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlLENBQUMsVUFBa0I7UUFDdkMsTUFBTSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4RixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsd0JBQXdCLEVBQUMsQ0FBQyxDQUFDO1FBRTVILGtCQUFrQjtRQUNsQixNQUFNLElBQUksR0FBYyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2xFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDeEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksVUFBVSxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xGLE9BQU8sSUFBSSxLQUFLLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsZ0RBQWdEO2FBQ3RGO1lBQ0QsSUFBSSxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNoQyxPQUFPLElBQUksU0FBUyxDQUFDLEVBQUMsR0FBRyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksVUFBVSxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsZ0RBQWdEO2FBQ3pIO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztRQUVILHlCQUF5QjtRQUN6QixDQUFDLFNBQVMsZUFBZSxDQUFDLElBQXVCLEVBQUUsTUFBNkI7WUFDOUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFFckIsSUFBSSxJQUFJLFlBQVksU0FBUyxFQUFFO2dCQUM3QixlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbkMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDcEM7UUFDSCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXpCLE9BQU8sQ0FBQyxXQUFXLEdBQUcsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxHQUFHLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxvQkFBb0IsQ0FBQyxXQUF3QjtRQUNsRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQzthQUNqRSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQXlCLEVBQTJCLEVBQUU7WUFDM0UsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksc0JBQXNCLENBQUMsVUFBa0I7UUFDOUMsTUFBTSxXQUFXLEdBQXNDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUUsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO2FBQ2xELEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBMEIsRUFBMEIsRUFBRTtZQUMzRSxPQUFPLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0YsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7OEdBN0ZVLHlCQUF5QjtrSEFBekIseUJBQXlCLGNBRGIsTUFBTTs7MkZBQ2xCLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBaUdoQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUM7QUFFMUM7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN6RTs7OztHQUlHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TVBhcnQsIE1QYXJ0R3JpZCwgTVRyZWVOb2RlLCDJtU1QYXJ0R3JpZH0gZnJvbSAnLi93b3JrYmVuY2gtbGF5b3V0Lm1vZGVsJztcbmltcG9ydCB7Vmlld091dGxldHN9IGZyb20gJy4uL3JvdXRpbmcvcm91dGluZy5tb2RlbCc7XG5pbXBvcnQge1VybFNlZ21lbnR9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1dvcmtiZW5jaExheW91dE1pZ3JhdGlvblYyfSBmcm9tICcuL21pZ3JhdGlvbi93b3JrYmVuY2gtbGF5b3V0LW1pZ3JhdGlvbi12Mi5zZXJ2aWNlJztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0TWlncmF0aW9uVjN9IGZyb20gJy4vbWlncmF0aW9uL3dvcmtiZW5jaC1sYXlvdXQtbWlncmF0aW9uLXYzLnNlcnZpY2UnO1xuaW1wb3J0IHtXb3JrYmVuY2hNaWdyYXRvcn0gZnJvbSAnLi4vbWlncmF0aW9uL3dvcmtiZW5jaC1taWdyYXRvcic7XG5pbXBvcnQge1ZpZXdJZH0gZnJvbSAnLi4vdmlldy93b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5pbXBvcnQge1dvcmtiZW5jaExheW91dE1pZ3JhdGlvblY0fSBmcm9tICcuL21pZ3JhdGlvbi93b3JrYmVuY2gtbGF5b3V0LW1pZ3JhdGlvbi12NC5zZXJ2aWNlJztcbmltcG9ydCB7cmFuZG9tVVVJRH0gZnJvbSAnLi4vY29tbW9uL3V1aWQudXRpbCc7XG5cbi8qKlxuICogU2VyaWFsaXplcyBhbmQgZGVzZXJpYWxpemVzIGEgYmFzZTY0LWVuY29kZWQgSlNPTiBpbnRvIGEge0BsaW5rIE1QYXJ0R3JpZH0uXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIge1xuXG4gIHByaXZhdGUgX3dvcmtiZW5jaExheW91dE1pZ3JhdG9yID0gbmV3IFdvcmtiZW5jaE1pZ3JhdG9yKClcbiAgICAucmVnaXN0ZXJNaWdyYXRpb24oMSwgaW5qZWN0KFdvcmtiZW5jaExheW91dE1pZ3JhdGlvblYyKSlcbiAgICAucmVnaXN0ZXJNaWdyYXRpb24oMiwgaW5qZWN0KFdvcmtiZW5jaExheW91dE1pZ3JhdGlvblYzKSlcbiAgICAucmVnaXN0ZXJNaWdyYXRpb24oMywgaW5qZWN0KFdvcmtiZW5jaExheW91dE1pZ3JhdGlvblY0KSk7XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIGdyaWQgaW50byBhIFVSTC1zYWZlIGJhc2U2NCBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBncmlkIC0gU3BlY2lmaWVzIHRoZSBncmlkIHRvIGJlIHNlcmlhbGl6ZWQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29udHJvbHMgdGhlIHNlcmlhbGl6YXRpb24uXG4gICAqIEBwYXJhbSBvcHRpb25zLmluY2x1ZGVOb2RlSWQgLSBDb250cm9scyBpZiB0byBpbmNsdWRlIHRoZSBgbm9kZUlkYC4gQnkgZGVmYXVsdCwgaWYgbm90IHNldCwgdGhlIGBub2RlSWRgIGlzIGV4Y2x1ZGVkIGZyb20gc2VyaWFsaXphdGlvbi5cbiAgICogQHBhcmFtIG9wdGlvbnMuaW5jbHVkZVVpZCAtIENvbnRyb2xzIGlmIHRvIGluY2x1ZGUgdGhlIHZpZXcgYHVpZGAuIEJ5IGRlZmF1bHQsIGlmIG5vdCBzZXQsIHRoZSBgdWlkYCBpcyBleGNsdWRlZCBmcm9tIHNlcmlhbGl6YXRpb24uXG4gICAqIEBwYXJhbSBvcHRpb25zLmluY2x1ZGVNYXJrUmVtb3ZlZEZsYWcgLSBDb250cm9scyBpZiB0byBpbmNsdWRlIHRoZSBgbWFya2VkRm9yUmVtb3ZhbGAgZmxhZy4gQnkgZGVmYXVsdCwgaWYgbm90IHNldCwgdGhlIGBtYXJrZWRGb3JSZW1vdmFsYCBpcyBleGNsdWRlZCBmcm9tIHNlcmlhbGl6YXRpb24uXG4gICAqL1xuICBwdWJsaWMgc2VyaWFsaXplR3JpZChncmlkOiBNUGFydEdyaWQsIG9wdGlvbnM/OiB7aW5jbHVkZU5vZGVJZD86IGJvb2xlYW47IGluY2x1ZGVVaWQ/OiBib29sZWFuOyBpbmNsdWRlTWFya2VkRm9yUmVtb3ZhbEZsYWc/OiBib29sZWFufSk6IHN0cmluZztcbiAgcHVibGljIHNlcmlhbGl6ZUdyaWQoZ3JpZDogTVBhcnRHcmlkIHwgdW5kZWZpbmVkIHwgbnVsbCwgb3B0aW9ucz86IHtpbmNsdWRlTm9kZUlkPzogYm9vbGVhbjsgaW5jbHVkZVVpZD86IGJvb2xlYW47IGluY2x1ZGVNYXJrZWRGb3JSZW1vdmFsRmxhZz86IGJvb2xlYW59KTogbnVsbCB8IHN0cmluZztcbiAgcHVibGljIHNlcmlhbGl6ZUdyaWQoZ3JpZDogTVBhcnRHcmlkIHwgdW5kZWZpbmVkIHwgbnVsbCwgb3B0aW9ucz86IHtpbmNsdWRlTm9kZUlkPzogYm9vbGVhbjsgaW5jbHVkZVVpZD86IGJvb2xlYW47IGluY2x1ZGVNYXJrZWRGb3JSZW1vdmFsRmxhZz86IGJvb2xlYW59KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKGdyaWQgPT09IG51bGwgfHwgZ3JpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2llbnRGaWVsZHMgPSBuZXcgU2V0PHN0cmluZz4oVFJBTlNJRU5UX0ZJRUxEUyk7XG4gICAgaWYgKCFvcHRpb25zPy5pbmNsdWRlTm9kZUlkKSB7XG4gICAgICB0cmFuc2llbnRGaWVsZHMuYWRkKCdub2RlSWQnKTtcbiAgICB9XG4gICAgaWYgKCFvcHRpb25zPy5pbmNsdWRlVWlkKSB7XG4gICAgICB0cmFuc2llbnRGaWVsZHMuYWRkKCd1aWQnKTtcbiAgICB9XG4gICAgaWYgKCFvcHRpb25zPy5pbmNsdWRlTWFya2VkRm9yUmVtb3ZhbEZsYWcpIHtcbiAgICAgIHRyYW5zaWVudEZpZWxkcy5hZGQoJ21hcmtlZEZvclJlbW92YWwnKTtcbiAgICB9XG5cbiAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkoZ3JpZCwgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgIHJldHVybiB0cmFuc2llbnRGaWVsZHMuaGFzKGtleSkgPyB1bmRlZmluZWQgOiB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gd2luZG93LmJ0b2EoYCR7anNvbn0ke1ZFUlNJT05fU0VQQVJBVE9SfSR7V09SS0JFTkNIX0xBWU9VVF9WRVJTSU9OfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplcyB0aGUgZ2l2ZW4gYmFzZTY0LXNlcmlhbGl6ZWQgZ3JpZCwgYXBwbHlpbmcgbmVjZXNzYXJ5IG1pZ3JhdGlvbnMgaWYgdGhlIHNlcmlhbGl6ZWQgZ3JpZCBpcyBvdXRkYXRlZC5cbiAgICovXG4gIHB1YmxpYyBkZXNlcmlhbGl6ZUdyaWQoc2VyaWFsaXplZDogc3RyaW5nKTogybVNUGFydEdyaWQge1xuICAgIGNvbnN0IFtqc29uR3JpZCwganNvbkdyaWRWZXJzaW9uXSA9IHdpbmRvdy5hdG9iKHNlcmlhbGl6ZWQpLnNwbGl0KFZFUlNJT05fU0VQQVJBVE9SLCAyKTtcbiAgICBjb25zdCBncmlkVmVyc2lvbiA9IE51bWJlci5pc05hTihOdW1iZXIoanNvbkdyaWRWZXJzaW9uKSkgPyAxIDogTnVtYmVyKGpzb25HcmlkVmVyc2lvbik7XG4gICAgY29uc3QgbWlncmF0ZWRKc29uR3JpZCA9IHRoaXMuX3dvcmtiZW5jaExheW91dE1pZ3JhdG9yLm1pZ3JhdGUoanNvbkdyaWQsIHtmcm9tOiBncmlkVmVyc2lvbiwgdG86IFdPUktCRU5DSF9MQVlPVVRfVkVSU0lPTn0pO1xuXG4gICAgLy8gUGFyc2UgdGhlIEpTT04uXG4gICAgY29uc3QgZ3JpZDogTVBhcnRHcmlkID0gSlNPTi5wYXJzZShtaWdyYXRlZEpzb25HcmlkLCAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKE1QYXJ0LmlzTVBhcnQodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IHZpZXdzID0gdmFsdWUudmlld3MubWFwKHZpZXcgPT4gKHsuLi52aWV3LCB1aWQ6IHZpZXcudWlkID8/IHJhbmRvbVVVSUQoKX0pKTtcbiAgICAgICAgcmV0dXJuIG5ldyBNUGFydCh7Li4udmFsdWUsIHZpZXdzfSk7IC8vIGNyZWF0ZSBhIGNsYXNzIG9iamVjdCBmcm9tIHRoZSBvYmplY3QgbGl0ZXJhbFxuICAgICAgfVxuICAgICAgaWYgKE1UcmVlTm9kZS5pc01UcmVlTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNVHJlZU5vZGUoey4uLnZhbHVlLCBub2RlSWQ6IHZhbHVlLm5vZGVJZCA/PyByYW5kb21VVUlEKCl9KTsgLy8gY3JlYXRlIGEgY2xhc3Mgb2JqZWN0IGZyb20gdGhlIG9iamVjdCBsaXRlcmFsXG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSk7XG5cbiAgICAvLyBMaW5rIHBhcmVudCB0cmVlIG5vZGVzXG4gICAgKGZ1bmN0aW9uIGxpbmtQYXJlbnROb2Rlcyhub2RlOiBNVHJlZU5vZGUgfCBNUGFydCwgcGFyZW50OiBNVHJlZU5vZGUgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgIG5vZGUucGFyZW50ID0gcGFyZW50O1xuXG4gICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIE1UcmVlTm9kZSkge1xuICAgICAgICBsaW5rUGFyZW50Tm9kZXMobm9kZS5jaGlsZDEsIG5vZGUpO1xuICAgICAgICBsaW5rUGFyZW50Tm9kZXMobm9kZS5jaGlsZDIsIG5vZGUpO1xuICAgICAgfVxuICAgIH0pKGdyaWQucm9vdCwgdW5kZWZpbmVkKTtcblxuICAgIHJldHVybiAoZ3JpZFZlcnNpb24gPCBXT1JLQkVOQ0hfTEFZT1VUX1ZFUlNJT04pID8gey4uLmdyaWQsIG1pZ3JhdGVkOiB0cnVlfSA6IGdyaWQ7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplcyB0aGUgZ2l2ZW4gb3V0bGV0cy5cbiAgICovXG4gIHB1YmxpYyBzZXJpYWxpemVWaWV3T3V0bGV0cyh2aWV3T3V0bGV0czogVmlld091dGxldHMpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModmlld091dGxldHMpXG4gICAgICAubWFwKChbdmlld0lkLCBzZWdtZW50c106IFtzdHJpbmcsIFVybFNlZ21lbnRbXV0pOiBbc3RyaW5nLCBNVXJsU2VnbWVudFtdXSA9PiB7XG4gICAgICAgIHJldHVybiBbdmlld0lkLCBzZWdtZW50cy5tYXAoc2VnbWVudCA9PiAoe3BhdGg6IHNlZ21lbnQucGF0aCwgcGFyYW1ldGVyczogc2VnbWVudC5wYXJhbWV0ZXJzfSkpXTtcbiAgICAgIH0pKSk7XG4gIH1cblxuICAvKipcbiAgICogRGVzZXJpYWxpemVzIHRoZSBnaXZlbiBvdXRsZXRzLlxuICAgKi9cbiAgcHVibGljIGRlc2VyaWFsaXplVmlld091dGxldHMoc2VyaWFsaXplZDogc3RyaW5nKTogVmlld091dGxldHMge1xuICAgIGNvbnN0IHZpZXdPdXRsZXRzOiB7W3ZpZXdJZDogVmlld0lkXTogTVVybFNlZ21lbnRbXX0gPSBKU09OLnBhcnNlKHNlcmlhbGl6ZWQpO1xuXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh2aWV3T3V0bGV0cylcbiAgICAgIC5tYXAoKFt2aWV3SWQsIHNlZ21lbnRzXTogW3N0cmluZywgTVVybFNlZ21lbnRbXV0pOiBbc3RyaW5nLCBVcmxTZWdtZW50W11dID0+IHtcbiAgICAgICAgcmV0dXJuIFt2aWV3SWQsIHNlZ21lbnRzLm1hcChzZWdtZW50ID0+IG5ldyBVcmxTZWdtZW50KHNlZ21lbnQucGF0aCwgc2VnbWVudC5wYXJhbWV0ZXJzKSldO1xuICAgICAgfSkpO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSB3b3JrYmVuY2ggbGF5b3V0IG1vZGVsLlxuICpcbiAqIEluY3JlbWVudCB0aGlzIHZlcnNpb24gYW5kIHdyaXRlIGEgbWlncmF0b3Igd2hlbiBpbnRyb2R1Y3RpbmcgYSBicmVha2luZyBsYXlvdXQgbW9kZWwgY2hhbmdlLlxuICpcbiAqIEBzZWUgV29ya2JlbmNoTWlncmF0b3JcbiAqL1xuZXhwb3J0IGNvbnN0IFdPUktCRU5DSF9MQVlPVVRfVkVSU0lPTiA9IDQ7XG5cbi8qKlxuICogRmllbGRzIG5vdCBzZXJpYWxpemVkIGludG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuY29uc3QgVFJBTlNJRU5UX0ZJRUxEUyA9IG5ldyBTZXQ8c3RyaW5nPigpLmFkZCgncGFyZW50JykuYWRkKCdtaWdyYXRlZCcpO1xuLyoqXG4gKiBTZXBhcmF0ZXMgdGhlIHNlcmlhbGl6ZWQgSlNPTiBtb2RlbCBhbmQgaXRzIHZlcnNpb24gaW4gdGhlIGJhc2U2NC1lbmNvZGVkIHN0cmluZy5cbiAqXG4gKiBGb3JtYXQ6IDxqc29uPi8vPHZlcnNpb24+XG4gKi9cbmNvbnN0IFZFUlNJT05fU0VQQVJBVE9SID0gJy8vJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2VnbWVudCBpbiB0aGUgVVJMLlxuICpcbiAqIFRoZSBNLXByZWZpeCBpbmRpY2F0ZXMgdGhpcyBvYmplY3QgaXMgYSBtb2RlbCBvYmplY3QgdGhhdCBpcyBzZXJpYWxpemVkIGFuZCBzdG9yZWQsIHJlcXVpcmluZyBtaWdyYXRpb24gb24gYnJlYWtpbmcgY2hhbmdlLlxuICovXG5pbnRlcmZhY2UgTVVybFNlZ21lbnQge1xuICBwYXRoOiBzdHJpbmc7XG4gIHBhcmFtZXRlcnM6IHtbbmFtZTogc3RyaW5nXTogc3RyaW5nfTtcbn1cbiJdfQ==
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VuY2gtbGF5b3V0LXNlcmlhbGl6ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2xheW91dC93b3JrZW5jaC1sYXlvdXQtc2VyaWFsaXplci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLEtBQUssRUFBYSxTQUFTLEVBQWEsTUFBTSwwQkFBMEIsQ0FBQztBQUVqRixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDN0YsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFbEUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDN0YsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOztBQUUvQzs7R0FFRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFHVSw2QkFBd0IsR0FBRyxJQUFJLGlCQUFpQixFQUFFO2FBQ3ZELGlCQUFpQixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQzthQUN4RCxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQztLQXlGN0Q7SUE1RVEsYUFBYSxDQUFDLElBQWtDLEVBQUUsT0FBZ0c7UUFDdkosSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FB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LENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0YsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7OEdBNUZVLHlCQUF5QjtrSEFBekIseUJBQXlCLGNBRGIsTUFBTTs7MkZBQ2xCLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBZ0doQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUM7QUFFMUM7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN6RTs7OztHQUlHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TVBhcnQsIE1QYXJ0R3JpZCwgTVRyZWVOb2RlLCDJtU1QYXJ0R3JpZH0gZnJvbSAnLi93b3JrYmVuY2gtbGF5b3V0Lm1vZGVsJztcbmltcG9ydCB7Vmlld091dGxldHN9IGZyb20gJy4uL3JvdXRpbmcvcm91dGluZy5tb2RlbCc7XG5pbXBvcnQge1VybFNlZ21lbnR9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1dvcmtiZW5jaExheW91dE1pZ3JhdGlvblYzfSBmcm9tICcuL21pZ3JhdGlvbi93b3JrYmVuY2gtbGF5b3V0LW1pZ3JhdGlvbi12My5zZXJ2aWNlJztcbmltcG9ydCB7V29ya2JlbmNoTWlncmF0b3J9IGZyb20gJy4uL21pZ3JhdGlvbi93b3JrYmVuY2gtbWlncmF0b3InO1xuaW1wb3J0IHtWaWV3SWR9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRNaWdyYXRpb25WNH0gZnJvbSAnLi9taWdyYXRpb24vd29ya2JlbmNoLWxheW91dC1taWdyYXRpb24tdjQuc2VydmljZSc7XG5pbXBvcnQge3JhbmRvbVVVSUR9IGZyb20gJy4uL2NvbW1vbi91dWlkLnV0aWwnO1xuXG4vKipcbiAqIFNlcmlhbGl6ZXMgYW5kIGRlc2VyaWFsaXplcyBhIGJhc2U2NC1lbmNvZGVkIEpTT04gaW50byBhIHtAbGluayBNUGFydEdyaWR9LlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hMYXlvdXRTZXJpYWxpemVyIHtcblxuICBwcml2YXRlIF93b3JrYmVuY2hMYXlvdXRNaWdyYXRvciA9IG5ldyBXb3JrYmVuY2hNaWdyYXRvcigpXG4gICAgLnJlZ2lzdGVyTWlncmF0aW9uKDIsIGluamVjdChXb3JrYmVuY2hMYXlvdXRNaWdyYXRpb25WMykpXG4gICAgLnJlZ2lzdGVyTWlncmF0aW9uKDMsIGluamVjdChXb3JrYmVuY2hMYXlvdXRNaWdyYXRpb25WNCkpO1xuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIHRoZSBnaXZlbiBncmlkIGludG8gYSBVUkwtc2FmZSBiYXNlNjQgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JpZCAtIFNwZWNpZmllcyB0aGUgZ3JpZCB0byBiZSBzZXJpYWxpemVkLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbnRyb2xzIHRoZSBzZXJpYWxpemF0aW9uLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5pbmNsdWRlTm9kZUlkIC0gQ29udHJvbHMgaWYgdG8gaW5jbHVkZSB0aGUgYG5vZGVJZGAuIEJ5IGRlZmF1bHQsIGlmIG5vdCBzZXQsIHRoZSBgbm9kZUlkYCBpcyBleGNsdWRlZCBmcm9tIHNlcmlhbGl6YXRpb24uXG4gICAqIEBwYXJhbSBvcHRpb25zLmluY2x1ZGVVaWQgLSBDb250cm9scyBpZiB0byBpbmNsdWRlIHRoZSB2aWV3IGB1aWRgLiBCeSBkZWZhdWx0LCBpZiBub3Qgc2V0LCB0aGUgYHVpZGAgaXMgZXhjbHVkZWQgZnJvbSBzZXJpYWxpemF0aW9uLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5pbmNsdWRlTWFya1JlbW92ZWRGbGFnIC0gQ29udHJvbHMgaWYgdG8gaW5jbHVkZSB0aGUgYG1hcmtlZEZvclJlbW92YWxgIGZsYWcuIEJ5IGRlZmF1bHQsIGlmIG5vdCBzZXQsIHRoZSBgbWFya2VkRm9yUmVtb3ZhbGAgaXMgZXhjbHVkZWQgZnJvbSBzZXJpYWxpemF0aW9uLlxuICAgKi9cbiAgcHVibGljIHNlcmlhbGl6ZUdyaWQoZ3JpZDogTVBhcnRHcmlkLCBvcHRpb25zPzoge2luY2x1ZGVOb2RlSWQ/OiBib29sZWFuOyBpbmNsdWRlVWlkPzogYm9vbGVhbjsgaW5jbHVkZU1hcmtlZEZvclJlbW92YWxGbGFnPzogYm9vbGVhbn0pOiBzdHJpbmc7XG4gIHB1YmxpYyBzZXJpYWxpemVHcmlkKGdyaWQ6IE1QYXJ0R3JpZCB8IHVuZGVmaW5lZCB8IG51bGwsIG9wdGlvbnM/OiB7aW5jbHVkZU5vZGVJZD86IGJvb2xlYW47IGluY2x1ZGVVaWQ/OiBib29sZWFuOyBpbmNsdWRlTWFya2VkRm9yUmVtb3ZhbEZsYWc/OiBib29sZWFufSk6IG51bGwgfCBzdHJpbmc7XG4gIHB1YmxpYyBzZXJpYWxpemVHcmlkKGdyaWQ6IE1QYXJ0R3JpZCB8IHVuZGVmaW5lZCB8IG51bGwsIG9wdGlvbnM/OiB7aW5jbHVkZU5vZGVJZD86IGJvb2xlYW47IGluY2x1ZGVVaWQ/OiBib29sZWFuOyBpbmNsdWRlTWFya2VkRm9yUmVtb3ZhbEZsYWc/OiBib29sZWFufSk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmIChncmlkID09PSBudWxsIHx8IGdyaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNpZW50RmllbGRzID0gbmV3IFNldDxzdHJpbmc+KFRSQU5TSUVOVF9GSUVMRFMpO1xuICAgIGlmICghb3B0aW9ucz8uaW5jbHVkZU5vZGVJZCkge1xuICAgICAgdHJhbnNpZW50RmllbGRzLmFkZCgnbm9kZUlkJyk7XG4gICAgfVxuICAgIGlmICghb3B0aW9ucz8uaW5jbHVkZVVpZCkge1xuICAgICAgdHJhbnNpZW50RmllbGRzLmFkZCgndWlkJyk7XG4gICAgfVxuICAgIGlmICghb3B0aW9ucz8uaW5jbHVkZU1hcmtlZEZvclJlbW92YWxGbGFnKSB7XG4gICAgICB0cmFuc2llbnRGaWVsZHMuYWRkKCdtYXJrZWRGb3JSZW1vdmFsJyk7XG4gICAgfVxuXG4gICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KGdyaWQsIChrZXksIHZhbHVlKSA9PiB7XG4gICAgICByZXR1cm4gdHJhbnNpZW50RmllbGRzLmhhcyhrZXkpID8gdW5kZWZpbmVkIDogdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHdpbmRvdy5idG9hKGAke2pzb259JHtWRVJTSU9OX1NFUEFSQVRPUn0ke1dPUktCRU5DSF9MQVlPVVRfVkVSU0lPTn1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZXMgdGhlIGdpdmVuIGJhc2U2NC1zZXJpYWxpemVkIGdyaWQsIGFwcGx5aW5nIG5lY2Vzc2FyeSBtaWdyYXRpb25zIGlmIHRoZSBzZXJpYWxpemVkIGdyaWQgaXMgb3V0ZGF0ZWQuXG4gICAqL1xuICBwdWJsaWMgZGVzZXJpYWxpemVHcmlkKHNlcmlhbGl6ZWQ6IHN0cmluZyk6IMm1TVBhcnRHcmlkIHtcbiAgICBjb25zdCBbanNvbkdyaWQsIGpzb25HcmlkVmVyc2lvbl0gPSB3aW5kb3cuYXRvYihzZXJpYWxpemVkKS5zcGxpdChWRVJTSU9OX1NFUEFSQVRPUiwgMik7XG4gICAgY29uc3QgZ3JpZFZlcnNpb24gPSBOdW1iZXIuaXNOYU4oTnVtYmVyKGpzb25HcmlkVmVyc2lvbikpID8gMSA6IE51bWJlcihqc29uR3JpZFZlcnNpb24pO1xuICAgIGNvbnN0IG1pZ3JhdGVkSnNvbkdyaWQgPSB0aGlzLl93b3JrYmVuY2hMYXlvdXRNaWdyYXRvci5taWdyYXRlKGpzb25HcmlkLCB7ZnJvbTogZ3JpZFZlcnNpb24sIHRvOiBXT1JLQkVOQ0hfTEFZT1VUX1ZFUlNJT059KTtcblxuICAgIC8vIFBhcnNlIHRoZSBKU09OLlxuICAgIGNvbnN0IGdyaWQ6IE1QYXJ0R3JpZCA9IEpTT04ucGFyc2UobWlncmF0ZWRKc29uR3JpZCwgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgIGlmIChNUGFydC5pc01QYXJ0KHZhbHVlKSkge1xuICAgICAgICBjb25zdCB2aWV3cyA9IHZhbHVlLnZpZXdzLm1hcCh2aWV3ID0+ICh7Li4udmlldywgdWlkOiB2aWV3LnVpZCA/PyByYW5kb21VVUlEKCl9KSk7XG4gICAgICAgIHJldHVybiBuZXcgTVBhcnQoey4uLnZhbHVlLCB2aWV3c30pOyAvLyBjcmVhdGUgYSBjbGFzcyBvYmplY3QgZnJvbSB0aGUgb2JqZWN0IGxpdGVyYWxcbiAgICAgIH1cbiAgICAgIGlmIChNVHJlZU5vZGUuaXNNVHJlZU5vZGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBuZXcgTVRyZWVOb2RlKHsuLi52YWx1ZSwgbm9kZUlkOiB2YWx1ZS5ub2RlSWQgPz8gcmFuZG9tVVVJRCgpfSk7IC8vIGNyZWF0ZSBhIGNsYXNzIG9iamVjdCBmcm9tIHRoZSBvYmplY3QgbGl0ZXJhbFxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0pO1xuXG4gICAgLy8gTGluayBwYXJlbnQgdHJlZSBub2Rlc1xuICAgIChmdW5jdGlvbiBsaW5rUGFyZW50Tm9kZXMobm9kZTogTVRyZWVOb2RlIHwgTVBhcnQsIHBhcmVudDogTVRyZWVOb2RlIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICBub2RlLnBhcmVudCA9IHBhcmVudDtcblxuICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBNVHJlZU5vZGUpIHtcbiAgICAgICAgbGlua1BhcmVudE5vZGVzKG5vZGUuY2hpbGQxLCBub2RlKTtcbiAgICAgICAgbGlua1BhcmVudE5vZGVzKG5vZGUuY2hpbGQyLCBub2RlKTtcbiAgICAgIH1cbiAgICB9KShncmlkLnJvb3QsIHVuZGVmaW5lZCk7XG5cbiAgICByZXR1cm4gKGdyaWRWZXJzaW9uIDwgV09SS0JFTkNIX0xBWU9VVF9WRVJTSU9OKSA/IHsuLi5ncmlkLCBtaWdyYXRlZDogdHJ1ZX0gOiBncmlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIG91dGxldHMuXG4gICAqL1xuICBwdWJsaWMgc2VyaWFsaXplVmlld091dGxldHModmlld091dGxldHM6IFZpZXdPdXRsZXRzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHZpZXdPdXRsZXRzKVxuICAgICAgLm1hcCgoW3ZpZXdJZCwgc2VnbWVudHNdOiBbc3RyaW5nLCBVcmxTZWdtZW50W11dKTogW3N0cmluZywgTVVybFNlZ21lbnRbXV0gPT4ge1xuICAgICAgICByZXR1cm4gW3ZpZXdJZCwgc2VnbWVudHMubWFwKHNlZ21lbnQgPT4gKHtwYXRoOiBzZWdtZW50LnBhdGgsIHBhcmFtZXRlcnM6IHNlZ21lbnQucGFyYW1ldGVyc30pKV07XG4gICAgICB9KSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplcyB0aGUgZ2l2ZW4gb3V0bGV0cy5cbiAgICovXG4gIHB1YmxpYyBkZXNlcmlhbGl6ZVZpZXdPdXRsZXRzKHNlcmlhbGl6ZWQ6IHN0cmluZyk6IFZpZXdPdXRsZXRzIHtcbiAgICBjb25zdCB2aWV3T3V0bGV0czoge1t2aWV3SWQ6IFZpZXdJZF06IE1VcmxTZWdtZW50W119ID0gSlNPTi5wYXJzZShzZXJpYWxpemVkKTtcblxuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModmlld091dGxldHMpXG4gICAgICAubWFwKChbdmlld0lkLCBzZWdtZW50c106IFtzdHJpbmcsIE1VcmxTZWdtZW50W11dKTogW3N0cmluZywgVXJsU2VnbWVudFtdXSA9PiB7XG4gICAgICAgIHJldHVybiBbdmlld0lkLCBzZWdtZW50cy5tYXAoc2VnbWVudCA9PiBuZXcgVXJsU2VnbWVudChzZWdtZW50LnBhdGgsIHNlZ21lbnQucGFyYW1ldGVycykpXTtcbiAgICAgIH0pKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgd29ya2JlbmNoIGxheW91dCBtb2RlbC5cbiAqXG4gKiBJbmNyZW1lbnQgdGhpcyB2ZXJzaW9uIGFuZCB3cml0ZSBhIG1pZ3JhdG9yIHdoZW4gaW50cm9kdWN0aW5nIGEgYnJlYWtpbmcgbGF5b3V0IG1vZGVsIGNoYW5nZS5cbiAqXG4gKiBAc2VlIFdvcmtiZW5jaE1pZ3JhdG9yXG4gKi9cbmV4cG9ydCBjb25zdCBXT1JLQkVOQ0hfTEFZT1VUX1ZFUlNJT04gPSA0O1xuXG4vKipcbiAqIEZpZWxkcyBub3Qgc2VyaWFsaXplZCBpbnRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbmNvbnN0IFRSQU5TSUVOVF9GSUVMRFMgPSBuZXcgU2V0PHN0cmluZz4oKS5hZGQoJ3BhcmVudCcpLmFkZCgnbWlncmF0ZWQnKTtcbi8qKlxuICogU2VwYXJhdGVzIHRoZSBzZXJpYWxpemVkIEpTT04gbW9kZWwgYW5kIGl0cyB2ZXJzaW9uIGluIHRoZSBiYXNlNjQtZW5jb2RlZCBzdHJpbmcuXG4gKlxuICogRm9ybWF0OiA8anNvbj4vLzx2ZXJzaW9uPlxuICovXG5jb25zdCBWRVJTSU9OX1NFUEFSQVRPUiA9ICcvLyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNlZ21lbnQgaW4gdGhlIFVSTC5cbiAqXG4gKiBUaGUgTS1wcmVmaXggaW5kaWNhdGVzIHRoaXMgb2JqZWN0IGlzIGEgbW9kZWwgb2JqZWN0IHRoYXQgaXMgc2VyaWFsaXplZCBhbmQgc3RvcmVkLCByZXF1aXJpbmcgbWlncmF0aW9uIG9uIGJyZWFraW5nIGNoYW5nZS5cbiAqL1xuaW50ZXJmYWNlIE1VcmxTZWdtZW50IHtcbiAgcGF0aDogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiB7W25hbWU6IHN0cmluZ106IHN0cmluZ307XG59XG4iXX0=
|
|
@@ -43,10 +43,10 @@ export class ɵWorkbenchLayoutFactory {
|
|
|
43
43
|
viewStates: options?.viewStates,
|
|
44
44
|
}));
|
|
45
45
|
}
|
|
46
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
47
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
46
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchLayoutFactory, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
47
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchLayoutFactory, providedIn: 'root' }); }
|
|
48
48
|
}
|
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchLayoutFactory, decorators: [{
|
|
50
50
|
type: Injectable,
|
|
51
51
|
args: [{ providedIn: 'root' }]
|
|
52
52
|
}], ctorParameters: () => [{ type: i0.EnvironmentInjector }] });
|
|
@@ -813,10 +813,10 @@ export class PartActivationInstantProvider {
|
|
|
813
813
|
getActivationInstant(partId) {
|
|
814
814
|
return this._partRegistry.get(partId, { orElse: null })?.activationInstant ?? 0;
|
|
815
815
|
}
|
|
816
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
817
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
816
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartActivationInstantProvider, deps: [{ token: i1.WorkbenchPartRegistry }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
817
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartActivationInstantProvider, providedIn: 'root' }); }
|
|
818
818
|
}
|
|
819
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
819
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PartActivationInstantProvider, decorators: [{
|
|
820
820
|
type: Injectable,
|
|
821
821
|
args: [{ providedIn: 'root' }]
|
|
822
822
|
}], ctorParameters: () => [{ type: i1.WorkbenchPartRegistry }] });
|
|
@@ -838,10 +838,10 @@ export class ViewActivationInstantProvider {
|
|
|
838
838
|
getActivationInstant(viewId) {
|
|
839
839
|
return this._viewRegistry.get(viewId, { orElse: null })?.activationInstant ?? 0;
|
|
840
840
|
}
|
|
841
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
842
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
841
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewActivationInstantProvider, deps: [{ token: i2.WorkbenchViewRegistry }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
842
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewActivationInstantProvider, providedIn: 'root' }); }
|
|
843
843
|
}
|
|
844
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
844
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ViewActivationInstantProvider, decorators: [{
|
|
845
845
|
type: Injectable,
|
|
846
846
|
args: [{ providedIn: 'root' }]
|
|
847
847
|
}], ctorParameters: () => [{ type: i2.WorkbenchViewRegistry }] });
|
|
@@ -862,4 +862,4 @@ function matchViewById(id) {
|
|
|
862
862
|
function stringifyFilter(filter) {
|
|
863
863
|
return Object.entries(filter).map(([key, value]) => `${key}=${value}`).join(', ');
|
|
864
864
|
}
|
|
865
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiybV3b3JrYmVuY2gtbGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBQyxLQUFLLEVBQWEsU0FBUyxFQUFvQixNQUFNLDBCQUEwQixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsVUFBVSxFQUFPLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLFNBQVMsRUFBaUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUcvRSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFhLHFCQUFxQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUluRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFM0MsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxZQUFZLENBQUM7Ozs7QUFFbEM7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQWEzQixpQkFBaUI7SUFDakIsWUFBWSxNQUE2TDtRQVJ4TCxtQ0FBOEIsR0FBRyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUN2RSxtQ0FBOEIsR0FBRyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUN2RSxnQkFBVyxH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LE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztLQUMvQjtTQUNJO1FBQ0gsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssRUFBRSxDQUFDO0tBQzFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxlQUFlLENBQUMsTUFBcUM7SUFDNUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuaW1wb3J0IHtNUGFydCwgTVBhcnRHcmlkLCBNVHJlZU5vZGUsIE1WaWV3LCDJtU1QYXJ0R3JpZH0gZnJvbSAnLi93b3JrYmVuY2gtbGF5b3V0Lm1vZGVsJztcbmltcG9ydCB7YXNzZXJ0VHlwZX0gZnJvbSAnLi4vY29tbW9uL2Fzc2VydHMudXRpbCc7XG5pbXBvcnQge3JhbmRvbVVVSUQsIFVVSUR9IGZyb20gJy4uL2NvbW1vbi91dWlkLnV0aWwnO1xuaW1wb3J0IHtNQUlOX0FSRUEsIFJlZmVyZW5jZVBhcnQsIFdvcmtiZW5jaExheW91dH0gZnJvbSAnLi93b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0U2VyaWFsaXplcn0gZnJvbSAnLi93b3JrZW5jaC1sYXlvdXQtc2VyaWFsaXplci5zZXJ2aWNlJztcbmltcG9ydCB7V29ya2JlbmNoVmlld1JlZ2lzdHJ5fSBmcm9tICcuLi92aWV3L3dvcmtiZW5jaC12aWV3LnJlZ2lzdHJ5JztcbmltcG9ydCB7V29ya2JlbmNoUGFydFJlZ2lzdHJ5fSBmcm9tICcuLi9wYXJ0L3dvcmtiZW5jaC1wYXJ0LnJlZ2lzdHJ5JztcbmltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIFByZWRpY2F0ZSwgcnVuSW5JbmplY3Rpb25Db250ZXh0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyVXRpbHN9IGZyb20gJy4uL3JvdXRpbmcvcm91dGVyLnV0aWwnO1xuaW1wb3J0IHtDb21tYW5kcywgVmlld091dGxldHMsIFZpZXdTdGF0ZSwgVmlld1N0YXRlc30gZnJvbSAnLi4vcm91dGluZy9yb3V0aW5nLm1vZGVsJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFVybFNlZ21lbnR9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1ZpZXdJZH0gZnJvbSAnLi4vdmlldy93b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5pbXBvcnQge0FycmF5c30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5pbXBvcnQge1VybFNlZ21lbnRNYXRjaGVyfSBmcm9tICcuLi9yb3V0aW5nL3VybC1zZWdtZW50LW1hdGNoZXInO1xuaW1wb3J0IHtPYmplY3RzfSBmcm9tICcuLi9jb21tb24vb2JqZWN0cy51dGlsJztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0c30gZnJvbSAnLi93b3JrYmVuY2gtbGF5b3V0cy51dGlsJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi9sb2dnaW5nJztcblxuLyoqXG4gKiBAaW5oZXJpdERvY1xuICpcbiAqIFRoZSB3b3JrYmVuY2ggbGF5b3V0IGlzIGEgZ3JpZCBvZiBwYXJ0cy4gSXQgY29udGFpbnMgYXQgbGVhc3Qgb25lIHBhcnQuIEEgc3BlY2lhbCBwYXJ0LCB0aGUgbWFpbiBhcmVhIHBhcnQsIGlzIG5vdCBhIHN0YWNrIG9mIHZpZXdzXG4gKiBidXQgZW1iZWRzIGEgc3ViLWdyaWQsIHRoZSBtYWluIGFyZWEgZ3JpZC4gSXQgZGVmaW5lcyB0aGUgYXJyYW5nZW1lbnQgb2YgcGFydHMgaW4gdGhlIG1haW4gYXJlYS4gVGhlIG1haW4gYXJlYSBpcyBvcHRpb25hbC5cbiAqXG4gKiBUaGUgbGF5b3V0IGlzIHNlcmlhbGl6YWJsZSBpbnRvIGEgVVJMLXNhZmUgYmFzZTY0IHN0cmluZy5cbiAqXG4gKiBUaGUgbGF5b3V0IGlzIGFuIGltbXV0YWJsZSBvYmplY3QgdGhhdCBwcm92aWRlcyBtZXRob2RzIHRvIG1vZGlmeSB0aGUgbGF5b3V0LiBNb2RpZmljYXRpb25zIGhhdmUgbm9cbiAqIHNpZGUgZWZmZWN0cy4gRWFjaCBtb2RpZmljYXRpb24gY3JlYXRlcyBhIG5ldyBsYXlvdXQgaW5zdGFuY2UgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZnVydGhlciBtb2RpZmljYXRpb25zLlxuICpcbiAqIElNUE9SVEFOVDogTWV0aG9kcyBzdGFydGluZyB3aXRoIGFuIHVuZGVyc2NvcmUgaW5kaWNhdGUgdGhleSBhcmUgbm90IHdvcmtpbmcgb24gYSB3b3JraW5nIGNvcHksIGJ1dCBtb2RpZnlpbmcgdGhlIGxheW91dCBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGNsYXNzIMm1V29ya2JlbmNoTGF5b3V0IGltcGxlbWVudHMgV29ya2JlbmNoTGF5b3V0IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9ncmlkczogR3JpZHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdPdXRsZXRzOiBNYXA8Vmlld0lkLCBVcmxTZWdtZW50W10+O1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3U3RhdGVzOiBNYXA8Vmlld0lkLCBWaWV3U3RhdGU+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9ncmlkTmFtZXM6IEFycmF5PGtleW9mIEdyaWRzPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFydEFjdGl2YXRpb25JbnN0YW50UHJvdmlkZXIgPSBpbmplY3QoUGFydEFjdGl2YXRpb25JbnN0YW50UHJvdmlkZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3QWN0aXZhdGlvbkluc3RhbnRQcm92aWRlciA9IGluamVjdChWaWV3QWN0aXZhdGlvbkluc3RhbnRQcm92aWRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlcmlhbGl6ZXIgPSBpbmplY3QoV29ya2JlbmNoTGF5b3V0U2VyaWFsaXplcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICBwcml2YXRlIF9tYXhpbWl6ZWQ6IGJvb2xlYW47XG5cbiAgLyoqIEBpbnRlcm5hbCAqKi9cbiAgY29uc3RydWN0b3IoY29uZmlnOiB7d29ya2JlbmNoR3JpZD86IHN0cmluZyB8IE1QYXJ0R3JpZCB8IG51bGw7IG1haW5BcmVhR3JpZD86IHN0cmluZyB8IE1QYXJ0R3JpZCB8IG51bGw7IHZpZXdPdXRsZXRzPzogc3RyaW5nIHwgVmlld091dGxldHMgfCBudWxsOyB2aWV3U3RhdGVzPzogVmlld1N0YXRlcyB8IG51bGw7IG1heGltaXplZD86IGJvb2xlYW59KSB7XG4gICAgdGhpcy5fZ3JpZHMgPSB7XG4gICAgICB3b3JrYmVuY2g6IGNvZXJjZU1QYXJ0R3JpZChjb25maWcud29ya2JlbmNoR3JpZCwge2RlZmF1bHQ6IGNyZWF0ZURlZmF1bHRXb3JrYmVuY2hHcmlkfSksXG4gICAgfTtcbiAgICBpZiAodGhpcy5oYXNQYXJ0KE1BSU5fQVJFQSwge2dyaWQ6ICd3b3JrYmVuY2gnfSkpIHtcbiAgICAgIHRoaXMuX2dyaWRzLm1haW5BcmVhID0gY29lcmNlTVBhcnRHcmlkKGNvbmZpZy5tYWluQXJlYUdyaWQsIHtkZWZhdWx0OiBjcmVhdGVJbml0aWFsTWFpbkFyZWFHcmlkfSk7XG4gICAgfVxuICAgIHRoaXMuX2dyaWROYW1lcyA9IE9iamVjdHMua2V5cyh0aGlzLl9ncmlkcyk7XG4gICAgdGhpcy5fbWF4aW1pemVkID0gY29uZmlnLm1heGltaXplZCA/PyBmYWxzZTtcbiAgICB0aGlzLl92aWV3T3V0bGV0cyA9IG5ldyBNYXA8Vmlld0lkLCBVcmxTZWdtZW50W10+KE9iamVjdHMuZW50cmllcyhjb2VyY2VWaWV3T3V0bGV0cyhjb25maWcudmlld091dGxldHMpKSk7XG4gICAgdGhpcy5fdmlld1N0YXRlcyA9IG5ldyBNYXA8Vmlld0lkLCBWaWV3U3RhdGU+KE9iamVjdHMuZW50cmllcyhjb25maWcudmlld1N0YXRlcyA/PyB7fSkpO1xuICAgIHRoaXMucGFydHMoKS5mb3JFYWNoKHBhcnQgPT4gYXNzZXJ0VHlwZShwYXJ0LCB7dG9CZU9uZU9mOiBbTVRyZWVOb2RlLCBNUGFydF19KSk7XG4gIH1cblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBtYWluIHdvcmtiZW5jaCBncmlkLlxuICAgKi9cbiAgcHVibGljIGdldCB3b3JrYmVuY2hHcmlkKCk6IFJlYWRvbmx5PMm1TVBhcnRHcmlkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2dyaWRzLndvcmtiZW5jaDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIG1haW4gYXJlYSBncmlkLCBpZiBhbnkuXG4gICAqXG4gICAqIFRoZSBtYWluIGFyZWEgZ3JpZCBpcyBhIHN1Yi1ncmlkIGluY2x1ZGVkIGJ5IHRoZSB7QGxpbmsgTUFJTl9BUkVBfSBwYXJ0LiBJdCBkZWZpbmVzIHRoZSBhcnJhbmdlbWVudCBvZiBwYXJ0cyBpbiB0aGUgbWFpbiBhcmVhLlxuICAgKi9cbiAgcHVibGljIGdldCBtYWluQXJlYUdyaWQoKTogUmVhZG9ubHk8ybVNUGFydEdyaWQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2dyaWRzLm1haW5BcmVhID8/IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVGVzdHMgaWYgZ2l2ZW4gcGFydCBpcyBjb250YWluZWQgaW4gdGhlIHNwZWNpZmllZCBncmlkLlxuICAgKi9cbiAgcHVibGljIGhhc1BhcnQoaWQ6IHN0cmluZywgb3B0aW9ucz86IHtncmlkPzoga2V5b2YgR3JpZHN9KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFydCh7cGFydElkOiBpZCwgZ3JpZDogb3B0aW9ucz8uZ3JpZH0sIHtvckVsc2U6IG51bGx9KSAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0cyBpZiBnaXZlbiB2aWV3IGlzIGNvbnRhaW5lZCBpbiB0aGUgc3BlY2lmaWVkIGdyaWQuXG4gICAqL1xuICBwdWJsaWMgaGFzVmlldyhpZDogc3RyaW5nLCBvcHRpb25zPzoge2dyaWQ/OiBrZXlvZiBHcmlkc30pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52aWV3cyh7Z3JpZDogb3B0aW9ucz8uZ3JpZCwgaWQ6IGlkfSkubGVuZ3RoID4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgVVJMIG9mIHZpZXdzIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgZmlsdGVyLlxuICAgKlxuICAgKiBAcGFyYW0gZmluZEJ5IC0gRGVmaW5lcyB0aGUgc2VhcmNoIHNjb3BlLlxuICAgKiBAcGFyYW0gZmluZEJ5LmdyaWQgLSBTZWFyY2hlcyBmb3Igdmlld3MgY29udGFpbmVkIGluIHRoZSBzcGVjaWZpZWQgZ3JpZC5cbiAgICogQHJldHVybiBvdXRsZXRzIG9mIHZpZXdzIG1hdGNoaW5nIHRoZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgdmlld091dGxldHMoZmluZEJ5Pzoge2dyaWQ/OiBrZXlvZiBHcmlkc30pOiBWaWV3T3V0bGV0cyB7XG4gICAgY29uc3Qgdmlld091dGxldEVudHJpZXMgPSB0aGlzLnZpZXdzKHtncmlkOiBmaW5kQnk/LmdyaWR9KS5tYXAodmlldyA9PiBbdmlldy5pZCwgdGhpcy5fdmlld091dGxldHMuZ2V0KHZpZXcuaWQpID8/IFtdXSk7XG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyh2aWV3T3V0bGV0RW50cmllcyk7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIG5hdmlnYXRpb25hbCBzdGF0ZSBvZiB2aWV3cyBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIGZpbHRlci5cbiAgICpcbiAgICogQHBhcmFtIGZpbmRCeSAtIERlZmluZXMgdGhlIHNlYXJjaCBzY29wZS5cbiAgICogQHBhcmFtIGZpbmRCeS5ncmlkIC0gU2VhcmNoZXMgZm9yIHZpZXdzIGNvbnRhaW5lZCBpbiB0aGUgc3BlY2lmaWVkIGdyaWQuXG4gICAqIEByZXR1cm4gdmlldyBzdGF0ZSBtYXRjaGluZyB0aGUgZmlsdGVyIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHZpZXdTdGF0ZXMoZmluZEJ5Pzoge2dyaWQ/OiBrZXlvZiBHcmlkc30pOiBWaWV3U3RhdGVzIHtcbiAgICBjb25zdCB2aWV3U3RhdGVFbnRyaWVzID0gdGhpcy52aWV3cyh7Z3JpZDogZmluZEJ5Py5ncmlkfSkubWFwKHZpZXcgPT4gW3ZpZXcuaWQsIHRoaXMuX3ZpZXdTdGF0ZXMuZ2V0KHZpZXcuaWQpID8/IHt9XSk7XG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyh2aWV3U3RhdGVFbnRyaWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgbmF2aWdhdGlvbmFsIHN0YXRlIG9mIHNwZWNpZmllZCB2aWV3LlxuICAgKi9cbiAgcHVibGljIHZpZXdTdGF0ZShmaW5kQnk6IHt2aWV3SWQ6IFZpZXdJZH0pOiBWaWV3U3RhdGUge1xuICAgIHJldHVybiB0aGlzLl92aWV3U3RhdGVzLmdldChmaW5kQnkudmlld0lkKSA/PyB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgVVJMIG9mIHNwZWNpZmllZCB2aWV3LlxuICAgKi9cbiAgcHVibGljIHVybFNlZ21lbnRzKGZpbmRCeToge3ZpZXdJZDogVmlld0lkfSk6IFVybFNlZ21lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdPdXRsZXRzLmdldChmaW5kQnkudmlld0lkKSA/PyBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgc3RhdGUsIG1heGltaXplcyBvciBtaW5pbWl6ZXMgdGhlIG1haW4gYXJlYS5cbiAgICpcbiAgICogQHJldHVybiBhIGNvcHkgb2YgdGhpcyBsYXlvdXQgd2l0aCB0aGUgbWF4aW1pemF0aW9uIGNoYW5nZWQuXG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlTWF4aW1pemVkKCk6IMm1V29ya2JlbmNoTGF5b3V0IHtcbiAgICBjb25zdCB3b3JraW5nQ29weSA9IHRoaXMud29ya2luZ0NvcHkoKTtcbiAgICB3b3JraW5nQ29weS5fX3RvZ2dsZU1heGltaXplZCgpO1xuICAgIHJldHVybiB3b3JraW5nQ29weTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgbWFpbiBhcmVhIGlzIG1heGltaXplZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgbWF4aW1pemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tYXhpbWl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgcGFydHMgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBmaWx0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBmaW5kQnkgLSBEZWZpbmVzIHRoZSBzZWFyY2ggc2NvcGUuXG4gICAqIEBwYXJhbSBmaW5kQnkuZ3JpZCAtIFNlYXJjaGVzIGZvciBwYXJ0cyBjb250YWluZWQgaW4gdGhlIHNwZWNpZmllZCBncmlkLlxuICAgKiBAcmV0dXJuIHBhcnRzIG1hdGNoaW5nIHRoZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgcGFydHMoZmluZEJ5Pzoge2dyaWQ/OiBrZXlvZiBHcmlkc30pOiByZWFkb25seSBNUGFydFtdIHtcbiAgICByZXR1cm4gdGhpcy5maW5kVHJlZUVsZW1lbnRzKChlbGVtZW50OiBNVHJlZU5vZGUgfCBNUGFydCk6IGVsZW1lbnQgaXMgTVBhcnQgPT4gZWxlbWVudCBpbnN0YW5jZW9mIE1QYXJ0LCB7Z3JpZDogZmluZEJ5Py5ncmlkfSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYSBwYXJ0IGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgZmlsdGVyLiBJZiBub3QgZm91bmQsIGJ5IGRlZmF1bHQsIHRocm93cyBhbiBlcnJvciB1bmxlc3Mgc2V0dGluZyB0aGUgYG9yRWxzZU51bGxgIG9wdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGZpbmRCeSAtIERlZmluZXMgdGhlIHNlYXJjaCBzY29wZS5cbiAgICogQHBhcmFtIGZpbmRCeS5wYXJ0SWQgLSBTZWFyY2hlcyBmb3IgYSBwYXJ0IHdpdGggdGhlIHNwZWNpZmllZCBpZC5cbiAgICogQHBhcmFtIGZpbmRCeS52aWV3SWQgLSBTZWFyY2hlcyBmb3IgYSBwYXJ0IHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCB2aWV3LlxuICAgKiBAcGFyYW0gZmluZEJ5LmdyaWQgLSBTZWFyY2hlcyBmb3IgYSBwYXJ0IGNvbnRhaW5lZCBpbiB0aGUgc3BlY2lmaWVkIGdyaWQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29udHJvbHMgdGhlIHNlYXJjaC5cbiAgICogQHBhcmFtIG9wdGlvbnMub3JFbHNlIC0gQ29udHJvbHMgdG8gcmV0dXJuIGBudWxsYCBpbnN0ZWFkIG9mIHRocm93aW5nIGFuIGVycm9yIGlmIG5vIHBhcnQgaXMgZm91bmQuXG4gICAqIEByZXR1cm4gcGFydCBtYXRjaGluZyB0aGUgZmlsdGVyIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHBhcnQoZmluZEJ5OiB7cGFydElkPzogc3RyaW5nOyB2aWV3SWQ/OiBzdHJpbmc7IGdyaWQ/OiBrZXlvZiBHcmlkc30pOiBNUGFydDtcbiAgcHVibGljIHBhcnQoZmluZEJ5OiB7cGFydElkPzogc3RyaW5nOyB2aWV3SWQ/OiBzdHJpbmc7IGdyaWQ/OiBrZXlvZiBHcmlkc30sIG9wdGlvbnM6IHtvckVsc2U6IG51bGx9KTogTVBhcnQgfCBudWxsO1xuICBwdWJsaWMgcGFydChmaW5kQnk6IHtwYXJ0SWQ/OiBzdHJpbmc7IHZpZXdJZD86IHN0cmluZzsgZ3JpZD86IGtleW9mIEdyaWRzfSwgb3B0aW9ucz86IHtvckVsc2U6IG51bGx9KTogTVBhcnQgfCBudWxsIHtcbiAgICBpZiAoIWZpbmRCeS5wYXJ0SWQgJiYgIWZpbmRCeS52aWV3SWQpIHtcbiAgICAgIHRocm93IEVycm9yKGBbUGFydEZpbmRFcnJvcl0gTWlzc2luZyByZXF1aXJlZCBhcmd1bWVudC4gU3BlY2lmeSBlaXRoZXIgJ3BhcnRJZCcgb3IgJ3ZpZXdJZCcuYCk7XG4gICAgfVxuICAgIGNvbnN0IHBhcnQgPSB0aGlzLmZpbmRUcmVlRWxlbWVudHMoKGVsZW1lbnQ6IE1UcmVlTm9kZSB8IE1QYXJ0KTogZWxlbWVudCBpcyBNUGFydCA9PiB7XG4gICAgICBpZiAoIShlbGVtZW50IGluc3RhbmNlb2YgTVBhcnQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChmaW5kQnkucGFydElkICE9PSB1bmRlZmluZWQgJiYgZWxlbWVudC5pZCAhPT0gZmluZEJ5LnBhcnRJZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoZmluZEJ5LnZpZXdJZCAhPT0gdW5kZWZpbmVkICYmICFlbGVtZW50LnZpZXdzLnNvbWUobWF0Y2hWaWV3QnlJZChmaW5kQnkudmlld0lkISkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sIHtmaW5kRmlyc3Q6IHRydWUsIGdyaWQ6IGZpbmRCeS5ncmlkfSlbMF07XG5cbiAgICBpZiAoIXBhcnQgJiYgIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IEVycm9yKGBbTnVsbFBhcnRFcnJvcl0gTm8gbWF0Y2hpbmcgcGFydCBmb3VuZDogWyR7c3RyaW5naWZ5RmlsdGVyKGZpbmRCeSl9XWApO1xuICAgIH1cbiAgICByZXR1cm4gcGFydCA/PyBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIEBpbmhlcml0RG9jXG4gICAqIEBwYXJhbSByZWxhdGl2ZVRvIC0gQGluaGVyaXREb2NcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBAaW5oZXJpdERvY1xuICAgKiBAcGFyYW0gb3B0aW9ucy5hY3RpdmF0ZSAtIEBpbmhlcml0RG9jXG4gICAqIEBwYXJhbSBvcHRpb25zLnN0cnVjdHVyYWwgLSBTcGVjaWZpZXMgaWYgdGhpcyBpcyBhIHN0cnVjdHVyYWwgcGFydC4gQSBzdHJ1Y3R1cmFsIHBhcnQgd2lsbCBub3QgYmUgcmVtb3ZlZCB3aGVuIHJlbW92aW5nIGl0cyBsYXN0IHZpZXcuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgcHVibGljIGFkZFBhcnQoaWQ6IHN0cmluZyB8IE1BSU5fQVJFQSwgcmVsYXRpdmVUbzogUmVmZXJlbmNlRWxlbWVudCwgb3B0aW9ucz86IHthY3RpdmF0ZT86IGJvb2xlYW47IHN0cnVjdHVyYWw/OiBib29sZWFufSk6IMm1V29ya2JlbmNoTGF5b3V0IHtcbiAgICBjb25zdCB3b3JraW5nQ29weSA9IHRoaXMud29ya2luZ0NvcHkoKTtcbiAgICB3b3JraW5nQ29weS5fX2FkZFBhcnQoaWQsIHJlbGF0aXZlVG8sIG9wdGlvbnMpO1xuICAgIHJldHVybiB3b3JraW5nQ29weTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgcHVibGljIHJlbW92ZVBhcnQoaWQ6IHN0cmluZyk6IMm1V29ya2JlbmNoTGF5b3V0IHtcbiAgICBjb25zdCB3b3JraW5nQ29weSA9IHRoaXMud29ya2luZ0NvcHkoKTtcbiAgICB3b3JraW5nQ29weS5fX3JlbW92ZVBhcnQoaWQpO1xuICAgIHJldHVybiB3b3JraW5nQ29weTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhY3RpdmUgcGFydCBvZiB0aGUgc3BlY2lmaWVkIGdyaWQsIG9yIGBudWxsYCBpZiBzcGVjaWZpZWQgZ3JpZCBpcyBub3QgcHJlc2VudC5cbiAgICovXG4gIHB1YmxpYyBhY3RpdmVQYXJ0KGZpbmQ6IHtncmlkOiAnd29ya2JlbmNoJ30pOiBSZWFkb25seTxNUGFydD47XG4gIHB1YmxpYyBhY3RpdmVQYXJ0KGZpbmQ6IHtncmlkOiBrZXlvZiBHcmlkc30pOiBSZWFkb25seTxNUGFydD4gfCBudWxsO1xuICBwdWJsaWMgYWN0aXZlUGFydChmaW5kOiB7Z3JpZDoga2V5b2YgR3JpZHN9KTogUmVhZG9ubHk8TVBhcnQ+IHwgbnVsbCB7XG4gICAgY29uc3QgZ3JpZCA9IHRoaXMuX2dyaWRzW2ZpbmQuZ3JpZF07XG4gICAgaWYgKCFncmlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGFydCh7cGFydElkOiBncmlkLmFjdGl2ZVBhcnRJZCwgZ3JpZDogZmluZC5ncmlkfSk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIHB1YmxpYyBhY3RpdmF0ZVBhcnQoaWQ6IHN0cmluZyk6IMm1V29ya2JlbmNoTGF5b3V0IHtcbiAgICBjb25zdCB3b3JraW5nQ29weSA9IHRoaXMud29ya2luZ0NvcHkoKTtcbiAgICB3b3JraW5nQ29weS5fX2FjdGl2YXRlUGFydChpZCk7XG4gICAgcmV0dXJuIHdvcmtpbmdDb3B5O1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGEgdmlldyBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIGZpbHRlci4gSWYgbm90IGZvdW5kLCBieSBkZWZhdWx0LCB0aHJvd3MgYW4gZXJyb3IgdW5sZXNzIHNldHRpbmcgdGhlIGBvckVsc2VOdWxsYCBvcHRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBmaW5kQnkgLSBEZWZpbmVzIHRoZSBzZWFyY2ggc2NvcGUuXG4gICAqIEBwYXJhbSBmaW5kQnkudmlld0lkIC0gU2VhcmNoZXMgZm9yIGEgdmlldyB3aXRoIHRoZSBzcGVjaWZpZWQgaWQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29udHJvbHMgdGhlIHNlYXJjaC5cbiAgICogQHBhcmFtIG9wdGlvbnMub3JFbHNlIC0gQ29udHJvbHMgdG8gcmV0dXJuIGBudWxsYCBpbnN0ZWFkIG9mIHRocm93aW5nIGFuIGVycm9yIGlmIG5vIHZpZXcgaXMgZm91bmQuXG4gICAqIEByZXR1cm4gdmlldyBtYXRjaGluZyB0aGUgZmlsdGVyIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHZpZXcoZmluZEJ5OiB7dmlld0lkOiBWaWV3SWR9KTogTVZpZXc7XG4gIHB1YmxpYyB2aWV3KGZpbmRCeToge3ZpZXdJZDogVmlld0lkfSwgb3B0aW9uczoge29yRWxzZTogbnVsbH0pOiBNVmlldyB8IG51bGw7XG4gIHB1YmxpYyB2aWV3KGZpbmRCeToge3ZpZXdJZDogVmlld0lkfSwgb3B0aW9ucz86IHtvckVsc2U6IG51bGx9KTogTVZpZXcgfCBudWxsIHtcbiAgICBjb25zdCB2aWV3ID0gdGhpcy52aWV3cyh7aWQ6IGZpbmRCeS52aWV3SWR9KS5hdCgwKTtcbiAgICBpZiAoIXZpZXcgJiYgIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IEVycm9yKGBbTnVsbFZpZXdFcnJvcl0gTm8gdmlldyBmb3VuZCB3aXRoIGlkICcke2ZpbmRCeS52aWV3SWR9Jy5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHZpZXcgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB2aWV3cyBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIGZpbHRlci5cbiAgICpcbiAgICogQHBhcmFtIGZpbmRCeSAtIERlZmluZXMgdGhlIHNlYXJjaCBzY29wZS5cbiAgICogQHBhcmFtIGZpbmRCeS5pZCAtIFNlYXJjaGVzIGZvciB2aWV3cyB3aXRoIHRoZSBzcGVjaWZpZWQgaWQuXG4gICAqIEBwYXJhbSBmaW5kQnkucGFydElkIC0gU2VhcmNoZXMgZm9yIHZpZXdzIGNvbnRhaW5lZCBpbiB0aGUgc3BlY2lmaWVkIHBhcnQuXG4gICAqIEBwYXJhbSBmaW5kQnkuc2VnbWVudHMgLSBTZWFyY2hlcyBmb3Igdmlld3MgbmF2aWdhdGVkIHRvIHRoZSBzcGVjaWZpZWQgVVJMLlxuICAgKiBAcGFyYW0gZmluZEJ5Lm5hdmlnYXRpb25IaW50IC0gU2VhcmNoZXMgZm9yIHZpZXdzIG5hdmlnYXRlZCB3aXRoIGdpdmVuIGhpbnQuIFBhc3NpbmcgYG51bGxgIHNlYXJjaGVzIGZvciB2aWV3cyBuYXZpZ2F0ZWQgd2l0aG91dCBhIGhpbnQuXG4gICAqIEBwYXJhbSBmaW5kQnkubWFya2VkRm9yUmVtb3ZhbCAtIFNlYXJjaGVzIGZvciB2aWV3cyBtYXJrZWQgKG9yIG5vdCBtYXJrZWQpIGZvciByZW1vdmFsLlxuICAgKiBAcGFyYW0gZmluZEJ5LmdyaWQgLSBTZWFyY2hlcyBmb3Igdmlld3MgY29udGFpbmVkIGluIHRoZSBzcGVjaWZpZWQgZ3JpZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb250cm9scyB0aGUgc2VhcmNoLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5vckVsc2UgLSBDb250cm9scyB0byBlcnJvciBpZiBubyB2aWV3IGlzIGZvdW5kLlxuICAgKiBAcmV0dXJuIHZpZXdzIG1hdGNoaW5nIHRoZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgdmlld3MoZmluZEJ5Pzoge2lkPzogc3RyaW5nOyBwYXJ0SWQ/OiBzdHJpbmc7IHNlZ21lbnRzPzogVXJsU2VnbWVudE1hdGNoZXI7IG5hdmlnYXRpb25IaW50Pzogc3RyaW5nIHwgbnVsbDsgbWFya2VkRm9yUmVtb3ZhbD86IGJvb2xlYW47IGdyaWQ/OiBrZXlvZiBHcmlkc30sIG9wdGlvbnM/OiB7b3JFbHNlOiAndGhyb3dFcnJvcid9KTogcmVhZG9ubHkgTVZpZXdbXSB7XG4gICAgY29uc3Qgdmlld3MgPSB0aGlzLnBhcnRzKHtncmlkOiBmaW5kQnk/LmdyaWR9KVxuICAgICAgLmZpbHRlcihwYXJ0ID0+IHtcbiAgICAgICAgaWYgKGZpbmRCeT8ucGFydElkICE9PSB1bmRlZmluZWQgJiYgcGFydC5pZCAhPT0gZmluZEJ5LnBhcnRJZCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pXG4gICAgICAuZmxhdE1hcChwYXJ0ID0+IHBhcnQudmlld3MpXG4gICAgICAuZmlsdGVyKHZpZXcgPT4ge1xuICAgICAgICBpZiAoZmluZEJ5Py5pZCAhPT0gdW5kZWZpbmVkICYmICFtYXRjaFZpZXdCeUlkKGZpbmRCeS5pZCkodmlldykpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbmRCeT8uc2VnbWVudHMgJiYgIWZpbmRCeS5zZWdtZW50cy5tYXRjaGVzKHRoaXMudXJsU2VnbWVudHMoe3ZpZXdJZDogdmlldy5pZH0pKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmluZEJ5Py5uYXZpZ2F0aW9uSGludCAhPT0gdW5kZWZpbmVkICYmIGZpbmRCeS5uYXZpZ2F0aW9uSGludCAhPT0gKHZpZXcubmF2aWdhdGlvbj8uaGludCA/PyBudWxsKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmluZEJ5Py5tYXJrZWRGb3JSZW1vdmFsICE9PSB1bmRlZmluZWQgJiYgZmluZEJ5Lm1hcmtlZEZvclJlbW92YWwgIT09ICh2aWV3Lm1hcmtlZEZvclJlbW92YWwgPz8gZmFsc2UpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG5cbiAgICBpZiAoZmluZEJ5ICYmICF2aWV3cy5sZW5ndGggJiYgb3B0aW9ucykge1xuICAgICAgdGhyb3cgRXJyb3IoYFtOdWxsVmlld0Vycm9yXSBObyBtYXRjaGluZyB2aWV3IGZvdW5kOiBbJHtzdHJpbmdpZnlGaWx0ZXIoZmluZEJ5KX1dYCk7XG4gICAgfVxuICAgIHJldHVybiB2aWV3cztcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgcHVibGljIGFkZFZpZXcoaWQ6IHN0cmluZywgb3B0aW9uczoge3BhcnRJZDogc3RyaW5nOyBwb3NpdGlvbj86IG51bWJlciB8ICdzdGFydCcgfCAnZW5kJyB8ICdiZWZvcmUtYWN0aXZlLXZpZXcnIHwgJ2FmdGVyLWFjdGl2ZS12aWV3JzsgYWN0aXZhdGVWaWV3PzogYm9vbGVhbjsgYWN0aXZhdGVQYXJ0PzogYm9vbGVhbjsgY3NzQ2xhc3M/OiBzdHJpbmcgfCBzdHJpbmdbXX0pOiDJtVdvcmtiZW5jaExheW91dCB7XG4gICAgY29uc3Qgd29ya2luZ0NvcHkgPSB0aGlzLndvcmtpbmdDb3B5KCk7XG4gICAgaWYgKFdvcmtiZW5jaExheW91dHMuaXNWaWV3SWQoaWQpKSB7XG4gICAgICB3b3JraW5nQ29weS5fX2FkZFZpZXcoe2lkLCB1aWQ6IHJhbmRvbVVVSUQoKX0sIG9wdGlvbnMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHdvcmtpbmdDb3B5Ll9fYWRkVmlldyh7aWQ6IHRoaXMuY29tcHV0ZU5leHRWaWV3SWQoKSwgYWx0ZXJuYXRpdmVJZDogaWQsIHVpZDogcmFuZG9tVVVJRCgpfSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB3b3JraW5nQ29weTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgcHVibGljIG5hdmlnYXRlVmlldyhpZDogc3RyaW5nLCBjb21tYW5kczogQ29tbWFuZHMsIGV4dHJhcz86IHtoaW50Pzogc3RyaW5nOyByZWxhdGl2ZVRvPzogQWN0aXZhdGVkUm91dGUgfCBudWxsOyBzdGF0ZT86IFZpZXdTdGF0ZTsgY3NzQ2xhc3M/OiBzdHJpbmcgfCBzdHJpbmdbXX0pOiDJtVdvcmtiZW5jaExheW91dCB7XG4gICAgY29uc3Qgd29ya2luZ0NvcHkgPSB0aGlzLndvcmtpbmdDb3B5KCk7XG4gICAgd29ya2luZ0NvcHkudmlld3Moe2lkfSwge29yRWxzZTogJ3Rocm93RXJyb3InfSkuZm9yRWFjaCh2aWV3ID0+IHdvcmtpbmdDb3B5Ll9fbmF2aWdhdGVWaWV3KHZpZXcsIGNvbW1hbmRzLCBleHRyYXMpKTtcbiAgICByZXR1cm4gd29ya2luZ0NvcHk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICpcbiAgICogQHBhcmFtIGlkIC0gQGluaGVyaXREb2NcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb250cm9scyByZW1vdmFsIG9mIHRoZSB2aWV3LlxuICAgKiBAcGFyYW0gb3B0aW9ucy5mb3JjZSAtIFNwZWNpZmllcyB3aGV0aGVyIHRvIGZvcmNlIHJlbW92ZSB0aGUgdmlldywgYnlwYXNzaW5nIGBDYW5DbG9zZWAgZ3VhcmQuXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlVmlldyhpZDogc3RyaW5nLCBvcHRpb25zPzoge2ZvcmNlPzogYm9vbGVhbn0pOiDJtVdvcmtiZW5jaExheW91dCB7XG4gICAgY29uc3Qgd29ya2luZ0NvcHkgPSB0aGlzLndvcmtpbmdDb3B5KCk7XG4gICAgd29ya2luZ0NvcHkudmlld3Moe2lkfSwge29yRWxzZTogJ3Rocm93RXJyb3InfSkuZm9yRWFjaCh2aWV3ID0+IHdvcmtpbmdDb3B5Ll9fcmVtb3ZlVmlldyh2aWV3LCB7Zm9yY2U6IG9wdGlvbnM/LmZvcmNlfSkpO1xuICAgIHJldHVybiB3b3JraW5nQ29weTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHZpZXdzIG1hcmtlZCBmb3IgcmVtb3ZhbCwgb3B0aW9uYWxseSBpbnZva2luZyB0aGUgcGFzc2VkIGBDYW5DbG9zZWAgZnVuY3Rpb24gdG8gZGVjaWRlIHdoZXRoZXIgdG8gcmVtb3ZlIGEgdmlldy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZW1vdmVWaWV3c01hcmtlZEZvclJlbW92YWwoY2FuQ2xvc2VGbj86ICh2aWV3VWlkOiBVVUlEKSA9PiBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbik6IFByb21pc2U8ybVXb3JrYmVuY2hMYXlvdXQ+IHtcbiAgICBjb25zdCB3b3JraW5nQ29weSA9IHRoaXMud29ya2luZ0NvcHkoKTtcbiAgICBmb3IgKGNvbnN0IHZpZXcgb2Ygd29ya2luZ0NvcHkudmlld3Moe21hcmtlZEZvclJlbW92YWw6IHRydWV9KSkge1xuICAgICAgaWYgKCFjYW5DbG9zZUZuIHx8IGF3YWl0IGNhbkNsb3NlRm4odmlldy51aWQpKSB7XG4gICAgICAgIHdvcmtpbmdDb3B5Ll9fcmVtb3ZlVmlldyh2aWV3LCB7Zm9yY2U6IHRydWV9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHdvcmtpbmdDb3B5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBwdWJsaWMgbW92ZVZpZXcoaWQ6IHN0cmluZywgdGFyZ2V0UGFydElkOiBzdHJpbmcsIG9wdGlvbnM/OiB7cG9zaXRpb24/OiBudW1iZXIgfCAnc3RhcnQnIHwgJ2VuZCcgfCAnYmVmb3JlLWFjdGl2ZS12aWV3JyB8ICdhZnRlci1hY3RpdmUtdmlldyc7IGFjdGl2YXRlVmlldz86IGJvb2xlYW47IGFjdGl2YXRlUGFydD86IGJvb2xlYW59KTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIGNvbnN0IHdvcmtpbmdDb3B5ID0gdGhpcy53b3JraW5nQ29weSgpO1xuICAgIHdvcmtpbmdDb3B5LnZpZXdzKHtpZH0sIHtvckVsc2U6ICd0aHJvd0Vycm9yJ30pLmZvckVhY2godmlldyA9PiB3b3JraW5nQ29weS5fX21vdmVWaWV3KHZpZXcsIHRhcmdldFBhcnRJZCwgb3B0aW9ucykpO1xuICAgIHJldHVybiB3b3JraW5nQ29weTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgcHVibGljIGFjdGl2YXRlVmlldyhpZDogc3RyaW5nLCBvcHRpb25zPzoge2FjdGl2YXRlUGFydD86IGJvb2xlYW59KTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIGNvbnN0IHdvcmtpbmdDb3B5ID0gdGhpcy53b3JraW5nQ29weSgpO1xuICAgIHdvcmtpbmdDb3B5LnZpZXdzKHtpZH0sIHtvckVsc2U6ICd0aHJvd0Vycm9yJ30pLmZvckVhY2godmlldyA9PiB3b3JraW5nQ29weS5fX2FjdGl2YXRlVmlldyh2aWV3LCBvcHRpb25zKSk7XG4gICAgcmV0dXJuIHdvcmtpbmdDb3B5O1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlcyB0aGUgcHJlY2VkaW5nIHZpZXcgaWYgaXQgZXhpc3RzLCBvciB0aGUgc3Vic2VxdWVudCB2aWV3IG90aGVyd2lzZS5cbiAgICpcbiAgICogQHBhcmFtIGlkIC0gVGhlIGlkIG9mIHRoZSB2aWV3IHRvIGFjdGl2YXRlIGl0cyBhZGphY2VudCB2aWV3LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbnRyb2xzIHZpZXcgYWN0aXZhdGlvbi5cbiAgICogQHBhcmFtIG9wdGlvbnMuYWN0aXZhdGVQYXJ0IC0gQ29udHJvbHMgaWYgdG8gYWN0aXZhdGUgdGhlIHBhcnQuIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgICogQHJldHVybiBhIGNvcHkgb2YgdGhpcyBsYXlvdXQgd2l0aCB0aGUgYWRqYWNlbnQgdmlldyBhY3RpdmF0ZWQuXG4gICAqL1xuICBwdWJsaWMgYWN0aXZhdGVBZGphY2VudFZpZXcoaWQ6IHN0cmluZywgb3B0aW9ucz86IHthY3RpdmF0ZVBhcnQ/OiBib29sZWFufSk6IMm1V29ya2JlbmNoTGF5b3V0IHtcbiAgICBjb25zdCB3b3JraW5nQ29weSA9IHRoaXMud29ya2luZ0NvcHkoKTtcbiAgICB3b3JraW5nQ29weS52aWV3cyh7aWR9LCB7b3JFbHNlOiAndGhyb3dFcnJvcid9KS5mb3JFYWNoKHZpZXcgPT4gd29ya2luZ0NvcHkuX19hY3RpdmF0ZUFkamFjZW50Vmlldyh2aWV3LCBvcHRpb25zKSk7XG4gICAgcmV0dXJuIHdvcmtpbmdDb3B5O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmFtZXMgYSB2aWV3LlxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgaWQgb2YgdGhlIHZpZXcgd2hpY2ggdG8gcmVuYW1lLlxuICAgKiBAcGFyYW0gbmV3Vmlld0lkIC0gVGhlIG5ldyBpZGVudGl0eSBvZiB0aGUgdmlldy5cbiAgICogQHJldHVybiBhIGNvcHkgb2YgdGhpcyBsYXlvdXQgd2l0aCB0aGUgdmlldyByZW5hbWVkLlxuICAgKi9cbiAgcHVibGljIHJlbmFtZVZpZXcoaWQ6IFZpZXdJZCwgbmV3Vmlld0lkOiBWaWV3SWQpOiDJtVdvcmtiZW5jaExheW91dCB7XG4gICAgY29uc3Qgd29ya2luZ0NvcHkgPSB0aGlzLndvcmtpbmdDb3B5KCk7XG4gICAgd29ya2luZ0NvcHkuX19yZW5hbWVWaWV3KHdvcmtpbmdDb3B5LnZpZXcoe3ZpZXdJZDogaWR9KSwgbmV3Vmlld0lkKTtcbiAgICByZXR1cm4gd29ya2luZ0NvcHk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc3BsaXQgcmF0aW8gZm9yIHRoZSB0d28gY2hpbGRyZW4gb2YgYSB7QGxpbmsgTVRyZWVOb2RlfS5cbiAgICpcbiAgICogQHBhcmFtIG5vZGVJZCAtIFRoZSBpZCBvZiB0aGUgbm9kZSB0byBzZXQgdGhlIHNwbGl0IHJhdGlvIGZvci5cbiAgICogQHBhcmFtIHJhdGlvIC0gVGhlIHByb3BvcnRpb25hbCBzaXplIGJldHdlZW4gdGhlIHR3byBjaGlsZHJlbiwgZXhwcmVzc2VkIGFzIGNsb3NlZCBpbnRlcnZhbCBbMCwxXS5cbiAgICogICAgICAgICAgICAgICAgRXhhbXBsZTogVG8gZ2l2ZSAxLzMgb2YgdGhlIHNwYWNlIHRvIHRoZSBmaXJzdCBjaGlsZCwgc2V0IHRoZSByYXRpbyB0byBgMC4zYC5cbiAgICogQHJldHVybiBhIGNvcHkgb2YgdGhpcyBsYXlvdXQgd2l0aCB0aGUgc3BsaXQgcmF0aW8gc2V0LlxuICAgKi9cbiAgcHVibGljIHNldFNwbGl0UmF0aW8obm9kZUlkOiBzdHJpbmcsIHJhdGlvOiBudW1iZXIpOiDJtVdvcmtiZW5jaExheW91dCB7XG4gICAgY29uc3Qgd29ya2luZ0NvcHkgPSB0aGlzLndvcmtpbmdDb3B5KCk7XG4gICAgd29ya2luZ0NvcHkuX19zZXRTcGxpdFJhdGlvKG5vZGVJZCwgcmF0aW8pO1xuICAgIHJldHVybiB3b3JraW5nQ29weTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIHRoaXMgbGF5b3V0IGludG8gYSBVUkwtc2FmZSBiYXNlNjQgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIHNlcmlhbGl6ZSgpOiBTZXJpYWxpemVkV29ya2JlbmNoTGF5b3V0IHtcbiAgICBjb25zdCBpc01haW5BcmVhRW1wdHkgPSAodGhpcy5tYWluQXJlYUdyaWQ/LnJvb3QgaW5zdGFuY2VvZiBNUGFydCAmJiB0aGlzLm1haW5BcmVhR3JpZC5yb290LnZpZXdzLmxlbmd0aCA9PT0gMCkgPz8gdHJ1ZTtcbiAgICByZXR1cm4ge1xuICAgICAgd29ya2JlbmNoR3JpZDogdGhpcy5fc2VyaWFsaXplci5zZXJpYWxpemVHcmlkKHRoaXMud29ya2JlbmNoR3JpZCksXG4gICAgICBtYWluQXJlYUdyaWQ6IGlzTWFpbkFyZWFFbXB0eSA/IG51bGwgOiB0aGlzLl9zZXJpYWxpemVyLnNlcmlhbGl6ZUdyaWQodGhpcy5fZ3JpZHMubWFpbkFyZWEpLFxuICAgICAgd29ya2JlbmNoVmlld091dGxldHM6IHRoaXMuX3NlcmlhbGl6ZXIuc2VyaWFsaXplVmlld091dGxldHModGhpcy52aWV3T3V0bGV0cyh7Z3JpZDogJ3dvcmtiZW5jaCd9KSksXG4gICAgICBtYWluQXJlYVZpZXdPdXRsZXRzOiB0aGlzLl9zZXJpYWxpemVyLnNlcmlhbGl6ZVZpZXdPdXRsZXRzKHRoaXMudmlld091dGxldHMoe2dyaWQ6ICdtYWluQXJlYSd9KSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgbmV4dCBhdmFpbGFibGUgdmlldyBpZC5cbiAgICovXG4gIHB1YmxpYyBjb21wdXRlTmV4dFZpZXdJZCgpOiBWaWV3SWQge1xuICAgIHJldHVybiBXb3JrYmVuY2hMYXlvdXRzLmNvbXB1dGVOZXh0Vmlld0lkKHRoaXMudmlld3MoKS5tYXAodmlldyA9PiB2aWV3LmlkKSk7XG4gIH1cblxuICAvKipcbiAgICogTm90ZTogVGhpcyBtZXRob2QgbmFtZSBiZWdpbnMgd2l0aCB1bmRlcnNjb3JlcywgaW5kaWNhdGluZyB0aGF0IGl0IGRvZXMgbm90IG9wZXJhdGUgb24gYSB3b3JraW5nIGNvcHksIGJ1dCBtb2RpZmllcyB0aGlzIGxheW91dCBpbnN0ZWFkLlxuICAgKi9cbiAgcHJpdmF0ZSBfX2FkZFBhcnQoaWQ6IHN0cmluZywgcmVsYXRpdmVUbzogUmVmZXJlbmNlRWxlbWVudCwgb3B0aW9ucz86IHthY3RpdmF0ZT86IGJvb2xlYW47IHN0cnVjdHVyYWw/OiBib29sZWFufSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc1BhcnQoaWQpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgW1BhcnRBZGRFcnJvcl0gUGFydCBpZCBtdXN0IGJlIHVuaXF1ZS4gVGhlIGxheW91dCBhbHJlYWR5IGNvbnRhaW5zIGEgcGFydCB3aXRoIHRoZSBpZCAnJHtpZH0nLmApO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1BhcnQgPSBuZXcgTVBhcnQoe2lkLCBzdHJ1Y3R1cmFsOiBvcHRpb25zPy5zdHJ1Y3R1cmFsID8/IHRydWUsIHZpZXdzOiBbXX0pO1xuXG4gICAgLy8gRmluZCB0aGUgcmVmZXJlbmNlIGVsZW1lbnQsIGlmIHNwZWNpZmllZCwgb3IgdXNlIHRoZSBsYXlvdXQgcm9vdCBhcyByZWZlcmVuY2Ugb3RoZXJ3aXNlLlxuICAgIGNvbnN0IHJlZmVyZW5jZUVsZW1lbnQgPSByZWxhdGl2ZVRvLnJlbGF0aXZlVG8gPyB0aGlzLmZpbmRUcmVlRWxlbWVudCh7aWQ6IHJlbGF0aXZlVG8ucmVsYXRpdmVUb30pIDogdGhpcy53b3JrYmVuY2hHcmlkLnJvb3Q7XG4gICAgY29uc3QgYWRkQmVmb3JlID0gcmVsYXRpdmVUby5hbGlnbiA9PT0gJ2xlZnQnIHx8IHJlbGF0aXZlVG8uYWxpZ24gPT09ICd0b3AnO1xuICAgIGNvbnN0IHJhdGlvID0gcmVsYXRpdmVUby5yYXRpbyA/PyAuNTtcblxuICAgIC8vIENyZWF0ZSBhIG5ldyB0cmVlIG5vZGUuXG4gICAgY29uc3QgbmV3VHJlZU5vZGU6IE1UcmVlTm9kZSA9IG5ldyBNVHJlZU5vZGUoe1xuICAgICAgbm9kZUlkOiByYW5kb21VVUlEKCksXG4gICAgICBjaGlsZDE6IGFkZEJlZm9yZSA/IG5ld1BhcnQgOiByZWZlcmVuY2VFbGVtZW50LFxuICAgICAgY2hpbGQyOiBhZGRCZWZvcmUgPyByZWZlcmVuY2VFbGVtZW50IDogbmV3UGFydCxcbiAgICAgIGRpcmVjdGlvbjogcmVsYXRpdmVUby5hbGlnbiA9PT0gJ2xlZnQnIHx8IHJlbGF0aXZlVG8uYWxpZ24gPT09ICdyaWdodCcgPyAncm93JyA6ICdjb2x1bW4nLFxuICAgICAgcmF0aW86IGFkZEJlZm9yZSA/IHJhdGlvIDogMSAtIHJhdGlvLFxuICAgICAgcGFyZW50OiByZWZlcmVuY2VFbGVtZW50LnBhcmVudCxcbiAgICB9KTtcblxuICAgIC8vIEFkZCB0aGUgdHJlZSBub2RlIHRvIHRoZSBsYXlvdXQuXG4gICAgaWYgKCFyZWZlcmVuY2VFbGVtZW50LnBhcmVudCkge1xuICAgICAgdGhpcy5ncmlkKHtlbGVtZW50OiByZWZlcmVuY2VFbGVtZW50fSkucm9vdCA9IG5ld1RyZWVOb2RlOyAvLyB0b3AtbGV2ZWwgbm9kZVxuICAgIH1cbiAgICBlbHNlIGlmIChyZWZlcmVuY2VFbGVtZW50LnBhcmVudC5jaGlsZDEgPT09IHJlZmVyZW5jZUVsZW1lbnQpIHtcbiAgICAgIHJlZmVyZW5jZUVsZW1lbnQucGFyZW50LmNoaWxkMSA9IG5ld1RyZWVOb2RlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJlZmVyZW5jZUVsZW1lbnQucGFyZW50LmNoaWxkMiA9IG5ld1RyZWVOb2RlO1xuICAgIH1cbiAgICByZWZlcmVuY2VFbGVtZW50LnBhcmVudCA9IG5ld1RyZWVOb2RlO1xuICAgIG5ld1BhcnQucGFyZW50ID0gbmV3VHJlZU5vZGU7XG5cbiAgICAvLyBBY3RpdmF0ZSB0aGUgcGFydC5cbiAgICBpZiAob3B0aW9ucz8uYWN0aXZhdGUpIHtcbiAgICAgIHRoaXMuX19hY3RpdmF0ZVBhcnQobmV3UGFydC5pZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5vdGU6IFRoaXMgbWV0aG9kIG5hbWUgYmVnaW5zIHdpdGggdW5kZXJzY29yZXMsIGluZGljYXRpbmcgdGhhdCBpdCBkb2VzIG5vdCBvcGVyYXRlIG9uIGEgd29ya2luZyBjb3B5LCBidXQgbW9kaWZpZXMgdGhpcyBsYXlvdXQgaW5zdGVhZC5cbiAgICovXG4gIHByaXZhdGUgX19yZW1vdmVQYXJ0KGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJ0ID0gdGhpcy5wYXJ0KHtwYXJ0SWQ6IGlkfSk7XG4gICAgY29uc3QgZ3JpZCA9IHRoaXMuZ3JpZCh7ZWxlbWVudDogcGFydH0pO1xuICAgIGNvbnN0IGdyaWROYW1lID0gdGhpcy5fZ3JpZE5hbWVzLmZpbmQoZ3JpZE5hbWUgPT4gdGhpcy5fZ3JpZHNbZ3JpZE5hbWVdID09PSBncmlkKTtcblxuICAgIC8vIFRoZSBsYXN0IHBhcnQgaXMgbmV2ZXIgcmVtb3ZlZC5cbiAgICBjb25zdCBwYXJ0cyA9IHRoaXMucGFydHMoe2dyaWQ6IGdyaWROYW1lfSk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSB0aGUgcGFydC5cbiAgICBjb25zdCBzaWJsaW5nRWxlbWVudCA9IChwYXJ0LnBhcmVudCEuY2hpbGQxID09PSBwYXJ0ID8gcGFydC5wYXJlbnQhLmNoaWxkMiA6IHBhcnQucGFyZW50IS5jaGlsZDEpO1xuICAgIGlmICghcGFydC5wYXJlbnQhLnBhcmVudCkge1xuICAgICAgZ3JpZC5yb290ID0gc2libGluZ0VsZW1lbnQ7XG4gICAgICBncmlkLnJvb3QucGFyZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBlbHNlIGlmIChwYXJ0LnBhcmVudCEucGFyZW50LmNoaWxkMSA9PT0gcGFydC5wYXJlbnQpIHtcbiAgICAgIHBhcnQucGFyZW50IS5wYXJlbnQuY2hpbGQxID0gc2libGluZ0VsZW1lbnQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcGFydC5wYXJlbnQhLnBhcmVudC5jaGlsZDIgPSBzaWJsaW5nRWxlbWVudDtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgb3V0bGV0cyBhbmQgc3RhdGVzIG9mIHZpZXdzIGNvbnRhaW5lZCBpbiB0aGUgcGFydC5cbiAgICBwYXJ0LnZpZXdzLmZvckVhY2godmlldyA9PiB7XG4gICAgICB0aGlzLl92aWV3T3V0bGV0cy5kZWxldGUodmlldy5pZCk7XG4gICAgICB0aGlzLl92aWV3U3RhdGVzLmRlbGV0ZSh2aWV3LmlkKTtcbiAgICB9KTtcblxuICAgIC8vIElmIHRoZSByZW1vdmVkIHBhcnQgd2FzIHRoZSBhY3RpdmUgcGFydCwgbWFrZSB0aGUgbGFzdCB1c2VkIHBhcnQgdGhlIGFjdGl2ZSBwYXJ0LlxuICAgIGlmIChncmlkLmFjdGl2ZVBhcnRJZCA9PT0gaWQpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVBhcnQgPSBwYXJ0c1xuICAgICAgICAuZmlsdGVyKHBhcnQgPT4gcGFydC5pZCAhPT0gaWQpXG4gICAgICAgIC5zb3J0KChwYXJ0MSwgcGFydDIpID0+IHtcbiAgICAgICAgICBjb25zdCBhY3RpdmF0aW9uSW5zdGFudFBhcnQxID0gdGhpcy5fcGFydEFjdGl2YXRpb25JbnN0YW50UHJvdmlkZXIuZ2V0QWN0aXZhdGlvbkluc3RhbnQocGFydDEuaWQpO1xuICAgICAgICAgIGNvbnN0IGFjdGl2YXRpb25JbnN0YW50UGFydDIgPSB0aGlzLl9wYXJ0QWN0aXZhdGlvbkluc3RhbnRQcm92aWRlci5nZXRBY3RpdmF0aW9uSW5zdGFudChwYXJ0Mi5pZCk7XG4gICAgICAgICAgcmV0dXJuIGFjdGl2YXRpb25JbnN0YW50UGFydDIgLSBhY3RpdmF0aW9uSW5zdGFudFBhcnQxO1xuICAgICAgICB9KVswXTtcbiAgICAgIGdyaWQuYWN0aXZlUGFydElkID0gYWN0aXZlUGFydCEuaWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5vdGU6IFRoaXMgbWV0aG9kIG5hbWUgYmVnaW5zIHdpdGggdW5kZXJzY29yZXMsIGluZGljYXRpbmcgdGhhdCBpdCBkb2VzIG5vdCBvcGVyYXRlIG9uIGEgd29ya2luZyBjb3B5LCBidXQgbW9kaWZpZXMgdGhpcyBsYXlvdXQgaW5zdGVhZC5cbiAgICovXG4gIHByaXZhdGUgX19hZGRWaWV3KHZpZXc6IE1WaWV3LCBvcHRpb25zOiB7cGFydElkOiBzdHJpbmc7IHBvc2l0aW9uPzogbnVtYmVyIHwgJ3N0YXJ0JyB8ICdlbmQnIHwgJ2JlZm9yZS1hY3RpdmUtdmlldycgfCAnYWZ0ZXItYWN0aXZlLXZpZXcnOyBhY3RpdmF0ZVZpZXc/OiBib29sZWFuOyBhY3RpdmF0ZVBhcnQ/OiBib29sZWFuOyBjc3NDbGFzcz86IHN0cmluZyB8IHN0cmluZ1tdfSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc1ZpZXcodmlldy5pZCkpIHtcbiAgICAgIHRocm93IEVycm9yKGBbVmlld0FkZEVycm9yXSBWaWV3IGlkIG11c3QgYmUgdW5pcXVlLiBUaGUgbGF5b3V0IGFscmVhZHkgY29udGFpbnMgYSB2aWV3IHdpdGggdGhlIGlkICcke3ZpZXcuaWR9Jy5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0ID0gdGhpcy5wYXJ0KHtwYXJ0SWQ6IG9wdGlvbnMucGFydElkfSk7XG4gICAgY29uc3QgcG9zaXRpb24gPSBjb2VyY2VQb3NpdGlvbihvcHRpb25zLnBvc2l0aW9uID8/ICdlbmQnLCBwYXJ0KTtcbiAgICBwYXJ0LnZpZXdzLnNwbGljZShwb3NpdGlvbiwgMCwgdmlldyk7XG5cbiAgICBpZiAob3B0aW9ucy5hY3RpdmF0ZVZpZXcpIHtcbiAgICAgIHRoaXMuX19hY3RpdmF0ZVZpZXcodmlldyk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmFjdGl2YXRlUGFydCkge1xuICAgICAgdGhpcy5fX2FjdGl2YXRlUGFydChvcHRpb25zLnBhcnRJZCk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmNzc0NsYXNzKSB7XG4gICAgICB2aWV3LmNzc0NsYXNzID0gQXJyYXlzLmNvZXJjZShvcHRpb25zLmNzc0NsYXNzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTm90ZTogVGhpcyBtZXRob2QgbmFtZSBiZWdpbnMgd2l0aCB1bmRlcnNjb3JlcywgaW5kaWNhdGluZyB0aGF0IGl0IGRvZXMgbm90IG9wZXJhdGUgb24gYSB3b3JraW5nIGNvcHksIGJ1dCBtb2RpZmllcyB0aGlzIGxheW91dCBpbnN0ZWFkLlxuICAgKi9cbiAgcHJpdmF0ZSBfX25hdmlnYXRlVmlldyh2aWV3OiBNVmlldywgY29tbWFuZHM6IENvbW1hbmRzLCBleHRyYXM/OiB7aGludD86IHN0cmluZzsgcmVsYXRpdmVUbz86IEFjdGl2YXRlZFJvdXRlIHwgbnVsbDsgc3RhdGU/OiBWaWV3U3RhdGU7IGNzc0NsYXNzPzogc3RyaW5nIHwgc3RyaW5nW119KTogdm9pZCB7XG4gICAgaWYgKCFjb21tYW5kcy5sZW5ndGggJiYgIWV4dHJhcz8uaGludCAmJiAhZXh0cmFzPy5yZWxhdGl2ZVRvKSB7XG4gICAgICB0aHJvdyBFcnJvcignW05hdmlnYXRlRXJyb3JdIENvbW1hbmRzLCByZWxhdGl2ZVRvIG9yIGhpbnQgbXVzdCBiZSBzZXQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsU2VnbWVudHMgPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5faW5qZWN0b3IsICgpID0+IFJvdXRlclV0aWxzLmNvbW1hbmRzVG9TZWdtZW50cyhjb21tYW5kcywge3JlbGF0aXZlVG86IGV4dHJhcz8ucmVsYXRpdmVUb30pKTtcbiAgICBpZiAodXJsU2VnbWVudHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLl92aWV3T3V0bGV0cy5zZXQodmlldy5pZCwgdXJsU2VnbWVudHMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX3ZpZXdPdXRsZXRzLmRlbGV0ZSh2aWV3LmlkKTtcbiAgICB9XG5cbiAgICBpZiAoZXh0cmFzPy5zdGF0ZSAmJiBPYmplY3RzLmtleXMoZXh0cmFzLnN0YXRlKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX3ZpZXdTdGF0ZXMuc2V0KHZpZXcuaWQsIGV4dHJhcy5zdGF0ZSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fdmlld1N0YXRlcy5kZWxldGUodmlldy5pZCk7XG4gICAgfVxuXG4gICAgdmlldy5uYXZpZ2F0aW9uID0gT2JqZWN0cy53aXRob3V0VW5kZWZpbmVkRW50cmllcyh7XG4gICAgICBoaW50OiBleHRyYXM/LmhpbnQsXG4gICAgICBjc3NDbGFzczogZXh0cmFzPy5jc3NDbGFzcyA/IEFycmF5cy5jb2VyY2UoZXh0cmFzLmNzc0NsYXNzKSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RlOiBUaGlzIG1ldGhvZCBuYW1lIGJlZ2lucyB3aXRoIHVuZGVyc2NvcmVzLCBpbmRpY2F0aW5nIHRoYXQgaXQgZG9lcyBub3Qgb3BlcmF0ZSBvbiBhIHdvcmtpbmcgY29weSwgYnV0IG1vZGlmaWVzIHRoaXMgbGF5b3V0IGluc3RlYWQuXG4gICAqL1xuICBwcml2YXRlIF9fbW92ZVZpZXcodmlldzogTVZpZXcsIHRhcmdldFBhcnRJZDogc3RyaW5nLCBvcHRpb25zPzoge3Bvc2l0aW9uPzogbnVtYmVyIHwgJ3N0YXJ0JyB8ICdlbmQnIHwgJ2JlZm9yZS1hY3RpdmUtdmlldycgfCAnYWZ0ZXItYWN0aXZlLXZpZXcnOyBhY3RpdmF0ZVZpZXc/OiBib29sZWFuOyBhY3RpdmF0ZVBhcnQ/OiBib29sZWFufSk6IHZvaWQge1xuICAgIGNvbnN0IHNvdXJjZVBhcnQgPSB0aGlzLnBhcnQoe3ZpZXdJZDogdmlldy5pZH0pO1xuICAgIGNvbnN0IHRhcmdldFBhcnQgPSB0aGlzLnBhcnQoe3BhcnRJZDogdGFyZ2V0UGFydElkfSk7XG5cbiAgICAvLyBNb3ZlIHRoZSB2aWV3LlxuICAgIGlmIChzb3VyY2VQYXJ0ICE9PSB0YXJnZXRQYXJ0KSB7XG4gICAgICB0aGlzLl9fcmVtb3ZlVmlldyh2aWV3LCB7cmVtb3ZlT3V0bGV0OiBmYWxzZSwgcmVtb3ZlU3RhdGU6IGZhbHNlLCBmb3JjZTogdHJ1ZX0pO1xuICAgICAgdGhpcy5fX2FkZFZpZXcodmlldywge3BhcnRJZDogdGFyZ2V0UGFydElkLCBwb3NpdGlvbjogb3B0aW9ucz8ucG9zaXRpb259KTtcbiAgICB9XG4gICAgZWxzZSBpZiAob3B0aW9ucz8ucG9zaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPSBjb2VyY2VQb3NpdGlvbihvcHRpb25zLnBvc2l0aW9uLCB0YXJnZXRQYXJ0KTtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZVZpZXc6IE1WaWV3IHwgdW5kZWZpbmVkID0gc291cmNlUGFydC52aWV3cy5hdChwb3NpdGlvbik7XG4gICAgICBzb3VyY2VQYXJ0LnZpZXdzLnNwbGljZShzb3VyY2VQYXJ0LnZpZXdzLmluZGV4T2YodmlldyksIDEpO1xuICAgICAgc291cmNlUGFydC52aWV3cy5zcGxpY2UocmVmZXJlbmNlVmlldyA/IHNvdXJjZVBhcnQudmlld3MuaW5kZXhPZihyZWZlcmVuY2VWaWV3KSA6IHNvdXJjZVBhcnQudmlld3MubGVuZ3RoLCAwLCB2aWV3KTtcbiAgICB9XG5cbiAgICAvLyBBY3RpdmF0ZSB2aWV3IGFuZCBwYXJ0LlxuICAgIGlmIChvcHRpb25zPy5hY3RpdmF0ZVBhcnQpIHtcbiAgICAgIHRoaXMuX19hY3RpdmF0ZVBhcnQodGFyZ2V0UGFydElkKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LmFjdGl2YXRlVmlldykge1xuICAgICAgdGhpcy5fX2FjdGl2YXRlVmlldyh2aWV3KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTm90ZTogVGhpcyBtZXRob2QgbmFtZSBiZWdpbnMgd2l0aCB1bmRlcnNjb3JlcywgaW5kaWNhdGluZyB0aGF0IGl0IGRvZXMgbm90IG9wZXJhdGUgb24gYSB3b3JraW5nIGNvcHksIGJ1dCBtb2RpZmllcyB0aGlzIGxheW91dCBpbnN0ZWFkLlxuICAgKi9cbiAgcHJpdmF0ZSBfX3JlbW92ZVZpZXcodmlldzogTVZpZXcsIG9wdGlvbnM/OiB7cmVtb3ZlT3V0bGV0PzogZmFsc2U7IHJlbW92ZVN0YXRlPzogZmFsc2U7IGZvcmNlPzogYm9vbGVhbn0pOiB2b2lkIHtcbiAgICBpZiAoIW9wdGlvbnM/LmZvcmNlKSB7XG4gICAgICB2aWV3Lm1hcmtlZEZvclJlbW92YWwgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnQgPSB0aGlzLnBhcnQoe3ZpZXdJZDogdmlldy5pZH0pO1xuXG4gICAgLy8gUmVtb3ZlIHZpZXcuXG4gICAgcGFydC52aWV3cy5zcGxpY2UocGFydC52aWV3cy5pbmRleE9mKHZpZXcpLCAxKTtcblxuICAgIC8vIFJlbW92ZSBvdXRsZXQuXG4gICAgaWYgKG9wdGlvbnM/LnJlbW92ZU91dGxldCA/PyB0cnVlKSB7XG4gICAgICB0aGlzLl92aWV3T3V0bGV0cy5kZWxldGUodmlldy5pZCk7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHN0YXRlLlxuICAgIGlmIChvcHRpb25zPy5yZW1vdmVTdGF0ZSA/PyB0cnVlKSB7XG4gICAgICB0aGlzLl92aWV3U3RhdGVzLmRlbGV0ZSh2aWV3LmlkKTtcbiAgICB9XG5cbiAgICAvLyBBY3RpdmF0ZSB0aGUgbGFzdCB1c2VkIHZpZXcgaWYgdGhpcyB2aWV3IHdhcyBhY3RpdmUuXG4gICAgaWYgKHBhcnQuYWN0aXZlVmlld0lkID09PSB2aWV3LmlkKSB7XG4gICAgICBwYXJ0LmFjdGl2ZVZpZXdJZCA9IHBhcnQudmlld3NcbiAgICAgICAgLm1hcCh2aWV3ID0+IHZpZXcuaWQpXG4gICAgICAgIC5zb3J0KCh2aWV3SWQxLCB2aWV3SWQyKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWN0aXZhdGlvbkluc3RhbnRWaWV3MSA9IHRoaXMuX3ZpZXdBY3RpdmF0aW9uSW5zdGFudFByb3ZpZGVyLmdldEFjdGl2YXRpb25JbnN0YW50KHZpZXdJZDEpO1xuICAgICAgICAgIGNvbnN0IGFjdGl2YXRpb25JbnN0YW50VmlldzIgPSB0aGlzLl92aWV3QWN0aXZhdGlvbkluc3RhbnRQcm92aWRlci5nZXRBY3RpdmF0aW9uSW5zdGFudCh2aWV3SWQyKTtcbiAgICAgICAgICByZXR1cm4gYWN0aXZhdGlvbkluc3RhbnRWaWV3MiAtIGFjdGl2YXRpb25JbnN0YW50VmlldzE7XG4gICAgICAgIH0pLmF0KDApO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSB0aGUgcGFydCBpZiB0aGlzIGlzIHRoZSBsYXN0IHZpZXcgb2YgdGhlIHBhcnQgYW5kIG5vdCBhIHN0cnVjdHVyYWwgcGFydC5cbiAgICBpZiAocGFydC52aWV3cy5sZW5ndGggPT09IDAgJiYgIXBhcnQuc3RydWN0dXJhbCkge1xuICAgICAgdGhpcy5fX3JlbW92ZVBhcnQocGFydC5pZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5vdGU6IFRoaXMgbWV0aG9kIG5hbWUgYmVnaW5zIHdpdGggdW5kZXJzY29yZXMsIGluZGljYXRpbmcgdGhhdCBpdCBkb2VzIG5vdCBvcGVyYXRlIG9uIGEgd29ya2luZyBjb3B5LCBidXQgbW9kaWZpZXMgdGhpcyBsYXlvdXQgaW5zdGVhZC5cbiAgICovXG4gIHByaXZhdGUgX19hY3RpdmF0ZVZpZXcodmlldzogTVZpZXcsIG9wdGlvbnM/OiB7YWN0aXZhdGVQYXJ0PzogYm9vbGVhbn0pOiB2b2lkIHtcbiAgICAvLyBBY3RpdmF0ZSB0aGUgdmlldy5cbiAgICBjb25zdCBwYXJ0ID0gdGhpcy5wYXJ0KHt2aWV3SWQ6IHZpZXcuaWR9KTtcbiAgICBwYXJ0LmFjdGl2ZVZpZXdJZCA9IHZpZXcuaWQ7XG5cbiAgICAvLyBBY3RpdmF0ZSB0aGUgcGFydC5cbiAgICBpZiAob3B0aW9ucz8uYWN0aXZhdGVQYXJ0KSB7XG4gICAgICB0aGlzLl9fYWN0aXZhdGVQYXJ0KHBhcnQuaWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RlOiBUaGlzIG1ldGhvZCBuYW1lIGJlZ2lucyB3aXRoIHVuZGVyc2NvcmVzLCBpbmRpY2F0aW5nIHRoYXQgaXQgZG9lcyBub3Qgb3BlcmF0ZSBvbiBhIHdvcmtpbmcgY29weSwgYnV0IG1vZGlmaWVzIHRoaXMgbGF5b3V0IGluc3RlYWQuXG4gICAqL1xuICBwcml2YXRlIF9fYWN0aXZhdGVBZGphY2VudFZpZXcodmlldzogTVZpZXcsIG9wdGlvbnM/OiB7YWN0aXZhdGVQYXJ0PzogYm9vbGVhbn0pOiB2b2lkIHtcbiAgICBjb25zdCBwYXJ0ID0gdGhpcy5wYXJ0KHt2aWV3SWQ6IHZpZXcuaWR9KTtcbiAgICBjb25zdCB2aWV3SW5kZXggPSBwYXJ0LnZpZXdzLmluZGV4T2Yodmlldyk7XG4gICAgcGFydC5hY3RpdmVWaWV3SWQgPSAocGFydC52aWV3c1t2aWV3SW5kZXggLSAxXSB8fCBwYXJ0LnZpZXdzW3ZpZXdJbmRleCArIDFdKT8uaWQ7IC8vIGlzIGB1bmRlZmluZWRgIGlmIGl0IGlzIHRoZSBsYXN0IHZpZXcgb2YgdGhlIHBhcnRcblxuICAgIC8vIEFjdGl2YXRlIHRoZSBwYXJ0LlxuICAgIGlmIChvcHRpb25zPy5hY3RpdmF0ZVBhcnQpIHtcbiAgICAgIHRoaXMuX19hY3RpdmF0ZVBhcnQocGFydC5pZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5vdGU6IFRoaXMgbWV0aG9kIG5hbWUgYmVnaW5zIHdpdGggdW5kZXJzY29yZXMsIGluZGljYXRpbmcgdGhhdCBpdCBkb2VzIG5vdCBvcGVyYXRlIG9uIGEgd29ya2luZyBjb3B5LCBidXQgbW9kaWZpZXMgdGhpcyBsYXlvdXQgaW5zdGVhZC5cbiAgICovXG4gIHByaXZhdGUgX19zZXRTcGxpdFJhdGlvKG5vZGVJZDogc3RyaW5nLCByYXRpbzogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHJhdGlvIDwgMCB8fCByYXRpbyA+IDEpIHtcbiAgICAgIHRocm93IEVycm9yKGBbTGF5b3V0TW9kaWZ5RXJyb3JdIFJhdGlvIGZvciBub2RlICcke25vZGVJZH0nIG11c3QgYmUgaW4gdGhlIGNsb3NlZCBpbnRlcnZhbCBbMCwxXSwgYnV0IHdhcyAnJHtyYXRpb30nLmApO1xuICAgIH1cbiAgICB0aGlzLmZpbmRUcmVlRWxlbWVudDxNVHJlZU5vZGU+KHtpZDogbm9kZUlkfSkucmF0aW8gPSByYXRpbztcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RlOiBUaGlzIG1ldGhvZCBuYW1lIGJlZ2lucyB3aXRoIHVuZGVyc2NvcmVzLCBpbmRpY2F0aW5nIHRoYXQgaXQgZG9lcyBub3Qgb3BlcmF0ZSBvbiBhIHdvcmtpbmcgY29weSwgYnV0IG1vZGlmaWVzIHRoaXMgbGF5b3V0IGluc3RlYWQuXG4gICAqL1xuICBwcml2YXRlIF9fYWN0aXZhdGVQYXJ0KGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJ0ID0gdGhpcy5wYXJ0KHtwYXJ0SWQ6IGlkfSk7XG4gICAgdGhpcy5ncmlkKHtlbGVtZW50OiBwYXJ0fSkuYWN0aXZlUGFydElkID0gaWQ7XG4gIH1cblxuICAvKipcbiAgICogTm90ZTogVGhpcyBtZXRob2QgbmFtZSBiZWdpbnMgd2l0aCB1bmRlcnNjb3JlcywgaW5kaWNhdGluZyB0aGF0IGl0IGRvZXMgbm90IG9wZXJhdGUgb24gYSB3b3JraW5nIGNvcHksIGJ1dCBtb2RpZmllcyB0aGlzIGxheW91dCBpbnN0ZWFkLlxuICAgKi9cbiAgcHJpdmF0ZSBfX3RvZ2dsZU1heGltaXplZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9tYXhpbWl6ZWQgPSAhdGhpcy5fbWF4aW1pemVkO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vdGU6IFRoaXMgbWV0aG9kIG5hbWUgYmVnaW5zIHdpdGggdW5kZXJzY29yZXMsIGluZGljYXRpbmcgdGhhdCBpdCBkb2VzIG5vdCBvcGVyYXRlIG9uIGEgd29ya2luZyBjb3B5LCBidXQgbW9kaWZpZXMgdGhpcyBsYXlvdXQgaW5zdGVhZC5cbiAgICovXG4gIHByaXZhdGUgX19yZW5hbWVWaWV3KHZpZXc6IE1WaWV3LCBuZXdWaWV3SWQ6IFZpZXdJZCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc1ZpZXcobmV3Vmlld0lkKSkge1xuICAgICAgdGhyb3cgRXJyb3IoYFtWaWV3UmVuYW1lRXJyb3JdIFZpZXcgaWQgbXVzdCBiZSB1bmlxdWUuIFRoZSBsYXlvdXQgYWxyZWFkeSBjb250YWlucyBhIHZpZXcgd2l0aCB0aGUgaWQgJyR7bmV3Vmlld0lkfScuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFydCA9IHRoaXMucGFydCh7dmlld0lkOiB2aWV3LmlkfSk7XG5cbiAgICBpZiAodGhpcy5fdmlld091dGxldHMuaGFzKHZpZXcuaWQpKSB7XG4gICAgICB0aGlzLl92aWV3T3V0bGV0cy5zZXQobmV3Vmlld0lkLCB0aGlzLl92aWV3T3V0bGV0cy5nZXQodmlldy5pZCkhKTtcbiAgICAgIHRoaXMuX3ZpZXdPdXRsZXRzLmRlbGV0ZSh2aWV3LmlkKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3ZpZXdTdGF0ZXMuaGFzKHZpZXcuaWQpKSB7XG4gICAgICB0aGlzLl92aWV3U3RhdGVzLnNldChuZXdWaWV3SWQsIHRoaXMuX3ZpZXdTdGF0ZXMuZ2V0KHZpZXcuaWQpISk7XG4gICAgICB0aGlzLl92aWV3U3RhdGVzLmRlbGV0ZSh2aWV3LmlkKTtcbiAgICB9XG5cbiAgICBpZiAocGFydC5hY3RpdmVWaWV3SWQgPT09IHZpZXcuaWQpIHtcbiAgICAgIHBhcnQuYWN0aXZlVmlld0lkID0gbmV3Vmlld0lkO1xuICAgIH1cblxuICAgIHZpZXcuaWQgPSBuZXdWaWV3SWQ7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYSBncmlkIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgZmlsdGVyLiBJZiBub3QgZm91bmQsIHRocm93cyBhbiBlcnJvci5cbiAgICpcbiAgICogQHBhcmFtIGZpbmRCeSAtIERlZmluZXMgdGhlIHNlYXJjaCBzY29wZS5cbiAgICogQHBhcmFtIGZpbmRCeS5lbGVtZW50IC0gU2VhcmNoZXMgZm9yIGEgZ3JpZCB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgZWxlbWVudC5cbiAgICogQHJldHVybiBHcmlkIG1hdGNoaW5nIHRoZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqL1xuICBwcml2YXRlIGdyaWQoZmluZEJ5OiB7ZWxlbWVudDogTVBhcnQgfCBNVHJlZU5vZGV9KTogTVBhcnRHcmlkIHtcbiAgICBjb25zdCBncmlkTmFtZSA9IHRoaXMuX2dyaWROYW1lcy5maW5kKGdyaWROYW1lID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmZpbmRUcmVlRWxlbWVudHMoKGVsZW1lbnQ6IE1UcmVlTm9kZSB8IE1QYXJ0KTogZWxlbWVudCBpcyBNUGFydCB8IE1UcmVlTm9kZSA9PiBlbGVtZW50ID09PSBmaW5kQnkuZWxlbWVudCwge2ZpbmRGaXJzdDogdHJ1ZSwgZ3JpZDogZ3JpZE5hbWV9KS5sZW5ndGggPiAwO1xuICAgIH0pO1xuXG4gICAgaWYgKCFncmlkTmFtZSkge1xuICAgICAgaWYgKGZpbmRCeS5lbGVtZW50IGluc3RhbmNlb2YgTVBhcnQpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYFtOdWxsR3JpZEVycm9yXSBObyBncmlkIGZvdW5kIHRoYXQgY29udGFpbnMgdGhlIHBhcnQgJyR7ZmluZEJ5LmVsZW1lbnQuaWR9J1wiLmApO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRocm93IEVycm9yKGBbTnVsbEdyaWRFcnJvcl0gTm8gZ3JpZCBmb3VuZCB0aGF0IGNvbnRhaW5zIHRoZSBub2RlICcke2ZpbmRCeS5lbGVtZW50Lm5vZGVJZH0nXCIuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2dyaWRzW2dyaWROYW1lXSE7XG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSB0cmVlIHRvIGZpbmQgYW4gZWxlbWVudCB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuIHByZWRpY2F0ZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbmRCeSAtIERlZmluZXMgdGhlIHNlYXJjaCBzY29wZS5cbiAgICogQHBhcmFtIGZpbmRCeS5pZCAtIFNlYXJjaGVzIGZvciBhbiBlbGVtZW50IHdpdGggdGhlIHNwZWNpZmllZCBpZC5cbiAgICogQHJldHVybiBFbGVtZW50IG1hdGNoaW5nIHRoZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqL1xuICBwcml2YXRlIGZpbmRUcmVlRWxlbWVudDxUIGV4dGVuZHMgTVRyZWVOb2RlIHwgTVBhcnQ+KGZpbmRCeToge2lkOiBzdHJpbmd9KTogVCB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZmluZFRyZWVFbGVtZW50cygoZWxlbWVudDogTVRyZWVOb2RlIHwgTVBhcnQpOiBlbGVtZW50IGlzIFQgPT4ge1xuICAgICAgcmV0dXJuIGVsZW1lbnQgaW5zdGFuY2VvZiBNUGFydCA/IGVsZW1lbnQuaWQgPT09IGZpbmRCeS5pZCA6IGVsZW1lbnQubm9kZUlkID09PSBmaW5kQnkuaWQ7XG4gICAgfSwge2ZpbmRGaXJzdDogdHJ1ZX0pLmF0KDApO1xuXG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICB0aHJvdyBFcnJvcihgW051bGxFbGVtZW50RXJyb3JdIE5vIGVsZW1lbnQgZm91bmQgd2l0aCBpZCAnJHtmaW5kQnkuaWR9Jy5gKTtcbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSB0cmVlIHRvIGZpbmQgZWxlbWVudHMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcHJlZGljYXRlLlxuICAgKlxuICAgKiBAcGFyYW0gcHJlZGljYXRlRm4gLSBQcmVkaWNhdGUgZnVuY3Rpb24gdG8gbWF0Y2guXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gRGVmaW5lcyBzZWFyY2ggc2NvcGUgYW5kIG9wdGlvbnMuXG4gICAqIEBwYXJhbSBvcHRpb25zLmZpbmRGaXJzdCAtIElmIHNwZWNpZmllZCwgc3RvcHMgdHJhdmVyc2luZyBvbiBmaXJzdCBtYXRjaC4gSWYgbm90IHNldCwgZGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICogQHBhcmFtIG9wdGlvbnMuZ3JpZCAtIFNlYXJjaGVzIGZvciBhbiBlbGVtZW50IGNvbnRhaW5lZCBpbiB0aGUgc3BlY2lmaWVkIGdyaWQuXG4gICAqIEByZXR1cm4gRWxlbWVudHMgbWF0Y2hpbmcgdGhlIGZpbHRlciBjcml0ZXJpYS5cbiAgICovXG4gIHByaXZhdGUgZmluZFRyZWVFbGVtZW50czxUIGV4dGVuZHMgTVRyZWVOb2RlIHwgTVBhcnQ+KHByZWRpY2F0ZUZuOiAoZWxlbWVudDogTVRyZWVOb2RlIHwgTVBhcnQpID0+IGVsZW1lbnQgaXMgVCwgb3B0aW9ucz86IHtmaW5kRmlyc3Q/OiBib29sZWFuOyBncmlkPzoga2V5b2YgR3JpZHN9KTogVFtdIHtcbiAgICBpZiAob3B0aW9ucz8uZ3JpZCAmJiAhdGhpcy5fZ3JpZHNbb3B0aW9ucy5ncmlkXSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogVFtdID0gW107XG5cbiAgICBmdW5jdGlvbiB2aXNpdFBhcnRzKG5vZGU6IE1UcmVlTm9kZSB8IE1QYXJ0KTogYm9vbGVhbiB7XG4gICAgICBpZiAocHJlZGljYXRlRm4obm9kZSkpIHtcbiAgICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgICAgIGlmIChvcHRpb25zPy5maW5kRmlyc3QpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHN0b3AgdmlzaXRpbmcgb3RoZXIgZWxlbWVudHNcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIE1UcmVlTm9kZSkge1xuICAgICAgICByZXR1cm4gdmlzaXRQYXJ0cyhub2RlLmNoaWxkMSkgJiYgdmlzaXRQYXJ0cyhub2RlLmNoaWxkMik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8uZ3JpZCkge1xuICAgICAgdmlzaXRQYXJ0cyh0aGlzLl9ncmlkc1tvcHRpb25zLmdyaWRdIS5yb290KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IGdyaWQgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLl9ncmlkcykpIHtcbiAgICAgICAgaWYgKGdyaWQgJiYgIXZpc2l0UGFydHMoZ3JpZC5yb290KSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY29weSBvZiB0aGlzIGxheW91dC5cbiAgICovXG4gIHByaXZhdGUgd29ya2luZ0NvcHkoKTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5faW5qZWN0b3IsICgpID0+IG5ldyDJtVdvcmtiZW5jaExheW91dCh7XG4gICAgICB3b3JrYmVuY2hHcmlkOiB0aGlzLl9zZXJpYWxpemVyLnNlcmlhbGl6ZUdyaWQodGhpcy53b3JrYmVuY2hHcmlkLCB7aW5jbHVkZU5vZGVJZDogdHJ1ZSwgaW5jbHVkZVVpZDogdHJ1ZSwgaW5jbHVkZU1hcmtlZEZvclJlbW92YWxGbGFnOiB0cnVlfSksXG4gICAgICBtYWluQXJlYUdyaWQ6IHRoaXMuX3NlcmlhbGl6ZXIuc2VyaWFsaXplR3JpZCh0aGlzLl9ncmlkcy5tYWluQXJlYSwge2luY2x1ZGVOb2RlSWQ6IHRydWUsIGluY2x1ZGVVaWQ6IHRydWUsIGluY2x1ZGVNYXJrZWRGb3JSZW1vdmFsRmxhZzogdHJ1ZX0pLFxuICAgICAgdmlld091dGxldHM6IE9iamVjdC5mcm9tRW50cmllcyh0aGlzLl92aWV3T3V0bGV0cyksXG4gICAgICB2aWV3U3RhdGVzOiBPYmplY3QuZnJvbUVudHJpZXModGhpcy5fdmlld1N0YXRlcyksXG4gICAgICBtYXhpbWl6ZWQ6IHRoaXMuX21heGltaXplZCxcbiAgICB9KSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVmYXVsdCB3b3JrYmVuY2ggZ3JpZCB3aXRoIGEgbWFpbiBhcmVhLlxuICovXG5mdW5jdGlvbiBjcmVhdGVEZWZhdWx0V29ya2JlbmNoR3JpZCgpOiBNUGFydEdyaWQge1xuICByZXR1cm4ge1xuICAgIHJvb3Q6IG5ldyBNUGFydCh7aWQ6IE1BSU5fQVJFQSwgc3RydWN0dXJhbDogdHJ1ZSwgdmlld3M6IFtdfSksXG4gICAgYWN0aXZlUGFydElkOiBNQUlOX0FSRUEsXG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1haW4gYXJlYSBncmlkIHdpdGggYW4gaW5pdGlhbCBwYXJ0LlxuICpcbiAqIFRoZSBESSB0b2tlbiB7QGxpbmsgTUFJTl9BUkVBX0lOSVRJQUxfUEFSVF9JRH0gaXMgdXNlZCB0byBhc3NpZ24gdGhlIGluaXRpYWwgcGFydCBpdHMgaWRlbnRpdHkuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxNYWluQXJlYUdyaWQoKTogTVBhcnRHcmlkIHtcbiAgcmV0dXJuIHtcbiAgICByb290OiBuZXcgTVBhcnQoe2lkOiBpbmplY3QoTUFJTl9BUkVBX0lOSVRJQUxfUEFSVF9JRCksIHN0cnVjdHVyYWw6IGZhbHNlLCB2aWV3czogW119KSxcbiAgICBhY3RpdmVQYXJ0SWQ6IGluamVjdChNQUlOX0FSRUFfSU5JVElBTF9QQVJUX0lEKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBDb2VyY2VzIHtAbGluayBNUGFydEdyaWR9LCBhcHBseWluZyBuZWNlc3NhcnkgbWlncmF0aW9ucyBpZiB0aGUgc2VyaWFsaXplZCBncmlkIGlzIG91dGRhdGVkLlxuICovXG5mdW5jdGlvbiBjb2VyY2VNUGFydEdyaWQoZ3JpZDogc3RyaW5nIHwgTVBhcnRHcmlkIHwgbnVsbCB8IHVuZGVmaW5lZCwgb3B0aW9uczoge2RlZmF1bHQ6ICgpID0+IE1QYXJ0R3JpZH0pOiDJtU1QYXJ0R3JpZCB7XG4gIGdyaWQgPz89IG9wdGlvbnMuZGVmYXVsdCgpO1xuXG4gIGlmICh0eXBlb2YgZ3JpZCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZ3JpZDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGluamVjdChXb3JrYmVuY2hMYXlvdXRTZXJpYWxpemVyKS5kZXNlcmlhbGl6ZUdyaWQoZ3JpZCk7XG4gIH1cbiAgY2F0Y2ggKGVycm9yKSB7XG4gICAgaW5qZWN0KExvZ2dlcikuZXJyb3IoJ1tTZXJpYWxpemVFcnJvcl0gRmFpbGVkIHRvIGRlc2VyaWFsaXplIHdvcmtiZW5jaCBsYXlvdXQuIFBsZWFzZSBjbGVhciB5b3VyIGJyb3dzZXIgc3RvcmFnZSBhbmQgcmVsb2FkIHRoZSBhcHBsaWNhdGlvbi4nLCBlcnJvcik7XG4gICAgcmV0dXJuIHsuLi5vcHRpb25zLmRlZmF1bHQoKSwgbWlncmF0ZWQ6IHRydWV9O1xuICB9XG59XG5cbi8qKlxuICogQ29lcmNlcyB7QGxpbmsgVmlld091dGxldHN9LCBhcHBseWluZyBuZWNlc3NhcnkgbWlncmF0aW9ucyBpZiB0aGUgc2VyaWFsaXplZCBvdXRsZXRzIGFyZSBvdXRkYXRlZC5cbiAqL1xuZnVuY3Rpb24gY29lcmNlVmlld091dGxldHModmlld091dGxldHM6IHN0cmluZyB8IFZpZXdPdXRsZXRzIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFZpZXdPdXRsZXRzIHtcbiAgaWYgKCF2aWV3T3V0bGV0cykge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygdmlld091dGxldHMgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHZpZXdPdXRsZXRzO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gaW5qZWN0KFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIpLmRlc2VyaWFsaXplVmlld091dGxldHModmlld091dGxldHMpO1xuICB9XG4gIGNhdGNoIChlcnJvcikge1xuICAgIGluamVjdChMb2dnZXIpLmVycm9yKCdbU2VyaWFsaXplRXJyb3JdIEZhaWxlZCB0byBkZXNlcmlhbGl6ZSB2aWV3IG91dGxldHMuIFBsZWFzZSBjbGVhciB5b3VyIGJyb3dzZXIgc3RvcmFnZSBhbmQgcmVsb2FkIHRoZSBhcHBsaWNhdGlvbi4nLCBlcnJvcik7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbi8qKlxuICogR3JpZHMgb2YgdGhlIHdvcmtiZW5jaCBsYXlvdXQuXG4gKi9cbmludGVyZmFjZSBHcmlkcyB7XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGdyaWQgb2YgdGhlIHdvcmtiZW5jaC5cbiAgICovXG4gIHdvcmtiZW5jaDogybVNUGFydEdyaWQ7XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGdyaWQgb2YgdGhlIG1haW4gYXJlYSwgaWYgYW55LlxuICAgKlxuICAgKiBUaGUgbWFpbiBhcmVhIGdyaWQgaXMgYSBzdWItZ3JpZCBlbWJlZGRlZCBpbiB0aGUgbWFpbiBhcmVhIHBhcnQsIGlmIGFueS4gSXQgZGVmaW5lcyB0aGUgYXJyYW5nZW1lbnQgb2YgcGFydHMgaW4gdGhlIG1haW4gYXJlYS5cbiAgICovXG4gIG1haW5BcmVhPzogybVNUGFydEdyaWQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcG9zaXRpb24gaWYgYSBudW1iZXIsIG9yIGNvbXB1dGVzIGl0IGZyb20gdGhlIGdpdmVuIGxpdGVyYWwgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBjb2VyY2VQb3NpdGlvbihwb3NpdGlvbjogbnVtYmVyIHwgJ3N0YXJ0JyB8ICdlbmQnIHwgJ2JlZm9yZS1hY3RpdmUtdmlldycgfCAnYWZ0ZXItYWN0aXZlLXZpZXcnLCBwYXJ0OiBNUGFydCk6IG51bWJlciB7XG4gIHN3aXRjaCAocG9zaXRpb24pIHtcbiAgICBjYXNlICdzdGFydCc6IHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjYXNlICdlbmQnOiB7XG4gICAgICByZXR1cm4gcGFydC52aWV3cy5sZW5ndGg7XG4gICAgfVxuICAgIGNhc2UgJ2JlZm9yZS1hY3RpdmUtdmlldyc6IHtcbiAgICAgIGNvbnN0IGFjdGl2ZVZpZXdJbmRleCA9IHBhcnQudmlld3MuZmluZEluZGV4KHZpZXcgPT4gdmlldy5pZCA9PT0gcGFydC5hY3RpdmVWaWV3SWQpO1xuICAgICAgcmV0dXJuIChhY3RpdmVWaWV3SW5kZXggPiAtMSA/IGFjdGl2ZVZpZXdJbmRleCA6IHBhcnQudmlld3MubGVuZ3RoKTtcbiAgICB9XG4gICAgY2FzZSAnYWZ0ZXItYWN0aXZlLXZpZXcnOiB7XG4gICAgICBjb25zdCBhY3RpdmVWaWV3SW5kZXggPSBwYXJ0LnZpZXdzLmZpbmRJbmRleCh2aWV3ID0+IHZpZXcuaWQgPT09IHBhcnQuYWN0aXZlVmlld0lkKTtcbiAgICAgIHJldHVybiAoYWN0aXZlVmlld0luZGV4ID4gLTEgPyBhY3RpdmVWaWV3SW5kZXggKyAxIDogcGFydC52aWV3cy5sZW5ndGgpO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gcG9zaXRpb247XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGhvdyB0byBsYXkgb3V0IGEgcGFydCByZWxhdGl2ZSB0byBhbm90aGVyIHBhcnQgb3Igbm9kZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2VFbGVtZW50IGV4dGVuZHMgUmVmZXJlbmNlUGFydCB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHBhcnQgb3Igbm9kZSB3aGljaCB0byB1c2UgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50IHRvIGxheSBvdXQgdGhlIHBhcnQuXG4gICAqIElmIG5vdCBzZXQsIHRoZSBwYXJ0IHdpbGwgYmUgYWxpZ25lZCByZWxhdGl2ZSB0byB0aGUgcm9vdCBvZiB0aGUgd29ya2JlbmNoIGxheW91dC5cbiAgICovXG4gIHJlbGF0aXZlVG8/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogREkgdG9rZW4gdG8gY29udHJvbCB0aGUgaWRlbnRpdHkgb2YgdGhlIGluaXRpYWwgcGFydCBpbiB0aGUgbWFpbiBhcmVhLlxuICpcbiAqIFRoZSBpbml0aWFsIHBhcnQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IHRoZSB3b3JrYmVuY2ggaWYgdGhlIG1haW4gYXJlYSBoYXMgbm8gcGFydCwgYnV0IGl0IGhhcyBub1xuICogc3BlY2lhbCBtZWFuaW5nIHRvIHRoZSB3b3JrYmVuY2ggYW5kIGNhbiBiZSByZW1vdmVkIGJ5IHRoZSB1c2VyLiBJZiBub3Qgc2V0LCBhIFVVSUQgaXMgYXNzaWduZWQuXG4gKlxuICogT3ZlcndyaXRlIHRoaXMgREkgdG9rZW4gaW4gdGVzdHMgdG8gY29udHJvbCB0aGUgaWRlbnRpdHkgb2YgdGhlIGluaXRpYWwgcGFydC5cbiAqIGBgYFxuICogVGVzdEJlZC5vdmVycmlkZVByb3ZpZGVyKE1BSU5fQVJFQV9JTklUSUFMX1BBUlRfSUQsIHt1c2VWYWx1ZTogJ21haW4nfSlcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgTUFJTl9BUkVBX0lOSVRJQUxfUEFSVF9JRCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdNQUlOX0FSRUFfSU5JVElBTF9QQVJUX0lEJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHJhbmRvbVVVSUQoKSxcbn0pO1xuXG4vKipcbiAqIFByb3ZpZGVzIHRoZSBpbnN0YW50IHdoZW4gYSBwYXJ0IHdhcyBsYXN0IGFjdGl2YXRlZC5cbiAqXG4gKiBPdmVyd3JpdGUgREkgdG9rZW4gaW4gdGVzdHMgdG8gY29udHJvbCBwYXJ0IGFjdGl2YXRpb24gaW5zdGFudHMuXG4gKiBgYGBcbiAqIFRlc3RCZWQub3ZlcnJpZGVQcm92aWRlcihQYXJ0QWN0aXZhdGlvbkluc3RhbnRQcm92aWRlciwge3VzZVZhbHVlOiAuLi59KTtcbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBQYXJ0QWN0aXZhdGlvbkluc3RhbnRQcm92aWRlciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcGFydFJlZ2lzdHJ5OiBXb3JrYmVuY2hQYXJ0UmVnaXN0cnkpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpbnN0YW50IHdoZW4gdGhlIHNwZWNpZmllZCBwYXJ0IHdhcyBsYXN0IGFjdGl2YXRlZC5cbiAgICovXG4gIHB1YmxpYyBnZXRBY3RpdmF0aW9uSW5zdGFudChwYXJ0SWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnRSZWdpc3RyeS5nZXQocGFydElkLCB7b3JFbHNlOiBudWxsfSk/LmFjdGl2YXRpb25JbnN0YW50ID8/IDA7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm92aWRlcyB0aGUgaW5zdGFudCB3aGVuIGEgdmlldyB3YXMgbGFzdCBhY3RpdmF0ZWQuXG4gKlxuICogT3ZlcndyaXRlIERJIHRva2VuIGluIHRlc3RzIHRvIGNvbnRyb2wgdmlldyBhY3RpdmF0aW9uIGluc3RhbnRzLlxuICogYGBgXG4gKiBUZXN0QmVkLm92ZXJyaWRlUHJvdmlkZXIoVmlld0FjdGl2YXRpb25JbnN0YW50UHJvdmlkZXIsIHt1c2VWYWx1ZTogLi4ufSk7XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgVmlld0FjdGl2YXRpb25JbnN0YW50UHJvdmlkZXIge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3ZpZXdSZWdpc3RyeTogV29ya2JlbmNoVmlld1JlZ2lzdHJ5KSB7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaW5zdGFudCB3aGVuIHRoZSBzcGVjaWZpZWQgdmlldyB3YXMgbGFzdCBhY3RpdmF0ZWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0QWN0aXZhdGlvbkluc3RhbnQodmlld0lkOiBWaWV3SWQpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl92aWV3UmVnaXN0cnkuZ2V0KHZpZXdJZCwge29yRWxzZTogbnVsbH0pPy5hY3RpdmF0aW9uSW5zdGFudCA/PyAwO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHByZWRpY2F0ZSB0byBtYXRjaCBhIHZpZXcgYnkgaXRzIHByaW1hcnkgb3IgYWx0ZXJuYXRpdmUgaWQsIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0aGUgcGFzc2VkIGlkLlxuICovXG5mdW5jdGlvbiBtYXRjaFZpZXdCeUlkKGlkOiBzdHJpbmcpOiBQcmVkaWNhdGU8TVZpZXc+IHtcbiAgaWYgKFdvcmtiZW5jaExheW91dHMuaXNWaWV3SWQoaWQpKSB7XG4gICAgcmV0dXJuIHZpZXcgPT4gdmlldy5pZCA9PT0gaWQ7XG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIHZpZXcgPT4gdmlldy5hbHRlcm5hdGl2ZUlkID09PSBpZDtcbiAgfVxufVxuXG4vKipcbiAqIFN0cmluZ2lmaWVzIHRoZSBnaXZlbiBmaWx0ZXIgdG8gYmUgdXNlZCBpbiBlcnJvciBtZXNzYWdlcy5cbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5RmlsdGVyKGZpbHRlcjoge1twcm9wZXJ0eTogc3RyaW5nXTogdW5rbm93bn0pOiBzdHJpbmcge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZmlsdGVyKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ZhbHVlfWApLmpvaW4oJywgJyk7XG59XG5cbi8qKlxuICogU2VyaWFsaXplZCBhcnRpZmFjdHMgb2YgdGhlIHdvcmtiZW5jaCBsYXlvdXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VyaWFsaXplZFdvcmtiZW5jaExheW91dCB7XG4gIHdvcmtiZW5jaEdyaWQ6IHN0cmluZztcbiAgd29ya2JlbmNoVmlld091dGxldHM6IHN0cmluZztcbiAgbWFpbkFyZWFHcmlkOiBzdHJpbmcgfCBudWxsO1xuICBtYWluQXJlYVZpZXdPdXRsZXRzOiBzdHJpbmc7XG59XG4iXX0=
|
|
865
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiybV3b3JrYmVuY2gtbGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBQyxLQUFLLEVBQWEsU0FBUyxFQUFvQixNQUFNLDBCQUEwQixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsVUFBVSxFQUFPLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLFNBQVMsRUFBaUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUcvRSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFhLHFCQUFxQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUluRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFM0MsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxZQUFZLENBQUM7Ozs7QUFFbEM7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQWEzQixpQkFBaUI7SUFDakIsWUFBWSxNQUE2TDtRQVJ4TCxtQ0FBOEIsR0FBRyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUN2RSxtQ0FBOEIsR0FBRyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUN2RSxnQkFBVyxH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QyxhQUFhLEtBQUssRUFBRSxDQUFDO0lBQzNDLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxNQUFxQztJQUM1RCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5pbXBvcnQge01QYXJ0LCBNUGFydEdyaWQsIE1UcmVlTm9kZSwgTVZpZXcsIMm1TVBhcnRHcmlkfSBmcm9tICcuL3dvcmtiZW5jaC1sYXlvdXQubW9kZWwnO1xuaW1wb3J0IHthc3NlcnRUeXBlfSBmcm9tICcuLi9jb21tb24vYXNzZXJ0cy51dGlsJztcbmltcG9ydCB7cmFuZG9tVVVJRCwgVVVJRH0gZnJvbSAnLi4vY29tbW9uL3V1aWQudXRpbCc7XG5pbXBvcnQge01BSU5fQVJFQSwgUmVmZXJlbmNlUGFydCwgV29ya2JlbmNoTGF5b3V0fSBmcm9tICcuL3dvcmtiZW5jaC1sYXlvdXQnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRTZXJpYWxpemVyfSBmcm9tICcuL3dvcmtlbmNoLWxheW91dC1zZXJpYWxpemVyLnNlcnZpY2UnO1xuaW1wb3J0IHtXb3JrYmVuY2hWaWV3UmVnaXN0cnl9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcucmVnaXN0cnknO1xuaW1wb3J0IHtXb3JrYmVuY2hQYXJ0UmVnaXN0cnl9IGZyb20gJy4uL3BhcnQvd29ya2JlbmNoLXBhcnQucmVnaXN0cnknO1xuaW1wb3J0IHtpbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBJbmplY3RvciwgUHJlZGljYXRlLCBydW5JbkluamVjdGlvbkNvbnRleHR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXJVdGlsc30gZnJvbSAnLi4vcm91dGluZy9yb3V0ZXIudXRpbCc7XG5pbXBvcnQge0NvbW1hbmRzLCBWaWV3T3V0bGV0cywgVmlld1N0YXRlLCBWaWV3U3RhdGVzfSBmcm9tICcuLi9yb3V0aW5nL3JvdXRpbmcubW9kZWwnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgVXJsU2VnbWVudH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Vmlld0lkfSBmcm9tICcuLi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcbmltcG9ydCB7QXJyYXlzfSBmcm9tICdAc2Npb24vdG9vbGtpdC91dGlsJztcbmltcG9ydCB7VXJsU2VnbWVudE1hdGNoZXJ9IGZyb20gJy4uL3JvdXRpbmcvdXJsLXNlZ21lbnQtbWF0Y2hlcic7XG5pbXBvcnQge09iamVjdHN9IGZyb20gJy4uL2NvbW1vbi9vYmplY3RzLnV0aWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRzfSBmcm9tICcuL3dvcmtiZW5jaC1sYXlvdXRzLnV0aWwnO1xuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uL2xvZ2dpbmcnO1xuXG4vKipcbiAqIEBpbmhlcml0RG9jXG4gKlxuICogVGhlIHdvcmtiZW5jaCBsYXlvdXQgaXMgYSBncmlkIG9mIHBhcnRzLiBJdCBjb250YWlucyBhdCBsZWFzdCBvbmUgcGFydC4gQSBzcGVjaWFsIHBhcnQsIHRoZSBtYWluIGFyZWEgcGFydCwgaXMgbm90IGEgc3RhY2sgb2Ygdmlld3NcbiAqIGJ1dCBlbWJlZHMgYSBzdWItZ3JpZCwgdGhlIG1haW4gYXJlYSBncmlkLiBJdCBkZWZpbmVzIHRoZSBhcnJhbmdlbWVudCBvZiBwYXJ0cyBpbiB0aGUgbWFpbiBhcmVhLiBUaGUgbWFpbiBhcmVhIGlzIG9wdGlvbmFsLlxuICpcbiAqIFRoZSBsYXlvdXQgaXMgc2VyaWFsaXphYmxlIGludG8gYSBVUkwtc2FmZSBiYXNlNjQgc3RyaW5nLlxuICpcbiAqIFRoZSBsYXlvdXQgaXMgYW4gaW1tdXRhYmxlIG9iamVjdCB0aGF0IHByb3ZpZGVzIG1ldGhvZHMgdG8gbW9kaWZ5IHRoZSBsYXlvdXQuIE1vZGlmaWNhdGlvbnMgaGF2ZSBub1xuICogc2lkZSBlZmZlY3RzLiBFYWNoIG1vZGlmaWNhdGlvbiBjcmVhdGVzIGEgbmV3IGxheW91dCBpbnN0YW5jZSB0aGF0IGNhbiBiZSB1c2VkIGZvciBmdXJ0aGVyIG1vZGlmaWNhdGlvbnMuXG4gKlxuICogSU1QT1JUQU5UOiBNZXRob2RzIHN0YXJ0aW5nIHdpdGggYW4gdW5kZXJzY29yZSBpbmRpY2F0ZSB0aGV5IGFyZSBub3Qgd29ya2luZyBvbiBhIHdvcmtpbmcgY29weSwgYnV0IG1vZGlmeWluZyB0aGUgbGF5b3V0IGluc3RhbmNlLlxuICovXG5leHBvcnQgY2xhc3MgybVXb3JrYmVuY2hMYXlvdXQgaW1wbGVtZW50cyBXb3JrYmVuY2hMYXlvdXQge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2dyaWRzOiBHcmlkcztcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld091dGxldHM6IE1hcDxWaWV3SWQsIFVybFNlZ21lbnRbXT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdTdGF0ZXM6IE1hcDxWaWV3SWQsIFZpZXdTdGF0ZT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2dyaWROYW1lczogQXJyYXk8a2V5b2YgR3JpZHM+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJ0QWN0aXZhdGlvbkluc3RhbnRQcm92aWRlciA9IGluamVjdChQYXJ0QWN0aXZhdGlvbkluc3RhbnRQcm92aWRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdBY3RpdmF0aW9uSW5zdGFudFByb3ZpZGVyID0gaW5qZWN0KFZpZXdBY3RpdmF0aW9uSW5zdGFudFByb3ZpZGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VyaWFsaXplciA9IGluamVjdChXb3JrYmVuY2hMYXlvdXRTZXJpYWxpemVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIHByaXZhdGUgX21heGltaXplZDogYm9vbGVhbjtcblxuICAvKiogQGludGVybmFsICoqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IHt3b3JrYmVuY2hHcmlkPzogc3RyaW5nIHwgTVBhcnRHcmlkIHwgbnVsbDsgbWFpbkFyZWFHcmlkPzogc3RyaW5nIHwgTVBhcnRHcmlkIHwgbnVsbDsgdmlld091dGxldHM/OiBzdHJpbmcgfCBWaWV3T3V0bGV0cyB8IG51bGw7IHZpZXdTdGF0ZXM/OiBWaWV3U3RhdGVzIHwgbnVsbDsgbWF4aW1pemVkPzogYm9vbGVhbn0pIHtcbiAgICB0aGlzLl9ncmlkcyA9IHtcbiAgICAgIHdvcmtiZW5jaDogY29lcmNlTVBhcnRHcmlkKGNvbmZpZy53b3JrYmVuY2hHcmlkLCB7ZGVmYXVsdDogY3JlYXRlRGVmYXVsdFdvcmtiZW5jaEdyaWR9KSxcbiAgICB9O1xuICAgIGlmICh0aGlzLmhhc1BhcnQoTUFJTl9BUkVBLCB7Z3JpZDogJ3dvcmtiZW5jaCd9KSkge1xuICAgICAgdGhpcy5fZ3JpZHMubWFpbkFyZWEgPSBjb2VyY2VNUGFydEdyaWQoY29uZmlnLm1haW5BcmVhR3JpZCwge2RlZmF1bHQ6IGNyZWF0ZUluaXRpYWxNYWluQXJlYUdyaWR9KTtcbiAgICB9XG4gICAgdGhpcy5fZ3JpZE5hbWVzID0gT2JqZWN0cy5rZXlzKHRoaXMuX2dyaWRzKTtcbiAgICB0aGlzLl9tYXhpbWl6ZWQgPSBjb25maWcubWF4aW1pemVkID8/IGZhbHNlO1xuICAgIHRoaXMuX3ZpZXdPdXRsZXRzID0gbmV3IE1hcDxWaWV3SWQsIFVybFNlZ21lbnRbXT4oT2JqZWN0cy5lbnRyaWVzKGNvZXJjZVZpZXdPdXRsZXRzKGNvbmZpZy52aWV3T3V0bGV0cykpKTtcbiAgICB0aGlzLl92aWV3U3RhdGVzID0gbmV3IE1hcDxWaWV3SWQsIFZpZXdTdGF0ZT4oT2JqZWN0cy5lbnRyaWVzKGNvbmZpZy52aWV3U3RhdGVzID8/IHt9KSk7XG4gICAgdGhpcy5wYXJ0cygpLmZvckVhY2gocGFydCA9PiBhc3NlcnRUeXBlKHBhcnQsIHt0b0JlT25lT2Y6IFtNVHJlZU5vZGUsIE1QYXJ0XX0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIG1haW4gd29ya2JlbmNoIGdyaWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHdvcmtiZW5jaEdyaWQoKTogUmVhZG9ubHk8ybVNUGFydEdyaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZ3JpZHMud29ya2JlbmNoO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgbWFpbiBhcmVhIGdyaWQsIGlmIGFueS5cbiAgICpcbiAgICogVGhlIG1haW4gYXJlYSBncmlkIGlzIGEgc3ViLWdyaWQgaW5jbHVkZWQgYnkgdGhlIHtAbGluayBNQUlOX0FSRUF9IHBhcnQuIEl0IGRlZmluZXMgdGhlIGFycmFuZ2VtZW50IG9mIHBhcnRzIGluIHRoZSBtYWluIGFyZWEuXG4gICAqL1xuICBwdWJsaWMgZ2V0IG1haW5BcmVhR3JpZCgpOiBSZWFkb25seTzJtU1QYXJ0R3JpZD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZ3JpZHMubWFpbkFyZWEgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0cyBpZiBnaXZlbiBwYXJ0IGlzIGNvbnRhaW5lZCBpbiB0aGUgc3BlY2lmaWVkIGdyaWQuXG4gICAqL1xuICBwdWJsaWMgaGFzUGFydChpZDogc3RyaW5nLCBvcHRpb25zPzoge2dyaWQ/OiBrZXlvZiBHcmlkc30pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0KHtwYXJ0SWQ6IGlkLCBncmlkOiBvcHRpb25zPy5ncmlkfSwge29yRWxzZTogbnVsbH0pICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlc3RzIGlmIGdpdmVuIHZpZXcgaXMgY29udGFpbmVkIGluIHRoZSBzcGVjaWZpZWQgZ3JpZC5cbiAgICovXG4gIHB1YmxpYyBoYXNWaWV3KGlkOiBzdHJpbmcsIG9wdGlvbnM/OiB7Z3JpZD86IGtleW9mIEdyaWRzfSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZpZXdzKHtncmlkOiBvcHRpb25zPy5ncmlkLCBpZDogaWR9KS5sZW5ndGggPiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBVUkwgb2Ygdmlld3MgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBmaWx0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBmaW5kQnkgLSBEZWZpbmVzIHRoZSBzZWFyY2ggc2NvcGUuXG4gICAqIEBwYXJhbSBmaW5kQnkuZ3JpZCAtIFNlYXJjaGVzIGZvciB2aWV3cyBjb250YWluZWQgaW4gdGhlIHNwZWNpZmllZCBncmlkLlxuICAgKiBAcmV0dXJuIG91dGxldHMgb2Ygdmlld3MgbWF0Y2hpbmcgdGhlIGZpbHRlciBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyB2aWV3T3V0bGV0cyhmaW5kQnk/OiB7Z3JpZD86IGtleW9mIEdyaWRzfSk6IFZpZXdPdXRsZXRzIHtcbiAgICBjb25zdCB2aWV3T3V0bGV0RW50cmllcyA9IHRoaXMudmlld3Moe2dyaWQ6IGZpbmRCeT8uZ3JpZH0pLm1hcCh2aWV3ID0+IFt2aWV3LmlkLCB0aGlzLl92aWV3T3V0bGV0cy5nZXQodmlldy5pZCkgPz8gW11dKTtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKHZpZXdPdXRsZXRFbnRyaWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgbmF2aWdhdGlvbmFsIHN0YXRlIG9mIHZpZXdzIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgZmlsdGVyLlxuICAgKlxuICAgKiBAcGFyYW0gZmluZEJ5IC0gRGVmaW5lcyB0aGUgc2VhcmNoIHNjb3BlLlxuICAgKiBAcGFyYW0gZmluZEJ5LmdyaWQgLSBTZWFyY2hlcyBmb3Igdmlld3MgY29udGFpbmVkIGluIHRoZSBzcGVjaWZpZWQgZ3JpZC5cbiAgICogQHJldHVybiB2aWV3IHN0YXRlIG1hdGNoaW5nIHRoZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgdmlld1N0YXRlcyhmaW5kQnk/OiB7Z3JpZD86IGtleW9mIEdyaWRzfSk6IFZpZXdTdGF0ZXMge1xuICAgIGNvbnN0IHZpZXdTdGF0ZUVudHJpZXMgPSB0aGlzLnZpZXdzKHtncmlkOiBmaW5kQnk/LmdyaWR9KS5tYXAodmlldyA9PiBbdmlldy5pZCwgdGhpcy5fdmlld1N0YXRlcy5nZXQodmlldy5pZCkgPz8ge31dKTtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKHZpZXdTdGF0ZUVudHJpZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBuYXZpZ2F0aW9uYWwgc3RhdGUgb2Ygc3BlY2lmaWVkIHZpZXcuXG4gICAqL1xuICBwdWJsaWMgdmlld1N0YXRlKGZpbmRCeToge3ZpZXdJZDogVmlld0lkfSk6IFZpZXdTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdTdGF0ZXMuZ2V0KGZpbmRCeS52aWV3SWQpID8/IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBVUkwgb2Ygc3BlY2lmaWVkIHZpZXcuXG4gICAqL1xuICBwdWJsaWMgdXJsU2VnbWVudHMoZmluZEJ5OiB7dmlld0lkOiBWaWV3SWR9KTogVXJsU2VnbWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld091dGxldHMuZ2V0KGZpbmRCeS52aWV3SWQpID8/IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcGVuZGluZyBvbiB0aGUgY3VycmVudCBzdGF0ZSwgbWF4aW1pemVzIG9yIG1pbmltaXplcyB0aGUgbWFpbiBhcmVhLlxuICAgKlxuICAgKiBAcmV0dXJuIGEgY29weSBvZiB0aGlzIGxheW91dCB3aXRoIHRoZSBtYXhpbWl6YXRpb24gY2hhbmdlZC5cbiAgICovXG4gIHB1YmxpYyB0b2dnbGVNYXhpbWl6ZWQoKTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIGNvbnN0IHdvcmtpbmdDb3B5ID0gdGhpcy53b3JraW5nQ29weSgpO1xuICAgIHdvcmtpbmdDb3B5Ll9fdG9nZ2xlTWF4aW1pemVkKCk7XG4gICAgcmV0dXJuIHdvcmtpbmdDb3B5O1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBtYWluIGFyZWEgaXMgbWF4aW1pemVkLlxuICAgKi9cbiAgcHVibGljIGdldCBtYXhpbWl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21heGltaXplZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBwYXJ0cyBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIGZpbHRlci5cbiAgICpcbiAgICogQHBhcmFtIGZpbmRCeSAtIERlZmluZXMgdGhlIHNlYXJjaCBzY29wZS5cbiAgICogQHBhcmFtIGZpbmRCeS5ncmlkIC0gU2VhcmNoZXMgZm9yIHBhcnRzIGNvbnRhaW5lZCBpbiB0aGUgc3BlY2lmaWVkIGdyaWQuXG4gICAqIEByZXR1cm4gcGFydHMgbWF0Y2hpbmcgdGhlIGZpbHRlciBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBwYXJ0cyhmaW5kQnk/OiB7Z3JpZD86IGtleW9mIEdyaWRzfSk6IHJlYWRvbmx5IE1QYXJ0W10ge1xuICAgIHJldHVybiB0aGlzLmZpbmRUcmVlRWxlbWVudHMoKGVsZW1lbnQ6IE1UcmVlTm9kZSB8IE1QYXJ0KTogZWxlbWVudCBpcyBNUGFydCA9PiBlbGVtZW50IGluc3RhbmNlb2YgTVBhcnQsIHtncmlkOiBmaW5kQnk/LmdyaWR9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhIHBhcnQgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBmaWx0ZXIuIElmIG5vdCBmb3VuZCwgYnkgZGVmYXVsdCwgdGhyb3dzIGFuIGVycm9yIHVubGVzcyBzZXR0aW5nIHRoZSBgb3JFbHNlTnVsbGAgb3B0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZmluZEJ5IC0gRGVmaW5lcyB0aGUgc2VhcmNoIHNjb3BlLlxuICAgKiBAcGFyYW0gZmluZEJ5LnBhcnRJZCAtIFNlYXJjaGVzIGZvciBhIHBhcnQgd2l0aCB0aGUgc3BlY2lmaWVkIGlkLlxuICAgKiBAcGFyYW0gZmluZEJ5LnZpZXdJZCAtIFNlYXJjaGVzIGZvciBhIHBhcnQgdGhhdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIHZpZXcuXG4gICAqIEBwYXJhbSBmaW5kQnkuZ3JpZCAtIFNlYXJjaGVzIGZvciBhIHBhcnQgY29udGFpbmVkIGluIHRoZSBzcGVjaWZpZWQgZ3JpZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb250cm9scyB0aGUgc2VhcmNoLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5vckVsc2UgLSBDb250cm9scyB0byByZXR1cm4gYG51bGxgIGluc3RlYWQgb2YgdGhyb3dpbmcgYW4gZXJyb3IgaWYgbm8gcGFydCBpcyBmb3VuZC5cbiAgICogQHJldHVybiBwYXJ0IG1hdGNoaW5nIHRoZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgcGFydChmaW5kQnk6IHtwYXJ0SWQ/OiBzdHJpbmc7IHZpZXdJZD86IHN0cmluZzsgZ3JpZD86IGtleW9mIEdyaWRzfSk6IE1QYXJ0O1xuICBwdWJsaWMgcGFydChmaW5kQnk6IHtwYXJ0SWQ/OiBzdHJpbmc7IHZpZXdJZD86IHN0cmluZzsgZ3JpZD86IGtleW9mIEdyaWRzfSwgb3B0aW9uczoge29yRWxzZTogbnVsbH0pOiBNUGFydCB8IG51bGw7XG4gIHB1YmxpYyBwYXJ0KGZpbmRCeToge3BhcnRJZD86IHN0cmluZzsgdmlld0lkPzogc3RyaW5nOyBncmlkPzoga2V5b2YgR3JpZHN9LCBvcHRpb25zPzoge29yRWxzZTogbnVsbH0pOiBNUGFydCB8IG51bGwge1xuICAgIGlmICghZmluZEJ5LnBhcnRJZCAmJiAhZmluZEJ5LnZpZXdJZCkge1xuICAgICAgdGhyb3cgRXJyb3IoYFtQYXJ0RmluZEVycm9yXSBNaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50LiBTcGVjaWZ5IGVpdGhlciAncGFydElkJyBvciAndmlld0lkJy5gKTtcbiAgICB9XG4gICAgY29uc3QgcGFydCA9IHRoaXMuZmluZFRyZWVFbGVtZW50cygoZWxlbWVudDogTVRyZWVOb2RlIHwgTVBhcnQpOiBlbGVtZW50IGlzIE1QYXJ0ID0+IHtcbiAgICAgIGlmICghKGVsZW1lbnQgaW5zdGFuY2VvZiBNUGFydCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGZpbmRCeS5wYXJ0SWQgIT09IHVuZGVmaW5lZCAmJiBlbGVtZW50LmlkICE9PSBmaW5kQnkucGFydElkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChmaW5kQnkudmlld0lkICE9PSB1bmRlZmluZWQgJiYgIWVsZW1lbnQudmlld3Muc29tZShtYXRjaFZpZXdCeUlkKGZpbmRCeS52aWV3SWQhKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSwge2ZpbmRGaXJzdDogdHJ1ZSwgZ3JpZDogZmluZEJ5LmdyaWR9KVswXTtcblxuICAgIGlmICghcGFydCAmJiAhb3B0aW9ucykge1xuICAgICAgdGhyb3cgRXJyb3IoYFtOdWxsUGFydEVycm9yXSBObyBtYXRjaGluZyBwYXJ0IGZvdW5kOiBbJHtzdHJpbmdpZnlGaWx0ZXIoZmluZEJ5KX1dYCk7XG4gICAgfVxuICAgIHJldHVybiBwYXJ0ID8/IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICpcbiAgICogQHBhcmFtIGlkIC0gQGluaGVyaXREb2NcbiAgICogQHBhcmFtIHJlbGF0aXZlVG8gLSBAaW5oZXJpdERvY1xuICAgKiBAcGFyYW0gb3B0aW9ucyAtIEBpbmhlcml0RG9jXG4gICAqIEBwYXJhbSBvcHRpb25zLmFjdGl2YXRlIC0gQGluaGVyaXREb2NcbiAgICogQHBhcmFtIG9wdGlvbnMuc3RydWN0dXJhbCAtIFNwZWNpZmllcyBpZiB0aGlzIGlzIGEgc3RydWN0dXJhbCBwYXJ0LiBBIHN0cnVjdHVyYWwgcGFydCB3aWxsIG5vdCBiZSByZW1vdmVkIHdoZW4gcmVtb3ZpbmcgaXRzIGxhc3Qgdmlldy4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICBwdWJsaWMgYWRkUGFydChpZDogc3RyaW5nIHwgTUFJTl9BUkVBLCByZWxhdGl2ZVRvOiBSZWZlcmVuY2VFbGVtZW50LCBvcHRpb25zPzoge2FjdGl2YXRlPzogYm9vbGVhbjsgc3RydWN0dXJhbD86IGJvb2xlYW59KTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIGNvbnN0IHdvcmtpbmdDb3B5ID0gdGhpcy53b3JraW5nQ29weSgpO1xuICAgIHdvcmtpbmdDb3B5Ll9fYWRkUGFydChpZCwgcmVsYXRpdmVUbywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHdvcmtpbmdDb3B5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlUGFydChpZDogc3RyaW5nKTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIGNvbnN0IHdvcmtpbmdDb3B5ID0gdGhpcy53b3JraW5nQ29weSgpO1xuICAgIHdvcmtpbmdDb3B5Ll9fcmVtb3ZlUGFydChpZCk7XG4gICAgcmV0dXJuIHdvcmtpbmdDb3B5O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFjdGl2ZSBwYXJ0IG9mIHRoZSBzcGVjaWZpZWQgZ3JpZCwgb3IgYG51bGxgIGlmIHNwZWNpZmllZCBncmlkIGlzIG5vdCBwcmVzZW50LlxuICAgKi9cbiAgcHVibGljIGFjdGl2ZVBhcnQoZmluZDoge2dyaWQ6ICd3b3JrYmVuY2gnfSk6IFJlYWRvbmx5PE1QYXJ0PjtcbiAgcHVibGljIGFjdGl2ZVBhcnQoZmluZDoge2dyaWQ6IGtleW9mIEdyaWRzfSk6IFJlYWRvbmx5PE1QYXJ0PiB8IG51bGw7XG4gIHB1YmxpYyBhY3RpdmVQYXJ0KGZpbmQ6IHtncmlkOiBrZXlvZiBHcmlkc30pOiBSZWFkb25seTxNUGFydD4gfCBudWxsIHtcbiAgICBjb25zdCBncmlkID0gdGhpcy5fZ3JpZHNbZmluZC5ncmlkXTtcbiAgICBpZiAoIWdyaWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wYXJ0KHtwYXJ0SWQ6IGdyaWQuYWN0aXZlUGFydElkLCBncmlkOiBmaW5kLmdyaWR9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgcHVibGljIGFjdGl2YXRlUGFydChpZDogc3RyaW5nKTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIGNvbnN0IHdvcmtpbmdDb3B5ID0gdGhpcy53b3JraW5nQ29weSgpO1xuICAgIHdvcmtpbmdDb3B5Ll9fYWN0aXZhdGVQYXJ0KGlkKTtcbiAgICByZXR1cm4gd29ya2luZ0NvcHk7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgYSB2aWV3IGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgZmlsdGVyLiBJZiBub3QgZm91bmQsIGJ5IGRlZmF1bHQsIHRocm93cyBhbiBlcnJvciB1bmxlc3Mgc2V0dGluZyB0aGUgYG9yRWxzZU51bGxgIG9wdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGZpbmRCeSAtIERlZmluZXMgdGhlIHNlYXJjaCBzY29wZS5cbiAgICogQHBhcmFtIGZpbmRCeS52aWV3SWQgLSBTZWFyY2hlcyBmb3IgYSB2aWV3IHdpdGggdGhlIHNwZWNpZmllZCBpZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb250cm9scyB0aGUgc2VhcmNoLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5vckVsc2UgLSBDb250cm9scyB0byByZXR1cm4gYG51bGxgIGluc3RlYWQgb2YgdGhyb3dpbmcgYW4gZXJyb3IgaWYgbm8gdmlldyBpcyBmb3VuZC5cbiAgICogQHJldHVybiB2aWV3IG1hdGNoaW5nIHRoZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgdmlldyhmaW5kQnk6IHt2aWV3SWQ6IFZpZXdJZH0pOiBNVmlldztcbiAgcHVibGljIHZpZXcoZmluZEJ5OiB7dmlld0lkOiBWaWV3SWR9LCBvcHRpb25zOiB7b3JFbHNlOiBudWxsfSk6IE1WaWV3IHwgbnVsbDtcbiAgcHVibGljIHZpZXcoZmluZEJ5OiB7dmlld0lkOiBWaWV3SWR9LCBvcHRpb25zPzoge29yRWxzZTogbnVsbH0pOiBNVmlldyB8IG51bGwge1xuICAgIGNvbnN0IHZpZXcgPSB0aGlzLnZpZXdzKHtpZDogZmluZEJ5LnZpZXdJZH0pLmF0KDApO1xuICAgIGlmICghdmlldyAmJiAhb3B0aW9ucykge1xuICAgICAgdGhyb3cgRXJyb3IoYFtOdWxsVmlld0Vycm9yXSBObyB2aWV3IGZvdW5kIHdpdGggaWQgJyR7ZmluZEJ5LnZpZXdJZH0nLmApO1xuICAgIH1cbiAgICByZXR1cm4gdmlldyA/PyBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHZpZXdzIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgZmlsdGVyLlxuICAgKlxuICAgKiBAcGFyYW0gZmluZEJ5IC0gRGVmaW5lcyB0aGUgc2VhcmNoIHNjb3BlLlxuICAgKiBAcGFyYW0gZmluZEJ5LmlkIC0gU2VhcmNoZXMgZm9yIHZpZXdzIHdpdGggdGhlIHNwZWNpZmllZCBpZC5cbiAgICogQHBhcmFtIGZpbmRCeS5wYXJ0SWQgLSBTZWFyY2hlcyBmb3Igdmlld3MgY29udGFpbmVkIGluIHRoZSBzcGVjaWZpZWQgcGFydC5cbiAgICogQHBhcmFtIGZpbmRCeS5zZWdtZW50cyAtIFNlYXJjaGVzIGZvciB2aWV3cyBuYXZpZ2F0ZWQgdG8gdGhlIHNwZWNpZmllZCBVUkwuXG4gICAqIEBwYXJhbSBmaW5kQnkubmF2aWdhdGlvbkhpbnQgLSBTZWFyY2hlcyBmb3Igdmlld3MgbmF2aWdhdGVkIHdpdGggZ2l2ZW4gaGludC4gUGFzc2luZyBgbnVsbGAgc2VhcmNoZXMgZm9yIHZpZXdzIG5hdmlnYXRlZCB3aXRob3V0IGEgaGludC5cbiAgICogQHBhcmFtIGZpbmRCeS5tYXJrZWRGb3JSZW1vdmFsIC0gU2VhcmNoZXMgZm9yIHZpZXdzIG1hcmtlZCAob3Igbm90IG1hcmtlZCkgZm9yIHJlbW92YWwuXG4gICAqIEBwYXJhbSBmaW5kQnkuZ3JpZCAtIFNlYXJjaGVzIGZvciB2aWV3cyBjb250YWluZWQgaW4gdGhlIHNwZWNpZmllZCBncmlkLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbnRyb2xzIHRoZSBzZWFyY2guXG4gICAqIEBwYXJhbSBvcHRpb25zLm9yRWxzZSAtIENvbnRyb2xzIHRvIGVycm9yIGlmIG5vIHZpZXcgaXMgZm91bmQuXG4gICAqIEByZXR1cm4gdmlld3MgbWF0Y2hpbmcgdGhlIGZpbHRlciBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyB2aWV3cyhmaW5kQnk/OiB7aWQ/OiBzdHJpbmc7IHBhcnRJZD86IHN0cmluZzsgc2VnbWVudHM/OiBVcmxTZWdtZW50TWF0Y2hlcjsgbmF2aWdhdGlvbkhpbnQ/OiBzdHJpbmcgfCBudWxsOyBtYXJrZWRGb3JSZW1vdmFsPzogYm9vbGVhbjsgZ3JpZD86IGtleW9mIEdyaWRzfSwgb3B0aW9ucz86IHtvckVsc2U6ICd0aHJvd0Vycm9yJ30pOiByZWFkb25seSBNVmlld1tdIHtcbiAgICBjb25zdCB2aWV3cyA9IHRoaXMucGFydHMoe2dyaWQ6IGZpbmRCeT8uZ3JpZH0pXG4gICAgICAuZmlsdGVyKHBhcnQgPT4ge1xuICAgICAgICBpZiAoZmluZEJ5Py5wYXJ0SWQgIT09IHVuZGVmaW5lZCAmJiBwYXJ0LmlkICE9PSBmaW5kQnkucGFydElkKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSlcbiAgICAgIC5mbGF0TWFwKHBhcnQgPT4gcGFydC52aWV3cylcbiAgICAgIC5maWx0ZXIodmlldyA9PiB7XG4gICAgICAgIGlmIChmaW5kQnk/LmlkICE9PSB1bmRlZmluZWQgJiYgIW1hdGNoVmlld0J5SWQoZmluZEJ5LmlkKSh2aWV3KSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmluZEJ5Py5zZWdtZW50cyAmJiAhZmluZEJ5LnNlZ21lbnRzLm1hdGNoZXModGhpcy51cmxTZWdtZW50cyh7dmlld0lkOiB2aWV3LmlkfSkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaW5kQnk/Lm5hdmlnYXRpb25IaW50ICE9PSB1bmRlZmluZWQgJiYgZmluZEJ5Lm5hdmlnYXRpb25IaW50ICE9PSAodmlldy5uYXZpZ2F0aW9uPy5oaW50ID8/IG51bGwpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaW5kQnk/Lm1hcmtlZEZvclJlbW92YWwgIT09IHVuZGVmaW5lZCAmJiBmaW5kQnkubWFya2VkRm9yUmVtb3ZhbCAhPT0gKHZpZXcubWFya2VkRm9yUmVtb3ZhbCA/PyBmYWxzZSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcblxuICAgIGlmIChmaW5kQnkgJiYgIXZpZXdzLmxlbmd0aCAmJiBvcHRpb25zKSB7XG4gICAgICB0aHJvdyBFcnJvcihgW051bGxWaWV3RXJyb3JdIE5vIG1hdGNoaW5nIHZpZXcgZm91bmQ6IFske3N0cmluZ2lmeUZpbHRlcihmaW5kQnkpfV1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHZpZXdzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBwdWJsaWMgYWRkVmlldyhpZDogc3RyaW5nLCBvcHRpb25zOiB7cGFydElkOiBzdHJpbmc7IHBvc2l0aW9uPzogbnVtYmVyIHwgJ3N0YXJ0JyB8ICdlbmQnIHwgJ2JlZm9yZS1hY3RpdmUtdmlldycgfCAnYWZ0ZXItYWN0aXZlLXZpZXcnOyBhY3RpdmF0ZVZpZXc/OiBib29sZWFuOyBhY3RpdmF0ZVBhcnQ/OiBib29sZWFuOyBjc3NDbGFzcz86IHN0cmluZyB8IHN0cmluZ1tdfSk6IMm1V29ya2JlbmNoTGF5b3V0IHtcbiAgICBjb25zdCB3b3JraW5nQ29weSA9IHRoaXMud29ya2luZ0NvcHkoKTtcbiAgICBpZiAoV29ya2JlbmNoTGF5b3V0cy5pc1ZpZXdJZChpZCkpIHtcbiAgICAgIHdvcmtpbmdDb3B5Ll9fYWRkVmlldyh7aWQsIHVpZDogcmFuZG9tVVVJRCgpfSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgd29ya2luZ0NvcHkuX19hZGRWaWV3KHtpZDogdGhpcy5jb21wdXRlTmV4dFZpZXdJZCgpLCBhbHRlcm5hdGl2ZUlkOiBpZCwgdWlkOiByYW5kb21VVUlEKCl9LCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHdvcmtpbmdDb3B5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBwdWJsaWMgbmF2aWdhdGVWaWV3KGlkOiBzdHJpbmcsIGNvbW1hbmRzOiBDb21tYW5kcywgZXh0cmFzPzoge2hpbnQ/OiBzdHJpbmc7IHJlbGF0aXZlVG8/OiBBY3RpdmF0ZWRSb3V0ZSB8IG51bGw7IHN0YXRlPzogVmlld1N0YXRlOyBjc3NDbGFzcz86IHN0cmluZyB8IHN0cmluZ1tdfSk6IMm1V29ya2JlbmNoTGF5b3V0IHtcbiAgICBjb25zdCB3b3JraW5nQ29weSA9IHRoaXMud29ya2luZ0NvcHkoKTtcbiAgICB3b3JraW5nQ29weS52aWV3cyh7aWR9LCB7b3JFbHNlOiAndGhyb3dFcnJvcid9KS5mb3JFYWNoKHZpZXcgPT4gd29ya2luZ0NvcHkuX19uYXZpZ2F0ZVZpZXcodmlldywgY29tbWFuZHMsIGV4dHJhcykpO1xuICAgIHJldHVybiB3b3JraW5nQ29weTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBAaW5oZXJpdERvY1xuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbnRyb2xzIHJlbW92YWwgb2YgdGhlIHZpZXcuXG4gICAqIEBwYXJhbSBvcHRpb25zLmZvcmNlIC0gU3BlY2lmaWVzIHdoZXRoZXIgdG8gZm9yY2UgcmVtb3ZlIHRoZSB2aWV3LCBieXBhc3NpbmcgYENhbkNsb3NlYCBndWFyZC5cbiAgICovXG4gIHB1YmxpYyByZW1vdmVWaWV3KGlkOiBzdHJpbmcsIG9wdGlvbnM/OiB7Zm9yY2U/OiBib29sZWFufSk6IMm1V29ya2JlbmNoTGF5b3V0IHtcbiAgICBjb25zdCB3b3JraW5nQ29weSA9IHRoaXMud29ya2luZ0NvcHkoKTtcbiAgICB3b3JraW5nQ29weS52aWV3cyh7aWR9LCB7b3JFbHNlOiAndGhyb3dFcnJvcid9KS5mb3JFYWNoKHZpZXcgPT4gd29ya2luZ0NvcHkuX19yZW1vdmVWaWV3KHZpZXcsIHtmb3JjZTogb3B0aW9ucz8uZm9yY2V9KSk7XG4gICAgcmV0dXJuIHdvcmtpbmdDb3B5O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdmlld3MgbWFya2VkIGZvciByZW1vdmFsLCBvcHRpb25hbGx5IGludm9raW5nIHRoZSBwYXNzZWQgYENhbkNsb3NlYCBmdW5jdGlvbiB0byBkZWNpZGUgd2hldGhlciB0byByZW1vdmUgYSB2aWV3LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlbW92ZVZpZXdzTWFya2VkRm9yUmVtb3ZhbChjYW5DbG9zZUZuPzogKHZpZXdVaWQ6IFVVSUQpID0+IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuKTogUHJvbWlzZTzJtVdvcmtiZW5jaExheW91dD4ge1xuICAgIGNvbnN0IHdvcmtpbmdDb3B5ID0gdGhpcy53b3JraW5nQ29weSgpO1xuICAgIGZvciAoY29uc3QgdmlldyBvZiB3b3JraW5nQ29weS52aWV3cyh7bWFya2VkRm9yUmVtb3ZhbDogdHJ1ZX0pKSB7XG4gICAgICBpZiAoIWNhbkNsb3NlRm4gfHwgYXdhaXQgY2FuQ2xvc2VGbih2aWV3LnVpZCkpIHtcbiAgICAgICAgd29ya2luZ0NvcHkuX19yZW1vdmVWaWV3KHZpZXcsIHtmb3JjZTogdHJ1ZX0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gd29ya2luZ0NvcHk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIHB1YmxpYyBtb3ZlVmlldyhpZDogc3RyaW5nLCB0YXJnZXRQYXJ0SWQ6IHN0cmluZywgb3B0aW9ucz86IHtwb3NpdGlvbj86IG51bWJlciB8ICdzdGFydCcgfCAnZW5kJyB8ICdiZWZvcmUtYWN0aXZlLXZpZXcnIHwgJ2FmdGVyLWFjdGl2ZS12aWV3JzsgYWN0aXZhdGVWaWV3PzogYm9vbGVhbjsgYWN0aXZhdGVQYXJ0PzogYm9vbGVhbn0pOiDJtVdvcmtiZW5jaExheW91dCB7XG4gICAgY29uc3Qgd29ya2luZ0NvcHkgPSB0aGlzLndvcmtpbmdDb3B5KCk7XG4gICAgd29ya2luZ0NvcHkudmlld3Moe2lkfSwge29yRWxzZTogJ3Rocm93RXJyb3InfSkuZm9yRWFjaCh2aWV3ID0+IHdvcmtpbmdDb3B5Ll9fbW92ZVZpZXcodmlldywgdGFyZ2V0UGFydElkLCBvcHRpb25zKSk7XG4gICAgcmV0dXJuIHdvcmtpbmdDb3B5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBwdWJsaWMgYWN0aXZhdGVWaWV3KGlkOiBzdHJpbmcsIG9wdGlvbnM/OiB7YWN0aXZhdGVQYXJ0PzogYm9vbGVhbn0pOiDJtVdvcmtiZW5jaExheW91dCB7XG4gICAgY29uc3Qgd29ya2luZ0NvcHkgPSB0aGlzLndvcmtpbmdDb3B5KCk7XG4gICAgd29ya2luZ0NvcHkudmlld3Moe2lkfSwge29yRWxzZTogJ3Rocm93RXJyb3InfSkuZm9yRWFjaCh2aWV3ID0+IHdvcmtpbmdDb3B5Ll9fYWN0aXZhdGVWaWV3KHZpZXcsIG9wdGlvbnMpKTtcbiAgICByZXR1cm4gd29ya2luZ0NvcHk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIHRoZSBwcmVjZWRpbmcgdmlldyBpZiBpdCBleGlzdHMsIG9yIHRoZSBzdWJzZXF1ZW50IHZpZXcgb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgaWQgb2YgdGhlIHZpZXcgdG8gYWN0aXZhdGUgaXRzIGFkamFjZW50IHZpZXcuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29udHJvbHMgdmlldyBhY3RpdmF0aW9uLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5hY3RpdmF0ZVBhcnQgLSBDb250cm9scyBpZiB0byBhY3RpdmF0ZSB0aGUgcGFydC4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgKiBAcmV0dXJuIGEgY29weSBvZiB0aGlzIGxheW91dCB3aXRoIHRoZSBhZGphY2VudCB2aWV3IGFjdGl2YXRlZC5cbiAgICovXG4gIHB1YmxpYyBhY3RpdmF0ZUFkamFjZW50VmlldyhpZDogc3RyaW5nLCBvcHRpb25zPzoge2FjdGl2YXRlUGFydD86IGJvb2xlYW59KTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIGNvbnN0IHdvcmtpbmdDb3B5ID0gdGhpcy53b3JraW5nQ29weSgpO1xuICAgIHdvcmtpbmdDb3B5LnZpZXdzKHtpZH0sIHtvckVsc2U6ICd0aHJvd0Vycm9yJ30pLmZvckVhY2godmlldyA9PiB3b3JraW5nQ29weS5fX2FjdGl2YXRlQWRqYWNlbnRWaWV3KHZpZXcsIG9wdGlvbnMpKTtcbiAgICByZXR1cm4gd29ya2luZ0NvcHk7XG4gIH1cblxuICAvKipcbiAgICogUmVuYW1lcyBhIHZpZXcuXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgdmlldyB3aGljaCB0byByZW5hbWUuXG4gICAqIEBwYXJhbSBuZXdWaWV3SWQgLSBUaGUgbmV3IGlkZW50aXR5IG9mIHRoZSB2aWV3LlxuICAgKiBAcmV0dXJuIGEgY29weSBvZiB0aGlzIGxheW91dCB3aXRoIHRoZSB2aWV3IHJlbmFtZWQuXG4gICAqL1xuICBwdWJsaWMgcmVuYW1lVmlldyhpZDogVmlld0lkLCBuZXdWaWV3SWQ6IFZpZXdJZCk6IMm1V29ya2JlbmNoTGF5b3V0IHtcbiAgICBjb25zdCB3b3JraW5nQ29weSA9IHRoaXMud29ya2luZ0NvcHkoKTtcbiAgICB3b3JraW5nQ29weS5fX3JlbmFtZVZpZXcod29ya2luZ0NvcHkudmlldyh7dmlld0lkOiBpZH0pLCBuZXdWaWV3SWQpO1xuICAgIHJldHVybiB3b3JraW5nQ29weTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzcGxpdCByYXRpbyBmb3IgdGhlIHR3byBjaGlsZHJlbiBvZiBhIHtAbGluayBNVHJlZU5vZGV9LlxuICAgKlxuICAgKiBAcGFyYW0gbm9kZUlkIC0gVGhlIGlkIG9mIHRoZSBub2RlIHRvIHNldCB0aGUgc3BsaXQgcmF0aW8gZm9yLlxuICAgKiBAcGFyYW0gcmF0aW8gLSBUaGUgcHJvcG9ydGlvbmFsIHNpemUgYmV0d2VlbiB0aGUgdHdvIGNoaWxkcmVuLCBleHByZXNzZWQgYXMgY2xvc2VkIGludGVydmFsIFswLDFdLlxuICAgKiAgICAgICAgICAgICAgICBFeGFtcGxlOiBUbyBnaXZlIDEvMyBvZiB0aGUgc3BhY2UgdG8gdGhlIGZpcnN0IGNoaWxkLCBzZXQgdGhlIHJhdGlvIHRvIGAwLjNgLlxuICAgKiBAcmV0dXJuIGEgY29weSBvZiB0aGlzIGxheW91dCB3aXRoIHRoZSBzcGxpdCByYXRpbyBzZXQuXG4gICAqL1xuICBwdWJsaWMgc2V0U3BsaXRSYXRpbyhub2RlSWQ6IHN0cmluZywgcmF0aW86IG51bWJlcik6IMm1V29ya2JlbmNoTGF5b3V0IHtcbiAgICBjb25zdCB3b3JraW5nQ29weSA9IHRoaXMud29ya2luZ0NvcHkoKTtcbiAgICB3b3JraW5nQ29weS5fX3NldFNwbGl0UmF0aW8obm9kZUlkLCByYXRpbyk7XG4gICAgcmV0dXJuIHdvcmtpbmdDb3B5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMgdGhpcyBsYXlvdXQgaW50byBhIFVSTC1zYWZlIGJhc2U2NCBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgc2VyaWFsaXplKCk6IFNlcmlhbGl6ZWRXb3JrYmVuY2hMYXlvdXQge1xuICAgIGNvbnN0IGlzTWFpbkFyZWFFbXB0eSA9ICh0aGlzLm1haW5BcmVhR3JpZD8ucm9vdCBpbnN0YW5jZW9mIE1QYXJ0ICYmIHRoaXMubWFpbkFyZWFHcmlkLnJvb3Qudmlld3MubGVuZ3RoID09PSAwKSA/PyB0cnVlO1xuICAgIHJldHVybiB7XG4gICAgICB3b3JrYmVuY2hHcmlkOiB0aGlzLl9zZXJpYWxpemVyLnNlcmlhbGl6ZUdyaWQodGhpcy53b3JrYmVuY2hHcmlkKSxcbiAgICAgIG1haW5BcmVhR3JpZDogaXNNYWluQXJlYUVtcHR5ID8gbnVsbCA6IHRoaXMuX3NlcmlhbGl6ZXIuc2VyaWFsaXplR3JpZCh0aGlzLl9ncmlkcy5tYWluQXJlYSksXG4gICAgICB3b3JrYmVuY2hWaWV3T3V0bGV0czogdGhpcy5fc2VyaWFsaXplci5zZXJpYWxpemVWaWV3T3V0bGV0cyh0aGlzLnZpZXdPdXRsZXRzKHtncmlkOiAnd29ya2JlbmNoJ30pKSxcbiAgICAgIG1haW5BcmVhVmlld091dGxldHM6IHRoaXMuX3NlcmlhbGl6ZXIuc2VyaWFsaXplVmlld091dGxldHModGhpcy52aWV3T3V0bGV0cyh7Z3JpZDogJ21haW5BcmVhJ30pKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSBuZXh0IGF2YWlsYWJsZSB2aWV3IGlkLlxuICAgKi9cbiAgcHVibGljIGNvbXB1dGVOZXh0Vmlld0lkKCk6IFZpZXdJZCB7XG4gICAgcmV0dXJuIFdvcmtiZW5jaExheW91dHMuY29tcHV0ZU5leHRWaWV3SWQodGhpcy52aWV3cygpLm1hcCh2aWV3ID0+IHZpZXcuaWQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RlOiBUaGlzIG1ldGhvZCBuYW1lIGJlZ2lucyB3aXRoIHVuZGVyc2NvcmVzLCBpbmRpY2F0aW5nIHRoYXQgaXQgZG9lcyBub3Qgb3BlcmF0ZSBvbiBhIHdvcmtpbmcgY29weSwgYnV0IG1vZGlmaWVzIHRoaXMgbGF5b3V0IGluc3RlYWQuXG4gICAqL1xuICBwcml2YXRlIF9fYWRkUGFydChpZDogc3RyaW5nLCByZWxhdGl2ZVRvOiBSZWZlcmVuY2VFbGVtZW50LCBvcHRpb25zPzoge2FjdGl2YXRlPzogYm9vbGVhbjsgc3RydWN0dXJhbD86IGJvb2xlYW59KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzUGFydChpZCkpIHtcbiAgICAgIHRocm93IEVycm9yKGBbUGFydEFkZEVycm9yXSBQYXJ0IGlkIG11c3QgYmUgdW5pcXVlLiBUaGUgbGF5b3V0IGFscmVhZHkgY29udGFpbnMgYSBwYXJ0IHdpdGggdGhlIGlkICcke2lkfScuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3UGFydCA9IG5ldyBNUGFydCh7aWQsIHN0cnVjdHVyYWw6IG9wdGlvbnM/LnN0cnVjdHVyYWwgPz8gdHJ1ZSwgdmlld3M6IFtdfSk7XG5cbiAgICAvLyBGaW5kIHRoZSByZWZlcmVuY2UgZWxlbWVudCwgaWYgc3BlY2lmaWVkLCBvciB1c2UgdGhlIGxheW91dCByb290IGFzIHJlZmVyZW5jZSBvdGhlcndpc2UuXG4gICAgY29uc3QgcmVmZXJlbmNlRWxlbWVudCA9IHJlbGF0aXZlVG8ucmVsYXRpdmVUbyA/IHRoaXMuZmluZFRyZWVFbGVtZW50KHtpZDogcmVsYXRpdmVUby5yZWxhdGl2ZVRvfSkgOiB0aGlzLndvcmtiZW5jaEdyaWQucm9vdDtcbiAgICBjb25zdCBhZGRCZWZvcmUgPSByZWxhdGl2ZVRvLmFsaWduID09PSAnbGVmdCcgfHwgcmVsYXRpdmVUby5hbGlnbiA9PT0gJ3RvcCc7XG4gICAgY29uc3QgcmF0aW8gPSByZWxhdGl2ZVRvLnJhdGlvID8/IC41O1xuXG4gICAgLy8gQ3JlYXRlIGEgbmV3IHRyZWUgbm9kZS5cbiAgICBjb25zdCBuZXdUcmVlTm9kZTogTVRyZWVOb2RlID0gbmV3IE1UcmVlTm9kZSh7XG4gICAgICBub2RlSWQ6IHJhbmRvbVVVSUQoKSxcbiAgICAgIGNoaWxkMTogYWRkQmVmb3JlID8gbmV3UGFydCA6IHJlZmVyZW5jZUVsZW1lbnQsXG4gICAgICBjaGlsZDI6IGFkZEJlZm9yZSA/IHJlZmVyZW5jZUVsZW1lbnQgOiBuZXdQYXJ0LFxuICAgICAgZGlyZWN0aW9uOiByZWxhdGl2ZVRvLmFsaWduID09PSAnbGVmdCcgfHwgcmVsYXRpdmVUby5hbGlnbiA9PT0gJ3JpZ2h0JyA/ICdyb3cnIDogJ2NvbHVtbicsXG4gICAgICByYXRpbzogYWRkQmVmb3JlID8gcmF0aW8gOiAxIC0gcmF0aW8sXG4gICAgICBwYXJlbnQ6IHJlZmVyZW5jZUVsZW1lbnQucGFyZW50LFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIHRoZSB0cmVlIG5vZGUgdG8gdGhlIGxheW91dC5cbiAgICBpZiAoIXJlZmVyZW5jZUVsZW1lbnQucGFyZW50KSB7XG4gICAgICB0aGlzLmdyaWQoe2VsZW1lbnQ6IHJlZmVyZW5jZUVsZW1lbnR9KS5yb290ID0gbmV3VHJlZU5vZGU7IC8vIHRvcC1sZXZlbCBub2RlXG4gICAgfVxuICAgIGVsc2UgaWYgKHJlZmVyZW5jZUVsZW1lbnQucGFyZW50LmNoaWxkMSA9PT0gcmVmZXJlbmNlRWxlbWVudCkge1xuICAgICAgcmVmZXJlbmNlRWxlbWVudC5wYXJlbnQuY2hpbGQxID0gbmV3VHJlZU5vZGU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmVmZXJlbmNlRWxlbWVudC5wYXJlbnQuY2hpbGQyID0gbmV3VHJlZU5vZGU7XG4gICAgfVxuICAgIHJlZmVyZW5jZUVsZW1lbnQucGFyZW50ID0gbmV3VHJlZU5vZGU7XG4gICAgbmV3UGFydC5wYXJlbnQgPSBuZXdUcmVlTm9kZTtcblxuICAgIC8vIEFjdGl2YXRlIHRoZSBwYXJ0LlxuICAgIGlmIChvcHRpb25zPy5hY3RpdmF0ZSkge1xuICAgICAgdGhpcy5fX2FjdGl2YXRlUGFydChuZXdQYXJ0LmlkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTm90ZTogVGhpcyBtZXRob2QgbmFtZSBiZWdpbnMgd2l0aCB1bmRlcnNjb3JlcywgaW5kaWNhdGluZyB0aGF0IGl0IGRvZXMgbm90IG9wZXJhdGUgb24gYSB3b3JraW5nIGNvcHksIGJ1dCBtb2RpZmllcyB0aGlzIGxheW91dCBpbnN0ZWFkLlxuICAgKi9cbiAgcHJpdmF0ZSBfX3JlbW92ZVBhcnQoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHBhcnQgPSB0aGlzLnBhcnQoe3BhcnRJZDogaWR9KTtcbiAgICBjb25zdCBncmlkID0gdGhpcy5ncmlkKHtlbGVtZW50OiBwYXJ0fSk7XG4gICAgY29uc3QgZ3JpZE5hbWUgPSB0aGlzLl9ncmlkTmFtZXMuZmluZChncmlkTmFtZSA9PiB0aGlzLl9ncmlkc1tncmlkTmFtZV0gPT09IGdyaWQpO1xuXG4gICAgLy8gVGhlIGxhc3QgcGFydCBpcyBuZXZlciByZW1vdmVkLlxuICAgIGNvbnN0IHBhcnRzID0gdGhpcy5wYXJ0cyh7Z3JpZDogZ3JpZE5hbWV9KTtcbiAgICBpZiAocGFydHMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHRoZSBwYXJ0LlxuICAgIGNvbnN0IHNpYmxpbmdFbGVtZW50ID0gKHBhcnQucGFyZW50IS5jaGlsZDEgPT09IHBhcnQgPyBwYXJ0LnBhcmVudCEuY2hpbGQyIDogcGFydC5wYXJlbnQhLmNoaWxkMSk7XG4gICAgaWYgKCFwYXJ0LnBhcmVudCEucGFyZW50KSB7XG4gICAgICBncmlkLnJvb3QgPSBzaWJsaW5nRWxlbWVudDtcbiAgICAgIGdyaWQucm9vdC5wYXJlbnQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKHBhcnQucGFyZW50IS5wYXJlbnQuY2hpbGQxID09PSBwYXJ0LnBhcmVudCkge1xuICAgICAgcGFydC5wYXJlbnQhLnBhcmVudC5jaGlsZDEgPSBzaWJsaW5nRWxlbWVudDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBwYXJ0LnBhcmVudCEucGFyZW50LmNoaWxkMiA9IHNpYmxpbmdFbGVtZW50O1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSBvdXRsZXRzIGFuZCBzdGF0ZXMgb2Ygdmlld3MgY29udGFpbmVkIGluIHRoZSBwYXJ0LlxuICAgIHBhcnQudmlld3MuZm9yRWFjaCh2aWV3ID0+IHtcbiAgICAgIHRoaXMuX3ZpZXdPdXRsZXRzLmRlbGV0ZSh2aWV3LmlkKTtcbiAgICAgIHRoaXMuX3ZpZXdTdGF0ZXMuZGVsZXRlKHZpZXcuaWQpO1xuICAgIH0pO1xuXG4gICAgLy8gSWYgdGhlIHJlbW92ZWQgcGFydCB3YXMgdGhlIGFjdGl2ZSBwYXJ0LCBtYWtlIHRoZSBsYXN0IHVzZWQgcGFydCB0aGUgYWN0aXZlIHBhcnQuXG4gICAgaWYgKGdyaWQuYWN0aXZlUGFydElkID09PSBpZCkge1xuICAgICAgY29uc3QgYWN0aXZlUGFydCA9IHBhcnRzXG4gICAgICAgIC5maWx0ZXIocGFydCA9PiBwYXJ0LmlkICE9PSBpZClcbiAgICAgICAgLnNvcnQoKHBhcnQxLCBwYXJ0MikgPT4ge1xuICAgICAgICAgIGNvbnN0IGFjdGl2YXRpb25JbnN0YW50UGFydDEgPSB0aGlzLl9wYXJ0QWN0aXZhdGlvbkluc3RhbnRQcm92aWRlci5nZXRBY3RpdmF0aW9uSW5zdGFudChwYXJ0MS5pZCk7XG4gICAgICAgICAgY29uc3QgYWN0aXZhdGlvbkluc3RhbnRQYXJ0MiA9IHRoaXMuX3BhcnRBY3RpdmF0aW9uSW5zdGFudFByb3ZpZGVyLmdldEFjdGl2YXRpb25JbnN0YW50KHBhcnQyLmlkKTtcbiAgICAgICAgICByZXR1cm4gYWN0aXZhdGlvbkluc3RhbnRQYXJ0MiAtIGFjdGl2YXRpb25JbnN0YW50UGFydDE7XG4gICAgICAgIH0pWzBdO1xuICAgICAgZ3JpZC5hY3RpdmVQYXJ0SWQgPSBhY3RpdmVQYXJ0IS5pZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTm90ZTogVGhpcyBtZXRob2QgbmFtZSBiZWdpbnMgd2l0aCB1bmRlcnNjb3JlcywgaW5kaWNhdGluZyB0aGF0IGl0IGRvZXMgbm90IG9wZXJhdGUgb24gYSB3b3JraW5nIGNvcHksIGJ1dCBtb2RpZmllcyB0aGlzIGxheW91dCBpbnN0ZWFkLlxuICAgKi9cbiAgcHJpdmF0ZSBfX2FkZFZpZXcodmlldzogTVZpZXcsIG9wdGlvbnM6IHtwYXJ0SWQ6IHN0cmluZzsgcG9zaXRpb24/OiBudW1iZXIgfCAnc3RhcnQnIHwgJ2VuZCcgfCAnYmVmb3JlLWFjdGl2ZS12aWV3JyB8ICdhZnRlci1hY3RpdmUtdmlldyc7IGFjdGl2YXRlVmlldz86IGJvb2xlYW47IGFjdGl2YXRlUGFydD86IGJvb2xlYW47IGNzc0NsYXNzPzogc3RyaW5nIHwgc3RyaW5nW119KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzVmlldyh2aWV3LmlkKSkge1xuICAgICAgdGhyb3cgRXJyb3IoYFtWaWV3QWRkRXJyb3JdIFZpZXcgaWQgbXVzdCBiZSB1bmlxdWUuIFRoZSBsYXlvdXQgYWxyZWFkeSBjb250YWlucyBhIHZpZXcgd2l0aCB0aGUgaWQgJyR7dmlldy5pZH0nLmApO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnQgPSB0aGlzLnBhcnQoe3BhcnRJZDogb3B0aW9ucy5wYXJ0SWR9KTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGNvZXJjZVBvc2l0aW9uKG9wdGlvbnMucG9zaXRpb24gPz8gJ2VuZCcsIHBhcnQpO1xuICAgIHBhcnQudmlld3Muc3BsaWNlKHBvc2l0aW9uLCAwLCB2aWV3KTtcblxuICAgIGlmIChvcHRpb25zLmFjdGl2YXRlVmlldykge1xuICAgICAgdGhpcy5fX2FjdGl2YXRlVmlldyh2aWV3KTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYWN0aXZhdGVQYXJ0KSB7XG4gICAgICB0aGlzLl9fYWN0aXZhdGVQYXJ0KG9wdGlvbnMucGFydElkKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuY3NzQ2xhc3MpIHtcbiAgICAgIHZpZXcuY3NzQ2xhc3MgPSBBcnJheXMuY29lcmNlKG9wdGlvbnMuY3NzQ2xhc3MpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RlOiBUaGlzIG1ldGhvZCBuYW1lIGJlZ2lucyB3aXRoIHVuZGVyc2NvcmVzLCBpbmRpY2F0aW5nIHRoYXQgaXQgZG9lcyBub3Qgb3BlcmF0ZSBvbiBhIHdvcmtpbmcgY29weSwgYnV0IG1vZGlmaWVzIHRoaXMgbGF5b3V0IGluc3RlYWQuXG4gICAqL1xuICBwcml2YXRlIF9fbmF2aWdhdGVWaWV3KHZpZXc6IE1WaWV3LCBjb21tYW5kczogQ29tbWFuZHMsIGV4dHJhcz86IHtoaW50Pzogc3RyaW5nOyByZWxhdGl2ZVRvPzogQWN0aXZhdGVkUm91dGUgfCBudWxsOyBzdGF0ZT86IFZpZXdTdGF0ZTsgY3NzQ2xhc3M/OiBzdHJpbmcgfCBzdHJpbmdbXX0pOiB2b2lkIHtcbiAgICBpZiAoIWNvbW1hbmRzLmxlbmd0aCAmJiAhZXh0cmFzPy5oaW50ICYmICFleHRyYXM/LnJlbGF0aXZlVG8pIHtcbiAgICAgIHRocm93IEVycm9yKCdbTmF2aWdhdGVFcnJvcl0gQ29tbWFuZHMsIHJlbGF0aXZlVG8gb3IgaGludCBtdXN0IGJlIHNldC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmxTZWdtZW50cyA9IHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLl9pbmplY3RvciwgKCkgPT4gUm91dGVyVXRpbHMuY29tbWFuZHNUb1NlZ21lbnRzKGNvbW1hbmRzLCB7cmVsYXRpdmVUbzogZXh0cmFzPy5yZWxhdGl2ZVRvfSkpO1xuICAgIGlmICh1cmxTZWdtZW50cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX3ZpZXdPdXRsZXRzLnNldCh2aWV3LmlkLCB1cmxTZWdtZW50cyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fdmlld091dGxldHMuZGVsZXRlKHZpZXcuaWQpO1xuICAgIH1cblxuICAgIGlmIChleHRyYXM/LnN0YXRlICYmIE9iamVjdHMua2V5cyhleHRyYXMuc3RhdGUpLmxlbmd0aCkge1xuICAgICAgdGhpcy5fdmlld1N0YXRlcy5zZXQodmlldy5pZCwgZXh0cmFzLnN0YXRlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLl92aWV3U3RhdGVzLmRlbGV0ZSh2aWV3LmlkKTtcbiAgICB9XG5cbiAgICB2aWV3Lm5hdmlnYXRpb24gPSBPYmplY3RzLndpdGhvdXRVbmRlZmluZWRFbnRyaWVzKHtcbiAgICAgIGhpbnQ6IGV4dHJhcz8uaGludCxcbiAgICAgIGNzc0NsYXNzOiBleHRyYXM/LmNzc0NsYXNzID8gQXJyYXlzLmNvZXJjZShleHRyYXMuY3NzQ2xhc3MpIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vdGU6IFRoaXMgbWV0aG9kIG5hbWUgYmVnaW5zIHdpdGggdW5kZXJzY29yZXMsIGluZGljYXRpbmcgdGhhdCBpdCBkb2VzIG5vdCBvcGVyYXRlIG9uIGEgd29ya2luZyBjb3B5LCBidXQgbW9kaWZpZXMgdGhpcyBsYXlvdXQgaW5zdGVhZC5cbiAgICovXG4gIHByaXZhdGUgX19tb3ZlVmlldyh2aWV3OiBNVmlldywgdGFyZ2V0UGFydElkOiBzdHJpbmcsIG9wdGlvbnM/OiB7cG9zaXRpb24/OiBudW1iZXIgfCAnc3RhcnQnIHwgJ2VuZCcgfCAnYmVmb3JlLWFjdGl2ZS12aWV3JyB8ICdhZnRlci1hY3RpdmUtdmlldyc7IGFjdGl2YXRlVmlldz86IGJvb2xlYW47IGFjdGl2YXRlUGFydD86IGJvb2xlYW59KTogdm9pZCB7XG4gICAgY29uc3Qgc291cmNlUGFydCA9IHRoaXMucGFydCh7dmlld0lkOiB2aWV3LmlkfSk7XG4gICAgY29uc3QgdGFyZ2V0UGFydCA9IHRoaXMucGFydCh7cGFydElkOiB0YXJnZXRQYXJ0SWR9KTtcblxuICAgIC8vIE1vdmUgdGhlIHZpZXcuXG4gICAgaWYgKHNvdXJjZVBhcnQgIT09IHRhcmdldFBhcnQpIHtcbiAgICAgIHRoaXMuX19yZW1vdmVWaWV3KHZpZXcsIHtyZW1vdmVPdXRsZXQ6IGZhbHNlLCByZW1vdmVTdGF0ZTogZmFsc2UsIGZvcmNlOiB0cnVlfSk7XG4gICAgICB0aGlzLl9fYWRkVmlldyh2aWV3LCB7cGFydElkOiB0YXJnZXRQYXJ0SWQsIHBvc2l0aW9uOiBvcHRpb25zPy5wb3NpdGlvbn0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChvcHRpb25zPy5wb3NpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9IGNvZXJjZVBvc2l0aW9uKG9wdGlvbnMucG9zaXRpb24sIHRhcmdldFBhcnQpO1xuICAgICAgY29uc3QgcmVmZXJlbmNlVmlldzogTVZpZXcgfCB1bmRlZmluZWQgPSBzb3VyY2VQYXJ0LnZpZXdzLmF0KHBvc2l0aW9uKTtcbiAgICAgIHNvdXJjZVBhcnQudmlld3Muc3BsaWNlKHNvdXJjZVBhcnQudmlld3MuaW5kZXhPZih2aWV3KSwgMSk7XG4gICAgICBzb3VyY2VQYXJ0LnZpZXdzLnNwbGljZShyZWZlcmVuY2VWaWV3ID8gc291cmNlUGFydC52aWV3cy5pbmRleE9mKHJlZmVyZW5jZVZpZXcpIDogc291cmNlUGFydC52aWV3cy5sZW5ndGgsIDAsIHZpZXcpO1xuICAgIH1cblxuICAgIC8vIEFjdGl2YXRlIHZpZXcgYW5kIHBhcnQuXG4gICAgaWYgKG9wdGlvbnM/LmFjdGl2YXRlUGFydCkge1xuICAgICAgdGhpcy5fX2FjdGl2YXRlUGFydCh0YXJnZXRQYXJ0SWQpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucz8uYWN0aXZhdGVWaWV3KSB7XG4gICAgICB0aGlzLl9fYWN0aXZhdGVWaWV3KHZpZXcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RlOiBUaGlzIG1ldGhvZCBuYW1lIGJlZ2lucyB3aXRoIHVuZGVyc2NvcmVzLCBpbmRpY2F0aW5nIHRoYXQgaXQgZG9lcyBub3Qgb3BlcmF0ZSBvbiBhIHdvcmtpbmcgY29weSwgYnV0IG1vZGlmaWVzIHRoaXMgbGF5b3V0IGluc3RlYWQuXG4gICAqL1xuICBwcml2YXRlIF9fcmVtb3ZlVmlldyh2aWV3OiBNVmlldywgb3B0aW9ucz86IHtyZW1vdmVPdXRsZXQ/OiBmYWxzZTsgcmVtb3ZlU3RhdGU/OiBmYWxzZTsgZm9yY2U/OiBib29sZWFufSk6IHZvaWQge1xuICAgIGlmICghb3B0aW9ucz8uZm9yY2UpIHtcbiAgICAgIHZpZXcubWFya2VkRm9yUmVtb3ZhbCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFydCA9IHRoaXMucGFydCh7dmlld0lkOiB2aWV3LmlkfSk7XG5cbiAgICAvLyBSZW1vdmUgdmlldy5cbiAgICBwYXJ0LnZpZXdzLnNwbGljZShwYXJ0LnZpZXdzLmluZGV4T2YodmlldyksIDEpO1xuXG4gICAgLy8gUmVtb3ZlIG91dGxldC5cbiAgICBpZiAob3B0aW9ucz8ucmVtb3ZlT3V0bGV0ID8/IHRydWUpIHtcbiAgICAgIHRoaXMuX3ZpZXdPdXRsZXRzLmRlbGV0ZSh2aWV3LmlkKTtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgc3RhdGUuXG4gICAgaWYgKG9wdGlvbnM/LnJlbW92ZVN0YXRlID8/IHRydWUpIHtcbiAgICAgIHRoaXMuX3ZpZXdTdGF0ZXMuZGVsZXRlKHZpZXcuaWQpO1xuICAgIH1cblxuICAgIC8vIEFjdGl2YXRlIHRoZSBsYXN0IHVzZWQgdmlldyBpZiB0aGlzIHZpZXcgd2FzIGFjdGl2ZS5cbiAgICBpZiAocGFydC5hY3RpdmVWaWV3SWQgPT09IHZpZXcuaWQpIHtcbiAgICAgIHBhcnQuYWN0aXZlVmlld0lkID0gcGFydC52aWV3c1xuICAgICAgICAubWFwKHZpZXcgPT4gdmlldy5pZClcbiAgICAgICAgLnNvcnQoKHZpZXdJZDEsIHZpZXdJZDIpID0+IHtcbiAgICAgICAgICBjb25zdCBhY3RpdmF0aW9uSW5zdGFudFZpZXcxID0gdGhpcy5fdmlld0FjdGl2YXRpb25JbnN0YW50UHJvdmlkZXIuZ2V0QWN0aXZhdGlvbkluc3RhbnQodmlld0lkMSk7XG4gICAgICAgICAgY29uc3QgYWN0aXZhdGlvbkluc3RhbnRWaWV3MiA9IHRoaXMuX3ZpZXdBY3RpdmF0aW9uSW5zdGFudFByb3ZpZGVyLmdldEFjdGl2YXRpb25JbnN0YW50KHZpZXdJZDIpO1xuICAgICAgICAgIHJldHVybiBhY3RpdmF0aW9uSW5zdGFudFZpZXcyIC0gYWN0aXZhdGlvbkluc3RhbnRWaWV3MTtcbiAgICAgICAgfSkuYXQoMCk7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHRoZSBwYXJ0IGlmIHRoaXMgaXMgdGhlIGxhc3QgdmlldyBvZiB0aGUgcGFydCBhbmQgbm90IGEgc3RydWN0dXJhbCBwYXJ0LlxuICAgIGlmIChwYXJ0LnZpZXdzLmxlbmd0aCA9PT0gMCAmJiAhcGFydC5zdHJ1Y3R1cmFsKSB7XG4gICAgICB0aGlzLl9fcmVtb3ZlUGFydChwYXJ0LmlkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTm90ZTogVGhpcyBtZXRob2QgbmFtZSBiZWdpbnMgd2l0aCB1bmRlcnNjb3JlcywgaW5kaWNhdGluZyB0aGF0IGl0IGRvZXMgbm90IG9wZXJhdGUgb24gYSB3b3JraW5nIGNvcHksIGJ1dCBtb2RpZmllcyB0aGlzIGxheW91dCBpbnN0ZWFkLlxuICAgKi9cbiAgcHJpdmF0ZSBfX2FjdGl2YXRlVmlldyh2aWV3OiBNVmlldywgb3B0aW9ucz86IHthY3RpdmF0ZVBhcnQ/OiBib29sZWFufSk6IHZvaWQge1xuICAgIC8vIEFjdGl2YXRlIHRoZSB2aWV3LlxuICAgIGNvbnN0IHBhcnQgPSB0aGlzLnBhcnQoe3ZpZXdJZDogdmlldy5pZH0pO1xuICAgIHBhcnQuYWN0aXZlVmlld0lkID0gdmlldy5pZDtcblxuICAgIC8vIEFjdGl2YXRlIHRoZSBwYXJ0LlxuICAgIGlmIChvcHRpb25zPy5hY3RpdmF0ZVBhcnQpIHtcbiAgICAgIHRoaXMuX19hY3RpdmF0ZVBhcnQocGFydC5pZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5vdGU6IFRoaXMgbWV0aG9kIG5hbWUgYmVnaW5zIHdpdGggdW5kZXJzY29yZXMsIGluZGljYXRpbmcgdGhhdCBpdCBkb2VzIG5vdCBvcGVyYXRlIG9uIGEgd29ya2luZyBjb3B5LCBidXQgbW9kaWZpZXMgdGhpcyBsYXlvdXQgaW5zdGVhZC5cbiAgICovXG4gIHByaXZhdGUgX19hY3RpdmF0ZUFkamFjZW50Vmlldyh2aWV3OiBNVmlldywgb3B0aW9ucz86IHthY3RpdmF0ZVBhcnQ/OiBib29sZWFufSk6IHZvaWQge1xuICAgIGNvbnN0IHBhcnQgPSB0aGlzLnBhcnQoe3ZpZXdJZDogdmlldy5pZH0pO1xuICAgIGNvbnN0IHZpZXdJbmRleCA9IHBhcnQudmlld3MuaW5kZXhPZih2aWV3KTtcbiAgICBwYXJ0LmFjdGl2ZVZpZXdJZCA9IChwYXJ0LnZpZXdzW3ZpZXdJbmRleCAtIDFdIHx8IHBhcnQudmlld3Nbdmlld0luZGV4ICsgMV0pPy5pZDsgLy8gaXMgYHVuZGVmaW5lZGAgaWYgaXQgaXMgdGhlIGxhc3QgdmlldyBvZiB0aGUgcGFydFxuXG4gICAgLy8gQWN0aXZhdGUgdGhlIHBhcnQuXG4gICAgaWYgKG9wdGlvbnM/LmFjdGl2YXRlUGFydCkge1xuICAgICAgdGhpcy5fX2FjdGl2YXRlUGFydChwYXJ0LmlkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTm90ZTogVGhpcyBtZXRob2QgbmFtZSBiZWdpbnMgd2l0aCB1bmRlcnNjb3JlcywgaW5kaWNhdGluZyB0aGF0IGl0IGRvZXMgbm90IG9wZXJhdGUgb24gYSB3b3JraW5nIGNvcHksIGJ1dCBtb2RpZmllcyB0aGlzIGxheW91dCBpbnN0ZWFkLlxuICAgKi9cbiAgcHJpdmF0ZSBfX3NldFNwbGl0UmF0aW8obm9kZUlkOiBzdHJpbmcsIHJhdGlvOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAocmF0aW8gPCAwIHx8IHJhdGlvID4gMSkge1xuICAgICAgdGhyb3cgRXJyb3IoYFtMYXlvdXRNb2RpZnlFcnJvcl0gUmF0aW8gZm9yIG5vZGUgJyR7bm9kZUlkfScgbXVzdCBiZSBpbiB0aGUgY2xvc2VkIGludGVydmFsIFswLDFdLCBidXQgd2FzICcke3JhdGlvfScuYCk7XG4gICAgfVxuICAgIHRoaXMuZmluZFRyZWVFbGVtZW50PE1UcmVlTm9kZT4oe2lkOiBub2RlSWR9KS5yYXRpbyA9IHJhdGlvO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vdGU6IFRoaXMgbWV0aG9kIG5hbWUgYmVnaW5zIHdpdGggdW5kZXJzY29yZXMsIGluZGljYXRpbmcgdGhhdCBpdCBkb2VzIG5vdCBvcGVyYXRlIG9uIGEgd29ya2luZyBjb3B5LCBidXQgbW9kaWZpZXMgdGhpcyBsYXlvdXQgaW5zdGVhZC5cbiAgICovXG4gIHByaXZhdGUgX19hY3RpdmF0ZVBhcnQoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHBhcnQgPSB0aGlzLnBhcnQoe3BhcnRJZDogaWR9KTtcbiAgICB0aGlzLmdyaWQoe2VsZW1lbnQ6IHBhcnR9KS5hY3RpdmVQYXJ0SWQgPSBpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RlOiBUaGlzIG1ldGhvZCBuYW1lIGJlZ2lucyB3aXRoIHVuZGVyc2NvcmVzLCBpbmRpY2F0aW5nIHRoYXQgaXQgZG9lcyBub3Qgb3BlcmF0ZSBvbiBhIHdvcmtpbmcgY29weSwgYnV0IG1vZGlmaWVzIHRoaXMgbGF5b3V0IGluc3RlYWQuXG4gICAqL1xuICBwcml2YXRlIF9fdG9nZ2xlTWF4aW1pemVkKCk6IHZvaWQge1xuICAgIHRoaXMuX21heGltaXplZCA9ICF0aGlzLl9tYXhpbWl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogTm90ZTogVGhpcyBtZXRob2QgbmFtZSBiZWdpbnMgd2l0aCB1bmRlcnNjb3JlcywgaW5kaWNhdGluZyB0aGF0IGl0IGRvZXMgbm90IG9wZXJhdGUgb24gYSB3b3JraW5nIGNvcHksIGJ1dCBtb2RpZmllcyB0aGlzIGxheW91dCBpbnN0ZWFkLlxuICAgKi9cbiAgcHJpdmF0ZSBfX3JlbmFtZVZpZXcodmlldzogTVZpZXcsIG5ld1ZpZXdJZDogVmlld0lkKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzVmlldyhuZXdWaWV3SWQpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgW1ZpZXdSZW5hbWVFcnJvcl0gVmlldyBpZCBtdXN0IGJlIHVuaXF1ZS4gVGhlIGxheW91dCBhbHJlYWR5IGNvbnRhaW5zIGEgdmlldyB3aXRoIHRoZSBpZCAnJHtuZXdWaWV3SWR9Jy5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0ID0gdGhpcy5wYXJ0KHt2aWV3SWQ6IHZpZXcuaWR9KTtcblxuICAgIGlmICh0aGlzLl92aWV3T3V0bGV0cy5oYXModmlldy5pZCkpIHtcbiAgICAgIHRoaXMuX3ZpZXdPdXRsZXRzLnNldChuZXdWaWV3SWQsIHRoaXMuX3ZpZXdPdXRsZXRzLmdldCh2aWV3LmlkKSEpO1xuICAgICAgdGhpcy5fdmlld091dGxldHMuZGVsZXRlKHZpZXcuaWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdmlld1N0YXRlcy5oYXModmlldy5pZCkpIHtcbiAgICAgIHRoaXMuX3ZpZXdTdGF0ZXMuc2V0KG5ld1ZpZXdJZCwgdGhpcy5fdmlld1N0YXRlcy5nZXQodmlldy5pZCkhKTtcbiAgICAgIHRoaXMuX3ZpZXdTdGF0ZXMuZGVsZXRlKHZpZXcuaWQpO1xuICAgIH1cblxuICAgIGlmIChwYXJ0LmFjdGl2ZVZpZXdJZCA9PT0gdmlldy5pZCkge1xuICAgICAgcGFydC5hY3RpdmVWaWV3SWQgPSBuZXdWaWV3SWQ7XG4gICAgfVxuXG4gICAgdmlldy5pZCA9IG5ld1ZpZXdJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhIGdyaWQgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBmaWx0ZXIuIElmIG5vdCBmb3VuZCwgdGhyb3dzIGFuIGVycm9yLlxuICAgKlxuICAgKiBAcGFyYW0gZmluZEJ5IC0gRGVmaW5lcyB0aGUgc2VhcmNoIHNjb3BlLlxuICAgKiBAcGFyYW0gZmluZEJ5LmVsZW1lbnQgLSBTZWFyY2hlcyBmb3IgYSBncmlkIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBlbGVtZW50LlxuICAgKiBAcmV0dXJuIEdyaWQgbWF0Y2hpbmcgdGhlIGZpbHRlciBjcml0ZXJpYS5cbiAgICovXG4gIHByaXZhdGUgZ3JpZChmaW5kQnk6IHtlbGVtZW50OiBNUGFydCB8IE1UcmVlTm9kZX0pOiBNUGFydEdyaWQge1xuICAgIGNvbnN0IGdyaWROYW1lID0gdGhpcy5fZ3JpZE5hbWVzLmZpbmQoZ3JpZE5hbWUgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZFRyZWVFbGVtZW50cygoZWxlbWVudDogTVRyZWVOb2RlIHwgTVBhcnQpOiBlbGVtZW50IGlzIE1QYXJ0IHwgTVRyZWVOb2RlID0+IGVsZW1lbnQgPT09IGZpbmRCeS5lbGVtZW50LCB7ZmluZEZpcnN0OiB0cnVlLCBncmlkOiBncmlkTmFtZX0pLmxlbmd0aCA+IDA7XG4gICAgfSk7XG5cbiAgICBpZiAoIWdyaWROYW1lKSB7XG4gICAgICBpZiAoZmluZEJ5LmVsZW1lbnQgaW5zdGFuY2VvZiBNUGFydCkge1xuICAgICAgICB0aHJvdyBFcnJvcihgW051bGxHcmlkRXJyb3JdIE5vIGdyaWQgZm91bmQgdGhhdCBjb250YWlucyB0aGUgcGFydCAnJHtmaW5kQnkuZWxlbWVudC5pZH0nXCIuYCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYFtOdWxsR3JpZEVycm9yXSBObyBncmlkIGZvdW5kIHRoYXQgY29udGFpbnMgdGhlIG5vZGUgJyR7ZmluZEJ5LmVsZW1lbnQubm9kZUlkfSdcIi5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZ3JpZHNbZ3JpZE5hbWVdITtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIHRyZWUgdG8gZmluZCBhbiBlbGVtZW50IHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gcHJlZGljYXRlLlxuICAgKlxuICAgKiBAcGFyYW0gZmluZEJ5IC0gRGVmaW5lcyB0aGUgc2VhcmNoIHNjb3BlLlxuICAgKiBAcGFyYW0gZmluZEJ5LmlkIC0gU2VhcmNoZXMgZm9yIGFuIGVsZW1lbnQgd2l0aCB0aGUgc3BlY2lmaWVkIGlkLlxuICAgKiBAcmV0dXJuIEVsZW1lbnQgbWF0Y2hpbmcgdGhlIGZpbHRlciBjcml0ZXJpYS5cbiAgICovXG4gIHByaXZhdGUgZmluZFRyZWVFbGVtZW50PFQgZXh0ZW5kcyBNVHJlZU5vZGUgfCBNUGFydD4oZmluZEJ5OiB7aWQ6IHN0cmluZ30pOiBUIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5maW5kVHJlZUVsZW1lbnRzKChlbGVtZW50OiBNVHJlZU5vZGUgfCBNUGFydCk6IGVsZW1lbnQgaXMgVCA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudCBpbnN0YW5jZW9mIE1QYXJ0ID8gZWxlbWVudC5pZCA9PT0gZmluZEJ5LmlkIDogZWxlbWVudC5ub2RlSWQgPT09IGZpbmRCeS5pZDtcbiAgICB9LCB7ZmluZEZpcnN0OiB0cnVlfSkuYXQoMCk7XG5cbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHRocm93IEVycm9yKGBbTnVsbEVsZW1lbnRFcnJvcl0gTm8gZWxlbWVudCBmb3VuZCB3aXRoIGlkICcke2ZpbmRCeS5pZH0nLmApO1xuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIHRyZWUgdG8gZmluZCBlbGVtZW50cyB0aGF0IG1hdGNoIHRoZSBnaXZlbiBwcmVkaWNhdGUuXG4gICAqXG4gICAqIEBwYXJhbSBwcmVkaWNhdGVGbiAtIFByZWRpY2F0ZSBmdW5jdGlvbiB0byBtYXRjaC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBEZWZpbmVzIHNlYXJjaCBzY29wZSBhbmQgb3B0aW9ucy5cbiAgICogQHBhcmFtIG9wdGlvbnMuZmluZEZpcnN0IC0gSWYgc3BlY2lmaWVkLCBzdG9wcyB0cmF2ZXJzaW5nIG9uIGZpcnN0IG1hdGNoLiBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5ncmlkIC0gU2VhcmNoZXMgZm9yIGFuIGVsZW1lbnQgY29udGFpbmVkIGluIHRoZSBzcGVjaWZpZWQgZ3JpZC5cbiAgICogQHJldHVybiBFbGVtZW50cyBtYXRjaGluZyB0aGUgZmlsdGVyIGNyaXRlcmlhLlxuICAgKi9cbiAgcHJpdmF0ZSBmaW5kVHJlZUVsZW1lbnRzPFQgZXh0ZW5kcyBNVHJlZU5vZGUgfCBNUGFydD4ocHJlZGljYXRlRm46IChlbGVtZW50OiBNVHJlZU5vZGUgfCBNUGFydCkgPT4gZWxlbWVudCBpcyBULCBvcHRpb25zPzoge2ZpbmRGaXJzdD86IGJvb2xlYW47IGdyaWQ/OiBrZXlvZiBHcmlkc30pOiBUW10ge1xuICAgIGlmIChvcHRpb25zPy5ncmlkICYmICF0aGlzLl9ncmlkc1tvcHRpb25zLmdyaWRdKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0OiBUW10gPSBbXTtcblxuICAgIGZ1bmN0aW9uIHZpc2l0UGFydHMobm9kZTogTVRyZWVOb2RlIHwgTVBhcnQpOiBib29sZWFuIHtcbiAgICAgIGlmIChwcmVkaWNhdGVGbihub2RlKSkge1xuICAgICAgICByZXN1bHQucHVzaChub2RlKTtcbiAgICAgICAgaWYgKG9wdGlvbnM/LmZpbmRGaXJzdCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gc3RvcCB2aXNpdGluZyBvdGhlciBlbGVtZW50c1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgTVRyZWVOb2RlKSB7XG4gICAgICAgIHJldHVybiB2aXNpdFBhcnRzKG5vZGUuY2hpbGQxKSAmJiB2aXNpdFBhcnRzKG5vZGUuY2hpbGQyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zPy5ncmlkKSB7XG4gICAgICB2aXNpdFBhcnRzKHRoaXMuX2dyaWRzW29wdGlvbnMuZ3JpZF0hLnJvb3QpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvciAoY29uc3QgZ3JpZCBvZiBPYmplY3QudmFsdWVzKHRoaXMuX2dyaWRzKSkge1xuICAgICAgICBpZiAoZ3JpZCAmJiAhdmlzaXRQYXJ0cyhncmlkLnJvb3QpKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoaXMgbGF5b3V0LlxuICAgKi9cbiAgcHJpdmF0ZSB3b3JraW5nQ29weSgpOiDJtVdvcmtiZW5jaExheW91dCB7XG4gICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLl9pbmplY3RvciwgKCkgPT4gbmV3IMm1V29ya2JlbmNoTGF5b3V0KHtcbiAgICAgIHdvcmtiZW5jaEdyaWQ6IHRoaXMuX3NlcmlhbGl6ZXIuc2VyaWFsaXplR3JpZCh0aGlzLndvcmtiZW5jaEdyaWQsIHtpbmNsdWRlTm9kZUlkOiB0cnVlLCBpbmNsdWRlVWlkOiB0cnVlLCBpbmNsdWRlTWFya2VkRm9yUmVtb3ZhbEZsYWc6IHRydWV9KSxcbiAgICAgIG1haW5BcmVhR3JpZDogdGhpcy5fc2VyaWFsaXplci5zZXJpYWxpemVHcmlkKHRoaXMuX2dyaWRzLm1haW5BcmVhLCB7aW5jbHVkZU5vZGVJZDogdHJ1ZSwgaW5jbHVkZVVpZDogdHJ1ZSwgaW5jbHVkZU1hcmtlZEZvclJlbW92YWxGbGFnOiB0cnVlfSksXG4gICAgICB2aWV3T3V0bGV0czogT2JqZWN0LmZyb21FbnRyaWVzKHRoaXMuX3ZpZXdPdXRsZXRzKSxcbiAgICAgIHZpZXdTdGF0ZXM6IE9iamVjdC5mcm9tRW50cmllcyh0aGlzLl92aWV3U3RhdGVzKSxcbiAgICAgIG1heGltaXplZDogdGhpcy5fbWF4aW1pemVkLFxuICAgIH0pKTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBkZWZhdWx0IHdvcmtiZW5jaCBncmlkIHdpdGggYSBtYWluIGFyZWEuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRXb3JrYmVuY2hHcmlkKCk6IE1QYXJ0R3JpZCB7XG4gIHJldHVybiB7XG4gICAgcm9vdDogbmV3IE1QYXJ0KHtpZDogTUFJTl9BUkVBLCBzdHJ1Y3R1cmFsOiB0cnVlLCB2aWV3czogW119KSxcbiAgICBhY3RpdmVQYXJ0SWQ6IE1BSU5fQVJFQSxcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbWFpbiBhcmVhIGdyaWQgd2l0aCBhbiBpbml0aWFsIHBhcnQuXG4gKlxuICogVGhlIERJIHRva2VuIHtAbGluayBNQUlOX0FSRUFfSU5JVElBTF9QQVJUX0lEfSBpcyB1c2VkIHRvIGFzc2lnbiB0aGUgaW5pdGlhbCBwYXJ0IGl0cyBpZGVudGl0eS5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5pdGlhbE1haW5BcmVhR3JpZCgpOiBNUGFydEdyaWQge1xuICByZXR1cm4ge1xuICAgIHJvb3Q6IG5ldyBNUGFydCh7aWQ6IGluamVjdChNQUlOX0FSRUFfSU5JVElBTF9QQVJUX0lEKSwgc3RydWN0dXJhbDogZmFsc2UsIHZpZXdzOiBbXX0pLFxuICAgIGFjdGl2ZVBhcnRJZDogaW5qZWN0KE1BSU5fQVJFQV9JTklUSUFMX1BBUlRfSUQpLFxuICB9O1xufVxuXG4vKipcbiAqIENvZXJjZXMge0BsaW5rIE1QYXJ0R3JpZH0sIGFwcGx5aW5nIG5lY2Vzc2FyeSBtaWdyYXRpb25zIGlmIHRoZSBzZXJpYWxpemVkIGdyaWQgaXMgb3V0ZGF0ZWQuXG4gKi9cbmZ1bmN0aW9uIGNvZXJjZU1QYXJ0R3JpZChncmlkOiBzdHJpbmcgfCBNUGFydEdyaWQgfCBudWxsIHwgdW5kZWZpbmVkLCBvcHRpb25zOiB7ZGVmYXVsdDogKCkgPT4gTVBhcnRHcmlkfSk6IMm1TVBhcnRHcmlkIHtcbiAgZ3JpZCA/Pz0gb3B0aW9ucy5kZWZhdWx0KCk7XG5cbiAgaWYgKHR5cGVvZiBncmlkID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBncmlkO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gaW5qZWN0KFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIpLmRlc2VyaWFsaXplR3JpZChncmlkKTtcbiAgfVxuICBjYXRjaCAoZXJyb3IpIHtcbiAgICBpbmplY3QoTG9nZ2VyKS5lcnJvcignW1NlcmlhbGl6ZUVycm9yXSBGYWlsZWQgdG8gZGVzZXJpYWxpemUgd29ya2JlbmNoIGxheW91dC4gUGxlYXNlIGNsZWFyIHlvdXIgYnJvd3NlciBzdG9yYWdlIGFuZCByZWxvYWQgdGhlIGFwcGxpY2F0aW9uLicsIGVycm9yKTtcbiAgICByZXR1cm4gey4uLm9wdGlvbnMuZGVmYXVsdCgpLCBtaWdyYXRlZDogdHJ1ZX07XG4gIH1cbn1cblxuLyoqXG4gKiBDb2VyY2VzIHtAbGluayBWaWV3T3V0bGV0c30sIGFwcGx5aW5nIG5lY2Vzc2FyeSBtaWdyYXRpb25zIGlmIHRoZSBzZXJpYWxpemVkIG91dGxldHMgYXJlIG91dGRhdGVkLlxuICovXG5mdW5jdGlvbiBjb2VyY2VWaWV3T3V0bGV0cyh2aWV3T3V0bGV0czogc3RyaW5nIHwgVmlld091dGxldHMgfCBudWxsIHwgdW5kZWZpbmVkKTogVmlld091dGxldHMge1xuICBpZiAoIXZpZXdPdXRsZXRzKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2aWV3T3V0bGV0cyA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gdmlld091dGxldHM7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBpbmplY3QoV29ya2JlbmNoTGF5b3V0U2VyaWFsaXplcikuZGVzZXJpYWxpemVWaWV3T3V0bGV0cyh2aWV3T3V0bGV0cyk7XG4gIH1cbiAgY2F0Y2ggKGVycm9yKSB7XG4gICAgaW5qZWN0KExvZ2dlcikuZXJyb3IoJ1tTZXJpYWxpemVFcnJvcl0gRmFpbGVkIHRvIGRlc2VyaWFsaXplIHZpZXcgb3V0bGV0cy4gUGxlYXNlIGNsZWFyIHlvdXIgYnJvd3NlciBzdG9yYWdlIGFuZCByZWxvYWQgdGhlIGFwcGxpY2F0aW9uLicsIGVycm9yKTtcbiAgICByZXR1cm4ge307XG4gIH1cbn1cblxuLyoqXG4gKiBHcmlkcyBvZiB0aGUgd29ya2JlbmNoIGxheW91dC5cbiAqL1xuaW50ZXJmYWNlIEdyaWRzIHtcbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgZ3JpZCBvZiB0aGUgd29ya2JlbmNoLlxuICAgKi9cbiAgd29ya2JlbmNoOiDJtU1QYXJ0R3JpZDtcbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgZ3JpZCBvZiB0aGUgbWFpbiBhcmVhLCBpZiBhbnkuXG4gICAqXG4gICAqIFRoZSBtYWluIGFyZWEgZ3JpZCBpcyBhIHN1Yi1ncmlkIGVtYmVkZGVkIGluIHRoZSBtYWluIGFyZWEgcGFydCwgaWYgYW55LiBJdCBkZWZpbmVzIHRoZSBhcnJhbmdlbWVudCBvZiBwYXJ0cyBpbiB0aGUgbWFpbiBhcmVhLlxuICAgKi9cbiAgbWFpbkFyZWE/OiDJtU1QYXJ0R3JpZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwb3NpdGlvbiBpZiBhIG51bWJlciwgb3IgY29tcHV0ZXMgaXQgZnJvbSB0aGUgZ2l2ZW4gbGl0ZXJhbCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGNvZXJjZVBvc2l0aW9uKHBvc2l0aW9uOiBudW1iZXIgfCAnc3RhcnQnIHwgJ2VuZCcgfCAnYmVmb3JlLWFjdGl2ZS12aWV3JyB8ICdhZnRlci1hY3RpdmUtdmlldycsIHBhcnQ6IE1QYXJ0KTogbnVtYmVyIHtcbiAgc3dpdGNoIChwb3NpdGlvbikge1xuICAgIGNhc2UgJ3N0YXJ0Jzoge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNhc2UgJ2VuZCc6IHtcbiAgICAgIHJldHVybiBwYXJ0LnZpZXdzLmxlbmd0aDtcbiAgICB9XG4gICAgY2FzZSAnYmVmb3JlLWFjdGl2ZS12aWV3Jzoge1xuICAgICAgY29uc3QgYWN0aXZlVmlld0luZGV4ID0gcGFydC52aWV3cy5maW5kSW5kZXgodmlldyA9PiB2aWV3LmlkID09PSBwYXJ0LmFjdGl2ZVZpZXdJZCk7XG4gICAgICByZXR1cm4gKGFjdGl2ZVZpZXdJbmRleCA+IC0xID8gYWN0aXZlVmlld0luZGV4IDogcGFydC52aWV3cy5sZW5ndGgpO1xuICAgIH1cbiAgICBjYXNlICdhZnRlci1hY3RpdmUtdmlldyc6IHtcbiAgICAgIGNvbnN0IGFjdGl2ZVZpZXdJbmRleCA9IHBhcnQudmlld3MuZmluZEluZGV4KHZpZXcgPT4gdmlldy5pZCA9PT0gcGFydC5hY3RpdmVWaWV3SWQpO1xuICAgICAgcmV0dXJuIChhY3RpdmVWaWV3SW5kZXggPiAtMSA/IGFjdGl2ZVZpZXdJbmRleCArIDEgOiBwYXJ0LnZpZXdzLmxlbmd0aCk7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBwb3NpdGlvbjtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgaG93IHRvIGxheSBvdXQgYSBwYXJ0IHJlbGF0aXZlIHRvIGFub3RoZXIgcGFydCBvciBub2RlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZUVsZW1lbnQgZXh0ZW5kcyBSZWZlcmVuY2VQYXJ0IHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgcGFydCBvciBub2RlIHdoaWNoIHRvIHVzZSBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQgdG8gbGF5IG91dCB0aGUgcGFydC5cbiAgICogSWYgbm90IHNldCwgdGhlIHBhcnQgd2lsbCBiZSBhbGlnbmVkIHJlbGF0aXZlIHRvIHRoZSByb290IG9mIHRoZSB3b3JrYmVuY2ggbGF5b3V0LlxuICAgKi9cbiAgcmVsYXRpdmVUbz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBESSB0b2tlbiB0byBjb250cm9sIHRoZSBpZGVudGl0eSBvZiB0aGUgaW5pdGlhbCBwYXJ0IGluIHRoZSBtYWluIGFyZWEuXG4gKlxuICogVGhlIGluaXRpYWwgcGFydCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgdGhlIHdvcmtiZW5jaCBpZiB0aGUgbWFpbiBhcmVhIGhhcyBubyBwYXJ0LCBidXQgaXQgaGFzIG5vXG4gKiBzcGVjaWFsIG1lYW5pbmcgdG8gdGhlIHdvcmtiZW5jaCBhbmQgY2FuIGJlIHJlbW92ZWQgYnkgdGhlIHVzZXIuIElmIG5vdCBzZXQsIGEgVVVJRCBpcyBhc3NpZ25lZC5cbiAqXG4gKiBPdmVyd3JpdGUgdGhpcyBESSB0b2tlbiBpbiB0ZXN0cyB0byBjb250cm9sIHRoZSBpZGVudGl0eSBvZiB0aGUgaW5pdGlhbCBwYXJ0LlxuICogYGBgXG4gKiBUZXN0QmVkLm92ZXJyaWRlUHJvdmlkZXIoTUFJTl9BUkVBX0lOSVRJQUxfUEFSVF9JRCwge3VzZVZhbHVlOiAnbWFpbid9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBNQUlOX0FSRUFfSU5JVElBTF9QQVJUX0lEID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ01BSU5fQVJFQV9JTklUSUFMX1BBUlRfSUQnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gcmFuZG9tVVVJRCgpLFxufSk7XG5cbi8qKlxuICogUHJvdmlkZXMgdGhlIGluc3RhbnQgd2hlbiBhIHBhcnQgd2FzIGxhc3QgYWN0aXZhdGVkLlxuICpcbiAqIE92ZXJ3cml0ZSBESSB0b2tlbiBpbiB0ZXN0cyB0byBjb250cm9sIHBhcnQgYWN0aXZhdGlvbiBpbnN0YW50cy5cbiAqIGBgYFxuICogVGVzdEJlZC5vdmVycmlkZVByb3ZpZGVyKFBhcnRBY3RpdmF0aW9uSW5zdGFudFByb3ZpZGVyLCB7dXNlVmFsdWU6IC4uLn0pO1xuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFBhcnRBY3RpdmF0aW9uSW5zdGFudFByb3ZpZGVyIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9wYXJ0UmVnaXN0cnk6IFdvcmtiZW5jaFBhcnRSZWdpc3RyeSkge1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGluc3RhbnQgd2hlbiB0aGUgc3BlY2lmaWVkIHBhcnQgd2FzIGxhc3QgYWN0aXZhdGVkLlxuICAgKi9cbiAgcHVibGljIGdldEFjdGl2YXRpb25JbnN0YW50KHBhcnRJZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFydFJlZ2lzdHJ5LmdldChwYXJ0SWQsIHtvckVsc2U6IG51bGx9KT8uYWN0aXZhdGlvbkluc3RhbnQgPz8gMDtcbiAgfVxufVxuXG4vKipcbiAqIFByb3ZpZGVzIHRoZSBpbnN0YW50IHdoZW4gYSB2aWV3IHdhcyBsYXN0IGFjdGl2YXRlZC5cbiAqXG4gKiBPdmVyd3JpdGUgREkgdG9rZW4gaW4gdGVzdHMgdG8gY29udHJvbCB2aWV3IGFjdGl2YXRpb24gaW5zdGFudHMuXG4gKiBgYGBcbiAqIFRlc3RCZWQub3ZlcnJpZGVQcm92aWRlcihWaWV3QWN0aXZhdGlvbkluc3RhbnRQcm92aWRlciwge3VzZVZhbHVlOiAuLi59KTtcbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBWaWV3QWN0aXZhdGlvbkluc3RhbnRQcm92aWRlciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdmlld1JlZ2lzdHJ5OiBXb3JrYmVuY2hWaWV3UmVnaXN0cnkpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpbnN0YW50IHdoZW4gdGhlIHNwZWNpZmllZCB2aWV3IHdhcyBsYXN0IGFjdGl2YXRlZC5cbiAgICovXG4gIHB1YmxpYyBnZXRBY3RpdmF0aW9uSW5zdGFudCh2aWV3SWQ6IFZpZXdJZCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdSZWdpc3RyeS5nZXQodmlld0lkLCB7b3JFbHNlOiBudWxsfSk/LmFjdGl2YXRpb25JbnN0YW50ID8/IDA7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcHJlZGljYXRlIHRvIG1hdGNoIGEgdmlldyBieSBpdHMgcHJpbWFyeSBvciBhbHRlcm5hdGl2ZSBpZCwgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHRoZSBwYXNzZWQgaWQuXG4gKi9cbmZ1bmN0aW9uIG1hdGNoVmlld0J5SWQoaWQ6IHN0cmluZyk6IFByZWRpY2F0ZTxNVmlldz4ge1xuICBpZiAoV29ya2JlbmNoTGF5b3V0cy5pc1ZpZXdJZChpZCkpIHtcbiAgICByZXR1cm4gdmlldyA9PiB2aWV3LmlkID09PSBpZDtcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gdmlldyA9PiB2aWV3LmFsdGVybmF0aXZlSWQgPT09IGlkO1xuICB9XG59XG5cbi8qKlxuICogU3RyaW5naWZpZXMgdGhlIGdpdmVuIGZpbHRlciB0byBiZSB1c2VkIGluIGVycm9yIG1lc3NhZ2VzLlxuICovXG5mdW5jdGlvbiBzdHJpbmdpZnlGaWx0ZXIoZmlsdGVyOiB7W3Byb3BlcnR5OiBzdHJpbmddOiB1bmtub3dufSk6IHN0cmluZyB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhmaWx0ZXIpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7dmFsdWV9YCkuam9pbignLCAnKTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVkIGFydGlmYWN0cyBvZiB0aGUgd29ya2JlbmNoIGxheW91dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemVkV29ya2JlbmNoTGF5b3V0IHtcbiAgd29ya2JlbmNoR3JpZDogc3RyaW5nO1xuICB3b3JrYmVuY2hWaWV3T3V0bGV0czogc3RyaW5nO1xuICBtYWluQXJlYUdyaWQ6IHN0cmluZyB8IG51bGw7XG4gIG1haW5BcmVhVmlld091dGxldHM6IHN0cmluZztcbn1cbiJdfQ==
|