@loxia/mst-viewer 8.1.3-202511141109 → 8.1.3-202511141700
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.
|
@@ -47,4 +47,4 @@ export class EditorService {
|
|
|
47
47
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: EditorService, decorators: [{
|
|
48
48
|
type: Injectable
|
|
49
49
|
}], ctorParameters: () => [{ type: i1.SignaleringsBeeldManagerService }] });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvc2VydmljZXMvZWRpdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7QUFLeEMsTUFBTSxPQUFPLGFBQWE7SUFLdEIsWUFBb0IsK0JBQWdFO1FBQWhFLG9DQUErQixHQUEvQiwrQkFBK0IsQ0FBaUM7UUFDaEYsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxTQUFTLENBQUMsTUFBTTtRQUNaLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRXJCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCx3REFBd0Q7SUFDeEQsMkJBQTJCLENBQUMsd0JBQXdCO1FBQ2hELElBQUksQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsdUJBQXVCLENBQUMsUUFBZ0IsRUFBRSxJQUFpQztRQUN2RSxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFnQixFQUFFLEtBQWU7UUFDNUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELHNCQUFzQixDQUFDLElBQVksRUFBRSxRQUFnQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxnQkFBZ0I7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFTLE9BQU8sRUFBRSxPQUFPO1lBQzdFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQzs4R0FuRFEsYUFBYTtrSEFBYixhQUFhOzsyRkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZG9tZWluIH0gZnJvbSAnQGxveGlhL3JpandlZ2VuJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG8gfSBmcm9tICcuLi9yZXNvdXJjZXMvc2lnbmFsZXJpbmdzYmVlbGRpbmZvLnJlc291cmNlJztcbmltcG9ydCB7IFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NpZ25hbGVyaW5ncy1iZWVsZC1tYW5hZ2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRWRpdG9yU2VydmljZSB7XG4gICAgcHJpdmF0ZSBlZGl0b3I7XG4gICAgcHJpdmF0ZSByZXNvbHZlUmVhZHlQcm9taXNlO1xuICAgIHByaXZhdGUgcHJvbWlzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgc2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZTogU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSkge1xuICAgICAgICB0aGlzLmluaXRSZWFkeVByb21pc2UoKTtcbiAgICB9XG5cbiAgICAvLyBDYWxsZWQgZnJvbSBHV1Qgb25seSwgY2FuIGJlIHJlbW92ZWQgd2hlbiBHV1QgaXMgZ29uZVxuICAgIHNldEVkaXRvcihlZGl0b3IpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG5cbiAgICAgICAgdGhpcy5yZXNvbHZlUmVhZHlQcm9taXNlKCk7XG4gICAgfVxuXG4gICAgaXNSZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvbWlzZTtcbiAgICB9XG5cbiAgICAvLyBDYWxsZWQgZnJvbSBHV1Qgb25seSwgY2FuIGJlIHJlbW92ZWQgd2hlbiBHV1QgaXMgZ29uZVxuICAgIHNldFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlcihzaWduYWxlcmluZ3NCZWVsZE1hbmFnZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlLnNldChzaWduYWxlcmluZ3NCZWVsZE1hbmFnZXIpO1xuICAgIH1cblxuICAgIGxhYWRTaWduYWxlcmluZ3NiZWVsZGVuKGlhVmVyc2llOiBzdHJpbmcsIGR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IGxhYWRTaWduYWxlcmluZ3NiZWVsZGVuID0gdGhpcy5lZGl0b3IubGFhZFNpZ25hbGVyaW5nc2JlZWxkZW4oaWFWZXJzaWUsIGR0b3MpO1xuICAgICAgICByZXR1cm4gZnJvbShsYWFkU2lnbmFsZXJpbmdzYmVlbGRlbik7XG4gICAgfVxuXG4gICAgbGFhZFJvdXRlRmlsZXMoaWFWZXJzaWU6IHN0cmluZywgcHBsZ3M6IHN0cmluZ1tdKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yLmxhYWRSb3V0ZUZpbGVzKGlhVmVyc2llLCBwcGxncyk7XG4gICAgfVxuXG4gICAgZ2V0Umlqd2VncGxhbihwcGxnOiBzdHJpbmcpOiBkb21laW4uUmlqd2VncGxhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvci5nZXRSaWp3ZWdwbGFuKHBwbGcpO1xuICAgIH1cblxuICAgIGdldFZyaWplYmFhblJpandlZ3BsYW4ocHBsZzogc3RyaW5nLCB2YW5TcG9vcjogc3RyaW5nKTogZG9tZWluLlZyaWplYmFhblJpandlZ3BsYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3IuZ2V0VnJpamViYWFuUmlqd2VncGxhbihwcGxnLCB2YW5TcG9vcik7XG4gICAgfVxuXG4gICAgZ2V0Umlqd2VncGxhbm5lbigpOiBkb21laW4uUmlqd2VncGxhbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yLmdldFJpandlZ3BsYW5uZW4oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRSZWFkeVByb21pc2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICB0aGlzLnByb21pc2UgPSB0aGlzLnByb21pc2UgPT09IHVuZGVmaW5lZCA/
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvc2VydmljZXMvZWRpdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7QUFLeEMsTUFBTSxPQUFPLGFBQWE7SUFLdEIsWUFBb0IsK0JBQWdFO1FBQWhFLG9DQUErQixHQUEvQiwrQkFBK0IsQ0FBaUM7UUFDaEYsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxTQUFTLENBQUMsTUFBTTtRQUNaLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRXJCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCx3REFBd0Q7SUFDeEQsMkJBQTJCLENBQUMsd0JBQXdCO1FBQ2hELElBQUksQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsdUJBQXVCLENBQUMsUUFBZ0IsRUFBRSxJQUFpQztRQUN2RSxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFnQixFQUFFLEtBQWU7UUFDNUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELHNCQUFzQixDQUFDLElBQVksRUFBRSxRQUFnQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxnQkFBZ0I7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFTLE9BQU8sRUFBRSxPQUFPO1lBQzdFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQzs4R0FuRFEsYUFBYTtrSEFBYixhQUFhOzsyRkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZG9tZWluIH0gZnJvbSAnQGxveGlhL3JpandlZ2VuJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG8gfSBmcm9tICcuLi9yZXNvdXJjZXMvc2lnbmFsZXJpbmdzYmVlbGRpbmZvLnJlc291cmNlJztcbmltcG9ydCB7IFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NpZ25hbGVyaW5ncy1iZWVsZC1tYW5hZ2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRWRpdG9yU2VydmljZSB7XG4gICAgcHJpdmF0ZSBlZGl0b3I7XG4gICAgcHJpdmF0ZSByZXNvbHZlUmVhZHlQcm9taXNlO1xuICAgIHByaXZhdGUgcHJvbWlzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgc2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZTogU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSkge1xuICAgICAgICB0aGlzLmluaXRSZWFkeVByb21pc2UoKTtcbiAgICB9XG5cbiAgICAvLyBDYWxsZWQgZnJvbSBHV1Qgb25seSwgY2FuIGJlIHJlbW92ZWQgd2hlbiBHV1QgaXMgZ29uZVxuICAgIHNldEVkaXRvcihlZGl0b3IpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG5cbiAgICAgICAgdGhpcy5yZXNvbHZlUmVhZHlQcm9taXNlKCk7XG4gICAgfVxuXG4gICAgaXNSZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvbWlzZTtcbiAgICB9XG5cbiAgICAvLyBDYWxsZWQgZnJvbSBHV1Qgb25seSwgY2FuIGJlIHJlbW92ZWQgd2hlbiBHV1QgaXMgZ29uZVxuICAgIHNldFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlcihzaWduYWxlcmluZ3NCZWVsZE1hbmFnZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlLnNldChzaWduYWxlcmluZ3NCZWVsZE1hbmFnZXIpO1xuICAgIH1cblxuICAgIGxhYWRTaWduYWxlcmluZ3NiZWVsZGVuKGlhVmVyc2llOiBzdHJpbmcsIGR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IGxhYWRTaWduYWxlcmluZ3NiZWVsZGVuID0gdGhpcy5lZGl0b3IubGFhZFNpZ25hbGVyaW5nc2JlZWxkZW4oaWFWZXJzaWUsIGR0b3MpO1xuICAgICAgICByZXR1cm4gZnJvbShsYWFkU2lnbmFsZXJpbmdzYmVlbGRlbik7XG4gICAgfVxuXG4gICAgbGFhZFJvdXRlRmlsZXMoaWFWZXJzaWU6IHN0cmluZywgcHBsZ3M6IHN0cmluZ1tdKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yLmxhYWRSb3V0ZUZpbGVzKGlhVmVyc2llLCBwcGxncyk7XG4gICAgfVxuXG4gICAgZ2V0Umlqd2VncGxhbihwcGxnOiBzdHJpbmcpOiBkb21laW4uUmlqd2VncGxhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvci5nZXRSaWp3ZWdwbGFuKHBwbGcpO1xuICAgIH1cblxuICAgIGdldFZyaWplYmFhblJpandlZ3BsYW4ocHBsZzogc3RyaW5nLCB2YW5TcG9vcjogc3RyaW5nKTogZG9tZWluLlZyaWplYmFhblJpandlZ3BsYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3IuZ2V0VnJpamViYWFuUmlqd2VncGxhbihwcGxnLCB2YW5TcG9vcik7XG4gICAgfVxuXG4gICAgZ2V0Umlqd2VncGxhbm5lbigpOiBkb21laW4uUmlqd2VncGxhbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yLmdldFJpandlZ3BsYW5uZW4oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRSZWFkeVByb21pc2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICB0aGlzLnByb21pc2UgPSB0aGlzLnByb21pc2UgPT09IHVuZGVmaW5lZCA/IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIF9yZWplY3QpIHtcbiAgICAgICAgICAgIHRoYXQucmVzb2x2ZVJlYWR5UHJvbWlzZSA9IHJlc29sdmU7XG4gICAgICAgIH0pIDogdGhpcy5wcm9taXNlO1xuICAgIH1cbn1cblxuaW50ZXJmYWNlIEVkaXRvckFwaSB7XG4gICAgbGFhZFNpZ25hbGVyaW5nc2JlZWxkZW4oaWFWZXJzaWU6IHN0cmluZywgZHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdKTogUHJvbWlzZTx1bmtub3duPiB8IE9ic2VydmFibGU8dW5rbm93bj47XG4gICAgbGFhZFJvdXRlRmlsZXMoaWFWZXJzaWU6IHN0cmluZywgcHBsZ3M6IHN0cmluZ1tdKTogdW5rbm93bjtcbiAgICBnZXRSaWp3ZWdwbGFuKHBwbGc6IHN0cmluZyk6IGRvbWVpbi5SaWp3ZWdwbGFuO1xuICAgIGdldFZyaWplYmFhblJpandlZ3BsYW4ocHBsZzogc3RyaW5nLCB2YW5TcG9vcjogc3RyaW5nKTogZG9tZWluLlZyaWplYmFhblJpandlZ3BsYW47XG4gICAgZ2V0Umlqd2VncGxhbm5lbigpOiBkb21laW4uUmlqd2VncGxhbltdO1xufVxuIl19
|
|
@@ -59,11 +59,11 @@ export class LaadSignaleringsbeeldenEffect {
|
|
|
59
59
|
return this.sbiResource.laadSignaleringsbeeldInfo(this.createSignaleringsbeeldInfoQueryDto([rand.getPPLG(), otherPplg], storeState.iaVersie)).pipe(map(dtos => ({ dtos, storeState })));
|
|
60
60
|
}
|
|
61
61
|
loadSignaleringsbeelden({ dtos, storeState }) {
|
|
62
|
-
return this.editorService.laadSignaleringsbeelden(storeState.iaVersie.versie, dtos).pipe(map(svgDataUrls => ({ svgDataUrls, storeState, dtos })));
|
|
62
|
+
return this.editorService.laadSignaleringsbeelden(storeState.iaVersie.versie, dtos).pipe(map(svgDataUrls => ({ svgDataUrls, ritDelen: storeState.ritDelen, dtos })));
|
|
63
63
|
}
|
|
64
|
-
processSvgsAndUpdateRitdelen({ svgDataUrls,
|
|
64
|
+
processSvgsAndUpdateRitdelen({ svgDataUrls, ritDelen, dtos }) {
|
|
65
65
|
this.verwerkSvgs(svgDataUrls);
|
|
66
|
-
const nieuweRitdelen = this.updateRitdelen(
|
|
66
|
+
const nieuweRitdelen = this.updateRitdelen(ritDelen, dtos);
|
|
67
67
|
this.store.dispatch(MstActions.UpdateVisibleSignaleringsbeeldInfoDtos(dtos));
|
|
68
68
|
this.store.dispatch(RitdelenActions.updateRitDelen(nieuweRitdelen));
|
|
69
69
|
}
|
|
@@ -360,4 +360,4 @@ export class LaadSignaleringsbeeldenEffect {
|
|
|
360
360
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LaadSignaleringsbeeldenEffect, decorators: [{
|
|
361
361
|
type: Injectable
|
|
362
362
|
}], ctorParameters: () => [{ type: i1.Actions }, { type: i2.Store }, { type: i3.SignaleringsBeeldManagerService }, { type: i4.EditorService }, { type: i5.SignaleringsbeeldInfoResource }, { type: i6.ConnectorService }, { type: i7.MessagesService }] });
|
|
363
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFhZC1zaWduYWxlcmluZ3NiZWVsZGVuLmVmZmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9zdGF0ZS9lZmZlY3QvbGFhZC1zaWduYWxlcmluZ3NiZWVsZGVuLmVmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkUsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkYsT0FBTyxFQUFXLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFNcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sS0FBSyxNQUFNLGtCQUFrQixDQUFDO0FBQ3JDLE9BQU8sS0FBSyxVQUFVLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLG1DQUFtQyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkcsT0FBTyxLQUFLLGVBQWUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7O0FBb0IvRCxNQUFNLE9BQU8sNkJBQTZCO0lBSXRDLFlBQTZCLFFBQWlCLEVBQ2pCLEtBQTRCLEVBQzVCLCtCQUFnRSxFQUNoRSxhQUE0QixFQUM1QixXQUEwQyxFQUMxQyxnQkFBa0MsRUFDbEMsZUFBZ0M7UUFOaEMsYUFBUSxHQUFSLFFB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LENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVPLGNBQWMsQ0FBQyxRQUFtQjtRQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM1QyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO2dCQUMvQixPQUFPLENBQUMsQ0FBQztZQUNiLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNkLENBQUM7OEdBbmFRLDZCQUE2QjtrSEFBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUR6QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW14Vmlld2VyQ29tcG9uZW50LCBQb2ludCwgU3ZnSW5mbyB9IGZyb20gJ0Bsb3hpYS9pbXgtdmlld2VyJztcbmltcG9ydCB7IHNiYmxhZCB9IGZyb20gJ0Bsb3hpYS9yaWp3ZWdlbic7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9hdG9taWMtY29tcG9uZW50cy9zZXJ2aWNlcy9tZXNzYWdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFJpdGRlZWwsIFJpdGRlZWxaaWNodGJhYXJoZWlkIH0gZnJvbSAnLi4vLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBJbmZyYU1vZGVsIH0gZnJvbSAnLi4vLi4vb3B0aW1vJztcbmltcG9ydCB7IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG8sIFNpZ25hbGVyaW5nc2JlZWxkSW5mb1Jlc291cmNlIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3NpZ25hbGVyaW5nc2JlZWxkaW5mby5yZXNvdXJjZSc7XG5pbXBvcnQgeyBDb25uZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29ubmVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zaWduYWxlcmluZ3MtYmVlbGQtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VCdWlsZGVyIH0gZnJvbSAnLi4vLi4vdXRpbC9tZXNzYWdlLWJ1aWxkZXInO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xuaW1wb3J0ICogYXMgTXN0QWN0aW9ucyBmcm9tICcuLi9hY3Rpb25zL2FjdGlvbnMnO1xuaW1wb3J0IHsgU2V0U2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcywgU2V0VmlzaWJsZVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MgfSBmcm9tICcuLi9hY3Rpb25zL2FjdGlvbnMnO1xuaW1wb3J0ICogYXMgUml0ZGVsZW5BY3Rpb25zIGZyb20gJy4uL2FjdGlvbnMvcml0ZGVsZW4uYWN0aW9ucyc7XG5pbXBvcnQgeyBNc3RFZGl0b3JTdGF0ZSB9IGZyb20gJy4uL21zdC1lZGl0b3Itc3RhdGUnO1xuaW1wb3J0IFRvcG9sb2d5RWxlbWVudCA9IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnQ7XG5cbmludGVyZmFjZSBOYXZpZ2VlckJ1aXRlblJpdElucHV0IHtcbiAgICByYW5kOiBUb3BvbG9neUVsZW1lbnQ7XG4gICAgcmFuZFB1aWM6IHN0cmluZztcbiAgICBzdG9yZVN0YXRlOiBNc3RFZGl0b3JTdGF0ZTtcbiAgICBvdGhlclBwbGc/OiBzdHJpbmc7XG4gICAgZHRvcz86IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXTtcbiAgICBzdmdEYXRhVXJscz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgU2lnbmFsZXJpbmdzYmVlbGRJbmZvSW5wdXQge1xuICAgIGR0b3M/OiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW107XG4gICAgYWN0aWU6IGFueTtcbiAgICBzdG9yZVN0YXRlOiBNc3RFZGl0b3JTdGF0ZTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExhYWRTaWduYWxlcmluZ3NiZWVsZGVuRWZmZWN0IHtcblxuICAgIHByaXZhdGUgU1ZHX1BJWEVMX1JVSU1URSA9IDMwO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlOiBTdG9yZTxNc3RFZGl0b3JTdGF0ZT4sXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlOiBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHNiaVJlc291cmNlOiBTaWduYWxlcmluZ3NiZWVsZEluZm9SZXNvdXJjZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbm5lY3RvclNlcnZpY2U6IENvbm5lY3RvclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlc1NlcnZpY2U6IE1lc3NhZ2VzU2VydmljZSkge1xuICAgIH1cblxuICAgIHZlcndlcmtSaXRkZWxlbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoUml0ZGVsZW5BY3Rpb25zLnNldFJpdERlbGVuLCBSaXRkZWxlbkFjdGlvbnMubmF2aWdlZXIsIFJpdGRlbGVuQWN0aW9ucy5uYXZpZ2VlclZhbmFmKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZSksXG4gICAgICAgIG1hcCgoW2FjdGllLCBzdG9yZVN0YXRlXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNc3RBY3Rpb25zLlNldE9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkKGZhbHNlKSk7XG4gICAgICAgICAgICB0aGlzLnZlcndlcmtSaXRkZWxlbihhY3RpZSwgc3RvcmVTdGF0ZSk7XG4gICAgICAgIH0pKSwgeyBkaXNwYXRjaDogZmFsc2UgfVxuICAgICk7XG5cbiAgICBsYWFkRW5WZXJ3ZXJrU2lnbmFsZXJpbmdzYmVlbGRJbmZvJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShNc3RBY3Rpb25zLmxhYWRFblZlcndlcmtTaWduYWxlcmluZ3NiZWVsZEluZm8pLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlKSxcbiAgICAgICAgc3dpdGNoTWFwKChbYWN0aWUsIHN0b3JlU3RhdGVdKSA9PiB0aGlzLmhhbmRsZVNpZ25hbGVyaW5nc2JlZWxkSW5mbyh7YWN0aWUsIHN0b3JlU3RhdGV9KSlcbiAgICApLCB7IGRpc3BhdGNoOiBmYWxzZSB9KTtcblxuICAgIHByaXZhdGUgaGFuZGxlU2lnbmFsZXJpbmdzYmVlbGRJbmZvKHthY3RpZSwgc3RvcmVTdGF0ZX0gOiBTaWduYWxlcmluZ3NiZWVsZEluZm9JbnB1dCk6ICBPYnNlcnZhYmxlPElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zYmlSZXNvdXJjZS5sYWFkU2lnbmFsZXJpbmdzYmVlbGRJbmZvKHRoaXMuY3JlYXRlU2lnbmFsZXJpbmdzYmVlbGRJbmZvUXVlcnlEdG8oYWN0aWUucHBsZ3MsIHN0b3JlU3RhdGUuaWFWZXJzaWUpKS5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHRhcCgoZHRvcykgPT4gdGhpcy5wcm9jZXNzUmVzcG9uc2Uoe2R0b3MsIHN0b3JlU3RhdGUsIGFjdGllfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlc1NlcnZpY2Uuc2hvd01lc3NhZ2UoTWVzc2FnZUJ1aWxkZXIubmlldEdldm9uZGVuU0JJKGVycikpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1Jlc3BvbnNlKHsgZHRvcywgc3RvcmVTdGF0ZSwgYWN0aWUgfTogU2lnbmFsZXJpbmdzYmVlbGRJbmZvSW5wdXQpOiB2b2lkICB7XG4gICAgICAgIGlmIChkdG9zICYmIGR0b3MuZmlsdGVyKGR0byA9PiBkdG8ubWV0VmlzdWFsaXNhdGllKS5sZW5ndGggPiAxMikge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc1NlcnZpY2Uuc2hvd01lc3NhZ2UoTWVzc2FnZUJ1aWxkZXIubWVlckRhbjEyQmxhZGVuR2V2b25kZW4oZHRvcy5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldFNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MoZHRvcywgc3RvcmVTdGF0ZS5pYVZlcnNpZSwgYWN0aWUucml0LCBhY3RpZS5wYWdpbmF0aW9uU2l6ZSwgYWN0aWUucml0R2V3aWp6aWdkVG9lZ2VzdGFhbikpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldFZpc2libGVTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zKGR0b3MpKTtcbiAgICB9XG5cbiAgICBuYXZpZ2VlckJ1aXRlblJpdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoTXN0QWN0aW9ucy5uYXZpZ2VlckJ1aXRlblJpdCksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUpLFxuICAgICAgICBzd2l0Y2hNYXAoKFthY3RpZSwgc3RvcmVTdGF0ZV0pID0+XG4gICAgICAgICAgICBvZih7XG4gICAgICAgICAgICAgICAgcmFuZDogdGhpcy5zaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlLmdldFRvcG9sb2d5RWxlbWVudEJ5UHVpYyhhY3RpZS5yYW5kUHVpYyksXG4gICAgICAgICAgICAgICAgcmFuZFB1aWM6IGFjdGllLnJhbmRQdWljLFxuICAgICAgICAgICAgICAgIHN0b3JlU3RhdGVcbiAgICAgICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHRoaXMuZ2V0T3RoZXJSYW5kLmJpbmQodGhpcykpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCh0aGlzLmxvYWRSb3V0ZUZpbGVzQW5kU2lnbmFsZXJpbmdzYmVlbGRJbmZvLmJpbmQodGhpcykpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCh0aGlzLmxvYWRTaWduYWxlcmluZ3NiZWVsZGVuLmJpbmQodGhpcykpLFxuICAgICAgICAgICAgICAgIG1hcCh0aGlzLnByb2Nlc3NTdmdzQW5kVXBkYXRlUml0ZGVsZW4uYmluZCh0aGlzKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICksIHsgZGlzcGF0Y2g6IGZhbHNlIH0pO1xuXG4gICAgcHJpdmF0ZSBnZXRPdGhlclJhbmQoeyByYW5kLCByYW5kUHVpYywgc3RvcmVTdGF0ZX06IE5hdmlnZWVyQnVpdGVuUml0SW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdG9yU2VydmljZS5nZXRPdGhlclJhbmQocmFuZFB1aWMpLnBpcGUoXG4gICAgICAgICAgICBtYXAob3RoZXJQcGxnID0+ICh7IG90aGVyUHBsZywgcmFuZCwgc3RvcmVTdGF0ZSB9KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRSb3V0ZUZpbGVzQW5kU2lnbmFsZXJpbmdzYmVlbGRJbmZvKHsgb3RoZXJQcGxnLCByYW5kLCBzdG9yZVN0YXRlIH06IE5hdmlnZWVyQnVpdGVuUml0SW5wdXQpIHtcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmxhYWRSb3V0ZUZpbGVzKHN0b3JlU3RhdGUuaWFWZXJzaWUudmVyc2llLCBbcmFuZC5nZXRQUExHKCksIG90aGVyUHBsZ10pO1xuICAgICAgICByZXR1cm4gdGhpcy5zYmlSZXNvdXJjZS5sYWFkU2lnbmFsZXJpbmdzYmVlbGRJbmZvKHRoaXMuY3JlYXRlU2lnbmFsZXJpbmdzYmVlbGRJbmZvUXVlcnlEdG8oW3JhbmQuZ2V0UFBMRygpLCBvdGhlclBwbGddLCBzdG9yZVN0YXRlLmlhVmVyc2llKSkucGlwZShcbiAgICAgICAgICAgIG1hcChkdG9zID0+ICh7IGR0b3MsIHN0b3JlU3RhdGUgfSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkU2lnbmFsZXJpbmdzYmVlbGRlbih7IGR0b3MsIHN0b3JlU3RhdGUgfTogTmF2aWdlZXJCdWl0ZW5SaXRJbnB1dCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3JTZXJ2aWNlLmxhYWRTaWduYWxlcmluZ3NiZWVsZGVuKHN0b3JlU3RhdGUuaWFWZXJzaWUudmVyc2llLCBkdG9zKS5waXBlKFxuICAgICAgICAgICAgbWFwKHN2Z0RhdGFVcmxzID0+ICh7IHN2Z0RhdGFVcmxzLCBzdG9yZVN0YXRlLCBkdG9zIH0pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1N2Z3NBbmRVcGRhdGVSaXRkZWxlbih7IHN2Z0RhdGFVcmxzLCBzdG9yZVN0YXRlLCBkdG9zIH06IE5hdmlnZWVyQnVpdGVuUml0SW5wdXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52ZXJ3ZXJrU3ZncyhzdmdEYXRhVXJscyk7XG4gICAgICAgIGNvbnN0IG5pZXV3ZVJpdGRlbGVuID0gdGhpcy51cGRhdGVSaXRkZWxlbihzdG9yZVN0YXRlLnJpdERlbGVuLCBkdG9zKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNc3RBY3Rpb25zLlVwZGF0ZVZpc2libGVTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zKGR0b3MpKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChSaXRkZWxlbkFjdGlvbnMudXBkYXRlUml0RGVsZW4obmlldXdlUml0ZGVsZW4pKTtcbiAgICB9XG5cbiAgICB2ZXJ3ZXJrUml0ZGVsZW4oYWN0aWU6IGFueSwgc3RvcmVTdGF0ZTogTXN0RWRpdG9yU3RhdGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNJbml0ID0gYWN0aWUudHlwZSA9PT0gUml0ZGVsZW5BY3Rpb25zLlNFVF9SSVRfREVMRU47XG4gICAgICAgIGNvbnN0IHJpdERlbGVuOiBSaXRkZWVsW10gPSBpc0luaXQgPyBhY3RpZS5yaXREZWxlbiA6IHN0b3JlU3RhdGUucml0RGVsZW47XG4gICAgICAgIGNvbnN0IHN0b3JlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdID0gc3RvcmVTdGF0ZS5zaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zO1xuXG4gICAgICAgIHRoaXMubmF2aWdlZXIocml0RGVsZW4sIGFjdGllLCBzdG9yZUR0b3MpO1xuXG4gICAgICAgIGNvbnN0IHZpc2libGVSaXREZWxlbiA9IHJpdERlbGVuLmZpbHRlcihuID0+IG4uaXNaaWNodGJhYXJCaW5uZW5XaW5kb3coKSk7XG4gICAgICAgIGNvbnN0IHZpc2libGVSaXRQcGxnczogc3RyaW5nW10gPSB2aXNpYmxlUml0RGVsZW4ubWFwKHIgPT4gci5nZXRQcGxnKCkpLmZpbHRlcih0aGlzLmRpc3RpbmN0KTtcblxuICAgICAgICBjb25zdCB2aXNpYmxlRHRvcyA9IHRoaXMuYmVwYWFsWmljaHRiYXJlRHRvcyh2aXNpYmxlUml0UHBsZ3MsIHN0b3JlRHRvcyk7XG4gICAgICAgIGNvbnN0IGxvYWRpbmdEdG9zID0gdGhpcy5iZXBhYWxUb0xvYWREdG9zKHZpc2libGVEdG9zLCByaXREZWxlbiwgdmlzaWJsZVJpdERlbGVuLCB2aXNpYmxlUml0UHBsZ3MsIHN0b3JlU3RhdGUpO1xuXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5sYWFkU2lnbmFsZXJpbmdzYmVlbGRlbihhY3RpZS5pYXZlcnNpZWluZm8udmVyc2llLCBsb2FkaW5nRHRvcykucGlwZShcbiAgICAgICAgICAgIHRhcChzdmdEYXRhVXJscyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52ZXJ3ZXJrU3ZncyhzdmdEYXRhVXJscyk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZShyaXREZWxlbiwgdmlzaWJsZUR0b3MsIHN0b3JlU3RhdGUsIHZpc2libGVSaXRQcGxncywgbG9hZGluZ0R0b3MsIGlzSW5pdCwgc3RvcmVEdG9zKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXNTZXJ2aWNlLnNob3dNZXNzYWdlKE1lc3NhZ2VCdWlsZGVyLnJ3cERhdGFOaWV0R2V2b25kZW4oVXRpbHMuZ2V0VmFsaWRFcm9yck1lc3NhZ2UoZXJyKSkpO1xuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTdGF0ZShyaXREZWxlbjogUml0ZGVlbFtdLCB2aXNpYmxlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdLCBzdG9yZVN0YXRlOiBNc3RFZGl0b3JTdGF0ZSwgdmlzaWJsZVJpdFBwbGdzOiBzdHJpbmdbXSwgbG9hZGluZ0R0b3M6IGFueVtdLCBpc0luaXQ6IGJvb2xlYW4sIHN0b3JlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmlldXdlUml0ZGVsZW4gPSB0aGlzLnVwZGF0ZVJpdGRlbGVuKHJpdERlbGVuLCB2aXNpYmxlRHRvcyk7XG4gICAgICAgICAgICB0aGlzLmRlYnVnTG9nKHN0b3JlU3RhdGUuZGVidWcsIHZpc2libGVSaXRQcGxncywgbG9hZGluZ0R0b3MpO1xuXG4gICAgICAgICAgICBpZiAoIWlzSW5pdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTXN0QWN0aW9ucy5VcGRhdGVTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zKHN0b3JlRHRvcykpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTXN0QWN0aW9ucy5VcGRhdGVWaXNpYmxlU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcyhsb2FkaW5nRHRvcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChSaXRkZWxlbkFjdGlvbnMudXBkYXRlUml0RGVsZW4obmlldXdlUml0ZGVsZW4pKTtcbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVTaWduYWxlcmluZ3NiZWVsZEluZm9RdWVyeUR0byhwcGxnczogc3RyaW5nW10sIGlhaW5mbzogSW5mcmFNb2RlbCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGRhdHVtID0gaWFpbmZvLmluZ2FuZ3NEYXR1bSAmJiAhaXNOYU4oaWFpbmZvLmluZ2FuZ3NEYXR1bS5nZXRUaW1lKCkpID8gaWFpbmZvLmluZ2FuZ3NEYXR1bS50b0lTT1N0cmluZygpIDogdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4geyBwcGxncywgdmVyc2llOiBpYWluZm8udmVyc2llLCBpbmdhbmdzRGF0dW06IGRhdHVtIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2ZXJ3ZXJrU3ZncyhzdmdEYXRhVXJsczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNc3RBY3Rpb25zLlNldFN2Z0luZm9zKHRoaXMuYmVwYWFsU3ZnSW5mb3Moc3ZnRGF0YVVybHMpKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxTdmdJbmZvcyhzdmdEYXRhVXJsczogc3RyaW5nW10pOiBTdmdJbmZvW10ge1xuICAgICAgICBsZXQgbmV4dENvb3JkcyA9IG5ldyBQb2ludCgwLCAwKTtcbiAgICAgICAgY29uc3QgaW5mb3M6IFN2Z0luZm9bXSA9IFtdO1xuICAgICAgICBzdmdEYXRhVXJscy5mb3JFYWNoKHN2Z0RhdGFVcmwgPT4ge1xuICAgICAgICAgICAgaWYgKHN2Z0RhdGFVcmwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWNvZGVkID0gYXRvYihzdmdEYXRhVXJsLnN1YnN0cmluZygnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwnLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgIGluZm9zLnB1c2gobmV3IFN2Z0luZm8oJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwnICsgZGVjb2RlZCwgbmV4dENvb3JkcykpO1xuICAgICAgICAgICAgICAgIG5leHRDb29yZHMgPSBuZXcgUG9pbnQobmV4dENvb3Jkcy54ICsgSW14Vmlld2VyQ29tcG9uZW50LmdldFhDb29yZGluYXRlKGRlY29kZWQpICsgdGhpcy5TVkdfUElYRUxfUlVJTVRFLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbmZvcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbFRvTG9hZER0b3ModmlzaWJsZUR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSwgcml0RGVsZW46IFJpdGRlZWxbXSwgdmlzaWJsZVJpdERlbGVuOiBSaXRkZWVsW10sIHZpc2libGVSaXRQcGxnczogc3RyaW5nW10sIHN0b3JlU3RhdGU6IE1zdEVkaXRvclN0YXRlKTogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdIHtcbiAgICAgICAgY29uc3QgbG9hZGluZ0R0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSA9IFsuLi52aXNpYmxlRHRvc107XG4gICAgICAgIGNvbnN0IGZpcnN0SWR4ID0gcml0RGVsZW4uaW5kZXhPZih2aXNpYmxlUml0RGVsZW5bMF0pIC0gMTtcbiAgICAgICAgdGhpcy5hZGRQcmV2Tm9uVmlzaWJsZUR0byhmaXJzdElkeCwgcml0RGVsZW4sIGxvYWRpbmdEdG9zLCB2aXNpYmxlUml0UHBsZ3MsIHN0b3JlU3RhdGUuc2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcyk7XG4gICAgICAgIGNvbnN0IGxhc3RJZHggPSByaXREZWxlbi5pbmRleE9mKHZpc2libGVSaXREZWxlblt2aXNpYmxlUml0RGVsZW4ubGVuZ3RoIC0gMV0pICsgMTtcbiAgICAgICAgdGhpcy5hZGROZXh0Tm9uVmlzaWJsZUR0byhsYXN0SWR4LCByaXREZWxlbiwgbG9hZGluZ0R0b3MsIHZpc2libGVSaXRQcGxncywgc3RvcmVTdGF0ZS5zaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zKTtcbiAgICAgICAgcmV0dXJuIGxvYWRpbmdEdG9zO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsWmljaHRiYXJlRHRvcyh2aXNpYmxlUml0UHBsZ3M6IHN0cmluZ1tdLCBkdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10ge1xuICAgICAgICBjb25zdCB2aXNpYmxlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdID0gW107XG4gICAgICAgIHZpc2libGVSaXRQcGxncy5mb3JFYWNoKHBwbGcgPT4ge1xuICAgICAgICAgICAgZHRvcy5maWx0ZXIoZHRvID0+IGR0by5wcGxncy5pbmNsdWRlcyhwcGxnKSkuZm9yRWFjaChkdG8gPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdmlzaWJsZUR0b3MuaW5jbHVkZXMoZHRvKSkge1xuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlRHRvcy5wdXNoKGR0byk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2aXNpYmxlRHRvcy5mb3JFYWNoKGR0byA9PiBkdG8ubWV0VmlzdWFsaXNhdGllID0gdHJ1ZSk7XG4gICAgICAgIGR0b3MuZmlsdGVyKGQgPT4gIXZpc2libGVEdG9zLmluY2x1ZGVzKGQpKS5mb3JFYWNoKGQgPT4gZC5tZXRWaXN1YWxpc2F0aWUgPSBmYWxzZSk7XG4gICAgICAgIHJldHVybiB2aXNpYmxlRHRvcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc3RpbmN0KHZhbHVlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIHZhbHVlczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRQcmV2Tm9uVmlzaWJsZUR0byhmaXJzdElkeDogbnVtYmVyLCByaXRkZWxlbjogUml0ZGVlbFtdLCBsb2FkaW5nRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdLCB2aXNpYmxlUml0UHBsZ3M6IHN0cmluZ1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdKTogdm9pZCB7XG4gICAgICAgIGlmIChmaXJzdElkeCA+PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBwcGxnID0gcml0ZGVsZW5bZmlyc3RJZHhdLmdldFBwbGcoKTtcbiAgICAgICAgICAgIGNvbnN0IHJpdGRlZWxEdG9zID0gYWxsRHRvcy5maWx0ZXIoZHRvID0+IGR0by5wcGxncy5pbmNsdWRlcyhwcGxnKSkuZmlsdGVyKGR0byA9PiAhbG9hZGluZ0R0b3MuaW5jbHVkZXMoZHRvKSk7XG5cbiAgICAgICAgICAgIGlmICghdmlzaWJsZVJpdFBwbGdzLmluY2x1ZGVzKHBwbGcpICYmIHJpdGRlZWxEdG9zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByaXRkZWVsRHRvcy5maWx0ZXIoZCA9PiAhbG9hZGluZ0R0b3MuaW5jbHVkZXMoZCkpLmZvckVhY2goZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGQubWV0VmlzdWFsaXNhdGllID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmdEdG9zLnB1c2goZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkUHJldk5vblZpc2libGVEdG8oZmlyc3RJZHggLSAxLCByaXRkZWxlbiwgbG9hZGluZ0R0b3MsIHZpc2libGVSaXRQcGxncywgYWxsRHRvcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE5leHROb25WaXNpYmxlRHRvKGxhc3RJZHg6IG51bWJlciwgcml0ZGVsZW46IFJpdGRlZWxbXSwgbG9hZGluZ0R0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSwgdmlzaWJsZVJpdFBwbGdzOiBzdHJpbmdbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbER0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IHZvaWQge1xuICAgICAgICBpZiAobGFzdElkeCA8PSByaXRkZWxlbi5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBjb25zdCBwcGxnID0gcml0ZGVsZW5bbGFzdElkeF0uZ2V0UHBsZygpO1xuICAgICAgICAgICAgY29uc3Qgcml0ZGVlbER0b3MgPSBhbGxEdG9zLmZpbHRlcihkdG8gPT4gZHRvLnBwbGdzLmluY2x1ZGVzKHBwbGcpKS5maWx0ZXIoZHRvID0+ICFsb2FkaW5nRHRvcy5pbmNsdWRlcyhkdG8pKTtcblxuICAgICAgICAgICAgaWYgKCF2aXNpYmxlUml0UHBsZ3MuaW5jbHVkZXMocHBsZykgJiYgcml0ZGVlbER0b3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJpdGRlZWxEdG9zLmZpbHRlcihkID0+ICFsb2FkaW5nRHRvcy5pbmNsdWRlcyhkKSkuZm9yRWFjaChkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZC5tZXRWaXN1YWxpc2F0aWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZ0R0b3MucHVzaChkKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGROZXh0Tm9uVmlzaWJsZUR0byhsYXN0SWR4ICsgMSwgcml0ZGVsZW4sIGxvYWRpbmdEdG9zLCB2aXNpYmxlUml0UHBsZ3MsIGFsbER0b3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWJ1Z0xvZyhkZWJ1ZzogYm9vbGVhbiwgdmlzaWJsZVJpdFBwbGdzOiBzdHJpbmdbXSwgbG9hZGluZ0R0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IHZvaWQge1xuICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSSVQgUFBMR3M6ICcgKyB2aXNpYmxlUml0UHBsZ3MpO1xuICAgICAgICAgICAgbG9hZGluZ0R0b3MuZm9yRWFjaChkdG8gPT4ge1xuICAgICAgICAgICAgICAgIGxldCBzdHIgPSAnXFxuRFRPLWJsYWROYWFtOiAnICsgZHRvLmJsYWROYWFtO1xuICAgICAgICAgICAgICAgIHN0ciArPSAnXFxuRFRPLVBQTEdzICAgOiAnICsgZHRvLnBwbGdzO1xuICAgICAgICAgICAgICAgIHN0ciArPSAnXFxuVmlzaWJsZSAgICAgOiAnICsgZHRvLm1ldFZpc3VhbGlzYXRpZTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhzdHIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhY3RpZXM6IE5hdmlnZWVyfE5hdmlnZWVyVmFuYWZ8U2V0Uml0RGVsZW5cbiAgICBwcml2YXRlIG5hdmlnZWVyKHJpdERlbGVuOiBSaXRkZWVsW10sIGFjdGllOiB7XG4gICAgICAgIHBhZ2luYXRpb25TaXplOiBudW1iZXI7XG4gICAgICAgIHN0YXBTaXplOiBudW1iZXI7XG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgcml0ZGVlbDogUml0ZGVlbFxuICAgIH0sIHN0b3JlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdKTogdm9pZCB7XG4gICAgICAgIC8vIGFsbGUgcml0ZGVsZW4ga3JpamdlbiB6aWNodGJhYXJoZWlkQnVpdGVuUGFnaW5hdGllID0+IGZhbHNlXG4gICAgICAgIGlmIChhY3RpZS50eXBlID09PSBSaXRkZWxlbkFjdGlvbnMuU0VUX1JJVF9ERUxFTikge1xuICAgICAgICAgICAgdGhpcy5iZXBhYWxaaWNodGJhYXJoZWlkUmVjaHRzKDAsIHJpdERlbGVuLCBhY3RpZS5wYWdpbmF0aW9uU2l6ZSwgc3RvcmVEdG9zKTtcbiAgICAgICAgfSBlbHNlIGlmIChhY3RpZS50eXBlID09PSBSaXRkZWxlbkFjdGlvbnMuTkFWSUdFRVIpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTGlua3MgPSBhY3RpZS5zdGFwU2l6ZSA8IDA7XG4gICAgICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gdGhpcy5iZXBhYWxTdGFydEluZGV4KHJpdERlbGVuKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZEluZGV4ID0gdGhpcy5iZXBhYWxFbmRJbmRleChyaXREZWxlbik7XG4gICAgICAgICAgICBjb25zdCBuYXZpZ2VyZW5Nb2dlbGlqayA9ICEoc3RhcnRJbmRleCA9PT0gMCAmJiBpc0xpbmtzIHx8IGVuZEluZGV4ID09PSByaXREZWxlbi5sZW5ndGggLSAxICYmICFpc0xpbmtzKTtcbiAgICAgICAgICAgIGlmIChuYXZpZ2VyZW5Nb2dlbGlqaykge1xuICAgICAgICAgICAgICAgIGlmIChpc0xpbmtzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmVwYWFsWmljaHRiYWFyaGVpZExpbmtzKHN0YXJ0SW5kZXgsIHJpdERlbGVuLCBhY3RpZS5wYWdpbmF0aW9uU2l6ZSwgc3RvcmVEdG9zKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJlcGFhbFppY2h0YmFhcmhlaWRSZWNodHMoZW5kSW5kZXgsIHJpdERlbGVuLCBhY3RpZS5wYWdpbmF0aW9uU2l6ZSwgc3RvcmVEdG9zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aWUudHlwZSA9PT0gUml0ZGVsZW5BY3Rpb25zLk5BVklHRUVSX1ZBTkFGKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSByaXREZWxlbi5pbmRleE9mKGFjdGllLnJpdGRlZWwpO1xuICAgICAgICAgICAgdGhpcy5iZXBhYWxaaWNodGJhYXJoZWlkUmVjaHRzKGlkeCwgcml0RGVsZW4sIGFjdGllLnBhZ2luYXRpb25TaXplLCBzdG9yZUR0b3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVSaXRkZWxlbihyaXRkZWxlbjogUml0ZGVlbFtdLCB2aXNpYmxlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdKTogUml0ZGVlbFtdIHtcbiAgICAgICAgY29uc3QgdmlzaWJsZUluZGljZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByaXRkZWxlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHJpdGRlbGVuW2ldLmlzWmljaHRiYWFyQmlubmVuV2luZG93KCkpIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlSW5kaWNlcy5wdXNoKGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKC4uLnZpc2libGVJbmRpY2VzKTtcbiAgICAgICAgY29uc3QgbWF4ID0gTWF0aC5tYXgoLi4udmlzaWJsZUluZGljZXMpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcml0ZGVsZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHJkID0gcml0ZGVsZW5baV07XG5cbiAgICAgICAgICAgIGlmIChyZC5pc1ppY2h0YmFhckJpbm5lbldpbmRvdygpKSB7XG4gICAgICAgICAgICAgICAgcmQuYmVwYWFsVG9wb2xvZ2llRWxlbWVudGVuKHRoaXMuc2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJkLmdldFRvcG9sb2dpZUVsZW1lbnRlbigpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcml0ZGVsZW5baV0gPSByZC5pc05pZXRCZXNjaGlrYmFhcigpID8gcmQuY29weU1ldFppY2h0YmFhcmhlaWQoUml0ZGVlbFppY2h0YmFhcmhlaWQuWklDSFRCQUFSKSA6IHJkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJpdGRlbGVuW2ldID0gdGhpcy5tYWFrT256aWNodGJhYXIocmQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlWmljaHRiYWFyaGVpZEFhbmdyZW56ZW5kZVJpdGRlbGVuKG1pbiwgbWF4LCByaXRkZWxlbiwgdmlzaWJsZUR0b3MpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVppY2h0YmFhcmhlaWRCdWl0ZW5XaW5kb3cocml0ZGVsZW4sIHZpc2libGVEdG9zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVppY2h0YmFhcmhlaWRCdWl0ZW5XaW5kb3cobmlldXdlUml0ZGVsZW46IFJpdGRlZWxbXSwgdmlzaWJsZUR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IFJpdGRlZWxbXSB7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuaWV1d2VSaXRkZWxlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcmQgPSBuaWV1d2VSaXRkZWxlbltpXTtcblxuICAgICAgICAgICAgaWYgKCFyZC5pc1ppY2h0YmFhcigpICYmIHRoaXMuYmV2YXRHZXZpc3VhbGlzZWVyZGVQcGxnKHZpc2libGVEdG9zLCByZC5nZXRQcGxnKCkpKSB7XG4gICAgICAgICAgICAgICAgcmQuYmVwYWFsVG9wb2xvZ2llRWxlbWVudGVuKHRoaXMuc2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJkLmdldFRvcG9sb2dpZUVsZW1lbnRlbigpLmxlbmd0aCA+IDAgJiYgdGhpcy5pc0VlcnN0ZUxhYXRzdGVQdWljWmljaHRiYWFyKHJkLmdldFRvcG9sb2dpZUVsZW1lbnRlbigpKSkge1xuICAgICAgICAgICAgICAgICAgICBuaWV1d2VSaXRkZWxlbltpXSA9IHJkLmlzTmlldEJlc2NoaWtiYWFyKCkgPyByZC5jb3B5TWV0WmljaHRiYWFyaGVpZEVuUGFnaW5hdGllKFJpdGRlZWxaaWNodGJhYXJoZWlkLlpJQ0hUQkFBUiwgdHJ1ZSkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmQuY29weU1ldFppY2h0YmFhcmhlaWRCdWl0ZW5QYWdpbmF0aWUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuaWV1d2VSaXRkZWxlbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVppY2h0YmFhcmhlaWRBYW5ncmVuemVuZGVSaXRkZWxlbihtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIG5pZXV3ZVJpdGRlbGVuOiBSaXRkZWVsW10sIHZpc2libGVEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiB2b2lkIHtcbiAgICAgICAgbGV0IGkgPSBtaW4gLSAxO1xuICAgICAgICB3aGlsZSAoaSA+PSAwKSB7XG4gICAgICAgICAgICBpID0gdGhpcy51cGRhdGVaaWNodGJhYXJIZWlkKGksIDAsIHZpc2libGVEdG9zLCBuaWV1d2VSaXRkZWxlbikgLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgaSA9IG1heCArIDE7XG4gICAgICAgIHdoaWxlIChpIDwgbmlldXdlUml0ZGVsZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBpID0gdGhpcy51cGRhdGVaaWNodGJhYXJIZWlkKGksIG5pZXV3ZVJpdGRlbGVuLmxlbmd0aCwgdmlzaWJsZUR0b3MsIG5pZXV3ZVJpdGRlbGVuKSArIDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVppY2h0YmFhckhlaWQoaTogbnVtYmVyLCBlbmQ6IG51bWJlciwgdmlzaWJsZUR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSwgbmlldXdlUml0ZGVsZW46IFJpdGRlZWxbXSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHJkID0gbmlldXdlUml0ZGVsZW5baV07XG4gICAgICAgIGlmICh0aGlzLmJldmF0R2V2aXN1YWxpc2VlcmRlUHBsZyh2aXNpYmxlRHRvcywgcmQuZ2V0UHBsZygpKSkge1xuICAgICAgICAgICAgaSA9IHRoaXMudXBkYXRlWmljaHRiYWFyaGVpZEFhbmdyZW56ZW5kZVJpdGRlZWwocmQsIG5pZXV3ZVJpdGRlbGVuLCBpLCBlbmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaSA9IGVuZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRWVyc3RlTGFhdHN0ZVB1aWNaaWNodGJhYXIodG9wb0VsZW1lbnRlbjogVG9wb2xvZ3lFbGVtZW50W10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3AnICsgdG9wb0VsZW1lbnRlblswXS5nZXRQdWljKCkpIHx8XG4gICAgICAgICAgICAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwJyArIHRvcG9FbGVtZW50ZW5bdG9wb0VsZW1lbnRlbi5sZW5ndGggLSAxXS5nZXRQdWljKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlWmljaHRiYWFyaGVpZEFhbmdyZW56ZW5kZVJpdGRlZWwocmQ6IFJpdGRlZWwsIG5pZXV3ZVJpdGRlbGVuOiBSaXRkZWVsW10sIGk6IG51bWJlciwgZW5kOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZC5iZXBhYWxUb3BvbG9naWVFbGVtZW50ZW4odGhpcy5zaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlKTtcbiAgICAgICAgaWYgKHJkLmdldFRvcG9sb2dpZUVsZW1lbnRlbigpLmxlbmd0aCA+IDAgJiYgdGhpcy5pc0VlcnN0ZUxhYXRzdGVQdWljWmljaHRiYWFyKHJkLmdldFRvcG9sb2dpZUVsZW1lbnRlbigpKSkge1xuICAgICAgICAgICAgbmlldXdlUml0ZGVsZW5baV0gPSByZC5pc05pZXRCZXNjaGlrYmFhcigpID8gcmQuY29weU1ldFppY2h0YmFhcmhlaWQoUml0ZGVlbFppY2h0YmFhcmhlaWQuWklDSFRCQUFSKSA6IHJkO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZW5kO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmV2YXRHZXZpc3VhbGlzZWVyZGVQcGxnKHZpc2libGVEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10sIHBwbGc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBmb3IgKGNvbnN0IGR0byBvZiB2aXNpYmxlRHRvcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkdG9wcGxnIG9mIGR0by5wcGxncykge1xuICAgICAgICAgICAgICAgIGlmIChkdG9wcGxnID09PSBwcGxnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYWFrT256aWNodGJhYXIocmQ6IFJpdGRlZWwpOiBSaXRkZWVsIHtcbiAgICAgICAgcmV0dXJuIHJkLmlzWmljaHRiYWFyKCkgfHwgcmQuaXNPbnppY2h0YmFhckRvb3JHZWJydWlrZXIoKSA/XG4gICAgICAgICAgICByZC5jb3B5TWV0WmljaHRiYWFyaGVpZEVuUGFnaW5hdGllKFJpdGRlZWxaaWNodGJhYXJoZWlkLk9OWklDSFRCQUFSX0RPT1JfU1lTVEVFTSwgZmFsc2UpIDpcbiAgICAgICAgICAgIHJkLmNvcHlNZXRaaWNodGJhYXJoZWlkQnVpdGVuUGFnaW5hdGllKGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbFppY2h0YmFhcmhlaWRSZWNodHMoaWR4OiBudW1iZXIsIGl0ZW1zOiBSaXRkZWVsW10sIHBhZ2luYXRpb25TaXplOiBudW1iZXIsIGR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcGxnc1dpbmRvdzogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3QgZHRvc1dpbmRvdzogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHJkID0gaXRlbXNbaV07XG4gICAgICAgICAgICBpZiAoaSA+PSBpZHggJiYgdGhpcy52YWx0QmlubmVuUGFnaW5hdGllV2luZG93KHBwbGdzV2luZG93LCBwYWdpbmF0aW9uU2l6ZSwgZHRvc1dpbmRvdykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFppY2h0YmFhcihyZCwgcHBsZ3NXaW5kb3csIGR0b3MsIGR0b3NXaW5kb3csIGl0ZW1zLCBpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXRlbXNbaV0gPSByZC5pc1ppY2h0YmFhcigpIHx8IHJkLmlzT256aWNodGJhYXJEb29yR2VicnVpa2VyKCkgP1xuICAgICAgICAgICAgICAgICAgICByZC5jb3B5TWV0WmljaHRiYWFyaGVpZEVuUGFnaW5hdGllKFJpdGRlZWxaaWNodGJhYXJoZWlkLk9OWklDSFRCQUFSX0RPT1JfU1lTVEVFTSwgZmFsc2UpIDpcbiAgICAgICAgICAgICAgICAgICAgcmQuY29weU1ldFppY2h0YmFhcmhlaWRCdWl0ZW5QYWdpbmF0aWUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxaaWNodGJhYXJoZWlkTGlua3MoaWR4OiBudW1iZXIsIGl0ZW1zOiBSaXRkZWVsW10sIHBhZ2luYXRpb25TaXplOiBudW1iZXIsIGR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcGxnc1dpbmRvdzogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3QgZHRvc1dpbmRvdzogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBpdGVtcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgcmQgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIGlmIChpIDw9IGlkeCAmJiB0aGlzLnZhbHRCaW5uZW5QYWdpbmF0aWVXaW5kb3cocHBsZ3NXaW5kb3csIHBhZ2luYXRpb25TaXplLCBkdG9zV2luZG93KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0WmljaHRiYWFyKHJkLCBwcGxnc1dpbmRvdywgZHRvcywgZHRvc1dpbmRvdywgaXRlbXMsIGkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpdGVtc1tpXSA9IHJkLmlzWmljaHRiYWFyKCkgfHwgcmQuaXNPbnppY2h0YmFhckRvb3JHZWJydWlrZXIoKSA/XG4gICAgICAgICAgICAgICAgICAgIHJkLmNvcHlNZXRaaWNodGJhYXJoZWlkRW5QYWdpbmF0aWUoUml0ZGVlbFppY2h0YmFhcmhlaWQuT05aSUNIVEJBQVJfRE9PUl9TWVNURUVNLCBmYWxzZSkgOlxuICAgICAgICAgICAgICAgICAgICByZC5jb3B5TWV0WmljaHRiYWFyaGVpZEJ1aXRlblBhZ2luYXRpZShmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbHRCaW5uZW5QYWdpbmF0aWVXaW5kb3cocHBsZ3NXaW5kb3c6IHN0cmluZ1tdLCBwYWdpbmF0aW9uU2l6ZTogbnVtYmVyLCBkdG9zV2luZG93OiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHBwbGdzV2luZG93Lmxlbmd0aCA8IHBhZ2luYXRpb25TaXplIHx8IGR0b3NXaW5kb3cubGVuZ3RoIDwgcGFnaW5hdGlvblNpemU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRaaWNodGJhYXIocmQ6IFJpdGRlZWwsIHBwbGdzV2luZG93OiBzdHJpbmdbXSwgZHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdLCBkdG9zV2luZG93OiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10sIGl0ZW1zOiBSaXRkZWVsW10sIGk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtUHBsZyA9IHJkLmdldFBwbGcoKTtcbiAgICAgICAgaWYgKCFwcGxnc1dpbmRvdy5pbmNsdWRlcyhpdGVtUHBsZykpIHtcbiAgICAgICAgICAgIHBwbGdzV2luZG93LnB1c2goaXRlbVBwbGcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHBsZ0R0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSA9IFtdO1xuICAgICAgICBkdG9zLmZpbHRlcihkdG8gPT4gZHRvLnBwbGdzLmluY2x1ZGVzKGl0ZW1QcGxnKSkuZm9yRWFjaChkdG8gPT4ge1xuICAgICAgICAgICAgaWYgKCFwcGxnRHRvcy5pbmNsdWRlcyhkdG8pKSB7XG4gICAgICAgICAgICAgICAgcHBsZ0R0b3MucHVzaChkdG8pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBwcGxnRHRvcy5maWx0ZXIoZCA9PiAhZHRvc1dpbmRvdy5pbmNsdWRlcyhkKSkuZm9yRWFjaChkID0+IGR0b3NXaW5kb3cucHVzaChkKSk7XG5cbiAgICAgICAgaXRlbXNbaV0gPSAhcmQuaXNaaWNodGJhYXIoKSA/IHJkLmNvcHlNZXRaaWNodGJhYXJoZWlkRW5QYWdpbmF0aWUoUml0ZGVlbFppY2h0YmFhcmhlaWQuWklDSFRCQUFSLCBmYWxzZSkgOlxuICAgICAgICAgICAgcmQuY29weU1ldFppY2h0YmFhcmhlaWRCdWl0ZW5QYWdpbmF0aWUoZmFsc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsU3RhcnRJbmRleChyaXREZWxlbjogUml0ZGVlbFtdKTogbnVtYmVyIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByaXREZWxlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHJpdERlbGVuW2ldLmlzQmlubmVuV2luZG93KCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxFbmRJbmRleChyaXREZWxlbjogUml0ZGVlbFtdKTogbnVtYmVyIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHJpdERlbGVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAocml0RGVsZW5baV0uaXNCaW5uZW5XaW5kb3coKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG59XG4iXX0=
|
|
363
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFhZC1zaWduYWxlcmluZ3NiZWVsZGVuLmVmZmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9zdGF0ZS9lZmZlY3QvbGFhZC1zaWduYWxlcmluZ3NiZWVsZGVuLmVmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkUsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkYsT0FBTyxFQUFXLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFNcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sS0FBSyxNQUFNLGtCQUFrQixDQUFDO0FBQ3JDLE9BQU8sS0FBSyxVQUFVLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLG1DQUFtQyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkcsT0FBTyxLQUFLLGVBQWUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7O0FBdUMvRCxNQUFNLE9BQU8sNkJBQTZCO0lBSXRDLFlBQTZCLFFBQWlCLEVBQ2pCLEtBQTRCLEVBQzVCLCtCQUFnRSxFQUNoRSxhQUE0QixFQUM1QixXQUEwQyxFQUMxQyxnQkFBa0MsRUFDbEMsZUFBZ0M7UUFOaEMsYUFBUSxHQUFSLFFB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Q0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVPLGNBQWMsQ0FBQyxRQUFtQjtRQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM1QyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO2dCQUMvQixPQUFPLENBQUMsQ0FBQztZQUNiLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNkLENBQUM7OEdBbmFRLDZCQUE2QjtrSEFBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUR6QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW14Vmlld2VyQ29tcG9uZW50LCBQb2ludCwgU3ZnSW5mbyB9IGZyb20gJ0Bsb3hpYS9pbXgtdmlld2VyJztcbmltcG9ydCB7IHNiYmxhZCB9IGZyb20gJ0Bsb3hpYS9yaWp3ZWdlbic7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgQWN0aW9uLCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lc3NhZ2VzU2VydmljZSB9IGZyb20gJy4uLy4uL2F0b21pYy1jb21wb25lbnRzL3NlcnZpY2VzL21lc3NhZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUml0ZGVlbCwgUml0ZGVlbFppY2h0YmFhcmhlaWQgfSBmcm9tICcuLi8uLi9tb2RlbC9yaXRkZWVsJztcbmltcG9ydCB7IEluZnJhTW9kZWwgfSBmcm9tICcuLi8uLi9vcHRpbW8nO1xuaW1wb3J0IHsgSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0bywgU2lnbmFsZXJpbmdzYmVlbGRJbmZvUmVzb3VyY2UgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvc2lnbmFsZXJpbmdzYmVlbGRpbmZvLnJlc291cmNlJztcbmltcG9ydCB7IENvbm5lY3RvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25uZWN0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NpZ25hbGVyaW5ncy1iZWVsZC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVzc2FnZUJ1aWxkZXIgfSBmcm9tICcuLi8uLi91dGlsL21lc3NhZ2UtYnVpbGRlcic7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XG5pbXBvcnQgKiBhcyBNc3RBY3Rpb25zIGZyb20gJy4uL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQgeyBTZXRTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zLCBTZXRWaXNpYmxlU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcyB9IGZyb20gJy4uL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBSaXRkZWxlbkFjdGlvbnMgZnJvbSAnLi4vYWN0aW9ucy9yaXRkZWxlbi5hY3Rpb25zJztcbmltcG9ydCB7IE1zdEVkaXRvclN0YXRlIH0gZnJvbSAnLi4vbXN0LWVkaXRvci1zdGF0ZSc7XG5pbXBvcnQgVG9wb2xvZ3lFbGVtZW50ID0gc2JibGFkLlRvcG9sb2d5RWxlbWVudDtcblxuaW50ZXJmYWNlIE90aGVyUmFuZElucHV0IHtcbiAgICByYW5kOiBUb3BvbG9neUVsZW1lbnQ7XG4gICAgcmFuZFB1aWM6IHN0cmluZztcbiAgICBzdG9yZVN0YXRlOiBNc3RFZGl0b3JTdGF0ZTtcbn1cblxuaW50ZXJmYWNlIE90aGVyUmFuZFJlc3VsdCB7XG4gICAgb3RoZXJQcGxnOiBzdHJpbmc7XG4gICAgcmFuZDogVG9wb2xvZ3lFbGVtZW50O1xuICAgIHN0b3JlU3RhdGU6IE1zdEVkaXRvclN0YXRlO1xufVxuXG5pbnRlcmZhY2UgQWN0aWVBbmRTdGF0ZUlucHV0IHtcbiAgICBhY3RpZTogUmV0dXJuVHlwZTx0eXBlb2YgTXN0QWN0aW9ucy5sYWFkRW5WZXJ3ZXJrU2lnbmFsZXJpbmdzYmVlbGRJbmZvPjtcbiAgICBzdG9yZVN0YXRlOiBNc3RFZGl0b3JTdGF0ZTtcbn1cblxuaW50ZXJmYWNlIER0b3NBbmRTdGF0ZSB7XG4gICAgZHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdO1xuICAgIHN0b3JlU3RhdGU6IE1zdEVkaXRvclN0YXRlO1xufVxuXG5pbnRlcmZhY2UgU2JSZXN1bHQge1xuICAgIHN2Z0RhdGFVcmxzOiBzdHJpbmdbXTtcbiAgICByaXREZWxlbjogUml0ZGVlbFtdO1xuICAgIGR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXTtcbn1cblxuaW50ZXJmYWNlIFNpZ25hbGVyaW5nc2JlZWxkSW5mb0lucHV0IHtcbiAgICBkdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW107XG4gICAgYWN0aWU6IGFueTtcbiAgICBzdG9yZVN0YXRlOiBNc3RFZGl0b3JTdGF0ZTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExhYWRTaWduYWxlcmluZ3NiZWVsZGVuRWZmZWN0IHtcblxuICAgIHByaXZhdGUgU1ZHX1BJWEVMX1JVSU1URSA9IDMwO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlOiBTdG9yZTxNc3RFZGl0b3JTdGF0ZT4sXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlOiBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHNiaVJlc291cmNlOiBTaWduYWxlcmluZ3NiZWVsZEluZm9SZXNvdXJjZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbm5lY3RvclNlcnZpY2U6IENvbm5lY3RvclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlc1NlcnZpY2U6IE1lc3NhZ2VzU2VydmljZSkge1xuICAgIH1cblxuICAgIHZlcndlcmtSaXRkZWxlbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoUml0ZGVsZW5BY3Rpb25zLnNldFJpdERlbGVuLCBSaXRkZWxlbkFjdGlvbnMubmF2aWdlZXIsIFJpdGRlbGVuQWN0aW9ucy5uYXZpZ2VlclZhbmFmKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZSksXG4gICAgICAgIG1hcCgoW2FjdGllLCBzdG9yZVN0YXRlXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNc3RBY3Rpb25zLlNldE9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkKGZhbHNlKSk7XG4gICAgICAgICAgICB0aGlzLnZlcndlcmtSaXRkZWxlbihhY3RpZSwgc3RvcmVTdGF0ZSk7XG4gICAgICAgIH0pKSwgeyBkaXNwYXRjaDogZmFsc2UgfVxuICAgICk7XG5cbiAgICBsYWFkRW5WZXJ3ZXJrU2lnbmFsZXJpbmdzYmVlbGRJbmZvJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShNc3RBY3Rpb25zLmxhYWRFblZlcndlcmtTaWduYWxlcmluZ3NiZWVsZEluZm8pLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlKSxcbiAgICAgICAgc3dpdGNoTWFwKChbYWN0aWUsIHN0b3JlU3RhdGVdKSA9PiB0aGlzLmhhbmRsZVNpZ25hbGVyaW5nc2JlZWxkSW5mbyh7YWN0aWUsIHN0b3JlU3RhdGV9KSlcbiAgICApLCB7IGRpc3BhdGNoOiBmYWxzZSB9KTtcblxuICAgIHByaXZhdGUgaGFuZGxlU2lnbmFsZXJpbmdzYmVlbGRJbmZvKHthY3RpZSwgc3RvcmVTdGF0ZX0gOiBBY3RpZUFuZFN0YXRlSW5wdXQpOiAgT2JzZXJ2YWJsZTxJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2JpUmVzb3VyY2UubGFhZFNpZ25hbGVyaW5nc2JlZWxkSW5mbyh0aGlzLmNyZWF0ZVNpZ25hbGVyaW5nc2JlZWxkSW5mb1F1ZXJ5RHRvKGFjdGllLnBwbGdzLCBzdG9yZVN0YXRlLmlhVmVyc2llKSkucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICB0YXAoKGR0b3MpID0+IHRoaXMucHJvY2Vzc1Jlc3BvbnNlKHtkdG9zLCBzdG9yZVN0YXRlLCBhY3RpZX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXNTZXJ2aWNlLnNob3dNZXNzYWdlKE1lc3NhZ2VCdWlsZGVyLm5pZXRHZXZvbmRlblNCSShlcnIpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NSZXNwb25zZSh7IGR0b3MsIHN0b3JlU3RhdGUsIGFjdGllIH06IFNpZ25hbGVyaW5nc2JlZWxkSW5mb0lucHV0KTogdm9pZCAge1xuICAgICAgICBpZiAoZHRvcyAmJiBkdG9zLmZpbHRlcihkdG8gPT4gZHRvLm1ldFZpc3VhbGlzYXRpZSkubGVuZ3RoID4gMTIpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXNTZXJ2aWNlLnNob3dNZXNzYWdlKE1lc3NhZ2VCdWlsZGVyLm1lZXJEYW4xMkJsYWRlbkdldm9uZGVuKGR0b3MubGVuZ3RoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zKGR0b3MsIHN0b3JlU3RhdGUuaWFWZXJzaWUsIGFjdGllLnJpdCwgYWN0aWUucGFnaW5hdGlvblNpemUsIGFjdGllLnJpdEdld2lqemlnZFRvZWdlc3RhYW4pKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRWaXNpYmxlU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcyhkdG9zKSk7XG4gICAgfVxuXG4gICAgbmF2aWdlZXJCdWl0ZW5SaXQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKE1zdEFjdGlvbnMubmF2aWdlZXJCdWl0ZW5SaXQpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlKSxcbiAgICAgICAgc3dpdGNoTWFwKChbYWN0aWUsIHN0b3JlU3RhdGVdKSA9PlxuICAgICAgICAgICAgb2Yoe1xuICAgICAgICAgICAgICAgIHJhbmQ6IHRoaXMuc2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZS5nZXRUb3BvbG9neUVsZW1lbnRCeVB1aWMoYWN0aWUucmFuZFB1aWMpLFxuICAgICAgICAgICAgICAgIHJhbmRQdWljOiBhY3RpZS5yYW5kUHVpYyxcbiAgICAgICAgICAgICAgICBzdG9yZVN0YXRlXG4gICAgICAgICAgICB9KS5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCh0aGlzLmdldE90aGVyUmFuZC5iaW5kKHRoaXMpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAodGhpcy5sb2FkUm91dGVGaWxlc0FuZFNpZ25hbGVyaW5nc2JlZWxkSW5mby5iaW5kKHRoaXMpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAodGhpcy5sb2FkU2lnbmFsZXJpbmdzYmVlbGRlbi5iaW5kKHRoaXMpKSxcbiAgICAgICAgICAgICAgICBtYXAodGhpcy5wcm9jZXNzU3Znc0FuZFVwZGF0ZVJpdGRlbGVuLmJpbmQodGhpcykpXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICApLCB7IGRpc3BhdGNoOiBmYWxzZSB9KTtcblxuICAgIHByaXZhdGUgZ2V0T3RoZXJSYW5kKHsgcmFuZCwgcmFuZFB1aWMsIHN0b3JlU3RhdGV9OiBPdGhlclJhbmRJbnB1dCk6IE9ic2VydmFibGU8T3RoZXJSYW5kUmVzdWx0PiAge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0b3JTZXJ2aWNlLmdldE90aGVyUmFuZChyYW5kUHVpYykucGlwZShcbiAgICAgICAgICAgIG1hcChvdGhlclBwbGcgPT4gKHsgb3RoZXJQcGxnLCByYW5kLCBzdG9yZVN0YXRlIH0pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFJvdXRlRmlsZXNBbmRTaWduYWxlcmluZ3NiZWVsZEluZm8oeyBvdGhlclBwbGcsIHJhbmQsIHN0b3JlU3RhdGUgfTogT3RoZXJSYW5kUmVzdWx0KTogT2JzZXJ2YWJsZTxEdG9zQW5kU3RhdGU+IHtcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmxhYWRSb3V0ZUZpbGVzKHN0b3JlU3RhdGUuaWFWZXJzaWUudmVyc2llLCBbcmFuZC5nZXRQUExHKCksIG90aGVyUHBsZ10pO1xuICAgICAgICByZXR1cm4gdGhpcy5zYmlSZXNvdXJjZS5sYWFkU2lnbmFsZXJpbmdzYmVlbGRJbmZvKHRoaXMuY3JlYXRlU2lnbmFsZXJpbmdzYmVlbGRJbmZvUXVlcnlEdG8oW3JhbmQuZ2V0UFBMRygpLCBvdGhlclBwbGddLCBzdG9yZVN0YXRlLmlhVmVyc2llKSkucGlwZShcbiAgICAgICAgICAgIG1hcChkdG9zID0+ICh7IGR0b3MsIHN0b3JlU3RhdGUgfSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkU2lnbmFsZXJpbmdzYmVlbGRlbih7IGR0b3MsIHN0b3JlU3RhdGUgfTogRHRvc0FuZFN0YXRlKTogT2JzZXJ2YWJsZTxTYlJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3JTZXJ2aWNlLmxhYWRTaWduYWxlcmluZ3NiZWVsZGVuKHN0b3JlU3RhdGUuaWFWZXJzaWUudmVyc2llLCBkdG9zKS5waXBlKFxuICAgICAgICAgICAgbWFwKHN2Z0RhdGFVcmxzID0+ICh7IHN2Z0RhdGFVcmxzLCByaXREZWxlbjogc3RvcmVTdGF0ZS5yaXREZWxlbiwgZHRvcyB9KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NTdmdzQW5kVXBkYXRlUml0ZGVsZW4oeyBzdmdEYXRhVXJscywgcml0RGVsZW4sIGR0b3MgfTogU2JSZXN1bHQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52ZXJ3ZXJrU3ZncyhzdmdEYXRhVXJscyk7XG4gICAgICAgIGNvbnN0IG5pZXV3ZVJpdGRlbGVuID0gdGhpcy51cGRhdGVSaXRkZWxlbihyaXREZWxlbiwgZHRvcyk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTXN0QWN0aW9ucy5VcGRhdGVWaXNpYmxlU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcyhkdG9zKSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goUml0ZGVsZW5BY3Rpb25zLnVwZGF0ZVJpdERlbGVuKG5pZXV3ZVJpdGRlbGVuKSk7XG4gICAgfVxuXG4gICAgdmVyd2Vya1JpdGRlbGVuKGFjdGllOiBhbnksIHN0b3JlU3RhdGU6IE1zdEVkaXRvclN0YXRlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzSW5pdCA9IGFjdGllLnR5cGUgPT09IFJpdGRlbGVuQWN0aW9ucy5TRVRfUklUX0RFTEVOO1xuICAgICAgICBjb25zdCByaXREZWxlbjogUml0ZGVlbFtdID0gaXNJbml0ID8gYWN0aWUucml0RGVsZW4gOiBzdG9yZVN0YXRlLnJpdERlbGVuO1xuICAgICAgICBjb25zdCBzdG9yZUR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSA9IHN0b3JlU3RhdGUuc2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcztcblxuICAgICAgICB0aGlzLm5hdmlnZWVyKHJpdERlbGVuLCBhY3RpZSwgc3RvcmVEdG9zKTtcblxuICAgICAgICBjb25zdCB2aXNpYmxlUml0RGVsZW4gPSByaXREZWxlbi5maWx0ZXIobiA9PiBuLmlzWmljaHRiYWFyQmlubmVuV2luZG93KCkpO1xuICAgICAgICBjb25zdCB2aXNpYmxlUml0UHBsZ3M6IHN0cmluZ1tdID0gdmlzaWJsZVJpdERlbGVuLm1hcChyID0+IHIuZ2V0UHBsZygpKS5maWx0ZXIodGhpcy5kaXN0aW5jdCk7XG5cbiAgICAgICAgY29uc3QgdmlzaWJsZUR0b3MgPSB0aGlzLmJlcGFhbFppY2h0YmFyZUR0b3ModmlzaWJsZVJpdFBwbGdzLCBzdG9yZUR0b3MpO1xuICAgICAgICBjb25zdCBsb2FkaW5nRHRvcyA9IHRoaXMuYmVwYWFsVG9Mb2FkRHRvcyh2aXNpYmxlRHRvcywgcml0RGVsZW4sIHZpc2libGVSaXREZWxlbiwgdmlzaWJsZVJpdFBwbGdzLCBzdG9yZVN0YXRlKTtcblxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UubGFhZFNpZ25hbGVyaW5nc2JlZWxkZW4oYWN0aWUuaWF2ZXJzaWVpbmZvLnZlcnNpZSwgbG9hZGluZ0R0b3MpLnBpcGUoXG4gICAgICAgICAgICB0YXAoc3ZnRGF0YVVybHMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmVyd2Vya1N2Z3Moc3ZnRGF0YVVybHMpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUocml0RGVsZW4sIHZpc2libGVEdG9zLCBzdG9yZVN0YXRlLCB2aXNpYmxlUml0UHBsZ3MsIGxvYWRpbmdEdG9zLCBpc0luaXQsIHN0b3JlRHRvcyk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzU2VydmljZS5zaG93TWVzc2FnZShNZXNzYWdlQnVpbGRlci5yd3BEYXRhTmlldEdldm9uZGVuKFV0aWxzLmdldFZhbGlkRXJvcnJNZXNzYWdlKGVycikpKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9KVxuICAgICAgICApLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU3RhdGUocml0RGVsZW46IFJpdGRlZWxbXSwgdmlzaWJsZUR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSwgc3RvcmVTdGF0ZTogTXN0RWRpdG9yU3RhdGUsIHZpc2libGVSaXRQcGxnczogc3RyaW5nW10sIGxvYWRpbmdEdG9zOiBhbnlbXSwgaXNJbml0OiBib29sZWFuLCBzdG9yZUR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5pZXV3ZVJpdGRlbGVuID0gdGhpcy51cGRhdGVSaXRkZWxlbihyaXREZWxlbiwgdmlzaWJsZUR0b3MpO1xuICAgICAgICAgICAgdGhpcy5kZWJ1Z0xvZyhzdG9yZVN0YXRlLmRlYnVnLCB2aXNpYmxlUml0UHBsZ3MsIGxvYWRpbmdEdG9zKTtcblxuICAgICAgICAgICAgaWYgKCFpc0luaXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKE1zdEFjdGlvbnMuVXBkYXRlU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcyhzdG9yZUR0b3MpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKE1zdEFjdGlvbnMuVXBkYXRlVmlzaWJsZVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MobG9hZGluZ0R0b3MpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goUml0ZGVsZW5BY3Rpb25zLnVwZGF0ZVJpdERlbGVuKG5pZXV3ZVJpdGRlbGVuKSk7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlU2lnbmFsZXJpbmdzYmVlbGRJbmZvUXVlcnlEdG8ocHBsZ3M6IHN0cmluZ1tdLCBpYWluZm86IEluZnJhTW9kZWwpOiBhbnkge1xuICAgICAgICBjb25zdCBkYXR1bSA9IGlhaW5mby5pbmdhbmdzRGF0dW0gJiYgIWlzTmFOKGlhaW5mby5pbmdhbmdzRGF0dW0uZ2V0VGltZSgpKSA/IGlhaW5mby5pbmdhbmdzRGF0dW0udG9JU09TdHJpbmcoKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHsgcHBsZ3MsIHZlcnNpZTogaWFpbmZvLnZlcnNpZSwgaW5nYW5nc0RhdHVtOiBkYXR1bSB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgdmVyd2Vya1N2Z3Moc3ZnRGF0YVVybHM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTXN0QWN0aW9ucy5TZXRTdmdJbmZvcyh0aGlzLmJlcGFhbFN2Z0luZm9zKHN2Z0RhdGFVcmxzKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsU3ZnSW5mb3Moc3ZnRGF0YVVybHM6IHN0cmluZ1tdKTogU3ZnSW5mb1tdIHtcbiAgICAgICAgbGV0IG5leHRDb29yZHMgPSBuZXcgUG9pbnQoMCwgMCk7XG4gICAgICAgIGNvbnN0IGluZm9zOiBTdmdJbmZvW10gPSBbXTtcbiAgICAgICAgc3ZnRGF0YVVybHMuZm9yRWFjaChzdmdEYXRhVXJsID0+IHtcbiAgICAgICAgICAgIGlmIChzdmdEYXRhVXJsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjb2RlZCA9IGF0b2Ioc3ZnRGF0YVVybC5zdWJzdHJpbmcoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsJy5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICBpbmZvcy5wdXNoKG5ldyBTdmdJbmZvKCdkYXRhOmltYWdlL3N2Zyt4bWwsJyArIGRlY29kZWQsIG5leHRDb29yZHMpKTtcbiAgICAgICAgICAgICAgICBuZXh0Q29vcmRzID0gbmV3IFBvaW50KG5leHRDb29yZHMueCArIElteFZpZXdlckNvbXBvbmVudC5nZXRYQ29vcmRpbmF0ZShkZWNvZGVkKSArIHRoaXMuU1ZHX1BJWEVMX1JVSU1URSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaW5mb3M7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxUb0xvYWREdG9zKHZpc2libGVEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10sIHJpdERlbGVuOiBSaXRkZWVsW10sIHZpc2libGVSaXREZWxlbjogUml0ZGVlbFtdLCB2aXNpYmxlUml0UHBsZ3M6IHN0cmluZ1tdLCBzdG9yZVN0YXRlOiBNc3RFZGl0b3JTdGF0ZSk6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSB7XG4gICAgICAgIGNvbnN0IGxvYWRpbmdEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10gPSBbLi4udmlzaWJsZUR0b3NdO1xuICAgICAgICBjb25zdCBmaXJzdElkeCA9IHJpdERlbGVuLmluZGV4T2YodmlzaWJsZVJpdERlbGVuWzBdKSAtIDE7XG4gICAgICAgIHRoaXMuYWRkUHJldk5vblZpc2libGVEdG8oZmlyc3RJZHgsIHJpdERlbGVuLCBsb2FkaW5nRHRvcywgdmlzaWJsZVJpdFBwbGdzLCBzdG9yZVN0YXRlLnNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MpO1xuICAgICAgICBjb25zdCBsYXN0SWR4ID0gcml0RGVsZW4uaW5kZXhPZih2aXNpYmxlUml0RGVsZW5bdmlzaWJsZVJpdERlbGVuLmxlbmd0aCAtIDFdKSArIDE7XG4gICAgICAgIHRoaXMuYWRkTmV4dE5vblZpc2libGVEdG8obGFzdElkeCwgcml0RGVsZW4sIGxvYWRpbmdEdG9zLCB2aXNpYmxlUml0UHBsZ3MsIHN0b3JlU3RhdGUuc2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcyk7XG4gICAgICAgIHJldHVybiBsb2FkaW5nRHRvcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbFppY2h0YmFyZUR0b3ModmlzaWJsZVJpdFBwbGdzOiBzdHJpbmdbXSwgZHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdKTogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdIHtcbiAgICAgICAgY29uc3QgdmlzaWJsZUR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSA9IFtdO1xuICAgICAgICB2aXNpYmxlUml0UHBsZ3MuZm9yRWFjaChwcGxnID0+IHtcbiAgICAgICAgICAgIGR0b3MuZmlsdGVyKGR0byA9PiBkdG8ucHBsZ3MuaW5jbHVkZXMocHBsZykpLmZvckVhY2goZHRvID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXZpc2libGVEdG9zLmluY2x1ZGVzKGR0bykpIHtcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUR0b3MucHVzaChkdG8pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmlzaWJsZUR0b3MuZm9yRWFjaChkdG8gPT4gZHRvLm1ldFZpc3VhbGlzYXRpZSA9IHRydWUpO1xuICAgICAgICBkdG9zLmZpbHRlcihkID0+ICF2aXNpYmxlRHRvcy5pbmNsdWRlcyhkKSkuZm9yRWFjaChkID0+IGQubWV0VmlzdWFsaXNhdGllID0gZmFsc2UpO1xuICAgICAgICByZXR1cm4gdmlzaWJsZUR0b3M7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXN0aW5jdCh2YWx1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyLCB2YWx1ZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZXMuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4O1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkUHJldk5vblZpc2libGVEdG8oZmlyc3RJZHg6IG51bWJlciwgcml0ZGVsZW46IFJpdGRlZWxbXSwgbG9hZGluZ0R0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSwgdmlzaWJsZVJpdFBwbGdzOiBzdHJpbmdbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbER0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IHZvaWQge1xuICAgICAgICBpZiAoZmlyc3RJZHggPj0gMCkge1xuICAgICAgICAgICAgY29uc3QgcHBsZyA9IHJpdGRlbGVuW2ZpcnN0SWR4XS5nZXRQcGxnKCk7XG4gICAgICAgICAgICBjb25zdCByaXRkZWVsRHRvcyA9IGFsbER0b3MuZmlsdGVyKGR0byA9PiBkdG8ucHBsZ3MuaW5jbHVkZXMocHBsZykpLmZpbHRlcihkdG8gPT4gIWxvYWRpbmdEdG9zLmluY2x1ZGVzKGR0bykpO1xuXG4gICAgICAgICAgICBpZiAoIXZpc2libGVSaXRQcGxncy5pbmNsdWRlcyhwcGxnKSAmJiByaXRkZWVsRHRvcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcml0ZGVlbER0b3MuZmlsdGVyKGQgPT4gIWxvYWRpbmdEdG9zLmluY2x1ZGVzKGQpKS5mb3JFYWNoKGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkLm1ldFZpc3VhbGlzYXRpZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nRHRvcy5wdXNoKGQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFByZXZOb25WaXNpYmxlRHRvKGZpcnN0SWR4IC0gMSwgcml0ZGVsZW4sIGxvYWRpbmdEdG9zLCB2aXNpYmxlUml0UHBsZ3MsIGFsbER0b3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGROZXh0Tm9uVmlzaWJsZUR0byhsYXN0SWR4OiBudW1iZXIsIHJpdGRlbGVuOiBSaXRkZWVsW10sIGxvYWRpbmdEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10sIHZpc2libGVSaXRQcGxnczogc3RyaW5nW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKGxhc3RJZHggPD0gcml0ZGVsZW4ubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgcHBsZyA9IHJpdGRlbGVuW2xhc3RJZHhdLmdldFBwbGcoKTtcbiAgICAgICAgICAgIGNvbnN0IHJpdGRlZWxEdG9zID0gYWxsRHRvcy5maWx0ZXIoZHRvID0+IGR0by5wcGxncy5pbmNsdWRlcyhwcGxnKSkuZmlsdGVyKGR0byA9PiAhbG9hZGluZ0R0b3MuaW5jbHVkZXMoZHRvKSk7XG5cbiAgICAgICAgICAgIGlmICghdmlzaWJsZVJpdFBwbGdzLmluY2x1ZGVzKHBwbGcpICYmIHJpdGRlZWxEdG9zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByaXRkZWVsRHRvcy5maWx0ZXIoZCA9PiAhbG9hZGluZ0R0b3MuaW5jbHVkZXMoZCkpLmZvckVhY2goZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGQubWV0VmlzdWFsaXNhdGllID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmdEdG9zLnB1c2goZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkTmV4dE5vblZpc2libGVEdG8obGFzdElkeCArIDEsIHJpdGRlbGVuLCBsb2FkaW5nRHRvcywgdmlzaWJsZVJpdFBwbGdzLCBhbGxEdG9zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGVidWdMb2coZGVidWc6IGJvb2xlYW4sIHZpc2libGVSaXRQcGxnczogc3RyaW5nW10sIGxvYWRpbmdEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUklUIFBQTEdzOiAnICsgdmlzaWJsZVJpdFBwbGdzKTtcbiAgICAgICAgICAgIGxvYWRpbmdEdG9zLmZvckVhY2goZHRvID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgc3RyID0gJ1xcbkRUTy1ibGFkTmFhbTogJyArIGR0by5ibGFkTmFhbTtcbiAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcbkRUTy1QUExHcyAgIDogJyArIGR0by5wcGxncztcbiAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcblZpc2libGUgICAgIDogJyArIGR0by5tZXRWaXN1YWxpc2F0aWU7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coc3RyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gYWN0aWVzOiBOYXZpZ2VlcnxOYXZpZ2VlclZhbmFmfFNldFJpdERlbGVuXG4gICAgcHJpdmF0ZSBuYXZpZ2VlcihyaXREZWxlbjogUml0ZGVlbFtdLCBhY3RpZToge1xuICAgICAgICBwYWdpbmF0aW9uU2l6ZTogbnVtYmVyO1xuICAgICAgICBzdGFwU2l6ZTogbnVtYmVyO1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIHJpdGRlZWw6IFJpdGRlZWxcbiAgICB9LCBzdG9yZUR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IHZvaWQge1xuICAgICAgICAvLyBhbGxlIHJpdGRlbGVuIGtyaWpnZW4gemljaHRiYWFyaGVpZEJ1aXRlblBhZ2luYXRpZSA9PiBmYWxzZVxuICAgICAgICBpZiAoYWN0aWUudHlwZSA9PT0gUml0ZGVsZW5BY3Rpb25zLlNFVF9SSVRfREVMRU4pIHtcbiAgICAgICAgICAgIHRoaXMuYmVwYWFsWmljaHRiYWFyaGVpZFJlY2h0cygwLCByaXREZWxlbiwgYWN0aWUucGFnaW5hdGlvblNpemUsIHN0b3JlRHRvcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aWUudHlwZSA9PT0gUml0ZGVsZW5BY3Rpb25zLk5BVklHRUVSKSB7XG4gICAgICAgICAgICBjb25zdCBpc0xpbmtzID0gYWN0aWUuc3RhcFNpemUgPCAwO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IHRoaXMuYmVwYWFsU3RhcnRJbmRleChyaXREZWxlbik7XG4gICAgICAgICAgICBjb25zdCBlbmRJbmRleCA9IHRoaXMuYmVwYWFsRW5kSW5kZXgocml0RGVsZW4pO1xuICAgICAgICAgICAgY29uc3QgbmF2aWdlcmVuTW9nZWxpamsgPSAhKHN0YXJ0SW5kZXggPT09IDAgJiYgaXNMaW5rcyB8fCBlbmRJbmRleCA9PT0gcml0RGVsZW4ubGVuZ3RoIC0gMSAmJiAhaXNMaW5rcyk7XG4gICAgICAgICAgICBpZiAobmF2aWdlcmVuTW9nZWxpamspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNMaW5rcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJlcGFhbFppY2h0YmFhcmhlaWRMaW5rcyhzdGFydEluZGV4LCByaXREZWxlbiwgYWN0aWUucGFnaW5hdGlvblNpemUsIHN0b3JlRHRvcyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iZXBhYWxaaWNodGJhYXJoZWlkUmVjaHRzKGVuZEluZGV4LCByaXREZWxlbiwgYWN0aWUucGFnaW5hdGlvblNpemUsIHN0b3JlRHRvcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGFjdGllLnR5cGUgPT09IFJpdGRlbGVuQWN0aW9ucy5OQVZJR0VFUl9WQU5BRikge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gcml0RGVsZW4uaW5kZXhPZihhY3RpZS5yaXRkZWVsKTtcbiAgICAgICAgICAgIHRoaXMuYmVwYWFsWmljaHRiYWFyaGVpZFJlY2h0cyhpZHgsIHJpdERlbGVuLCBhY3RpZS5wYWdpbmF0aW9uU2l6ZSwgc3RvcmVEdG9zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlUml0ZGVsZW4ocml0ZGVsZW46IFJpdGRlZWxbXSwgdmlzaWJsZUR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSk6IFJpdGRlZWxbXSB7XG4gICAgICAgIGNvbnN0IHZpc2libGVJbmRpY2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcml0ZGVsZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChyaXRkZWxlbltpXS5pc1ppY2h0YmFhckJpbm5lbldpbmRvdygpKSB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZUluZGljZXMucHVzaChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtaW4gPSBNYXRoLm1pbiguLi52aXNpYmxlSW5kaWNlcyk7XG4gICAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLnZpc2libGVJbmRpY2VzKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJpdGRlbGVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCByZCA9IHJpdGRlbGVuW2ldO1xuXG4gICAgICAgICAgICBpZiAocmQuaXNaaWNodGJhYXJCaW5uZW5XaW5kb3coKSkge1xuICAgICAgICAgICAgICAgIHJkLmJlcGFhbFRvcG9sb2dpZUVsZW1lbnRlbih0aGlzLnNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UpO1xuICAgICAgICAgICAgICAgIGlmIChyZC5nZXRUb3BvbG9naWVFbGVtZW50ZW4oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJpdGRlbGVuW2ldID0gcmQuaXNOaWV0QmVzY2hpa2JhYXIoKSA/IHJkLmNvcHlNZXRaaWNodGJhYXJoZWlkKFJpdGRlZWxaaWNodGJhYXJoZWlkLlpJQ0hUQkFBUikgOiByZDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByaXRkZWxlbltpXSA9IHRoaXMubWFha09uemljaHRiYWFyKHJkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVppY2h0YmFhcmhlaWRBYW5ncmVuemVuZGVSaXRkZWxlbihtaW4sIG1heCwgcml0ZGVsZW4sIHZpc2libGVEdG9zKTtcblxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVaaWNodGJhYXJoZWlkQnVpdGVuV2luZG93KHJpdGRlbGVuLCB2aXNpYmxlRHRvcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVaaWNodGJhYXJoZWlkQnVpdGVuV2luZG93KG5pZXV3ZVJpdGRlbGVuOiBSaXRkZWVsW10sIHZpc2libGVEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiBSaXRkZWVsW10ge1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmlldXdlUml0ZGVsZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHJkID0gbmlldXdlUml0ZGVsZW5baV07XG5cbiAgICAgICAgICAgIGlmICghcmQuaXNaaWNodGJhYXIoKSAmJiB0aGlzLmJldmF0R2V2aXN1YWxpc2VlcmRlUHBsZyh2aXNpYmxlRHRvcywgcmQuZ2V0UHBsZygpKSkge1xuICAgICAgICAgICAgICAgIHJkLmJlcGFhbFRvcG9sb2dpZUVsZW1lbnRlbih0aGlzLnNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UpO1xuICAgICAgICAgICAgICAgIGlmIChyZC5nZXRUb3BvbG9naWVFbGVtZW50ZW4oKS5sZW5ndGggPiAwICYmIHRoaXMuaXNFZXJzdGVMYWF0c3RlUHVpY1ppY2h0YmFhcihyZC5nZXRUb3BvbG9naWVFbGVtZW50ZW4oKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbmlldXdlUml0ZGVsZW5baV0gPSByZC5pc05pZXRCZXNjaGlrYmFhcigpID8gcmQuY29weU1ldFppY2h0YmFhcmhlaWRFblBhZ2luYXRpZShSaXRkZWVsWmljaHRiYWFyaGVpZC5aSUNIVEJBQVIsIHRydWUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJkLmNvcHlNZXRaaWNodGJhYXJoZWlkQnVpdGVuUGFnaW5hdGllKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmlldXdlUml0ZGVsZW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVaaWNodGJhYXJoZWlkQWFuZ3JlbnplbmRlUml0ZGVsZW4obWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBuaWV1d2VSaXRkZWxlbjogUml0ZGVlbFtdLCB2aXNpYmxlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdKTogdm9pZCB7XG4gICAgICAgIGxldCBpID0gbWluIC0gMTtcbiAgICAgICAgd2hpbGUgKGkgPj0gMCkge1xuICAgICAgICAgICAgaSA9IHRoaXMudXBkYXRlWmljaHRiYWFySGVpZChpLCAwLCB2aXNpYmxlRHRvcywgbmlldXdlUml0ZGVsZW4pIC0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGkgPSBtYXggKyAxO1xuICAgICAgICB3aGlsZSAoaSA8IG5pZXV3ZVJpdGRlbGVuLmxlbmd0aCkge1xuICAgICAgICAgICAgaSA9IHRoaXMudXBkYXRlWmljaHRiYWFySGVpZChpLCBuaWV1d2VSaXRkZWxlbi5sZW5ndGgsIHZpc2libGVEdG9zLCBuaWV1d2VSaXRkZWxlbikgKyAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVaaWNodGJhYXJIZWlkKGk6IG51bWJlciwgZW5kOiBudW1iZXIsIHZpc2libGVEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10sIG5pZXV3ZVJpdGRlbGVuOiBSaXRkZWVsW10pOiBudW1iZXIge1xuICAgICAgICBjb25zdCByZCA9IG5pZXV3ZVJpdGRlbGVuW2ldO1xuICAgICAgICBpZiAodGhpcy5iZXZhdEdldmlzdWFsaXNlZXJkZVBwbGcodmlzaWJsZUR0b3MsIHJkLmdldFBwbGcoKSkpIHtcbiAgICAgICAgICAgIGkgPSB0aGlzLnVwZGF0ZVppY2h0YmFhcmhlaWRBYW5ncmVuemVuZGVSaXRkZWVsKHJkLCBuaWV1d2VSaXRkZWxlbiwgaSwgZW5kKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGkgPSBlbmQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0VlcnN0ZUxhYXRzdGVQdWljWmljaHRiYWFyKHRvcG9FbGVtZW50ZW46IFRvcG9sb2d5RWxlbWVudFtdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwJyArIHRvcG9FbGVtZW50ZW5bMF0uZ2V0UHVpYygpKSB8fFxuICAgICAgICAgICAgISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncCcgKyB0b3BvRWxlbWVudGVuW3RvcG9FbGVtZW50ZW4ubGVuZ3RoIC0gMV0uZ2V0UHVpYygpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVppY2h0YmFhcmhlaWRBYW5ncmVuemVuZGVSaXRkZWVsKHJkOiBSaXRkZWVsLCBuaWV1d2VSaXRkZWxlbjogUml0ZGVlbFtdLCBpOiBudW1iZXIsIGVuZDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmQuYmVwYWFsVG9wb2xvZ2llRWxlbWVudGVuKHRoaXMuc2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSk7XG4gICAgICAgIGlmIChyZC5nZXRUb3BvbG9naWVFbGVtZW50ZW4oKS5sZW5ndGggPiAwICYmIHRoaXMuaXNFZXJzdGVMYWF0c3RlUHVpY1ppY2h0YmFhcihyZC5nZXRUb3BvbG9naWVFbGVtZW50ZW4oKSkpIHtcbiAgICAgICAgICAgIG5pZXV3ZVJpdGRlbGVuW2ldID0gcmQuaXNOaWV0QmVzY2hpa2JhYXIoKSA/IHJkLmNvcHlNZXRaaWNodGJhYXJoZWlkKFJpdGRlZWxaaWNodGJhYXJoZWlkLlpJQ0hUQkFBUikgOiByZDtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGVuZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJldmF0R2V2aXN1YWxpc2VlcmRlUHBsZyh2aXNpYmxlRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdLCBwcGxnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgZm9yIChjb25zdCBkdG8gb2YgdmlzaWJsZUR0b3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZHRvcHBsZyBvZiBkdG8ucHBsZ3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoZHRvcHBsZyA9PT0gcHBsZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFha09uemljaHRiYWFyKHJkOiBSaXRkZWVsKTogUml0ZGVlbCB7XG4gICAgICAgIHJldHVybiByZC5pc1ppY2h0YmFhcigpIHx8IHJkLmlzT256aWNodGJhYXJEb29yR2VicnVpa2VyKCkgP1xuICAgICAgICAgICAgcmQuY29weU1ldFppY2h0YmFhcmhlaWRFblBhZ2luYXRpZShSaXRkZWVsWmljaHRiYWFyaGVpZC5PTlpJQ0hUQkFBUl9ET09SX1NZU1RFRU0sIGZhbHNlKSA6XG4gICAgICAgICAgICByZC5jb3B5TWV0WmljaHRiYWFyaGVpZEJ1aXRlblBhZ2luYXRpZShmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxaaWNodGJhYXJoZWlkUmVjaHRzKGlkeDogbnVtYmVyLCBpdGVtczogUml0ZGVlbFtdLCBwYWdpbmF0aW9uU2l6ZTogbnVtYmVyLCBkdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHBsZ3NXaW5kb3c6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IGR0b3NXaW5kb3c6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCByZCA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgaWYgKGkgPj0gaWR4ICYmIHRoaXMudmFsdEJpbm5lblBhZ2luYXRpZVdpbmRvdyhwcGxnc1dpbmRvdywgcGFnaW5hdGlvblNpemUsIGR0b3NXaW5kb3cpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRaaWNodGJhYXIocmQsIHBwbGdzV2luZG93LCBkdG9zLCBkdG9zV2luZG93LCBpdGVtcywgaSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGl0ZW1zW2ldID0gcmQuaXNaaWNodGJhYXIoKSB8fCByZC5pc09uemljaHRiYWFyRG9vckdlYnJ1aWtlcigpID9cbiAgICAgICAgICAgICAgICAgICAgcmQuY29weU1ldFppY2h0YmFhcmhlaWRFblBhZ2luYXRpZShSaXRkZWVsWmljaHRiYWFyaGVpZC5PTlpJQ0hUQkFBUl9ET09SX1NZU1RFRU0sIGZhbHNlKSA6XG4gICAgICAgICAgICAgICAgICAgIHJkLmNvcHlNZXRaaWNodGJhYXJoZWlkQnVpdGVuUGFnaW5hdGllKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsWmljaHRiYWFyaGVpZExpbmtzKGlkeDogbnVtYmVyLCBpdGVtczogUml0ZGVlbFtdLCBwYWdpbmF0aW9uU2l6ZTogbnVtYmVyLCBkdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHBsZ3NXaW5kb3c6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IGR0b3NXaW5kb3c6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gaXRlbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHJkID0gaXRlbXNbaV07XG4gICAgICAgICAgICBpZiAoaSA8PSBpZHggJiYgdGhpcy52YWx0QmlubmVuUGFnaW5hdGllV2luZG93KHBwbGdzV2luZG93LCBwYWdpbmF0aW9uU2l6ZSwgZHRvc1dpbmRvdykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFppY2h0YmFhcihyZCwgcHBsZ3NXaW5kb3csIGR0b3MsIGR0b3NXaW5kb3csIGl0ZW1zLCBpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXRlbXNbaV0gPSByZC5pc1ppY2h0YmFhcigpIHx8IHJkLmlzT256aWNodGJhYXJEb29yR2VicnVpa2VyKCkgP1xuICAgICAgICAgICAgICAgICAgICByZC5jb3B5TWV0WmljaHRiYWFyaGVpZEVuUGFnaW5hdGllKFJpdGRlZWxaaWNodGJhYXJoZWlkLk9OWklDSFRCQUFSX0RPT1JfU1lTVEVFTSwgZmFsc2UpIDpcbiAgICAgICAgICAgICAgICAgICAgcmQuY29weU1ldFppY2h0YmFhcmhlaWRCdWl0ZW5QYWdpbmF0aWUoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWx0QmlubmVuUGFnaW5hdGllV2luZG93KHBwbGdzV2luZG93OiBzdHJpbmdbXSwgcGFnaW5hdGlvblNpemU6IG51bWJlciwgZHRvc1dpbmRvdzogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBwcGxnc1dpbmRvdy5sZW5ndGggPCBwYWdpbmF0aW9uU2l6ZSB8fCBkdG9zV2luZG93Lmxlbmd0aCA8IHBhZ2luYXRpb25TaXplO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0WmljaHRiYWFyKHJkOiBSaXRkZWVsLCBwcGxnc1dpbmRvdzogc3RyaW5nW10sIGR0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSwgZHRvc1dpbmRvdzogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdLCBpdGVtczogUml0ZGVlbFtdLCBpOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbVBwbGcgPSByZC5nZXRQcGxnKCk7XG4gICAgICAgIGlmICghcHBsZ3NXaW5kb3cuaW5jbHVkZXMoaXRlbVBwbGcpKSB7XG4gICAgICAgICAgICBwcGxnc1dpbmRvdy5wdXNoKGl0ZW1QcGxnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBwbGdEdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10gPSBbXTtcbiAgICAgICAgZHRvcy5maWx0ZXIoZHRvID0+IGR0by5wcGxncy5pbmNsdWRlcyhpdGVtUHBsZykpLmZvckVhY2goZHRvID0+IHtcbiAgICAgICAgICAgIGlmICghcHBsZ0R0b3MuaW5jbHVkZXMoZHRvKSkge1xuICAgICAgICAgICAgICAgIHBwbGdEdG9zLnB1c2goZHRvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHBsZ0R0b3MuZmlsdGVyKGQgPT4gIWR0b3NXaW5kb3cuaW5jbHVkZXMoZCkpLmZvckVhY2goZCA9PiBkdG9zV2luZG93LnB1c2goZCkpO1xuXG4gICAgICAgIGl0ZW1zW2ldID0gIXJkLmlzWmljaHRiYWFyKCkgPyByZC5jb3B5TWV0WmljaHRiYWFyaGVpZEVuUGFnaW5hdGllKFJpdGRlZWxaaWNodGJhYXJoZWlkLlpJQ0hUQkFBUiwgZmFsc2UpIDpcbiAgICAgICAgICAgIHJkLmNvcHlNZXRaaWNodGJhYXJoZWlkQnVpdGVuUGFnaW5hdGllKGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbFN0YXJ0SW5kZXgocml0RGVsZW46IFJpdGRlZWxbXSk6IG51bWJlciB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcml0RGVsZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChyaXREZWxlbltpXS5pc0Jpbm5lbldpbmRvdygpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsRW5kSW5kZXgocml0RGVsZW46IFJpdGRlZWxbXSk6IG51bWJlciB7XG4gICAgICAgIGZvciAobGV0IGkgPSByaXREZWxlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKHJpdERlbGVuW2ldLmlzQmlubmVuV2luZG93KCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxufVxuIl19
|
|
@@ -4515,11 +4515,11 @@ class LaadSignaleringsbeeldenEffect {
|
|
|
4515
4515
|
return this.sbiResource.laadSignaleringsbeeldInfo(this.createSignaleringsbeeldInfoQueryDto([rand.getPPLG(), otherPplg], storeState.iaVersie)).pipe(map(dtos => ({ dtos, storeState })));
|
|
4516
4516
|
}
|
|
4517
4517
|
loadSignaleringsbeelden({ dtos, storeState }) {
|
|
4518
|
-
return this.editorService.laadSignaleringsbeelden(storeState.iaVersie.versie, dtos).pipe(map(svgDataUrls => ({ svgDataUrls, storeState, dtos })));
|
|
4518
|
+
return this.editorService.laadSignaleringsbeelden(storeState.iaVersie.versie, dtos).pipe(map(svgDataUrls => ({ svgDataUrls, ritDelen: storeState.ritDelen, dtos })));
|
|
4519
4519
|
}
|
|
4520
|
-
processSvgsAndUpdateRitdelen({ svgDataUrls,
|
|
4520
|
+
processSvgsAndUpdateRitdelen({ svgDataUrls, ritDelen, dtos }) {
|
|
4521
4521
|
this.verwerkSvgs(svgDataUrls);
|
|
4522
|
-
const nieuweRitdelen = this.updateRitdelen(
|
|
4522
|
+
const nieuweRitdelen = this.updateRitdelen(ritDelen, dtos);
|
|
4523
4523
|
this.store.dispatch(UpdateVisibleSignaleringsbeeldInfoDtos(dtos));
|
|
4524
4524
|
this.store.dispatch(updateRitDelen(nieuweRitdelen));
|
|
4525
4525
|
}
|