barsa-novin-ray-core 2.0.134 → 2.1.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/abstract-classes/application-base.mjs +4 -4
- package/esm2022/lib/abstract-classes/base-column-props.mjs +4 -4
- package/esm2022/lib/abstract-classes/base.component.mjs +4 -4
- package/esm2022/lib/abstract-classes/field-base.mjs +4 -4
- package/esm2022/lib/abstract-classes/form-base.mjs +21 -14
- package/esm2022/lib/abstract-classes/form-field-report-page.component.mjs +4 -4
- package/esm2022/lib/abstract-classes/form-page-base.mjs +4 -4
- package/esm2022/lib/abstract-classes/form-page.component.mjs +4 -4
- package/esm2022/lib/abstract-classes/form-props.base.mjs +4 -4
- package/esm2022/lib/abstract-classes/form-toolbar-base.mjs +4 -4
- package/esm2022/lib/abstract-classes/layout-item-base.mjs +4 -4
- package/esm2022/lib/abstract-classes/layout-panel-base.mjs +4 -4
- package/esm2022/lib/abstract-classes/number-base.mjs +4 -4
- package/esm2022/lib/abstract-classes/page-base.mjs +4 -4
- package/esm2022/lib/abstract-classes/page-with-form-handler-base.mjs +4 -4
- package/esm2022/lib/abstract-classes/report-base.mjs +4 -4
- package/esm2022/lib/abstract-classes/report-item-base.mjs +4 -4
- package/esm2022/lib/abstract-classes/report-view-base.component.mjs +4 -4
- package/esm2022/lib/abstract-classes/system-base.mjs +4 -4
- package/esm2022/lib/abstract-classes/tile-props.mjs +4 -4
- package/esm2022/lib/auth-guard.mjs +4 -4
- package/esm2022/lib/barsa-novin-ray-core-routing.module.mjs +5 -5
- package/esm2022/lib/barsa-novin-ray-core.module.mjs +9 -11
- package/esm2022/lib/base-ulv-setting.component.mjs +4 -4
- package/esm2022/lib/button-loading/button-loading.component.mjs +4 -4
- package/esm2022/lib/container.component.mjs +4 -4
- package/esm2022/lib/controllers/base-controller.mjs +4 -4
- package/esm2022/lib/controllers/login-controller.mjs +4 -4
- package/esm2022/lib/controllers/login-verification-controller.mjs +4 -4
- package/esm2022/lib/date-services/date-hijri.service.mjs +4 -4
- package/esm2022/lib/date-services/date-miladi.service.mjs +4 -4
- package/esm2022/lib/date-services/date-shamsi.service.mjs +4 -4
- package/esm2022/lib/date-services/date.service.mjs +4 -4
- package/esm2022/lib/directives/absolute-div-body.directive.mjs +4 -4
- package/esm2022/lib/directives/anchor-scroll.directive.mjs +4 -4
- package/esm2022/lib/directives/attr-rtl.directive.mjs +4 -4
- package/esm2022/lib/directives/base.directive.mjs +4 -4
- package/esm2022/lib/directives/body-click.directive.mjs +4 -4
- package/esm2022/lib/directives/column-resizer.directive.mjs +4 -4
- package/esm2022/lib/directives/copy.directive.mjs +4 -4
- package/esm2022/lib/directives/count-down.directive.mjs +4 -4
- package/esm2022/lib/directives/dynamic-command.directive.mjs +4 -4
- package/esm2022/lib/directives/dynamic-style.directive.mjs +4 -4
- package/esm2022/lib/directives/ellapsis-text.directive.mjs +4 -4
- package/esm2022/lib/directives/ellipsify.directive.mjs +4 -4
- package/esm2022/lib/directives/field-binding.directive.mjs +4 -4
- package/esm2022/lib/directives/fill-empty-space.mjs +4 -4
- package/esm2022/lib/directives/form-close.directive.mjs +4 -4
- package/esm2022/lib/directives/img-lazy.directive.mjs +4 -4
- package/esm2022/lib/directives/intersection-observer.directive.mjs +4 -4
- package/esm2022/lib/directives/items-renderer.directive.mjs +4 -4
- package/esm2022/lib/directives/label-mandatory.directive.mjs +4 -4
- package/esm2022/lib/directives/load-external-files.directive.mjs +4 -4
- package/esm2022/lib/directives/mobile.directive.mjs +4 -4
- package/esm2022/lib/directives/nowraptext.directive.mjs +4 -4
- package/esm2022/lib/directives/numbers-only-input.directive.mjs +4 -4
- package/esm2022/lib/directives/placeHolder.directive.mjs +4 -4
- package/esm2022/lib/directives/prevent-default.directive.mjs +4 -4
- package/esm2022/lib/directives/render-ulv-paging.directive.mjs +4 -4
- package/esm2022/lib/directives/render-ulv-viewer.directive.mjs +4 -4
- package/esm2022/lib/directives/route-form-change.directive.mjs +4 -4
- package/esm2022/lib/directives/stop-propagation.directive.mjs +4 -4
- package/esm2022/lib/directives/table-resizer.directive.mjs +4 -4
- package/esm2022/lib/directives/ulv-command.directive.mjs +4 -4
- package/esm2022/lib/directives/until-inview.directive.mjs +4 -4
- package/esm2022/lib/directives/workflow-choice-command.directive.mjs +4 -4
- package/esm2022/lib/dynamic-component/base-dynamic.component.mjs +4 -4
- package/esm2022/lib/dynamic-component/base-form-toolbaritem-props.mjs +4 -4
- package/esm2022/lib/dynamic-component/base-item-content-props.mjs +4 -4
- package/esm2022/lib/dynamic-component/base-view-content-props.mjs +4 -4
- package/esm2022/lib/dynamic-component/base-view-item-props.mjs +4 -4
- package/esm2022/lib/dynamic-component/base-view-props.mjs +4 -4
- package/esm2022/lib/dynamic-component/dynamic-form-toolbar-item.component.mjs +4 -4
- package/esm2022/lib/dynamic-component/dynamic-form.component.mjs +4 -4
- package/esm2022/lib/dynamic-component/dynamic-item.component.mjs +4 -4
- package/esm2022/lib/dynamic-component/dynamic-layout.component.mjs +4 -4
- package/esm2022/lib/empty-page/empty-page.component.mjs +4 -4
- package/esm2022/lib/empty-page-with-router-and-router-outlet/empty-page-with-router-and-router-outlet.component.mjs +4 -4
- package/esm2022/lib/field-ui/field-ui.component.mjs +4 -4
- package/esm2022/lib/form/form.component.mjs +4 -4
- package/esm2022/lib/form-new/form-new.component.mjs +4 -4
- package/esm2022/lib/form-page-routing/barsa-sap-ui-form-page-routing.module.mjs +5 -5
- package/esm2022/lib/form-page-routing/barsa-sap-ui-form-page.module.mjs +5 -5
- package/esm2022/lib/global-error-handler.mjs +4 -4
- package/esm2022/lib/login-enter-mobile/login-enter-mobile.component.mjs +4 -4
- package/esm2022/lib/login-verification/login-verification.component.mjs +4 -4
- package/esm2022/lib/login2/login2.component.mjs +4 -4
- package/esm2022/lib/modal-root.component.mjs +4 -4
- package/esm2022/lib/not-found/not-found.component.mjs +4 -4
- package/esm2022/lib/not-internet/not-internet.component.mjs +4 -4
- package/esm2022/lib/pipes/barsa-icon-dict.pipe.mjs +4 -4
- package/esm2022/lib/pipes/bbb-translate.pipe.mjs +4 -4
- package/esm2022/lib/pipes/can-upload.pipe.mjs +4 -4
- package/esm2022/lib/pipes/column-custom-component.pipe.mjs +5 -5
- package/esm2022/lib/pipes/column-customui.pipe.mjs +4 -4
- package/esm2022/lib/pipes/column-icon.pipe.mjs +4 -4
- package/esm2022/lib/pipes/column-value.pipe.mjs +4 -4
- package/esm2022/lib/pipes/combo-row-img.pipe.mjs +4 -4
- package/esm2022/lib/pipes/context-menu.pipe.mjs +4 -4
- package/esm2022/lib/pipes/control-ui.pipe.mjs +4 -4
- package/esm2022/lib/pipes/convert-to-style.pipe.mjs +4 -4
- package/esm2022/lib/pipes/date-time-to-caption.pipe.mjs +4 -4
- package/esm2022/lib/pipes/fileinfo-count.pipe.mjs +4 -4
- package/esm2022/lib/pipes/filter-columns-by-details.pipe.mjs +4 -4
- package/esm2022/lib/pipes/filter-string.pipe.mjs +4 -4
- package/esm2022/lib/pipes/filter-tab.pipe.mjs +4 -4
- package/esm2022/lib/pipes/filter-toolbar-control.pipe.mjs +4 -4
- package/esm2022/lib/pipes/filter-workflow-mobile.pipe.mjs +4 -4
- package/esm2022/lib/pipes/filter.pipe.mjs +4 -4
- package/esm2022/lib/pipes/find-column-by-db-name.pipe.mjs +4 -4
- package/esm2022/lib/pipes/find-preview-column.pipe.mjs +4 -4
- package/esm2022/lib/pipes/fiori-icon.pipe.mjs +4 -4
- package/esm2022/lib/pipes/groupby.pipe.mjs +4 -4
- package/esm2022/lib/pipes/header-facet-value.pipe.mjs +4 -4
- package/esm2022/lib/pipes/hide-columns-inmobile.pipe.mjs +4 -4
- package/esm2022/lib/pipes/list-count.pipe.mjs +4 -4
- package/esm2022/lib/pipes/merge-fields-to-columns.pipe.mjs +5 -5
- package/esm2022/lib/pipes/mo-info-ulv-data.pipe.mjs +4 -4
- package/esm2022/lib/pipes/mo-info-ulv-paging.pipe.mjs +4 -4
- package/esm2022/lib/pipes/mo-report-value-concat.pipe.mjs +4 -4
- package/esm2022/lib/pipes/mo-report-value.pipe.mjs +4 -4
- package/esm2022/lib/pipes/mo-value.pipe.mjs +4 -4
- package/esm2022/lib/pipes/multiple-groupby.pipe.mjs +4 -4
- package/esm2022/lib/pipes/numeral.pipe.mjs +4 -4
- package/esm2022/lib/pipes/picture-field-source.pipe.mjs +4 -4
- package/esm2022/lib/pipes/remove-newline.pipe.mjs +4 -4
- package/esm2022/lib/pipes/replace.pipe.mjs +4 -4
- package/esm2022/lib/pipes/reverse.pipe.mjs +4 -4
- package/esm2022/lib/pipes/rownumber.pipe.mjs +5 -5
- package/esm2022/lib/pipes/sanitize-text.pipe.mjs +4 -4
- package/esm2022/lib/pipes/seperator-fix.pipe.mjs +4 -4
- package/esm2022/lib/pipes/sort.pipe.mjs +5 -5
- package/esm2022/lib/pipes/th-image-icon.pipe.mjs +4 -4
- package/esm2022/lib/pipes/tlbButtons.pipe.mjs +4 -4
- package/esm2022/lib/pipes/total-summary.pipe.mjs +4 -4
- package/esm2022/lib/pipes/tree-item-isexpanded.pipe.mjs +4 -4
- package/esm2022/lib/pipes/visible-value.pipe.mjs +4 -4
- package/esm2022/lib/portal-page/portal-page.component.mjs +4 -4
- package/esm2022/lib/portal-page/portal-sidebar.component.mjs +4 -4
- package/esm2022/lib/redirect-home-guard.mjs +4 -4
- package/esm2022/lib/redirect-report-navigator-command/redirect-report-navigator-command.component.mjs +4 -4
- package/esm2022/lib/report-container/report-container.component.mjs +4 -4
- package/esm2022/lib/resizable-module/resizable.component.mjs +4 -4
- package/esm2022/lib/resizable-module/resizable.directive.mjs +4 -4
- package/esm2022/lib/resizable-module/resizable.module.mjs +5 -5
- package/esm2022/lib/resolvers/portal-dynamic-page.resolver.mjs +4 -4
- package/esm2022/lib/resolvers/portal-form-page.resolver.mjs +4 -4
- package/esm2022/lib/resolvers/portal-page.resolver.mjs +4 -4
- package/esm2022/lib/resolvers/portal-report-page.resolver.mjs +4 -4
- package/esm2022/lib/resolvers/tile-group-breadcrumb.resolver.mjs +4 -4
- package/esm2022/lib/root-page/root-page.component.mjs +4 -4
- package/esm2022/lib/root-portal/root-portal.component.mjs +4 -4
- package/esm2022/lib/server-connection-error/server-connection-error.component.mjs +4 -4
- package/esm2022/lib/services/api.service.mjs +4 -4
- package/esm2022/lib/services/audio-recording.service.mjs +4 -4
- package/esm2022/lib/services/barsa-dialog.service.mjs +7 -7
- package/esm2022/lib/services/barsa-storage.service.mjs +4 -4
- package/esm2022/lib/services/breadcrumb.service.mjs +4 -4
- package/esm2022/lib/services/column.service.mjs +4 -4
- package/esm2022/lib/services/container.service.mjs +4 -4
- package/esm2022/lib/services/dynamic-component.service.mjs +4 -4
- package/esm2022/lib/services/indexeddb.service.mjs +4 -4
- package/esm2022/lib/services/layout.service.mjs +4 -4
- package/esm2022/lib/services/local-storage.service.mjs +4 -4
- package/esm2022/lib/services/log.service.mjs +4 -4
- package/esm2022/lib/services/network-status.service.mjs +4 -4
- package/esm2022/lib/services/notification-sw.service.mjs +4 -4
- package/esm2022/lib/services/notification.service.mjs +4 -4
- package/esm2022/lib/services/portal.service.mjs +4 -4
- package/esm2022/lib/services/prompt-update.service.mjs +4 -4
- package/esm2022/lib/services/routing.service.mjs +4 -4
- package/esm2022/lib/services/save-scoll-position.service.mjs +4 -4
- package/esm2022/lib/services/service-worker-communication.service.mjs +4 -4
- package/esm2022/lib/services/ui.service.mjs +4 -4
- package/esm2022/lib/services/ulvmain.service.mjs +4 -4
- package/esm2022/lib/services/upload.service.mjs +4 -4
- package/esm2022/lib/services/video-recording.service.mjs +4 -4
- package/fesm2022/barsa-novin-ray-core.mjs +564 -559
- package/fesm2022/barsa-novin-ray-core.mjs.map +1 -1
- package/lib/abstract-classes/form-base.d.ts +1 -0
- package/lib/abstract-classes/report-view-base.component.d.ts +2 -2
- package/lib/barsa-novin-ray-core.module.d.ts +5 -6
- package/lib/dynamic-component/base-view-props.d.ts +2 -2
- package/package.json +3 -3
|
@@ -171,10 +171,10 @@ export class ServiceWorkerNotificationService {
|
|
|
171
171
|
}
|
|
172
172
|
});
|
|
173
173
|
}
|
|
174
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
175
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
174
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceWorkerNotificationService, deps: [{ token: i1.LogService }, { token: i2.SwPush }, { token: i3.PortalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
175
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceWorkerNotificationService }); }
|
|
176
176
|
}
|
|
177
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
177
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceWorkerNotificationService, decorators: [{
|
|
178
178
|
type: Injectable
|
|
179
179
|
}], ctorParameters: () => [{ type: i1.LogService }, { type: i2.SwPush }, { type: i3.PortalService }] });
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXN3LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi1zdy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUUsUUFBUSxFQUEyQyxNQUFNLHFCQUFxQixDQUFDOzs7OztBQUt4RixNQUFNLE9BQU8sZ0NBQWdDO0lBR3pDLFlBQW9CLFdBQXVCLEVBQVUsT0FBZSxFQUFVLGNBQTZCO1FBQXZGLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBRjNHLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLG1DQUE4QixHQUFHLElBQUksQ0FBQztRQUUxQyxXQUFXLENBQUMsSUFBSSxDQUFDLGlCQUFpQixPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN2RCxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEUsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU87WUFDWCxDQUFDO1lBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRTlDLElBQUksV0FBVyxHQUFHLENBQUMsQ0FB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Q0FBZ0M7OzJGQUFoQyxnQ0FBZ0M7a0JBRDVDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTd1B1c2ggfSBmcm9tICdAYW5ndWxhci9zZXJ2aWNlLXdvcmtlcic7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhcnNhQXBpLCBFeE5vdGlmaWNhdGlvblBheWxvYWQsIE5vdGlmaWNhdGlvbkl0ZW0gfSBmcm9tICcuLi9hYnN0cmFjdC1jbGFzc2VzJztcbmltcG9ydCB7IExvZ1NlcnZpY2UgfSBmcm9tICcuL2xvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFBvcnRhbFNlcnZpY2UgfSBmcm9tICcuL3BvcnRhbC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25TZXJ2aWNlIHtcbiAgICBoYXNSZWdpc3RyYXRpb24gPSBmYWxzZTtcbiAgICBwcml2YXRlIF9ub3RpZmljYXRpb25QZXJtaXNzaW9uQWxsb3dlZCA9IHRydWU7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfbG9nU2VydmljZTogTG9nU2VydmljZSwgcHJpdmF0ZSBfc3dQdXNoOiBTd1B1c2gsIHByaXZhdGUgX3BvcnRhbFNlcnZpY2U6IFBvcnRhbFNlcnZpY2UpIHtcbiAgICAgICAgX2xvZ1NlcnZpY2UuaW5mbyhgc3dQdXNoIGVuYWJsZSAke19zd1B1c2guaXNFbmFibGVkfWApO1xuICAgICAgICBfc3dQdXNoLm5vdGlmaWNhdGlvbkNsaWNrcy5waXBlKHRhcCgoYykgPT4gY29uc29sZS5sb2coYykpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgIGlmICghZS5ub3RpZmljYXRpb24udGFnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNsb3NlTm90aWZpY2F0aW9ucyhbZS5ub3RpZmljYXRpb24udGFnXSk7XG5cbiAgICAgICAgICAgIGxldCBhY3Rpb25UaXRsZSA9IGUuYWN0aW9uO1xuICAgICAgICAgICAgaWYgKGFjdGlvblRpdGxlID09PSAnJykge1xuICAgICAgICAgICAgICAgIGFjdGlvblRpdGxlID0gJ3Nob3cnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIUJhcnNhQXBpPy5Mb2dpbkZvcm1EYXRhPy5Jc1VzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2UuRXhlY3V0ZU5vdGlmaWNhdGlvbkFjdGlvbihlLm5vdGlmaWNhdGlvbi50YWcsIGFjdGlvblRpdGxlKTtcblxuICAgICAgICAgICAgLy8gVE9ETzpleGV1Y3RlIGFjdGlvblxuICAgICAgICAgICAgLy8gbm90IGhhbmRsZWQhIVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5nZXRTdygpLnRoZW4oKGMpID0+ICh0aGlzLmhhc1JlZ2lzdHJhdGlvbiA9ICEhYykpO1xuICAgICAgICB0aGlzLmhhbmRsZVBlcm1pc3Npb24oKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBpc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zd1B1c2guaXNFbmFibGVkICYmIHRoaXMuaGFzUmVnaXN0cmF0aW9uICYmIHRoaXMuX25vdGlmaWNhdGlvblBlcm1pc3Npb25BbGxvd2VkO1xuICAgIH1cbiAgICBwcml2YXRlIGhhbmRsZVBlcm1pc3Npb24oKTogYW55IHtcbiAgICAgICAgaWYgKCFuYXZpZ2F0b3I/LnBlcm1pc3Npb25zPy5xdWVyeSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuYXZpZ2F0b3IucGVybWlzc2lvbnNcbiAgICAgICAgICAgIC5xdWVyeSh7IG5hbWU6ICdub3RpZmljYXRpb25zJyB9KVxuICAgICAgICAgICAgLnRoZW4odGhpcy5wZXJtaXNzaW9uUXVlcnkuYmluZCh0aGlzKSlcbiAgICAgICAgICAgIC5jYXRjaCh0aGlzLnBlcm1pc3Npb25FcnJvci5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBlcm1pc3Npb25RdWVyeShyZXN1bHQpOiBhbnkge1xuICAgICAgICBsZXQgbmV3UHJvbXB0O1xuXG4gICAgICAgIGlmIChyZXN1bHQuc3RhdGUgPT09ICdncmFudGVkJykge1xuICAgICAgICAgICAgLy8gbm90aWZpY2F0aW9ucyBhbGxvd2VkLCBnbyB3aWxkXG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LnN0YXRlID09PSAncHJvbXB0Jykge1xuICAgICAgICAgICAgLy8gd2UgY2FuIGFzayB0aGUgdXNlclxuICAgICAgICAgICAgbmV3UHJvbXB0ID0gTm90aWZpY2F0aW9uLnJlcXVlc3RQZXJtaXNzaW9uKCk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LnN0YXRlID09PSAnZGVuaWVkJykge1xuICAgICAgICAgICAgLy8gbm90aWZpY2F0aW9ucyB3ZXJlIGRpc2FibGVkXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25QZXJtaXNzaW9uQWxsb3dlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0Lm9uY2hhbmdlID0gKCkgPT4gY29uc29sZS5sb2coeyB1cGRhdGVkUGVybWlzc2lvbjogcmVzdWx0IH0pO1xuXG4gICAgICAgIHJldHVybiBuZXdQcm9tcHQgfHwgcmVzdWx0O1xuICAgIH1cbiAgICBwcml2YXRlIHBlcm1pc3Npb25FcnJvcihlcnJvcik6IGFueSB7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblBlcm1pc3Npb25BbGxvd2VkID0gZmFsc2U7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICBwcml2YXRlIGFzeW5jIGdldFN3KCk6IFByb21pc2U8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoIW5hdmlnYXRvci5zZXJ2aWNlV29ya2VyKSB7XG4gICAgICAgICAgICB0aGlzLmhhc1JlZ2lzdHJhdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB4ID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uKCdjdXN0b20tbmdzdy13b3JrZXIuanMnKTtcbiAgICAgICAgdGhpcy5oYXNSZWdpc3RyYXRpb24gPSAhIXg7XG4gICAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgc2hvd05vdGlmaWNhdGlvbihwYXlsb2FkOiBFeE5vdGlmaWNhdGlvblBheWxvYWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3cgPSBhd2FpdCB0aGlzLmdldFN3KCk7XG4gICAgICAgIGlmICghc3cpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGlzUnRsLCBsYW5nLCBub3RpZmljYXRpb25JdGVtIH06IHsgaXNSdGw6IGJvb2xlYW47IGxhbmc6IHN0cmluZzsgbm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSB9ID1cbiAgICAgICAgICAgIHBheWxvYWQ7XG4gICAgICAgIGNvbnN0IHRhZyA9IG5vdGlmaWNhdGlvbkl0ZW0uVGFnO1xuICAgICAgICBjb25zdCBkaXIgPSBpc1J0bCA/ICdydGwnIDogJ2x0cic7XG4gICAgICAgIGNvbnN0IGFjdGlvbnMgPSAhbm90aWZpY2F0aW9uSXRlbS5VaUFjdGlvbnNcbiAgICAgICAgICAgID8gW11cbiAgICAgICAgICAgIDogbm90aWZpY2F0aW9uSXRlbS5VaUFjdGlvbnMubWFwKChhY3Rpb24pID0+ICh7XG4gICAgICAgICAgICAgICAgICB0aXRsZTogYWN0aW9uLlRpdGxlLFxuICAgICAgICAgICAgICAgICAgaWNvbjogYWN0aW9uLkljb24sXG4gICAgICAgICAgICAgICAgICBhY3Rpb246IGFjdGlvbi5UaXRsZVxuICAgICAgICAgICAgICB9KSk7XG4gICAgICAgIGNvbnN0IG1vSW5mbyA9ICF0YWcgPyBgJm1vaWQ9JHtub3RpZmljYXRpb25JdGVtLklkfSZ0cGlkPSR7bm90aWZpY2F0aW9uSXRlbS4kVHlwZURlZklkfWAgOiBgYDtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIG9uQWN0aW9uQ2xpY2s6IHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7IG9wZXJhdGlvbjogJ29wZW5XaW5kb3cnLCB1cmw6IGAjL2xvZ2luP25vdGlmaWNhdGlvblRhZz0ke3RhZ30mYWN0aW9uPXNob3cke21vSW5mb31gIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgYWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgIGRhdGEub25BY3Rpb25DbGlja1thY3Rpb24udGl0bGVdID0ge1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ2ZvY3VzTGFzdEZvY3VzZWRPck9wZW4nLFxuICAgICAgICAgICAgICAgIHVybDogYCMvbG9naW4/bm90aWZpY2F0aW9uVGFnPSR7dGFnfSZhY3Rpb249JHthY3Rpb24udGl0bGV9YFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3c/LnNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSXRlbS5UaXRsZSwge1xuICAgICAgICAgICAgZGlyLFxuICAgICAgICAgICAgdGFnLFxuICAgICAgICAgICAgYm9keTogbm90aWZpY2F0aW9uSXRlbS5Db250ZW50LFxuICAgICAgICAgICAgaW1hZ2U6IG5vdGlmaWNhdGlvbkl0ZW0uSW1hZ2UsXG4gICAgICAgICAgICBpY29uOiBub3RpZmljYXRpb25JdGVtLkljb24gPyBub3RpZmljYXRpb25JdGVtLkljb24gOiAnL25vdGlmLnBuZycsXG4gICAgICAgICAgICBiYWRnZTogJy9ub3RpZi5wbmcnLFxuICAgICAgICAgICAgbGFuZyxcbiAgICAgICAgICAgIGFjdGlvbnMsXG4gICAgICAgICAgICBkYXRhXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCEoJ3NlcnZpY2VXb3JrZXInIGluIG5hdmlnYXRvcikpIHtcbiAgICAgICAgICAgIC8vIFNlcnZpY2UgV29ya2VyIGlzbid0IHN1cHBvcnRlZCBvbiB0aGlzIGJyb3dzZXIsIGRpc2FibGUgb3IgaGlkZSBVSS5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKCdQdXNoTWFuYWdlcicgaW4gd2luZG93KSkge1xuICAgICAgICAgICAgLy8gUHVzaCBpc24ndCBzdXBwb3J0ZWQgb24gdGhpcyBicm93c2VyLCBkaXNhYmxlIG9yIGhpZGUgVUkuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNBY3Rpb25zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gJ2FjdGlvbnMnIGluIE5vdGlmaWNhdGlvbi5wcm90b3R5cGU7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzSWNvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICdpY29uJyBpbiBOb3RpZmljYXRpb24ucHJvdG90eXBlO1xuICAgIH1cbiAgICBwcml2YXRlIGlzQmFkZ2VTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAnYmFkZ2UnIGluIE5vdGlmaWNhdGlvbi5wcm90b3R5cGU7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzRGlyU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gJ2RpcicgaW4gTm90aWZpY2F0aW9uLnByb3RvdHlwZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBpc0ltYWdlU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gJ2ltYWdlJyBpbiBOb3RpZmljYXRpb24ucHJvdG90eXBlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNUaXRsZUJvZHlTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAndGl0bGUnIGluIE5vdGlmaWNhdGlvbi5wcm90b3R5cGUgJiYgJ2JvZHknIGluIE5vdGlmaWNhdGlvbi5wcm90b3R5cGU7XG4gICAgfVxuICAgIHByaXZhdGUgaXNWaWJyYXRlU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gJ3ZpYnJhdGUnIGluIE5vdGlmaWNhdGlvbi5wcm90b3R5cGU7XG4gICAgfVxuICAgIHByaXZhdGUgaXNUaW1lc3RhbXBTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAndGltZXN0YW1wJyBpbiBOb3RpZmljYXRpb24ucHJvdG90eXBlO1xuICAgIH1cbiAgICBwcml2YXRlIGlzVGFnU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gJ3RhZycgaW4gTm90aWZpY2F0aW9uLnByb3RvdHlwZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBpc1NvdW5kU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gJ3NvdW5kJyBpbiBOb3RpZmljYXRpb24ucHJvdG90eXBlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNTaWxlbnRTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAnc2lsZW50JyBpbiBOb3RpZmljYXRpb24ucHJvdG90eXBlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNSZXFJbnRlclN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICdyZXF1aXJlSW50ZXJhY3Rpb24nIGluIE5vdGlmaWNhdGlvbi5wcm90b3R5cGU7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBjbG9zZU5vdGlmaWNhdGlvbnModGFnczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3cgPSBhd2FpdCB0aGlzLmdldFN3KCk7XG4gICAgICAgIGlmICghc3cpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0YWdzLmZvckVhY2goYXN5bmMgKHRhZykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm90aWZzOiBOb3RpZmljYXRpb25bXSB8IHVuZGVmaW5lZCA9IGF3YWl0IHN3Py5nZXROb3RpZmljYXRpb25zKHsgdGFnIH0pO1xuICAgICAgICAgICAgaWYgKG5vdGlmcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbm90aWZzLmZvckVhY2goKGMpID0+IGMuY2xvc2UoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXN3LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi1zdy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUUsUUFBUSxFQUEyQyxNQUFNLHFCQUFxQixDQUFDOzs7OztBQUt4RixNQUFNLE9BQU8sZ0NBQWdDO0lBR3pDLFlBQW9CLFdBQXVCLEVBQVUsT0FBZSxFQUFVLGNBQTZCO1FBQXZGLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBRjNHLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLG1DQUE4QixHQUFHLElBQUksQ0FBQztRQUUxQyxXQUFXLENBQUMsSUFBSSxDQUFDLGlCQUFpQixPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN2RCxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEUsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU87WUFDWCxDQUFDO1lBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRTlDLElBQUksV0FBVyxHQUFHLENBQUMsQ0FB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Q0FBZ0M7OzRGQUFoQyxnQ0FBZ0M7a0JBRDVDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTd1B1c2ggfSBmcm9tICdAYW5ndWxhci9zZXJ2aWNlLXdvcmtlcic7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhcnNhQXBpLCBFeE5vdGlmaWNhdGlvblBheWxvYWQsIE5vdGlmaWNhdGlvbkl0ZW0gfSBmcm9tICcuLi9hYnN0cmFjdC1jbGFzc2VzJztcbmltcG9ydCB7IExvZ1NlcnZpY2UgfSBmcm9tICcuL2xvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFBvcnRhbFNlcnZpY2UgfSBmcm9tICcuL3BvcnRhbC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25TZXJ2aWNlIHtcbiAgICBoYXNSZWdpc3RyYXRpb24gPSBmYWxzZTtcbiAgICBwcml2YXRlIF9ub3RpZmljYXRpb25QZXJtaXNzaW9uQWxsb3dlZCA9IHRydWU7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfbG9nU2VydmljZTogTG9nU2VydmljZSwgcHJpdmF0ZSBfc3dQdXNoOiBTd1B1c2gsIHByaXZhdGUgX3BvcnRhbFNlcnZpY2U6IFBvcnRhbFNlcnZpY2UpIHtcbiAgICAgICAgX2xvZ1NlcnZpY2UuaW5mbyhgc3dQdXNoIGVuYWJsZSAke19zd1B1c2guaXNFbmFibGVkfWApO1xuICAgICAgICBfc3dQdXNoLm5vdGlmaWNhdGlvbkNsaWNrcy5waXBlKHRhcCgoYykgPT4gY29uc29sZS5sb2coYykpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgIGlmICghZS5ub3RpZmljYXRpb24udGFnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNsb3NlTm90aWZpY2F0aW9ucyhbZS5ub3RpZmljYXRpb24udGFnXSk7XG5cbiAgICAgICAgICAgIGxldCBhY3Rpb25UaXRsZSA9IGUuYWN0aW9uO1xuICAgICAgICAgICAgaWYgKGFjdGlvblRpdGxlID09PSAnJykge1xuICAgICAgICAgICAgICAgIGFjdGlvblRpdGxlID0gJ3Nob3cnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIUJhcnNhQXBpPy5Mb2dpbkZvcm1EYXRhPy5Jc1VzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2UuRXhlY3V0ZU5vdGlmaWNhdGlvbkFjdGlvbihlLm5vdGlmaWNhdGlvbi50YWcsIGFjdGlvblRpdGxlKTtcblxuICAgICAgICAgICAgLy8gVE9ETzpleGV1Y3RlIGFjdGlvblxuICAgICAgICAgICAgLy8gbm90IGhhbmRsZWQhIVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5nZXRTdygpLnRoZW4oKGMpID0+ICh0aGlzLmhhc1JlZ2lzdHJhdGlvbiA9ICEhYykpO1xuICAgICAgICB0aGlzLmhhbmRsZVBlcm1pc3Npb24oKTtcbiAgICB9XG4gICAgcHVibGljIGdldCBpc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zd1B1c2guaXNFbmFibGVkICYmIHRoaXMuaGFzUmVnaXN0cmF0aW9uICYmIHRoaXMuX25vdGlmaWNhdGlvblBlcm1pc3Npb25BbGxvd2VkO1xuICAgIH1cbiAgICBwcml2YXRlIGhhbmRsZVBlcm1pc3Npb24oKTogYW55IHtcbiAgICAgICAgaWYgKCFuYXZpZ2F0b3I/LnBlcm1pc3Npb25zPy5xdWVyeSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuYXZpZ2F0b3IucGVybWlzc2lvbnNcbiAgICAgICAgICAgIC5xdWVyeSh7IG5hbWU6ICdub3RpZmljYXRpb25zJyB9KVxuICAgICAgICAgICAgLnRoZW4odGhpcy5wZXJtaXNzaW9uUXVlcnkuYmluZCh0aGlzKSlcbiAgICAgICAgICAgIC5jYXRjaCh0aGlzLnBlcm1pc3Npb25FcnJvci5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBlcm1pc3Npb25RdWVyeShyZXN1bHQpOiBhbnkge1xuICAgICAgICBsZXQgbmV3UHJvbXB0O1xuXG4gICAgICAgIGlmIChyZXN1bHQuc3RhdGUgPT09ICdncmFudGVkJykge1xuICAgICAgICAgICAgLy8gbm90aWZpY2F0aW9ucyBhbGxvd2VkLCBnbyB3aWxkXG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LnN0YXRlID09PSAncHJvbXB0Jykge1xuICAgICAgICAgICAgLy8gd2UgY2FuIGFzayB0aGUgdXNlclxuICAgICAgICAgICAgbmV3UHJvbXB0ID0gTm90aWZpY2F0aW9uLnJlcXVlc3RQZXJtaXNzaW9uKCk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LnN0YXRlID09PSAnZGVuaWVkJykge1xuICAgICAgICAgICAgLy8gbm90aWZpY2F0aW9ucyB3ZXJlIGRpc2FibGVkXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25QZXJtaXNzaW9uQWxsb3dlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0Lm9uY2hhbmdlID0gKCkgPT4gY29uc29sZS5sb2coeyB1cGRhdGVkUGVybWlzc2lvbjogcmVzdWx0IH0pO1xuXG4gICAgICAgIHJldHVybiBuZXdQcm9tcHQgfHwgcmVzdWx0O1xuICAgIH1cbiAgICBwcml2YXRlIHBlcm1pc3Npb25FcnJvcihlcnJvcik6IGFueSB7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblBlcm1pc3Npb25BbGxvd2VkID0gZmFsc2U7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICBwcml2YXRlIGFzeW5jIGdldFN3KCk6IFByb21pc2U8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoIW5hdmlnYXRvci5zZXJ2aWNlV29ya2VyKSB7XG4gICAgICAgICAgICB0aGlzLmhhc1JlZ2lzdHJhdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB4ID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uKCdjdXN0b20tbmdzdy13b3JrZXIuanMnKTtcbiAgICAgICAgdGhpcy5oYXNSZWdpc3RyYXRpb24gPSAhIXg7XG4gICAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgc2hvd05vdGlmaWNhdGlvbihwYXlsb2FkOiBFeE5vdGlmaWNhdGlvblBheWxvYWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3cgPSBhd2FpdCB0aGlzLmdldFN3KCk7XG4gICAgICAgIGlmICghc3cpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGlzUnRsLCBsYW5nLCBub3RpZmljYXRpb25JdGVtIH06IHsgaXNSdGw6IGJvb2xlYW47IGxhbmc6IHN0cmluZzsgbm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSB9ID1cbiAgICAgICAgICAgIHBheWxvYWQ7XG4gICAgICAgIGNvbnN0IHRhZyA9IG5vdGlmaWNhdGlvbkl0ZW0uVGFnO1xuICAgICAgICBjb25zdCBkaXIgPSBpc1J0bCA/ICdydGwnIDogJ2x0cic7XG4gICAgICAgIGNvbnN0IGFjdGlvbnMgPSAhbm90aWZpY2F0aW9uSXRlbS5VaUFjdGlvbnNcbiAgICAgICAgICAgID8gW11cbiAgICAgICAgICAgIDogbm90aWZpY2F0aW9uSXRlbS5VaUFjdGlvbnMubWFwKChhY3Rpb24pID0+ICh7XG4gICAgICAgICAgICAgICAgICB0aXRsZTogYWN0aW9uLlRpdGxlLFxuICAgICAgICAgICAgICAgICAgaWNvbjogYWN0aW9uLkljb24sXG4gICAgICAgICAgICAgICAgICBhY3Rpb246IGFjdGlvbi5UaXRsZVxuICAgICAgICAgICAgICB9KSk7XG4gICAgICAgIGNvbnN0IG1vSW5mbyA9ICF0YWcgPyBgJm1vaWQ9JHtub3RpZmljYXRpb25JdGVtLklkfSZ0cGlkPSR7bm90aWZpY2F0aW9uSXRlbS4kVHlwZURlZklkfWAgOiBgYDtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIG9uQWN0aW9uQ2xpY2s6IHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7IG9wZXJhdGlvbjogJ29wZW5XaW5kb3cnLCB1cmw6IGAjL2xvZ2luP25vdGlmaWNhdGlvblRhZz0ke3RhZ30mYWN0aW9uPXNob3cke21vSW5mb31gIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgYWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgIGRhdGEub25BY3Rpb25DbGlja1thY3Rpb24udGl0bGVdID0ge1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ2ZvY3VzTGFzdEZvY3VzZWRPck9wZW4nLFxuICAgICAgICAgICAgICAgIHVybDogYCMvbG9naW4/bm90aWZpY2F0aW9uVGFnPSR7dGFnfSZhY3Rpb249JHthY3Rpb24udGl0bGV9YFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3c/LnNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSXRlbS5UaXRsZSwge1xuICAgICAgICAgICAgZGlyLFxuICAgICAgICAgICAgdGFnLFxuICAgICAgICAgICAgYm9keTogbm90aWZpY2F0aW9uSXRlbS5Db250ZW50LFxuICAgICAgICAgICAgaW1hZ2U6IG5vdGlmaWNhdGlvbkl0ZW0uSW1hZ2UsXG4gICAgICAgICAgICBpY29uOiBub3RpZmljYXRpb25JdGVtLkljb24gPyBub3RpZmljYXRpb25JdGVtLkljb24gOiAnL25vdGlmLnBuZycsXG4gICAgICAgICAgICBiYWRnZTogJy9ub3RpZi5wbmcnLFxuICAgICAgICAgICAgbGFuZyxcbiAgICAgICAgICAgIGFjdGlvbnMsXG4gICAgICAgICAgICBkYXRhXG4gICAgICAgIH0gYXMgYW55KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghKCdzZXJ2aWNlV29ya2VyJyBpbiBuYXZpZ2F0b3IpKSB7XG4gICAgICAgICAgICAvLyBTZXJ2aWNlIFdvcmtlciBpc24ndCBzdXBwb3J0ZWQgb24gdGhpcyBicm93c2VyLCBkaXNhYmxlIG9yIGhpZGUgVUkuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISgnUHVzaE1hbmFnZXInIGluIHdpbmRvdykpIHtcbiAgICAgICAgICAgIC8vIFB1c2ggaXNuJ3Qgc3VwcG9ydGVkIG9uIHRoaXMgYnJvd3NlciwgZGlzYWJsZSBvciBoaWRlIFVJLlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQWN0aW9uc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICdhY3Rpb25zJyBpbiBOb3RpZmljYXRpb24ucHJvdG90eXBlO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0ljb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAnaWNvbicgaW4gTm90aWZpY2F0aW9uLnByb3RvdHlwZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBpc0JhZGdlU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gJ2JhZGdlJyBpbiBOb3RpZmljYXRpb24ucHJvdG90eXBlO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0RpclN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICdkaXInIGluIE5vdGlmaWNhdGlvbi5wcm90b3R5cGU7XG4gICAgfVxuICAgIHByaXZhdGUgaXNJbWFnZVN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICdpbWFnZScgaW4gTm90aWZpY2F0aW9uLnByb3RvdHlwZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVGl0bGVCb2R5U3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gJ3RpdGxlJyBpbiBOb3RpZmljYXRpb24ucHJvdG90eXBlICYmICdib2R5JyBpbiBOb3RpZmljYXRpb24ucHJvdG90eXBlO1xuICAgIH1cbiAgICBwcml2YXRlIGlzVmlicmF0ZVN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICd2aWJyYXRlJyBpbiBOb3RpZmljYXRpb24ucHJvdG90eXBlO1xuICAgIH1cbiAgICBwcml2YXRlIGlzVGltZXN0YW1wU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gJ3RpbWVzdGFtcCcgaW4gTm90aWZpY2F0aW9uLnByb3RvdHlwZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBpc1RhZ1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICd0YWcnIGluIE5vdGlmaWNhdGlvbi5wcm90b3R5cGU7XG4gICAgfVxuICAgIHByaXZhdGUgaXNTb3VuZFN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICdzb3VuZCcgaW4gTm90aWZpY2F0aW9uLnByb3RvdHlwZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU2lsZW50U3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gJ3NpbGVudCcgaW4gTm90aWZpY2F0aW9uLnByb3RvdHlwZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUmVxSW50ZXJTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAncmVxdWlyZUludGVyYWN0aW9uJyBpbiBOb3RpZmljYXRpb24ucHJvdG90eXBlO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgY2xvc2VOb3RpZmljYXRpb25zKHRhZ3M6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHN3ID0gYXdhaXQgdGhpcy5nZXRTdygpO1xuICAgICAgICBpZiAoIXN3KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGFncy5mb3JFYWNoKGFzeW5jICh0YWcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vdGlmczogTm90aWZpY2F0aW9uW10gfCB1bmRlZmluZWQgPSBhd2FpdCBzdz8uZ2V0Tm90aWZpY2F0aW9ucyh7IHRhZyB9KTtcbiAgICAgICAgICAgIGlmIChub3RpZnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIG5vdGlmcy5mb3JFYWNoKChjKSA9PiBjLmNsb3NlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -296,13 +296,13 @@ export class NotificationService {
|
|
|
296
296
|
}
|
|
297
297
|
});
|
|
298
298
|
}
|
|
299
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
300
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
299
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationService, deps: [{ token: NOTIFICATAION_POPUP_SERVER }, { token: i1.LogService }, { token: i2.LowerCasePipe }, { token: i3.BbbTranslatePipe }, { token: i4.DomSanitizer }, { token: i5.ServiceWorkerNotificationService }, { token: i6.PortalService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
300
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationService }); }
|
|
301
301
|
}
|
|
302
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
302
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationService, decorators: [{
|
|
303
303
|
type: Injectable
|
|
304
304
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
305
305
|
type: Inject,
|
|
306
306
|
args: [NOTIFICATAION_POPUP_SERVER]
|
|
307
307
|
}] }, { type: i1.LogService }, { type: i2.LowerCasePipe }, { type: i3.BbbTranslatePipe }, { type: i4.DomSanitizer }, { type: i5.ServiceWorkerNotificationService }, { type: i6.PortalService }, { type: i0.NgZone }] });
|
|
308
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7OztBQVFsRSxNQUFNLE9BQU8sbUJBQW1CO0lBUzVCLFlBQ2tELGFBQXVDLEVBQzdFLFdBQXVCLEVBQ3ZCLFVBQXlCLEVBQ3pCLGFBQStCLEVBQy9CLGFBQTJCLEVBQzNCLDBCQUE0RCxFQUM1RCxjQUE2QixFQUM3QixPQUFlO1FBUHVCLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUM3RSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixlQUFVLEdBQVYsVUFBVSxDQUFlO1FBQ3pCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQiwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQWtDO1FBQzVELG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFoQm5CLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQXdCLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUFrQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEcsOEJBQXlCLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENB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WUFDdEMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0I7WUFDdEQsV0FBVyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVztZQUNwQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLG1CQUFtQjtZQUNwRCxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUN2RCxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUM7U0FDcEUsQ0FBQztJQUNOLENBQUM7SUFDTyxZQUFZLENBQUMsZ0JBQWtDO1FBQ25ELFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO1lBQzVDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXZELElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLENBQUM7b0JBQzdDLGdCQUFnQjtvQkFDaEIsS0FBSztvQkFDTCxJQUFJO2lCQUNQLENBQUMsQ0FBQztZQUNQLENBQUM7aUJBQU0sQ0FBQztnQkFDSix5QkFBeUI7Z0JBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7WUFDOUQsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0F6VVEsbUJBQW1CLGtCQVVoQiwwQkFBMEI7a0hBVjdCLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVTs7MEJBV0YsTUFBTTsyQkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb3dlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCYXJzYUFwaSB9IGZyb20gJy4uL2Fic3RyYWN0LWNsYXNzZXMvYmFyc2EtYXBpJztcbmltcG9ydCB7IE1ldGFvYmplY3REYXRhTW9kZWwsIE1vRm9yUmVwb3J0TW9kZWwsIE5vdGlmaWNhdGlvbkl0ZW0sIE5vdGlmeU9wdGlvbnMgfSBmcm9tICcuLi9hYnN0cmFjdC1jbGFzc2VzL21vZGVscyc7XG5pbXBvcnQgeyBOT1RJRklDQVRBSU9OX1BPUFVQX1NFUlZFUiB9IGZyb20gJy4uL2luamRlY3Rpb24tdG9rZW5zJztcbmltcG9ydCB7IEJiYlRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi9waXBlcy9iYmItdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4vbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uUG9wdXBTZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb24tcG9wdXAuc2VydmljZSc7XG5pbXBvcnQgeyBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLXN3LnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9ydGFsU2VydmljZSB9IGZyb20gJy4vcG9ydGFsLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uU2VydmljZSB7XG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWxbXT4oW10pO1xuICAgIHByaXZhdGUgX25vdGlmaWNhdGlvbkNvdW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyB1bnJlYWQ6IG51bWJlcjsgYWxsOiBudW1iZXIgfT4oeyB1bnJlYWQ6IDAsIGFsbDogMCB9KTtcbiAgICBwcml2YXRlIF9ub3RpZmljYXRpb25VbnJlYWRDb3VudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9ub3RpZmlhdGlvbkNvdW50TG9hZGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHBhZ2VDb3VudCA9IDE7XG4gICAgcGFnZUluZGV4ID0gMDtcbiAgICB1c2VyTm90aWZpY2F0aW9uU2V0dGluZ3M6IFVzZXJOb3RpZmljYXRpb25TZXR0aW5nO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KE5PVElGSUNBVEFJT05fUE9QVVBfU0VSVkVSKSBwcm90ZWN0ZWQgX3BvcHVwU2VydmljZTogTm90aWZpY2F0aW9uUG9wdXBTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9sb2dTZXJ2aWNlOiBMb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9sb3dlckNhc2U6IExvd2VyQ2FzZVBpcGUsXG4gICAgICAgIHByaXZhdGUgX2JiYlRyYW5zbGF0ZTogQmJiVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgcHJpdmF0ZSBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgX3NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb246IFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZVxuICAgICkge1xuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLnVzZXJQb3J0YWxTZXR0aW5ncyQucGlwZSgpLnN1YnNjcmliZSgodXNlclBvcnRhbFNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVzZXJOb3RpZmljYXRpb25TZXR0aW5ncyA9IDxVc2VyTm90aWZpY2F0aW9uU2V0dGluZz51c2VyUG9ydGFsU2V0dGluZ3NbJ1VzZXJOb3RpZmljYXRpb25TZXR0aW5nJ107XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgbm90aWZpY2F0aW9uQ291bnRMb2FkZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm90aWZpYXRpb25Db3VudExvYWRlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIGdldCBub3RpZmljYXRpb25Db3VudCQoKTogT2JzZXJ2YWJsZTx7IHVucmVhZDogbnVtYmVyOyBhbGw6IG51bWJlciB9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25Db3VudCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0IG5vdGlmaWNhdGlvbnMkKCk6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25zJC5hc09ic2VydmFibGUoKS5waXBlKCk7XG4gICAgfVxuICAgIGdldCBub3RpZmljYXRpb25Mb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vdGlmaWNhdGlvbkxvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwdWJsaWMgbG9hZE1vcmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZE5vdGlmaWNhdGlvbnModGhpcy5wYWdlSW5kZXgpO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0Tm90aWZpY2F0aW9uVmlld2VkKHRhZ3M6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW3RhZ3NdLFxuICAgICAgICAgICAgTWV0aG9kOiAnU2V0Tm90aWZpY2F0aW9uVmlld2VkJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vbGlzdEN1cnIgPSB0aGlzLl9ub3RpZmljYXRpb25zJC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRVbnJlYWRNb0xpc3QgPSBtb2xpc3RDdXJyLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYyxcbiAgICAgICAgICAgICAgICAgICAgVW5yZWFkOiB0YWdzLmluZGV4T2YoYy5UYWcpID4gLTEgPyBmYWxzZSA6IGMuVW5yZWFkXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMkLm5leHQoWy4uLnVwZGF0ZWRVbnJlYWRNb0xpc3RdKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluY3JlYXNlTm90aWZjYXRpb25Db3VudCgtdGFncy5sZW5ndGgsIDApO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YWdzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dTZXJ2aWNlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHVibGljIFNob3dOb3RpZmljYXRpb25SZWxhdGVkTW8oZTogeyB0YWc6IHN0cmluZzsgbW86IE1ldGFvYmplY3REYXRhTW9kZWw7IG5hbWE6IHN0cmluZyB9KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVlID0ge1xuICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgIGFmdGVyUmVhZHk6IChlMjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtlLnRhZ10sXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ0JhcnNhX1NldFJlYWRSYWRpZkNhcnRhYmxlQnlUYWcnLFxuICAgICAgICAgICAgICAgICAgICBGYWlsRm46IChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ1NlcnZpY2UuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLlNob3dGb3JtKGVlKTtcbiAgICB9XG4gICAgcHVibGljIGhhbmRsZVRvcGljKGV2ZW50VG9waWMsIGNvbnRlbnQsIG93bmVyS2V5KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudFRvcGljID09PSAnRGVsZXRlTm90aWZpY2F0aW9uTWVzc2FnZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgVGFncyB9OiB7IFRhZ3M6IHN0cmluZ1tdIH0gPSBjb250ZW50O1xuICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgICAgICAgICBjb25zdCB7IGZpbmRJbk5vdGlmaWNhdGlvbnMsIHVucmVhZENvdW50LCBjb3VudCB9ID0gdGhpcy5fZmluZE5vdGlmaWNhdGlvbnNNZXNzYWdlKFRhZ3MsIG5vdGlmaWNhdGlvbnMpO1xuICAgICAgICAgICAgaWYgKGZpbmRJbk5vdGlmaWNhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KG5vdGlmaWNhdGlvbnMuZmlsdGVyKChjKSA9PiAhVGFncy5pbmNsdWRlcyhjLlRhZykpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh1bnJlYWRDb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluY3JlYXNlTm90aWZjYXRpb25Db3VudCgtdW5yZWFkQ291bnQsIC1jb3VudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnRUb3BpYyA9PT0gJ1NldFJlYWROb3RpZmljYXRpb25NZXNzYWdlJykge1xuICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgICAgICAgICBjb25zdCB7IFRhZ3MgfTogeyBUYWdzOiBzdHJpbmdbXSB9ID0gY29udGVudDtcbiAgICAgICAgICAgIFRhZ3MuZm9yRWFjaCgodGFnKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmRJbmRleCA9IG5vdGlmaWNhdGlvbnMuZmluZEluZGV4KChjKSA9PiBjLlRhZyA9PT0gdGFnKTtcbiAgICAgICAgICAgICAgICBpZiAoZm91bmRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbnNbZm91bmRJbmRleF0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5ub3RpZmljYXRpb25zW2ZvdW5kSW5kZXhdLFxuICAgICAgICAgICAgICAgICAgICAgICAgVW5yZWFkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFVucmVhZCRDYXB0aW9uOiAn2YbYp9iv2LHYs9iqJ1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KFsuLi5ub3RpZmljYXRpb25zXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbnNDb3VudCA9IHRoaXMuX25vdGlmaWNhdGlvbkNvdW50JC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgdGhpcy5pbmNyZWFzZU5vdGlmY2F0aW9uQ291bnQoLVRhZ3MubGVuZ3RoLCBub3RpZmljYXRpb25zQ291bnQuYWxsKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIF9maW5kTm90aWZpY2F0aW9uc01lc3NhZ2UoXG4gICAgICAgIFRhZ3M6IHN0cmluZ1tdLFxuICAgICAgICBub3RpZmljYXRpb25zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW11cbiAgICApOiB7IGZpbmRJbk5vdGlmaWNhdGlvbnM6IGJvb2xlYW47IHVucmVhZENvdW50OiBudW1iZXI7IGNvdW50OiBudW1iZXIgfSB7XG4gICAgICAgIGxldCBmaW5kSW5Ob3RpZmljYXRpb25zID0gZmFsc2U7XG4gICAgICAgIGxldCB1bnJlYWRDb3VudCA9IDA7XG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIFRhZ3MuZm9yRWFjaCgodGFnKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZE5vdGlmaWNhdGlvbiA9IG5vdGlmaWNhdGlvbnMuZmluZCgoYykgPT4gYy5UYWcgPT09IHRhZyk7XG4gICAgICAgICAgICBpZiAoZm91bmROb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgICAgICBmaW5kSW5Ob3RpZmljYXRpb25zID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgIGlmIChmb3VuZE5vdGlmaWNhdGlvbi5VbnJlYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5yZWFkQ291bnQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyBmaW5kSW5Ob3RpZmljYXRpb25zLCB1bnJlYWRDb3VudCwgY291bnQgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkTm90aWZpY2F0aW9uKFxuICAgICAgICBtc2c6IHN0cmluZyxcbiAgICAgICAgdGl0bGU6IHN0cmluZyxcbiAgICAgICAgdHlwZTogc3RyaW5nLFxuICAgICAgICBpbWFnZTogc3RyaW5nLFxuICAgICAgICBtbyxcbiAgICAgICAgdWlPcHRpb25zOiBOb3RpZnlPcHRpb25zLFxuICAgICAgICBvdGhlck9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBpZiAob3RoZXJPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBNb0lkLCBUeXBlRGVmSWQgfSA9IG90aGVyT3B0aW9ucztcbiAgICAgICAgICAgICAgICBsZXQgbmV3Tm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25JdGVtID0ge1xuICAgICAgICAgICAgICAgICAgICAkQ2FwdGlvbjogdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIElkOiBNb0lkLFxuICAgICAgICAgICAgICAgICAgICAkVHlwZURlZklkOiBUeXBlRGVmSWQsXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlOiB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgVW5yZWFkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBJY29uOiBpbWFnZSxcbiAgICAgICAgICAgICAgICAgICAgSW1hZ2U6ICcnLFxuICAgICAgICAgICAgICAgICAgICBDb250ZW50OiBtc2csXG4gICAgICAgICAgICAgICAgICAgIFRhZzogJycsXG4gICAgICAgICAgICAgICAgICAgIFByaW9yaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICBTdWJqZWN0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgJFNhZmVDb250ZW50OiB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwobXNnKSxcbiAgICAgICAgICAgICAgICAgICAgQ3JlYXRpb25EYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICBDcmVhdGlvbkRhdGUkQ2FwdGlvbjogdGhpcy5fYmJiVHJhbnNsYXRlLnRyYW5zZm9ybSgnRGF0ZVJfVG9kYXknKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkTW8gPSBtbyA/IEJhcnNhQXBpLkV4dC5kZWNvZGUobW8pIDogbnVsbDtcbiAgICAgICAgICAgICAgICBuZXdOb3RpZmljYXRpb24gPSB0aGlzLl9wcmVwYXJlUHJvcGVydGllcyhuZXdOb3RpZmljYXRpb24sIHBhcnNlZE1vLCBtc2cpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlZE1vKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vbGlzdCA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMkLm5leHQoW25ld05vdGlmaWNhdGlvbiwgLi4ubW9saXN0XSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVhc2VOb3RpZmNhdGlvbkNvdW50KDEsIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNob3dOb3RpZmljYXRpb24obmV3Tm90aWZpY2F0aW9uLCBwYXJzZWRNbywgdWlPcHRpb25zLCBvdGhlck9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5jcmVhc2VOb3RpZmNhdGlvbkNvdW50KHVucmVhZDogbnVtYmVyLCBjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvdW50VmFsdWUgPSB0aGlzLl9ub3RpZmljYXRpb25Db3VudCQuZ2V0VmFsdWUoKTtcbiAgICAgICAgY29uc3Qgc3VtVW5yZWFkID0gY291bnRWYWx1ZS51bnJlYWQgKyArdW5yZWFkO1xuICAgICAgICBjb25zdCBzdW1BbGwgPSBjb3VudFZhbHVlLmFsbCArICtjb3VudDtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uQ291bnQkLm5leHQoeyB1bnJlYWQ6IHN1bVVucmVhZCA+IDAgPyBzdW1VbnJlYWQgOiAwLCBhbGw6IHN1bUFsbCA+IDAgPyBzdW1BbGwgOiAwIH0pO1xuICAgIH1cbiAgICBwdWJsaWMgbG9hZFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KCk6IHZvaWQge1xuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLlBvcnRhbElkXSxcbiAgICAgICAgICAgIE1ldGhvZDogJ0dldFNoZWxsYmFyTm90aWZpY2F0aW9uQ291bnRCeVBvcnRhbElkJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKGU6IHsgVW5yZWFkOiBudW1iZXI7IEFsbDogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVbnJlYWRBbmRDb3VudChlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmlhdGlvbkNvdW50TG9hZGVkJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dTZXJ2aWNlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHVibGljIGxvYWROb3RpZmljYXRpb25zKHBhZ2VJbmRleDogbnVtYmVyID0gMCk6IHZvaWQge1xuICAgICAgICBpZiAocGFnZUluZGV4ICsgMSA+IHRoaXMucGFnZUNvdW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25Mb2FkaW5nKHRydWUpO1xuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtwYWdlSW5kZXgsIEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuUG9ydGFsSWRdLFxuICAgICAgICAgICAgTWV0aG9kOiAnR2V0U2hlbGxiYXJOb3RpZmljYXRpb25zQnlQb3J0YWxJZCcsXG4gICAgICAgICAgICBTdWNjZXNzRm46IChlOiB7IFBhZ2VDb3VudDogbnVtYmVyOyBNb0xpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm90aWZMaXN0T2ZUYWdzID0gbm90aWZpY2F0aW9ucy5tYXAoKGMpID0+IGMuVGFnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtb2xpc3QgPSBlLk1vTGlzdC5maWx0ZXIoKGMpID0+IG5vdGlmTGlzdE9mVGFncy5pbmRleE9mKGMuVGFnKSA9PT0gLTEpLm1hcCgobW8pID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVQcm9wZXJ0aWVzKDxOb3RpZmljYXRpb25JdGVtPm1vLCBtbywgbW8uSU1lc3NhZ2U/LkNvbnRlbnQpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KFsuLi5ub3RpZmljYXRpb25zLCAuLi5tb2xpc3RdKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VDb3VudCA9ICtlLlBhZ2VDb3VudDtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IHBhZ2VJbmRleCArIDE7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25Mb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlTm90aWZpY2F0aW9uKG1vbGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBjbG9zZU5vdGlmaWNhdGlvbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9JZHMgPSB0aGlzLl9zZXROb3RpZmljYXRpb25Mb2FkaW5nKG1vbGlzdCwgdHJ1ZSk7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW21vSWRzLCBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLlBvcnRhbElkXSxcbiAgICAgICAgICAgIE1ldGhvZDogJ1JlbW92ZVNoZWxsYmFyTm90aWZpY2F0aW9uJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKGU6IHsgVW5yZWFkOiBudW1iZXI7IEFsbDogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub3RpZmljYXRpb25MaXN0ID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVbnJlYWRBbmRDb3VudChlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdNb0xpc3QgPSBub3RpZmljYXRpb25MaXN0LmZpbHRlcigoYykgPT4gbW9JZHMuaW5kZXhPZihjLklkKSA9PT0gLTEpO1xuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMkLm5leHQobmV3TW9MaXN0KTtcbiAgICAgICAgICAgICAgICBpZiAoY2xvc2VOb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VydmljZVdvcmtlck5vdGlmaWNhdGlvbi5jbG9zZU5vdGlmaWNhdGlvbnMobW9JZHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fbm90aWZpY2F0aW9uQ291bnQkLmdldFZhbHVlKCkuYWxsID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWROb3RpZmljYXRpb25zKHRoaXMucGFnZUluZGV4IC0gMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dTZXJ2aWNlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldE5vdGlmaWNhdGlvbkxvYWRpbmcobW9saXN0LCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIF91cGRhdGVVbnJlYWRBbmRDb3VudChlOiB7IFVucmVhZDogbnVtYmVyOyBBbGw6IG51bWJlciB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblVucmVhZENvdW50JC5uZXh0KCtlLlVucmVhZCk7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkNvdW50JC5uZXh0KHsgdW5yZWFkOiArZS5VbnJlYWQsIGFsbDogK2UuQWxsIH0pO1xuICAgIH1cblxuICAgIGdldCBTdXBwb3J0Tm90aWZpY2F0aW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBOb3RpZmljYXRpb24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuX3NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24uaXNFbmFibGVkO1xuICAgIH1cbiAgICBwdWJsaWMgc2hvd05vdGlmaWNhdGlvbihcbiAgICAgICAgbm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSxcbiAgICAgICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsLFxuICAgICAgICB1aU9wdGlvbnM6IE5vdGlmeU9wdGlvbnMsXG4gICAgICAgIG90aGVyT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PlxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAobm90aWZpY2F0aW9uSXRlbS5UaXRsZSAmJiBub3RpZmljYXRpb25JdGVtLlRpdGxlLnN0YXJ0c1dpdGgoJ1snKSAmJiBub3RpZmljYXRpb25JdGVtLlRpdGxlLmVuZHNXaXRoKCddJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm90aWZpY2F0aW9uSXRlbS5UaXRsZSAmJiBub3RpZmljYXRpb25JdGVtLlRpdGxlLnN0YXJ0c1dpdGgoJ3snKSAmJiBub3RpZmljYXRpb25JdGVtLlRpdGxlLmVuZHNXaXRoKCd9JykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobW8gJiYgIW1vLlNob3dQb3B1cCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5TdXBwb3J0Tm90aWZpY2F0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS53YXJuKGBJbkFwcCBOb3RpZmljYXRpb24gaXMgbm90IHN1cHBvcnRlZC5gKTtcbiAgICAgICAgICAgIHVpT3B0aW9ucyA9IHVpT3B0aW9ucyA/PyB7fTtcbiAgICAgICAgICAgIHVpT3B0aW9ucy5Ob3RpZmljYXRpb25JdGVtID0gbm90aWZpY2F0aW9uSXRlbTtcbiAgICAgICAgICAgIHRoaXMuX3BvcHVwTm90aWZ5KG5vdGlmaWNhdGlvbkl0ZW0sIG1vLCB1aU9wdGlvbnMsIG90aGVyT3B0aW9ucyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5BcHBOb3RpZnkobm90aWZpY2F0aW9uSXRlbSk7XG4gICAgfVxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uTG9hZGluZyhsb2FkaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkxvYWRpbmckLm5leHQobG9hZGluZyk7XG4gICAgfVxuICAgIHByaXZhdGUgX3NldE5vdGlmaWNhdGlvbkxvYWRpbmcobW9saXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10sIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBtb2xpc3RDdXJyID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgY29uc3QgbW9JZHMgPSBtb2xpc3QubWFwKChjKSA9PiBjLklkKTtcbiAgICAgICAgY29uc3QgbW9saXN0V2l0aExvYWRpbmdQcm9wZXJ0eSA9IG1vbGlzdEN1cnIubWFwKChjKSA9PiAoe1xuICAgICAgICAgICAgLi4uYyxcbiAgICAgICAgICAgICROb3RpZmljYXRvaW5Mb2FkaW5nOiBtb0lkcy5pbmRleE9mKGMuSWQpICE9PSAtMSA/IGxvYWRpbmcgOiBjLiROb3RpZmljYXRvaW5Mb2FkaW5nXG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9ucyQubmV4dChbLi4ubW9saXN0V2l0aExvYWRpbmdQcm9wZXJ0eV0pO1xuICAgICAgICByZXR1cm4gbW9JZHM7XG4gICAgfVxuICAgIHByaXZhdGUgX3BvcHVwTm90aWZ5KFxuICAgICAgICBub3RpZmljYXRpb25JdGVtOiBOb3RpZmljYXRpb25JdGVtLFxuICAgICAgICBtbzogTWV0YW9iamVjdERhdGFNb2RlbCB8IG51bGwsXG4gICAgICAgIHVpT3B0aW9uczogTm90aWZ5T3B0aW9ucyxcbiAgICAgICAgb3RoZXJPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcHVwU2VydmljZS5wb3B1cE5vdGlmeShcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0uJFNhZmVDb250ZW50LFxuICAgICAgICAgICAgbm90aWZpY2F0aW9uSXRlbS5UaXRsZSxcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0uU3ViamVjdCxcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0uSW1hZ2UsXG4gICAgICAgICAgICBtbyxcbiAgICAgICAgICAgIHVpT3B0aW9ucyxcbiAgICAgICAgICAgIG90aGVyT3B0aW9uc1xuICAgICAgICApO1xuICAgIH1cbiAgICBwcml2YXRlIF9wcmVwYXJlUHJvcGVydGllcyhcbiAgICAgICAgbm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSxcbiAgICAgICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgICAgIGNvbnRlbnQ6IHN0cmluZ1xuICAgICk6IE5vdGlmaWNhdGlvbkl0ZW0ge1xuICAgICAgICBpZiAoIW1vKSB7XG4gICAgICAgICAgICByZXR1cm4gbm90aWZpY2F0aW9uSXRlbTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ubm90aWZpY2F0aW9uSXRlbSxcbiAgICAgICAgICAgIC4uLm1vLFxuICAgICAgICAgICAgVWlBY3Rpb25zOiAhbW8uVWlBY3Rpb25zID8gW10gOiBKU09OLnBhcnNlKG1vLlVpQWN0aW9ucyksXG4gICAgICAgICAgICBDcmVhdGlvbkRhdGU6IG1vLklNZXNzYWdlLkNyZWF0aW9uRGF0ZSxcbiAgICAgICAgICAgIENyZWF0aW9uRGF0ZSRDYXB0aW9uOiBtby5JTWVzc2FnZS5DcmVhdGlvbkRhdGUkQ2FwdGlvbixcbiAgICAgICAgICAgIENyZWF0b3JVc2VyOiBtby5JTWVzc2FnZS5DcmVhdG9yVXNlcixcbiAgICAgICAgICAgIENyZWF0b3JVc2VyJENhcHRpb246IG1vLklNZXNzYWdlLkNyZWF0b3JVc2VyJENhcHRpb24sXG4gICAgICAgICAgICBJY29uOiBgJHtCYXJzYUFwaS5Cdy5PcmlnaW4oKX0ke25vdGlmaWNhdGlvbkl0ZW0uSWNvbn1gLFxuICAgICAgICAgICAgJFNhZmVDb250ZW50OiB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoY29udGVudClcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaW5BcHBOb3RpZnkobm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSk6IHZvaWQge1xuICAgICAgICBOb3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFuZyA9IEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuQ3VsdHVyZTtcbiAgICAgICAgICAgIGNvbnN0IGlzUnRsID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DdWx0dXJlc1J0bFtsYW5nXTtcblxuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gJ2dyYW50ZWQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VydmljZVdvcmtlck5vdGlmaWNhdGlvbi5zaG93Tm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uSXRlbSxcbiAgICAgICAgICAgICAgICAgICAgaXNSdGwsXG4gICAgICAgICAgICAgICAgICAgIGxhbmdcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzpwZXJtaXNzaW9uIGRlbmllZFxuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ1NlcnZpY2UuZXJyb3IoJ25vdGlmaWNhdGlvbiBwZXJtaXNzaW9uIGRlbmllZC4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgVXNlck5vdGlmaWNhdGlvblNldHRpbmcgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICBEaXNhYmxlQ2FydGFibGVHcm91cHM6IE1vRm9yUmVwb3J0TW9kZWw7XG4gICAgRW5hYmxlOiBib29sZWFuO1xufVxuIl19
|
|
308
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7OztBQVFsRSxNQUFNLE9BQU8sbUJBQW1CO0lBUzVCLFlBQ2tELGFBQXVDLEVBQzdFLFdBQXVCLEVBQ3ZCLFVBQXlCLEVBQ3pCLGFBQStCLEVBQy9CLGFBQTJCLEVBQzNCLDBCQUE0RCxFQUM1RCxjQUE2QixFQUM3QixPQUFlO1FBUHVCLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUM3RSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixlQUFVLEdBQVYsVUFBVSxDQUFlO1FBQ3pCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQiwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQWtDO1FBQzVELG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFoQm5CLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQXdCLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUFrQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEcsOEJBQXlCLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENB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WUFDdEMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0I7WUFDdEQsV0FBVyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVztZQUNwQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLG1CQUFtQjtZQUNwRCxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUN2RCxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUM7U0FDcEUsQ0FBQztJQUNOLENBQUM7SUFDTyxZQUFZLENBQUMsZ0JBQWtDO1FBQ25ELFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO1lBQzVDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXZELElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLENBQUM7b0JBQzdDLGdCQUFnQjtvQkFDaEIsS0FBSztvQkFDTCxJQUFJO2lCQUNQLENBQUMsQ0FBQztZQUNQLENBQUM7aUJBQU0sQ0FBQztnQkFDSix5QkFBeUI7Z0JBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7WUFDOUQsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0F6VVEsbUJBQW1CLGtCQVVoQiwwQkFBMEI7bUhBVjdCLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVTs7MEJBV0YsTUFBTTsyQkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb3dlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCYXJzYUFwaSB9IGZyb20gJy4uL2Fic3RyYWN0LWNsYXNzZXMvYmFyc2EtYXBpJztcbmltcG9ydCB7IE1ldGFvYmplY3REYXRhTW9kZWwsIE1vRm9yUmVwb3J0TW9kZWwsIE5vdGlmaWNhdGlvbkl0ZW0sIE5vdGlmeU9wdGlvbnMgfSBmcm9tICcuLi9hYnN0cmFjdC1jbGFzc2VzL21vZGVscyc7XG5pbXBvcnQgeyBOT1RJRklDQVRBSU9OX1BPUFVQX1NFUlZFUiB9IGZyb20gJy4uL2luamRlY3Rpb24tdG9rZW5zJztcbmltcG9ydCB7IEJiYlRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi9waXBlcy9iYmItdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4vbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uUG9wdXBTZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb24tcG9wdXAuc2VydmljZSc7XG5pbXBvcnQgeyBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLXN3LnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9ydGFsU2VydmljZSB9IGZyb20gJy4vcG9ydGFsLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uU2VydmljZSB7XG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWxbXT4oW10pO1xuICAgIHByaXZhdGUgX25vdGlmaWNhdGlvbkNvdW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyB1bnJlYWQ6IG51bWJlcjsgYWxsOiBudW1iZXIgfT4oeyB1bnJlYWQ6IDAsIGFsbDogMCB9KTtcbiAgICBwcml2YXRlIF9ub3RpZmljYXRpb25VbnJlYWRDb3VudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9ub3RpZmlhdGlvbkNvdW50TG9hZGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHBhZ2VDb3VudCA9IDE7XG4gICAgcGFnZUluZGV4ID0gMDtcbiAgICB1c2VyTm90aWZpY2F0aW9uU2V0dGluZ3M6IFVzZXJOb3RpZmljYXRpb25TZXR0aW5nO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KE5PVElGSUNBVEFJT05fUE9QVVBfU0VSVkVSKSBwcm90ZWN0ZWQgX3BvcHVwU2VydmljZTogTm90aWZpY2F0aW9uUG9wdXBTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9sb2dTZXJ2aWNlOiBMb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9sb3dlckNhc2U6IExvd2VyQ2FzZVBpcGUsXG4gICAgICAgIHByaXZhdGUgX2JiYlRyYW5zbGF0ZTogQmJiVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgcHJpdmF0ZSBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgX3NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb246IFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZVxuICAgICkge1xuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLnVzZXJQb3J0YWxTZXR0aW5ncyQucGlwZSgpLnN1YnNjcmliZSgodXNlclBvcnRhbFNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVzZXJOb3RpZmljYXRpb25TZXR0aW5ncyA9IDxVc2VyTm90aWZpY2F0aW9uU2V0dGluZz51c2VyUG9ydGFsU2V0dGluZ3NbJ1VzZXJOb3RpZmljYXRpb25TZXR0aW5nJ107XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgbm90aWZpY2F0aW9uQ291bnRMb2FkZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm90aWZpYXRpb25Db3VudExvYWRlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIGdldCBub3RpZmljYXRpb25Db3VudCQoKTogT2JzZXJ2YWJsZTx7IHVucmVhZDogbnVtYmVyOyBhbGw6IG51bWJlciB9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25Db3VudCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0IG5vdGlmaWNhdGlvbnMkKCk6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25zJC5hc09ic2VydmFibGUoKS5waXBlKCk7XG4gICAgfVxuICAgIGdldCBub3RpZmljYXRpb25Mb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vdGlmaWNhdGlvbkxvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwdWJsaWMgbG9hZE1vcmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZE5vdGlmaWNhdGlvbnModGhpcy5wYWdlSW5kZXgpO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0Tm90aWZpY2F0aW9uVmlld2VkKHRhZ3M6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW3RhZ3NdLFxuICAgICAgICAgICAgTWV0aG9kOiAnU2V0Tm90aWZpY2F0aW9uVmlld2VkJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vbGlzdEN1cnIgPSB0aGlzLl9ub3RpZmljYXRpb25zJC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRVbnJlYWRNb0xpc3QgPSBtb2xpc3RDdXJyLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYyxcbiAgICAgICAgICAgICAgICAgICAgVW5yZWFkOiB0YWdzLmluZGV4T2YoYy5UYWcpID4gLTEgPyBmYWxzZSA6IGMuVW5yZWFkXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMkLm5leHQoWy4uLnVwZGF0ZWRVbnJlYWRNb0xpc3RdKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluY3JlYXNlTm90aWZjYXRpb25Db3VudCgtdGFncy5sZW5ndGgsIDApO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YWdzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dTZXJ2aWNlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHVibGljIFNob3dOb3RpZmljYXRpb25SZWxhdGVkTW8oZTogeyB0YWc6IHN0cmluZzsgbW86IE1ldGFvYmplY3REYXRhTW9kZWw7IG5hbWE6IHN0cmluZyB9KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVlID0ge1xuICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgIGFmdGVyUmVhZHk6IChlMjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtlLnRhZ10sXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ0JhcnNhX1NldFJlYWRSYWRpZkNhcnRhYmxlQnlUYWcnLFxuICAgICAgICAgICAgICAgICAgICBGYWlsRm46IChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ1NlcnZpY2UuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLlNob3dGb3JtKGVlKTtcbiAgICB9XG4gICAgcHVibGljIGhhbmRsZVRvcGljKGV2ZW50VG9waWMsIGNvbnRlbnQsIG93bmVyS2V5KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudFRvcGljID09PSAnRGVsZXRlTm90aWZpY2F0aW9uTWVzc2FnZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgVGFncyB9OiB7IFRhZ3M6IHN0cmluZ1tdIH0gPSBjb250ZW50O1xuICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgICAgICAgICBjb25zdCB7IGZpbmRJbk5vdGlmaWNhdGlvbnMsIHVucmVhZENvdW50LCBjb3VudCB9ID0gdGhpcy5fZmluZE5vdGlmaWNhdGlvbnNNZXNzYWdlKFRhZ3MsIG5vdGlmaWNhdGlvbnMpO1xuICAgICAgICAgICAgaWYgKGZpbmRJbk5vdGlmaWNhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KG5vdGlmaWNhdGlvbnMuZmlsdGVyKChjKSA9PiAhVGFncy5pbmNsdWRlcyhjLlRhZykpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh1bnJlYWRDb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluY3JlYXNlTm90aWZjYXRpb25Db3VudCgtdW5yZWFkQ291bnQsIC1jb3VudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnRUb3BpYyA9PT0gJ1NldFJlYWROb3RpZmljYXRpb25NZXNzYWdlJykge1xuICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgICAgICAgICBjb25zdCB7IFRhZ3MgfTogeyBUYWdzOiBzdHJpbmdbXSB9ID0gY29udGVudDtcbiAgICAgICAgICAgIFRhZ3MuZm9yRWFjaCgodGFnKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmRJbmRleCA9IG5vdGlmaWNhdGlvbnMuZmluZEluZGV4KChjKSA9PiBjLlRhZyA9PT0gdGFnKTtcbiAgICAgICAgICAgICAgICBpZiAoZm91bmRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbnNbZm91bmRJbmRleF0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5ub3RpZmljYXRpb25zW2ZvdW5kSW5kZXhdLFxuICAgICAgICAgICAgICAgICAgICAgICAgVW5yZWFkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFVucmVhZCRDYXB0aW9uOiAn2YbYp9iv2LHYs9iqJ1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KFsuLi5ub3RpZmljYXRpb25zXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbnNDb3VudCA9IHRoaXMuX25vdGlmaWNhdGlvbkNvdW50JC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgdGhpcy5pbmNyZWFzZU5vdGlmY2F0aW9uQ291bnQoLVRhZ3MubGVuZ3RoLCBub3RpZmljYXRpb25zQ291bnQuYWxsKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIF9maW5kTm90aWZpY2F0aW9uc01lc3NhZ2UoXG4gICAgICAgIFRhZ3M6IHN0cmluZ1tdLFxuICAgICAgICBub3RpZmljYXRpb25zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW11cbiAgICApOiB7IGZpbmRJbk5vdGlmaWNhdGlvbnM6IGJvb2xlYW47IHVucmVhZENvdW50OiBudW1iZXI7IGNvdW50OiBudW1iZXIgfSB7XG4gICAgICAgIGxldCBmaW5kSW5Ob3RpZmljYXRpb25zID0gZmFsc2U7XG4gICAgICAgIGxldCB1bnJlYWRDb3VudCA9IDA7XG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIFRhZ3MuZm9yRWFjaCgodGFnKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZE5vdGlmaWNhdGlvbiA9IG5vdGlmaWNhdGlvbnMuZmluZCgoYykgPT4gYy5UYWcgPT09IHRhZyk7XG4gICAgICAgICAgICBpZiAoZm91bmROb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgICAgICBmaW5kSW5Ob3RpZmljYXRpb25zID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgIGlmIChmb3VuZE5vdGlmaWNhdGlvbi5VbnJlYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5yZWFkQ291bnQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyBmaW5kSW5Ob3RpZmljYXRpb25zLCB1bnJlYWRDb3VudCwgY291bnQgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkTm90aWZpY2F0aW9uKFxuICAgICAgICBtc2c6IHN0cmluZyxcbiAgICAgICAgdGl0bGU6IHN0cmluZyxcbiAgICAgICAgdHlwZTogc3RyaW5nLFxuICAgICAgICBpbWFnZTogc3RyaW5nLFxuICAgICAgICBtbyxcbiAgICAgICAgdWlPcHRpb25zOiBOb3RpZnlPcHRpb25zLFxuICAgICAgICBvdGhlck9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBpZiAob3RoZXJPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBNb0lkLCBUeXBlRGVmSWQgfSA9IG90aGVyT3B0aW9ucztcbiAgICAgICAgICAgICAgICBsZXQgbmV3Tm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25JdGVtID0ge1xuICAgICAgICAgICAgICAgICAgICAkQ2FwdGlvbjogdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIElkOiBNb0lkLFxuICAgICAgICAgICAgICAgICAgICAkVHlwZURlZklkOiBUeXBlRGVmSWQsXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlOiB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgVW5yZWFkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBJY29uOiBpbWFnZSxcbiAgICAgICAgICAgICAgICAgICAgSW1hZ2U6ICcnLFxuICAgICAgICAgICAgICAgICAgICBDb250ZW50OiBtc2csXG4gICAgICAgICAgICAgICAgICAgIFRhZzogJycsXG4gICAgICAgICAgICAgICAgICAgIFByaW9yaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICBTdWJqZWN0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgJFNhZmVDb250ZW50OiB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwobXNnKSxcbiAgICAgICAgICAgICAgICAgICAgQ3JlYXRpb25EYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICBDcmVhdGlvbkRhdGUkQ2FwdGlvbjogdGhpcy5fYmJiVHJhbnNsYXRlLnRyYW5zZm9ybSgnRGF0ZVJfVG9kYXknKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkTW8gPSBtbyA/IEJhcnNhQXBpLkV4dC5kZWNvZGUobW8pIDogbnVsbDtcbiAgICAgICAgICAgICAgICBuZXdOb3RpZmljYXRpb24gPSB0aGlzLl9wcmVwYXJlUHJvcGVydGllcyhuZXdOb3RpZmljYXRpb24sIHBhcnNlZE1vLCBtc2cpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlZE1vKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vbGlzdCA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMkLm5leHQoW25ld05vdGlmaWNhdGlvbiwgLi4ubW9saXN0XSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVhc2VOb3RpZmNhdGlvbkNvdW50KDEsIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNob3dOb3RpZmljYXRpb24obmV3Tm90aWZpY2F0aW9uLCBwYXJzZWRNbywgdWlPcHRpb25zLCBvdGhlck9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5jcmVhc2VOb3RpZmNhdGlvbkNvdW50KHVucmVhZDogbnVtYmVyLCBjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvdW50VmFsdWUgPSB0aGlzLl9ub3RpZmljYXRpb25Db3VudCQuZ2V0VmFsdWUoKTtcbiAgICAgICAgY29uc3Qgc3VtVW5yZWFkID0gY291bnRWYWx1ZS51bnJlYWQgKyArdW5yZWFkO1xuICAgICAgICBjb25zdCBzdW1BbGwgPSBjb3VudFZhbHVlLmFsbCArICtjb3VudDtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uQ291bnQkLm5leHQoeyB1bnJlYWQ6IHN1bVVucmVhZCA+IDAgPyBzdW1VbnJlYWQgOiAwLCBhbGw6IHN1bUFsbCA+IDAgPyBzdW1BbGwgOiAwIH0pO1xuICAgIH1cbiAgICBwdWJsaWMgbG9hZFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KCk6IHZvaWQge1xuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLlBvcnRhbElkXSxcbiAgICAgICAgICAgIE1ldGhvZDogJ0dldFNoZWxsYmFyTm90aWZpY2F0aW9uQ291bnRCeVBvcnRhbElkJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKGU6IHsgVW5yZWFkOiBudW1iZXI7IEFsbDogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVbnJlYWRBbmRDb3VudChlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmlhdGlvbkNvdW50TG9hZGVkJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dTZXJ2aWNlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHVibGljIGxvYWROb3RpZmljYXRpb25zKHBhZ2VJbmRleDogbnVtYmVyID0gMCk6IHZvaWQge1xuICAgICAgICBpZiAocGFnZUluZGV4ICsgMSA+IHRoaXMucGFnZUNvdW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25Mb2FkaW5nKHRydWUpO1xuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtwYWdlSW5kZXgsIEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuUG9ydGFsSWRdLFxuICAgICAgICAgICAgTWV0aG9kOiAnR2V0U2hlbGxiYXJOb3RpZmljYXRpb25zQnlQb3J0YWxJZCcsXG4gICAgICAgICAgICBTdWNjZXNzRm46IChlOiB7IFBhZ2VDb3VudDogbnVtYmVyOyBNb0xpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm90aWZMaXN0T2ZUYWdzID0gbm90aWZpY2F0aW9ucy5tYXAoKGMpID0+IGMuVGFnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtb2xpc3QgPSBlLk1vTGlzdC5maWx0ZXIoKGMpID0+IG5vdGlmTGlzdE9mVGFncy5pbmRleE9mKGMuVGFnKSA9PT0gLTEpLm1hcCgobW8pID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVQcm9wZXJ0aWVzKDxOb3RpZmljYXRpb25JdGVtPm1vLCBtbywgbW8uSU1lc3NhZ2U/LkNvbnRlbnQpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KFsuLi5ub3RpZmljYXRpb25zLCAuLi5tb2xpc3RdKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VDb3VudCA9ICtlLlBhZ2VDb3VudDtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IHBhZ2VJbmRleCArIDE7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25Mb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlTm90aWZpY2F0aW9uKG1vbGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBjbG9zZU5vdGlmaWNhdGlvbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9JZHMgPSB0aGlzLl9zZXROb3RpZmljYXRpb25Mb2FkaW5nKG1vbGlzdCwgdHJ1ZSk7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW21vSWRzLCBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLlBvcnRhbElkXSxcbiAgICAgICAgICAgIE1ldGhvZDogJ1JlbW92ZVNoZWxsYmFyTm90aWZpY2F0aW9uJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKGU6IHsgVW5yZWFkOiBudW1iZXI7IEFsbDogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub3RpZmljYXRpb25MaXN0ID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVbnJlYWRBbmRDb3VudChlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdNb0xpc3QgPSBub3RpZmljYXRpb25MaXN0LmZpbHRlcigoYykgPT4gbW9JZHMuaW5kZXhPZihjLklkKSA9PT0gLTEpO1xuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMkLm5leHQobmV3TW9MaXN0KTtcbiAgICAgICAgICAgICAgICBpZiAoY2xvc2VOb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VydmljZVdvcmtlck5vdGlmaWNhdGlvbi5jbG9zZU5vdGlmaWNhdGlvbnMobW9JZHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fbm90aWZpY2F0aW9uQ291bnQkLmdldFZhbHVlKCkuYWxsID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWROb3RpZmljYXRpb25zKHRoaXMucGFnZUluZGV4IC0gMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dTZXJ2aWNlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldE5vdGlmaWNhdGlvbkxvYWRpbmcobW9saXN0LCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIF91cGRhdGVVbnJlYWRBbmRDb3VudChlOiB7IFVucmVhZDogbnVtYmVyOyBBbGw6IG51bWJlciB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblVucmVhZENvdW50JC5uZXh0KCtlLlVucmVhZCk7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkNvdW50JC5uZXh0KHsgdW5yZWFkOiArZS5VbnJlYWQsIGFsbDogK2UuQWxsIH0pO1xuICAgIH1cblxuICAgIGdldCBTdXBwb3J0Tm90aWZpY2F0aW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBOb3RpZmljYXRpb24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuX3NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24uaXNFbmFibGVkO1xuICAgIH1cbiAgICBwdWJsaWMgc2hvd05vdGlmaWNhdGlvbihcbiAgICAgICAgbm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSxcbiAgICAgICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsLFxuICAgICAgICB1aU9wdGlvbnM6IE5vdGlmeU9wdGlvbnMsXG4gICAgICAgIG90aGVyT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PlxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAobm90aWZpY2F0aW9uSXRlbS5UaXRsZSAmJiBub3RpZmljYXRpb25JdGVtLlRpdGxlLnN0YXJ0c1dpdGgoJ1snKSAmJiBub3RpZmljYXRpb25JdGVtLlRpdGxlLmVuZHNXaXRoKCddJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm90aWZpY2F0aW9uSXRlbS5UaXRsZSAmJiBub3RpZmljYXRpb25JdGVtLlRpdGxlLnN0YXJ0c1dpdGgoJ3snKSAmJiBub3RpZmljYXRpb25JdGVtLlRpdGxlLmVuZHNXaXRoKCd9JykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobW8gJiYgIW1vLlNob3dQb3B1cCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5TdXBwb3J0Tm90aWZpY2F0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS53YXJuKGBJbkFwcCBOb3RpZmljYXRpb24gaXMgbm90IHN1cHBvcnRlZC5gKTtcbiAgICAgICAgICAgIHVpT3B0aW9ucyA9IHVpT3B0aW9ucyA/PyB7fTtcbiAgICAgICAgICAgIHVpT3B0aW9ucy5Ob3RpZmljYXRpb25JdGVtID0gbm90aWZpY2F0aW9uSXRlbTtcbiAgICAgICAgICAgIHRoaXMuX3BvcHVwTm90aWZ5KG5vdGlmaWNhdGlvbkl0ZW0sIG1vLCB1aU9wdGlvbnMsIG90aGVyT3B0aW9ucyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5BcHBOb3RpZnkobm90aWZpY2F0aW9uSXRlbSk7XG4gICAgfVxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uTG9hZGluZyhsb2FkaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkxvYWRpbmckLm5leHQobG9hZGluZyk7XG4gICAgfVxuICAgIHByaXZhdGUgX3NldE5vdGlmaWNhdGlvbkxvYWRpbmcobW9saXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10sIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBtb2xpc3RDdXJyID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgY29uc3QgbW9JZHMgPSBtb2xpc3QubWFwKChjKSA9PiBjLklkKTtcbiAgICAgICAgY29uc3QgbW9saXN0V2l0aExvYWRpbmdQcm9wZXJ0eSA9IG1vbGlzdEN1cnIubWFwKChjKSA9PiAoe1xuICAgICAgICAgICAgLi4uYyxcbiAgICAgICAgICAgICROb3RpZmljYXRvaW5Mb2FkaW5nOiBtb0lkcy5pbmRleE9mKGMuSWQpICE9PSAtMSA/IGxvYWRpbmcgOiBjLiROb3RpZmljYXRvaW5Mb2FkaW5nXG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9ucyQubmV4dChbLi4ubW9saXN0V2l0aExvYWRpbmdQcm9wZXJ0eV0pO1xuICAgICAgICByZXR1cm4gbW9JZHM7XG4gICAgfVxuICAgIHByaXZhdGUgX3BvcHVwTm90aWZ5KFxuICAgICAgICBub3RpZmljYXRpb25JdGVtOiBOb3RpZmljYXRpb25JdGVtLFxuICAgICAgICBtbzogTWV0YW9iamVjdERhdGFNb2RlbCB8IG51bGwsXG4gICAgICAgIHVpT3B0aW9uczogTm90aWZ5T3B0aW9ucyxcbiAgICAgICAgb3RoZXJPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcHVwU2VydmljZS5wb3B1cE5vdGlmeShcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0uJFNhZmVDb250ZW50LFxuICAgICAgICAgICAgbm90aWZpY2F0aW9uSXRlbS5UaXRsZSxcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0uU3ViamVjdCxcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0uSW1hZ2UsXG4gICAgICAgICAgICBtbyxcbiAgICAgICAgICAgIHVpT3B0aW9ucyxcbiAgICAgICAgICAgIG90aGVyT3B0aW9uc1xuICAgICAgICApO1xuICAgIH1cbiAgICBwcml2YXRlIF9wcmVwYXJlUHJvcGVydGllcyhcbiAgICAgICAgbm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSxcbiAgICAgICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgICAgIGNvbnRlbnQ6IHN0cmluZ1xuICAgICk6IE5vdGlmaWNhdGlvbkl0ZW0ge1xuICAgICAgICBpZiAoIW1vKSB7XG4gICAgICAgICAgICByZXR1cm4gbm90aWZpY2F0aW9uSXRlbTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ubm90aWZpY2F0aW9uSXRlbSxcbiAgICAgICAgICAgIC4uLm1vLFxuICAgICAgICAgICAgVWlBY3Rpb25zOiAhbW8uVWlBY3Rpb25zID8gW10gOiBKU09OLnBhcnNlKG1vLlVpQWN0aW9ucyksXG4gICAgICAgICAgICBDcmVhdGlvbkRhdGU6IG1vLklNZXNzYWdlLkNyZWF0aW9uRGF0ZSxcbiAgICAgICAgICAgIENyZWF0aW9uRGF0ZSRDYXB0aW9uOiBtby5JTWVzc2FnZS5DcmVhdGlvbkRhdGUkQ2FwdGlvbixcbiAgICAgICAgICAgIENyZWF0b3JVc2VyOiBtby5JTWVzc2FnZS5DcmVhdG9yVXNlcixcbiAgICAgICAgICAgIENyZWF0b3JVc2VyJENhcHRpb246IG1vLklNZXNzYWdlLkNyZWF0b3JVc2VyJENhcHRpb24sXG4gICAgICAgICAgICBJY29uOiBgJHtCYXJzYUFwaS5Cdy5PcmlnaW4oKX0ke25vdGlmaWNhdGlvbkl0ZW0uSWNvbn1gLFxuICAgICAgICAgICAgJFNhZmVDb250ZW50OiB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoY29udGVudClcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaW5BcHBOb3RpZnkobm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSk6IHZvaWQge1xuICAgICAgICBOb3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFuZyA9IEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuQ3VsdHVyZTtcbiAgICAgICAgICAgIGNvbnN0IGlzUnRsID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DdWx0dXJlc1J0bFtsYW5nXTtcblxuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gJ2dyYW50ZWQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VydmljZVdvcmtlck5vdGlmaWNhdGlvbi5zaG93Tm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uSXRlbSxcbiAgICAgICAgICAgICAgICAgICAgaXNSdGwsXG4gICAgICAgICAgICAgICAgICAgIGxhbmdcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzpwZXJtaXNzaW9uIGRlbmllZFxuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ1NlcnZpY2UuZXJyb3IoJ25vdGlmaWNhdGlvbiBwZXJtaXNzaW9uIGRlbmllZC4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgVXNlck5vdGlmaWNhdGlvblNldHRpbmcgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICBEaXNhYmxlQ2FydGFibGVHcm91cHM6IE1vRm9yUmVwb3J0TW9kZWw7XG4gICAgRW5hYmxlOiBib29sZWFuO1xufVxuIl19
|