@smarterplan/ngx-smarterplan-core 1.2.47 → 1.2.49
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/esm2020/lib/components/csv-export/csv-export.component.mjs +4 -4
- package/esm2020/lib/components/loader/loader.component.mjs +4 -4
- package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +4 -4
- package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +7 -5
- package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +16 -11
- package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +4 -4
- package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +4 -4
- package/esm2020/lib/components/search-bar/search-bar.component.mjs +4 -4
- package/esm2020/lib/components/support-modal/support-modal.component.mjs +4 -4
- package/esm2020/lib/helpers.service.mjs +2 -2
- package/esm2020/lib/ngx-smarterplan-core.module.mjs +5 -5
- package/esm2020/lib/ngx-smarterplan-core.service.mjs +4 -4
- package/esm2020/lib/pipes/duration-to-string.pipe.mjs +4 -4
- package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +4 -4
- package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +4 -4
- package/esm2020/lib/pipes/safe-url.pipe.mjs +4 -4
- package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +4 -4
- package/esm2020/lib/pipes/username-from-id.pipe.mjs +4 -4
- package/esm2020/lib/services/amplify-cache.service.mjs +4 -4
- package/esm2020/lib/services/base-tab.service.mjs +4 -4
- package/esm2020/lib/services/baseVisibility.service.mjs +4 -4
- package/esm2020/lib/services/content.service.mjs +4 -4
- package/esm2020/lib/services/filter.service.mjs +4 -4
- package/esm2020/lib/services/intervention.service.mjs +4 -4
- package/esm2020/lib/services/locale.service.mjs +4 -4
- package/esm2020/lib/services/matterport-import.service.mjs +4 -4
- package/esm2020/lib/services/matterport.service.mjs +4 -4
- package/esm2020/lib/services/models/affectation.service.mjs +4 -4
- package/esm2020/lib/services/models/base-object.service.mjs +4 -4
- package/esm2020/lib/services/models/capture.service.mjs +4 -4
- package/esm2020/lib/services/models/comment.service.mjs +4 -4
- package/esm2020/lib/services/models/domain.service.mjs +4 -4
- package/esm2020/lib/services/models/equipment.service.mjs +4 -4
- package/esm2020/lib/services/models/event.service.mjs +4 -4
- package/esm2020/lib/services/models/feature.service.mjs +4 -4
- package/esm2020/lib/services/models/hashtag.service.mjs +4 -4
- package/esm2020/lib/services/models/layer.service.mjs +4 -4
- package/esm2020/lib/services/models/measurement.service.mjs +4 -4
- package/esm2020/lib/services/models/mission.service.mjs +4 -4
- package/esm2020/lib/services/models/navigation.service.mjs +4 -4
- package/esm2020/lib/services/models/node.service.mjs +4 -4
- package/esm2020/lib/services/models/object3D.service.mjs +4 -4
- package/esm2020/lib/services/models/operation.service.mjs +4 -4
- package/esm2020/lib/services/models/organisation.service.mjs +4 -4
- package/esm2020/lib/services/models/plan.service.mjs +4 -4
- package/esm2020/lib/services/models/poi.service.mjs +4 -4
- package/esm2020/lib/services/models/profile.service.mjs +4 -4
- package/esm2020/lib/services/models/property.service.mjs +4 -4
- package/esm2020/lib/services/models/space.service.mjs +4 -4
- package/esm2020/lib/services/models/template.service.mjs +4 -4
- package/esm2020/lib/services/models/ticket.service.mjs +4 -4
- package/esm2020/lib/services/models/visit.service.mjs +4 -4
- package/esm2020/lib/services/models/zone.service.mjs +4 -4
- package/esm2020/lib/services/navigator.service.mjs +4 -4
- package/esm2020/lib/services/search.service.mjs +4 -4
- package/esm2020/lib/services/support.service.mjs +4 -4
- package/esm2020/lib/services/tag.service.mjs +4 -4
- package/esm2020/lib/services/user.service.mjs +4 -4
- package/esm2020/lib/services/validators.service.mjs +4 -4
- package/esm2020/lib/services/viewer.service.mjs +4 -4
- package/esm2020/lib/services/zoneChange.service.mjs +4 -4
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +192 -186
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +192 -186
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/components/menu-bar/menu-bar.component.d.ts +1 -0
- package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +4 -1
- package/package.json +13 -13
- package/src/assets/vs-app.json +67 -0
|
@@ -487,9 +487,9 @@ export class BaseUserService {
|
|
|
487
487
|
return this.spModule;
|
|
488
488
|
}
|
|
489
489
|
}
|
|
490
|
-
BaseUserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
491
|
-
BaseUserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
492
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
490
|
+
BaseUserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BaseUserService, deps: [{ token: i1.ProfileService }, { token: i2.MissionService }, { token: i3.PropertyService }, { token: i4.Router }, { token: i5.Location }, { token: i0.NgZone }, { token: i6.TranslateService }, { token: 'SPModule' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
491
|
+
BaseUserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BaseUserService, providedIn: "root" });
|
|
492
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BaseUserService, decorators: [{
|
|
493
493
|
type: Injectable,
|
|
494
494
|
args: [{
|
|
495
495
|
providedIn: "root",
|
|
@@ -498,4 +498,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
498
498
|
type: Inject,
|
|
499
499
|
args: ['SPModule']
|
|
500
500
|
}] }]; } });
|
|
501
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQixPQUFPLEVBQUUsV0FBVyxFQUFrQyxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUNqSixPQUFPLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXhLLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7O0FBVW5DOztHQUVHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUF1QnhCLFlBQ1ksY0FBOEIsRUFDOUIsY0FBOEIsRUFDOUIsZUFBZ0MsRUFDaEMsTUFBYyxFQUNkLFFBQWtCLEVBQ2xCLE1BQWMsRUFDZCxTQUEyQixFQUNmLGdCQUEwQjtRQVB0QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUE1QnZDLGNBQVMsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUVyRCxhQUFR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QUk7U0FDZCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBZ0I7UUFDOUIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsV0FBVztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDOzs0R0E5a0JRLGVBQWUsaU5BK0JaLFVBQVU7Z0hBL0JiLGVBQWUsY0FGWixNQUFNOzJGQUVULGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFnQ1EsTUFBTTsyQkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7IExldmVsU3RhdHVzLCBNaXNzaW9uLCBPcmdhbmlzYXRpb24sIFByb2ZpbGUsIFByb2ZpbGVFbnRpdHksIFByb2ZpbGVTdGF0dXMsIFByb3BlcnR5VHlwZSwgUm9sZVN0YXR1cywgU3BNb2R1bGUgfSBmcm9tIFwiLi4vdHlwZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBlbnVtVG9BcnJheSwgZmlsdGVyVW5pcXVlQXJyYXlCeUlELCBnZXRIaWdoZXN0TGV2ZWxGb3JNaXNzaW9ucywgZ2V0SGlnaGVzdFJvbGVGb3JNaXNzaW9ucywgZ2V0TGV2ZWxzQmVsb3csIGdldFJvbGVzQmVsb3dGb3JNYW5hZ2VyIH0gZnJvbSBcIi4uL2hlbHBlcnMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQcm9maWxlU2VydmljZSB9IGZyb20gXCIuL21vZGVscy9wcm9maWxlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvbWlzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFByb3BlcnR5U2VydmljZSB9IGZyb20gXCIuL21vZGVscy9wcm9wZXJ0eS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSBcImx1eG9uXCI7XHJcbmltcG9ydCB7IEF1dGggfSBmcm9tIFwiYXdzLWFtcGxpZnlcIjtcclxuXHJcbmludGVyZmFjZSBDcmVhdGVVc2VyIHtcclxuICAgIGVtYWlsOiBzdHJpbmc7XHJcbiAgICBwaG9uZT86IHN0cmluZztcclxuICAgIGxhc3ROYW1lOiBzdHJpbmc7XHJcbiAgICBmaXJzdE5hbWU6IHN0cmluZztcclxuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogVXNlclNlcnZpY2UgaGFuZGxlcyB1c2VyJ3MgbGlmZWN5Y2xlLCBmcm9tIGNyZWF0aW9uIHRvIGRlbGV0aW9uXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VVc2VyU2VydmljZSB7XHJcblxyXG4gICAgaXNDaGFuZ2VkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICB1cGRhdGluZyA9IGZhbHNlO1xyXG5cclxuICAgIG1hbmFnZXJzID0gW1xyXG4gICAgICAgIFJvbGVTdGF0dXMuQURNSU4sXHJcbiAgICAgICAgUm9sZVN0YXR1cy5NQU5BR0VSLFxyXG4gICAgICAgIFJvbGVTdGF0dXMuT1dORVIsXHJcbiAgICAgICAgUm9sZVN0YXR1cy5HVUlERV9NVVNFVU0sXHJcbiAgICBdO1xyXG5cclxuICAgIGN1cnJlbnRNaXNzaW9uczogTWlzc2lvbltdO1xyXG5cclxuICAgIGxhc3RFeHBpcmVkTWlzc2lvbjogTWlzc2lvbjtcclxuXHJcbiAgICBuZXh0TWlzc2lvblRvU3RhcnQ6IE1pc3Npb247XHJcblxyXG4gICAgY3U6IFByb2ZpbGVFbnRpdHkgPSBudWxsO1xyXG5cclxuICAgIHNwTW9kdWxlOiBTcE1vZHVsZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHByb2ZpbGVTZXJ2aWNlOiBQcm9maWxlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG1pc3Npb25TZXJ2aWNlOiBNaXNzaW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHByb3BlcnR5U2VydmljZTogUHJvcGVydHlTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICBASW5qZWN0KCdTUE1vZHVsZScpIHNwTW9kdWxlSW5qZWN0ZWQ6IFNwTW9kdWxlLFxyXG4gICAgKSB7XHJcbiAgICAgICAgLy8gdGhpcy5jaGVja0Nvbm5lY3RlZEFXU1VzZXIoKTtcclxuICAgICAgICB0aGlzLm1pc3Npb25TZXJ2aWNlLmN1cnJlbnRNaXNzaW9uc1VwZGF0ZWQuc3Vic2NyaWJlKGFzeW5jIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1pc3Npb25zID1cclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWlzc2lvblNlcnZpY2UuaW5zdGFudE1pc3Npb25zT2ZDdXJyZW50KHRoaXMuY3UuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLmlzQ2hhbmdlZC5uZXh0KHRydWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc3BNb2R1bGUgPSBzcE1vZHVsZUluamVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIGlmIEFXUyB1c2VyIGlzIGNvbm5lY3RlZCBhbmQgYXNzaWduZyBpdCB0byBjdXJyZW50IHVzZXIgKHRoaXMuY3UpXHJcbiAgICAqKi9cclxuICAgIGFzeW5jIGNoZWNrQ29ubmVjdGVkQVdTVXNlcigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3UpIHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJjaGVjayBBV1MgdXNlclwiKTtcclxuICAgICAgICAgICAgbGV0IGNhdSA9IG51bGw7XHJcbiAgICAgICAgICAgIGxldCB1c2VyID0gbnVsbDtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy51cGRhdGluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhdSA9IGF3YWl0IEF1dGguY3VycmVudEF1dGhlbnRpY2F0ZWRVc2VyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJjb25uZWN0ZWRcIiwgY2F1KTtcclxuICAgICAgICAgICAgICAgICAgICB1c2VyID0gYXdhaXQgdGhpcy5jdXJyZW50KGNhdSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJjdXJyZW50IG9mIHVzZXJTZXJ2aWNlXCIsIHVzZXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxyXG4gICAgICAgICAgICBpZiAoIXVzZXIgJiYgIXRoaXMudXBkYXRpbmcpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibm8gdXNlciBpbiBjaGVjayBjb25uZWN0ZWQgYXdzIHVzZXJcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJhdXRoXCJdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGNyZWF0ZVVzZXIgc3Bhd25zIGEgbmV3IFVzZXIsIGFsb25nIHdpdGg6XHJcbiAgICAgKiAtIGEgcHJvcGVyIEFXU0NvZ25pdG8gc2lnbnVwXHJcbiAgICAgKiAtIGEgUHJvZmlsZSBlbnRyeSBob2xkaW5nIHRoZSBBV1NDb2duaXRvIElEXHJcbiAgICAgKiAtIGEgTWlzc2lvbiBlbnRyeSBob2xkaW5nIHRoZSBPcmdhbmlzYXRpb24gSURcclxuICAgICAqXHJcbiAgICAgKiBAc2VlIDE3NFxyXG4gICAgICogQHNlZSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvbGliL2F1dGgvZW1haWxwYXNzd29yZC9xL3BsYXRmb3JtL2pzI3NpZ24tdXBcclxuICAgICAqIEB0b2RvIHdvbmRlciBpZiB3ZSBjYW4gbWFzaCB0b2dldGhlciBQcm9maWxlLCBNaXNzaW9uIGFuZCBVc2VyIGVudHJpZXNcclxuICAgICAqIEBwYXJhbSB1IFVzZXIgdG8gYmUgY3JlYXRlZFxyXG4gICAgICovXHJcbiAgICBhc3luYyBjcmVhdGVVc2VyQVdTYW5kUHJvZmlsZShcclxuICAgICAgICB1OiB7XHJcbiAgICAgICAgICAgIGVtYWlsOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIHBob25lOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGxhc3ROYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGZpcnN0TmFtZTogc3RyaW5nO1xyXG4gICAgICAgICAgICBwYXNzd29yZD86IHN0cmluZztcclxuICAgICAgICB9LFxyXG4gICAgICAgIHByZXZhbGlkYXRlZDogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgKTogUHJvbWlzZTxQcm9maWxlPiB7XHJcbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHtcclxuICAgICAgICAgICAgZW1haWw6IHUuZW1haWwudHJpbSgpLFxyXG4gICAgICAgICAgICBnaXZlbl9uYW1lOiB1LmZpcnN0TmFtZSxcclxuICAgICAgICAgICAgZmFtaWx5X25hbWU6IHUubGFzdE5hbWUsXHJcbiAgICAgICAgICAgIHpvbmVpbmZvOiBcImZyXCIsIC8vIEB0b2RvIGRlYWwgd2l0aCB6b25laW5mbyBhbmQgbG9jYWxlXHJcbiAgICAgICAgICAgIGxvY2FsZTogXCJmclwiLFxyXG4gICAgICAgICAgICBcImN1c3RvbTpwcmV2YWxpZGF0ZWRcIjogXCJmYWxzZVwiLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKHByZXZhbGlkYXRlZCkge1xyXG4gICAgICAgICAgICBhdHRyaWJ1dGVzW1wiY3VzdG9tOnByZXZhbGlkYXRlZFwiXSA9IFwidHJ1ZVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBBV1NDb2duaXRvXHJcbiAgICAgICAgY29uc3QgcGFzc3dvcmQgPSB1LnBhc3N3b3JkID8gdS5wYXNzd29yZCA6IFwidGVtcG9yYXJ5cFwiO1xyXG4gICAgICAgIGxldCBlcnJvcjtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB7IHVzZXJTdWIgfSA9IGF3YWl0IEF1dGguc2lnblVwKHtcclxuICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB1LmVtYWlsLCAvLyB1c2VybmFtZSBzaG91bGQgYmUgYW4gZW1haWwgdGhleSBzYXlcclxuICAgICAgICAgICAgICAgIHBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlcyxcclxuICAgICAgICAgICAgICAgIGNsaWVudE1ldGFkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGhvbmU6IHUucGhvbmUsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKHVzZXJTdWIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVByb2ZpbGUodXNlclN1YiwgdSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlcnJvcl86IGFueSkge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGVycm9yXy5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiSW52YWxpZFBhc3N3b3JkRXhjZXB0aW9uXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBcImF1dGguZXJyb3Iud3JvbmdfcGFzc3dvcmRcIjtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJVc2VyTm90Q29uZmlybWVkRXhjZXB0aW9uXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBcImF1dGguZXJyb3IudXNlcl9ub3RfY29uZmlybWVkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvblwiOlxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gXCJhdXRoLmVycm9yLmludmFsaWRfcGFyYW1ldGVyXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gZXJyb3JfLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc29sZS5sb2coYEFXUyBTaWduIFVQIGVycm9yIDogJHtlcnJvcn1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIC0gQ3JlYXRlcyBBV1MgdXNlciBpbiBDb2duaXRvIGZvciBIb3RlbCBVc2VyIFBvb2wgU2NoZW1hIChvbmx5IGVtYWlsIGlzIHJlcXVpcmVkKVxyXG4gICAgICogLSBDcmVhdGVzIFByb2ZpbGUgaW4gRHluYW1vREJcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdSBVc2VyIHRvIGJlIGNyZWF0ZWRcclxuICAgICAqL1xyXG4gICAgYXN5bmMgY3JlYXRlSG90ZWxVc2VyQVdTYW5kUHJvZmlsZShcclxuICAgICAgICB1c2VyOiB7XHJcbiAgICAgICAgICAgIGVtYWlsOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGxhc3ROYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGZpcnN0TmFtZTogc3RyaW5nO1xyXG4gICAgICAgIH0sXHJcbiAgICApOiBQcm9taXNlPFByb2ZpbGU+IHtcclxuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0ge1xyXG4gICAgICAgICAgICBlbWFpbDogdXNlci5lbWFpbC50cmltKClcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIEFXU0NvZ25pdG9cclxuICAgICAgICBjb25zdCBwYXNzd29yZCA9IFwidGVtcG9yYXJ5cFwiO1xyXG4gICAgICAgIGxldCBlcnJvcjtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB7IHVzZXJTdWIgfSA9IGF3YWl0IEF1dGguc2lnblVwKHtcclxuICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB1c2VyLmVtYWlsLnRyaW0oKSxcclxuICAgICAgICAgICAgICAgIHBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlcyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICh1c2VyU3ViKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVQcm9maWxlKHVzZXJTdWIsIHVzZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3JfOiBhbnkpIHtcclxuICAgICAgICAgICAgc3dpdGNoIChlcnJvcl8uY29kZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIkludmFsaWRQYXNzd29yZEV4Y2VwdGlvblwiOlxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gXCJhdXRoLmVycm9yLndyb25nX3Bhc3N3b3JkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiVXNlck5vdENvbmZpcm1lZEV4Y2VwdGlvblwiOlxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gXCJhdXRoLmVycm9yLnVzZXJfbm90X2NvbmZpcm1lZFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb25cIjpcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFwiYXV0aC5lcnJvci5pbnZhbGlkX3BhcmFtZXRlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGVycm9yXy5tZXNzYWdlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBV1MgU2lnbiBVUCBlcnJvciA6ICR7ZXJyb3J9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlUHJvZmlsZShcclxuICAgICAgICBhd3NVc2VySUQ6IHN0cmluZyxcclxuICAgICAgICB1OiBDcmVhdGVVc2VyLFxyXG4gICAgKTogUHJvbWlzZTxQcm9maWxlPiB7XHJcbiAgICAgICAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuY3JlYXRlUHJvZmlsZSh7XHJcbiAgICAgICAgICAgIHVzZXJJRDogYXdzVXNlcklELFxyXG4gICAgICAgICAgICBtZXRhZGF0YTogSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgZW1haWw6IHUuZW1haWwsXHJcbiAgICAgICAgICAgICAgICBwaG9uZTogdS5waG9uZSxcclxuICAgICAgICAgICAgICAgIGxhc3ROYW1lOiB1Lmxhc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgZmlyc3ROYW1lOiB1LmZpcnN0TmFtZSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHN0YXR1czogUHJvZmlsZVN0YXR1cy5XQUlUSU5HX0ZPUl9BQ1RJVkFUSU9OLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBwcm9maWxlO1xyXG4gICAgfVxyXG5cclxuICAgIGN1cnJlbnRPcmdhbmlzYXRpb24oc3BhY2VJRDogc3RyaW5nID0gbnVsbCk6IE9yZ2FuaXNhdGlvbiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3UpIHtcclxuICAgICAgICAgICAgaWYgKCFzcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnNbMF0ub3JnYW5pc2F0aW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9uKHNwYWNlSUQpLm9yZ2FuaXNhdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3VycmVudChcclxuICAgICAgICB1c2VyLFxyXG4gICAgICAgIGZhc3RDb25uZWN0OiBib29sZWFuID0gZmFsc2UsXHJcbiAgICApOiBQcm9taXNlPFByb2ZpbGVFbnRpdHkgfCBudWxsPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1ICYmICF0aGlzLnVwZGF0aW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmN1ID0gYXdhaXQgdGhpcy51c2VyRnJvbUFXU0lEKHVzZXIudXNlcm5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY3UgJiYgdXNlci5hdHRyaWJ1dGVzLmVtYWlsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAgICAgICBgTm8gcHJvZmlsZSBmb3IgdXNlcklEIPCflKogJHt1c2VyLmF0dHJpYnV0ZXMuZW1haWx9YCxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAvLyBUaGVyZSdzIG5vIHByb2ZpbGVzLCBwcm9maWxlcy5pdGVtcy5sZW5ndGggPT09IDBcclxuICAgICAgICAgICAgICAgIC8vIEl0J3MgbWF5YmUgdGhlIPCfpK4gY2FzZSB3aGVyZSB0aGUgcHJvZmlsZSBoYXMgYmVlbiBzYXZlZCB3aXRoIGFuIGVtYWlsXHJcbiAgICAgICAgICAgICAgICAvLyBpbnN0ZWFkIG9mIGFuIGhhc2hlZCBpZFxyXG4gICAgICAgICAgICAgICAgLy8gSWYgZm91bmQsIHdlIG5lZWQgdG8gcmVwbGFjZSB0aGUgaWQgaW4gYm90aCB0aGUgUHJvZmlsZVxyXG4gICAgICAgICAgICAgICAgY29uc3QgZW1haWxQcm9maWxlID0gYXdhaXQgdGhpcy51c2VyRnJvbUFXU0lEKFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZXIuYXR0cmlidXRlcy5lbWFpbCxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZW1haWxQcm9maWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGDwn5GPIGRvaW5nIHRoZSBzcGFjZWhpcCByZXZlcnNhbCBlbWFpbCBvbiAke3VzZXIuYXR0cmlidXRlcy5lbWFpbH1gLFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdSA9IGF3YWl0IHRoaXMudXNlckZyb21BV1NJRCh1c2VyLnVzZXJuYW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY3UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IEF1dGguc2lnbk91dCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbWlzc2lvbnMgPSBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLmluc3RhbnRNaXNzaW9uc09mQ3VycmVudChcclxuICAgICAgICAgICAgICAgIHRoaXMuY3UuaWRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TWlzc2lvbnMgPSBtaXNzaW9ucztcclxuICAgICAgICAgICAgbGV0IG9rVG9Mb2dpbiA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmICghZmFzdENvbm5lY3QgJiYgIXRoaXMuaGFzTWFuYWdlclJvbGVJbkFueU1pc3Npb24oKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgYWNjZXNzIHRva2VuIGlmIG5vdCBGYXN0IGNvbm5lY3QgKGZhc3QgY29ubmVjdCBpcyBmb3IgdGhlIGd1ZXN0IGNvbm5lY3Rpb24gdmlhIGxpbmsoL3JlZGlyZWN0P3VzZXI9KSlcclxuICAgICAgICAgICAgICAgIC8vIGNoZWNrcyB2aXNpdG9ycyhtdXNldW0gb3Igbm90KSwgb2NjdXBhbnRzLCBzZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICBva1RvTG9naW4gPSBhd2FpdCB0aGlzLmNoZWNrQWNjZXNzVG9rZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlci5zaWduSW5Vc2VyU2Vzc2lvbi5hY2Nlc3NUb2tlbi5qd3RUb2tlbixcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFva1RvTG9naW4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TWlzc2lvbnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IEF1dGguc2lnbk91dCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVQcm9maWxlKHtcclxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmN1LmlkLFxyXG4gICAgICAgICAgICAgICAgbGFzdENvbm5lY3RlZEF0OiBEYXRlLm5vdygpLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKCFtaXNzaW9ucyAmJiB0aGlzLmxvY2F0aW9uLnBhdGgoKSAhPT0gXCIvbm8tbWlzc2lvblwiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9uby1taXNzaW9uXCJdKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwidXNlciBpcyBjaGFuZ2VkIGVtaXR0aW5nXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmlzQ2hhbmdlZC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmN1O1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVzZXJGcm9tQVdTSUQodXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPFByb2ZpbGVFbnRpdHkgfCBudWxsPiB7XHJcbiAgICAgICAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0UHJvZmlsZUZyb21BV1NJRCh1c2VySWQpO1xyXG4gICAgICAgIGlmIChwcm9maWxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvZmlsZUVudGl0eShwcm9maWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXNlckZyb21Vc2VySUQodXNlcklEOiBzdHJpbmcpOiBQcm9taXNlPFByb2ZpbGVFbnRpdHkgfCBudWxsPiB7XHJcbiAgICAgICAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0UHJvZmlsZSh1c2VySUQpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvZmlsZUVudGl0eShwcm9maWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBjdXJyZW50TWlzc2lvbihzcGFjZUlEOiBzdHJpbmcpOiBNaXNzaW9uIHtcclxuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy5nZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgcmV0dXJuIG1pc3Npb247XHJcbiAgICB9XHJcblxyXG4gICAgaXNNYW5hZ2VyKHNwYWNlSUQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLmdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBpZiAobWlzc2lvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYW5hZ2Vycy5pbmNsdWRlcyhtaXNzaW9uLnJvbGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaXNTZXJ2aWNlKHNwYWNlSUQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLmdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBpZiAobWlzc2lvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbWlzc2lvbi5yb2xlID09PSBSb2xlU3RhdHVzLlNFUlZJQ0U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpc0FkbWluKHNwYWNlSUQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLmdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBpZiAobWlzc2lvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbWlzc2lvbi5yb2xlID09PSBSb2xlU3RhdHVzLkFETUlOO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaXNTbWFydGVyUGxhbigpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3BNaXNzaW9ucyA9IHRoaXMuY3VycmVudE1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgKG0pID0+XHJcbiAgICAgICAgICAgICAgICBtLm9yZ2FuaXNhdGlvbklEID09PSBcIjZlMjgyMDFmLTQ2NzktNGMyOS05ZDJkLThhMzI1ZjU3Y2VlOVwiICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hbmFnZXJzLmluY2x1ZGVzKG0ucm9sZSksXHJcbiAgICAgICAgKTsgLy8gSUQgb2YgU21hcnRlclBsYW5cclxuICAgICAgICByZXR1cm4gc3BNaXNzaW9ucy5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlzU1BBZG1pbigpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3BNaXNzaW9ucyA9IHRoaXMuY3VycmVudE1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgKG0pID0+XHJcbiAgICAgICAgICAgICAgICBtLm9yZ2FuaXNhdGlvbklEID09PSBcIjZlMjgyMDFmLTQ2NzktNGMyOS05ZDJkLThhMzI1ZjU3Y2VlOVwiICYmXHJcbiAgICAgICAgICAgICAgICBtLnJvbGUgPT09IFJvbGVTdGF0dXMuQURNSU4sXHJcbiAgICAgICAgKTsgLy8gSUQgb2YgU21hcnRlclBsYW5cclxuICAgICAgICByZXR1cm4gc3BNaXNzaW9ucy5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBNaXNzaW9uIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnMuZmluZCgobSkgPT4gbS5zcGFjZUlEID09PSBzcGFjZUlEKTtcclxuICAgIH1cclxuXHJcbiAgICBoYXNNYW5hZ2VyUm9sZUluQW55TWlzc2lvbigpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLnNvbWUoKG1pcykgPT5cclxuICAgICAgICAgICAgdGhpcy5tYW5hZ2Vycy5pbmNsdWRlcyhtaXMucm9sZSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBoYXNTZXJ2aWNlUm9sZUluQW55TWlzc2lvbigpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLnNvbWUoXHJcbiAgICAgICAgICAgIChtaXMpID0+IG1pcy5yb2xlID09PSBSb2xlU3RhdHVzLlNFUlZJQ0UsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBoYXNBZG1pblJvbGVJbkFueU1pc3Npb24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9ucy5zb21lKFxyXG4gICAgICAgICAgICAobWlzKSA9PiBtaXMucm9sZSA9PT0gUm9sZVN0YXR1cy5BRE1JTixcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNyZWF0ZU9yVXBkYXRlTWlzc2lvbkZvck9yZ1dpdGhQcm9wZXJ0eShcclxuICAgICAgICBtaXNzaW9uSW5wdXQ6IE1pc3Npb24sXHJcbiAgICAgICAgb3JnSUQ6IHN0cmluZyxcclxuICAgICAgICBjcmVhdGU6IGJvb2xlYW4gPSB0cnVlLFxyXG4gICAgKTogUHJvbWlzZTxNaXNzaW9uPiB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbiA9IGF3YWl0IChjcmVhdGVcclxuICAgICAgICAgICAgPyB0aGlzLm1pc3Npb25TZXJ2aWNlLmNyZWF0ZShtaXNzaW9uSW5wdXQpXHJcbiAgICAgICAgICAgIDogdGhpcy5taXNzaW9uU2VydmljZS51cGRhdGUobWlzc2lvbklucHV0KSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1hbmFnZXJzLmluY2x1ZGVzKG1pc3Npb24ucm9sZSkgJiYgbWlzc2lvbi5zcGFjZUlEKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPVxyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuZ2V0UHJvcGVydGllc0Zvck9yZ2FuaXNhdGlvbihvcmdJRCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5U3BhY2VJRHMgPSBwcm9wZXJ0aWVzLm1hcChcclxuICAgICAgICAgICAgICAgIChwcm9wZXJ0eV8pID0+IHByb3BlcnR5Xy5zcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAocHJvcGVydHlTcGFjZUlEcy5pbmNsdWRlcyhtaXNzaW9uLnNwYWNlSUQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlzc2lvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB3ZSBkZWxlZ2F0ZSB0aGUgcmlnaHRzIG9mIHRoZSBzcGFjZVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb3BlcnR5U2VydmljZS5jcmVhdGVQcm9wZXJ0eSh7XHJcbiAgICAgICAgICAgICAgICBzcGFjZUlEOiBtaXNzaW9uLnNwYWNlSUQsXHJcbiAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25JRDogb3JnSUQsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBQcm9wZXJ0eVR5cGUuU0hBUkVELFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1pc3Npb247XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc29mdERlbGV0ZVVzZXIodXNlcklEOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBtaXNzaW9ucyA9IGF3YWl0IHRoaXMubWlzc2lvblNlcnZpY2UuZ2V0TWlzc2lvbnNGcm9tVXNlcklEKHVzZXJJRCk7XHJcbiAgICAgICAgaWYgKG1pc3Npb25zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVByb2ZpbGUoeyBpZDogdXNlcklELCBkZWxldGVkQXQ6IERhdGUubm93KCkgfSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUHJvZmlsZSBzb2Z0IGRlbGV0ZWRcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3MgaWYgdGhlIFByb2ZpbGUgKGJ5IGlkKSBjYW4gYmUgcmVtb3ZlZCBjb21wbGV0ZWx5IGZyb20gdGhlIERCIChubyBtaXNzaW9ucyBpbiB0aGUgREIpXHJcbiAgICAgKiBAcGFyYW0gcHJvZmlsZUlEXHJcbiAgICAgKiBAcmV0dXJucyBib29sZWFuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGNhbkhhcmREZWxldGVVc2VyKHByb2ZpbGVJRDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSAoYXdhaXQgdGhpcy5taXNzaW9uU2VydmljZS5nZXRNaXNzaW9uc0Zyb21Vc2VySUQocHJvZmlsZUlEKSk7XHJcbiAgICAgICAgcmV0dXJuIG1pc3Npb25zLmxlbmd0aCA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBoYXJkRGVsZXRlVXNlcih1c2VySUQ6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IGRlbGV0ZWQgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmRlbGV0ZVByb2ZpbGUodXNlcklEKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIlByb2ZpbGUgaGFyZCBkZWxldGVkXCIpO1xyXG4gICAgICAgIHJldHVybiBkZWxldGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE1hbmFnZXJNaXNzaW9ucygpOiBNaXNzaW9uW10ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnMuZmlsdGVyKChtaXMpID0+XHJcbiAgICAgICAgICAgIHRoaXMubWFuYWdlcnMuaW5jbHVkZXMobWlzLnJvbGUpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QXZhbGFibGVMZXZlbHNGb3JDdXJyZW50VXNlcigpOiBMZXZlbFN0YXR1c1tdIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbTGV2ZWxTdGF0dXMuTUlOSU1VTV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGxldmVscyA9IGVudW1Ub0FycmF5KExldmVsU3RhdHVzKTtcclxuICAgICAgICBjb25zdCBoaWdoZXN0TGV2ZWwgPSBnZXRIaWdoZXN0TGV2ZWxGb3JNaXNzaW9ucyh0aGlzLmN1cnJlbnRNaXNzaW9ucyk7XHJcblxyXG4gICAgICAgIHJldHVybiBsZXZlbHMuZmlsdGVyKChsZXZlbCkgPT5cclxuICAgICAgICAgICAgZ2V0TGV2ZWxzQmVsb3coaGlnaGVzdExldmVsKS5pbmNsdWRlcyhsZXZlbCksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBdmFpbGFibGVSb2xlc0ZvckN1cnJlbnRVc2VyKCk6IFJvbGVTdGF0dXNbXSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gW1JvbGVTdGF0dXMuVklTSVRPUl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJvbGVzID0gZW51bVRvQXJyYXkoUm9sZVN0YXR1cyk7XHJcbiAgICAgICAgY29uc3QgaGlnaGVzdFJvbGUgPSBnZXRIaWdoZXN0Um9sZUZvck1pc3Npb25zKHRoaXMuY3VycmVudE1pc3Npb25zKTtcclxuICAgICAgICByZXR1cm4gcm9sZXMuZmlsdGVyKChyb2xlKSA9PlxyXG4gICAgICAgICAgICBnZXRSb2xlc0JlbG93Rm9yTWFuYWdlcihoaWdoZXN0Um9sZSkuaW5jbHVkZXMocm9sZSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogVGVzdCBpZiB0aGUgdXNlciBoYXZlIHRoZSByb2xlIGdpdmVuIGluIHBhcmFtZXRlciA6IFwicm9sZVN0YXR1c1wiICovXHJcbiAgICBpc1JvbGUocm9sZVN0YXR1czogUm9sZVN0YXR1cyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnMuc29tZSgobSkgPT4gbS5yb2xlID09PSByb2xlU3RhdHVzKTtcclxuICAgIH1cclxuXHJcbiAgICBpc0d1aWRlKHNwYWNlSUQ6IHN0cmluZyA9IG51bGwpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoc3BhY2VJRCkge1xyXG4gICAgICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy5nZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgICAgIGlmIChtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlzc2lvbi5yb2xlID09PSBSb2xlU3RhdHVzLkdVSURFX01VU0VVTTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5pc1JvbGUoUm9sZVN0YXR1cy5HVUlERV9NVVNFVU0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTXVzZXVtVmlzaXRvcihzcGFjZUlEOiBzdHJpbmcgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHNwYWNlSUQpIHtcclxuICAgICAgICAgICAgY29uc3QgbWlzc2lvbiA9IHRoaXMuZ2V0TWlzc2lvbkZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgICAgICBpZiAobWlzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pc3Npb24ucm9sZSA9PT0gUm9sZVN0YXR1cy5WSVNJVE9SX01VU0VVTTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5pc1JvbGUoUm9sZVN0YXR1cy5WSVNJVE9SX01VU0VVTSk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNPY2N1cGFudCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1JvbGUoUm9sZVN0YXR1cy5PQ0NVUEFOVCk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNWaXNpdG9yKHNwYWNlSUQ6IHN0cmluZyA9IG51bGwpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoc3BhY2VJRCkge1xyXG4gICAgICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy5nZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgICAgIGlmIChtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlzc2lvbi5yb2xlID09PSBSb2xlU3RhdHVzLlZJU0lUT1I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSb2xlKFJvbGVTdGF0dXMuVklTSVRPUik7XHJcbiAgICB9XHJcblxyXG4gICAgaXNNdXNldW1Vc2VyKHNwYWNlSUQ6IHN0cmluZyA9IG51bGwpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0d1aWRlKHNwYWNlSUQpIHx8IHRoaXMuaXNNdXNldW1WaXNpdG9yKHNwYWNlSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhc09ubHlNdXNldW1Sb2xlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnMuZXZlcnkoXHJcbiAgICAgICAgICAgICAgICAobSkgPT5cclxuICAgICAgICAgICAgICAgICAgICBtLnJvbGUgPT09IFJvbGVTdGF0dXMuR1VJREVfTVVTRVVNIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgbS5yb2xlID09PSBSb2xlU3RhdHVzLlZJU0lUT1JfTVVTRVVNLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcHJvZmlsZUZvck1haWwobWFpbDogc3RyaW5nKTogUHJvbWlzZTxQcm9maWxlPiB7XHJcbiAgICAgICAgY29uc3QgdXNlcnNXaXRoTWFpbCA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0VXNlcnNGb3JNYWlsKG1haWwpO1xyXG4gICAgICAgIHJldHVybiB1c2Vyc1dpdGhNYWlsLmxlbmd0aCA+IDAgPyB1c2Vyc1dpdGhNYWlsWzBdIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjdXJyZW50T3JkZXJlZE9yZ0xpc3QoKTogT3JnYW5pc2F0aW9uW10ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvcmRlcmVkT3JnTGlzdCA9IHRoaXMuY3VycmVudE1pc3Npb25zLm1hcChcclxuICAgICAgICAgICAgKG1pcykgPT4gbWlzLm9yZGVyZWRPcmdhbmlzYXRpb24sXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gZmlsdGVyVW5pcXVlQXJyYXlCeUlEKG9yZGVyZWRPcmdMaXN0KTtcclxuICAgIH1cclxuXHJcbiAgICB1c2VySGFzQWNjZXNzVG9BbGxab25lc0luU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnNGb3JTcGFjZSA9IHRoaXMuY3VycmVudE1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgKG1pcykgPT4gbWlzLnNwYWNlSUQgPT09IHNwYWNlSUQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gbWlzc2lvbnNGb3JTcGFjZS5zb21lKFxyXG4gICAgICAgICAgICAobWlzc2lvbikgPT5cclxuICAgICAgICAgICAgICAgICFtaXNzaW9uLnpvbmVJRCB8fCAobWlzc2lvbi56b25lICYmICFtaXNzaW9uLnpvbmUucGFyZW50SUQpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbG9nb3V0Q3VycmVudEFuZFNpZ25PdXRBdXRoKCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlUHJvZmlsZSh7XHJcbiAgICAgICAgICAgIGlkOiB0aGlzLmN1LmlkLFxyXG4gICAgICAgICAgICB0b2tlbjogbnVsbCxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmN1ID0gbnVsbDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRNaXNzaW9ucyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pc0NoYW5nZWQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgYXdhaXQgQXV0aC5zaWduT3V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbG9nb3V0Q3VycmVudFdpaHRvdXRBdXRoKCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlUHJvZmlsZSh7XHJcbiAgICAgICAgICAgIGlkOiB0aGlzLmN1LmlkLFxyXG4gICAgICAgICAgICB0b2tlbjogbnVsbCxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmN1ID0gbnVsbDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRNaXNzaW9ucyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pc0NoYW5nZWQubmV4dChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hlY2tBY2Nlc3NUb2tlbihqd3RUb2tlbjogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZVRpbWUubG9jYWwoKTtcclxuICAgICAgICBpZiAodGhpcy5jdS50b2tlbiAmJiB0aGlzLmN1LnRva2VuRXhwaXJlZEF0ID4gbm93LnRvTWlsbGlzKCkpIHtcclxuICAgICAgICAgICAgLy8gY2hlY2sgdG9rZW5cclxuICAgICAgICAgICAgaWYgKHRoaXMuY3UudG9rZW4gPT09IGp3dFRva2VuKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInNhbWUgYXdzIHRva2VuXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYWxlcnQodGhpcy50cmFuc2xhdGUuaW5zdGFudChcImF1dGguZXJyb3IuYWN0aXZlVG9rZW5cIikpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlUHJvZmlsZSh7XHJcbiAgICAgICAgICAgIGlkOiB0aGlzLmN1LmlkLFxyXG4gICAgICAgICAgICB0b2tlbkV4cGlyZWRBdDogbm93LnBsdXMoeyBtaW51dGVzOiA1IH0pLnRvTWlsbGlzKCksXHJcbiAgICAgICAgICAgIHRva2VuOiBqd3RUb2tlbixcclxuICAgICAgICAgICAgc3RhdHVzOiBQcm9maWxlU3RhdHVzLkFDVElWRSxcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjbGVhclVzZXJUb2tlbihpZCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlUHJvZmlsZSh7XHJcbiAgICAgICAgICAgIGlkOiBpZCxcclxuICAgICAgICAgICAgdG9rZW46IG51bGwsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQ3VycmVudFVzZXIocHJvZmlsZTogUHJvZmlsZSkge1xyXG4gICAgICAgIHRoaXMuY3UgPSBuZXcgUHJvZmlsZUVudGl0eShwcm9maWxlKTtcclxuICAgICAgICB0aGlzLmlzQ2hhbmdlZC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNwTW9kdWxlKCk6IFNwTW9kdWxlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zcE1vZHVsZTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
501
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQixPQUFPLEVBQUUsV0FBVyxFQUFrQyxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUNqSixPQUFPLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXhLLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7O0FBVW5DOztHQUVHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUF1QnhCLFlBQ1ksY0FBOEIsRUFDOUIsY0FBOEIsRUFDOUIsZUFBZ0MsRUFDaEMsTUFBYyxFQUNkLFFBQWtCLEVBQ2xCLE1BQWMsRUFDZCxTQUEyQixFQUNmLGdCQUEwQjtRQVB0QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUE1QnZDLGNBQVMsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUVyRCxhQUFR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QUk7U0FDZCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBZ0I7UUFDOUIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsV0FBVztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDOzs2R0E5a0JRLGVBQWUsaU5BK0JaLFVBQVU7aUhBL0JiLGVBQWUsY0FGWixNQUFNOzRGQUVULGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFnQ1EsTUFBTTsyQkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7IExldmVsU3RhdHVzLCBNaXNzaW9uLCBPcmdhbmlzYXRpb24sIFByb2ZpbGUsIFByb2ZpbGVFbnRpdHksIFByb2ZpbGVTdGF0dXMsIFByb3BlcnR5VHlwZSwgUm9sZVN0YXR1cywgU3BNb2R1bGUgfSBmcm9tIFwiLi4vdHlwZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBlbnVtVG9BcnJheSwgZmlsdGVyVW5pcXVlQXJyYXlCeUlELCBnZXRIaWdoZXN0TGV2ZWxGb3JNaXNzaW9ucywgZ2V0SGlnaGVzdFJvbGVGb3JNaXNzaW9ucywgZ2V0TGV2ZWxzQmVsb3csIGdldFJvbGVzQmVsb3dGb3JNYW5hZ2VyIH0gZnJvbSBcIi4uL2hlbHBlcnMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQcm9maWxlU2VydmljZSB9IGZyb20gXCIuL21vZGVscy9wcm9maWxlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvbWlzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFByb3BlcnR5U2VydmljZSB9IGZyb20gXCIuL21vZGVscy9wcm9wZXJ0eS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSBcImx1eG9uXCI7XHJcbmltcG9ydCB7IEF1dGggfSBmcm9tIFwiYXdzLWFtcGxpZnlcIjtcclxuXHJcbmludGVyZmFjZSBDcmVhdGVVc2VyIHtcclxuICAgIGVtYWlsOiBzdHJpbmc7XHJcbiAgICBwaG9uZT86IHN0cmluZztcclxuICAgIGxhc3ROYW1lOiBzdHJpbmc7XHJcbiAgICBmaXJzdE5hbWU6IHN0cmluZztcclxuICAgIHBhc3N3b3JkPzogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogVXNlclNlcnZpY2UgaGFuZGxlcyB1c2VyJ3MgbGlmZWN5Y2xlLCBmcm9tIGNyZWF0aW9uIHRvIGRlbGV0aW9uXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhc2VVc2VyU2VydmljZSB7XHJcblxyXG4gICAgaXNDaGFuZ2VkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICB1cGRhdGluZyA9IGZhbHNlO1xyXG5cclxuICAgIG1hbmFnZXJzID0gW1xyXG4gICAgICAgIFJvbGVTdGF0dXMuQURNSU4sXHJcbiAgICAgICAgUm9sZVN0YXR1cy5NQU5BR0VSLFxyXG4gICAgICAgIFJvbGVTdGF0dXMuT1dORVIsXHJcbiAgICAgICAgUm9sZVN0YXR1cy5HVUlERV9NVVNFVU0sXHJcbiAgICBdO1xyXG5cclxuICAgIGN1cnJlbnRNaXNzaW9uczogTWlzc2lvbltdO1xyXG5cclxuICAgIGxhc3RFeHBpcmVkTWlzc2lvbjogTWlzc2lvbjtcclxuXHJcbiAgICBuZXh0TWlzc2lvblRvU3RhcnQ6IE1pc3Npb247XHJcblxyXG4gICAgY3U6IFByb2ZpbGVFbnRpdHkgPSBudWxsO1xyXG5cclxuICAgIHNwTW9kdWxlOiBTcE1vZHVsZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHByb2ZpbGVTZXJ2aWNlOiBQcm9maWxlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG1pc3Npb25TZXJ2aWNlOiBNaXNzaW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHByb3BlcnR5U2VydmljZTogUHJvcGVydHlTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICBASW5qZWN0KCdTUE1vZHVsZScpIHNwTW9kdWxlSW5qZWN0ZWQ6IFNwTW9kdWxlLFxyXG4gICAgKSB7XHJcbiAgICAgICAgLy8gdGhpcy5jaGVja0Nvbm5lY3RlZEFXU1VzZXIoKTtcclxuICAgICAgICB0aGlzLm1pc3Npb25TZXJ2aWNlLmN1cnJlbnRNaXNzaW9uc1VwZGF0ZWQuc3Vic2NyaWJlKGFzeW5jIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1pc3Npb25zID1cclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWlzc2lvblNlcnZpY2UuaW5zdGFudE1pc3Npb25zT2ZDdXJyZW50KHRoaXMuY3UuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLmlzQ2hhbmdlZC5uZXh0KHRydWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc3BNb2R1bGUgPSBzcE1vZHVsZUluamVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIGlmIEFXUyB1c2VyIGlzIGNvbm5lY3RlZCBhbmQgYXNzaWduZyBpdCB0byBjdXJyZW50IHVzZXIgKHRoaXMuY3UpXHJcbiAgICAqKi9cclxuICAgIGFzeW5jIGNoZWNrQ29ubmVjdGVkQVdTVXNlcigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3UpIHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJjaGVjayBBV1MgdXNlclwiKTtcclxuICAgICAgICAgICAgbGV0IGNhdSA9IG51bGw7XHJcbiAgICAgICAgICAgIGxldCB1c2VyID0gbnVsbDtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy51cGRhdGluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhdSA9IGF3YWl0IEF1dGguY3VycmVudEF1dGhlbnRpY2F0ZWRVc2VyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJjb25uZWN0ZWRcIiwgY2F1KTtcclxuICAgICAgICAgICAgICAgICAgICB1c2VyID0gYXdhaXQgdGhpcy5jdXJyZW50KGNhdSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJjdXJyZW50IG9mIHVzZXJTZXJ2aWNlXCIsIHVzZXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxyXG4gICAgICAgICAgICBpZiAoIXVzZXIgJiYgIXRoaXMudXBkYXRpbmcpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibm8gdXNlciBpbiBjaGVjayBjb25uZWN0ZWQgYXdzIHVzZXJcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJhdXRoXCJdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGNyZWF0ZVVzZXIgc3Bhd25zIGEgbmV3IFVzZXIsIGFsb25nIHdpdGg6XHJcbiAgICAgKiAtIGEgcHJvcGVyIEFXU0NvZ25pdG8gc2lnbnVwXHJcbiAgICAgKiAtIGEgUHJvZmlsZSBlbnRyeSBob2xkaW5nIHRoZSBBV1NDb2duaXRvIElEXHJcbiAgICAgKiAtIGEgTWlzc2lvbiBlbnRyeSBob2xkaW5nIHRoZSBPcmdhbmlzYXRpb24gSURcclxuICAgICAqXHJcbiAgICAgKiBAc2VlIDE3NFxyXG4gICAgICogQHNlZSBodHRwczovL2RvY3MuYW1wbGlmeS5hd3MvbGliL2F1dGgvZW1haWxwYXNzd29yZC9xL3BsYXRmb3JtL2pzI3NpZ24tdXBcclxuICAgICAqIEB0b2RvIHdvbmRlciBpZiB3ZSBjYW4gbWFzaCB0b2dldGhlciBQcm9maWxlLCBNaXNzaW9uIGFuZCBVc2VyIGVudHJpZXNcclxuICAgICAqIEBwYXJhbSB1IFVzZXIgdG8gYmUgY3JlYXRlZFxyXG4gICAgICovXHJcbiAgICBhc3luYyBjcmVhdGVVc2VyQVdTYW5kUHJvZmlsZShcclxuICAgICAgICB1OiB7XHJcbiAgICAgICAgICAgIGVtYWlsOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIHBob25lOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGxhc3ROYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGZpcnN0TmFtZTogc3RyaW5nO1xyXG4gICAgICAgICAgICBwYXNzd29yZD86IHN0cmluZztcclxuICAgICAgICB9LFxyXG4gICAgICAgIHByZXZhbGlkYXRlZDogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgKTogUHJvbWlzZTxQcm9maWxlPiB7XHJcbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHtcclxuICAgICAgICAgICAgZW1haWw6IHUuZW1haWwudHJpbSgpLFxyXG4gICAgICAgICAgICBnaXZlbl9uYW1lOiB1LmZpcnN0TmFtZSxcclxuICAgICAgICAgICAgZmFtaWx5X25hbWU6IHUubGFzdE5hbWUsXHJcbiAgICAgICAgICAgIHpvbmVpbmZvOiBcImZyXCIsIC8vIEB0b2RvIGRlYWwgd2l0aCB6b25laW5mbyBhbmQgbG9jYWxlXHJcbiAgICAgICAgICAgIGxvY2FsZTogXCJmclwiLFxyXG4gICAgICAgICAgICBcImN1c3RvbTpwcmV2YWxpZGF0ZWRcIjogXCJmYWxzZVwiLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKHByZXZhbGlkYXRlZCkge1xyXG4gICAgICAgICAgICBhdHRyaWJ1dGVzW1wiY3VzdG9tOnByZXZhbGlkYXRlZFwiXSA9IFwidHJ1ZVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBBV1NDb2duaXRvXHJcbiAgICAgICAgY29uc3QgcGFzc3dvcmQgPSB1LnBhc3N3b3JkID8gdS5wYXNzd29yZCA6IFwidGVtcG9yYXJ5cFwiO1xyXG4gICAgICAgIGxldCBlcnJvcjtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB7IHVzZXJTdWIgfSA9IGF3YWl0IEF1dGguc2lnblVwKHtcclxuICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB1LmVtYWlsLCAvLyB1c2VybmFtZSBzaG91bGQgYmUgYW4gZW1haWwgdGhleSBzYXlcclxuICAgICAgICAgICAgICAgIHBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlcyxcclxuICAgICAgICAgICAgICAgIGNsaWVudE1ldGFkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGhvbmU6IHUucGhvbmUsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKHVzZXJTdWIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVByb2ZpbGUodXNlclN1YiwgdSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlcnJvcl86IGFueSkge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGVycm9yXy5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiSW52YWxpZFBhc3N3b3JkRXhjZXB0aW9uXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBcImF1dGguZXJyb3Iud3JvbmdfcGFzc3dvcmRcIjtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJVc2VyTm90Q29uZmlybWVkRXhjZXB0aW9uXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBcImF1dGguZXJyb3IudXNlcl9ub3RfY29uZmlybWVkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvblwiOlxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gXCJhdXRoLmVycm9yLmludmFsaWRfcGFyYW1ldGVyXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gZXJyb3JfLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc29sZS5sb2coYEFXUyBTaWduIFVQIGVycm9yIDogJHtlcnJvcn1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIC0gQ3JlYXRlcyBBV1MgdXNlciBpbiBDb2duaXRvIGZvciBIb3RlbCBVc2VyIFBvb2wgU2NoZW1hIChvbmx5IGVtYWlsIGlzIHJlcXVpcmVkKVxyXG4gICAgICogLSBDcmVhdGVzIFByb2ZpbGUgaW4gRHluYW1vREJcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdSBVc2VyIHRvIGJlIGNyZWF0ZWRcclxuICAgICAqL1xyXG4gICAgYXN5bmMgY3JlYXRlSG90ZWxVc2VyQVdTYW5kUHJvZmlsZShcclxuICAgICAgICB1c2VyOiB7XHJcbiAgICAgICAgICAgIGVtYWlsOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGxhc3ROYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGZpcnN0TmFtZTogc3RyaW5nO1xyXG4gICAgICAgIH0sXHJcbiAgICApOiBQcm9taXNlPFByb2ZpbGU+IHtcclxuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0ge1xyXG4gICAgICAgICAgICBlbWFpbDogdXNlci5lbWFpbC50cmltKClcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIEFXU0NvZ25pdG9cclxuICAgICAgICBjb25zdCBwYXNzd29yZCA9IFwidGVtcG9yYXJ5cFwiO1xyXG4gICAgICAgIGxldCBlcnJvcjtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB7IHVzZXJTdWIgfSA9IGF3YWl0IEF1dGguc2lnblVwKHtcclxuICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB1c2VyLmVtYWlsLnRyaW0oKSxcclxuICAgICAgICAgICAgICAgIHBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlcyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICh1c2VyU3ViKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVQcm9maWxlKHVzZXJTdWIsIHVzZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3JfOiBhbnkpIHtcclxuICAgICAgICAgICAgc3dpdGNoIChlcnJvcl8uY29kZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIkludmFsaWRQYXNzd29yZEV4Y2VwdGlvblwiOlxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gXCJhdXRoLmVycm9yLndyb25nX3Bhc3N3b3JkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiVXNlck5vdENvbmZpcm1lZEV4Y2VwdGlvblwiOlxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gXCJhdXRoLmVycm9yLnVzZXJfbm90X2NvbmZpcm1lZFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb25cIjpcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFwiYXV0aC5lcnJvci5pbnZhbGlkX3BhcmFtZXRlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGVycm9yXy5tZXNzYWdlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBV1MgU2lnbiBVUCBlcnJvciA6ICR7ZXJyb3J9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlUHJvZmlsZShcclxuICAgICAgICBhd3NVc2VySUQ6IHN0cmluZyxcclxuICAgICAgICB1OiBDcmVhdGVVc2VyLFxyXG4gICAgKTogUHJvbWlzZTxQcm9maWxlPiB7XHJcbiAgICAgICAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuY3JlYXRlUHJvZmlsZSh7XHJcbiAgICAgICAgICAgIHVzZXJJRDogYXdzVXNlcklELFxyXG4gICAgICAgICAgICBtZXRhZGF0YTogSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgZW1haWw6IHUuZW1haWwsXHJcbiAgICAgICAgICAgICAgICBwaG9uZTogdS5waG9uZSxcclxuICAgICAgICAgICAgICAgIGxhc3ROYW1lOiB1Lmxhc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgZmlyc3ROYW1lOiB1LmZpcnN0TmFtZSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHN0YXR1czogUHJvZmlsZVN0YXR1cy5XQUlUSU5HX0ZPUl9BQ1RJVkFUSU9OLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBwcm9maWxlO1xyXG4gICAgfVxyXG5cclxuICAgIGN1cnJlbnRPcmdhbmlzYXRpb24oc3BhY2VJRDogc3RyaW5nID0gbnVsbCk6IE9yZ2FuaXNhdGlvbiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3UpIHtcclxuICAgICAgICAgICAgaWYgKCFzcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnNbMF0ub3JnYW5pc2F0aW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9uKHNwYWNlSUQpLm9yZ2FuaXNhdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3VycmVudChcclxuICAgICAgICB1c2VyLFxyXG4gICAgICAgIGZhc3RDb25uZWN0OiBib29sZWFuID0gZmFsc2UsXHJcbiAgICApOiBQcm9taXNlPFByb2ZpbGVFbnRpdHkgfCBudWxsPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1ICYmICF0aGlzLnVwZGF0aW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmN1ID0gYXdhaXQgdGhpcy51c2VyRnJvbUFXU0lEKHVzZXIudXNlcm5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY3UgJiYgdXNlci5hdHRyaWJ1dGVzLmVtYWlsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAgICAgICBgTm8gcHJvZmlsZSBmb3IgdXNlcklEIPCflKogJHt1c2VyLmF0dHJpYnV0ZXMuZW1haWx9YCxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAvLyBUaGVyZSdzIG5vIHByb2ZpbGVzLCBwcm9maWxlcy5pdGVtcy5sZW5ndGggPT09IDBcclxuICAgICAgICAgICAgICAgIC8vIEl0J3MgbWF5YmUgdGhlIPCfpK4gY2FzZSB3aGVyZSB0aGUgcHJvZmlsZSBoYXMgYmVlbiBzYXZlZCB3aXRoIGFuIGVtYWlsXHJcbiAgICAgICAgICAgICAgICAvLyBpbnN0ZWFkIG9mIGFuIGhhc2hlZCBpZFxyXG4gICAgICAgICAgICAgICAgLy8gSWYgZm91bmQsIHdlIG5lZWQgdG8gcmVwbGFjZSB0aGUgaWQgaW4gYm90aCB0aGUgUHJvZmlsZVxyXG4gICAgICAgICAgICAgICAgY29uc3QgZW1haWxQcm9maWxlID0gYXdhaXQgdGhpcy51c2VyRnJvbUFXU0lEKFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZXIuYXR0cmlidXRlcy5lbWFpbCxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZW1haWxQcm9maWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGDwn5GPIGRvaW5nIHRoZSBzcGFjZWhpcCByZXZlcnNhbCBlbWFpbCBvbiAke3VzZXIuYXR0cmlidXRlcy5lbWFpbH1gLFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdSA9IGF3YWl0IHRoaXMudXNlckZyb21BV1NJRCh1c2VyLnVzZXJuYW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY3UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IEF1dGguc2lnbk91dCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbWlzc2lvbnMgPSBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLmluc3RhbnRNaXNzaW9uc09mQ3VycmVudChcclxuICAgICAgICAgICAgICAgIHRoaXMuY3UuaWRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TWlzc2lvbnMgPSBtaXNzaW9ucztcclxuICAgICAgICAgICAgbGV0IG9rVG9Mb2dpbiA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmICghZmFzdENvbm5lY3QgJiYgIXRoaXMuaGFzTWFuYWdlclJvbGVJbkFueU1pc3Npb24oKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgYWNjZXNzIHRva2VuIGlmIG5vdCBGYXN0IGNvbm5lY3QgKGZhc3QgY29ubmVjdCBpcyBmb3IgdGhlIGd1ZXN0IGNvbm5lY3Rpb24gdmlhIGxpbmsoL3JlZGlyZWN0P3VzZXI9KSlcclxuICAgICAgICAgICAgICAgIC8vIGNoZWNrcyB2aXNpdG9ycyhtdXNldW0gb3Igbm90KSwgb2NjdXBhbnRzLCBzZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICBva1RvTG9naW4gPSBhd2FpdCB0aGlzLmNoZWNrQWNjZXNzVG9rZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlci5zaWduSW5Vc2VyU2Vzc2lvbi5hY2Nlc3NUb2tlbi5qd3RUb2tlbixcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFva1RvTG9naW4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TWlzc2lvbnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IEF1dGguc2lnbk91dCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVQcm9maWxlKHtcclxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmN1LmlkLFxyXG4gICAgICAgICAgICAgICAgbGFzdENvbm5lY3RlZEF0OiBEYXRlLm5vdygpLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKCFtaXNzaW9ucyAmJiB0aGlzLmxvY2F0aW9uLnBhdGgoKSAhPT0gXCIvbm8tbWlzc2lvblwiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9uby1taXNzaW9uXCJdKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwidXNlciBpcyBjaGFuZ2VkIGVtaXR0aW5nXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmlzQ2hhbmdlZC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmN1O1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVzZXJGcm9tQVdTSUQodXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPFByb2ZpbGVFbnRpdHkgfCBudWxsPiB7XHJcbiAgICAgICAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0UHJvZmlsZUZyb21BV1NJRCh1c2VySWQpO1xyXG4gICAgICAgIGlmIChwcm9maWxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvZmlsZUVudGl0eShwcm9maWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXNlckZyb21Vc2VySUQodXNlcklEOiBzdHJpbmcpOiBQcm9taXNlPFByb2ZpbGVFbnRpdHkgfCBudWxsPiB7XHJcbiAgICAgICAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0UHJvZmlsZSh1c2VySUQpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvZmlsZUVudGl0eShwcm9maWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBjdXJyZW50TWlzc2lvbihzcGFjZUlEOiBzdHJpbmcpOiBNaXNzaW9uIHtcclxuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy5nZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgcmV0dXJuIG1pc3Npb247XHJcbiAgICB9XHJcblxyXG4gICAgaXNNYW5hZ2VyKHNwYWNlSUQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLmdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBpZiAobWlzc2lvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYW5hZ2Vycy5pbmNsdWRlcyhtaXNzaW9uLnJvbGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaXNTZXJ2aWNlKHNwYWNlSUQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLmdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBpZiAobWlzc2lvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbWlzc2lvbi5yb2xlID09PSBSb2xlU3RhdHVzLlNFUlZJQ0U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpc0FkbWluKHNwYWNlSUQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLmdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBpZiAobWlzc2lvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbWlzc2lvbi5yb2xlID09PSBSb2xlU3RhdHVzLkFETUlOO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaXNTbWFydGVyUGxhbigpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3BNaXNzaW9ucyA9IHRoaXMuY3VycmVudE1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgKG0pID0+XHJcbiAgICAgICAgICAgICAgICBtLm9yZ2FuaXNhdGlvbklEID09PSBcIjZlMjgyMDFmLTQ2NzktNGMyOS05ZDJkLThhMzI1ZjU3Y2VlOVwiICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hbmFnZXJzLmluY2x1ZGVzKG0ucm9sZSksXHJcbiAgICAgICAgKTsgLy8gSUQgb2YgU21hcnRlclBsYW5cclxuICAgICAgICByZXR1cm4gc3BNaXNzaW9ucy5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlzU1BBZG1pbigpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3BNaXNzaW9ucyA9IHRoaXMuY3VycmVudE1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgKG0pID0+XHJcbiAgICAgICAgICAgICAgICBtLm9yZ2FuaXNhdGlvbklEID09PSBcIjZlMjgyMDFmLTQ2NzktNGMyOS05ZDJkLThhMzI1ZjU3Y2VlOVwiICYmXHJcbiAgICAgICAgICAgICAgICBtLnJvbGUgPT09IFJvbGVTdGF0dXMuQURNSU4sXHJcbiAgICAgICAgKTsgLy8gSUQgb2YgU21hcnRlclBsYW5cclxuICAgICAgICByZXR1cm4gc3BNaXNzaW9ucy5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBNaXNzaW9uIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnMuZmluZCgobSkgPT4gbS5zcGFjZUlEID09PSBzcGFjZUlEKTtcclxuICAgIH1cclxuXHJcbiAgICBoYXNNYW5hZ2VyUm9sZUluQW55TWlzc2lvbigpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLnNvbWUoKG1pcykgPT5cclxuICAgICAgICAgICAgdGhpcy5tYW5hZ2Vycy5pbmNsdWRlcyhtaXMucm9sZSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBoYXNTZXJ2aWNlUm9sZUluQW55TWlzc2lvbigpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLnNvbWUoXHJcbiAgICAgICAgICAgIChtaXMpID0+IG1pcy5yb2xlID09PSBSb2xlU3RhdHVzLlNFUlZJQ0UsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBoYXNBZG1pblJvbGVJbkFueU1pc3Npb24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9ucy5zb21lKFxyXG4gICAgICAgICAgICAobWlzKSA9PiBtaXMucm9sZSA9PT0gUm9sZVN0YXR1cy5BRE1JTixcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNyZWF0ZU9yVXBkYXRlTWlzc2lvbkZvck9yZ1dpdGhQcm9wZXJ0eShcclxuICAgICAgICBtaXNzaW9uSW5wdXQ6IE1pc3Npb24sXHJcbiAgICAgICAgb3JnSUQ6IHN0cmluZyxcclxuICAgICAgICBjcmVhdGU6IGJvb2xlYW4gPSB0cnVlLFxyXG4gICAgKTogUHJvbWlzZTxNaXNzaW9uPiB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbiA9IGF3YWl0IChjcmVhdGVcclxuICAgICAgICAgICAgPyB0aGlzLm1pc3Npb25TZXJ2aWNlLmNyZWF0ZShtaXNzaW9uSW5wdXQpXHJcbiAgICAgICAgICAgIDogdGhpcy5taXNzaW9uU2VydmljZS51cGRhdGUobWlzc2lvbklucHV0KSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1hbmFnZXJzLmluY2x1ZGVzKG1pc3Npb24ucm9sZSkgJiYgbWlzc2lvbi5zcGFjZUlEKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPVxyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuZ2V0UHJvcGVydGllc0Zvck9yZ2FuaXNhdGlvbihvcmdJRCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5U3BhY2VJRHMgPSBwcm9wZXJ0aWVzLm1hcChcclxuICAgICAgICAgICAgICAgIChwcm9wZXJ0eV8pID0+IHByb3BlcnR5Xy5zcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAocHJvcGVydHlTcGFjZUlEcy5pbmNsdWRlcyhtaXNzaW9uLnNwYWNlSUQpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlzc2lvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB3ZSBkZWxlZ2F0ZSB0aGUgcmlnaHRzIG9mIHRoZSBzcGFjZVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb3BlcnR5U2VydmljZS5jcmVhdGVQcm9wZXJ0eSh7XHJcbiAgICAgICAgICAgICAgICBzcGFjZUlEOiBtaXNzaW9uLnNwYWNlSUQsXHJcbiAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25JRDogb3JnSUQsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBQcm9wZXJ0eVR5cGUuU0hBUkVELFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1pc3Npb247XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc29mdERlbGV0ZVVzZXIodXNlcklEOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBtaXNzaW9ucyA9IGF3YWl0IHRoaXMubWlzc2lvblNlcnZpY2UuZ2V0TWlzc2lvbnNGcm9tVXNlcklEKHVzZXJJRCk7XHJcbiAgICAgICAgaWYgKG1pc3Npb25zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVByb2ZpbGUoeyBpZDogdXNlcklELCBkZWxldGVkQXQ6IERhdGUubm93KCkgfSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUHJvZmlsZSBzb2Z0IGRlbGV0ZWRcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3MgaWYgdGhlIFByb2ZpbGUgKGJ5IGlkKSBjYW4gYmUgcmVtb3ZlZCBjb21wbGV0ZWx5IGZyb20gdGhlIERCIChubyBtaXNzaW9ucyBpbiB0aGUgREIpXHJcbiAgICAgKiBAcGFyYW0gcHJvZmlsZUlEXHJcbiAgICAgKiBAcmV0dXJucyBib29sZWFuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGNhbkhhcmREZWxldGVVc2VyKHByb2ZpbGVJRDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSAoYXdhaXQgdGhpcy5taXNzaW9uU2VydmljZS5nZXRNaXNzaW9uc0Zyb21Vc2VySUQocHJvZmlsZUlEKSk7XHJcbiAgICAgICAgcmV0dXJuIG1pc3Npb25zLmxlbmd0aCA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBoYXJkRGVsZXRlVXNlcih1c2VySUQ6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IGRlbGV0ZWQgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmRlbGV0ZVByb2ZpbGUodXNlcklEKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIlByb2ZpbGUgaGFyZCBkZWxldGVkXCIpO1xyXG4gICAgICAgIHJldHVybiBkZWxldGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE1hbmFnZXJNaXNzaW9ucygpOiBNaXNzaW9uW10ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnMuZmlsdGVyKChtaXMpID0+XHJcbiAgICAgICAgICAgIHRoaXMubWFuYWdlcnMuaW5jbHVkZXMobWlzLnJvbGUpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QXZhbGFibGVMZXZlbHNGb3JDdXJyZW50VXNlcigpOiBMZXZlbFN0YXR1c1tdIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbTGV2ZWxTdGF0dXMuTUlOSU1VTV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGxldmVscyA9IGVudW1Ub0FycmF5KExldmVsU3RhdHVzKTtcclxuICAgICAgICBjb25zdCBoaWdoZXN0TGV2ZWwgPSBnZXRIaWdoZXN0TGV2ZWxGb3JNaXNzaW9ucyh0aGlzLmN1cnJlbnRNaXNzaW9ucyk7XHJcblxyXG4gICAgICAgIHJldHVybiBsZXZlbHMuZmlsdGVyKChsZXZlbCkgPT5cclxuICAgICAgICAgICAgZ2V0TGV2ZWxzQmVsb3coaGlnaGVzdExldmVsKS5pbmNsdWRlcyhsZXZlbCksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBdmFpbGFibGVSb2xlc0ZvckN1cnJlbnRVc2VyKCk6IFJvbGVTdGF0dXNbXSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gW1JvbGVTdGF0dXMuVklTSVRPUl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJvbGVzID0gZW51bVRvQXJyYXkoUm9sZVN0YXR1cyk7XHJcbiAgICAgICAgY29uc3QgaGlnaGVzdFJvbGUgPSBnZXRIaWdoZXN0Um9sZUZvck1pc3Npb25zKHRoaXMuY3VycmVudE1pc3Npb25zKTtcclxuICAgICAgICByZXR1cm4gcm9sZXMuZmlsdGVyKChyb2xlKSA9PlxyXG4gICAgICAgICAgICBnZXRSb2xlc0JlbG93Rm9yTWFuYWdlcihoaWdoZXN0Um9sZSkuaW5jbHVkZXMocm9sZSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogVGVzdCBpZiB0aGUgdXNlciBoYXZlIHRoZSByb2xlIGdpdmVuIGluIHBhcmFtZXRlciA6IFwicm9sZVN0YXR1c1wiICovXHJcbiAgICBpc1JvbGUocm9sZVN0YXR1czogUm9sZVN0YXR1cyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnMuc29tZSgobSkgPT4gbS5yb2xlID09PSByb2xlU3RhdHVzKTtcclxuICAgIH1cclxuXHJcbiAgICBpc0d1aWRlKHNwYWNlSUQ6IHN0cmluZyA9IG51bGwpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoc3BhY2VJRCkge1xyXG4gICAgICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy5nZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgICAgIGlmIChtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlzc2lvbi5yb2xlID09PSBSb2xlU3RhdHVzLkdVSURFX01VU0VVTTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5pc1JvbGUoUm9sZVN0YXR1cy5HVUlERV9NVVNFVU0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTXVzZXVtVmlzaXRvcihzcGFjZUlEOiBzdHJpbmcgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHNwYWNlSUQpIHtcclxuICAgICAgICAgICAgY29uc3QgbWlzc2lvbiA9IHRoaXMuZ2V0TWlzc2lvbkZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgICAgICBpZiAobWlzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pc3Npb24ucm9sZSA9PT0gUm9sZVN0YXR1cy5WSVNJVE9SX01VU0VVTTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5pc1JvbGUoUm9sZVN0YXR1cy5WSVNJVE9SX01VU0VVTSk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNPY2N1cGFudCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1JvbGUoUm9sZVN0YXR1cy5PQ0NVUEFOVCk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNWaXNpdG9yKHNwYWNlSUQ6IHN0cmluZyA9IG51bGwpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoc3BhY2VJRCkge1xyXG4gICAgICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy5nZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgICAgIGlmIChtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlzc2lvbi5yb2xlID09PSBSb2xlU3RhdHVzLlZJU0lUT1I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSb2xlKFJvbGVTdGF0dXMuVklTSVRPUik7XHJcbiAgICB9XHJcblxyXG4gICAgaXNNdXNldW1Vc2VyKHNwYWNlSUQ6IHN0cmluZyA9IG51bGwpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0d1aWRlKHNwYWNlSUQpIHx8IHRoaXMuaXNNdXNldW1WaXNpdG9yKHNwYWNlSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhc09ubHlNdXNldW1Sb2xlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnMuZXZlcnkoXHJcbiAgICAgICAgICAgICAgICAobSkgPT5cclxuICAgICAgICAgICAgICAgICAgICBtLnJvbGUgPT09IFJvbGVTdGF0dXMuR1VJREVfTVVTRVVNIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgbS5yb2xlID09PSBSb2xlU3RhdHVzLlZJU0lUT1JfTVVTRVVNLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcHJvZmlsZUZvck1haWwobWFpbDogc3RyaW5nKTogUHJvbWlzZTxQcm9maWxlPiB7XHJcbiAgICAgICAgY29uc3QgdXNlcnNXaXRoTWFpbCA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0VXNlcnNGb3JNYWlsKG1haWwpO1xyXG4gICAgICAgIHJldHVybiB1c2Vyc1dpdGhNYWlsLmxlbmd0aCA+IDAgPyB1c2Vyc1dpdGhNYWlsWzBdIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjdXJyZW50T3JkZXJlZE9yZ0xpc3QoKTogT3JnYW5pc2F0aW9uW10ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvcmRlcmVkT3JnTGlzdCA9IHRoaXMuY3VycmVudE1pc3Npb25zLm1hcChcclxuICAgICAgICAgICAgKG1pcykgPT4gbWlzLm9yZGVyZWRPcmdhbmlzYXRpb24sXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gZmlsdGVyVW5pcXVlQXJyYXlCeUlEKG9yZGVyZWRPcmdMaXN0KTtcclxuICAgIH1cclxuXHJcbiAgICB1c2VySGFzQWNjZXNzVG9BbGxab25lc0luU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnNGb3JTcGFjZSA9IHRoaXMuY3VycmVudE1pc3Npb25zLmZpbHRlcihcclxuICAgICAgICAgICAgKG1pcykgPT4gbWlzLnNwYWNlSUQgPT09IHNwYWNlSUQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gbWlzc2lvbnNGb3JTcGFjZS5zb21lKFxyXG4gICAgICAgICAgICAobWlzc2lvbikgPT5cclxuICAgICAgICAgICAgICAgICFtaXNzaW9uLnpvbmVJRCB8fCAobWlzc2lvbi56b25lICYmICFtaXNzaW9uLnpvbmUucGFyZW50SUQpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbG9nb3V0Q3VycmVudEFuZFNpZ25PdXRBdXRoKCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlUHJvZmlsZSh7XHJcbiAgICAgICAgICAgIGlkOiB0aGlzLmN1LmlkLFxyXG4gICAgICAgICAgICB0b2tlbjogbnVsbCxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmN1ID0gbnVsbDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRNaXNzaW9ucyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pc0NoYW5nZWQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgYXdhaXQgQXV0aC5zaWduT3V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbG9nb3V0Q3VycmVudFdpaHRvdXRBdXRoKCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlUHJvZmlsZSh7XHJcbiAgICAgICAgICAgIGlkOiB0aGlzLmN1LmlkLFxyXG4gICAgICAgICAgICB0b2tlbjogbnVsbCxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmN1ID0gbnVsbDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRNaXNzaW9ucyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pc0NoYW5nZWQubmV4dChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hlY2tBY2Nlc3NUb2tlbihqd3RUb2tlbjogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZVRpbWUubG9jYWwoKTtcclxuICAgICAgICBpZiAodGhpcy5jdS50b2tlbiAmJiB0aGlzLmN1LnRva2VuRXhwaXJlZEF0ID4gbm93LnRvTWlsbGlzKCkpIHtcclxuICAgICAgICAgICAgLy8gY2hlY2sgdG9rZW5cclxuICAgICAgICAgICAgaWYgKHRoaXMuY3UudG9rZW4gPT09IGp3dFRva2VuKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInNhbWUgYXdzIHRva2VuXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYWxlcnQodGhpcy50cmFuc2xhdGUuaW5zdGFudChcImF1dGguZXJyb3IuYWN0aXZlVG9rZW5cIikpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlUHJvZmlsZSh7XHJcbiAgICAgICAgICAgIGlkOiB0aGlzLmN1LmlkLFxyXG4gICAgICAgICAgICB0b2tlbkV4cGlyZWRBdDogbm93LnBsdXMoeyBtaW51dGVzOiA1IH0pLnRvTWlsbGlzKCksXHJcbiAgICAgICAgICAgIHRva2VuOiBqd3RUb2tlbixcclxuICAgICAgICAgICAgc3RhdHVzOiBQcm9maWxlU3RhdHVzLkFDVElWRSxcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjbGVhclVzZXJUb2tlbihpZCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlUHJvZmlsZSh7XHJcbiAgICAgICAgICAgIGlkOiBpZCxcclxuICAgICAgICAgICAgdG9rZW46IG51bGwsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQ3VycmVudFVzZXIocHJvZmlsZTogUHJvZmlsZSkge1xyXG4gICAgICAgIHRoaXMuY3UgPSBuZXcgUHJvZmlsZUVudGl0eShwcm9maWxlKTtcclxuICAgICAgICB0aGlzLmlzQ2hhbmdlZC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNwTW9kdWxlKCk6IFNwTW9kdWxlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zcE1vZHVsZTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -39,12 +39,12 @@ export class ValidatorsService {
|
|
|
39
39
|
return '';
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
ValidatorsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
43
|
-
ValidatorsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
42
|
+
ValidatorsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ValidatorsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
43
|
+
ValidatorsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ValidatorsService, providedIn: 'root' });
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ValidatorsService, decorators: [{
|
|
45
45
|
type: Injectable,
|
|
46
46
|
args: [{
|
|
47
47
|
providedIn: 'root'
|
|
48
48
|
}]
|
|
49
49
|
}], ctorParameters: function () { return []; } });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy92YWxpZGF0b3JzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixnQkFBZ0IsQ0FBQztJQUVqQjs7OztPQUlHO0lBQ0ksY0FBYyxDQUFDLE9BQU87UUFDM0IsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxPQUFPO1FBQ3JCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUMzQixPQUFPLG9CQUFvQixDQUFDO2FBQzdCO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDMUIsT0FBTyxtQkFBbUIsQ0FBQzthQUM1QjtZQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7Z0JBQ3ZCLE9BQU8sZ0JBQWdCLENBQUM7YUFDekI7WUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO2dCQUN4QixPQUFPLGlCQUFpQixDQUFDO2FBQzFCO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtnQkFDNUIsT0FBTyxxQkFBcUIsQ0FBQzthQUM5QjtZQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ3pCLE9BQU8sa0JBQWtCLENBQUM7YUFDM0I7U0FDRjtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7K0dBekNVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRvcnNTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogcmV0dXJuIGlmIGNvbnRyb2wgYXMgZXJyb3JcclxuICAgKiBAcGFyYW0gY29udHJvbCBcclxuICAgKiBAcmV0dXJucyBcclxuICAgKi9cclxuICBwdWJsaWMgaXNDb250cm9sRXJyb3IoY29udHJvbCkge1xyXG4gICAgcmV0dXJuIChjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiBjb250cm9sLnRvdWNoZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogcmV0dXJuIGVycm9yIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbCBcclxuICAgKiBAcmV0dXJucyBcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0RXJyb3IoY29udHJvbCkge1xyXG4gICAgaWYgKGNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgIGlmIChjb250cm9sLmVycm9ycy5yZXF1aXJlZCkge1xyXG4gICAgICAgIHJldHVybiAnZXJyb3JGb3JtLnJlcXVpcmVkJztcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29udHJvbC5lcnJvcnMuaXNFbXB0eSkge1xyXG4gICAgICAgIHJldHVybiAnZXJyb3JGb3JtLmlzRW1wdHknO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb250cm9sLmVycm9ycy50ZXh0KSB7XHJcbiAgICAgICAgcmV0dXJuICdlcnJvckZvcm0udGV4dCc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbnRyb2wuZXJyb3JzLmVtYWlsKSB7XHJcbiAgICAgICAgcmV0dXJuICdlcnJvckZvcm0uZW1haWwnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb250cm9sLmVycm9ycy5tYXhsZW5ndGgpIHtcclxuICAgICAgICByZXR1cm4gJ2Vycm9yRm9ybS5tYXhMZW5ndGgnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb250cm9sLmVycm9ycy5udW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gJ2Vycm9yRm9ybS5udW1iZXInO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -378,12 +378,12 @@ export class ViewerService {
|
|
|
378
378
|
return this.isObjectLoaded;
|
|
379
379
|
}
|
|
380
380
|
}
|
|
381
|
-
ViewerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
382
|
-
ViewerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
383
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
381
|
+
ViewerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ViewerService, deps: [{ token: i1.PoiService }, { token: i2.MatterportService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
382
|
+
ViewerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ViewerService, providedIn: 'root' });
|
|
383
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ViewerService, decorators: [{
|
|
384
384
|
type: Injectable,
|
|
385
385
|
args: [{
|
|
386
386
|
providedIn: 'root',
|
|
387
387
|
}]
|
|
388
388
|
}], ctorParameters: function () { return [{ type: i1.PoiService }, { type: i2.MatterportService }]; } });
|
|
389
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3ZpZXdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQyw4QkFBOEI7QUFDOUIseUNBQXlDO0FBQ3pDLDJDQUEyQztBQUMzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHN0IsT0FBTyxFQUdMLGtCQUFrQixFQUNsQixPQUFPLEVBS1AsUUFBUSxHQUNULE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFDLGtCQUFrQixFQUFFLGtCQUFrQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDL0csT0FBTyxFQUFDLG1CQUFtQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sNERBQTRELENBQUM7Ozs7QUFNcEgsTUFBTSxPQUFPLGFBQWE7SUFrRHhCLFlBQ1UsVUFBc0IsRUFDdEIsaUJBQW9DO1FBRHBDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQW5EdEMsZUFBVSxHQUFXLFlBQVksQ0FBQztRQU1uQyxlQUFVLEdBS1osSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVaLGlCQUFZLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFL0MsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQU10QixrQkFBYSxHQUFHO1lBQ3JCLFNBQVMsRUFBRTtnQkFDVCxJQUFJLEVBQUUsS0FBSztnQkFDWCxNQUFNLEVBQUUsY0FBYztnQkFDdEIsSUFBSTtnQkFDSixDQUFDO2dCQUNELElBQUk7Z0JBQ0osQ0FBQzthQUNGO1lBQ0QsU0FBUyxFQUFFO2dCQUNULElB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LENBQUM7d0JBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO3FCQUM1QjtnQkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNiLENBQUM7Z0JBQ0YsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDMUI7WUFDRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxlQUF5QjtRQUM3QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztJQUVELDJCQUEyQixDQUFDLFlBQXFCO1FBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDO0lBQ3JDLENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7OzBHQWxlVSxhQUFhOzhHQUFiLGFBQWEsY0FGWixNQUFNOzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cclxuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgKi9cclxuLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge01hdHRlcnBvcnRTZXJ2aWNlfSBmcm9tICcuL21hdHRlcnBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7QmFzZVRhZ1NlcnZpY2V9IGZyb20gJy4vdGFnLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIERiT2JqZWN0VHlwZSxcclxuICBQT0ksXHJcbiAgVmlld2VySW50ZXJhY3Rpb25zLFxyXG4gIFBvaVR5cGUsXHJcbiAgQ29tbWVudCxcclxuICBFcXVpcG1lbnQsXHJcbiAgVGlja2V0LFxyXG4gIEZlYXR1cmUsXHJcbiAgU3BNb2R1bGUsXHJcbn0gZnJvbSAnLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7UG9pU2VydmljZX0gZnJvbSAnLi9tb2RlbHMvcG9pLnNlcnZpY2UnO1xyXG5pbXBvcnQge21ha2VTZWN1cml0eUNhbWVyYSwgc2VjdXJpdHlDYW1lcmFUeXBlfSBmcm9tIFwiLi4vbWF0dGVycG9ydC1leHRlbnNpb25zL3NlY3VyaXR5LWNhbWVyYS9TZWN1cml0eUNhbWVyYVwiO1xyXG5pbXBvcnQge1ZpZXdGcnVzdHVtTWVzaFR5cGUsIG1ha2VWaWV3RnJ1c3R1bU1lc2h9IGZyb20gXCIuLi9tYXR0ZXJwb3J0LWV4dGVuc2lvbnMvdmlldy1mcnVzdHVtLW1lc2gvVmlld0ZydXN0dW1NZXNoXCI7XHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuL25hdmlnYXRvci5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWaWV3ZXJTZXJ2aWNlIHtcclxuICBwcml2YXRlIHZpZXdlck1vZGU6IHN0cmluZyA9ICdNYXR0ZXJwb3J0JztcclxuXHJcbiAgcHVibGljIGN1cnJlbnRNb2RlbDNEOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgdG91clVybDogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgdmlld2VySXNPbjogU3ViamVjdDx7XHJcbiAgICBzcGFjZUlEOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgbW9kZWwzRDogc3RyaW5nIHwgbnVsbDtcclxuICAgIHN3ZWVwOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IH0gfCBudWxsO1xyXG4gIH0+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHVibGljIGRhdGFJc0xvYWRlZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHB1YmxpYyBpc0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgc2hvd2luZ1ZpZXdlciA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgc3dlZXBUb01vdmU6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIHB1YmxpYyByb3RhdGlvblRvTW92ZTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgfSB8IG51bGw7XHJcblxyXG4gIHB1YmxpYyB0b29sYm94U3RhdGVzID0ge1xyXG4gICAgZG9sbGhvdXNlOiB7XHJcbiAgICAgIHN0YXQ6IGZhbHNlLFxyXG4gICAgICBpY29uSWQ6ICd1aS1kb2xsaG91c2UnLFxyXG4gICAgICBzaG93KCkge1xyXG4gICAgICB9LFxyXG4gICAgICBoaWRlKCkge1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGZsb29ycGxhbjoge1xyXG4gICAgICBzdGF0OiBmYWxzZSxcclxuICAgIH0sXHJcbiAgICBtZXN1cmU6IHtcclxuICAgICAgc3RhdDogZmFsc2UsXHJcbiAgICAgIGljb25JZDogJ3VpLW1lc3VyZScsXHJcbiAgICAgIHNob3coKSB7XHJcbiAgICAgIH0sXHJcbiAgICAgIGhpZGUoKSB7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgZmlsdGVyOiB7XHJcbiAgICAgIHN0YXQ6IGZhbHNlLFxyXG4gICAgfSxcclxuICB9O1xyXG4gIHByaXZhdGUgaXNPYmplY3RMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1hdHRlcnBvcnRTZXJ2aWNlOiBNYXR0ZXJwb3J0U2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMuc2V0TW9kZSgnTWF0dGVycG9ydCcpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgIFV0aWxzXHJcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gIGNoZWNrTW9kZShpbmRleE1vZGU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMudmlld2VyTW9kZSA9PT0gaW5kZXhNb2RlO1xyXG4gIH1cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgU2V0dGVyc1xyXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuICBzZXRNb2RlKGluZGV4TW9kZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnZpZXdlck1vZGUgPSBpbmRleE1vZGU7XHJcbiAgfVxyXG5cclxuICBzZXRUb3VyVXJsKFxyXG4gICAgbW9kZWwzZDogc3RyaW5nLFxyXG4gICAgc2hvd0ljb25QbGFuOiBib29sZWFuID0gdHJ1ZSxcclxuICAgIHNob3dJY29uRG9sbGhvdXNlOiBib29sZWFuID0gdHJ1ZSxcclxuICAgIHNob3dJY29uRmxvb3JzOiBib29sZWFuID0gdHJ1ZSxcclxuICAgIGVuYWJsZVF1aWNrU3RhcnQ6IGJvb2xlYW4gPSB0cnVlXHJcbiAgKSB7XHJcbiAgICAvLyB0aGlzLnRvdXJVcmwgPSBgaHR0cHM6Ly9teS5tYXR0ZXJwb3J0LmNvbS9zaG93Lz9tPSR7bW9kZWwzZH0mcGxheT0xJmhyPTAmZ3Q9MCZ0aXRsZT0wJmxvZz0wJmJyYW5kPTAmc2VhcmNoPTAmYXBwbGljYXRpb25LZXk9cW45d3Nhc3V5NWgyZnpyYnJuMW56cjBpZCZtZHM9MCZuZXd0YWdzPTFgO1xyXG4gICAgdGhpcy50b3VyVXJsID0gYC9hc3NldHMvYnVuZGxlL3Nob3djYXNlLmh0bWw/bT0ke21vZGVsM2R9JnBsYXk9MSZocj0wJmd0PTAmdGl0bGU9MCZsb2c9MCZicmFuZD0wJnNlYXJjaD0wJmFwcGxpY2F0aW9uS2V5PXFuOXdzYXN1eTVoMmZ6cmJybjFuenIwaWQmbWRzPTAmbmV3dGFncz0xYDtcclxuXHJcbiAgICBpZiAoIXNob3dJY29uUGxhbikge1xyXG4gICAgICB0aGlzLnRvdXJVcmwgKz0gJyZmcD0wJztcclxuICAgIH1cclxuICAgIGlmICghc2hvd0ljb25Eb2xsaG91c2UpIHtcclxuICAgICAgdGhpcy50b3VyVXJsICs9ICcmZGg9MCc7XHJcbiAgICB9XHJcbiAgICBpZiAoIXNob3dJY29uRmxvb3JzKSB7XHJcbiAgICAgIHRoaXMudG91clVybCArPSAnJmY9MCc7XHJcbiAgICB9XHJcbiAgICBpZiAoZW5hYmxlUXVpY2tTdGFydCkge1xyXG4gICAgICB0aGlzLnRvdXJVcmwgKz0gJyZxcz0xJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGNsZWFyQWxsKCkge1xyXG4gICAgLy8gdGhpcy5zd2VlcFRvTW92ZSA9IG51bGw7XHJcbiAgICAvLyB0aGlzLnJvdGF0aW9uVG9Nb3ZlID0gbnVsbDtcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMuc2hvd2luZ1ZpZXdlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzTG9hZGVkID0gZmFsc2U7XHJcbiAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgICAgdGhpcy52aWV3ZXJJc09uLm5leHQoe1xyXG4gICAgICAgIHNwYWNlSUQ6IG51bGwsXHJcbiAgICAgICAgbW9kZWwzRDogbnVsbCxcclxuICAgICAgICBzd2VlcDogbnVsbCxcclxuICAgICAgICByb3RhdGlvbjogbnVsbCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICBHZXR0ZXJzXHJcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gIGdldE1vZGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy52aWV3ZXJNb2RlO1xyXG4gIH1cclxuXHJcbiAgZ2V0Vmlld2VyU2VsZWN0ZWRTZXJ2aWNlKCkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgLy8gaWYgKHRoaXMuY2hlY2tNb2RlKFwiTWF0dGVycG9ydFwiKSkge1xyXG4gICAgLy8gICAgIHJldHVybiB0aGlzLmdldE1hdHRlcnBvcnRTZXJ2aWNlKCk7XHJcbiAgICAvLyB9XHJcbiAgICByZXR1cm4gdGhpcy5nZXRNYXR0ZXJwb3J0U2VydmljZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG91clVybCgpIHtcclxuICAgIHJldHVybiB0aGlzLnRvdXJVcmw7XHJcbiAgfVxyXG5cclxuICBnZXRNYXR0ZXJwb3J0U2VydmljZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlO1xyXG4gIH1cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgR2VuZXJpYyBNYWluIGFjdGlvbiBmdW5jdGlvbnNcclxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBzZXRTd2VlcFRvTW92ZShzd2VlcDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN3ZWVwVG9Nb3ZlID0gc3dlZXA7XHJcbiAgfVxyXG5cclxuICBzZXRSb3RhdGlvblRvTW92ZShyb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgfSkge1xyXG4gICAgdGhpcy5yb3RhdGlvblRvTW92ZSA9IHJvdGF0aW9uO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWN0aW9uX21vdmVfdG9fdGFnKGVsZW1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldFRhZ0Zyb21FbGVtZW50SWQoZWxlbWVudElkKTtcclxuICAgICAgaWYgKHJlc3VsdC50YWcpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdvVG9UYWcocmVzdWx0LnRhZyk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlc3VsdC5zd2VlcCkge1xyXG4gICAgICAgIHRoaXMuc3dlZXBUb01vdmUgPSByZXN1bHQuc3dlZXA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBNYXR0ZXJ0YWdzIHRvIFZpZXdlclxyXG4gICAqIEBwYXJhbSBvYmplY3RzIExpc3Qgb2Ygb2JqZWN0cyAodGlja2V0cywgZXF1aXBtZW50cykgZXRjIHRvIGJlIGFkZGVkIGFzIE1hdHRlcnRhZ3NcclxuICAgKi9cclxuICBhc3luYyBhZGRPYmplY3RUYWdzVG9WaWV3ZXIob2JqZWN0czogRGJPYmplY3RUeXBlW10pIHtcclxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICBvYmplY3RzLm1hcChhc3luYyAob2JqZWN0KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmdldFBvaUJ5RWxlbWVudElkKG9iamVjdC5pZCEpO1xyXG4gICAgICAgIGlmIChwb2kgJiYgcG9pLmNvb3JkaW5hdGUpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuYWN0aW9uQWRkT2JqZWN0RnJvbVBPSShvYmplY3QsIHBvaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFjdGlvbkFkZE9iamVjdEZyb21QT0kob2JqZWN0OiBEYk9iamVjdFR5cGUsIHBvaTogUE9JKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5jcmVhdGVNYXR0ZXJ0YWdGcm9tUE9JKFxyXG4gICAgICAgIHBvaS50eXBlISxcclxuICAgICAgICBvYmplY3QsXHJcbiAgICAgICAgcG9pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvLyBDdXBpeFxyXG4gICAgLy8gVE9ET1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWN0aW9uX2RlbGV0ZV9lbGVtZW50KGVsZW1lbnQ6IERiT2JqZWN0VHlwZSkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5kZWxldGVNYXR0ZXJ0YWdGb3JPYmplY3QoZWxlbWVudC5pZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbmFibGUgdGFnIHBsYWNlbWVudCBtZW51IHRvIGFkZCBhIG5ldyBlbGVtZW50IGRlcGVuZGluZyBvbiBpdHMgdHlwZSAoVElDS0VULCBEQVRBLCBFUVVJUE1FTlQgZXRjKVxyXG4gICAqL1xyXG4gIGFzeW5jIGFjdGlvbkFkZE5ld0VsZW1lbnRUb1ZpZXdlcihwb2lUeXBlOiBQb2lUeXBlKSB7XHJcbiAgICB0aGlzLmFjdGlvbl90b29sYm94X2luc2lkZV92aWV3KCk7XHJcblxyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpICYmXHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0SW50ZXJhY3Rpb25Nb2RlKCkgPT09IFZpZXdlckludGVyYWN0aW9ucy5ERUZBVUxUXHJcbiAgICApIHtcclxuICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hZGRNYXR0ZXJ0YWdXaGVuQWRkaW5nKHBvaVR5cGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGF1bmNoZXMgdGhlIHJlcG9zaXRpb25pbmcgb2YgYW4gZXhpc3RpbmcgTWF0dGVydGFnIHJlbGF0ZWQgdG8gcGFyYW1ldGVyIG9iamVjdFxyXG4gICAqIEBwYXJhbSBlbGVtZW50IG9iamVjdCAoVElDS0VULCBFUVVJUE1FTlQsIEZFQVRVUkUsIGV0YylcclxuICAgKiBAcGFyYW0gcG9pVHlwZSB0eXBlIG9mIG9iamVjdFxyXG4gICAqL1xyXG4gIGFzeW5jIGFjdGlvblJlcG9zaXRpb25FbGVtZW50SW5WaWV3ZXIoXHJcbiAgICBlbGVtZW50OiBEYk9iamVjdFR5cGUsXHJcbiAgICBwb2lUeXBlOiBQb2lUeXBlXHJcbiAgKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykgJiZcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRJbnRlcmFjdGlvbk1vZGUoKSA9PT0gVmlld2VySW50ZXJhY3Rpb25zLkRFRkFVTFRcclxuICAgICkge1xyXG4gICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFkZE1hdHRlcnRhZ1doZW5SZXBvc2l0aW9uaW5nKHBvaVR5cGUsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlIHRpY2tldCBwbGFjZW1lbnQgbWVudSB0byBhZGQgYSBuZXcgdGlja2V0XHJcbiAgICovXHJcbiAgYWN0aW9uX2NhbmNlbGVkKCkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5jYW5jZWxGb2xsb3dpbmdDdXJzb3IoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGlvbl90b29sYm94X2luc2lkZV92aWV3KCkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fdG9vbGJveF9pbnNpZGVfdmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aW9uU2hvd0FsbEZsb29ycygpIHtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uU2hvd0FsbEZsb29ycygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aW9uX3Rvb2xib3hfZG9sbGhvdXNlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldEludGVyYWN0aW9uTW9kZSgpICE9PSBWaWV3ZXJJbnRlcmFjdGlvbnMuREVGQVVMVFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uX2NhbmNlbGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3Rpb25fdG9vbGJveF9jYW5jZWxfbWVzdXJlKCk7XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvbl90b29sYm94X2RvbGxob3VzZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWN0aW9uX2Zsb29ycGxhbigpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRJbnRlcmFjdGlvbk1vZGUoKSAhPT0gVmlld2VySW50ZXJhY3Rpb25zLkRFRkFVTFRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmFjdGlvbl9jYW5jZWxlZCgpO1xyXG4gICAgfVxyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fdG9vbGJveF9mbG9vcnBsYW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGlvbl90b29sYm94X21lc3VyZSgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRJbnRlcmFjdGlvbk1vZGUoKSAhPT0gVmlld2VySW50ZXJhY3Rpb25zLkRFRkFVTFRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmFjdGlvbl9jYW5jZWxlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWN0aW9uX3Rvb2xib3hfaW5zaWRlX3ZpZXcoKTtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX3Rvb2xib3hfbWVzdXJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3Rpb25fdG9vbGJveF9jYW5jZWxfbWVzdXJlKCkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fdG9vbGJveF9jYW5jZWxfbWVzdXJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhY3Rpb25fdXBkYXRlX3BvaShcclxuICAgIHBvaTogUE9JLFxyXG4gICAgaXNWYWxpZDogYm9vbGVhbixcclxuICAgIGVsZW1lbnQ6IERiT2JqZWN0VHlwZVxyXG4gICk6IFByb21pc2U8UE9JPiB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgIGNvbnN0IGxhc3RUYWcgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLm1hdHRlcnRhZ1RvRm9sbG93XHJcbiAgICAgICAgICA/IHRoaXMubWF0dGVycG9ydFNlcnZpY2UubWF0dGVydGFnVG9Gb2xsb3dcclxuICAgICAgICAgIDogdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRMYXN0VGFnKCk7XHJcbiAgICAgICAgaWYgKCFsYXN0VGFnKSB7XHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBvaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRhZ0RhdGEgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldE1hdHRlclRhZ0RhdGFGb3JNYXR0ZXJ0YWcobGFzdFRhZyk7XHJcbiAgICAgICAgaWYgKCF0YWdEYXRhKSB7XHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBvaSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwb2lNZXRhZGF0YSA9ICghIXBvaSAmJiBwb2kubWV0YWRhdGEpID8gSlNPTi5wYXJzZShwb2kubWV0YWRhdGEpIDoge307XHJcbiAgICAgICAgcG9pTWV0YWRhdGEubm9ybWFsID0gdGFnRGF0YS5nZXROb3JtYWwoKTtcclxuICAgICAgICBpZiAoIXBvaSkge1xyXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBvaUlucHV0ID0ge1xyXG4gICAgICAgICAgaWQ6IHBvaS5pZCxcclxuICAgICAgICAgIGNvb3JkaW5hdGU6IHRhZ0RhdGEuZ2V0Q29vcmRpbmF0ZVN0cmluZygpLFxyXG4gICAgICAgICAgbWF0dGVycG9ydFN3ZWVwSUQ6IHRhZ0RhdGEuZ2V0U3dlZXBJRCgpLFxyXG4gICAgICAgICAgbWV0YWRhdGE6IEpTT04uc3RyaW5naWZ5KHBvaU1ldGFkYXRhKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQb2k6IFBPSSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS51cGRhdGVQb2kocG9pSW5wdXQpO1xyXG4gICAgICAgIHRhZ0RhdGEuc2V0UG9pKHVwZGF0ZWRQb2kpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2Uuc2V0T2JqZWN0QW5kUG9pSW5UYWcobGFzdFRhZywgZWxlbWVudCwgUG9pVHlwZS5ERVNLLCB1cGRhdGVkUG9pKTtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmluamVjdEh0bWxJblRhZyhcclxuICAgICAgICAgIHBvaS50eXBlISxcclxuICAgICAgICAgIGVsZW1lbnQsXHJcbiAgICAgICAgICBsYXN0VGFnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnNldFRhZ0ljb25BbmRPcGFjaXR5KGxhc3RUYWcsIHRhZ0RhdGEpO1xyXG4gICAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ29Ub1RhZyhsYXN0VGFnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1cGRhdGVkUG9pKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmRlbGV0ZUxhc3RNYXR0ZXJ0YWcoKTtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwb2kpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwb2kpO1xyXG4gIH1cclxuXHJcbiAgZWRpdE9ubHlUYWdTdHlsZUZvclBvaShwb2k6IFBPSSwgb2JqZWN0OiBEYk9iamVjdFR5cGUpIHtcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIGNvbnN0IHRhZ0RhdGEgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldFRhZ0Zyb21FbGVtZW50SWQocG9pLmVsZW1lbnRJRCk7XHJcbiAgICAgIGlmICh0YWdEYXRhLnRhZykge1xyXG4gICAgICAgIGNvbnN0IG1hdHRlcnRhZ0RhdGEgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldE1hdHRlclRhZ0RhdGFGb3JNYXR0ZXJ0YWcoXHJcbiAgICAgICAgICB0YWdEYXRhLnRhZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgbWF0dGVydGFnRGF0YS5zZXRPYmplY3Qob2JqZWN0LCBQb2lUeXBlLlJPT00pO1xyXG4gICAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2Uuc2V0VGFnSWNvbkFuZE9wYWNpdHkodGFnRGF0YS50YWcsIG1hdHRlcnRhZ0RhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRJY29uQW5kU2V0Rm9yUG9pKHBvaTogUE9JLCBpY29uUGF0aDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBjb25zdCB0YWdEYXRhID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRUYWdGcm9tRWxlbWVudElkKHBvaS5lbGVtZW50SUQpO1xyXG4gICAgICBpZiAodGFnRGF0YS50YWcpIHtcclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFkZE5ld0ljb25BbmRTZXRGb3JUYWcodGFnRGF0YS50YWcsIGljb25QYXRoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlVG9SZWdpc3RyZWRJY29uRm9yUG9pKHBvaTogUE9JLCBpY29uTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBjb25zdCB0YWdEYXRhID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRUYWdGcm9tRWxlbWVudElkKHBvaS5lbGVtZW50SUQpO1xyXG4gICAgICBpZiAodGFnRGF0YS50YWcpIHtcclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnNldFJlZ2lzdHJlZEljb25Gb3JUYWcodGFnRGF0YS50YWcsIGljb25OYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlSHRtbFRhZ0ZvclBvaVdpdGhPYmplY3QocG9pOiBQT0ksIG9iamVjdDogRGJPYmplY3RUeXBlKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBjb25zdCB0YWdEYXRhID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRUYWdGcm9tRWxlbWVudElkKHBvaS5lbGVtZW50SUQpO1xyXG4gICAgICBpZiAodGFnRGF0YS50YWcpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnVwZGF0ZUluamVjdGVkSHRtbEZvclRhZ0lEKFxyXG4gICAgICAgICAgdGFnRGF0YS50YWcsXHJcbiAgICAgICAgICBvYmplY3QsXHJcbiAgICAgICAgICBwb2kudHlwZVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vdmUgYW4gZXhpc3RpbmcgcG9pIGluIE1hdHRlcnBvcnRcclxuICAgKiBAcGFyYW0gcG9pXHJcbiAgICogQHBhcmFtIGVsZW1lbnRcclxuICAgKi9cclxuICBhc3luYyBhY3Rpb25fbW92ZV9wb2lfdmlzdWFsbHkoXHJcbiAgICBwb2k6IFBPSSxcclxuICAgIGVsZW1lbnQ6IFRpY2tldCB8IEZlYXR1cmUgfCBFcXVpcG1lbnQgfCBDb21tZW50XHJcbiAgKSB7XHJcbiAgICBhd2FpdCB0aGlzLmFjdGlvbl9kZWxldGVfZWxlbWVudChlbGVtZW50KTtcclxuICAgIGF3YWl0IHRoaXMuYWN0aW9uQWRkT2JqZWN0RnJvbVBPSShlbGVtZW50LCBwb2kpO1xyXG4gIH1cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgQ3VwaXhcclxuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgTWF0dGVycG9ydFxyXG4gICAgaHR0cHM6Ly9tYXR0ZXJwb3J0LmdpdGh1Yi5pby9zaG93Y2FzZS1zZGsvZG9jcy9zZGsvcmVmZXJlbmNlL2N1cnJlbnQvbW9kdWxlcy9tYXR0ZXJ0YWcuaHRtbCNhZGRcclxuICAgIGh0dHBzOi8vbWF0dGVycG9ydC5naXRodWIuaW8vc2hvd2Nhc2Utc2RrL2RvY3Mvc2RrL3JlZmVyZW5jZS9jdXJyZW50L21vZHVsZXMvbWF0dGVydGFnLmh0bWwjcmVtb3ZlXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbiAgYXN5bmMgaW5pdE1hdHRlcnBvcnRTZGsoXHJcbiAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICBtb2RlbDNEOiBzdHJpbmcsXHJcbiAgICB0YWdTZXJ2aWNlOiBCYXNlVGFnU2VydmljZSxcclxuICAgIG1vZHVsZTogU3BNb2R1bGUgPSBTcE1vZHVsZS5JTU1PXHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmlzTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmN1cnJlbnRTcGFjZUlEID0gc3BhY2VJRDtcclxuICAgIGlmICh0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnNkaykge1xyXG4gICAgICBhd2FpdCB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5tYXR0ZXJwb3J0U2VydmljZVxyXG4gICAgICAuaW5pdFNkayh0YWdTZXJ2aWNlLCBtb2R1bGUpXHJcbiAgICAgIC50aGVuKGFzeW5jIChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICBjb25zdCB7c2RrfSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2U7XHJcblxyXG4gICAgICAgICAgLy8gVE9ETzogYWRkIGNvbmRpdGlvbiB3aGV0aGVyIHdlIHdhbnQgdG8gZW5hYmxlIGl0IG9yIG5vdFxyXG4gICAgICAgICAgLy8gQWRkaXRpb25uYWwgZXh0ZW5zaW9ucyBmb3IgTWF0dGVycG9ydFxyXG4gICAgICAgICAgLy8gMS4gU2VjdXJpdHkgQ2FtZXJhIHdpdGggRnJ1c3R1bSAoRk9WKVxyXG4gICAgICAgICAgLy8gMi4gVE9ETyByZWdpc3RlciBhbGwgbmV3IE1hdHRlcnBvcnQgZXh0ZW5zaW9ucyBoZXJlIChuZXN0U2Vuc29yLCBsb2RzLCBzbG90cywgLi4uKVxyXG4gICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xyXG4gICAgICAgICAgICBzZGsuU2NlbmUucmVnaXN0ZXIoc2VjdXJpdHlDYW1lcmFUeXBlLCBtYWtlU2VjdXJpdHlDYW1lcmEuYmluZChzZGsuU2NlbmUpKSxcclxuICAgICAgICAgICAgc2RrLlNjZW5lLnJlZ2lzdGVyKFZpZXdGcnVzdHVtTWVzaFR5cGUsIG1ha2VWaWV3RnJ1c3R1bU1lc2guYmluZChzZGsuU2NlbmUpKVxyXG4gICAgICAgICAgXSk7XHJcblxyXG4gICAgICAgICAgc2RrLkFwcC5zdGF0ZS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChhcHBTdGF0ZSkge1xyXG4gICAgICAgICAgICAgIC8vIGFwcCBzdGF0ZSBoYXMgY2hhbmdlZFxyXG4gICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdUaGUgY3VycmVudCBwaGFzZTogJywgYXBwU3RhdGUucGhhc2UpO1xyXG4gICAgICAgICAgICAgIGlmIChhcHBTdGF0ZS5waGFzZSA9PT0gc2RrLkFwcC5QaGFzZS5QTEFZSU5HKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnVGhlIGFwcCBpcyBwbGF5aW5nJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dpbmdWaWV3ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3ZXJJc09uLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICAgICAgICAgICBtb2RlbDNELFxyXG4gICAgICAgICAgICAgICAgICBzd2VlcDogdGhpcy5zd2VlcFRvTW92ZSxcclxuICAgICAgICAgICAgICAgICAgcm90YXRpb246IHRoaXMucm90YXRpb25Ub01vdmUsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUlzTG9hZGVkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3dlZXBUb01vdmUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3RhdGlvblRvTW92ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LmJpbmQodGhpcylcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZvcmJpZGRlblN3ZWVwcyhmb3JiaWRkZW5Td2VlcHM6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnJlbW92ZUZvcmJpZGRlblN3ZWVwcyhmb3JiaWRkZW5Td2VlcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0T2JqZWN0M0RMb2FkZWRJblBvc2l0aW9uKG9iamVjdExvYWRlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc09iamVjdExvYWRlZCA9IG9iamVjdExvYWRlZDtcclxuICB9XHJcblxyXG4gIGlzT2JqZWN0M0RMb2FkZWRJblBvc2l0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNPYmplY3RMb2FkZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
389
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3ZpZXdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQyw4QkFBOEI7QUFDOUIseUNBQXlDO0FBQ3pDLDJDQUEyQztBQUMzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHN0IsT0FBTyxFQUdMLGtCQUFrQixFQUNsQixPQUFPLEVBS1AsUUFBUSxHQUNULE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFDLGtCQUFrQixFQUFFLGtCQUFrQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDL0csT0FBTyxFQUFDLG1CQUFtQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sNERBQTRELENBQUM7Ozs7QUFNcEgsTUFBTSxPQUFPLGFBQWE7SUFrRHhCLFlBQ1UsVUFBc0IsRUFDdEIsaUJBQW9DO1FBRHBDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQW5EdEMsZUFBVSxHQUFXLFlBQVksQ0FBQztRQU1uQyxlQUFVLEdBS1osSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVaLGlCQUFZLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFL0MsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQU10QixrQkFBYSxHQUFHO1lBQ3JCLFNBQVMsRUFBRTtnQkFDVCxJQUFJLEVBQUUsS0FBSztnQkFDWCxNQUFNLEVBQUUsY0FBYztnQkFDdEIsSUFBSTtnQkFDSixDQUFDO2dCQUNELElBQUk7Z0JBQ0osQ0FBQzthQUNGO1lBQ0QsU0FBUyxFQUFFO2dCQUNULElB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LENBQUM7d0JBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO3FCQUM1QjtnQkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNiLENBQUM7Z0JBQ0YsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDMUI7WUFDRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxlQUF5QjtRQUM3QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztJQUVELDJCQUEyQixDQUFDLFlBQXFCO1FBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDO0lBQ3JDLENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7OzJHQWxlVSxhQUFhOytHQUFiLGFBQWEsY0FGWixNQUFNOzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cclxuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgKi9cclxuLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge01hdHRlcnBvcnRTZXJ2aWNlfSBmcm9tICcuL21hdHRlcnBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7QmFzZVRhZ1NlcnZpY2V9IGZyb20gJy4vdGFnLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIERiT2JqZWN0VHlwZSxcclxuICBQT0ksXHJcbiAgVmlld2VySW50ZXJhY3Rpb25zLFxyXG4gIFBvaVR5cGUsXHJcbiAgQ29tbWVudCxcclxuICBFcXVpcG1lbnQsXHJcbiAgVGlja2V0LFxyXG4gIEZlYXR1cmUsXHJcbiAgU3BNb2R1bGUsXHJcbn0gZnJvbSAnLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7UG9pU2VydmljZX0gZnJvbSAnLi9tb2RlbHMvcG9pLnNlcnZpY2UnO1xyXG5pbXBvcnQge21ha2VTZWN1cml0eUNhbWVyYSwgc2VjdXJpdHlDYW1lcmFUeXBlfSBmcm9tIFwiLi4vbWF0dGVycG9ydC1leHRlbnNpb25zL3NlY3VyaXR5LWNhbWVyYS9TZWN1cml0eUNhbWVyYVwiO1xyXG5pbXBvcnQge1ZpZXdGcnVzdHVtTWVzaFR5cGUsIG1ha2VWaWV3RnJ1c3R1bU1lc2h9IGZyb20gXCIuLi9tYXR0ZXJwb3J0LWV4dGVuc2lvbnMvdmlldy1mcnVzdHVtLW1lc2gvVmlld0ZydXN0dW1NZXNoXCI7XHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuL25hdmlnYXRvci5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWaWV3ZXJTZXJ2aWNlIHtcclxuICBwcml2YXRlIHZpZXdlck1vZGU6IHN0cmluZyA9ICdNYXR0ZXJwb3J0JztcclxuXHJcbiAgcHVibGljIGN1cnJlbnRNb2RlbDNEOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgdG91clVybDogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgdmlld2VySXNPbjogU3ViamVjdDx7XHJcbiAgICBzcGFjZUlEOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgbW9kZWwzRDogc3RyaW5nIHwgbnVsbDtcclxuICAgIHN3ZWVwOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IH0gfCBudWxsO1xyXG4gIH0+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHVibGljIGRhdGFJc0xvYWRlZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHB1YmxpYyBpc0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgc2hvd2luZ1ZpZXdlciA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgc3dlZXBUb01vdmU6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIHB1YmxpYyByb3RhdGlvblRvTW92ZTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgfSB8IG51bGw7XHJcblxyXG4gIHB1YmxpYyB0b29sYm94U3RhdGVzID0ge1xyXG4gICAgZG9sbGhvdXNlOiB7XHJcbiAgICAgIHN0YXQ6IGZhbHNlLFxyXG4gICAgICBpY29uSWQ6ICd1aS1kb2xsaG91c2UnLFxyXG4gICAgICBzaG93KCkge1xyXG4gICAgICB9LFxyXG4gICAgICBoaWRlKCkge1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGZsb29ycGxhbjoge1xyXG4gICAgICBzdGF0OiBmYWxzZSxcclxuICAgIH0sXHJcbiAgICBtZXN1cmU6IHtcclxuICAgICAgc3RhdDogZmFsc2UsXHJcbiAgICAgIGljb25JZDogJ3VpLW1lc3VyZScsXHJcbiAgICAgIHNob3coKSB7XHJcbiAgICAgIH0sXHJcbiAgICAgIGhpZGUoKSB7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgZmlsdGVyOiB7XHJcbiAgICAgIHN0YXQ6IGZhbHNlLFxyXG4gICAgfSxcclxuICB9O1xyXG4gIHByaXZhdGUgaXNPYmplY3RMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1hdHRlcnBvcnRTZXJ2aWNlOiBNYXR0ZXJwb3J0U2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMuc2V0TW9kZSgnTWF0dGVycG9ydCcpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgIFV0aWxzXHJcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gIGNoZWNrTW9kZShpbmRleE1vZGU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMudmlld2VyTW9kZSA9PT0gaW5kZXhNb2RlO1xyXG4gIH1cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgU2V0dGVyc1xyXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuICBzZXRNb2RlKGluZGV4TW9kZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnZpZXdlck1vZGUgPSBpbmRleE1vZGU7XHJcbiAgfVxyXG5cclxuICBzZXRUb3VyVXJsKFxyXG4gICAgbW9kZWwzZDogc3RyaW5nLFxyXG4gICAgc2hvd0ljb25QbGFuOiBib29sZWFuID0gdHJ1ZSxcclxuICAgIHNob3dJY29uRG9sbGhvdXNlOiBib29sZWFuID0gdHJ1ZSxcclxuICAgIHNob3dJY29uRmxvb3JzOiBib29sZWFuID0gdHJ1ZSxcclxuICAgIGVuYWJsZVF1aWNrU3RhcnQ6IGJvb2xlYW4gPSB0cnVlXHJcbiAgKSB7XHJcbiAgICAvLyB0aGlzLnRvdXJVcmwgPSBgaHR0cHM6Ly9teS5tYXR0ZXJwb3J0LmNvbS9zaG93Lz9tPSR7bW9kZWwzZH0mcGxheT0xJmhyPTAmZ3Q9MCZ0aXRsZT0wJmxvZz0wJmJyYW5kPTAmc2VhcmNoPTAmYXBwbGljYXRpb25LZXk9cW45d3Nhc3V5NWgyZnpyYnJuMW56cjBpZCZtZHM9MCZuZXd0YWdzPTFgO1xyXG4gICAgdGhpcy50b3VyVXJsID0gYC9hc3NldHMvYnVuZGxlL3Nob3djYXNlLmh0bWw/bT0ke21vZGVsM2R9JnBsYXk9MSZocj0wJmd0PTAmdGl0bGU9MCZsb2c9MCZicmFuZD0wJnNlYXJjaD0wJmFwcGxpY2F0aW9uS2V5PXFuOXdzYXN1eTVoMmZ6cmJybjFuenIwaWQmbWRzPTAmbmV3dGFncz0xYDtcclxuXHJcbiAgICBpZiAoIXNob3dJY29uUGxhbikge1xyXG4gICAgICB0aGlzLnRvdXJVcmwgKz0gJyZmcD0wJztcclxuICAgIH1cclxuICAgIGlmICghc2hvd0ljb25Eb2xsaG91c2UpIHtcclxuICAgICAgdGhpcy50b3VyVXJsICs9ICcmZGg9MCc7XHJcbiAgICB9XHJcbiAgICBpZiAoIXNob3dJY29uRmxvb3JzKSB7XHJcbiAgICAgIHRoaXMudG91clVybCArPSAnJmY9MCc7XHJcbiAgICB9XHJcbiAgICBpZiAoZW5hYmxlUXVpY2tTdGFydCkge1xyXG4gICAgICB0aGlzLnRvdXJVcmwgKz0gJyZxcz0xJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGNsZWFyQWxsKCkge1xyXG4gICAgLy8gdGhpcy5zd2VlcFRvTW92ZSA9IG51bGw7XHJcbiAgICAvLyB0aGlzLnJvdGF0aW9uVG9Nb3ZlID0gbnVsbDtcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMuc2hvd2luZ1ZpZXdlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzTG9hZGVkID0gZmFsc2U7XHJcbiAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgICAgdGhpcy52aWV3ZXJJc09uLm5leHQoe1xyXG4gICAgICAgIHNwYWNlSUQ6IG51bGwsXHJcbiAgICAgICAgbW9kZWwzRDogbnVsbCxcclxuICAgICAgICBzd2VlcDogbnVsbCxcclxuICAgICAgICByb3RhdGlvbjogbnVsbCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICBHZXR0ZXJzXHJcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4gIGdldE1vZGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy52aWV3ZXJNb2RlO1xyXG4gIH1cclxuXHJcbiAgZ2V0Vmlld2VyU2VsZWN0ZWRTZXJ2aWNlKCkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgLy8gaWYgKHRoaXMuY2hlY2tNb2RlKFwiTWF0dGVycG9ydFwiKSkge1xyXG4gICAgLy8gICAgIHJldHVybiB0aGlzLmdldE1hdHRlcnBvcnRTZXJ2aWNlKCk7XHJcbiAgICAvLyB9XHJcbiAgICByZXR1cm4gdGhpcy5nZXRNYXR0ZXJwb3J0U2VydmljZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG91clVybCgpIHtcclxuICAgIHJldHVybiB0aGlzLnRvdXJVcmw7XHJcbiAgfVxyXG5cclxuICBnZXRNYXR0ZXJwb3J0U2VydmljZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlO1xyXG4gIH1cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgR2VuZXJpYyBNYWluIGFjdGlvbiBmdW5jdGlvbnNcclxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBzZXRTd2VlcFRvTW92ZShzd2VlcDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnN3ZWVwVG9Nb3ZlID0gc3dlZXA7XHJcbiAgfVxyXG5cclxuICBzZXRSb3RhdGlvblRvTW92ZShyb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgfSkge1xyXG4gICAgdGhpcy5yb3RhdGlvblRvTW92ZSA9IHJvdGF0aW9uO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWN0aW9uX21vdmVfdG9fdGFnKGVsZW1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldFRhZ0Zyb21FbGVtZW50SWQoZWxlbWVudElkKTtcclxuICAgICAgaWYgKHJlc3VsdC50YWcpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdvVG9UYWcocmVzdWx0LnRhZyk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlc3VsdC5zd2VlcCkge1xyXG4gICAgICAgIHRoaXMuc3dlZXBUb01vdmUgPSByZXN1bHQuc3dlZXA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBNYXR0ZXJ0YWdzIHRvIFZpZXdlclxyXG4gICAqIEBwYXJhbSBvYmplY3RzIExpc3Qgb2Ygb2JqZWN0cyAodGlja2V0cywgZXF1aXBtZW50cykgZXRjIHRvIGJlIGFkZGVkIGFzIE1hdHRlcnRhZ3NcclxuICAgKi9cclxuICBhc3luYyBhZGRPYmplY3RUYWdzVG9WaWV3ZXIob2JqZWN0czogRGJPYmplY3RUeXBlW10pIHtcclxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICBvYmplY3RzLm1hcChhc3luYyAob2JqZWN0KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmdldFBvaUJ5RWxlbWVudElkKG9iamVjdC5pZCEpO1xyXG4gICAgICAgIGlmIChwb2kgJiYgcG9pLmNvb3JkaW5hdGUpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuYWN0aW9uQWRkT2JqZWN0RnJvbVBPSShvYmplY3QsIHBvaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFjdGlvbkFkZE9iamVjdEZyb21QT0kob2JqZWN0OiBEYk9iamVjdFR5cGUsIHBvaTogUE9JKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5jcmVhdGVNYXR0ZXJ0YWdGcm9tUE9JKFxyXG4gICAgICAgIHBvaS50eXBlISxcclxuICAgICAgICBvYmplY3QsXHJcbiAgICAgICAgcG9pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvLyBDdXBpeFxyXG4gICAgLy8gVE9ET1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWN0aW9uX2RlbGV0ZV9lbGVtZW50KGVsZW1lbnQ6IERiT2JqZWN0VHlwZSkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5kZWxldGVNYXR0ZXJ0YWdGb3JPYmplY3QoZWxlbWVudC5pZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbmFibGUgdGFnIHBsYWNlbWVudCBtZW51IHRvIGFkZCBhIG5ldyBlbGVtZW50IGRlcGVuZGluZyBvbiBpdHMgdHlwZSAoVElDS0VULCBEQVRBLCBFUVVJUE1FTlQgZXRjKVxyXG4gICAqL1xyXG4gIGFzeW5jIGFjdGlvbkFkZE5ld0VsZW1lbnRUb1ZpZXdlcihwb2lUeXBlOiBQb2lUeXBlKSB7XHJcbiAgICB0aGlzLmFjdGlvbl90b29sYm94X2luc2lkZV92aWV3KCk7XHJcblxyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpICYmXHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0SW50ZXJhY3Rpb25Nb2RlKCkgPT09IFZpZXdlckludGVyYWN0aW9ucy5ERUZBVUxUXHJcbiAgICApIHtcclxuICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hZGRNYXR0ZXJ0YWdXaGVuQWRkaW5nKHBvaVR5cGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGF1bmNoZXMgdGhlIHJlcG9zaXRpb25pbmcgb2YgYW4gZXhpc3RpbmcgTWF0dGVydGFnIHJlbGF0ZWQgdG8gcGFyYW1ldGVyIG9iamVjdFxyXG4gICAqIEBwYXJhbSBlbGVtZW50IG9iamVjdCAoVElDS0VULCBFUVVJUE1FTlQsIEZFQVRVUkUsIGV0YylcclxuICAgKiBAcGFyYW0gcG9pVHlwZSB0eXBlIG9mIG9iamVjdFxyXG4gICAqL1xyXG4gIGFzeW5jIGFjdGlvblJlcG9zaXRpb25FbGVtZW50SW5WaWV3ZXIoXHJcbiAgICBlbGVtZW50OiBEYk9iamVjdFR5cGUsXHJcbiAgICBwb2lUeXBlOiBQb2lUeXBlXHJcbiAgKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykgJiZcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRJbnRlcmFjdGlvbk1vZGUoKSA9PT0gVmlld2VySW50ZXJhY3Rpb25zLkRFRkFVTFRcclxuICAgICkge1xyXG4gICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFkZE1hdHRlcnRhZ1doZW5SZXBvc2l0aW9uaW5nKHBvaVR5cGUsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlIHRpY2tldCBwbGFjZW1lbnQgbWVudSB0byBhZGQgYSBuZXcgdGlja2V0XHJcbiAgICovXHJcbiAgYWN0aW9uX2NhbmNlbGVkKCkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5jYW5jZWxGb2xsb3dpbmdDdXJzb3IoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGlvbl90b29sYm94X2luc2lkZV92aWV3KCkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fdG9vbGJveF9pbnNpZGVfdmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aW9uU2hvd0FsbEZsb29ycygpIHtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uU2hvd0FsbEZsb29ycygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWN0aW9uX3Rvb2xib3hfZG9sbGhvdXNlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldEludGVyYWN0aW9uTW9kZSgpICE9PSBWaWV3ZXJJbnRlcmFjdGlvbnMuREVGQVVMVFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uX2NhbmNlbGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3Rpb25fdG9vbGJveF9jYW5jZWxfbWVzdXJlKCk7XHJcbiAgICAvLyBNYXR0ZXJwb3J0XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvbl90b29sYm94X2RvbGxob3VzZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWN0aW9uX2Zsb29ycGxhbigpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRJbnRlcmFjdGlvbk1vZGUoKSAhPT0gVmlld2VySW50ZXJhY3Rpb25zLkRFRkFVTFRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmFjdGlvbl9jYW5jZWxlZCgpO1xyXG4gICAgfVxyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fdG9vbGJveF9mbG9vcnBsYW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGlvbl90b29sYm94X21lc3VyZSgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRJbnRlcmFjdGlvbk1vZGUoKSAhPT0gVmlld2VySW50ZXJhY3Rpb25zLkRFRkFVTFRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmFjdGlvbl9jYW5jZWxlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWN0aW9uX3Rvb2xib3hfaW5zaWRlX3ZpZXcoKTtcclxuICAgIC8vIE1hdHRlcnBvcnRcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX3Rvb2xib3hfbWVzdXJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhY3Rpb25fdG9vbGJveF9jYW5jZWxfbWVzdXJlKCkge1xyXG4gICAgLy8gTWF0dGVycG9ydFxyXG4gICAgaWYgKHRoaXMuY2hlY2tNb2RlKCdNYXR0ZXJwb3J0JykpIHtcclxuICAgICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fdG9vbGJveF9jYW5jZWxfbWVzdXJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhY3Rpb25fdXBkYXRlX3BvaShcclxuICAgIHBvaTogUE9JLFxyXG4gICAgaXNWYWxpZDogYm9vbGVhbixcclxuICAgIGVsZW1lbnQ6IERiT2JqZWN0VHlwZVxyXG4gICk6IFByb21pc2U8UE9JPiB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgIGNvbnN0IGxhc3RUYWcgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLm1hdHRlcnRhZ1RvRm9sbG93XHJcbiAgICAgICAgICA/IHRoaXMubWF0dGVycG9ydFNlcnZpY2UubWF0dGVydGFnVG9Gb2xsb3dcclxuICAgICAgICAgIDogdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRMYXN0VGFnKCk7XHJcbiAgICAgICAgaWYgKCFsYXN0VGFnKSB7XHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBvaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRhZ0RhdGEgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldE1hdHRlclRhZ0RhdGFGb3JNYXR0ZXJ0YWcobGFzdFRhZyk7XHJcbiAgICAgICAgaWYgKCF0YWdEYXRhKSB7XHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBvaSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwb2lNZXRhZGF0YSA9ICghIXBvaSAmJiBwb2kubWV0YWRhdGEpID8gSlNPTi5wYXJzZShwb2kubWV0YWRhdGEpIDoge307XHJcbiAgICAgICAgcG9pTWV0YWRhdGEubm9ybWFsID0gdGFnRGF0YS5nZXROb3JtYWwoKTtcclxuICAgICAgICBpZiAoIXBvaSkge1xyXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBvaUlucHV0ID0ge1xyXG4gICAgICAgICAgaWQ6IHBvaS5pZCxcclxuICAgICAgICAgIGNvb3JkaW5hdGU6IHRhZ0RhdGEuZ2V0Q29vcmRpbmF0ZVN0cmluZygpLFxyXG4gICAgICAgICAgbWF0dGVycG9ydFN3ZWVwSUQ6IHRhZ0RhdGEuZ2V0U3dlZXBJRCgpLFxyXG4gICAgICAgICAgbWV0YWRhdGE6IEpTT04uc3RyaW5naWZ5KHBvaU1ldGFkYXRhKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQb2k6IFBPSSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS51cGRhdGVQb2kocG9pSW5wdXQpO1xyXG4gICAgICAgIHRhZ0RhdGEuc2V0UG9pKHVwZGF0ZWRQb2kpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2Uuc2V0T2JqZWN0QW5kUG9pSW5UYWcobGFzdFRhZywgZWxlbWVudCwgUG9pVHlwZS5ERVNLLCB1cGRhdGVkUG9pKTtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmluamVjdEh0bWxJblRhZyhcclxuICAgICAgICAgIHBvaS50eXBlISxcclxuICAgICAgICAgIGVsZW1lbnQsXHJcbiAgICAgICAgICBsYXN0VGFnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnNldFRhZ0ljb25BbmRPcGFjaXR5KGxhc3RUYWcsIHRhZ0RhdGEpO1xyXG4gICAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ29Ub1RhZyhsYXN0VGFnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1cGRhdGVkUG9pKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmRlbGV0ZUxhc3RNYXR0ZXJ0YWcoKTtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwb2kpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwb2kpO1xyXG4gIH1cclxuXHJcbiAgZWRpdE9ubHlUYWdTdHlsZUZvclBvaShwb2k6IFBPSSwgb2JqZWN0OiBEYk9iamVjdFR5cGUpIHtcclxuICAgIGlmICh0aGlzLmNoZWNrTW9kZSgnTWF0dGVycG9ydCcpKSB7XHJcbiAgICAgIGNvbnN0IHRhZ0RhdGEgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldFRhZ0Zyb21FbGVtZW50SWQocG9pLmVsZW1lbnRJRCk7XHJcbiAgICAgIGlmICh0YWdEYXRhLnRhZykge1xyXG4gICAgICAgIGNvbnN0IG1hdHRlcnRhZ0RhdGEgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldE1hdHRlclRhZ0RhdGFGb3JNYXR0ZXJ0YWcoXHJcbiAgICAgICAgICB0YWdEYXRhLnRhZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgbWF0dGVydGFnRGF0YS5zZXRPYmplY3Qob2JqZWN0LCBQb2lUeXBlLlJPT00pO1xyXG4gICAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2Uuc2V0VGFnSWNvbkFuZE9wYWNpdHkodGFnRGF0YS50YWcsIG1hdHRlcnRhZ0RhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRJY29uQW5kU2V0Rm9yUG9pKHBvaTogUE9JLCBpY29uUGF0aDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBjb25zdCB0YWdEYXRhID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRUYWdGcm9tRWxlbWVudElkKHBvaS5lbGVtZW50SUQpO1xyXG4gICAgICBpZiAodGFnRGF0YS50YWcpIHtcclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFkZE5ld0ljb25BbmRTZXRGb3JUYWcodGFnRGF0YS50YWcsIGljb25QYXRoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlVG9SZWdpc3RyZWRJY29uRm9yUG9pKHBvaTogUE9JLCBpY29uTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBjb25zdCB0YWdEYXRhID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRUYWdGcm9tRWxlbWVudElkKHBvaS5lbGVtZW50SUQpO1xyXG4gICAgICBpZiAodGFnRGF0YS50YWcpIHtcclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnNldFJlZ2lzdHJlZEljb25Gb3JUYWcodGFnRGF0YS50YWcsIGljb25OYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlSHRtbFRhZ0ZvclBvaVdpdGhPYmplY3QocG9pOiBQT0ksIG9iamVjdDogRGJPYmplY3RUeXBlKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICBjb25zdCB0YWdEYXRhID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRUYWdGcm9tRWxlbWVudElkKHBvaS5lbGVtZW50SUQpO1xyXG4gICAgICBpZiAodGFnRGF0YS50YWcpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnVwZGF0ZUluamVjdGVkSHRtbEZvclRhZ0lEKFxyXG4gICAgICAgICAgdGFnRGF0YS50YWcsXHJcbiAgICAgICAgICBvYmplY3QsXHJcbiAgICAgICAgICBwb2kudHlwZVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vdmUgYW4gZXhpc3RpbmcgcG9pIGluIE1hdHRlcnBvcnRcclxuICAgKiBAcGFyYW0gcG9pXHJcbiAgICogQHBhcmFtIGVsZW1lbnRcclxuICAgKi9cclxuICBhc3luYyBhY3Rpb25fbW92ZV9wb2lfdmlzdWFsbHkoXHJcbiAgICBwb2k6IFBPSSxcclxuICAgIGVsZW1lbnQ6IFRpY2tldCB8IEZlYXR1cmUgfCBFcXVpcG1lbnQgfCBDb21tZW50XHJcbiAgKSB7XHJcbiAgICBhd2FpdCB0aGlzLmFjdGlvbl9kZWxldGVfZWxlbWVudChlbGVtZW50KTtcclxuICAgIGF3YWl0IHRoaXMuYWN0aW9uQWRkT2JqZWN0RnJvbVBPSShlbGVtZW50LCBwb2kpO1xyXG4gIH1cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgQ3VwaXhcclxuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgTWF0dGVycG9ydFxyXG4gICAgaHR0cHM6Ly9tYXR0ZXJwb3J0LmdpdGh1Yi5pby9zaG93Y2FzZS1zZGsvZG9jcy9zZGsvcmVmZXJlbmNlL2N1cnJlbnQvbW9kdWxlcy9tYXR0ZXJ0YWcuaHRtbCNhZGRcclxuICAgIGh0dHBzOi8vbWF0dGVycG9ydC5naXRodWIuaW8vc2hvd2Nhc2Utc2RrL2RvY3Mvc2RrL3JlZmVyZW5jZS9jdXJyZW50L21vZHVsZXMvbWF0dGVydGFnLmh0bWwjcmVtb3ZlXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbiAgYXN5bmMgaW5pdE1hdHRlcnBvcnRTZGsoXHJcbiAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICBtb2RlbDNEOiBzdHJpbmcsXHJcbiAgICB0YWdTZXJ2aWNlOiBCYXNlVGFnU2VydmljZSxcclxuICAgIG1vZHVsZTogU3BNb2R1bGUgPSBTcE1vZHVsZS5JTU1PXHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmlzTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmN1cnJlbnRTcGFjZUlEID0gc3BhY2VJRDtcclxuICAgIGlmICh0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnNkaykge1xyXG4gICAgICBhd2FpdCB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5tYXR0ZXJwb3J0U2VydmljZVxyXG4gICAgICAuaW5pdFNkayh0YWdTZXJ2aWNlLCBtb2R1bGUpXHJcbiAgICAgIC50aGVuKGFzeW5jIChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICBjb25zdCB7c2RrfSA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2U7XHJcblxyXG4gICAgICAgICAgLy8gVE9ETzogYWRkIGNvbmRpdGlvbiB3aGV0aGVyIHdlIHdhbnQgdG8gZW5hYmxlIGl0IG9yIG5vdFxyXG4gICAgICAgICAgLy8gQWRkaXRpb25uYWwgZXh0ZW5zaW9ucyBmb3IgTWF0dGVycG9ydFxyXG4gICAgICAgICAgLy8gMS4gU2VjdXJpdHkgQ2FtZXJhIHdpdGggRnJ1c3R1bSAoRk9WKVxyXG4gICAgICAgICAgLy8gMi4gVE9ETyByZWdpc3RlciBhbGwgbmV3IE1hdHRlcnBvcnQgZXh0ZW5zaW9ucyBoZXJlIChuZXN0U2Vuc29yLCBsb2RzLCBzbG90cywgLi4uKVxyXG4gICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xyXG4gICAgICAgICAgICBzZGsuU2NlbmUucmVnaXN0ZXIoc2VjdXJpdHlDYW1lcmFUeXBlLCBtYWtlU2VjdXJpdHlDYW1lcmEuYmluZChzZGsuU2NlbmUpKSxcclxuICAgICAgICAgICAgc2RrLlNjZW5lLnJlZ2lzdGVyKFZpZXdGcnVzdHVtTWVzaFR5cGUsIG1ha2VWaWV3RnJ1c3R1bU1lc2guYmluZChzZGsuU2NlbmUpKVxyXG4gICAgICAgICAgXSk7XHJcblxyXG4gICAgICAgICAgc2RrLkFwcC5zdGF0ZS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChhcHBTdGF0ZSkge1xyXG4gICAgICAgICAgICAgIC8vIGFwcCBzdGF0ZSBoYXMgY2hhbmdlZFxyXG4gICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdUaGUgY3VycmVudCBwaGFzZTogJywgYXBwU3RhdGUucGhhc2UpO1xyXG4gICAgICAgICAgICAgIGlmIChhcHBTdGF0ZS5waGFzZSA9PT0gc2RrLkFwcC5QaGFzZS5QTEFZSU5HKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnVGhlIGFwcCBpcyBwbGF5aW5nJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dpbmdWaWV3ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3ZXJJc09uLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICAgICAgICAgICBtb2RlbDNELFxyXG4gICAgICAgICAgICAgICAgICBzd2VlcDogdGhpcy5zd2VlcFRvTW92ZSxcclxuICAgICAgICAgICAgICAgICAgcm90YXRpb246IHRoaXMucm90YXRpb25Ub01vdmUsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUlzTG9hZGVkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3dlZXBUb01vdmUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3RhdGlvblRvTW92ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LmJpbmQodGhpcylcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZvcmJpZGRlblN3ZWVwcyhmb3JiaWRkZW5Td2VlcHM6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja01vZGUoJ01hdHRlcnBvcnQnKSkge1xyXG4gICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnJlbW92ZUZvcmJpZGRlblN3ZWVwcyhmb3JiaWRkZW5Td2VlcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0T2JqZWN0M0RMb2FkZWRJblBvc2l0aW9uKG9iamVjdExvYWRlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc09iamVjdExvYWRlZCA9IG9iamVjdExvYWRlZDtcclxuICB9XHJcblxyXG4gIGlzT2JqZWN0M0RMb2FkZWRJblBvc2l0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNPYmplY3RMb2FkZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -19,12 +19,12 @@ export class ZoneChangeService {
|
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
ZoneChangeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
23
|
-
ZoneChangeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
22
|
+
ZoneChangeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZoneChangeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
+
ZoneChangeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZoneChangeService, providedIn: 'root' });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZoneChangeService, decorators: [{
|
|
25
25
|
type: Injectable,
|
|
26
26
|
args: [{
|
|
27
27
|
providedIn: 'root',
|
|
28
28
|
}]
|
|
29
29
|
}], ctorParameters: function () { return []; } });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZUNoYW5nZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy96b25lQ2hhbmdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFHN0I7O0dBRUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBVTVCO1FBUkEsZUFBVSxHQUF5QixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ2pELHVCQUFrQixHQUEyQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBS3BELG9CQUFlLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHcEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNqQyxtREFBbUQ7WUFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUMscURBQXFEO1lBQ3JELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7K0dBcEJVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtab25lfSBmcm9tICcuLi90eXBlcy5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBBdG9taWMgem9uZSBjaGFuZ2Ugc2VydmljZSB0byBicmVhayBjeWNsaWMgZGVwZW5kZW5jaWVzIGlzc3VlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWm9uZUNoYW5nZVNlcnZpY2Uge1xyXG5cclxuICB6b25lQ2hhbmdlOiBTdWJqZWN0PFpvbmUgfCBudWxsPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgem9uZXNGb3JVc2VyQ2hhbmdlOiBTdWJqZWN0PFpvbmVbXSB8IG51bGw+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHJpdmF0ZSBjdXJyZW50Wm9uZTogWm9uZTtcclxuICBwcml2YXRlIGN1cnJlbnRab25lczogWm9uZVtdO1xyXG5cclxuICBwdWJsaWMgZmxvb3JIYXNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Wm9uZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFpvbmU+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy56b25lQ2hhbmdlLnN1YnNjcmliZSgoem9uZSkgPT4ge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhgbmV3IHpvbmUgJHtKU09OLnN0cmluZ2lmeSh6b25lKX1gKTtcclxuICAgICAgdGhpcy5jdXJyZW50Wm9uZSA9IHpvbmU7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnpvbmVzRm9yVXNlckNoYW5nZS5zdWJzY3JpYmUoKHpvbmVzKSA9PiB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBuZXcgem9uZXMgJHtKU09OLnN0cmluZ2lmeSh6b25lcyl9YCk7XHJcbiAgICAgIHRoaXMuY3VycmVudFpvbmVzID0gem9uZXM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|