@igo2/integration 1.9.3 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -79,8 +79,8 @@ let AboutToolComponent = class AboutToolComponent {
79
79
  this._headerHtml = this.languageService.translate.instant('igo.integration.aboutTool.headerHtml');
80
80
  this.loading = false;
81
81
  this.version = configService.getConfig('version');
82
- this.baseUrlProfil = configService.getConfig('context.url') + '/user/igo?';
83
- this.baseUrlGuide = configService.getConfig('depot.url') + '/projects/Documentation/files/';
82
+ this.baseUrlProfil = configService.getConfig('storage.url');
83
+ this.baseUrlGuide = configService.getConfig('depot.url') + configService.getConfig('depot.guideUrl');
84
84
  }
85
85
  get headerHtml() {
86
86
  return this._headerHtml;
@@ -187,4 +187,4 @@ export { AboutToolComponent };
187
187
  }], trainingGuideURLs: [{
188
188
  type: Input
189
189
  }] }); })();
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL2Fib3V0L2Fib3V0LXRvb2wvYWJvdXQtdG9vbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL2Fib3V0L2Fib3V0LXRvb2wvYWJvdXQtdG9vbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUNLMUIsaUNBT3dCO0lBQXRCLHdMQUFxQjs7SUFDckIsNEJBQU07SUFBQSxZQUF5RDs7SUFBQSxpQkFBTztJQUN0RSw4QkFBNkM7SUFDL0MsaUJBQVM7OztJQUxQLHlDQUFvQixzRkFBQTtJQUdkLGVBQXlEO0lBQXpELHFGQUF5RDs7O0lBSWpFLGlDQU82Qjs7SUFDM0IsNEJBQU07SUFBQSxZQUF5RDs7SUFBQSxpQkFBTztJQUN0RSw4QkFBNkM7SUFDL0MsaUJBQVM7Ozs7SUFMUCx5Q0FBb0Isc0ZBQUEsMEJBQUE7SUFHZCxlQUF5RDtJQUF6RCxxRkFBeUQ7Ozs7SUFLL0Qsa0NBQXlGO0lBQTNCLDRQQUEwQjtJQUFDLFlBQXlCO0lBQUEsaUJBQVM7Ozs7SUFBbEMsZUFBeUI7SUFBekIscURBQXlCOzs7SUFHcEgscUNBRWtCOzs7O0lBRGhCLDhEQUErQjs7O0lEbkJwQixrQkFBa0IsU0FBbEIsa0JBQWtCO0lBdUM3QixZQUNTLGFBQTRCLEVBQzVCLElBQWlCLEVBQ2hCLElBQWdCLEVBQ2hCLEtBQXdCLEVBQ3hCLGVBQWdDO1FBSmpDLGtCQUFh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QjtRQUFwQiwrQ0FBb0I7UUFHOUIsZUFBdUI7UUFBdkIsNENBQXVCO1FBS3ZDLGVBQTZDO1FBQTdDLDhGQUE2Qzs7QUR2QmxDLGtCQUFrQjtJQVY5QixhQUFhLENBQUM7UUFDYixJQUFJLEVBQUUsT0FBTztRQUNiLEtBQUssRUFBRSw2QkFBNkI7UUFDcEMsSUFBSSxFQUFFLGFBQWE7S0FDcEIsQ0FBQztHQU1XLGtCQUFrQixDQXVGOUI7U0F2Rlksa0JBQWtCO3VGQUFsQixrQkFBa0I7Y0FMOUIsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFdBQVcsRUFBRSw2QkFBNkI7Z0JBQzFDLFNBQVMsRUFBRSxDQUFDLDZCQUE2QixDQUFDO2FBQzNDO2lMQUdLLFVBQVU7a0JBRGIsS0FBSztZQVNGLElBQUk7a0JBRFAsS0FBSztZQVdGLHFCQUFxQjtrQkFEeEIsS0FBSztZQVNHLGlCQUFpQjtrQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFRvb2xDb21wb25lbnQgfSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBMYW5ndWFnZVNlcnZpY2UsIFZlcnNpb24gfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHR5cGUgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvYXV0aCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5AVG9vbENvbXBvbmVudCh7XHJcbiAgbmFtZTogJ2Fib3V0JyxcclxuICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi50b29scy5hYm91dCcsXHJcbiAgaWNvbjogJ2hlbHAtY2lyY2xlJ1xyXG59KVxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1hYm91dC10b29sJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWJvdXQtdG9vbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWJvdXQtdG9vbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBYm91dFRvb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGhlYWRlckh0bWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faGVhZGVySHRtbDtcclxuICB9XHJcbiAgc2V0IGhlYWRlckh0bWwodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5faGVhZGVySHRtbCA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuam9pbignXFxuJykgOiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGh0bWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faHRtbDtcclxuICB9XHJcbiAgc2V0IGh0bWwodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5faHRtbCA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuam9pbignXFxuJykgOiB2YWx1ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGlzY292ZXJUaXRsZUluTG9jYWxlOiBzdHJpbmcgPSAnSUdPJztcclxuICBwdWJsaWMgZGlzY292ZXJUaXRsZUluTG9jYWxlJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gb2YodGhpcy5fZGlzY292ZXJUaXRsZUluTG9jYWxlKTtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgZGlzY292ZXJUaXRsZUluTG9jYWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2NvdmVyVGl0bGVJbkxvY2FsZTtcclxuICB9XHJcbiAgc2V0IGRpc2NvdmVyVGl0bGVJbkxvY2FsZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9kaXNjb3ZlclRpdGxlSW5Mb2NhbGUgPSB2YWx1ZTtcclxuICAgIHRoaXMuZGlzY292ZXJUaXRsZUluTG9jYWxlJCA9IG9mKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHRyYWluaW5nR3VpZGVVUkxzO1xyXG5cclxuICBwdWJsaWMgdmVyc2lvbjogVmVyc2lvbjtcclxuICBwcml2YXRlIF9odG1sOiBzdHJpbmcgPSAnaWdvLmludGVncmF0aW9uLmFib3V0VG9vbC5odG1sJztcclxuICBwcml2YXRlIF9oZWFkZXJIdG1sOiBzdHJpbmcgPSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmludGVncmF0aW9uLmFib3V0VG9vbC5oZWFkZXJIdG1sJyk7XHJcblxyXG4gIHByaXZhdGUgYmFzZVVybFByb2ZpbDtcclxuICBwcml2YXRlIGJhc2VVcmxHdWlkZTtcclxuXHJcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcclxuICAgIHB1YmxpYyBhdXRoOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSkge1xyXG4gICAgdGhpcy52ZXJzaW9uID0gY29uZmlnU2VydmljZS5nZXRDb25maWcoJ3ZlcnNpb24nKTtcclxuICAgIHRoaXMuYmFzZVVybFByb2ZpbCA9IGNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdjb250ZXh0LnVybCcpICsgJy91c2VyL2lnbz8nO1xyXG4gICAgdGhpcy5iYXNlVXJsR3VpZGUgPSBjb25maWdTZXJ2aWNlLmdldENvbmZpZygnZGVwb3QudXJsJykgKyAnL3Byb2plY3RzL0RvY3VtZW50YXRpb24vZmlsZXMvJztcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuYXV0aC5hdXRoZW50aWNhdGVkICYmIHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2NvbnRleHQudXJsJykpIHtcclxuICAgICAgdGhpcy5odHRwLmdldCh0aGlzLmJhc2VVcmxQcm9maWwpLnN1YnNjcmliZSgocHJvZmlsKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVjYXN0ID0gcHJvZmlsIGFzIGFueTtcclxuICAgICAgICB0aGlzLnRyYWluaW5nR3VpZGVVUkxzID0gcmVjYXN0Lmd1aWRlcztcclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHRoaXMuYXV0aC5hdXRoZW50aWNhdGVkICYmXHJcbiAgICAgICAgIXRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2NvbnRleHQudXJsJykgJiZcclxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdkZXBvdC50cmFpbmluZ0d1aWRlcycpKSB7XHJcbiAgICAgICAgICB0aGlzLnRyYWluaW5nR3VpZGVVUkxzID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnZGVwb3QudHJhaW5pbmdHdWlkZXMnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5HdWlkZShndWlkZT8pIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCB1cmwgPSBndWlkZSA/XHJcbiAgICAgIHRoaXMuYmFzZVVybEd1aWRlICsgZ3VpZGUgKyAnPycgOlxyXG4gICAgICB0aGlzLmJhc2VVcmxHdWlkZSArIHRoaXMudHJhaW5pbmdHdWlkZVVSTHNbMF0gKyAnPyc7XHJcbiAgICB0aGlzLmh0dHBcclxuICAgIC5nZXQodXJsLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InXHJcbiAgICB9KVxyXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcclxuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1hdEZpbGVOYW1lKG5hbWU6IHN0cmluZykge1xyXG4gICAgbmFtZSA9IG5hbWUuc3BsaXQoJ18nKS5qb2luKCcgJyk7XHJcbiAgICBjb25zdCBpbmRleCA9IG5hbWUuaW5kZXhPZignLicpO1xyXG4gICAgbmFtZSA9IG5hbWUuc2xpY2UoMCwgaW5kZXgpO1xyXG4gICAgcmV0dXJuIG5hbWU7XHJcbiAgfVxyXG59XHJcbiIsIjxwPjwvcD5cclxuPGlnby1pbnRlcmFjdGl2ZS10b3VyXHJcbiAgbWF0LXJhaXNlZC1idXR0b25cclxuICB0b3VyVG9TdGFydD1cImdsb2JhbFwiXHJcbiAgbWVudUlzT3Blbj10cnVlXHJcbiAgc3R5bGVCdXR0b249XCJyYWlzZWRcIlxyXG4gIFtkaXNjb3ZlclRpdGxlSW5Mb2NhbGUkXT1cImRpc2NvdmVyVGl0bGVJbkxvY2FsZSRcIj5cclxuPC9pZ28taW50ZXJhY3RpdmUtdG91cj5cclxuXHJcbjxidXR0b24gKm5nSWY9XCJhdXRoLmF1dGhlbnRpY2F0ZWQgJiYgdHJhaW5pbmdHdWlkZVVSTHMgJiYgdHJhaW5pbmdHdWlkZVVSTHMubGVuZ3RoID09PSAxXCJcclxuICBjbGFzcz1cInRyYWluaW5nLWd1aWRlLWJ1dHRvblwiXHJcbiAgbWF0LXJhaXNlZC1idXR0b25cclxuICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxyXG4gIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxyXG4gIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcclxuICBbbWF0VG9vbHRpcF09XCInaWdvLmludGVncmF0aW9uLmFib3V0VG9vbC50cmFpbmluZ0d1aWRlVG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxyXG4gIChjbGljayk9XCJvcGVuR3VpZGUoKVwiPlxyXG4gIDxzcGFuPnt7J2lnby5pbnRlZ3JhdGlvbi5hYm91dFRvb2wudHJhaW5pbmdHdWlkZScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICA8bWF0LWljb24gc3ZnSWNvbj1cImZpbGUtZG9jdW1lbnRcIj48L21hdC1pY29uPlxyXG48L2J1dHRvbj5cclxuXHJcbjxidXR0b24gKm5nSWY9XCJhdXRoLmF1dGhlbnRpY2F0ZWQgJiYgdHJhaW5pbmdHdWlkZVVSTHMgJiYgdHJhaW5pbmdHdWlkZVVSTHMubGVuZ3RoID4gMVwiXHJcbiAgY2xhc3M9XCJ0cmFpbmluZy1ndWlkZS1idXR0b25cIlxyXG4gIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcclxuICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXHJcbiAgW21hdFRvb2x0aXBdPVwiJ2lnby5pbnRlZ3JhdGlvbi5hYm91dFRvb2wudHJhaW5pbmdHdWlkZVRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcclxuICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxyXG4gIDxzcGFuPnt7J2lnby5pbnRlZ3JhdGlvbi5hYm91dFRvb2wudHJhaW5pbmdHdWlkZScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICA8bWF0LWljb24gc3ZnSWNvbj1cImZpbGUtZG9jdW1lbnRcIj48L21hdC1pY29uPlxyXG48L2J1dHRvbj5cclxuXHJcbjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICA8YnV0dG9uICpuZ0Zvcj1cImxldCBndWlkZSBvZiB0cmFpbmluZ0d1aWRlVVJMc1wiIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9wZW5HdWlkZShndWlkZSlcIj57e2Zvcm1hdEZpbGVOYW1lKGd1aWRlKX19PC9idXR0b24+XHJcbjwvbWF0LW1lbnU+XHJcblxyXG48aWdvLWN1c3RvbS1odG1sICpuZ0lmPVwiaGVhZGVySHRtbCAhPT0gJydcIiBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCJcclxuICBbaHRtbF09XCJoZWFkZXJIdG1sIHwgdHJhbnNsYXRlXCI+XHJcbjwvaWdvLWN1c3RvbS1odG1sPlxyXG5cclxuPGlnby1jdXN0b20taHRtbCBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCJcclxuICBbaHRtbF09XCJodG1sIHwgdHJhbnNsYXRlOiB7dmVyc2lvbjogdmVyc2lvbn1cIj5cclxuPC9pZ28tY3VzdG9tLWh0bWw+XHJcbiJdfQ==
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL2Fib3V0L2Fib3V0LXRvb2wvYWJvdXQtdG9vbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL2Fib3V0L2Fib3V0LXRvb2wvYWJvdXQtdG9vbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUNLMUIsaUNBT3dCO0lBQXRCLHdMQUFxQjs7SUFDckIsNEJBQU07SUFBQSxZQUF5RDs7SUFBQSxpQkFBTztJQUN0RSw4QkFBNkM7SUFDL0MsaUJBQVM7OztJQUxQLHlDQUFvQixzRkFBQTtJQUdkLGVBQXlEO0lBQXpELHFGQUF5RDs7O0lBSWpFLGlDQU82Qjs7SUFDM0IsNEJBQU07SUFBQSxZQUF5RDs7SUFBQSxpQkFBTztJQUN0RSw4QkFBNkM7SUFDL0MsaUJBQVM7Ozs7SUFMUCx5Q0FBb0Isc0ZBQUEsMEJBQUE7SUFHZCxlQUF5RDtJQUF6RCxxRkFBeUQ7Ozs7SUFLL0Qsa0NBQXlGO0lBQTNCLDRQQUEwQjtJQUFDLFlBQXlCO0lBQUEsaUJBQVM7Ozs7SUFBbEMsZUFBeUI7SUFBekIscURBQXlCOzs7SUFHcEgscUNBRWtCOzs7O0lBRGhCLDhEQUErQjs7O0lEbkJwQixrQkFBa0IsU0FBbEIsa0JBQWtCO0lBdUM3QixZQUNTLGFBQTRCLEVBQzVCLElBQWlCLEVBQ2hCLElBQWdCLEVBQ2hCLEtBQXdCLEVBQ3hCLGVBQWdDO1FBSmpDLGtCQUFh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QUE2RTtRQWExRCxlQUFvQjtRQUFwQiwrQ0FBb0I7UUFHOUIsZUFBdUI7UUFBdkIsNENBQXVCO1FBS3ZDLGVBQTZDO1FBQTdDLDhGQUE2Qzs7QUR2QmxDLGtCQUFrQjtJQVY5QixhQUFhLENBQUM7UUFDYixJQUFJLEVBQUUsT0FBTztRQUNiLEtBQUssRUFBRSw2QkFBNkI7UUFDcEMsSUFBSSxFQUFFLGFBQWE7S0FDcEIsQ0FBQztHQU1XLGtCQUFrQixDQXVGOUI7U0F2Rlksa0JBQWtCO3VGQUFsQixrQkFBa0I7Y0FMOUIsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFdBQVcsRUFBRSw2QkFBNkI7Z0JBQzFDLFNBQVMsRUFBRSxDQUFDLDZCQUE2QixDQUFDO2FBQzNDO2lMQUdLLFVBQVU7a0JBRGIsS0FBSztZQVNGLElBQUk7a0JBRFAsS0FBSztZQVdGLHFCQUFxQjtrQkFEeEIsS0FBSztZQVNHLGlCQUFpQjtrQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFRvb2xDb21wb25lbnQgfSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBMYW5ndWFnZVNlcnZpY2UsIFZlcnNpb24gfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHR5cGUgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvYXV0aCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5AVG9vbENvbXBvbmVudCh7XHJcbiAgbmFtZTogJ2Fib3V0JyxcclxuICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi50b29scy5hYm91dCcsXHJcbiAgaWNvbjogJ2hlbHAtY2lyY2xlJ1xyXG59KVxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1hYm91dC10b29sJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWJvdXQtdG9vbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWJvdXQtdG9vbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBYm91dFRvb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGhlYWRlckh0bWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faGVhZGVySHRtbDtcclxuICB9XHJcbiAgc2V0IGhlYWRlckh0bWwodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5faGVhZGVySHRtbCA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuam9pbignXFxuJykgOiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGh0bWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faHRtbDtcclxuICB9XHJcbiAgc2V0IGh0bWwodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5faHRtbCA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuam9pbignXFxuJykgOiB2YWx1ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGlzY292ZXJUaXRsZUluTG9jYWxlOiBzdHJpbmcgPSAnSUdPJztcclxuICBwdWJsaWMgZGlzY292ZXJUaXRsZUluTG9jYWxlJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gb2YodGhpcy5fZGlzY292ZXJUaXRsZUluTG9jYWxlKTtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgZGlzY292ZXJUaXRsZUluTG9jYWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2NvdmVyVGl0bGVJbkxvY2FsZTtcclxuICB9XHJcbiAgc2V0IGRpc2NvdmVyVGl0bGVJbkxvY2FsZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9kaXNjb3ZlclRpdGxlSW5Mb2NhbGUgPSB2YWx1ZTtcclxuICAgIHRoaXMuZGlzY292ZXJUaXRsZUluTG9jYWxlJCA9IG9mKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHRyYWluaW5nR3VpZGVVUkxzO1xyXG5cclxuICBwdWJsaWMgdmVyc2lvbjogVmVyc2lvbjtcclxuICBwcml2YXRlIF9odG1sOiBzdHJpbmcgPSAnaWdvLmludGVncmF0aW9uLmFib3V0VG9vbC5odG1sJztcclxuICBwcml2YXRlIF9oZWFkZXJIdG1sOiBzdHJpbmcgPSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmludGVncmF0aW9uLmFib3V0VG9vbC5oZWFkZXJIdG1sJyk7XHJcblxyXG4gIHByaXZhdGUgYmFzZVVybFByb2ZpbDtcclxuICBwcml2YXRlIGJhc2VVcmxHdWlkZTtcclxuXHJcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcclxuICAgIHB1YmxpYyBhdXRoOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSkge1xyXG4gICAgdGhpcy52ZXJzaW9uID0gY29uZmlnU2VydmljZS5nZXRDb25maWcoJ3ZlcnNpb24nKTtcclxuICAgIHRoaXMuYmFzZVVybFByb2ZpbCA9IGNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdzdG9yYWdlLnVybCcpO1xyXG4gICAgdGhpcy5iYXNlVXJsR3VpZGUgPSBjb25maWdTZXJ2aWNlLmdldENvbmZpZygnZGVwb3QudXJsJykgKyBjb25maWdTZXJ2aWNlLmdldENvbmZpZygnZGVwb3QuZ3VpZGVVcmwnKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuYXV0aC5hdXRoZW50aWNhdGVkICYmIHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2NvbnRleHQudXJsJykpIHtcclxuICAgICAgdGhpcy5odHRwLmdldCh0aGlzLmJhc2VVcmxQcm9maWwpLnN1YnNjcmliZSgocHJvZmlsKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVjYXN0ID0gcHJvZmlsIGFzIGFueTtcclxuICAgICAgICB0aGlzLnRyYWluaW5nR3VpZGVVUkxzID0gcmVjYXN0Lmd1aWRlcztcclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHRoaXMuYXV0aC5hdXRoZW50aWNhdGVkICYmXHJcbiAgICAgICAgIXRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2NvbnRleHQudXJsJykgJiZcclxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdkZXBvdC50cmFpbmluZ0d1aWRlcycpKSB7XHJcbiAgICAgICAgICB0aGlzLnRyYWluaW5nR3VpZGVVUkxzID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnZGVwb3QudHJhaW5pbmdHdWlkZXMnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5HdWlkZShndWlkZT8pIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCB1cmwgPSBndWlkZSA/XHJcbiAgICAgIHRoaXMuYmFzZVVybEd1aWRlICsgZ3VpZGUgKyAnPycgOlxyXG4gICAgICB0aGlzLmJhc2VVcmxHdWlkZSArIHRoaXMudHJhaW5pbmdHdWlkZVVSTHNbMF0gKyAnPyc7XHJcbiAgICB0aGlzLmh0dHBcclxuICAgIC5nZXQodXJsLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InXHJcbiAgICB9KVxyXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcclxuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1hdEZpbGVOYW1lKG5hbWU6IHN0cmluZykge1xyXG4gICAgbmFtZSA9IG5hbWUuc3BsaXQoJ18nKS5qb2luKCcgJyk7XHJcbiAgICBjb25zdCBpbmRleCA9IG5hbWUuaW5kZXhPZignLicpO1xyXG4gICAgbmFtZSA9IG5hbWUuc2xpY2UoMCwgaW5kZXgpO1xyXG4gICAgcmV0dXJuIG5hbWU7XHJcbiAgfVxyXG59XHJcbiIsIjxwPjwvcD5cclxuPGlnby1pbnRlcmFjdGl2ZS10b3VyXHJcbiAgbWF0LXJhaXNlZC1idXR0b25cclxuICB0b3VyVG9TdGFydD1cImdsb2JhbFwiXHJcbiAgbWVudUlzT3Blbj10cnVlXHJcbiAgc3R5bGVCdXR0b249XCJyYWlzZWRcIlxyXG4gIFtkaXNjb3ZlclRpdGxlSW5Mb2NhbGUkXT1cImRpc2NvdmVyVGl0bGVJbkxvY2FsZSRcIj5cclxuPC9pZ28taW50ZXJhY3RpdmUtdG91cj5cclxuXHJcbjxidXR0b24gKm5nSWY9XCJhdXRoLmF1dGhlbnRpY2F0ZWQgJiYgdHJhaW5pbmdHdWlkZVVSTHMgJiYgdHJhaW5pbmdHdWlkZVVSTHMubGVuZ3RoID09PSAxXCJcclxuICBjbGFzcz1cInRyYWluaW5nLWd1aWRlLWJ1dHRvblwiXHJcbiAgbWF0LXJhaXNlZC1idXR0b25cclxuICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxyXG4gIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxyXG4gIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcclxuICBbbWF0VG9vbHRpcF09XCInaWdvLmludGVncmF0aW9uLmFib3V0VG9vbC50cmFpbmluZ0d1aWRlVG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxyXG4gIChjbGljayk9XCJvcGVuR3VpZGUoKVwiPlxyXG4gIDxzcGFuPnt7J2lnby5pbnRlZ3JhdGlvbi5hYm91dFRvb2wudHJhaW5pbmdHdWlkZScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICA8bWF0LWljb24gc3ZnSWNvbj1cImZpbGUtZG9jdW1lbnRcIj48L21hdC1pY29uPlxyXG48L2J1dHRvbj5cclxuXHJcbjxidXR0b24gKm5nSWY9XCJhdXRoLmF1dGhlbnRpY2F0ZWQgJiYgdHJhaW5pbmdHdWlkZVVSTHMgJiYgdHJhaW5pbmdHdWlkZVVSTHMubGVuZ3RoID4gMVwiXHJcbiAgY2xhc3M9XCJ0cmFpbmluZy1ndWlkZS1idXR0b25cIlxyXG4gIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcclxuICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXHJcbiAgW21hdFRvb2x0aXBdPVwiJ2lnby5pbnRlZ3JhdGlvbi5hYm91dFRvb2wudHJhaW5pbmdHdWlkZVRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcclxuICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxyXG4gIDxzcGFuPnt7J2lnby5pbnRlZ3JhdGlvbi5hYm91dFRvb2wudHJhaW5pbmdHdWlkZScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICA8bWF0LWljb24gc3ZnSWNvbj1cImZpbGUtZG9jdW1lbnRcIj48L21hdC1pY29uPlxyXG48L2J1dHRvbj5cclxuXHJcbjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICA8YnV0dG9uICpuZ0Zvcj1cImxldCBndWlkZSBvZiB0cmFpbmluZ0d1aWRlVVJMc1wiIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9wZW5HdWlkZShndWlkZSlcIj57e2Zvcm1hdEZpbGVOYW1lKGd1aWRlKX19PC9idXR0b24+XHJcbjwvbWF0LW1lbnU+XHJcblxyXG48aWdvLWN1c3RvbS1odG1sICpuZ0lmPVwiaGVhZGVySHRtbCAhPT0gJydcIiBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCJcclxuICBbaHRtbF09XCJoZWFkZXJIdG1sIHwgdHJhbnNsYXRlXCI+XHJcbjwvaWdvLWN1c3RvbS1odG1sPlxyXG5cclxuPGlnby1jdXN0b20taHRtbCBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCJcclxuICBbaHRtbF09XCJodG1sIHwgdHJhbnNsYXRlOiB7dmVyc2lvbjogdmVyc2lvbn1cIj5cclxuPC9pZ28tY3VzdG9tLWh0bWw+XHJcbiJdfQ==
@@ -6,14 +6,18 @@ import * as i0 from "@angular/core";
6
6
  import * as i1 from "../directions.state";
7
7
  import * as i2 from "../../map/map.state";
8
8
  import * as i3 from "@igo2/core";
9
- import * as i4 from "@igo2/geo";
9
+ import * as i4 from "../../context/context.state";
10
+ import * as i5 from "@igo2/auth";
11
+ import * as i6 from "@igo2/geo";
10
12
  let DirectionsToolComponent = class DirectionsToolComponent {
11
- constructor(directionState, mapState, languageService, messageService, storageService) {
13
+ constructor(directionState, mapState, languageService, messageService, storageService, contextState, authService) {
12
14
  this.directionState = directionState;
13
15
  this.mapState = mapState;
14
16
  this.languageService = languageService;
15
17
  this.messageService = messageService;
16
18
  this.storageService = storageService;
19
+ this.contextState = contextState;
20
+ this.authService = authService;
17
21
  }
18
22
  /**
19
23
  * stops
@@ -55,14 +59,19 @@ let DirectionsToolComponent = class DirectionsToolComponent {
55
59
  this.messageService.info(msg, title, { timeOut: 20000 });
56
60
  this.storageService.set('direction.warning.shown', true, StorageScope.SESSION);
57
61
  }
62
+ this.contextState.context$.subscribe(c => {
63
+ if (!this.authService.authenticated) {
64
+ this.currentContextUri = c.uri;
65
+ }
66
+ });
58
67
  }
59
68
  };
60
- DirectionsToolComponent.ɵfac = function DirectionsToolComponent_Factory(t) { return new (t || DirectionsToolComponent)(i0.ɵɵdirectiveInject(i1.DirectionState), i0.ɵɵdirectiveInject(i2.MapState), i0.ɵɵdirectiveInject(i3.LanguageService), i0.ɵɵdirectiveInject(i3.MessageService), i0.ɵɵdirectiveInject(i3.StorageService)); };
61
- DirectionsToolComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DirectionsToolComponent, selectors: [["igo-directions-tool"]], decls: 1, vars: 6, consts: [[3, "debounceTime", "stopsStore", "stopsFeatureStore", "stepFeatureStore", "routesFeatureStore", "zoomToActiveRoute$"]], template: function DirectionsToolComponent_Template(rf, ctx) { if (rf & 1) {
69
+ DirectionsToolComponent.ɵfac = function DirectionsToolComponent_Factory(t) { return new (t || DirectionsToolComponent)(i0.ɵɵdirectiveInject(i1.DirectionState), i0.ɵɵdirectiveInject(i2.MapState), i0.ɵɵdirectiveInject(i3.LanguageService), i0.ɵɵdirectiveInject(i3.MessageService), i0.ɵɵdirectiveInject(i3.StorageService), i0.ɵɵdirectiveInject(i4.ContextState), i0.ɵɵdirectiveInject(i5.AuthService)); };
70
+ DirectionsToolComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DirectionsToolComponent, selectors: [["igo-directions-tool"]], decls: 1, vars: 7, consts: [[3, "contextUri", "debounceTime", "stopsStore", "stopsFeatureStore", "stepFeatureStore", "routesFeatureStore", "zoomToActiveRoute$"]], template: function DirectionsToolComponent_Template(rf, ctx) { if (rf & 1) {
62
71
  i0.ɵɵelement(0, "igo-directions", 0);
63
72
  } if (rf & 2) {
64
- i0.ɵɵproperty("debounceTime", ctx.debounceTime)("stopsStore", ctx.stopsStore)("stopsFeatureStore", ctx.stopsFeatureStore)("stepFeatureStore", ctx.stepFeatureStore)("routesFeatureStore", ctx.routesFeatureStore)("zoomToActiveRoute$", ctx.zoomToActiveRoute$);
65
- } }, directives: [i4.DirectionsComponent], encapsulation: 2 });
73
+ i0.ɵɵproperty("contextUri", ctx.currentContextUri)("debounceTime", ctx.debounceTime)("stopsStore", ctx.stopsStore)("stopsFeatureStore", ctx.stopsFeatureStore)("stepFeatureStore", ctx.stepFeatureStore)("routesFeatureStore", ctx.routesFeatureStore)("zoomToActiveRoute$", ctx.zoomToActiveRoute$);
74
+ } }, directives: [i6.DirectionsComponent], encapsulation: 2 });
66
75
  DirectionsToolComponent = __decorate([
67
76
  ToolComponent({
68
77
  name: 'directions',
@@ -77,5 +86,5 @@ export { DirectionsToolComponent };
77
86
  selector: 'igo-directions-tool',
78
87
  templateUrl: './directions-tool.component.html'
79
88
  }]
80
- }], function () { return [{ type: i1.DirectionState }, { type: i2.MapState }, { type: i3.LanguageService }, { type: i3.MessageService }, { type: i3.StorageService }]; }, null); })();
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvZGlyZWN0aW9ucy9kaXJlY3Rpb25zLXRvb2wvZGlyZWN0aW9ucy10b29sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvZGlyZWN0aW9ucy9kaXJlY3Rpb25zLXRvb2wvZGlyZWN0aW9ucy10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFtQyxZQUFZLEVBQWtCLE1BQU0sWUFBWSxDQUFDOzs7Ozs7SUFnQjlFLHVCQUF1QixTQUF2Qix1QkFBdUI7SUF3Q2xDLFlBQ1UsY0FBOEIsRUFDOUIsUUFBa0IsRUFDbEIsZUFBZ0MsRUFDaEMsY0FBOEIsRUFDOUIsY0FBOEI7UUFKOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFDckMsQ0FBQztJQTdDSjs7O09BR0c7SUFDSCxJQUFJLFVBQVUsS0FBaUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFFdkUsSUFBSSxZQUFZLEtBQWEsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFFdkU7OztPQUdHO0lBQ0YsSUFBSSxpQkFBaUIsS0FBd0IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUU3Rjs7O09BR0c7SUFDSCxJQUFJLGtCQUFrQixLQUF5QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBRS9GOzs7T0FHRztJQUNGLElBQUksZ0JBQWdCLEtBQXVCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFFMUY7OztPQUdHO0lBQ0YsSUFBSSxrQkFBa0IsS0FBb0IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUczRjs7O09BR0c7SUFDSCxJQUFJLEdBQUcsS0FBYSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQVUvQyxRQUFRO1FBQ04sTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQVksQ0FBQztRQUNuRixJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDO1lBQ2pELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQzdCLDBDQUEwQyxDQUMzQyxDQUFDO1lBQ0YsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2hGO0lBQ0gsQ0FBQztDQUVGLENBQUE7OEZBN0RZLHVCQUF1QjswRUFBdkIsdUJBQXVCO1FDbkJwQyxvQ0FPaUI7O1FBTmIsK0NBQTZCLDhCQUFBLDRDQUFBLDBDQUFBLDhDQUFBLDhDQUFBOztBRGtCcEIsdUJBQXVCO0lBVG5DLGFBQWEsQ0FBQztRQUNiLElBQUksRUFBRSxZQUFZO1FBQ2xCLEtBQUssRUFBRSxrQ0FBa0M7UUFDekMsSUFBSSxFQUFFLFlBQVk7S0FDbkIsQ0FBQztHQUtXLHVCQUF1QixDQTZEbkM7U0E3RFksdUJBQXVCO3VGQUF2Qix1QkFBdUI7Y0FKbkMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLFdBQVcsRUFBRSxrQ0FBa0M7YUFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgVG9vbENvbXBvbmVudCB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSwgTWVzc2FnZVNlcnZpY2UsIFN0b3JhZ2VTY29wZSwgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHsgSWdvTWFwLCBSb3V0ZXNGZWF0dXJlU3RvcmUsIFN0b3BzRmVhdHVyZVN0b3JlLCBTdG9wc1N0b3JlLCBTdGVwRmVhdHVyZVN0b3JlIH0gZnJvbSAnQGlnbzIvZ2VvJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLi8uLi9tYXAvbWFwLnN0YXRlJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uU3RhdGUgfSBmcm9tICcuLi9kaXJlY3Rpb25zLnN0YXRlJztcclxuXHJcbkBUb29sQ29tcG9uZW50KHtcclxuICBuYW1lOiAnZGlyZWN0aW9ucycsXHJcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMuZGlyZWN0aW9ucycsXHJcbiAgaWNvbjogJ2RpcmVjdGlvbnMnXHJcbn0pXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWRpcmVjdGlvbnMtdG9vbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RpcmVjdGlvbnMtdG9vbC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERpcmVjdGlvbnNUb29sQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvKipcclxuICAgKiBzdG9wc1xyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGdldCBzdG9wc1N0b3JlKCk6IFN0b3BzU3RvcmUgeyByZXR1cm4gdGhpcy5kaXJlY3Rpb25TdGF0ZS5zdG9wc1N0b3JlOyB9XHJcblxyXG4gIGdldCBkZWJvdW5jZVRpbWUoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuZGlyZWN0aW9uU3RhdGUuZGVib3VuY2VUaW1lOyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHN0b3BzXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgIGdldCBzdG9wc0ZlYXR1cmVTdG9yZSgpOiBTdG9wc0ZlYXR1cmVTdG9yZSB7IHJldHVybiB0aGlzLmRpcmVjdGlvblN0YXRlLnN0b3BzRmVhdHVyZVN0b3JlOyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHJvdXRlc1xyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGdldCByb3V0ZXNGZWF0dXJlU3RvcmUoKTogUm91dGVzRmVhdHVyZVN0b3JlIHsgcmV0dXJuIHRoaXMuZGlyZWN0aW9uU3RhdGUucm91dGVzRmVhdHVyZVN0b3JlOyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHN0ZXAgc3RvcmVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICAgZ2V0IHN0ZXBGZWF0dXJlU3RvcmUoKTogU3RlcEZlYXR1cmVTdG9yZSB7IHJldHVybiB0aGlzLmRpcmVjdGlvblN0YXRlLnN0ZXBGZWF0dXJlU3RvcmU7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogc3RlcCBzdG9yZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gICBnZXQgem9vbVRvQWN0aXZlUm91dGUkKCk6IFN1YmplY3Q8dm9pZD4geyByZXR1cm4gdGhpcy5kaXJlY3Rpb25TdGF0ZS56b29tVG9BY3RpdmVSb3V0ZSQ7IH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIE1hcCB0byBtZWFzdXJlIG9uXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgZ2V0IG1hcCgpOiBJZ29NYXAgeyByZXR1cm4gdGhpcy5tYXBTdGF0ZS5tYXA7IH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpcmVjdGlvblN0YXRlOiBEaXJlY3Rpb25TdGF0ZSxcclxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3Qgd2FybmluZ1Nob3duID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXQoJ2RpcmVjdGlvbi53YXJuaW5nLnNob3duJykgYXMgYm9vbGVhbjtcclxuICAgIGlmICghd2FybmluZ1Nob3duKSB7XHJcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZTtcclxuICAgICAgY29uc3QgdGl0bGUgPSB0cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAnaWdvLmludGVncmF0aW9uLmRpcmVjdGlvbnMud2FybmluZy50aXRsZSdcclxuICAgICAgKTtcclxuICAgICAgY29uc3QgbXNnID0gdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5pbnRlZ3JhdGlvbi5kaXJlY3Rpb25zLndhcm5pbmcubWVzc2FnZScpO1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm8obXNnLCB0aXRsZSwgeyB0aW1lT3V0OiAyMDAwMCB9KTtcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2RpcmVjdGlvbi53YXJuaW5nLnNob3duJywgdHJ1ZSwgU3RvcmFnZVNjb3BlLlNFU1NJT04pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGlnby1kaXJlY3Rpb25zXHJcbiAgICBbZGVib3VuY2VUaW1lXT1cImRlYm91bmNlVGltZVwiXHJcbiAgICBbc3RvcHNTdG9yZV09XCJzdG9wc1N0b3JlXCJcclxuICAgIFtzdG9wc0ZlYXR1cmVTdG9yZV09XCJzdG9wc0ZlYXR1cmVTdG9yZVwiXHJcbiAgICBbc3RlcEZlYXR1cmVTdG9yZV09XCJzdGVwRmVhdHVyZVN0b3JlXCJcclxuICAgIFtyb3V0ZXNGZWF0dXJlU3RvcmVdPVwicm91dGVzRmVhdHVyZVN0b3JlXCJcclxuICAgIFt6b29tVG9BY3RpdmVSb3V0ZSRdPVwiem9vbVRvQWN0aXZlUm91dGUkXCI+ICBcclxuPC9pZ28tZGlyZWN0aW9ucz4iXX0=
89
+ }], function () { return [{ type: i1.DirectionState }, { type: i2.MapState }, { type: i3.LanguageService }, { type: i3.MessageService }, { type: i3.StorageService }, { type: i4.ContextState }, { type: i5.AuthService }]; }, null); })();
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvZGlyZWN0aW9ucy9kaXJlY3Rpb25zLXRvb2wvZGlyZWN0aW9ucy10b29sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvZGlyZWN0aW9ucy9kaXJlY3Rpb25zLXRvb2wvZGlyZWN0aW9ucy10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFtQyxZQUFZLEVBQWtCLE1BQU0sWUFBWSxDQUFDOzs7Ozs7OztJQWlCOUUsdUJBQXVCLFNBQXZCLHVCQUF1QjtJQTBDbEMsWUFDVSxjQUE4QixFQUM5QixRQUFrQixFQUNsQixlQUFnQyxFQUNoQyxjQUE4QixFQUM5QixjQUE4QixFQUMvQixZQUEwQixFQUN6QixXQUF3QjtRQU54QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUMvQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUMvQixDQUFDO0lBL0NKOzs7T0FHRztJQUNILElBQUksVUFBVSxLQUFpQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUV2RSxJQUFJLFlBQVksS0FBYSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUV2RTs7O09BR0c7SUFDRixJQUFJLGlCQUFpQixLQUF3QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBRTdGOzs7T0FHRztJQUNILElBQUksa0JBQWtCLEtBQXlCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFFL0Y7OztPQUdHO0lBQ0YsSUFBSSxnQkFBZ0IsS0FBdUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUUxRjs7O09BR0c7SUFDRixJQUFJLGtCQUFrQixLQUFvQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBRzNGOzs7T0FHRztJQUNILElBQUksR0FBRyxLQUFhLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBWS9DLFFBQVE7UUFDTixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBWSxDQUFDO1FBQ25GLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7WUFDakQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDN0IsMENBQTBDLENBQzNDLENBQUM7WUFDRixNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDNUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDaEY7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFO2dCQUNuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQzthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUVGLENBQUE7OEZBdEVZLHVCQUF1QjswRUFBdkIsdUJBQXVCO1FDckJwQyxvQ0FRaUI7O1FBUGIsa0RBQWdDLGtDQUFBLDhCQUFBLDRDQUFBLDBDQUFBLDhDQUFBLDhDQUFBOztBRG9CdkIsdUJBQXVCO0lBVG5DLGFBQWEsQ0FBQztRQUNiLElBQUksRUFBRSxZQUFZO1FBQ2xCLEtBQUssRUFBRSxrQ0FBa0M7UUFDekMsSUFBSSxFQUFFLFlBQVk7S0FDbkIsQ0FBQztHQUtXLHVCQUF1QixDQXNFbkM7U0F0RVksdUJBQXVCO3VGQUF2Qix1QkFBdUI7Y0FKbkMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLFdBQVcsRUFBRSxrQ0FBa0M7YUFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0BpZ28yL2F1dGgnO1xyXG5cclxuaW1wb3J0IHsgVG9vbENvbXBvbmVudCB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSwgTWVzc2FnZVNlcnZpY2UsIFN0b3JhZ2VTY29wZSwgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHsgSWdvTWFwLCBSb3V0ZXNGZWF0dXJlU3RvcmUsIFN0b3BzRmVhdHVyZVN0b3JlLCBTdG9wc1N0b3JlLCBTdGVwRmVhdHVyZVN0b3JlIH0gZnJvbSAnQGlnbzIvZ2VvJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb250ZXh0U3RhdGUgfSBmcm9tICcuLi8uLi9jb250ZXh0L2NvbnRleHQuc3RhdGUnO1xyXG5cclxuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLi8uLi9tYXAvbWFwLnN0YXRlJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uU3RhdGUgfSBmcm9tICcuLi9kaXJlY3Rpb25zLnN0YXRlJztcclxuXHJcbkBUb29sQ29tcG9uZW50KHtcclxuICBuYW1lOiAnZGlyZWN0aW9ucycsXHJcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMuZGlyZWN0aW9ucycsXHJcbiAgaWNvbjogJ2RpcmVjdGlvbnMnXHJcbn0pXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWRpcmVjdGlvbnMtdG9vbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RpcmVjdGlvbnMtdG9vbC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERpcmVjdGlvbnNUb29sQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgcHVibGljIGN1cnJlbnRDb250ZXh0VXJpOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogc3RvcHNcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBnZXQgc3RvcHNTdG9yZSgpOiBTdG9wc1N0b3JlIHsgcmV0dXJuIHRoaXMuZGlyZWN0aW9uU3RhdGUuc3RvcHNTdG9yZTsgfVxyXG5cclxuICBnZXQgZGVib3VuY2VUaW1lKCk6IG51bWJlciB7IHJldHVybiB0aGlzLmRpcmVjdGlvblN0YXRlLmRlYm91bmNlVGltZTsgfVxyXG5cclxuICAvKipcclxuICAgKiBzdG9wc1xyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gICBnZXQgc3RvcHNGZWF0dXJlU3RvcmUoKTogU3RvcHNGZWF0dXJlU3RvcmUgeyByZXR1cm4gdGhpcy5kaXJlY3Rpb25TdGF0ZS5zdG9wc0ZlYXR1cmVTdG9yZTsgfVxyXG5cclxuICAvKipcclxuICAgKiByb3V0ZXNcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBnZXQgcm91dGVzRmVhdHVyZVN0b3JlKCk6IFJvdXRlc0ZlYXR1cmVTdG9yZSB7IHJldHVybiB0aGlzLmRpcmVjdGlvblN0YXRlLnJvdXRlc0ZlYXR1cmVTdG9yZTsgfVxyXG5cclxuICAvKipcclxuICAgKiBzdGVwIHN0b3JlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgIGdldCBzdGVwRmVhdHVyZVN0b3JlKCk6IFN0ZXBGZWF0dXJlU3RvcmUgeyByZXR1cm4gdGhpcy5kaXJlY3Rpb25TdGF0ZS5zdGVwRmVhdHVyZVN0b3JlOyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHN0ZXAgc3RvcmVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICAgZ2V0IHpvb21Ub0FjdGl2ZVJvdXRlJCgpOiBTdWJqZWN0PHZvaWQ+IHsgcmV0dXJuIHRoaXMuZGlyZWN0aW9uU3RhdGUuem9vbVRvQWN0aXZlUm91dGUkOyB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBNYXAgdG8gbWVhc3VyZSBvblxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGdldCBtYXAoKTogSWdvTWFwIHsgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwOyB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaXJlY3Rpb25TdGF0ZTogRGlyZWN0aW9uU3RhdGUsXHJcbiAgICBwcml2YXRlIG1hcFN0YXRlOiBNYXBTdGF0ZSxcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNvbnRleHRTdGF0ZTogQ29udGV4dFN0YXRlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3Qgd2FybmluZ1Nob3duID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXQoJ2RpcmVjdGlvbi53YXJuaW5nLnNob3duJykgYXMgYm9vbGVhbjtcclxuICAgIGlmICghd2FybmluZ1Nob3duKSB7XHJcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZTtcclxuICAgICAgY29uc3QgdGl0bGUgPSB0cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAnaWdvLmludGVncmF0aW9uLmRpcmVjdGlvbnMud2FybmluZy50aXRsZSdcclxuICAgICAgKTtcclxuICAgICAgY29uc3QgbXNnID0gdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5pbnRlZ3JhdGlvbi5kaXJlY3Rpb25zLndhcm5pbmcubWVzc2FnZScpO1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm8obXNnLCB0aXRsZSwgeyB0aW1lT3V0OiAyMDAwMCB9KTtcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2RpcmVjdGlvbi53YXJuaW5nLnNob3duJywgdHJ1ZSwgU3RvcmFnZVNjb3BlLlNFU1NJT04pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0U3RhdGUuY29udGV4dCQuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuYXV0aFNlcnZpY2UuYXV0aGVudGljYXRlZCkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudENvbnRleHRVcmkgPSBjLnVyaTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8aWdvLWRpcmVjdGlvbnNcclxuICAgIFtjb250ZXh0VXJpXT1cImN1cnJlbnRDb250ZXh0VXJpXCJcclxuICAgIFtkZWJvdW5jZVRpbWVdPVwiZGVib3VuY2VUaW1lXCJcclxuICAgIFtzdG9wc1N0b3JlXT1cInN0b3BzU3RvcmVcIlxyXG4gICAgW3N0b3BzRmVhdHVyZVN0b3JlXT1cInN0b3BzRmVhdHVyZVN0b3JlXCJcclxuICAgIFtzdGVwRmVhdHVyZVN0b3JlXT1cInN0ZXBGZWF0dXJlU3RvcmVcIlxyXG4gICAgW3JvdXRlc0ZlYXR1cmVTdG9yZV09XCJyb3V0ZXNGZWF0dXJlU3RvcmVcIlxyXG4gICAgW3pvb21Ub0FjdGl2ZVJvdXRlJF09XCJ6b29tVG9BY3RpdmVSb3V0ZSRcIj4gIFxyXG48L2lnby1kaXJlY3Rpb25zPiJdfQ==
@@ -82,17 +82,20 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
82
82
  }
83
83
  activateExportTool() {
84
84
  const ids = [];
85
+ const re = new RegExp('^Zone \\d+');
85
86
  for (const layer of this.layers) {
86
- ids.push(layer.id);
87
+ if (!layer.title.match(re)) {
88
+ ids.push(layer.id);
89
+ }
87
90
  }
88
91
  this.importExportState.setMode(ImportExportMode.export);
89
92
  this.importExportState.setsExportOptions({ layers: ids });
90
93
  this.toolState.toolbox.activateTool('importExport');
91
94
  }
92
- activateWorkspace() {
95
+ activateWorkspace(record) {
93
96
  let layerToOpenWks;
94
97
  this.workspaceState.store.entities$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
95
- if (this.activeLayers.length && this.workspaceState.store.all().length > 1) {
98
+ if (!record && this.activeLayers.length && this.workspaceState.store.all().length > 1) {
96
99
  if (this.itemType === SpatialFilterItemType.Thematics) {
97
100
  for (const thematic of this.thematics) {
98
101
  if (!thematic.zeroResults) {
@@ -114,6 +117,21 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
114
117
  this.workspaceState.setActiveWorkspaceById(layerToOpenWks.id);
115
118
  }
116
119
  }
120
+ else if (record && this.activeLayers.length && this.workspaceState.store.all().length > 1) {
121
+ this.selectWorkspaceEntity(record);
122
+ this.moveendKey = this.map.ol.on('moveend', () => {
123
+ this.selectWorkspaceEntity(record);
124
+ });
125
+ }
126
+ });
127
+ }
128
+ selectWorkspaceEntity(record) {
129
+ this.workspaceState.store.all().forEach(workspace => {
130
+ workspace.entityStore.state.updateAll({ selected: false });
131
+ if (workspace.title.includes(record.added[0].meta.title)) {
132
+ this.workspaceState.setActiveWorkspaceById(workspace.id);
133
+ workspace.entityStore.state.updateMany(record.added, { selected: true });
134
+ }
117
135
  });
118
136
  }
119
137
  loadFilterList() {
@@ -277,6 +295,7 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
277
295
  .pipe(take(1))
278
296
  .subscribe((dataSource) => {
279
297
  const olLayer = this.layerService.createLayer({
298
+ isIgoInternalLayer: true,
280
299
  title: ('Zone ' + i + ' - ' + this.languageService.translate.instant('igo.geo.spatialFilter.spatialFilter')),
281
300
  workspace: { enabled: true },
282
301
  _internal: {
@@ -367,6 +386,7 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
367
386
  style = this.createSvgIcon(icon) || createOverlayMarkerStyle();
368
387
  }
369
388
  const olLayer = this.layerService.createLayer({
389
+ isIgoInternalLayer: true,
370
390
  title: (features[0].meta.title + ' ' + i + ' - ' + this.languageService.translate.instant('igo.geo.spatialFilter.spatialFilter')),
371
391
  source: dataSource,
372
392
  visible: true,
@@ -432,6 +452,7 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
432
452
  .pipe(take(1))
433
453
  .subscribe((dataSource) => {
434
454
  const olLayer = this.layerService.createLayer({
455
+ isIgoInternalLayer: true,
435
456
  title: (features[0].meta.title + ' ' + i + ' - ' + this.languageService.translate.instant('igo.geo.spatialFilter.spatialFilter')),
436
457
  source: dataSource,
437
458
  visible: true
@@ -473,13 +494,13 @@ let SpatialFilterToolComponent = class SpatialFilterToolComponent {
473
494
  }
474
495
  };
475
496
  SpatialFilterToolComponent.ɵfac = function SpatialFilterToolComponent_Factory(t) { return new (t || SpatialFilterToolComponent)(i0.ɵɵdirectiveInject(i1.MatIconRegistry), i0.ɵɵdirectiveInject(i2.SpatialFilterService), i0.ɵɵdirectiveInject(i2.DataSourceService), i0.ɵɵdirectiveInject(i2.LayerService), i0.ɵɵdirectiveInject(i3.MapState), i0.ɵɵdirectiveInject(i4.MessageService), i0.ɵɵdirectiveInject(i4.LanguageService), i0.ɵɵdirectiveInject(i5.ImportExportState), i0.ɵɵdirectiveInject(i6.ToolState), i0.ɵɵdirectiveInject(i7.WorkspaceState), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
476
- SpatialFilterToolComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SpatialFilterToolComponent, selectors: [["igo-spatial-filter-tool"]], inputs: { type: "type", itemType: "itemType", freehandDrawIsActive: "freehandDrawIsActive" }, decls: 6, vars: 16, consts: [[3, "store", "selectedQueryType", "zone", "layers", "eventType", "eventQueryType", "zoneChange", "zoneWithBufferChange", "bufferChange", "measureUnitChange"], [3, "type", "queryType", "map", "zone", "loading", "store", "layers", "allLayers", "thematicLength", "radiusEvent", "bufferEvent", "measureUnitChange", "freehandControl", "drawZoneEvent", "zoneWithBufferChange", "itemTypeChange", "thematicChange", "toggleSearch", "clearButtonEvent", "clearSearchEvent", "export", "openWorkspace"], [4, "ngIf"], [3, "feature"]], template: function SpatialFilterToolComponent_Template(rf, ctx) { if (rf & 1) {
497
+ SpatialFilterToolComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SpatialFilterToolComponent, selectors: [["igo-spatial-filter-tool"]], inputs: { type: "type", itemType: "itemType", freehandDrawIsActive: "freehandDrawIsActive" }, decls: 6, vars: 16, consts: [[3, "store", "selectedQueryType", "zone", "layers", "eventType", "eventQueryType", "zoneChange", "zoneWithBufferChange", "bufferChange", "measureUnitChange"], [3, "type", "queryType", "map", "zone", "loading", "store", "layers", "allLayers", "thematicLength", "radiusEvent", "bufferEvent", "measureUnitChange", "freehandControl", "drawZoneEvent", "zoneWithBufferChange", "itemTypeChange", "thematicChange", "toggleSearch", "clearButtonEvent", "clearSearchEvent", "export", "openWorkspace", "entityChange"], [4, "ngIf"], [3, "feature"]], template: function SpatialFilterToolComponent_Template(rf, ctx) { if (rf & 1) {
477
498
  i0.ɵɵelementStart(0, "igo-panel");
478
499
  i0.ɵɵelementStart(1, "igo-spatial-filter-type", 0);
479
500
  i0.ɵɵlistener("eventType", function SpatialFilterToolComponent_Template_igo_spatial_filter_type_eventType_1_listener($event) { return ctx.getOutputType($event); })("eventQueryType", function SpatialFilterToolComponent_Template_igo_spatial_filter_type_eventQueryType_1_listener($event) { return ctx.getOutputQueryType($event); })("zoneChange", function SpatialFilterToolComponent_Template_igo_spatial_filter_type_zoneChange_1_listener($event) { return ctx.onZoneChange($event); })("zoneWithBufferChange", function SpatialFilterToolComponent_Template_igo_spatial_filter_type_zoneWithBufferChange_1_listener($event) { return ctx.onZoneChange($event, true); })("bufferChange", function SpatialFilterToolComponent_Template_igo_spatial_filter_type_bufferChange_1_listener($event) { return ctx.buffer = $event; })("measureUnitChange", function SpatialFilterToolComponent_Template_igo_spatial_filter_type_measureUnitChange_1_listener($event) { return ctx.measureUnit = $event; });
480
501
  i0.ɵɵelementEnd();
481
502
  i0.ɵɵelementStart(2, "igo-spatial-filter-item", 1);
482
- i0.ɵɵlistener("radiusEvent", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_radiusEvent_2_listener($event) { return ctx.buffer = $event; })("bufferEvent", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_bufferEvent_2_listener($event) { return ctx.buffer = $event; })("measureUnitChange", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_measureUnitChange_2_listener($event) { return ctx.measureUnit = $event; })("freehandControl", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_freehandControl_2_listener($event) { return ctx.freehandDrawIsActive = $event; })("drawZoneEvent", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_drawZoneEvent_2_listener($event) { return ctx.zone = $event; })("zoneWithBufferChange", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_zoneWithBufferChange_2_listener($event) { return ctx.onZoneChange($event, true); })("itemTypeChange", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_itemTypeChange_2_listener($event) { return ctx.itemType = $event; })("thematicChange", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_thematicChange_2_listener($event) { return ctx.thematics = $event; })("toggleSearch", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_toggleSearch_2_listener() { return ctx.getOutputToggleSearch(); })("clearButtonEvent", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_clearButtonEvent_2_listener() { return ctx.clearMap(); })("clearSearchEvent", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_clearSearchEvent_2_listener() { return ctx.getOutputClearSearch(); })("export", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_export_2_listener() { return ctx.activateExportTool(); })("openWorkspace", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_openWorkspace_2_listener() { return ctx.activateWorkspace(); });
503
+ i0.ɵɵlistener("radiusEvent", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_radiusEvent_2_listener($event) { return ctx.buffer = $event; })("bufferEvent", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_bufferEvent_2_listener($event) { return ctx.buffer = $event; })("measureUnitChange", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_measureUnitChange_2_listener($event) { return ctx.measureUnit = $event; })("freehandControl", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_freehandControl_2_listener($event) { return ctx.freehandDrawIsActive = $event; })("drawZoneEvent", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_drawZoneEvent_2_listener($event) { return ctx.zone = $event; })("zoneWithBufferChange", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_zoneWithBufferChange_2_listener($event) { return ctx.onZoneChange($event, true); })("itemTypeChange", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_itemTypeChange_2_listener($event) { return ctx.itemType = $event; })("thematicChange", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_thematicChange_2_listener($event) { return ctx.thematics = $event; })("toggleSearch", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_toggleSearch_2_listener() { return ctx.getOutputToggleSearch(); })("clearButtonEvent", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_clearButtonEvent_2_listener() { return ctx.clearMap(); })("clearSearchEvent", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_clearSearchEvent_2_listener() { return ctx.getOutputClearSearch(); })("export", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_export_2_listener() { return ctx.activateExportTool(); })("openWorkspace", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_openWorkspace_2_listener() { return ctx.activateWorkspace(); })("entityChange", function SpatialFilterToolComponent_Template_igo_spatial_filter_item_entityChange_2_listener($event) { return ctx.activateWorkspace($event); });
483
504
  i0.ɵɵelementEnd();
484
505
  i0.ɵɵelementEnd();
485
506
  i0.ɵɵelementStart(3, "igo-panel");
@@ -520,4 +541,4 @@ export { SpatialFilterToolComponent };
520
541
  }], freehandDrawIsActive: [{
521
542
  type: Input
522
543
  }] }); })();
523
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXItdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL2ZpbHRlci9zcGF0aWFsLWZpbHRlci10b29sL3NwYXRpYWwtZmlsdGVyLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9maWx0ZXIvc3BhdGlhbC1maWx0ZXItdG9vbC9zcGF0aWFsLWZpbHRlci10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFFaEgsT0FBTyxFQUFjLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUtMLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsV0FBVyxFQUlYLGlCQUFpQixFQUNqQixxQkFBcUIsRUFJckIsd0JBQXdCLEVBRXhCLGlCQUFpQixFQUNsQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxRCxPQUFPLGVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUloRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUIsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRyxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7SUNRbEMsNkJBQTBEO0lBQ3hELHlDQUErRDtJQUNqRSwwQkFBZTs7O0lBRFEsZUFBbUI7SUFBbkIsb0NBQW1COztBREo1Qzs7R0FFRztJQWVVLDBCQUEwQixTQUExQiwwQkFBMEI7SUFxQ3JDLFlBQ1UsZUFBZ0MsRUFDaEMsb0JBQTBDLEVBQzFDLGlCQUFvQyxFQUNwQyxZQUEwQixFQUMxQixRQUFrQixFQUNsQixjQUE4QixFQUM5QixlQUFnQyxFQUNoQyxpQkFBb0MsRUFDcEMsU0FBb0IsRUFDcEIsY0FBOEIsRUFDOUIsS0FBd0I7UUFWeEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQTFDekIsYUFBUSxHQUEwQixxQkFBcUIsQ0FBQyxPQUFPLENBQUM7UUFHbEUsV0FBTSxHQUFZLEVBQUUsQ0FBQztRQUNyQixpQkFBWSxHQUFZLEVBQUUsQ0FBQztRQU0zQixXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRVgsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUViLHFCQUFnQixHQUE2QixJQUFJLGVBQWUsQ0FDckUsU0FBUyxDQUNWLENBQUM7UUFFTSxXQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUVoQyxVQUFLLEdBQXlCLElBQUksV0FBVyxDQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0NBQW9DO1FBRWhHLHFCQUFnQixHQUF5QixJQUFJLFdBQVcsQ0FBVSxFQUFFLENBQUMsQ0FBQztRQUV0RSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBRW5CLGdCQUFXLEdBQXNCLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztRQUN6RCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFjeEMsQ0FBQztJQWhESixJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQzNCLENBQUM7SUFnREQsUUFBUTtRQUNOLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDbkMsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3RILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3pCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXdCO1FBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUE2QjtRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDZixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDL0IsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDcEI7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQW1CLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksY0FBYyxDQUFDO1FBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDcEYsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMxRSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUsscUJBQXFCLENBQUMsU0FBUyxFQUFFO29CQUNuRCxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7d0JBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFOzRCQUN6QixjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDdkgsTUFBTTt5QkFDUDtxQkFDSjtpQkFDRjtxQkFBTTtvQkFDSCxNQUFNLEtBQUssR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDbEMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTs0QkFDL0IsY0FBYyxHQUFHLEtBQUssQ0FBQzt5QkFDeEI7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7aUJBQ047Z0JBRUQsSUFBSSxjQUFjLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO29CQUNsRCxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDL0Q7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLG9CQUFvQjthQUN0QixjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxRQUFtQixFQUFFLEVBQUU7WUFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDdkMsT0FBTyxDQUFDLENBQUMsQ0FBQztpQkFDWDtnQkFDRCxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUN2QyxPQUFPLENBQUMsQ0FBQztpQkFDVjtnQkFDRCxPQUFPLENBQUMsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUU7WUFDOUMsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7WUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxTQUFTLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUMsS0FBSyxFQUFFO1lBQzlELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3ZDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLHFCQUFxQixDQUFDLFNBQVMsRUFBRTtZQUNyRCxNQUFNLEtBQUssR0FBMEI7Z0JBQ25DLElBQUksRUFBRSxFQUFFO2FBQ1QsQ0FBQztZQUNGLFNBQVMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3JCO2FBQU07WUFDTCxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUM1QjtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxpQkFBaUIsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUU7WUFDOUYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztTQUNsQztRQUNELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUU7WUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxpREFBaUQ7U0FDbkU7UUFFRCxNQUFNLFlBQVksR0FBNEIsRUFBRSxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDM0IsWUFBWSxDQUFDLElBQUksQ0FDZixJQUFJLENBQUMsb0JBQW9CO2lCQUN0QixjQUFjLENBQ2IsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxTQUFTLEVBQ2QsUUFBUSxFQUNSLElBQUksQ0FBQyxNQUFNLENBQ1o7aUJBQ0EsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQW1CLEVBQUUsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hDLE1BQU0sYUFBYSxHQUFjLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxnQkFBZ0IsR0FBYyxFQUFFLENBQUM7Z0JBQ3ZDLElBQUksT0FBTyxDQUFDO2dCQUNaLElBQUksVUFBVSxDQUFDO2dCQUNmLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3pCLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO3dCQUNyQyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDL0QsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzlELGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQzVCLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztxQkFDM0I7eUJBQU07d0JBQ0wsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUMvQixVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7cUJBQzlCO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO29CQUNuQixXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUNwQixJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztvQkFDekIsUUFBUSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQzVCO3FCQUFNO29CQUNMLFFBQVEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2lCQUM3QjtnQkFFRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksS0FBSyxFQUFFO29CQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUNwQyxvQ0FBb0MsQ0FDckMsRUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ3BDLCtCQUErQixDQUNoQyxFQUNELEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUNuQixDQUFDO2lCQUNIO1lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FDSixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksV0FBVyxFQUFFO2dCQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ3BDLG1DQUFtQyxDQUNwQyxFQUNELElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDcEMsK0JBQStCLENBQ2hDLEVBQ0QsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQ25CLENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFnQixFQUFFLE1BQWdCO1FBQzdDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ3BCLElBQUksT0FBTyxFQUFFO1lBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN6RixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQkFBbUIsQ0FBQyxRQUFtQixFQUFFLE1BQWdCOztRQUM5RCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRTtZQUM5QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUMsVUFBVSxFQUFFO2dCQUM5QyxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQy9CLElBQ0UsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTO3dCQUN2QixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJO3dCQUN4RCxDQUFDLE1BQU0sRUFDUDt3QkFDQSxJQUFJLENBQUMsQ0FBQSxNQUFBLEtBQUssQ0FBQyxLQUFLLDBDQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQSxFQUFFOzRCQUNwQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO3lCQUM5Qjt3QkFDRCxPQUFPO3FCQUNSO29CQUNELElBQUksTUFBQSxLQUFLLENBQUMsS0FBSywwQ0FBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7d0JBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO3dCQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDN0I7aUJBQ0Y7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLE1BQU0sRUFBRTtvQkFDVixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7d0JBQ3JDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxLQUFJLE1BQUEsS0FBSyxDQUFDLEtBQUssMENBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBLEVBQUU7NEJBQ3JFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO3lCQUM3QjtxQkFDRjtpQkFDRjtnQkFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQzthQUN4QjtZQUNELEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDL0IsSUFBSSxNQUFBLEtBQUssQ0FBQyxLQUFLLDBDQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDbkMsQ0FBQyxFQUFFLENBQUM7aUJBQ0w7YUFDRjtZQUNELElBQUksQ0FBQyxpQkFBaUI7aUJBQ25CLHFCQUFxQixDQUFDO2dCQUNyQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxTQUFTLEVBQUUsSUFBSTthQUNjLENBQUM7aUJBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2IsU0FBUyxDQUFDLENBQUMsVUFBc0IsRUFBRSxFQUFFO2dCQUNwQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztvQkFDNUMsS0FBSyxFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUNsRSxxQ0FBcUMsQ0FDdEMsQ0FBVztvQkFDWixTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFO29CQUM1QixTQUFTLEVBQUU7d0JBQ1QsSUFBSSxFQUNGLElBQUksQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUMsVUFBVTs0QkFDeEMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSTs0QkFDekIsQ0FBQyxDQUFDLFNBQVM7cUJBQ2hCO29CQUNELE1BQU0sRUFBRSxVQUFVO29CQUNsQixPQUFPLEVBQUUsSUFBSTtvQkFDYixLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLEVBQUU7d0JBQzlCLE1BQU0sV0FBVyxHQUFJLFFBQVEsQ0FBQyxDQUFDLENBQVMsQ0FBQyxXQUFXLENBQUM7d0JBQ3JELE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDOzRCQUN2QixLQUFLLEVBQUUsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO2dDQUN4QixNQUFNLEVBQUUsV0FBVztvQ0FDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNO3dDQUNYLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3Q0FDMUMsVUFBVTtvQ0FDWixDQUFDLENBQUMsU0FBUztnQ0FDYixJQUFJLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDO29DQUNyQixLQUFLLEVBQUUseUJBQXlCO2lDQUNqQyxDQUFDO2dDQUNGLE1BQU0sRUFBRSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUM7b0NBQ3pCLEtBQUssRUFBRSxDQUFDO29DQUNSLEtBQUssRUFBRSxRQUFRO2lDQUNoQixDQUFDOzZCQUNILENBQUM7NEJBQ0YsTUFBTSxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQztnQ0FDekIsS0FBSyxFQUFFLENBQUM7Z0NBQ1IsS0FBSyxFQUFFLFFBQVE7NkJBQ2hCLENBQUM7NEJBQ0YsSUFBSSxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQztnQ0FDckIsS0FBSyxFQUFFLHlCQUF5Qjs2QkFDakMsQ0FBQzt5QkFDSCxDQUFDLENBQUM7b0JBQ0wsQ0FBQztpQkFDRixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDbEMsT0FBTyxXQUFXLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzdDLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUU7b0JBQzlDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztvQkFDM0UsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUN2QyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ3ZDO2dCQUNELE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxFQUFrRCxDQUFDO2dCQUN6RSxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssZ0JBQWdCLENBQUMsUUFBbUIsRUFBRSxFQUFFOztRQUM5QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDbkIsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRTtnQkFDMUIsT0FBTzthQUNSO1lBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUMvQixJQUFJLE1BQUEsS0FBSyxDQUFDLEtBQUssMENBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ25ELENBQUMsRUFBRSxDQUFDO2lCQUNMO2FBQ0Y7WUFDRCxJQUFJLENBQUMsaUJBQWlCO2lCQUNuQixxQkFBcUIsQ0FBQztnQkFDckIsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsRUFBRTtnQkFDRixTQUFTLEVBQUUsSUFBSTtnQkFDZixRQUFRLEVBQUUsR0FBRztnQkFDYixJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLFNBQVM7aUJBQ2pCO2FBQzRCLENBQUM7aUJBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2IsU0FBUyxDQUFDLENBQUMsVUFBNkIsRUFBRSxFQUFFO2dCQUMzQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDbkMsSUFBSSxLQUFvQixDQUFDO2dCQUN6QixJQUFJLENBQUMsSUFBSSxFQUFFO29CQUNULEtBQUssR0FBRyx3QkFBd0IsRUFBRSxDQUFDO2lCQUNwQztxQkFBTTtvQkFDTCxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO2lCQUNoRTtnQkFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztvQkFDNUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUN2RixxQ0FBcUMsQ0FDdEMsQ0FBVztvQkFDWixNQUFNLEVBQUUsVUFBVTtvQkFDbEIsT0FBTyxFQUFFLElBQUk7b0JBQ2IsS0FBSztpQkFDTixDQUFDLENBQUM7Z0JBRUgsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDeEMsT0FBTyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ25ELENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxFQUFxQixDQUFDO2dCQUM1QyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7b0JBQ3RELElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUNuRCxDQUFDO29CQUNGLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNWLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ2hHLHFDQUFxQyxDQUN0QyxDQUFXLENBQUM7b0JBQ2IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztpQkFDdkM7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFJO1FBQ3hCLElBQUksS0FBb0IsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDNUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUMxQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNuQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNwQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1lBQ2pELE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRCxLQUFLLEdBQUcsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUN4QixLQUFLLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUN0QixHQUFHLEVBQUUsMEJBQTBCLEdBQUcsR0FBRztpQkFDdEMsQ0FBQzthQUNILENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0Q7O09BRUc7SUFDSyxnQkFBZ0IsQ0FBQyxRQUFtQixFQUFFLEVBQUU7O1FBQzlDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFO2dCQUMxQixPQUFPO2FBQ1I7WUFDRCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQy9CLElBQUksTUFBQSxLQUFLLENBQUMsS0FBSywwQ0FBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDbkQsQ0FBQyxFQUFFLENBQUM7aUJBQ0w7YUFDRjtZQUNELElBQUksQ0FBQyxpQkFBaUI7aUJBQ25CLHFCQUFxQixDQUFDO2dCQUNyQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxFQUFFO2dCQUNGLFNBQVMsRUFBRSxJQUFJO2FBQ2MsQ0FBQztpQkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDYixTQUFTLENBQUMsQ0FBQyxVQUFzQixFQUFFLEVBQUU7Z0JBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO29CQUM1QyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ3ZGLHFDQUFxQyxDQUN0QyxDQUFXO29CQUNaLE1BQU0sRUFBRSxVQUFVO29CQUNsQixPQUFPLEVBQUUsSUFBSTtpQkFDZCxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDeEMsT0FBTyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ25ELENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxFQUFnQyxDQUFDO2dCQUN2RCxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7b0JBQ3RELElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUNuRCxDQUFDO29CQUNGLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNWLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ2hHLHFDQUFxQyxDQUN0QyxDQUFXLENBQUM7b0JBQ2IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztpQkFDdkM7Z0JBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsT0FBTztRQUN6QixJQUFJLE9BQU8sRUFBRTtZQUNYLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtnQkFDakQsY0FBYyxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUNsQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVU7YUFDdkMsQ0FBQyxDQUFDO1lBQ0gsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM3RDtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsS0FBSztRQUNiLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDdkIsT0FBTzthQUNSO1NBQ0Y7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0YsQ0FBQTtvR0F6Z0JZLDBCQUEwQjs2RUFBMUIsMEJBQTBCO1FDeER2QyxpQ0FBVztRQUNULGtEQVU2QztRQUwzQyxzSUFBYSx5QkFBcUIsSUFBQyxtSUFDakIsOEJBQTBCLElBRFQsMkhBRXJCLHdCQUFvQixJQUZDLCtJQUdYLHlCQUFxQixJQUFJLENBQUMsSUFIZixzSkFBQSxxS0FBQTtRQU1yQyxpQkFBMEI7UUFFMUIsa0RBdUJHO1FBYkQsaUtBQStCLG9KQUFBLHFLQUFBLDBLQUFBLHNKQUFBLCtJQUtQLHlCQUFxQixJQUFJLENBQUMsSUFMbkIsNEpBQUEsNkpBQUEseUhBUWYsMkJBQXVCLElBUlIsaUlBU1gsY0FBVSxJQVRDLGlJQVVYLDBCQUFzQixJQVZYLDZHQVdyQix3QkFBb0IsSUFYQywySEFZZCx1QkFBbUIsSUFaTDtRQWNqQyxpQkFBMEI7UUFDNUIsaUJBQVk7UUFFWixpQ0FBVztRQUNULDZGQUVlOztRQUNqQixpQkFBWTs7UUEzQ1IsZUFBMEI7UUFBMUIsNENBQTBCLG9DQUFBLGtCQUFBLDRCQUFBO1FBYTFCLGVBQWE7UUFBYiwrQkFBYSw0QkFBQSxnQkFBQSxrQkFBQSx3QkFBQSxvQkFBQSw0QkFBQSx5QkFBQSxzQ0FBQTtRQTJCQSxlQUErQjtRQUEvQixrRUFBK0I7O0FEY25DLDBCQUEwQjtJQWR0QyxhQUFhLENBQUM7UUFDYixJQUFJLEVBQUUsZUFBZTtRQUNyQixLQUFLLEVBQUUscUNBQXFDO1FBQzVDLElBQUksRUFBRSxrQkFBa0I7S0FDekIsQ0FBQztJQUNGOztPQUVHO0dBT1UsMEJBQTBCLENBeWdCdEM7U0F6Z0JZLDBCQUEwQjt1RkFBMUIsMEJBQTBCO2NBTnRDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxXQUFXLEVBQUUsc0NBQXNDO2dCQUNuRCxTQUFTLEVBQUUsQ0FBQyxzQ0FBc0MsQ0FBQztnQkFDbkQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDaEQ7dVdBTVUsSUFBSTtrQkFBWixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLG9CQUFvQjtrQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRhcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBJZ29NYXAsXHJcbiAgRGF0YVNvdXJjZVNlcnZpY2UsXHJcbiAgTGF5ZXJTZXJ2aWNlLFxyXG4gIEZlYXR1cmUsXHJcbiAgbW92ZVRvT2xGZWF0dXJlcyxcclxuICBGZWF0dXJlTW90aW9uLFxyXG4gIENsdXN0ZXJEYXRhU291cmNlLFxyXG4gIGZlYXR1cmVUb09sLFxyXG4gIERhdGFTb3VyY2UsXHJcbiAgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMsXHJcbiAgU3BhdGlhbEZpbHRlclNlcnZpY2UsXHJcbiAgU3BhdGlhbEZpbHRlclR5cGUsXHJcbiAgU3BhdGlhbEZpbHRlckl0ZW1UeXBlLFxyXG4gIFNwYXRpYWxGaWx0ZXJRdWVyeVR5cGUsXHJcbiAgU3BhdGlhbEZpbHRlclRoZW1hdGljLFxyXG4gIExheWVyLFxyXG4gIGNyZWF0ZU92ZXJsYXlNYXJrZXJTdHlsZSxcclxuICBFeHBvcnRPcHRpb25zLFxyXG4gIE1lYXN1cmVMZW5ndGhVbml0XHJcbn0gZnJvbSAnQGlnbzIvZ2VvJztcclxuaW1wb3J0IHsgRW50aXR5U3RvcmUsIFRvb2xDb21wb25lbnQgfSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgb2xGb3JtYXRHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcclxuaW1wb3J0IG9sU291cmNlVmVjdG9yIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xyXG5pbXBvcnQgb2xTb3VyY2VDbHVzdGVyIGZyb20gJ29sL3NvdXJjZS9DbHVzdGVyJztcclxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vLi4vbWFwL21hcC5zdGF0ZSc7XHJcbmltcG9ydCB7IEltcG9ydEV4cG9ydE1vZGUsIEltcG9ydEV4cG9ydFN0YXRlIH0gZnJvbSAnLi8uLi8uLi9pbXBvcnQtZXhwb3J0L2ltcG9ydC1leHBvcnQuc3RhdGUnO1xyXG5pbXBvcnQgKiBhcyBvbHN0eWxlIGZyb20gJ29sL3N0eWxlJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UsIExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5pbXBvcnQgeyBUb29sU3RhdGUgfSBmcm9tICcuLi8uLi90b29sL3Rvb2wuc3RhdGUnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2VTdGF0ZSB9IGZyb20gJy4uLy4uL3dvcmtzcGFjZS93b3Jrc3BhY2Uuc3RhdGUnO1xyXG5cclxuLyoqXHJcbiAqIFRvb2wgdG8gYXBwbHkgc3BhdGlhbCBmaWx0ZXJcclxuICovXHJcbkBUb29sQ29tcG9uZW50KHtcclxuICBuYW1lOiAnc3BhdGlhbEZpbHRlcicsXHJcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMuc3BhdGlhbEZpbHRlcicsXHJcbiAgaWNvbjogJ3NlbGVjdGlvbi1tYXJrZXInXHJcbn0pXHJcbi8qKlxyXG4gKiBTcGF0aWFsIEZpbHRlciBUeXBlXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1zcGF0aWFsLWZpbHRlci10b29sJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3BhdGlhbC1maWx0ZXItdG9vbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3BhdGlhbC1maWx0ZXItdG9vbC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTcGF0aWFsRmlsdGVyVG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBnZXQgbWFwKCk6IElnb01hcCB7XHJcbiAgICByZXR1cm4gdGhpcy5tYXBTdGF0ZS5tYXA7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSB0eXBlOiBTcGF0aWFsRmlsdGVyVHlwZTtcclxuICBASW5wdXQoKSBpdGVtVHlwZTogU3BhdGlhbEZpbHRlckl0ZW1UeXBlID0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLkFkZHJlc3M7XHJcbiAgQElucHV0KCkgZnJlZWhhbmREcmF3SXNBY3RpdmU6IGJvb2xlYW47XHJcblxyXG4gIHB1YmxpYyBsYXllcnM6IExheWVyW10gPSBbXTtcclxuICBwdWJsaWMgYWN0aXZlTGF5ZXJzOiBMYXllcltdID0gW107XHJcblxyXG4gIHB1YmxpYyBxdWVyeVR5cGU6IFNwYXRpYWxGaWx0ZXJRdWVyeVR5cGU7XHJcbiAgcHVibGljIHRoZW1hdGljczogU3BhdGlhbEZpbHRlclRoZW1hdGljW107XHJcbiAgcHVibGljIHpvbmU6IEZlYXR1cmU7XHJcbiAgcHVibGljIHpvbmVXaXRoQnVmZmVyOiBGZWF0dXJlO1xyXG4gIHB1YmxpYyBidWZmZXIgPSAwO1xyXG5cclxuICBwdWJsaWMgaXRlcmF0b3IgPSAxO1xyXG5cclxuICBwdWJsaWMgc2VsZWN0ZWRGZWF0dXJlJDogQmVoYXZpb3JTdWJqZWN0PEZlYXR1cmU+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChcclxuICAgIHVuZGVmaW5lZFxyXG4gICk7XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0ID0gbmV3IG9sRm9ybWF0R2VvSlNPTigpO1xyXG5cclxuICBwdWJsaWMgc3RvcmU6IEVudGl0eVN0b3JlPEZlYXR1cmU+ID0gbmV3IEVudGl0eVN0b3JlPEZlYXR1cmU+KFtdKTsgLy8gU3RvcmUgdG8gcHJpbnQgcmVzdWx0cyBhdCB0aGUgZW5kXHJcblxyXG4gIHB1YmxpYyBzcGF0aWFsTGlzdFN0b3JlOiBFbnRpdHlTdG9yZTxGZWF0dXJlPiA9IG5ldyBFbnRpdHlTdG9yZTxGZWF0dXJlPihbXSk7XHJcblxyXG4gIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyB0aGVtYXRpY0xlbmd0aCA9IDA7XHJcblxyXG4gIHB1YmxpYyBtZWFzdXJlVW5pdDogTWVhc3VyZUxlbmd0aFVuaXQgPSBNZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnM7XHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbWF0SWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXHJcbiAgICBwcml2YXRlIHNwYXRpYWxGaWx0ZXJTZXJ2aWNlOiBTcGF0aWFsRmlsdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0YVNvdXJjZVNlcnZpY2U6IERhdGFTb3VyY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYXllclNlcnZpY2U6IExheWVyU2VydmljZSxcclxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbXBvcnRFeHBvcnRTdGF0ZTogSW1wb3J0RXhwb3J0U3RhdGUsXHJcbiAgICBwcml2YXRlIHRvb2xTdGF0ZTogVG9vbFN0YXRlLFxyXG4gICAgcHJpdmF0ZSB3b3Jrc3BhY2VTdGF0ZTogV29ya3NwYWNlU3RhdGUsXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubWFwLmxheWVycykge1xyXG4gICAgICBpZiAobGF5ZXIudGl0bGUgJiYgbGF5ZXIudGl0bGUuaW5jbHVkZXModGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5zcGF0aWFsRmlsdGVyJykpKSB7XHJcbiAgICAgICAgdGhpcy5sYXllcnMucHVzaChsYXllcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGdldE91dHB1dFR5cGUoZXZlbnQ6IFNwYXRpYWxGaWx0ZXJUeXBlKSB7XHJcbiAgICB0aGlzLnR5cGUgPSBldmVudDtcclxuICAgIHRoaXMucXVlcnlUeXBlID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3V0cHV0UXVlcnlUeXBlKGV2ZW50OiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlKSB7XHJcbiAgICB0aGlzLnF1ZXJ5VHlwZSA9IGV2ZW50O1xyXG4gICAgaWYgKHRoaXMucXVlcnlUeXBlKSB7XHJcbiAgICAgIHRoaXMubG9hZEZpbHRlckxpc3QoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGl2YXRlRXhwb3J0VG9vbCgpIHtcclxuICAgIGNvbnN0IGlkcyA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVycykge1xyXG4gICAgICBpZHMucHVzaChsYXllci5pZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNldE1vZGUoSW1wb3J0RXhwb3J0TW9kZS5leHBvcnQpO1xyXG4gICAgdGhpcy5pbXBvcnRFeHBvcnRTdGF0ZS5zZXRzRXhwb3J0T3B0aW9ucyh7IGxheWVyczogaWRzIH0gYXMgRXhwb3J0T3B0aW9ucyk7XHJcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnaW1wb3J0RXhwb3J0Jyk7XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZVdvcmtzcGFjZSgpIHtcclxuICAgIGxldCBsYXllclRvT3BlbldrcztcclxuICAgIHRoaXMud29ya3NwYWNlU3RhdGUuc3RvcmUuZW50aXRpZXMkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuYWN0aXZlTGF5ZXJzLmxlbmd0aCAmJiB0aGlzLndvcmtzcGFjZVN0YXRlLnN0b3JlLmFsbCgpLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBpZiAodGhpcy5pdGVtVHlwZSA9PT0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLlRoZW1hdGljcykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRoZW1hdGljIG9mIHRoaXMudGhlbWF0aWNzKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGVtYXRpYy56ZXJvUmVzdWx0cykge1xyXG4gICAgICAgICAgICAgICAgbGF5ZXJUb09wZW5Xa3MgPSB0aGlzLmFjdGl2ZUxheWVycy5maW5kKGxheWVyID0+IGxheWVyLnRpdGxlLmluY2x1ZGVzKHRoZW1hdGljLm5hbWUgKyAnICcgKyB0aGlzLml0ZXJhdG9yLnRvU3RyaW5nKCkpKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCB0aXRsZSA9ICdBZHJlc3NlcyAnICsgdGhpcy5pdGVyYXRvci50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUxheWVycy5mb3JFYWNoKChsYXllcikgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChsYXllci50aXRsZS5pbmNsdWRlcyh0aXRsZSkpIHtcclxuICAgICAgICAgICAgICAgIGxheWVyVG9PcGVuV2tzID0gbGF5ZXI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChsYXllclRvT3Blbldrcykge1xyXG4gICAgICAgICAgdGhpcy53b3Jrc3BhY2VTdGF0ZS53b3Jrc3BhY2VQYW5lbEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMud29ya3NwYWNlU3RhdGUuc2V0QWN0aXZlV29ya3NwYWNlQnlJZChsYXllclRvT3Blbldrcy5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZEZpbHRlckxpc3QoKSB7XHJcbiAgICB0aGlzLnNwYXRpYWxGaWx0ZXJTZXJ2aWNlXHJcbiAgICAgIC5sb2FkRmlsdGVyTGlzdCh0aGlzLnF1ZXJ5VHlwZSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcclxuICAgICAgLnN1YnNjcmliZSgoZmVhdHVyZXM6IEZlYXR1cmVbXSkgPT4ge1xyXG4gICAgICAgIGZlYXR1cmVzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgIGlmIChhLnByb3BlcnRpZXMubm9tIDwgYi5wcm9wZXJ0aWVzLm5vbSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoYS5wcm9wZXJ0aWVzLm5vbSA+IGIucHJvcGVydGllcy5ub20pIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNwYXRpYWxMaXN0U3RvcmUuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLnNwYXRpYWxMaXN0U3RvcmUubG9hZChmZWF0dXJlcyk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3V0cHV0VG9nZ2xlU2VhcmNoKCkge1xyXG4gICAgdGhpcy5sb2FkVGhlbWF0aWNzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRPdXRwdXRDbGVhclNlYXJjaCgpIHtcclxuICAgIHRoaXMuem9uZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMucXVlcnlUeXBlID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJNYXAoKSB7XHJcbiAgICB0aGlzLm1hcC5yZW1vdmVMYXllcnModGhpcy5sYXllcnMpO1xyXG4gICAgdGhpcy5sYXllcnMgPSBbXTtcclxuICAgIHRoaXMuYWN0aXZlTGF5ZXJzID0gW107XHJcbiAgICB0aGlzLnRoZW1hdGljTGVuZ3RoID0gMDtcclxuICAgIHRoaXMuaXRlcmF0b3IgPSAxO1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUHJlZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnpvbmUgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMucXVlcnlUeXBlID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkVGhlbWF0aWNzKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCB6ZXJvUmVzdWx0cyA9IHRydWU7XHJcbiAgICBsZXQgdGhlbWF0aWNzO1xyXG4gICAgaWYgKHRoaXMuYnVmZmVyID09PSAwIHx8IHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUG9pbnQpIHtcclxuICAgICAgdGhpcy50cnlBZGRGZWF0dXJlc1RvTWFwKFt0aGlzLnpvbmVdKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLml0ZW1UeXBlICE9PSBTcGF0aWFsRmlsdGVySXRlbVR5cGUuVGhlbWF0aWNzKSB7XHJcbiAgICAgIGNvbnN0IHRoZW1lOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMgPSB7XHJcbiAgICAgICAgbmFtZTogJydcclxuICAgICAgfTtcclxuICAgICAgdGhlbWF0aWNzID0gW3RoZW1lXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoZW1hdGljcyA9IHRoaXMudGhlbWF0aWNzO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubWVhc3VyZVVuaXQgPT09IE1lYXN1cmVMZW5ndGhVbml0LktpbG9tZXRlcnMgJiYgdGhpcy50eXBlICE9PSBTcGF0aWFsRmlsdGVyVHlwZS5Qb2ludCkge1xyXG4gICAgICB0aGlzLmJ1ZmZlciA9IHRoaXMuYnVmZmVyICogMTAwMDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlBvbHlnb24pIHtcclxuICAgICAgdGhpcy5idWZmZXIgPSAwOyAvLyB0byBhdm9pZCBidWZmZXIgZW50ZXIgYSBzZWNvbmQgdGltZSBpbiB0ZXJyQVBJXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb2JzZXJ2YWJsZXMkOiBPYnNlcnZhYmxlPEZlYXR1cmVbXT5bXSA9IFtdO1xyXG4gICAgdGhlbWF0aWNzLmZvckVhY2godGhlbWF0aWMgPT4ge1xyXG4gICAgICBvYnNlcnZhYmxlcyQucHVzaChcclxuICAgICAgICB0aGlzLnNwYXRpYWxGaWx0ZXJTZXJ2aWNlXHJcbiAgICAgICAgICAubG9hZEZpbHRlckl0ZW0oXHJcbiAgICAgICAgICAgIHRoaXMuem9uZSxcclxuICAgICAgICAgICAgdGhpcy5pdGVtVHlwZSxcclxuICAgICAgICAgICAgdGhpcy5xdWVyeVR5cGUsXHJcbiAgICAgICAgICAgIHRoZW1hdGljLFxyXG4gICAgICAgICAgICB0aGlzLmJ1ZmZlclxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgoZmVhdHVyZXM6IEZlYXR1cmVbXSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RvcmUuaW5zZXJ0TWFueShmZWF0dXJlcyk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZXNQb2ludDogRmVhdHVyZVtdID0gW107XHJcbiAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZXNMaW5lUG9seTogRmVhdHVyZVtdID0gW107XHJcbiAgICAgICAgICAgICAgbGV0IGlkUG9pbnQ7XHJcbiAgICAgICAgICAgICAgbGV0IGlkTGluZVBvbHk7XHJcbiAgICAgICAgICAgICAgZmVhdHVyZXMuZm9yRWFjaChmZWF0dXJlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2ludCcpIHtcclxuICAgICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLmxvbmdpdHVkZSA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF07XHJcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllcy5sYXRpdHVkZSA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV07XHJcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmVzUG9pbnQucHVzaChmZWF0dXJlKTtcclxuICAgICAgICAgICAgICAgICAgaWRQb2ludCA9IGZlYXR1cmUubWV0YS5pZDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmVzTGluZVBvbHkucHVzaChmZWF0dXJlKTtcclxuICAgICAgICAgICAgICAgICAgaWRMaW5lUG9seSA9IGZlYXR1cmUubWV0YS5pZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy50cnlBZGRQb2ludFRvTWFwKGZlYXR1cmVzUG9pbnQsIGlkUG9pbnQpO1xyXG4gICAgICAgICAgICAgIHRoaXMudHJ5QWRkTGF5ZXJUb01hcChmZWF0dXJlc0xpbmVQb2x5LCBpZExpbmVQb2x5KTtcclxuICAgICAgICAgICAgICBpZiAoZmVhdHVyZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB6ZXJvUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50aGVtYXRpY0xlbmd0aCArPSAxO1xyXG4gICAgICAgICAgICAgICAgdGhlbWF0aWMuemVyb1Jlc3VsdHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGVtYXRpYy56ZXJvUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAoZmVhdHVyZXMubGVuZ3RoID49IDEwMDAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFsZXJ0KFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICAgICAgICAgICAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLm1heFNpemVBbGVydCdcclxuICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci53YXJuaW5nJ1xyXG4gICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICB7IHRpbWVPdXQ6IDEwMDAwIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMkKS5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBpZiAoemVyb1Jlc3VsdHMpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFsZXJ0KFxyXG4gICAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuemVyb1Jlc3VsdHMnXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIud2FybmluZydcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICB7IHRpbWVPdXQ6IDEwMDAwIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uWm9uZUNoYW5nZShmZWF0dXJlOiBGZWF0dXJlLCBidWZmZXI/OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnpvbmUgPSBmZWF0dXJlO1xyXG4gICAgaWYgKGZlYXR1cmUpIHtcclxuICAgICAgYnVmZmVyID8gdGhpcy50cnlBZGRGZWF0dXJlc1RvTWFwKFtmZWF0dXJlXSwgdHJ1ZSkgOiB0aGlzLnRyeUFkZEZlYXR1cmVzVG9NYXAoW2ZlYXR1cmVdKTtcclxuICAgICAgdGhpcy56b29tVG9GZWF0dXJlRXh0ZW50KGZlYXR1cmUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJ5IHRvIGFkZCB6b25lIGZlYXR1cmUgdG8gdGhlIG1hcCBvdmVybGF5XHJcbiAgICovXHJcbiAgcHVibGljIHRyeUFkZEZlYXR1cmVzVG9NYXAoZmVhdHVyZXM6IEZlYXR1cmVbXSwgYnVmZmVyPzogYm9vbGVhbikge1xyXG4gICAgbGV0IGkgPSAxO1xyXG4gICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzKSB7XHJcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlByZWRlZmluZWQpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzKSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGxheWVyLm9wdGlvbnMuX2ludGVybmFsICYmXHJcbiAgICAgICAgICAgIGxheWVyLm9wdGlvbnMuX2ludGVybmFsLmNvZGUgPT09IGZlYXR1cmUucHJvcGVydGllcy5jb2RlICYmXHJcbiAgICAgICAgICAgICFidWZmZXJcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBpZiAoIWxheWVyLnRpdGxlPy5zdGFydHNXaXRoKCdab25lJykpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubGF5ZXJzLmluZGV4T2YobGF5ZXIpO1xyXG4gICAgICAgICAgICAgIHRoaXMubGF5ZXJzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGxheWVyLnRpdGxlPy5zdGFydHNXaXRoKCdab25lJykpIHtcclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVMYXllcnMgPSBbXTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmxheWVycy5pbmRleE9mKGxheWVyKTtcclxuICAgICAgICAgICAgdGhpcy5sYXllcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgdGhpcy5tYXAucmVtb3ZlTGF5ZXIobGF5ZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoYnVmZmVyKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMuYWN0aXZlTGF5ZXJzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUxheWVycy5sZW5ndGggPT09IDEgJiYgbGF5ZXIudGl0bGU/LnN0YXJ0c1dpdGgoJ1pvbmUnKSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5sYXllcnMuaW5kZXhPZihsYXllcik7XHJcbiAgICAgICAgICAgICAgdGhpcy5sYXllcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgICB0aGlzLm1hcC5yZW1vdmVMYXllcihsYXllcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hY3RpdmVMYXllcnMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzKSB7XHJcbiAgICAgICAgaWYgKGxheWVyLnRpdGxlPy5zdGFydHNXaXRoKCdab25lJykpIHtcclxuICAgICAgICAgIGkrKztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZVxyXG4gICAgICAgIC5jcmVhdGVBc3luY0RhdGFTb3VyY2Uoe1xyXG4gICAgICAgICAgdHlwZTogJ3ZlY3RvcicsXHJcbiAgICAgICAgICBxdWVyeWFibGU6IHRydWVcclxuICAgICAgICB9IGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zKVxyXG4gICAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoZGF0YVNvdXJjZTogRGF0YVNvdXJjZSkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgb2xMYXllciA9IHRoaXMubGF5ZXJTZXJ2aWNlLmNyZWF0ZUxheWVyKHtcclxuICAgICAgICAgICAgdGl0bGU6ICgnWm9uZSAnICsgaSArICcgLSAnICsgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5zcGF0aWFsRmlsdGVyJ1xyXG4gICAgICAgICAgICApKSBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgIHdvcmtzcGFjZTogeyBlbmFibGVkOiB0cnVlIH0sXHJcbiAgICAgICAgICAgIF9pbnRlcm5hbDoge1xyXG4gICAgICAgICAgICAgIGNvZGU6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlByZWRlZmluZWRcclxuICAgICAgICAgICAgICAgICAgPyBmZWF0dXJlLnByb3BlcnRpZXMuY29kZVxyXG4gICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzb3VyY2U6IGRhdGFTb3VyY2UsXHJcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXHJcbiAgICAgICAgICAgIHN0eWxlOiAoX2ZlYXR1cmUsIHJlc29sdXRpb24pID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IChmZWF0dXJlc1swXSBhcyBhbnkpLmNvb3JkaW5hdGVzO1xyXG4gICAgICAgICAgICAgIHJldHVybiBuZXcgb2xzdHlsZS5TdHlsZSh7XHJcbiAgICAgICAgICAgICAgICBpbWFnZTogbmV3IG9sc3R5bGUuQ2lyY2xlKHtcclxuICAgICAgICAgICAgICAgICAgcmFkaXVzOiBjb29yZGluYXRlc1xyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5idWZmZXIgL1xyXG4gICAgICAgICAgICAgICAgICAgICAgTWF0aC5jb3MoKE1hdGguUEkgLyAxODApICogY29vcmRpbmF0ZXNbMV0pIC9cclxuICAgICAgICAgICAgICAgICAgICAgIHJlc29sdXRpb25cclxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgZmlsbDogbmV3IG9sc3R5bGUuRmlsbCh7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDIwMCwgMjAwLCAyMCwgMC4yKSdcclxuICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHtcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMSxcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ29yYW5nZSdcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgICAgICAgICAgICB3aWR0aDogMSxcclxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdvcmFuZ2UnXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xyXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjAwLCAyMDAsIDIwLCAwLjIpJ1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBjb25zdCBmZWF0dXJlc09sID0gZmVhdHVyZXMubWFwKGYgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gZmVhdHVyZVRvT2woZiwgdGhpcy5tYXAucHJvamVjdGlvbik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmICh0aGlzLnR5cGUgIT09IFNwYXRpYWxGaWx0ZXJUeXBlLlByZWRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgdHlwZSA9IHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUG9pbnQgPyAnQ2VyY2xlJyA6ICdQb2x5Z29uZSc7XHJcbiAgICAgICAgICAgIGZlYXR1cmVzT2xbMF0uc2V0KCdub20nLCAnWm9uZScsIHRydWUpO1xyXG4gICAgICAgICAgICBmZWF0dXJlc09sWzBdLnNldCgndHlwZScsIHR5cGUsIHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3Qgb2wgPSBkYXRhU291cmNlLm9sIGFzIG9sU291cmNlVmVjdG9yPE9sR2VvbWV0cnk+IHwgb2xTb3VyY2VDbHVzdGVyO1xyXG4gICAgICAgICAgb2wuYWRkRmVhdHVyZXMoZmVhdHVyZXNPbCk7XHJcbiAgICAgICAgICB0aGlzLm1hcC5hZGRMYXllcihvbExheWVyKTtcclxuICAgICAgICAgIHRoaXMubGF5ZXJzLnB1c2gob2xMYXllcik7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZUxheWVycy5wdXNoKG9sTGF5ZXIpO1xyXG4gICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcnkgdG8gYWRkIHBvaW50IGZlYXR1cmVzIHRvIHRoZSBtYXBcclxuICAgKiBOZWNlc3NhcnkgdG8gY3JlYXRlIGNsdXN0ZXJzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0cnlBZGRQb2ludFRvTWFwKGZlYXR1cmVzOiBGZWF0dXJlW10sIGlkKSB7XHJcbiAgICBsZXQgaSA9IDE7XHJcbiAgICBpZiAoZmVhdHVyZXMubGVuZ3RoKSB7XHJcbiAgICAgIGlmICh0aGlzLm1hcCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgdGhpcy5sYXllcnMpIHtcclxuICAgICAgICBpZiAobGF5ZXIudGl0bGU/LnN0YXJ0c1dpdGgoZmVhdHVyZXNbMF0ubWV0YS50aXRsZSkpIHtcclxuICAgICAgICAgIGkrKztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZVxyXG4gICAgICAgIC5jcmVhdGVBc3luY0RhdGFTb3VyY2Uoe1xyXG4gICAgICAgICAgdHlwZTogJ2NsdXN0ZXInLFxyXG4gICAgICAgICAgaWQsXHJcbiAgICAgICAgICBxdWVyeWFibGU6IHRydWUsXHJcbiAgICAgICAgICBkaXN0YW5jZTogMTIwLFxyXG4gICAgICAgICAgbWV0YToge1xyXG4gICAgICAgICAgICB0aXRsZTogJ0NsdXN0ZXInXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBhcyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucylcclxuICAgICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGRhdGFTb3VyY2U6IENsdXN0ZXJEYXRhU291cmNlKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpY29uID0gZmVhdHVyZXNbMF0ubWV0YS5pY29uO1xyXG4gICAgICAgICAgbGV0IHN0eWxlOiBvbHN0eWxlLlN0eWxlO1xyXG4gICAgICAgICAgaWYgKCFpY29uKSB7XHJcbiAgICAgICAgICAgIHN0eWxlID0gY3JlYXRlT3ZlcmxheU1hcmtlclN0eWxlKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzdHlsZSA9IHRoaXMuY3JlYXRlU3ZnSWNvbihpY29uKSB8fCBjcmVhdGVPdmVybGF5TWFya2VyU3R5bGUoKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBvbExheWVyID0gdGhpcy5sYXllclNlcnZpY2UuY3JlYXRlTGF5ZXIoe1xyXG4gICAgICAgICAgICB0aXRsZTogKGZlYXR1cmVzWzBdLm1ldGEudGl0bGUgKyAnICcgKyBpICsgJyAtICcgKyB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICAgICAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLnNwYXRpYWxGaWx0ZXInXHJcbiAgICAgICAgICAgICkpIGFzIHN0cmluZyxcclxuICAgICAgICAgICAgc291cmNlOiBkYXRhU291cmNlLFxyXG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBzdHlsZVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgY29uc3QgZmVhdHVyZXNPbCA9IGZlYXR1cmVzLm1hcChmZWF0dXJlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGZlYXR1cmVUb09sKGZlYXR1cmUsIHRoaXMubWFwLnByb2plY3Rpb24pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBjb25zdCBvbCA9IGRhdGFTb3VyY2Uub2wgYXMgb2xTb3VyY2VDbHVzdGVyO1xyXG4gICAgICAgICAgb2wuZ2V0U291cmNlKCkuYWRkRmVhdHVyZXMoZmVhdHVyZXNPbCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5sYXllcnMuZmluZChsYXllciA9PiBsYXllci5pZCA9PT0gb2xMYXllci5pZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5tYXAucmVtb3ZlTGF5ZXIoXHJcbiAgICAgICAgICAgICAgdGhpcy5sYXllcnMuZmluZChsYXllciA9PiBsYXllci5pZCA9PT0gb2xMYXllci5pZClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaSA9IGkgLSAxO1xyXG4gICAgICAgICAgICBvbExheWVyLnRpdGxlID0gKGZlYXR1cmVzWzBdLm1ldGEudGl0bGUgKyAnICcgKyBpICsgJyAtICcgKyB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICAgICAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLnNwYXRpYWxGaWx0ZXInXHJcbiAgICAgICAgICAgICkpIGFzIHN0cmluZztcclxuICAgICAgICAgICAgb2xMYXllci5vcHRpb25zLnRpdGxlID0gb2xMYXllci50aXRsZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaXRlcmF0b3IgPSBpO1xyXG4gICAgICAgICAgdGhpcy5tYXAuYWRkTGF5ZXIob2xMYXllcik7XHJcbiAgICAgICAgICB0aGlzLmxheWVycy5wdXNoKG9sTGF5ZXIpO1xyXG4gICAgICAgICAgdGhpcy5wdXNoTGF5ZXIob2xMYXllcik7XHJcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlU3ZnSWNvbihpY29uKTogb2xzdHlsZS5TdHlsZSB7XHJcbiAgICBsZXQgc3R5bGU6IG9sc3R5bGUuU3R5bGU7XHJcbiAgICB0aGlzLm1hdEljb25SZWdpc3RyeS5nZXROYW1lZFN2Z0ljb24oaWNvbikuc3Vic2NyaWJlKHN2Z09iaiA9PiB7XHJcbiAgICAgIGNvbnN0IHhtbFNlcmlhbGl6ZXIgPSBuZXcgWE1MU2VyaWFsaXplcigpO1xyXG4gICAgICBzdmdPYmouc2V0QXR0cmlidXRlKCd3aWR0aCcsICczMCcpO1xyXG4gICAgICBzdmdPYmouc2V0QXR0cmlidXRlKCdoZWlnaHQnLCAnMzAnKTtcclxuICAgICAgc3ZnT2JqLnNldEF0dHJpYnV0ZSgnZmlsbCcsICdyZ2JhKDAsIDEyOCwgMjU1KScpO1xyXG4gICAgICBzdmdPYmouc2V0QXR0cmlidXRlKCdzdHJva2UnLCAnd2hpdGUnKTtcclxuICAgICAgY29uc3Qgc3ZnID0geG1sU2VyaWFsaXplci5zZXJpYWxpemVUb1N0cmluZyhzdmdPYmopO1xyXG4gICAgICBzdHlsZSA9IG5ldyBvbHN0eWxlLlN0eWxlKHtcclxuICAgICAgICBpbWFnZTogbmV3IG9sc3R5bGUuSWNvbih7XHJcbiAgICAgICAgICBzcmM6ICdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwnICsgc3ZnXHJcbiAgICAgICAgfSlcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBzdHlsZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVHJ5IHRvIGFkZCBsaW5lIG9yIHBvbHlnb24gZmVhdHVyZXMgdG8gdGhlIG1hcFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdHJ5QWRkTGF5ZXJUb01hcChmZWF0dXJlczogRmVhdHVyZVtdLCBpZCkge1xyXG4gICAgbGV0IGkgPSAxO1xyXG4gICAgaWYgKGZlYXR1cmVzLmxlbmd0aCkge1xyXG4gICAgICBpZiAodGhpcy5tYXAgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzKSB7XHJcbiAgICAgICAgaWYgKGxheWVyLnRpdGxlPy5zdGFydHNXaXRoKGZlYXR1cmVzWzBdLm1ldGEudGl0bGUpKSB7XHJcbiAgICAgICAgICBpKys7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZVNlcnZpY2VcclxuICAgICAgICAuY3JlYXRlQXN5bmNEYXRhU291cmNlKHtcclxuICAgICAgICAgIHR5cGU6ICd2ZWN0b3InLFxyXG4gICAgICAgICAgaWQsXHJcbiAgICAgICAgICBxdWVyeWFibGU6IHRydWVcclxuICAgICAgICB9IGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zKVxyXG4gICAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoZGF0YVNvdXJjZTogRGF0YVNvdXJjZSkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgb2xMYXllciA9IHRoaXMubGF5ZXJTZXJ2aWNlLmNyZWF0ZUxheWVyKHtcclxuICAgICAgICAgICAgdGl0bGU6IChmZWF0dXJlc1swXS5tZXRhLnRpdGxlICsgJyAnICsgaSArICcgLSAnICsgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5zcGF0aWFsRmlsdGVyJ1xyXG4gICAgICAgICAgICApKSBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgIHNvdXJjZTogZGF0YVNvdXJjZSxcclxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBjb25zdCBmZWF0dXJlc09sID0gZmVhdHVyZXMubWFwKGZlYXR1cmUgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gZmVhdHVyZVRvT2woZmVhdHVyZSwgdGhpcy5tYXAucHJvamVjdGlvbik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGNvbnN0IG9sID0gZGF0YVNvdXJjZS5vbCBhcyBvbFNvdXJjZVZlY3RvcjxPbEdlb21ldHJ5PjtcclxuICAgICAgICAgIG9sLmFkZEZlYXR1cmVzKGZlYXR1cmVzT2wpO1xyXG4gICAgICAgICAgaWYgKHRoaXMubGF5ZXJzLmZpbmQobGF5ZXIgPT4gbGF5ZXIuaWQgPT09IG9sTGF5ZXIuaWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWFwLnJlbW92ZUxheWVyKFxyXG4gICAgICAgICAgICAgIHRoaXMubGF5ZXJzLmZpbmQobGF5ZXIgPT4gbGF5ZXIuaWQgPT09IG9sTGF5ZXIuaWQpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGkgPSBpIC0gMTtcclxuICAgICAgICAgICAgb2xMYXllci50aXRsZSA9IChmZWF0dXJlc1swXS5tZXRhLnRpdGxlICsgJyAnICsgaSArICcgLSAnICsgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5zcGF0aWFsRmlsdGVyJ1xyXG4gICAgICAgICAgICApKSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgIG9sTGF5ZXIub3B0aW9ucy50aXRsZSA9IG9sTGF5ZXIudGl0bGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm1hcC5hZGRMYXllcihvbExheWVyKTtcclxuICAgICAgICAgIHRoaXMubGF5ZXJzLnB1c2gob2xMYXllcik7XHJcbiAgICAgICAgICB0aGlzLnB1c2hMYXllcihvbExheWVyKTtcclxuICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgem9vbVRvRmVhdHVyZUV4dGVudChmZWF0dXJlKSB7XHJcbiAgICBpZiAoZmVhdHVyZSkge1xyXG4gICAgICBjb25zdCBvbEZlYXR1cmUgPSB0aGlzLmZvcm1hdC5yZWFkRmVhdHVyZShmZWF0dXJlLCB7XHJcbiAgICAgICAgZGF0YVByb2plY3Rpb246IGZlYXR1cmUucHJvamVjdGlvbixcclxuICAgICAgICBmZWF0dXJlUHJvamVjdGlvbjogdGhpcy5tYXAucHJvamVjdGlvblxyXG4gICAgICB9KTtcclxuICAgICAgbW92ZVRvT2xGZWF0dXJlcyh0aGlzLm1hcCwgW29sRmVhdHVyZV0sIEZlYXR1cmVNb3Rpb24uWm9vbSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdXNoTGF5ZXIobGF5ZXIpIHtcclxuICAgIGZvciAoY29uc3QgbGF5IG9mIHRoaXMuYWN0aXZlTGF5ZXJzKSB7XHJcbiAgICAgIGlmIChsYXkuaWQgPT09IGxheWVyLmlkKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3RpdmVMYXllcnMucHVzaChsYXllcik7XHJcbiAgfVxyXG59XHJcbiIsIjxpZ28tcGFuZWw+XHJcbiAgPGlnby1zcGF0aWFsLWZpbHRlci10eXBlXHJcbiAgICBbc3RvcmVdPVwic3BhdGlhbExpc3RTdG9yZVwiXHJcbiAgICBbc2VsZWN0ZWRRdWVyeVR5cGVdPVwicXVlcnlUeXBlXCJcclxuICAgIFt6b25lXT1cInpvbmVcIlxyXG4gICAgW2xheWVyc109XCJhY3RpdmVMYXllcnNcIlxyXG4gICAgKGV2ZW50VHlwZSk9XCJnZXRPdXRwdXRUeXBlKCRldmVudClcIlxyXG4gICAgKGV2ZW50UXVlcnlUeXBlKT1cImdldE91dHB1dFF1ZXJ5VHlwZSgkZXZlbnQpXCJcclxuICAgICh6b25lQ2hhbmdlKT1cIm9uWm9uZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICh6b25lV2l0aEJ1ZmZlckNoYW5nZSk9XCJvblpvbmVDaGFuZ2UoJGV2ZW50LCB0cnVlKVwiXHJcbiAgICAoYnVmZmVyQ2hhbmdlKT1cImJ1ZmZlciA9ICRldmVudFwiXHJcbiAgICAobWVhc3VyZVVuaXRDaGFuZ2UpPVwibWVhc3VyZVVuaXQgPSAkZXZlbnRcIj5cclxuICA8L2lnby1zcGF0aWFsLWZpbHRlci10eXBlPlxyXG5cclxuICA8aWdvLXNwYXRpYWwtZmlsdGVyLWl0ZW1cclxuICAgIFt0eXBlXT1cInR5cGVcIlxyXG4gICAgW3F1ZXJ5VHlwZV09XCJxdWVyeVR5cGVcIlxyXG4gICAgW21hcF09XCJtYXBcIlxyXG4gICAgW3pvbmVdPVwiem9uZVwiXHJcbiAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgIFtzdG9yZV09XCJzdG9yZVwiXHJcbiAgICBbbGF5ZXJzXT1cImFjdGl2ZUxheWVyc1wiXHJcbiAgICBbYWxsTGF5ZXJzXT1cImxheWVyc1wiXHJcbiAgICBbdGhlbWF0aWNMZW5ndGhdPVwidGhlbWF0aWNMZW5ndGhcIlxyXG4gICAgKHJhZGl1c0V2ZW50KT1cImJ1ZmZlciA9ICRldmVudFwiXHJcbiAgICAoYnVmZmVyRXZlbnQpPVwiYnVmZmVyID0gJGV2ZW50XCJcclxuICAgIChtZWFzdXJlVW5pdENoYW5nZSk9XCJtZWFzdXJlVW5pdCA9ICRldmVudFwiXHJcbiAgICAoZnJlZWhhbmRDb250cm9sKT1cImZyZWVoYW5kRHJhd0lzQWN0aXZlID0gJGV2ZW50XCJcclxuICAgIChkcmF3Wm9uZUV2ZW50KT1cInpvbmUgPSAkZXZlbnRcIlxyXG4gICAgKHpvbmVXaXRoQnVmZmVyQ2hhbmdlKT1cIm9uWm9uZUNoYW5nZSgkZXZlbnQsIHRydWUpXCJcclxuICAgIChpdGVtVHlwZUNoYW5nZSk9XCJpdGVtVHlwZSA9ICRldmVudFwiXHJcbiAgICAodGhlbWF0aWNDaGFuZ2UpPVwidGhlbWF0aWNzID0gJGV2ZW50XCJcclxuICAgICh0b2dnbGVTZWFyY2gpPVwiZ2V0T3V0cHV0VG9nZ2xlU2VhcmNoKClcIlxyXG4gICAgKGNsZWFyQnV0dG9uRXZlbnQpPVwiY2xlYXJNYXAoKVwiXHJcbiAgICAoY2xlYXJTZWFyY2hFdmVudCk9XCJnZXRPdXRwdXRDbGVhclNlYXJjaCgpXCJcclxuICAgIChleHBvcnQpPVwiYWN0aXZhdGVFeHBvcnRUb29sKClcIlxyXG4gICAgKG9wZW5Xb3Jrc3BhY2UpPVwiYWN0aXZhdGVXb3Jrc3BhY2UoKVwiXHJcbiAgICA+XHJcbiAgPC9pZ28tc3BhdGlhbC1maWx0ZXItaXRlbT5cclxuPC9pZ28tcGFuZWw+XHJcblxyXG48aWdvLXBhbmVsPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZEZlYXR1cmUkIHwgYXN5bmMgYXMgZmVhdHVyZVwiPlxyXG4gICAgPGlnby1mZWF0dXJlLWRldGFpbHMgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiPjwvaWdvLWZlYXR1cmUtZGV0YWlscz5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9pZ28tcGFuZWw+Il19
544
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXItdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL2ZpbHRlci9zcGF0aWFsLWZpbHRlci10b29sL3NwYXRpYWwtZmlsdGVyLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9maWx0ZXIvc3BhdGlhbC1maWx0ZXItdG9vbC9zcGF0aWFsLWZpbHRlci10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFFaEgsT0FBTyxFQUFjLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUtMLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsV0FBVyxFQUlYLGlCQUFpQixFQUNqQixxQkFBcUIsRUFJckIsd0JBQXdCLEVBRXhCLGlCQUFpQixFQUNsQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxRCxPQUFPLGVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUloRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUIsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRyxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7SUNRbEMsNkJBQTBEO0lBQ3hELHlDQUErRDtJQUNqRSwwQkFBZTs7O0lBRFEsZUFBbUI7SUFBbkIsb0NBQW1C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LHlCQUFBLHNDQUFBO1FBMkJBLGVBQStCO1FBQS9CLGtFQUErQjs7QURlbkMsMEJBQTBCO0lBZHRDLGFBQWEsQ0FBQztRQUNiLElBQUksRUFBRSxlQUFlO1FBQ3JCLEtBQUssRUFBRSxxQ0FBcUM7UUFDNUMsSUFBSSxFQUFFLGtCQUFrQjtLQUN6QixDQUFDO0lBQ0Y7O09BRUc7R0FPVSwwQkFBMEIsQ0FnaUJ0QztTQWhpQlksMEJBQTBCO3VGQUExQiwwQkFBMEI7Y0FOdEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLFdBQVcsRUFBRSxzQ0FBc0M7Z0JBQ25ELFNBQVMsRUFBRSxDQUFDLHNDQUFzQyxDQUFDO2dCQUNuRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDt1V0FNVSxJQUFJO2tCQUFaLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csb0JBQW9CO2tCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZm9ya0pvaW4sIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQge1xyXG4gIElnb01hcCxcclxuICBEYXRhU291cmNlU2VydmljZSxcclxuICBMYXllclNlcnZpY2UsXHJcbiAgRmVhdHVyZSxcclxuICBtb3ZlVG9PbEZlYXR1cmVzLFxyXG4gIEZlYXR1cmVNb3Rpb24sXHJcbiAgQ2x1c3RlckRhdGFTb3VyY2UsXHJcbiAgZmVhdHVyZVRvT2wsXHJcbiAgRGF0YVNvdXJjZSxcclxuICBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucyxcclxuICBTcGF0aWFsRmlsdGVyU2VydmljZSxcclxuICBTcGF0aWFsRmlsdGVyVHlwZSxcclxuICBTcGF0aWFsRmlsdGVySXRlbVR5cGUsXHJcbiAgU3BhdGlhbEZpbHRlclF1ZXJ5VHlwZSxcclxuICBTcGF0aWFsRmlsdGVyVGhlbWF0aWMsXHJcbiAgTGF5ZXIsXHJcbiAgY3JlYXRlT3ZlcmxheU1hcmtlclN0eWxlLFxyXG4gIEV4cG9ydE9wdGlvbnMsXHJcbiAgTWVhc3VyZUxlbmd0aFVuaXRcclxufSBmcm9tICdAaWdvMi9nZW8nO1xyXG5pbXBvcnQgeyBFbnRpdHlTdG9yZSwgVG9vbENvbXBvbmVudCB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCBvbEZvcm1hdEdlb0pTT04gZnJvbSAnb2wvZm9ybWF0L0dlb0pTT04nO1xyXG5pbXBvcnQgb2xTb3VyY2VWZWN0b3IgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XHJcbmltcG9ydCBvbFNvdXJjZUNsdXN0ZXIgZnJvbSAnb2wvc291cmNlL0NsdXN0ZXInO1xyXG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLi8uLi9tYXAvbWFwLnN0YXRlJztcclxuaW1wb3J0IHsgSW1wb3J0RXhwb3J0TW9kZSwgSW1wb3J0RXhwb3J0U3RhdGUgfSBmcm9tICcuLy4uLy4uL2ltcG9ydC1leHBvcnQvaW1wb3J0LWV4cG9ydC5zdGF0ZSc7XHJcbmltcG9ydCAqIGFzIG9sc3R5bGUgZnJvbSAnb2wvc3R5bGUnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSwgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IFRvb2xTdGF0ZSB9IGZyb20gJy4uLy4uL3Rvb2wvdG9vbC5zdGF0ZSc7XHJcbmltcG9ydCB7IFdvcmtzcGFjZVN0YXRlIH0gZnJvbSAnLi4vLi4vd29ya3NwYWNlL3dvcmtzcGFjZS5zdGF0ZSc7XHJcbmltcG9ydCB7IEV2ZW50c0tleSB9IGZyb20gJ29sL2V2ZW50cyc7XHJcblxyXG4vKipcclxuICogVG9vbCB0byBhcHBseSBzcGF0aWFsIGZpbHRlclxyXG4gKi9cclxuQFRvb2xDb21wb25lbnQoe1xyXG4gIG5hbWU6ICdzcGF0aWFsRmlsdGVyJyxcclxuICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi50b29scy5zcGF0aWFsRmlsdGVyJyxcclxuICBpY29uOiAnc2VsZWN0aW9uLW1hcmtlcidcclxufSlcclxuLyoqXHJcbiAqIFNwYXRpYWwgRmlsdGVyIFR5cGVcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLXNwYXRpYWwtZmlsdGVyLXRvb2wnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zcGF0aWFsLWZpbHRlci10b29sLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zcGF0aWFsLWZpbHRlci10b29sLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFNwYXRpYWxGaWx0ZXJUb29sQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcclxuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHR5cGU6IFNwYXRpYWxGaWx0ZXJUeXBlO1xyXG4gIEBJbnB1dCgpIGl0ZW1UeXBlOiBTcGF0aWFsRmlsdGVySXRlbVR5cGUgPSBTcGF0aWFsRmlsdGVySXRlbVR5cGUuQWRkcmVzcztcclxuICBASW5wdXQoKSBmcmVlaGFuZERyYXdJc0FjdGl2ZTogYm9vbGVhbjtcclxuXHJcbiAgcHVibGljIGxheWVyczogTGF5ZXJbXSA9IFtdO1xyXG4gIHB1YmxpYyBhY3RpdmVMYXllcnM6IExheWVyW10gPSBbXTtcclxuXHJcbiAgcHVibGljIHF1ZXJ5VHlwZTogU3BhdGlhbEZpbHRlclF1ZXJ5VHlwZTtcclxuICBwdWJsaWMgdGhlbWF0aWNzOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWNbXTtcclxuICBwdWJsaWMgem9uZTogRmVhdHVyZTtcclxuICBwdWJsaWMgem9uZVdpdGhCdWZmZXI6IEZlYXR1cmU7XHJcbiAgcHVibGljIGJ1ZmZlciA9IDA7XHJcblxyXG4gIHB1YmxpYyBpdGVyYXRvciA9IDE7XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RlZEZlYXR1cmUkOiBCZWhhdmlvclN1YmplY3Q8RmVhdHVyZT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFxyXG4gICAgdW5kZWZpbmVkXHJcbiAgKTtcclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXQgPSBuZXcgb2xGb3JtYXRHZW9KU09OKCk7XHJcblxyXG4gIHB1YmxpYyBzdG9yZTogRW50aXR5U3RvcmU8RmVhdHVyZT4gPSBuZXcgRW50aXR5U3RvcmU8RmVhdHVyZT4oW10pOyAvLyBTdG9yZSB0byBwcmludCByZXN1bHRzIGF0IHRoZSBlbmRcclxuXHJcbiAgcHVibGljIHNwYXRpYWxMaXN0U3RvcmU6IEVudGl0eVN0b3JlPEZlYXR1cmU+ID0gbmV3IEVudGl0eVN0b3JlPEZlYXR1cmU+KFtdKTtcclxuXHJcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIHRoZW1hdGljTGVuZ3RoID0gMDtcclxuXHJcbiAgcHVibGljIG1lYXN1cmVVbml0OiBNZWFzdXJlTGVuZ3RoVW5pdCA9IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycztcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIHByaXZhdGUgbW92ZWVuZEtleTogRXZlbnRzS2V5O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbWF0SWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXHJcbiAgICBwcml2YXRlIHNwYXRpYWxGaWx0ZXJTZXJ2aWNlOiBTcGF0aWFsRmlsdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0YVNvdXJjZVNlcnZpY2U6IERhdGFTb3VyY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYXllclNlcnZpY2U6IExheWVyU2VydmljZSxcclxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbXBvcnRFeHBvcnRTdGF0ZTogSW1wb3J0RXhwb3J0U3RhdGUsXHJcbiAgICBwcml2YXRlIHRvb2xTdGF0ZTogVG9vbFN0YXRlLFxyXG4gICAgcHJpdmF0ZSB3b3Jrc3BhY2VTdGF0ZTogV29ya3NwYWNlU3RhdGUsXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubWFwLmxheWVycykge1xyXG4gICAgICBpZiAobGF5ZXIudGl0bGUgJiYgbGF5ZXIudGl0bGUuaW5jbHVkZXModGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5zcGF0aWFsRmlsdGVyJykpKSB7XHJcbiAgICAgICAgdGhpcy5sYXllcnMucHVzaChsYXllcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGdldE91dHB1dFR5cGUoZXZlbnQ6IFNwYXRpYWxGaWx0ZXJUeXBlKSB7XHJcbiAgICB0aGlzLnR5cGUgPSBldmVudDtcclxuICAgIHRoaXMucXVlcnlUeXBlID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3V0cHV0UXVlcnlUeXBlKGV2ZW50OiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlKSB7XHJcbiAgICB0aGlzLnF1ZXJ5VHlwZSA9IGV2ZW50O1xyXG4gICAgaWYgKHRoaXMucXVlcnlUeXBlKSB7XHJcbiAgICAgIHRoaXMubG9hZEZpbHRlckxpc3QoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGl2YXRlRXhwb3J0VG9vbCgpIHtcclxuICAgIGNvbnN0IGlkcyA9IFtdO1xyXG4gICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKCdeWm9uZSBcXFxcZCsnKTtcclxuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgdGhpcy5sYXllcnMpIHtcclxuICAgICAgaWYgKCFsYXllci50aXRsZS5tYXRjaChyZSkpIHtcclxuICAgICAgICBpZHMucHVzaChsYXllci5pZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0TW9kZShJbXBvcnRFeHBvcnRNb2RlLmV4cG9ydCk7XHJcbiAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNldHNFeHBvcnRPcHRpb25zKHsgbGF5ZXJzOiBpZHMgfSBhcyBFeHBvcnRPcHRpb25zKTtcclxuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdpbXBvcnRFeHBvcnQnKTtcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlV29ya3NwYWNlKHJlY29yZD8pIHtcclxuICAgIGxldCBsYXllclRvT3BlbldrcztcclxuICAgIHRoaXMud29ya3NwYWNlU3RhdGUuc3RvcmUuZW50aXRpZXMkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgaWYgKCFyZWNvcmQgJiYgdGhpcy5hY3RpdmVMYXllcnMubGVuZ3RoICYmIHRoaXMud29ya3NwYWNlU3RhdGUuc3RvcmUuYWxsKCkubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGlmICh0aGlzLml0ZW1UeXBlID09PSBTcGF0aWFsRmlsdGVySXRlbVR5cGUuVGhlbWF0aWNzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgdGhlbWF0aWMgb2YgdGhpcy50aGVtYXRpY3MpIHtcclxuICAgICAgICAgICAgICBpZiAoIXRoZW1hdGljLnplcm9SZXN1bHRzKSB7XHJcbiAgICAgICAgICAgICAgICBsYXllclRvT3BlbldrcyA9IHRoaXMuYWN0aXZlTGF5ZXJzLmZpbmQobGF5ZXIgPT4gbGF5ZXIudGl0bGUuaW5jbHVkZXModGhlbWF0aWMubmFtZSArICcgJyArIHRoaXMuaXRlcmF0b3IudG9TdHJpbmcoKSkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gJ0FkcmVzc2VzICcgKyB0aGlzLml0ZXJhdG9yLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTGF5ZXJzLmZvckVhY2goKGxheWVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGxheWVyLnRpdGxlLmluY2x1ZGVzKHRpdGxlKSkge1xyXG4gICAgICAgICAgICAgICAgbGF5ZXJUb09wZW5Xa3MgPSBsYXllcjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGxheWVyVG9PcGVuV2tzKSB7XHJcbiAgICAgICAgICB0aGlzLndvcmtzcGFjZVN0YXRlLndvcmtzcGFjZVBhbmVsRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy53b3Jrc3BhY2VTdGF0ZS5zZXRBY3RpdmVXb3Jrc3BhY2VCeUlkKGxheWVyVG9PcGVuV2tzLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkICYmIHRoaXMuYWN0aXZlTGF5ZXJzLmxlbmd0aCAmJiB0aGlzLndvcmtzcGFjZVN0YXRlLnN0b3JlLmFsbCgpLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdFdvcmtzcGFjZUVudGl0eShyZWNvcmQpO1xyXG4gICAgICAgIHRoaXMubW92ZWVuZEtleSA9IHRoaXMubWFwLm9sLm9uKCdtb3ZlZW5kJywgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RXb3Jrc3BhY2VFbnRpdHkocmVjb3JkKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbGVjdFdvcmtzcGFjZUVudGl0eShyZWNvcmQpIHtcclxuICAgIHRoaXMud29ya3NwYWNlU3RhdGUuc3RvcmUuYWxsKCkuZm9yRWFjaCh3b3Jrc3BhY2UgPT4ge1xyXG4gICAgICB3b3Jrc3BhY2UuZW50aXR5U3RvcmUuc3RhdGUudXBkYXRlQWxsKHtzZWxlY3RlZDogZmFsc2V9KTtcclxuICAgICAgaWYgKHdvcmtzcGFjZS50aXRsZS5pbmNsdWRlcyhyZWNvcmQuYWRkZWRbMF0ubWV0YS50aXRsZSkpIHtcclxuICAgICAgICB0aGlzLndvcmtzcGFjZVN0YXRlLnNldEFjdGl2ZVdvcmtzcGFjZUJ5SWQod29ya3NwYWNlLmlkKTtcclxuICAgICAgICB3b3Jrc3BhY2UuZW50aXR5U3RvcmUuc3RhdGUudXBkYXRlTWFueShyZWNvcmQuYWRkZWQsIHtzZWxlY3RlZDogdHJ1ZX0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZEZpbHRlckxpc3QoKSB7XHJcbiAgICB0aGlzLnNwYXRpYWxGaWx0ZXJTZXJ2aWNlXHJcbiAgICAgIC5sb2FkRmlsdGVyTGlzdCh0aGlzLnF1ZXJ5VHlwZSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcclxuICAgICAgLnN1YnNjcmliZSgoZmVhdHVyZXM6IEZlYXR1cmVbXSkgPT4ge1xyXG4gICAgICAgIGZlYXR1cmVzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgIGlmIChhLnByb3BlcnRpZXMubm9tIDwgYi5wcm9wZXJ0aWVzLm5vbSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoYS5wcm9wZXJ0aWVzLm5vbSA+IGIucHJvcGVydGllcy5ub20pIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNwYXRpYWxMaXN0U3RvcmUuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLnNwYXRpYWxMaXN0U3RvcmUubG9hZChmZWF0dXJlcyk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3V0cHV0VG9nZ2xlU2VhcmNoKCkge1xyXG4gICAgdGhpcy5sb2FkVGhlbWF0aWNzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRPdXRwdXRDbGVhclNlYXJjaCgpIHtcclxuICAgIHRoaXMuem9uZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMucXVlcnlUeXBlID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJNYXAoKSB7XHJcbiAgICB0aGlzLm1hcC5yZW1vdmVMYXllcnModGhpcy5sYXllcnMpO1xyXG4gICAgdGhpcy5sYXllcnMgPSBbXTtcclxuICAgIHRoaXMuYWN0aXZlTGF5ZXJzID0gW107XHJcbiAgICB0aGlzLnRoZW1hdGljTGVuZ3RoID0gMDtcclxuICAgIHRoaXMuaXRlcmF0b3IgPSAxO1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUHJlZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnpvbmUgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMucXVlcnlUeXBlID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkVGhlbWF0aWNzKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCB6ZXJvUmVzdWx0cyA9IHRydWU7XHJcbiAgICBsZXQgdGhlbWF0aWNzO1xyXG4gICAgaWYgKHRoaXMuYnVmZmVyID09PSAwIHx8IHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUG9pbnQpIHtcclxuICAgICAgdGhpcy50cnlBZGRGZWF0dXJlc1RvTWFwKFt0aGlzLnpvbmVdKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLml0ZW1UeXBlICE9PSBTcGF0aWFsRmlsdGVySXRlbVR5cGUuVGhlbWF0aWNzKSB7XHJcbiAgICAgIGNvbnN0IHRoZW1lOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMgPSB7XHJcbiAgICAgICAgbmFtZTogJydcclxuICAgICAgfTtcclxuICAgICAgdGhlbWF0aWNzID0gW3RoZW1lXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoZW1hdGljcyA9IHRoaXMudGhlbWF0aWNzO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubWVhc3VyZVVuaXQgPT09IE1lYXN1cmVMZW5ndGhVbml0LktpbG9tZXRlcnMgJiYgdGhpcy50eXBlICE9PSBTcGF0aWFsRmlsdGVyVHlwZS5Qb2ludCkge1xyXG4gICAgICB0aGlzLmJ1ZmZlciA9IHRoaXMuYnVmZmVyICogMTAwMDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlBvbHlnb24pIHtcclxuICAgICAgdGhpcy5idWZmZXIgPSAwOyAvLyB0byBhdm9pZCBidWZmZXIgZW50ZXIgYSBzZWNvbmQgdGltZSBpbiB0ZXJyQVBJXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb2JzZXJ2YWJsZXMkOiBPYnNlcnZhYmxlPEZlYXR1cmVbXT5bXSA9IFtdO1xyXG4gICAgdGhlbWF0aWNzLmZvckVhY2godGhlbWF0aWMgPT4ge1xyXG4gICAgICBvYnNlcnZhYmxlcyQucHVzaChcclxuICAgICAgICB0aGlzLnNwYXRpYWxGaWx0ZXJTZXJ2aWNlXHJcbiAgICAgICAgICAubG9hZEZpbHRlckl0ZW0oXHJcbiAgICAgICAgICAgIHRoaXMuem9uZSxcclxuICAgICAgICAgICAgdGhpcy5pdGVtVHlwZSxcclxuICAgICAgICAgICAgdGhpcy5xdWVyeVR5cGUsXHJcbiAgICAgICAgICAgIHRoZW1hdGljLFxyXG4gICAgICAgICAgICB0aGlzLmJ1ZmZlclxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCgoZmVhdHVyZXM6IEZlYXR1cmVbXSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RvcmUuaW5zZXJ0TWFueShmZWF0dXJlcyk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZXNQb2ludDogRmVhdHVyZVtdID0gW107XHJcbiAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZXNMaW5lUG9seTogRmVhdHVyZVtdID0gW107XHJcbiAgICAgICAgICAgICAgbGV0IGlkUG9pbnQ7XHJcbiAgICAgICAgICAgICAgbGV0IGlkTGluZVBvbHk7XHJcbiAgICAgICAgICAgICAgZmVhdHVyZXMuZm9yRWFjaChmZWF0dXJlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2ludCcpIHtcclxuICAgICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLmxvbmdpdHVkZSA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF07XHJcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllcy5sYXRpdHVkZSA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV07XHJcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmVzUG9pbnQucHVzaChmZWF0dXJlKTtcclxuICAgICAgICAgICAgICAgICAgaWRQb2ludCA9IGZlYXR1cmUubWV0YS5pZDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmVzTGluZVBvbHkucHVzaChmZWF0dXJlKTtcclxuICAgICAgICAgICAgICAgICAgaWRMaW5lUG9seSA9IGZlYXR1cmUubWV0YS5pZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy50cnlBZGRQb2ludFRvTWFwKGZlYXR1cmVzUG9pbnQsIGlkUG9pbnQpO1xyXG4gICAgICAgICAgICAgIHRoaXMudHJ5QWRkTGF5ZXJUb01hcChmZWF0dXJlc0xpbmVQb2x5LCBpZExpbmVQb2x5KTtcclxuICAgICAgICAgICAgICBpZiAoZmVhdHVyZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB6ZXJvUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50aGVtYXRpY0xlbmd0aCArPSAxO1xyXG4gICAgICAgICAgICAgICAgdGhlbWF0aWMuemVyb1Jlc3VsdHMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGVtYXRpYy56ZXJvUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAoZmVhdHVyZXMubGVuZ3RoID49IDEwMDAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFsZXJ0KFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICAgICAgICAgICAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLm1heFNpemVBbGVydCdcclxuICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci53YXJuaW5nJ1xyXG4gICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICB7IHRpbWVPdXQ6IDEwMDAwIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMkKS5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBpZiAoemVyb1Jlc3VsdHMpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFsZXJ0KFxyXG4gICAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuemVyb1Jlc3VsdHMnXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIud2FybmluZydcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICB7IHRpbWVPdXQ6IDEwMDAwIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uWm9uZUNoYW5nZShmZWF0dXJlOiBGZWF0dXJlLCBidWZmZXI/OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnpvbmUgPSBmZWF0dXJlO1xyXG4gICAgaWYgKGZlYXR1cmUpIHtcclxuICAgICAgYnVmZmVyID8gdGhpcy50cnlBZGRGZWF0dXJlc1RvTWFwKFtmZWF0dXJlXSwgdHJ1ZSkgOiB0aGlzLnRyeUFkZEZlYXR1cmVzVG9NYXAoW2ZlYXR1cmVdKTtcclxuICAgICAgdGhpcy56b29tVG9GZWF0dXJlRXh0ZW50KGZlYXR1cmUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJ5IHRvIGFkZCB6b25lIGZlYXR1cmUgdG8gdGhlIG1hcCBvdmVybGF5XHJcbiAgICovXHJcbiAgcHVibGljIHRyeUFkZEZlYXR1cmVzVG9NYXAoZmVhdHVyZXM6IEZlYXR1cmVbXSwgYnVmZmVyPzogYm9vbGVhbikge1xyXG4gICAgbGV0IGkgPSAxO1xyXG4gICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzKSB7XHJcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlByZWRlZmluZWQpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzKSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGxheWVyLm9wdGlvbnMuX2ludGVybmFsICYmXHJcbiAgICAgICAgICAgIGxheWVyLm9wdGlvbnMuX2ludGVybmFsLmNvZGUgPT09IGZlYXR1cmUucHJvcGVydGllcy5jb2RlICYmXHJcbiAgICAgICAgICAgICFidWZmZXJcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBpZiAoIWxheWVyLnRpdGxlPy5zdGFydHNXaXRoKCdab25lJykpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubGF5ZXJzLmluZGV4T2YobGF5ZXIpO1xyXG4gICAgICAgICAgICAgIHRoaXMubGF5ZXJzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGxheWVyLnRpdGxlPy5zdGFydHNXaXRoKCdab25lJykpIHtcclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVMYXllcnMgPSBbXTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmxheWVycy5pbmRleE9mKGxheWVyKTtcclxuICAgICAgICAgICAgdGhpcy5sYXllcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgdGhpcy5tYXAucmVtb3ZlTGF5ZXIobGF5ZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoYnVmZmVyKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMuYWN0aXZlTGF5ZXJzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUxheWVycy5sZW5ndGggPT09IDEgJiYgbGF5ZXIudGl0bGU/LnN0YXJ0c1dpdGgoJ1pvbmUnKSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5sYXllcnMuaW5kZXhPZihsYXllcik7XHJcbiAgICAgICAgICAgICAgdGhpcy5sYXllcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgICB0aGlzLm1hcC5yZW1vdmVMYXllcihsYXllcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hY3RpdmVMYXllcnMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMubGF5ZXJzKSB7XHJcbiAgICAgICAgaWYgKGxheWVyLnRpdGxlPy5zdGFydHNXaXRoKCdab25lJykpIHtcclxuICAgICAgICAgIGkrKztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZVxyXG4gICAgICAgIC5jcmVhdGVBc3luY0RhdGFTb3VyY2Uoe1xyXG4gICAgICAgICAgdHlwZTogJ3ZlY3RvcicsXHJcbiAgICAgICAgICBxdWVyeWFibGU6IHRydWVcclxuICAgICAgICB9IGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zKVxyXG4gICAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoZGF0YVNvdXJjZTogRGF0YVNvdXJjZSkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgb2xMYXllciA9IHRoaXMubGF5ZXJTZXJ2aWNlLmNyZWF0ZUxheWVyKHtcclxuICAgICAgICAgICAgaXNJZ29JbnRlcm5hbExheWVyOiB0cnVlLFxyXG4gICAgICAgICAgICB0aXRsZTogKCdab25lICcgKyBpICsgJyAtICcgKyB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICAgICAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLnNwYXRpYWxGaWx0ZXInXHJcbiAgICAgICAgICAgICkpIGFzIHN0cmluZyxcclxuICAgICAgICAgICAgd29ya3NwYWNlOiB7IGVuYWJsZWQ6IHRydWUgfSxcclxuICAgICAgICAgICAgX2ludGVybmFsOiB7XHJcbiAgICAgICAgICAgICAgY29kZTpcclxuICAgICAgICAgICAgICAgIHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUHJlZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgICA/IGZlYXR1cmUucHJvcGVydGllcy5jb2RlXHJcbiAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNvdXJjZTogZGF0YVNvdXJjZSxcclxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgc3R5bGU6IChfZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gKGZlYXR1cmVzWzBdIGFzIGFueSkuY29vcmRpbmF0ZXM7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBvbHN0eWxlLlN0eWxlKHtcclxuICAgICAgICAgICAgICAgIGltYWdlOiBuZXcgb2xzdHlsZS5DaXJjbGUoe1xyXG4gICAgICAgICAgICAgICAgICByYWRpdXM6IGNvb3JkaW5hdGVzXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmJ1ZmZlciAvXHJcbiAgICAgICAgICAgICAgICAgICAgICBNYXRoLmNvcygoTWF0aC5QSSAvIDE4MCkgKiBjb29yZGluYXRlc1sxXSkgL1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmVzb2x1dGlvblxyXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjAwLCAyMDAsIDIwLCAwLjIpJ1xyXG4gICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnb3JhbmdlJ1xyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XHJcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAxLFxyXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ29yYW5nZSdcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgZmlsbDogbmV3IG9sc3R5bGUuRmlsbCh7XHJcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiYSgyMDAsIDIwMCwgMjAsIDAuMiknXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGNvbnN0IGZlYXR1cmVzT2wgPSBmZWF0dXJlcy5tYXAoZiA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBmZWF0dXJlVG9PbChmLCB0aGlzLm1hcC5wcm9qZWN0aW9uKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKHRoaXMudHlwZSAhPT0gU3BhdGlhbEZpbHRlclR5cGUuUHJlZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zdCB0eXBlID0gdGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5Qb2ludCA/ICdDZXJjbGUnIDogJ1BvbHlnb25lJztcclxuICAgICAgICAgICAgZmVhdHVyZXNPbFswXS5zZXQoJ25vbScsICdab25lJywgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGZlYXR1cmVzT2xbMF0uc2V0KCd0eXBlJywgdHlwZSwgdHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBvbCA9IGRhdGFTb3VyY2Uub2wgYXMgb2xTb3VyY2VWZWN0b3I8T2xHZW9tZXRyeT4gfCBvbFNvdXJjZUNsdXN0ZXI7XHJcbiAgICAgICAgICBvbC5hZGRGZWF0dXJlcyhmZWF0dXJlc09sKTtcclxuICAgICAgICAgIHRoaXMubWFwLmFkZExheWVyKG9sTGF5ZXIpO1xyXG4gICAgICAgICAgdGhpcy5sYXllcnMucHVzaChvbExheWVyKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlTGF5ZXJzLnB1c2gob2xMYXllcik7XHJcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyeSB0byBhZGQgcG9pbnQgZmVhdHVyZXMgdG8gdGhlIG1hcFxyXG4gICAqIE5lY2Vzc2FyeSB0byBjcmVhdGUgY2x1c3RlcnNcclxuICAgKi9cclxuICBwcml2YXRlIHRyeUFkZFBvaW50VG9NYXAoZmVhdHVyZXM6IEZlYXR1cmVbXSwgaWQpIHtcclxuICAgIGxldCBpID0gMTtcclxuICAgIGlmIChmZWF0dXJlcy5sZW5ndGgpIHtcclxuICAgICAgaWYgKHRoaXMubWFwID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVycykge1xyXG4gICAgICAgIGlmIChsYXllci50aXRsZT8uc3RhcnRzV2l0aChmZWF0dXJlc1swXS5tZXRhLnRpdGxlKSkge1xyXG4gICAgICAgICAgaSsrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlXHJcbiAgICAgICAgLmNyZWF0ZUFzeW5jRGF0YVNvdXJjZSh7XHJcbiAgICAgICAgICB0eXBlOiAnY2x1c3RlcicsXHJcbiAgICAgICAgICBpZCxcclxuICAgICAgICAgIHF1ZXJ5YWJsZTogdHJ1ZSxcclxuICAgICAgICAgIGRpc3RhbmNlOiAxMjAsXHJcbiAgICAgICAgICBtZXRhOiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnQ2x1c3RlcidcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zKVxyXG4gICAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoZGF0YVNvdXJjZTogQ2x1c3RlckRhdGFTb3VyY2UpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGljb24gPSBmZWF0dXJlc1swXS5tZXRhLmljb247XHJcbiAgICAgICAgICBsZXQgc3R5bGU6IG9sc3R5bGUuU3R5bGU7XHJcbiAgICAgICAgICBpZiAoIWljb24pIHtcclxuICAgICAgICAgICAgc3R5bGUgPSBjcmVhdGVPdmVybGF5TWFya2VyU3R5bGUoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHN0eWxlID0gdGhpcy5jcmVhdGVTdmdJY29uKGljb24pIHx8IGNyZWF0ZU92ZXJsYXlNYXJrZXJTdHlsZSgpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnN0IG9sTGF5ZXIgPSB0aGlzLmxheWVyU2VydmljZS5jcmVhdGVMYXllcih7XHJcbiAgICAgICAgICAgIGlzSWdvSW50ZXJuYWxMYXllcjogdHJ1ZSxcclxuICAgICAgICAgICAgdGl0bGU6IChmZWF0dXJlc1swXS5tZXRhLnRpdGxlICsgJyAnICsgaSArICcgLSAnICsgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5zcGF0aWFsRmlsdGVyJ1xyXG4gICAgICAgICAgICApKSBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgIHNvdXJjZTogZGF0YVNvdXJjZSxcclxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgc3R5bGVcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGZlYXR1cmVzT2wgPSBmZWF0dXJlcy5tYXAoZmVhdHVyZSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBmZWF0dXJlVG9PbChmZWF0dXJlLCB0aGlzLm1hcC5wcm9qZWN0aW9uKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgY29uc3Qgb2wgPSBkYXRhU291cmNlLm9sIGFzIG9sU291cmNlQ2x1c3RlcjtcclxuICAgICAgICAgIG9sLmdldFNvdXJjZSgpLmFkZEZlYXR1cmVzKGZlYXR1cmVzT2wpO1xyXG4gICAgICAgICAgaWYgKHRoaXMubGF5ZXJzLmZpbmQobGF5ZXIgPT4gbGF5ZXIuaWQgPT09IG9sTGF5ZXIuaWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWFwLnJlbW92ZUxheWVyKFxyXG4gICAgICAgICAgICAgIHRoaXMubGF5ZXJzLmZpbmQobGF5ZXIgPT4gbGF5ZXIuaWQgPT09IG9sTGF5ZXIuaWQpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGkgPSBpIC0gMTtcclxuICAgICAgICAgICAgb2xMYXllci50aXRsZSA9IChmZWF0dXJlc1swXS5tZXRhLnRpdGxlICsgJyAnICsgaSArICcgLSAnICsgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5zcGF0aWFsRmlsdGVyJ1xyXG4gICAgICAgICAgICApKSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgIG9sTGF5ZXIub3B0aW9ucy50aXRsZSA9IG9sTGF5ZXIudGl0bGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLml0ZXJhdG9yID0gaTtcclxuICAgICAgICAgIHRoaXMubWFwLmFkZExheWVyKG9sTGF5ZXIpO1xyXG4gICAgICAgICAgdGhpcy5sYXllcnMucHVzaChvbExheWVyKTtcclxuICAgICAgICAgIHRoaXMucHVzaExheWVyKG9sTGF5ZXIpO1xyXG4gICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVN2Z0ljb24oaWNvbik6IG9sc3R5bGUuU3R5bGUge1xyXG4gICAgbGV0IHN0eWxlOiBvbHN0eWxlLlN0eWxlO1xyXG4gICAgdGhpcy5tYXRJY29uUmVnaXN0cnkuZ2V0TmFtZWRTdmdJY29uKGljb24pLnN1YnNjcmliZShzdmdPYmogPT4ge1xyXG4gICAgICBjb25zdCB4bWxTZXJpYWxpemVyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKTtcclxuICAgICAgc3ZnT2JqLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCAnMzAnKTtcclxuICAgICAgc3ZnT2JqLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgJzMwJyk7XHJcbiAgICAgIHN2Z09iai5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAncmdiYSgwLCAxMjgsIDI1NSknKTtcclxuICAgICAgc3ZnT2JqLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgJ3doaXRlJyk7XHJcbiAgICAgIGNvbnN0IHN2ZyA9IHhtbFNlcmlhbGl6ZXIuc2VyaWFsaXplVG9TdHJpbmcoc3ZnT2JqKTtcclxuICAgICAgc3R5bGUgPSBuZXcgb2xzdHlsZS5TdHlsZSh7XHJcbiAgICAgICAgaW1hZ2U6IG5ldyBvbHN0eWxlLkljb24oe1xyXG4gICAgICAgICAgc3JjOiAnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsJyArIHN2Z1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc3R5bGU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFRyeSB0byBhZGQgbGluZSBvciBwb2x5Z29uIGZlYXR1cmVzIHRvIHRoZSBtYXBcclxuICAgKi9cclxuICBwcml2YXRlIHRyeUFkZExheWVyVG9NYXAoZmVhdHVyZXM6IEZlYXR1cmVbXSwgaWQpIHtcclxuICAgIGxldCBpID0gMTtcclxuICAgIGlmIChmZWF0dXJlcy5sZW5ndGgpIHtcclxuICAgICAgaWYgKHRoaXMubWFwID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmxheWVycykge1xyXG4gICAgICAgIGlmIChsYXllci50aXRsZT8uc3RhcnRzV2l0aChmZWF0dXJlc1swXS5tZXRhLnRpdGxlKSkge1xyXG4gICAgICAgICAgaSsrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlXHJcbiAgICAgICAgLmNyZWF0ZUFzeW5jRGF0YVNvdXJjZSh7XHJcbiAgICAgICAgICB0eXBlOiAndmVjdG9yJyxcclxuICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgcXVlcnlhYmxlOiB0cnVlXHJcbiAgICAgICAgfSBhcyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucylcclxuICAgICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGRhdGFTb3VyY2U6IERhdGFTb3VyY2UpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG9sTGF5ZXIgPSB0aGlzLmxheWVyU2VydmljZS5jcmVhdGVMYXllcih7XHJcbiAgICAgICAgICAgIGlzSWdvSW50ZXJuYWxMYXllcjogdHJ1ZSxcclxuICAgICAgICAgICAgdGl0bGU6IChmZWF0dXJlc1swXS5tZXRhLnRpdGxlICsgJyAnICsgaSArICcgLSAnICsgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5zcGF0aWFsRmlsdGVyJ1xyXG4gICAgICAgICAgICApKSBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgIHNvdXJjZTogZGF0YVNvdXJjZSxcclxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBjb25zdCBmZWF0dXJlc09sID0gZmVhdHVyZXMubWFwKGZlYXR1cmUgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gZmVhdHVyZVRvT2woZmVhdHVyZSwgdGhpcy5tYXAucHJvamVjdGlvbik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGNvbnN0IG9sID0gZGF0YVNvdXJjZS5vbCBhcyBvbFNvdXJjZVZlY3RvcjxPbEdlb21ldHJ5PjtcclxuICAgICAgICAgIG9sLmFkZEZlYXR1cmVzKGZlYXR1cmVzT2wpO1xyXG4gICAgICAgICAgaWYgKHRoaXMubGF5ZXJzLmZpbmQobGF5ZXIgPT4gbGF5ZXIuaWQgPT09IG9sTGF5ZXIuaWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWFwLnJlbW92ZUxheWVyKFxyXG4gICAgICAgICAgICAgIHRoaXMubGF5ZXJzLmZpbmQobGF5ZXIgPT4gbGF5ZXIuaWQgPT09IG9sTGF5ZXIuaWQpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGkgPSBpIC0gMTtcclxuICAgICAgICAgICAgb2xMYXllci50aXRsZSA9IChmZWF0dXJlc1swXS5tZXRhLnRpdGxlICsgJyAnICsgaSArICcgLSAnICsgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5zcGF0aWFsRmlsdGVyJ1xyXG4gICAgICAgICAgICApKSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgIG9sTGF5ZXIub3B0aW9ucy50aXRsZSA9IG9sTGF5ZXIudGl0bGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm1hcC5hZGRMYXllcihvbExheWVyKTtcclxuICAgICAgICAgIHRoaXMubGF5ZXJzLnB1c2gob2xMYXllcik7XHJcbiAgICAgICAgICB0aGlzLnB1c2hMYXllcihvbExheWVyKTtcclxuICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgem9vbVRvRmVhdHVyZUV4dGVudChmZWF0dXJlKSB7XHJcbiAgICBpZiAoZmVhdHVyZSkge1xyXG4gICAgICBjb25zdCBvbEZlYXR1cmUgPSB0aGlzLmZvcm1hdC5yZWFkRmVhdHVyZShmZWF0dXJlLCB7XHJcbiAgICAgICAgZGF0YVByb2plY3Rpb246IGZlYXR1cmUucHJvamVjdGlvbixcclxuICAgICAgICBmZWF0dXJlUHJvamVjdGlvbjogdGhpcy5tYXAucHJvamVjdGlvblxyXG4gICAgICB9KTtcclxuICAgICAgbW92ZVRvT2xGZWF0dXJlcyh0aGlzLm1hcCwgW29sRmVhdHVyZV0sIEZlYXR1cmVNb3Rpb24uWm9vbSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdXNoTGF5ZXIobGF5ZXIpIHtcclxuICAgIGZvciAoY29uc3QgbGF5IG9mIHRoaXMuYWN0aXZlTGF5ZXJzKSB7XHJcbiAgICAgIGlmIChsYXkuaWQgPT09IGxheWVyLmlkKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3RpdmVMYXllcnMucHVzaChsYXllcik7XHJcbiAgfVxyXG59XHJcbiIsIjxpZ28tcGFuZWw+XHJcbiAgPGlnby1zcGF0aWFsLWZpbHRlci10eXBlXHJcbiAgICBbc3RvcmVdPVwic3BhdGlhbExpc3RTdG9yZVwiXHJcbiAgICBbc2VsZWN0ZWRRdWVyeVR5cGVdPVwicXVlcnlUeXBlXCJcclxuICAgIFt6b25lXT1cInpvbmVcIlxyXG4gICAgW2xheWVyc109XCJhY3RpdmVMYXllcnNcIlxyXG4gICAgKGV2ZW50VHlwZSk9XCJnZXRPdXRwdXRUeXBlKCRldmVudClcIlxyXG4gICAgKGV2ZW50UXVlcnlUeXBlKT1cImdldE91dHB1dFF1ZXJ5VHlwZSgkZXZlbnQpXCJcclxuICAgICh6b25lQ2hhbmdlKT1cIm9uWm9uZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICh6b25lV2l0aEJ1ZmZlckNoYW5nZSk9XCJvblpvbmVDaGFuZ2UoJGV2ZW50LCB0cnVlKVwiXHJcbiAgICAoYnVmZmVyQ2hhbmdlKT1cImJ1ZmZlciA9ICRldmVudFwiXHJcbiAgICAobWVhc3VyZVVuaXRDaGFuZ2UpPVwibWVhc3VyZVVuaXQgPSAkZXZlbnRcIj5cclxuICA8L2lnby1zcGF0aWFsLWZpbHRlci10eXBlPlxyXG5cclxuICA8aWdvLXNwYXRpYWwtZmlsdGVyLWl0ZW1cclxuICAgIFt0eXBlXT1cInR5cGVcIlxyXG4gICAgW3F1ZXJ5VHlwZV09XCJxdWVyeVR5cGVcIlxyXG4gICAgW21hcF09XCJtYXBcIlxyXG4gICAgW3pvbmVdPVwiem9uZVwiXHJcbiAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgIFtzdG9yZV09XCJzdG9yZVwiXHJcbiAgICBbbGF5ZXJzXT1cImFjdGl2ZUxheWVyc1wiXHJcbiAgICBbYWxsTGF5ZXJzXT1cImxheWVyc1wiXHJcbiAgICBbdGhlbWF0aWNMZW5ndGhdPVwidGhlbWF0aWNMZW5ndGhcIlxyXG4gICAgKHJhZGl1c0V2ZW50KT1cImJ1ZmZlciA9ICRldmVudFwiXHJcbiAgICAoYnVmZmVyRXZlbnQpPVwiYnVmZmVyID0gJGV2ZW50XCJcclxuICAgIChtZWFzdXJlVW5pdENoYW5nZSk9XCJtZWFzdXJlVW5pdCA9ICRldmVudFwiXHJcbiAgICAoZnJlZWhhbmRDb250cm9sKT1cImZyZWVoYW5kRHJhd0lzQWN0aXZlID0gJGV2ZW50XCJcclxuICAgIChkcmF3Wm9uZUV2ZW50KT1cInpvbmUgPSAkZXZlbnRcIlxyXG4gICAgKHpvbmVXaXRoQnVmZmVyQ2hhbmdlKT1cIm9uWm9uZUNoYW5nZSgkZXZlbnQsIHRydWUpXCJcclxuICAgIChpdGVtVHlwZUNoYW5nZSk9XCJpdGVtVHlwZSA9ICRldmVudFwiXHJcbiAgICAodGhlbWF0aWNDaGFuZ2UpPVwidGhlbWF0aWNzID0gJGV2ZW50XCJcclxuICAgICh0b2dnbGVTZWFyY2gpPVwiZ2V0T3V0cHV0VG9nZ2xlU2VhcmNoKClcIlxyXG4gICAgKGNsZWFyQnV0dG9uRXZlbnQpPVwiY2xlYXJNYXAoKVwiXHJcbiAgICAoY2xlYXJTZWFyY2hFdmVudCk9XCJnZXRPdXRwdXRDbGVhclNlYXJjaCgpXCJcclxuICAgIChleHBvcnQpPVwiYWN0aXZhdGVFeHBvcnRUb29sKClcIlxyXG4gICAgKG9wZW5Xb3Jrc3BhY2UpPVwiYWN0aXZhdGVXb3Jrc3BhY2UoKVwiXHJcbiAgICAoZW50aXR5Q2hhbmdlKT1cImFjdGl2YXRlV29ya3NwYWNlKCRldmVudClcIj5cclxuICA8L2lnby1zcGF0aWFsLWZpbHRlci1pdGVtPlxyXG48L2lnby1wYW5lbD5cclxuXHJcbjxpZ28tcGFuZWw+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkRmVhdHVyZSQgfCBhc3luYyBhcyBmZWF0dXJlXCI+XHJcbiAgICA8aWdvLWZlYXR1cmUtZGV0YWlscyBbZmVhdHVyZV09XCJmZWF0dXJlXCI+PC9pZ28tZmVhdHVyZS1kZXRhaWxzPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2lnby1wYW5lbD4iXX0=