@vendasta/meetings 1.5.4 → 1.5.6

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.
@@ -506,6 +506,11 @@ export class HostService {
506
506
  .checkGroupOrServiceSlugExist(req)
507
507
  .pipe(map((res) => res.exists));
508
508
  }
509
+ checkEventTypeSlugExist(req) {
510
+ return this.hostAPIService
511
+ .checkEventTypeSlugExist(req)
512
+ .pipe(map((res) => res.exists));
513
+ }
509
514
  getEntityAssociations(req) {
510
515
  return this.hostAPIService.getEntityAssociations(req);
511
516
  }
@@ -548,4 +553,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImpor
548
553
  type: Injectable,
549
554
  args: [{ providedIn: "root" }]
550
555
  }], ctorParameters: function () { return [{ type: i1.MeetingHostApiService }]; } });
551
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvaG9zdC9ob3N0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQWVMLGdDQUFnQyxFQUdoQyxxQkFBcUIsRUFDckIsbUJBQW1CLEVBR25CLFNBQVMsRUFFVCxRQUFRLEdBT1QsTUFBTSxjQUFjLENBQUM7QUFJdEIsT0FBTyxFQUlMLGVBQWUsRUFFZixZQUFZLEVBRVosWUFBWSxFQUNaLGNBQWMsRUFJZCxjQUFjLEVBR2Qsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsa0JBQWtCLEVBRWxCLGNBQWMsRUFDZCxnQkFBZ0IsRUFBWSxlQUFlLEdBQzVDLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0Isa0NBQWtDLEdBQ25DLE1BQU0sT0FBTyxDQUFDO0FBQ2YsT0FBTyxFQUFZLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBSXhFLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQW9CLGNBQXFDO1FBQXJDLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtJQUFHLENBQUM7SUFFN0Qsa0hBQWtIO0lBQ2xILFdBQVcsQ0FBQyxHQUdYO1FBQ0MsT0FBTyxJQUFJLENBQUMsY0FBYzthQUN2QixXQUFXLENBQUM7WUFDWCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07WUFDbEIsd0ZBQXdGO1lBQ3hGLDRCQUE0QixFQUMxQixHQUFHLENBQUMsNEJBQWdFO1NBQ3ZFLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGlCQUFpQixDQUFDLGtCQUEwQjtRQUMxQyxPQUFPLElBQUksQ0FBQyxjQUFjO2FBQ3ZCLGlCQUFpQixDQUFDLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzthQUM3RCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQTJCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLGNBQWM7YUFDdkIsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUMzQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsNEJBQTRCLENBQUMsR0FHNUI7UUFDQyxPQUFPLElBQUksQ0FBQyxjQUFjO2FBQ3ZCLDRCQUE0QixDQUFDO1lBQzVCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtZQUNsQiw0QkFBNEIsRUFDMUIsR0FBRyxDQUFDLDRCQUFnRTtTQUN2RSxDQUFDO2FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQseUJBQXlCLENBQUMsR0FFekI7UUFDQyxPQUFPLElBQUksQ0FBQyxjQUFjO2FBQ3ZCLHlCQUF5QixDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUMzRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7UUFHSTtJQUNKLGNBQWMsQ0FDWixHQUFtQztRQUVuQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxVQUFrQixFQUFFLE9BQWU7UUFDcEQsT0FBTyxJQUFJLENBQUMsY0FBYzthQUN2QixjQUFjLENBQUM7WUFDZCxVQUFVLEVBQUUsVUFBVTtZQUN0QixjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQ2pDLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1NBQy9CLENBQUM7YUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELHlCQUF5QixDQUN2QixVQUFrQixFQUNsQixzQkFBZ0M7UUFFaEMsT0FBTyxJQUFJLENBQUMsY0FBYzthQUN2QixjQUFjLENBQUM7WUFDZCxVQUFVLEVBQUUsVUFBVTtZQUN0QixjQUFjLEVBQUUsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUU7WUFDdkQsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUU7U0FDeEMsQ0FBQzthQUNELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsMkJBQTJCLENBQUMsR0FHM0I7UUFDQyxPQUFPLElBQUksQ0FBQyxjQUFjO2FBQ3ZCLDJCQUEyQixDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUM3RCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDVixJQUFJLENBQUMsR0FBRyxFQUFFLHVCQUF1QixFQUFFO2dCQUNqQyxPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLE1BQU0sQ0FDcEQsQ0FBQyx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsRUFBRTtnQkFDdkMsTUFBTSxZQUFZLEdBQUcsQ0FDbkIsR0FBRyxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxFQUFFLFlBQVksSUFBSSxFQUFFLENBQzVELENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDWCxrQkFBa0IsQ0FBQztvQkFDakIsY0FBYyxFQUFFLEVBQUU7b0JBQ2xCLFdBQVcsRUFBRSxrQkFBa0IsRUFBRTt3QkFDL0IsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJO3dCQUNsQixDQUFDLENBQUMsV0FBVyxDQUFDLElBQUk7b0JBQ3BCLFVBQVU7b0JBQ1YsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO2lCQUN2QixDQUFDLENBQ0gsQ0FBQztnQkFDRixPQUFPO29CQUNMLEdBQUcsd0JBQXdCO29CQUMzQixDQUFDLFVBQVUsQ0FBQyxFQUFFLFlBQVk7aUJBQzNCLENBQUM7WUFDSixDQUFDLEVBQ0QsRUFBNkMsQ0FDOUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7OztRQU1JO0lBQ0osZ0JBQWdCLENBQUMsR0FJaEI7UUFDQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNuRCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUMvQixPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO2dCQUNsQyxPQUFPLGtCQUFrQixDQUFDO29CQUN4QixjQUFjLEVBQUUsRUFBRTtvQkFDbEIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxNQUFNO29CQUN0QixXQUFXLEVBQUUsa0JBQWtCLEVBQUU7d0JBQy9CLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSTt3QkFDbEIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJO29CQUNwQixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7b0JBQ3RCLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWTtpQkFDL0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7Ozs7U0FTSztJQUNMLGFBQWEsQ0FBQyxHQVNiO1FBQ0MsT0FBTyxFQUFFLENBQ1AsMkJBQTJCLENBQUM7WUFDMUIsR0FBRyxHQUFHO1lBQ04sVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLE1BQU07WUFDeEMsV0FBVyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJO1lBQ3ZFLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWTtTQUMvQixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7OztTQU9LO0lBQ0wsb0JBQW9CLENBQUMsR0FJcEI7UUFDQyxPQUFPLEVBQUUsQ0FDUCxrQ0FBa0MsQ0FBQztZQUNqQyxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUk7WUFDdkUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVO1lBQzFCLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtZQUN0QixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7U0FDL0IsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O1NBUUs7SUFDTCxtQkFBbUIsQ0FDakIsR0FBdUMsRUFDdkMsUUFBcUMsRUFDckMsWUFBcUI7UUFFckIsT0FBTyxFQUFFLENBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUU7WUFDOUMsT0FBTztnQkFDTCxHQUFHLE9BQU87Z0JBQ1YsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUNsQyxDQUFDLGNBQWMsRUFBRSxlQUFlLEVBQUUsRUFBRTtvQkFDbEMsT0FBTzt3QkFDTCxHQUFHLGNBQWM7d0JBQ2pCLENBQUMsZUFBZSxDQUFDLEVBQUUsMkJBQTJCLENBQUM7NEJBQzdDLFVBQVU7NEJBQ1YsZUFBZTs0QkFDZixRQUFROzRCQUNSLFdBQVcsRUFBRSxrQkFBa0IsRUFBRTtnQ0FDL0IsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJO2dDQUNsQixDQUFDLENBQUMsV0FBVyxDQUFDLElBQUk7NEJBQ3BCLFlBQVk7eUJBQ2IsQ0FBQztxQkFDSCxDQUFDO2dCQUNKLENBQUMsRUFDRCxFQUF5QyxDQUMxQzthQUNGLENBQUM7UUFDSixDQUFDLEVBQUUsRUFBZ0IsQ0FBQyxDQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBRWhCO1FBQ0MsT0FBTyxJQUFJLENBQUMsY0FBYzthQUN2QixnQkFBZ0IsQ0FBQyxHQUFHLENBQUM7YUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQThCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELHNCQUFzQixDQUFDLEdBU3RCO1FBQ0MsTUFBTSxNQUFNLEdBQUc7WUFDYixHQUFHLEdBQUc7WUFDTixRQUFRLEVBQUUsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztTQUNyQyxDQUFDO1FBQ0YsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQy9DO1FBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsR0FLbEI7UUFDQyxPQUFPLElBQUksQ0FBQyxjQUFjO2FBQ3ZCLGtCQUFrQixDQUFDO1lBQ2xCLEdBQUcsR0FBRztZQUNOLGFBQWEsRUFBRSxJQUFJLG1CQUFtQixDQUFDO2dCQUNyQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07Z0JBQ2xCLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTthQUN2QixDQUFDO1lBQ0YsT0FBTyxFQUFFLElBQUksZ0NBQWdDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUMxRCxRQUFRLEVBQUUsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztTQUNyQyxDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLElBQWdDLEVBQUUsRUFBRTtZQUN2QyxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDckQsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUN4QixDQUFDO1lBQ0YsT0FBTyxJQUFJLGFBQWEsQ0FDdEIsUUFBUSxFQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FDNUIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQsYUFBYSxDQUFDLEdBR2I7UUFDQyxPQUFPLElBQUksQ0FBQyxjQUFjO2FBQ3ZCLGFBQWEsQ0FBQztZQUNiLEdBQUcsR0FBRztTQUNQLENBQUM7YUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQXVDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLGNBQWM7YUFDdkIsaUJBQWlCLENBQUM7WUFDakIsR0FBRyxHQUFHO1NBQ1AsQ0FBQzthQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FJaEI7UUFDQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNuRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNmLE1BQU0sT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQztpQkFDL0MsTUFBTSxDQUFDLE9BQU8sQ0FBQztpQkFDZixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDVCxPQUFPO29CQUNMLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLEVBQUU7b0JBQ3RCLGFBQWEsRUFBRSxDQUFDLENBQUMsYUFBYSxJQUFJLEVBQUU7b0JBQ3BDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRztvQkFDVixRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7b0JBQ3BCLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtpQkFDckIsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0wsT0FBTyxJQUFJLGFBQWEsQ0FDdEIsT0FBTyxFQUNQLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUM1QixRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FDMUIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSCxpQkFBaUIsQ0FBQyxHQUlqQjtRQUNDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQztZQUM3QixDQUFDLEVBQUUsR0FBRyxDQUFDLFdBQVc7WUFDbEIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO1NBQy9CLENBQUMsQ0FBQztRQUNILElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sRUFBRSxFQUFFLENBQUM7U0FDYjtRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWM7YUFDdkIscUJBQXFCLENBQUM7WUFDckIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1lBQ2xCLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVztZQUM1QixTQUFTO1NBQ1YsQ0FBQzthQUNELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYyxDQUFDLEdBQXVCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLGNBQWM7YUFDdkIsa0JBQWtCLENBQUM7WUFDbEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1NBQ25CLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBaUIsRUFBRSxRQUFnQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxjQUFjO2FBQ3ZCLGNBQWMsQ0FBQztZQUNkLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQUM7YUFDRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsSUFBNEIsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUNwRSxDQUFDO0lBQ04sQ0FBQztJQUVELHFCQUFxQixDQUFDLEdBR3JCO1FBQ0MsT0FBTyxJQUFJLENBQUMsY0FBYzthQUN2QixxQkFBcUIsQ0FBQztZQUNyQixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7WUFDeEIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1NBQ3ZCLENBQUM7YUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxHQWFmO1FBQ0MsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQztZQUN6QyxHQUFHLEdBQUc7WUFDTixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FDYixHQUFvQztRQUVwQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO1lBQ3pDLEdBQUcsR0FBRztTQUNQLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBb0M7UUFDOUMsT0FBTyxJQUFJLENBQUMsY0FBYzthQUN2QixXQUFXLENBQUMsR0FBRyxDQUFDO2FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUE2QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsc0dBQXNHO0lBQ3RHLCtFQUErRTtJQUMvRSx5QkFBeUIsQ0FBQyxHQUE4QjtRQUN0RCxPQUFPLElBQUksQ0FBQyxjQUFjO2FBQ3ZCLHlCQUF5QixDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUMzRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBSWpCO1FBQ0MsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDO1lBQzdCLENBQUMsRUFBRSxHQUFHLENBQUMsV0FBVztZQUNsQixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7U0FDL0IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDaEMsT0FBTyxFQUFFLEVBQUUsQ0FBQztTQUNiO1FBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYzthQUN2QixpQkFBaUIsQ0FBQztZQUNqQixXQUFXLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9ELFNBQVM7WUFDVCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07U0FDbkIsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNILGlCQUFpQixDQUFDLEdBS2pCO1FBQ0MsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDO1lBQzdCLENBQUMsRUFBRSxHQUFHLENBQUMsV0FBVztZQUNsQixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7U0FDL0IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDaEMsT0FBTyxFQUFFLEVBQUUsQ0FBQztTQUNiO1FBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYzthQUN2QixpQkFBaUIsQ0FBQztZQUNqQixFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDVixXQUFXLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9ELFNBQVM7WUFDVCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07U0FDbkIsQ0FBQzthQUNELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBbUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsY0FBYzthQUN2QixpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUEyQjtRQUk3QyxPQUFPLElBQUksQ0FBQyxjQUFjO2FBQ3ZCLG1CQUFtQixDQUFDLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNuRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDVixNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ3ZELE9BQU8sZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUMsd0JBQXdCLElBQUksRUFBRSxDQUFDO1lBRTdELE9BQU87Z0JBQ0wsU0FBUztnQkFDVCxpQkFBaUI7YUFDbEIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQsb0JBQW9CLENBQ2xCLEdBQXlDO1FBRXpDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsdUJBQXVCLENBQ3JCLEdBQTRDO1FBRTVDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBSWI7UUFDQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUM7WUFDN0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1lBQ2QsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO1NBQy9CLENBQUMsQ0FBQztRQUNILElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sRUFBRSxFQUFFLENBQUM7U0FDYjtRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWM7YUFDdkIsYUFBYSxDQUFDO1lBQ2IsT0FBTyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuRCxTQUFTO1lBQ1QsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1NBQ25CLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBS2I7UUFDQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUM7WUFDN0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1lBQ2QsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO1NBQy9CLENBQUMsQ0FBQztRQUNILElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sRUFBRSxFQUFFLENBQUM7U0FDYjtRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWM7YUFDdkIsYUFBYSxDQUFDO1lBQ2IsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ1YsT0FBTyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuRCxTQUFTO1lBQ1QsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1NBQ25CLENBQUM7YUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFtQztRQUMvQyxPQUFPLElBQUksQ0FBQyxjQUFjO2FBQ3ZCLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDakQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxZQUFZLENBQUMsR0FBdUI7UUFDbEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ2xFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ1YsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pCLE9BQU8sRUFBRSxDQUFDO2FBQ1g7WUFDRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDbEMsY0FBYyxDQUFDO2dCQUNiLFVBQVUsRUFBRSxPQUFPO2dCQUNuQixXQUFXLEVBQUUsa0JBQWtCLEVBQUU7b0JBQy9CLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSTtvQkFDbEIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJO2FBQ3JCLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsR0FJWDtRQUNDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQztZQUM3QixDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUs7WUFDWixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7U0FDL0IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDaEMsT0FBTyxFQUFFLEVBQUUsQ0FBQztTQUNiO1FBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYzthQUN2QixXQUFXLENBQUM7WUFDWCxLQUFLLEVBQUUsY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQyxTQUFTO1lBQ1QsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1NBQ25CLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBS1g7UUFDQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUM7WUFDN0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1lBQ1osWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO1NBQy9CLENBQUMsQ0FBQztRQUNILElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sRUFBRSxFQUFFLENBQUM7U0FDYjtRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWM7YUFDdkIsV0FBVyxDQUFDO1lBQ1gsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ1YsS0FBSyxFQUFFLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0MsU0FBUztZQUNULE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtTQUNuQixDQUFDO2FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBbUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsY0FBYzthQUN2QixXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQy9DLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQXVCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNoRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFO2dCQUN2QixPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0QsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQzlCLFlBQVksQ0FBQztnQkFDWCxRQUFRLEVBQUUsS0FBSztnQkFDZixXQUFXLEVBQUUsa0JBQWtCLEVBQUU7b0JBQy9CLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSTtvQkFDbEIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJO2FBQ3JCLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRLENBQUMsR0FJUjtRQUNDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUlWO1FBQ0MsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsNEJBQTRCLENBQUMsR0FJNUI7UUFDQyxPQUFPLElBQUksQ0FBQyxjQUFjO2FBQ3ZCLDRCQUE0QixDQUFDLEdBQUcsQ0FBQzthQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQscUJBQXFCLENBQUMsR0FFckI7UUFDQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELGdDQUFnQyxDQUFDLEdBRWhDO1FBQ0MsT0FBTyxJQUFJLENBQUMsY0FBYzthQUN2QixnQ0FBZ0MsQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDaEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUduQjtRQUNDLE9BQU8sSUFBSSxDQUFDLGNBQWM7YUFDdkIsbUJBQW1CLENBQUM7WUFDbkIsR0FBRyxHQUFHO1NBQ1AsQ0FBQzthQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsYUFBYSxDQUFDLEdBR2I7UUFDQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxhQUFhLENBQUMsR0FHYjtRQUNDLE9BQU8sSUFBSSxDQUFDLGNBQWM7YUFDckIsYUFBYSxDQUFDO1lBQ2IsR0FBRyxHQUFHO1NBQ1AsQ0FBQzthQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBK0U7UUFDL0YsT0FBTyxJQUFJLENBQUMsY0FBYzthQUNyQixpQkFBaUIsQ0FBQztZQUNqQixHQUFHLEdBQUc7U0FDUCxDQUFDO2FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxnQ0FBZ0MsQ0FBQyxHQUtoQztRQUNDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQ0FBZ0MsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ2pFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNuRixDQUFBO0lBQ0gsQ0FBQzs7d0dBMXdCVSxXQUFXOzRHQUFYLFdBQVcsY0FERSxNQUFNOzJGQUNuQixXQUFXO2tCQUR2QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBtYXAsIG1hcFRvIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQge1xuICBBdmFpbGFiaWxpdHlSdWxlTGlzdCxcbiAgQ2hlY2tHcm91cE9yU2VydmljZVNsdWdFeGlzdFJlc3BvbnNlLFxuICBDcmVhdGVDYWxlbmRhclJlcXVlc3RJbnRlcmZhY2UsXG4gIENyZWF0ZUNhbGVuZGFyUmVzcG9uc2UsXG4gIERheU9mV2VlayxcbiAgR2V0R3JvdXBSZXNwb25zZSxcbiAgR2V0SG9zdE1lZXRpbmdSZXNwb25zZSxcbiAgR2V0U2VydmljZVJlc3BvbnNlLFxuICBIb3N0Qm9va01lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlLFxuICBIb3N0Qm9va01lZXRpbmdSZXNwb25zZSxcbiAgSXNDYWxlbmRhckNvbmZpZ3VyZWRSZXF1ZXN0SW50ZXJmYWNlLFxuICBJc0NhbGVuZGFyQ29uZmlndXJlZFJlc3BvbnNlLFxuICBJc0hvc3RDb25maWd1cmVkUmVzcG9uc2UsXG4gIExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSxcbiAgTGlzdEJvb2tlZE1lZXRpbmdzUmVxdWVzdEZpbHRlcnMsXG4gIExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlLFxuICBMaXN0Qm9va2VkTWVldGluZ3NSZXNwb25zZSxcbiAgTWVldGluZ0hvc3RBcGlTZXJ2aWNlLFxuICBQYWdlZFJlcXVlc3RPcHRpb25zLFxuICBQYWdlZFJlcXVlc3RPcHRpb25zSW50ZXJmYWNlLFxuICBTZW5kTWVldGluZ1JlcXVlc3RFbWFpbFJlcXVlc3RJbnRlcmZhY2UsXG4gIFRpbWVSYW5nZSxcbiAgVGltZVJhbmdlSW50ZXJmYWNlLFxuICBUaW1lWm9uZSxcbiAgVGltZVpvbmVJbnRlcmZhY2UsXG4gIFdlZWtkYXlBdmFpbGFiaWxpdHksXG4gIENvbnRhY3QsXG4gIEVtYWlsc1RvRGVsZXRlLFxuICBIb3N0Qm9va1Nlc3Npb25SZXF1ZXN0SW50ZXJmYWNlLFxuICBMaXN0QXR0ZW5kZWVzUmVzcG9uc2UsIERhdGVSYW5nZSwgQm9va2luZ1NvdXJjZSxcbn0gZnJvbSBcIi4uL19pbnRlcm5hbFwiO1xuXG5pbXBvcnQgeyBCb29rTWVldGluZ1Jlc3BvbnNlLCBCb29rU2Vzc2lvblJlc3BvbnNlIH0gZnJvbSBcIi4uL2d1ZXN0XCI7XG5cbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXNTZXQsXG4gIEF2YWlsYWJpbGl0eVJ1bGUsXG4gIENhbGVuZGFyLFxuICBDYWxlbmRhckZyb21BcGksXG4gIEVudGl0eUFzc29jaWF0aW9ucyxcbiAgZ2V0RmllbGRNYXNrLFxuICBHcm91cCxcbiAgR3JvdXBGcm9tQXBpLFxuICBHcm91cFR5cGVUb0FQaSxcbiAgSG9zdFVybE1hcCxcbiAgTWVldGluZyxcbiAgTWVldGluZ0Zvcm0sXG4gIG1lZXRpbmdGcm9tQXBpLFxuICBNZWV0aW5nTWV0YWRhdGEsXG4gIE1lZXRpbmdUeXBlLFxuICBNZWV0aW5nVHlwZUZyb21BcGksXG4gIE1lZXRpbmdUeXBlVG9BcGksXG4gIFBhZ2VkUmVzcG9uc2UsXG4gIFByZWZlcmVuY2VzLFxuICBQcmVmZXJlbmNlc0Zyb21BcGksXG4gIFNlcnZpY2UsXG4gIFNlcnZpY2VGcm9tQXBpLFxuICBTZXJ2aWNlVHlwZVRvQXBpLCBUaW1lU3BhbiwgVGltZVNwYW5Gcm9tQXBpLFxufSBmcm9tIFwiLi4vc2hhcmVkXCI7XG5pbXBvcnQge1xuICBnZXRCb29raW5nVXJsSW1wbGVtZW50YXRpb24sXG4gIGdldEdlbmVyYWxCb29raW5nVXJsSW1wbGVtZW50YXRpb24sXG59IGZyb20gXCIuL3VybFwiO1xuaW1wb3J0IHsgSG9zdFVzZXIsIGhvc3RVc2VyRnJvbUFwaSB9IGZyb20gXCIuLi9zaGFyZWQvaG9zdC11c2VyXCI7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCwgb25Qcm9kdWN0aW9uR2xvYmFsIH0gZnJvbSBcIi4uL3NoYXJlZC9lbnZpcm9ubWVudFwiO1xuaW1wb3J0IHsgSHR0cFJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBIb3N0U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaG9zdEFQSVNlcnZpY2U6IE1lZXRpbmdIb3N0QXBpU2VydmljZSkge31cblxuICAvLyBVc2UgYnVpbGRIb3N0SWQgdG8gZ2V0IGFuIGlkZW50aWZpZXIgdGhhdCBjYW4gYmUgdXNlZCBpbiBzdWJzZXF1ZW50IHJlcXVlc3RzLiBTZWUgdmVuZGFzdGFhcGlzIGZvciBtb3JlIGRldGFpbHNcbiAgYnVpbGRIb3N0SWQocmVxOiB7XG4gICAgdXNlcklkOiBzdHJpbmc7XG4gICAgYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllczogQXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllc1NldDtcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5idWlsZEhvc3RJZCh7XG4gICAgICAgIHVzZXJJZDogcmVxLnVzZXJJZCxcbiAgICAgICAgLy8gR3Jvc3MgdHlwZWNhc3QgZXhpc3RzIGJlY2F1c2UgSSB3YW50IHRvIHJlc3RyaWN0IHRoZSBwcm9wZXJ0aWVzIG9uIHRoZSBtYXAgKGZvciBub3cpLlxuICAgICAgICBhcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzOlxuICAgICAgICAgIHJlcS5hcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzIGFzIGFueSBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiByZXMuaG9zdElkIHx8IFwiXCIpKTtcbiAgfVxuXG4gIGRvZXNDYWxlbmRhckV4aXN0KGNhbGVuZGFySWRlbnRpZmllcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5kb2VzQ2FsZW5kYXJFeGlzdCh7IGNhbGVuZGFySWRlbnRpZmllcjogY2FsZW5kYXJJZGVudGlmaWVyIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3ApID0+IHJlc3AuZXhpc3RzKSk7XG4gIH1cblxuICBnZXRDYWxlbmRhcihyZXE6IHsgY2FsZW5kYXJJZDogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPENhbGVuZGFyPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5nZXRDYWxlbmRhcih7IGNhbGVuZGFySWQ6IHJlcS5jYWxlbmRhcklkIH0pXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gQ2FsZW5kYXJGcm9tQXBpKHJlcz8uY2FsZW5kYXIpKSk7XG4gIH1cblxuICBlbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzKHJlcToge1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIGFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXM6IEFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXNTZXQ7XG4gIH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZW5zdXJlUGVyc29uYWxDYWxlbmRhckV4aXN0cyh7XG4gICAgICAgIHVzZXJJZDogcmVxLnVzZXJJZCxcbiAgICAgICAgYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllczpcbiAgICAgICAgICByZXEuYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllcyBhcyBhbnkgYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gKHJlcyA/IHJlcy5jYWxlbmRhcklkIDogXCJcIikpKTtcbiAgfVxuXG4gIGVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3QocmVxOiB7XG4gICAgZXh0ZXJuYWxJZHM6IHN0cmluZ1tdO1xuICB9KTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdCh7IGV4dGVybmFsSWRzOiByZXEuZXh0ZXJuYWxJZHMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiByZXM/LmNhbGVuZGFySWRzIHx8IFtdKSk7XG4gIH1cblxuICAvKlxuICAgICBjcmVhdGVDYWxlbmRhciBjcmVhdGVzIGEgY2FsZW5kYXIgd2hpY2ggbWVldGluZyB0eXBlcyBjYW4gYmUgY3JlYXRlZCBmb3IgYW5kIGV2ZW50cyBjYW4gYmUgYm9va2VkIG9uXG4gICAgIFRoZSBmaWVsZHMgb2YgYSBjYWxlbmRhciBhcmUgZG9jdW1lbnRlZCBpbiBodHRwczovL2dpdGh1Yi5jb20vdmVuZGFzdGEvdmVuZGFzdGFhcGlzL2Jsb2IvbWFzdGVyL21lZXRpbmdzL3YxL3NoYXJlZC5wcm90b1xuICAgICovXG4gIGNyZWF0ZUNhbGVuZGFyKFxuICAgIHJlcTogQ3JlYXRlQ2FsZW5kYXJSZXF1ZXN0SW50ZXJmYWNlXG4gICk6IE9ic2VydmFibGU8Q3JlYXRlQ2FsZW5kYXJSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmNyZWF0ZUNhbGVuZGFyKHJlcSk7XG4gIH1cblxuICB1cGRhdGVDYWxlbmRhclNsdWcoY2FsZW5kYXJJZDogc3RyaW5nLCBuZXdTbHVnOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLnVwZGF0ZUNhbGVuZGFyKHtcbiAgICAgICAgY2FsZW5kYXJJZDogY2FsZW5kYXJJZCxcbiAgICAgICAgY2FsZW5kYXJVcGRhdGU6IHsgc2x1ZzogbmV3U2x1ZyB9LFxuICAgICAgICBmaWVsZE1hc2s6IHsgcGF0aHM6IFtcInNsdWdcIl0gfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIHVwZGF0ZUNhbGVuZGFySG9zdFVzZXJJRHMoXG4gICAgY2FsZW5kYXJJZDogc3RyaW5nLFxuICAgIHJlcGxhY2VtZW50SG9zdFVzZXJJZHM6IHN0cmluZ1tdXG4gICk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAudXBkYXRlQ2FsZW5kYXIoe1xuICAgICAgICBjYWxlbmRhcklkOiBjYWxlbmRhcklkLFxuICAgICAgICBjYWxlbmRhclVwZGF0ZTogeyBob3N0VXNlcklkczogcmVwbGFjZW1lbnRIb3N0VXNlcklkcyB9LFxuICAgICAgICBmaWVsZE1hc2s6IHsgcGF0aHM6IFtcImhvc3RfdXNlcl9pZHNcIl0gfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFycyhyZXE6IHtcbiAgICBjYWxlbmRhcklkczogc3RyaW5nW107XG4gICAgbWV0YWRhdGE6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICB9KTogT2JzZXJ2YWJsZTx7IFtjYWxlbmRhcklkOiBzdHJpbmddOiBNZWV0aW5nVHlwZVtdIH0+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFycyh7IGNhbGVuZGFySWRzOiByZXEuY2FsZW5kYXJJZHMgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICAgIGlmICghcmVzPy5jYWxlbmRhck1lZXRpbmdUeXBlc01hcCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocmVzLmNhbGVuZGFyTWVldGluZ1R5cGVzTWFwKS5yZWR1Y2UoXG4gICAgICAgICAgICAoY2FsZW5kYXJUb01lZXRpbmdUeXBlTWFwLCBjYWxlbmRhcklkKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1lZXRpbmdUeXBlcyA9IChcbiAgICAgICAgICAgICAgICByZXMuY2FsZW5kYXJNZWV0aW5nVHlwZXNNYXBbY2FsZW5kYXJJZF0/Lm1lZXRpbmdUeXBlcyB8fCBbXVxuICAgICAgICAgICAgICApLm1hcCgobXQpID0+XG4gICAgICAgICAgICAgICAgTWVldGluZ1R5cGVGcm9tQXBpKHtcbiAgICAgICAgICAgICAgICAgIG1lZXRpbmdUeXBlQXBpOiBtdCxcbiAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50OiBvblByb2R1Y3Rpb25HbG9iYWwoKVxuICAgICAgICAgICAgICAgICAgICA/IEVudmlyb25tZW50LlBST0RcbiAgICAgICAgICAgICAgICAgICAgOiBFbnZpcm9ubWVudC5ERU1PLFxuICAgICAgICAgICAgICAgICAgY2FsZW5kYXJJZCxcbiAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5jYWxlbmRhclRvTWVldGluZ1R5cGVNYXAsXG4gICAgICAgICAgICAgICAgW2NhbGVuZGFySWRdOiBtZWV0aW5nVHlwZXMsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge30gYXMgeyBbY2FsZW5kYXJJZDogc3RyaW5nXTogTWVldGluZ1R5cGVbXSB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKlxuICAgICBsaXN0TWVldGluZ1R5cGVzIHJldHVybnMgYSBsaXN0IG9mIG1lZXRpbmcgdHlwZXMgZm9yIGEgaG9zdFxuICAgICBAcGFyYW0gaG9zdElkOiBBbiBpZGVudGlmaWVyIGZvciBhbiBpbmRpdmlkdWFsIGhvc3RcbiAgICAgQHBhcmFtIG1ldGFkYXRhOiBvcHRpb25hbCBtZXRhZGF0YSB0byBpbmNsdWRlIG9uIHRoZSBtZWV0aW5nIHR5cGUgYm9va2luZyBsaW5rXG4gICAgIEBwYXJhbSBjYWxlbmRhclNsdWc6IHVzZWQgdG8gcmVwbGFjZSBob3N0SWQgaW4gdGhlIHVybC4gVXNlIGl0IHdoZW4geW91IGFyZSBjb25maWRlbnQgeW91IGtub3cgdGhlIGhvc3QncyBzbHVnLlxuICAgICAgICAtIGNhbGVuZGFyU2x1ZyBJUyBOT1QgVVNFRCBUTyBSRVRSSUVWRSBNRUVUSU5HIFRZUEVTLCBPTkxZIFRPIE1BS0UgVEhFIEJPT0tJTkcgVVJMU1xuICAgICovXG4gIGxpc3RNZWV0aW5nVHlwZXMocmVxOiB7XG4gICAgaG9zdElkOiBzdHJpbmc7XG4gICAgbWV0YWRhdGE/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBjYWxlbmRhclNsdWc/OiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPE1lZXRpbmdUeXBlW10+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5saXN0TWVldGluZ1R5cGVzKHJlcSkucGlwZShcbiAgICAgIG1hcCgocmVzcCkgPT4ge1xuICAgICAgICBpZiAoIXJlc3AgfHwgIXJlc3AubWVldGluZ1R5cGVzKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwLm1lZXRpbmdUeXBlcy5tYXAoKG10KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIE1lZXRpbmdUeXBlRnJvbUFwaSh7XG4gICAgICAgICAgICBtZWV0aW5nVHlwZUFwaTogbXQsXG4gICAgICAgICAgICBjYWxlbmRhcklkOiByZXEuaG9zdElkLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IG9uUHJvZHVjdGlvbkdsb2JhbCgpXG4gICAgICAgICAgICAgID8gRW52aXJvbm1lbnQuUFJPRFxuICAgICAgICAgICAgICA6IEVudmlyb25tZW50LkRFTU8sXG4gICAgICAgICAgICBtZXRhZGF0YTogcmVxLm1ldGFkYXRhLFxuICAgICAgICAgICAgY2FsZW5kYXJTbHVnOiByZXEuY2FsZW5kYXJTbHVnLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qXG4gICAgIGdldEJvb2tpbmdVcmwgcmV0dXJucyBhIGxpbmsgdGhhdCBjYW4gYmUgdXNlZCB0byBib29rIGEgbWVldGluZyB3aXRoIHRoaXMgaG9zdC5cbiAgICAgQHBhcmFtIGNhbGVuZGFySWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdCBvciBncm91cGluZyBvZiBob3N0cyAoaS5lLiwgdGVhbSkuXG4gICAgIEBwYXJhbSBAZGVwcmVjYXRlZCBob3N0SWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdC5cbiAgICAgQHBhcmFtIG1lZXRpbmdUeXBlSWQ6IEFuIG9wdGlvbmFsIGlkZW50aWZpZXIgZm9yIHRoZSBtZWV0aW5nIHR5cGUuIERlZmF1bHQ6IDMwLW1pbnV0ZXMuXG4gICAgIEBwYXJhbSBtZXRhZGF0YTogb3B0aW9uYWwgbWV0YWRhdGEgdG8gaW5jbHVkZSBpbiB0aGUgdXJsLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIHByZS1maWxsIGNlcnRhaW4gZm9ybSBmaWVsZHMgYW5kIHdpbGwgYmUgc3RvcmVkIGR1cmluZyB0aGUgYm9va2luZyBwcm9jZXNzLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSBvYnRhaW5lZCBieSBzdWJzY3JpYmluZyB0byB0aGUgYm9va2luZyBldmVudC5cbiAgICBAcGFyYW0gY2FsZW5kYXJTbHVnOiB1c2VkIHRvIHJlcGxhY2UgaG9zdElkIGluIHRoZSB1cmwuIFVzZSBpdCB3aGVuIHlvdSBhcmUgY29uZmlkZW50IHlvdSBrbm93IHRoZSBob3N0J3Mgc2x1Zy5cbiAgICAgKi9cbiAgZ2V0Qm9va2luZ1VybChyZXE6IHtcbiAgICAvLyBAZGVwcmVjYXRlZDogdXNlIGNhbGVuZGFySWQgaW5zdGVhZC4gY2FsZW5kYXJJZCBub3QgcmVxdWlyZWQgdG8gYXZvaWQgYnJlYWtpbmcgZXhpc3RpbmcgY2xpZW50cy5cbiAgICBob3N0SWQ6IHN0cmluZztcbiAgICBjYWxlbmRhcklkPzogc3RyaW5nO1xuICAgIC8vIEBkZXByZWNhdGVkOiB1c2UgbWVldGluZ1R5cGVTbHVnIGluc3RlYWRcbiAgICBtZWV0aW5nVHlwZUlkPzogc3RyaW5nO1xuICAgIG1lZXRpbmdUeXBlU2x1Zz86IHN0cmluZztcbiAgICBtZXRhZGF0YT86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG9mKFxuICAgICAgZ2V0Qm9va2luZ1VybEltcGxlbWVudGF0aW9uKHtcbiAgICAgICAgLi4ucmVxLFxuICAgICAgICBjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZCB8fCByZXEuaG9zdElkLFxuICAgICAgICBlbnZpcm9ubWVudDogb25Qcm9kdWN0aW9uR2xvYmFsKCkgPyBFbnZpcm9ubWVudC5QUk9EIDogRW52aXJvbm1lbnQuREVNTyxcbiAgICAgICAgY2FsZW5kYXJTbHVnOiByZXEuY2FsZW5kYXJTbHVnLFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLypcbiAgICAgZ2V0R2VuZXJhbEJvb2tpbmdVcmwgcmV0dXJucyBhIGxpbmsgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWxlY3QgYSBtZWV0aW5nIHR5cGUgdG8gYm9vayB3aXRoIHRoZSBnaXZlbiBjYWxlbmRhci5cbiAgICAgQHBhcmFtIGNhbGVuZGFySWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdCBvciBncm91cGluZyBvZiBob3N0cyAoaS5lLiwgdGVhbSkuXG4gICAgIEBwYXJhbSBtZXRhZGF0YTogb3B0aW9uYWwgbWV0YWRhdGEgdG8gaW5jbHVkZSBpbiB0aGUgdXJsLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIHByZS1maWxsIGNlcnRhaW4gZm9ybSBmaWVsZHMgYW5kIHdpbGwgYmUgc3RvcmVkIGR1cmluZyB0aGUgYm9va2luZyBwcm9jZXNzLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSBvYnRhaW5lZCBieSBzdWJzY3JpYmluZyB0byB0aGUgYm9va2luZyBldmVudC5cbiAgICAgQHBhcmFtIGNhbGVuZGFyU2x1ZzogdXNlZCB0byByZXBsYWNlIGhvc3RJZCBpbiB0aGUgdXJsLiBVc2UgaXQgd2hlbiB5b3UgYXJlIGNvbmZpZGVudCB5b3Uga25vdyB0aGUgaG9zdCdzIHNsdWcuXG4gICAgICovXG4gIGdldEdlbmVyYWxCb29raW5nVXJsKHJlcToge1xuICAgIGNhbGVuZGFySWQ6IHN0cmluZztcbiAgICBtZXRhZGF0YT86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG9mKFxuICAgICAgZ2V0R2VuZXJhbEJvb2tpbmdVcmxJbXBsZW1lbnRhdGlvbih7XG4gICAgICAgIGVudmlyb25tZW50OiBvblByb2R1Y3Rpb25HbG9iYWwoKSA/IEVudmlyb25tZW50LlBST0QgOiBFbnZpcm9ubWVudC5ERU1PLFxuICAgICAgICBjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZCxcbiAgICAgICAgbWV0YWRhdGE6IHJlcS5tZXRhZGF0YSxcbiAgICAgICAgY2FsZW5kYXJTbHVnOiByZXEuY2FsZW5kYXJTbHVnLFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLypcbiAgICAgZ2V0Qm9va2luZ1VybHNNdWx0aSByZXR1cm5zIGEgbWFwcGluZyBvZiBob3N0cyAtPiBldmVudCB0eXBlcyAtPiBib29raW5nIGxpbmtzLlxuICAgICBAcGFyYW0gY2FsZW5kYXJJZDogQW4gaWRlbnRpZmllciBmb3IgYW4gaW5kaXZpZHVhbCBob3N0IG9yIGdyb3VwaW5nIG9mIGhvc3RzLlxuICAgICBAcGFyYW0gbWVldGluZ1R5cGVTbHVnOiBtZWV0aW5nVHlwZVNsdWdzIGFyZSBwYXNzZWQgaW4gdGhlIGZvcm0ge2hvc3RJZDogW21lZXRpbmdUeXBlU2x1ZzEsIG1lZXRpbmdUeXBlU2x1ZzJdfVxuICAgICBAcGFyYW0gbWV0YWRhdGE6IG9wdGlvbmFsIG1ldGFkYXRhIHRvIGluY2x1ZGUgaW4gdGhlIHVybC5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBwcmUtZmlsbCBjZXJ0YWluIGZvcm0gZmllbGRzIGFuZCB3aWxsIGJlIHN0b3JlZCBkdXJpbmcgdGhlIGJvb2tpbmcgcHJvY2Vzcy5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgb2J0YWluZWQgYnkgc3Vic2NyaWJpbmcgdG8gdGhlIGJvb2tpbmcgZXZlbnQuXG4gICAgIEBwYXJhbSBjYWxlbmRhclNsdWc6IHVzZWQgdG8gcmVwbGFjZSBob3N0SWQgaW4gdGhlIHVybC4gVXNlIGl0IHdoZW4geW91IGFyZSBjb25maWRlbnQgeW91IGtub3cgdGhlIGhvc3QncyBzbHVnLlxuICAgICAqL1xuICBnZXRCb29raW5nVXJsc011bHRpKFxuICAgIHJlcTogeyBbY2FsZW5kYXJJZDogc3RyaW5nXTogc3RyaW5nW10gfSxcbiAgICBtZXRhZGF0YT86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPEhvc3RVcmxNYXA+IHtcbiAgICByZXR1cm4gb2YoXG4gICAgICBPYmplY3Qua2V5cyhyZXEpLnJlZHVjZSgoaG9zdE1hcCwgY2FsZW5kYXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmhvc3RNYXAsXG4gICAgICAgICAgW2NhbGVuZGFySWRdOiByZXFbY2FsZW5kYXJJZF0ucmVkdWNlKFxuICAgICAgICAgICAgKG1lZXRpbmdUeXBlTWFwLCBtZWV0aW5nVHlwZVNsdWcpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5tZWV0aW5nVHlwZU1hcCxcbiAgICAgICAgICAgICAgICBbbWVldGluZ1R5cGVTbHVnXTogZ2V0Qm9va2luZ1VybEltcGxlbWVudGF0aW9uKHtcbiAgICAgICAgICAgICAgICAgIGNhbGVuZGFySWQsXG4gICAgICAgICAgICAgICAgICBtZWV0aW5nVHlwZVNsdWcsXG4gICAgICAgICAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50OiBvblByb2R1Y3Rpb25HbG9iYWwoKVxuICAgICAgICAgICAgICAgICAgICA/IEVudmlyb25tZW50LlBST0RcbiAgICAgICAgICAgICAgICAgICAgOiBFbnZpcm9ubWVudC5ERU1PLFxuICAgICAgICAgICAgICAgICAgY2FsZW5kYXJTbHVnLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHt9IGFzIHsgW21lZXRpbmdUeXBlSWQ6IHN0cmluZ106IHN0cmluZyB9XG4gICAgICAgICAgKSxcbiAgICAgICAgfTtcbiAgICAgIH0sIHt9IGFzIEhvc3RVcmxNYXApXG4gICAgKTtcbiAgfVxuXG4gIGlzSG9zdENvbmZpZ3VyZWQocmVxOiB7XG4gICAgaG9zdElkOiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuaXNIb3N0Q29uZmlndXJlZChyZXEpXG4gICAgICAucGlwZShtYXAoKHJlc3A6IElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZSkgPT4gcmVzcCkpO1xuICB9XG5cbiAgc2V0R2VuZXJhbEF2YWlsYWJpbGl0eShyZXE6IHtcbiAgICBob3N0SWQ6IHN0cmluZztcbiAgICBtZWV0aW5nVHlwZUlkOiBzdHJpbmc7XG4gICAgLy8gQGRlcHJlY2F0ZWQ6IHVzZSB3ZWVrZGF5c0F2YWlsYWJpbGl0eSBpbnN0ZWFkXG4gICAgZGF5cz86IERheU9mV2Vla1tdO1xuICAgIC8vIEBkZXByZWNhdGVkOiB1c2Ugd2Vla2RheXNBdmFpbGFiaWxpdHkgaW5zdGVhZFxuICAgIHRpbWVTbG90PzogVGltZVJhbmdlSW50ZXJmYWNlO1xuICAgIHdlZWtkYXlzQXZhaWxhYmlsaXR5PzogV2Vla2RheUF2YWlsYWJpbGl0eVtdO1xuICAgIHRpbWVab25lOiBUaW1lWm9uZUludGVyZmFjZTtcbiAgfSk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIGNvbnN0IGFwaVJlcSA9IHtcbiAgICAgIC4uLnJlcSxcbiAgICAgIHRpbWVab25lOiBuZXcgVGltZVpvbmUocmVxLnRpbWVab25lKSxcbiAgICB9O1xuICAgIGlmIChyZXEudGltZVNsb3QpIHtcbiAgICAgIGFwaVJlcS50aW1lU2xvdCA9IG5ldyBUaW1lUmFuZ2UocmVxLnRpbWVTbG90KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2Uuc2V0R2VuZXJhbEF2YWlsYWJpbGl0eShhcGlSZXEpLnBpcGUobWFwVG8obnVsbCkpO1xuICB9XG5cbiAgbGlzdEJvb2tlZE1lZXRpbmdzKHJlcToge1xuICAgIGZpbHRlcnM6IExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlO1xuICAgIGN1cnNvcjogc3RyaW5nO1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlO1xuICB9KTogT2JzZXJ2YWJsZTxQYWdlZFJlc3BvbnNlPE1lZXRpbmc+PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5saXN0Qm9va2VkTWVldGluZ3Moe1xuICAgICAgICAuLi5yZXEsXG4gICAgICAgIHBhZ2luZ09wdGlvbnM6IG5ldyBQYWdlZFJlcXVlc3RPcHRpb25zKHtcbiAgICAgICAgICBjdXJzb3I6IHJlcS5jdXJzb3IsXG4gICAgICAgICAgcGFnZVNpemU6IHJlcS5wYWdlU2l6ZSxcbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcnM6IG5ldyBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVycyhyZXEuZmlsdGVycyksXG4gICAgICAgIHRpbWVab25lOiBuZXcgVGltZVpvbmUocmVxLnRpbWVab25lKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwOiBMaXN0Qm9va2VkTWVldGluZ3NSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lZXRpbmdzID0gKHJlc3AubWVldGluZ3MgfHwgW10pLm1hcCgobWVldGluZykgPT5cbiAgICAgICAgICAgIG1lZXRpbmdGcm9tQXBpKG1lZXRpbmcpXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gbmV3IFBhZ2VkUmVzcG9uc2UoXG4gICAgICAgICAgICBtZWV0aW5ncyxcbiAgICAgICAgICAgIHJlc3AucGFnaW5nTWV0YWRhdGEubmV4dEN1cnNvcixcbiAgICAgICAgICAgIHJlc3AucGFnaW5nTWV0YWRhdGEuaGFzTW9yZVxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgY2FuY2VsTWVldGluZyhyZXE6IHtcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcbiAgICBjYW5jZWxsYXRpb25SZWFzb246IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuY2FuY2VsTWVldGluZyh7XG4gICAgICAgIC4uLnJlcSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyhudWxsKSk7XG4gIH1cblxuICByZXNjaGVkdWxlTWVldGluZyhyZXE6IHsgbWVldGluZ0lkOiBzdHJpbmc7IHN0YXJ0OiBEYXRlIH0pOiBPYnNlcnZhYmxlPG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLnJlc2NoZWR1bGVNZWV0aW5nKHtcbiAgICAgICAgLi4ucmVxLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRvKG51bGwpKTtcbiAgfVxuXG4gIGxpc3RBdmFpbGFiaWxpdHkocmVxOiB7XG4gICAgZmlsdGVyczogTGlzdEF2YWlsYWJpbGl0eVJlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlO1xuICAgIHBhZ2luZ09wdGlvbnM6IFBhZ2VkUmVxdWVzdE9wdGlvbnNJbnRlcmZhY2U7XG4gICAgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlO1xuICB9KTogT2JzZXJ2YWJsZTxQYWdlZFJlc3BvbnNlPEF2YWlsYWJpbGl0eVJ1bGU+PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdEF2YWlsYWJpbGl0eShyZXEpLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSAocmVzcG9uc2UuYXZhaWxhYmlsaXR5UnVsZXMgfHwgW10pXG4gICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgIC5tYXAoKGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGhvc3RJZDogYS5ob3N0SWQgfHwgXCJcIixcbiAgICAgICAgICAgICAgbWVldGluZ1R5cGVJZDogYS5tZWV0aW5nVHlwZUlkIHx8IFwiXCIsXG4gICAgICAgICAgICAgIGRheTogYS5kYXksXG4gICAgICAgICAgICAgIHRpbWVTbG90OiBhLnRpbWVTbG90LFxuICAgICAgICAgICAgICB0aW1lWm9uZTogYS50aW1lWm9uZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgUGFnZWRSZXNwb25zZShcbiAgICAgICAgICByZXN1bHRzLFxuICAgICAgICAgIHJlc3BvbnNlLm1ldGFkYXRhLm5leHRDdXJzb3IsXG4gICAgICAgICAgcmVzcG9uc2UubWV0YWRhdGEuaGFzTW9yZVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyogdXBkYXRlUHJlZmVyZW5jZXMgd2lsbCB1cGRhdGUgdGhlIGhvc3QncyBwcmVmZXJlbmNlcy5cbiAgICogSXQgaXMgZ3VhcmFudGVlZCB0byBvbmx5IHVwZGF0ZSB0aGUgZmllbGRzIHByb3ZpZGVkLlxuICAgKiBGb3IgZXhhbXBsZTpcbiAgICogIHVwZGF0ZVByZWZlcmVuY2VzKHttZWV0aW5nSW50ZWdyYXRpb246IE1lZXRpbmdTb3VyY2UuTUVFVElOR19TT1VSQ0VfR09PR0xFX01FRVR9KVxuICAgKiAgd2lsbCBvbmx5IHVwZGF0ZSB0aGUgcHJlZmVyZW5jZSBtZWV0aW5nSW50ZWdyYXRpb24gdG8gR29vZ2xlIE1lZXQuIEtlZXBpbmcgdGhlIG90aGVyIHByZWZlcmVuY2VzIHRoZSBzYW1lLlxuICAgKlxuICAgKiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHByb3ZpZGUgYSBsaXN0IG9mIGtleXMgdG8gdXBkYXRlIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuXG4gICAqIEZvciBleGFtcGxlOlxuICAgKiAgIHVwZGF0ZVByZWZlcmVuY2VzKHsuLi5vYmplY3Qgd2l0aCBhbGwgZmllbGRzfSwgWydtZWV0aW5nSW50ZWdyYXRpb24nXSlcbiAgICogICB3aWxsIG9ubHkgdXBkYXRlIHRoZSBmaWVsZCAnbWVldGluZ0ludGVncmF0aW9uJyB0byB0aGUgdmFsdWUgaW4gcHJlZmVyZW5jZXMuXG4gICAqXG4gICAqIENhbGxpbmcgd2l0aCBhbiBlbXB0eSBvYmplY3QgYW5kIG5vIGtleXMgaXMgYSBuby1vcCwgb3IgYW4gdW5kZWZpbmVkIG9iamVjdC5cbiAgICogQ2FsbGluZyB3aXRoIGFuIG9iamVjdCBjb250YWluaW5nIGZpZWxkcyBub3QgaW4gYFByZWZlcmVuY2VzYCBvciB3aXRoIHVwZGF0ZUZpZWxkcyBub3QgbGlua2VkIHRvIHByb3BlcnRpZXMgaW5cbiAgICogYFByZWZlcmVuY2VzYCBpcyBhbiBlcnJvci5cbiAgICovXG4gIHVwZGF0ZVByZWZlcmVuY2VzKHJlcToge1xuICAgIGhvc3RJZDogc3RyaW5nO1xuICAgIHByZWZlcmVuY2VzOiBQYXJ0aWFsPFByZWZlcmVuY2VzPjtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgUHJlZmVyZW5jZXMpW107XG4gIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBmaWVsZE1hc2sgPSBnZXRGaWVsZE1hc2soe1xuICAgICAgbzogcmVxLnByZWZlcmVuY2VzLFxuICAgICAgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzLFxuICAgIH0pO1xuICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC51cGRhdGVIb3N0UHJlZmVyZW5jZXMoe1xuICAgICAgICBob3N0SWQ6IHJlcS5ob3N0SWQsXG4gICAgICAgIHByZWZlcmVuY2VzOiByZXEucHJlZmVyZW5jZXMsXG4gICAgICAgIGZpZWxkTWFzayxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGdldFByZWZlcmVuY2VzKHJlcTogeyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxQcmVmZXJlbmNlcz4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZ2V0SG9zdFByZWZlcmVuY2VzKHtcbiAgICAgICAgaG9zdElkOiByZXEuaG9zdElkLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2UpID0+IFByZWZlcmVuY2VzRnJvbUFwaShyZXNwb25zZS5wcmVmZXJlbmNlcykpKTtcbiAgfVxuXG4gIGdldE1lZXRpbmcobWVldGluZ0lkOiBzdHJpbmcsIGxvY2F0aW9uOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE1lZXRpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmdldEhvc3RNZWV0aW5nKHtcbiAgICAgICAgbWVldGluZ0lkOiBtZWV0aW5nSWQsXG4gICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwOiBHZXRIb3N0TWVldGluZ1Jlc3BvbnNlKSA9PiBtZWV0aW5nRnJvbUFwaShyZXNwLm1lZXRpbmcpKVxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZU1lZXRpbmdNZXRhZGF0YShyZXE6IHtcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcbiAgICBtZXRhZGF0YTogTWVldGluZ01ldGFkYXRhO1xuICB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC51cGRhdGVNZWV0aW5nTWV0YWRhdGEoe1xuICAgICAgICBtZWV0aW5nSWQ6IHJlcS5tZWV0aW5nSWQsXG4gICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gIH1cblxuICBob3N0Qm9va01lZXRpbmcocmVxOiB7XG4gICAgaG9zdElkOiBzdHJpbmc7XG4gICAgbWVldGluZ1R5cGVJZDogc3RyaW5nO1xuICAgIHN0YXJ0OiBEYXRlO1xuICAgIGNvbW1lbnQ6IHN0cmluZztcbiAgICBtZXRhZGF0YT86IE1lZXRpbmdNZXRhZGF0YTtcbiAgICBhdHRlbmRlZXM6IChPbWl0PFxuICAgICAgQ29udGFjdCxcbiAgICAgIFwiZnJvbVByb3RvXCIgfCBcInRvQXBpSnNvblwiIHwgXCJjb25zdHJ1Y3RvclwiIHwgXCJ0aW1lWm9uZVwiXG4gICAgPiAmIHsgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlIH0pW107XG4gICAgbG9jYXRpb24/OiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nO1xuICAgIGJvb2tpbmdTb3VyY2U/OiBCb29raW5nU291cmNlO1xuICB9KTogT2JzZXJ2YWJsZTxCb29rTWVldGluZ1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuaG9zdEJvb2tNZWV0aW5nKHtcbiAgICAgIC4uLnJlcSxcbiAgICAgIGF0dGVuZGVlczogcmVxLmF0dGVuZGVlcyxcbiAgICB9KTtcbiAgfVxuXG4gIGhvc3RCb29rU2Vzc2lvbihcbiAgICByZXE6IEhvc3RCb29rU2Vzc2lvblJlcXVlc3RJbnRlcmZhY2VcbiAgKTogT2JzZXJ2YWJsZTxCb29rU2Vzc2lvblJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuaG9zdEJvb2tTZXNzaW9uKHtcbiAgICAgIC4uLnJlcSxcbiAgICB9KTtcbiAgfVxuXG4gIGJvb2tNZWV0aW5nKHJlcTogSG9zdEJvb2tNZWV0aW5nUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5ib29rTWVldGluZyhyZXEpXG4gICAgICAucGlwZShtYXAoKHJlc3A6IEhvc3RCb29rTWVldGluZ1Jlc3BvbnNlKSA9PiByZXNwLm1lZXRpbmdJZCkpO1xuICB9XG5cbiAgLy8gY3JlYXRlRGVmYXVsdE1lZXRpbmdUeXBlcyB3aWxsIGNyZWF0ZSB3aGF0IE1lZXRpbmcgU2NoZWR1bGVyIGRlZW1zIHRvIGJlIHRoZSBkZWZhdWx0IG1lZXRpbmcgdHlwZXMuXG4gIC8vIElmIHRoZSBjYWxlbmRhciBhbHJlYWR5IGhhcyBtZWV0aW5nIHR5cGVzLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBuby1vcC5cbiAgY3JlYXRlRGVmYXVsdE1lZXRpbmdUeXBlcyhyZXE6IHsgY2FsZW5kYXJJZHM6IHN0cmluZ1tdIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmNyZWF0ZURlZmF1bHRNZWV0aW5nVHlwZXMoeyBjYWxlbmRhcklkczogcmVxLmNhbGVuZGFySWRzIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGNyZWF0ZU1lZXRpbmdUeXBlKHJlcToge1xuICAgIG1lZXRpbmdUeXBlOiBNZWV0aW5nVHlwZTtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgTWVldGluZ1R5cGUpW107XG4gICAgSG9zdElkPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCBmaWVsZE1hc2sgPSBnZXRGaWVsZE1hc2soe1xuICAgICAgbzogcmVxLm1lZXRpbmdUeXBlLFxuICAgICAgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzLFxuICAgIH0pO1xuICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5jcmVhdGVNZWV0aW5nVHlwZSh7XG4gICAgICAgIG1lZXRpbmdUeXBlOiBNZWV0aW5nVHlwZVRvQXBpKHsgbWVldGluZ1R5cGU6IHJlcS5tZWV0aW5nVHlwZSB9KSxcbiAgICAgICAgZmllbGRNYXNrLFxuICAgICAgICBob3N0SWQ6IHJlcS5Ib3N0SWQsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKChyZXMpID0+IHJlcy5pZCkpO1xuICB9XG5cbiAgLyogdXBkYXRlTWVldGluZ1R5cGUgd2lsbCB1cGRhdGUgdGhlIG1lZXRpbmcgdHlwZSBmaWVsZHMuXG4gICAqIEl0IGlzIGd1YXJhbnRlZWQgdG8gb25seSB1cGRhdGUgdGhlIGZpZWxkcyBwcm92aWRlZC5cbiAgICogRm9yIGV4YW1wbGU6XG4gICAqICB1cGRhdGVNZWV0aW5nVHlwZSh7bmFtZTogJ09uYm9hcmRpbmcnfSlcbiAgICogIHdpbGwgb25seSB1cGRhdGUgdGhlIGZpZWxkICduYW1lJyB0byAnT25ib2FyZGluZycuIEtlZXBpbmcgdGhlIG90aGVyIGZpZWxkcyB0aGUgc2FtZS5cbiAgICpcbiAgICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBwcm92aWRlIGEgbGlzdCBvZiBrZXlzIHRvIHVwZGF0ZSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LlxuICAgKiBGb3IgZXhhbXBsZTpcbiAgICogICB1cGRhdGVNZWV0aW5nVHlwZSh7Li4ub2JqZWN0IHdpdGggYWxsIGZpZWxkc30sIFsnbmFtZSddKVxuICAgKiAgIHdpbGwgb25seSB1cGRhdGUgdGhlIGZpZWxkICduYW1lJyB0byB0aGUgdmFsdWUgcGFzc2VkIGluLlxuICAgKlxuICAgKiBDYWxsaW5nIHdpdGggYW4gZW1wdHkgb2JqZWN0IGFuZCBubyBrZXlzIGlzIGEgbm8tb3AsIG9yIGFuIHVuZGVmaW5lZCBvYmplY3QuXG4gICAqIENhbGxpbmcgd2l0aCBhbiBvYmplY3QgY29udGFpbmluZyBmaWVsZHMgbm90IGluIGBNZWV0aW5nVHlwZWAgb3Igd2l0aCB1cGRhdGVGaWVsZHMgbm90IGxpbmtlZCB0byBwcm9wZXJ0aWVzIGluXG4gICAqIGBNZWV0aW5nVHlwZWAgaXMgYW4gZXJyb3IuXG4gICAqL1xuICB1cGRhdGVNZWV0aW5nVHlwZShyZXE6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG1lZXRpbmdUeXBlOiBQYXJ0aWFsPE1lZXRpbmdUeXBlPjtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgTWVldGluZ1R5cGUpW107XG4gICAgSG9zdElkPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZmllbGRNYXNrID0gZ2V0RmllbGRNYXNrKHtcbiAgICAgIG86IHJlcS5tZWV0aW5nVHlwZSxcbiAgICAgIHVwZGF0ZUZpZWxkczogcmVxLnVwZGF0ZUZpZWxkcyxcbiAgICB9KTtcbiAgICBpZiAoZmllbGRNYXNrLnBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAudXBkYXRlTWVldGluZ1R5cGUoe1xuICAgICAgICBpZDogcmVxLmlkLFxuICAgICAgICBtZWV0aW5nVHlwZTogTWVldGluZ1R5cGVUb0FwaSh7IG1lZXRpbmdUeXBlOiByZXEubWVldGluZ1R5cGUgfSksXG4gICAgICAgIGZpZWxkTWFzayxcbiAgICAgICAgaG9zdElkOiByZXEuSG9zdElkLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRvKHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgZGVsZXRlTWVldGluZ1R5cGUocmVxOiB7IGlkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZGVsZXRlTWVldGluZ1R5cGUoeyBpZDogcmVxLmlkIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGdldEhvc3RzRm9yQ2FsZW5kYXIocmVxOiB7IGNhbGVuZGFySWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTx7XG4gICAgaG9zdFVzZXJzOiBIb3N0VXNlcltdO1xuICAgIGF2YWlsYWJpbGl0eVJ1bGVzOiB7IFtrZXk6IHN0cmluZ106IEF2YWlsYWJpbGl0eVJ1bGVMaXN0IH07XG4gIH0+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmdldEhvc3RzRm9yQ2FsZW5kYXIoeyBjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZCB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgY29uc3QgaG9zdFVzZXJzID0gKHJlcy5ob3N0VXNlcnMgfHwgW10pLm1hcCgoaG9zdHVzZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBob3N0VXNlckZyb21BcGkoaG9zdHVzZXIpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgYXZhaWxhYmlsaXR5UnVsZXMgPSByZXMuaG9zdFVzZXJBdmFpbGFiaWxpdHlSdWxlIHx8IHt9O1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhvc3RVc2VycyxcbiAgICAgICAgICAgIGF2YWlsYWJpbGl0eVJ1bGVzLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgSXNDYWxlbmRhckNvbmZpZ3VyZWQoXG4gICAgcmVxOiBJc0NhbGVuZGFyQ29uZmlndXJlZFJlcXVlc3RJbnRlcmZhY2VcbiAgKTogT2JzZXJ2YWJsZTxJc0NhbGVuZGFyQ29uZmlndXJlZFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuaXNDYWxlbmRhckNvbmZpZ3VyZWQocmVxKTtcbiAgfVxuXG4gIHNlbmRNZWV0aW5nUmVxdWVzdEVtYWlsKFxuICAgIHJlcTogU2VuZE1lZXRpbmdSZXF1ZXN0RW1haWxSZXF1ZXN0SW50ZXJmYWNlXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2Uuc2VuZE1lZXRpbmdSZXF1ZXN0RW1haWwocmVxKTtcbiAgfVxuXG4gIGNyZWF0ZVNlcnZpY2UocmVxOiB7XG4gICAgc2VydmljZTogU2VydmljZTtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgU2VydmljZSlbXTtcbiAgICBIb3N0SWQ/OiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGNvbnN0IGZpZWxkTWFzayA9IGdldEZpZWxkTWFzayh7XG4gICAgICBvOiByZXEuc2VydmljZSxcbiAgICAgIHVwZGF0ZUZpZWxkczogcmVxLnVwZGF0ZUZpZWxkcyxcbiAgICB9KTtcbiAgICBpZiAoZmllbGRNYXNrLnBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuY3JlYXRlU2VydmljZSh7XG4gICAgICAgIHNlcnZpY2U6IFNlcnZpY2VUeXBlVG9BcGkoeyBzZXJ2aWNlOiByZXEuc2VydmljZSB9KSxcbiAgICAgICAgZmllbGRNYXNrLFxuICAgICAgICBob3N0SWQ6IHJlcS5Ib3N0SWQsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKChyZXMpID0+IHJlcy5pZCkpO1xuICB9XG5cbiAgdXBkYXRlU2VydmljZShyZXE6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHNlcnZpY2U6IFBhcnRpYWw8U2VydmljZT47XG4gICAgdXBkYXRlRmllbGRzPzogKGtleW9mIFNlcnZpY2UpW107XG4gICAgSG9zdElkPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZmllbGRNYXNrID0gZ2V0RmllbGRNYXNrKHtcbiAgICAgIG86IHJlcS5zZXJ2aWNlLFxuICAgICAgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzLFxuICAgIH0pO1xuICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC51cGRhdGVTZXJ2aWNlKHtcbiAgICAgICAgaWQ6IHJlcS5pZCxcbiAgICAgICAgc2VydmljZTogU2VydmljZVR5cGVUb0FwaSh7IHNlcnZpY2U6IHJlcS5zZXJ2aWNlIH0pLFxuICAgICAgICBmaWVsZE1hc2ssXG4gICAgICAgIGhvc3RJZDogcmVxLkhvc3RJZCxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGRlbGV0ZVNlcnZpY2UocmVxOiB7IGlkOiBzdHJpbmc7IGhvc3RJZDogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmRlbGV0ZVNlcnZpY2UoeyBpZDogcmVxLmlkLCBob3N0SWQ6IHJlcS5ob3N0SWQgfSlcbiAgICAgIC5waXBlKG1hcFRvKHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgbGlzdFNlcnZpY2VzKHJlcTogeyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxTZXJ2aWNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5saXN0U2VydmljZXMoeyBob3N0SWQ6IHJlcS5ob3N0SWQgfSkucGlwZShcbiAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgIGlmICghcmVzIHx8ICFyZXMuc2VydmljZXMpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcy5zZXJ2aWNlcy5tYXAoKHNlcnZpY2UpID0+XG4gICAgICAgICAgU2VydmljZUZyb21BcGkoe1xuICAgICAgICAgICAgc2VydmljZUFwaTogc2VydmljZSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiBvblByb2R1Y3Rpb25HbG9iYWwoKVxuICAgICAgICAgICAgICA/IEVudmlyb25tZW50LlBST0RcbiAgICAgICAgICAgICAgOiBFbnZpcm9ubWVudC5ERU1PLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjcmVhdGVHcm91cChyZXE6IHtcbiAgICBncm91cDogR3JvdXA7XG4gICAgdXBkYXRlRmllbGRzPzogKGtleW9mIEdyb3VwKVtdO1xuICAgIEhvc3RJZD86IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgY29uc3QgZmllbGRNYXNrID0gZ2V0RmllbGRNYXNrKHtcbiAgICAgIG86IHJlcS5ncm91cCxcbiAgICAgIHVwZGF0ZUZpZWxkczogcmVxLnVwZGF0ZUZpZWxkcyxcbiAgICB9KTtcbiAgICBpZiAoZmllbGRNYXNrLnBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuY3JlYXRlR3JvdXAoe1xuICAgICAgICBncm91cDogR3JvdXBUeXBlVG9BUGkoeyBncm91cDogcmVxLmdyb3VwIH0pLFxuICAgICAgICBmaWVsZE1hc2ssXG4gICAgICAgIGhvc3RJZDogcmVxLkhvc3RJZCxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gcmVzLmlkKSk7XG4gIH1cblxuICB1cGRhdGVHcm91cChyZXE6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGdyb3VwOiBQYXJ0aWFsPEdyb3VwPjtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgR3JvdXApW107XG4gICAgSG9zdElkPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZmllbGRNYXNrID0gZ2V0RmllbGRNYXNrKHtcbiAgICAgIG86IHJlcS5ncm91cCxcbiAgICAgIHVwZGF0ZUZpZWxkczogcmVxLnVwZGF0ZUZpZWxkcyxcbiAgICB9KTtcbiAgICBpZiAoZmllbGRNYXNrLnBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAudXBkYXRlR3JvdXAoe1xuICAgICAgICBpZDogcmVxLmlkLFxuICAgICAgICBncm91cDogR3JvdXBUeXBlVG9BUGkoeyBncm91cDogcmVxLmdyb3VwIH0pLFxuICAgICAgICBmaWVsZE1hc2ssXG4gICAgICAgIGhvc3RJZDogcmVxLkhvc3RJZCxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGRlbGV0ZUdyb3VwKHJlcTogeyBpZDogc3RyaW5nOyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5kZWxldGVHcm91cCh7IGlkOiByZXEuaWQsIGhvc3RJZDogcmVxLmhvc3RJZCB9KVxuICAgICAgLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gIH1cblxuICBsaXN0R3JvdXBzKHJlcTogeyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxHcm91cFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdEdyb3Vwcyh7IGhvc3RJZDogcmVxLmhvc3RJZCB9KS5waXBlKFxuICAgICAgbWFwKChyZXMpID0+IHtcbiAgICAgICAgaWYgKCFyZXMgfHwgIXJlcy5ncm91cHMpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcy5ncm91cHMubWFwKChncm91cCkgPT5cbiAgICAgICAgICBHcm91cEZyb21BcGkoe1xuICAgICAgICAgICAgZ3JvdXBBcGk6IGdyb3VwLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IG9uUHJvZHVjdGlvbkdsb2JhbCgpXG4gICAgICAgICAgICAgID8gRW52aXJvbm1lbnQuUFJPRFxuICAgICAgICAgICAgICA6IEVudmlyb25tZW50LkRFTU8sXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldEdyb3VwKHJlcToge1xuICAgIGdyb3VwSWQ6IHN0cmluZztcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgaG9zdElkOiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPEdldEdyb3VwUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5nZXRHcm91cChyZXEpO1xuICB9XG4gIGdldFNlcnZpY2UocmVxOiB7XG4gICAgc2VydmljZUlkOiBzdHJpbmc7XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIGhvc3RJZDogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxHZXRTZXJ2aWNlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5nZXRTZXJ2aWNlKHJlcSk7XG4gIH1cblxuICBjaGVja0dyb3VwT3JTZXJ2aWNlU2x1Z0V4aXN0KHJlcToge1xuICAgIGhvc3RJZDogc3RyaW5nO1xuICAgIHNsdWdJZGVudGlmaWVyOiBzdHJpbmc7XG4gICAgY2F0ZWdvcnk6IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuY2hlY2tHcm91cE9yU2VydmljZVNsdWdFeGlzdChyZXEpXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gcmVzLmV4aXN0cykpO1xuICB9XG5cbiAgZ2V0RW50aXR5QXNzb2NpYXRpb25zKHJlcToge1xuICAgIGVudGl0eUlkOiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPEVudGl0eUFzc29jaWF0aW9ucz4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmdldEVudGl0eUFzc29jaWF0aW9ucyhyZXEpO1xuICB9XG5cbiAgZW5zdXJlU2Vzc2lvbkV2ZW50Q2FsZW5kYXJzRXhpc3QocmVxOiB7XG4gICAgZXh0ZXJuYWxJZDogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmVuc3VyZVNlc3Npb25FdmVudENhbGVuZGFyc0V4aXN0KHsgZXh0ZXJuYWxJZDogcmVxLmV4dGVybmFsSWQgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiByZXM/LmNhbGVuZGFySWQgfHwgXCJcIikpO1xuICB9XG5cbiAgaG9zdERlbGV0ZUF0dGVuZGVlcyhyZXE6IHtcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcbiAgICBlbWFpbHNUb0RlbGV0ZTogRW1haWxzVG9EZWxldGVbXTtcbiAgfSk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuaG9zdERlbGV0ZUF0dGVuZGVlcyh7XG4gICAgICAgIC4uLnJlcSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyhudWxsKSk7XG4gIH1cblxuICBsaXN0QXR0ZW5kZWVzKHJlcToge1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIHBhZ2luZ09wdGlvbnM6IFBhZ2VkUmVxdWVzdE9wdGlvbnNJbnRlcmZhY2U7XG4gIH0pOiBPYnNlcnZhYmxlPExpc3RBdHRlbmRlZXNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmxpc3RBdHRlbmRlZXMocmVxKTtcbiAgfVxuXG4gIGNhbmNlbFNlc3Npb24ocmVxOiB7XG4gICAgbWVldGluZ0lkOiBzdHJpbmc7XG4gICAgY2FuY2VsbGF0aW9uUmVhc29uOiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgICAuY2FuY2VsU2Vzc2lvbih7XG4gICAgICAgICAgLi4ucmVxLFxuICAgICAgICB9KVxuICAgICAgICAucGlwZShtYXBUbyhudWxsKSk7XG4gIH1cblxuICByZXNjaGVkdWxlU2Vzc2lvbihyZXE6IHsgbWVldGluZ0lkOiBzdHJpbmc7IHN0YXJ0OiBEYXRlOyBzZXNzaW9uSWQ6IHN0cmluZywgaXNSZWN1cnJpbmc6Ym9vbGVhbiB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgICAgLnJlc2NoZWR1bGVTZXNzaW9uKHtcbiAgICAgICAgICAuLi5yZXEsXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKG1hcFRvKG51bGwpKTtcbiAgfVxuXG4gIGxpc3RBdmFpbGFibGVUaW1lc2xvdHNGb3JTZXNzaW9uKHJlcToge1xuICAgIGV2ZW50VHlwZUlkOiBzdHJpbmcsXG4gICAgdGltZVNwYW46IFRpbWVTcGFuLFxuICAgIHRpbWVab25lOiBUaW1lWm9uZUludGVyZmFjZSxcbiAgICB1c2VySWRzOiBzdHJpbmdbXSxcbiAgfSk6IE9ic2VydmFibGU8VGltZVNwYW5bXT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmxpc3RBdmFpbGFibGVUaW1lc2xvdHNGb3JTZXNzaW9uKHJlcSkucGlwZShcbiAgICAgICAgbWFwKHJlc3AgPT4gcmVzcC50aW1lU2xvdHMgPyByZXNwLnRpbWVTbG90cy5tYXAodHMgPT4gVGltZVNwYW5Gcm9tQXBpKHRzKSkgOiBbXSlcbiAgICApXG4gIH1cbn1cbiJdfQ==
556
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvaG9zdC9ob3N0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQWVMLGdDQUFnQyxFQUdoQyxxQkFBcUIsRUFDckIsbUJBQW1CLEVBR25CLFNBQVMsRUFFVCxRQUFRLEdBT1QsTUFBTSxjQUFjLENBQUM7QUFJdEIsT0FBTyxFQUlMLGVBQWUsRUFFZixZQUFZLEVBRVosWUFBWSxFQUNaLGNBQWMsRUFJZCxjQUFjLEVBR2Qsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixhQUFhLEVBRWIsa0JBQWtCLEVBRWxCLGNBQWMsRUFDZCxnQkFBZ0IsRUFBWSxlQUFlLEdBQzVDLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0Isa0NBQWtDLEdBQ25DLE1BQU0sT0FBTyxDQUFDO0FBQ2YsT0FBTyxFQUFZLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBSXhFLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQW9CLGNBQXFDO1FBQXJDLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtJQUFHLENBQUM7SUFFN0Qsa0hBQWtIO0lBQ2xILFdBQVcsQ0FBQyxHQUdYO1FBQ0MsT0FBTyxJQUFJLENBQUMsY0FBYzthQUN2QixXQUFXLENBQUM7WUFDWCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07WUFDbEIsd0ZBQXdGO1lBQ3hGLDRCQUE0QixF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cG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBtYXAsIG1hcFRvIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQge1xuICBBdmFpbGFiaWxpdHlSdWxlTGlzdCxcbiAgQ2hlY2tHcm91cE9yU2VydmljZVNsdWdFeGlzdFJlc3BvbnNlLFxuICBDcmVhdGVDYWxlbmRhclJlcXVlc3RJbnRlcmZhY2UsXG4gIENyZWF0ZUNhbGVuZGFyUmVzcG9uc2UsXG4gIERheU9mV2VlayxcbiAgR2V0R3JvdXBSZXNwb25zZSxcbiAgR2V0SG9zdE1lZXRpbmdSZXNwb25zZSxcbiAgR2V0U2VydmljZVJlc3BvbnNlLFxuICBIb3N0Qm9va01lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlLFxuICBIb3N0Qm9va01lZXRpbmdSZXNwb25zZSxcbiAgSXNDYWxlbmRhckNvbmZpZ3VyZWRSZXF1ZXN0SW50ZXJmYWNlLFxuICBJc0NhbGVuZGFyQ29uZmlndXJlZFJlc3BvbnNlLFxuICBJc0hvc3RDb25maWd1cmVkUmVzcG9uc2UsXG4gIExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSxcbiAgTGlzdEJvb2tlZE1lZXRpbmdzUmVxdWVzdEZpbHRlcnMsXG4gIExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlLFxuICBMaXN0Qm9va2VkTWVldGluZ3NSZXNwb25zZSxcbiAgTWVldGluZ0hvc3RBcGlTZXJ2aWNlLFxuICBQYWdlZFJlcXVlc3RPcHRpb25zLFxuICBQYWdlZFJlcXVlc3RPcHRpb25zSW50ZXJmYWNlLFxuICBTZW5kTWVldGluZ1JlcXVlc3RFbWFpbFJlcXVlc3RJbnRlcmZhY2UsXG4gIFRpbWVSYW5nZSxcbiAgVGltZVJhbmdlSW50ZXJmYWNlLFxuICBUaW1lWm9uZSxcbiAgVGltZVpvbmVJbnRlcmZhY2UsXG4gIFdlZWtkYXlBdmFpbGFiaWxpdHksXG4gIENvbnRhY3QsXG4gIEVtYWlsc1RvRGVsZXRlLFxuICBIb3N0Qm9va1Nlc3Npb25SZXF1ZXN0SW50ZXJmYWNlLFxuICBMaXN0QXR0ZW5kZWVzUmVzcG9uc2UsIERhdGVSYW5nZSwgQm9va2luZ1NvdXJjZSxcbn0gZnJvbSBcIi4uL19pbnRlcm5hbFwiO1xuXG5pbXBvcnQgeyBCb29rTWVldGluZ1Jlc3BvbnNlLCBCb29rU2Vzc2lvblJlc3BvbnNlIH0gZnJvbSBcIi4uL2d1ZXN0XCI7XG5cbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXNTZXQsXG4gIEF2YWlsYWJpbGl0eVJ1bGUsXG4gIENhbGVuZGFyLFxuICBDYWxlbmRhckZyb21BcGksXG4gIEVudGl0eUFzc29jaWF0aW9ucyxcbiAgZ2V0RmllbGRNYXNrLFxuICBHcm91cCxcbiAgR3JvdXBGcm9tQXBpLFxuICBHcm91cFR5cGVUb0FQaSxcbiAgSG9zdFVybE1hcCxcbiAgTWVldGluZyxcbiAgTWVldGluZ0Zvcm0sXG4gIG1lZXRpbmdGcm9tQXBpLFxuICBNZWV0aW5nTWV0YWRhdGEsXG4gIE1lZXRpbmdUeXBlLFxuICBNZWV0aW5nVHlwZUZyb21BcGksXG4gIE1lZXRpbmdUeXBlVG9BcGksXG4gIFBhZ2VkUmVzcG9uc2UsXG4gIFByZWZlcmVuY2VzLFxuICBQcmVmZXJlbmNlc0Zyb21BcGksXG4gIFNlcnZpY2UsXG4gIFNlcnZpY2VGcm9tQXBpLFxuICBTZXJ2aWNlVHlwZVRvQXBpLCBUaW1lU3BhbiwgVGltZVNwYW5Gcm9tQXBpLFxufSBmcm9tIFwiLi4vc2hhcmVkXCI7XG5pbXBvcnQge1xuICBnZXRCb29raW5nVXJsSW1wbGVtZW50YXRpb24sXG4gIGdldEdlbmVyYWxCb29raW5nVXJsSW1wbGVtZW50YXRpb24sXG59IGZyb20gXCIuL3VybFwiO1xuaW1wb3J0IHsgSG9zdFVzZXIsIGhvc3RVc2VyRnJvbUFwaSB9IGZyb20gXCIuLi9zaGFyZWQvaG9zdC11c2VyXCI7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCwgb25Qcm9kdWN0aW9uR2xvYmFsIH0gZnJvbSBcIi4uL3NoYXJlZC9lbnZpcm9ubWVudFwiO1xuaW1wb3J0IHsgSHR0cFJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBIb3N0U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaG9zdEFQSVNlcnZpY2U6IE1lZXRpbmdIb3N0QXBpU2VydmljZSkge31cblxuICAvLyBVc2UgYnVpbGRIb3N0SWQgdG8gZ2V0IGFuIGlkZW50aWZpZXIgdGhhdCBjYW4gYmUgdXNlZCBpbiBzdWJzZXF1ZW50IHJlcXVlc3RzLiBTZWUgdmVuZGFzdGFhcGlzIGZvciBtb3JlIGRldGFpbHNcbiAgYnVpbGRIb3N0SWQocmVxOiB7XG4gICAgdXNlcklkOiBzdHJpbmc7XG4gICAgYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllczogQXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllc1NldDtcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5idWlsZEhvc3RJZCh7XG4gICAgICAgIHVzZXJJZDogcmVxLnVzZXJJZCxcbiAgICAgICAgLy8gR3Jvc3MgdHlwZWNhc3QgZXhpc3RzIGJlY2F1c2UgSSB3YW50IHRvIHJlc3RyaWN0IHRoZSBwcm9wZXJ0aWVzIG9uIHRoZSBtYXAgKGZvciBub3cpLlxuICAgICAgICBhcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzOlxuICAgICAgICAgIHJlcS5hcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzIGFzIGFueSBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiByZXMuaG9zdElkIHx8IFwiXCIpKTtcbiAgfVxuXG4gIGRvZXNDYWxlbmRhckV4aXN0KGNhbGVuZGFySWRlbnRpZmllcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5kb2VzQ2FsZW5kYXJFeGlzdCh7IGNhbGVuZGFySWRlbnRpZmllcjogY2FsZW5kYXJJZGVudGlmaWVyIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3ApID0+IHJlc3AuZXhpc3RzKSk7XG4gIH1cblxuICBnZXRDYWxlbmRhcihyZXE6IHsgY2FsZW5kYXJJZDogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPENhbGVuZGFyPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5nZXRDYWxlbmRhcih7IGNhbGVuZGFySWQ6IHJlcS5jYWxlbmRhcklkIH0pXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gQ2FsZW5kYXJGcm9tQXBpKHJlcz8uY2FsZW5kYXIpKSk7XG4gIH1cblxuICBlbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzKHJlcToge1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIGFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXM6IEFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXNTZXQ7XG4gIH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZW5zdXJlUGVyc29uYWxDYWxlbmRhckV4aXN0cyh7XG4gICAgICAgIHVzZXJJZDogcmVxLnVzZXJJZCxcbiAgICAgICAgYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllczpcbiAgICAgICAgICByZXEuYXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllcyBhcyBhbnkgYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gKHJlcyA/IHJlcy5jYWxlbmRhcklkIDogXCJcIikpKTtcbiAgfVxuXG4gIGVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3QocmVxOiB7XG4gICAgZXh0ZXJuYWxJZHM6IHN0cmluZ1tdO1xuICB9KTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdCh7IGV4dGVybmFsSWRzOiByZXEuZXh0ZXJuYWxJZHMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiByZXM/LmNhbGVuZGFySWRzIHx8IFtdKSk7XG4gIH1cblxuICAvKlxuICAgICBjcmVhdGVDYWxlbmRhciBjcmVhdGVzIGEgY2FsZW5kYXIgd2hpY2ggbWVldGluZyB0eXBlcyBjYW4gYmUgY3JlYXRlZCBmb3IgYW5kIGV2ZW50cyBjYW4gYmUgYm9va2VkIG9uXG4gICAgIFRoZSBmaWVsZHMgb2YgYSBjYWxlbmRhciBhcmUgZG9jdW1lbnRlZCBpbiBodHRwczovL2dpdGh1Yi5jb20vdmVuZGFzdGEvdmVuZGFzdGFhcGlzL2Jsb2IvbWFzdGVyL21lZXRpbmdzL3YxL3NoYXJlZC5wcm90b1xuICAgICovXG4gIGNyZWF0ZUNhbGVuZGFyKFxuICAgIHJlcTogQ3JlYXRlQ2FsZW5kYXJSZXF1ZXN0SW50ZXJmYWNlXG4gICk6IE9ic2VydmFibGU8Q3JlYXRlQ2FsZW5kYXJSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlLmNyZWF0ZUNhbGVuZGFyKHJlcSk7XG4gIH1cblxuICB1cGRhdGVDYWxlbmRhclNsdWcoY2FsZW5kYXJJZDogc3RyaW5nLCBuZXdTbHVnOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLnVwZGF0ZUNhbGVuZGFyKHtcbiAgICAgICAgY2FsZW5kYXJJZDogY2FsZW5kYXJJZCxcbiAgICAgICAgY2FsZW5kYXJVcGRhdGU6IHsgc2x1ZzogbmV3U2x1ZyB9LFxuICAgICAgICBmaWVsZE1hc2s6IHsgcGF0aHM6IFtcInNsdWdcIl0gfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIHVwZGF0ZUNhbGVuZGFySG9zdFVzZXJJRHMoXG4gICAgY2FsZW5kYXJJZDogc3RyaW5nLFxuICAgIHJlcGxhY2VtZW50SG9zdFVzZXJJZHM6IHN0cmluZ1tdXG4gICk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAudXBkYXRlQ2FsZW5kYXIoe1xuICAgICAgICBjYWxlbmRhcklkOiBjYWxlbmRhcklkLFxuICAgICAgICBjYWxlbmRhclVwZGF0ZTogeyBob3N0VXNlcklkczogcmVwbGFjZW1lbnRIb3N0VXNlcklkcyB9LFxuICAgICAgICBmaWVsZE1hc2s6IHsgcGF0aHM6IFtcImhvc3RfdXNlcl9pZHNcIl0gfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFycyhyZXE6IHtcbiAgICBjYWxlbmRhcklkczogc3RyaW5nW107XG4gICAgbWV0YWRhdGE6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICB9KTogT2JzZXJ2YWJsZTx7IFtjYWxlbmRhcklkOiBzdHJpbmddOiBNZWV0aW5nVHlwZVtdIH0+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFycyh7IGNhbGVuZGFySWRzOiByZXEuY2FsZW5kYXJJZHMgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICAgIGlmICghcmVzPy5jYWxlbmRhck1lZXRpbmdUeXBlc01hcCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocmVzLmNhbGVuZGFyTWVldGluZ1R5cGVzTWFwKS5yZWR1Y2UoXG4gICAgICAgICAgICAoY2FsZW5kYXJUb01lZXRpbmdUeXBlTWFwLCBjYWxlbmRhcklkKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1lZXRpbmdUeXBlcyA9IChcbiAgICAgICAgICAgICAgICByZXMuY2FsZW5kYXJNZWV0aW5nVHlwZXNNYXBbY2FsZW5kYXJJZF0/Lm1lZXRpbmdUeXBlcyB8fCBbXVxuICAgICAgICAgICAgICApLm1hcCgobXQpID0+XG4gICAgICAgICAgICAgICAgTWVldGluZ1R5cGVGcm9tQXBpKHtcbiAgICAgICAgICAgICAgICAgIG1lZXRpbmdUeXBlQXBpOiBtdCxcbiAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50OiBvblByb2R1Y3Rpb25HbG9iYWwoKVxuICAgICAgICAgICAgICAgICAgICA/IEVudmlyb25tZW50LlBST0RcbiAgICAgICAgICAgICAgICAgICAgOiBFbnZpcm9ubWVudC5ERU1PLFxuICAgICAgICAgICAgICAgICAgY2FsZW5kYXJJZCxcbiAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5jYWxlbmRhclRvTWVldGluZ1R5cGVNYXAsXG4gICAgICAgICAgICAgICAgW2NhbGVuZGFySWRdOiBtZWV0aW5nVHlwZXMsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge30gYXMgeyBbY2FsZW5kYXJJZDogc3RyaW5nXTogTWVldGluZ1R5cGVbXSB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKlxuICAgICBsaXN0TWVldGluZ1R5cGVzIHJldHVybnMgYSBsaXN0IG9mIG1lZXRpbmcgdHlwZXMgZm9yIGEgaG9zdFxuICAgICBAcGFyYW0gaG9zdElkOiBBbiBpZGVudGlmaWVyIGZvciBhbiBpbmRpdmlkdWFsIGhvc3RcbiAgICAgQHBhcmFtIG1ldGFkYXRhOiBvcHRpb25hbCBtZXRhZGF0YSB0byBpbmNsdWRlIG9uIHRoZSBtZWV0aW5nIHR5cGUgYm9va2luZyBsaW5rXG4gICAgIEBwYXJhbSBjYWxlbmRhclNsdWc6IHVzZWQgdG8gcmVwbGFjZSBob3N0SWQgaW4gdGhlIHVybC4gVXNlIGl0IHdoZW4geW91IGFyZSBjb25maWRlbnQgeW91IGtub3cgdGhlIGhvc3QncyBzbHVnLlxuICAgICAgICAtIGNhbGVuZGFyU2x1ZyBJUyBOT1QgVVNFRCBUTyBSRVRSSUVWRSBNRUVUSU5HIFRZUEVTLCBPTkxZIFRPIE1BS0UgVEhFIEJPT0tJTkcgVVJMU1xuICAgICovXG4gIGxpc3RNZWV0aW5nVHlwZXMocmVxOiB7XG4gICAgaG9zdElkOiBzdHJpbmc7XG4gICAgbWV0YWRhdGE/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBjYWxlbmRhclNsdWc/OiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPE1lZXRpbmdUeXBlW10+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5saXN0TWVldGluZ1R5cGVzKHJlcSkucGlwZShcbiAgICAgIG1hcCgocmVzcCkgPT4ge1xuICAgICAgICBpZiAoIXJlc3AgfHwgIXJlc3AubWVldGluZ1R5cGVzKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwLm1lZXRpbmdUeXBlcy5tYXAoKG10KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIE1lZXRpbmdUeXBlRnJvbUFwaSh7XG4gICAgICAgICAgICBtZWV0aW5nVHlwZUFwaTogbXQsXG4gICAgICAgICAgICBjYWxlbmRhcklkOiByZXEuaG9zdElkLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IG9uUHJvZHVjdGlvbkdsb2JhbCgpXG4gICAgICAgICAgICAgID8gRW52aXJvbm1lbnQuUFJPRFxuICAgICAgICAgICAgICA6IEVudmlyb25tZW50LkRFTU8sXG4gICAgICAgICAgICBtZXRhZGF0YTogcmVxLm1ldGFkYXRhLFxuICAgICAgICAgICAgY2FsZW5kYXJTbHVnOiByZXEuY2FsZW5kYXJTbHVnLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qXG4gICAgIGdldEJvb2tpbmdVcmwgcmV0dXJucyBhIGxpbmsgdGhhdCBjYW4gYmUgdXNlZCB0byBib29rIGEgbWVldGluZyB3aXRoIHRoaXMgaG9zdC5cbiAgICAgQHBhcmFtIGNhbGVuZGFySWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdCBvciBncm91cGluZyBvZiBob3N0cyAoaS5lLiwgdGVhbSkuXG4gICAgIEBwYXJhbSBAZGVwcmVjYXRlZCBob3N0SWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdC5cbiAgICAgQHBhcmFtIG1lZXRpbmdUeXBlSWQ6IEFuIG9wdGlvbmFsIGlkZW50aWZpZXIgZm9yIHRoZSBtZWV0aW5nIHR5cGUuIERlZmF1bHQ6IDMwLW1pbnV0ZXMuXG4gICAgIEBwYXJhbSBtZXRhZGF0YTogb3B0aW9uYWwgbWV0YWRhdGEgdG8gaW5jbHVkZSBpbiB0aGUgdXJsLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIHByZS1maWxsIGNlcnRhaW4gZm9ybSBmaWVsZHMgYW5kIHdpbGwgYmUgc3RvcmVkIGR1cmluZyB0aGUgYm9va2luZyBwcm9jZXNzLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSBvYnRhaW5lZCBieSBzdWJzY3JpYmluZyB0byB0aGUgYm9va2luZyBldmVudC5cbiAgICBAcGFyYW0gY2FsZW5kYXJTbHVnOiB1c2VkIHRvIHJlcGxhY2UgaG9zdElkIGluIHRoZSB1cmwuIFVzZSBpdCB3aGVuIHlvdSBhcmUgY29uZmlkZW50IHlvdSBrbm93IHRoZSBob3N0J3Mgc2x1Zy5cbiAgICAgKi9cbiAgZ2V0Qm9va2luZ1VybChyZXE6IHtcbiAgICAvLyBAZGVwcmVjYXRlZDogdXNlIGNhbGVuZGFySWQgaW5zdGVhZC4gY2FsZW5kYXJJZCBub3QgcmVxdWlyZWQgdG8gYXZvaWQgYnJlYWtpbmcgZXhpc3RpbmcgY2xpZW50cy5cbiAgICBob3N0SWQ6IHN0cmluZztcbiAgICBjYWxlbmRhcklkPzogc3RyaW5nO1xuICAgIC8vIEBkZXByZWNhdGVkOiB1c2UgbWVldGluZ1R5cGVTbHVnIGluc3RlYWRcbiAgICBtZWV0aW5nVHlwZUlkPzogc3RyaW5nO1xuICAgIG1lZXRpbmdUeXBlU2x1Zz86IHN0cmluZztcbiAgICBtZXRhZGF0YT86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG9mKFxuICAgICAgZ2V0Qm9va2luZ1VybEltcGxlbWVudGF0aW9uKHtcbiAgICAgICAgLi4ucmVxLFxuICAgICAgICBjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZCB8fCByZXEuaG9zdElkLFxuICAgICAgICBlbnZpcm9ubWVudDogb25Qcm9kdWN0aW9uR2xvYmFsKCkgPyBFbnZpcm9ubWVudC5QUk9EIDogRW52aXJvbm1lbnQuREVNTyxcbiAgICAgICAgY2FsZW5kYXJTbHVnOiByZXEuY2FsZW5kYXJTbHVnLFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLypcbiAgICAgZ2V0R2VuZXJhbEJvb2tpbmdVcmwgcmV0dXJucyBhIGxpbmsgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWxlY3QgYSBtZWV0aW5nIHR5cGUgdG8gYm9vayB3aXRoIHRoZSBnaXZlbiBjYWxlbmRhci5cbiAgICAgQHBhcmFtIGNhbGVuZGFySWQ6IEFuIGlkZW50aWZpZXIgZm9yIGFuIGluZGl2aWR1YWwgaG9zdCBvciBncm91cGluZyBvZiBob3N0cyAoaS5lLiwgdGVhbSkuXG4gICAgIEBwYXJhbSBtZXRhZGF0YTogb3B0aW9uYWwgbWV0YWRhdGEgdG8gaW5jbHVkZSBpbiB0aGUgdXJsLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSB1c2VkIHRvIHByZS1maWxsIGNlcnRhaW4gZm9ybSBmaWVsZHMgYW5kIHdpbGwgYmUgc3RvcmVkIGR1cmluZyB0aGUgYm9va2luZyBwcm9jZXNzLlxuICAgICAtIG1ldGFkYXRhIGNhbiBiZSBvYnRhaW5lZCBieSBzdWJzY3JpYmluZyB0byB0aGUgYm9va2luZyBldmVudC5cbiAgICAgQHBhcmFtIGNhbGVuZGFyU2x1ZzogdXNlZCB0byByZXBsYWNlIGhvc3RJZCBpbiB0aGUgdXJsLiBVc2UgaXQgd2hlbiB5b3UgYXJlIGNvbmZpZGVudCB5b3Uga25vdyB0aGUgaG9zdCdzIHNsdWcuXG4gICAgICovXG4gIGdldEdlbmVyYWxCb29raW5nVXJsKHJlcToge1xuICAgIGNhbGVuZGFySWQ6IHN0cmluZztcbiAgICBtZXRhZGF0YT86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG9mKFxuICAgICAgZ2V0R2VuZXJhbEJvb2tpbmdVcmxJbXBsZW1lbnRhdGlvbih7XG4gICAgICAgIGVudmlyb25tZW50OiBvblByb2R1Y3Rpb25HbG9iYWwoKSA/IEVudmlyb25tZW50LlBST0QgOiBFbnZpcm9ubWVudC5ERU1PLFxuICAgICAgICBjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZCxcbiAgICAgICAgbWV0YWRhdGE6IHJlcS5tZXRhZGF0YSxcbiAgICAgICAgY2FsZW5kYXJTbHVnOiByZXEuY2FsZW5kYXJTbHVnLFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLypcbiAgICAgZ2V0Qm9va2luZ1VybHNNdWx0aSByZXR1cm5zIGEgbWFwcGluZyBvZiBob3N0cyAtPiBldmVudCB0eXBlcyAtPiBib29raW5nIGxpbmtzLlxuICAgICBAcGFyYW0gY2FsZW5kYXJJZDogQW4gaWRlbnRpZmllciBmb3IgYW4gaW5kaXZpZHVhbCBob3N0IG9yIGdyb3VwaW5nIG9mIGhvc3RzLlxuICAgICBAcGFyYW0gbWVldGluZ1R5cGVTbHVnOiBtZWV0aW5nVHlwZVNsdWdzIGFyZSBwYXNzZWQgaW4gdGhlIGZvcm0ge2hvc3RJZDogW21lZXRpbmdUeXBlU2x1ZzEsIG1lZXRpbmdUeXBlU2x1ZzJdfVxuICAgICBAcGFyYW0gbWV0YWRhdGE6IG9wdGlvbmFsIG1ldGFkYXRhIHRvIGluY2x1ZGUgaW4gdGhlIHVybC5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgdXNlZCB0byBwcmUtZmlsbCBjZXJ0YWluIGZvcm0gZmllbGRzIGFuZCB3aWxsIGJlIHN0b3JlZCBkdXJpbmcgdGhlIGJvb2tpbmcgcHJvY2Vzcy5cbiAgICAgLSBtZXRhZGF0YSBjYW4gYmUgb2J0YWluZWQgYnkgc3Vic2NyaWJpbmcgdG8gdGhlIGJvb2tpbmcgZXZlbnQuXG4gICAgIEBwYXJhbSBjYWxlbmRhclNsdWc6IHVzZWQgdG8gcmVwbGFjZSBob3N0SWQgaW4gdGhlIHVybC4gVXNlIGl0IHdoZW4geW91IGFyZSBjb25maWRlbnQgeW91IGtub3cgdGhlIGhvc3QncyBzbHVnLlxuICAgICAqL1xuICBnZXRCb29raW5nVXJsc011bHRpKFxuICAgIHJlcTogeyBbY2FsZW5kYXJJZDogc3RyaW5nXTogc3RyaW5nW10gfSxcbiAgICBtZXRhZGF0YT86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIGNhbGVuZGFyU2x1Zz86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPEhvc3RVcmxNYXA+IHtcbiAgICByZXR1cm4gb2YoXG4gICAgICBPYmplY3Qua2V5cyhyZXEpLnJlZHVjZSgoaG9zdE1hcCwgY2FsZW5kYXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmhvc3RNYXAsXG4gICAgICAgICAgW2NhbGVuZGFySWRdOiByZXFbY2FsZW5kYXJJZF0ucmVkdWNlKFxuICAgICAgICAgICAgKG1lZXRpbmdUeXBlTWFwLCBtZWV0aW5nVHlwZVNsdWcpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5tZWV0aW5nVHlwZU1hcCxcbiAgICAgICAgICAgICAgICBbbWVldGluZ1R5cGVTbHVnXTogZ2V0Qm9va2luZ1VybEltcGxlbWVudGF0aW9uKHtcbiAgICAgICAgICAgICAgICAgIGNhbGVuZGFySWQsXG4gICAgICAgICAgICAgICAgICBtZWV0aW5nVHlwZVNsdWcsXG4gICAgICAgICAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50OiBvblByb2R1Y3Rpb25HbG9iYWwoKVxuICAgICAgICAgICAgICAgICAgICA/IEVudmlyb25tZW50LlBST0RcbiAgICAgICAgICAgICAgICAgICAgOiBFbnZpcm9ubWVudC5ERU1PLFxuICAgICAgICAgICAgICAgICAgY2FsZW5kYXJTbHVnLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHt9IGFzIHsgW21lZXRpbmdUeXBlSWQ6IHN0cmluZ106IHN0cmluZyB9XG4gICAgICAgICAgKSxcbiAgICAgICAgfTtcbiAgICAgIH0sIHt9IGFzIEhvc3RVcmxNYXApXG4gICAgKTtcbiAgfVxuXG4gIGlzSG9zdENvbmZpZ3VyZWQocmVxOiB7XG4gICAgaG9zdElkOiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuaXNIb3N0Q29uZmlndXJlZChyZXEpXG4gICAgICAucGlwZShtYXAoKHJlc3A6IElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZSkgPT4gcmVzcCkpO1xuICB9XG5cbiAgc2V0R2VuZXJhbEF2YWlsYWJpbGl0eShyZXE6IHtcbiAgICBob3N0SWQ6IHN0cmluZztcbiAgICBtZWV0aW5nVHlwZUlkOiBzdHJpbmc7XG4gICAgLy8gQGRlcHJlY2F0ZWQ6IHVzZSB3ZWVrZGF5c0F2YWlsYWJpbGl0eSBpbnN0ZWFkXG4gICAgZGF5cz86IERheU9mV2Vla1tdO1xuICAgIC8vIEBkZXByZWNhdGVkOiB1c2Ugd2Vla2RheXNBdmFpbGFiaWxpdHkgaW5zdGVhZFxuICAgIHRpbWVTbG90PzogVGltZVJhbmdlSW50ZXJmYWNlO1xuICAgIHdlZWtkYXlzQXZhaWxhYmlsaXR5PzogV2Vla2RheUF2YWlsYWJpbGl0eVtdO1xuICAgIHRpbWVab25lOiBUaW1lWm9uZUludGVyZmFjZTtcbiAgfSk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIGNvbnN0IGFwaVJlcSA9IHtcbiAgICAgIC4uLnJlcSxcbiAgICAgIHRpbWVab25lOiBuZXcgVGltZVpvbmUocmVxLnRpbWVab25lKSxcbiAgICB9O1xuICAgIGlmIChyZXEudGltZVNsb3QpIHtcbiAgICAgIGFwaVJlcS50aW1lU2xvdCA9IG5ldyBUaW1lUmFuZ2UocmVxLnRpbWVTbG90KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2Uuc2V0R2VuZXJhbEF2YWlsYWJpbGl0eShhcGlSZXEpLnBpcGUobWFwVG8obnVsbCkpO1xuICB9XG5cbiAgbGlzdEJvb2tlZE1lZXRpbmdzKHJlcToge1xuICAgIGZpbHRlcnM6IExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlO1xuICAgIGN1cnNvcjogc3RyaW5nO1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlO1xuICB9KTogT2JzZXJ2YWJsZTxQYWdlZFJlc3BvbnNlPE1lZXRpbmc+PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5saXN0Qm9va2VkTWVldGluZ3Moe1xuICAgICAgICAuLi5yZXEsXG4gICAgICAgIHBhZ2luZ09wdGlvbnM6IG5ldyBQYWdlZFJlcXVlc3RPcHRpb25zKHtcbiAgICAgICAgICBjdXJzb3I6IHJlcS5jdXJzb3IsXG4gICAgICAgICAgcGFnZVNpemU6IHJlcS5wYWdlU2l6ZSxcbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcnM6IG5ldyBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVycyhyZXEuZmlsdGVycyksXG4gICAgICAgIHRpbWVab25lOiBuZXcgVGltZVpvbmUocmVxLnRpbWVab25lKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwOiBMaXN0Qm9va2VkTWVldGluZ3NSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lZXRpbmdzID0gKHJlc3AubWVldGluZ3MgfHwgW10pLm1hcCgobWVldGluZykgPT5cbiAgICAgICAgICAgIG1lZXRpbmdGcm9tQXBpKG1lZXRpbmcpXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gbmV3IFBhZ2VkUmVzcG9uc2UoXG4gICAgICAgICAgICBtZWV0aW5ncyxcbiAgICAgICAgICAgIHJlc3AucGFnaW5nTWV0YWRhdGEubmV4dEN1cnNvcixcbiAgICAgICAgICAgIHJlc3AucGFnaW5nTWV0YWRhdGEuaGFzTW9yZVxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgY2FuY2VsTWVldGluZyhyZXE6IHtcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcbiAgICBjYW5jZWxsYXRpb25SZWFzb246IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuY2FuY2VsTWVldGluZyh7XG4gICAgICAgIC4uLnJlcSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyhudWxsKSk7XG4gIH1cblxuICByZXNjaGVkdWxlTWVldGluZyhyZXE6IHsgbWVldGluZ0lkOiBzdHJpbmc7IHN0YXJ0OiBEYXRlIH0pOiBPYnNlcnZhYmxlPG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLnJlc2NoZWR1bGVNZWV0aW5nKHtcbiAgICAgICAgLi4ucmVxLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRvKG51bGwpKTtcbiAgfVxuXG4gIGxpc3RBdmFpbGFiaWxpdHkocmVxOiB7XG4gICAgZmlsdGVyczogTGlzdEF2YWlsYWJpbGl0eVJlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlO1xuICAgIHBhZ2luZ09wdGlvbnM6IFBhZ2VkUmVxdWVzdE9wdGlvbnNJbnRlcmZhY2U7XG4gICAgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlO1xuICB9KTogT2JzZXJ2YWJsZTxQYWdlZFJlc3BvbnNlPEF2YWlsYWJpbGl0eVJ1bGU+PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdEF2YWlsYWJpbGl0eShyZXEpLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSAocmVzcG9uc2UuYXZhaWxhYmlsaXR5UnVsZXMgfHwgW10pXG4gICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgIC5tYXAoKGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGhvc3RJZDogYS5ob3N0SWQgfHwgXCJcIixcbiAgICAgICAgICAgICAgbWVldGluZ1R5cGVJZDogYS5tZWV0aW5nVHlwZUlkIHx8IFwiXCIsXG4gICAgICAgICAgICAgIGRheTogYS5kYXksXG4gICAgICAgICAgICAgIHRpbWVTbG90OiBhLnRpbWVTbG90LFxuICAgICAgICAgICAgICB0aW1lWm9uZTogYS50aW1lWm9uZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgUGFnZWRSZXNwb25zZShcbiAgICAgICAgICByZXN1bHRzLFxuICAgICAgICAgIHJlc3BvbnNlLm1ldGFkYXRhLm5leHRDdXJzb3IsXG4gICAgICAgICAgcmVzcG9uc2UubWV0YWRhdGEuaGFzTW9yZVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyogdXBkYXRlUHJlZmVyZW5jZXMgd2lsbCB1cGRhdGUgdGhlIGhvc3QncyBwcmVmZXJlbmNlcy5cbiAgICogSXQgaXMgZ3VhcmFudGVlZCB0byBvbmx5IHVwZGF0ZSB0aGUgZmllbGRzIHByb3ZpZGVkLlxuICAgKiBGb3IgZXhhbXBsZTpcbiAgICogIHVwZGF0ZVByZWZlcmVuY2VzKHttZWV0aW5nSW50ZWdyYXRpb246IE1lZXRpbmdTb3VyY2UuTUVFVElOR19TT1VSQ0VfR09PR0xFX01FRVR9KVxuICAgKiAgd2lsbCBvbmx5IHVwZGF0ZSB0aGUgcHJlZmVyZW5jZSBtZWV0aW5nSW50ZWdyYXRpb24gdG8gR29vZ2xlIE1lZXQuIEtlZXBpbmcgdGhlIG90aGVyIHByZWZlcmVuY2VzIHRoZSBzYW1lLlxuICAgKlxuICAgKiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHByb3ZpZGUgYSBsaXN0IG9mIGtleXMgdG8gdXBkYXRlIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuXG4gICAqIEZvciBleGFtcGxlOlxuICAgKiAgIHVwZGF0ZVByZWZlcmVuY2VzKHsuLi5vYmplY3Qgd2l0aCBhbGwgZmllbGRzfSwgWydtZWV0aW5nSW50ZWdyYXRpb24nXSlcbiAgICogICB3aWxsIG9ubHkgdXBkYXRlIHRoZSBmaWVsZCAnbWVldGluZ0ludGVncmF0aW9uJyB0byB0aGUgdmFsdWUgaW4gcHJlZmVyZW5jZXMuXG4gICAqXG4gICAqIENhbGxpbmcgd2l0aCBhbiBlbXB0eSBvYmplY3QgYW5kIG5vIGtleXMgaXMgYSBuby1vcCwgb3IgYW4gdW5kZWZpbmVkIG9iamVjdC5cbiAgICogQ2FsbGluZyB3aXRoIGFuIG9iamVjdCBjb250YWluaW5nIGZpZWxkcyBub3QgaW4gYFByZWZlcmVuY2VzYCBvciB3aXRoIHVwZGF0ZUZpZWxkcyBub3QgbGlua2VkIHRvIHByb3BlcnRpZXMgaW5cbiAgICogYFByZWZlcmVuY2VzYCBpcyBhbiBlcnJvci5cbiAgICovXG4gIHVwZGF0ZVByZWZlcmVuY2VzKHJlcToge1xuICAgIGhvc3RJZDogc3RyaW5nO1xuICAgIHByZWZlcmVuY2VzOiBQYXJ0aWFsPFByZWZlcmVuY2VzPjtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgUHJlZmVyZW5jZXMpW107XG4gIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBmaWVsZE1hc2sgPSBnZXRGaWVsZE1hc2soe1xuICAgICAgbzogcmVxLnByZWZlcmVuY2VzLFxuICAgICAgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzLFxuICAgIH0pO1xuICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC51cGRhdGVIb3N0UHJlZmVyZW5jZXMoe1xuICAgICAgICBob3N0SWQ6IHJlcS5ob3N0SWQsXG4gICAgICAgIHByZWZlcmVuY2VzOiByZXEucHJlZmVyZW5jZXMsXG4gICAgICAgIGZpZWxkTWFzayxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGdldFByZWZlcmVuY2VzKHJlcTogeyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxQcmVmZXJlbmNlcz4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZ2V0SG9zdFByZWZlcmVuY2VzKHtcbiAgICAgICAgaG9zdElkOiByZXEuaG9zdElkLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2UpID0+IFByZWZlcmVuY2VzRnJvbUFwaShyZXNwb25zZS5wcmVmZXJlbmNlcykpKTtcbiAgfVxuXG4gIGdldE1lZXRpbmcobWVldGluZ0lkOiBzdHJpbmcsIGxvY2F0aW9uOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE1lZXRpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmdldEhvc3RNZWV0aW5nKHtcbiAgICAgICAgbWVldGluZ0lkOiBtZWV0aW5nSWQsXG4gICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwOiBHZXRIb3N0TWVldGluZ1Jlc3BvbnNlKSA9PiBtZWV0aW5nRnJvbUFwaShyZXNwLm1lZXRpbmcpKVxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZU1lZXRpbmdNZXRhZGF0YShyZXE6IHtcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcbiAgICBtZXRhZGF0YTogTWVldGluZ01ldGFkYXRhO1xuICB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC51cGRhdGVNZWV0aW5nTWV0YWRhdGEoe1xuICAgICAgICBtZWV0aW5nSWQ6IHJlcS5tZWV0aW5nSWQsXG4gICAgICAgIG1ldGFkYXRhOiByZXEubWV0YWRhdGEsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gIH1cblxuICBob3N0Qm9va01lZXRpbmcocmVxOiB7XG4gICAgaG9zdElkOiBzdHJpbmc7XG4gICAgbWVldGluZ1R5cGVJZDogc3RyaW5nO1xuICAgIHN0YXJ0OiBEYXRlO1xuICAgIGNvbW1lbnQ6IHN0cmluZztcbiAgICBtZXRhZGF0YT86IE1lZXRpbmdNZXRhZGF0YTtcbiAgICBhdHRlbmRlZXM6IChPbWl0PFxuICAgICAgQ29udGFjdCxcbiAgICAgIFwiZnJvbVByb3RvXCIgfCBcInRvQXBpSnNvblwiIHwgXCJjb25zdHJ1Y3RvclwiIHwgXCJ0aW1lWm9uZVwiXG4gICAgPiAmIHsgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlIH0pW107XG4gICAgbG9jYXRpb24/OiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nO1xuICAgIGJvb2tpbmdTb3VyY2U/OiBCb29raW5nU291cmNlO1xuICB9KTogT2JzZXJ2YWJsZTxCb29rTWVldGluZ1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuaG9zdEJvb2tNZWV0aW5nKHtcbiAgICAgIC4uLnJlcSxcbiAgICAgIGF0dGVuZGVlczogcmVxLmF0dGVuZGVlcyxcbiAgICB9KTtcbiAgfVxuXG4gIGhvc3RCb29rU2Vzc2lvbihcbiAgICByZXE6IEhvc3RCb29rU2Vzc2lvblJlcXVlc3RJbnRlcmZhY2VcbiAgKTogT2JzZXJ2YWJsZTxCb29rU2Vzc2lvblJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuaG9zdEJvb2tTZXNzaW9uKHtcbiAgICAgIC4uLnJlcSxcbiAgICB9KTtcbiAgfVxuXG4gIGJvb2tNZWV0aW5nKHJlcTogSG9zdEJvb2tNZWV0aW5nUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5ib29rTWVldGluZyhyZXEpXG4gICAgICAucGlwZShtYXAoKHJlc3A6IEhvc3RCb29rTWVldGluZ1Jlc3BvbnNlKSA9PiByZXNwLm1lZXRpbmdJZCkpO1xuICB9XG5cbiAgLy8gY3JlYXRlRGVmYXVsdE1lZXRpbmdUeXBlcyB3aWxsIGNyZWF0ZSB3aGF0IE1lZXRpbmcgU2NoZWR1bGVyIGRlZW1zIHRvIGJlIHRoZSBkZWZhdWx0IG1lZXRpbmcgdHlwZXMuXG4gIC8vIElmIHRoZSBjYWxlbmRhciBhbHJlYWR5IGhhcyBtZWV0aW5nIHR5cGVzLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBuby1vcC5cbiAgY3JlYXRlRGVmYXVsdE1lZXRpbmdUeXBlcyhyZXE6IHsgY2FsZW5kYXJJZHM6IHN0cmluZ1tdIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmNyZWF0ZURlZmF1bHRNZWV0aW5nVHlwZXMoeyBjYWxlbmRhcklkczogcmVxLmNhbGVuZGFySWRzIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGNyZWF0ZU1lZXRpbmdUeXBlKHJlcToge1xuICAgIG1lZXRpbmdUeXBlOiBNZWV0aW5nVHlwZTtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgTWVldGluZ1R5cGUpW107XG4gICAgSG9zdElkPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCBmaWVsZE1hc2sgPSBnZXRGaWVsZE1hc2soe1xuICAgICAgbzogcmVxLm1lZXRpbmdUeXBlLFxuICAgICAgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzLFxuICAgIH0pO1xuICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5jcmVhdGVNZWV0aW5nVHlwZSh7XG4gICAgICAgIG1lZXRpbmdUeXBlOiBNZWV0aW5nVHlwZVRvQXBpKHsgbWVldGluZ1R5cGU6IHJlcS5tZWV0aW5nVHlwZSB9KSxcbiAgICAgICAgZmllbGRNYXNrLFxuICAgICAgICBob3N0SWQ6IHJlcS5Ib3N0SWQsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKChyZXMpID0+IHJlcy5pZCkpO1xuICB9XG5cbiAgLyogdXBkYXRlTWVldGluZ1R5cGUgd2lsbCB1cGRhdGUgdGhlIG1lZXRpbmcgdHlwZSBmaWVsZHMuXG4gICAqIEl0IGlzIGd1YXJhbnRlZWQgdG8gb25seSB1cGRhdGUgdGhlIGZpZWxkcyBwcm92aWRlZC5cbiAgICogRm9yIGV4YW1wbGU6XG4gICAqICB1cGRhdGVNZWV0aW5nVHlwZSh7bmFtZTogJ09uYm9hcmRpbmcnfSlcbiAgICogIHdpbGwgb25seSB1cGRhdGUgdGhlIGZpZWxkICduYW1lJyB0byAnT25ib2FyZGluZycuIEtlZXBpbmcgdGhlIG90aGVyIGZpZWxkcyB0aGUgc2FtZS5cbiAgICpcbiAgICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBwcm92aWRlIGEgbGlzdCBvZiBrZXlzIHRvIHVwZGF0ZSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LlxuICAgKiBGb3IgZXhhbXBsZTpcbiAgICogICB1cGRhdGVNZWV0aW5nVHlwZSh7Li4ub2JqZWN0IHdpdGggYWxsIGZpZWxkc30sIFsnbmFtZSddKVxuICAgKiAgIHdpbGwgb25seSB1cGRhdGUgdGhlIGZpZWxkICduYW1lJyB0byB0aGUgdmFsdWUgcGFzc2VkIGluLlxuICAgKlxuICAgKiBDYWxsaW5nIHdpdGggYW4gZW1wdHkgb2JqZWN0IGFuZCBubyBrZXlzIGlzIGEgbm8tb3AsIG9yIGFuIHVuZGVmaW5lZCBvYmplY3QuXG4gICAqIENhbGxpbmcgd2l0aCBhbiBvYmplY3QgY29udGFpbmluZyBmaWVsZHMgbm90IGluIGBNZWV0aW5nVHlwZWAgb3Igd2l0aCB1cGRhdGVGaWVsZHMgbm90IGxpbmtlZCB0byBwcm9wZXJ0aWVzIGluXG4gICAqIGBNZWV0aW5nVHlwZWAgaXMgYW4gZXJyb3IuXG4gICAqL1xuICB1cGRhdGVNZWV0aW5nVHlwZShyZXE6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG1lZXRpbmdUeXBlOiBQYXJ0aWFsPE1lZXRpbmdUeXBlPjtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgTWVldGluZ1R5cGUpW107XG4gICAgSG9zdElkPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZmllbGRNYXNrID0gZ2V0RmllbGRNYXNrKHtcbiAgICAgIG86IHJlcS5tZWV0aW5nVHlwZSxcbiAgICAgIHVwZGF0ZUZpZWxkczogcmVxLnVwZGF0ZUZpZWxkcyxcbiAgICB9KTtcbiAgICBpZiAoZmllbGRNYXNrLnBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAudXBkYXRlTWVldGluZ1R5cGUoe1xuICAgICAgICBpZDogcmVxLmlkLFxuICAgICAgICBtZWV0aW5nVHlwZTogTWVldGluZ1R5cGVUb0FwaSh7IG1lZXRpbmdUeXBlOiByZXEubWVldGluZ1R5cGUgfSksXG4gICAgICAgIGZpZWxkTWFzayxcbiAgICAgICAgaG9zdElkOiByZXEuSG9zdElkLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRvKHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgZGVsZXRlTWVldGluZ1R5cGUocmVxOiB7IGlkOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZGVsZXRlTWVldGluZ1R5cGUoeyBpZDogcmVxLmlkIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGdldEhvc3RzRm9yQ2FsZW5kYXIocmVxOiB7IGNhbGVuZGFySWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTx7XG4gICAgaG9zdFVzZXJzOiBIb3N0VXNlcltdO1xuICAgIGF2YWlsYWJpbGl0eVJ1bGVzOiB7IFtrZXk6IHN0cmluZ106IEF2YWlsYWJpbGl0eVJ1bGVMaXN0IH07XG4gIH0+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmdldEhvc3RzRm9yQ2FsZW5kYXIoeyBjYWxlbmRhcklkOiByZXEuY2FsZW5kYXJJZCB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgY29uc3QgaG9zdFVzZXJzID0gKHJlcy5ob3N0VXNlcnMgfHwgW10pLm1hcCgoaG9zdHVzZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBob3N0VXNlckZyb21BcGkoaG9zdHVzZXIpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgYXZhaWxhYmlsaXR5UnVsZXMgPSByZXMuaG9zdFVzZXJBdmFpbGFiaWxpdHlSdWxlIHx8IHt9O1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhvc3RVc2VycyxcbiAgICAgICAgICAgIGF2YWlsYWJpbGl0eVJ1bGVzLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgSXNDYWxlbmRhckNvbmZpZ3VyZWQoXG4gICAgcmVxOiBJc0NhbGVuZGFyQ29uZmlndXJlZFJlcXVlc3RJbnRlcmZhY2VcbiAgKTogT2JzZXJ2YWJsZTxJc0NhbGVuZGFyQ29uZmlndXJlZFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuaXNDYWxlbmRhckNvbmZpZ3VyZWQocmVxKTtcbiAgfVxuXG4gIHNlbmRNZWV0aW5nUmVxdWVzdEVtYWlsKFxuICAgIHJlcTogU2VuZE1lZXRpbmdSZXF1ZXN0RW1haWxSZXF1ZXN0SW50ZXJmYWNlXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2Uuc2VuZE1lZXRpbmdSZXF1ZXN0RW1haWwocmVxKTtcbiAgfVxuXG4gIGNyZWF0ZVNlcnZpY2UocmVxOiB7XG4gICAgc2VydmljZTogU2VydmljZTtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgU2VydmljZSlbXTtcbiAgICBIb3N0SWQ/OiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGNvbnN0IGZpZWxkTWFzayA9IGdldEZpZWxkTWFzayh7XG4gICAgICBvOiByZXEuc2VydmljZSxcbiAgICAgIHVwZGF0ZUZpZWxkczogcmVxLnVwZGF0ZUZpZWxkcyxcbiAgICB9KTtcbiAgICBpZiAoZmllbGRNYXNrLnBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuY3JlYXRlU2VydmljZSh7XG4gICAgICAgIHNlcnZpY2U6IFNlcnZpY2VUeXBlVG9BcGkoeyBzZXJ2aWNlOiByZXEuc2VydmljZSB9KSxcbiAgICAgICAgZmllbGRNYXNrLFxuICAgICAgICBob3N0SWQ6IHJlcS5Ib3N0SWQsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKChyZXMpID0+IHJlcy5pZCkpO1xuICB9XG5cbiAgdXBkYXRlU2VydmljZShyZXE6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHNlcnZpY2U6IFBhcnRpYWw8U2VydmljZT47XG4gICAgdXBkYXRlRmllbGRzPzogKGtleW9mIFNlcnZpY2UpW107XG4gICAgSG9zdElkPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZmllbGRNYXNrID0gZ2V0RmllbGRNYXNrKHtcbiAgICAgIG86IHJlcS5zZXJ2aWNlLFxuICAgICAgdXBkYXRlRmllbGRzOiByZXEudXBkYXRlRmllbGRzLFxuICAgIH0pO1xuICAgIGlmIChmaWVsZE1hc2sucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC51cGRhdGVTZXJ2aWNlKHtcbiAgICAgICAgaWQ6IHJlcS5pZCxcbiAgICAgICAgc2VydmljZTogU2VydmljZVR5cGVUb0FwaSh7IHNlcnZpY2U6IHJlcS5zZXJ2aWNlIH0pLFxuICAgICAgICBmaWVsZE1hc2ssXG4gICAgICAgIGhvc3RJZDogcmVxLkhvc3RJZCxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGRlbGV0ZVNlcnZpY2UocmVxOiB7IGlkOiBzdHJpbmc7IGhvc3RJZDogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmRlbGV0ZVNlcnZpY2UoeyBpZDogcmVxLmlkLCBob3N0SWQ6IHJlcS5ob3N0SWQgfSlcbiAgICAgIC5waXBlKG1hcFRvKHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgbGlzdFNlcnZpY2VzKHJlcTogeyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxTZXJ2aWNlW10+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5saXN0U2VydmljZXMoeyBob3N0SWQ6IHJlcS5ob3N0SWQgfSkucGlwZShcbiAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgIGlmICghcmVzIHx8ICFyZXMuc2VydmljZXMpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcy5zZXJ2aWNlcy5tYXAoKHNlcnZpY2UpID0+XG4gICAgICAgICAgU2VydmljZUZyb21BcGkoe1xuICAgICAgICAgICAgc2VydmljZUFwaTogc2VydmljZSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiBvblByb2R1Y3Rpb25HbG9iYWwoKVxuICAgICAgICAgICAgICA/IEVudmlyb25tZW50LlBST0RcbiAgICAgICAgICAgICAgOiBFbnZpcm9ubWVudC5ERU1PLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjcmVhdGVHcm91cChyZXE6IHtcbiAgICBncm91cDogR3JvdXA7XG4gICAgdXBkYXRlRmllbGRzPzogKGtleW9mIEdyb3VwKVtdO1xuICAgIEhvc3RJZD86IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgY29uc3QgZmllbGRNYXNrID0gZ2V0RmllbGRNYXNrKHtcbiAgICAgIG86IHJlcS5ncm91cCxcbiAgICAgIHVwZGF0ZUZpZWxkczogcmVxLnVwZGF0ZUZpZWxkcyxcbiAgICB9KTtcbiAgICBpZiAoZmllbGRNYXNrLnBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuY3JlYXRlR3JvdXAoe1xuICAgICAgICBncm91cDogR3JvdXBUeXBlVG9BUGkoeyBncm91cDogcmVxLmdyb3VwIH0pLFxuICAgICAgICBmaWVsZE1hc2ssXG4gICAgICAgIGhvc3RJZDogcmVxLkhvc3RJZCxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gcmVzLmlkKSk7XG4gIH1cblxuICB1cGRhdGVHcm91cChyZXE6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGdyb3VwOiBQYXJ0aWFsPEdyb3VwPjtcbiAgICB1cGRhdGVGaWVsZHM/OiAoa2V5b2YgR3JvdXApW107XG4gICAgSG9zdElkPzogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZmllbGRNYXNrID0gZ2V0RmllbGRNYXNrKHtcbiAgICAgIG86IHJlcS5ncm91cCxcbiAgICAgIHVwZGF0ZUZpZWxkczogcmVxLnVwZGF0ZUZpZWxkcyxcbiAgICB9KTtcbiAgICBpZiAoZmllbGRNYXNrLnBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAudXBkYXRlR3JvdXAoe1xuICAgICAgICBpZDogcmVxLmlkLFxuICAgICAgICBncm91cDogR3JvdXBUeXBlVG9BUGkoeyBncm91cDogcmVxLmdyb3VwIH0pLFxuICAgICAgICBmaWVsZE1hc2ssXG4gICAgICAgIGhvc3RJZDogcmVxLkhvc3RJZCxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUbyh1bmRlZmluZWQpKTtcbiAgfVxuXG4gIGRlbGV0ZUdyb3VwKHJlcTogeyBpZDogc3RyaW5nOyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5kZWxldGVHcm91cCh7IGlkOiByZXEuaWQsIGhvc3RJZDogcmVxLmhvc3RJZCB9KVxuICAgICAgLnBpcGUobWFwVG8odW5kZWZpbmVkKSk7XG4gIH1cblxuICBsaXN0R3JvdXBzKHJlcTogeyBob3N0SWQ6IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxHcm91cFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdEdyb3Vwcyh7IGhvc3RJZDogcmVxLmhvc3RJZCB9KS5waXBlKFxuICAgICAgbWFwKChyZXMpID0+IHtcbiAgICAgICAgaWYgKCFyZXMgfHwgIXJlcy5ncm91cHMpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcy5ncm91cHMubWFwKChncm91cCkgPT5cbiAgICAgICAgICBHcm91cEZyb21BcGkoe1xuICAgICAgICAgICAgZ3JvdXBBcGk6IGdyb3VwLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IG9uUHJvZHVjdGlvbkdsb2JhbCgpXG4gICAgICAgICAgICAgID8gRW52aXJvbm1lbnQuUFJPRFxuICAgICAgICAgICAgICA6IEVudmlyb25tZW50LkRFTU8sXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldEdyb3VwKHJlcToge1xuICAgIGdyb3VwSWQ6IHN0cmluZztcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgaG9zdElkOiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPEdldEdyb3VwUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5nZXRHcm91cChyZXEpO1xuICB9XG4gIGdldFNlcnZpY2UocmVxOiB7XG4gICAgc2VydmljZUlkOiBzdHJpbmc7XG4gICAgc2x1Zzogc3RyaW5nO1xuICAgIGhvc3RJZDogc3RyaW5nO1xuICB9KTogT2JzZXJ2YWJsZTxHZXRTZXJ2aWNlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZS5nZXRTZXJ2aWNlKHJlcSk7XG4gIH1cblxuICBjaGVja0dyb3VwT3JTZXJ2aWNlU2x1Z0V4aXN0KHJlcToge1xuICAgIGhvc3RJZDogc3RyaW5nO1xuICAgIHNsdWdJZGVudGlmaWVyOiBzdHJpbmc7XG4gICAgY2F0ZWdvcnk6IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuY2hlY2tHcm91cE9yU2VydmljZVNsdWdFeGlzdChyZXEpXG4gICAgICAucGlwZShtYXAoKHJlcykgPT4gcmVzLmV4aXN0cykpO1xuICB9XG5cbiAgY2hlY2tFdmVudFR5cGVTbHVnRXhpc3QocmVxOiB7XG4gICAgY2FsZW5kYXJJZDogc3RyaW5nO1xuICAgIHNsdWdJZGVudGlmaWVyOiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgLmNoZWNrRXZlbnRUeXBlU2x1Z0V4aXN0KHJlcSlcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiByZXMuZXhpc3RzKSk7XG4gIH1cblxuICBnZXRFbnRpdHlBc3NvY2lhdGlvbnMocmVxOiB7XG4gICAgZW50aXR5SWQ6IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8RW50aXR5QXNzb2NpYXRpb25zPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UuZ2V0RW50aXR5QXNzb2NpYXRpb25zKHJlcSk7XG4gIH1cblxuICBlbnN1cmVTZXNzaW9uRXZlbnRDYWxlbmRhcnNFeGlzdChyZXE6IHtcbiAgICBleHRlcm5hbElkOiBzdHJpbmc7XG4gIH0pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAuZW5zdXJlU2Vzc2lvbkV2ZW50Q2FsZW5kYXJzRXhpc3QoeyBleHRlcm5hbElkOiByZXEuZXh0ZXJuYWxJZCB9KVxuICAgICAgLnBpcGUobWFwKChyZXMpID0+IHJlcz8uY2FsZW5kYXJJZCB8fCBcIlwiKSk7XG4gIH1cblxuICBob3N0RGVsZXRlQXR0ZW5kZWVzKHJlcToge1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIGVtYWlsc1RvRGVsZXRlOiBFbWFpbHNUb0RlbGV0ZVtdO1xuICB9KTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2VcbiAgICAgIC5ob3N0RGVsZXRlQXR0ZW5kZWVzKHtcbiAgICAgICAgLi4ucmVxLFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcFRvKG51bGwpKTtcbiAgfVxuXG4gIGxpc3RBdHRlbmRlZXMocmVxOiB7XG4gICAgbWVldGluZ0lkOiBzdHJpbmc7XG4gICAgcGFnaW5nT3B0aW9uczogUGFnZWRSZXF1ZXN0T3B0aW9uc0ludGVyZmFjZTtcbiAgfSk6IE9ic2VydmFibGU8TGlzdEF0dGVuZGVlc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdEF0dGVuZGVlcyhyZXEpO1xuICB9XG5cbiAgY2FuY2VsU2Vzc2lvbihyZXE6IHtcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcbiAgICBjYW5jZWxsYXRpb25SZWFzb246IHN0cmluZztcbiAgfSk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RBUElTZXJ2aWNlXG4gICAgICAgIC5jYW5jZWxTZXNzaW9uKHtcbiAgICAgICAgICAuLi5yZXEsXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKG1hcFRvKG51bGwpKTtcbiAgfVxuXG4gIHJlc2NoZWR1bGVTZXNzaW9uKHJlcTogeyBtZWV0aW5nSWQ6IHN0cmluZzsgc3RhcnQ6IERhdGU7IHNlc3Npb25JZDogc3RyaW5nLCBpc1JlY3VycmluZzpib29sZWFuIH0pOiBPYnNlcnZhYmxlPG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0QVBJU2VydmljZVxuICAgICAgICAucmVzY2hlZHVsZVNlc3Npb24oe1xuICAgICAgICAgIC4uLnJlcSxcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUobWFwVG8obnVsbCkpO1xuICB9XG5cbiAgbGlzdEF2YWlsYWJsZVRpbWVzbG90c0ZvclNlc3Npb24ocmVxOiB7XG4gICAgZXZlbnRUeXBlSWQ6IHN0cmluZyxcbiAgICB0aW1lU3BhbjogVGltZVNwYW4sXG4gICAgdGltZVpvbmU6IFRpbWVab25lSW50ZXJmYWNlLFxuICAgIHVzZXJJZHM6IHN0cmluZ1tdLFxuICB9KTogT2JzZXJ2YWJsZTxUaW1lU3BhbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEFQSVNlcnZpY2UubGlzdEF2YWlsYWJsZVRpbWVzbG90c0ZvclNlc3Npb24ocmVxKS5waXBlKFxuICAgICAgICBtYXAocmVzcCA9PiByZXNwLnRpbWVTbG90cyA/IHJlc3AudGltZVNsb3RzLm1hcCh0cyA9PiBUaW1lU3BhbkZyb21BcGkodHMpKSA6IFtdKVxuICAgIClcbiAgfVxufVxuIl19
@@ -5,4 +5,4 @@ export { addMetadataToBookingLink } from './host/url';
5
5
  export { MeetingSource, MeetingSourceStatus, DayOfWeek, FormFieldType, CalendarType, MeetingLocation, MeetingLocationType, CalendarSource, RelativeTimeUnit, DateRangeType, TeamEventMeetingType, OnBoardingState, RegistrationCutOffUnit, NotificationType, BookingSource, FeatureFlagFieldType } from './_internal/enums/index';
6
6
  export { MeetingSourceQuery, MeetingSourceInfo, MeetingSourceListResponse, Contact, WeekdayAvailability, CreateCalendarRequest, CreateCalendarResponse, CheckFeatureFlagRequest, CheckFeatureFlagResponse, } from './_internal/objects/index';
7
7
  export { PagedResponse, WellKnownMeetingMetadataKeys, WellKnownFormFieldIds, meetingSchedulerIdToMetadataKey, durationFromString, durationToString, durationStringToMinutes, newBusinessCenterApplicationContextProperties, newSalesCenterApplicationContextProperties, newPartnerCenterApplicationContextProperties, KnownCalendarApplicationContextKeys, KnownCalendarExternalIntegrations, MeetingSourceOrigin, } from './shared/index';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tZWV0aW5nc19zZGsvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFaEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUcsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFalUsT0FBTyxFQUNILGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEdBQzNCLE1BQU0sMkJBQTJCLENBQUE7QUFDbEMsT0FBTyxFQUdILGFBQWEsRUFjYiw0QkFBNEIsRUFDNUIscUJBQXFCLEVBQ3JCLCtCQUErQixFQUMvQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2Qiw2Q0FBNkMsRUFDN0MsMENBQTBDLEVBQzFDLDRDQUE0QyxFQUs1QyxtQ0FBbUMsRUFDbkMsaUNBQWlDLEVBS2pDLG1CQUFtQixHQUV0QixNQUFNLGdCQUFnQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtNZWV0aW5nc1NESywgTWVldGluZ3NTZXJ2aWNlfSBmcm9tICcuL21lZXRpbmdzLnNlcnZpY2UnO1xuZXhwb3J0IHtCb29rZWRNZWV0aW5nSW5mbywgQm9va01lZXRpbmdSZXNwb25zZSwgR3Vlc3RTZXJ2aWNlSW50ZXJmYWNlfSBmcm9tICcuL2d1ZXN0JztcbmV4cG9ydCB7R3Vlc3RTZXJ2aWNlfSBmcm9tICcuL2d1ZXN0L2d1ZXN0LnNlcnZpY2UnO1xuZXhwb3J0IHtIb3N0U2VydmljZX0gZnJvbSAnLi9ob3N0L2hvc3Quc2VydmljZSc7XG5leHBvcnQge2FkZE1ldGFkYXRhVG9Cb29raW5nTGlua30gZnJvbSAnLi9ob3N0L3VybCc7XG5leHBvcnQge01lZXRpbmdTb3VyY2UsIE1lZXRpbmdTb3VyY2VTdGF0dXMsIERheU9mV2VlaywgRm9ybUZpZWxkVHlwZSwgQ2FsZW5kYXJUeXBlLCBNZWV0aW5nTG9jYXRpb24sICBNZWV0aW5nTG9jYXRpb25UeXBlLCBDYWxlbmRhclNvdXJjZSwgUmVsYXRpdmVUaW1lVW5pdCwgRGF0ZVJhbmdlVHlwZSwgVGVhbUV2ZW50TWVldGluZ1R5cGUsIE9uQm9hcmRpbmdTdGF0ZSwgUmVnaXN0cmF0aW9uQ3V0T2ZmVW5pdCwgTm90aWZpY2F0aW9uVHlwZSwgQm9va2luZ1NvdXJjZSwgRmVhdHVyZUZsYWdGaWVsZFR5cGV9IGZyb20gJy4vX2ludGVybmFsL2VudW1zL2luZGV4JztcblxuZXhwb3J0IHtcbiAgICBNZWV0aW5nU291cmNlUXVlcnksXG4gICAgTWVldGluZ1NvdXJjZUluZm8sXG4gICAgTWVldGluZ1NvdXJjZUxpc3RSZXNwb25zZSxcbiAgICBDb250YWN0LFxuICAgIFdlZWtkYXlBdmFpbGFiaWxpdHksXG4gICAgQ3JlYXRlQ2FsZW5kYXJSZXF1ZXN0LFxuICAgIENyZWF0ZUNhbGVuZGFyUmVzcG9uc2UsXG4gICAgQ2hlY2tGZWF0dXJlRmxhZ1JlcXVlc3QsXG4gICAgQ2hlY2tGZWF0dXJlRmxhZ1Jlc3BvbnNlLFxufSBmcm9tICcuL19pbnRlcm5hbC9vYmplY3RzL2luZGV4J1xuZXhwb3J0IHtcbiAgICBIb3N0LFxuICAgIFRpbWVTcGFuLFxuICAgIFBhZ2VkUmVzcG9uc2UsXG4gICAgTWVldGluZyxcbiAgICBNZWV0aW5nVHlwZSxcbiAgICBBdHRlbmRlZSxcbiAgICBBdmFpbGFiaWxpdHlSdWxlLFxuICAgIENhbGVuZGFyLFxuICAgIEhvc3RVcmxNYXAsXG4gICAgUHJlZmVyZW5jZXMsXG4gICAgRHVyYXRpb24sXG4gICAgTWVldGluZ1R5cGVGb3JtLFxuICAgIE1lZXRpbmdUeXBlRm9ybUZpZWxkLFxuICAgIE1lZXRpbmdGb3JtLFxuICAgIE1lZXRpbmdGb3JtQW5zd2VyLFxuICAgIE1lZXRpbmdNZXRhZGF0YSxcbiAgICBXZWxsS25vd25NZWV0aW5nTWV0YWRhdGFLZXlzLFxuICAgIFdlbGxLbm93bkZvcm1GaWVsZElkcyxcbiAgICBtZWV0aW5nU2NoZWR1bGVySWRUb01ldGFkYXRhS2V5LFxuICAgIGR1cmF0aW9uRnJvbVN0cmluZyxcbiAgICBkdXJhdGlvblRvU3RyaW5nLFxuICAgIGR1cmF0aW9uU3RyaW5nVG9NaW51dGVzLFxuICAgIG5ld0J1c2luZXNzQ2VudGVyQXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllcyxcbiAgICBuZXdTYWxlc0NlbnRlckFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMsXG4gICAgbmV3UGFydG5lckNlbnRlckFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMsXG4gICAgQXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllc1NldCxcbiAgICBCdXNpbmVzc0NlbnRlckFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMsXG4gICAgU2FsZXNDZW50ZXJBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzLFxuICAgIFBhcnRuZXJDZW50ZXJBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzLFxuICAgIEtub3duQ2FsZW5kYXJBcHBsaWNhdGlvbkNvbnRleHRLZXlzLFxuICAgIEtub3duQ2FsZW5kYXJFeHRlcm5hbEludGVncmF0aW9ucyxcbiAgICBIb3N0VXNlcixcbiAgICBHcm91cCxcbiAgICBTZXJ2aWNlLFxuICAgIEV2ZW50R3JvdXBBbmRTZXJ2aWNlQXNzb2NpYXRpb25zLFxuICAgIE1lZXRpbmdTb3VyY2VPcmlnaW4sXG4gICAgRW50aXR5QXNzb2NpYXRpb25zLFxufSBmcm9tICcuL3NoYXJlZC9pbmRleCdcbmV4cG9ydCB7XG4gICAgVGltZVJhbmdlSW50ZXJmYWNlIGFzIFRpbWVSYW5nZSxcbiAgICBUaW1lT2ZEYXlJbnRlcmZhY2UgYXMgVGltZU9mRGF5LFxuICAgIFRpbWVab25lSW50ZXJmYWNlIGFzIFRpbWVab25lLFxuICAgIExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlIGFzIExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzLFxuICAgIExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSBhcyBMaXN0QXZhaWxhYmlsaXR5UmVxdWVzdEZpbHRlcnMsXG4gICAgUGFnZWRSZXF1ZXN0T3B0aW9uc0ludGVyZmFjZSBhcyBQYWdlZFJlcXVlc3RPcHRpb25zLFxuICAgIERhdGVSYW5nZUludGVyZmFjZSBhcyBEYXRlUmFuZ2UsXG4gICAgQ3JlYXRlQ2FsZW5kYXJSZXF1ZXN0SW50ZXJmYWNlLFxuICAgIENyZWF0ZUNhbGVuZGFyUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgVXBkYXRlQ2FsZW5kYXJSZXF1ZXN0SW50ZXJmYWNlLFxuICAgIEF0dGFjaG1lbnRJbnRlcmZhY2UsXG4gICAgR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZUludGVyZmFjZSxcbiAgICBJc0NhbGVuZGFyQ29uZmlndXJlZFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgU2VuZE1lZXRpbmdSZXF1ZXN0RW1haWxSZXF1ZXN0SW50ZXJmYWNlLFxuICAgIEV2ZW50VHlwZURhdGVSYW5nZUludGVyZmFjZSxcbiAgICBEYXRlUmFuZ2VJbnRlcmZhY2UsXG4gICAgUmVsYXRpdmVEYXRlUmFuZ2VJbnRlcmZhY2UsXG4gICAgQ2hlY2tGZWF0dXJlRmxhZ1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgQ2hlY2tGZWF0dXJlRmxhZ1Jlc3BvbnNlSW50ZXJmYWNlLFxufSBmcm9tICcuL19pbnRlcm5hbC9pbnRlcmZhY2VzL2luZGV4JyJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tZWV0aW5nc19zZGsvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFaEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUcsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFalUsT0FBTyxFQUNILGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEdBQzNCLE1BQU0sMkJBQTJCLENBQUE7QUFDbEMsT0FBTyxFQUdILGFBQWEsRUFjYiw0QkFBNEIsRUFDNUIscUJBQXFCLEVBQ3JCLCtCQUErQixFQUMvQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2Qiw2Q0FBNkMsRUFDN0MsMENBQTBDLEVBQzFDLDRDQUE0QyxFQUs1QyxtQ0FBbUMsRUFDbkMsaUNBQWlDLEVBS2pDLG1CQUFtQixHQUV0QixNQUFNLGdCQUFnQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtNZWV0aW5nc1NESywgTWVldGluZ3NTZXJ2aWNlfSBmcm9tICcuL21lZXRpbmdzLnNlcnZpY2UnO1xuZXhwb3J0IHtCb29rZWRNZWV0aW5nSW5mbywgQm9va01lZXRpbmdSZXNwb25zZSwgR3Vlc3RTZXJ2aWNlSW50ZXJmYWNlfSBmcm9tICcuL2d1ZXN0JztcbmV4cG9ydCB7R3Vlc3RTZXJ2aWNlfSBmcm9tICcuL2d1ZXN0L2d1ZXN0LnNlcnZpY2UnO1xuZXhwb3J0IHtIb3N0U2VydmljZX0gZnJvbSAnLi9ob3N0L2hvc3Quc2VydmljZSc7XG5leHBvcnQge2FkZE1ldGFkYXRhVG9Cb29raW5nTGlua30gZnJvbSAnLi9ob3N0L3VybCc7XG5leHBvcnQge01lZXRpbmdTb3VyY2UsIE1lZXRpbmdTb3VyY2VTdGF0dXMsIERheU9mV2VlaywgRm9ybUZpZWxkVHlwZSwgQ2FsZW5kYXJUeXBlLCBNZWV0aW5nTG9jYXRpb24sICBNZWV0aW5nTG9jYXRpb25UeXBlLCBDYWxlbmRhclNvdXJjZSwgUmVsYXRpdmVUaW1lVW5pdCwgRGF0ZVJhbmdlVHlwZSwgVGVhbUV2ZW50TWVldGluZ1R5cGUsIE9uQm9hcmRpbmdTdGF0ZSwgUmVnaXN0cmF0aW9uQ3V0T2ZmVW5pdCwgTm90aWZpY2F0aW9uVHlwZSwgQm9va2luZ1NvdXJjZSwgRmVhdHVyZUZsYWdGaWVsZFR5cGV9IGZyb20gJy4vX2ludGVybmFsL2VudW1zL2luZGV4JztcblxuZXhwb3J0IHtcbiAgICBNZWV0aW5nU291cmNlUXVlcnksXG4gICAgTWVldGluZ1NvdXJjZUluZm8sXG4gICAgTWVldGluZ1NvdXJjZUxpc3RSZXNwb25zZSxcbiAgICBDb250YWN0LFxuICAgIFdlZWtkYXlBdmFpbGFiaWxpdHksXG4gICAgQ3JlYXRlQ2FsZW5kYXJSZXF1ZXN0LFxuICAgIENyZWF0ZUNhbGVuZGFyUmVzcG9uc2UsXG4gICAgQ2hlY2tGZWF0dXJlRmxhZ1JlcXVlc3QsXG4gICAgQ2hlY2tGZWF0dXJlRmxhZ1Jlc3BvbnNlLFxufSBmcm9tICcuL19pbnRlcm5hbC9vYmplY3RzL2luZGV4J1xuZXhwb3J0IHtcbiAgICBIb3N0LFxuICAgIFRpbWVTcGFuLFxuICAgIFBhZ2VkUmVzcG9uc2UsXG4gICAgTWVldGluZyxcbiAgICBNZWV0aW5nVHlwZSxcbiAgICBBdHRlbmRlZSxcbiAgICBBdmFpbGFiaWxpdHlSdWxlLFxuICAgIENhbGVuZGFyLFxuICAgIEhvc3RVcmxNYXAsXG4gICAgUHJlZmVyZW5jZXMsXG4gICAgRHVyYXRpb24sXG4gICAgTWVldGluZ1R5cGVGb3JtLFxuICAgIE1lZXRpbmdUeXBlRm9ybUZpZWxkLFxuICAgIE1lZXRpbmdGb3JtLFxuICAgIE1lZXRpbmdGb3JtQW5zd2VyLFxuICAgIE1lZXRpbmdNZXRhZGF0YSxcbiAgICBXZWxsS25vd25NZWV0aW5nTWV0YWRhdGFLZXlzLFxuICAgIFdlbGxLbm93bkZvcm1GaWVsZElkcyxcbiAgICBtZWV0aW5nU2NoZWR1bGVySWRUb01ldGFkYXRhS2V5LFxuICAgIGR1cmF0aW9uRnJvbVN0cmluZyxcbiAgICBkdXJhdGlvblRvU3RyaW5nLFxuICAgIGR1cmF0aW9uU3RyaW5nVG9NaW51dGVzLFxuICAgIG5ld0J1c2luZXNzQ2VudGVyQXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllcyxcbiAgICBuZXdTYWxlc0NlbnRlckFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMsXG4gICAgbmV3UGFydG5lckNlbnRlckFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMsXG4gICAgQXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllc1NldCxcbiAgICBCdXNpbmVzc0NlbnRlckFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXMsXG4gICAgU2FsZXNDZW50ZXJBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzLFxuICAgIFBhcnRuZXJDZW50ZXJBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzLFxuICAgIEtub3duQ2FsZW5kYXJBcHBsaWNhdGlvbkNvbnRleHRLZXlzLFxuICAgIEtub3duQ2FsZW5kYXJFeHRlcm5hbEludGVncmF0aW9ucyxcbiAgICBIb3N0VXNlcixcbiAgICBHcm91cCxcbiAgICBTZXJ2aWNlLFxuICAgIEV2ZW50R3JvdXBBbmRTZXJ2aWNlQXNzb2NpYXRpb25zLFxuICAgIE1lZXRpbmdTb3VyY2VPcmlnaW4sXG4gICAgRW50aXR5QXNzb2NpYXRpb25zLFxufSBmcm9tICcuL3NoYXJlZC9pbmRleCdcbmV4cG9ydCB7XG4gICAgVGltZVJhbmdlSW50ZXJmYWNlIGFzIFRpbWVSYW5nZSxcbiAgICBUaW1lT2ZEYXlJbnRlcmZhY2UgYXMgVGltZU9mRGF5LFxuICAgIFRpbWVab25lSW50ZXJmYWNlIGFzIFRpbWVab25lLFxuICAgIExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlIGFzIExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RGaWx0ZXJzLFxuICAgIExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSBhcyBMaXN0QXZhaWxhYmlsaXR5UmVxdWVzdEZpbHRlcnMsXG4gICAgUGFnZWRSZXF1ZXN0T3B0aW9uc0ludGVyZmFjZSBhcyBQYWdlZFJlcXVlc3RPcHRpb25zLFxuICAgIERhdGVSYW5nZUludGVyZmFjZSBhcyBEYXRlUmFuZ2UsXG4gICAgQ3JlYXRlQ2FsZW5kYXJSZXF1ZXN0SW50ZXJmYWNlLFxuICAgIENyZWF0ZUNhbGVuZGFyUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgVXBkYXRlQ2FsZW5kYXJSZXF1ZXN0SW50ZXJmYWNlLFxuICAgIEF0dGFjaG1lbnRJbnRlcmZhY2UsXG4gICAgR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZUludGVyZmFjZSxcbiAgICBJc0NhbGVuZGFyQ29uZmlndXJlZFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgU2VuZE1lZXRpbmdSZXF1ZXN0RW1haWxSZXF1ZXN0SW50ZXJmYWNlLFxuICAgIEV2ZW50VHlwZURhdGVSYW5nZUludGVyZmFjZSxcbiAgICBEYXRlUmFuZ2VJbnRlcmZhY2UsXG4gICAgUmVsYXRpdmVEYXRlUmFuZ2VJbnRlcmZhY2UsXG4gICAgQ2hlY2tGZWF0dXJlRmxhZ1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgQ2hlY2tGZWF0dXJlRmxhZ1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgIENoZWNrRXZlbnRUeXBlU2x1Z0V4aXN0UmVxdWVzdEludGVyZmFjZSxcbiAgICBDaGVja0V2ZW50VHlwZVNsdWdFeGlzdFJlc3BvbnNlSW50ZXJmYWNlLFxufSBmcm9tICcuL19pbnRlcm5hbC9pbnRlcmZhY2VzL2luZGV4JyJdfQ==
@@ -3864,6 +3864,86 @@ class BookMeetingExternalResponse {
3864
3864
  return toReturn;
3865
3865
  }
3866
3866
  }
3867
+ class EventType {
3868
+ static fromProto(proto) {
3869
+ let m = new EventType();
3870
+ m = Object.assign(m, proto);
3871
+ if (proto.locationType) {
3872
+ m.locationType = enumStringToValue$3(MeetingLocationType, proto.locationType);
3873
+ }
3874
+ if (proto.hostUsers) {
3875
+ m.hostUsers = proto.hostUsers.map(HostUser.fromProto);
3876
+ }
3877
+ if (proto.bookingWindow) {
3878
+ m.bookingWindow = EventTypeDateRange.fromProto(proto.bookingWindow);
3879
+ }
3880
+ if (proto.meetingType) {
3881
+ m.meetingType = enumStringToValue$3(TeamEventMeetingType, proto.meetingType);
3882
+ }
3883
+ if (proto.hostOrderDetails) {
3884
+ m.hostOrderDetails = proto.hostOrderDetails.map(HostOrderDetails.fromProto);
3885
+ }
3886
+ return m;
3887
+ }
3888
+ constructor(kwargs) {
3889
+ if (!kwargs) {
3890
+ return;
3891
+ }
3892
+ Object.assign(this, kwargs);
3893
+ }
3894
+ toApiJson() {
3895
+ const toReturn = {};
3896
+ if (typeof this.id !== 'undefined') {
3897
+ toReturn['id'] = this.id;
3898
+ }
3899
+ if (typeof this.name !== 'undefined') {
3900
+ toReturn['name'] = this.name;
3901
+ }
3902
+ if (typeof this.duration !== 'undefined') {
3903
+ toReturn['duration'] = this.duration;
3904
+ }
3905
+ if (typeof this.description !== 'undefined') {
3906
+ toReturn['description'] = this.description;
3907
+ }
3908
+ if (typeof this.bookingUrl !== 'undefined') {
3909
+ toReturn['bookingUrl'] = this.bookingUrl;
3910
+ }
3911
+ if (typeof this.location !== 'undefined') {
3912
+ toReturn['location'] = this.location;
3913
+ }
3914
+ if (typeof this.locationType !== 'undefined') {
3915
+ toReturn['locationType'] = this.locationType;
3916
+ }
3917
+ if (typeof this.locationGuidelines !== 'undefined') {
3918
+ toReturn['locationGuidelines'] = this.locationGuidelines;
3919
+ }
3920
+ if (typeof this.isVideoConferencingEnabled !== 'undefined') {
3921
+ toReturn['isVideoConferencingEnabled'] = this.isVideoConferencingEnabled;
3922
+ }
3923
+ if (typeof this.calendarType !== 'undefined') {
3924
+ toReturn['calendarType'] = this.calendarType;
3925
+ }
3926
+ if (typeof this.hostUsers !== 'undefined' && this.hostUsers !== null) {
3927
+ toReturn['hostUsers'] = 'toApiJson' in this.hostUsers ? this.hostUsers.toApiJson() : this.hostUsers;
3928
+ }
3929
+ if (typeof this.bookingWindow !== 'undefined' && this.bookingWindow !== null) {
3930
+ toReturn['bookingWindow'] = 'toApiJson' in this.bookingWindow ? this.bookingWindow.toApiJson() : this.bookingWindow;
3931
+ }
3932
+ if (typeof this.meetingType !== 'undefined') {
3933
+ toReturn['meetingType'] = this.meetingType;
3934
+ }
3935
+ if (typeof this.hostOrderDetails !== 'undefined' && this.hostOrderDetails !== null) {
3936
+ toReturn['hostOrderDetails'] = 'toApiJson' in this.hostOrderDetails ? this.hostOrderDetails.toApiJson() : this.hostOrderDetails;
3937
+ }
3938
+ if (typeof this.isEmailRequired !== 'undefined') {
3939
+ toReturn['isEmailRequired'] = this.isEmailRequired;
3940
+ }
3941
+ if (typeof this.isPhoneNumberRequired !== 'undefined') {
3942
+ toReturn['isPhoneNumberRequired'] = this.isPhoneNumberRequired;
3943
+ }
3944
+ return toReturn;
3945
+ }
3946
+ }
3867
3947
  class ExternalCancelMeetingRequest {
3868
3948
  static fromProto(proto) {
3869
3949
  let m = new ExternalCancelMeetingRequest();
@@ -4161,6 +4241,70 @@ class HostUserDetails {
4161
4241
  return toReturn;
4162
4242
  }
4163
4243
  }
4244
+ class ListTeamEventTypesRequest {
4245
+ static fromProto(proto) {
4246
+ let m = new ListTeamEventTypesRequest();
4247
+ m = Object.assign(m, proto);
4248
+ if (proto.pageSize) {
4249
+ m.pageSize = parseInt(proto.pageSize, 10);
4250
+ }
4251
+ return m;
4252
+ }
4253
+ constructor(kwargs) {
4254
+ if (!kwargs) {
4255
+ return;
4256
+ }
4257
+ Object.assign(this, kwargs);
4258
+ }
4259
+ toApiJson() {
4260
+ const toReturn = {};
4261
+ if (typeof this.partnerId !== 'undefined') {
4262
+ toReturn['partnerId'] = this.partnerId;
4263
+ }
4264
+ if (typeof this.businessId !== 'undefined') {
4265
+ toReturn['businessId'] = this.businessId;
4266
+ }
4267
+ if (typeof this.ownerId !== 'undefined') {
4268
+ toReturn['ownerId'] = this.ownerId;
4269
+ }
4270
+ if (typeof this.cursor !== 'undefined') {
4271
+ toReturn['cursor'] = this.cursor;
4272
+ }
4273
+ if (typeof this.pageSize !== 'undefined') {
4274
+ toReturn['pageSize'] = this.pageSize;
4275
+ }
4276
+ return toReturn;
4277
+ }
4278
+ }
4279
+ class ListTeamEventTypesResponse {
4280
+ static fromProto(proto) {
4281
+ let m = new ListTeamEventTypesResponse();
4282
+ m = Object.assign(m, proto);
4283
+ if (proto.eventTypes) {
4284
+ m.eventTypes = proto.eventTypes.map(EventType.fromProto);
4285
+ }
4286
+ return m;
4287
+ }
4288
+ constructor(kwargs) {
4289
+ if (!kwargs) {
4290
+ return;
4291
+ }
4292
+ Object.assign(this, kwargs);
4293
+ }
4294
+ toApiJson() {
4295
+ const toReturn = {};
4296
+ if (typeof this.eventTypes !== 'undefined' && this.eventTypes !== null) {
4297
+ toReturn['eventTypes'] = 'toApiJson' in this.eventTypes ? this.eventTypes.toApiJson() : this.eventTypes;
4298
+ }
4299
+ if (typeof this.nextCursor !== 'undefined') {
4300
+ toReturn['nextCursor'] = this.nextCursor;
4301
+ }
4302
+ if (typeof this.hasMore !== 'undefined') {
4303
+ toReturn['hasMore'] = this.hasMore;
4304
+ }
4305
+ return toReturn;
4306
+ }
4307
+ }
4164
4308
  class ServiceResponse {
4165
4309
  static fromProto(proto) {
4166
4310
  let m = new ServiceResponse();
@@ -4302,9 +4446,9 @@ function enumStringToValue$1(enumRef, value) {
4302
4446
  }
4303
4447
  return enumRef[value];
4304
4448
  }
4305
- class IsCalendarConfiguredRequestApplicationContextPropertiesEntry {
4449
+ class BuildHostIdRequestApplicationContextPropertiesEntry {
4306
4450
  static fromProto(proto) {
4307
- let m = new IsCalendarConfiguredRequestApplicationContextPropertiesEntry();
4451
+ let m = new BuildHostIdRequestApplicationContextPropertiesEntry();
4308
4452
  m = Object.assign(m, proto);
4309
4453
  return m;
4310
4454
  }
@@ -4325,9 +4469,9 @@ class IsCalendarConfiguredRequestApplicationContextPropertiesEntry {
4325
4469
  return toReturn;
4326
4470
  }
4327
4471
  }
4328
- class BuildHostIdRequestApplicationContextPropertiesEntry {
4472
+ class EnsurePersonalCalendarExistsRequestApplicationContextPropertiesEntry {
4329
4473
  static fromProto(proto) {
4330
- let m = new BuildHostIdRequestApplicationContextPropertiesEntry();
4474
+ let m = new EnsurePersonalCalendarExistsRequestApplicationContextPropertiesEntry();
4331
4475
  m = Object.assign(m, proto);
4332
4476
  return m;
4333
4477
  }
@@ -4348,9 +4492,9 @@ class BuildHostIdRequestApplicationContextPropertiesEntry {
4348
4492
  return toReturn;
4349
4493
  }
4350
4494
  }
4351
- class EnsurePersonalCalendarExistsRequestApplicationContextPropertiesEntry {
4495
+ class IsCalendarConfiguredRequestApplicationContextPropertiesEntry {
4352
4496
  static fromProto(proto) {
4353
- let m = new EnsurePersonalCalendarExistsRequestApplicationContextPropertiesEntry();
4497
+ let m = new IsCalendarConfiguredRequestApplicationContextPropertiesEntry();
4354
4498
  m = Object.assign(m, proto);
4355
4499
  return m;
4356
4500
  }
@@ -4556,6 +4700,49 @@ class CancelMeetingRequest {
4556
4700
  return toReturn;
4557
4701
  }
4558
4702
  }
4703
+ class CheckEventTypeSlugExistRequest {
4704
+ static fromProto(proto) {
4705
+ let m = new CheckEventTypeSlugExistRequest();
4706
+ m = Object.assign(m, proto);
4707
+ return m;
4708
+ }
4709
+ constructor(kwargs) {
4710
+ if (!kwargs) {
4711
+ return;
4712
+ }
4713
+ Object.assign(this, kwargs);
4714
+ }
4715
+ toApiJson() {
4716
+ const toReturn = {};
4717
+ if (typeof this.calendarId !== 'undefined') {
4718
+ toReturn['calendarId'] = this.calendarId;
4719
+ }
4720
+ if (typeof this.slugIdentifier !== 'undefined') {
4721
+ toReturn['slugIdentifier'] = this.slugIdentifier;
4722
+ }
4723
+ return toReturn;
4724
+ }
4725
+ }
4726
+ class CheckEventTypeSlugExistResponse {
4727
+ static fromProto(proto) {
4728
+ let m = new CheckEventTypeSlugExistResponse();
4729
+ m = Object.assign(m, proto);
4730
+ return m;
4731
+ }
4732
+ constructor(kwargs) {
4733
+ if (!kwargs) {
4734
+ return;
4735
+ }
4736
+ Object.assign(this, kwargs);
4737
+ }
4738
+ toApiJson() {
4739
+ const toReturn = {};
4740
+ if (typeof this.exists !== 'undefined') {
4741
+ toReturn['exists'] = this.exists;
4742
+ }
4743
+ return toReturn;
4744
+ }
4745
+ }
4559
4746
  class CheckGroupOrServiceSlugExistRequest {
4560
4747
  static fromProto(proto) {
4561
4748
  let m = new CheckGroupOrServiceSlugExistRequest();
@@ -7618,6 +7805,11 @@ class MeetingExternalApiService {
7618
7805
  const request = (r.toApiJson) ? r : new ExternalCancelMeetingRequest(r);
7619
7806
  return this.http.post(this._host + "/meetings.v1.MeetingExternal/CancelMeeting", request.toApiJson(), Object.assign(Object.assign({}, this.apiOptions()), { observe: 'response' }));
7620
7807
  }
7808
+ listTeamEventTypes(r) {
7809
+ const request = (r.toApiJson) ? r : new ListTeamEventTypesRequest(r);
7810
+ return this.http.post(this._host + "/meetings.v1.MeetingExternal/ListTeamEventTypes", request.toApiJson(), this.apiOptions())
7811
+ .pipe(map(resp => ListTeamEventTypesResponse.fromProto(resp)));
7812
+ }
7621
7813
  }
7622
7814
  MeetingExternalApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingExternalApiService, deps: [{ token: i1.HttpClient }, { token: HostService$1 }], target: i0.ɵɵFactoryTarget.Injectable });
7623
7815
  MeetingExternalApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingExternalApiService, providedIn: 'root' });
@@ -7958,6 +8150,11 @@ class MeetingHostApiService {
7958
8150
  return this.http.post(this._host + "/meetings.v1.MeetingHost/CheckGroupOrServiceSlugExist", request.toApiJson(), this.apiOptions())
7959
8151
  .pipe(map(resp => CheckGroupOrServiceSlugExistResponse.fromProto(resp)));
7960
8152
  }
8153
+ checkEventTypeSlugExist(r) {
8154
+ const request = (r.toApiJson) ? r : new CheckEventTypeSlugExistRequest(r);
8155
+ return this.http.post(this._host + "/meetings.v1.MeetingHost/CheckEventTypeSlugExist", request.toApiJson(), this.apiOptions())
8156
+ .pipe(map(resp => CheckEventTypeSlugExistResponse.fromProto(resp)));
8157
+ }
7961
8158
  hostBookMeeting(r) {
7962
8159
  const request = (r.toApiJson) ? r : new BookMeetingRequest(r);
7963
8160
  return this.http.post(this._host + "/meetings.v1.MeetingHost/HostBookMeeting", request.toApiJson(), this.apiOptions())
@@ -8816,6 +9013,11 @@ class HostService {
8816
9013
  .checkGroupOrServiceSlugExist(req)
8817
9014
  .pipe(map((res) => res.exists));
8818
9015
  }
9016
+ checkEventTypeSlugExist(req) {
9017
+ return this.hostAPIService
9018
+ .checkEventTypeSlugExist(req)
9019
+ .pipe(map((res) => res.exists));
9020
+ }
8819
9021
  getEntityAssociations(req) {
8820
9022
  return this.hostAPIService.getEntityAssociations(req);
8821
9023
  }