@mediusinc/mng-commons-audit 4.0.1-rc.0 → 4.1.0-rc.0-4e19f910

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFsbC1yZXNwb25zZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvYXBpL21vZGVscy9nZXQtYWxsLXJlc3BvbnNlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEdldEFsbFJlc3BvbnNlPEl0ZW0+IHtcbiAgICB0b3RhbENvdW50PzogbnVtYmVyO1xuICAgIGRhdGE6IEl0ZW1bXTtcbn1cbiJdfQ==
@@ -21,16 +21,14 @@ export class MngAuditRevisionsApiService extends AMngBaseApiService {
21
21
  getRevisionList(queryParams) {
22
22
  return this.http.get(this.getUrl(AuditUtil.appendMediusQueryParamsToUrl(queryParams)));
23
23
  }
24
- getRevisionCount(queryParams) {
25
- return this.http.get(this.getUrl('/count', AuditUtil.appendMediusQueryParamsToUrl(queryParams)));
26
- }
27
24
  getAllChangesForRevision(revId) {
28
25
  return this.http.get(this.getUrl(`/changes/${revId}`));
29
26
  }
30
27
  listRevisionsWithStateForEntityType(queryParams, entityType) {
31
- return this.http
32
- .get(this.getUrl(`/states/${entityType}`, AuditUtil.appendMediusQueryParamsToUrl(queryParams)))
33
- .pipe(map(response => this.deserializeClassArray(response, MngRevEntityWithStateDto)));
28
+ return this.http.get(this.getUrl(`/states/${entityType}`, AuditUtil.appendMediusQueryParamsToUrl(queryParams))).pipe(map(res => ({
29
+ data: this.deserializeClassArray(res.data, MngRevEntityWithStateDto),
30
+ totalCount: res.totalCount
31
+ })));
34
32
  }
35
33
  fetchRevisionsWithStateForEntityType(entityType, revId, itemId) {
36
34
  return this.http.get(this.getUrl(`/states/${entityType}?rev=eq:${revId}&id=eq:${itemId}`)).pipe(map(response => this.deserializeClassArray(response, MngRevEntityWithId).map(i => {
@@ -43,13 +41,10 @@ export class MngAuditRevisionsApiService extends AMngBaseApiService {
43
41
  throw new MngInternalError(`Entity revision ${revId} for ${entityType} with id ${itemId} was not found`);
44
42
  }));
45
43
  }
46
- countRevisionsWithStateForEntityType(queryParams, entityType) {
47
- return this.http.get(this.getUrl(`/states/${entityType}/count`, AuditUtil.appendMediusQueryParamsToUrl(queryParams)));
48
- }
49
44
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngAuditRevisionsApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
50
45
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngAuditRevisionsApiService }); }
51
46
  }
52
47
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngAuditRevisionsApiService, decorators: [{
53
48
  type: Injectable
54
49
  }], ctorParameters: () => [] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtcmV2aXNpb25zLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hcGkvc2VydmljZXMvYXVkaXQtcmV2aXNpb25zLWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR2pELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsa0JBQWtCLEVBQTRCLHVCQUF1QixFQUFFLGdCQUFnQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFL0gsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDN0UsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDOztBQUd6RSxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsa0JBQWtCO0lBSy9EO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFITyxpQkFBWSxHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBSWpFLElBQUksQ0FBQyxhQUFhLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVTLGtCQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFUyxXQUFXO1FBQ2pCLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztJQUMxRixDQUFDO0lBRU0sZUFBZSxDQUFDLFdBQTZCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWtDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1SCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsV0FBNkI7UUFDakQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsNEJBQTRCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxLQUFhO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sbUNBQW1DLENBQUMsV0FBNkIsRUFBRSxVQUFrQjtRQUN4RixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxVQUFVLEVBQUUsRUFBRSxTQUFTLENBQUMsNEJBQTRCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzthQUM5RixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRU0sb0NBQW9DLENBQUMsVUFBa0IsRUFBRSxLQUFhLEVBQUUsTUFBYztRQUN6RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxVQUFVLFdBQVcsS0FBSyxVQUFVLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzNGLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUNYLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDN0QsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoRSxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUNMLEVBQ0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1IsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDbEIsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkI7WUFDRCxNQUFNLElBQUksZ0JBQWdCLENBQUMsbUJBQW1CLEtBQUssUUFBUSxVQUFVLFlBQVksTUFBTSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdHLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU0sb0NBQW9DLENBQUMsV0FBNkIsRUFBRSxVQUFrQjtRQUN6RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFTLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxVQUFVLFFBQVEsRUFBRSxTQUFTLENBQUMsNEJBQTRCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xJLENBQUM7OEdBdkRRLDJCQUEyQjtrSEFBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtBTW5nQmFzZUFwaVNlcnZpY2UsIElkVHlwZSwgTWVkaXVzUXVlcnlQYXJhbSwgTW5nQ29uZmlndXJhdGlvblNlcnZpY2UsIE1uZ0ludGVybmFsRXJyb3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMnO1xuXG5pbXBvcnQge01uZ1JldkVudGl0eVdpdGhJZH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JldkVudGl0eVdpdGhJZC5tb2RlbCc7XG5pbXBvcnQge01OR19BVURJVF9NT0RVTEVfQ09ORklHX0lUfSBmcm9tICcuLi8uLi9zZXJ2aWNlL21vZHVsZS1jb25maWcudG9rZW4nO1xuaW1wb3J0IHtBdWRpdFV0aWx9IGZyb20gJy4uLy4uL3V0aWxzL2F1ZGl0LnV0aWwnO1xuaW1wb3J0IHtNbmdSZXZFbnRpdHlXaXRoQ2hhbmdlc0R0b30gZnJvbSAnLi4vbW9kZWxzL3JldkVudGl0eVdpdGhDaGFuZ2VzRHRvJztcbmltcG9ydCB7TW5nUmV2RW50aXR5V2l0aFN0YXRlRHRvfSBmcm9tICcuLi9tb2RlbHMvcmV2RW50aXR5V2l0aFN0YXRlRHRvJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1uZ0F1ZGl0UmV2aXNpb25zQXBpU2VydmljZSBleHRlbmRzIEFNbmdCYXNlQXBpU2VydmljZSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZHVsZUNvbmZpZyA9IGluamVjdChNTkdfQVVESVRfTU9EVUxFX0NPTkZJR19JVCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlID0gTW5nQ29uZmlndXJhdGlvblNlcnZpY2UuZ2V0KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFNlcnZpY2VCYXNlUGF0aCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ29uZmlnLmFwaVNlcnZpY2VCYXNlUGF0aCA/PyAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0QmFzZVBhdGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWdWYWx1ZSh0aGlzLm1vZHVsZUNvbmZpZy5hcGlCYXNlUGF0aENvbmZpZ0tleSl9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UmV2aXNpb25MaXN0KHF1ZXJ5UGFyYW1zOiBNZWRpdXNRdWVyeVBhcmFtKTogT2JzZXJ2YWJsZTxBcnJheTx7W2tleTogc3RyaW5nXTogdW5rbm93bn0+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFycmF5PHtba2V5OiBzdHJpbmddOiB1bmtub3dufT4+KHRoaXMuZ2V0VXJsKEF1ZGl0VXRpbC5hcHBlbmRNZWRpdXNRdWVyeVBhcmFtc1RvVXJsKHF1ZXJ5UGFyYW1zKSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRSZXZpc2lvbkNvdW50KHF1ZXJ5UGFyYW1zOiBNZWRpdXNRdWVyeVBhcmFtKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8bnVtYmVyPih0aGlzLmdldFVybCgnL2NvdW50JywgQXVkaXRVdGlsLmFwcGVuZE1lZGl1c1F1ZXJ5UGFyYW1zVG9VcmwocXVlcnlQYXJhbXMpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFsbENoYW5nZXNGb3JSZXZpc2lvbihyZXZJZDogSWRUeXBlKTogT2JzZXJ2YWJsZTxNbmdSZXZFbnRpdHlXaXRoQ2hhbmdlc0R0bz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmdldFVybChgL2NoYW5nZXMvJHtyZXZJZH1gKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGxpc3RSZXZpc2lvbnNXaXRoU3RhdGVGb3JFbnRpdHlUeXBlKHF1ZXJ5UGFyYW1zOiBNZWRpdXNRdWVyeVBhcmFtLCBlbnRpdHlUeXBlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PE1uZ1JldkVudGl0eVdpdGhTdGF0ZUR0bz4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldCh0aGlzLmdldFVybChgL3N0YXRlcy8ke2VudGl0eVR5cGV9YCwgQXVkaXRVdGlsLmFwcGVuZE1lZGl1c1F1ZXJ5UGFyYW1zVG9VcmwocXVlcnlQYXJhbXMpKSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyZXNwb25zZSA9PiB0aGlzLmRlc2VyaWFsaXplQ2xhc3NBcnJheShyZXNwb25zZSwgTW5nUmV2RW50aXR5V2l0aFN0YXRlRHRvKSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmZXRjaFJldmlzaW9uc1dpdGhTdGF0ZUZvckVudGl0eVR5cGUoZW50aXR5VHlwZTogc3RyaW5nLCByZXZJZDogSWRUeXBlLCBpdGVtSWQ6IElkVHlwZSk6IE9ic2VydmFibGU8TW5nUmV2RW50aXR5V2l0aElkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZ2V0VXJsKGAvc3RhdGVzLyR7ZW50aXR5VHlwZX0/cmV2PWVxOiR7cmV2SWR9JmlkPWVxOiR7aXRlbUlkfWApKS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+XG4gICAgICAgICAgICAgICAgdGhpcy5kZXNlcmlhbGl6ZUNsYXNzQXJyYXkocmVzcG9uc2UsIE1uZ1JldkVudGl0eVdpdGhJZCkubWFwKGkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpLm1lcmdlZElkID0gaS5yZXZFbnRpdHk/LlsncmV2J10gKyAnXycgKyBpLmVudGl0eVN0YXRlPy5bJ2lkJ107XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWFwKGl0ZW1zID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXNbMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBNbmdJbnRlcm5hbEVycm9yKGBFbnRpdHkgcmV2aXNpb24gJHtyZXZJZH0gZm9yICR7ZW50aXR5VHlwZX0gd2l0aCBpZCAke2l0ZW1JZH0gd2FzIG5vdCBmb3VuZGApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY291bnRSZXZpc2lvbnNXaXRoU3RhdGVGb3JFbnRpdHlUeXBlKHF1ZXJ5UGFyYW1zOiBNZWRpdXNRdWVyeVBhcmFtLCBlbnRpdHlUeXBlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxudW1iZXI+KHRoaXMuZ2V0VXJsKGAvc3RhdGVzLyR7ZW50aXR5VHlwZX0vY291bnRgLCBBdWRpdFV0aWwuYXBwZW5kTWVkaXVzUXVlcnlQYXJhbXNUb1VybChxdWVyeVBhcmFtcykpKTtcbiAgICB9XG59XG4iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtcmV2aXNpb25zLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hcGkvc2VydmljZXMvYXVkaXQtcmV2aXNpb25zLWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR2pELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsa0JBQWtCLEVBQTRCLHVCQUF1QixFQUFFLGdCQUFnQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFL0gsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDN0UsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR2pELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDOztBQUd6RSxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsa0JBQWtCO0lBSy9EO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFITyxpQkFBWSxHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBSWpFLElBQUksQ0FBQyxhQUFhLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVTLGtCQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFUyxXQUFXO1FBQ2pCLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztJQUMxRixDQUFDO0lBRU0sZUFBZSxDQUFDLFdBQTZCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQTJDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLDRCQUE0QixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNySSxDQUFDO0lBRU0sd0JBQXdCLENBQUMsS0FBYTtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVNLG1DQUFtQyxDQUFDLFdBQTZCLEVBQUUsVUFBa0I7UUFDeEYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBMEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLFVBQVUsRUFBRSxFQUFFLFNBQVMsQ0FBQyw0QkFBNEIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN6SSxHQUFHLENBQ0MsR0FBRyxDQUFDLEVBQUUsQ0FDRixDQUEwQztZQUN0QyxJQUFJLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLENBQUM7WUFDcEUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVO1NBQzdCLENBQUEsQ0FDUixDQUNKLENBQUM7SUFDTixDQUFDO0lBRU0sb0NBQW9DLENBQUMsVUFBa0IsRUFBRSxLQUFhLEVBQUUsTUFBYztRQUN6RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxVQUFVLFdBQVcsS0FBSyxVQUFVLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzNGLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUNYLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDN0QsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoRSxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUNMLEVBQ0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1IsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDbEIsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkI7WUFDRCxNQUFNLElBQUksZ0JBQWdCLENBQUMsbUJBQW1CLEtBQUssUUFBUSxVQUFVLFlBQVksTUFBTSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdHLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOzhHQXJEUSwyQkFBMkI7a0hBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7QU1uZ0Jhc2VBcGlTZXJ2aWNlLCBJZFR5cGUsIE1lZGl1c1F1ZXJ5UGFyYW0sIE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBNbmdJbnRlcm5hbEVycm9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zJztcblxuaW1wb3J0IHtNbmdSZXZFbnRpdHlXaXRoSWR9IGZyb20gJy4uLy4uL21vZGVscy9yZXZFbnRpdHlXaXRoSWQubW9kZWwnO1xuaW1wb3J0IHtNTkdfQVVESVRfTU9EVUxFX0NPTkZJR19JVH0gZnJvbSAnLi4vLi4vc2VydmljZS9tb2R1bGUtY29uZmlnLnRva2VuJztcbmltcG9ydCB7QXVkaXRVdGlsfSBmcm9tICcuLi8uLi91dGlscy9hdWRpdC51dGlsJztcbmltcG9ydCB7R2V0QWxsUmVzcG9uc2V9IGZyb20gJy4uL21vZGVscy9nZXQtYWxsLXJlc3BvbnNlLm1vZGVsJztcbmltcG9ydCB7TW5nUmV2RW50aXR5V2l0aENoYW5nZXNEdG99IGZyb20gJy4uL21vZGVscy9yZXZFbnRpdHlXaXRoQ2hhbmdlc0R0byc7XG5pbXBvcnQge01uZ1JldkVudGl0eVdpdGhTdGF0ZUR0b30gZnJvbSAnLi4vbW9kZWxzL3JldkVudGl0eVdpdGhTdGF0ZUR0byc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNbmdBdWRpdFJldmlzaW9uc0FwaVNlcnZpY2UgZXh0ZW5kcyBBTW5nQmFzZUFwaVNlcnZpY2Uge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb25maWdTZXJ2aWNlOiBNbmdDb25maWd1cmF0aW9uU2VydmljZTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBtb2R1bGVDb25maWcgPSBpbmplY3QoTU5HX0FVRElUX01PRFVMRV9DT05GSUdfSVQpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZSA9IE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRTZXJ2aWNlQmFzZVBhdGgoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsZUNvbmZpZy5hcGlTZXJ2aWNlQmFzZVBhdGggPz8gJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEJhc2VQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnVmFsdWUodGhpcy5tb2R1bGVDb25maWcuYXBpQmFzZVBhdGhDb25maWdLZXkpfWA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJldmlzaW9uTGlzdChxdWVyeVBhcmFtczogTWVkaXVzUXVlcnlQYXJhbSk6IE9ic2VydmFibGU8R2V0QWxsUmVzcG9uc2U8e1trZXk6IHN0cmluZ106IHVua25vd259Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxHZXRBbGxSZXNwb25zZTx7W2tleTogc3RyaW5nXTogdW5rbm93bn0+Pih0aGlzLmdldFVybChBdWRpdFV0aWwuYXBwZW5kTWVkaXVzUXVlcnlQYXJhbXNUb1VybChxdWVyeVBhcmFtcykpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWxsQ2hhbmdlc0ZvclJldmlzaW9uKHJldklkOiBJZFR5cGUpOiBPYnNlcnZhYmxlPE1uZ1JldkVudGl0eVdpdGhDaGFuZ2VzRHRvPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZ2V0VXJsKGAvY2hhbmdlcy8ke3JldklkfWApKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbGlzdFJldmlzaW9uc1dpdGhTdGF0ZUZvckVudGl0eVR5cGUocXVlcnlQYXJhbXM6IE1lZGl1c1F1ZXJ5UGFyYW0sIGVudGl0eVR5cGU6IHN0cmluZyk6IE9ic2VydmFibGU8R2V0QWxsUmVzcG9uc2U8TW5nUmV2RW50aXR5V2l0aFN0YXRlRHRvPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxHZXRBbGxSZXNwb25zZTx1bmtub3duPj4odGhpcy5nZXRVcmwoYC9zdGF0ZXMvJHtlbnRpdHlUeXBlfWAsIEF1ZGl0VXRpbC5hcHBlbmRNZWRpdXNRdWVyeVBhcmFtc1RvVXJsKHF1ZXJ5UGFyYW1zKSkpLnBpcGUoXG4gICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgcmVzID0+XG4gICAgICAgICAgICAgICAgICAgIDxHZXRBbGxSZXNwb25zZTxNbmdSZXZFbnRpdHlXaXRoU3RhdGVEdG8+PntcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMuZGVzZXJpYWxpemVDbGFzc0FycmF5KHJlcy5kYXRhLCBNbmdSZXZFbnRpdHlXaXRoU3RhdGVEdG8pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb3VudDogcmVzLnRvdGFsQ291bnRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBmZXRjaFJldmlzaW9uc1dpdGhTdGF0ZUZvckVudGl0eVR5cGUoZW50aXR5VHlwZTogc3RyaW5nLCByZXZJZDogSWRUeXBlLCBpdGVtSWQ6IElkVHlwZSk6IE9ic2VydmFibGU8TW5nUmV2RW50aXR5V2l0aElkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZ2V0VXJsKGAvc3RhdGVzLyR7ZW50aXR5VHlwZX0/cmV2PWVxOiR7cmV2SWR9JmlkPWVxOiR7aXRlbUlkfWApKS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+XG4gICAgICAgICAgICAgICAgdGhpcy5kZXNlcmlhbGl6ZUNsYXNzQXJyYXkocmVzcG9uc2UsIE1uZ1JldkVudGl0eVdpdGhJZCkubWFwKGkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpLm1lcmdlZElkID0gaS5yZXZFbnRpdHk/LlsncmV2J10gKyAnXycgKyBpLmVudGl0eVN0YXRlPy5bJ2lkJ107XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWFwKGl0ZW1zID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXNbMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBNbmdJbnRlcm5hbEVycm9yKGBFbnRpdHkgcmV2aXNpb24gJHtyZXZJZH0gZm9yICR7ZW50aXR5VHlwZX0gd2l0aCBpZCAke2l0ZW1JZH0gd2FzIG5vdCBmb3VuZGApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
@@ -65,12 +65,12 @@ export class EntityChangesFieldComponent extends AMngFormlyCustomFieldComponent
65
65
  return desc;
66
66
  }
67
67
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EntityChangesFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
68
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: EntityChangesFieldComponent, isStandalone: true, selector: "mng-entity-changes-field", inputs: { injector: "injector" }, usesInheritance: true, ngImport: i0, template: "@if (modelFetched | async) {\n <div>\n @for (ec of entityChanges; track ec) {\n <mng-table [items]=\"ec.items\" [descriptor]=\"createDescriptor(ec)\"></mng-table>\n }\n </div>\n} @else {\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem\"></i>\n </div>\n}\n", styles: ["::ng-deep tr.audit-row-deleted{background:hsla(3,100%,60%,.1)!important}::ng-deep tr.audit-row-deleted .audit-cell{background:hsla(3,90%,63%,.3)!important}::ng-deep tr.audit-row-added{background-color:#1bc5621a!important}::ng-deep tr.audit-row-added .audit-cell{background:hsla(145,76%,44%,.3)!important}\n"], dependencies: [{ kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "columnLastMinWidth", "captionComponent", "columnCustomLastComponent", "globalFilterFields"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnCustomLastComponentInstance"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
68
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: EntityChangesFieldComponent, isStandalone: true, selector: "mng-entity-changes-field", inputs: { injector: "injector" }, usesInheritance: true, ngImport: i0, template: "@if (modelFetched | async) {\n <div>\n @for (ec of entityChanges; track ec) {\n <mng-table [items]=\"ec.items\" [descriptor]=\"createDescriptor(ec)\"></mng-table>\n }\n </div>\n} @else {\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem\"></i>\n </div>\n}\n", styles: ["::ng-deep tr.audit-row-deleted{background:#ff3d331a!important}::ng-deep tr.audit-row-deleted .audit-cell{background:#f6544c4d!important}::ng-deep tr.audit-row-added{background-color:#1bc5621a!important}::ng-deep tr.audit-row-added .audit-cell{background:#1bc5624d!important}\n"], dependencies: [{ kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "columnLastMinWidth", "captionComponent", "columnCustomLastComponent", "globalFilterFields"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnCustomLastComponentInstance"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
69
69
  }
70
70
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EntityChangesFieldComponent, decorators: [{
71
71
  type: Component,
72
- args: [{ standalone: true, selector: 'mng-entity-changes-field', imports: [MngTableComponent, AsyncPipe], template: "@if (modelFetched | async) {\n <div>\n @for (ec of entityChanges; track ec) {\n <mng-table [items]=\"ec.items\" [descriptor]=\"createDescriptor(ec)\"></mng-table>\n }\n </div>\n} @else {\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem\"></i>\n </div>\n}\n", styles: ["::ng-deep tr.audit-row-deleted{background:hsla(3,100%,60%,.1)!important}::ng-deep tr.audit-row-deleted .audit-cell{background:hsla(3,90%,63%,.3)!important}::ng-deep tr.audit-row-added{background-color:#1bc5621a!important}::ng-deep tr.audit-row-added .audit-cell{background:hsla(145,76%,44%,.3)!important}\n"] }]
72
+ args: [{ standalone: true, selector: 'mng-entity-changes-field', imports: [MngTableComponent, AsyncPipe], template: "@if (modelFetched | async) {\n <div>\n @for (ec of entityChanges; track ec) {\n <mng-table [items]=\"ec.items\" [descriptor]=\"createDescriptor(ec)\"></mng-table>\n }\n </div>\n} @else {\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem\"></i>\n </div>\n}\n", styles: ["::ng-deep tr.audit-row-deleted{background:#ff3d331a!important}::ng-deep tr.audit-row-deleted .audit-cell{background:#f6544c4d!important}::ng-deep tr.audit-row-added{background-color:#1bc5621a!important}::ng-deep tr.audit-row-added .audit-cell{background:#1bc5624d!important}\n"] }]
73
73
  }], propDecorators: { injector: [{
74
74
  type: Input
75
75
  }] } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWNoYW5nZXMtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VudGl0eS1jaGFuZ2VzLWZpZWxkL2VudGl0eS1jaGFuZ2VzLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lbnRpdHktY2hhbmdlcy1maWVsZC9lbnRpdHktY2hhbmdlcy1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVyQyxPQUFPLEVBQUMsOEJBQThCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFJckosT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBRTdGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7QUFTakQsTUFBTSxPQUFPLDJCQUE0QixTQUFRLDhCQUE4QjtJQVAvRTs7UUFVWSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWpDLGtCQUFhLEdBQStCLEVBQUUsQ0FBQztRQUMvQyxpQkFBWSxHQUFHLElBQUks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aUIsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2QixJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLEdBQUcsQ0FBQyxFQUFFO2dCQUM3RSxHQUFHLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ25DO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixhQUFhLENBQUMsVUFBVSxJQUFJLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFFckYsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs4R0FsRVEsMkJBQTJCO2tHQUEzQiwyQkFBMkIsNklDdkJ4Qyx3VkFXQSw0V0RRYyxpQkFBaUIseVlBQUUsU0FBUzs7MkZBSTdCLDJCQUEyQjtrQkFQdkMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sMEJBQTBCLFdBQzNCLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDOzhCQUt2QixRQUFRO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBc3luY1BpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NvbXBvbmVudCwgRGVzdHJveVJlZiwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7QU1uZ0Zvcm1seUN1c3RvbUZpZWxkQ29tcG9uZW50LCBNbmdJbnRlcm5hbEVycm9yLCBNbmdUYWJsZUNvbXBvbmVudCwgVGFibGVEZXNjcmlwdG9yLCBUYWJsZVBhZ2luYXRpb25Nb2RlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucyc7XG5cbmltcG9ydCB7TW5nRW50aXR5Q2hhbmdlRHRvfSBmcm9tICcuLi8uLi9hcGkvbW9kZWxzL2VudGl0eUNoYW5nZSc7XG5pbXBvcnQge01uZ0d1aUVudGl0eU1vZGVsRHRvfSBmcm9tICcuLi8uLi9hcGkvbW9kZWxzL2d1aUVudGl0eU1vZGVsJztcbmltcG9ydCB7TW5nUmV2aXNpb25UeXBlRHRvfSBmcm9tICcuLi8uLi9hcGkvbW9kZWxzL3JldmlzaW9uVHlwZSc7XG5pbXBvcnQge01uZ0F1ZGl0U2VydmljZX0gZnJvbSAnLi4vLi4vYXBpL3NlcnZpY2VzL2F1ZGl0LnNlcnZpY2UnO1xuaW1wb3J0IHtNbmdFbnRpdHlSZXZpc2lvbkNoYW5nZVN0YXRlfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5LXJldmlzaW9uLWNoYW5nZS1zdGF0ZS5tb2RlbCc7XG5pbXBvcnQge01uZ0VudGl0eVJldmlzaW9uQ2hhbmdlc30gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS1yZXZpc2lvbi1jaGFuZ2VzLm1vZGVsJztcbmltcG9ydCB7QXVkaXRVdGlsfSBmcm9tICcuLi8uLi91dGlscy9hdWRpdC51dGlsJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1lbnRpdHktY2hhbmdlcy1maWVsZCcsXG4gICAgaW1wb3J0czogW01uZ1RhYmxlQ29tcG9uZW50LCBBc3luY1BpcGVdLFxuICAgIHN0eWxlVXJsczogWydlbnRpdHktY2hhbmdlcy1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICAgIHRlbXBsYXRlVXJsOiAnZW50aXR5LWNoYW5nZXMtZmllbGQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEVudGl0eUNoYW5nZXNGaWVsZENvbXBvbmVudCBleHRlbmRzIEFNbmdGb3JtbHlDdXN0b21GaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgcHVibGljIGluamVjdG9yPzogSW5qZWN0b3I7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBwdWJsaWMgZW50aXR5Q2hhbmdlczogTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VzW10gPSBbXTtcbiAgICBwdWJsaWMgbW9kZWxGZXRjaGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICBwcml2YXRlIGF1ZGl0TW9kZWw6IE1uZ0d1aUVudGl0eU1vZGVsRHRvW10gPSBbXTtcbiAgICBwcml2YXRlIGZpZWxkVmFsdWU/OiB7W2tleTogc3RyaW5nXTogQXJyYXk8TW5nRW50aXR5Q2hhbmdlRHRvPn07XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWVsZFZhbHVlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSBhcyB7W2tleTogc3RyaW5nXTogQXJyYXk8TW5nRW50aXR5Q2hhbmdlRHRvPn07XG4gICAgICAgIHRoaXMuaW5qZWN0b3JcbiAgICAgICAgICAgID8uZ2V0KE1uZ0F1ZGl0U2VydmljZSwgdW5kZWZpbmVkLCB7b3B0aW9uYWw6IHRydWV9KVxuICAgICAgICAgICAgPy5hdWRpdE1vZGVsJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogbW9kZWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1ZGl0TW9kZWwgPSBtb2RlbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmllbGRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRpdHlDaGFuZ2VzID0gQXVkaXRVdGlsLm1hcEl0ZW1zVG9FbnRpdHlDaGFuZ2VzQXJyYXkodGhpcy5maWVsZFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWxGZXRjaGVkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTW5nSW50ZXJuYWxFcnJvcignRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZldGNoIGF1ZGl0IG1vZGVsIGZyb20gYXVkaXQgc2VydmljZScsIHtuYW1lOiAnRW50aXR5Q2hhbmdlc0ZpZWxkQ29tcG9uZW50RXJyb3InLCBjYXVzZTogZXJyfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURlc2NyaXB0b3IoZW50aXR5Q2hhbmdlczogTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWRGaWVsZHM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGlmIChlbnRpdHlDaGFuZ2VzLml0ZW1zICYmIGVudGl0eUNoYW5nZXMuaXRlbXNbMF0ucmV2VHlwZSA9PT0gTW5nUmV2aXNpb25UeXBlRHRvLk1vZCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZW50aXR5Q2hhbmdlcy5pdGVtc1swXSkge1xuICAgICAgICAgICAgICAgIGlmIChlbnRpdHlDaGFuZ2VzLml0ZW1zWzBdW2tleV0gIT09IGVudGl0eUNoYW5nZXMuaXRlbXNbMV1ba2V5XSkge1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkRmllbGRzLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBndWlFbnRpdHlNb2RlbCA9IHRoaXMuYXVkaXRNb2RlbC5maWx0ZXIobSA9PiBtLmVudGl0eU5hbWUgPT09IGVudGl0eUNoYW5nZXMuZW50aXR5VHlwZSlbMF07XG5cbiAgICAgICAgY29uc3QgZGVzYyA9IFRhYmxlRGVzY3JpcHRvci5mcm9tQ2xhc3MoTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGd1aUVudGl0eU1vZGVsLmVudGl0eU5hbWUpLndpdGhDbGFzc05hbWUoJ3B5LTInKTtcbiAgICAgICAgaWYgKGd1aUVudGl0eU1vZGVsLmVudGl0eU5hbWUpIHtcbiAgICAgICAgICAgIGRlc2Mud2l0aFRpdGxlKGd1aUVudGl0eU1vZGVsLmVudGl0eU5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVzYy5hZGRDb2x1bW4oJ3JldlR5cGUnKS53aXRoVGl0bGUoJ01uZ0VudGl0eVJldmlzaW9uQ2hhbmdlU3RhdGUucHJvcGVydGllcy5yZXZUeXBlJykuYXNFbnVtKE1uZ1JldmlzaW9uVHlwZUR0byk7XG5cbiAgICAgICAgaWYgKGd1aUVudGl0eU1vZGVsLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIEF1ZGl0VXRpbC5hZGRDb2x1bW5zRnJvbU1vZGVsKGRlc2MsIGd1aUVudGl0eU1vZGVsLnByb3BlcnRpZXMsIHVuZGVmaW5lZCwgZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlc2Mud2l0aFJvd0NsYXNzTmFtZSh1bmRlZmluZWQsIChfLCBpdGVtKSA9PiAoaXRlbSA/IChpdGVtLmNvbG9yID09PSAnZ3JlZW4nID8gJ2F1ZGl0LXJvdy1hZGRlZCcgOiAnYXVkaXQtcm93LWRlbGV0ZWQnKSA6ICcnKSk7XG4gICAgICAgIGRlc2MuY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgICAgICBpZiAoY2hhbmdlZEZpZWxkcy5sZW5ndGggPiAwICYmIGNoYW5nZWRGaWVsZHMuc29tZSh2YWwgPT4gY29sLnByb3BlcnR5ID09PSB2YWwpKSB7XG4gICAgICAgICAgICAgICAgY29sLndpdGhDbGFzc05hbWUoJ2F1ZGl0LWNlbGwnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGVzYy53aXRoUGFnaW5hdGlvbk1vZGUoVGFibGVQYWdpbmF0aW9uTW9kZUVudW0uUGFnaW5hdGlvbik7XG4gICAgICAgIGRlc2Mud2l0aEN1cnJlbnRDb2x1bW5zUmVvcmRlcmFibGUoKTtcbiAgICAgICAgZGVzYy53aXRoQ3VycmVudENvbHVtbnNUb2dnbGVhYmxlKCk7XG4gICAgICAgIGRlc2Mud2l0aFRyYWNrUHJvcGVydHkoYEVudGl0eUNoYW5nZUZpZWxkXyR7ZW50aXR5Q2hhbmdlcy5lbnRpdHlUeXBlID8/ICdkZWZhdWx0J31gKTtcblxuICAgICAgICByZXR1cm4gZGVzYztcbiAgICB9XG59XG4iLCJAaWYgKG1vZGVsRmV0Y2hlZCB8IGFzeW5jKSB7XG4gICAgPGRpdj5cbiAgICAgICAgQGZvciAoZWMgb2YgZW50aXR5Q2hhbmdlczsgdHJhY2sgZWMpIHtcbiAgICAgICAgICAgIDxtbmctdGFibGUgW2l0ZW1zXT1cImVjLml0ZW1zXCIgW2Rlc2NyaXB0b3JdPVwiY3JlYXRlRGVzY3JpcHRvcihlYylcIj48L21uZy10YWJsZT5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxufSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgIDxpIGNsYXNzPVwicGkgcGktc3BpbiBwaS1zcGlubmVyXCIgc3R5bGU9XCJmb250LXNpemU6IDJyZW1cIj48L2k+XG4gICAgPC9kaXY+XG59XG4iXX0=
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWNoYW5nZXMtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VudGl0eS1jaGFuZ2VzLWZpZWxkL2VudGl0eS1jaGFuZ2VzLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lbnRpdHktY2hhbmdlcy1maWVsZC9lbnRpdHktY2hhbmdlcy1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVyQyxPQUFPLEVBQUMsOEJBQThCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFJckosT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBRTdGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7QUFTakQsTUFBTSxPQUFPLDJCQUE0QixTQUFRLDhCQUE4QjtJQVAvRTs7UUFVWSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWpDLGtCQUFhLEdBQStCLEVBQUUsQ0FBQztRQUMvQyxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLGVBQVUsR0FBMkIsRUFBRSxDQUFDO0tBMkRuRDtJQXhERyxRQUFRO1FBQ0osSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQW1ELENBQUM7UUFDdkYsSUFBSSxDQUFDLFFBQVE7WUFDVCxFQUFFLEdBQUcsQ0FBQyxlQUFlLEVBQUUsU0FBUyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDO1lBQ25ELEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDdEQsU0FBUyxDQUFDO1lBQ1AsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNWLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDN0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2hDO1lBQ0wsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDVCxNQUFNLElBQUksZ0JBQWdCLENBQUMsNERBQTRELEVBQUUsRUFBQyxJQUFJLEVBQUUsa0NBQWtDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7WUFDckosQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxhQUF1QztRQUMzRCxNQUFNLGFBQWEsR0FBYSxFQUFFLENBQUM7UUFDbkMsSUFBSSxhQUFhLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLGtCQUFrQixDQUFDLEdBQUcsRUFBRTtZQUNsRixLQUFLLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3RDLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUM3RCxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUMzQjthQUNKO1NBQ0o7UUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpHLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsNEJBQTRCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVJLElBQUksY0FBYyxDQUFDLFVBQVUsRUFBRTtZQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM3QztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLGlEQUFpRCxDQUFDLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFbEgsSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFO1lBQzNCLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzNGO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2QixJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLEdBQUcsQ0FBQyxFQUFFO2dCQUM3RSxHQUFHLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ25DO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixhQUFhLENBQUMsVUFBVSxJQUFJLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFFckYsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs4R0FsRVEsMkJBQTJCO2tHQUEzQiwyQkFBMkIsNklDdkJ4Qyx3VkFXQSw4VURRYyxpQkFBaUIseVlBQUUsU0FBUzs7MkZBSTdCLDJCQUEyQjtrQkFQdkMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sMEJBQTBCLFdBQzNCLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDOzhCQUt2QixRQUFRO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBc3luY1BpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NvbXBvbmVudCwgRGVzdHJveVJlZiwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7QU1uZ0Zvcm1seUN1c3RvbUZpZWxkQ29tcG9uZW50LCBNbmdJbnRlcm5hbEVycm9yLCBNbmdUYWJsZUNvbXBvbmVudCwgVGFibGVEZXNjcmlwdG9yLCBUYWJsZVBhZ2luYXRpb25Nb2RlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucyc7XG5cbmltcG9ydCB7TW5nRW50aXR5Q2hhbmdlRHRvfSBmcm9tICcuLi8uLi9hcGkvbW9kZWxzL2VudGl0eUNoYW5nZSc7XG5pbXBvcnQge01uZ0d1aUVudGl0eU1vZGVsRHRvfSBmcm9tICcuLi8uLi9hcGkvbW9kZWxzL2d1aUVudGl0eU1vZGVsJztcbmltcG9ydCB7TW5nUmV2aXNpb25UeXBlRHRvfSBmcm9tICcuLi8uLi9hcGkvbW9kZWxzL3JldmlzaW9uVHlwZSc7XG5pbXBvcnQge01uZ0F1ZGl0U2VydmljZX0gZnJvbSAnLi4vLi4vYXBpL3NlcnZpY2VzL2F1ZGl0LnNlcnZpY2UnO1xuaW1wb3J0IHtNbmdFbnRpdHlSZXZpc2lvbkNoYW5nZVN0YXRlfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5LXJldmlzaW9uLWNoYW5nZS1zdGF0ZS5tb2RlbCc7XG5pbXBvcnQge01uZ0VudGl0eVJldmlzaW9uQ2hhbmdlc30gZnJvbSAnLi4vLi4vbW9kZWxzL2VudGl0eS1yZXZpc2lvbi1jaGFuZ2VzLm1vZGVsJztcbmltcG9ydCB7QXVkaXRVdGlsfSBmcm9tICcuLi8uLi91dGlscy9hdWRpdC51dGlsJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1lbnRpdHktY2hhbmdlcy1maWVsZCcsXG4gICAgaW1wb3J0czogW01uZ1RhYmxlQ29tcG9uZW50LCBBc3luY1BpcGVdLFxuICAgIHN0eWxlVXJsczogWydlbnRpdHktY2hhbmdlcy1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICAgIHRlbXBsYXRlVXJsOiAnZW50aXR5LWNoYW5nZXMtZmllbGQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEVudGl0eUNoYW5nZXNGaWVsZENvbXBvbmVudCBleHRlbmRzIEFNbmdGb3JtbHlDdXN0b21GaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgcHVibGljIGluamVjdG9yPzogSW5qZWN0b3I7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBwdWJsaWMgZW50aXR5Q2hhbmdlczogTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VzW10gPSBbXTtcbiAgICBwdWJsaWMgbW9kZWxGZXRjaGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICBwcml2YXRlIGF1ZGl0TW9kZWw6IE1uZ0d1aUVudGl0eU1vZGVsRHRvW10gPSBbXTtcbiAgICBwcml2YXRlIGZpZWxkVmFsdWU/OiB7W2tleTogc3RyaW5nXTogQXJyYXk8TW5nRW50aXR5Q2hhbmdlRHRvPn07XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWVsZFZhbHVlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSBhcyB7W2tleTogc3RyaW5nXTogQXJyYXk8TW5nRW50aXR5Q2hhbmdlRHRvPn07XG4gICAgICAgIHRoaXMuaW5qZWN0b3JcbiAgICAgICAgICAgID8uZ2V0KE1uZ0F1ZGl0U2VydmljZSwgdW5kZWZpbmVkLCB7b3B0aW9uYWw6IHRydWV9KVxuICAgICAgICAgICAgPy5hdWRpdE1vZGVsJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogbW9kZWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1ZGl0TW9kZWwgPSBtb2RlbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmllbGRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRpdHlDaGFuZ2VzID0gQXVkaXRVdGlsLm1hcEl0ZW1zVG9FbnRpdHlDaGFuZ2VzQXJyYXkodGhpcy5maWVsZFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWxGZXRjaGVkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTW5nSW50ZXJuYWxFcnJvcignRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZldGNoIGF1ZGl0IG1vZGVsIGZyb20gYXVkaXQgc2VydmljZScsIHtuYW1lOiAnRW50aXR5Q2hhbmdlc0ZpZWxkQ29tcG9uZW50RXJyb3InLCBjYXVzZTogZXJyfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURlc2NyaXB0b3IoZW50aXR5Q2hhbmdlczogTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWRGaWVsZHM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGlmIChlbnRpdHlDaGFuZ2VzLml0ZW1zICYmIGVudGl0eUNoYW5nZXMuaXRlbXNbMF0ucmV2VHlwZSA9PT0gTW5nUmV2aXNpb25UeXBlRHRvLk1vZCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZW50aXR5Q2hhbmdlcy5pdGVtc1swXSkge1xuICAgICAgICAgICAgICAgIGlmIChlbnRpdHlDaGFuZ2VzLml0ZW1zWzBdW2tleV0gIT09IGVudGl0eUNoYW5nZXMuaXRlbXNbMV1ba2V5XSkge1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkRmllbGRzLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBndWlFbnRpdHlNb2RlbCA9IHRoaXMuYXVkaXRNb2RlbC5maWx0ZXIobSA9PiBtLmVudGl0eU5hbWUgPT09IGVudGl0eUNoYW5nZXMuZW50aXR5VHlwZSlbMF07XG5cbiAgICAgICAgY29uc3QgZGVzYyA9IFRhYmxlRGVzY3JpcHRvci5mcm9tQ2xhc3MoTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGd1aUVudGl0eU1vZGVsLmVudGl0eU5hbWUpLndpdGhDbGFzc05hbWUoJ3B5LTInKTtcbiAgICAgICAgaWYgKGd1aUVudGl0eU1vZGVsLmVudGl0eU5hbWUpIHtcbiAgICAgICAgICAgIGRlc2Mud2l0aFRpdGxlKGd1aUVudGl0eU1vZGVsLmVudGl0eU5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVzYy5hZGRDb2x1bW4oJ3JldlR5cGUnKS53aXRoVGl0bGUoJ01uZ0VudGl0eVJldmlzaW9uQ2hhbmdlU3RhdGUucHJvcGVydGllcy5yZXZUeXBlJykuYXNFbnVtKE1uZ1JldmlzaW9uVHlwZUR0byk7XG5cbiAgICAgICAgaWYgKGd1aUVudGl0eU1vZGVsLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIEF1ZGl0VXRpbC5hZGRDb2x1bW5zRnJvbU1vZGVsKGRlc2MsIGd1aUVudGl0eU1vZGVsLnByb3BlcnRpZXMsIHVuZGVmaW5lZCwgZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlc2Mud2l0aFJvd0NsYXNzTmFtZSh1bmRlZmluZWQsIChfLCBpdGVtKSA9PiAoaXRlbSA/IChpdGVtLmNvbG9yID09PSAnZ3JlZW4nID8gJ2F1ZGl0LXJvdy1hZGRlZCcgOiAnYXVkaXQtcm93LWRlbGV0ZWQnKSA6ICcnKSk7XG4gICAgICAgIGRlc2MuY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgICAgICBpZiAoY2hhbmdlZEZpZWxkcy5sZW5ndGggPiAwICYmIGNoYW5nZWRGaWVsZHMuc29tZSh2YWwgPT4gY29sLnByb3BlcnR5ID09PSB2YWwpKSB7XG4gICAgICAgICAgICAgICAgY29sLndpdGhDbGFzc05hbWUoJ2F1ZGl0LWNlbGwnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGVzYy53aXRoUGFnaW5hdGlvbk1vZGUoVGFibGVQYWdpbmF0aW9uTW9kZUVudW0uUGFnaW5hdGlvbik7XG4gICAgICAgIGRlc2Mud2l0aEN1cnJlbnRDb2x1bW5zUmVvcmRlcmFibGUoKTtcbiAgICAgICAgZGVzYy53aXRoQ3VycmVudENvbHVtbnNUb2dnbGVhYmxlKCk7XG4gICAgICAgIGRlc2Mud2l0aFRyYWNrUHJvcGVydHkoYEVudGl0eUNoYW5nZUZpZWxkXyR7ZW50aXR5Q2hhbmdlcy5lbnRpdHlUeXBlID8/ICdkZWZhdWx0J31gKTtcblxuICAgICAgICByZXR1cm4gZGVzYztcbiAgICB9XG59XG4iLCJAaWYgKG1vZGVsRmV0Y2hlZCB8IGFzeW5jKSB7XG4gICAgPGRpdj5cbiAgICAgICAgQGZvciAoZWMgb2YgZW50aXR5Q2hhbmdlczsgdHJhY2sgZWMpIHtcbiAgICAgICAgICAgIDxtbmctdGFibGUgW2l0ZW1zXT1cImVjLml0ZW1zXCIgW2Rlc2NyaXB0b3JdPVwiY3JlYXRlRGVzY3JpcHRvcihlYylcIj48L21uZy10YWJsZT5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxufSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgIDxpIGNsYXNzPVwicGkgcGktc3BpbiBwaS1zcGlubmVyXCIgc3R5bGU9XCJmb250LXNpemU6IDJyZW1cIj48L2k+XG4gICAgPC9kaXY+XG59XG4iXX0=
@@ -88,12 +88,9 @@ export class MngAuditEntityRevisionsPageComponent extends AMngTableviewRouteComp
88
88
  }
89
89
  const entityName = this.selectedRevisionEntity.entityName;
90
90
  return TableviewDataProvider.fromClass(MngRevEntityWithId).withGetAll(qp => this.selectedRevisionEntity?.entityName
91
- ? combineLatest([
92
- this.revisionsApiService.countRevisionsWithStateForEntityType(qp, entityName),
93
- this.revisionsApiService.listRevisionsWithStateForEntityType(qp, entityName)
94
- ]).pipe(map(([count, values]) => {
91
+ ? this.revisionsApiService.listRevisionsWithStateForEntityType(qp, entityName).pipe(map(res => {
95
92
  const revEntityWithStateAndIdList = [];
96
- for (const revEntityWithState of values) {
93
+ for (const revEntityWithState of res.data) {
97
94
  const revEntityWithStateAndId = new MngRevEntityWithId();
98
95
  revEntityWithStateAndId.mergedId = revEntityWithState.revEntity?.['rev'] + '_' + revEntityWithState.entityState?.['id'];
99
96
  revEntityWithStateAndId.revType = revEntityWithState.revType;
@@ -102,7 +99,7 @@ export class MngAuditEntityRevisionsPageComponent extends AMngTableviewRouteComp
102
99
  revEntityWithStateAndId.entityClassName = revEntityWithState.entityClassName;
103
100
  revEntityWithStateAndIdList.push(revEntityWithStateAndId);
104
101
  }
105
- return MediusQueryResult.fromArray(revEntityWithStateAndIdList, count);
102
+ return MediusQueryResult.fromArray(revEntityWithStateAndIdList, res.totalCount);
106
103
  }))
107
104
  : throwError(() => new MngInternalError('No revision entity is provided for list.')));
108
105
  }
@@ -133,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
133
130
  type: Component,
134
131
  args: [{ standalone: true, selector: 'mng-audit-entity-revisions-page', imports: [MngDropdownComponent, MngTableviewRouteComponent, FormsModule, AsyncPipe, TranslateModule, FormlyModule], template: "<div class=\"card\">\n <div class=\"field mb-0\">\n <mng-dropdown\n id=\"revisionEntityDropdown\"\n [placeholder]=\"'pages.entityRevisions.dropdown.placeholder' | translate\"\n optionsLabelProperty=\"entityNameI18n\"\n [(ngModel)]=\"selectedRevisionEntity\"\n (valueChange)=\"onRevisionEntityChange()\"\n [dataProvider]=\"revisionEntitiesLookupProvider\"></mng-dropdown>\n @if (!selectedRevisionEntity) {\n <small class=\"block\">\n {{ 'pages.entityRevisions.dropdown.helpText' | translate }}\n </small>\n }\n </div>\n</div>\n@if (showTableview()) {\n <mng-tableview-route [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"></mng-tableview-route>\n}\n" }]
135
132
  }], ctorParameters: () => [{ type: i1.Router }] });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtZW50aXR5LXJldmlzaW9ucy5wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9wYWdlcy9lbnRpdHktcmV2aXNpb25zL2F1ZGl0LWVudGl0eS1yZXZpc2lvbnMucGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcGFnZXMvZW50aXR5LXJldmlzaW9ucy9hdWRpdC1lbnRpdHktcmV2aXNpb25zLnBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUEwQixNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsYUFBYSxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUNILDJCQUEyQixFQUUzQiw2QkFBNkIsRUFDN0Isa0JBQWtCLEVBRWxCLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLDBCQUEwQixFQUMxQixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ3RCLE1BQU0sd0JBQXdCLENBQUM7QUFH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Q0FBQzthQUN4RztZQUNELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsb0NBQW9DLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwRyxDQUFDLENBQUM7YUFDRCxlQUFlLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUMzRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0IsQ0FBQzs4R0FsSVEsb0NBQW9DO2tHQUFwQyxvQ0FBb0Msa0hDdENqRCxpekJBbUJBLDRDRGdCYyxvQkFBb0IsOFZBQUUsMEJBQTBCLGtIQUFFLFdBQVcsOFZBQWEsZUFBZSwyRkFBRSxZQUFZOzsyRkFHeEcsb0NBQW9DO2tCQU5oRCxTQUFTO2lDQUNNLElBQUksWUFDTixpQ0FBaUMsV0FDbEMsQ0FBQyxvQkFBb0IsRUFBRSwwQkFBMEIsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q29tcG9uZW50LCBEZXN0cm95UmVmLCBPbkluaXQsIFdyaXRhYmxlU2lnbmFsLCBpbmplY3QsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7Rm9ybWx5TW9kdWxlfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIEFNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudCxcbiAgICBBY3Rpb25EZXNjcmlwdG9ySW5zdCxcbiAgICBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvcixcbiAgICBMb29rdXBEYXRhUHJvdmlkZXIsXG4gICAgTG9va3VwRGF0YVByb3ZpZGVySW5zdCxcbiAgICBNZWRpdXNRdWVyeVJlc3VsdCxcbiAgICBNbmdEcm9wZG93bkNvbXBvbmVudCxcbiAgICBNbmdJbnRlcm5hbEVycm9yLFxuICAgIE1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50LFxuICAgIFRhYmxldmlld0RhdGFQcm92aWRlcixcbiAgICBUYWJsZXZpZXdEZXNjcmlwdG9yXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMnO1xuXG5pbXBvcnQge01uZ0d1aUVudGl0eU1vZGVsRHRvfSBmcm9tICcuLi8uLi8uLi9hcGkvbW9kZWxzL2d1aUVudGl0eU1vZGVsJztcbmltcG9ydCB7TW5nQXVkaXRSZXZpc2lvbnNBcGlTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9hcGkvc2VydmljZXMvYXVkaXQtcmV2aXNpb25zLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7TW5nQXVkaXRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9hcGkvc2VydmljZXMvYXVkaXQuc2VydmljZSc7XG5pbXBvcnQge01uZ0d1aUVudGl0eU1vZGVsV2l0aEkxOG59IGZyb20gJy4uLy4uLy4uL21vZGVscy9ndWlFbnRpdHlNb2RlbFdpdGhJMThuLm1vZGVsJztcbmltcG9ydCB7TW5nUmV2RW50aXR5V2l0aElkfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmV2RW50aXR5V2l0aElkLm1vZGVsJztcbmltcG9ydCB7QXVkaXRVdGlsfSBmcm9tICcuLi8uLi8uLi91dGlscy9hdWRpdC51dGlsJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1hdWRpdC1lbnRpdHktcmV2aXNpb25zLXBhZ2UnLFxuICAgIGltcG9ydHM6IFtNbmdEcm9wZG93bkNvbXBvbmVudCwgTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBBc3luY1BpcGUsIFRyYW5zbGF0ZU1vZHVsZSwgRm9ybWx5TW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJ2F1ZGl0LWVudGl0eS1yZXZpc2lvbnMucGFnZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTW5nQXVkaXRFbnRpdHlSZXZpc2lvbnNQYWdlQ29tcG9uZW50IGV4dGVuZHMgQU1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50PE1uZ1JldkVudGl0eVdpdGhJZD4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIGF1ZGl0U2VydmljZSA9IGluamVjdChNbmdBdWRpdFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmV2aXNpb25zQXBpU2VydmljZSA9IGluamVjdChNbmdBdWRpdFJldmlzaW9uc0FwaVNlcnZpY2UpO1xuXG4gICAgcHVibGljIHJldk1vZGVsPzogTW5nR3VpRW50aXR5TW9kZWxEdG87XG4gICAgcHVibGljIHNlbGVjdGVkUmV2aXNpb25FbnRpdHk/OiBNbmdHdWlFbnRpdHlNb2RlbER0bztcbiAgICBwdWJsaWMgcmV2aXNpb25FbnRpdGllc0xvb2t1cFByb3ZpZGVyPzogTG9va3VwRGF0YVByb3ZpZGVySW5zdDxNbmdHdWlFbnRpdHlNb2RlbFdpdGhJMThuPjtcblxuICAgIHB1YmxpYyBzaG93VGFibGV2aWV3OiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucmV2aXNpb25FbnRpdGllc0xvb2t1cFByb3ZpZGVyID0gTG9va3VwRGF0YVByb3ZpZGVyLmZyb21DbGFzcyhNbmdHdWlFbnRpdHlNb2RlbFdpdGhJMThuKS53aXRoTG9va3VwKCgpID0+XG4gICAgICAgICAgICB0aGlzLmF1ZGl0U2VydmljZS5hdWRpdE1vZGVsJC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChtb2RlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsSTE4biA9IG1vZGVsIGFzIE1uZ0d1aUVudGl0eU1vZGVsV2l0aEkxOG5bXTtcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxJMThuLnNvcnQoKG0xLCBtMikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0xLmVudGl0eU5hbWUgJiYgbTIuZW50aXR5TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtMS5lbnRpdHlOYW1lLmxvY2FsZUNvbXBhcmUobTIuZW50aXR5TmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG0xLmVudGl0eU5hbWUgJiYgIW0yLmVudGl0eU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxJMThuLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkRW50aXR5TmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdBdWRpdEVudGl0aWVzLicgKyBpdGVtLmVudGl0eU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5lbnRpdHlOYW1lSTE4biA9IHRyYW5zbGF0ZWRFbnRpdHlOYW1lLmluY2x1ZGVzKCdBdWRpdEVudGl0aWVzLicpID8gaXRlbS5lbnRpdHlOYW1lIDogdHJhbnNsYXRlZEVudGl0eU5hbWU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9kZWxJMThuO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMucm91dGUucGFyYW1NYXAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbnRpdHlDbGFzcyA9IHBhcmFtcy5nZXQoJ2VudGl0eUNsYXNzJyk7XG4gICAgICAgICAgICBpZiAoZW50aXR5Q2xhc3MpIHtcbiAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmF1ZGl0U2VydmljZS5hdWRpdE1vZGVsJCwgdGhpcy5hdWRpdFNlcnZpY2UucmV2TW9kZWwkXSkuc3Vic2NyaWJlKChbZW50aXRpZXMsIHJldk1vZGVsXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJldk1vZGVsID0gcmV2TW9kZWw7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIGVudGl0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5lbnRpdHlOYW1lID09PSBlbnRpdHlDbGFzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eSA9IGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2hvd1RhYmxldmlldy5zZXQodHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblJldmlzaW9uRW50aXR5Q2hhbmdlKCkge1xuICAgICAgICB0aGlzLnNob3dUYWJsZXZpZXcuc2V0KGZhbHNlKTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXVkaXQvZW50aXR5LXJldmlzaW9ucy8nICsgdGhpcy5zZWxlY3RlZFJldmlzaW9uRW50aXR5LmVudGl0eU5hbWVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2F1ZGl0L2VudGl0eS1yZXZpc2lvbnMvJ10pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVRhYmxldmlld0Rlc2NyaXB0b3IoKSB7XG4gICAgICAgIGlmICghdGhpcy5yZXZNb2RlbCB8fCAhdGhpcy5zZWxlY3RlZFJldmlzaW9uRW50aXR5Py5lbnRpdHlOYW1lKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTW5nSW50ZXJuYWxFcnJvcignTm8gcmV2aXNpb24gbW9kZWwgb3IgcmV2aXNpb24gZW50aXR5IGlzIHByb3ZpZGVkIGZvciB0YWJsZXZpZXcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZXNjID0gVGFibGV2aWV3RGVzY3JpcHRvci5mcm9tQ2xhc3MoTW5nUmV2RW50aXR5V2l0aElkLCAnbWVyZ2VkSWQnLCB1bmRlZmluZWQsIHRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eS5lbnRpdHlOYW1lKTtcblxuICAgICAgICBBdWRpdFV0aWwuYnVpbGREZXNjcmlwdG9yRm9yRW50aXR5UmV2aXNpb24oZGVzYywgdGhpcy5yZXZNb2RlbCwgdGhpcy5zZWxlY3RlZFJldmlzaW9uRW50aXR5KTtcblxuICAgICAgICBkZXNjLnRhYmxlLndpdGhDb2x1bW5zUmVzaXphYmxlKCk7XG4gICAgICAgIGRlc2MudGFibGUud2l0aEN1cnJlbnRDb2x1bW5zUmVvcmRlcmFibGUoKTtcbiAgICAgICAgZGVzYy50YWJsZS53aXRoQ3VycmVudENvbHVtbnNUb2dnbGVhYmxlKCk7XG5cbiAgICAgICAgcmV0dXJuIGRlc2M7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVRhYmxldmlld0RhdGFQcm92aWRlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJldk1vZGVsIHx8ICF0aGlzLnNlbGVjdGVkUmV2aXNpb25FbnRpdHk/LmVudGl0eU5hbWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBNbmdJbnRlcm5hbEVycm9yKCdObyByZXZpc2lvbiBtb2RlbCBvciByZXZpc2lvbiBlbnRpdHkgaXMgcHJvdmlkZWQgZm9yIHRhYmxldmlldy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVudGl0eU5hbWUgPSB0aGlzLnNlbGVjdGVkUmV2aXNpb25FbnRpdHkuZW50aXR5TmFtZTtcbiAgICAgICAgcmV0dXJuIFRhYmxldmlld0RhdGFQcm92aWRlci5mcm9tQ2xhc3MoTW5nUmV2RW50aXR5V2l0aElkKS53aXRoR2V0QWxsKHFwID0+XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmV2aXNpb25FbnRpdHk/LmVudGl0eU5hbWVcbiAgICAgICAgICAgICAgICA/IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmV2aXNpb25zQXBpU2VydmljZS5jb3VudFJldmlzaW9uc1dpdGhTdGF0ZUZvckVudGl0eVR5cGUocXAsIGVudGl0eU5hbWUpLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmV2aXNpb25zQXBpU2VydmljZS5saXN0UmV2aXNpb25zV2l0aFN0YXRlRm9yRW50aXR5VHlwZShxcCwgZW50aXR5TmFtZSlcbiAgICAgICAgICAgICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgbWFwKChbY291bnQsIHZhbHVlc10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV2RW50aXR5V2l0aFN0YXRlQW5kSWRMaXN0ID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmV2RW50aXR5V2l0aFN0YXRlIG9mIHZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV2RW50aXR5V2l0aFN0YXRlQW5kSWQgPSBuZXcgTW5nUmV2RW50aXR5V2l0aElkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZFbnRpdHlXaXRoU3RhdGVBbmRJZC5tZXJnZWRJZCA9IHJldkVudGl0eVdpdGhTdGF0ZS5yZXZFbnRpdHk/LlsncmV2J10gKyAnXycgKyByZXZFbnRpdHlXaXRoU3RhdGUuZW50aXR5U3RhdGU/LlsnaWQnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldkVudGl0eVdpdGhTdGF0ZUFuZElkLnJldlR5cGUgPSByZXZFbnRpdHlXaXRoU3RhdGUucmV2VHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldkVudGl0eVdpdGhTdGF0ZUFuZElkLnJldkVudGl0eSA9IHJldkVudGl0eVdpdGhTdGF0ZS5yZXZFbnRpdHk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZFbnRpdHlXaXRoU3RhdGVBbmRJZC5lbnRpdHlTdGF0ZSA9IHJldkVudGl0eVdpdGhTdGF0ZS5lbnRpdHlTdGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldkVudGl0eVdpdGhTdGF0ZUFuZElkLmVudGl0eUNsYXNzTmFtZSA9IHJldkVudGl0eVdpdGhTdGF0ZS5lbnRpdHlDbGFzc05hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZFbnRpdHlXaXRoU3RhdGVBbmRJZExpc3QucHVzaChyZXZFbnRpdHlXaXRoU3RhdGVBbmRJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1lZGl1c1F1ZXJ5UmVzdWx0LmZyb21BcnJheShyZXZFbnRpdHlXaXRoU3RhdGVBbmRJZExpc3QsIGNvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdGhyb3dFcnJvcigoKSA9PiBuZXcgTW5nSW50ZXJuYWxFcnJvcignTm8gcmV2aXNpb24gZW50aXR5IGlzIHByb3ZpZGVkIGZvciBsaXN0LicpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVBY3Rpb25EZXNjcmlwdG9ycygpOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxNbmdSZXZFbnRpdHlXaXRoSWQ+PiB7XG4gICAgICAgIGlmICghdGhpcy5yZXZNb2RlbCB8fCAhdGhpcy5zZWxlY3RlZFJldmlzaW9uRW50aXR5Py5lbnRpdHlOYW1lKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTW5nSW50ZXJuYWxFcnJvcignTm8gcmV2aXNpb24gbW9kZWwgb3IgcmV2aXNpb24gZW50aXR5IGlzIHByb3ZpZGVkIGZvciB0YWJsZXZpZXcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbnRpdHlOYW1lID0gdGhpcy5zZWxlY3RlZFJldmlzaW9uRW50aXR5LmVudGl0eU5hbWU7XG4gICAgICAgIGNvbnN0IGRldGFpbHNBY3Rpb24gPSBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvci5jcmVhdGUodGhpcy5kZXNjcmlwdG9yLmRldGFpbHNFZGl0b3IpXG4gICAgICAgICAgICAud2l0aEZldGNoRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWVudGl0eU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IE1uZ0ludGVybmFsRXJyb3IoJ05vIHJldmlzaW9uIGVudGl0eSBpcyBwcm92aWRlZCBmb3IgZGV0YWlscy4nKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghY3R4LnBhcmFtZXRlcnMuaXRlbUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBNbmdJbnRlcm5hbEVycm9yKCdObyBpdGVtIGlkIGZvciByZXZpc2lvbiBlbnRpdHkgZGV0YWlscyBpcyBwcm92aWRlZC4nKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJldklkID0gY3R4LnBhcmFtZXRlcnMuaXRlbUlkLnRvU3RyaW5nKCkuc3BsaXQoJ18nKVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtSWQgPSBjdHgucGFyYW1ldGVycy5pdGVtSWQudG9TdHJpbmcoKS5zcGxpdCgnXycpWzFdO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldmlzaW9uc0FwaVNlcnZpY2UuZmV0Y2hSZXZpc2lvbnNXaXRoU3RhdGVGb3JFbnRpdHlUeXBlKGVudGl0eU5hbWUsIHJldklkLCBpdGVtSWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC53aXRoRWRpdG9yVGl0bGUoJ3BhZ2VzLmVudGl0eVJldmlzaW9ucy5hY3Rpb25zLmRldGFpbHMuZWRpdG9yLnRpdGxlJyk7XG4gICAgICAgIHJldHVybiBbZGV0YWlsc0FjdGlvbl07XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMFwiPlxuICAgICAgICA8bW5nLWRyb3Bkb3duXG4gICAgICAgICAgICBpZD1cInJldmlzaW9uRW50aXR5RHJvcGRvd25cIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwYWdlcy5lbnRpdHlSZXZpc2lvbnMuZHJvcGRvd24ucGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIG9wdGlvbnNMYWJlbFByb3BlcnR5PVwiZW50aXR5TmFtZUkxOG5cIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFJldmlzaW9uRW50aXR5XCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblJldmlzaW9uRW50aXR5Q2hhbmdlKClcIlxuICAgICAgICAgICAgW2RhdGFQcm92aWRlcl09XCJyZXZpc2lvbkVudGl0aWVzTG9va3VwUHJvdmlkZXJcIj48L21uZy1kcm9wZG93bj5cbiAgICAgICAgQGlmICghc2VsZWN0ZWRSZXZpc2lvbkVudGl0eSkge1xuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiYmxvY2tcIj5cbiAgICAgICAgICAgICAgICB7eyAncGFnZXMuZW50aXR5UmV2aXNpb25zLmRyb3Bkb3duLmhlbHBUZXh0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9kaXY+XG5AaWYgKHNob3dUYWJsZXZpZXcoKSkge1xuICAgIDxtbmctdGFibGV2aWV3LXJvdXRlIFtkZXNjcmlwdG9yXT1cImRlc2NyaXB0b3JcIiBbZGF0YVByb3ZpZGVyXT1cImRhdGFQcm92aWRlclwiIFthY3Rpb25zXT1cImFjdGlvbnNcIj48L21uZy10YWJsZXZpZXctcm91dGU+XG59XG4iXX0=
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtZW50aXR5LXJldmlzaW9ucy5wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9wYWdlcy9lbnRpdHktcmV2aXNpb25zL2F1ZGl0LWVudGl0eS1yZXZpc2lvbnMucGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcGFnZXMvZW50aXR5LXJldmlzaW9ucy9hdWRpdC1lbnRpdHktcmV2aXNpb25zLnBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUEwQixNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsYUFBYSxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUNILDJCQUEyQixFQUUzQiw2QkFBNkIsRUFDN0Isa0JBQWtCLEVBRWxCLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLDBCQUEwQixFQUMxQixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ3RCLE1BQU0sd0JBQXdCLENBQUM7QUFH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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsb0NBQW9DLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwRyxDQUFDLENBQUM7YUFDRCxlQUFlLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUMzRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0IsQ0FBQzs4R0EvSFEsb0NBQW9DO2tHQUFwQyxvQ0FBb0Msa0hDdENqRCxpekJBbUJBLDRDRGdCYyxvQkFBb0IsOFZBQUUsMEJBQTBCLGtIQUFFLFdBQVcsOFZBQWEsZUFBZSwyRkFBRSxZQUFZOzsyRkFHeEcsb0NBQW9DO2tCQU5oRCxTQUFTO2lDQUNNLElBQUksWUFDTixpQ0FBaUMsV0FDbEMsQ0FBQyxvQkFBb0IsRUFBRSwwQkFBMEIsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q29tcG9uZW50LCBEZXN0cm95UmVmLCBPbkluaXQsIFdyaXRhYmxlU2lnbmFsLCBpbmplY3QsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7Rm9ybWx5TW9kdWxlfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIEFNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudCxcbiAgICBBY3Rpb25EZXNjcmlwdG9ySW5zdCxcbiAgICBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvcixcbiAgICBMb29rdXBEYXRhUHJvdmlkZXIsXG4gICAgTG9va3VwRGF0YVByb3ZpZGVySW5zdCxcbiAgICBNZWRpdXNRdWVyeVJlc3VsdCxcbiAgICBNbmdEcm9wZG93bkNvbXBvbmVudCxcbiAgICBNbmdJbnRlcm5hbEVycm9yLFxuICAgIE1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50LFxuICAgIFRhYmxldmlld0RhdGFQcm92aWRlcixcbiAgICBUYWJsZXZpZXdEZXNjcmlwdG9yXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMnO1xuXG5pbXBvcnQge01uZ0d1aUVudGl0eU1vZGVsRHRvfSBmcm9tICcuLi8uLi8uLi9hcGkvbW9kZWxzL2d1aUVudGl0eU1vZGVsJztcbmltcG9ydCB7TW5nQXVkaXRSZXZpc2lvbnNBcGlTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9hcGkvc2VydmljZXMvYXVkaXQtcmV2aXNpb25zLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7TW5nQXVkaXRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9hcGkvc2VydmljZXMvYXVkaXQuc2VydmljZSc7XG5pbXBvcnQge01uZ0d1aUVudGl0eU1vZGVsV2l0aEkxOG59IGZyb20gJy4uLy4uLy4uL21vZGVscy9ndWlFbnRpdHlNb2RlbFdpdGhJMThuLm1vZGVsJztcbmltcG9ydCB7TW5nUmV2RW50aXR5V2l0aElkfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmV2RW50aXR5V2l0aElkLm1vZGVsJztcbmltcG9ydCB7QXVkaXRVdGlsfSBmcm9tICcuLi8uLi8uLi91dGlscy9hdWRpdC51dGlsJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1hdWRpdC1lbnRpdHktcmV2aXNpb25zLXBhZ2UnLFxuICAgIGltcG9ydHM6IFtNbmdEcm9wZG93bkNvbXBvbmVudCwgTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBBc3luY1BpcGUsIFRyYW5zbGF0ZU1vZHVsZSwgRm9ybWx5TW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJ2F1ZGl0LWVudGl0eS1yZXZpc2lvbnMucGFnZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTW5nQXVkaXRFbnRpdHlSZXZpc2lvbnNQYWdlQ29tcG9uZW50IGV4dGVuZHMgQU1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50PE1uZ1JldkVudGl0eVdpdGhJZD4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIGF1ZGl0U2VydmljZSA9IGluamVjdChNbmdBdWRpdFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmV2aXNpb25zQXBpU2VydmljZSA9IGluamVjdChNbmdBdWRpdFJldmlzaW9uc0FwaVNlcnZpY2UpO1xuXG4gICAgcHVibGljIHJldk1vZGVsPzogTW5nR3VpRW50aXR5TW9kZWxEdG87XG4gICAgcHVibGljIHNlbGVjdGVkUmV2aXNpb25FbnRpdHk/OiBNbmdHdWlFbnRpdHlNb2RlbER0bztcbiAgICBwdWJsaWMgcmV2aXNpb25FbnRpdGllc0xvb2t1cFByb3ZpZGVyPzogTG9va3VwRGF0YVByb3ZpZGVySW5zdDxNbmdHdWlFbnRpdHlNb2RlbFdpdGhJMThuPjtcblxuICAgIHB1YmxpYyBzaG93VGFibGV2aWV3OiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucmV2aXNpb25FbnRpdGllc0xvb2t1cFByb3ZpZGVyID0gTG9va3VwRGF0YVByb3ZpZGVyLmZyb21DbGFzcyhNbmdHdWlFbnRpdHlNb2RlbFdpdGhJMThuKS53aXRoTG9va3VwKCgpID0+XG4gICAgICAgICAgICB0aGlzLmF1ZGl0U2VydmljZS5hdWRpdE1vZGVsJC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChtb2RlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsSTE4biA9IG1vZGVsIGFzIE1uZ0d1aUVudGl0eU1vZGVsV2l0aEkxOG5bXTtcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxJMThuLnNvcnQoKG0xLCBtMikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0xLmVudGl0eU5hbWUgJiYgbTIuZW50aXR5TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtMS5lbnRpdHlOYW1lLmxvY2FsZUNvbXBhcmUobTIuZW50aXR5TmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG0xLmVudGl0eU5hbWUgJiYgIW0yLmVudGl0eU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxJMThuLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkRW50aXR5TmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdBdWRpdEVudGl0aWVzLicgKyBpdGVtLmVudGl0eU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5lbnRpdHlOYW1lSTE4biA9IHRyYW5zbGF0ZWRFbnRpdHlOYW1lLmluY2x1ZGVzKCdBdWRpdEVudGl0aWVzLicpID8gaXRlbS5lbnRpdHlOYW1lIDogdHJhbnNsYXRlZEVudGl0eU5hbWU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9kZWxJMThuO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMucm91dGUucGFyYW1NYXAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbnRpdHlDbGFzcyA9IHBhcmFtcy5nZXQoJ2VudGl0eUNsYXNzJyk7XG4gICAgICAgICAgICBpZiAoZW50aXR5Q2xhc3MpIHtcbiAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmF1ZGl0U2VydmljZS5hdWRpdE1vZGVsJCwgdGhpcy5hdWRpdFNlcnZpY2UucmV2TW9kZWwkXSkuc3Vic2NyaWJlKChbZW50aXRpZXMsIHJldk1vZGVsXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJldk1vZGVsID0gcmV2TW9kZWw7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIGVudGl0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5lbnRpdHlOYW1lID09PSBlbnRpdHlDbGFzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eSA9IGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2hvd1RhYmxldmlldy5zZXQodHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblJldmlzaW9uRW50aXR5Q2hhbmdlKCkge1xuICAgICAgICB0aGlzLnNob3dUYWJsZXZpZXcuc2V0KGZhbHNlKTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXVkaXQvZW50aXR5LXJldmlzaW9ucy8nICsgdGhpcy5zZWxlY3RlZFJldmlzaW9uRW50aXR5LmVudGl0eU5hbWVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2F1ZGl0L2VudGl0eS1yZXZpc2lvbnMvJ10pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVRhYmxldmlld0Rlc2NyaXB0b3IoKSB7XG4gICAgICAgIGlmICghdGhpcy5yZXZNb2RlbCB8fCAhdGhpcy5zZWxlY3RlZFJldmlzaW9uRW50aXR5Py5lbnRpdHlOYW1lKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTW5nSW50ZXJuYWxFcnJvcignTm8gcmV2aXNpb24gbW9kZWwgb3IgcmV2aXNpb24gZW50aXR5IGlzIHByb3ZpZGVkIGZvciB0YWJsZXZpZXcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZXNjID0gVGFibGV2aWV3RGVzY3JpcHRvci5mcm9tQ2xhc3MoTW5nUmV2RW50aXR5V2l0aElkLCAnbWVyZ2VkSWQnLCB1bmRlZmluZWQsIHRoaXMuc2VsZWN0ZWRSZXZpc2lvbkVudGl0eS5lbnRpdHlOYW1lKTtcblxuICAgICAgICBBdWRpdFV0aWwuYnVpbGREZXNjcmlwdG9yRm9yRW50aXR5UmV2aXNpb24oZGVzYywgdGhpcy5yZXZNb2RlbCwgdGhpcy5zZWxlY3RlZFJldmlzaW9uRW50aXR5KTtcblxuICAgICAgICBkZXNjLnRhYmxlLndpdGhDb2x1bW5zUmVzaXphYmxlKCk7XG4gICAgICAgIGRlc2MudGFibGUud2l0aEN1cnJlbnRDb2x1bW5zUmVvcmRlcmFibGUoKTtcbiAgICAgICAgZGVzYy50YWJsZS53aXRoQ3VycmVudENvbHVtbnNUb2dnbGVhYmxlKCk7XG5cbiAgICAgICAgcmV0dXJuIGRlc2M7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVRhYmxldmlld0RhdGFQcm92aWRlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJldk1vZGVsIHx8ICF0aGlzLnNlbGVjdGVkUmV2aXNpb25FbnRpdHk/LmVudGl0eU5hbWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBNbmdJbnRlcm5hbEVycm9yKCdObyByZXZpc2lvbiBtb2RlbCBvciByZXZpc2lvbiBlbnRpdHkgaXMgcHJvdmlkZWQgZm9yIHRhYmxldmlldy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVudGl0eU5hbWUgPSB0aGlzLnNlbGVjdGVkUmV2aXNpb25FbnRpdHkuZW50aXR5TmFtZTtcbiAgICAgICAgcmV0dXJuIFRhYmxldmlld0RhdGFQcm92aWRlci5mcm9tQ2xhc3MoTW5nUmV2RW50aXR5V2l0aElkKS53aXRoR2V0QWxsKHFwID0+XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmV2aXNpb25FbnRpdHk/LmVudGl0eU5hbWVcbiAgICAgICAgICAgICAgICA/IHRoaXMucmV2aXNpb25zQXBpU2VydmljZS5saXN0UmV2aXNpb25zV2l0aFN0YXRlRm9yRW50aXR5VHlwZShxcCwgZW50aXR5TmFtZSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV2RW50aXR5V2l0aFN0YXRlQW5kSWRMaXN0ID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmV2RW50aXR5V2l0aFN0YXRlIG9mIHJlcy5kYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXZFbnRpdHlXaXRoU3RhdGVBbmRJZCA9IG5ldyBNbmdSZXZFbnRpdHlXaXRoSWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldkVudGl0eVdpdGhTdGF0ZUFuZElkLm1lcmdlZElkID0gcmV2RW50aXR5V2l0aFN0YXRlLnJldkVudGl0eT8uWydyZXYnXSArICdfJyArIHJldkVudGl0eVdpdGhTdGF0ZS5lbnRpdHlTdGF0ZT8uWydpZCddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2RW50aXR5V2l0aFN0YXRlQW5kSWQucmV2VHlwZSA9IHJldkVudGl0eVdpdGhTdGF0ZS5yZXZUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2RW50aXR5V2l0aFN0YXRlQW5kSWQucmV2RW50aXR5ID0gcmV2RW50aXR5V2l0aFN0YXRlLnJldkVudGl0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldkVudGl0eVdpdGhTdGF0ZUFuZElkLmVudGl0eVN0YXRlID0gcmV2RW50aXR5V2l0aFN0YXRlLmVudGl0eVN0YXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2RW50aXR5V2l0aFN0YXRlQW5kSWQuZW50aXR5Q2xhc3NOYW1lID0gcmV2RW50aXR5V2l0aFN0YXRlLmVudGl0eUNsYXNzTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldkVudGl0eVdpdGhTdGF0ZUFuZElkTGlzdC5wdXNoKHJldkVudGl0eVdpdGhTdGF0ZUFuZElkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWVkaXVzUXVlcnlSZXN1bHQuZnJvbUFycmF5KHJldkVudGl0eVdpdGhTdGF0ZUFuZElkTGlzdCwgcmVzLnRvdGFsQ291bnQpO1xuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiB0aHJvd0Vycm9yKCgpID0+IG5ldyBNbmdJbnRlcm5hbEVycm9yKCdObyByZXZpc2lvbiBlbnRpdHkgaXMgcHJvdmlkZWQgZm9yIGxpc3QuJykpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JzKCk6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1uZ1JldkVudGl0eVdpdGhJZD4+IHtcbiAgICAgICAgaWYgKCF0aGlzLnJldk1vZGVsIHx8ICF0aGlzLnNlbGVjdGVkUmV2aXNpb25FbnRpdHk/LmVudGl0eU5hbWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBNbmdJbnRlcm5hbEVycm9yKCdObyByZXZpc2lvbiBtb2RlbCBvciByZXZpc2lvbiBlbnRpdHkgaXMgcHJvdmlkZWQgZm9yIHRhYmxldmlldy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVudGl0eU5hbWUgPSB0aGlzLnNlbGVjdGVkUmV2aXNpb25FbnRpdHkuZW50aXR5TmFtZTtcbiAgICAgICAgY29uc3QgZGV0YWlsc0FjdGlvbiA9IEFjdGlvbkVkaXRvckRldGFpbHNEZXNjcmlwdG9yLmNyZWF0ZSh0aGlzLmRlc2NyaXB0b3IuZGV0YWlsc0VkaXRvcilcbiAgICAgICAgICAgIC53aXRoRmV0Y2hGdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZW50aXR5TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgTW5nSW50ZXJuYWxFcnJvcignTm8gcmV2aXNpb24gZW50aXR5IGlzIHByb3ZpZGVkIGZvciBkZXRhaWxzLicpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFjdHgucGFyYW1ldGVycy5pdGVtSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IE1uZ0ludGVybmFsRXJyb3IoJ05vIGl0ZW0gaWQgZm9yIHJldmlzaW9uIGVudGl0eSBkZXRhaWxzIGlzIHByb3ZpZGVkLicpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcmV2SWQgPSBjdHgucGFyYW1ldGVycy5pdGVtSWQudG9TdHJpbmcoKS5zcGxpdCgnXycpWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1JZCA9IGN0eC5wYXJhbWV0ZXJzLml0ZW1JZC50b1N0cmluZygpLnNwbGl0KCdfJylbMV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV2aXNpb25zQXBpU2VydmljZS5mZXRjaFJldmlzaW9uc1dpdGhTdGF0ZUZvckVudGl0eVR5cGUoZW50aXR5TmFtZSwgcmV2SWQsIGl0ZW1JZCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLndpdGhFZGl0b3JUaXRsZSgncGFnZXMuZW50aXR5UmV2aXNpb25zLmFjdGlvbnMuZGV0YWlscy5lZGl0b3IudGl0bGUnKTtcbiAgICAgICAgcmV0dXJuIFtkZXRhaWxzQWN0aW9uXTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0wXCI+XG4gICAgICAgIDxtbmctZHJvcGRvd25cbiAgICAgICAgICAgIGlkPVwicmV2aXNpb25FbnRpdHlEcm9wZG93blwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BhZ2VzLmVudGl0eVJldmlzaW9ucy5kcm9wZG93bi5wbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgb3B0aW9uc0xhYmVsUHJvcGVydHk9XCJlbnRpdHlOYW1lSTE4blwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUmV2aXNpb25FbnRpdHlcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUmV2aXNpb25FbnRpdHlDaGFuZ2UoKVwiXG4gICAgICAgICAgICBbZGF0YVByb3ZpZGVyXT1cInJldmlzaW9uRW50aXRpZXNMb29rdXBQcm92aWRlclwiPjwvbW5nLWRyb3Bkb3duPlxuICAgICAgICBAaWYgKCFzZWxlY3RlZFJldmlzaW9uRW50aXR5KSB7XG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJibG9ja1wiPlxuICAgICAgICAgICAgICAgIHt7ICdwYWdlcy5lbnRpdHlSZXZpc2lvbnMuZHJvcGRvd24uaGVscFRleHQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L2Rpdj5cbkBpZiAoc2hvd1RhYmxldmlldygpKSB7XG4gICAgPG1uZy10YWJsZXZpZXctcm91dGUgW2Rlc2NyaXB0b3JdPVwiZGVzY3JpcHRvclwiIFtkYXRhUHJvdmlkZXJdPVwiZGF0YVByb3ZpZGVyXCIgW2FjdGlvbnNdPVwiYWN0aW9uc1wiPjwvbW5nLXRhYmxldmlldy1yb3V0ZT5cbn1cbiJdfQ==
@@ -2,7 +2,6 @@ import { AsyncPipe, JsonPipe } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, Component, DestroyRef, Injector, inject, signal } from '@angular/core';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { RouterOutlet } from '@angular/router';
5
- import { combineLatest } from 'rxjs';
6
5
  import { map } from 'rxjs/operators';
7
6
  import { AMngTableviewRouteComponent, ActionEditorDetailsDescriptor, EditorDescriptor, MediusQueryResult, MngTableviewComponent, MngTableviewRouteComponent, ModelDescriptor, TableFilterDisplayEnum, TableviewDataProvider, TableviewDescriptor, TableviewEditorTypeEnum, itemIdToDefined } from '@mediusinc/mng-commons';
8
7
  import { MngRevEntityWithChangesDto } from '../../../api/models/revEntityWithChangesDto';
@@ -61,7 +60,7 @@ export class MngAuditRevisionsPageComponent extends AMngTableviewRouteComponent
61
60
  }
62
61
  createTableviewDataProvider() {
63
62
  if (this.revModel) {
64
- return TableviewDataProvider.fromClass(MngRevEntity).withGetAll(qp => combineLatest([this.revisisonsApiService.getRevisionCount(qp), this.revisisonsApiService.getRevisionList(qp)]).pipe(map(([count, values]) => MediusQueryResult.fromArray(values, count))));
63
+ return TableviewDataProvider.fromClass(MngRevEntity).withGetAll(qp => this.revisisonsApiService.getRevisionList(qp).pipe(map(res => MediusQueryResult.fromArray(res.data, res.totalCount))));
65
64
  }
66
65
  return TableviewDataProvider.fromClass(MngRevEntity);
67
66
  }
@@ -82,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
82
81
  type: Component,
83
82
  args: [{ standalone: true, selector: 'mng-audit-revisions-page', imports: [MngTableviewComponent, AsyncPipe, MngTableviewComponent, RouterOutlet, JsonPipe, MngTableviewRouteComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (showTableview()) {\n <mng-tableview-route [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"></mng-tableview-route>\n}\n" }]
84
83
  }] });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtcmV2aXNpb25zLnBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3BhZ2VzL3JldmlzaW9ucy9hdWRpdC1yZXZpc2lvbnMucGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcGFnZXMvcmV2aXNpb25zL2F1ZGl0LXJldmlzaW9ucy5wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUEwQixNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9ILE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQ0gsMkJBQTJCLEVBRTNCLDZCQUE2QixFQUM3QixnQkFBZ0IsRUFHaEIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsbUJBQW1CLEVBRW5CLHVCQUF1QixFQUN2QixlQUFlLEVBQ2xCLE1BQU0sd0JBQXdCLENBQUM7QUFHaEMsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDdkYsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDOUYsT0FBTyxFQUFDLGVBQWUs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QUksQ0FDM0YsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1AsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7WUFDeEQsb0JBQW9CLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ2pELG9CQUFvQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2hELG9CQUFvQixDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUN0RSxPQUFPLG9CQUFvQixDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUNMLENBQ0osQ0FBQztRQUVGLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMzQixDQUFDOzhHQTlFUSw4QkFBOEI7a0dBQTlCLDhCQUE4QiwyR0MzQzNDLGlLQUdBLDRDRHFDK0YsMEJBQTBCOzsyRkFHNUcsOEJBQThCO2tCQVAxQyxTQUFTO2lDQUNNLElBQUksWUFDTiwwQkFBMEIsV0FFM0IsQ0FBQyxxQkFBcUIsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSwwQkFBMEIsQ0FBQyxtQkFDckcsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlLCBKc29uUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgSW5qZWN0b3IsIE9uSW5pdCwgV3JpdGFibGVTaWduYWwsIGluamVjdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1JvdXRlck91dGxldH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtjb21iaW5lTGF0ZXN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gICAgQU1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50LFxuICAgIEFjdGlvbkRlc2NyaXB0b3JJbnN0LFxuICAgIEFjdGlvbkVkaXRvckRldGFpbHNEZXNjcmlwdG9yLFxuICAgIEVkaXRvckRlc2NyaXB0b3IsXG4gICAgRWRpdG9yRGVzY3JpcHRvckluc3QsXG4gICAgSVRhYmxldmlld0RhdGFQcm92aWRlcixcbiAgICBNZWRpdXNRdWVyeVJlc3VsdCxcbiAgICBNbmdUYWJsZXZpZXdDb21wb25lbnQsXG4gICAgTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnQsXG4gICAgTW9kZWxEZXNjcmlwdG9yLFxuICAgIFRhYmxlRmlsdGVyRGlzcGxheUVudW0sXG4gICAgVGFibGV2aWV3RGF0YVByb3ZpZGVyLFxuICAgIFRhYmxldmlld0Rlc2NyaXB0b3IsXG4gICAgVGFibGV2aWV3RGVzY3JpcHRvckluc3QsXG4gICAgVGFibGV2aWV3RWRpdG9yVHlwZUVudW0sXG4gICAgaXRlbUlkVG9EZWZpbmVkXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMnO1xuXG5pbXBvcnQge01uZ0d1aUVudGl0eU1vZGVsRHRvfSBmcm9tICcuLi8uLi8uLi9hcGkvbW9kZWxzL2d1aUVudGl0eU1vZGVsJztcbmltcG9ydCB7TW5nUmV2RW50aXR5V2l0aENoYW5nZXNEdG99IGZyb20gJy4uLy4uLy4uL2FwaS9tb2RlbHMvcmV2RW50aXR5V2l0aENoYW5nZXNEdG8nO1xuaW1wb3J0IHtNbmdBdWRpdFJldmlzaW9uc0FwaVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2FwaS9zZXJ2aWNlcy9hdWRpdC1yZXZpc2lvbnMtYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHtNbmdBdWRpdFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2FwaS9zZXJ2aWNlcy9hdWRpdC5zZXJ2aWNlJztcbmltcG9ydCB7TW5nUmV2RW50aXR5RGV0YWlsZWR9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZXYtZW50aXR5LWRldGFpbGVkLm1vZGVsJztcbmltcG9ydCB7TW5nUmV2RW50aXR5fSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmV2LWVudGl0eS5tb2RlbCc7XG5pbXBvcnQge0F1ZGl0VXRpbH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXVkaXQudXRpbCc7XG5pbXBvcnQge0VudGl0eUNoYW5nZXNGaWVsZENvbXBvbmVudH0gZnJvbSAnLi4vLi4vZW50aXR5LWNoYW5nZXMtZmllbGQvZW50aXR5LWNoYW5nZXMtZmllbGQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1hdWRpdC1yZXZpc2lvbnMtcGFnZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2F1ZGl0LXJldmlzaW9ucy5wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbTW5nVGFibGV2aWV3Q29tcG9uZW50LCBBc3luY1BpcGUsIE1uZ1RhYmxldmlld0NvbXBvbmVudCwgUm91dGVyT3V0bGV0LCBKc29uUGlwZSwgTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnRdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0F1ZGl0UmV2aXNpb25zUGFnZUNvbXBvbmVudCBleHRlbmRzIEFNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudDxNbmdSZXZFbnRpdHk+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgcHJpdmF0ZSBhdWRpdFNlcnZpY2UgPSBpbmplY3QoTW5nQXVkaXRTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJldmlzaXNvbnNBcGlTZXJ2aWNlID0gaW5qZWN0KE1uZ0F1ZGl0UmV2aXNpb25zQXBpU2VydmljZSk7XG5cbiAgICBwcml2YXRlIHJldk1vZGVsPzogTW5nR3VpRW50aXR5TW9kZWxEdG87XG4gICAgcHVibGljIHNob3dUYWJsZXZpZXc6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmF1ZGl0U2VydmljZS5yZXZNb2RlbCQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IG1vZGVsID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJldk1vZGVsID0gbW9kZWw7XG4gICAgICAgICAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2hvd1RhYmxldmlldy5zZXQodHJ1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlVGFibGV2aWV3RGVzY3JpcHRvcigpOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNbmdSZXZFbnRpdHk+IHtcbiAgICAgICAgaWYgKHRoaXMucmV2TW9kZWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkUHJvcGVydHkgPSB0aGlzLnJldk1vZGVsLnByb3BlcnRpZXM/LmZpbHRlcihwcm9wID0+IHByb3AuaXNJZCkubWFwKHByb3AgPT4gcHJvcC5yZXNvbHZlZFByb3BlcnR5TmFtZSlbMF07XG5cbiAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gTW9kZWxEZXNjcmlwdG9yLmZyb21DbGFzcyhNbmdSZXZFbnRpdHkpO1xuICAgICAgICAgICAgaWYgKHRoaXMucmV2TW9kZWwuZW50aXR5TmFtZSkgbW9kZWwud2l0aEkxOG5CYXNlKHRoaXMucmV2TW9kZWwuZW50aXR5TmFtZSk7XG4gICAgICAgICAgICBpZiAoaWRQcm9wZXJ0eSkgbW9kZWwud2l0aElkUHJvcGVydHlVbnNhZmUoaWRQcm9wZXJ0eSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGRlc2MgPSBUYWJsZXZpZXdEZXNjcmlwdG9yLmZyb21Nb2RlbChtb2RlbCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGRldGFpbHNEZXNjcmlwdG9yID0gRWRpdG9yRGVzY3JpcHRvci5mcm9tQ2xhc3MoTW5nUmV2RW50aXR5V2l0aENoYW5nZXNEdG8sIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkRldGFpbHMpO1xuICAgICAgICAgICAgZGV0YWlsc0Rlc2NyaXB0b3IubW9kZWwud2l0aElkUHJvcGVydHlVbnNhZmUoJ3JldkVudGl0eS4nICsgaWRQcm9wZXJ0eSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnJldk1vZGVsLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBBdWRpdFV0aWwuYWRkQ29sdW1uc0Zyb21Nb2RlbChkZXNjLnRhYmxlLCB0aGlzLnJldk1vZGVsLnByb3BlcnRpZXMpO1xuICAgICAgICAgICAgICAgIEF1ZGl0VXRpbC5hZGRGaWVsZHNGcm9tTW9kZWw8TW5nUmV2RW50aXR5V2l0aENoYW5nZXNEdG8+KGRldGFpbHNEZXNjcmlwdG9yLCB0aGlzLnJldk1vZGVsLnByb3BlcnRpZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZXRhaWxzRGVzY3JpcHRvclxuICAgICAgICAgICAgICAgIC5hZGRGaWVsZCgnZW50aXR5TmFtZUNoYW5nZXNNYXAnKVxuICAgICAgICAgICAgICAgIC5hc0N1c3RvbUNvbXBvbmVudChFbnRpdHlDaGFuZ2VzRmllbGRDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRXcmFwcGVyczogWydmaWVsZC1uby1sYWJlbCddLFxuICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IHtpbmplY3RvcjogdGhpcy5pbmplY3Rvcn1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC53aXRoRGlzYWJsZWQoKTtcblxuICAgICAgICAgICAgZGVzYy53aXRoRGV0YWlsc0Rlc2NyaXB0b3IoZGV0YWlsc0Rlc2NyaXB0b3IgYXMgRWRpdG9yRGVzY3JpcHRvckluc3Q8TW5nUmV2RW50aXR5Pik7IC8vIE1uZ1JldkVudGl0eSBpcyBleHRlbmRlZCBieSBNbmdSZXZFbnRpdHlXaXRoQ2hhbmdlc0R0bywgc28gbm8gcmVhbCBoYXJtIGhlcmVcbiAgICAgICAgICAgIGRlc2MudGFibGUud2l0aEZpbHRlckRpc3BsYXkoVGFibGVGaWx0ZXJEaXNwbGF5RW51bS5Sb3cpO1xuXG4gICAgICAgICAgICByZXR1cm4gZGVzYztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gVGFibGV2aWV3RGVzY3JpcHRvci5mcm9tQ2xhc3MoTW5nUmV2RW50aXR5KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlVGFibGV2aWV3RGF0YVByb3ZpZGVyKCk6IElUYWJsZXZpZXdEYXRhUHJvdmlkZXI8TW5nUmV2RW50aXR5PiB7XG4gICAgICAgIGlmICh0aGlzLnJldk1vZGVsKSB7XG4gICAgICAgICAgICByZXR1cm4gVGFibGV2aWV3RGF0YVByb3ZpZGVyLmZyb21DbGFzcyhNbmdSZXZFbnRpdHkpLndpdGhHZXRBbGwocXAgPT5cbiAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnJldmlzaXNvbnNBcGlTZXJ2aWNlLmdldFJldmlzaW9uQ291bnQocXApLCB0aGlzLnJldmlzaXNvbnNBcGlTZXJ2aWNlLmdldFJldmlzaW9uTGlzdChxcCldKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAoKFtjb3VudCwgdmFsdWVzXSkgPT4gTWVkaXVzUXVlcnlSZXN1bHQuZnJvbUFycmF5KHZhbHVlcywgY291bnQpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFRhYmxldmlld0RhdGFQcm92aWRlci5mcm9tQ2xhc3MoTW5nUmV2RW50aXR5KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY3JlYXRlQWN0aW9uRGVzY3JpcHRvcnMoKTogQXJyYXk8QWN0aW9uRGVzY3JpcHRvckluc3Q8TW5nUmV2RW50aXR5Pj4ge1xuICAgICAgICBjb25zdCBkZXRhaWxzQWN0aW9uID0gQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3IuY3JlYXRlKHRoaXMuZGVzY3JpcHRvci5kZXRhaWxzRWRpdG9yKS53aXRoRmV0Y2hGdW5jdGlvbihjdHggPT5cbiAgICAgICAgICAgIHRoaXMucmV2aXNpc29uc0FwaVNlcnZpY2UuZ2V0QWxsQ2hhbmdlc0ZvclJldmlzaW9uKGl0ZW1JZFRvRGVmaW5lZChjdHgucGFyYW1ldGVycy5pdGVtSWQpKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV2RW50aXR5V2l0aENoYW5nZXMgPSBuZXcgTW5nUmV2RW50aXR5RGV0YWlsZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV2RW50aXR5V2l0aENoYW5nZXMucmV2ID0gY3R4LnBhcmFtZXRlcnMuaXRlbUlkO1xuICAgICAgICAgICAgICAgICAgICByZXZFbnRpdHlXaXRoQ2hhbmdlcy5yZXZFbnRpdHkgPSBpdGVtLnJldkVudGl0eTtcbiAgICAgICAgICAgICAgICAgICAgcmV2RW50aXR5V2l0aENoYW5nZXMuZW50aXR5TmFtZUNoYW5nZXNNYXAgPSBpdGVtLmVudGl0eU5hbWVDaGFuZ2VzTWFwO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV2RW50aXR5V2l0aENoYW5nZXM7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gW2RldGFpbHNBY3Rpb25dO1xuICAgIH1cbn1cbiIsIkBpZiAoc2hvd1RhYmxldmlldygpKSB7XG4gICAgPG1uZy10YWJsZXZpZXctcm91dGUgW2Rlc2NyaXB0b3JdPVwiZGVzY3JpcHRvclwiIFtkYXRhUHJvdmlkZXJdPVwiZGF0YVByb3ZpZGVyXCIgW2FjdGlvbnNdPVwiYWN0aW9uc1wiPjwvbW5nLXRhYmxldmlldy1yb3V0ZT5cbn1cbiJdfQ==
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtcmV2aXNpb25zLnBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3BhZ2VzL3JldmlzaW9ucy9hdWRpdC1yZXZpc2lvbnMucGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcGFnZXMvcmV2aXNpb25zL2F1ZGl0LXJldmlzaW9ucy5wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUEwQixNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9ILE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUNILDJCQUEyQixFQUUzQiw2QkFBNkIsRUFDN0IsZ0JBQWdCLEVBR2hCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzFCLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUVuQix1QkFBdUIsRUFDdkIsZUFBZSxFQUNsQixNQUFNLHdCQUF3QixDQUFDO0FBR2hDLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQzlGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMsb0JB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Q0FBQyxNQUFNLENBQUM7WUFDakQsb0JBQW9CLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDaEQsb0JBQW9CLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ3RFLE9BQU8sb0JBQW9CLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQ0wsQ0FDSixDQUFDO1FBRUYsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7OEdBNUVRLDhCQUE4QjtrR0FBOUIsOEJBQThCLDJHQzFDM0MsaUtBR0EsNENEb0MrRiwwQkFBMEI7OzJGQUc1Ryw4QkFBOEI7a0JBUDFDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLDBCQUEwQixXQUUzQixDQUFDLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLDBCQUEwQixDQUFDLG1CQUNyRyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBc3luY1BpcGUsIEpzb25QaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBJbmplY3RvciwgT25Jbml0LCBXcml0YWJsZVNpZ25hbCwgaW5qZWN0LCBzaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Um91dGVyT3V0bGV0fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIEFNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudCxcbiAgICBBY3Rpb25EZXNjcmlwdG9ySW5zdCxcbiAgICBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvcixcbiAgICBFZGl0b3JEZXNjcmlwdG9yLFxuICAgIEVkaXRvckRlc2NyaXB0b3JJbnN0LFxuICAgIElUYWJsZXZpZXdEYXRhUHJvdmlkZXIsXG4gICAgTWVkaXVzUXVlcnlSZXN1bHQsXG4gICAgTW5nVGFibGV2aWV3Q29tcG9uZW50LFxuICAgIE1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50LFxuICAgIE1vZGVsRGVzY3JpcHRvcixcbiAgICBUYWJsZUZpbHRlckRpc3BsYXlFbnVtLFxuICAgIFRhYmxldmlld0RhdGFQcm92aWRlcixcbiAgICBUYWJsZXZpZXdEZXNjcmlwdG9yLFxuICAgIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0LFxuICAgIFRhYmxldmlld0VkaXRvclR5cGVFbnVtLFxuICAgIGl0ZW1JZFRvRGVmaW5lZFxufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zJztcblxuaW1wb3J0IHtNbmdHdWlFbnRpdHlNb2RlbER0b30gZnJvbSAnLi4vLi4vLi4vYXBpL21vZGVscy9ndWlFbnRpdHlNb2RlbCc7XG5pbXBvcnQge01uZ1JldkVudGl0eVdpdGhDaGFuZ2VzRHRvfSBmcm9tICcuLi8uLi8uLi9hcGkvbW9kZWxzL3JldkVudGl0eVdpdGhDaGFuZ2VzRHRvJztcbmltcG9ydCB7TW5nQXVkaXRSZXZpc2lvbnNBcGlTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9hcGkvc2VydmljZXMvYXVkaXQtcmV2aXNpb25zLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7TW5nQXVkaXRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9hcGkvc2VydmljZXMvYXVkaXQuc2VydmljZSc7XG5pbXBvcnQge01uZ1JldkVudGl0eURldGFpbGVkfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmV2LWVudGl0eS1kZXRhaWxlZC5tb2RlbCc7XG5pbXBvcnQge01uZ1JldkVudGl0eX0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Jldi1lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtBdWRpdFV0aWx9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2F1ZGl0LnV0aWwnO1xuaW1wb3J0IHtFbnRpdHlDaGFuZ2VzRmllbGRDb21wb25lbnR9IGZyb20gJy4uLy4uL2VudGl0eS1jaGFuZ2VzLWZpZWxkL2VudGl0eS1jaGFuZ2VzLWZpZWxkLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctYXVkaXQtcmV2aXNpb25zLXBhZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hdWRpdC1yZXZpc2lvbnMucGFnZS5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW01uZ1RhYmxldmlld0NvbXBvbmVudCwgQXN5bmNQaXBlLCBNbmdUYWJsZXZpZXdDb21wb25lbnQsIFJvdXRlck91dGxldCwgSnNvblBpcGUsIE1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50XSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNbmdBdWRpdFJldmlzaW9uc1BhZ2VDb21wb25lbnQgZXh0ZW5kcyBBTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnQ8TW5nUmV2RW50aXR5PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAgIHByaXZhdGUgYXVkaXRTZXJ2aWNlID0gaW5qZWN0KE1uZ0F1ZGl0U2VydmljZSk7XG4gICAgcHJpdmF0ZSByZXZpc2lzb25zQXBpU2VydmljZSA9IGluamVjdChNbmdBdWRpdFJldmlzaW9uc0FwaVNlcnZpY2UpO1xuXG4gICAgcHJpdmF0ZSByZXZNb2RlbD86IE1uZ0d1aUVudGl0eU1vZGVsRHRvO1xuICAgIHB1YmxpYyBzaG93VGFibGV2aWV3OiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hdWRpdFNlcnZpY2UucmV2TW9kZWwkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiBtb2RlbCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXZNb2RlbCA9IG1vZGVsO1xuICAgICAgICAgICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNob3dUYWJsZXZpZXcuc2V0KHRydWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVRhYmxldmlld0Rlc2NyaXB0b3IoKTogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW5nUmV2RW50aXR5PiB7XG4gICAgICAgIGlmICh0aGlzLnJldk1vZGVsKSB7XG4gICAgICAgICAgICBjb25zdCBpZFByb3BlcnR5ID0gdGhpcy5yZXZNb2RlbC5wcm9wZXJ0aWVzPy5maWx0ZXIocHJvcCA9PiBwcm9wLmlzSWQpLm1hcChwcm9wID0+IHByb3AucmVzb2x2ZWRQcm9wZXJ0eU5hbWUpWzBdO1xuXG4gICAgICAgICAgICBjb25zdCBtb2RlbCA9IE1vZGVsRGVzY3JpcHRvci5mcm9tQ2xhc3MoTW5nUmV2RW50aXR5KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJldk1vZGVsLmVudGl0eU5hbWUpIG1vZGVsLndpdGhJMThuQmFzZSh0aGlzLnJldk1vZGVsLmVudGl0eU5hbWUpO1xuICAgICAgICAgICAgaWYgKGlkUHJvcGVydHkpIG1vZGVsLndpdGhJZFByb3BlcnR5VW5zYWZlKGlkUHJvcGVydHkpO1xuXG4gICAgICAgICAgICBjb25zdCBkZXNjID0gVGFibGV2aWV3RGVzY3JpcHRvci5mcm9tTW9kZWwobW9kZWwpO1xuXG4gICAgICAgICAgICBjb25zdCBkZXRhaWxzRGVzY3JpcHRvciA9IEVkaXRvckRlc2NyaXB0b3IuZnJvbUNsYXNzKE1uZ1JldkVudGl0eVdpdGhDaGFuZ2VzRHRvLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5EZXRhaWxzKTtcbiAgICAgICAgICAgIGRldGFpbHNEZXNjcmlwdG9yLm1vZGVsLndpdGhJZFByb3BlcnR5VW5zYWZlKCdyZXZFbnRpdHkuJyArIGlkUHJvcGVydHkpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5yZXZNb2RlbC5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgQXVkaXRVdGlsLmFkZENvbHVtbnNGcm9tTW9kZWwoZGVzYy50YWJsZSwgdGhpcy5yZXZNb2RlbC5wcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgICAgICBBdWRpdFV0aWwuYWRkRmllbGRzRnJvbU1vZGVsPE1uZ1JldkVudGl0eVdpdGhDaGFuZ2VzRHRvPihkZXRhaWxzRGVzY3JpcHRvciwgdGhpcy5yZXZNb2RlbC5wcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGV0YWlsc0Rlc2NyaXB0b3JcbiAgICAgICAgICAgICAgICAuYWRkRmllbGQoJ2VudGl0eU5hbWVDaGFuZ2VzTWFwJylcbiAgICAgICAgICAgICAgICAuYXNDdXN0b21Db21wb25lbnQoRW50aXR5Q2hhbmdlc0ZpZWxkQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkV3JhcHBlcnM6IFsnZmllbGQtbm8tbGFiZWwnXSxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiB7aW5qZWN0b3I6IHRoaXMuaW5qZWN0b3J9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAud2l0aERpc2FibGVkKCk7XG5cbiAgICAgICAgICAgIGRlc2Mud2l0aERldGFpbHNEZXNjcmlwdG9yKGRldGFpbHNEZXNjcmlwdG9yIGFzIEVkaXRvckRlc2NyaXB0b3JJbnN0PE1uZ1JldkVudGl0eT4pOyAvLyBNbmdSZXZFbnRpdHkgaXMgZXh0ZW5kZWQgYnkgTW5nUmV2RW50aXR5V2l0aENoYW5nZXNEdG8sIHNvIG5vIHJlYWwgaGFybSBoZXJlXG4gICAgICAgICAgICBkZXNjLnRhYmxlLndpdGhGaWx0ZXJEaXNwbGF5KFRhYmxlRmlsdGVyRGlzcGxheUVudW0uUm93KTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlc2M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFRhYmxldmlld0Rlc2NyaXB0b3IuZnJvbUNsYXNzKE1uZ1JldkVudGl0eSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVRhYmxldmlld0RhdGFQcm92aWRlcigpOiBJVGFibGV2aWV3RGF0YVByb3ZpZGVyPE1uZ1JldkVudGl0eT4ge1xuICAgICAgICBpZiAodGhpcy5yZXZNb2RlbCkge1xuICAgICAgICAgICAgcmV0dXJuIFRhYmxldmlld0RhdGFQcm92aWRlci5mcm9tQ2xhc3MoTW5nUmV2RW50aXR5KS53aXRoR2V0QWxsKHFwID0+XG4gICAgICAgICAgICAgICAgdGhpcy5yZXZpc2lzb25zQXBpU2VydmljZS5nZXRSZXZpc2lvbkxpc3QocXApLnBpcGUobWFwKHJlcyA9PiBNZWRpdXNRdWVyeVJlc3VsdC5mcm9tQXJyYXkocmVzLmRhdGEsIHJlcy50b3RhbENvdW50KSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBUYWJsZXZpZXdEYXRhUHJvdmlkZXIuZnJvbUNsYXNzKE1uZ1JldkVudGl0eSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JzKCk6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1uZ1JldkVudGl0eT4+IHtcbiAgICAgICAgY29uc3QgZGV0YWlsc0FjdGlvbiA9IEFjdGlvbkVkaXRvckRldGFpbHNEZXNjcmlwdG9yLmNyZWF0ZSh0aGlzLmRlc2NyaXB0b3IuZGV0YWlsc0VkaXRvcikud2l0aEZldGNoRnVuY3Rpb24oY3R4ID0+XG4gICAgICAgICAgICB0aGlzLnJldmlzaXNvbnNBcGlTZXJ2aWNlLmdldEFsbENoYW5nZXNGb3JSZXZpc2lvbihpdGVtSWRUb0RlZmluZWQoY3R4LnBhcmFtZXRlcnMuaXRlbUlkKSkucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJldkVudGl0eVdpdGhDaGFuZ2VzID0gbmV3IE1uZ1JldkVudGl0eURldGFpbGVkKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldkVudGl0eVdpdGhDaGFuZ2VzLnJldiA9IGN0eC5wYXJhbWV0ZXJzLml0ZW1JZDtcbiAgICAgICAgICAgICAgICAgICAgcmV2RW50aXR5V2l0aENoYW5nZXMucmV2RW50aXR5ID0gaXRlbS5yZXZFbnRpdHk7XG4gICAgICAgICAgICAgICAgICAgIHJldkVudGl0eVdpdGhDaGFuZ2VzLmVudGl0eU5hbWVDaGFuZ2VzTWFwID0gaXRlbS5lbnRpdHlOYW1lQ2hhbmdlc01hcDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldkVudGl0eVdpdGhDaGFuZ2VzO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIFtkZXRhaWxzQWN0aW9uXTtcbiAgICB9XG59XG4iLCJAaWYgKHNob3dUYWJsZXZpZXcoKSkge1xuICAgIDxtbmctdGFibGV2aWV3LXJvdXRlIFtkZXNjcmlwdG9yXT1cImRlc2NyaXB0b3JcIiBbZGF0YVByb3ZpZGVyXT1cImRhdGFQcm92aWRlclwiIFthY3Rpb25zXT1cImFjdGlvbnNcIj48L21uZy10YWJsZXZpZXctcm91dGU+XG59XG4iXX0=
@@ -160,9 +160,9 @@ export class AuditUtil {
160
160
  return fullPropertyName;
161
161
  }
162
162
  static appendMediusQueryParamsToUrl(queryParams) {
163
- let url = `?firstResult=${queryParams.itemsOffset}&maxResults=${queryParams.itemsPerPage}`;
163
+ let url = `?offset=${queryParams.itemsOffset}&limit=${queryParams.itemsPerPage}`;
164
164
  if (queryParams.sortProperty && queryParams.sortProperty.length > 0) {
165
- url += '&sorts=';
165
+ url += '&sort=';
166
166
  const sortingQPs = [];
167
167
  for (let i = 0; i < queryParams.sortProperty.length; i++) {
168
168
  sortingQPs.push(`${queryParams.sortAsc?.[i] ?? true ? 'asc' : 'desc'}:${this.extractPropertyName(queryParams.sortProperty[i])}`);
@@ -274,4 +274,4 @@ export class AuditUtil {
274
274
  return entityChanges;
275
275
  }
276
276
  }
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdXRpbHMvYXVkaXQudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXhCLE9BQU8sRUFJSCxxQkFBcUIsRUFJckIsWUFBWSxFQUNmLE1BQU0sd0JBQXdCLENBQUM7QUFLaEMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFcEUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDMUYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDakYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFFL0UsTUFBTSxPQUFPLFNBQVM7YUFDSCxlQUFVLEdBQUcsc0JBQXNCLENBQUM7SUFFNUMsTUFBTSxDQUFDLG1CQUFtQixDQUM3QixVQUFrQyxFQUNsQyxVQUFvQyxFQUNwQyxZQUFxRCxTQUFTLEVBQzlELFVBQVUsR0FBRyxJQUFJLEVBQ2pCLFFBQVEsR0FBRyxJQUFJO1FBRWYsS0FBSyxNQUFNLFFBQVEsSUFBSSxVQUFVLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRTtnQkFDaEMsU0FBUzthQUNaO1lBRUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFlBQVksS0FBSyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7WUFDcEUsOERBQThEO1lBQzlELElBQUksTUFBTSxHQUFvQyxJQUFJLENBQUM7WUFDbkQsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtvQkFDOUIsU0FBUztpQkFDWjtnQkFFRCxNQUFNLFFBQVEsR0FBRyxT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QUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFFeEYsTUFBTSxPQUFPLEdBQUcsSUFBSSw0QkFBNEIsRUFBRSxDQUFDO29CQUNuRCxPQUFPLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7b0JBQ2pDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO29CQUN4QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFFeEYsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3ZCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUMxQjthQUNKO1lBQ0QsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMxQjtRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge29mfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBDb2x1bW5EZXNjcmlwdG9yLFxuICAgIEVkaXRvckRlc2NyaXB0b3JJbnN0LFxuICAgIEZpbHRlckxvb2t1cERlc2NyaXB0b3IsXG4gICAgTWVkaXVzRmlsdGVyTWF0Y2hUeXBlLFxuICAgIE1lZGl1c1F1ZXJ5UGFyYW0sXG4gICAgVGFibGVEZXNjcmlwdG9ySW5zdCxcbiAgICBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdCxcbiAgICBUeXBlUmVnaXN0cnlcbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucyc7XG5cbmltcG9ydCB7TW5nRW50aXR5Q2hhbmdlRHRvfSBmcm9tICcuLi9hcGkvbW9kZWxzL2VudGl0eUNoYW5nZSc7XG5pbXBvcnQge01uZ0d1aUVudGl0eU1vZGVsRHRvfSBmcm9tICcuLi9hcGkvbW9kZWxzL2d1aUVudGl0eU1vZGVsJztcbmltcG9ydCB7TW5nR3VpUHJvcGVydHlNb2RlbER0b30gZnJvbSAnLi4vYXBpL21vZGVscy9ndWlQcm9wZXJ0eU1vZGVsJztcbmltcG9ydCB7TW5nR3VpUHJvcGVydHlUeXBlRHRvfSBmcm9tICcuLi9hcGkvbW9kZWxzL2d1aVByb3BlcnR5VHlwZSc7XG5pbXBvcnQge01uZ1JldkVudGl0eVdpdGhTdGF0ZUR0b30gZnJvbSAnLi4vYXBpL21vZGVscy9yZXZFbnRpdHlXaXRoU3RhdGVEdG8nO1xuaW1wb3J0IHtNbmdSZXZpc2lvblR5cGVEdG99IGZyb20gJy4uL2FwaS9tb2RlbHMvcmV2aXNpb25UeXBlJztcbmltcG9ydCB7TW5nRW50aXR5UmV2aXNpb25DaGFuZ2VTdGF0ZX0gZnJvbSAnLi4vbW9kZWxzL2VudGl0eS1yZXZpc2lvbi1jaGFuZ2Utc3RhdGUubW9kZWwnO1xuaW1wb3J0IHtNbmdFbnRpdHlSZXZpc2lvbkNoYW5nZXN9IGZyb20gJy4uL21vZGVscy9lbnRpdHktcmV2aXNpb24tY2hhbmdlcy5tb2RlbCc7XG5pbXBvcnQge05ld01lZGl1c0ZpbHRlck1hdGNoVHlwZX0gZnJvbSAnLi4vbW9kZWxzL25ldy1maWx0ZXItbWF0Y2gtdHlwZS5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBBdWRpdFV0aWwge1xuICAgIHByaXZhdGUgc3RhdGljIF9kYXRlUmVnZXggPSAvXFxkezR9LVswMV1cXGQtWzAtM11cXGQvO1xuXG4gICAgcHVibGljIHN0YXRpYyBhZGRDb2x1bW5zRnJvbU1vZGVsPFQ+KFxuICAgICAgICBkZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PFQ+LFxuICAgICAgICBwcm9wZXJ0aWVzOiBNbmdHdWlQcm9wZXJ0eU1vZGVsRHRvW10sXG4gICAgICAgIG1vZGVsVHlwZTogJ3JldkVudGl0eScgfCAnZW50aXR5U3RhdGUnIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgICAgICBhZGRGaWx0ZXJzID0gdHJ1ZSxcbiAgICAgICAgYWRkU29ydHMgPSB0cnVlXG4gICAgKTogVGFibGVEZXNjcmlwdG9ySW5zdDxUPiB7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eS5yZXNvbHZlZFByb3BlcnR5TmFtZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpc0VudW0gPSBwcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IE1uZ0d1aVByb3BlcnR5VHlwZUR0by5FbnVtO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgIGxldCBjb2x1bW46IENvbHVtbkRlc2NyaXB0b3I8YW55LCBUPiB8IG51bGwgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGlzRW51bSkge1xuICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHkucG9zc2libGVFbnVtVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGVudW1UeXBlID0gQXVkaXRVdGlsLmZpbmRFbnVtVHlwZShwcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgaWYgKGVudW1UeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IGRlc2NyaXB0b3IuYWRkQ29sdW1uVW5zYWZlKHByb3BlcnR5LnJlc29sdmVkUHJvcGVydHlOYW1lKS5hc0VudW0oZW51bVR5cGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWRkRmlsdGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLndpdGhGaWx0ZXJMb29rdXBFbnVtKHByb3BlcnR5LnBvc3NpYmxlRW51bVZhbHVlcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW4gPSBkZXNjcmlwdG9yLmFkZENvbHVtblVuc2FmZShwcm9wZXJ0eS5yZXNvbHZlZFByb3BlcnR5TmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhZGRGaWx0ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAoY29sdW1uPy53aXRoRmlsdGVyTG9va3VwKCkgYXMgRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxzdHJpbmc+KS53aXRoTG9va3VwKCgpID0+IG9mKHByb3BlcnR5LnBvc3NpYmxlRW51bVZhbHVlcyA/PyBbXSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IE1uZ0d1aVByb3BlcnR5VHlwZUR0by5OdW1iZXIpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4gPSBkZXNjcmlwdG9yLmFkZENvbHVtblVuc2FmZShwcm9wZXJ0eS5yZXNvbHZlZFByb3BlcnR5TmFtZSkuYXNOdW1iZXIoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkucHJvcGVydHlUeXBlID09PSBNbmdHdWlQcm9wZXJ0eVR5cGVEdG8uQm9vbGVhbikge1xuICAgICAgICAgICAgICAgIGNvbHVtbiA9IGRlc2NyaXB0b3IuYWRkQ29sdW1uVW5zYWZlKHByb3BlcnR5LnJlc29sdmVkUHJvcGVydHlOYW1lKS5hc0Jvb2xlYW4oKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkucHJvcGVydHlUeXBlID09PSBNbmdHdWlQcm9wZXJ0eVR5cGVEdG8uTG9jYWxEYXRlKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uID0gZGVzY3JpcHRvci5hZGRDb2x1bW5VbnNhZmUocHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWUpLmFzRGF0ZSgnZGQuIE1NIHl5eXknKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkucHJvcGVydHlUeXBlID09PSBNbmdHdWlQcm9wZXJ0eVR5cGVEdG8uT2Zmc2V0RGF0ZVRpbWUpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4gPSBkZXNjcmlwdG9yLmFkZENvbHVtblVuc2FmZShwcm9wZXJ0eS5yZXNvbHZlZFByb3BlcnR5TmFtZSkuYXNEYXRlKCdkZC4gTU0geXl5eSBISDptbScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBzdHJpbmcgLyB3aWxkY2FyZFxuICAgICAgICAgICAgICAgIGNvbHVtbiA9IGRlc2NyaXB0b3IuYWRkQ29sdW1uVW5zYWZlKHByb3BlcnR5LnJlc29sdmVkUHJvcGVydHlOYW1lKS53aXRoVGl0bGUoQXVkaXRVdGlsLmdldFByb3BlcnR5VGl0bGVLZXkocHJvcGVydHksIG1vZGVsVHlwZSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobW9kZWxUeXBlKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLndpdGhHZXR0ZXIoKHZhbHVlLCBpdGVtKSA9PiBpdGVtPy5bbW9kZWxUeXBlIGFzIGtleW9mIG9iamVjdF0/Lltwcm9wZXJ0eS5yZXNvbHZlZFByb3BlcnR5TmFtZSBhcyBrZXlvZiBvYmplY3RdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29sdW1uLndpdGhUaXRsZShBdWRpdFV0aWwuZ2V0UHJvcGVydHlUaXRsZUtleShwcm9wZXJ0eSwgbW9kZWxUeXBlKSk7XG5cbiAgICAgICAgICAgIGlmICghaXNFbnVtICYmIGFkZEZpbHRlcnMpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4/LndpdGhGaWx0ZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhZGRTb3J0cykge1xuICAgICAgICAgICAgICAgIGNvbHVtbj8ud2l0aFNvcnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFByb3BlcnR5VGl0bGVLZXkocHJvcGVydHk6IE1uZ0d1aVByb3BlcnR5TW9kZWxEdG8sIG1vZGVsVHlwZTogJ3JldkVudGl0eScgfCAnZW50aXR5U3RhdGUnIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChtb2RlbFR5cGUgPT09ICdyZXZFbnRpdHknKSB7XG4gICAgICAgICAgICByZXR1cm4gJ01uZ1JldkVudGl0eS5wcm9wZXJ0aWVzLicgKyBwcm9wZXJ0eS5yZXNvbHZlZFByb3BlcnR5TmFtZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWUgPz8gJyc7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhZGRGaWVsZHNGcm9tTW9kZWw8VD4oXG4gICAgICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PFQ+LFxuICAgICAgICBwcm9wZXJ0aWVzOiBNbmdHdWlQcm9wZXJ0eU1vZGVsRHRvW10sXG4gICAgICAgIG1vZGVsVHlwZTogJ3JldkVudGl0eScgfCAnZW50aXR5U3RhdGUnID0gJ3JldkVudGl0eSdcbiAgICApOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxUPiB7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eS5yZXNvbHZlZFByb3BlcnR5TmFtZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaWVsZFByZXBlbmQgPSBgJHttb2RlbFR5cGV9LmA7XG5cbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IE1uZ0d1aVByb3BlcnR5VHlwZUR0by5FbnVtKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW51bVR5cGUgPSBBdWRpdFV0aWwuZmluZEVudW1UeXBlKHByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICBpZiAoZW51bVR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eS5wb3NzaWJsZUVudW1WYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvci5hZGRGaWVsZExvb2t1cEVudW1VbnNhZmUoZmllbGRQcmVwZW5kICsgcHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWUsIGVudW1UeXBlLCBwcm9wZXJ0eS5wb3NzaWJsZUVudW1WYWx1ZXMpLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuYWRkRmllbGRVbnNhZmUoZmllbGRQcmVwZW5kICsgcHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWUpLndpdGhMYWJlbChBdWRpdFV0aWwuZ2V0UHJvcGVydHlUaXRsZUtleShwcm9wZXJ0eSwgbW9kZWxUeXBlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IE1uZ0d1aVByb3BlcnR5VHlwZUR0by5OdW1iZXIpIHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yXG4gICAgICAgICAgICAgICAgICAgIC5hZGRGaWVsZFVuc2FmZShmaWVsZFByZXBlbmQgKyBwcm9wZXJ0eS5yZXNvbHZlZFByb3BlcnR5TmFtZSlcbiAgICAgICAgICAgICAgICAgICAgLndpdGhMYWJlbChBdWRpdFV0aWwuZ2V0UHJvcGVydHlUaXRsZUtleShwcm9wZXJ0eSwgbW9kZWxUeXBlKSlcbiAgICAgICAgICAgICAgICAgICAgLmFzTnVtYmVyKClcbiAgICAgICAgICAgICAgICAgICAgLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IE1uZ0d1aVByb3BlcnR5VHlwZUR0by5Cb29sZWFuKSB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvclxuICAgICAgICAgICAgICAgICAgICAuYWRkRmllbGRVbnNhZmUoZmllbGRQcmVwZW5kICsgcHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWUpXG4gICAgICAgICAgICAgICAgICAgIC53aXRoTGFiZWwoQXVkaXRVdGlsLmdldFByb3BlcnR5VGl0bGVLZXkocHJvcGVydHksIG1vZGVsVHlwZSkpXG4gICAgICAgICAgICAgICAgICAgIC53aXRoRGlzYWJsZWQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkucHJvcGVydHlUeXBlID09PSBNbmdHdWlQcm9wZXJ0eVR5cGVEdG8uTG9jYWxEYXRlKSB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvclxuICAgICAgICAgICAgICAgICAgICAuYWRkRmllbGRVbnNhZmUoZmllbGRQcmVwZW5kICsgcHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWUpXG4gICAgICAgICAgICAgICAgICAgIC53aXRoTGFiZWwoQXVkaXRVdGlsLmdldFByb3BlcnR5VGl0bGVLZXkocHJvcGVydHksIG1vZGVsVHlwZSkpXG4gICAgICAgICAgICAgICAgICAgIC5hc0RhdGVQaWNrZXIoe2Zvcm1hdDogJ2RkLiBNTU0geXl5eSd9KVxuICAgICAgICAgICAgICAgICAgICAud2l0aERpc2FibGVkKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gTW5nR3VpUHJvcGVydHlUeXBlRHRvLk9mZnNldERhdGVUaW1lKSB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvclxuICAgICAgICAgICAgICAgICAgICAuYWRkRmllbGRVbnNhZmUoZmllbGRQcmVwZW5kICsgcHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWUpXG4gICAgICAgICAgICAgICAgICAgIC53aXRoTGFiZWwoQXVkaXRVdGlsLmdldFByb3BlcnR5VGl0bGVLZXkocHJvcGVydHksIG1vZGVsVHlwZSkpXG4gICAgICAgICAgICAgICAgICAgIC5hc0RhdGVQaWNrZXIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAnZGQuIE1NIHl5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUaW1lOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1NlY29uZHM6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC53aXRoRGlzYWJsZWQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gc3RyaW5nIC8gd2lsZGNhcmRcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yXG4gICAgICAgICAgICAgICAgICAgIC5hZGRGaWVsZFVuc2FmZShmaWVsZFByZXBlbmQgKyBwcm9wZXJ0eS5yZXNvbHZlZFByb3BlcnR5TmFtZSlcbiAgICAgICAgICAgICAgICAgICAgLndpdGhMYWJlbChBdWRpdFV0aWwuZ2V0UHJvcGVydHlUaXRsZUtleShwcm9wZXJ0eSwgbW9kZWxUeXBlKSlcbiAgICAgICAgICAgICAgICAgICAgLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYnVpbGREZXNjcmlwdG9yRm9yRW50aXR5UmV2aXNpb24oXG4gICAgICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1uZ1JldkVudGl0eVdpdGhTdGF0ZUR0bz4sXG4gICAgICAgIHJldk1vZGVsOiBNbmdHdWlFbnRpdHlNb2RlbER0byxcbiAgICAgICAgZW50aXR5TW9kZWw6IE1uZ0d1aUVudGl0eU1vZGVsRHRvXG4gICAgKTogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW5nUmV2RW50aXR5V2l0aFN0YXRlRHRvPiB7XG4gICAgICAgIGRlc2NyaXB0b3IuYWRkQ29sdW1uKCdyZXZUeXBlJykud2l0aFRpdGxlKCdNbmdFbnRpdHlSZXZpc2lvbkNoYW5nZVN0YXRlLnByb3BlcnRpZXMucmV2VHlwZScpLmFzRW51bShNbmdSZXZpc2lvblR5cGVEdG8pLndpdGhGaWx0ZXIoKTtcbiAgICAgICAgZGVzY3JpcHRvci5hZGRGaWVsZExvb2t1cEVudW0oJ3JldlR5cGUnLCBNbmdSZXZpc2lvblR5cGVEdG8pLndpdGhMYWJlbCgnTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VTdGF0ZS5wcm9wZXJ0aWVzLnJldlR5cGUnKTtcblxuICAgICAgICBpZiAocmV2TW9kZWwucHJvcGVydGllcykge1xuICAgICAgICAgICAgQXVkaXRVdGlsLmFkZENvbHVtbnNGcm9tTW9kZWwoZGVzY3JpcHRvci50YWJsZSwgcmV2TW9kZWwucHJvcGVydGllcywgJ3JldkVudGl0eScpO1xuICAgICAgICAgICAgQXVkaXRVdGlsLmFkZEZpZWxkc0Zyb21Nb2RlbChkZXNjcmlwdG9yLmRldGFpbHNFZGl0b3IsIHJldk1vZGVsLnByb3BlcnRpZXMsICdyZXZFbnRpdHknKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW50aXR5TW9kZWwucHJvcGVydGllcykge1xuICAgICAgICAgICAgQXVkaXRVdGlsLmFkZENvbHVtbnNGcm9tTW9kZWwoZGVzY3JpcHRvci50YWJsZSwgZW50aXR5TW9kZWwucHJvcGVydGllcywgJ2VudGl0eVN0YXRlJyk7XG4gICAgICAgICAgICBBdWRpdFV0aWwuYWRkRmllbGRzRnJvbU1vZGVsKGRlc2NyaXB0b3IuZGV0YWlsc0VkaXRvciwgZW50aXR5TW9kZWwucHJvcGVydGllcywgJ2VudGl0eVN0YXRlJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZpbmRFbnVtVHlwZShwcm9wZXJ0eTogTW5nR3VpUHJvcGVydHlNb2RlbER0bykge1xuICAgICAgICBpZiAoIXByb3BlcnR5LmVudW1DbGFzc1NpbXBsZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZW51bVR5cGUgPSBUeXBlUmVnaXN0cnkuZ2V0KCkuZmluZEVudW0ocHJvcGVydHkuZW51bUNsYXNzU2ltcGxlTmFtZSk7XG4gICAgICAgIGlmICghZW51bVR5cGUpIHtcbiAgICAgICAgICAgIGVudW1UeXBlID0gVHlwZVJlZ2lzdHJ5LmdldCgpLmZpbmRFbnVtKHByb3BlcnR5LmVudW1DbGFzc1NpbXBsZU5hbWUgKyAnRHRvJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudW1UeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZXh0cmFjdFByb3BlcnR5TmFtZShmdWxsUHJvcGVydHlOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoZnVsbFByb3BlcnR5TmFtZT8uaW5jbHVkZXMoJ2VudGl0eVN0YXRlLicpKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVsbFByb3BlcnR5TmFtZS5yZXBsYWNlKCdlbnRpdHlTdGF0ZS4nLCAnJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZnVsbFByb3BlcnR5TmFtZT8uaW5jbHVkZXMoJ3JldkVudGl0eS4nKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bGxQcm9wZXJ0eU5hbWU/LnJlcGxhY2UoJ3JldkVudGl0eS4nLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bGxQcm9wZXJ0eU5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhcHBlbmRNZWRpdXNRdWVyeVBhcmFtc1RvVXJsKHF1ZXJ5UGFyYW1zOiBNZWRpdXNRdWVyeVBhcmFtKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHVybCA9IGA/Zmlyc3RSZXN1bHQ9JHtxdWVyeVBhcmFtcy5pdGVtc09mZnNldH0mbWF4UmVzdWx0cz0ke3F1ZXJ5UGFyYW1zLml0ZW1zUGVyUGFnZX1gO1xuICAgICAgICBpZiAocXVlcnlQYXJhbXMuc29ydFByb3BlcnR5ICYmIHF1ZXJ5UGFyYW1zLnNvcnRQcm9wZXJ0eS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB1cmwgKz0gJyZzb3J0cz0nO1xuICAgICAgICAgICAgY29uc3Qgc29ydGluZ1FQcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBxdWVyeVBhcmFtcy5zb3J0UHJvcGVydHkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBzb3J0aW5nUVBzLnB1c2goYCR7cXVlcnlQYXJhbXMuc29ydEFzYz8uW2ldID8/IHRydWUgPyAnYXNjJyA6ICdkZXNjJ306JHt0aGlzLmV4dHJhY3RQcm9wZXJ0eU5hbWUocXVlcnlQYXJhbXMuc29ydFByb3BlcnR5W2ldKX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVybCArPSBzb3J0aW5nUVBzLmpvaW4oJywnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChxdWVyeVBhcmFtcy5maWx0ZXJQYXJhbXMgJiYgcXVlcnlQYXJhbXMuZmlsdGVyUGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlclFQcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtZnAgb2YgcXVlcnlQYXJhbXMuZmlsdGVyUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChtZnAuZmlsdGVyTWF0Y2hUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgTWVkaXVzRmlsdGVyTWF0Y2hUeXBlLkVxdWFsczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUVBzLnB1c2goYCR7dGhpcy5leHRyYWN0UHJvcGVydHlOYW1lKG1mcC5wcm9wZXJ0eSl9PSR7TmV3TWVkaXVzRmlsdGVyTWF0Y2hUeXBlLkVxdWFsc306JHttZnAuZmlsdGVyVmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5Ob3RFcXVhbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclFQcy5wdXNoKGAke3RoaXMuZXh0cmFjdFByb3BlcnR5TmFtZShtZnAucHJvcGVydHkpfT0ke05ld01lZGl1c0ZpbHRlck1hdGNoVHlwZS5Ob3RFcXVhbHN9OiR7bWZwLmZpbHRlclZhbHVlfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuRnJvbVRvOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZGF0ZVJlZ2V4LnRlc3QobWZwLmZpbHRlclZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclFQcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmV4dHJhY3RQcm9wZXJ0eU5hbWUobWZwLnByb3BlcnR5KX09JHtOZXdNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuQmV0d2Vlbn06JHtuZXcgRGF0ZShtZnAuZmlsdGVyVmFsdWUpLnRvSVNPU3RyaW5nKCl9LCR7bmV3IERhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZnAuZmlsdGVyVmFsdWVUb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclFQcy5wdXNoKGAke3RoaXMuZXh0cmFjdFByb3BlcnR5TmFtZShtZnAucHJvcGVydHkpfT0ke05ld01lZGl1c0ZpbHRlck1hdGNoVHlwZS5CZXR3ZWVufToke21mcC5maWx0ZXJWYWx1ZX0sJHttZnAuZmlsdGVyVmFsdWVUb31gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgTWVkaXVzRmlsdGVyTWF0Y2hUeXBlLkNvbnRhaW5zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJRUHMucHVzaChgJHt0aGlzLmV4dHJhY3RQcm9wZXJ0eU5hbWUobWZwLnByb3BlcnR5KX09JHtOZXdNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuQ29udGFpbnN9OiR7bWZwLmZpbHRlclZhbHVlfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuU3RhcnRzV2l0aDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUVBzLnB1c2goYCR7dGhpcy5leHRyYWN0UHJvcGVydHlOYW1lKG1mcC5wcm9wZXJ0eSl9PSR7TmV3TWVkaXVzRmlsdGVyTWF0Y2hUeXBlLlN0YXJ0c1dpdGh9OiR7bWZwLmZpbHRlclZhbHVlfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuRW5kc1dpdGg6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclFQcy5wdXNoKGAke3RoaXMuZXh0cmFjdFByb3BlcnR5TmFtZShtZnAucHJvcGVydHkpfT0ke05ld01lZGl1c0ZpbHRlck1hdGNoVHlwZS5FbmRzV2l0aH06JHttZnAuZmlsdGVyVmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5Jbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUVBzLnB1c2goYCR7dGhpcy5leHRyYWN0UHJvcGVydHlOYW1lKG1mcC5wcm9wZXJ0eSl9PSR7TmV3TWVkaXVzRmlsdGVyTWF0Y2hUeXBlLklufToke21mcC5maWx0ZXJWYWx1ZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgTWVkaXVzRmlsdGVyTWF0Y2hUeXBlLk5vdEluOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJRUHMucHVzaChgJHt0aGlzLmV4dHJhY3RQcm9wZXJ0eU5hbWUobWZwLnByb3BlcnR5KX09JHtOZXdNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuTm90SW59OiR7bWZwLmZpbHRlclZhbHVlfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuU21hbGxlclRoYW46IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9kYXRlUmVnZXgudGVzdChtZnAuZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUVBzLnB1c2goYCR7dGhpcy5leHRyYWN0UHJvcGVydHlOYW1lKG1mcC5wcm9wZXJ0eSl9PSR7TmV3TWVkaXVzRmlsdGVyTWF0Y2hUeXBlLkxlc3NUaGFufToke25ldyBEYXRlKG1mcC5maWx0ZXJWYWx1ZSkudG9JU09TdHJpbmcoKX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUVBzLnB1c2goYCR7dGhpcy5leHRyYWN0UHJvcGVydHlOYW1lKG1mcC5wcm9wZXJ0eSl9PSR7TmV3TWVkaXVzRmlsdGVyTWF0Y2hUeXBlLkxlc3NUaGFufToke21mcC5maWx0ZXJWYWx1ZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgTWVkaXVzRmlsdGVyTWF0Y2hUeXBlLkdyZWF0ZXJUaGFuOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZGF0ZVJlZ2V4LnRlc3QobWZwLmZpbHRlclZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclFQcy5wdXNoKGAke3RoaXMuZXh0cmFjdFByb3BlcnR5TmFtZShtZnAucHJvcGVydHkpfT0ke05ld01lZGl1c0ZpbHRlck1hdGNoVHlwZS5HcmVhdGVyVGhhbn06JHtuZXcgRGF0ZShtZnAuZmlsdGVyVmFsdWUpLnRvSVNPU3RyaW5nKCl9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclFQcy5wdXNoKGAke3RoaXMuZXh0cmFjdFByb3BlcnR5TmFtZShtZnAucHJvcGVydHkpfT0ke05ld01lZGl1c0ZpbHRlck1hdGNoVHlwZS5HcmVhdGVyVGhhbn06JHttZnAuZmlsdGVyVmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVybCArPSAnJic7XG4gICAgICAgICAgICB1cmwgKz0gZmlsdGVyUVBzLmpvaW4oJyYnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbWFwSXRlbXNUb0VudGl0eUNoYW5nZXNBcnJheShmaWVsZFZhbHVlOiB7W2tleTogc3RyaW5nXTogQXJyYXk8TW5nRW50aXR5Q2hhbmdlRHRvPn0pOiBBcnJheTxNbmdFbnRpdHlSZXZpc2lvbkNoYW5nZXM+IHtcbiAgICAgICAgY29uc3QgZW50aXR5Q2hhbmdlczogTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VzW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGVjID0gbmV3IE1uZ0VudGl0eVJldmlzaW9uQ2hhbmdlcygpO1xuICAgICAgICAgICAgZWMuZW50aXR5VHlwZSA9IGtleTtcbiAgICAgICAgICAgIGVjLml0ZW1zID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBmaWVsZFZhbHVlW2tleV0pIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlLnJldlR5cGUgPT09IE1uZ1JldmlzaW9uVHlwZUR0by5BZGQgJiYgY2hhbmdlLmVudGl0eU5ld1N0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBuZXcgTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLnJldlR5cGUgPSBjaGFuZ2UucmV2VHlwZTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jb2xvciA9ICdncmVlbic7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNoYW5nZS5lbnRpdHlOZXdTdGF0ZSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiAoaXRlbVtrZXldID0gdmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgZWMuaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZXZUeXBlID09PSBNbmdSZXZpc2lvblR5cGVEdG8uRGVsICYmIGNoYW5nZS5lbnRpdHlPbGRTdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gbmV3IE1uZ0VudGl0eVJldmlzaW9uQ2hhbmdlU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5yZXZUeXBlID0gY2hhbmdlLnJldlR5cGU7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uY29sb3IgPSAncmVkJztcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY2hhbmdlLmVudGl0eU9sZFN0YXRlKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IChpdGVtW2tleV0gPSB2YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICBlYy5pdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLnJldlR5cGUgPT09IE1uZ1JldmlzaW9uVHlwZUR0by5Nb2QgJiYgY2hhbmdlLmVudGl0eU9sZFN0YXRlICYmIGNoYW5nZS5lbnRpdHlOZXdTdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtT2xkID0gbmV3IE1uZ0VudGl0eVJldmlzaW9uQ2hhbmdlU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbU9sZC5yZXZUeXBlID0gY2hhbmdlLnJldlR5cGU7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1PbGQuY29sb3IgPSAncmVkJztcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY2hhbmdlLmVudGl0eU9sZFN0YXRlKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IChpdGVtT2xkW2tleV0gPSB2YWx1ZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1OZXcgPSBuZXcgTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBpdGVtTmV3LnJldlR5cGUgPSBjaGFuZ2UucmV2VHlwZTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbU5ldy5jb2xvciA9ICdncmVlbic7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNoYW5nZS5lbnRpdHlOZXdTdGF0ZSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiAoaXRlbU5ld1trZXldID0gdmFsdWUpKTtcblxuICAgICAgICAgICAgICAgICAgICBlYy5pdGVtcy5wdXNoKGl0ZW1PbGQpO1xuICAgICAgICAgICAgICAgICAgICBlYy5pdGVtcy5wdXNoKGl0ZW1OZXcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVudGl0eUNoYW5nZXMucHVzaChlYyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudGl0eUNoYW5nZXM7XG4gICAgfVxufVxuIl19
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdXRpbHMvYXVkaXQudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXhCLE9BQU8sRUFJSCxxQkFBcUIsRUFJckIsWUFBWSxFQUNmLE1BQU0sd0JBQXdCLENBQUM7QUFLaEMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFcEUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDMUYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDakYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFFL0UsTUFBTSxPQUFPLFNBQVM7YUFDSCxlQUFVLEdBQUcsc0JBQXNCLENBQUM7SUFFNUMsTUFBTSxDQUFDLG1CQUFtQixDQUM3QixVQUFrQyxFQUNsQyxVQUFvQyxFQUNwQyxZQUFxRCxTQUFTLEVBQzlELFVBQVUsR0FBRyxJQUFJLEVBQ2pCLFFBQVEsR0FBRyxJQUFJO1FBRWYsS0FBSyxNQUFNLFFBQVEsSUFBSSxVQUFVLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRTtnQkFDaEMsU0FBUzthQUNaO1lBRUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFlBQVksS0FBSyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7WUFDcEUsOERBQThEO1lBQzlELElBQUksTUFBTSxHQUFvQyxJQUFJLENBQUM7WUFDbkQsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtvQkFDOUIsU0FBUztpQkFDWjtnQkFFRCxNQUFNLFFBQVEsR0FBRyxT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QyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBRXhGLE1BQU0sT0FBTyxHQUFHLElBQUksNEJBQTRCLEVBQUUsQ0FBQztvQkFDbkQsT0FBTyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO29CQUNqQyxPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztvQkFDeEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBRXhGLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN2QixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDMUI7YUFDSjtZQUNELGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDMUI7UUFDRCxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtvZn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgQ29sdW1uRGVzY3JpcHRvcixcbiAgICBFZGl0b3JEZXNjcmlwdG9ySW5zdCxcbiAgICBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yLFxuICAgIE1lZGl1c0ZpbHRlck1hdGNoVHlwZSxcbiAgICBNZWRpdXNRdWVyeVBhcmFtLFxuICAgIFRhYmxlRGVzY3JpcHRvckluc3QsXG4gICAgVGFibGV2aWV3RGVzY3JpcHRvckluc3QsXG4gICAgVHlwZVJlZ2lzdHJ5XG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMnO1xuXG5pbXBvcnQge01uZ0VudGl0eUNoYW5nZUR0b30gZnJvbSAnLi4vYXBpL21vZGVscy9lbnRpdHlDaGFuZ2UnO1xuaW1wb3J0IHtNbmdHdWlFbnRpdHlNb2RlbER0b30gZnJvbSAnLi4vYXBpL21vZGVscy9ndWlFbnRpdHlNb2RlbCc7XG5pbXBvcnQge01uZ0d1aVByb3BlcnR5TW9kZWxEdG99IGZyb20gJy4uL2FwaS9tb2RlbHMvZ3VpUHJvcGVydHlNb2RlbCc7XG5pbXBvcnQge01uZ0d1aVByb3BlcnR5VHlwZUR0b30gZnJvbSAnLi4vYXBpL21vZGVscy9ndWlQcm9wZXJ0eVR5cGUnO1xuaW1wb3J0IHtNbmdSZXZFbnRpdHlXaXRoU3RhdGVEdG99IGZyb20gJy4uL2FwaS9tb2RlbHMvcmV2RW50aXR5V2l0aFN0YXRlRHRvJztcbmltcG9ydCB7TW5nUmV2aXNpb25UeXBlRHRvfSBmcm9tICcuLi9hcGkvbW9kZWxzL3JldmlzaW9uVHlwZSc7XG5pbXBvcnQge01uZ0VudGl0eVJldmlzaW9uQ2hhbmdlU3RhdGV9IGZyb20gJy4uL21vZGVscy9lbnRpdHktcmV2aXNpb24tY2hhbmdlLXN0YXRlLm1vZGVsJztcbmltcG9ydCB7TW5nRW50aXR5UmV2aXNpb25DaGFuZ2VzfSBmcm9tICcuLi9tb2RlbHMvZW50aXR5LXJldmlzaW9uLWNoYW5nZXMubW9kZWwnO1xuaW1wb3J0IHtOZXdNZWRpdXNGaWx0ZXJNYXRjaFR5cGV9IGZyb20gJy4uL21vZGVscy9uZXctZmlsdGVyLW1hdGNoLXR5cGUubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgQXVkaXRVdGlsIHtcbiAgICBwcml2YXRlIHN0YXRpYyBfZGF0ZVJlZ2V4ID0gL1xcZHs0fS1bMDFdXFxkLVswLTNdXFxkLztcblxuICAgIHB1YmxpYyBzdGF0aWMgYWRkQ29sdW1uc0Zyb21Nb2RlbDxUPihcbiAgICAgICAgZGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxUPixcbiAgICAgICAgcHJvcGVydGllczogTW5nR3VpUHJvcGVydHlNb2RlbER0b1tdLFxuICAgICAgICBtb2RlbFR5cGU6ICdyZXZFbnRpdHknIHwgJ2VudGl0eVN0YXRlJyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICAgICAgYWRkRmlsdGVycyA9IHRydWUsXG4gICAgICAgIGFkZFNvcnRzID0gdHJ1ZVxuICAgICk6IFRhYmxlRGVzY3JpcHRvckluc3Q8VD4ge1xuICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGlmICghcHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWUpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaXNFbnVtID0gcHJvcGVydHkucHJvcGVydHlUeXBlID09PSBNbmdHdWlQcm9wZXJ0eVR5cGVEdG8uRW51bTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBsZXQgY29sdW1uOiBDb2x1bW5EZXNjcmlwdG9yPGFueSwgVD4gfCBudWxsID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChpc0VudW0pIHtcbiAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5LnBvc3NpYmxlRW51bVZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBlbnVtVHlwZSA9IEF1ZGl0VXRpbC5maW5kRW51bVR5cGUocHJvcGVydHkpO1xuICAgICAgICAgICAgICAgIGlmIChlbnVtVHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW4gPSBkZXNjcmlwdG9yLmFkZENvbHVtblVuc2FmZShwcm9wZXJ0eS5yZXNvbHZlZFByb3BlcnR5TmFtZSkuYXNFbnVtKGVudW1UeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFkZEZpbHRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi53aXRoRmlsdGVyTG9va3VwRW51bShwcm9wZXJ0eS5wb3NzaWJsZUVudW1WYWx1ZXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uID0gZGVzY3JpcHRvci5hZGRDb2x1bW5VbnNhZmUocHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWRkRmlsdGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgKGNvbHVtbj8ud2l0aEZpbHRlckxvb2t1cCgpIGFzIEZpbHRlckxvb2t1cERlc2NyaXB0b3I8c3RyaW5nPikud2l0aExvb2t1cCgoKSA9PiBvZihwcm9wZXJ0eS5wb3NzaWJsZUVudW1WYWx1ZXMgPz8gW10pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkucHJvcGVydHlUeXBlID09PSBNbmdHdWlQcm9wZXJ0eVR5cGVEdG8uTnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uID0gZGVzY3JpcHRvci5hZGRDb2x1bW5VbnNhZmUocHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWUpLmFzTnVtYmVyKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gTW5nR3VpUHJvcGVydHlUeXBlRHRvLkJvb2xlYW4pIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4gPSBkZXNjcmlwdG9yLmFkZENvbHVtblVuc2FmZShwcm9wZXJ0eS5yZXNvbHZlZFByb3BlcnR5TmFtZSkuYXNCb29sZWFuKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gTW5nR3VpUHJvcGVydHlUeXBlRHRvLkxvY2FsRGF0ZSkge1xuICAgICAgICAgICAgICAgIGNvbHVtbiA9IGRlc2NyaXB0b3IuYWRkQ29sdW1uVW5zYWZlKHByb3BlcnR5LnJlc29sdmVkUHJvcGVydHlOYW1lKS5hc0RhdGUoJ2RkLiBNTSB5eXl5Jyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gTW5nR3VpUHJvcGVydHlUeXBlRHRvLk9mZnNldERhdGVUaW1lKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uID0gZGVzY3JpcHRvci5hZGRDb2x1bW5VbnNhZmUocHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWUpLmFzRGF0ZSgnZGQuIE1NIHl5eXkgSEg6bW0nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gc3RyaW5nIC8gd2lsZGNhcmRcbiAgICAgICAgICAgICAgICBjb2x1bW4gPSBkZXNjcmlwdG9yLmFkZENvbHVtblVuc2FmZShwcm9wZXJ0eS5yZXNvbHZlZFByb3BlcnR5TmFtZSkud2l0aFRpdGxlKEF1ZGl0VXRpbC5nZXRQcm9wZXJ0eVRpdGxlS2V5KHByb3BlcnR5LCBtb2RlbFR5cGUpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1vZGVsVHlwZSkge1xuICAgICAgICAgICAgICAgIGNvbHVtbi53aXRoR2V0dGVyKCh2YWx1ZSwgaXRlbSkgPT4gaXRlbT8uW21vZGVsVHlwZSBhcyBrZXlvZiBvYmplY3RdPy5bcHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWUgYXMga2V5b2Ygb2JqZWN0XSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbHVtbi53aXRoVGl0bGUoQXVkaXRVdGlsLmdldFByb3BlcnR5VGl0bGVLZXkocHJvcGVydHksIG1vZGVsVHlwZSkpO1xuXG4gICAgICAgICAgICBpZiAoIWlzRW51bSAmJiBhZGRGaWx0ZXJzKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uPy53aXRoRmlsdGVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWRkU29ydHMpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4/LndpdGhTb3J0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRQcm9wZXJ0eVRpdGxlS2V5KHByb3BlcnR5OiBNbmdHdWlQcm9wZXJ0eU1vZGVsRHRvLCBtb2RlbFR5cGU6ICdyZXZFbnRpdHknIHwgJ2VudGl0eVN0YXRlJyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobW9kZWxUeXBlID09PSAncmV2RW50aXR5Jykge1xuICAgICAgICAgICAgcmV0dXJuICdNbmdSZXZFbnRpdHkucHJvcGVydGllcy4nICsgcHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb3BlcnR5LnJlc29sdmVkUHJvcGVydHlOYW1lID8/ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWRkRmllbGRzRnJvbU1vZGVsPFQ+KFxuICAgICAgICBkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxUPixcbiAgICAgICAgcHJvcGVydGllczogTW5nR3VpUHJvcGVydHlNb2RlbER0b1tdLFxuICAgICAgICBtb2RlbFR5cGU6ICdyZXZFbnRpdHknIHwgJ2VudGl0eVN0YXRlJyA9ICdyZXZFbnRpdHknXG4gICAgKTogRWRpdG9yRGVzY3JpcHRvckluc3Q8VD4ge1xuICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGlmICghcHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWUpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZmllbGRQcmVwZW5kID0gYCR7bW9kZWxUeXBlfS5gO1xuXG4gICAgICAgICAgICBpZiAocHJvcGVydHkucHJvcGVydHlUeXBlID09PSBNbmdHdWlQcm9wZXJ0eVR5cGVEdG8uRW51bSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudW1UeXBlID0gQXVkaXRVdGlsLmZpbmRFbnVtVHlwZShwcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgaWYgKGVudW1UeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHkucG9zc2libGVFbnVtVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuYWRkRmllbGRMb29rdXBFbnVtVW5zYWZlKGZpZWxkUHJlcGVuZCArIHByb3BlcnR5LnJlc29sdmVkUHJvcGVydHlOYW1lLCBlbnVtVHlwZSwgcHJvcGVydHkucG9zc2libGVFbnVtVmFsdWVzKS53aXRoRGlzYWJsZWQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLmFkZEZpZWxkVW5zYWZlKGZpZWxkUHJlcGVuZCArIHByb3BlcnR5LnJlc29sdmVkUHJvcGVydHlOYW1lKS53aXRoTGFiZWwoQXVkaXRVdGlsLmdldFByb3BlcnR5VGl0bGVLZXkocHJvcGVydHksIG1vZGVsVHlwZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkucHJvcGVydHlUeXBlID09PSBNbmdHdWlQcm9wZXJ0eVR5cGVEdG8uTnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvclxuICAgICAgICAgICAgICAgICAgICAuYWRkRmllbGRVbnNhZmUoZmllbGRQcmVwZW5kICsgcHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWUpXG4gICAgICAgICAgICAgICAgICAgIC53aXRoTGFiZWwoQXVkaXRVdGlsLmdldFByb3BlcnR5VGl0bGVLZXkocHJvcGVydHksIG1vZGVsVHlwZSkpXG4gICAgICAgICAgICAgICAgICAgIC5hc051bWJlcigpXG4gICAgICAgICAgICAgICAgICAgIC53aXRoRGlzYWJsZWQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkucHJvcGVydHlUeXBlID09PSBNbmdHdWlQcm9wZXJ0eVR5cGVEdG8uQm9vbGVhbikge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3JcbiAgICAgICAgICAgICAgICAgICAgLmFkZEZpZWxkVW5zYWZlKGZpZWxkUHJlcGVuZCArIHByb3BlcnR5LnJlc29sdmVkUHJvcGVydHlOYW1lKVxuICAgICAgICAgICAgICAgICAgICAud2l0aExhYmVsKEF1ZGl0VXRpbC5nZXRQcm9wZXJ0eVRpdGxlS2V5KHByb3BlcnR5LCBtb2RlbFR5cGUpKVxuICAgICAgICAgICAgICAgICAgICAud2l0aERpc2FibGVkKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5LnByb3BlcnR5VHlwZSA9PT0gTW5nR3VpUHJvcGVydHlUeXBlRHRvLkxvY2FsRGF0ZSkge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3JcbiAgICAgICAgICAgICAgICAgICAgLmFkZEZpZWxkVW5zYWZlKGZpZWxkUHJlcGVuZCArIHByb3BlcnR5LnJlc29sdmVkUHJvcGVydHlOYW1lKVxuICAgICAgICAgICAgICAgICAgICAud2l0aExhYmVsKEF1ZGl0VXRpbC5nZXRQcm9wZXJ0eVRpdGxlS2V5KHByb3BlcnR5LCBtb2RlbFR5cGUpKVxuICAgICAgICAgICAgICAgICAgICAuYXNEYXRlUGlja2VyKHtmb3JtYXQ6ICdkZC4gTU1NIHl5eXknfSlcbiAgICAgICAgICAgICAgICAgICAgLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IE1uZ0d1aVByb3BlcnR5VHlwZUR0by5PZmZzZXREYXRlVGltZSkge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3JcbiAgICAgICAgICAgICAgICAgICAgLmFkZEZpZWxkVW5zYWZlKGZpZWxkUHJlcGVuZCArIHByb3BlcnR5LnJlc29sdmVkUHJvcGVydHlOYW1lKVxuICAgICAgICAgICAgICAgICAgICAud2l0aExhYmVsKEF1ZGl0VXRpbC5nZXRQcm9wZXJ0eVRpdGxlS2V5KHByb3BlcnR5LCBtb2RlbFR5cGUpKVxuICAgICAgICAgICAgICAgICAgICAuYXNEYXRlUGlja2VyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ2RkLiBNTSB5eScsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VGltZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dTZWNvbmRzOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAud2l0aERpc2FibGVkKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHN0cmluZyAvIHdpbGRjYXJkXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvclxuICAgICAgICAgICAgICAgICAgICAuYWRkRmllbGRVbnNhZmUoZmllbGRQcmVwZW5kICsgcHJvcGVydHkucmVzb2x2ZWRQcm9wZXJ0eU5hbWUpXG4gICAgICAgICAgICAgICAgICAgIC53aXRoTGFiZWwoQXVkaXRVdGlsLmdldFByb3BlcnR5VGl0bGVLZXkocHJvcGVydHksIG1vZGVsVHlwZSkpXG4gICAgICAgICAgICAgICAgICAgIC53aXRoRGlzYWJsZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGJ1aWxkRGVzY3JpcHRvckZvckVudGl0eVJldmlzaW9uKFxuICAgICAgICBkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNbmdSZXZFbnRpdHlXaXRoU3RhdGVEdG8+LFxuICAgICAgICByZXZNb2RlbDogTW5nR3VpRW50aXR5TW9kZWxEdG8sXG4gICAgICAgIGVudGl0eU1vZGVsOiBNbmdHdWlFbnRpdHlNb2RlbER0b1xuICAgICk6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PE1uZ1JldkVudGl0eVdpdGhTdGF0ZUR0bz4ge1xuICAgICAgICBkZXNjcmlwdG9yLmFkZENvbHVtbigncmV2VHlwZScpLndpdGhUaXRsZSgnTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VTdGF0ZS5wcm9wZXJ0aWVzLnJldlR5cGUnKS5hc0VudW0oTW5nUmV2aXNpb25UeXBlRHRvKS53aXRoRmlsdGVyKCk7XG4gICAgICAgIGRlc2NyaXB0b3IuYWRkRmllbGRMb29rdXBFbnVtKCdyZXZUeXBlJywgTW5nUmV2aXNpb25UeXBlRHRvKS53aXRoTGFiZWwoJ01uZ0VudGl0eVJldmlzaW9uQ2hhbmdlU3RhdGUucHJvcGVydGllcy5yZXZUeXBlJyk7XG5cbiAgICAgICAgaWYgKHJldk1vZGVsLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIEF1ZGl0VXRpbC5hZGRDb2x1bW5zRnJvbU1vZGVsKGRlc2NyaXB0b3IudGFibGUsIHJldk1vZGVsLnByb3BlcnRpZXMsICdyZXZFbnRpdHknKTtcbiAgICAgICAgICAgIEF1ZGl0VXRpbC5hZGRGaWVsZHNGcm9tTW9kZWwoZGVzY3JpcHRvci5kZXRhaWxzRWRpdG9yLCByZXZNb2RlbC5wcm9wZXJ0aWVzLCAncmV2RW50aXR5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVudGl0eU1vZGVsLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIEF1ZGl0VXRpbC5hZGRDb2x1bW5zRnJvbU1vZGVsKGRlc2NyaXB0b3IudGFibGUsIGVudGl0eU1vZGVsLnByb3BlcnRpZXMsICdlbnRpdHlTdGF0ZScpO1xuICAgICAgICAgICAgQXVkaXRVdGlsLmFkZEZpZWxkc0Zyb21Nb2RlbChkZXNjcmlwdG9yLmRldGFpbHNFZGl0b3IsIGVudGl0eU1vZGVsLnByb3BlcnRpZXMsICdlbnRpdHlTdGF0ZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmaW5kRW51bVR5cGUocHJvcGVydHk6IE1uZ0d1aVByb3BlcnR5TW9kZWxEdG8pIHtcbiAgICAgICAgaWYgKCFwcm9wZXJ0eS5lbnVtQ2xhc3NTaW1wbGVOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGVudW1UeXBlID0gVHlwZVJlZ2lzdHJ5LmdldCgpLmZpbmRFbnVtKHByb3BlcnR5LmVudW1DbGFzc1NpbXBsZU5hbWUpO1xuICAgICAgICBpZiAoIWVudW1UeXBlKSB7XG4gICAgICAgICAgICBlbnVtVHlwZSA9IFR5cGVSZWdpc3RyeS5nZXQoKS5maW5kRW51bShwcm9wZXJ0eS5lbnVtQ2xhc3NTaW1wbGVOYW1lICsgJ0R0bycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnVtVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGV4dHJhY3RQcm9wZXJ0eU5hbWUoZnVsbFByb3BlcnR5TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGZ1bGxQcm9wZXJ0eU5hbWU/LmluY2x1ZGVzKCdlbnRpdHlTdGF0ZS4nKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bGxQcm9wZXJ0eU5hbWUucmVwbGFjZSgnZW50aXR5U3RhdGUuJywgJycpO1xuICAgICAgICB9IGVsc2UgaWYgKGZ1bGxQcm9wZXJ0eU5hbWU/LmluY2x1ZGVzKCdyZXZFbnRpdHkuJykpIHtcbiAgICAgICAgICAgIHJldHVybiBmdWxsUHJvcGVydHlOYW1lPy5yZXBsYWNlKCdyZXZFbnRpdHkuJywgJycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdWxsUHJvcGVydHlOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXBwZW5kTWVkaXVzUXVlcnlQYXJhbXNUb1VybChxdWVyeVBhcmFtczogTWVkaXVzUXVlcnlQYXJhbSk6IHN0cmluZyB7XG4gICAgICAgIGxldCB1cmwgPSBgP29mZnNldD0ke3F1ZXJ5UGFyYW1zLml0ZW1zT2Zmc2V0fSZsaW1pdD0ke3F1ZXJ5UGFyYW1zLml0ZW1zUGVyUGFnZX1gO1xuICAgICAgICBpZiAocXVlcnlQYXJhbXMuc29ydFByb3BlcnR5ICYmIHF1ZXJ5UGFyYW1zLnNvcnRQcm9wZXJ0eS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB1cmwgKz0gJyZzb3J0PSc7XG4gICAgICAgICAgICBjb25zdCBzb3J0aW5nUVBzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXJ5UGFyYW1zLnNvcnRQcm9wZXJ0eS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHNvcnRpbmdRUHMucHVzaChgJHtxdWVyeVBhcmFtcy5zb3J0QXNjPy5baV0gPz8gdHJ1ZSA/ICdhc2MnIDogJ2Rlc2MnfToke3RoaXMuZXh0cmFjdFByb3BlcnR5TmFtZShxdWVyeVBhcmFtcy5zb3J0UHJvcGVydHlbaV0pfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdXJsICs9IHNvcnRpbmdRUHMuam9pbignLCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zLmZpbHRlclBhcmFtcyAmJiBxdWVyeVBhcmFtcy5maWx0ZXJQYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyUVBzID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1mcCBvZiBxdWVyeVBhcmFtcy5maWx0ZXJQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG1mcC5maWx0ZXJNYXRjaFR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuRXF1YWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJRUHMucHVzaChgJHt0aGlzLmV4dHJhY3RQcm9wZXJ0eU5hbWUobWZwLnByb3BlcnR5KX09JHtOZXdNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuRXF1YWxzfToke21mcC5maWx0ZXJWYWx1ZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgTWVkaXVzRmlsdGVyTWF0Y2hUeXBlLk5vdEVxdWFsczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUVBzLnB1c2goYCR7dGhpcy5leHRyYWN0UHJvcGVydHlOYW1lKG1mcC5wcm9wZXJ0eSl9PSR7TmV3TWVkaXVzRmlsdGVyTWF0Y2hUeXBlLk5vdEVxdWFsc306JHttZnAuZmlsdGVyVmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5Gcm9tVG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9kYXRlUmVnZXgudGVzdChtZnAuZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUVBzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3RoaXMuZXh0cmFjdFByb3BlcnR5TmFtZShtZnAucHJvcGVydHkpfT0ke05ld01lZGl1c0ZpbHRlck1hdGNoVHlwZS5CZXR3ZWVufToke25ldyBEYXRlKG1mcC5maWx0ZXJWYWx1ZSkudG9JU09TdHJpbmcoKX0sJHtuZXcgRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mcC5maWx0ZXJWYWx1ZVRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkudG9JU09TdHJpbmcoKX1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUVBzLnB1c2goYCR7dGhpcy5leHRyYWN0UHJvcGVydHlOYW1lKG1mcC5wcm9wZXJ0eSl9PSR7TmV3TWVkaXVzRmlsdGVyTWF0Y2hUeXBlLkJldHdlZW59OiR7bWZwLmZpbHRlclZhbHVlfSwke21mcC5maWx0ZXJWYWx1ZVRvfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuQ29udGFpbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclFQcy5wdXNoKGAke3RoaXMuZXh0cmFjdFByb3BlcnR5TmFtZShtZnAucHJvcGVydHkpfT0ke05ld01lZGl1c0ZpbHRlck1hdGNoVHlwZS5Db250YWluc306JHttZnAuZmlsdGVyVmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5TdGFydHNXaXRoOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJRUHMucHVzaChgJHt0aGlzLmV4dHJhY3RQcm9wZXJ0eU5hbWUobWZwLnByb3BlcnR5KX09JHtOZXdNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuU3RhcnRzV2l0aH06JHttZnAuZmlsdGVyVmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5FbmRzV2l0aDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUVBzLnB1c2goYCR7dGhpcy5leHRyYWN0UHJvcGVydHlOYW1lKG1mcC5wcm9wZXJ0eSl9PSR7TmV3TWVkaXVzRmlsdGVyTWF0Y2hUeXBlLkVuZHNXaXRofToke21mcC5maWx0ZXJWYWx1ZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgTWVkaXVzRmlsdGVyTWF0Y2hUeXBlLkluOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJRUHMucHVzaChgJHt0aGlzLmV4dHJhY3RQcm9wZXJ0eU5hbWUobWZwLnByb3BlcnR5KX09JHtOZXdNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuSW59OiR7bWZwLmZpbHRlclZhbHVlfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuTm90SW46IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclFQcy5wdXNoKGAke3RoaXMuZXh0cmFjdFByb3BlcnR5TmFtZShtZnAucHJvcGVydHkpfT0ke05ld01lZGl1c0ZpbHRlck1hdGNoVHlwZS5Ob3RJbn06JHttZnAuZmlsdGVyVmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5TbWFsbGVyVGhhbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGVSZWdleC50ZXN0KG1mcC5maWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJRUHMucHVzaChgJHt0aGlzLmV4dHJhY3RQcm9wZXJ0eU5hbWUobWZwLnByb3BlcnR5KX09JHtOZXdNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuTGVzc1RoYW59OiR7bmV3IERhdGUobWZwLmZpbHRlclZhbHVlKS50b0lTT1N0cmluZygpfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJRUHMucHVzaChgJHt0aGlzLmV4dHJhY3RQcm9wZXJ0eU5hbWUobWZwLnByb3BlcnR5KX09JHtOZXdNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuTGVzc1RoYW59OiR7bWZwLmZpbHRlclZhbHVlfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuR3JlYXRlclRoYW46IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9kYXRlUmVnZXgudGVzdChtZnAuZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUVBzLnB1c2goYCR7dGhpcy5leHRyYWN0UHJvcGVydHlOYW1lKG1mcC5wcm9wZXJ0eSl9PSR7TmV3TWVkaXVzRmlsdGVyTWF0Y2hUeXBlLkdyZWF0ZXJUaGFufToke25ldyBEYXRlKG1mcC5maWx0ZXJWYWx1ZSkudG9JU09TdHJpbmcoKX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUVBzLnB1c2goYCR7dGhpcy5leHRyYWN0UHJvcGVydHlOYW1lKG1mcC5wcm9wZXJ0eSl9PSR7TmV3TWVkaXVzRmlsdGVyTWF0Y2hUeXBlLkdyZWF0ZXJUaGFufToke21mcC5maWx0ZXJWYWx1ZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdXJsICs9ICcmJztcbiAgICAgICAgICAgIHVybCArPSBmaWx0ZXJRUHMuam9pbignJicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtYXBJdGVtc1RvRW50aXR5Q2hhbmdlc0FycmF5KGZpZWxkVmFsdWU6IHtba2V5OiBzdHJpbmddOiBBcnJheTxNbmdFbnRpdHlDaGFuZ2VEdG8+fSk6IEFycmF5PE1uZ0VudGl0eVJldmlzaW9uQ2hhbmdlcz4ge1xuICAgICAgICBjb25zdCBlbnRpdHlDaGFuZ2VzOiBNbmdFbnRpdHlSZXZpc2lvbkNoYW5nZXNbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmaWVsZFZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgZWMgPSBuZXcgTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VzKCk7XG4gICAgICAgICAgICBlYy5lbnRpdHlUeXBlID0ga2V5O1xuICAgICAgICAgICAgZWMuaXRlbXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hhbmdlIG9mIGZpZWxkVmFsdWVba2V5XSkge1xuICAgICAgICAgICAgICAgIGlmIChjaGFuZ2UucmV2VHlwZSA9PT0gTW5nUmV2aXNpb25UeXBlRHRvLkFkZCAmJiBjaGFuZ2UuZW50aXR5TmV3U3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IG5ldyBNbmdFbnRpdHlSZXZpc2lvbkNoYW5nZVN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucmV2VHlwZSA9IGNoYW5nZS5yZXZUeXBlO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmNvbG9yID0gJ2dyZWVuJztcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY2hhbmdlLmVudGl0eU5ld1N0YXRlKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IChpdGVtW2tleV0gPSB2YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICBlYy5pdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLnJldlR5cGUgPT09IE1uZ1JldmlzaW9uVHlwZUR0by5EZWwgJiYgY2hhbmdlLmVudGl0eU9sZFN0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBuZXcgTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLnJldlR5cGUgPSBjaGFuZ2UucmV2VHlwZTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jb2xvciA9ICdyZWQnO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhjaGFuZ2UuZW50aXR5T2xkU3RhdGUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gKGl0ZW1ba2V5XSA9IHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgIGVjLml0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2UucmV2VHlwZSA9PT0gTW5nUmV2aXNpb25UeXBlRHRvLk1vZCAmJiBjaGFuZ2UuZW50aXR5T2xkU3RhdGUgJiYgY2hhbmdlLmVudGl0eU5ld1N0YXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1PbGQgPSBuZXcgTW5nRW50aXR5UmV2aXNpb25DaGFuZ2VTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBpdGVtT2xkLnJldlR5cGUgPSBjaGFuZ2UucmV2VHlwZTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbU9sZC5jb2xvciA9ICdyZWQnO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhjaGFuZ2UuZW50aXR5T2xkU3RhdGUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gKGl0ZW1PbGRba2V5XSA9IHZhbHVlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbU5ldyA9IG5ldyBNbmdFbnRpdHlSZXZpc2lvbkNoYW5nZVN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1OZXcucmV2VHlwZSA9IGNoYW5nZS5yZXZUeXBlO1xuICAgICAgICAgICAgICAgICAgICBpdGVtTmV3LmNvbG9yID0gJ2dyZWVuJztcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY2hhbmdlLmVudGl0eU5ld1N0YXRlKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IChpdGVtTmV3W2tleV0gPSB2YWx1ZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGVjLml0ZW1zLnB1c2goaXRlbU9sZCk7XG4gICAgICAgICAgICAgICAgICAgIGVjLml0ZW1zLnB1c2goaXRlbU5ldyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW50aXR5Q2hhbmdlcy5wdXNoKGVjKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW50aXR5Q2hhbmdlcztcbiAgICB9XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { TypeName, TypeRegistry, MediusFilterMatchType, AMngBaseApiService, MngConfigurationService, MngInternalError, AMngTableviewRouteComponent, LookupDataProvider, TableviewDescriptor, MediusQueryResult, TableviewDataProvider, ActionEditorDetailsDescriptor, MngDropdownComponent, MngTableviewRouteComponent, AMngFormlyCustomFieldComponent, TableDescriptor, TablePaginationModeEnum, MngTableComponent, ModelDescriptor, TableviewEditorTypeEnum, EditorDescriptor, TableFilterDisplayEnum, itemIdToDefined, MngTableviewComponent, RouteBuilder, TableviewRouteBuilder, RoutesBuilder } from '@mediusinc/mng-commons';
1
+ import { TypeName, TypeRegistry, MediusFilterMatchType, AMngBaseApiService, MngConfigurationService, MngInternalError, AMngTableviewRouteComponent, LookupDataProvider, TableviewDescriptor, TableviewDataProvider, MediusQueryResult, ActionEditorDetailsDescriptor, MngDropdownComponent, MngTableviewRouteComponent, AMngFormlyCustomFieldComponent, TableDescriptor, TablePaginationModeEnum, MngTableComponent, ModelDescriptor, EditorDescriptor, TableviewEditorTypeEnum, TableFilterDisplayEnum, itemIdToDefined, MngTableviewComponent, RouteBuilder, TableviewRouteBuilder, RoutesBuilder } from '@mediusinc/mng-commons';
2
2
  import * as i0 from '@angular/core';
3
3
  import { InjectionToken, inject, Injectable, Component, DestroyRef, signal, Input, Injector, ChangeDetectionStrategy } from '@angular/core';
4
4
  import { map } from 'rxjs/operators';
@@ -285,9 +285,9 @@ class AuditUtil {
285
285
  return fullPropertyName;
286
286
  }
287
287
  static appendMediusQueryParamsToUrl(queryParams) {
288
- let url = `?firstResult=${queryParams.itemsOffset}&maxResults=${queryParams.itemsPerPage}`;
288
+ let url = `?offset=${queryParams.itemsOffset}&limit=${queryParams.itemsPerPage}`;
289
289
  if (queryParams.sortProperty && queryParams.sortProperty.length > 0) {
290
- url += '&sorts=';
290
+ url += '&sort=';
291
291
  const sortingQPs = [];
292
292
  for (let i = 0; i < queryParams.sortProperty.length; i++) {
293
293
  sortingQPs.push(`${queryParams.sortAsc?.[i] ?? true ? 'asc' : 'desc'}:${this.extractPropertyName(queryParams.sortProperty[i])}`);
@@ -415,16 +415,14 @@ class MngAuditRevisionsApiService extends AMngBaseApiService {
415
415
  getRevisionList(queryParams) {
416
416
  return this.http.get(this.getUrl(AuditUtil.appendMediusQueryParamsToUrl(queryParams)));
417
417
  }
418
- getRevisionCount(queryParams) {
419
- return this.http.get(this.getUrl('/count', AuditUtil.appendMediusQueryParamsToUrl(queryParams)));
420
- }
421
418
  getAllChangesForRevision(revId) {
422
419
  return this.http.get(this.getUrl(`/changes/${revId}`));
423
420
  }
424
421
  listRevisionsWithStateForEntityType(queryParams, entityType) {
425
- return this.http
426
- .get(this.getUrl(`/states/${entityType}`, AuditUtil.appendMediusQueryParamsToUrl(queryParams)))
427
- .pipe(map(response => this.deserializeClassArray(response, MngRevEntityWithStateDto)));
422
+ return this.http.get(this.getUrl(`/states/${entityType}`, AuditUtil.appendMediusQueryParamsToUrl(queryParams))).pipe(map(res => ({
423
+ data: this.deserializeClassArray(res.data, MngRevEntityWithStateDto),
424
+ totalCount: res.totalCount
425
+ })));
428
426
  }
429
427
  fetchRevisionsWithStateForEntityType(entityType, revId, itemId) {
430
428
  return this.http.get(this.getUrl(`/states/${entityType}?rev=eq:${revId}&id=eq:${itemId}`)).pipe(map(response => this.deserializeClassArray(response, MngRevEntityWithId).map(i => {
@@ -437,9 +435,6 @@ class MngAuditRevisionsApiService extends AMngBaseApiService {
437
435
  throw new MngInternalError(`Entity revision ${revId} for ${entityType} with id ${itemId} was not found`);
438
436
  }));
439
437
  }
440
- countRevisionsWithStateForEntityType(queryParams, entityType) {
441
- return this.http.get(this.getUrl(`/states/${entityType}/count`, AuditUtil.appendMediusQueryParamsToUrl(queryParams)));
442
- }
443
438
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngAuditRevisionsApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
444
439
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngAuditRevisionsApiService }); }
445
440
  }
@@ -595,12 +590,9 @@ class MngAuditEntityRevisionsPageComponent extends AMngTableviewRouteComponent {
595
590
  }
596
591
  const entityName = this.selectedRevisionEntity.entityName;
597
592
  return TableviewDataProvider.fromClass(MngRevEntityWithId).withGetAll(qp => this.selectedRevisionEntity?.entityName
598
- ? combineLatest([
599
- this.revisionsApiService.countRevisionsWithStateForEntityType(qp, entityName),
600
- this.revisionsApiService.listRevisionsWithStateForEntityType(qp, entityName)
601
- ]).pipe(map(([count, values]) => {
593
+ ? this.revisionsApiService.listRevisionsWithStateForEntityType(qp, entityName).pipe(map(res => {
602
594
  const revEntityWithStateAndIdList = [];
603
- for (const revEntityWithState of values) {
595
+ for (const revEntityWithState of res.data) {
604
596
  const revEntityWithStateAndId = new MngRevEntityWithId();
605
597
  revEntityWithStateAndId.mergedId = revEntityWithState.revEntity?.['rev'] + '_' + revEntityWithState.entityState?.['id'];
606
598
  revEntityWithStateAndId.revType = revEntityWithState.revType;
@@ -609,7 +601,7 @@ class MngAuditEntityRevisionsPageComponent extends AMngTableviewRouteComponent {
609
601
  revEntityWithStateAndId.entityClassName = revEntityWithState.entityClassName;
610
602
  revEntityWithStateAndIdList.push(revEntityWithStateAndId);
611
603
  }
612
- return MediusQueryResult.fromArray(revEntityWithStateAndIdList, count);
604
+ return MediusQueryResult.fromArray(revEntityWithStateAndIdList, res.totalCount);
613
605
  }))
614
606
  : throwError(() => new MngInternalError('No revision entity is provided for list.')));
615
607
  }
@@ -734,11 +726,11 @@ class EntityChangesFieldComponent extends AMngFormlyCustomFieldComponent {
734
726
  return desc;
735
727
  }
736
728
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EntityChangesFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
737
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: EntityChangesFieldComponent, isStandalone: true, selector: "mng-entity-changes-field", inputs: { injector: "injector" }, usesInheritance: true, ngImport: i0, template: "@if (modelFetched | async) {\n <div>\n @for (ec of entityChanges; track ec) {\n <mng-table [items]=\"ec.items\" [descriptor]=\"createDescriptor(ec)\"></mng-table>\n }\n </div>\n} @else {\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem\"></i>\n </div>\n}\n", styles: ["::ng-deep tr.audit-row-deleted{background:hsla(3,100%,60%,.1)!important}::ng-deep tr.audit-row-deleted .audit-cell{background:hsla(3,90%,63%,.3)!important}::ng-deep tr.audit-row-added{background-color:#1bc5621a!important}::ng-deep tr.audit-row-added .audit-cell{background:hsla(145,76%,44%,.3)!important}\n"], dependencies: [{ kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "columnLastMinWidth", "captionComponent", "columnCustomLastComponent", "globalFilterFields"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnCustomLastComponentInstance"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
729
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: EntityChangesFieldComponent, isStandalone: true, selector: "mng-entity-changes-field", inputs: { injector: "injector" }, usesInheritance: true, ngImport: i0, template: "@if (modelFetched | async) {\n <div>\n @for (ec of entityChanges; track ec) {\n <mng-table [items]=\"ec.items\" [descriptor]=\"createDescriptor(ec)\"></mng-table>\n }\n </div>\n} @else {\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem\"></i>\n </div>\n}\n", styles: ["::ng-deep tr.audit-row-deleted{background:#ff3d331a!important}::ng-deep tr.audit-row-deleted .audit-cell{background:#f6544c4d!important}::ng-deep tr.audit-row-added{background-color:#1bc5621a!important}::ng-deep tr.audit-row-added .audit-cell{background:#1bc5624d!important}\n"], dependencies: [{ kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "columnLastMinWidth", "captionComponent", "columnCustomLastComponent", "globalFilterFields"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnCustomLastComponentInstance"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
738
730
  }
739
731
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EntityChangesFieldComponent, decorators: [{
740
732
  type: Component,
741
- args: [{ standalone: true, selector: 'mng-entity-changes-field', imports: [MngTableComponent, AsyncPipe], template: "@if (modelFetched | async) {\n <div>\n @for (ec of entityChanges; track ec) {\n <mng-table [items]=\"ec.items\" [descriptor]=\"createDescriptor(ec)\"></mng-table>\n }\n </div>\n} @else {\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem\"></i>\n </div>\n}\n", styles: ["::ng-deep tr.audit-row-deleted{background:hsla(3,100%,60%,.1)!important}::ng-deep tr.audit-row-deleted .audit-cell{background:hsla(3,90%,63%,.3)!important}::ng-deep tr.audit-row-added{background-color:#1bc5621a!important}::ng-deep tr.audit-row-added .audit-cell{background:hsla(145,76%,44%,.3)!important}\n"] }]
733
+ args: [{ standalone: true, selector: 'mng-entity-changes-field', imports: [MngTableComponent, AsyncPipe], template: "@if (modelFetched | async) {\n <div>\n @for (ec of entityChanges; track ec) {\n <mng-table [items]=\"ec.items\" [descriptor]=\"createDescriptor(ec)\"></mng-table>\n }\n </div>\n} @else {\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem\"></i>\n </div>\n}\n", styles: ["::ng-deep tr.audit-row-deleted{background:#ff3d331a!important}::ng-deep tr.audit-row-deleted .audit-cell{background:#f6544c4d!important}::ng-deep tr.audit-row-added{background-color:#1bc5621a!important}::ng-deep tr.audit-row-added .audit-cell{background:#1bc5624d!important}\n"] }]
742
734
  }], propDecorators: { injector: [{
743
735
  type: Input
744
736
  }] } });
@@ -791,7 +783,7 @@ class MngAuditRevisionsPageComponent extends AMngTableviewRouteComponent {
791
783
  }
792
784
  createTableviewDataProvider() {
793
785
  if (this.revModel) {
794
- return TableviewDataProvider.fromClass(MngRevEntity).withGetAll(qp => combineLatest([this.revisisonsApiService.getRevisionCount(qp), this.revisisonsApiService.getRevisionList(qp)]).pipe(map(([count, values]) => MediusQueryResult.fromArray(values, count))));
786
+ return TableviewDataProvider.fromClass(MngRevEntity).withGetAll(qp => this.revisisonsApiService.getRevisionList(qp).pipe(map(res => MediusQueryResult.fromArray(res.data, res.totalCount))));
795
787
  }
796
788
  return TableviewDataProvider.fromClass(MngRevEntity);
797
789
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mediusinc-mng-commons-audit.mjs","sources":["../../src/lib/api/models/revEntityWithStateDto.ts","../../src/lib/models/revEntityWithId.model.ts","../../src/lib/service/module-config.token.ts","../../src/lib/api/models/guiPropertyType.ts","../../src/lib/api/models/revisionType.ts","../../src/lib/models/entity-revision-change-state.model.ts","../../src/lib/models/entity-revision-changes.model.ts","../../src/lib/models/new-filter-match-type.model.ts","../../src/lib/utils/audit.util.ts","../../src/lib/api/services/audit-revisions-api.service.ts","../../src/lib/api/models/guiEntityModel.ts","../../src/lib/api/services/audit.service.ts","../../src/lib/components/pages/audit/audit.page.component.ts","../../src/lib/components/pages/audit/audit.page.component.html","../../src/lib/models/guiEntityModelWithI18n.model.ts","../../src/lib/components/pages/entity-revisions/audit-entity-revisions.page.component.ts","../../src/lib/components/pages/entity-revisions/audit-entity-revisions.page.component.html","../../src/lib/api/models/revEntityWithChangesDto.ts","../../src/lib/models/rev-entity.model.ts","../../src/lib/models/rev-entity-detailed.model.ts","../../src/lib/components/entity-changes-field/entity-changes-field.component.ts","../../src/lib/components/entity-changes-field/entity-changes-field.component.html","../../src/lib/components/pages/revisions/audit-revisions.page.component.ts","../../src/lib/components/pages/revisions/audit-revisions.page.component.html","../../src/lib/audit.routes.ts","../../src/mediusinc-mng-commons-audit.ts"],"sourcesContent":["/**\n * Medius quarkus sampler\n * Sampler OPENAPI definition\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@medius.si\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport {ClassAttributeDef, TypeName, TypeRegistry} from '@mediusinc/mng-commons';\n\nimport {MngRevisionTypeDto} from './revisionType';\n\n@TypeName('MngRevEntityWithStateDto')\nexport class MngRevEntityWithStateDto {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n revEntity?: {[key: string]: any};\n revType?: MngRevisionTypeDto;\n entityClassName?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entityState?: {[key: string]: any};\n\n public static discriminator?: string;\n\n public static attributeTypeMap: Array<ClassAttributeDef> = [\n {\n name: 'revEntity',\n baseName: 'revEntity',\n type: '{ [key: string]: any; }'\n },\n {\n name: 'revType',\n baseName: 'revType',\n type: 'RevisionType'\n },\n {\n name: 'entityClassName',\n baseName: 'entityClassName',\n type: 'string'\n },\n {\n name: 'entityState',\n baseName: 'entityState',\n type: '{ [key: string]: any; }'\n }\n ];\n\n public static getAttributeTypeMap() {\n return MngRevEntityWithStateDto.attributeTypeMap;\n }\n}\n\nTypeRegistry.get().registerType(MngRevEntityWithStateDto);\n","import {TypeName, TypeRegistry} from '@mediusinc/mng-commons';\n\nimport {MngRevEntityWithStateDto} from '../api/models/revEntityWithStateDto';\n\n@TypeName('MngRevEntityWithId')\nexport class MngRevEntityWithId extends MngRevEntityWithStateDto {\n mergedId?: string;\n}\n\nTypeRegistry.get().registerType(MngRevEntityWithId);\n","import {InjectionToken} from '@angular/core';\n\nimport {MngAuditModuleConfig} from '../models/config.model';\n\nexport const MNG_AUDIT_MODULE_CONFIG_IT = new InjectionToken<MngAuditModuleConfig>('MngAuditModuleConfig');\n","/**\n * Medius quarkus sampler\n * Sampler OPENAPI definition\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@medius.si\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport {TypeRegistry} from '@mediusinc/mng-commons';\n\nexport enum MngGuiPropertyTypeDto {\n LocalDate = 'LOCAL_DATE',\n OffsetDateTime = 'OFFSET_DATE_TIME',\n String = 'STRING',\n Number = 'NUMBER',\n Boolean = 'BOOLEAN',\n Enum = 'ENUM',\n Wildcard = 'WILDCARD'\n}\n\nTypeRegistry.get().registerEnum(MngGuiPropertyTypeDto, 'MngGuiPropertyTypeDto');\n","/**\n * Medius quarkus sampler\n * Sampler OPENAPI definition\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@medius.si\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport {TypeRegistry} from '@mediusinc/mng-commons';\n\nexport enum MngRevisionTypeDto {\n Add = 'ADD',\n Mod = 'MOD',\n Del = 'DEL'\n}\n\nTypeRegistry.get().registerEnum(MngRevisionTypeDto, 'MngRevisionTypeDto');\n","import {TypeName} from '@mediusinc/mng-commons';\n\nimport {MngRevisionTypeDto} from '../api/models/revisionType';\n\n@TypeName('MngEntityRevisionChangeState')\nexport class MngEntityRevisionChangeState {\n revType?: MngRevisionTypeDto;\n color?: 'green' | 'red';\n [key: string]: unknown;\n}\n","import {TypeName} from '@mediusinc/mng-commons';\n\nimport {MngEntityRevisionChangeState} from './entity-revision-change-state.model';\n\n@TypeName('MngEntityChanges')\nexport class MngEntityRevisionChanges {\n entityType?: string;\n items?: MngEntityRevisionChangeState[];\n}\n","export enum NewMediusFilterMatchType {\n Equals = 'eq',\n NotEquals = 'ne',\n Between = 'bt',\n Contains = 'cn',\n NotContains = 'nc',\n StartsWith = 'sw',\n EndsWith = 'ew',\n In = 'in',\n NotIn = 'ni',\n LessThan = 'lt',\n LessThanOrEqualTo = 'le',\n GreaterThan = 'gt',\n GreaterThanOrEqualTo = 'ge',\n Exists = 'ex',\n DoesNotExist = 'nx'\n}\n","import {of} from 'rxjs';\n\nimport {\n ColumnDescriptor,\n EditorDescriptorInst,\n FilterLookupDescriptor,\n MediusFilterMatchType,\n MediusQueryParam,\n TableDescriptorInst,\n TableviewDescriptorInst,\n TypeRegistry\n} from '@mediusinc/mng-commons';\n\nimport {MngEntityChangeDto} from '../api/models/entityChange';\nimport {MngGuiEntityModelDto} from '../api/models/guiEntityModel';\nimport {MngGuiPropertyModelDto} from '../api/models/guiPropertyModel';\nimport {MngGuiPropertyTypeDto} from '../api/models/guiPropertyType';\nimport {MngRevEntityWithStateDto} from '../api/models/revEntityWithStateDto';\nimport {MngRevisionTypeDto} from '../api/models/revisionType';\nimport {MngEntityRevisionChangeState} from '../models/entity-revision-change-state.model';\nimport {MngEntityRevisionChanges} from '../models/entity-revision-changes.model';\nimport {NewMediusFilterMatchType} from '../models/new-filter-match-type.model';\n\nexport class AuditUtil {\n private static _dateRegex = /\\d{4}-[01]\\d-[0-3]\\d/;\n\n public static addColumnsFromModel<T>(\n descriptor: TableDescriptorInst<T>,\n properties: MngGuiPropertyModelDto[],\n modelType: 'revEntity' | 'entityState' | undefined = undefined,\n addFilters = true,\n addSorts = true\n ): TableDescriptorInst<T> {\n for (const property of properties) {\n if (!property.resolvedPropertyName) {\n continue;\n }\n\n const isEnum = property.propertyType === MngGuiPropertyTypeDto.Enum;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let column: ColumnDescriptor<any, T> | null = null;\n if (isEnum) {\n if (!property.possibleEnumValues) {\n continue;\n }\n\n const enumType = AuditUtil.findEnumType(property);\n if (enumType) {\n column = descriptor.addColumnUnsafe(property.resolvedPropertyName).asEnum(enumType);\n if (addFilters) {\n column.withFilterLookupEnum(property.possibleEnumValues);\n }\n } else {\n column = descriptor.addColumnUnsafe(property.resolvedPropertyName);\n if (addFilters) {\n (column?.withFilterLookup() as FilterLookupDescriptor<string>).withLookup(() => of(property.possibleEnumValues ?? []));\n }\n }\n } else if (property.propertyType === MngGuiPropertyTypeDto.Number) {\n column = descriptor.addColumnUnsafe(property.resolvedPropertyName).asNumber();\n } else if (property.propertyType === MngGuiPropertyTypeDto.Boolean) {\n column = descriptor.addColumnUnsafe(property.resolvedPropertyName).asBoolean();\n } else if (property.propertyType === MngGuiPropertyTypeDto.LocalDate) {\n column = descriptor.addColumnUnsafe(property.resolvedPropertyName).asDate('dd. MM yyyy');\n } else if (property.propertyType === MngGuiPropertyTypeDto.OffsetDateTime) {\n column = descriptor.addColumnUnsafe(property.resolvedPropertyName).asDate('dd. MM yyyy HH:mm');\n } else {\n // string / wildcard\n column = descriptor.addColumnUnsafe(property.resolvedPropertyName).withTitle(AuditUtil.getPropertyTitleKey(property, modelType));\n }\n\n if (modelType) {\n column.withGetter((value, item) => item?.[modelType as keyof object]?.[property.resolvedPropertyName as keyof object]);\n }\n\n column.withTitle(AuditUtil.getPropertyTitleKey(property, modelType));\n\n if (!isEnum && addFilters) {\n column?.withFilter();\n }\n if (addSorts) {\n column?.withSort();\n }\n }\n return descriptor;\n }\n\n public static getPropertyTitleKey(property: MngGuiPropertyModelDto, modelType: 'revEntity' | 'entityState' | undefined = undefined) {\n if (modelType === 'revEntity') {\n return 'MngRevEntity.properties.' + property.resolvedPropertyName;\n }\n return property.resolvedPropertyName ?? '';\n }\n\n public static addFieldsFromModel<T>(\n descriptor: EditorDescriptorInst<T>,\n properties: MngGuiPropertyModelDto[],\n modelType: 'revEntity' | 'entityState' = 'revEntity'\n ): EditorDescriptorInst<T> {\n for (const property of properties) {\n if (!property.resolvedPropertyName) {\n continue;\n }\n\n const fieldPrepend = `${modelType}.`;\n\n if (property.propertyType === MngGuiPropertyTypeDto.Enum) {\n const enumType = AuditUtil.findEnumType(property);\n if (enumType) {\n if (!property.possibleEnumValues) {\n continue;\n }\n\n descriptor.addFieldLookupEnumUnsafe(fieldPrepend + property.resolvedPropertyName, enumType, property.possibleEnumValues).withDisabled();\n } else {\n descriptor.addFieldUnsafe(fieldPrepend + property.resolvedPropertyName).withLabel(AuditUtil.getPropertyTitleKey(property, modelType));\n }\n } else if (property.propertyType === MngGuiPropertyTypeDto.Number) {\n descriptor\n .addFieldUnsafe(fieldPrepend + property.resolvedPropertyName)\n .withLabel(AuditUtil.getPropertyTitleKey(property, modelType))\n .asNumber()\n .withDisabled();\n } else if (property.propertyType === MngGuiPropertyTypeDto.Boolean) {\n descriptor\n .addFieldUnsafe(fieldPrepend + property.resolvedPropertyName)\n .withLabel(AuditUtil.getPropertyTitleKey(property, modelType))\n .withDisabled();\n } else if (property.propertyType === MngGuiPropertyTypeDto.LocalDate) {\n descriptor\n .addFieldUnsafe(fieldPrepend + property.resolvedPropertyName)\n .withLabel(AuditUtil.getPropertyTitleKey(property, modelType))\n .asDatePicker({format: 'dd. MMM yyyy'})\n .withDisabled();\n } else if (property.propertyType === MngGuiPropertyTypeDto.OffsetDateTime) {\n descriptor\n .addFieldUnsafe(fieldPrepend + property.resolvedPropertyName)\n .withLabel(AuditUtil.getPropertyTitleKey(property, modelType))\n .asDatePicker({\n format: 'dd. MM yy',\n showTime: true,\n showSeconds: false\n })\n .withDisabled();\n } else {\n // string / wildcard\n descriptor\n .addFieldUnsafe(fieldPrepend + property.resolvedPropertyName)\n .withLabel(AuditUtil.getPropertyTitleKey(property, modelType))\n .withDisabled();\n }\n }\n return descriptor;\n }\n\n public static buildDescriptorForEntityRevision(\n descriptor: TableviewDescriptorInst<MngRevEntityWithStateDto>,\n revModel: MngGuiEntityModelDto,\n entityModel: MngGuiEntityModelDto\n ): TableviewDescriptorInst<MngRevEntityWithStateDto> {\n descriptor.addColumn('revType').withTitle('MngEntityRevisionChangeState.properties.revType').asEnum(MngRevisionTypeDto).withFilter();\n descriptor.addFieldLookupEnum('revType', MngRevisionTypeDto).withLabel('MngEntityRevisionChangeState.properties.revType');\n\n if (revModel.properties) {\n AuditUtil.addColumnsFromModel(descriptor.table, revModel.properties, 'revEntity');\n AuditUtil.addFieldsFromModel(descriptor.detailsEditor, revModel.properties, 'revEntity');\n }\n if (entityModel.properties) {\n AuditUtil.addColumnsFromModel(descriptor.table, entityModel.properties, 'entityState');\n AuditUtil.addFieldsFromModel(descriptor.detailsEditor, entityModel.properties, 'entityState');\n }\n\n return descriptor;\n }\n\n public static findEnumType(property: MngGuiPropertyModelDto) {\n if (!property.enumClassSimpleName) {\n return undefined;\n }\n\n let enumType = TypeRegistry.get().findEnum(property.enumClassSimpleName);\n if (!enumType) {\n enumType = TypeRegistry.get().findEnum(property.enumClassSimpleName + 'Dto');\n }\n return enumType;\n }\n\n public static extractPropertyName(fullPropertyName: string | undefined): string | undefined {\n if (fullPropertyName?.includes('entityState.')) {\n return fullPropertyName.replace('entityState.', '');\n } else if (fullPropertyName?.includes('revEntity.')) {\n return fullPropertyName?.replace('revEntity.', '');\n }\n return fullPropertyName;\n }\n\n public static appendMediusQueryParamsToUrl(queryParams: MediusQueryParam): string {\n let url = `?firstResult=${queryParams.itemsOffset}&maxResults=${queryParams.itemsPerPage}`;\n if (queryParams.sortProperty && queryParams.sortProperty.length > 0) {\n url += '&sorts=';\n const sortingQPs = [];\n for (let i = 0; i < queryParams.sortProperty.length; i++) {\n sortingQPs.push(`${queryParams.sortAsc?.[i] ?? true ? 'asc' : 'desc'}:${this.extractPropertyName(queryParams.sortProperty[i])}`);\n }\n url += sortingQPs.join(',');\n }\n\n if (queryParams.filterParams && queryParams.filterParams.length > 0) {\n const filterQPs = [];\n for (const mfp of queryParams.filterParams) {\n switch (mfp.filterMatchType) {\n case MediusFilterMatchType.Equals: {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.Equals}:${mfp.filterValue}`);\n break;\n }\n case MediusFilterMatchType.NotEquals: {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.NotEquals}:${mfp.filterValue}`);\n break;\n }\n case MediusFilterMatchType.FromTo: {\n if (this._dateRegex.test(mfp.filterValue)) {\n filterQPs.push(\n `${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.Between}:${new Date(mfp.filterValue).toISOString()},${new Date(\n mfp.filterValueTo\n ).toISOString()}`\n );\n } else {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.Between}:${mfp.filterValue},${mfp.filterValueTo}`);\n }\n break;\n }\n case MediusFilterMatchType.Contains: {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.Contains}:${mfp.filterValue}`);\n break;\n }\n case MediusFilterMatchType.StartsWith: {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.StartsWith}:${mfp.filterValue}`);\n break;\n }\n case MediusFilterMatchType.EndsWith: {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.EndsWith}:${mfp.filterValue}`);\n break;\n }\n case MediusFilterMatchType.In: {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.In}:${mfp.filterValue}`);\n break;\n }\n case MediusFilterMatchType.NotIn: {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.NotIn}:${mfp.filterValue}`);\n break;\n }\n case MediusFilterMatchType.SmallerThan: {\n if (this._dateRegex.test(mfp.filterValue)) {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.LessThan}:${new Date(mfp.filterValue).toISOString()}`);\n } else {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.LessThan}:${mfp.filterValue}`);\n }\n break;\n }\n case MediusFilterMatchType.GreaterThan: {\n if (this._dateRegex.test(mfp.filterValue)) {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.GreaterThan}:${new Date(mfp.filterValue).toISOString()}`);\n } else {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.GreaterThan}:${mfp.filterValue}`);\n }\n break;\n }\n }\n }\n url += '&';\n url += filterQPs.join('&');\n }\n return url;\n }\n\n public static mapItemsToEntityChangesArray(fieldValue: {[key: string]: Array<MngEntityChangeDto>}): Array<MngEntityRevisionChanges> {\n const entityChanges: MngEntityRevisionChanges[] = [];\n for (const key of Object.keys(fieldValue)) {\n const ec = new MngEntityRevisionChanges();\n ec.entityType = key;\n ec.items = [];\n for (const change of fieldValue[key]) {\n if (change.revType === MngRevisionTypeDto.Add && change.entityNewState) {\n const item = new MngEntityRevisionChangeState();\n item.revType = change.revType;\n item.color = 'green';\n Object.entries(change.entityNewState).forEach(([key, value]) => (item[key] = value));\n ec.items.push(item);\n } else if (change.revType === MngRevisionTypeDto.Del && change.entityOldState) {\n const item = new MngEntityRevisionChangeState();\n item.revType = change.revType;\n item.color = 'red';\n Object.entries(change.entityOldState).forEach(([key, value]) => (item[key] = value));\n ec.items.push(item);\n } else if (change.revType === MngRevisionTypeDto.Mod && change.entityOldState && change.entityNewState) {\n const itemOld = new MngEntityRevisionChangeState();\n itemOld.revType = change.revType;\n itemOld.color = 'red';\n Object.entries(change.entityOldState).forEach(([key, value]) => (itemOld[key] = value));\n\n const itemNew = new MngEntityRevisionChangeState();\n itemNew.revType = change.revType;\n itemNew.color = 'green';\n Object.entries(change.entityNewState).forEach(([key, value]) => (itemNew[key] = value));\n\n ec.items.push(itemOld);\n ec.items.push(itemNew);\n }\n }\n entityChanges.push(ec);\n }\n return entityChanges;\n }\n}\n","import {Injectable, inject} from '@angular/core';\n\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {AMngBaseApiService, IdType, MediusQueryParam, MngConfigurationService, MngInternalError} from '@mediusinc/mng-commons';\n\nimport {MngRevEntityWithId} from '../../models/revEntityWithId.model';\nimport {MNG_AUDIT_MODULE_CONFIG_IT} from '../../service/module-config.token';\nimport {AuditUtil} from '../../utils/audit.util';\nimport {MngRevEntityWithChangesDto} from '../models/revEntityWithChangesDto';\nimport {MngRevEntityWithStateDto} from '../models/revEntityWithStateDto';\n\n@Injectable()\nexport class MngAuditRevisionsApiService extends AMngBaseApiService {\n protected readonly configService: MngConfigurationService;\n\n protected readonly moduleConfig = inject(MNG_AUDIT_MODULE_CONFIG_IT);\n\n constructor() {\n super();\n this.configService = MngConfigurationService.get();\n }\n\n protected getServiceBasePath(): string | null {\n return this.moduleConfig.apiServiceBasePath ?? '';\n }\n\n protected getBasePath(): string {\n return `${this.configService.getConfigValue(this.moduleConfig.apiBasePathConfigKey)}`;\n }\n\n public getRevisionList(queryParams: MediusQueryParam): Observable<Array<{[key: string]: unknown}>> {\n return this.http.get<Array<{[key: string]: unknown}>>(this.getUrl(AuditUtil.appendMediusQueryParamsToUrl(queryParams)));\n }\n\n public getRevisionCount(queryParams: MediusQueryParam): Observable<number> {\n return this.http.get<number>(this.getUrl('/count', AuditUtil.appendMediusQueryParamsToUrl(queryParams)));\n }\n\n public getAllChangesForRevision(revId: IdType): Observable<MngRevEntityWithChangesDto> {\n return this.http.get(this.getUrl(`/changes/${revId}`));\n }\n\n public listRevisionsWithStateForEntityType(queryParams: MediusQueryParam, entityType: string): Observable<Array<MngRevEntityWithStateDto>> {\n return this.http\n .get(this.getUrl(`/states/${entityType}`, AuditUtil.appendMediusQueryParamsToUrl(queryParams)))\n .pipe(map(response => this.deserializeClassArray(response, MngRevEntityWithStateDto)));\n }\n\n public fetchRevisionsWithStateForEntityType(entityType: string, revId: IdType, itemId: IdType): Observable<MngRevEntityWithId> {\n return this.http.get(this.getUrl(`/states/${entityType}?rev=eq:${revId}&id=eq:${itemId}`)).pipe(\n map(response =>\n this.deserializeClassArray(response, MngRevEntityWithId).map(i => {\n i.mergedId = i.revEntity?.['rev'] + '_' + i.entityState?.['id'];\n return i;\n })\n ),\n map(items => {\n if (items.length > 0) {\n return items[0];\n }\n throw new MngInternalError(`Entity revision ${revId} for ${entityType} with id ${itemId} was not found`);\n })\n );\n }\n\n public countRevisionsWithStateForEntityType(queryParams: MediusQueryParam, entityType: string): Observable<number> {\n return this.http.get<number>(this.getUrl(`/states/${entityType}/count`, AuditUtil.appendMediusQueryParamsToUrl(queryParams)));\n }\n}\n","/**\n * Medius quarkus sampler\n * Sampler OPENAPI definition\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@medius.si\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport {ClassAttributeDef, TypeName, TypeRegistry} from '@mediusinc/mng-commons';\n\nimport {MngGuiPropertyModelDto} from './guiPropertyModel';\n\n@TypeName('MngGuiEntityModelDto')\nexport class MngGuiEntityModelDto {\n entityName?: string;\n properties?: Array<MngGuiPropertyModelDto>;\n\n public static discriminator?: string;\n\n public static attributeTypeMap: Array<ClassAttributeDef> = [\n {\n name: 'entityName',\n baseName: 'entityName',\n type: 'string'\n },\n {\n name: 'properties',\n baseName: 'properties',\n type: 'Array<GuiPropertyModel>'\n }\n ];\n\n public static getAttributeTypeMap() {\n return MngGuiEntityModelDto.attributeTypeMap;\n }\n}\n\nTypeRegistry.get().registerType(MngGuiEntityModelDto);\n","import {Injectable, inject} from '@angular/core';\n\nimport {Observable, shareReplay} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {AMngBaseApiService, MngConfigurationService} from '@mediusinc/mng-commons';\n\nimport {MNG_AUDIT_MODULE_CONFIG_IT} from '../../service/module-config.token';\nimport {MngGuiEntityModelDto} from '../models/guiEntityModel';\n\n@Injectable()\nexport class MngAuditService extends AMngBaseApiService {\n private readonly CACHE_SIZE = 1;\n private readonly configService: MngConfigurationService;\n private readonly moduleConfig = inject(MNG_AUDIT_MODULE_CONFIG_IT);\n\n private revModelObs?: Observable<MngGuiEntityModelDto>;\n private auditModelObs?: Observable<Array<MngGuiEntityModelDto>>;\n\n constructor() {\n super();\n this.configService = MngConfigurationService.get();\n }\n\n protected getServiceBasePath(): string | null {\n return this.moduleConfig.apiServiceBasePath ?? '';\n }\n\n protected getBasePath(): string {\n return `${this.configService.getConfigValue(this.moduleConfig.apiBasePathConfigKey)}`;\n }\n\n public get revModel$() {\n if (!this.revModelObs) {\n this.revModelObs = this.requestRevModel().pipe(shareReplay(this.CACHE_SIZE));\n }\n return this.revModelObs;\n }\n\n public get auditModel$() {\n if (!this.auditModelObs) {\n this.auditModelObs = this.requestAuditModel().pipe(shareReplay(this.CACHE_SIZE));\n }\n return this.auditModelObs;\n }\n\n private requestRevModel(): Observable<MngGuiEntityModelDto> {\n return this.http.get(this.getUrl('/rev-model'));\n }\n\n private requestAuditModel(): Observable<Array<MngGuiEntityModelDto>> {\n return this.http.get(this.getUrl('/audit-models')).pipe(map(response => this.deserializeClassArray(response, MngGuiEntityModelDto)));\n }\n}\n","import {Component} from '@angular/core';\nimport {RouterOutlet} from '@angular/router';\n\n@Component({\n standalone: true,\n selector: 'mng-audit-page',\n imports: [RouterOutlet],\n templateUrl: 'audit.page.component.html'\n})\nexport class MngAuditPageComponent {}\n","<router-outlet></router-outlet>\n","import {TypeName} from '@mediusinc/mng-commons';\n\nimport {MngGuiEntityModelDto} from '../api/models/guiEntityModel';\n\n@TypeName('MngGuiEntityModelWithI18n')\nexport class MngGuiEntityModelWithI18n extends MngGuiEntityModelDto {\n entityNameI18n?: string;\n}\n","import {AsyncPipe} from '@angular/common';\nimport {Component, DestroyRef, OnInit, WritableSignal, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\nimport {Router} from '@angular/router';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {combineLatest, throwError} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {\n AMngTableviewRouteComponent,\n ActionDescriptorInst,\n ActionEditorDetailsDescriptor,\n LookupDataProvider,\n LookupDataProviderInst,\n MediusQueryResult,\n MngDropdownComponent,\n MngInternalError,\n MngTableviewRouteComponent,\n TableviewDataProvider,\n TableviewDescriptor\n} from '@mediusinc/mng-commons';\n\nimport {MngGuiEntityModelDto} from '../../../api/models/guiEntityModel';\nimport {MngAuditRevisionsApiService} from '../../../api/services/audit-revisions-api.service';\nimport {MngAuditService} from '../../../api/services/audit.service';\nimport {MngGuiEntityModelWithI18n} from '../../../models/guiEntityModelWithI18n.model';\nimport {MngRevEntityWithId} from '../../../models/revEntityWithId.model';\nimport {AuditUtil} from '../../../utils/audit.util';\n\n@Component({\n standalone: true,\n selector: 'mng-audit-entity-revisions-page',\n imports: [MngDropdownComponent, MngTableviewRouteComponent, FormsModule, AsyncPipe, TranslateModule, FormlyModule],\n templateUrl: 'audit-entity-revisions.page.component.html'\n})\nexport class MngAuditEntityRevisionsPageComponent extends AMngTableviewRouteComponent<MngRevEntityWithId> implements OnInit {\n private destroyRef = inject(DestroyRef);\n private auditService = inject(MngAuditService);\n private revisionsApiService = inject(MngAuditRevisionsApiService);\n\n public revModel?: MngGuiEntityModelDto;\n public selectedRevisionEntity?: MngGuiEntityModelDto;\n public revisionEntitiesLookupProvider?: LookupDataProviderInst<MngGuiEntityModelWithI18n>;\n\n public showTableview: WritableSignal<boolean> = signal(false);\n\n constructor(private router: Router) {\n super();\n this.revisionEntitiesLookupProvider = LookupDataProvider.fromClass(MngGuiEntityModelWithI18n).withLookup(() =>\n this.auditService.auditModel$.pipe(\n map(model => {\n const modelI18n = model as MngGuiEntityModelWithI18n[];\n modelI18n.sort((m1, m2) => {\n if (m1.entityName && m2.entityName) {\n return m1.entityName.localeCompare(m2.entityName);\n } else if (m1.entityName && !m2.entityName) {\n return 1;\n } else {\n return -1;\n }\n });\n modelI18n.forEach(item => {\n const translatedEntityName = this.translateService.instant('AuditEntities.' + item.entityName);\n item.entityNameI18n = translatedEntityName.includes('AuditEntities.') ? item.entityName : translatedEntityName;\n });\n return modelI18n;\n })\n )\n );\n }\n\n override ngOnInit() {\n this.route.paramMap.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(params => {\n const entityClass = params.get('entityClass');\n if (entityClass) {\n combineLatest([this.auditService.auditModel$, this.auditService.revModel$]).subscribe(([entities, revModel]) => {\n this.revModel = revModel;\n\n for (const e of entities) {\n if (e.entityName === entityClass) {\n this.selectedRevisionEntity = e;\n super.ngOnInit();\n setTimeout(() => this.showTableview.set(true));\n }\n }\n });\n }\n });\n }\n\n public onRevisionEntityChange() {\n this.showTableview.set(false);\n if (this.selectedRevisionEntity) {\n this.router.navigate(['/audit/entity-revisions/' + this.selectedRevisionEntity.entityName]);\n } else {\n this.router.navigate(['/audit/entity-revisions/']);\n }\n }\n\n protected createTableviewDescriptor() {\n if (!this.revModel || !this.selectedRevisionEntity?.entityName) {\n throw new MngInternalError('No revision model or revision entity is provided for tableview.');\n }\n\n const desc = TableviewDescriptor.fromClass(MngRevEntityWithId, 'mergedId', undefined, this.selectedRevisionEntity.entityName);\n\n AuditUtil.buildDescriptorForEntityRevision(desc, this.revModel, this.selectedRevisionEntity);\n\n desc.table.withColumnsResizable();\n desc.table.withCurrentColumnsReorderable();\n desc.table.withCurrentColumnsToggleable();\n\n return desc;\n }\n\n protected createTableviewDataProvider() {\n if (!this.revModel || !this.selectedRevisionEntity?.entityName) {\n throw new MngInternalError('No revision model or revision entity is provided for tableview.');\n }\n\n const entityName = this.selectedRevisionEntity.entityName;\n return TableviewDataProvider.fromClass(MngRevEntityWithId).withGetAll(qp =>\n this.selectedRevisionEntity?.entityName\n ? combineLatest([\n this.revisionsApiService.countRevisionsWithStateForEntityType(qp, entityName),\n this.revisionsApiService.listRevisionsWithStateForEntityType(qp, entityName)\n ]).pipe(\n map(([count, values]) => {\n const revEntityWithStateAndIdList = [];\n for (const revEntityWithState of values) {\n const revEntityWithStateAndId = new MngRevEntityWithId();\n revEntityWithStateAndId.mergedId = revEntityWithState.revEntity?.['rev'] + '_' + revEntityWithState.entityState?.['id'];\n revEntityWithStateAndId.revType = revEntityWithState.revType;\n revEntityWithStateAndId.revEntity = revEntityWithState.revEntity;\n revEntityWithStateAndId.entityState = revEntityWithState.entityState;\n revEntityWithStateAndId.entityClassName = revEntityWithState.entityClassName;\n revEntityWithStateAndIdList.push(revEntityWithStateAndId);\n }\n return MediusQueryResult.fromArray(revEntityWithStateAndIdList, count);\n })\n )\n : throwError(() => new MngInternalError('No revision entity is provided for list.'))\n );\n }\n\n public override createActionDescriptors(): Array<ActionDescriptorInst<MngRevEntityWithId>> {\n if (!this.revModel || !this.selectedRevisionEntity?.entityName) {\n throw new MngInternalError('No revision model or revision entity is provided for tableview.');\n }\n\n const entityName = this.selectedRevisionEntity.entityName;\n const detailsAction = ActionEditorDetailsDescriptor.create(this.descriptor.detailsEditor)\n .withFetchFunction(ctx => {\n if (!entityName) {\n return throwError(() => new MngInternalError('No revision entity is provided for details.'));\n }\n if (!ctx.parameters.itemId) {\n return throwError(() => new MngInternalError('No item id for revision entity details is provided.'));\n }\n const revId = ctx.parameters.itemId.toString().split('_')[0];\n const itemId = ctx.parameters.itemId.toString().split('_')[1];\n return this.revisionsApiService.fetchRevisionsWithStateForEntityType(entityName, revId, itemId);\n })\n .withEditorTitle('pages.entityRevisions.actions.details.editor.title');\n return [detailsAction];\n }\n}\n","<div class=\"card\">\n <div class=\"field mb-0\">\n <mng-dropdown\n id=\"revisionEntityDropdown\"\n [placeholder]=\"'pages.entityRevisions.dropdown.placeholder' | translate\"\n optionsLabelProperty=\"entityNameI18n\"\n [(ngModel)]=\"selectedRevisionEntity\"\n (valueChange)=\"onRevisionEntityChange()\"\n [dataProvider]=\"revisionEntitiesLookupProvider\"></mng-dropdown>\n @if (!selectedRevisionEntity) {\n <small class=\"block\">\n {{ 'pages.entityRevisions.dropdown.helpText' | translate }}\n </small>\n }\n </div>\n</div>\n@if (showTableview()) {\n <mng-tableview-route [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"></mng-tableview-route>\n}\n","/**\n * Medius quarkus sampler\n * Sampler OPENAPI definition\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@medius.si\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport {ClassAttributeDef, TypeName, TypeRegistry} from '@mediusinc/mng-commons';\n\nimport {MngEntityChangeDto} from './entityChange';\n\n@TypeName('MngRevEntityWithChangesDto')\nexport class MngRevEntityWithChangesDto {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n revEntity?: {[key: string]: any};\n entityNameChangesMap?: {[key: string]: Array<MngEntityChangeDto>};\n\n public static discriminator?: string;\n\n public static attributeTypeMap: Array<ClassAttributeDef> = [\n {\n name: 'revEntity',\n baseName: 'revEntity',\n type: '{ [key: string]: any; }'\n },\n {\n name: 'entityNameChangesMap',\n baseName: 'entityNameChangesMap',\n type: '{ [key: string]: Array<EntityChange>; }'\n }\n ];\n\n public static getAttributeTypeMap() {\n return MngRevEntityWithChangesDto.attributeTypeMap;\n }\n}\n\nTypeRegistry.get().registerType(MngRevEntityWithChangesDto);\n","import {IdType, TypeName} from '@mediusinc/mng-commons';\n\n@TypeName('MngRevEntity')\nexport class MngRevEntity {\n rev?: IdType; // usually a number\n revUsername?: string;\n timestamp?: Date;\n}\n","import {TypeName} from '@mediusinc/mng-commons';\n\nimport {MngEntityChangeDto} from '../api/models/entityChange';\nimport {MngRevEntity} from './rev-entity.model';\n\n@TypeName('MngRevEntityDetailed')\nexport class MngRevEntityDetailed extends MngRevEntity {\n revEntity?: {[key: string]: unknown};\n entityNameChangesMap?: {[key: string]: Array<MngEntityChangeDto>};\n}\n","import {AsyncPipe} from '@angular/common';\nimport {Component, DestroyRef, Injector, Input, OnInit, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {BehaviorSubject} from 'rxjs';\n\nimport {AMngFormlyCustomFieldComponent, MngInternalError, MngTableComponent, TableDescriptor, TablePaginationModeEnum} from '@mediusinc/mng-commons';\n\nimport {MngEntityChangeDto} from '../../api/models/entityChange';\nimport {MngGuiEntityModelDto} from '../../api/models/guiEntityModel';\nimport {MngRevisionTypeDto} from '../../api/models/revisionType';\nimport {MngAuditService} from '../../api/services/audit.service';\nimport {MngEntityRevisionChangeState} from '../../models/entity-revision-change-state.model';\nimport {MngEntityRevisionChanges} from '../../models/entity-revision-changes.model';\nimport {AuditUtil} from '../../utils/audit.util';\n\n@Component({\n standalone: true,\n selector: 'mng-entity-changes-field',\n imports: [MngTableComponent, AsyncPipe],\n styleUrls: ['entity-changes-field.component.scss'],\n templateUrl: 'entity-changes-field.component.html'\n})\nexport class EntityChangesFieldComponent extends AMngFormlyCustomFieldComponent implements OnInit {\n @Input() public injector?: Injector;\n\n private destroyRef = inject(DestroyRef);\n\n public entityChanges: MngEntityRevisionChanges[] = [];\n public modelFetched = new BehaviorSubject(false);\n\n private auditModel: MngGuiEntityModelDto[] = [];\n private fieldValue?: {[key: string]: Array<MngEntityChangeDto>};\n\n ngOnInit(): void {\n this.fieldValue = this.formControl.value as {[key: string]: Array<MngEntityChangeDto>};\n this.injector\n ?.get(MngAuditService, undefined, {optional: true})\n ?.auditModel$.pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: model => {\n this.auditModel = model;\n if (this.fieldValue) {\n this.entityChanges = AuditUtil.mapItemsToEntityChangesArray(this.fieldValue);\n this.modelFetched.next(true);\n }\n },\n error: err => {\n throw new MngInternalError('Error while trying to fetch audit model from audit service', {name: 'EntityChangesFieldComponentError', cause: err});\n }\n });\n }\n\n public createDescriptor(entityChanges: MngEntityRevisionChanges) {\n const changedFields: string[] = [];\n if (entityChanges.items && entityChanges.items[0].revType === MngRevisionTypeDto.Mod) {\n for (const key in entityChanges.items[0]) {\n if (entityChanges.items[0][key] !== entityChanges.items[1][key]) {\n changedFields.push(key);\n }\n }\n }\n\n const guiEntityModel = this.auditModel.filter(m => m.entityName === entityChanges.entityType)[0];\n\n const desc = TableDescriptor.fromClass(MngEntityRevisionChangeState, undefined, undefined, guiEntityModel.entityName).withClassName('py-2');\n if (guiEntityModel.entityName) {\n desc.withTitle(guiEntityModel.entityName);\n }\n\n desc.addColumn('revType').withTitle('MngEntityRevisionChangeState.properties.revType').asEnum(MngRevisionTypeDto);\n\n if (guiEntityModel.properties) {\n AuditUtil.addColumnsFromModel(desc, guiEntityModel.properties, undefined, false, false);\n }\n\n desc.withRowClassName(undefined, (_, item) => (item ? (item.color === 'green' ? 'audit-row-added' : 'audit-row-deleted') : ''));\n desc.columns.forEach(col => {\n if (changedFields.length > 0 && changedFields.some(val => col.property === val)) {\n col.withClassName('audit-cell');\n }\n });\n\n desc.withPaginationMode(TablePaginationModeEnum.Pagination);\n desc.withCurrentColumnsReorderable();\n desc.withCurrentColumnsToggleable();\n desc.withTrackProperty(`EntityChangeField_${entityChanges.entityType ?? 'default'}`);\n\n return desc;\n }\n}\n","@if (modelFetched | async) {\n <div>\n @for (ec of entityChanges; track ec) {\n <mng-table [items]=\"ec.items\" [descriptor]=\"createDescriptor(ec)\"></mng-table>\n }\n </div>\n} @else {\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem\"></i>\n </div>\n}\n","import {AsyncPipe, JsonPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, DestroyRef, Injector, OnInit, WritableSignal, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {RouterOutlet} from '@angular/router';\n\nimport {combineLatest} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {\n AMngTableviewRouteComponent,\n ActionDescriptorInst,\n ActionEditorDetailsDescriptor,\n EditorDescriptor,\n EditorDescriptorInst,\n ITableviewDataProvider,\n MediusQueryResult,\n MngTableviewComponent,\n MngTableviewRouteComponent,\n ModelDescriptor,\n TableFilterDisplayEnum,\n TableviewDataProvider,\n TableviewDescriptor,\n TableviewDescriptorInst,\n TableviewEditorTypeEnum,\n itemIdToDefined\n} from '@mediusinc/mng-commons';\n\nimport {MngGuiEntityModelDto} from '../../../api/models/guiEntityModel';\nimport {MngRevEntityWithChangesDto} from '../../../api/models/revEntityWithChangesDto';\nimport {MngAuditRevisionsApiService} from '../../../api/services/audit-revisions-api.service';\nimport {MngAuditService} from '../../../api/services/audit.service';\nimport {MngRevEntityDetailed} from '../../../models/rev-entity-detailed.model';\nimport {MngRevEntity} from '../../../models/rev-entity.model';\nimport {AuditUtil} from '../../../utils/audit.util';\nimport {EntityChangesFieldComponent} from '../../entity-changes-field/entity-changes-field.component';\n\n@Component({\n standalone: true,\n selector: 'mng-audit-revisions-page',\n templateUrl: './audit-revisions.page.component.html',\n imports: [MngTableviewComponent, AsyncPipe, MngTableviewComponent, RouterOutlet, JsonPipe, MngTableviewRouteComponent],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngAuditRevisionsPageComponent extends AMngTableviewRouteComponent<MngRevEntity> implements OnInit {\n private destroyRef = inject(DestroyRef);\n private injector = inject(Injector);\n private auditService = inject(MngAuditService);\n private revisisonsApiService = inject(MngAuditRevisionsApiService);\n\n private revModel?: MngGuiEntityModelDto;\n public showTableview: WritableSignal<boolean> = signal(false);\n\n override ngOnInit(): void {\n this.auditService.revModel$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n next: model => {\n this.revModel = model;\n super.ngOnInit();\n setTimeout(() => this.showTableview.set(true));\n }\n });\n }\n\n protected createTableviewDescriptor(): TableviewDescriptorInst<MngRevEntity> {\n if (this.revModel) {\n const idProperty = this.revModel.properties?.filter(prop => prop.isId).map(prop => prop.resolvedPropertyName)[0];\n\n const model = ModelDescriptor.fromClass(MngRevEntity);\n if (this.revModel.entityName) model.withI18nBase(this.revModel.entityName);\n if (idProperty) model.withIdPropertyUnsafe(idProperty);\n\n const desc = TableviewDescriptor.fromModel(model);\n\n const detailsDescriptor = EditorDescriptor.fromClass(MngRevEntityWithChangesDto, undefined, undefined, undefined, TableviewEditorTypeEnum.Details);\n detailsDescriptor.model.withIdPropertyUnsafe('revEntity.' + idProperty);\n\n if (this.revModel.properties) {\n AuditUtil.addColumnsFromModel(desc.table, this.revModel.properties);\n AuditUtil.addFieldsFromModel<MngRevEntityWithChangesDto>(detailsDescriptor, this.revModel.properties);\n }\n\n detailsDescriptor\n .addField('entityNameChangesMap')\n .asCustomComponent(EntityChangesFieldComponent, {\n fieldWrappers: ['field-no-label'],\n inputs: {injector: this.injector}\n })\n .withDisabled();\n\n desc.withDetailsDescriptor(detailsDescriptor as EditorDescriptorInst<MngRevEntity>); // MngRevEntity is extended by MngRevEntityWithChangesDto, so no real harm here\n desc.table.withFilterDisplay(TableFilterDisplayEnum.Row);\n\n return desc;\n }\n return TableviewDescriptor.fromClass(MngRevEntity);\n }\n\n protected createTableviewDataProvider(): ITableviewDataProvider<MngRevEntity> {\n if (this.revModel) {\n return TableviewDataProvider.fromClass(MngRevEntity).withGetAll(qp =>\n combineLatest([this.revisisonsApiService.getRevisionCount(qp), this.revisisonsApiService.getRevisionList(qp)]).pipe(\n map(([count, values]) => MediusQueryResult.fromArray(values, count))\n )\n );\n }\n return TableviewDataProvider.fromClass(MngRevEntity);\n }\n\n protected override createActionDescriptors(): Array<ActionDescriptorInst<MngRevEntity>> {\n const detailsAction = ActionEditorDetailsDescriptor.create(this.descriptor.detailsEditor).withFetchFunction(ctx =>\n this.revisisonsApiService.getAllChangesForRevision(itemIdToDefined(ctx.parameters.itemId)).pipe(\n map(item => {\n const revEntityWithChanges = new MngRevEntityDetailed();\n revEntityWithChanges.rev = ctx.parameters.itemId;\n revEntityWithChanges.revEntity = item.revEntity;\n revEntityWithChanges.entityNameChangesMap = item.entityNameChangesMap;\n return revEntityWithChanges;\n })\n )\n );\n\n return [detailsAction];\n }\n}\n","@if (showTableview()) {\n <mng-tableview-route [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"></mng-tableview-route>\n}\n","import {Routes} from '@angular/router';\n\nimport {MngMenuItem, RouteBuilder, RoutesBuilder, TableviewRouteBuilder} from '@mediusinc/mng-commons';\n\nimport {MngAuditRevisionsApiService} from './api/services/audit-revisions-api.service';\nimport {MngAuditService} from './api/services/audit.service';\nimport {MngAuditPageComponent} from './components/pages/audit/audit.page.component';\nimport {MngAuditEntityRevisionsPageComponent} from './components/pages/entity-revisions/audit-entity-revisions.page.component';\nimport {MngAuditRevisionsPageComponent} from './components/pages/revisions/audit-revisions.page.component';\nimport {MngAuditModuleConfig} from './models/config.model';\nimport {MNG_AUDIT_MODULE_CONFIG_IT} from './service/module-config.token';\n\n/**\n * Provides routes for the mng-commons-audit functionalities.\n * @param config Module config for audit section.\n * @param routeConfig Optionally provide route configs.\n */\nexport function provideMngAuditRoutes(\n config: MngAuditModuleConfig,\n routeConfig?: {\n defaultRedirect?: string;\n preRevisionRoutes?: RouteBuilder[];\n postRevisionRoutes?: RouteBuilder[];\n revisionsMenuItem?: MngMenuItem;\n entityRevisionsMenuItem?: MngMenuItem;\n }\n): Routes {\n const routeBuilder = RouteBuilder.create('', config.rootPageComponent ?? MngAuditPageComponent)\n .withProvider(MngAuditService)\n .withProvider(MngAuditService)\n .withProvider(MngAuditRevisionsApiService)\n .withProvider({\n provide: MNG_AUDIT_MODULE_CONFIG_IT,\n useValue: config\n })\n .addChildBuilder(RouteBuilder.createRedirect('', routeConfig?.defaultRedirect ?? 'revisions', 'full'));\n\n if (routeConfig?.preRevisionRoutes?.length) {\n routeConfig.preRevisionRoutes.forEach(r => routeBuilder.addChildBuilder(r));\n }\n\n const revisionsRouteBuilder = TableviewRouteBuilder.fromComponent('revisions', config.revisionsPageComponent ?? MngAuditRevisionsPageComponent)\n .withTitle('pages.revisions.title')\n .withAdd(false)\n .withDelete(false)\n .withEdit(false);\n if (routeConfig?.revisionsMenuItem) {\n revisionsRouteBuilder.withMngMenuItem(routeConfig.revisionsMenuItem);\n } else {\n revisionsRouteBuilder.withMenuItem('pi pi-book', 'pages.revisions.title');\n }\n\n const entityRevisionsRouteBuilder = RouteBuilder.create('entity-revisions', config.entityRevisionsPageComponent ?? MngAuditEntityRevisionsPageComponent).withTitle(\n 'pages.entityRevisions.title'\n );\n if (routeConfig?.entityRevisionsMenuItem) {\n entityRevisionsRouteBuilder.withMngMenuItem(routeConfig.entityRevisionsMenuItem);\n } else {\n entityRevisionsRouteBuilder.withMenuItem('pi pi-building', 'pages.entityRevisions.title');\n }\n\n routeBuilder\n .addChildBuilder(revisionsRouteBuilder)\n .addChildBuilder(entityRevisionsRouteBuilder)\n .addChildBuilder(\n TableviewRouteBuilder.fromComponent('entity-revisions/:entityClass', config.entityRevisionsPageComponent ?? MngAuditEntityRevisionsPageComponent).withTitle(\n 'pages.entityRevisions.title'\n )\n );\n\n if (routeConfig?.postRevisionRoutes?.length) {\n routeConfig.postRevisionRoutes.forEach(r => routeBuilder.addChildBuilder(r));\n }\n\n return RoutesBuilder.create().addRouteBuilder(routeBuilder).build();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mediusinc-mng-commons-audit.mjs","sources":["../../src/lib/api/models/revEntityWithStateDto.ts","../../src/lib/models/revEntityWithId.model.ts","../../src/lib/service/module-config.token.ts","../../src/lib/api/models/guiPropertyType.ts","../../src/lib/api/models/revisionType.ts","../../src/lib/models/entity-revision-change-state.model.ts","../../src/lib/models/entity-revision-changes.model.ts","../../src/lib/models/new-filter-match-type.model.ts","../../src/lib/utils/audit.util.ts","../../src/lib/api/services/audit-revisions-api.service.ts","../../src/lib/api/models/guiEntityModel.ts","../../src/lib/api/services/audit.service.ts","../../src/lib/components/pages/audit/audit.page.component.ts","../../src/lib/components/pages/audit/audit.page.component.html","../../src/lib/models/guiEntityModelWithI18n.model.ts","../../src/lib/components/pages/entity-revisions/audit-entity-revisions.page.component.ts","../../src/lib/components/pages/entity-revisions/audit-entity-revisions.page.component.html","../../src/lib/api/models/revEntityWithChangesDto.ts","../../src/lib/models/rev-entity.model.ts","../../src/lib/models/rev-entity-detailed.model.ts","../../src/lib/components/entity-changes-field/entity-changes-field.component.ts","../../src/lib/components/entity-changes-field/entity-changes-field.component.html","../../src/lib/components/pages/revisions/audit-revisions.page.component.ts","../../src/lib/components/pages/revisions/audit-revisions.page.component.html","../../src/lib/audit.routes.ts","../../src/mediusinc-mng-commons-audit.ts"],"sourcesContent":["/**\n * Medius quarkus sampler\n * Sampler OPENAPI definition\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@medius.si\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport {ClassAttributeDef, TypeName, TypeRegistry} from '@mediusinc/mng-commons';\n\nimport {MngRevisionTypeDto} from './revisionType';\n\n@TypeName('MngRevEntityWithStateDto')\nexport class MngRevEntityWithStateDto {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n revEntity?: {[key: string]: any};\n revType?: MngRevisionTypeDto;\n entityClassName?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entityState?: {[key: string]: any};\n\n public static discriminator?: string;\n\n public static attributeTypeMap: Array<ClassAttributeDef> = [\n {\n name: 'revEntity',\n baseName: 'revEntity',\n type: '{ [key: string]: any; }'\n },\n {\n name: 'revType',\n baseName: 'revType',\n type: 'RevisionType'\n },\n {\n name: 'entityClassName',\n baseName: 'entityClassName',\n type: 'string'\n },\n {\n name: 'entityState',\n baseName: 'entityState',\n type: '{ [key: string]: any; }'\n }\n ];\n\n public static getAttributeTypeMap() {\n return MngRevEntityWithStateDto.attributeTypeMap;\n }\n}\n\nTypeRegistry.get().registerType(MngRevEntityWithStateDto);\n","import {TypeName, TypeRegistry} from '@mediusinc/mng-commons';\n\nimport {MngRevEntityWithStateDto} from '../api/models/revEntityWithStateDto';\n\n@TypeName('MngRevEntityWithId')\nexport class MngRevEntityWithId extends MngRevEntityWithStateDto {\n mergedId?: string;\n}\n\nTypeRegistry.get().registerType(MngRevEntityWithId);\n","import {InjectionToken} from '@angular/core';\n\nimport {MngAuditModuleConfig} from '../models/config.model';\n\nexport const MNG_AUDIT_MODULE_CONFIG_IT = new InjectionToken<MngAuditModuleConfig>('MngAuditModuleConfig');\n","/**\n * Medius quarkus sampler\n * Sampler OPENAPI definition\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@medius.si\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport {TypeRegistry} from '@mediusinc/mng-commons';\n\nexport enum MngGuiPropertyTypeDto {\n LocalDate = 'LOCAL_DATE',\n OffsetDateTime = 'OFFSET_DATE_TIME',\n String = 'STRING',\n Number = 'NUMBER',\n Boolean = 'BOOLEAN',\n Enum = 'ENUM',\n Wildcard = 'WILDCARD'\n}\n\nTypeRegistry.get().registerEnum(MngGuiPropertyTypeDto, 'MngGuiPropertyTypeDto');\n","/**\n * Medius quarkus sampler\n * Sampler OPENAPI definition\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@medius.si\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport {TypeRegistry} from '@mediusinc/mng-commons';\n\nexport enum MngRevisionTypeDto {\n Add = 'ADD',\n Mod = 'MOD',\n Del = 'DEL'\n}\n\nTypeRegistry.get().registerEnum(MngRevisionTypeDto, 'MngRevisionTypeDto');\n","import {TypeName} from '@mediusinc/mng-commons';\n\nimport {MngRevisionTypeDto} from '../api/models/revisionType';\n\n@TypeName('MngEntityRevisionChangeState')\nexport class MngEntityRevisionChangeState {\n revType?: MngRevisionTypeDto;\n color?: 'green' | 'red';\n [key: string]: unknown;\n}\n","import {TypeName} from '@mediusinc/mng-commons';\n\nimport {MngEntityRevisionChangeState} from './entity-revision-change-state.model';\n\n@TypeName('MngEntityChanges')\nexport class MngEntityRevisionChanges {\n entityType?: string;\n items?: MngEntityRevisionChangeState[];\n}\n","export enum NewMediusFilterMatchType {\n Equals = 'eq',\n NotEquals = 'ne',\n Between = 'bt',\n Contains = 'cn',\n NotContains = 'nc',\n StartsWith = 'sw',\n EndsWith = 'ew',\n In = 'in',\n NotIn = 'ni',\n LessThan = 'lt',\n LessThanOrEqualTo = 'le',\n GreaterThan = 'gt',\n GreaterThanOrEqualTo = 'ge',\n Exists = 'ex',\n DoesNotExist = 'nx'\n}\n","import {of} from 'rxjs';\n\nimport {\n ColumnDescriptor,\n EditorDescriptorInst,\n FilterLookupDescriptor,\n MediusFilterMatchType,\n MediusQueryParam,\n TableDescriptorInst,\n TableviewDescriptorInst,\n TypeRegistry\n} from '@mediusinc/mng-commons';\n\nimport {MngEntityChangeDto} from '../api/models/entityChange';\nimport {MngGuiEntityModelDto} from '../api/models/guiEntityModel';\nimport {MngGuiPropertyModelDto} from '../api/models/guiPropertyModel';\nimport {MngGuiPropertyTypeDto} from '../api/models/guiPropertyType';\nimport {MngRevEntityWithStateDto} from '../api/models/revEntityWithStateDto';\nimport {MngRevisionTypeDto} from '../api/models/revisionType';\nimport {MngEntityRevisionChangeState} from '../models/entity-revision-change-state.model';\nimport {MngEntityRevisionChanges} from '../models/entity-revision-changes.model';\nimport {NewMediusFilterMatchType} from '../models/new-filter-match-type.model';\n\nexport class AuditUtil {\n private static _dateRegex = /\\d{4}-[01]\\d-[0-3]\\d/;\n\n public static addColumnsFromModel<T>(\n descriptor: TableDescriptorInst<T>,\n properties: MngGuiPropertyModelDto[],\n modelType: 'revEntity' | 'entityState' | undefined = undefined,\n addFilters = true,\n addSorts = true\n ): TableDescriptorInst<T> {\n for (const property of properties) {\n if (!property.resolvedPropertyName) {\n continue;\n }\n\n const isEnum = property.propertyType === MngGuiPropertyTypeDto.Enum;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let column: ColumnDescriptor<any, T> | null = null;\n if (isEnum) {\n if (!property.possibleEnumValues) {\n continue;\n }\n\n const enumType = AuditUtil.findEnumType(property);\n if (enumType) {\n column = descriptor.addColumnUnsafe(property.resolvedPropertyName).asEnum(enumType);\n if (addFilters) {\n column.withFilterLookupEnum(property.possibleEnumValues);\n }\n } else {\n column = descriptor.addColumnUnsafe(property.resolvedPropertyName);\n if (addFilters) {\n (column?.withFilterLookup() as FilterLookupDescriptor<string>).withLookup(() => of(property.possibleEnumValues ?? []));\n }\n }\n } else if (property.propertyType === MngGuiPropertyTypeDto.Number) {\n column = descriptor.addColumnUnsafe(property.resolvedPropertyName).asNumber();\n } else if (property.propertyType === MngGuiPropertyTypeDto.Boolean) {\n column = descriptor.addColumnUnsafe(property.resolvedPropertyName).asBoolean();\n } else if (property.propertyType === MngGuiPropertyTypeDto.LocalDate) {\n column = descriptor.addColumnUnsafe(property.resolvedPropertyName).asDate('dd. MM yyyy');\n } else if (property.propertyType === MngGuiPropertyTypeDto.OffsetDateTime) {\n column = descriptor.addColumnUnsafe(property.resolvedPropertyName).asDate('dd. MM yyyy HH:mm');\n } else {\n // string / wildcard\n column = descriptor.addColumnUnsafe(property.resolvedPropertyName).withTitle(AuditUtil.getPropertyTitleKey(property, modelType));\n }\n\n if (modelType) {\n column.withGetter((value, item) => item?.[modelType as keyof object]?.[property.resolvedPropertyName as keyof object]);\n }\n\n column.withTitle(AuditUtil.getPropertyTitleKey(property, modelType));\n\n if (!isEnum && addFilters) {\n column?.withFilter();\n }\n if (addSorts) {\n column?.withSort();\n }\n }\n return descriptor;\n }\n\n public static getPropertyTitleKey(property: MngGuiPropertyModelDto, modelType: 'revEntity' | 'entityState' | undefined = undefined) {\n if (modelType === 'revEntity') {\n return 'MngRevEntity.properties.' + property.resolvedPropertyName;\n }\n return property.resolvedPropertyName ?? '';\n }\n\n public static addFieldsFromModel<T>(\n descriptor: EditorDescriptorInst<T>,\n properties: MngGuiPropertyModelDto[],\n modelType: 'revEntity' | 'entityState' = 'revEntity'\n ): EditorDescriptorInst<T> {\n for (const property of properties) {\n if (!property.resolvedPropertyName) {\n continue;\n }\n\n const fieldPrepend = `${modelType}.`;\n\n if (property.propertyType === MngGuiPropertyTypeDto.Enum) {\n const enumType = AuditUtil.findEnumType(property);\n if (enumType) {\n if (!property.possibleEnumValues) {\n continue;\n }\n\n descriptor.addFieldLookupEnumUnsafe(fieldPrepend + property.resolvedPropertyName, enumType, property.possibleEnumValues).withDisabled();\n } else {\n descriptor.addFieldUnsafe(fieldPrepend + property.resolvedPropertyName).withLabel(AuditUtil.getPropertyTitleKey(property, modelType));\n }\n } else if (property.propertyType === MngGuiPropertyTypeDto.Number) {\n descriptor\n .addFieldUnsafe(fieldPrepend + property.resolvedPropertyName)\n .withLabel(AuditUtil.getPropertyTitleKey(property, modelType))\n .asNumber()\n .withDisabled();\n } else if (property.propertyType === MngGuiPropertyTypeDto.Boolean) {\n descriptor\n .addFieldUnsafe(fieldPrepend + property.resolvedPropertyName)\n .withLabel(AuditUtil.getPropertyTitleKey(property, modelType))\n .withDisabled();\n } else if (property.propertyType === MngGuiPropertyTypeDto.LocalDate) {\n descriptor\n .addFieldUnsafe(fieldPrepend + property.resolvedPropertyName)\n .withLabel(AuditUtil.getPropertyTitleKey(property, modelType))\n .asDatePicker({format: 'dd. MMM yyyy'})\n .withDisabled();\n } else if (property.propertyType === MngGuiPropertyTypeDto.OffsetDateTime) {\n descriptor\n .addFieldUnsafe(fieldPrepend + property.resolvedPropertyName)\n .withLabel(AuditUtil.getPropertyTitleKey(property, modelType))\n .asDatePicker({\n format: 'dd. MM yy',\n showTime: true,\n showSeconds: false\n })\n .withDisabled();\n } else {\n // string / wildcard\n descriptor\n .addFieldUnsafe(fieldPrepend + property.resolvedPropertyName)\n .withLabel(AuditUtil.getPropertyTitleKey(property, modelType))\n .withDisabled();\n }\n }\n return descriptor;\n }\n\n public static buildDescriptorForEntityRevision(\n descriptor: TableviewDescriptorInst<MngRevEntityWithStateDto>,\n revModel: MngGuiEntityModelDto,\n entityModel: MngGuiEntityModelDto\n ): TableviewDescriptorInst<MngRevEntityWithStateDto> {\n descriptor.addColumn('revType').withTitle('MngEntityRevisionChangeState.properties.revType').asEnum(MngRevisionTypeDto).withFilter();\n descriptor.addFieldLookupEnum('revType', MngRevisionTypeDto).withLabel('MngEntityRevisionChangeState.properties.revType');\n\n if (revModel.properties) {\n AuditUtil.addColumnsFromModel(descriptor.table, revModel.properties, 'revEntity');\n AuditUtil.addFieldsFromModel(descriptor.detailsEditor, revModel.properties, 'revEntity');\n }\n if (entityModel.properties) {\n AuditUtil.addColumnsFromModel(descriptor.table, entityModel.properties, 'entityState');\n AuditUtil.addFieldsFromModel(descriptor.detailsEditor, entityModel.properties, 'entityState');\n }\n\n return descriptor;\n }\n\n public static findEnumType(property: MngGuiPropertyModelDto) {\n if (!property.enumClassSimpleName) {\n return undefined;\n }\n\n let enumType = TypeRegistry.get().findEnum(property.enumClassSimpleName);\n if (!enumType) {\n enumType = TypeRegistry.get().findEnum(property.enumClassSimpleName + 'Dto');\n }\n return enumType;\n }\n\n public static extractPropertyName(fullPropertyName: string | undefined): string | undefined {\n if (fullPropertyName?.includes('entityState.')) {\n return fullPropertyName.replace('entityState.', '');\n } else if (fullPropertyName?.includes('revEntity.')) {\n return fullPropertyName?.replace('revEntity.', '');\n }\n return fullPropertyName;\n }\n\n public static appendMediusQueryParamsToUrl(queryParams: MediusQueryParam): string {\n let url = `?offset=${queryParams.itemsOffset}&limit=${queryParams.itemsPerPage}`;\n if (queryParams.sortProperty && queryParams.sortProperty.length > 0) {\n url += '&sort=';\n const sortingQPs = [];\n for (let i = 0; i < queryParams.sortProperty.length; i++) {\n sortingQPs.push(`${queryParams.sortAsc?.[i] ?? true ? 'asc' : 'desc'}:${this.extractPropertyName(queryParams.sortProperty[i])}`);\n }\n url += sortingQPs.join(',');\n }\n\n if (queryParams.filterParams && queryParams.filterParams.length > 0) {\n const filterQPs = [];\n for (const mfp of queryParams.filterParams) {\n switch (mfp.filterMatchType) {\n case MediusFilterMatchType.Equals: {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.Equals}:${mfp.filterValue}`);\n break;\n }\n case MediusFilterMatchType.NotEquals: {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.NotEquals}:${mfp.filterValue}`);\n break;\n }\n case MediusFilterMatchType.FromTo: {\n if (this._dateRegex.test(mfp.filterValue)) {\n filterQPs.push(\n `${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.Between}:${new Date(mfp.filterValue).toISOString()},${new Date(\n mfp.filterValueTo\n ).toISOString()}`\n );\n } else {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.Between}:${mfp.filterValue},${mfp.filterValueTo}`);\n }\n break;\n }\n case MediusFilterMatchType.Contains: {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.Contains}:${mfp.filterValue}`);\n break;\n }\n case MediusFilterMatchType.StartsWith: {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.StartsWith}:${mfp.filterValue}`);\n break;\n }\n case MediusFilterMatchType.EndsWith: {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.EndsWith}:${mfp.filterValue}`);\n break;\n }\n case MediusFilterMatchType.In: {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.In}:${mfp.filterValue}`);\n break;\n }\n case MediusFilterMatchType.NotIn: {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.NotIn}:${mfp.filterValue}`);\n break;\n }\n case MediusFilterMatchType.SmallerThan: {\n if (this._dateRegex.test(mfp.filterValue)) {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.LessThan}:${new Date(mfp.filterValue).toISOString()}`);\n } else {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.LessThan}:${mfp.filterValue}`);\n }\n break;\n }\n case MediusFilterMatchType.GreaterThan: {\n if (this._dateRegex.test(mfp.filterValue)) {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.GreaterThan}:${new Date(mfp.filterValue).toISOString()}`);\n } else {\n filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.GreaterThan}:${mfp.filterValue}`);\n }\n break;\n }\n }\n }\n url += '&';\n url += filterQPs.join('&');\n }\n return url;\n }\n\n public static mapItemsToEntityChangesArray(fieldValue: {[key: string]: Array<MngEntityChangeDto>}): Array<MngEntityRevisionChanges> {\n const entityChanges: MngEntityRevisionChanges[] = [];\n for (const key of Object.keys(fieldValue)) {\n const ec = new MngEntityRevisionChanges();\n ec.entityType = key;\n ec.items = [];\n for (const change of fieldValue[key]) {\n if (change.revType === MngRevisionTypeDto.Add && change.entityNewState) {\n const item = new MngEntityRevisionChangeState();\n item.revType = change.revType;\n item.color = 'green';\n Object.entries(change.entityNewState).forEach(([key, value]) => (item[key] = value));\n ec.items.push(item);\n } else if (change.revType === MngRevisionTypeDto.Del && change.entityOldState) {\n const item = new MngEntityRevisionChangeState();\n item.revType = change.revType;\n item.color = 'red';\n Object.entries(change.entityOldState).forEach(([key, value]) => (item[key] = value));\n ec.items.push(item);\n } else if (change.revType === MngRevisionTypeDto.Mod && change.entityOldState && change.entityNewState) {\n const itemOld = new MngEntityRevisionChangeState();\n itemOld.revType = change.revType;\n itemOld.color = 'red';\n Object.entries(change.entityOldState).forEach(([key, value]) => (itemOld[key] = value));\n\n const itemNew = new MngEntityRevisionChangeState();\n itemNew.revType = change.revType;\n itemNew.color = 'green';\n Object.entries(change.entityNewState).forEach(([key, value]) => (itemNew[key] = value));\n\n ec.items.push(itemOld);\n ec.items.push(itemNew);\n }\n }\n entityChanges.push(ec);\n }\n return entityChanges;\n }\n}\n","import {Injectable, inject} from '@angular/core';\n\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {AMngBaseApiService, IdType, MediusQueryParam, MngConfigurationService, MngInternalError} from '@mediusinc/mng-commons';\n\nimport {MngRevEntityWithId} from '../../models/revEntityWithId.model';\nimport {MNG_AUDIT_MODULE_CONFIG_IT} from '../../service/module-config.token';\nimport {AuditUtil} from '../../utils/audit.util';\nimport {GetAllResponse} from '../models/get-all-response.model';\nimport {MngRevEntityWithChangesDto} from '../models/revEntityWithChangesDto';\nimport {MngRevEntityWithStateDto} from '../models/revEntityWithStateDto';\n\n@Injectable()\nexport class MngAuditRevisionsApiService extends AMngBaseApiService {\n protected readonly configService: MngConfigurationService;\n\n protected readonly moduleConfig = inject(MNG_AUDIT_MODULE_CONFIG_IT);\n\n constructor() {\n super();\n this.configService = MngConfigurationService.get();\n }\n\n protected getServiceBasePath(): string | null {\n return this.moduleConfig.apiServiceBasePath ?? '';\n }\n\n protected getBasePath(): string {\n return `${this.configService.getConfigValue(this.moduleConfig.apiBasePathConfigKey)}`;\n }\n\n public getRevisionList(queryParams: MediusQueryParam): Observable<GetAllResponse<{[key: string]: unknown}>> {\n return this.http.get<GetAllResponse<{[key: string]: unknown}>>(this.getUrl(AuditUtil.appendMediusQueryParamsToUrl(queryParams)));\n }\n\n public getAllChangesForRevision(revId: IdType): Observable<MngRevEntityWithChangesDto> {\n return this.http.get(this.getUrl(`/changes/${revId}`));\n }\n\n public listRevisionsWithStateForEntityType(queryParams: MediusQueryParam, entityType: string): Observable<GetAllResponse<MngRevEntityWithStateDto>> {\n return this.http.get<GetAllResponse<unknown>>(this.getUrl(`/states/${entityType}`, AuditUtil.appendMediusQueryParamsToUrl(queryParams))).pipe(\n map(\n res =>\n <GetAllResponse<MngRevEntityWithStateDto>>{\n data: this.deserializeClassArray(res.data, MngRevEntityWithStateDto),\n totalCount: res.totalCount\n }\n )\n );\n }\n\n public fetchRevisionsWithStateForEntityType(entityType: string, revId: IdType, itemId: IdType): Observable<MngRevEntityWithId> {\n return this.http.get(this.getUrl(`/states/${entityType}?rev=eq:${revId}&id=eq:${itemId}`)).pipe(\n map(response =>\n this.deserializeClassArray(response, MngRevEntityWithId).map(i => {\n i.mergedId = i.revEntity?.['rev'] + '_' + i.entityState?.['id'];\n return i;\n })\n ),\n map(items => {\n if (items.length > 0) {\n return items[0];\n }\n throw new MngInternalError(`Entity revision ${revId} for ${entityType} with id ${itemId} was not found`);\n })\n );\n }\n}\n","/**\n * Medius quarkus sampler\n * Sampler OPENAPI definition\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@medius.si\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport {ClassAttributeDef, TypeName, TypeRegistry} from '@mediusinc/mng-commons';\n\nimport {MngGuiPropertyModelDto} from './guiPropertyModel';\n\n@TypeName('MngGuiEntityModelDto')\nexport class MngGuiEntityModelDto {\n entityName?: string;\n properties?: Array<MngGuiPropertyModelDto>;\n\n public static discriminator?: string;\n\n public static attributeTypeMap: Array<ClassAttributeDef> = [\n {\n name: 'entityName',\n baseName: 'entityName',\n type: 'string'\n },\n {\n name: 'properties',\n baseName: 'properties',\n type: 'Array<GuiPropertyModel>'\n }\n ];\n\n public static getAttributeTypeMap() {\n return MngGuiEntityModelDto.attributeTypeMap;\n }\n}\n\nTypeRegistry.get().registerType(MngGuiEntityModelDto);\n","import {Injectable, inject} from '@angular/core';\n\nimport {Observable, shareReplay} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {AMngBaseApiService, MngConfigurationService} from '@mediusinc/mng-commons';\n\nimport {MNG_AUDIT_MODULE_CONFIG_IT} from '../../service/module-config.token';\nimport {MngGuiEntityModelDto} from '../models/guiEntityModel';\n\n@Injectable()\nexport class MngAuditService extends AMngBaseApiService {\n private readonly CACHE_SIZE = 1;\n private readonly configService: MngConfigurationService;\n private readonly moduleConfig = inject(MNG_AUDIT_MODULE_CONFIG_IT);\n\n private revModelObs?: Observable<MngGuiEntityModelDto>;\n private auditModelObs?: Observable<Array<MngGuiEntityModelDto>>;\n\n constructor() {\n super();\n this.configService = MngConfigurationService.get();\n }\n\n protected getServiceBasePath(): string | null {\n return this.moduleConfig.apiServiceBasePath ?? '';\n }\n\n protected getBasePath(): string {\n return `${this.configService.getConfigValue(this.moduleConfig.apiBasePathConfigKey)}`;\n }\n\n public get revModel$() {\n if (!this.revModelObs) {\n this.revModelObs = this.requestRevModel().pipe(shareReplay(this.CACHE_SIZE));\n }\n return this.revModelObs;\n }\n\n public get auditModel$() {\n if (!this.auditModelObs) {\n this.auditModelObs = this.requestAuditModel().pipe(shareReplay(this.CACHE_SIZE));\n }\n return this.auditModelObs;\n }\n\n private requestRevModel(): Observable<MngGuiEntityModelDto> {\n return this.http.get(this.getUrl('/rev-model'));\n }\n\n private requestAuditModel(): Observable<Array<MngGuiEntityModelDto>> {\n return this.http.get(this.getUrl('/audit-models')).pipe(map(response => this.deserializeClassArray(response, MngGuiEntityModelDto)));\n }\n}\n","import {Component} from '@angular/core';\nimport {RouterOutlet} from '@angular/router';\n\n@Component({\n standalone: true,\n selector: 'mng-audit-page',\n imports: [RouterOutlet],\n templateUrl: 'audit.page.component.html'\n})\nexport class MngAuditPageComponent {}\n","<router-outlet></router-outlet>\n","import {TypeName} from '@mediusinc/mng-commons';\n\nimport {MngGuiEntityModelDto} from '../api/models/guiEntityModel';\n\n@TypeName('MngGuiEntityModelWithI18n')\nexport class MngGuiEntityModelWithI18n extends MngGuiEntityModelDto {\n entityNameI18n?: string;\n}\n","import {AsyncPipe} from '@angular/common';\nimport {Component, DestroyRef, OnInit, WritableSignal, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\nimport {Router} from '@angular/router';\n\nimport {FormlyModule} from '@ngx-formly/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {combineLatest, throwError} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {\n AMngTableviewRouteComponent,\n ActionDescriptorInst,\n ActionEditorDetailsDescriptor,\n LookupDataProvider,\n LookupDataProviderInst,\n MediusQueryResult,\n MngDropdownComponent,\n MngInternalError,\n MngTableviewRouteComponent,\n TableviewDataProvider,\n TableviewDescriptor\n} from '@mediusinc/mng-commons';\n\nimport {MngGuiEntityModelDto} from '../../../api/models/guiEntityModel';\nimport {MngAuditRevisionsApiService} from '../../../api/services/audit-revisions-api.service';\nimport {MngAuditService} from '../../../api/services/audit.service';\nimport {MngGuiEntityModelWithI18n} from '../../../models/guiEntityModelWithI18n.model';\nimport {MngRevEntityWithId} from '../../../models/revEntityWithId.model';\nimport {AuditUtil} from '../../../utils/audit.util';\n\n@Component({\n standalone: true,\n selector: 'mng-audit-entity-revisions-page',\n imports: [MngDropdownComponent, MngTableviewRouteComponent, FormsModule, AsyncPipe, TranslateModule, FormlyModule],\n templateUrl: 'audit-entity-revisions.page.component.html'\n})\nexport class MngAuditEntityRevisionsPageComponent extends AMngTableviewRouteComponent<MngRevEntityWithId> implements OnInit {\n private destroyRef = inject(DestroyRef);\n private auditService = inject(MngAuditService);\n private revisionsApiService = inject(MngAuditRevisionsApiService);\n\n public revModel?: MngGuiEntityModelDto;\n public selectedRevisionEntity?: MngGuiEntityModelDto;\n public revisionEntitiesLookupProvider?: LookupDataProviderInst<MngGuiEntityModelWithI18n>;\n\n public showTableview: WritableSignal<boolean> = signal(false);\n\n constructor(private router: Router) {\n super();\n this.revisionEntitiesLookupProvider = LookupDataProvider.fromClass(MngGuiEntityModelWithI18n).withLookup(() =>\n this.auditService.auditModel$.pipe(\n map(model => {\n const modelI18n = model as MngGuiEntityModelWithI18n[];\n modelI18n.sort((m1, m2) => {\n if (m1.entityName && m2.entityName) {\n return m1.entityName.localeCompare(m2.entityName);\n } else if (m1.entityName && !m2.entityName) {\n return 1;\n } else {\n return -1;\n }\n });\n modelI18n.forEach(item => {\n const translatedEntityName = this.translateService.instant('AuditEntities.' + item.entityName);\n item.entityNameI18n = translatedEntityName.includes('AuditEntities.') ? item.entityName : translatedEntityName;\n });\n return modelI18n;\n })\n )\n );\n }\n\n override ngOnInit() {\n this.route.paramMap.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(params => {\n const entityClass = params.get('entityClass');\n if (entityClass) {\n combineLatest([this.auditService.auditModel$, this.auditService.revModel$]).subscribe(([entities, revModel]) => {\n this.revModel = revModel;\n\n for (const e of entities) {\n if (e.entityName === entityClass) {\n this.selectedRevisionEntity = e;\n super.ngOnInit();\n setTimeout(() => this.showTableview.set(true));\n }\n }\n });\n }\n });\n }\n\n public onRevisionEntityChange() {\n this.showTableview.set(false);\n if (this.selectedRevisionEntity) {\n this.router.navigate(['/audit/entity-revisions/' + this.selectedRevisionEntity.entityName]);\n } else {\n this.router.navigate(['/audit/entity-revisions/']);\n }\n }\n\n protected createTableviewDescriptor() {\n if (!this.revModel || !this.selectedRevisionEntity?.entityName) {\n throw new MngInternalError('No revision model or revision entity is provided for tableview.');\n }\n\n const desc = TableviewDescriptor.fromClass(MngRevEntityWithId, 'mergedId', undefined, this.selectedRevisionEntity.entityName);\n\n AuditUtil.buildDescriptorForEntityRevision(desc, this.revModel, this.selectedRevisionEntity);\n\n desc.table.withColumnsResizable();\n desc.table.withCurrentColumnsReorderable();\n desc.table.withCurrentColumnsToggleable();\n\n return desc;\n }\n\n protected createTableviewDataProvider() {\n if (!this.revModel || !this.selectedRevisionEntity?.entityName) {\n throw new MngInternalError('No revision model or revision entity is provided for tableview.');\n }\n\n const entityName = this.selectedRevisionEntity.entityName;\n return TableviewDataProvider.fromClass(MngRevEntityWithId).withGetAll(qp =>\n this.selectedRevisionEntity?.entityName\n ? this.revisionsApiService.listRevisionsWithStateForEntityType(qp, entityName).pipe(\n map(res => {\n const revEntityWithStateAndIdList = [];\n for (const revEntityWithState of res.data) {\n const revEntityWithStateAndId = new MngRevEntityWithId();\n revEntityWithStateAndId.mergedId = revEntityWithState.revEntity?.['rev'] + '_' + revEntityWithState.entityState?.['id'];\n revEntityWithStateAndId.revType = revEntityWithState.revType;\n revEntityWithStateAndId.revEntity = revEntityWithState.revEntity;\n revEntityWithStateAndId.entityState = revEntityWithState.entityState;\n revEntityWithStateAndId.entityClassName = revEntityWithState.entityClassName;\n revEntityWithStateAndIdList.push(revEntityWithStateAndId);\n }\n return MediusQueryResult.fromArray(revEntityWithStateAndIdList, res.totalCount);\n })\n )\n : throwError(() => new MngInternalError('No revision entity is provided for list.'))\n );\n }\n\n public override createActionDescriptors(): Array<ActionDescriptorInst<MngRevEntityWithId>> {\n if (!this.revModel || !this.selectedRevisionEntity?.entityName) {\n throw new MngInternalError('No revision model or revision entity is provided for tableview.');\n }\n\n const entityName = this.selectedRevisionEntity.entityName;\n const detailsAction = ActionEditorDetailsDescriptor.create(this.descriptor.detailsEditor)\n .withFetchFunction(ctx => {\n if (!entityName) {\n return throwError(() => new MngInternalError('No revision entity is provided for details.'));\n }\n if (!ctx.parameters.itemId) {\n return throwError(() => new MngInternalError('No item id for revision entity details is provided.'));\n }\n const revId = ctx.parameters.itemId.toString().split('_')[0];\n const itemId = ctx.parameters.itemId.toString().split('_')[1];\n return this.revisionsApiService.fetchRevisionsWithStateForEntityType(entityName, revId, itemId);\n })\n .withEditorTitle('pages.entityRevisions.actions.details.editor.title');\n return [detailsAction];\n }\n}\n","<div class=\"card\">\n <div class=\"field mb-0\">\n <mng-dropdown\n id=\"revisionEntityDropdown\"\n [placeholder]=\"'pages.entityRevisions.dropdown.placeholder' | translate\"\n optionsLabelProperty=\"entityNameI18n\"\n [(ngModel)]=\"selectedRevisionEntity\"\n (valueChange)=\"onRevisionEntityChange()\"\n [dataProvider]=\"revisionEntitiesLookupProvider\"></mng-dropdown>\n @if (!selectedRevisionEntity) {\n <small class=\"block\">\n {{ 'pages.entityRevisions.dropdown.helpText' | translate }}\n </small>\n }\n </div>\n</div>\n@if (showTableview()) {\n <mng-tableview-route [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"></mng-tableview-route>\n}\n","/**\n * Medius quarkus sampler\n * Sampler OPENAPI definition\n *\n * The version of the OpenAPI document: 1.0.0\n * Contact: info@medius.si\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport {ClassAttributeDef, TypeName, TypeRegistry} from '@mediusinc/mng-commons';\n\nimport {MngEntityChangeDto} from './entityChange';\n\n@TypeName('MngRevEntityWithChangesDto')\nexport class MngRevEntityWithChangesDto {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n revEntity?: {[key: string]: any};\n entityNameChangesMap?: {[key: string]: Array<MngEntityChangeDto>};\n\n public static discriminator?: string;\n\n public static attributeTypeMap: Array<ClassAttributeDef> = [\n {\n name: 'revEntity',\n baseName: 'revEntity',\n type: '{ [key: string]: any; }'\n },\n {\n name: 'entityNameChangesMap',\n baseName: 'entityNameChangesMap',\n type: '{ [key: string]: Array<EntityChange>; }'\n }\n ];\n\n public static getAttributeTypeMap() {\n return MngRevEntityWithChangesDto.attributeTypeMap;\n }\n}\n\nTypeRegistry.get().registerType(MngRevEntityWithChangesDto);\n","import {IdType, TypeName} from '@mediusinc/mng-commons';\n\n@TypeName('MngRevEntity')\nexport class MngRevEntity {\n rev?: IdType; // usually a number\n revUsername?: string;\n timestamp?: Date;\n}\n","import {TypeName} from '@mediusinc/mng-commons';\n\nimport {MngEntityChangeDto} from '../api/models/entityChange';\nimport {MngRevEntity} from './rev-entity.model';\n\n@TypeName('MngRevEntityDetailed')\nexport class MngRevEntityDetailed extends MngRevEntity {\n revEntity?: {[key: string]: unknown};\n entityNameChangesMap?: {[key: string]: Array<MngEntityChangeDto>};\n}\n","import {AsyncPipe} from '@angular/common';\nimport {Component, DestroyRef, Injector, Input, OnInit, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\nimport {BehaviorSubject} from 'rxjs';\n\nimport {AMngFormlyCustomFieldComponent, MngInternalError, MngTableComponent, TableDescriptor, TablePaginationModeEnum} from '@mediusinc/mng-commons';\n\nimport {MngEntityChangeDto} from '../../api/models/entityChange';\nimport {MngGuiEntityModelDto} from '../../api/models/guiEntityModel';\nimport {MngRevisionTypeDto} from '../../api/models/revisionType';\nimport {MngAuditService} from '../../api/services/audit.service';\nimport {MngEntityRevisionChangeState} from '../../models/entity-revision-change-state.model';\nimport {MngEntityRevisionChanges} from '../../models/entity-revision-changes.model';\nimport {AuditUtil} from '../../utils/audit.util';\n\n@Component({\n standalone: true,\n selector: 'mng-entity-changes-field',\n imports: [MngTableComponent, AsyncPipe],\n styleUrls: ['entity-changes-field.component.scss'],\n templateUrl: 'entity-changes-field.component.html'\n})\nexport class EntityChangesFieldComponent extends AMngFormlyCustomFieldComponent implements OnInit {\n @Input() public injector?: Injector;\n\n private destroyRef = inject(DestroyRef);\n\n public entityChanges: MngEntityRevisionChanges[] = [];\n public modelFetched = new BehaviorSubject(false);\n\n private auditModel: MngGuiEntityModelDto[] = [];\n private fieldValue?: {[key: string]: Array<MngEntityChangeDto>};\n\n ngOnInit(): void {\n this.fieldValue = this.formControl.value as {[key: string]: Array<MngEntityChangeDto>};\n this.injector\n ?.get(MngAuditService, undefined, {optional: true})\n ?.auditModel$.pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: model => {\n this.auditModel = model;\n if (this.fieldValue) {\n this.entityChanges = AuditUtil.mapItemsToEntityChangesArray(this.fieldValue);\n this.modelFetched.next(true);\n }\n },\n error: err => {\n throw new MngInternalError('Error while trying to fetch audit model from audit service', {name: 'EntityChangesFieldComponentError', cause: err});\n }\n });\n }\n\n public createDescriptor(entityChanges: MngEntityRevisionChanges) {\n const changedFields: string[] = [];\n if (entityChanges.items && entityChanges.items[0].revType === MngRevisionTypeDto.Mod) {\n for (const key in entityChanges.items[0]) {\n if (entityChanges.items[0][key] !== entityChanges.items[1][key]) {\n changedFields.push(key);\n }\n }\n }\n\n const guiEntityModel = this.auditModel.filter(m => m.entityName === entityChanges.entityType)[0];\n\n const desc = TableDescriptor.fromClass(MngEntityRevisionChangeState, undefined, undefined, guiEntityModel.entityName).withClassName('py-2');\n if (guiEntityModel.entityName) {\n desc.withTitle(guiEntityModel.entityName);\n }\n\n desc.addColumn('revType').withTitle('MngEntityRevisionChangeState.properties.revType').asEnum(MngRevisionTypeDto);\n\n if (guiEntityModel.properties) {\n AuditUtil.addColumnsFromModel(desc, guiEntityModel.properties, undefined, false, false);\n }\n\n desc.withRowClassName(undefined, (_, item) => (item ? (item.color === 'green' ? 'audit-row-added' : 'audit-row-deleted') : ''));\n desc.columns.forEach(col => {\n if (changedFields.length > 0 && changedFields.some(val => col.property === val)) {\n col.withClassName('audit-cell');\n }\n });\n\n desc.withPaginationMode(TablePaginationModeEnum.Pagination);\n desc.withCurrentColumnsReorderable();\n desc.withCurrentColumnsToggleable();\n desc.withTrackProperty(`EntityChangeField_${entityChanges.entityType ?? 'default'}`);\n\n return desc;\n }\n}\n","@if (modelFetched | async) {\n <div>\n @for (ec of entityChanges; track ec) {\n <mng-table [items]=\"ec.items\" [descriptor]=\"createDescriptor(ec)\"></mng-table>\n }\n </div>\n} @else {\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem\"></i>\n </div>\n}\n","import {AsyncPipe, JsonPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, DestroyRef, Injector, OnInit, WritableSignal, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {RouterOutlet} from '@angular/router';\n\nimport {map} from 'rxjs/operators';\n\nimport {\n AMngTableviewRouteComponent,\n ActionDescriptorInst,\n ActionEditorDetailsDescriptor,\n EditorDescriptor,\n EditorDescriptorInst,\n ITableviewDataProvider,\n MediusQueryResult,\n MngTableviewComponent,\n MngTableviewRouteComponent,\n ModelDescriptor,\n TableFilterDisplayEnum,\n TableviewDataProvider,\n TableviewDescriptor,\n TableviewDescriptorInst,\n TableviewEditorTypeEnum,\n itemIdToDefined\n} from '@mediusinc/mng-commons';\n\nimport {MngGuiEntityModelDto} from '../../../api/models/guiEntityModel';\nimport {MngRevEntityWithChangesDto} from '../../../api/models/revEntityWithChangesDto';\nimport {MngAuditRevisionsApiService} from '../../../api/services/audit-revisions-api.service';\nimport {MngAuditService} from '../../../api/services/audit.service';\nimport {MngRevEntityDetailed} from '../../../models/rev-entity-detailed.model';\nimport {MngRevEntity} from '../../../models/rev-entity.model';\nimport {AuditUtil} from '../../../utils/audit.util';\nimport {EntityChangesFieldComponent} from '../../entity-changes-field/entity-changes-field.component';\n\n@Component({\n standalone: true,\n selector: 'mng-audit-revisions-page',\n templateUrl: './audit-revisions.page.component.html',\n imports: [MngTableviewComponent, AsyncPipe, MngTableviewComponent, RouterOutlet, JsonPipe, MngTableviewRouteComponent],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MngAuditRevisionsPageComponent extends AMngTableviewRouteComponent<MngRevEntity> implements OnInit {\n private destroyRef = inject(DestroyRef);\n private injector = inject(Injector);\n private auditService = inject(MngAuditService);\n private revisisonsApiService = inject(MngAuditRevisionsApiService);\n\n private revModel?: MngGuiEntityModelDto;\n public showTableview: WritableSignal<boolean> = signal(false);\n\n override ngOnInit(): void {\n this.auditService.revModel$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n next: model => {\n this.revModel = model;\n super.ngOnInit();\n setTimeout(() => this.showTableview.set(true));\n }\n });\n }\n\n protected createTableviewDescriptor(): TableviewDescriptorInst<MngRevEntity> {\n if (this.revModel) {\n const idProperty = this.revModel.properties?.filter(prop => prop.isId).map(prop => prop.resolvedPropertyName)[0];\n\n const model = ModelDescriptor.fromClass(MngRevEntity);\n if (this.revModel.entityName) model.withI18nBase(this.revModel.entityName);\n if (idProperty) model.withIdPropertyUnsafe(idProperty);\n\n const desc = TableviewDescriptor.fromModel(model);\n\n const detailsDescriptor = EditorDescriptor.fromClass(MngRevEntityWithChangesDto, undefined, undefined, undefined, TableviewEditorTypeEnum.Details);\n detailsDescriptor.model.withIdPropertyUnsafe('revEntity.' + idProperty);\n\n if (this.revModel.properties) {\n AuditUtil.addColumnsFromModel(desc.table, this.revModel.properties);\n AuditUtil.addFieldsFromModel<MngRevEntityWithChangesDto>(detailsDescriptor, this.revModel.properties);\n }\n\n detailsDescriptor\n .addField('entityNameChangesMap')\n .asCustomComponent(EntityChangesFieldComponent, {\n fieldWrappers: ['field-no-label'],\n inputs: {injector: this.injector}\n })\n .withDisabled();\n\n desc.withDetailsDescriptor(detailsDescriptor as EditorDescriptorInst<MngRevEntity>); // MngRevEntity is extended by MngRevEntityWithChangesDto, so no real harm here\n desc.table.withFilterDisplay(TableFilterDisplayEnum.Row);\n\n return desc;\n }\n return TableviewDescriptor.fromClass(MngRevEntity);\n }\n\n protected createTableviewDataProvider(): ITableviewDataProvider<MngRevEntity> {\n if (this.revModel) {\n return TableviewDataProvider.fromClass(MngRevEntity).withGetAll(qp =>\n this.revisisonsApiService.getRevisionList(qp).pipe(map(res => MediusQueryResult.fromArray(res.data, res.totalCount)))\n );\n }\n return TableviewDataProvider.fromClass(MngRevEntity);\n }\n\n protected override createActionDescriptors(): Array<ActionDescriptorInst<MngRevEntity>> {\n const detailsAction = ActionEditorDetailsDescriptor.create(this.descriptor.detailsEditor).withFetchFunction(ctx =>\n this.revisisonsApiService.getAllChangesForRevision(itemIdToDefined(ctx.parameters.itemId)).pipe(\n map(item => {\n const revEntityWithChanges = new MngRevEntityDetailed();\n revEntityWithChanges.rev = ctx.parameters.itemId;\n revEntityWithChanges.revEntity = item.revEntity;\n revEntityWithChanges.entityNameChangesMap = item.entityNameChangesMap;\n return revEntityWithChanges;\n })\n )\n );\n\n return [detailsAction];\n }\n}\n","@if (showTableview()) {\n <mng-tableview-route [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"></mng-tableview-route>\n}\n","import {Routes} from '@angular/router';\n\nimport {MngMenuItem, RouteBuilder, RoutesBuilder, TableviewRouteBuilder} from '@mediusinc/mng-commons';\n\nimport {MngAuditRevisionsApiService} from './api/services/audit-revisions-api.service';\nimport {MngAuditService} from './api/services/audit.service';\nimport {MngAuditPageComponent} from './components/pages/audit/audit.page.component';\nimport {MngAuditEntityRevisionsPageComponent} from './components/pages/entity-revisions/audit-entity-revisions.page.component';\nimport {MngAuditRevisionsPageComponent} from './components/pages/revisions/audit-revisions.page.component';\nimport {MngAuditModuleConfig} from './models/config.model';\nimport {MNG_AUDIT_MODULE_CONFIG_IT} from './service/module-config.token';\n\n/**\n * Provides routes for the mng-commons-audit functionalities.\n * @param config Module config for audit section.\n * @param routeConfig Optionally provide route configs.\n */\nexport function provideMngAuditRoutes(\n config: MngAuditModuleConfig,\n routeConfig?: {\n defaultRedirect?: string;\n preRevisionRoutes?: RouteBuilder[];\n postRevisionRoutes?: RouteBuilder[];\n revisionsMenuItem?: MngMenuItem;\n entityRevisionsMenuItem?: MngMenuItem;\n }\n): Routes {\n const routeBuilder = RouteBuilder.create('', config.rootPageComponent ?? MngAuditPageComponent)\n .withProvider(MngAuditService)\n .withProvider(MngAuditService)\n .withProvider(MngAuditRevisionsApiService)\n .withProvider({\n provide: MNG_AUDIT_MODULE_CONFIG_IT,\n useValue: config\n })\n .addChildBuilder(RouteBuilder.createRedirect('', routeConfig?.defaultRedirect ?? 'revisions', 'full'));\n\n if (routeConfig?.preRevisionRoutes?.length) {\n routeConfig.preRevisionRoutes.forEach(r => routeBuilder.addChildBuilder(r));\n }\n\n const revisionsRouteBuilder = TableviewRouteBuilder.fromComponent('revisions', config.revisionsPageComponent ?? MngAuditRevisionsPageComponent)\n .withTitle('pages.revisions.title')\n .withAdd(false)\n .withDelete(false)\n .withEdit(false);\n if (routeConfig?.revisionsMenuItem) {\n revisionsRouteBuilder.withMngMenuItem(routeConfig.revisionsMenuItem);\n } else {\n revisionsRouteBuilder.withMenuItem('pi pi-book', 'pages.revisions.title');\n }\n\n const entityRevisionsRouteBuilder = RouteBuilder.create('entity-revisions', config.entityRevisionsPageComponent ?? MngAuditEntityRevisionsPageComponent).withTitle(\n 'pages.entityRevisions.title'\n );\n if (routeConfig?.entityRevisionsMenuItem) {\n entityRevisionsRouteBuilder.withMngMenuItem(routeConfig.entityRevisionsMenuItem);\n } else {\n entityRevisionsRouteBuilder.withMenuItem('pi pi-building', 'pages.entityRevisions.title');\n }\n\n routeBuilder\n .addChildBuilder(revisionsRouteBuilder)\n .addChildBuilder(entityRevisionsRouteBuilder)\n .addChildBuilder(\n TableviewRouteBuilder.fromComponent('entity-revisions/:entityClass', config.entityRevisionsPageComponent ?? MngAuditEntityRevisionsPageComponent).withTitle(\n 'pages.entityRevisions.title'\n )\n );\n\n if (routeConfig?.postRevisionRoutes?.length) {\n routeConfig.postRevisionRoutes.forEach(r => routeBuilder.addChildBuilder(r));\n }\n\n return RoutesBuilder.create().addRouteBuilder(routeBuilder).build();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface GetAllResponse<Item> {
2
+ totalCount?: number;
3
+ data: Item[];
4
+ }
@@ -1,6 +1,7 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { AMngBaseApiService, IdType, MediusQueryParam, MngConfigurationService } from '@mediusinc/mng-commons';
3
3
  import { MngRevEntityWithId } from '../../models/revEntityWithId.model';
4
+ import { GetAllResponse } from '../models/get-all-response.model';
4
5
  import { MngRevEntityWithChangesDto } from '../models/revEntityWithChangesDto';
5
6
  import { MngRevEntityWithStateDto } from '../models/revEntityWithStateDto';
6
7
  import * as i0 from "@angular/core";
@@ -10,14 +11,12 @@ export declare class MngAuditRevisionsApiService extends AMngBaseApiService {
10
11
  constructor();
11
12
  protected getServiceBasePath(): string | null;
12
13
  protected getBasePath(): string;
13
- getRevisionList(queryParams: MediusQueryParam): Observable<Array<{
14
+ getRevisionList(queryParams: MediusQueryParam): Observable<GetAllResponse<{
14
15
  [key: string]: unknown;
15
16
  }>>;
16
- getRevisionCount(queryParams: MediusQueryParam): Observable<number>;
17
17
  getAllChangesForRevision(revId: IdType): Observable<MngRevEntityWithChangesDto>;
18
- listRevisionsWithStateForEntityType(queryParams: MediusQueryParam, entityType: string): Observable<Array<MngRevEntityWithStateDto>>;
18
+ listRevisionsWithStateForEntityType(queryParams: MediusQueryParam, entityType: string): Observable<GetAllResponse<MngRevEntityWithStateDto>>;
19
19
  fetchRevisionsWithStateForEntityType(entityType: string, revId: IdType, itemId: IdType): Observable<MngRevEntityWithId>;
20
- countRevisionsWithStateForEntityType(queryParams: MediusQueryParam, entityType: string): Observable<number>;
21
20
  static ɵfac: i0.ɵɵFactoryDeclaration<MngAuditRevisionsApiService, never>;
22
21
  static ɵprov: i0.ɵɵInjectableDeclaration<MngAuditRevisionsApiService>;
23
22
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mediusinc/mng-commons-audit",
3
- "version": "4.0.1-rc.0",
3
+ "version": "4.1.0-rc.0-4e19f910",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.0.0",
6
6
  "@angular/core": "^17.0.0",
@@ -8,7 +8,7 @@
8
8
  "@angular/forms": "^17.0.0",
9
9
  "@ngx-formly/core": "^6.3.0",
10
10
  "@ngx-translate/core": "^15.0.0",
11
- "@mediusinc/mng-commons": "~4.0.1-rc.0"
11
+ "@mediusinc/mng-commons": "~4.1.0-rc.0-4e19f910"
12
12
  },
13
13
  "dependencies": {
14
14
  "tslib": "^2.6.2"