@smarterplan/ngx-smarterplan-core 1.4.21 → 1.4.22
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/README.md +24 -24
- package/esm2022/lib/components/csv-export/csv-export.component.mjs +3 -3
- package/esm2022/lib/components/loader/loader.component.mjs +3 -3
- package/esm2022/lib/components/menu-bar/avatar/avatar.component.mjs +1 -1
- package/esm2022/lib/components/menu-bar/menu-bar.component.mjs +3 -3
- package/esm2022/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +3 -3
- package/esm2022/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +3 -3
- package/esm2022/lib/components/search-bar/search-bar.component.mjs +3 -3
- package/esm2022/lib/components/splat-viewer/splat-viewer.component.mjs +361 -0
- package/esm2022/lib/components/support-modal/support-modal.component.mjs +3 -3
- package/esm2022/lib/config.mjs +1 -1
- package/esm2022/lib/helpers.service.mjs +1 -1
- package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +1 -1
- package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +1 -1
- package/esm2022/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +1 -1
- package/esm2022/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +1 -1
- package/esm2022/lib/matterport-extensions/scene-component/SceneComponent.mjs +1 -1
- package/esm2022/lib/matterport-extensions/security-camera/SecurityCamera.mjs +22 -22
- package/esm2022/lib/matterport-extensions/tv-player/TvPlayer.mjs +1 -1
- package/esm2022/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +22 -22
- package/esm2022/lib/mattertagData.mjs +1 -1
- package/esm2022/lib/ngx-smarterplan-core.module.mjs +9 -4
- package/esm2022/lib/ngx-smarterplan-core.service.mjs +1 -1
- package/esm2022/lib/pipes/duration-to-string.pipe.mjs +1 -1
- package/esm2022/lib/pipes/format-date-number-to-digits.pipe.mjs +1 -1
- package/esm2022/lib/pipes/hashtag-from-id.pipe.mjs +1 -1
- package/esm2022/lib/pipes/safe-url.pipe.mjs +1 -1
- package/esm2022/lib/pipes/time-date-to-local-string.pipe.mjs +1 -1
- package/esm2022/lib/pipes/username-from-id.pipe.mjs +1 -1
- package/esm2022/lib/services/amplify-cache.service.mjs +1 -1
- package/esm2022/lib/services/base-tab.service.mjs +1 -1
- package/esm2022/lib/services/baseVisibility.service.mjs +1 -1
- package/esm2022/lib/services/content.service.mjs +1 -1
- package/esm2022/lib/services/filter.service.mjs +1 -1
- package/esm2022/lib/services/intervention.service.mjs +1 -1
- package/esm2022/lib/services/locale.service.mjs +1 -1
- package/esm2022/lib/services/matterport-import.service.mjs +1 -1
- package/esm2022/lib/services/matterport-measurement.service.mjs +1 -1
- package/esm2022/lib/services/matterport-navigation.service.mjs +1 -1
- package/esm2022/lib/services/matterport-pointer.service.mjs +6 -6
- package/esm2022/lib/services/matterport-tag-copy.service.mjs +1 -1
- package/esm2022/lib/services/matterport-tag.service.mjs +12 -7
- package/esm2022/lib/services/matterport.service.mjs +17 -17
- package/esm2022/lib/services/models/affectation.service.mjs +1 -1
- package/esm2022/lib/services/models/base-object.service.mjs +1 -1
- package/esm2022/lib/services/models/capture.service.mjs +1 -1
- package/esm2022/lib/services/models/comment.service.mjs +1 -1
- package/esm2022/lib/services/models/domain.service.mjs +1 -1
- package/esm2022/lib/services/models/equipment.service.mjs +1 -1
- package/esm2022/lib/services/models/event.service.mjs +1 -1
- package/esm2022/lib/services/models/feature.service.mjs +1 -1
- package/esm2022/lib/services/models/hashtag.service.mjs +1 -1
- package/esm2022/lib/services/models/layer.service.mjs +1 -1
- package/esm2022/lib/services/models/measurement.service.mjs +1 -1
- package/esm2022/lib/services/models/mission.service.mjs +1 -1
- package/esm2022/lib/services/models/navigation.service.mjs +1 -1
- package/esm2022/lib/services/models/node.service.mjs +1 -1
- package/esm2022/lib/services/models/object3D.service.mjs +1 -1
- package/esm2022/lib/services/models/operation.service.mjs +1 -1
- package/esm2022/lib/services/models/organisation.service.mjs +1 -1
- package/esm2022/lib/services/models/plan.service.mjs +1 -1
- package/esm2022/lib/services/models/poi.service.mjs +27 -27
- package/esm2022/lib/services/models/profile.service.mjs +1 -1
- package/esm2022/lib/services/models/property.service.mjs +1 -1
- package/esm2022/lib/services/models/space.service.mjs +1 -1
- package/esm2022/lib/services/models/template.service.mjs +1 -1
- package/esm2022/lib/services/models/ticket.service.mjs +1 -1
- package/esm2022/lib/services/models/visit.service.mjs +1 -1
- package/esm2022/lib/services/models/zone.service.mjs +1 -1
- package/esm2022/lib/services/navigator.service.mjs +1 -1
- package/esm2022/lib/services/obj-to-glb.mjs +649 -0
- package/esm2022/lib/services/s3.service.mjs +43 -3
- package/esm2022/lib/services/search.service.mjs +1 -1
- package/esm2022/lib/services/support.service.mjs +1 -1
- package/esm2022/lib/services/sweep-locator.service.mjs +1 -1
- package/esm2022/lib/services/tag.service.mjs +16 -16
- package/esm2022/lib/services/threejs-import.service.mjs +6 -4
- package/esm2022/lib/services/threejs.service.mjs +867 -95
- package/esm2022/lib/services/user.service.mjs +1 -1
- package/esm2022/lib/services/utils/matterport-transform.util.mjs +1 -1
- package/esm2022/lib/services/validators.service.mjs +1 -1
- package/esm2022/lib/services/viewer.service.mjs +189 -7
- package/esm2022/lib/services/zone-drawer.service.mjs +1 -1
- package/esm2022/lib/services/zoneChange.service.mjs +1 -1
- package/esm2022/lib/tokens/matterport-sdk-key.token.mjs +1 -1
- package/esm2022/lib/validators/email.directive.mjs +1 -1
- package/esm2022/lib/validators/no-empty.directive.mjs +1 -1
- package/esm2022/lib/validators/number.directive.mjs +1 -1
- package/esm2022/lib/validators/text.directive.mjs +1 -1
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +2239 -233
- package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/components/splat-viewer/splat-viewer.component.d.ts +98 -0
- package/lib/ngx-smarterplan-core.module.d.ts +7 -6
- package/lib/services/matterport-tag.service.d.ts +5 -5
- package/lib/services/obj-to-glb.d.ts +66 -0
- package/lib/services/s3.service.d.ts +7 -0
- package/lib/services/threejs.service.d.ts +336 -16
- package/lib/services/viewer.service.d.ts +110 -8
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/src/assets/viewers/splat/chunk-BYLI4YBI.js +17037 -0
- package/src/assets/viewers/splat/chunk-LDV6YPMG.js +1 -0
- package/src/assets/viewers/splat/chunk-WZ5Z4TU3.js +105719 -0
- package/src/assets/viewers/splat/convert-4DRLH77X.js +1 -0
- package/src/assets/viewers/splat/convert.html +11 -0
- package/src/assets/viewers/splat/converter-SLBB5MHG.js +1 -0
- package/src/assets/viewers/splat/index.html +90 -0
- package/src/assets/viewers/splat/spz-DEYRea_v-QE6YSGIB.js +5292 -0
- package/src/assets/viewers/splat/viewer-W4X3FWQJ.js +2704 -0
- package/src/assets/viewers/splat/viewer.css +1096 -0
- package/src/assets/viewers/splat/webp.wasm +0 -0
- package/src/assets/viewers/splat/worker.mjs +1383 -0
- package/src/assets/vs-app.json +67 -67
|
@@ -128,4 +128,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
128
128
|
type: Inject,
|
|
129
129
|
args: ['currentAPIService']
|
|
130
130
|
}] }, { type: i1.BaseUserService }, { type: i2.TranslateService }] });
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBUzlELE1BQU0sT0FBTyxZQUFZO0lBUVQ7SUFDQTtJQVBaLDRCQUE0QixHQUFHLEVBQUUsQ0FBQztJQUVsQyxHQUFHLENBQU07SUFFVCxZQUNpQyxXQUFnQixFQUNyQyxXQUE0QixFQUM1QixTQUEyQjtRQUQzQixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDbkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUM7SUFDM0IsQ0FBQztJQUVEOztTQUVLO0lBQ0wsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQVU7UUFDeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBZTtRQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxD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SyxDQUFDLGVBQWU7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxxQkFBcUIsQ0FDL0IsS0FBSyxDQUFDLGVBQWUsRUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FDakIsQ0FBQztRQUVOLElBQUksSUFBSSxDQUFDLFNBQVM7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RCxJQUFJLElBQUksQ0FBQyxTQUFTO1lBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUQsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7d0dBL0lRLFlBQVksa0JBT1QsbUJBQW1COzRHQVB0QixZQUFZLGNBRlQsTUFBTTs7NEZBRVQsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQVFRLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IGRhdGVUaW1lVG9Mb2NhbFN0cmluZyB9IGZyb20gXCIuLi8uLi9oZWxwZXJzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUHJvZmlsZUVudGl0eSB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gXCIuLi91c2VyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tIFwiLi4vLi4vdHlwZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXZlbnRTZXJ2aWNlIHtcclxuICAgIFxyXG4gICAgdHJhbnNsYXRpb25FdmVudFN1YmNyaXB0aW9ucyA9IHt9O1xyXG5cclxuICAgIEFQSTogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSwgXHJcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlICkge1xyXG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDUlVEIFxyXG4gICAgICogKi9cclxuICAgIGFzeW5jIGNyZWF0ZUV2ZW50KGlucHV0OiBFdmVudCk6IFByb21pc2U8RXZlbnQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZUV2ZW50KGlucHV0KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGVFdmVudChpbnB1dDogYW55KTogUHJvbWlzZTxFdmVudD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlRXZlbnQoaW5wdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlbGV0ZUV2ZW50KGV2ZW50SUQ6IHN0cmluZyk6IFByb21pc2U8RXZlbnQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZUV2ZW50KHtpZDogZXZlbnRJRH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEV2ZW50KGV2ZW50SUQ6IHN0cmluZyk6IFByb21pc2U8RXZlbnQ+e1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0RXZlbnQoZXZlbnRJRCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFxyXG4gICAgICogQ3VzdG9tIGdldCBieSBHU0kgXHJcbiAgICAgKiAqL1xyXG4gICAgYXN5bmMgZ2V0RXZlbnRzQnlUaWNrZXRJRCh0aWNrZXRJRDogc3RyaW5nKTogUHJvbWlzZTxFdmVudFtdPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5FdmVudHNCeVRpY2tldCh0aWNrZXRJRCkudGhlbigoZXZlbnRzKT0+IGV2ZW50cy5pdGVtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RXZlbnRzQnlUaWNrZXRJRFNvcnRlZEJ5RGF0ZURlc2ModGlja2V0SUQ6IHN0cmluZyk6IFByb21pc2U8RXZlbnRbXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRXZlbnRzQnlUaWNrZXRCeURhdGUoXHJcbiAgICAgICAgICAgIHRpY2tldElELFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBcIkRFU0NcIixcclxuICAgICAgICApLnRoZW4oKGV2ZW50cykgPT4gZXZlbnRzLml0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRFdmVudHNCeUdyb3VwKGdyb3VwOiBzdHJpbmcpOiBQcm9taXNlPEV2ZW50W10+IHtcclxuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5FdmVudHNCeUdyb3VwKGdyb3VwKSkuaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBcclxuICAgICAqIFNPUlRJTkdcclxuICAgICAqL1xyXG5cclxuICAgIHNvcnRFdmVudHNCeUNyZWF0ZWRBdERhdGVEZXNjKGV2ZW50czogRXZlbnRbXSk6IEV2ZW50W10ge1xyXG4gICAgICAgIGV2ZW50cy5zb3J0KChldmVudDEsIGV2ZW50MikgPT4ge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShldmVudDIuY3JlYXRlZEF0KSAtIG5ldyBEYXRlKGV2ZW50MS5jcmVhdGVkQXQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBldmVudHM7XHJcbiAgICB9XHJcblxyXG4gICAgc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZUFzYyhldmVudHM6IEV2ZW50W10pOiBFdmVudFtdIHtcclxuICAgICAgICBldmVudHMuc29ydCgoZXZlbnQxLCBldmVudDIpID0+IHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoZXZlbnQxLmNyZWF0ZWRBdCkgLSBuZXcgRGF0ZShldmVudDIuY3JlYXRlZEF0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZXZlbnRzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIFRSQU5TTEFUSU9OUyBcclxuICAgICAqICovXHJcbiAgICAvKiogQXBwbHkgYSB0cmFuc2xhdGlvbiB0byBhIHRpY2tldCBldmVudCwgd2l0aCB0aGUgY3VycmVudCBsYW5ndWFnZSAqL1xyXG4gICAgYXN5bmMgYXBwbHlUaWNrZXRFdmVudFRyYW5zbGF0ZShldmVudDogRXZlbnQpIHtcclxuICAgICAgICBjb25zdCBtZXRhID0gYXdhaXQgdGhpcy5nZXRUcmFuc2xhdGVkTWV0YUV2ZW50KGV2ZW50KTtcclxuICAgICAgICBjb25zdCBwYXRoID0gZXZlbnQudHJhbnNsYXRpb25QYXRoO1xyXG4gICAgICAgIGlmIChwYXRoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlUGF0aCA9IGAke3BhdGh9LnRpdGxlYDtcclxuICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRpb25QYXRoID0gYCR7cGF0aH0uZGVzY3JpcHRpb25gO1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgICBbdGl0bGVQYXRoLCBkZXNjcmlwdGlvblBhdGhdLFxyXG4gICAgICAgICAgICAgICAgbWV0YSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZXZlbnQudGl0bGUgPSB2YWx1ZVt0aXRsZVBhdGhdO1xyXG4gICAgICAgICAgICBldmVudC5kZXNjcmlwdGlvbiA9IHZhbHVlW2Rlc2NyaXB0aW9uUGF0aF07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBVbnN1YnNjcmliZSBhIHRpY2tldCBldmVudCBmb3IgaGlzIHRyYW5zbGF0aW9uICovXHJcbiAgICB0aWNrZXRFdmVudFN1YnNjcmliZVRyYW5zbGF0aW9uKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIGlmIChldmVudC5pZCBpbiB0aGlzLnRyYW5zbGF0aW9uRXZlbnRTdWJjcmlwdGlvbnMpIHtcclxuICAgICAgICAgICAgdGhpcy50aWNrZXRFdmVudFVuc3Vic2NyaWJlVHJhbnNsYXRpb24oZXZlbnQuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uRXZlbnRTdWJjcmlwdGlvbnNbZXZlbnQuaWRdID1cclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGx5VGlja2V0RXZlbnRUcmFuc2xhdGUoZXZlbnQpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFwcGx5VGlja2V0RXZlbnRUcmFuc2xhdGUoZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBVbnN1YnNjcmliZSBhIHRpY2tldCBldmVudCBmb3IgaGlzIHRyYW5zbGF0aW9uICovXHJcbiAgICB0aWNrZXRFdmVudFVuc3Vic2NyaWJlVHJhbnNsYXRpb24oaWQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmIChpZCBpbiB0aGlzLnRyYW5zbGF0aW9uRXZlbnRTdWJjcmlwdGlvbnMpIHtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbkV2ZW50U3ViY3JpcHRpb25zW2lkXS51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICBkZWxldGUgdGhpcy50cmFuc2xhdGlvbkV2ZW50U3ViY3JpcHRpb25zW2lkXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEdlbmVyYXRlIHRoZSB0cmFuc2xhdGVkIG1ldGFkYXRhIG9mIGFuIGV2ZW50LCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgKi9cclxuICAgIGFzeW5jIGdldFRyYW5zbGF0ZWRNZXRhRXZlbnQoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBsZXQgbWV0YTogYW55ID0ge307XHJcblxyXG4gICAgICAgIGNvbnN0IG93bmVyOiBQcm9maWxlRW50aXR5ID0gYXdhaXQgdGhpcy51c2VyU2VydmljZS51c2VyRnJvbVVzZXJJRChcclxuICAgICAgICAgICAgZXZlbnQub3duZXIudXNlcklELFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChldmVudC5tZXRhZGF0YSkgbWV0YSA9IEpTT04ucGFyc2UoZXZlbnQubWV0YWRhdGEpO1xyXG4gICAgICAgIH0gY2F0Y2gge31cclxuICAgICAgICBtZXRhLmZpcnN0TmFtZSA9IG93bmVyLmZpcnN0TmFtZTtcclxuICAgICAgICBtZXRhLmxhc3ROYW1lID0gb3duZXIubGFzdE5hbWU7XHJcblxyXG4gICAgICAgIGlmIChldmVudC5lc3RpbWF0ZVN0YXJ0RGF0ZSkge1xyXG4gICAgICAgICAgICBtZXRhLmZyb21EYXRlID0gZGF0ZVRpbWVUb0xvY2FsU3RyaW5nKFxyXG4gICAgICAgICAgICAgICAgZXZlbnQuZXN0aW1hdGVTdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2ZW50LmVzdGltYXRlRW5kRGF0ZSlcclxuICAgICAgICAgICAgbWV0YS50b0RhdGUgPSBkYXRlVGltZVRvTG9jYWxTdHJpbmcoXHJcbiAgICAgICAgICAgICAgICBldmVudC5lc3RpbWF0ZUVuZERhdGUsXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZSxcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKG1ldGEub2xkU3RhdHVzKVxyXG4gICAgICAgICAgICBtZXRhLm9sZFN0YXR1cyA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobWV0YS5vbGRTdGF0dXMpO1xyXG4gICAgICAgIGlmIChtZXRhLm5ld1N0YXR1cylcclxuICAgICAgICAgICAgbWV0YS5uZXdTdGF0dXMgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KG1ldGEubmV3U3RhdHVzKTtcclxuICAgICAgICBpZiAobWV0YS50eXBlKSBtZXRhLnR5cGUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KG1ldGEudHlwZSk7XHJcbiAgICAgICAgcmV0dXJuIG1ldGE7XHJcbiAgICB9XHJcbiAgIFxyXG59XHJcbiJdfQ==
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBUzlELE1BQU0sT0FBTyxZQUFZO0lBUVQ7SUFDQTtJQVBaLDRCQUE0QixHQUFHLEVBQUUsQ0FBQztJQUVsQyxHQUFHLENBQU07SUFFVCxZQUNpQyxXQUFnQixFQUNyQyxXQUE0QixFQUM1QixTQUEyQjtRQUQzQixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDbkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUM7SUFDM0IsQ0FBQztJQUVEOztTQUVLO0lBQ0wsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQVU7UUFDeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBZTtRQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxD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SyxDQUFDLGVBQWU7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxxQkFBcUIsQ0FDL0IsS0FBSyxDQUFDLGVBQWUsRUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FDakIsQ0FBQztRQUVOLElBQUksSUFBSSxDQUFDLFNBQVM7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RCxJQUFJLElBQUksQ0FBQyxTQUFTO1lBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUQsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7d0dBL0lRLFlBQVksa0JBT1QsbUJBQW1COzRHQVB0QixZQUFZLGNBRlQsTUFBTTs7NEZBRVQsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQVFRLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgZGF0ZVRpbWVUb0xvY2FsU3RyaW5nIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMuc2VydmljZVwiO1xuaW1wb3J0IHsgUHJvZmlsZUVudGl0eSB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tIFwiLi4vdXNlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBFdmVudCB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBFdmVudFNlcnZpY2Uge1xuICAgIFxuICAgIHRyYW5zbGF0aW9uRXZlbnRTdWJjcmlwdGlvbnMgPSB7fTtcblxuICAgIEFQSTogYW55O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSwgXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UgKSB7XG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ1JVRCBcbiAgICAgKiAqL1xuICAgIGFzeW5jIGNyZWF0ZUV2ZW50KGlucHV0OiBFdmVudCk6IFByb21pc2U8RXZlbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVFdmVudChpbnB1dCk7XG4gICAgfVxuXG4gICAgYXN5bmMgdXBkYXRlRXZlbnQoaW5wdXQ6IGFueSk6IFByb21pc2U8RXZlbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVFdmVudChpbnB1dCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZGVsZXRlRXZlbnQoZXZlbnRJRDogc3RyaW5nKTogUHJvbWlzZTxFdmVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZUV2ZW50KHtpZDogZXZlbnRJRH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGdldEV2ZW50KGV2ZW50SUQ6IHN0cmluZyk6IFByb21pc2U8RXZlbnQ+e1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldEV2ZW50KGV2ZW50SUQpO1xuICAgIH1cblxuICAgIC8qKiBcbiAgICAgKiBDdXN0b20gZ2V0IGJ5IEdTSSBcbiAgICAgKiAqL1xuICAgIGFzeW5jIGdldEV2ZW50c0J5VGlja2V0SUQodGlja2V0SUQ6IHN0cmluZyk6IFByb21pc2U8RXZlbnRbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkV2ZW50c0J5VGlja2V0KHRpY2tldElEKS50aGVuKChldmVudHMpPT4gZXZlbnRzLml0ZW1zKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRFdmVudHNCeVRpY2tldElEU29ydGVkQnlEYXRlRGVzYyh0aWNrZXRJRDogc3RyaW5nKTogUHJvbWlzZTxFdmVudFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRXZlbnRzQnlUaWNrZXRCeURhdGUoXG4gICAgICAgICAgICB0aWNrZXRJRCxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBcIkRFU0NcIixcbiAgICAgICAgKS50aGVuKChldmVudHMpID0+IGV2ZW50cy5pdGVtcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0RXZlbnRzQnlHcm91cChncm91cDogc3RyaW5nKTogUHJvbWlzZTxFdmVudFtdPiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkV2ZW50c0J5R3JvdXAoZ3JvdXApKS5pdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBcbiAgICAgKiBTT1JUSU5HXG4gICAgICovXG5cbiAgICBzb3J0RXZlbnRzQnlDcmVhdGVkQXREYXRlRGVzYyhldmVudHM6IEV2ZW50W10pOiBFdmVudFtdIHtcbiAgICAgICAgZXZlbnRzLnNvcnQoKGV2ZW50MSwgZXZlbnQyKSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoZXZlbnQyLmNyZWF0ZWRBdCkgLSBuZXcgRGF0ZShldmVudDEuY3JlYXRlZEF0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBldmVudHM7XG4gICAgfVxuXG4gICAgc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZUFzYyhldmVudHM6IEV2ZW50W10pOiBFdmVudFtdIHtcbiAgICAgICAgZXZlbnRzLnNvcnQoKGV2ZW50MSwgZXZlbnQyKSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoZXZlbnQxLmNyZWF0ZWRBdCkgLSBuZXcgRGF0ZShldmVudDIuY3JlYXRlZEF0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBldmVudHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFRSQU5TTEFUSU9OUyBcbiAgICAgKiAqL1xuICAgIC8qKiBBcHBseSBhIHRyYW5zbGF0aW9uIHRvIGEgdGlja2V0IGV2ZW50LCB3aXRoIHRoZSBjdXJyZW50IGxhbmd1YWdlICovXG4gICAgYXN5bmMgYXBwbHlUaWNrZXRFdmVudFRyYW5zbGF0ZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgbWV0YSA9IGF3YWl0IHRoaXMuZ2V0VHJhbnNsYXRlZE1ldGFFdmVudChldmVudCk7XG4gICAgICAgIGNvbnN0IHBhdGggPSBldmVudC50cmFuc2xhdGlvblBhdGg7XG4gICAgICAgIGlmIChwYXRoKSB7XG4gICAgICAgICAgICBjb25zdCB0aXRsZVBhdGggPSBgJHtwYXRofS50aXRsZWA7XG4gICAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvblBhdGggPSBgJHtwYXRofS5kZXNjcmlwdGlvbmA7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgW3RpdGxlUGF0aCwgZGVzY3JpcHRpb25QYXRoXSxcbiAgICAgICAgICAgICAgICBtZXRhLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGV2ZW50LnRpdGxlID0gdmFsdWVbdGl0bGVQYXRoXTtcbiAgICAgICAgICAgIGV2ZW50LmRlc2NyaXB0aW9uID0gdmFsdWVbZGVzY3JpcHRpb25QYXRoXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBVbnN1YnNjcmliZSBhIHRpY2tldCBldmVudCBmb3IgaGlzIHRyYW5zbGF0aW9uICovXG4gICAgdGlja2V0RXZlbnRTdWJzY3JpYmVUcmFuc2xhdGlvbihldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmlkIGluIHRoaXMudHJhbnNsYXRpb25FdmVudFN1YmNyaXB0aW9ucykge1xuICAgICAgICAgICAgdGhpcy50aWNrZXRFdmVudFVuc3Vic2NyaWJlVHJhbnNsYXRpb24oZXZlbnQuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25FdmVudFN1YmNyaXB0aW9uc1tldmVudC5pZF0gPVxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBseVRpY2tldEV2ZW50VHJhbnNsYXRlKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFwcGx5VGlja2V0RXZlbnRUcmFuc2xhdGUoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKiBVbnN1YnNjcmliZSBhIHRpY2tldCBldmVudCBmb3IgaGlzIHRyYW5zbGF0aW9uICovXG4gICAgdGlja2V0RXZlbnRVbnN1YnNjcmliZVRyYW5zbGF0aW9uKGlkOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGlkIGluIHRoaXMudHJhbnNsYXRpb25FdmVudFN1YmNyaXB0aW9ucykge1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbkV2ZW50U3ViY3JpcHRpb25zW2lkXS51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMudHJhbnNsYXRpb25FdmVudFN1YmNyaXB0aW9uc1tpZF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogR2VuZXJhdGUgdGhlIHRyYW5zbGF0ZWQgbWV0YWRhdGEgb2YgYW4gZXZlbnQsIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBsYW5ndWFnZSAqL1xuICAgIGFzeW5jIGdldFRyYW5zbGF0ZWRNZXRhRXZlbnQoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgbGV0IG1ldGE6IGFueSA9IHt9O1xuXG4gICAgICAgIGNvbnN0IG93bmVyOiBQcm9maWxlRW50aXR5ID0gYXdhaXQgdGhpcy51c2VyU2VydmljZS51c2VyRnJvbVVzZXJJRChcbiAgICAgICAgICAgIGV2ZW50Lm93bmVyLnVzZXJJRCxcbiAgICAgICAgKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGV2ZW50Lm1ldGFkYXRhKSBtZXRhID0gSlNPTi5wYXJzZShldmVudC5tZXRhZGF0YSk7XG4gICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgbWV0YS5maXJzdE5hbWUgPSBvd25lci5maXJzdE5hbWU7XG4gICAgICAgIG1ldGEubGFzdE5hbWUgPSBvd25lci5sYXN0TmFtZTtcblxuICAgICAgICBpZiAoZXZlbnQuZXN0aW1hdGVTdGFydERhdGUpIHtcbiAgICAgICAgICAgIG1ldGEuZnJvbURhdGUgPSBkYXRlVGltZVRvTG9jYWxTdHJpbmcoXG4gICAgICAgICAgICAgICAgZXZlbnQuZXN0aW1hdGVTdGFydERhdGUsXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5lc3RpbWF0ZUVuZERhdGUpXG4gICAgICAgICAgICBtZXRhLnRvRGF0ZSA9IGRhdGVUaW1lVG9Mb2NhbFN0cmluZyhcbiAgICAgICAgICAgICAgICBldmVudC5lc3RpbWF0ZUVuZERhdGUsXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIGlmIChtZXRhLm9sZFN0YXR1cylcbiAgICAgICAgICAgIG1ldGEub2xkU3RhdHVzID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChtZXRhLm9sZFN0YXR1cyk7XG4gICAgICAgIGlmIChtZXRhLm5ld1N0YXR1cylcbiAgICAgICAgICAgIG1ldGEubmV3U3RhdHVzID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChtZXRhLm5ld1N0YXR1cyk7XG4gICAgICAgIGlmIChtZXRhLnR5cGUpIG1ldGEudHlwZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobWV0YS50eXBlKTtcbiAgICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfVxuICAgXG59XG4iXX0=
|
|
@@ -419,4 +419,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
419
419
|
type: Inject,
|
|
420
420
|
args: ['currentAPIService']
|
|
421
421
|
}] }, { type: i1.NavigatorService }, { type: i2.FilterService }, { type: i3.PoiService }, { type: i4.CommentService }, { type: i5.BaseUserService }, { type: i6.NavigationService }, { type: i7.VisitService }, { type: i8.HashtagService }, { type: i9.ZoneChangeService }] });
|
|
422
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvZmVhdHVyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFvQixXQUFXLEVBQUUsV0FBVyxFQUFPLE9BQU8sRUFBc0IsTUFBTSxxQkFBcUIsQ0FBQztBQUluSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFXMUQsTUFBTSxPQUFPLGNBQWUsU0FBUSxpQkFBaUI7SUF5Q3JDO0lBQ0E7SUFFQTtJQUNBO0lBR0E7SUFDQTtJQWhEWixHQUFHLENBQU0sQ0FBQyxLQUFLO0lBRWYsY0FBYyxHQUdULElBQUksT0FBTyxFQUFFLENBQUM7SUFFbkIsZUFBZSxHQUEyQztRQUN0RCxLQUFLLEVBQUUsRUFBRTtRQUNULElBQUksRUFBRSxFQUFFO0tBQ1gsQ0FBQztJQUVGLFdBQVcsR0FBK0IsSUFBSSxlQUFlLENBQVksSUFBSSxDQUFDLENBQUM7SUFFL0UsZUFBZSxHQUFjLEVBQUUsQ0FBQztJQUVoQyxVQUFVLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFN0MsWUFBWSxDQUFTO0lBRXJCLGNBQWMsQ0FBUztJQUV2QixRQUFRLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFM0MsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUVuQixtQkFBbUIsR0FBYSxJQUFJLENBQUM7SUFFckMsZ0JBQWdCLEdBQWEsSUFBSSxDQUFDO0lBRWxDLG1CQUFtQixH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LENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLO1lBQ2pDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUk7U0FDbEMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CO0lBQzNCLENBQUM7d0dBcGdCUSxjQUFjLGtCQXdDWCxtQkFBbUI7NEdBeEN0QixjQUFjLGNBRlgsTUFBTTs7NEZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQXlDUSxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cclxuLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBNYXR0ZXJ0YWdEYXRhIH0gZnJvbSBcIi4uLy4uL21hdHRlcnRhZ0RhdGFcIjtcclxuaW1wb3J0IHsgRmVhdHVyZSwgSGFzaHRhZywgRmVhdHVyZVR5cGUsIENvbW1lbnRUeXBlLCBQT0ksIFBvaVR5cGUsIEV2ZW50LCBMZXZlbFN0YXR1cyB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tIFwiLi4vZmlsdGVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gXCIuLi9uYXZpZ2F0b3Iuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tIFwiLi4vdXNlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJhc2VPYmplY3RTZXJ2aWNlIH0gZnJvbSBcIi4vYmFzZS1vYmplY3Quc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb21tZW50U2VydmljZSB9IGZyb20gXCIuL2NvbW1lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIYXNodGFnU2VydmljZSB9IGZyb20gXCIuL2hhc2h0YWcuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gXCIuL25hdmlnYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQb2lTZXJ2aWNlIH0gZnJvbSBcIi4vcG9pLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVmlzaXRTZXJ2aWNlIH0gZnJvbSBcIi4vdmlzaXQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBab25lQ2hhbmdlU2VydmljZSB9IGZyb20gXCIuLi96b25lQ2hhbmdlLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmVhdHVyZVNlcnZpY2UgZXh0ZW5kcyBCYXNlT2JqZWN0U2VydmljZSB7XHJcbiAgICBBUEk6IGFueTsgLy9BV1NcclxuXHJcbiAgICBmZWF0dXJlVXBkYXRlZDogU3ViamVjdDx7XHJcbiAgICAgICAgc3BhY2U6IEZlYXR1cmVbXTtcclxuICAgICAgICB6b25lOiBGZWF0dXJlW107XHJcbiAgICB9PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgY3VycmVudEZlYXR1cmVzOiB7IHNwYWNlOiBGZWF0dXJlW107IHpvbmU6IEZlYXR1cmVbXTsgfSA9IHtcclxuICAgICAgICBzcGFjZTogW10sXHJcbiAgICAgICAgem9uZTogW10sXHJcbiAgICB9O1xyXG5cclxuICAgIGZlYXR1cmVUYWdzOiBCZWhhdmlvclN1YmplY3Q8RmVhdHVyZVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmVhdHVyZVtdPihudWxsKTtcclxuXHJcbiAgICBmZWF0dXJlRmlsdGVyZWQ6IEZlYXR1cmVbXSA9IFtdO1xyXG5cclxuICAgIHVwZGF0ZURvbmU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIHpvbmVJREZpbHRlcjogc3RyaW5nO1xyXG5cclxuICAgIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmc7XHJcblxyXG4gICAgdXBkYXRpbmc6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGlzVXBkYXRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBmZWF0dXJlRG9tYWluRmlsdGVyOiBzdHJpbmdbXSA9IG51bGw7XHJcblxyXG4gICAgZGVza0RvbWFpbkZpbHRlcjogc3RyaW5nW10gPSBudWxsO1xyXG5cclxuICAgIGRlc2tCb29raW5nc1VwZGF0ZWQ6IFN1YmplY3Q8RXZlbnRbXT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIHB1YmxpYyBjdXJyZW50SGFzaHRhZ3M6IEhhc2h0YWdbXSA9IFtdO1xyXG5cclxuICAgIGNyZWF0ZU9ic2VydmFibGU6IFN1YmplY3Q8RmVhdHVyZT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGRlbGV0ZU9ic2VydmFibGU6IFN1YmplY3Q8RmVhdHVyZT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSxcclxuICAgICAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcclxuICAgICAgICB2aXNpdFNlcnZpY2U6IFZpc2l0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGhhc2h0YWdTZXJ2aWNlOiBIYXNodGFnU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKHBvaVNlcnZpY2UsIG5hdmlnYXRpb25TZXJ2aWNlLCB2aXNpdFNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XHJcbiAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5zdWJzY3JpYmUoKGxpc3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMgPSBsaXN0O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZS5zdWJzY3JpYmUoKHpvbmUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRDtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZlYXR1cmVUYWdzLm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZlYXR1cmVVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IG51bGwgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IG51bGw7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoem9uZS5pZCAhPT0gdGhpcy56b25lSURGaWx0ZXIgJiYgIXRoaXMudXNlclNlcnZpY2UuaXNNdXNldW1Vc2VyKHRoaXMuY3VycmVudFNwYWNlSUQpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IHpvbmUuaWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRGZWF0dXJlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gVGhlIFRocmVlLmpzIHZpZXdlciBzaG93cyBhIHdob2xlIHNwYWNlIGF0IG9uY2UsIHdpdGggbm8gem9uZSB0byBuYXZpZ2F0ZSBpbnRvLCBzbyBpdFxyXG4gICAgICAgIC8vIGFubm91bmNlcyBpdHNlbGYgaGVyZSBpbnN0ZWFkIG9mIHRocm91Z2ggYHpvbmVDaGFuZ2VgLlxyXG4gICAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuc3BhY2VXaXRob3V0Wm9uZXMuc3Vic2NyaWJlKChzcGFjZUlEKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSBzcGFjZUlEO1xyXG4gICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmICghc3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlVGFncy5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHsgc3BhY2U6IFtdLCB6b25lOiBudWxsIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLnVzZXJTZXJ2aWNlLmlzTXVzZXVtVXNlcihzcGFjZUlEKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RmVhdHVyZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRG9uZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RmVhdHVyZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRlbGV0ZU9ic2VydmFibGUuc3Vic2NyaWJlKChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUR1ZVRvRGVsZXRlKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuY3JlYXRlT2JzZXJ2YWJsZS5zdWJzY3JpYmUoKGZlYXR1cmUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRHVlVG9DcmVhdGUoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgKiBDUlVEXHJcbiAgICAqL1xyXG4gICAgYXN5bmMgY3JlYXRlRmVhdHVyZShmZWF0dXJlOiBGZWF0dXJlKTogUHJvbWlzZTxGZWF0dXJlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVGZWF0dXJlKGZlYXR1cmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlbGV0ZUZlYXR1cmUoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8RmVhdHVyZT4ge1xyXG4gICAgICAgIGNvbnN0IGRlbGV0ZWQgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlRmVhdHVyZSh7IGlkOiBmZWF0dXJlLmlkIH0pO1xyXG4gICAgICAgIGlmIChkZWxldGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5nZXRQb2lCeUVsZW1lbnRJZChmZWF0dXJlLmlkKTtcclxuICAgICAgICAgICAgaWYgKHBvaSkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmRlbGV0ZVBvaShwb2kuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGRlbGV0ZSBjb21tZW50c1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgZGVsZXRlZC5jb21tZW50cy5pdGVtcykge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVDb21tZW50KGNvbW1lbnQuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkZWxldGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUZlYXR1cmUoZmVhdHVyZTogYW55KTogUHJvbWlzZTxGZWF0dXJlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVGZWF0dXJlKGZlYXR1cmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEZlYXR1cmUoaWQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZT4ge1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmUgPSAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkdldEZlYXR1cmUoaWQpKSBhcyBGZWF0dXJlO1xyXG4gICAgICAgIGZlYXR1cmUuZXZlbnRzPy5pdGVtcy5zb3J0KChhLCBiKSA9PiBiLnJlYWxTdGFydERhdGUgLSBhLnJlYWxTdGFydERhdGUpO1xyXG4gICAgICAgIHRoaXMuc2V0Q292ZXJJbWFnZShmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEltYWdlcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldFZpZGVvcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldERvY3VtZW50cyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEF1ZGlvKGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuc2V0RXh0ZXJuYWxMaW5rcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEVtYmVkcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldElmcmFtZXMoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5pc0Jvb2tpbmdQbGFjZShmZWF0dXJlKTtcclxuICAgICAgICByZXR1cm4gZmVhdHVyZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgYXN5bmMgaW5pdEZlYXR1cmVzKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRpbmcubmV4dCh0cnVlKTtcclxuICAgICAgICB0aGlzLmlzVXBkYXRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmVMaXN0ID0gYXdhaXQgdGhpcy5nZXRGZWF0dXJlc0ZvclNwYWNlKHRoaXMuY3VycmVudFNwYWNlSUQpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEhhc2h0YWdzID0gYXdhaXQgdGhpcy5oYXNodGFnU2VydmljZS5nZXRIYXNodGFnc0ZvclNwYWNlKFxyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlELFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50SGFzaHRhZ3MpO1xyXG4gICAgICAgIGlmIChmZWF0dXJlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXJlZEZlYXR1cmVzID0gWy4uLmZlYXR1cmVMaXN0XTtcclxuICAgICAgICAgICAgbGV0IGZpbHRlcmVkUG9pbnRJbnRlcmVzdCA9IGZpbHRlcmVkRmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+IGZlYXR1cmUudHlwZSAhPT0gRmVhdHVyZVR5cGUuREVTSyxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgbGV0IGZpbHRlcmVkRGVza3MgPSBmaWx0ZXJlZEZlYXR1cmVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PiBmZWF0dXJlLnR5cGUgPT09IEZlYXR1cmVUeXBlLkRFU0ssXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVEb21haW5GaWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkUG9pbnRJbnRlcmVzdCA9IGZpbHRlcmVkUG9pbnRJbnRlcmVzdC5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZURvbWFpbkZpbHRlci5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvbWFpbikgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLmRvbWFpbiAmJiBkb21haW4gPT09IGZlYXR1cmUuZG9tYWluLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5kZXNrRG9tYWluRmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZERlc2tzID0gZmlsdGVyZWREZXNrcy5maWx0ZXIoKGZlYXR1cmUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXNrRG9tYWluRmlsdGVyLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkb21haW4pID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLmRvbWFpbiAmJiBkb21haW4gPT09IGZlYXR1cmUuZG9tYWluLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbHRlcmVkRmVhdHVyZXMgPSBbLi4uZmlsdGVyZWRQb2ludEludGVyZXN0LCAuLi5maWx0ZXJlZERlc2tzXTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UgPSBmaWx0ZXJlZEZlYXR1cmVzLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIGVtaXQgb24gdGFncyBzaG91bGQgYmUgYWZ0ZXIgc2V0dGluZyBjdXJyZW50LnNwYWNlICEhXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyZWRGZWF0dXJlcyA9XHJcbiAgICAgICAgICAgICAgICAgICAgKGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJPYmplY3RzRm9yWm9uZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRGZWF0dXJlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgKSkgYXMgRmVhdHVyZVtdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVUYWdzLm5leHQoZmlsdGVyZWRGZWF0dXJlcyk7IC8vIGZvciB0aGlzIHpvbmVcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUgPSBmaWx0ZXJlZEZlYXR1cmVzLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY3VycmVudEZlYXR1cmVzKTtcclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudEZlYXR1cmVzKTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogW10gfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGluZy5uZXh0KGZhbHNlKTtcclxuICAgICAgICB0aGlzLmlzVXBkYXRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRGZWF0dXJlc0ZvclNwYWNlKFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICAgICBrZWVwQXJjaGl2ZWQ6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgICk6IFByb21pc2U8RmVhdHVyZVtdPiB7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRmVhdHVyZXNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgZmVhdHVyZXNGb3JVc2VyID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckZlYXR1cmVzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIGlmICgha2VlcEFyY2hpdmVkKSB7XHJcbiAgICAgICAgICAgIGZlYXR1cmVzRm9yVXNlciA9IGZlYXR1cmVzRm9yVXNlci5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZmVhdHVyZSkgPT4gIXRoaXMuaXNBcmNoaXZlZChmZWF0dXJlKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzRm9yVXNlcikge1xyXG4gICAgICAgICAgICB0aGlzLnNldENvdmVySW1hZ2UoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNCb29raW5nUGxhY2UoZmVhdHVyZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmZWF0dXJlc0ZvclVzZXI7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RmVhdHVyZXNCeVNwYWNlV2l0aG91dEZpbHRlcmluZyhzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xyXG4gICAgICAgIGxldCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2Uoc3BhY2VJRCkudGhlbihcclxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZlYXR1cmVzID0gZmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZmVhdHVyZSkgPT4gIXRoaXMuaXNBcmNoaXZlZChmZWF0dXJlKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBmZWF0dXJlcykge1xyXG4gICAgICAgICAgICB0aGlzLnNldENvdmVySW1hZ2UoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNCb29raW5nUGxhY2UoZmVhdHVyZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmZWF0dXJlcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgRVZFUlkgZmVhdHVyZSBvZiBhIHNwYWNlLCBmb2xsb3dpbmcgYG5leHRUb2tlbmAgdW50aWwgdGhlIGluZGV4IGlzXHJcbiAgICAgKiBleGhhdXN0ZWQsIHdpdGggbm8gdXNlci9hcmNoaXZlIGZpbHRlcmluZyBhdCBhbGwuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGdldEFsbEZlYXR1cmVzQnlTcGFjZVJhdyhzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xyXG4gICAgICAgIGlmICghc3BhY2VJRCkge1xyXG4gICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGFsbDogRmVhdHVyZVtdID0gW107XHJcbiAgICAgICAgbGV0IG5leHRUb2tlbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgIGRvIHtcclxuICAgICAgICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2UoXHJcbiAgICAgICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgMTAwMCxcclxuICAgICAgICAgICAgICAgIG5leHRUb2tlbixcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2U/Lml0ZW1zPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBhbGwucHVzaCguLi5wYWdlLml0ZW1zLmZpbHRlcigoaXRlbTogRmVhdHVyZSB8IG51bGwpID0+ICEhaXRlbSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG5leHRUb2tlbiA9IHBhZ2U/Lm5leHRUb2tlbiA/PyBudWxsO1xyXG4gICAgICAgIH0gd2hpbGUgKG5leHRUb2tlbik7XHJcblxyXG4gICAgICAgIHJldHVybiBhbGw7XHJcbiAgICB9XHJcblxyXG4gICAgaXNCb29raW5nUGxhY2UoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGZlYXR1cmUuaXNCb29raW5nUGxhY2UgPSBmZWF0dXJlLnR5cGUgPT09IEZlYXR1cmVUeXBlLkRFU0s7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHNldENvdmVySW1hZ2UoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGNvdmVySW1hZ2UgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLmZpbmQoXHJcbiAgICAgICAgICAgIChjb20pID0+IGNvbS5pc0NvdmVySW1hZ2UsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoY292ZXJJbWFnZSkge1xyXG4gICAgICAgICAgICBmZWF0dXJlLmNvdmVySW1hZ2VVcmwgPSBjb3ZlckltYWdlLmFubmV4ZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmVhdHVyZS5jb21tZW50cy5pdGVtcy5zb21lKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5ZT1VUVUJFKSkge1xyXG4gICAgICAgICAgICBjb25zdCB5b3V0dWJlQ29tbWVudCA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXMuZmluZCgoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuWU9VVFVCRSk7XHJcbiAgICAgICAgICAgIC8vIHdlIGNhbiB1c2UgdGhlIHByZXZpZXcgaW1hZ2Ugb2YgeW91dHViZVxyXG4gICAgICAgICAgICBmZWF0dXJlLmNvdmVySW1hZ2VVcmwgPSBgaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvJHt5b3V0dWJlQ29tbWVudC5leHRlcm5hbExpbmt9LzAuanBnYDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGZlYXR1cmUuY29tbWVudHMuaXRlbXMuc29tZSgoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuSU1BR0UpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGltYWdlQ29tbWVudCA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXMuZmluZChcclxuICAgICAgICAgICAgICAgIChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5JTUFHRSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZmVhdHVyZS5jb3ZlckltYWdlVXJsID0gaW1hZ2VDb21tZW50LmFubmV4ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUZlYXR1cmVMb2NhdGlvbihcclxuICAgICAgICBmZWF0dXJlOiBGZWF0dXJlLFxyXG4gICAgICAgIHRhZ0RhdGE6IE1hdHRlcnRhZ0RhdGEsXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxQT0k+IHtcclxuICAgICAgICBjb25zdCBwb2lJbnB1dCA9IHtcclxuICAgICAgICAgICAgY29vcmRpbmF0ZTogdGFnRGF0YS5nZXRDb29yZGluYXRlU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHR5cGU6IGZlYXR1cmUuaXNCb29raW5nUGxhY2UgPyBQb2lUeXBlLkRFU0sgOiBQb2lUeXBlLkRBVEEsXHJcbiAgICAgICAgICAgIGVsZW1lbnRJRDogZmVhdHVyZS5pZCxcclxuICAgICAgICAgICAgbWV0YWRhdGE6IHRhZ0RhdGEuZ2V0TWV0YWRhdGFTdHJpbmcoKSxcclxuICAgICAgICAgICAgbWF0dGVycG9ydFN3ZWVwSUQ6IHRhZ0RhdGEuZ2V0U3dlZXBJRCgpLFxyXG4gICAgICAgIH0gYXMgUE9JO1xyXG4gICAgICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5jcmVhdGVQT0lGb3JTcGFjZUlEKHBvaUlucHV0KTtcclxuICAgICAgICByZXR1cm4gcG9pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEltYWdlcyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgaW1hZ2VzQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLklNQUdFKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGltYWdlcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgaW1hZ2Ugb2YgaW1hZ2VzQ29tbWVudHMpIHtcclxuICAgICAgICAgICAgaW1hZ2VzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogaW1hZ2UuYW5uZXhlLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGltYWdlLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltYWdlLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgc2hvd0luVGFnOiBpbWFnZS5zaG93bkluVGFnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS5pbWFnZXMgPSBpbWFnZXM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VmlkZW9zKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCB2aWRlb3NDb21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuVklERU8gfHwgY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLllPVVRVQkUpXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgdmlkZW9zID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCB2aWRlbyBvZiB2aWRlb3NDb21tZW50cykge1xyXG4gICAgICAgICAgICB2aWRlb3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiB2aWRlby50eXBlID09PSBDb21tZW50VHlwZS5ZT1VUVUJFID8gJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLycgKyB2aWRlby5leHRlcm5hbExpbmsgOiB2aWRlby5hbm5leGUsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogdmlkZW8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdmlkZW8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICB0eXBlOiB2aWRlby50eXBlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS52aWRlb3MgPSB2aWRlb3M7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RG9jdW1lbnRzKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBkb2N1bWVudENvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5ET0NVTUVOVClcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCBkb2NzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBkb2N1bWVudCBvZiBkb2N1bWVudENvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGRvY3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBkb2N1bWVudC5hbm5leGUsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogZG9jdW1lbnQudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZG9jdW1lbnQuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmRvY3VtZW50cyA9IGRvY3M7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QXVkaW8oZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGF1ZGlvQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLkFVRElPKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGF1ZGlvcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgYXVkaW8gb2YgYXVkaW9Db21tZW50cykge1xyXG4gICAgICAgICAgICBhdWRpb3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBhdWRpby5hbm5leGUsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogYXVkaW8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogYXVkaW8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmF1ZGlvcyA9IGF1ZGlvcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRFeHRlcm5hbExpbmtzKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBsaW5rc0NvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5VUkwpXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgZXh0ZXJuYWxMaW5rcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rc0NvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGV4dGVybmFsTGlua3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBsaW5rLmV4dGVybmFsTGluayxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBsaW5rLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGxpbmsuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICBzaG93SW5UYWc6IGxpbmsuc2hvd25JblRhZyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmUuZXh0ZXJuYWxMaW5rcyA9IGV4dGVybmFsTGlua3M7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RW1iZWRzKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBlbWJlZENvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5FTUJFRClcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCBlbWJlZHMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGVtYmVkIG9mIGVtYmVkQ29tbWVudHMpIHtcclxuICAgICAgICAgICAgZW1iZWRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogZW1iZWQuZXh0ZXJuYWxMaW5rLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGVtYmVkLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGVtYmVkLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgc2hvd0luVGFnOiBlbWJlZC5zaG93bkluVGFnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS5lbWJlZHMgPSBlbWJlZHM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SWZyYW1lcyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgaWZyYW1lQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLklGUkFNRSlcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCBpZnJhbWVzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBpZnJhbWUgb2YgaWZyYW1lQ29tbWVudHMpIHtcclxuICAgICAgICAgICAgaWZyYW1lcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhdGg6IGlmcmFtZS5leHRlcm5hbExpbmssXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogaWZyYW1lLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGlmcmFtZS5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgIHNob3dJblRhZzogaWZyYW1lLnNob3duSW5UYWcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmlmcmFtZXMgPSBpZnJhbWVzO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBhc3luYyBnZXRGaXJzdEZlYXR1cmVGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmU+IHtcclxuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuZ2V0RmVhdHVyZXNGb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBjb25zdCBmaXJzdCA9IGZlYXR1cmVzLmZpbmQoKGZlYXQpID0+IGZlYXQuaW5kZXggPT09IDEpO1xyXG4gICAgICAgIHJldHVybiBmaXJzdDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGVJY29uRm9yQWxsRmVhdHVyZXNJblNwYWNlKFxyXG4gICAgICAgIHRhZ0ljb246IHN0cmluZyxcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICAgICAgY2F0ZWdvcnlJRDogc3RyaW5nID0gbnVsbCxcclxuICAgICk6IFByb21pc2U8eyBmZWF0dXJlczogRmVhdHVyZVtdOyBwb2lzOiBQT0lbXTsgfT4ge1xyXG4gICAgICAgIGxldCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuZ2V0RmVhdHVyZXNGb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBpZiAoY2F0ZWdvcnlJRCkge1xyXG4gICAgICAgICAgICBmZWF0dXJlcyA9IGZlYXR1cmVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PiBmZWF0dXJlLmRvbWFpbklEID09PSBjYXRlZ29yeUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwb2lzID0gYXdhaXQgdGhpcy51cGRhdGVJY29uRm9yQWxsT2JqZWN0cyhmZWF0dXJlcywgdGFnSWNvbik7XHJcbiAgICAgICAgcmV0dXJuIHsgZmVhdHVyZXMsIHBvaXMgfTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRDcmVhdGVkSW5kaWNlc0ZvckZlYXR1cmVzSW5TcGFjZShcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPG51bWJlcltdPiB7XHJcbiAgICAgICAgbGV0IGZlYXR1cmVzID0gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2Uoc3BhY2VJRCkpLml0ZW1zO1xyXG4gICAgICAgIGZlYXR1cmVzID0gZmVhdHVyZXMuZmlsdGVyKChmZWF0KSA9PiBmZWF0LmluZGV4KTtcclxuICAgICAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0KSA9PiBmZWF0LmluZGV4KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXREZXNrc0ZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZVtdPiB7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLmdldEZlYXR1cmVzRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgcmV0dXJuIGZlYXR1cmVzLmZpbHRlcigoZmVhdCkgPT4gZmVhdC5pc0Jvb2tpbmdQbGFjZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFJldHVybiB0cnVlIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIGFyY2hpdmVkIHRoaXMgZmVhdHVyZSAqL1xyXG4gICAgaXNBcmNoaXZlZChmZWF0dXJlOiBGZWF0dXJlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGZlYXR1cmUuYXJjaGl2ZWRGb3JNaXNzaW9uSURcclxuICAgICAgICAgICAgPyBmZWF0dXJlLmFyY2hpdmVkRm9yTWlzc2lvbklELmluY2x1ZGVzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihmZWF0dXJlLnNwYWNlSUQpLmlkLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QXJjaGl2ZWQoZmVhdHVyZTogRmVhdHVyZSwgYXJjaGl2ZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgICBsZXQgYXJjaGl2ZWRMaXN0ID0gZmVhdHVyZS5hcmNoaXZlZEZvck1pc3Npb25JRFxyXG4gICAgICAgICAgICA/IGZlYXR1cmUuYXJjaGl2ZWRGb3JNaXNzaW9uSURcclxuICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICBjb25zdCBtaXNzaW9uSUQgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKGZlYXR1cmUuc3BhY2VJRCkuaWQ7XHJcblxyXG4gICAgICAgIGFyY2hpdmVkTGlzdCA9IGFyY2hpdmVkTGlzdC5maWx0ZXIoKG0pID0+IG0gIT09IG1pc3Npb25JRCk7XHJcblxyXG4gICAgICAgIGlmIChhcmNoaXZlZCkge1xyXG4gICAgICAgICAgICBhcmNoaXZlZExpc3QucHVzaChtaXNzaW9uSUQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlRmVhdHVyZSh7XHJcbiAgICAgICAgICAgIGlkOiBmZWF0dXJlLmlkLFxyXG4gICAgICAgICAgICBhcmNoaXZlZEZvck1pc3Npb25JRDogYXJjaGl2ZWRMaXN0LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBhc3luYyB1cGRhdGVEdWVUb0NyZWF0ZShmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UudW5zaGlmdChmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLnVuc2hpZnQoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHtcclxuICAgICAgICAgICAgc3BhY2U6IHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLFxyXG4gICAgICAgICAgICB6b25lOiB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLFxyXG4gICAgICAgIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXBkYXRlRHVlVG9EZWxldGUoZGVsZXRlZEZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBmZWF0dXJlID0gdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UuZmluZChcclxuICAgICAgICAgICAgKF9mZWF0dXJlKSA9PiBfZmVhdHVyZS5pZCA9PT0gZGVsZXRlZEZlYXR1cmUuaWQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoZmVhdHVyZSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLmluZGV4T2YoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHpvbmVGZWF0dXJlID0gdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZS5maW5kKFxyXG4gICAgICAgICAgICAoX2ZlYXR1cmUpID0+IF9mZWF0dXJlLmlkID09PSBkZWxldGVkRmVhdHVyZS5pZCxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh6b25lRmVhdHVyZSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUuaW5kZXhPZih6b25lRmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHtcclxuICAgICAgICAgICAgc3BhY2U6IHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLFxyXG4gICAgICAgICAgICB6b25lOiB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLFxyXG4gICAgICAgIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
422
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvZmVhdHVyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFvQixXQUFXLEVBQUUsV0FBVyxFQUFPLE9BQU8sRUFBc0IsTUFBTSxxQkFBcUIsQ0FBQztBQUluSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFXMUQsTUFBTSxPQUFPLGNBQWUsU0FBUSxpQkFBaUI7SUF5Q3JDO0lBQ0E7SUFFQTtJQUNBO0lBR0E7SUFDQTtJQWhEWixHQUFHLENBQU0sQ0FBQyxLQUFLO0lBRWYsY0FBYyxHQUdULElBQUksT0FBTyxFQUFFLENBQUM7SUFFbkIsZUFBZSxHQUEyQztRQUN0RCxLQUFLLEVBQUUsRUFBRTtRQUNULElBQUksRUFBRSxFQUFFO0tBQ1gsQ0FBQztJQUVGLFdBQVcsR0FBK0IsSUFBSSxlQUFlLENBQVksSUFBSSxDQUFDLENBQUM7SUFFL0UsZUFBZSxHQUFjLEVBQUUsQ0FBQztJQUVoQyxVQUFVLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFN0MsWUFBWSxDQUFTO0lBRXJCLGNBQWMsQ0FBUztJQUV2QixRQUFRLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFM0MsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUVuQixtQkFBbUIsR0FBYSxJQUFJLENBQUM7SUFFckMsZ0JBQWdCLEdBQWEsSUFBSSxDQUFDO0lBRWxDLG1CQUFtQixH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LENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLO1lBQ2pDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUk7U0FDbEMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CO0lBQzNCLENBQUM7d0dBcGdCUSxjQUFjLGtCQXdDWCxtQkFBbUI7NEdBeEN0QixjQUFjLGNBRlgsTUFBTTs7NEZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQXlDUSxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cbi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgTWF0dGVydGFnRGF0YSB9IGZyb20gXCIuLi8uLi9tYXR0ZXJ0YWdEYXRhXCI7XG5pbXBvcnQgeyBGZWF0dXJlLCBIYXNodGFnLCBGZWF0dXJlVHlwZSwgQ29tbWVudFR5cGUsIFBPSSwgUG9pVHlwZSwgRXZlbnQsIExldmVsU3RhdHVzIH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tIFwiLi4vZmlsdGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tIFwiLi4vbmF2aWdhdG9yLnNlcnZpY2VcIjtcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gXCIuLi91c2VyLnNlcnZpY2VcIjtcbmltcG9ydCB7IEJhc2VPYmplY3RTZXJ2aWNlIH0gZnJvbSBcIi4vYmFzZS1vYmplY3Quc2VydmljZVwiO1xuaW1wb3J0IHsgQ29tbWVudFNlcnZpY2UgfSBmcm9tIFwiLi9jb21tZW50LnNlcnZpY2VcIjtcbmltcG9ydCB7IEhhc2h0YWdTZXJ2aWNlIH0gZnJvbSBcIi4vaGFzaHRhZy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gXCIuL25hdmlnYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHsgUG9pU2VydmljZSB9IGZyb20gXCIuL3BvaS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBWaXNpdFNlcnZpY2UgfSBmcm9tIFwiLi92aXNpdC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBab25lQ2hhbmdlU2VydmljZSB9IGZyb20gXCIuLi96b25lQ2hhbmdlLnNlcnZpY2VcIjtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlU2VydmljZSBleHRlbmRzIEJhc2VPYmplY3RTZXJ2aWNlIHtcbiAgICBBUEk6IGFueTsgLy9BV1NcblxuICAgIGZlYXR1cmVVcGRhdGVkOiBTdWJqZWN0PHtcbiAgICAgICAgc3BhY2U6IEZlYXR1cmVbXTtcbiAgICAgICAgem9uZTogRmVhdHVyZVtdO1xuICAgIH0+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGN1cnJlbnRGZWF0dXJlczogeyBzcGFjZTogRmVhdHVyZVtdOyB6b25lOiBGZWF0dXJlW107IH0gPSB7XG4gICAgICAgIHNwYWNlOiBbXSxcbiAgICAgICAgem9uZTogW10sXG4gICAgfTtcblxuICAgIGZlYXR1cmVUYWdzOiBCZWhhdmlvclN1YmplY3Q8RmVhdHVyZVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmVhdHVyZVtdPihudWxsKTtcblxuICAgIGZlYXR1cmVGaWx0ZXJlZDogRmVhdHVyZVtdID0gW107XG5cbiAgICB1cGRhdGVEb25lOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHpvbmVJREZpbHRlcjogc3RyaW5nO1xuXG4gICAgY3VycmVudFNwYWNlSUQ6IHN0cmluZztcblxuICAgIHVwZGF0aW5nOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGlzVXBkYXRpbmcgPSBmYWxzZTtcblxuICAgIGZlYXR1cmVEb21haW5GaWx0ZXI6IHN0cmluZ1tdID0gbnVsbDtcblxuICAgIGRlc2tEb21haW5GaWx0ZXI6IHN0cmluZ1tdID0gbnVsbDtcblxuICAgIGRlc2tCb29raW5nc1VwZGF0ZWQ6IFN1YmplY3Q8RXZlbnRbXT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHVibGljIGN1cnJlbnRIYXNodGFnczogSGFzaHRhZ1tdID0gW107XG5cbiAgICBjcmVhdGVPYnNlcnZhYmxlOiBTdWJqZWN0PEZlYXR1cmU+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGRlbGV0ZU9ic2VydmFibGU6IFN1YmplY3Q8RmVhdHVyZT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSxcbiAgICAgICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsXG4gICAgICAgIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29tbWVudFNlcnZpY2U6IENvbW1lbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXG4gICAgICAgIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcbiAgICAgICAgdmlzaXRTZXJ2aWNlOiBWaXNpdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaGFzaHRhZ1NlcnZpY2U6IEhhc2h0YWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIocG9pU2VydmljZSwgbmF2aWdhdGlvblNlcnZpY2UsIHZpc2l0U2VydmljZSk7XG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XG4gICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQuc3Vic2NyaWJlKChsaXN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcyA9IGxpc3Q7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2Uuc3Vic2NyaWJlKCh6b25lKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnRTcGFjZUlEO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlVGFncy5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogbnVsbCB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyICYmICF0aGlzLnVzZXJTZXJ2aWNlLmlzTXVzZXVtVXNlcih0aGlzLmN1cnJlbnRTcGFjZUlEKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gem9uZS5pZDtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRGZWF0dXJlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gVGhlIFRocmVlLmpzIHZpZXdlciBzaG93cyBhIHdob2xlIHNwYWNlIGF0IG9uY2UsIHdpdGggbm8gem9uZSB0byBuYXZpZ2F0ZSBpbnRvLCBzbyBpdFxuICAgICAgICAvLyBhbm5vdW5jZXMgaXRzZWxmIGhlcmUgaW5zdGVhZCBvZiB0aHJvdWdoIGB6b25lQ2hhbmdlYC5cbiAgICAgICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS5zcGFjZVdpdGhvdXRab25lcy5zdWJzY3JpYmUoKHNwYWNlSUQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSBzcGFjZUlEO1xuICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSBudWxsO1xuICAgICAgICAgICAgaWYgKCFzcGFjZUlEKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlVGFncy5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogbnVsbCB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudXNlclNlcnZpY2UuaXNNdXNldW1Vc2VyKHNwYWNlSUQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RmVhdHVyZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXBkYXRlRG9uZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRGZWF0dXJlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRlbGV0ZU9ic2VydmFibGUuc3Vic2NyaWJlKChmZWF0dXJlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRHVlVG9EZWxldGUoZmVhdHVyZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY3JlYXRlT2JzZXJ2YWJsZS5zdWJzY3JpYmUoKGZlYXR1cmUpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVEdWVUb0NyZWF0ZShmZWF0dXJlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLypcbiAgICAqIENSVURcbiAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZUZlYXR1cmUoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8RmVhdHVyZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZUZlYXR1cmUoZmVhdHVyZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZGVsZXRlRmVhdHVyZShmZWF0dXJlOiBGZWF0dXJlKTogUHJvbWlzZTxGZWF0dXJlPiB7XG4gICAgICAgIGNvbnN0IGRlbGV0ZWQgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlRmVhdHVyZSh7IGlkOiBmZWF0dXJlLmlkIH0pO1xuICAgICAgICBpZiAoZGVsZXRlZCkge1xuICAgICAgICAgICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmdldFBvaUJ5RWxlbWVudElkKGZlYXR1cmUuaWQpO1xuICAgICAgICAgICAgaWYgKHBvaSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucG9pU2VydmljZS5kZWxldGVQb2kocG9pLmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGRlbGV0ZSBjb21tZW50c1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb21tZW50IG9mIGRlbGV0ZWQuY29tbWVudHMuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmRlbGV0ZUNvbW1lbnQoY29tbWVudC5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlbGV0ZWQ7XG4gICAgfVxuXG4gICAgYXN5bmMgdXBkYXRlRmVhdHVyZShmZWF0dXJlOiBhbnkpOiBQcm9taXNlPEZlYXR1cmU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVGZWF0dXJlKGZlYXR1cmUpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldEZlYXR1cmUoaWQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZT4ge1xuICAgICAgICBjb25zdCBmZWF0dXJlID0gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRGZWF0dXJlKGlkKSkgYXMgRmVhdHVyZTtcbiAgICAgICAgZmVhdHVyZS5ldmVudHM/Lml0ZW1zLnNvcnQoKGEsIGIpID0+IGIucmVhbFN0YXJ0RGF0ZSAtIGEucmVhbFN0YXJ0RGF0ZSk7XG4gICAgICAgIHRoaXMuc2V0Q292ZXJJbWFnZShmZWF0dXJlKTtcbiAgICAgICAgdGhpcy5zZXRJbWFnZXMoZmVhdHVyZSk7XG4gICAgICAgIHRoaXMuc2V0VmlkZW9zKGZlYXR1cmUpO1xuICAgICAgICB0aGlzLnNldERvY3VtZW50cyhmZWF0dXJlKTtcbiAgICAgICAgdGhpcy5zZXRBdWRpbyhmZWF0dXJlKTtcbiAgICAgICAgdGhpcy5zZXRFeHRlcm5hbExpbmtzKGZlYXR1cmUpO1xuICAgICAgICB0aGlzLnNldEVtYmVkcyhmZWF0dXJlKTtcbiAgICAgICAgdGhpcy5zZXRJZnJhbWVzKGZlYXR1cmUpO1xuICAgICAgICB0aGlzLmlzQm9va2luZ1BsYWNlKGZlYXR1cmUpO1xuICAgICAgICByZXR1cm4gZmVhdHVyZTtcbiAgICB9XG5cblxuICAgIGFzeW5jIGluaXRGZWF0dXJlcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGluZy5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmlzVXBkYXRpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBmZWF0dXJlTGlzdCA9IGF3YWl0IHRoaXMuZ2V0RmVhdHVyZXNGb3JTcGFjZSh0aGlzLmN1cnJlbnRTcGFjZUlEKTtcbiAgICAgICAgdGhpcy5jdXJyZW50SGFzaHRhZ3MgPSBhd2FpdCB0aGlzLmhhc2h0YWdTZXJ2aWNlLmdldEhhc2h0YWdzRm9yU3BhY2UoXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlELFxuICAgICAgICApO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmN1cnJlbnRIYXNodGFncyk7XG4gICAgICAgIGlmIChmZWF0dXJlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgZmlsdGVyZWRGZWF0dXJlcyA9IFsuLi5mZWF0dXJlTGlzdF07XG4gICAgICAgICAgICBsZXQgZmlsdGVyZWRQb2ludEludGVyZXN0ID0gZmlsdGVyZWRGZWF0dXJlcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+IGZlYXR1cmUudHlwZSAhPT0gRmVhdHVyZVR5cGUuREVTSyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBsZXQgZmlsdGVyZWREZXNrcyA9IGZpbHRlcmVkRmVhdHVyZXMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PiBmZWF0dXJlLnR5cGUgPT09IEZlYXR1cmVUeXBlLkRFU0ssXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZURvbWFpbkZpbHRlcikge1xuICAgICAgICAgICAgICAgIGZpbHRlcmVkUG9pbnRJbnRlcmVzdCA9IGZpbHRlcmVkUG9pbnRJbnRlcmVzdC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlRG9tYWluRmlsdGVyLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvbWFpbikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZS5kb21haW4gJiYgZG9tYWluID09PSBmZWF0dXJlLmRvbWFpbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmRlc2tEb21haW5GaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZERlc2tzID0gZmlsdGVyZWREZXNrcy5maWx0ZXIoKGZlYXR1cmUpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVza0RvbWFpbkZpbHRlci5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGRvbWFpbikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLmRvbWFpbiAmJiBkb21haW4gPT09IGZlYXR1cmUuZG9tYWluLmlkLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWx0ZXJlZEZlYXR1cmVzID0gWy4uLmZpbHRlcmVkUG9pbnRJbnRlcmVzdCwgLi4uZmlsdGVyZWREZXNrc107XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZSA9IGZpbHRlcmVkRmVhdHVyZXMuc29ydChcbiAgICAgICAgICAgICAgICAoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLy8gZW1pdCBvbiB0YWdzIHNob3VsZCBiZSBhZnRlciBzZXR0aW5nIGN1cnJlbnQuc3BhY2UgISFcbiAgICAgICAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xuICAgICAgICAgICAgICAgIGZpbHRlcmVkRmVhdHVyZXMgPVxuICAgICAgICAgICAgICAgICAgICAoYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9iamVjdHNGb3Jab25lKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRGZWF0dXJlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICApKSBhcyBGZWF0dXJlW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZVRhZ3MubmV4dChmaWx0ZXJlZEZlYXR1cmVzKTsgLy8gZm9yIHRoaXMgem9uZVxuXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lID0gZmlsdGVyZWRGZWF0dXJlcy5zb3J0KFxuICAgICAgICAgICAgICAgIChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmN1cnJlbnRGZWF0dXJlcyk7XG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVVcGRhdGVkLm5leHQodGhpcy5jdXJyZW50RmVhdHVyZXMpOyAvLyBmb3IgbGF0ZXJhbCBtZW51XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IFtdIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGluZy5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5pc1VwZGF0aW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0RmVhdHVyZXNGb3JTcGFjZShcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxuICAgICAgICBrZWVwQXJjaGl2ZWQ6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICApOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2Uoc3BhY2VJRCkudGhlbihcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXG4gICAgICAgICk7XG4gICAgICAgIGxldCBmZWF0dXJlc0ZvclVzZXIgPVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckZlYXR1cmVzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxuICAgICAgICAgICAgICAgIGZlYXR1cmVzLFxuICAgICAgICAgICAgICAgIHNwYWNlSUQsXG4gICAgICAgICAgICApO1xuICAgICAgICBpZiAoIWtlZXBBcmNoaXZlZCkge1xuICAgICAgICAgICAgZmVhdHVyZXNGb3JVc2VyID0gZmVhdHVyZXNGb3JVc2VyLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoZmVhdHVyZSkgPT4gIXRoaXMuaXNBcmNoaXZlZChmZWF0dXJlKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzRm9yVXNlcikge1xuICAgICAgICAgICAgdGhpcy5zZXRDb3ZlckltYWdlKGZlYXR1cmUpO1xuICAgICAgICAgICAgdGhpcy5pc0Jvb2tpbmdQbGFjZShmZWF0dXJlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmVhdHVyZXNGb3JVc2VyO1xuICAgIH1cblxuICAgIGFzeW5jIGdldEZlYXR1cmVzQnlTcGFjZVdpdGhvdXRGaWx0ZXJpbmcoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxGZWF0dXJlW10+IHtcbiAgICAgICAgbGV0IGZlYXR1cmVzID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkZlYXR1cmVzQnlTcGFjZShzcGFjZUlEKS50aGVuKFxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcbiAgICAgICAgKTtcbiAgICAgICAgZmVhdHVyZXMgPSBmZWF0dXJlcy5maWx0ZXIoXG4gICAgICAgICAgICAoZmVhdHVyZSkgPT4gIXRoaXMuaXNBcmNoaXZlZChmZWF0dXJlKSxcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzKSB7XG4gICAgICAgICAgICB0aGlzLnNldENvdmVySW1hZ2UoZmVhdHVyZSk7XG4gICAgICAgICAgICB0aGlzLmlzQm9va2luZ1BsYWNlKGZlYXR1cmUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmZWF0dXJlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIEVWRVJZIGZlYXR1cmUgb2YgYSBzcGFjZSwgZm9sbG93aW5nIGBuZXh0VG9rZW5gIHVudGlsIHRoZSBpbmRleCBpc1xuICAgICAqIGV4aGF1c3RlZCwgd2l0aCBubyB1c2VyL2FyY2hpdmUgZmlsdGVyaW5nIGF0IGFsbC5cbiAgICAgKi9cbiAgICBhc3luYyBnZXRBbGxGZWF0dXJlc0J5U3BhY2VSYXcoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxGZWF0dXJlW10+IHtcbiAgICAgICAgaWYgKCFzcGFjZUlEKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWxsOiBGZWF0dXJlW10gPSBbXTtcbiAgICAgICAgbGV0IG5leHRUb2tlbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2UoXG4gICAgICAgICAgICAgICAgc3BhY2VJRCxcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIDEwMDAsXG4gICAgICAgICAgICAgICAgbmV4dFRva2VuLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChwYWdlPy5pdGVtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGFsbC5wdXNoKC4uLnBhZ2UuaXRlbXMuZmlsdGVyKChpdGVtOiBGZWF0dXJlIHwgbnVsbCkgPT4gISFpdGVtKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXh0VG9rZW4gPSBwYWdlPy5uZXh0VG9rZW4gPz8gbnVsbDtcbiAgICAgICAgfSB3aGlsZSAobmV4dFRva2VuKTtcblxuICAgICAgICByZXR1cm4gYWxsO1xuICAgIH1cblxuICAgIGlzQm9va2luZ1BsYWNlKGZlYXR1cmU6IEZlYXR1cmUpIHtcbiAgICAgICAgZmVhdHVyZS5pc0Jvb2tpbmdQbGFjZSA9IGZlYXR1cmUudHlwZSA9PT0gRmVhdHVyZVR5cGUuREVTSztcbiAgICB9XG5cblxuICAgIHNldENvdmVySW1hZ2UoZmVhdHVyZTogRmVhdHVyZSkge1xuICAgICAgICBjb25zdCBjb3ZlckltYWdlID0gZmVhdHVyZS5jb21tZW50cy5pdGVtcy5maW5kKFxuICAgICAgICAgICAgKGNvbSkgPT4gY29tLmlzQ292ZXJJbWFnZSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGNvdmVySW1hZ2UpIHtcbiAgICAgICAgICAgIGZlYXR1cmUuY292ZXJJbWFnZVVybCA9IGNvdmVySW1hZ2UuYW5uZXhlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLnNvbWUoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLllPVVRVQkUpKSB7XG4gICAgICAgICAgICBjb25zdCB5b3V0dWJlQ29tbWVudCA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXMuZmluZCgoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuWU9VVFVCRSk7XG4gICAgICAgICAgICAvLyB3ZSBjYW4gdXNlIHRoZSBwcmV2aWV3IGltYWdlIG9mIHlvdXR1YmVcbiAgICAgICAgICAgIGZlYXR1cmUuY292ZXJJbWFnZVVybCA9IGBodHRwczovL2ltZy55b3V0dWJlLmNvbS92aS8ke3lvdXR1YmVDb21tZW50LmV4dGVybmFsTGlua30vMC5qcGdgO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGZlYXR1cmUuY29tbWVudHMuaXRlbXMuc29tZSgoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuSU1BR0UpXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgaW1hZ2VDb21tZW50ID0gZmVhdHVyZS5jb21tZW50cy5pdGVtcy5maW5kKFxuICAgICAgICAgICAgICAgIChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5JTUFHRSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBmZWF0dXJlLmNvdmVySW1hZ2VVcmwgPSBpbWFnZUNvbW1lbnQuYW5uZXhlO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBhc3luYyB1cGRhdGVGZWF0dXJlTG9jYXRpb24oXG4gICAgICAgIGZlYXR1cmU6IEZlYXR1cmUsXG4gICAgICAgIHRhZ0RhdGE6IE1hdHRlcnRhZ0RhdGEsXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcbiAgICApOiBQcm9taXNlPFBPST4ge1xuICAgICAgICBjb25zdCBwb2lJbnB1dCA9IHtcbiAgICAgICAgICAgIGNvb3JkaW5hdGU6IHRhZ0RhdGEuZ2V0Q29vcmRpbmF0ZVN0cmluZygpLFxuICAgICAgICAgICAgdHlwZTogZmVhdHVyZS5pc0Jvb2tpbmdQbGFjZSA/IFBvaVR5cGUuREVTSyA6IFBvaVR5cGUuREFUQSxcbiAgICAgICAgICAgIGVsZW1lbnRJRDogZmVhdHVyZS5pZCxcbiAgICAgICAgICAgIG1ldGFkYXRhOiB0YWdEYXRhLmdldE1ldGFkYXRhU3RyaW5nKCksXG4gICAgICAgICAgICBtYXR0ZXJwb3J0U3dlZXBJRDogdGFnRGF0YS5nZXRTd2VlcElEKCksXG4gICAgICAgIH0gYXMgUE9JO1xuICAgICAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuY3JlYXRlUE9JRm9yU3BhY2VJRChwb2lJbnB1dCk7XG4gICAgICAgIHJldHVybiBwb2k7XG4gICAgfVxuXG4gICAgc2V0SW1hZ2VzKGZlYXR1cmU6IEZlYXR1cmUpIHtcbiAgICAgICAgY29uc3QgaW1hZ2VzQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5JTUFHRSlcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XG4gICAgICAgIGNvbnN0IGltYWdlcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGltYWdlIG9mIGltYWdlc0NvbW1lbnRzKSB7XG4gICAgICAgICAgICBpbWFnZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgcGF0aDogaW1hZ2UuYW5uZXhlLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpbWFnZS50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1hZ2UuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgc2hvd0luVGFnOiBpbWFnZS5zaG93bkluVGFnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZmVhdHVyZS5pbWFnZXMgPSBpbWFnZXM7XG4gICAgfVxuXG4gICAgc2V0VmlkZW9zKGZlYXR1cmU6IEZlYXR1cmUpIHtcbiAgICAgICAgY29uc3QgdmlkZW9zQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5WSURFTyB8fCBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuWU9VVFVCRSlcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XG4gICAgICAgIGNvbnN0IHZpZGVvcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHZpZGVvIG9mIHZpZGVvc0NvbW1lbnRzKSB7XG4gICAgICAgICAgICB2aWRlb3MucHVzaCh7XG4gICAgICAgICAgICAgICAgcGF0aDogdmlkZW8udHlwZSA9PT0gQ29tbWVudFR5cGUuWU9VVFVCRSA/ICdodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8nICsgdmlkZW8uZXh0ZXJuYWxMaW5rIDogdmlkZW8uYW5uZXhlLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB2aWRlby50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdmlkZW8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgdHlwZTogdmlkZW8udHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZlYXR1cmUudmlkZW9zID0gdmlkZW9zO1xuICAgIH1cblxuICAgIHNldERvY3VtZW50cyhmZWF0dXJlOiBGZWF0dXJlKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50Q29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5ET0NVTUVOVClcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XG4gICAgICAgIGNvbnN0IGRvY3MgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBkb2N1bWVudCBvZiBkb2N1bWVudENvbW1lbnRzKSB7XG4gICAgICAgICAgICBkb2NzLnB1c2goe1xuICAgICAgICAgICAgICAgIHBhdGg6IGRvY3VtZW50LmFubmV4ZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogZG9jdW1lbnQudGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGRvY3VtZW50LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZmVhdHVyZS5kb2N1bWVudHMgPSBkb2NzO1xuICAgIH1cblxuICAgIHNldEF1ZGlvKGZlYXR1cmU6IEZlYXR1cmUpIHtcbiAgICAgICAgY29uc3QgYXVkaW9Db21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLkFVRElPKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcbiAgICAgICAgY29uc3QgYXVkaW9zID0gW107XG4gICAgICAgIGZvciAoY29uc3QgYXVkaW8gb2YgYXVkaW9Db21tZW50cykge1xuICAgICAgICAgICAgYXVkaW9zLnB1c2goe1xuICAgICAgICAgICAgICAgIHBhdGg6IGF1ZGlvLmFubmV4ZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogYXVkaW8udGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGF1ZGlvLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZmVhdHVyZS5hdWRpb3MgPSBhdWRpb3M7XG4gICAgfVxuXG4gICAgc2V0RXh0ZXJuYWxMaW5rcyhmZWF0dXJlOiBGZWF0dXJlKSB7XG4gICAgICAgIGNvbnN0IGxpbmtzQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5VUkwpXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xuICAgICAgICBjb25zdCBleHRlcm5hbExpbmtzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rc0NvbW1lbnRzKSB7XG4gICAgICAgICAgICBleHRlcm5hbExpbmtzLnB1c2goe1xuICAgICAgICAgICAgICAgIHBhdGg6IGxpbmsuZXh0ZXJuYWxMaW5rLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBsaW5rLnRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBsaW5rLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHNob3dJblRhZzogbGluay5zaG93bkluVGFnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZmVhdHVyZS5leHRlcm5hbExpbmtzID0gZXh0ZXJuYWxMaW5rcztcbiAgICB9XG5cbiAgICBzZXRFbWJlZHMoZmVhdHVyZTogRmVhdHVyZSkge1xuICAgICAgICBjb25zdCBlbWJlZENvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuRU1CRUQpXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xuICAgICAgICBjb25zdCBlbWJlZHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBlbWJlZCBvZiBlbWJlZENvbW1lbnRzKSB7XG4gICAgICAgICAgICBlbWJlZHMucHVzaCh7XG4gICAgICAgICAgICAgICAgcGF0aDogZW1iZWQuZXh0ZXJuYWxMaW5rLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBlbWJlZC50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZW1iZWQuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgc2hvd0luVGFnOiBlbWJlZC5zaG93bkluVGFnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZmVhdHVyZS5lbWJlZHMgPSBlbWJlZHM7XG4gICAgfVxuXG4gICAgc2V0SWZyYW1lcyhmZWF0dXJlOiBGZWF0dXJlKSB7XG4gICAgICAgIGNvbnN0IGlmcmFtZUNvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuSUZSQU1FKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcbiAgICAgICAgY29uc3QgaWZyYW1lcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGlmcmFtZSBvZiBpZnJhbWVDb21tZW50cykge1xuICAgICAgICAgICAgaWZyYW1lcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBwYXRoOiBpZnJhbWUuZXh0ZXJuYWxMaW5rLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpZnJhbWUudGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGlmcmFtZS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBzaG93SW5UYWc6IGlmcmFtZS5zaG93bkluVGFnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZmVhdHVyZS5pZnJhbWVzID0gaWZyYW1lcztcbiAgICB9XG5cblxuICAgIGFzeW5jIGdldEZpcnN0RmVhdHVyZUZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZT4ge1xuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuZ2V0RmVhdHVyZXNGb3JTcGFjZShzcGFjZUlEKTtcbiAgICAgICAgY29uc3QgZmlyc3QgPSBmZWF0dXJlcy5maW5kKChmZWF0KSA9PiBmZWF0LmluZGV4ID09PSAxKTtcbiAgICAgICAgcmV0dXJuIGZpcnN0O1xuICAgIH1cblxuICAgIGFzeW5jIHVwZGF0ZUljb25Gb3JBbGxGZWF0dXJlc0luU3BhY2UoXG4gICAgICAgIHRhZ0ljb246IHN0cmluZyxcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxuICAgICAgICBjYXRlZ29yeUlEOiBzdHJpbmcgPSBudWxsLFxuICAgICk6IFByb21pc2U8eyBmZWF0dXJlczogRmVhdHVyZVtdOyBwb2lzOiBQT0lbXTsgfT4ge1xuICAgICAgICBsZXQgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLmdldEZlYXR1cmVzRm9yU3BhY2Uoc3BhY2VJRCk7XG4gICAgICAgIGlmIChjYXRlZ29yeUlEKSB7XG4gICAgICAgICAgICBmZWF0dXJlcyA9IGZlYXR1cmVzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoZmVhdHVyZSkgPT4gZmVhdHVyZS5kb21haW5JRCA9PT0gY2F0ZWdvcnlJRCxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pcyA9IGF3YWl0IHRoaXMudXBkYXRlSWNvbkZvckFsbE9iamVjdHMoZmVhdHVyZXMsIHRhZ0ljb24pO1xuICAgICAgICByZXR1cm4geyBmZWF0dXJlcywgcG9pcyB9O1xuICAgIH1cblxuICAgIGFzeW5jIGdldENyZWF0ZWRJbmRpY2VzRm9yRmVhdHVyZXNJblNwYWNlKFxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgICAgICBsZXQgZmVhdHVyZXMgPSAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkZlYXR1cmVzQnlTcGFjZShzcGFjZUlEKSkuaXRlbXM7XG4gICAgICAgIGZlYXR1cmVzID0gZmVhdHVyZXMuZmlsdGVyKChmZWF0KSA9PiBmZWF0LmluZGV4KTtcbiAgICAgICAgcmV0dXJuIGZlYXR1cmVzLm1hcCgoZmVhdCkgPT4gZmVhdC5pbmRleCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0RGVza3NGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuZ2V0RmVhdHVyZXNGb3JTcGFjZShzcGFjZUlEKTtcbiAgICAgICAgcmV0dXJuIGZlYXR1cmVzLmZpbHRlcigoZmVhdCkgPT4gZmVhdC5pc0Jvb2tpbmdQbGFjZSk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybiB0cnVlIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIGFyY2hpdmVkIHRoaXMgZmVhdHVyZSAqL1xuICAgIGlzQXJjaGl2ZWQoZmVhdHVyZTogRmVhdHVyZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmVhdHVyZS5hcmNoaXZlZEZvck1pc3Npb25JRFxuICAgICAgICAgICAgPyBmZWF0dXJlLmFyY2hpdmVkRm9yTWlzc2lvbklELmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgIHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24oZmVhdHVyZS5zcGFjZUlEKS5pZCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogZmFsc2U7XG4gICAgfVxuXG4gICAgc2V0QXJjaGl2ZWQoZmVhdHVyZTogRmVhdHVyZSwgYXJjaGl2ZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgbGV0IGFyY2hpdmVkTGlzdCA9IGZlYXR1cmUuYXJjaGl2ZWRGb3JNaXNzaW9uSURcbiAgICAgICAgICAgID8gZmVhdHVyZS5hcmNoaXZlZEZvck1pc3Npb25JRFxuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgY29uc3QgbWlzc2lvbklEID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihmZWF0dXJlLnNwYWNlSUQpLmlkO1xuXG4gICAgICAgIGFyY2hpdmVkTGlzdCA9IGFyY2hpdmVkTGlzdC5maWx0ZXIoKG0pID0+IG0gIT09IG1pc3Npb25JRCk7XG5cbiAgICAgICAgaWYgKGFyY2hpdmVkKSB7XG4gICAgICAgICAgICBhcmNoaXZlZExpc3QucHVzaChtaXNzaW9uSUQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlRmVhdHVyZSh7XG4gICAgICAgICAgICBpZDogZmVhdHVyZS5pZCxcbiAgICAgICAgICAgIGFyY2hpdmVkRm9yTWlzc2lvbklEOiBhcmNoaXZlZExpc3QsXG4gICAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgYXN5bmMgdXBkYXRlRHVlVG9DcmVhdGUoZmVhdHVyZTogRmVhdHVyZSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZS51bnNoaWZ0KGZlYXR1cmUpO1xuICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLnVuc2hpZnQoZmVhdHVyZSk7XG4gICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQubmV4dCh7XG4gICAgICAgICAgICBzcGFjZTogdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UsXG4gICAgICAgICAgICB6b25lOiB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLFxuICAgICAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxuICAgIH1cblxuICAgIGFzeW5jIHVwZGF0ZUR1ZVRvRGVsZXRlKGRlbGV0ZWRGZWF0dXJlOiBGZWF0dXJlKSB7XG4gICAgICAgIGNvbnN0IGZlYXR1cmUgPSB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZS5maW5kKFxuICAgICAgICAgICAgKF9mZWF0dXJlKSA9PiBfZmVhdHVyZS5pZCA9PT0gZGVsZXRlZEZlYXR1cmUuaWQsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChmZWF0dXJlKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLmluZGV4T2YoZmVhdHVyZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHpvbmVGZWF0dXJlID0gdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZS5maW5kKFxuICAgICAgICAgICAgKF9mZWF0dXJlKSA9PiBfZmVhdHVyZS5pZCA9PT0gZGVsZXRlZEZlYXR1cmUuaWQsXG4gICAgICAgICk7XG4gICAgICAgIGlmICh6b25lRmVhdHVyZSkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLmluZGV4T2Yoem9uZUZlYXR1cmUpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQubmV4dCh7XG4gICAgICAgICAgICBzcGFjZTogdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UsXG4gICAgICAgICAgICB6b25lOiB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLFxuICAgICAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -64,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
64
64
|
type: Inject,
|
|
65
65
|
args: ['currentAPIService']
|
|
66
66
|
}] }] });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaHRhZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvaGFzaHRhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1uRCxNQUFNLE9BQU8sY0FBYztJQUN2QixjQUFjLENBQVM7SUFFdkIsZUFBZSxHQUFjLEVBQUUsQ0FBQztJQUVoQyxHQUFHLENBQU07SUFFVCxZQUF5QyxXQUFnQjtRQUNyRCxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFpQjtRQUM5QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBRUgsa0VBQWtFO0lBQ2xFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxPQUFlO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDbkQsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQy9CLENBQUM7SUFDTixDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFZLEVBQUUsT0FBZTtRQUNyRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCwyREFBMkQ7SUFDM0QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFNBQWlCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7O09BSUc7SUFFSCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQWdCO1FBQ2hDLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sY0FBYyxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsVUFBa0IsSUFBSTtRQUM1QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQy9ELENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUMvQixDQUFDO1lBQ04sQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQzt3R0FsRVEsY0FBYyxrQkFPSCxtQkFBbUI7NEdBUDlCLGNBQWMsY0FGWCxNQUFNOzs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBUWdCLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEhhc2h0YWcsIE5vZGUgfSBmcm9tIFwiLi4vLi4vdHlwZXMuc2VydmljZVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIEhhc2h0YWdTZXJ2aWNlIHtcbiAgICBjdXJyZW50U3BhY2VJRDogc3RyaW5nO1xuXG4gICAgY3VycmVudEhhc2h0YWdzOiBIYXNodGFnW10gPSBbXTtcblxuICAgIEFQSTogYW55O1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55KSB7XG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0SGFzaHRhZyhoYXNodGFnSUQ6IHN0cmluZyk6IFByb21pc2U8SGFzaHRhZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldEhhc2h0YWcoaGFzaHRhZ0lEKTtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIFB1cmUgZGF0YSBhY2Nlc3Mg4oCUIE5PIHNpZGUgZWZmZWN0IG9uIGN1cnJlbnRIYXNodGFncyAvIGN1cnJlbnRTcGFjZUlELlxuICAgICAqXG4gICAgICogYGN1cnJlbnRIYXNodGFnc2AgaXMgc2hhcmVkIFVJIHN0YXRlIHJlYWQgYnkgSGFzaHRhZ0Zyb21JZFBpcGUgdG8gcmVuZGVyIGFcbiAgICAgKiBrZXl3b3JkJ3MgbmFtZS4gQmF0Y2ggd29yayAoc3BhY2UgZHVwbGljYXRpb24sIGV4cG9ydCwgYWRtaW4gdG9vbGluZykgdG91Y2hlc1xuICAgICAqIGhhc2h0YWdzIG9mIHNwYWNlcyB0aGUgb3BlcmF0b3IgaXMgbm90IGVkaXRpbmcsIGFuZCBtdXN0IG5vdCByZXNoYXBlIHdoYXQgdGhlXG4gICAgICogc2NyZWVucyBhcmUgZGlzcGxheWluZyDigJQgaGVuY2UgdGhpcyBzaWRlLWVmZmVjdC1mcmVlIHRyaW8uXG4gICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICovXG5cbiAgICAvKiogUmVhZHMgYSBzcGFjZSdzIGtleXdvcmRzIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHNoYXJlZCBjYWNoZS4gKi9cbiAgICBhc3luYyBsaXN0SGFzaHRhZ3NGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEhhc2h0YWdbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkhhc2h0YWdzQnlTcGFjZShzcGFjZUlEKS50aGVuKFxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlcyBhIGtleXdvcmQgaW4gYSBzcGFjZSB3aXRob3V0IGFkZGluZyBpdCB0byB0aGUgc2hhcmVkIGNhY2hlLiAqL1xuICAgIGFzeW5jIGNyZWF0ZUhhc2h0YWdGb3JTcGFjZShuYW1lOiBzdHJpbmcsIHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8SGFzaHRhZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZUhhc2h0YWcoeyBuYW1lLCBzcGFjZUlEIH0pO1xuICAgIH1cblxuICAgIC8qKiBEZWxldGVzIGEga2V5d29yZCB3aXRob3V0IHRvdWNoaW5nIHRoZSBzaGFyZWQgY2FjaGUuICovXG4gICAgYXN5bmMgZGVsZXRlSGFzaHRhZ0J5SWQoaGFzaHRhZ0lEOiBzdHJpbmcpOiBQcm9taXNlPEhhc2h0YWc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVIYXNodGFnKHsgaWQ6IGhhc2h0YWdJRCB9KTtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIFVJLWZhY2luZyBvcGVyYXRpb25zIOKAlCBzYW1lIGFjdGlvbnMsIHBsdXMgbWFpbnRlbmFuY2Ugb2YgdGhlIHNoYXJlZCBjYWNoZS5cbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgKi9cblxuICAgIGFzeW5jIGNyZWF0ZUhhc2h0YWcoaGFzaHRhZzogSGFzaHRhZyk6IFByb21pc2U8SGFzaHRhZz4ge1xuICAgICAgICBjb25zdCBoYXNodGFnQ3JlYXRlZCA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVIYXNodGFnKGhhc2h0YWcpO1xuICAgICAgICB0aGlzLmN1cnJlbnRIYXNodGFncy5wdXNoKGhhc2h0YWdDcmVhdGVkKTtcbiAgICAgICAgcmV0dXJuIGhhc2h0YWdDcmVhdGVkO1xuICAgIH1cblxuICAgIGFzeW5jIGdldEhhc2h0YWdzRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nID0gbnVsbCk6IFByb21pc2U8SGFzaHRhZ1tdPiB7XG4gICAgICAgIGlmICghc3BhY2VJRCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEhhc2h0YWdzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5IYXNodGFnc0J5U3BhY2UodGhpcy5jdXJyZW50U3BhY2VJRCkudGhlbihcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEhhc2h0YWdzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSBzcGFjZUlEO1xuICAgICAgICByZXR1cm4gdGhpcy5saXN0SGFzaHRhZ3NGb3JTcGFjZShzcGFjZUlEKTtcbiAgICB9XG59Il19
|
|
@@ -31,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
31
31
|
type: Inject,
|
|
32
32
|
args: ['currentAPIService']
|
|
33
33
|
}] }] });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL2xheWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTW5ELE1BQU0sT0FBTyxZQUFZO0lBQ3JCLEdBQUcsQ0FBTSxDQUFDLEtBQUs7SUFFZixZQUF5QyxXQUFnQjtRQUNyRCxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLEtBQWE7UUFDdkMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsS0FBSyxDQUFDLDBCQUEwQixDQUM1QixTQUFpQixFQUNqQixLQUFhO1FBRWIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7WUFDbEMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUU7WUFDN0IsY0FBYyxFQUFFLEtBQUs7U0FDeEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxTQUFpQixFQUFFLEtBQWE7UUFDaEUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3hELElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUU7U0FDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7d0dBekJRLFlBQVksa0JBR0QsbUJBQW1COzRHQUg5QixZQUFZLGNBRlQsTUFBTTs7NEZBRVQsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUlnQixNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgTGF5ZXJTZXJ2aWNlIHtcbiAgICBBUEk6IGFueTsgLy9BV1NcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSkge1xuICAgICAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xuICAgIH1cblxuICAgIGFzeW5jIGdldExheWVyRm9yT3JnYW5pc2F0aW9uKG9yZ0lEOiBzdHJpbmcpOiBQcm9taXNlPExheWVyW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5MYXllcnNCeU9yZ2FuaXNhdGlvbihvcmdJRCkudGhlbigobGlzdCkgPT4gbGlzdC5pdGVtcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgY3JlYXRlTGF5ZXJGb3JPcmdhbmlzYXRpb24oXG4gICAgICAgIGxheWVyTmFtZTogc3RyaW5nLFxuICAgICAgICBvcmdJRDogc3RyaW5nLFxuICAgICk6IFByb21pc2U8TGF5ZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVMYXllcih7XG4gICAgICAgICAgICBuYW1lOiBsYXllck5hbWUudG9VcHBlckNhc2UoKSxcbiAgICAgICAgICAgIG9yZ2FuaXNhdGlvbklEOiBvcmdJRCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TGF5ZXJCeU5hbWVGb3JPcmdhbmlzYXRpb24obGF5ZXJOYW1lOiBzdHJpbmcsIG9yZ0lEOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5MYXllcnNCeU9yZ2FuaXNhdGlvbihvcmdJRCwgbnVsbCwge1xuICAgICAgICAgICAgbmFtZTogeyBlcTogbGF5ZXJOYW1lLnRvVXBwZXJDYXNlKCkgfSxcbiAgICAgICAgfSkudGhlbigobGlzdCkgPT4gbGlzdC5pdGVtcyk7XG4gICAgfVxufSJdfQ==
|
|
@@ -232,4 +232,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
232
232
|
type: Inject,
|
|
233
233
|
args: ['currentAwsKinesisAnalyticsService']
|
|
234
234
|
}] }, { type: i1.NavigatorService }, { type: i2.FilterService }, { type: i3.CommentService }, { type: i4.PoiService }, { type: i5.BaseUserService }, { type: i6.ZoneChangeService }, { type: i7.NavigationService }] });
|
|
235
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL21lYXN1cmVtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFFM0QsT0FBTyxFQUFlLE9BQU8sRUFBc0IsTUFBTSxxQkFBcUIsQ0FBQztBQUcvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBVTdELE1BQU0sT0FBTyxrQkFBa0I7SUFzQ25CO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBM0NWLElBQUksR0FBRyxlQUFlLENBQUM7SUFFdkIsbUJBQW1CLEdBR2YsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUU1QixnQkFBZ0IsR0FBK0IsSUFBSSxlQUFlLENBQVksSUFBSSxDQUFDLENBQUM7SUFFcEYsbUJBQW1CLEdBR2QsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuQixjQUFjLENBQVM7SUFFdkIsWUFBWSxDQUFTO0lBRXJCLFVBQVUsQ0FBUztJQUVuQixpQkFBaUIsR0FBWSxLQUFLLENBQUMsQ0FBQyxxREFBcUQ7SUFFekYsVUFBVSxHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTdDLFFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUUzQyxtQkFBbUIsQ0FBTSxDQUFDLEtBQUs7SUFFL0IsY0FBYyxHQUFXLElBQUksQ0FBQztJQUU5QixhQUFhLEdBQVMsSUFBSSxDQUFDO0lBRW5CLFFBQVEsR0FBRyxJQUFJ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SSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQTVRVSxrQkFBa0Isa0JBb0NuQixtQ0FBbUM7NEdBcENsQyxrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBcUNJLE1BQU07MkJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHdhaXRVbnRpbCB9IGZyb20gJy4uLy4uL2hlbHBlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lYXN1cmVtZW50LCBQb2lUeXBlLCBDb21tZW50LCBQT0ksIFpvbmUgfSBmcm9tICcuLi8uLi90eXBlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gJy4uL2ZpbHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZGVsZXRlRnJvbVMzLCB1cGxvYWRGaWxlVG9TMyB9IGZyb20gJy4uL3MzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tICcuLi91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tZW50U2VydmljZSB9IGZyb20gJy4vY29tbWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL25hdmlnYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFBvaVNlcnZpY2UgfSBmcm9tICcuL3BvaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWm9uZUNoYW5nZVNlcnZpY2UgfSBmcm9tIFwiLi4vem9uZUNoYW5nZS5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVhc3VyZW1lbnRTZXJ2aWNlIHtcclxuICBwYXRoID0gJ21lYXN1cmVtZW50cy8nO1xyXG5cclxuICBjdXJyZW50TWVhc3VyZW1lbnRzOiB7XHJcbiAgICBzcGFjZTogTWVhc3VyZW1lbnRbXTtcclxuICAgIHpvbmU6IE1lYXN1cmVtZW50W107XHJcbiAgfSA9IHsgc3BhY2U6IFtdLCB6b25lOiBbXSB9O1xyXG5cclxuICBtZWFzdXJlbWVudHNUYWdzOiBCZWhhdmlvclN1YmplY3Q8Q29tbWVudFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29tbWVudFtdPihudWxsKTtcclxuXHJcbiAgbWVhc3VyZW1lbnRzVXBkYXRlZDogU3ViamVjdDx7XHJcbiAgICBzcGFjZTogTWVhc3VyZW1lbnRbXTtcclxuICAgIHpvbmU6IE1lYXN1cmVtZW50W107XHJcbiAgfT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjdXJyZW50U3BhY2VJRDogc3RyaW5nO1xyXG5cclxuICB6b25lSURGaWx0ZXI6IHN0cmluZztcclxuXHJcbiAgZGF0ZUZpbHRlcjogRGF0ZVtdO1xyXG5cclxuICBtZWFzdXJlbWVudEZpbHRlcjogYm9vbGVhbiA9IGZhbHNlOyAvLyBpZiBmYWxzZSBtZWFucyBubyBmaWx0ZXJpbmcsIGV2ZXJ5dGhpbmcgaXMgYWxsb3dlZFxyXG5cclxuICB1cGRhdGVEb25lOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgdXBkYXRpbmc6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBhd3NLaW5lc2lzQW5hbHl0aWNzOiBhbnk7IC8vQVdTXHJcblxyXG4gIGZsb29yc1BlclNwYWNlOiBab25lW10gPSBudWxsO1xyXG5cclxuICBzZWxlY3RlZEZsb29yOiBab25lID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnY3VycmVudEF3c0tpbmVzaXNBbmFseXRpY3NTZXJ2aWNlJylcclxuICAgIGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDogYW55LFxyXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MgPSBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ7XHJcbiAgICBjb25zdCBpc011c2V1bVVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc09ubHlNdXNldW1Sb2xlKCk7XHJcbiAgICBpZiAoIWlzTXVzZXVtVXNlcikge1xyXG4gICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2Uuc3Vic2NyaWJlKCh6b25lKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRDtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVGFncy5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IG51bGwgfSk7XHJcbiAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50RmlsdGVyID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyKSB7XHJcbiAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IHpvbmUuaWQ7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImdvaW5nIHRvIGluaXQgbWVhc3VyZW1lbnRzIGZyb20gem9uZVwiKTtcclxuICAgICAgICAgIHRoaXMuaW5pdE1lYXN1cmVtZW50cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyBUaGUgVGhyZWUuanMgdmlld2VyIHNob3dzIGEgd2hvbGUgc3BhY2UgYXQgb25jZSwgd2l0aCBubyB6b25lIHRvIG5hdmlnYXRlIGludG8sIHNvIGl0XHJcbiAgICAgIC8vIGFubm91bmNlcyBpdHNlbGYgaGVyZSBpbnN0ZWFkIG9mIHRocm91Z2ggYHpvbmVDaGFuZ2VgLlxyXG4gICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnNwYWNlV2l0aG91dFpvbmVzLnN1YnNjcmliZSgoc3BhY2VJRCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSBzcGFjZUlEO1xyXG4gICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gbnVsbDtcclxuICAgICAgICBpZiAoIXNwYWNlSUQpIHtcclxuICAgICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVGFncy5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IG51bGwgfSk7XHJcbiAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50RmlsdGVyID0gbnVsbDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pbml0TWVhc3VyZW1lbnRzKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnN1YnNjcmliZVRvRGF0YUZpbHRlclVwZGF0ZSgoZGF0ZVJhbmdlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRlRmlsdGVyID0gZGF0ZVJhbmdlO1xyXG4gICAgICAgIHRoaXMuaW5pdE1lYXN1cmVtZW50cygpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kYXRlRmlsdGVyID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmN1cnJlbnREYXRlRmlsdGVyO1xyXG4gICAgICB0aGlzLnVwZGF0ZURvbmUuc3Vic2NyaWJlKCgpID0+IHRoaXMuaW5pdE1lYXN1cmVtZW50cygpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLmZsb29ySGFzQ2hhbmdlZC5zdWJzY3JpYmUoKGZsb29yKSA9PiB7XHJcbiAgICAgIGlmIChmbG9vcikge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGbG9vciA9IGZsb29yO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgYXN5bmMgaW5pdE1lYXN1cmVtZW50cygpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgIHRoaXMudXBkYXRpbmcubmV4dCh0cnVlKTtcclxuICAgICAgbGV0IG1lYXN1cmVtZW50cyA9IGF3YWl0IHRoaXMuZ2V0TWVhc3VyZW1lbnRzRm9yU3BhY2VGb3JVc2VyKFxyXG4gICAgICAgIHRoaXMuY3VycmVudFNwYWNlSURcclxuICAgICAgKTtcclxuICAgICAgaWYgKG1lYXN1cmVtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0ZUZpbHRlcikge1xyXG4gICAgICAgICAgbWVhc3VyZW1lbnRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck1lYXN1cmVtZW50c0ZvckRhdGVSYW5nZShcclxuICAgICAgICAgICAgbWVhc3VyZW1lbnRzLFxyXG4gICAgICAgICAgICB0aGlzLmRhdGVGaWx0ZXJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1lYXN1cmVtZW50RmlsdGVyKSB7XHJcbiAgICAgICAgICBtZWFzdXJlbWVudHMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnNwYWNlID0gbWVhc3VyZW1lbnRzO1xyXG4gICAgICAgIC8vIGVtaXQgb24gdGFncyBzaG91bGQgYmUgYWZ0ZXIgc2V0dGluZyBjdXJyZW50LnNwYWNlICEhXHJcblxyXG4gICAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgICAgY29uc3QgY29tbWVudHNab25lID0gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9iamVjdHNGb3Jab25lKFxyXG4gICAgICAgICAgICBtZWFzdXJlbWVudHMubWFwKChtZWFzdXJlKSA9PiBtZWFzdXJlLmNvbW1lbnQpLFxyXG4gICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlclxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIG1lYXN1cmVtZW50cyA9IG1lYXN1cmVtZW50cy5maWx0ZXIoKG1lYXN1cmUpID0+XHJcbiAgICAgICAgICAgIGNvbW1lbnRzWm9uZS5pbmNsdWRlcyhtZWFzdXJlLmNvbW1lbnQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNUYWdzLm5leHQobWVhc3VyZW1lbnRzLm1hcCgobSkgPT4gbS5jb21tZW50KSk7XHJcblxyXG4gICAgICAgIG1lYXN1cmVtZW50cy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIG5ldyBEYXRlKGIuY29tbWVudC5jcmVhdGVkQXQpIC1cclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBuZXcgRGF0ZShhLmNvbW1lbnQuY3JlYXRlZEF0KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMuem9uZSA9IG1lYXN1cmVtZW50cztcclxuICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy5zcGFjZSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy56b25lID0gW107XHJcbiAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IFtdIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWVhc3VyZW1lbnRzVGFncy5uZXh0KG51bGwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGluZy5uZXh0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRlbGV0ZU1lYXN1cmVtZW50KG1lYXN1cmVtZW50OiBNZWFzdXJlbWVudCk6IFByb21pc2U8Q29tbWVudD4ge1xyXG4gICAgY29uc3QgZGVsZXRlZENvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmRlbGV0ZUNvbW1lbnQoXHJcbiAgICAgIG1lYXN1cmVtZW50LmNvbW1lbnQuaWRcclxuICAgICk7XHJcbiAgICBpZiAoZGVsZXRlZENvbW1lbnQpIHtcclxuICAgICAgYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmRlbGV0ZVBvaShtZWFzdXJlbWVudC5wb2kuaWQpO1xyXG4gICAgICBjb25zdCBwcmVmaXggPSBgJHttZWFzdXJlbWVudC5jb21tZW50LmlkLnNsaWNlKDAsIDgpfV9gO1xyXG4gICAgICBjb25zdCBwYXRoID0gYCR7dGhpcy5wYXRoICsgcHJlZml4fW1lc3VyZS5qcGVnYDtcclxuICAgICAgYXdhaXQgZGVsZXRlRnJvbVMzKHBhdGgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlbGV0ZWRDb21tZW50O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlTWVhc3VyZW1lbnRGb3JTcGFjZShcclxuICAgIGNvbW1lbnRJbnB1dDogQ29tbWVudCxcclxuICAgIGRhdGFNZWFzdXJlbWVudHM6IHsgbWVhc3VyZTogYW55W107IHN3ZWVwOiBzdHJpbmc7IG1ldGFkYXRhPzogc3RyaW5nIH0sXHJcbiAgICBzY3JlZW5zaG90OiBhbnksXHJcbiAgICBzcGFjZUlEOiBzdHJpbmdcclxuICApOiBQcm9taXNlPE1lYXN1cmVtZW50PiB7XHJcbiAgICBjb25zdCBsYXN0TWVhc3VyZSA9IGRhdGFNZWFzdXJlbWVudHMubWVhc3VyZTtcclxuICAgIGNvbnN0IHN3ZWVwSUQgPSBkYXRhTWVhc3VyZW1lbnRzLnN3ZWVwO1xyXG4gICAgY29uc3QgbGFzdFBvaW50ID0gbGFzdE1lYXN1cmVbbGFzdE1lYXN1cmUubGVuZ3RoIC0gMV07XHJcbiAgICBsZXQgY29tbWVudCA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuY3JlYXRlQ29tbWVudChjb21tZW50SW5wdXQpO1xyXG4gICAgY29uc3QgcG9pSW5wdXQgPSB7XHJcbiAgICAgIGNvb3JkaW5hdGU6IEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICB4OiBsYXN0UG9pbnQueCxcclxuICAgICAgICB5OiBsYXN0UG9pbnQueSxcclxuICAgICAgICB6OiBsYXN0UG9pbnQueixcclxuICAgICAgfSksXHJcbiAgICAgIHR5cGU6IFBvaVR5cGUuTUVBU1VSRSxcclxuICAgICAgZWxlbWVudElEOiBjb21tZW50LmlkLFxyXG4gICAgICBtYXR0ZXJwb3J0U3dlZXBJRDogc3dlZXBJRCxcclxuICAgICAgLy8gT25seSB0aGUgVGhyZWUuanMgdmlld2VyIHNlbmRzIHRoaXM6IGl0IHJlY29yZHMgd2hpY2ggM0QgbW9kZWwgdGhlIG1lYXN1cmVtZW50IHdhcyB0YWtlblxyXG4gICAgICAvLyBpbiwgdGhlIHNhbWUgYXMgY3JlYXRlUG9pRm9yVGhyZWVKc1BsYWNlbWVudCBkb2VzIGZvciB0aGUgb3RoZXIgdGFncy5cclxuICAgICAgLi4uKGRhdGFNZWFzdXJlbWVudHMubWV0YWRhdGEgPyB7IG1ldGFkYXRhOiBkYXRhTWVhc3VyZW1lbnRzLm1ldGFkYXRhIH0gOiB7fSksXHJcbiAgICB9IGFzIFBPSTtcclxuICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5jcmVhdGVQT0lGb3JTcGFjZUlEKHBvaUlucHV0KTtcclxuICAgIGNvbnN0IHNjcmVlbiA9IGF3YWl0IGZldGNoKHNjcmVlbnNob3QpO1xyXG4gICAgY29uc3QgYmxvYiA9IGF3YWl0IHNjcmVlbi5ibG9iKCk7XHJcbiAgICBjb25zdCBmaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCAnbWVzdXJlLmpwZWcnLCB7IHR5cGU6ICdpbWFnZS9qcGVnJyB9KTtcclxuICAgIGNvbnN0IHVybCA9IGF3YWl0IHVwbG9hZEZpbGVUb1MzKHRoaXMucGF0aCwgZmlsZSwgY29tbWVudC5pZCk7XHJcbiAgICBpZiAodXJsKSB7XHJcbiAgICAgIGNvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLnVwZGF0ZUNvbW1lbnQoe1xyXG4gICAgICAgIGlkOiBjb21tZW50LmlkLFxyXG4gICAgICAgIGFubmV4ZTogdXJsLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IG1lYXN1cmVtZW50ID0ge1xyXG4gICAgICBjb21tZW50LFxyXG4gICAgICBwb2ksXHJcbiAgICB9IGFzIE1lYXN1cmVtZW50O1xyXG5cclxuICAgIGlmICghIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljc1xyXG4gICAgICAmJiAhIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmRcclxuICAgICAgJiYgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCgpKSB7XHJcbiAgICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5nZXRJbnN0YW5jZSgpLnJlY29yZChcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBldmVudFR5cGU6ICdPYmplY3QgQ3JlYXRpb24nLFxyXG4gICAgICAgICAgICBvYmplY3RUeXBlOiAnbWVhc3VyZW1lbnQnLFxyXG4gICAgICAgICAgICBtZWFzdXJlbWVudDogbWVhc3VyZW1lbnQsXHJcbiAgICAgICAgICAgIC8vem9uZUlkOiBzcGFjZUlELFxyXG4gICAgICAgICAgICB1c2VyOiB0aGlzLnVzZXJTZXJ2aWNlLmN1LFxyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiB0aGlzLmN1cnJlbnRTcGFjZUlELFxyXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgICAgIHpvbmVJZDogdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICAgIGZsb29ySWQ6IHRoaXMuc2VsZWN0ZWRGbG9vcj8uaWQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc3RyZWFtTmFtZTogJ3NtYXJ0ZXJwbGFuS2luZXNpcy1hbmFseXRpY3MnLFxyXG4gICAgICAgICAgLy8gcGFydGl0aW9uS2V5OiBcIlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJ0FXU0tpbmVzaXMnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgYSBkYXRlIGZpbHRlciBpcyBjdXJyZW50bHkgYXBwbGllZFxyXG4gICAgaWYgKHRoaXMuZGF0ZUZpbHRlciAmJiB0aGlzLmRhdGVGaWx0ZXIubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgIC8vIFVwZGF0ZSB0aGUgZW5kIGRhdGUgb2YgdGhlIGZpbHRlciB0byB0aGUgY3VycmVudCBkYXRlIHRvIGVuc3VyZSB0aGUgbmV3bHkgY3JlYXRlZCBtZWFzdXJlbWVudCBpcyBpbmNsdWRlZFxyXG4gICAgICBjb25zdCBuZXdFbmREYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgY29uc3QgbmV3RmlsdGVyID0gW3RoaXMuZGF0ZUZpbHRlclswXSwgbmV3RW5kRGF0ZV07XHJcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5kYXRlRmlsdGVyVXBkYXRlZChuZXdGaWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtZWFzdXJlbWVudDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldE1vZGVsM0RGb3JNZWFzdXJlbWVudChtZWFzdXJlbWVudDogTWVhc3VyZW1lbnQpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmdldFBvaUJ5RWxlbWVudElkKG1lYXN1cmVtZW50LmNvbW1lbnQuaWQpO1xyXG4gICAgaWYgKHBvaSAmJiBwb2kubWF0dGVycG9ydFN3ZWVwSUQpIHtcclxuICAgICAgY29uc3QgbmF2aWdhdGlvbnMgPVxyXG4gICAgICAgIGF3YWl0IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TmF2aWdhdGlvbnNGb3JNYXR0ZXJwb3J0SURGb3JTcGFjZShcclxuICAgICAgICAgIHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCxcclxuICAgICAgICAgIG1lYXN1cmVtZW50LmNvbW1lbnQuc3BhY2VJRFxyXG4gICAgICAgICk7XHJcbiAgICAgIGNvbnN0IFtwb2lOYXZpZ2F0aW9uXSA9IG5hdmlnYXRpb25zO1xyXG4gICAgICByZXR1cm4gcG9pTmF2aWdhdGlvbi5ub2RlLm1vZGVsM0Q7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldE1lYXN1cmVtZW50c0ZvclNwYWNlRm9yVXNlcihcclxuICAgIHNwYWNlSUQ6IHN0cmluZ1xyXG4gICk6IFByb21pc2U8TWVhc3VyZW1lbnRbXT4ge1xyXG4gICAgbGV0IGNvbW1lbnRzID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5nZXRDb21tZW50c0J5U3BhY2VJRChzcGFjZUlEKTtcclxuICAgIGNvbW1lbnRzID0gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck1lYXN1cmVtZW50c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgc3BhY2VJRCxcclxuICAgICAgY29tbWVudHNcclxuICAgICk7XHJcbiAgICBsZXQgbWVhc3VyZW1lbnRzID0gW107XHJcbiAgICBpZiAoY29tbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICBjb21tZW50cy5tYXAoYXN5bmMgKGNvbW1lbnQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1lYXN1cmVtZW50ID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5yZWFkQ29tbWVudEFzTWVhc3VyZW1lbnQoY29tbWVudC5pZCk7XHJcbiAgICAgICAgICBtZWFzdXJlbWVudHMucHVzaChtZWFzdXJlbWVudCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtZWFzdXJlbWVudHM7XHJcbiAgfVxyXG5cclxuICB1bnN1YnNjcmliZSgpIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL21lYXN1cmVtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFFM0QsT0FBTyxFQUFlLE9BQU8sRUFBc0IsTUFBTSxxQkFBcUIsQ0FBQztBQUcvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBVTdELE1BQU0sT0FBTyxrQkFBa0I7SUFzQ25CO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBM0NWLElBQUksR0FBRyxlQUFlLENBQUM7SUFFdkIsbUJBQW1CLEdBR2YsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUU1QixnQkFBZ0IsR0FBK0IsSUFBSSxlQUFlLENBQVksSUFBSSxDQUFDLENBQUM7SUFFcEYsbUJBQW1CLEdBR2QsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuQixjQUFjLENBQVM7SUFFdkIsWUFBWSxDQUFTO0lBRXJCLFVBQVUsQ0FBUztJQUVuQixpQkFBaUIsR0FBWSxLQUFLLENBQUMsQ0FBQyxxREFBcUQ7SUFFekYsVUFBVSxHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTdDLFFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUUzQyxtQkFBbUIsQ0FBTSxDQUFDLEtBQUs7SUFFL0IsY0FBYyxHQUFXLElBQUksQ0FBQztJQUU5QixhQUFhLEdBQVMsSUFBSSxDQUFDO0lBRW5CLFFBQVEsR0FBRyxJQUFJ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SSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQTVRVSxrQkFBa0Isa0JBb0NuQixtQ0FBbUM7NEdBcENsQyxrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBcUNJLE1BQU07MkJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnLi4vLi4vaGVscGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IE1lYXN1cmVtZW50LCBQb2lUeXBlLCBDb21tZW50LCBQT0ksIFpvbmUgfSBmcm9tICcuLi8uLi90eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi9maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vbmF2aWdhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVsZXRlRnJvbVMzLCB1cGxvYWRGaWxlVG9TMyB9IGZyb20gJy4uL3MzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9jb21tZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQb2lTZXJ2aWNlIH0gZnJvbSAnLi9wb2kuc2VydmljZSc7XG5pbXBvcnQgeyBab25lQ2hhbmdlU2VydmljZSB9IGZyb20gXCIuLi96b25lQ2hhbmdlLnNlcnZpY2VcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1lYXN1cmVtZW50U2VydmljZSB7XG4gIHBhdGggPSAnbWVhc3VyZW1lbnRzLyc7XG5cbiAgY3VycmVudE1lYXN1cmVtZW50czoge1xuICAgIHNwYWNlOiBNZWFzdXJlbWVudFtdO1xuICAgIHpvbmU6IE1lYXN1cmVtZW50W107XG4gIH0gPSB7IHNwYWNlOiBbXSwgem9uZTogW10gfTtcblxuICBtZWFzdXJlbWVudHNUYWdzOiBCZWhhdmlvclN1YmplY3Q8Q29tbWVudFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29tbWVudFtdPihudWxsKTtcblxuICBtZWFzdXJlbWVudHNVcGRhdGVkOiBTdWJqZWN0PHtcbiAgICBzcGFjZTogTWVhc3VyZW1lbnRbXTtcbiAgICB6b25lOiBNZWFzdXJlbWVudFtdO1xuICB9PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY3VycmVudFNwYWNlSUQ6IHN0cmluZztcblxuICB6b25lSURGaWx0ZXI6IHN0cmluZztcblxuICBkYXRlRmlsdGVyOiBEYXRlW107XG5cbiAgbWVhc3VyZW1lbnRGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaWYgZmFsc2UgbWVhbnMgbm8gZmlsdGVyaW5nLCBldmVyeXRoaW5nIGlzIGFsbG93ZWRcblxuICB1cGRhdGVEb25lOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcblxuICB1cGRhdGluZzogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgYXdzS2luZXNpc0FuYWx5dGljczogYW55OyAvL0FXU1xuXG4gIGZsb29yc1BlclNwYWNlOiBab25lW10gPSBudWxsO1xuXG4gIHNlbGVjdGVkRmxvb3I6IFpvbmUgPSBudWxsO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ2N1cnJlbnRBd3NLaW5lc2lzQW5hbHl0aWNzU2VydmljZScpXG4gICAgYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkOiBhbnksXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcbiAgICBwcml2YXRlIGNvbW1lbnRTZXJ2aWNlOiBDb21tZW50U2VydmljZSxcbiAgICBwcml2YXRlIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9uZUNoYW5nZVNlcnZpY2U6IFpvbmVDaGFuZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcyA9IGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDtcbiAgICBjb25zdCBpc011c2V1bVVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc09ubHlNdXNldW1Sb2xlKCk7XG4gICAgaWYgKCFpc011c2V1bVVzZXIpIHtcbiAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZS5zdWJzY3JpYmUoKHpvbmUpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRDtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNUYWdzLm5leHQobnVsbCk7XG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IG51bGwgfSk7XG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudEZpbHRlciA9IG51bGw7XG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyKSB7XG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSB6b25lLmlkO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiZ29pbmcgdG8gaW5pdCBtZWFzdXJlbWVudHMgZnJvbSB6b25lXCIpO1xuICAgICAgICAgIHRoaXMuaW5pdE1lYXN1cmVtZW50cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gVGhlIFRocmVlLmpzIHZpZXdlciBzaG93cyBhIHdob2xlIHNwYWNlIGF0IG9uY2UsIHdpdGggbm8gem9uZSB0byBuYXZpZ2F0ZSBpbnRvLCBzbyBpdFxuICAgICAgLy8gYW5ub3VuY2VzIGl0c2VsZiBoZXJlIGluc3RlYWQgb2YgdGhyb3VnaCBgem9uZUNoYW5nZWAuXG4gICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnNwYWNlV2l0aG91dFpvbmVzLnN1YnNjcmliZSgoc3BhY2VJRCkgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gc3BhY2VJRDtcbiAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSBudWxsO1xuICAgICAgICBpZiAoIXNwYWNlSUQpIHtcbiAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1RhZ3MubmV4dChudWxsKTtcbiAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogbnVsbCB9KTtcbiAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50RmlsdGVyID0gbnVsbDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0TWVhc3VyZW1lbnRzKCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnN1YnNjcmliZVRvRGF0YUZpbHRlclVwZGF0ZSgoZGF0ZVJhbmdlKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0ZUZpbHRlciA9IGRhdGVSYW5nZTtcbiAgICAgICAgdGhpcy5pbml0TWVhc3VyZW1lbnRzKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGF0ZUZpbHRlciA9IHRoaXMuZmlsdGVyU2VydmljZS5jdXJyZW50RGF0ZUZpbHRlcjtcbiAgICAgIHRoaXMudXBkYXRlRG9uZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5pbml0TWVhc3VyZW1lbnRzKCkpO1xuICAgIH1cblxuICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2UuZmxvb3JIYXNDaGFuZ2VkLnN1YnNjcmliZSgoZmxvb3IpID0+IHtcbiAgICAgIGlmIChmbG9vcikge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSBmbG9vcjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBhc3luYyBpbml0TWVhc3VyZW1lbnRzKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XG4gICAgICB0aGlzLnVwZGF0aW5nLm5leHQodHJ1ZSk7XG4gICAgICBsZXQgbWVhc3VyZW1lbnRzID0gYXdhaXQgdGhpcy5nZXRNZWFzdXJlbWVudHNGb3JTcGFjZUZvclVzZXIoXG4gICAgICAgIHRoaXMuY3VycmVudFNwYWNlSURcbiAgICAgICk7XG4gICAgICBpZiAobWVhc3VyZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0ZUZpbHRlcikge1xuICAgICAgICAgIG1lYXN1cmVtZW50cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJNZWFzdXJlbWVudHNGb3JEYXRlUmFuZ2UoXG4gICAgICAgICAgICBtZWFzdXJlbWVudHMsXG4gICAgICAgICAgICB0aGlzLmRhdGVGaWx0ZXJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1lYXN1cmVtZW50RmlsdGVyKSB7XG4gICAgICAgICAgbWVhc3VyZW1lbnRzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnNwYWNlID0gbWVhc3VyZW1lbnRzO1xuICAgICAgICAvLyBlbWl0IG9uIHRhZ3Mgc2hvdWxkIGJlIGFmdGVyIHNldHRpbmcgY3VycmVudC5zcGFjZSAhIVxuXG4gICAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xuICAgICAgICAgIGNvbnN0IGNvbW1lbnRzWm9uZSA9IGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJPYmplY3RzRm9yWm9uZShcbiAgICAgICAgICAgIG1lYXN1cmVtZW50cy5tYXAoKG1lYXN1cmUpID0+IG1lYXN1cmUuY29tbWVudCksXG4gICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlclxuICAgICAgICAgICk7XG4gICAgICAgICAgbWVhc3VyZW1lbnRzID0gbWVhc3VyZW1lbnRzLmZpbHRlcigobWVhc3VyZSkgPT5cbiAgICAgICAgICAgIGNvbW1lbnRzWm9uZS5pbmNsdWRlcyhtZWFzdXJlLmNvbW1lbnQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVGFncy5uZXh0KG1lYXN1cmVtZW50cy5tYXAoKG0pID0+IG0uY29tbWVudCkpO1xuXG4gICAgICAgIG1lYXN1cmVtZW50cy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5ldyBEYXRlKGIuY29tbWVudC5jcmVhdGVkQXQpIC1cbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5ldyBEYXRlKGEuY29tbWVudC5jcmVhdGVkQXQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy56b25lID0gbWVhc3VyZW1lbnRzO1xuICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnNwYWNlID0gW107XG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy56b25lID0gW107XG4gICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVXBkYXRlZC5uZXh0KHsgc3BhY2U6IFtdLCB6b25lOiBbXSB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1lYXN1cmVtZW50c1RhZ3MubmV4dChudWxsKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGluZy5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZU1lYXN1cmVtZW50KG1lYXN1cmVtZW50OiBNZWFzdXJlbWVudCk6IFByb21pc2U8Q29tbWVudD4ge1xuICAgIGNvbnN0IGRlbGV0ZWRDb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVDb21tZW50KFxuICAgICAgbWVhc3VyZW1lbnQuY29tbWVudC5pZFxuICAgICk7XG4gICAgaWYgKGRlbGV0ZWRDb21tZW50KSB7XG4gICAgICBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZGVsZXRlUG9pKG1lYXN1cmVtZW50LnBvaS5pZCk7XG4gICAgICBjb25zdCBwcmVmaXggPSBgJHttZWFzdXJlbWVudC5jb21tZW50LmlkLnNsaWNlKDAsIDgpfV9gO1xuICAgICAgY29uc3QgcGF0aCA9IGAke3RoaXMucGF0aCArIHByZWZpeH1tZXN1cmUuanBlZ2A7XG4gICAgICBhd2FpdCBkZWxldGVGcm9tUzMocGF0aCk7XG4gICAgfVxuICAgIHJldHVybiBkZWxldGVkQ29tbWVudDtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU1lYXN1cmVtZW50Rm9yU3BhY2UoXG4gICAgY29tbWVudElucHV0OiBDb21tZW50LFxuICAgIGRhdGFNZWFzdXJlbWVudHM6IHsgbWVhc3VyZTogYW55W107IHN3ZWVwOiBzdHJpbmc7IG1ldGFkYXRhPzogc3RyaW5nIH0sXG4gICAgc2NyZWVuc2hvdDogYW55LFxuICAgIHNwYWNlSUQ6IHN0cmluZ1xuICApOiBQcm9taXNlPE1lYXN1cmVtZW50PiB7XG4gICAgY29uc3QgbGFzdE1lYXN1cmUgPSBkYXRhTWVhc3VyZW1lbnRzLm1lYXN1cmU7XG4gICAgY29uc3Qgc3dlZXBJRCA9IGRhdGFNZWFzdXJlbWVudHMuc3dlZXA7XG4gICAgY29uc3QgbGFzdFBvaW50ID0gbGFzdE1lYXN1cmVbbGFzdE1lYXN1cmUubGVuZ3RoIC0gMV07XG4gICAgbGV0IGNvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmNyZWF0ZUNvbW1lbnQoY29tbWVudElucHV0KTtcbiAgICBjb25zdCBwb2lJbnB1dCA9IHtcbiAgICAgIGNvb3JkaW5hdGU6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgeDogbGFzdFBvaW50LngsXG4gICAgICAgIHk6IGxhc3RQb2ludC55LFxuICAgICAgICB6OiBsYXN0UG9pbnQueixcbiAgICAgIH0pLFxuICAgICAgdHlwZTogUG9pVHlwZS5NRUFTVVJFLFxuICAgICAgZWxlbWVudElEOiBjb21tZW50LmlkLFxuICAgICAgbWF0dGVycG9ydFN3ZWVwSUQ6IHN3ZWVwSUQsXG4gICAgICAvLyBPbmx5IHRoZSBUaHJlZS5qcyB2aWV3ZXIgc2VuZHMgdGhpczogaXQgcmVjb3JkcyB3aGljaCAzRCBtb2RlbCB0aGUgbWVhc3VyZW1lbnQgd2FzIHRha2VuXG4gICAgICAvLyBpbiwgdGhlIHNhbWUgYXMgY3JlYXRlUG9pRm9yVGhyZWVKc1BsYWNlbWVudCBkb2VzIGZvciB0aGUgb3RoZXIgdGFncy5cbiAgICAgIC4uLihkYXRhTWVhc3VyZW1lbnRzLm1ldGFkYXRhID8geyBtZXRhZGF0YTogZGF0YU1lYXN1cmVtZW50cy5tZXRhZGF0YSB9IDoge30pLFxuICAgIH0gYXMgUE9JO1xuICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5jcmVhdGVQT0lGb3JTcGFjZUlEKHBvaUlucHV0KTtcbiAgICBjb25zdCBzY3JlZW4gPSBhd2FpdCBmZXRjaChzY3JlZW5zaG90KTtcbiAgICBjb25zdCBibG9iID0gYXdhaXQgc2NyZWVuLmJsb2IoKTtcbiAgICBjb25zdCBmaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCAnbWVzdXJlLmpwZWcnLCB7IHR5cGU6ICdpbWFnZS9qcGVnJyB9KTtcbiAgICBjb25zdCB1cmwgPSBhd2FpdCB1cGxvYWRGaWxlVG9TMyh0aGlzLnBhdGgsIGZpbGUsIGNvbW1lbnQuaWQpO1xuICAgIGlmICh1cmwpIHtcbiAgICAgIGNvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLnVwZGF0ZUNvbW1lbnQoe1xuICAgICAgICBpZDogY29tbWVudC5pZCxcbiAgICAgICAgYW5uZXhlOiB1cmwsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgbWVhc3VyZW1lbnQgPSB7XG4gICAgICBjb21tZW50LFxuICAgICAgcG9pLFxuICAgIH0gYXMgTWVhc3VyZW1lbnQ7XG5cbiAgICBpZiAoISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3NcbiAgICAgICYmICEhdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZFxuICAgICAgJiYgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCgpKSB7XG4gICAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MuZ2V0SW5zdGFuY2UoKS5yZWNvcmQoXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGV2ZW50VHlwZTogJ09iamVjdCBDcmVhdGlvbicsXG4gICAgICAgICAgICBvYmplY3RUeXBlOiAnbWVhc3VyZW1lbnQnLFxuICAgICAgICAgICAgbWVhc3VyZW1lbnQ6IG1lYXN1cmVtZW50LFxuICAgICAgICAgICAgLy96b25lSWQ6IHNwYWNlSUQsXG4gICAgICAgICAgICB1c2VyOiB0aGlzLnVzZXJTZXJ2aWNlLmN1LFxuICAgICAgICAgICAgbG9jYXRpb25JZDogdGhpcy5jdXJyZW50U3BhY2VJRCxcbiAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIHpvbmVJZDogdGhpcy56b25lSURGaWx0ZXIsXG4gICAgICAgICAgICBmbG9vcklkOiB0aGlzLnNlbGVjdGVkRmxvb3I/LmlkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RyZWFtTmFtZTogJ3NtYXJ0ZXJwbGFuS2luZXNpcy1hbmFseXRpY3MnLFxuICAgICAgICAgIC8vIHBhcnRpdGlvbktleTogXCJcIixcbiAgICAgICAgfSxcbiAgICAgICAgJ0FXU0tpbmVzaXMnXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGEgZGF0ZSBmaWx0ZXIgaXMgY3VycmVudGx5IGFwcGxpZWRcbiAgICBpZiAodGhpcy5kYXRlRmlsdGVyICYmIHRoaXMuZGF0ZUZpbHRlci5sZW5ndGggPT09IDIpIHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgZW5kIGRhdGUgb2YgdGhlIGZpbHRlciB0byB0aGUgY3VycmVudCBkYXRlIHRvIGVuc3VyZSB0aGUgbmV3bHkgY3JlYXRlZCBtZWFzdXJlbWVudCBpcyBpbmNsdWRlZFxuICAgICAgY29uc3QgbmV3RW5kRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICBjb25zdCBuZXdGaWx0ZXIgPSBbdGhpcy5kYXRlRmlsdGVyWzBdLCBuZXdFbmREYXRlXTtcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5kYXRlRmlsdGVyVXBkYXRlZChuZXdGaWx0ZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBtZWFzdXJlbWVudDtcbiAgfVxuXG4gIGFzeW5jIGdldE1vZGVsM0RGb3JNZWFzdXJlbWVudChtZWFzdXJlbWVudDogTWVhc3VyZW1lbnQpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5nZXRQb2lCeUVsZW1lbnRJZChtZWFzdXJlbWVudC5jb21tZW50LmlkKTtcbiAgICBpZiAocG9pICYmIHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCkge1xuICAgICAgY29uc3QgbmF2aWdhdGlvbnMgPVxuICAgICAgICBhd2FpdCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldE5hdmlnYXRpb25zRm9yTWF0dGVycG9ydElERm9yU3BhY2UoXG4gICAgICAgICAgcG9pLm1hdHRlcnBvcnRTd2VlcElELFxuICAgICAgICAgIG1lYXN1cmVtZW50LmNvbW1lbnQuc3BhY2VJRFxuICAgICAgICApO1xuICAgICAgY29uc3QgW3BvaU5hdmlnYXRpb25dID0gbmF2aWdhdGlvbnM7XG4gICAgICByZXR1cm4gcG9pTmF2aWdhdGlvbi5ub2RlLm1vZGVsM0Q7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgZ2V0TWVhc3VyZW1lbnRzRm9yU3BhY2VGb3JVc2VyKFxuICAgIHNwYWNlSUQ6IHN0cmluZ1xuICApOiBQcm9taXNlPE1lYXN1cmVtZW50W10+IHtcbiAgICBsZXQgY29tbWVudHMgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmdldENvbW1lbnRzQnlTcGFjZUlEKHNwYWNlSUQpO1xuICAgIGNvbW1lbnRzID0gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck1lYXN1cmVtZW50c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcbiAgICAgIHNwYWNlSUQsXG4gICAgICBjb21tZW50c1xuICAgICk7XG4gICAgbGV0IG1lYXN1cmVtZW50cyA9IFtdO1xuICAgIGlmIChjb21tZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgY29tbWVudHMubWFwKGFzeW5jIChjb21tZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgbWVhc3VyZW1lbnQgPVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5yZWFkQ29tbWVudEFzTWVhc3VyZW1lbnQoY29tbWVudC5pZCk7XG4gICAgICAgICAgbWVhc3VyZW1lbnRzLnB1c2gobWVhc3VyZW1lbnQpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG1lYXN1cmVtZW50cztcbiAgfVxuXG4gIHVuc3Vic2NyaWJlKCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -223,4 +223,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
223
223
|
type: Inject,
|
|
224
224
|
args: ['currentAPIService']
|
|
225
225
|
}] }] });
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvbWlzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQWtDLGFBQWEsRUFBRSxVQUFVLEVBQWlCLE1BQU0scUJBQXFCLENBQUM7QUFDL0csT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFLakMsTUFBTSxPQUFPLGNBQWM7SUFDdkIsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUVoRCxrQkFBa0IsQ0FBVTtJQUU1QixrQkFBa0IsQ0FBVTtJQUU1QixhQUFhLENBQVM7SUFFdEIsR0FBRyxDQUFNLENBQUMsS0FBSztJQUVmO0lBQ0ksa0RBQWtEO0lBQ3JCLFdBQWdCO1FBRTdDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBYztRQUN0QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMvRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFF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QUcsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sd0JBQXdCLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5RSxPQUFPLHdCQUF3QixHQUFHLG1CQUFtQixDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0EvUVEsY0FBYyxrQkFhWCxtQkFBbUI7NEdBYnRCLGNBQWMsY0FGWCxNQUFNOzs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBY1EsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBkYXRlSGFzRXhwaXJlZCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWlzc2lvbiwgT3JnYW5pc2F0aW9uLCBQcm9maWxlLCBQcm9maWxlU3RhdHVzLCBSb2xlU3RhdHVzLCBWaXNpdFRlbXBsYXRlIH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tIFwibHV4b25cIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWlzc2lvblNlcnZpY2Uge1xyXG4gICAgY3VycmVudE1pc3Npb25zVXBkYXRlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gICAgbGFzdEV4cGlyZWRNaXNzaW9uOiBNaXNzaW9uO1xyXG5cclxuICAgIG5leHRNaXNzaW9uVG9TdGFydDogTWlzc2lvbjtcclxuXHJcbiAgICBjdXJyZW50VXNlcklEOiBzdHJpbmc7XHJcblxyXG4gICAgQVBJOiBhbnk7IC8vQVdTXHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgLy8gcHJpdmF0ZSBhZmZlY3RhdGlvblNlcnZpY2U6IEFmZmVjdGF0aW9uU2VydmljZSxcclxuICAgICAgICBASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnlcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNGcm9tVXNlcklEKHVzZXJJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlVc2VyKHVzZXJJRCkudGhlbigobWlzc2lvbnMpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG1pc3Npb25zLml0ZW1zLmZpbHRlcigobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeU9yZGVyZWRPcmdhbmlzYXRpb24oXHJcbiAgICAgICAgb3JkZXJlZE9yZ0lEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeU9yZGVyZWRPcmdhbmlzYXRpb24ob3JkZXJlZE9yZ0lEKS50aGVuKFxyXG4gICAgICAgICAgICAocmVzcG9uc2UpID0+IHJlc3BvbnNlLml0ZW1zLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeU9yZ2FuaXNhdGlvbihvcmdJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlPcmdhbmlzYXRpb24ob3JnSUQpLnRoZW4oXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjcmVhdGUobWlzc2lvbjogTWlzc2lvbik6IFByb21pc2U8TWlzc2lvbj4ge1xyXG4gICAgICAgIGNvbnN0IHVwZE1pc3Npb24gPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlTWlzc2lvbihtaXNzaW9uKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1pc3Npb24gY3JlYXRlZFwiLCB1cGRNaXNzaW9uKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrSWZDdXJyZW50VXNlck1pc3Npb25DaGFuZ2VkKHVwZE1pc3Npb24pO1xyXG4gICAgICAgIHJldHVybiB1cGRNaXNzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZShtaXNzaW9uOiBhbnkpOiBQcm9taXNlPE1pc3Npb24+IHtcclxuICAgICAgICBjb25zdCB1cGRNaXNzaW9uID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZU1pc3Npb24obWlzc2lvbik7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJNaXNzaW9uIHVwZGF0ZWRcIiwgdXBkTWlzc2lvbik7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jaGVja0lmQ3VycmVudFVzZXJNaXNzaW9uQ2hhbmdlZCh1cGRNaXNzaW9uKTtcclxuICAgICAgICByZXR1cm4gdXBkTWlzc2lvbjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhc3NlcnRSb2xlRm9yVXNlckluT3JnKFxyXG4gICAgICAgIHVzZXI6IFByb2ZpbGUsXHJcbiAgICAgICAgb3JnOiBPcmdhbmlzYXRpb24sXHJcbiAgICAgICAgcm9sZTogUm9sZVN0YXR1cyxcclxuICAgICk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1pc3Npb25zRnJvbVVzZXJJRCh1c2VyLmlkKS50aGVuKChtaXNzaW9ucykgPT4ge1xyXG4gICAgICAgICAgICBpZiAobWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1pc09yZyA9IG1pc3Npb25zLmZpbHRlcigobWlzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1pcy5vcmdhbmlzYXRpb25JRCA9PT0gb3JnLmlkICYmIG1pcy5yb2xlID09PSByb2xlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlzT3JnLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zQnlPcmRlcmVkT3JnYW5pc2F0aW9uQnlTcGFjZShcclxuICAgICAgICBvcmRPcmdJRDogc3RyaW5nLFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8TWlzc2lvbltdPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5T3JkZXJlZE9yZ2FuaXNhdGlvbkJ5U3BhY2Uob3JkT3JnSUQsIHtcclxuICAgICAgICAgICAgZXE6IHNwYWNlSUQsXHJcbiAgICAgICAgfSkudGhlbigobWlzKSA9PiBtaXMuaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNvZnREZWxldGVNaXNzaW9uKG1pc3Npb25JRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uPiB7XHJcbiAgICAgICAgLy8gY29uc3QgaGFyZERlbGV0ZSA9IGF3YWl0IHRoaXMuY2FuSGFyZERldGVsZU1pc3Npb24obWlzc2lvbi5pZCk7XHJcbiAgICAgICAgLy8gaWYgKGhhcmREZWxldGUpIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuIHRoaXMuaGFyZERlbGV0ZU1pc3Npb24obWlzc2lvbi5pZCk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiU29mdCBEZWxldGluZyBtaXNzaW9uXCIpO1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25VcGQgPSBhd2FpdCB0aGlzLnVwZGF0ZSh7XHJcbiAgICAgICAgICAgIGlkOiBtaXNzaW9uSUQsXHJcbiAgICAgICAgICAgIGRlbGV0ZWRBdDogRGF0ZS5ub3coKSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrSWZDdXJyZW50VXNlck1pc3Npb25DaGFuZ2VkKG1pc3Npb25VcGQpO1xyXG4gICAgICAgIHJldHVybiBtaXNzaW9uVXBkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxpc3QoKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICBjb25zdCBtaXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTGlzdE1pc3Npb25zKCk7XHJcbiAgICAgICAgcmV0dXJuIG1pcy5pdGVtcy5maWx0ZXIoKG0pID0+ICFtLmRlbGV0ZWRBdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYXN5bmMgY2FuSGFyZERldGVsZU1pc3Npb24obWlzc2lvbklEOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIC8vICAgICBjb25zdCBldmVudHMgPSAoXHJcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuQVBJLkxpc3RFdmVudHMoeyBvd25lcklEOiB7IGVxOiBtaXNzaW9uSUQgfSB9KVxyXG4gICAgLy8gICAgICkuaXRlbXM7XHJcbiAgICAvLyAgICAgaWYgKGV2ZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgY29uc3QgY29tbWVudHMgPSAoXHJcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuQVBJLkxpc3RDb21tZW50cyh7IG93bmVySUQ6IHsgZXE6IG1pc3Npb25JRCB9IH0pXHJcbiAgICAvLyAgICAgKS5pdGVtcztcclxuICAgIC8vICAgICBpZiAoY29tbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGNvbnN0IGFmZmVjdGF0aW9ucyA9XHJcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuYWZmZWN0YXRpb25TZXJ2aWNlLmdldEFmZmVjdGF0aW9uc0Zyb21NaXNzaW9uSUQoXHJcbiAgICAvLyAgICAgICAgICAgICBtaXNzaW9uSUQsXHJcbiAgICAvLyAgICAgICAgICk7XHJcbiAgICAvLyAgICAgaWYgKGFmZmVjdGF0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgYXN5bmMgaGFyZERlbGV0ZU1pc3Npb24obWlzc2lvbklEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb24+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZU1pc3Npb24oeyBpZDogbWlzc2lvbklEIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFjdGl2YXRlZE1pc3Npb25zKG1pc3Npb25zOiBNaXNzaW9uW10pOiBNaXNzaW9uW10ge1xyXG4gICAgICAgIGNvbnN0IGFjdGl2YXRlZCA9IFtdO1xyXG4gICAgICAgIG1pc3Npb25zLm1hcChhc3luYyAobWlzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpc0FjdGl2YXRlZCA9XHJcbiAgICAgICAgICAgICAgICBtaXNzaW9uLmdyb3VwcyAmJiBtaXNzaW9uLmdyb3Vwcy5pbmNsdWRlcyhQcm9maWxlU3RhdHVzLkFDVElWRSk7XHJcbiAgICAgICAgICAgIGlmIChpc0FjdGl2YXRlZCkge1xyXG4gICAgICAgICAgICAgICAgYWN0aXZhdGVkLnB1c2gobWlzc2lvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYWN0aXZhdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zRm9yWm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbltdPiB7XHJcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVpvbmUoem9uZUlEKSkuaXRlbXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlTcGFjZShzcGFjZUlEKS50aGVuKChtaXNzaW9ucykgPT4gbWlzc2lvbnMuaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2FtZSBhcyBnZXRNaXNzaW9uc0ZvclNwYWNlKCksIGJ1dCBmb2xsb3dzIGBuZXh0VG9rZW5gIHVudGlsIHRoZSBjb25uZWN0aW9uIGlzXHJcbiAgICAgKiBleGhhdXN0ZWQgaW5zdGVhZCBvZiByZXR1cm5pbmcgb25seSB0aGUgZmlyc3QgcGFnZS5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZ2V0QWxsTWlzc2lvbnNGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIGNvbnN0IGFsbDogTWlzc2lvbltdID0gW107XHJcbiAgICAgICAgbGV0IG5leHRUb2tlbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgIGRvIHtcclxuICAgICAgICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5U3BhY2Uoc3BhY2VJRCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDEwMDAsIG5leHRUb2tlbik7XHJcbiAgICAgICAgICAgIGlmIChwYWdlPy5pdGVtcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgYWxsLnB1c2goLi4ucGFnZS5pdGVtcy5maWx0ZXIoKG1pczogTWlzc2lvbiB8IG51bGwpID0+ICEhbWlzICYmICFtaXMuZGVsZXRlZEF0KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbmV4dFRva2VuID0gcGFnZT8ubmV4dFRva2VuID8/IG51bGw7XHJcbiAgICAgICAgfSB3aGlsZSAobmV4dFRva2VuKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGFsbDtcclxuICAgIH1cclxuXHJcbiAgICBhY3RpdmF0ZU1pc3Npb24obWlzOiBNaXNzaW9uKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBtaXMgJiZcclxuICAgICAgICAgICAgKCFtaXMuZ3JvdXBzIHx8ICFtaXMuZ3JvdXBzLmluY2x1ZGVzKFByb2ZpbGVTdGF0dXMuQUNUSVZFKSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgY29uc3QgZ3JvdXBzID0gbWlzLmdyb3VwcyA/IG1pcy5ncm91cHMgOiBbXTtcclxuICAgICAgICAgICAgZ3JvdXBzLnB1c2goUHJvZmlsZVN0YXR1cy5BQ1RJVkUpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZSh7IGlkOiBtaXMuaWQsIGdyb3VwcyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeVRlbXBsYXRlKHRlbXBsYXRlSUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbltdPiB7XHJcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVRlbXBsYXRlKHRlbXBsYXRlSUQpKS5pdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChtaXMpID0+ICFtaXMuZGVsZXRlZEF0LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbihtaXNzaW9uSUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0TWlzc2lvbihtaXNzaW9uSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zQnlab25lQnlSb2xlKFxyXG4gICAgICAgIHpvbmVJRDogc3RyaW5nLFxyXG4gICAgICAgIHJvbGU6IFJvbGVTdGF0dXMsXHJcbiAgICApOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5Wm9uZUJ5Um9sZShcclxuICAgICAgICAgICAgICAgIHpvbmVJRCxcclxuICAgICAgICAgICAgICAgIHsgZXE6IHJvbGUgfSxcclxuICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICB7IGRlbGV0ZWRBdDogeyBhdHRyaWJ1dGVFeGlzdHM6IGZhbHNlIH0gfSxcclxuICAgICAgICAgICAgICAgIDIwMCxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICkuaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hlY2tJZkN1cnJlbnRVc2VyTWlzc2lvbkNoYW5nZWQoY2hhbmdlZE1pc3Npb246IE1pc3Npb24pIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50VXNlcklEID09PSBjaGFuZ2VkTWlzc2lvbi51c2VySUQpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TWlzc2lvbnNVcGRhdGVkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluc3RhbnRNaXNzaW9uc09mQ3VycmVudChcclxuICAgICAgICBjdXJyZW50VXNlcklEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPE1pc3Npb25bXSB8IG51bGw+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRVc2VySUQgPSBjdXJyZW50VXNlcklEO1xyXG4gICAgICAgIGxldCBtaXNzaW9ucyA9IGF3YWl0IHRoaXMuZ2V0TWlzc2lvbnNGcm9tVXNlcklEKGN1cnJlbnRVc2VySUQpO1xyXG5cclxuICAgICAgICAvKiogRmlsdGVyIHRvIGtlZXAgb25seSBhdmFpbGFibGUgbWlzc2lvbnMgKi9cclxuICAgICAgICBtaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcigobWlzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBoYXNFeHBpcmVkID0gZGF0ZUhhc0V4cGlyZWQobWlzc2lvbi5lbmREYXRlVGltZSk7XHJcblxyXG4gICAgICAgICAgICAvKiogVXBkYXRlIHRoaXMubGFzdEV4cGlyZWRNaXNzaW9uICovXHJcbiAgICAgICAgICAgIGlmIChoYXNFeHBpcmVkKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXhwaXJlZERhdGUgPSB0aGlzLmxhc3RFeHBpcmVkTWlzc2lvblxyXG4gICAgICAgICAgICAgICAgICAgID8gbmV3IERhdGUodGhpcy5sYXN0RXhwaXJlZE1pc3Npb24uZW5kRGF0ZVRpbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZUV4cGlyZWQgPSBuZXcgRGF0ZShtaXNzaW9uLmVuZERhdGVUaW1lKTtcclxuICAgICAgICAgICAgICAgIGlmICghbGFzdEV4cGlyZWREYXRlIHx8IGRhdGVFeHBpcmVkID4gbGFzdEV4cGlyZWREYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0RXhwaXJlZE1pc3Npb24gPSBtaXNzaW9uO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiAhaGFzRXhwaXJlZDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKG1pc3Npb25zLnNvbWUoKG1pcykgPT4gbWlzLnJvbGUgPT09IFJvbGVTdGF0dXMuVklTSVRPUl9NVVNFVU0pICYmIG1pc3Npb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgLy8gd29ya2Zsb3cgZm9yIFZJU0lUT1JfTVVTRVVNXHJcbiAgICAgICAgICAgIHJldHVybiBtaXNzaW9ucztcclxuICAgICAgICB9XHJcbiAgICAgICAgLyoqIEtlZXAgb25seSBzdGFydGVkIG1pc3Npb25zICovXHJcbiAgICAgICAgbGV0IG5leHRNaXNzaW9uRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgbWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoKG1pc3Npb24pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc3RhcnRlZCA9IG1pc3Npb24uc3RhcnREYXRlVGltZVxyXG4gICAgICAgICAgICAgICAgPyBkYXRlSGFzRXhwaXJlZChtaXNzaW9uLnN0YXJ0RGF0ZVRpbWUpXHJcbiAgICAgICAgICAgICAgICA6IHRydWU7XHJcbiAgICAgICAgICAgIC8qKiBVcGRhdGUgbmV4dCBtaXNzaW9uIHRvIHN0YXJ0ICovXHJcbiAgICAgICAgICAgIGlmICghc3RhcnRlZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWlzc2lvbkRhdGUgPSBuZXcgRGF0ZShtaXNzaW9uLnN0YXJ0RGF0ZVRpbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFuZXh0TWlzc2lvbkRhdGUgfHwgbWlzc2lvbkRhdGUgPCBuZXh0TWlzc2lvbkRhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRNaXNzaW9uVG9TdGFydCA9IG1pc3Npb247XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE1pc3Npb25EYXRlID0gbWlzc2lvbkRhdGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHN0YXJ0ZWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG1pc3Npb25zLmxlbmd0aCA+IDAgPyBtaXNzaW9ucyA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWx0ZXJzIHRoZSBtaXNzaW9ucyB0aGF0IGFzc2lzdGVkIHRvIGxpdmUgb2YgdGhlIHZpc2l0IChieSBjb21wYXJpbmcgdGhlIHJlYWxTdGFydFRpbWUgb2YgVmlzaXRUZW1wbGF0ZSBhbmQgY29ubmVjdGVkQXQgdGltZSlcclxuICAgICAqIEBwYXJhbSB0ZW1wbGF0ZSBWaXNpdFRlbXBsYXRlIFxyXG4gICAgICogQHBhcmFtIG1pc3Npb25zIE1pc3Npb25bXSBtaXNzaW9ucyBmb3IgdGhpcyB2aXNpdFxyXG4gICAgICogQHJldHVybnMgTWlzc2lvbltdIGZpbHRlcmVkIG1pc3Npb25zXHJcbiAgICAgKi9cclxuICAgIGZpbHRlck1pc3Npb25zQXNzaXRlZFRvTGl2ZUZvclRlbXBsYXRlKHRlbXBsYXRlOiBWaXNpdFRlbXBsYXRlLCBtaXNzaW9uczogTWlzc2lvbltdKTogTWlzc2lvbltdIHtcclxuICAgICAgICBjb25zdCB2aXNpdFN0YXJ0VGltZXN0YW1wID0gdGVtcGxhdGUucmVhbFN0YXJ0ZWRBdDtcclxuICAgICAgICByZXR1cm4gbWlzc2lvbnMuZmlsdGVyKChtaXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFtaXMuY29ubmVjdGVkVG9MaXZlQXQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobWlzLmNvbm5lY3RlZFRvTGl2ZUF0Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGxhc3RDb25uZWN0ZWRBdCA9IG1pcy5jb25uZWN0ZWRUb0xpdmVBdFttaXMuY29ubmVjdGVkVG9MaXZlQXQubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgIGNvbnN0IGxhc3RDb25uZWN0ZWRBdFRpbWVzdGFtcCA9IERhdGVUaW1lLmZyb21JU08obGFzdENvbm5lY3RlZEF0KS50b01pbGxpcygpO1xyXG4gICAgICAgICAgICByZXR1cm4gbGFzdENvbm5lY3RlZEF0VGltZXN0YW1wID4gdmlzaXRTdGFydFRpbWVzdGFtcDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvbWlzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQWtDLGFBQWEsRUFBRSxVQUFVLEVBQWlCLE1BQU0scUJBQXFCLENBQUM7QUFDL0csT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFLakMsTUFBTSxPQUFPLGNBQWM7SUFDdkIsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUVoRCxrQkFBa0IsQ0FBVTtJQUU1QixrQkFBa0IsQ0FBVTtJQUU1QixhQUFhLENBQVM7SUFFdEIsR0FBRyxDQUFNLENBQUMsS0FBSztJQUVmO0lBQ0ksa0RBQWtEO0lBQ3JCLFdBQWdCO1FBRTdDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBYztRQUN0QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMvRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFF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QUcsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sd0JBQXdCLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5RSxPQUFPLHdCQUF3QixHQUFHLG1CQUFtQixDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0EvUVEsY0FBYyxrQkFhWCxtQkFBbUI7NEdBYnRCLGNBQWMsY0FGWCxNQUFNOzs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBY1EsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBkYXRlSGFzRXhwaXJlZCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzLnNlcnZpY2VcIjtcbmltcG9ydCB7IE1pc3Npb24sIE9yZ2FuaXNhdGlvbiwgUHJvZmlsZSwgUHJvZmlsZVN0YXR1cywgUm9sZVN0YXR1cywgVmlzaXRUZW1wbGF0ZSB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIE1pc3Npb25TZXJ2aWNlIHtcbiAgICBjdXJyZW50TWlzc2lvbnNVcGRhdGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGxhc3RFeHBpcmVkTWlzc2lvbjogTWlzc2lvbjtcblxuICAgIG5leHRNaXNzaW9uVG9TdGFydDogTWlzc2lvbjtcblxuICAgIGN1cnJlbnRVc2VySUQ6IHN0cmluZztcblxuICAgIEFQSTogYW55OyAvL0FXU1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIC8vIHByaXZhdGUgYWZmZWN0YXRpb25TZXJ2aWNlOiBBZmZlY3RhdGlvblNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueVxuICAgICkge1xuICAgICAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1pc3Npb25zRnJvbVVzZXJJRCh1c2VySUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVVzZXIodXNlcklEKS50aGVuKChtaXNzaW9ucykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1pc3Npb25zLml0ZW1zLmZpbHRlcigobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1pc3Npb25zQnlPcmRlcmVkT3JnYW5pc2F0aW9uKFxuICAgICAgICBvcmRlcmVkT3JnSUQ6IHN0cmluZyxcbiAgICApOiBQcm9taXNlPE1pc3Npb25bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlPcmRlcmVkT3JnYW5pc2F0aW9uKG9yZGVyZWRPcmdJRCkudGhlbihcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeU9yZ2FuaXNhdGlvbihvcmdJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5T3JnYW5pc2F0aW9uKG9yZ0lEKS50aGVuKFxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyBjcmVhdGUobWlzc2lvbjogTWlzc2lvbik6IFByb21pc2U8TWlzc2lvbj4ge1xuICAgICAgICBjb25zdCB1cGRNaXNzaW9uID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZU1pc3Npb24obWlzc2lvbik7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTWlzc2lvbiBjcmVhdGVkXCIsIHVwZE1pc3Npb24pO1xuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrSWZDdXJyZW50VXNlck1pc3Npb25DaGFuZ2VkKHVwZE1pc3Npb24pO1xuICAgICAgICByZXR1cm4gdXBkTWlzc2lvbjtcbiAgICB9XG5cbiAgICBhc3luYyB1cGRhdGUobWlzc2lvbjogYW55KTogUHJvbWlzZTxNaXNzaW9uPiB7XG4gICAgICAgIGNvbnN0IHVwZE1pc3Npb24gPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlTWlzc2lvbihtaXNzaW9uKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJNaXNzaW9uIHVwZGF0ZWRcIiwgdXBkTWlzc2lvbik7XG4gICAgICAgIGF3YWl0IHRoaXMuY2hlY2tJZkN1cnJlbnRVc2VyTWlzc2lvbkNoYW5nZWQodXBkTWlzc2lvbik7XG4gICAgICAgIHJldHVybiB1cGRNaXNzaW9uO1xuICAgIH1cblxuICAgIGFzeW5jIGFzc2VydFJvbGVGb3JVc2VySW5PcmcoXG4gICAgICAgIHVzZXI6IFByb2ZpbGUsXG4gICAgICAgIG9yZzogT3JnYW5pc2F0aW9uLFxuICAgICAgICByb2xlOiBSb2xlU3RhdHVzLFxuICAgICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRNaXNzaW9uc0Zyb21Vc2VySUQodXNlci5pZCkudGhlbigobWlzc2lvbnMpID0+IHtcbiAgICAgICAgICAgIGlmIChtaXNzaW9ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pc09yZyA9IG1pc3Npb25zLmZpbHRlcigobWlzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtaXMub3JnYW5pc2F0aW9uSUQgPT09IG9yZy5pZCAmJiBtaXMucm9sZSA9PT0gcm9sZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlzT3JnLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1pc3Npb25zQnlPcmRlcmVkT3JnYW5pc2F0aW9uQnlTcGFjZShcbiAgICAgICAgb3JkT3JnSUQ6IHN0cmluZyxcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxuICAgICk6IFByb21pc2U8TWlzc2lvbltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeU9yZGVyZWRPcmdhbmlzYXRpb25CeVNwYWNlKG9yZE9yZ0lELCB7XG4gICAgICAgICAgICBlcTogc3BhY2VJRCxcbiAgICAgICAgfSkudGhlbigobWlzKSA9PiBtaXMuaXRlbXMpO1xuICAgIH1cblxuICAgIGFzeW5jIHNvZnREZWxldGVNaXNzaW9uKG1pc3Npb25JRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uPiB7XG4gICAgICAgIC8vIGNvbnN0IGhhcmREZWxldGUgPSBhd2FpdCB0aGlzLmNhbkhhcmREZXRlbGVNaXNzaW9uKG1pc3Npb24uaWQpO1xuICAgICAgICAvLyBpZiAoaGFyZERlbGV0ZSkge1xuICAgICAgICAvLyAgICAgcmV0dXJuIHRoaXMuaGFyZERlbGV0ZU1pc3Npb24obWlzc2lvbi5pZCk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgY29uc29sZS5sb2coXCJTb2Z0IERlbGV0aW5nIG1pc3Npb25cIik7XG4gICAgICAgIGNvbnN0IG1pc3Npb25VcGQgPSBhd2FpdCB0aGlzLnVwZGF0ZSh7XG4gICAgICAgICAgICBpZDogbWlzc2lvbklELFxuICAgICAgICAgICAgZGVsZXRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgdGhpcy5jaGVja0lmQ3VycmVudFVzZXJNaXNzaW9uQ2hhbmdlZChtaXNzaW9uVXBkKTtcbiAgICAgICAgcmV0dXJuIG1pc3Npb25VcGQ7XG4gICAgfVxuXG4gICAgYXN5bmMgbGlzdCgpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xuICAgICAgICBjb25zdCBtaXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTGlzdE1pc3Npb25zKCk7XG4gICAgICAgIHJldHVybiBtaXMuaXRlbXMuZmlsdGVyKChtKSA9PiAhbS5kZWxldGVkQXQpO1xuICAgIH1cblxuICAgIC8vIGFzeW5jIGNhbkhhcmREZXRlbGVNaXNzaW9uKG1pc3Npb25JRDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gICAgIGNvbnN0IGV2ZW50cyA9IChcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuQVBJLkxpc3RFdmVudHMoeyBvd25lcklEOiB7IGVxOiBtaXNzaW9uSUQgfSB9KVxuICAgIC8vICAgICApLml0ZW1zO1xuICAgIC8vICAgICBpZiAoZXZlbnRzLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBjb25zdCBjb21tZW50cyA9IChcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuQVBJLkxpc3RDb21tZW50cyh7IG93bmVySUQ6IHsgZXE6IG1pc3Npb25JRCB9IH0pXG4gICAgLy8gICAgICkuaXRlbXM7XG4gICAgLy8gICAgIGlmIChjb21tZW50cy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgY29uc3QgYWZmZWN0YXRpb25zID1cbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuYWZmZWN0YXRpb25TZXJ2aWNlLmdldEFmZmVjdGF0aW9uc0Zyb21NaXNzaW9uSUQoXG4gICAgLy8gICAgICAgICAgICAgbWlzc2lvbklELFxuICAgIC8vICAgICAgICAgKTtcbiAgICAvLyAgICAgaWYgKGFmZmVjdGF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgcmV0dXJuIHRydWU7XG4gICAgLy8gfVxuXG4gICAgYXN5bmMgaGFyZERlbGV0ZU1pc3Npb24obWlzc2lvbklEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVNaXNzaW9uKHsgaWQ6IG1pc3Npb25JRCB9KTtcbiAgICB9XG5cbiAgICBnZXRBY3RpdmF0ZWRNaXNzaW9ucyhtaXNzaW9uczogTWlzc2lvbltdKTogTWlzc2lvbltdIHtcbiAgICAgICAgY29uc3QgYWN0aXZhdGVkID0gW107XG4gICAgICAgIG1pc3Npb25zLm1hcChhc3luYyAobWlzc2lvbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNBY3RpdmF0ZWQgPVxuICAgICAgICAgICAgICAgIG1pc3Npb24uZ3JvdXBzICYmIG1pc3Npb24uZ3JvdXBzLmluY2x1ZGVzKFByb2ZpbGVTdGF0dXMuQUNUSVZFKTtcbiAgICAgICAgICAgIGlmIChpc0FjdGl2YXRlZCkge1xuICAgICAgICAgICAgICAgIGFjdGl2YXRlZC5wdXNoKG1pc3Npb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFjdGl2YXRlZDtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNaXNzaW9uc0ZvclpvbmUoem9uZUlEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5Wm9uZSh6b25lSUQpKS5pdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNaXNzaW9uc0ZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbltdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oKG1pc3Npb25zKSA9PiBtaXNzaW9ucy5pdGVtcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2FtZSBhcyBnZXRNaXNzaW9uc0ZvclNwYWNlKCksIGJ1dCBmb2xsb3dzIGBuZXh0VG9rZW5gIHVudGlsIHRoZSBjb25uZWN0aW9uIGlzXG4gICAgICogZXhoYXVzdGVkIGluc3RlYWQgb2YgcmV0dXJuaW5nIG9ubHkgdGhlIGZpcnN0IHBhZ2UuXG4gICAgICovXG4gICAgYXN5bmMgZ2V0QWxsTWlzc2lvbnNGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xuICAgICAgICBjb25zdCBhbGw6IE1pc3Npb25bXSA9IFtdO1xuICAgICAgICBsZXQgbmV4dFRva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgICAgICBkbyB7XG4gICAgICAgICAgICBjb25zdCBwYWdlID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlTcGFjZShzcGFjZUlELCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgMTAwMCwgbmV4dFRva2VuKTtcbiAgICAgICAgICAgIGlmIChwYWdlPy5pdGVtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGFsbC5wdXNoKC4uLnBhZ2UuaXRlbXMuZmlsdGVyKChtaXM6IE1pc3Npb24gfCBudWxsKSA9PiAhIW1pcyAmJiAhbWlzLmRlbGV0ZWRBdCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV4dFRva2VuID0gcGFnZT8ubmV4dFRva2VuID8/IG51bGw7XG4gICAgICAgIH0gd2hpbGUgKG5leHRUb2tlbik7XG5cbiAgICAgICAgcmV0dXJuIGFsbDtcbiAgICB9XG5cbiAgICBhY3RpdmF0ZU1pc3Npb24obWlzOiBNaXNzaW9uKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIG1pcyAmJlxuICAgICAgICAgICAgKCFtaXMuZ3JvdXBzIHx8ICFtaXMuZ3JvdXBzLmluY2x1ZGVzKFByb2ZpbGVTdGF0dXMuQUNUSVZFKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cHMgPSBtaXMuZ3JvdXBzID8gbWlzLmdyb3VwcyA6IFtdO1xuICAgICAgICAgICAgZ3JvdXBzLnB1c2goUHJvZmlsZVN0YXR1cy5BQ1RJVkUpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGUoeyBpZDogbWlzLmlkLCBncm91cHMgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBnZXRNaXNzaW9uc0J5VGVtcGxhdGUodGVtcGxhdGVJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVRlbXBsYXRlKHRlbXBsYXRlSUQpKS5pdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNaXNzaW9uKG1pc3Npb25JRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0TWlzc2lvbihtaXNzaW9uSUQpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1pc3Npb25zQnlab25lQnlSb2xlKFxuICAgICAgICB6b25lSUQ6IHN0cmluZyxcbiAgICAgICAgcm9sZTogUm9sZVN0YXR1cyxcbiAgICApOiBQcm9taXNlPE1pc3Npb25bXT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlab25lQnlSb2xlKFxuICAgICAgICAgICAgICAgIHpvbmVJRCxcbiAgICAgICAgICAgICAgICB7IGVxOiByb2xlIH0sXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICB7IGRlbGV0ZWRBdDogeyBhdHRyaWJ1dGVFeGlzdHM6IGZhbHNlIH0gfSxcbiAgICAgICAgICAgICAgICAyMDAsXG4gICAgICAgICAgICApXG4gICAgICAgICkuaXRlbXM7XG4gICAgfVxuXG4gICAgYXN5bmMgY2hlY2tJZkN1cnJlbnRVc2VyTWlzc2lvbkNoYW5nZWQoY2hhbmdlZE1pc3Npb246IE1pc3Npb24pIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFVzZXJJRCA9PT0gY2hhbmdlZE1pc3Npb24udXNlcklEKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNaXNzaW9uc1VwZGF0ZWQubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGluc3RhbnRNaXNzaW9uc09mQ3VycmVudChcbiAgICAgICAgY3VycmVudFVzZXJJRDogc3RyaW5nLFxuICAgICk6IFByb21pc2U8TWlzc2lvbltdIHwgbnVsbD4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRVc2VySUQgPSBjdXJyZW50VXNlcklEO1xuICAgICAgICBsZXQgbWlzc2lvbnMgPSBhd2FpdCB0aGlzLmdldE1pc3Npb25zRnJvbVVzZXJJRChjdXJyZW50VXNlcklEKTtcblxuICAgICAgICAvKiogRmlsdGVyIHRvIGtlZXAgb25seSBhdmFpbGFibGUgbWlzc2lvbnMgKi9cbiAgICAgICAgbWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoKG1pc3Npb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhhc0V4cGlyZWQgPSBkYXRlSGFzRXhwaXJlZChtaXNzaW9uLmVuZERhdGVUaW1lKTtcblxuICAgICAgICAgICAgLyoqIFVwZGF0ZSB0aGlzLmxhc3RFeHBpcmVkTWlzc2lvbiAqL1xuICAgICAgICAgICAgaWYgKGhhc0V4cGlyZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXhwaXJlZERhdGUgPSB0aGlzLmxhc3RFeHBpcmVkTWlzc2lvblxuICAgICAgICAgICAgICAgICAgICA/IG5ldyBEYXRlKHRoaXMubGFzdEV4cGlyZWRNaXNzaW9uLmVuZERhdGVUaW1lKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZUV4cGlyZWQgPSBuZXcgRGF0ZShtaXNzaW9uLmVuZERhdGVUaW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoIWxhc3RFeHBpcmVkRGF0ZSB8fCBkYXRlRXhwaXJlZCA+IGxhc3RFeHBpcmVkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RFeHBpcmVkTWlzc2lvbiA9IG1pc3Npb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICFoYXNFeHBpcmVkO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAobWlzc2lvbnMuc29tZSgobWlzKSA9PiBtaXMucm9sZSA9PT0gUm9sZVN0YXR1cy5WSVNJVE9SX01VU0VVTSkgJiYgbWlzc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gd29ya2Zsb3cgZm9yIFZJU0lUT1JfTVVTRVVNXG4gICAgICAgICAgICByZXR1cm4gbWlzc2lvbnM7XG4gICAgICAgIH1cbiAgICAgICAgLyoqIEtlZXAgb25seSBzdGFydGVkIG1pc3Npb25zICovXG4gICAgICAgIGxldCBuZXh0TWlzc2lvbkRhdGUgPSBudWxsO1xuICAgICAgICBtaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcigobWlzc2lvbikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRlZCA9IG1pc3Npb24uc3RhcnREYXRlVGltZVxuICAgICAgICAgICAgICAgID8gZGF0ZUhhc0V4cGlyZWQobWlzc2lvbi5zdGFydERhdGVUaW1lKVxuICAgICAgICAgICAgICAgIDogdHJ1ZTtcbiAgICAgICAgICAgIC8qKiBVcGRhdGUgbmV4dCBtaXNzaW9uIHRvIHN0YXJ0ICovXG4gICAgICAgICAgICBpZiAoIXN0YXJ0ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaXNzaW9uRGF0ZSA9IG5ldyBEYXRlKG1pc3Npb24uc3RhcnREYXRlVGltZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXh0TWlzc2lvbkRhdGUgfHwgbWlzc2lvbkRhdGUgPCBuZXh0TWlzc2lvbkRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXh0TWlzc2lvblRvU3RhcnQgPSBtaXNzaW9uO1xuICAgICAgICAgICAgICAgICAgICBuZXh0TWlzc2lvbkRhdGUgPSBtaXNzaW9uRGF0ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3RhcnRlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBtaXNzaW9ucy5sZW5ndGggPiAwID8gbWlzc2lvbnMgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbHRlcnMgdGhlIG1pc3Npb25zIHRoYXQgYXNzaXN0ZWQgdG8gbGl2ZSBvZiB0aGUgdmlzaXQgKGJ5IGNvbXBhcmluZyB0aGUgcmVhbFN0YXJ0VGltZSBvZiBWaXNpdFRlbXBsYXRlIGFuZCBjb25uZWN0ZWRBdCB0aW1lKVxuICAgICAqIEBwYXJhbSB0ZW1wbGF0ZSBWaXNpdFRlbXBsYXRlIFxuICAgICAqIEBwYXJhbSBtaXNzaW9ucyBNaXNzaW9uW10gbWlzc2lvbnMgZm9yIHRoaXMgdmlzaXRcbiAgICAgKiBAcmV0dXJucyBNaXNzaW9uW10gZmlsdGVyZWQgbWlzc2lvbnNcbiAgICAgKi9cbiAgICBmaWx0ZXJNaXNzaW9uc0Fzc2l0ZWRUb0xpdmVGb3JUZW1wbGF0ZSh0ZW1wbGF0ZTogVmlzaXRUZW1wbGF0ZSwgbWlzc2lvbnM6IE1pc3Npb25bXSk6IE1pc3Npb25bXSB7XG4gICAgICAgIGNvbnN0IHZpc2l0U3RhcnRUaW1lc3RhbXAgPSB0ZW1wbGF0ZS5yZWFsU3RhcnRlZEF0O1xuICAgICAgICByZXR1cm4gbWlzc2lvbnMuZmlsdGVyKChtaXMpID0+IHtcbiAgICAgICAgICAgIGlmICghbWlzLmNvbm5lY3RlZFRvTGl2ZUF0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1pcy5jb25uZWN0ZWRUb0xpdmVBdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsYXN0Q29ubmVjdGVkQXQgPSBtaXMuY29ubmVjdGVkVG9MaXZlQXRbbWlzLmNvbm5lY3RlZFRvTGl2ZUF0Lmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgY29uc3QgbGFzdENvbm5lY3RlZEF0VGltZXN0YW1wID0gRGF0ZVRpbWUuZnJvbUlTTyhsYXN0Q29ubmVjdGVkQXQpLnRvTWlsbGlzKCk7XG4gICAgICAgICAgICByZXR1cm4gbGFzdENvbm5lY3RlZEF0VGltZXN0YW1wID4gdmlzaXRTdGFydFRpbWVzdGFtcDtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|