tango-app-ui-manage-settings 3.7.12 → 3.7.13

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.
@@ -232,6 +232,9 @@ export class ClientApiService {
232
232
  getOpenCloseList(data) {
233
233
  return this.http.post(`${this.storeApiUrl}/storeopencloseList`, data);
234
234
  }
235
+ getOpenCloseListexport(data) {
236
+ return this.http.post(`${this.storeApiUrl}/storeopencloseList`, data, { responseType: 'arraybuffer' });
237
+ }
235
238
  getUpdateOpenCloseList(data) {
236
239
  return this.http.post(`${this.storeApiUrl}/updatestoreopencloseList`, data);
237
240
  }
@@ -301,4 +304,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
301
304
  providedIn: 'root'
302
305
  }]
303
306
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.GlobalStateService }] });
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXNldHRpbmdzL3NyYy9saWIvc2VydmljZXMvY2xpZW50LWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBQzVDLE1BQU0sVUFBVSxHQUFHLGlGQUFpRixDQUFDO0FBQ3JHLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQztBQUtoQyxNQUFNLE9BQU8sZ0JBQWdCO0lBb0JQO0lBQTBCO0lBbkI5QyxZQUFZLENBQVE7SUFDcEIsZ0JBQWdCLENBQVM7SUFDekIsV0FBVyxDQUFTO0lBQ3BCLFlBQVksQ0FBUztJQUNyQixVQUFVLENBQVM7SUFDbkIsYUFBYSxDQUFTO0lBQ3RCLFlBQVksQ0FBUztJQUNyQixVQUFVLENBQVM7SUFFbkIsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQzFDLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQTtJQUMzQyxjQUFjLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDbEYsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFBO0lBQ2hELFdBQVcsQ0FBTTtJQUNqQixtQkFBbUIsQ0FBSztJQUN4QixhQUFhLENBQUk7SUFJakIsWUFBb0IsSUFBZ0IsRUFBVSxFQUFzQjtRQUFoRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDbEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLEVBQUU7Z0JBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO2dCQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDO2dCQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLG1CQUFtQixDQUFDO2dCQUNqRCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQzthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFBO2FBQzdCO2lCQUFNLElBQUksQ0FBQyxDQUFDLEVBQUU7Z0JBQ2IsTUFBTSxRQUFRLEdBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO2dCQUM1RSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7YUFDdkM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsRUFBVTtRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDbkUsQ0FBQztJQUNGLHlDQUF5QztJQUN4Qyw0QkFBNEIsQ0FBQyxRQUFnQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksZ0NBQWdDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDdEYsQ0FBQztJQUVELHFCQUFxQjtJQUNyQixrQkFBa0IsQ0FBQyxRQUFnQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksMkNBQTJDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDakcsQ0FBQztJQUNELGlCQUFpQjtJQUNqQixxQkFBcUIsQ0FBQyxJQUFRO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxzQkFBc0IsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN6RSxDQUFDO0lBRUQsa0RBQWtEO0lBQ2xELDZCQUE2QixDQUFDLFFBQWdCLEVBQUUsSUFBUTtRQUN0RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksOENBQThDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzFHLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsZUFBZSxDQUFFLENBQUE7SUFDaEUsQ0FBQztJQUNELFNBQVMsQ0FBQyxNQUFVO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVywrQkFBK0IsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFFLENBQUE7SUFDNUYsQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFRO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLHVCQUF1QixFQUFDLElBQUksQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFDRCxTQUFTLENBQUMsTUFBVTtRQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsK0JBQStCLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBRSxDQUFBO0lBQzVGLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxJQUFRO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMxRSxDQUFDO0lBQ0QsWUFBWSxDQUFDLElBQVE7UUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLHVCQUF1QixFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzNFLENBQUM7SUFDRCxhQUFhLENBQUMsSUFBUTtRQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDMUUsQ0FBQztJQUNELGVBQWUsQ0FBQyxFQUFVLEVBQUUsUUFBYTtRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksZUFBZSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUN6RSxDQUFDO0lBRUQsb0JBQW9CLENBQUMsRUFBVSxFQUFFLFFBQWE7UUFDNUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLG9CQUFvQixFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUM5RSxDQUFDO0lBRUQsc0JBQXNCLENBQUMsRUFBVSxFQUFFLFFBQWE7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLHNCQUFzQixFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUNoRixDQUFDO0lBRUQseUJBQXlCLENBQUMsRUFBVSxFQUFFLFFBQWE7UUFDakQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLHlCQUF5QixFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUNuRixDQUFDO0lBRUQsMEJBQTBCLENBQUMsRUFBVSxFQUFFLFFBQWE7UUFDbEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLDBCQUEwQixFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUNwRixDQUFDO0lBRUQsK0JBQStCLENBQUMsRUFBVSxFQUFFLFFBQWE7UUFDdkQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLG1CQUFtQixFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUM3RSxDQUFDO0lBQ0QsdUJBQXVCLENBQUMsRUFBVSxFQUFFLFFBQWE7UUFDL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLHVCQUF1QixFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUNqRixDQUFDO0lBQ0QsZUFBZSxDQUFDLEVBQVUsRUFBRSxRQUFhO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxjQUFjLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQ3hFLENBQUM7SUFDRCxZQUFZLENBQUMsRUFBVTtRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsd0JBQXdCLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDdkUsQ0FBQztJQUVELHdCQUF3QixDQUFDLFFBQWEsRUFBRSxFQUFVO1FBQ2hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSx3QkFBd0IsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDbkYsQ0FBQztJQUVELGNBQWMsQ0FBQyxFQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSx3QkFBd0IsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUN4RSxDQUFDO0lBRUQsU0FBUyxDQUFDLEVBQVUsRUFBRSxJQUFTO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxrQkFBa0IsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDekUsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQVU7UUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLHVCQUF1QixFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3ZFLENBQUM7SUFFRCxlQUFlLENBQUMsRUFBVTtRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQy9ELENBQUM7SUFFRCxZQUFZLENBQUMsRUFBVSxFQUFFLElBQVM7UUFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN4RSxDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQWdCO1FBQzNCLHlFQUF5RTtRQUN6RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksa0JBQWtCLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksZ0JBQWdCLENBQUMsQ0FBQTtJQUM1RCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzVELENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsZ0JBQWdCLENBQUMsQ0FBQTtJQUNoRSxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWU7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsK0JBQStCLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDeEYsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFlLEVBQUUsS0FBYTtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQiw2QkFBNkIsT0FBTyxVQUFVLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDckcsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFTO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBUztRQUMzQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUE7SUFDbkcsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFlLEVBQUUsTUFBYztRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsYUFBYSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBQ3RGLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxPQUFlLEVBQUUsTUFBYztRQUMvQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsZ0JBQWdCLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7SUFDekYsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQWUsRUFBRSxJQUFTO1FBQzFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxnQkFBZ0IsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDM0UsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFTO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDbEUsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFTO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLCtCQUErQixRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ25GLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBUztRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDNUUsQ0FBQztJQUNELGlCQUFpQixDQUFDLElBQVM7UUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLDBCQUEwQixFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzlFLENBQUM7SUFDRCxlQUFlLENBQUMsSUFBUztRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDOUUsQ0FBQztJQUNELG9CQUFvQixDQUFDLElBQVM7UUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLDZCQUE2QixFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ2pGLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFVLEVBQUUsUUFBYTtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksK0JBQStCLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQ3pGLENBQUM7SUFDRCxjQUFjLENBQUMsRUFBVTtRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksNEJBQTRCLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDNUUsQ0FBQztJQUNELGNBQWMsQ0FBQyxNQUFXLEVBQUUsUUFBZ0I7UUFDMUMsTUFBTSxJQUFJLEdBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNwQyxJQUFJLEVBQUUsVUFBVTtTQUNqQixDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELGdCQUFnQixDQUFDLElBQVM7UUFDeEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBQ0QsYUFBYSxDQUFDLE1BQVc7UUFDdkIsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztTQUMxQztRQUNELE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksbUNBQW1DLE1BQU0sRUFBRSxDQUFDO1FBQzVFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNqQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBTSxlQUFlLEVBQUUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQ3BGLENBQUM7SUFDSixDQUFDO0lBRUQsd0JBQXdCLENBQUMsUUFBWTtRQUNsQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQiwyQkFBMkIsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUN6RixDQUFDO0lBRUQsMkJBQTJCLENBQUMsR0FBTyxFQUFDLFFBQVk7UUFDN0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxtQkFBbUIseUJBQXlCLFFBQVEsRUFBRSxFQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzNGLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxHQUFPO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxjQUFjLEVBQUMsR0FBRyxDQUFDLENBQUE7SUFDaEUsQ0FBQztJQUNELGNBQWMsQ0FBQyxRQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSx5QkFBeUIsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUNoRixDQUFDO0lBRUYsZ0JBQWdCLENBQUMsSUFBUztRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcscUJBQXFCLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdkUsQ0FBQztJQUVELHNCQUFzQixDQUFFLElBQVM7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLDJCQUEyQixFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzdFLENBQUM7SUFFRCxxREFBcUQ7SUFDckQsMkJBQTJCLENBQUMsSUFBUTtRQUNsQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDekUsQ0FBQztJQUVELHNCQUFzQixDQUFDLElBQVE7UUFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLG1CQUFtQixFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFQSxpQkFBaUIsQ0FBQyxJQUFRO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxpQkFBaUIsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQseUJBQXlCLENBQUMsSUFBUTtRQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsc0JBQXNCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELHlCQUF5QixDQUFDLElBQVE7UUFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLHNCQUFzQixFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CLENBQUMsSUFBUTtRQUMxQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdkUsQ0FBQztJQUVELHlCQUF5QixDQUFDLElBQVE7UUFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLHNCQUFzQixFQUFFLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFBO0lBQ3hHLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBUTtRQUNuQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsZUFBZSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFRO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxzQkFBc0IsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVE7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLGtCQUFrQixFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBUTtRQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsa0JBQWtCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixpQ0FBaUMsQ0FBQyxJQUFRO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQTtJQUMxRyxDQUFDO0lBRVEsaUJBQWlCLENBQUMsSUFBVyxFQUFFLGFBQXFCO1FBQ3pELE1BQU0sU0FBUyxHQUFtQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRSxNQUFNLFFBQVEsR0FBa0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN4RixNQUFNLFdBQVcsR0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLGVBQWUsQ0FBQyxNQUFXLEVBQUUsUUFBZ0I7UUFDaEQsTUFBTSxJQUFJLEdBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNwQyxJQUFJLEVBQUUsVUFBVTtTQUNqQixDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLEdBQUcsT0FBTyxHQUFHLGVBQWUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRyxXQUFXLENBQUksU0FBUyxHQUFHLFdBQVcsRUFBRSxNQUFVO1FBQ3hELE9BQU8sQ0FBQyxLQUFVLEVBQWlCLEVBQUU7WUFDbkMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLFNBQVMsWUFBWSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN2RCxPQUFPLEVBQUUsQ0FBQyxNQUFXLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUM7SUFDSixDQUFDO3dHQTlVVSxnQkFBZ0I7NEdBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuY29uc3QgRVhDRUxfVFlQRSA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtjaGFyc2V0PVVURi04JztcclxuY29uc3QgRVhDRUxfRVhURU5TSU9OID0gJy54bHN4JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaWVudEFwaVNlcnZpY2Uge1xyXG4gIGNsaWVudEFwaVVybDogc3RyaW5nXHJcbiAgbWlkZGxld2FyZUFwaVVybDogc3RyaW5nO1xyXG4gIHN0b3JlQXBpVXJsOiBzdHJpbmc7XHJcbiAgcmVwb3J0QXBpVXJsOiBzdHJpbmc7XHJcbiAgdXNlckFwaVVybDogc3RyaW5nO1xyXG4gIHRpY2tldHNBcGlVcmw6IHN0cmluZztcclxuICBtYXRBcHBBcGlVcmw6IHN0cmluZztcclxuICB6b25lQXBpVXJsOiBzdHJpbmc7XHJcblxyXG4gIGNsaWVudElkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKVxyXG4gIGNsaWVudERhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbClcclxuICBjbGllbnRGb3JtRGF0YSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih7IHZhbHVlOiBudWxsLCB0eXBlOiBudWxsLCBmb3JtOiBudWxsIH0pXHJcbiAgZHJvcERvd25UcmlnZ2VyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpXHJcbiAgZ3JvdXBBcGlVcmw6IGFueTtcclxuICBjb250cm9sY2VudGVyQXBpVXJsOmFueTtcclxuICBjbHVzdGVyQXBpVXJsOmFueVxyXG5cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmdzLmVudmlyb25tZW50LnN1YnNjcmliZSgoZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0Vudmlyb25tZW50IGRhdGEgaW4gQ2xpZW50QXBpU2VydmljZTonLCBlKTtcclxuICAgICAgICB0aGlzLmNsaWVudEFwaVVybCA9IGUuY2xpZW50QXBpVXJsO1xyXG4gICAgICAgIHRoaXMubWlkZGxld2FyZUFwaVVybCA9IGUubWlkZGxld2FyZUFwaVVybDtcclxuICAgICAgICB0aGlzLnN0b3JlQXBpVXJsID0gZS5zdG9yZUFwaVVybDtcclxuICAgICAgICB0aGlzLnJlcG9ydEFwaVVybCA9IGUucmVwb3J0QXBpVXJsO1xyXG4gICAgICAgIHRoaXMudXNlckFwaVVybCA9IGUudXNlckFwaVVybDtcclxuICAgICAgICB0aGlzLnRpY2tldHNBcGlVcmwgPSBlLnRpY2tldHNBcGlVcmw7XHJcbiAgICAgICAgdGhpcy5tYXRBcHBBcGlVcmwgPSBlLm1hdEFwcEFwaVVybDtcclxuICAgICAgICB0aGlzLmdyb3VwQXBpVXJsID0gZS5ncm91cEFwaVVybDtcclxuICAgICAgICB0aGlzLmNvbnRyb2xjZW50ZXJBcGlVcmwgPSBlLmNvbnRyb2xjZW50ZXJBcGlVcmw7XHJcbiAgICAgICAgdGhpcy5jbHVzdGVyQXBpVXJsID0gZS5jbHVzdGVyQXBpVXJsO1xyXG4gICAgICAgIHRoaXMuem9uZUFwaVVybCA9IGUuem9uZUFwaVVybDtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUuc3Vic2NyaWJlKChlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGUpIHtcclxuICAgICAgICB0aGlzLmNsaWVudElkLm5leHQoZS5jbGllbnQpXHJcbiAgICAgIH0gZWxzZSBpZiAoIWUpIHtcclxuICAgICAgICBjb25zdCB1c2VyRGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXItaW5mb1wiKSB8fCBcInt9XCIpO1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWQubmV4dCh1c2VyRGF0YT8uY2xpZW50SWQpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRCcmFuZERldGFpbHMoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmNsaWVudEFwaVVybH0vY2xpZW50LWRldGFpbHMvJHtpZH1gKVxyXG4gIH1cclxuIC8vIGZvb3RGYWxsIC0gc3RvcmUgcmFpc2VkIHRpY2tldCBkZXRhaWxzXHJcbiAgZ2V0Rm9vdGZhbGxTdG9yZVJhaXNlRGV0YWlscyhjbGllbnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuY2xpZW50QXBpVXJsfS9saXN0LXN0b3JlLXJlcXVlc3Q/Y2xpZW50SWQ9JHtjbGllbnRJZH1gKVxyXG4gIH1cclxuXHJcbiAgLy8gZm9vdEZhbGwgLSBkZXRhaWxzXHJcbiAgZ2V0Rm9vdGZhbGxEZXRhaWxzKGNsaWVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5jbGllbnRBcGlVcmx9L2dldC1mb290ZmFsbC1kaXJlY3RvcnktY29uZmlnP2NsaWVudElkPSR7Y2xpZW50SWR9YClcclxuICB9XHJcbiAgLy8gcmVzZXRTdG9yZUxpc3RcclxuICByZXNldFN0b3JlUmVxdWVzdExpc3QoZGF0YTphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuY2xpZW50QXBpVXJsfS9yZXNldC1zdG9yZS1yZXF1ZXN0YCwgZGF0YSlcclxuICB9XHJcblxyXG4gIC8vIGZvb3RmYWxsIC0gc3RvcmUgZm9vdGZhbGwgY29uZmlndXJhdGlvbiBkZXRhaWxzXHJcbiAgdXBkYXRlRm9vdGZhbGxEaXJlY3RvcnlDb25maWcoY2xpZW50SWQ6IHN0cmluZywgZGF0YTphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5jbGllbnRBcGlVcmx9L3VwZGF0ZS1mb290ZmFsbC1kaXJlY3RvcnktY29uZmlnP2NsaWVudElkPSR7Y2xpZW50SWR9YCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldENvdW50cnlDb2RlcygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5taWRkbGV3YXJlQXBpVXJsfS9jb3VudHJ5LWNvZGVgLClcclxuICB9XHJcbiAgZ2V0U3RvcmVzKGNsaWVudDphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5zdG9yZUFwaVVybH0vc3RvcmUtYXNzaWduLWxpc3Q/Y2xpZW50SWQ9JHtjbGllbnQuY2xpZW50SWR9YCwpXHJcbiAgfVxyXG4gIGdldHVzZXIoZGF0YTphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudGlja2V0c0FwaVVybH0vaW5mcmEvZ2V0T3V0c2lkZVVzZXJgLGRhdGEpXHJcbiAgfVxyXG4gIGdldEdyb3VwcyhjbGllbnQ6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZ3JvdXBBcGlVcmx9L2dyb3VwLWFzc2lnbi1saXN0P2NsaWVudElkPSR7Y2xpZW50LmNsaWVudElkfWAsKVxyXG4gIH1cclxuICBnZXRBc3NpZ25jbHVzdGVycyhkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5jbHVzdGVyQXBpVXJsfS9BbGxjbHVzdGVyTGlzdGAsIGRhdGEpXHJcbiAgfVxyXG4gIGFkZEVtYWlsdXNlcihkYXRhOmFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50aWNrZXRzQXBpVXJsfS9pbmZyYS9BZGRlbWFpbFVzZXJ2MmAsIGRhdGEpXHJcbiAgfVxyXG4gIGVkaXRFbWFpbHVzZXIoZGF0YTphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudGlja2V0c0FwaVVybH0vaW5mcmEvZWRpdGVtYWlsVXNlcmAsIGRhdGEpXHJcbiAgfVxyXG4gIHVwZGF0ZUJyYW5kSW5mbyhpZDogc3RyaW5nLCBmcm9tZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuY2xpZW50QXBpVXJsfS9icmFuZC1pbmZvLyR7aWR9YCwgZnJvbWRhdGEpXHJcbiAgfVxyXG5cclxuICB1cGRhdGVCaWxsaW5nRGV0YWlscyhpZDogc3RyaW5nLCBmcm9tZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuY2xpZW50QXBpVXJsfS9iaWxsaW5nLWRldGFpbHMvJHtpZH1gLCBmcm9tZGF0YSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZVNpZ25hdG9yeURldGFpbHMoaWQ6IHN0cmluZywgZnJvbWRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmNsaWVudEFwaVVybH0vc2lnbmF0b3J5LWRldGFpbHMvJHtpZH1gLCBmcm9tZGF0YSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZVRpY2tldENvbmZpZ3VyYXRpb24oaWQ6IHN0cmluZywgZnJvbWRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmNsaWVudEFwaVVybH0vdGlja2V0LWNvbmZpZ3VyYXRpb24vJHtpZH1gLCBmcm9tZGF0YSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZlYXR1cmVDb25maWd1cmF0aW9uKGlkOiBzdHJpbmcsIGZyb21kYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5jbGllbnRBcGlVcmx9L2ZlYXR1cmUtY29uZmlndXJhdGlvbi8ke2lkfWAsIGZyb21kYXRhKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRG9tYWluRGV0YWlsQ29uZmlndXJhdGlvbihpZDogc3RyaW5nLCBmcm9tZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuY2xpZW50QXBpVXJsfS9kb21haW4tZGV0YWlscy8ke2lkfWAsIGZyb21kYXRhKVxyXG4gIH1cclxuICB1cGRhdGVVc2VyQ29uZmlndXJhdGlvbihpZDogc3RyaW5nLCBmcm9tZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuY2xpZW50QXBpVXJsfS91c2VyLWNvbmZpZ3VyYXRpb24vJHtpZH1gLCBmcm9tZGF0YSlcclxuICB9XHJcbiAgdXBkYXRlRG9jdW1lbnRzKGlkOiBzdHJpbmcsIGZyb21kYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5jbGllbnRBcGlVcmx9L2RvY3VtZW50cy8ke2lkfWAsIGZyb21kYXRhKVxyXG4gIH1cclxuICBnZXRTdG9yZUxpc3QoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnN0b3JlQXBpVXJsfS9nZXQtc3RvcmVzP2NsaWVudElkPSR7aWR9YClcclxuICB9XHJcblxyXG4gIHVwZGF0ZWF1ZGl0Q29uZmlndXJhdGlvbihmcm9tZGF0YTogYW55LCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmNsaWVudEFwaVVybH0vYXVkaXQtY29uZmlndXJhdGlvbi8ke2lkfWAsIGZyb21kYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0QXVkaXRDb25maWcoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmNsaWVudEFwaVVybH0vYXVkaXQtY29uZmlndXJhdGlvbi8ke2lkfWApXHJcbiAgfVxyXG5cclxuICBhZGRSZXBvcnQoaWQ6IHN0cmluZywgZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnJlcG9ydEFwaVVybH0vY3JlYXRlLXJlcG9ydC8ke2lkfWAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBnZXRDbGllbnRSZXBvcnRzKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5yZXBvcnRBcGlVcmx9L2dldC1jbGllbnQtcmVwb3J0cy8ke2lkfWApXHJcbiAgfVxyXG5cclxuICBnZXRTaW5nbGVSZXBvcnQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnJlcG9ydEFwaVVybH0vZ2V0LXJlcG9ydC8ke2lkfWApXHJcbiAgfVxyXG5cclxuICB1cGRhdGVSZXBvcnQoaWQ6IHN0cmluZywgZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMucmVwb3J0QXBpVXJsfS91cGRhdGUtcmVwb3J0LyR7aWR9YCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGRlbGV0ZVJlcG9ydChyZXBvcnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIC8vIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMucmVwb3J0QXBpVXJsfS9kZWxldGUtcmVwb3J0LyR7aWR9YCwgZGF0YSlcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5yZXBvcnRBcGlVcmx9L2RlbGV0ZS1yZXBvcnQvJHtyZXBvcnRJZH1gKTtcclxuICB9XHJcblxyXG4gIGdldENzbVVzZXJzKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmNsaWVudEFwaVVybH0vZ2V0LWNzbS11c2Vyc2ApXHJcbiAgfVxyXG5cclxuICBnZXRPcHNVc2VycygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5jbGllbnRBcGlVcmx9L2dldC1vcHMtdXNlcnNgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQ291bnRyaWVzKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLm1pZGRsZXdhcmVBcGlVcmx9L2dldC1jb3VudHJpZXNgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsU3RhdGVzKGNvdW50cnk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLm1pZGRsZXdhcmVBcGlVcmx9L2dldC1jb3VudHJ5LXN0YXRlcz9jb3VudHJ5PSR7Y291bnRyeX1gKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQ2l0aWVzKGNvdW50cnk6IHN0cmluZywgc3RhdGU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLm1pZGRsZXdhcmVBcGlVcmx9L2dldC1zdGF0ZS1jaXRpZXM/Y291bnRyeT0ke2NvdW50cnl9JnN0YXRlPSR7c3RhdGV9YClcclxuICB9XHJcblxyXG4gIHNwb2NUYWJsZURhdGEoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQXBpVXJsfS9nZXQtc3BvYy1saXN0YCwgZGF0YSlcclxuICB9XHJcblxyXG4gIHNwb2NUYWJsZURhdGFFeHBvcnQoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQXBpVXJsfS9nZXQtc3BvYy1saXN0YCwgZGF0YSwgeyByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicgfSlcclxuICB9XHJcblxyXG4gIGdldFNwb2NEZXRhaWxzKHN0b3JlSWQ6IHN0cmluZywgc3BvY0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVBcGlVcmx9L2dldC1zcG9jLyR7c3RvcmVJZH1gLCB7IHNwb2NJZDogc3BvY0lkIH0pXHJcbiAgfVxyXG5cclxuICBkZWxldGVTcG9jRGV0YWlscyhzdG9yZUlkOiBzdHJpbmcsIHNwb2NJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQXBpVXJsfS9kZWxldGUtc3BvYy8ke3N0b3JlSWR9YCwgeyBzcG9jSWQ6IHNwb2NJZCB9KVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlU3BvY0RldGFpbHMoc3RvcmVJZDogc3RyaW5nLCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVBcGlVcmx9L3VwZGF0ZS1zcG9jLyR7c3RvcmVJZH1gLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWN0aXZpdHlMb2dzKGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5jbGllbnRBcGlVcmx9L2FjdGl2aXR5LWxvZ2AsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBhc3NpZ25Dc20oZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnVzZXJBcGlVcmx9L2Fzc2lnbi1jbGllbnRgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0QXNzaWduZWRVc2VycyhjbGllbnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudXNlckFwaVVybH0vZ2V0LWFzc2lnbi1jbGllbnQ/Y2xpZW50SWQ9JHtjbGllbnRJZH1gKVxyXG4gIH1cclxuXHJcbiAgZW1haWxVc2VyTGlzdChkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudGlja2V0c0FwaVVybH0vaW5mcmEvZW1haWxVc2VyTGlzdHYyYCwgZGF0YSlcclxuICB9XHJcbiAgZGVsZXRlT3V0c2lkZVVzZXIoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRpY2tldHNBcGlVcmx9L2luZnJhL2RlbGV0ZU91dHNpZGVVc2VyYCwgZGF0YSlcclxuICB9XHJcbiAgT3V0c2lkZVVzZXJMaXN0KGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50aWNrZXRzQXBpVXJsfS9pbmZyYS9PdXRzaWRlVXNlckxpc3R2MmAsIGRhdGEpXHJcbiAgfVxyXG4gIHNhdmVJbmZyYUVtYWlsQ29uZmlnKGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50aWNrZXRzQXBpVXJsfS9pbmZyYS9zYXZlSW5mcmFFbWFpbENvbmZpZ2AsIGRhdGEpXHJcbiAgfVxyXG5cclxuICB1cGRhdGVCcmFuZENvbmZpZyhpZDogc3RyaW5nLCBmcm9tZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMubWF0QXBwQXBpVXJsfS91cGRhdGVCcmFuZENvbmZpZz9jbGllbnRJZD0ke2lkfWAsIGZyb21kYXRhKVxyXG4gIH1cclxuICBnZXRCcmFuZENvbmZpZyhpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMubWF0QXBwQXBpVXJsfS9nZXRCcmFuZENvbmZpZz9jbGllbnRJZD0ke2lkfWApXHJcbiAgfVxyXG4gIHNhdmVBc1RlbXBsYXRlKGJ1ZmZlcjogYW55LCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHtcclxuICAgICAgdHlwZTogRVhDRUxfVFlQRVxyXG4gICAgfSk7XHJcbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKGRhdGEsIGZpbGVOYW1lICsgRVhDRUxfRVhURU5TSU9OKTtcclxuICB9XHJcbiAgbG9jYXRpb25MaXN0RGF0YShkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVBcGlVcmx9L2xvY2F0aW9uTGlzdGAsIGRhdGEpXHJcbiAgfVxyXG4gIGdldENsaWVudEluZm8oY2xpZW50PzphbnkpOk9ic2VydmFibGU8YW55PntcclxuICAgIGlmICghY2xpZW50KSB7XHJcbiAgICAgIHJldHVybiBvZih7IGVycm9yOiAnSW52YWxpZCBjbGllbnRJZCcgfSk7IFxyXG4gICAgfVxyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5jbGllbnRBcGlVcmx9L2RldGFpbGVkLWNsaWVudC1jb3VudD9jbGllbnRJZD0ke2NsaWVudH1gO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih1cmwpLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcjxhbnk+KCdnZXRDbGllbnRJbmZvJywgeyBlcnJvcjogJ0FQSSByZXF1ZXN0IGZhaWxlZCcgfSkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Y29udHJvbGNlbnRlclRhc2tMaXN0KGNsaWVudElkOmFueSl7XHJcbiAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5jb250cm9sY2VudGVyQXBpVXJsfS9nZXQtdGFzay1saXN0P2NsaWVudElkPSR7Y2xpZW50SWR9YClcclxuICB9XHJcblxyXG4gIHVwZGF0ZWNvbnRyb2xjZW50ZXJUYXNrTGlzdChvYmo6YW55LGNsaWVudElkOmFueSl7XHJcbiAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5jb250cm9sY2VudGVyQXBpVXJsfS91cHNlcnQtdGFzaz9jbGllbnRJZD0ke2NsaWVudElkfWAsb2JqKVxyXG4gIH1cclxuICBzdWJtaXRSZXZvcENvbmZpZyhvYmo6YW55KXtcclxuICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5jbGllbnRBcGlVcmx9L3Jldm9wY29uZmlnYCxvYmopXHJcbiAgfVxyXG4gIGdldFJldm9wQ29uZmlnKGNsaWVudElkOmFueSl7XHJcbiAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5jbGllbnRBcGlVcmx9L3Jldm9wY29uZmlnP2NsaWVudElkPSR7Y2xpZW50SWR9YClcclxuICB9XHJcblxyXG4gZ2V0T3BlbkNsb3NlTGlzdChkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVBcGlVcmx9L3N0b3Jlb3BlbmNsb3NlTGlzdGAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBnZXRVcGRhdGVPcGVuQ2xvc2VMaXN0KCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVBcGlVcmx9L3VwZGF0ZXN0b3Jlb3BlbmNsb3NlTGlzdGAsIGRhdGEpXHJcbiAgfVxyXG4gIFxyXG4gIC8vIE5ldyBBUEkgZm9yIHpvbmUgY29uZmlndXJhdGlvbiAtIGFkZCBjdXN0b20gdGFnIHYyXHJcbiAgZ2V0Wm9uZUNvbmZpZ1RhZ2dpbmdEZXRhaWxzKGRhdGE6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnpvbmVBcGlVcmx9L2dldFpvbmVUYWdnaW5nRGV0YWlsc2AsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBhZGRab25lQ29uZmlnQ3VzdG9tVGFnKGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy56b25lQXBpVXJsfS9hZGRab25lQ3VzdG9tVGFnYCxkYXRhKTtcclxuICB9XHJcblxyXG4gICBhZGRCdWxrWm9uZVVwbG9hZChkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuem9uZUFwaVVybH0vYnVsa1pvbmVVcGxvYWRgLGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlWm9uZUNvbmZpZ0N1c3RvbVRhZyhkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuem9uZUFwaVVybH0vdXBkYXRlWm9uZUN1c3RvbVRhZ2AsZGF0YSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVab25lQ29uZmlnQ3VzdG9tVGFnKGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy56b25lQXBpVXJsfS9kZWxldGVab25lQ3VzdG9tVGFnYCxkYXRhKTtcclxuICB9XHJcblxyXG4gIC8vIHpvbmUgZ3JvdXAgQVBJc1xyXG4gIGdldFpvbmVHcm91cERldGFpbHMoZGF0YTphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuem9uZUFwaVVybH0vZ2V0Wm9uZUdyb3VwRGV0YWlsc2AsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBnZXRab25lR3JvdXBEZXRhaWxzRXhwb3J0KGRhdGE6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnpvbmVBcGlVcmx9L2dldFpvbmVHcm91cERldGFpbHNgLCBkYXRhLCB7IHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyB9KVxyXG4gIH1cclxuXHJcbiAgYWRkWm9uZUdyb3VwKGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy56b25lQXBpVXJsfS9hZGRab25lR3JvdXBgLGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkQnVsa1pvbmVHcm91cChkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuem9uZUFwaVVybH0vYnVsa1pvbmVHcm91cFVwbG9hZGAsZGF0YSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVab25lR3JvdXAoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnpvbmVBcGlVcmx9L3VwZGF0ZVpvbmVHcm91cGAsZGF0YSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVab25lR3JvdXAoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnpvbmVBcGlVcmx9L2RlbGV0ZVpvbmVHcm91cGAsZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvLyB6b25lIHRhZ2dpbmcgZXhwb3J0IEFQSVxyXG4gIGdldFpvbmVDb25maWdUYWdnaW5nRGV0YWlsc0V4cG9ydChkYXRhOmFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy56b25lQXBpVXJsfS9nZXRab25lVGFnZ2luZ0RldGFpbHNgLCBkYXRhLCB7IHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyB9KVxyXG4gIH1cclxuXHJcbiAgICBwdWJsaWMgZXhwb3J0QXNFeGNlbEZpbGUoanNvbjogYW55W10sIGV4Y2VsRmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICBjb25zdCB3b3Jrc2hlZXQ6IFhMU1guV29ya1NoZWV0ID0gWExTWC51dGlscy5qc29uX3RvX3NoZWV0KGpzb24pO1xyXG4gICAgICBjb25zdCB3b3JrYm9vazogWExTWC5Xb3JrQm9vayA9IHsgU2hlZXRzOiB7ICdkYXRhJzogd29ya3NoZWV0IH0sIFNoZWV0TmFtZXM6IFsnZGF0YSddIH07XHJcbiAgICAgIGNvbnN0IGV4Y2VsQnVmZmVyOiBhbnkgPSBYTFNYLndyaXRlKHdvcmtib29rLCB7IGJvb2tUeXBlOiAneGxzeCcsIHR5cGU6ICdhcnJheScgfSk7XHJcbiAgICAgIHRoaXMuc2F2ZUFzRXhjZWxGaWxlKGV4Y2VsQnVmZmVyLCBleGNlbEZpbGVOYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2F2ZUFzRXhjZWxGaWxlKGJ1ZmZlcjogYW55LCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZGF0YTogQmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7XHJcbiAgICAgICAgICB0eXBlOiBFWENFTF9UWVBFXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgRmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSArICcgTGlzdCcgKyBFWENFTF9FWFRFTlNJT04pO1xyXG4gICAgICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRXJyb3I8VD4ob3BlcmF0aW9uID0gJ29wZXJhdGlvbicsIHJlc3VsdD86IFQpIHtcclxuICAgIHJldHVybiAoZXJyb3I6IGFueSk6IE9ic2VydmFibGU8VD4gPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGAke29wZXJhdGlvbn0gZmFpbGVkOiAke2Vycm9yLm1lc3NhZ2V9YCk7XHJcbiAgICAgIHJldHVybiBvZihyZXN1bHQgYXMgVCk7XHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXNldHRpbmdzL3NyYy9saWIvc2VydmljZXMvY2xpZW50LWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBQzVDLE1BQU0sVUFBVSxHQUFHLGlGQUFpRixDQUFDO0FBQ3JHLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQztBQUtoQyxNQUFNLE9BQU8sZ0JBQWdCO0lBb0JQO0lBQTBCO0lBbkI5QyxZQUFZLENBQVE7SUFDcEIsZ0JBQWdCLENBQVM7SUFDekIsV0FBVyxDQUFTO0lBQ3BCLFlBQVksQ0FBUztJQUNyQixVQUFVLENBQVM7SUFDbkIsYUFBYSxDQUFTO0lBQ3RCLFlBQVksQ0FBUztJQUNyQixVQUFVLENBQVM7SUFFbkIsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQzFDLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQTtJQUMzQyxjQUFjLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDbEYsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFBO0lBQ2hELFdBQVcsQ0FBTTtJQUNqQixtQkFBbUIsQ0FBSztJ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QU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxHQUFHLE9BQU8sR0FBRyxlQUFlLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUcsV0FBVyxDQUFJLFNBQVMsR0FBRyxXQUFXLEVBQUUsTUFBVTtRQUN4RCxPQUFPLENBQUMsS0FBVSxFQUFpQixFQUFFO1lBQ25DLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLFlBQVksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDdkQsT0FBTyxFQUFFLENBQUMsTUFBVyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDO0lBQ0osQ0FBQzt3R0FsVlUsZ0JBQWdCOzRHQUFoQixnQkFBZ0IsY0FGZixNQUFNOzs0RkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmNvbnN0IEVYQ0VMX1RZUEUgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7Y2hhcnNldD1VVEYtOCc7XHJcbmNvbnN0IEVYQ0VMX0VYVEVOU0lPTiA9ICcueGxzeCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbGllbnRBcGlTZXJ2aWNlIHtcclxuICBjbGllbnRBcGlVcmw6IHN0cmluZ1xyXG4gIG1pZGRsZXdhcmVBcGlVcmw6IHN0cmluZztcclxuICBzdG9yZUFwaVVybDogc3RyaW5nO1xyXG4gIHJlcG9ydEFwaVVybDogc3RyaW5nO1xyXG4gIHVzZXJBcGlVcmw6IHN0cmluZztcclxuICB0aWNrZXRzQXBpVXJsOiBzdHJpbmc7XHJcbiAgbWF0QXBwQXBpVXJsOiBzdHJpbmc7XHJcbiAgem9uZUFwaVVybDogc3RyaW5nO1xyXG5cclxuICBjbGllbnRJZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJylcclxuICBjbGllbnREYXRhID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpXHJcbiAgY2xpZW50Rm9ybURhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oeyB2YWx1ZTogbnVsbCwgdHlwZTogbnVsbCwgZm9ybTogbnVsbCB9KVxyXG4gIGRyb3BEb3duVHJpZ2dlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKVxyXG4gIGdyb3VwQXBpVXJsOiBhbnk7XHJcbiAgY29udHJvbGNlbnRlckFwaVVybDphbnk7XHJcbiAgY2x1c3RlckFwaVVybDphbnlcclxuXHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSkge1xyXG4gICAgdGhpcy5ncy5lbnZpcm9ubWVudC5zdWJzY3JpYmUoKGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdFbnZpcm9ubWVudCBkYXRhIGluIENsaWVudEFwaVNlcnZpY2U6JywgZSk7XHJcbiAgICAgICAgdGhpcy5jbGllbnRBcGlVcmwgPSBlLmNsaWVudEFwaVVybDtcclxuICAgICAgICB0aGlzLm1pZGRsZXdhcmVBcGlVcmwgPSBlLm1pZGRsZXdhcmVBcGlVcmw7XHJcbiAgICAgICAgdGhpcy5zdG9yZUFwaVVybCA9IGUuc3RvcmVBcGlVcmw7XHJcbiAgICAgICAgdGhpcy5yZXBvcnRBcGlVcmwgPSBlLnJlcG9ydEFwaVVybDtcclxuICAgICAgICB0aGlzLnVzZXJBcGlVcmwgPSBlLnVzZXJBcGlVcmw7XHJcbiAgICAgICAgdGhpcy50aWNrZXRzQXBpVXJsID0gZS50aWNrZXRzQXBpVXJsO1xyXG4gICAgICAgIHRoaXMubWF0QXBwQXBpVXJsID0gZS5tYXRBcHBBcGlVcmw7XHJcbiAgICAgICAgdGhpcy5ncm91cEFwaVVybCA9IGUuZ3JvdXBBcGlVcmw7XHJcbiAgICAgICAgdGhpcy5jb250cm9sY2VudGVyQXBpVXJsID0gZS5jb250cm9sY2VudGVyQXBpVXJsO1xyXG4gICAgICAgIHRoaXMuY2x1c3RlckFwaVVybCA9IGUuY2x1c3RlckFwaVVybDtcclxuICAgICAgICB0aGlzLnpvbmVBcGlVcmwgPSBlLnpvbmVBcGlVcmw7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLnN1YnNjcmliZSgoZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZC5uZXh0KGUuY2xpZW50KVxyXG4gICAgICB9IGVsc2UgaWYgKCFlKSB7XHJcbiAgICAgICAgY29uc3QgdXNlckRhdGE6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgXCJ7fVwiKTtcclxuICAgICAgICB0aGlzLmNsaWVudElkLm5leHQodXNlckRhdGE/LmNsaWVudElkKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0QnJhbmREZXRhaWxzKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5jbGllbnRBcGlVcmx9L2NsaWVudC1kZXRhaWxzLyR7aWR9YClcclxuICB9XHJcbiAvLyBmb290RmFsbCAtIHN0b3JlIHJhaXNlZCB0aWNrZXQgZGV0YWlsc1xyXG4gIGdldEZvb3RmYWxsU3RvcmVSYWlzZURldGFpbHMoY2xpZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmNsaWVudEFwaVVybH0vbGlzdC1zdG9yZS1yZXF1ZXN0P2NsaWVudElkPSR7Y2xpZW50SWR9YClcclxuICB9XHJcblxyXG4gIC8vIGZvb3RGYWxsIC0gZGV0YWlsc1xyXG4gIGdldEZvb3RmYWxsRGV0YWlscyhjbGllbnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuY2xpZW50QXBpVXJsfS9nZXQtZm9vdGZhbGwtZGlyZWN0b3J5LWNvbmZpZz9jbGllbnRJZD0ke2NsaWVudElkfWApXHJcbiAgfVxyXG4gIC8vIHJlc2V0U3RvcmVMaXN0XHJcbiAgcmVzZXRTdG9yZVJlcXVlc3RMaXN0KGRhdGE6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmNsaWVudEFwaVVybH0vcmVzZXQtc3RvcmUtcmVxdWVzdGAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICAvLyBmb290ZmFsbCAtIHN0b3JlIGZvb3RmYWxsIGNvbmZpZ3VyYXRpb24gZGV0YWlsc1xyXG4gIHVwZGF0ZUZvb3RmYWxsRGlyZWN0b3J5Q29uZmlnKGNsaWVudElkOiBzdHJpbmcsIGRhdGE6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuY2xpZW50QXBpVXJsfS91cGRhdGUtZm9vdGZhbGwtZGlyZWN0b3J5LWNvbmZpZz9jbGllbnRJZD0ke2NsaWVudElkfWAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBnZXRDb3VudHJ5Q29kZXMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMubWlkZGxld2FyZUFwaVVybH0vY291bnRyeS1jb2RlYCwpXHJcbiAgfVxyXG4gIGdldFN0b3JlcyhjbGllbnQ6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuc3RvcmVBcGlVcmx9L3N0b3JlLWFzc2lnbi1saXN0P2NsaWVudElkPSR7Y2xpZW50LmNsaWVudElkfWAsKVxyXG4gIH1cclxuICBnZXR1c2VyKGRhdGE6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRpY2tldHNBcGlVcmx9L2luZnJhL2dldE91dHNpZGVVc2VyYCxkYXRhKVxyXG4gIH1cclxuICBnZXRHcm91cHMoY2xpZW50OmFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmdyb3VwQXBpVXJsfS9ncm91cC1hc3NpZ24tbGlzdD9jbGllbnRJZD0ke2NsaWVudC5jbGllbnRJZH1gLClcclxuICB9XHJcbiAgZ2V0QXNzaWduY2x1c3RlcnMoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuY2x1c3RlckFwaVVybH0vQWxsY2x1c3Rlckxpc3RgLCBkYXRhKVxyXG4gIH1cclxuICBhZGRFbWFpbHVzZXIoZGF0YTphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudGlja2V0c0FwaVVybH0vaW5mcmEvQWRkZW1haWxVc2VydjJgLCBkYXRhKVxyXG4gIH1cclxuICBlZGl0RW1haWx1c2VyKGRhdGE6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRpY2tldHNBcGlVcmx9L2luZnJhL2VkaXRlbWFpbFVzZXJgLCBkYXRhKVxyXG4gIH1cclxuICB1cGRhdGVCcmFuZEluZm8oaWQ6IHN0cmluZywgZnJvbWRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmNsaWVudEFwaVVybH0vYnJhbmQtaW5mby8ke2lkfWAsIGZyb21kYXRhKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQmlsbGluZ0RldGFpbHMoaWQ6IHN0cmluZywgZnJvbWRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmNsaWVudEFwaVVybH0vYmlsbGluZy1kZXRhaWxzLyR7aWR9YCwgZnJvbWRhdGEpXHJcbiAgfVxyXG5cclxuICB1cGRhdGVTaWduYXRvcnlEZXRhaWxzKGlkOiBzdHJpbmcsIGZyb21kYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5jbGllbnRBcGlVcmx9L3NpZ25hdG9yeS1kZXRhaWxzLyR7aWR9YCwgZnJvbWRhdGEpXHJcbiAgfVxyXG5cclxuICB1cGRhdGVUaWNrZXRDb25maWd1cmF0aW9uKGlkOiBzdHJpbmcsIGZyb21kYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5jbGllbnRBcGlVcmx9L3RpY2tldC1jb25maWd1cmF0aW9uLyR7aWR9YCwgZnJvbWRhdGEpXHJcbiAgfVxyXG5cclxuICB1cGRhdGVGZWF0dXJlQ29uZmlndXJhdGlvbihpZDogc3RyaW5nLCBmcm9tZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuY2xpZW50QXBpVXJsfS9mZWF0dXJlLWNvbmZpZ3VyYXRpb24vJHtpZH1gLCBmcm9tZGF0YSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZURvbWFpbkRldGFpbENvbmZpZ3VyYXRpb24oaWQ6IHN0cmluZywgZnJvbWRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmNsaWVudEFwaVVybH0vZG9tYWluLWRldGFpbHMvJHtpZH1gLCBmcm9tZGF0YSlcclxuICB9XHJcbiAgdXBkYXRlVXNlckNvbmZpZ3VyYXRpb24oaWQ6IHN0cmluZywgZnJvbWRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmNsaWVudEFwaVVybH0vdXNlci1jb25maWd1cmF0aW9uLyR7aWR9YCwgZnJvbWRhdGEpXHJcbiAgfVxyXG4gIHVwZGF0ZURvY3VtZW50cyhpZDogc3RyaW5nLCBmcm9tZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuY2xpZW50QXBpVXJsfS9kb2N1bWVudHMvJHtpZH1gLCBmcm9tZGF0YSlcclxuICB9XHJcbiAgZ2V0U3RvcmVMaXN0KGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5zdG9yZUFwaVVybH0vZ2V0LXN0b3Jlcz9jbGllbnRJZD0ke2lkfWApXHJcbiAgfVxyXG5cclxuICB1cGRhdGVhdWRpdENvbmZpZ3VyYXRpb24oZnJvbWRhdGE6IGFueSwgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5jbGllbnRBcGlVcmx9L2F1ZGl0LWNvbmZpZ3VyYXRpb24vJHtpZH1gLCBmcm9tZGF0YSlcclxuICB9XHJcblxyXG4gIGdldEF1ZGl0Q29uZmlnKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5jbGllbnRBcGlVcmx9L2F1ZGl0LWNvbmZpZ3VyYXRpb24vJHtpZH1gKVxyXG4gIH1cclxuXHJcbiAgYWRkUmVwb3J0KGlkOiBzdHJpbmcsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5yZXBvcnRBcGlVcmx9L2NyZWF0ZS1yZXBvcnQvJHtpZH1gLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2xpZW50UmVwb3J0cyhpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMucmVwb3J0QXBpVXJsfS9nZXQtY2xpZW50LXJlcG9ydHMvJHtpZH1gKVxyXG4gIH1cclxuXHJcbiAgZ2V0U2luZ2xlUmVwb3J0KGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5yZXBvcnRBcGlVcmx9L2dldC1yZXBvcnQvJHtpZH1gKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlUmVwb3J0KGlkOiBzdHJpbmcsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLnJlcG9ydEFwaVVybH0vdXBkYXRlLXJlcG9ydC8ke2lkfWAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBkZWxldGVSZXBvcnQocmVwb3J0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLnJlcG9ydEFwaVVybH0vZGVsZXRlLXJlcG9ydC8ke2lkfWAsIGRhdGEpXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMucmVwb3J0QXBpVXJsfS9kZWxldGUtcmVwb3J0LyR7cmVwb3J0SWR9YCk7XHJcbiAgfVxyXG5cclxuICBnZXRDc21Vc2VycygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5jbGllbnRBcGlVcmx9L2dldC1jc20tdXNlcnNgKVxyXG4gIH1cclxuXHJcbiAgZ2V0T3BzVXNlcnMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuY2xpZW50QXBpVXJsfS9nZXQtb3BzLXVzZXJzYClcclxuICB9XHJcblxyXG4gIGdldEFsbENvdW50cmllcygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5taWRkbGV3YXJlQXBpVXJsfS9nZXQtY291bnRyaWVzYClcclxuICB9XHJcblxyXG4gIGdldEFsbFN0YXRlcyhjb3VudHJ5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5taWRkbGV3YXJlQXBpVXJsfS9nZXQtY291bnRyeS1zdGF0ZXM/Y291bnRyeT0ke2NvdW50cnl9YClcclxuICB9XHJcblxyXG4gIGdldEFsbENpdGllcyhjb3VudHJ5OiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5taWRkbGV3YXJlQXBpVXJsfS9nZXQtc3RhdGUtY2l0aWVzP2NvdW50cnk9JHtjb3VudHJ5fSZzdGF0ZT0ke3N0YXRlfWApXHJcbiAgfVxyXG5cclxuICBzcG9jVGFibGVEYXRhKGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUFwaVVybH0vZ2V0LXNwb2MtbGlzdGAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBzcG9jVGFibGVEYXRhRXhwb3J0KGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUFwaVVybH0vZ2V0LXNwb2MtbGlzdGAsIGRhdGEsIHsgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInIH0pXHJcbiAgfVxyXG5cclxuICBnZXRTcG9jRGV0YWlscyhzdG9yZUlkOiBzdHJpbmcsIHNwb2NJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQXBpVXJsfS9nZXQtc3BvYy8ke3N0b3JlSWR9YCwgeyBzcG9jSWQ6IHNwb2NJZCB9KVxyXG4gIH1cclxuXHJcbiAgZGVsZXRlU3BvY0RldGFpbHMoc3RvcmVJZDogc3RyaW5nLCBzcG9jSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUFwaVVybH0vZGVsZXRlLXNwb2MvJHtzdG9yZUlkfWAsIHsgc3BvY0lkOiBzcG9jSWQgfSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZVNwb2NEZXRhaWxzKHN0b3JlSWQ6IHN0cmluZywgZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQXBpVXJsfS91cGRhdGUtc3BvYy8ke3N0b3JlSWR9YCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldEFjdGl2aXR5TG9ncyhkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuY2xpZW50QXBpVXJsfS9hY3Rpdml0eS1sb2dgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgYXNzaWduQ3NtKGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy51c2VyQXBpVXJsfS9hc3NpZ24tY2xpZW50YCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldEFzc2lnbmVkVXNlcnMoY2xpZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnVzZXJBcGlVcmx9L2dldC1hc3NpZ24tY2xpZW50P2NsaWVudElkPSR7Y2xpZW50SWR9YClcclxuICB9XHJcblxyXG4gIGVtYWlsVXNlckxpc3QoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRpY2tldHNBcGlVcmx9L2luZnJhL2VtYWlsVXNlckxpc3R2MmAsIGRhdGEpXHJcbiAgfVxyXG4gIGRlbGV0ZU91dHNpZGVVc2VyKGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50aWNrZXRzQXBpVXJsfS9pbmZyYS9kZWxldGVPdXRzaWRlVXNlcmAsIGRhdGEpXHJcbiAgfVxyXG4gIE91dHNpZGVVc2VyTGlzdChkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudGlja2V0c0FwaVVybH0vaW5mcmEvT3V0c2lkZVVzZXJMaXN0djJgLCBkYXRhKVxyXG4gIH1cclxuICBzYXZlSW5mcmFFbWFpbENvbmZpZyhkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudGlja2V0c0FwaVVybH0vaW5mcmEvc2F2ZUluZnJhRW1haWxDb25maWdgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQnJhbmRDb25maWcoaWQ6IHN0cmluZywgZnJvbWRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLm1hdEFwcEFwaVVybH0vdXBkYXRlQnJhbmRDb25maWc/Y2xpZW50SWQ9JHtpZH1gLCBmcm9tZGF0YSlcclxuICB9XHJcbiAgZ2V0QnJhbmRDb25maWcoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLm1hdEFwcEFwaVVybH0vZ2V0QnJhbmRDb25maWc/Y2xpZW50SWQ9JHtpZH1gKVxyXG4gIH1cclxuICBzYXZlQXNUZW1wbGF0ZShidWZmZXI6IGFueSwgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0YTogQmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7XHJcbiAgICAgIHR5cGU6IEVYQ0VMX1RZUEVcclxuICAgIH0pO1xyXG4gICAgRmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSArIEVYQ0VMX0VYVEVOU0lPTik7XHJcbiAgfVxyXG4gIGxvY2F0aW9uTGlzdERhdGEoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQXBpVXJsfS9sb2NhdGlvbkxpc3RgLCBkYXRhKVxyXG4gIH1cclxuICBnZXRDbGllbnRJbmZvKGNsaWVudD86YW55KTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICBpZiAoIWNsaWVudCkge1xyXG4gICAgICByZXR1cm4gb2YoeyBlcnJvcjogJ0ludmFsaWQgY2xpZW50SWQnIH0pOyBcclxuICAgIH1cclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuY2xpZW50QXBpVXJsfS9kZXRhaWxlZC1jbGllbnQtY291bnQ/Y2xpZW50SWQ9JHtjbGllbnR9YDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odXJsKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3I8YW55PignZ2V0Q2xpZW50SW5mbycsIHsgZXJyb3I6ICdBUEkgcmVxdWVzdCBmYWlsZWQnIH0pKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldGNvbnRyb2xjZW50ZXJUYXNrTGlzdChjbGllbnRJZDphbnkpe1xyXG4gICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuY29udHJvbGNlbnRlckFwaVVybH0vZ2V0LXRhc2stbGlzdD9jbGllbnRJZD0ke2NsaWVudElkfWApXHJcbiAgfVxyXG5cclxuICB1cGRhdGVjb250cm9sY2VudGVyVGFza0xpc3Qob2JqOmFueSxjbGllbnRJZDphbnkpe1xyXG4gICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuY29udHJvbGNlbnRlckFwaVVybH0vdXBzZXJ0LXRhc2s/Y2xpZW50SWQ9JHtjbGllbnRJZH1gLG9iailcclxuICB9XHJcbiAgc3VibWl0UmV2b3BDb25maWcob2JqOmFueSl7XHJcbiAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuY2xpZW50QXBpVXJsfS9yZXZvcGNvbmZpZ2Asb2JqKVxyXG4gIH1cclxuICBnZXRSZXZvcENvbmZpZyhjbGllbnRJZDphbnkpe1xyXG4gICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuY2xpZW50QXBpVXJsfS9yZXZvcGNvbmZpZz9jbGllbnRJZD0ke2NsaWVudElkfWApXHJcbiAgfVxyXG5cclxuIGdldE9wZW5DbG9zZUxpc3QoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQXBpVXJsfS9zdG9yZW9wZW5jbG9zZUxpc3RgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0T3BlbkNsb3NlTGlzdGV4cG9ydChkYXRhOmFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUFwaVVybH0vc3RvcmVvcGVuY2xvc2VMaXN0YCwgZGF0YSwgeyByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicgfSlcclxuICB9XHJcbiAgXHJcbiAgZ2V0VXBkYXRlT3BlbkNsb3NlTGlzdCggZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQXBpVXJsfS91cGRhdGVzdG9yZW9wZW5jbG9zZUxpc3RgLCBkYXRhKVxyXG4gIH1cclxuICBcclxuICAvLyBOZXcgQVBJIGZvciB6b25lIGNvbmZpZ3VyYXRpb24gLSBhZGQgY3VzdG9tIHRhZyB2MlxyXG4gIGdldFpvbmVDb25maWdUYWdnaW5nRGV0YWlscyhkYXRhOmFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy56b25lQXBpVXJsfS9nZXRab25lVGFnZ2luZ0RldGFpbHNgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgYWRkWm9uZUNvbmZpZ0N1c3RvbVRhZyhkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuem9uZUFwaVVybH0vYWRkWm9uZUN1c3RvbVRhZ2AsZGF0YSk7XHJcbiAgfVxyXG5cclxuICAgYWRkQnVsa1pvbmVVcGxvYWQoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnpvbmVBcGlVcmx9L2J1bGtab25lVXBsb2FkYCxkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVpvbmVDb25maWdDdXN0b21UYWcoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnpvbmVBcGlVcmx9L3VwZGF0ZVpvbmVDdXN0b21UYWdgLGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlWm9uZUNvbmZpZ0N1c3RvbVRhZyhkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuem9uZUFwaVVybH0vZGVsZXRlWm9uZUN1c3RvbVRhZ2AsZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvLyB6b25lIGdyb3VwIEFQSXNcclxuICBnZXRab25lR3JvdXBEZXRhaWxzKGRhdGE6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnpvbmVBcGlVcmx9L2dldFpvbmVHcm91cERldGFpbHNgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0Wm9uZUdyb3VwRGV0YWlsc0V4cG9ydChkYXRhOmFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy56b25lQXBpVXJsfS9nZXRab25lR3JvdXBEZXRhaWxzYCwgZGF0YSwgeyByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicgfSlcclxuICB9XHJcblxyXG4gIGFkZFpvbmVHcm91cChkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuem9uZUFwaVVybH0vYWRkWm9uZUdyb3VwYCxkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwbG9hZEJ1bGtab25lR3JvdXAoZGF0YTphbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnpvbmVBcGlVcmx9L2J1bGtab25lR3JvdXBVcGxvYWRgLGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlWm9uZUdyb3VwKGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy56b25lQXBpVXJsfS91cGRhdGVab25lR3JvdXBgLGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlWm9uZUdyb3VwKGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy56b25lQXBpVXJsfS9kZWxldGVab25lR3JvdXBgLGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLy8gem9uZSB0YWdnaW5nIGV4cG9ydCBBUElcclxuICBnZXRab25lQ29uZmlnVGFnZ2luZ0RldGFpbHNFeHBvcnQoZGF0YTphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuem9uZUFwaVVybH0vZ2V0Wm9uZVRhZ2dpbmdEZXRhaWxzYCwgZGF0YSwgeyByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicgfSlcclxuICB9XHJcblxyXG4gICAgcHVibGljIGV4cG9ydEFzRXhjZWxGaWxlKGpzb246IGFueVtdLCBleGNlbEZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgY29uc3Qgd29ya3NoZWV0OiBYTFNYLldvcmtTaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldChqc29uKTtcclxuICAgICAgY29uc3Qgd29ya2Jvb2s6IFhMU1guV29ya0Jvb2sgPSB7IFNoZWV0czogeyAnZGF0YSc6IHdvcmtzaGVldCB9LCBTaGVldE5hbWVzOiBbJ2RhdGEnXSB9O1xyXG4gICAgICBjb25zdCBleGNlbEJ1ZmZlcjogYW55ID0gWExTWC53cml0ZSh3b3JrYm9vaywgeyBib29rVHlwZTogJ3hsc3gnLCB0eXBlOiAnYXJyYXknIH0pO1xyXG4gICAgICB0aGlzLnNhdmVBc0V4Y2VsRmlsZShleGNlbEJ1ZmZlciwgZXhjZWxGaWxlTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNhdmVBc0V4Y2VsRmlsZShidWZmZXI6IGFueSwgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xyXG4gICAgICAgICAgdHlwZTogRVhDRUxfVFlQRVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUgKyAnIExpc3QnICsgRVhDRUxfRVhURU5TSU9OKTtcclxuICAgICAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUVycm9yPFQ+KG9wZXJhdGlvbiA9ICdvcGVyYXRpb24nLCByZXN1bHQ/OiBUKSB7XHJcbiAgICByZXR1cm4gKGVycm9yOiBhbnkpOiBPYnNlcnZhYmxlPFQ+ID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcihgJHtvcGVyYXRpb259IGZhaWxlZDogJHtlcnJvci5tZXNzYWdlfWApO1xyXG4gICAgICByZXR1cm4gb2YocmVzdWx0IGFzIFQpO1xyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,37 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as FileSaver from 'file-saver';
3
+ import * as XLSX from 'xlsx';
4
+ import * as i0 from "@angular/core";
5
+ const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
6
+ const EXCEL_EXTENSION = '.xlsx';
7
+ export class ExcelService {
8
+ constructor() { }
9
+ exportAsExcelFile(json, excelFileName) {
10
+ const worksheet = XLSX.utils.json_to_sheet(json);
11
+ const workbook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };
12
+ const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
13
+ this.saveAsExcelFile(excelBuffer, excelFileName);
14
+ }
15
+ saveAsExcelFile(buffer, fileName) {
16
+ console.log(buffer, fileName);
17
+ const data = new Blob([buffer], {
18
+ type: EXCEL_TYPE
19
+ });
20
+ FileSaver.saveAs(data, fileName + 'list' + EXCEL_EXTENSION);
21
+ }
22
+ saveAsTemplate(buffer, fileName) {
23
+ const data = new Blob([buffer], {
24
+ type: EXCEL_TYPE
25
+ });
26
+ FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);
27
+ }
28
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
29
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcelService, providedIn: 'root' });
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcelService, decorators: [{
32
+ type: Injectable,
33
+ args: [{
34
+ providedIn: 'root'
35
+ }]
36
+ }], ctorParameters: () => [] });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zZXR0aW5ncy9zcmMvbGliL3NlcnZpY2VzL2V4Y2VsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQzs7QUFFN0IsTUFBTSxVQUFVLEdBQUcsaUZBQWlGLENBQUM7QUFDckcsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDO0FBS2hDLE1BQU0sT0FBTyxZQUFZO0lBR3ZCLGdCQUFnQixDQUFDO0lBRVYsaUJBQWlCLENBQUMsSUFBVyxFQUFFLGFBQXFCO1FBQ3pELE1BQU0sU0FBUyxHQUFtQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRSxNQUFNLFFBQVEsR0FBa0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN4RixNQUFNLFdBQVcsR0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLGVBQWUsQ0FBQyxNQUFXLEVBQUUsUUFBZ0I7UUFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFOUIsTUFBTSxJQUFJLEdBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNwQyxJQUFJLEVBQUUsVUFBVTtTQUNqQixDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLEdBQUcsTUFBTSxHQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyxjQUFjLENBQUMsTUFBVyxFQUFFLFFBQWdCO1FBQ2xELE1BQU0sSUFBSSxHQUFTLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxFQUFFLFVBQVU7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxHQUFHLGVBQWUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7d0dBMUJVLFlBQVk7NEdBQVosWUFBWSxjQUZYLE1BQU07OzRGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XHJcblxyXG5jb25zdCBFWENFTF9UWVBFID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2NoYXJzZXQ9VVRGLTgnO1xyXG5jb25zdCBFWENFTF9FWFRFTlNJT04gPSAnLnhsc3gnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRXhjZWxTZXJ2aWNlIHtcclxuXHJcbiAgXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgcHVibGljIGV4cG9ydEFzRXhjZWxGaWxlKGpzb246IGFueVtdLCBleGNlbEZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IHdvcmtzaGVldDogWExTWC5Xb3JrU2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoanNvbik7XHJcbiAgICBjb25zdCB3b3JrYm9vazogWExTWC5Xb3JrQm9vayA9IHsgU2hlZXRzOiB7ICdkYXRhJzogd29ya3NoZWV0IH0sIFNoZWV0TmFtZXM6IFsnZGF0YSddIH07XHJcbiAgICBjb25zdCBleGNlbEJ1ZmZlcjogYW55ID0gWExTWC53cml0ZSh3b3JrYm9vaywgeyBib29rVHlwZTogJ3hsc3gnLCB0eXBlOiAnYXJyYXknIH0pO1xyXG4gICAgdGhpcy5zYXZlQXNFeGNlbEZpbGUoZXhjZWxCdWZmZXIsIGV4Y2VsRmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVBc0V4Y2VsRmlsZShidWZmZXI6IGFueSwgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coYnVmZmVyLCBmaWxlTmFtZSk7XHJcbiAgICBcclxuICAgIGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xyXG4gICAgICB0eXBlOiBFWENFTF9UWVBFXHJcbiAgICB9KTtcclxuICAgIEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUgKyAnbGlzdCcrIEVYQ0VMX0VYVEVOU0lPTik7XHJcbiAgfVxyXG4gIFxyXG4gIHByaXZhdGUgc2F2ZUFzVGVtcGxhdGUoYnVmZmVyOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xyXG4gICAgICB0eXBlOiBFWENFTF9UWVBFXHJcbiAgICB9KTtcclxuICAgIEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUgKyBFWENFTF9FWFRFTlNJT04pO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -33,8 +33,8 @@ import { MatChipsModule } from '@angular/material/chips';
33
33
  import { MatIconModule } from '@angular/material/icon';
34
34
  import { MatFormFieldModule } from '@angular/material/form-field';
35
35
 
36
- const EXCEL_TYPE$1 = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
37
- const EXCEL_EXTENSION$1 = '.xlsx';
36
+ const EXCEL_TYPE$2 = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
37
+ const EXCEL_EXTENSION$2 = '.xlsx';
38
38
  class PaymentSubscriptionService {
39
39
  http;
40
40
  gs;
@@ -79,15 +79,15 @@ class PaymentSubscriptionService {
79
79
  }
80
80
  saveAsExcelFile(buffer, fileName) {
81
81
  const data = new Blob([buffer], {
82
- type: EXCEL_TYPE$1
82
+ type: EXCEL_TYPE$2
83
83
  });
84
- FileSaver.saveAs(data, fileName + 'list' + EXCEL_EXTENSION$1);
84
+ FileSaver.saveAs(data, fileName + 'list' + EXCEL_EXTENSION$2);
85
85
  }
86
86
  saveAsTemplate(buffer, fileName) {
87
87
  const data = new Blob([buffer], {
88
- type: EXCEL_TYPE$1
88
+ type: EXCEL_TYPE$2
89
89
  });
90
- FileSaver.saveAs(data, fileName + EXCEL_EXTENSION$1);
90
+ FileSaver.saveAs(data, fileName + EXCEL_EXTENSION$2);
91
91
  }
92
92
  destroy$ = new Subject();
93
93
  ngOnDestroy() {
@@ -397,8 +397,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
397
397
  type: Input
398
398
  }] } });
399
399
 
400
- const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
401
- const EXCEL_EXTENSION = '.xlsx';
400
+ const EXCEL_TYPE$1 = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
401
+ const EXCEL_EXTENSION$1 = '.xlsx';
402
402
  class ClientApiService {
403
403
  http;
404
404
  gs;
@@ -594,9 +594,9 @@ class ClientApiService {
594
594
  }
595
595
  saveAsTemplate(buffer, fileName) {
596
596
  const data = new Blob([buffer], {
597
- type: EXCEL_TYPE
597
+ type: EXCEL_TYPE$1
598
598
  });
599
- FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);
599
+ FileSaver.saveAs(data, fileName + EXCEL_EXTENSION$1);
600
600
  }
601
601
  locationListData(data) {
602
602
  return this.http.post(`${this.storeApiUrl}/locationList`, data);
@@ -623,6 +623,9 @@ class ClientApiService {
623
623
  getOpenCloseList(data) {
624
624
  return this.http.post(`${this.storeApiUrl}/storeopencloseList`, data);
625
625
  }
626
+ getOpenCloseListexport(data) {
627
+ return this.http.post(`${this.storeApiUrl}/storeopencloseList`, data, { responseType: 'arraybuffer' });
628
+ }
626
629
  getUpdateOpenCloseList(data) {
627
630
  return this.http.post(`${this.storeApiUrl}/updatestoreopencloseList`, data);
628
631
  }
@@ -673,9 +676,9 @@ class ClientApiService {
673
676
  }
674
677
  saveAsExcelFile(buffer, fileName) {
675
678
  const data = new Blob([buffer], {
676
- type: EXCEL_TYPE
679
+ type: EXCEL_TYPE$1
677
680
  });
678
- FileSaver.saveAs(data, fileName + ' List' + EXCEL_EXTENSION);
681
+ FileSaver.saveAs(data, fileName + ' List' + EXCEL_EXTENSION$1);
679
682
  }
680
683
  handleError(operation = 'operation', result) {
681
684
  return (error) => {
@@ -8155,7 +8158,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
8155
8158
  args: [{ selector: 'lib-control-center-configuration', template: "<div class=\"sub-text mb-5\">Define CCTV flags of your choice</div>\r\n<div class=\"outer-container\">\r\n <div class=\"input-container form-control\">\r\n <ng-container *ngFor=\"let details of taskDetails;let i = index\">\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{details}}</span>\r\n <span (click)=\"removeTask(i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px; margin-left:3px\" [(ngModel)]=\"addedTask\" (change)=\"addNewTask()\" type=\"text\"\r\n id=\"emailValue\">\r\n </div>\r\n</div>\r\n<div class=\"w-100 mt-10\">\r\n <div *ngIf=\"(gs.userAccess | async)?.Global_Configuration_isEdit\" class=\"d-flex justify-content-end\">\r\n <button class=\"btn btn-sm btn-outline me-5\" (click)=\"cancelChanges()\">Cancel</button>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"saveChanges()\">Save Changes</button>\r\n </div>\r\n</div>\r\n", styles: [".sub-text{color:var(--Gray-500, #667085);font-size:16px;font-weight:500;line-height:24px}.badge-container{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;min-height:44px;max-height:200px!important;overflow-y:scroll;display:flex;flex-wrap:wrap}.badge-container input{float:right}.outer-container{position:relative}.outer-container .form-control{padding-top:0;padding-bottom:0}.outer-container .input-container{border:1px solid black;height:100%;width:100%;display:flex;flex-wrap:wrap;border:1px solid #D0D5DD}.outer-container .input-container input{all:unset;flex:1;min-width:50px}.outer-container .input-container .chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .chip:nth-child(1){margin-left:0}\n"] }]
8156
8159
  }], ctorParameters: () => [{ type: ClientApiService }, { type: i4.ToastService }, { type: i3.GlobalStateService }] });
8157
8160
 
8161
+ const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
8162
+ const EXCEL_EXTENSION = '.xlsx';
8163
+ class ExcelService {
8164
+ constructor() { }
8165
+ exportAsExcelFile(json, excelFileName) {
8166
+ const worksheet = XLSX.utils.json_to_sheet(json);
8167
+ const workbook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };
8168
+ const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
8169
+ this.saveAsExcelFile(excelBuffer, excelFileName);
8170
+ }
8171
+ saveAsExcelFile(buffer, fileName) {
8172
+ console.log(buffer, fileName);
8173
+ const data = new Blob([buffer], {
8174
+ type: EXCEL_TYPE
8175
+ });
8176
+ FileSaver.saveAs(data, fileName + 'list' + EXCEL_EXTENSION);
8177
+ }
8178
+ saveAsTemplate(buffer, fileName) {
8179
+ const data = new Blob([buffer], {
8180
+ type: EXCEL_TYPE
8181
+ });
8182
+ FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);
8183
+ }
8184
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
8185
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcelService, providedIn: 'root' });
8186
+ }
8187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcelService, decorators: [{
8188
+ type: Injectable,
8189
+ args: [{
8190
+ providedIn: 'root'
8191
+ }]
8192
+ }], ctorParameters: () => [] });
8193
+
8158
8194
  class StoreTimeConfigurationComponent {
8195
+ excelService;
8159
8196
  clientApi;
8160
8197
  modalService;
8161
8198
  ts;
@@ -8167,7 +8204,8 @@ class StoreTimeConfigurationComponent {
8167
8204
  limit = 10;
8168
8205
  offset = 1;
8169
8206
  destroy$ = new Subject();
8170
- constructor(clientApi, modalService, ts, cd) {
8207
+ constructor(excelService, clientApi, modalService, ts, cd) {
8208
+ this.excelService = excelService;
8171
8209
  this.clientApi = clientApi;
8172
8210
  this.modalService = modalService;
8173
8211
  this.ts = ts;
@@ -8338,17 +8376,15 @@ class StoreTimeConfigurationComponent {
8338
8376
  this.dropDown = false;
8339
8377
  }
8340
8378
  downloadTemplateV2() {
8341
- let excelData = [];
8342
- if (this.storeListData && this.storeListData?.length) {
8343
- this.storeListData.forEach((item) => {
8344
- excelData.push({
8345
- storeName: item.storeName ? item.storeName : '',
8346
- openTime: item.openTime ? item.openTime : '',
8347
- closeTime: item.closeTime ? item.closeTime : '',
8348
- });
8349
- });
8350
- }
8351
- this.clientApi.exportAsExcelFile(excelData, `Store Time`);
8379
+ this.tableObject.export = true;
8380
+ this.clientApi.getOpenCloseListexport(this.tableObject).pipe(takeUntil(this.destroy$)).subscribe({
8381
+ next: (res) => {
8382
+ if (res) {
8383
+ this.tableObject.export = false;
8384
+ this.excelService.saveAsExcelFile(res, 'store open&close time');
8385
+ }
8386
+ }
8387
+ });
8352
8388
  }
8353
8389
  onCancel() {
8354
8390
  this.isEditing = '';
@@ -8491,13 +8527,13 @@ class StoreTimeConfigurationComponent {
8491
8527
  }
8492
8528
  });
8493
8529
  }
8494
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StoreTimeConfigurationComponent, deps: [{ token: ClientApiService }, { token: i1$1.NgbModal }, { token: i4.ToastService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
8530
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StoreTimeConfigurationComponent, deps: [{ token: ExcelService }, { token: ClientApiService }, { token: i1$1.NgbModal }, { token: i4.ToastService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
8495
8531
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: StoreTimeConfigurationComponent, selector: "lib-store-time-configuration", viewQueries: [{ propertyName: "inputFile", first: true, predicate: ["inputFile"], descendants: true }, { propertyName: "fileInput1", first: true, predicate: ["file1"], descendants: true }, { propertyName: "bulkUploadPopup", first: true, predicate: ["bulkUploadPopup"], descendants: true }], ngImport: i0, template: "<div class=\"row\">\r\n <ng-container>\r\n <div class=\"col-12 mb-2\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"badge badge-light-default\">\r\n <span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_9503_97591)\">\r\n <path\r\n d=\"M7.9987 10.6654V7.9987M7.9987 5.33203H8.00536M14.6654 7.9987C14.6654 11.6806 11.6806 14.6654 7.9987 14.6654C4.3168 14.6654 1.33203 11.6806 1.33203 7.9987C1.33203 4.3168 4.3168 1.33203 7.9987 1.33203C11.6806 1.33203 14.6654 4.3168 14.6654 7.9987Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_9503_97591\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"store-conf\">You Can Edit only Open time and Close time</span>\r\n </div>\r\n <ng-container *ngIf=\"!loading && storeListData?.length && !noData\">\r\n <button *ngIf=\"isEditing ===''\" (click)=\"editStoreList('edit')\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_9964_44262)\">\r\n <path d=\"M9.16797 3.33417H3.33464C2.89261 3.33417 2.46868 3.50977 2.15612 3.82233C1.84356 4.13489 1.66797 4.55881 1.66797 5.00084V16.6675C1.66797 17.1095 1.84356 17.5335 2.15612 17.846C2.46868 18.1586 2.89261 18.3342 3.33464 18.3342H15.0013C15.4433 18.3342 15.8673 18.1586 16.1798 17.846C16.4924 17.5335 16.668 17.1095 16.668 16.6675V10.8342M15.418 2.08417C15.7495 1.75265 16.1991 1.56641 16.668 1.56641C17.1368 1.56641 17.5864 1.75265 17.918 2.08417C18.2495 2.41569 18.4357 2.86533 18.4357 3.33417C18.4357 3.80301 18.2495 4.25265 17.918 4.58417L10.0013 12.5008L6.66797 13.3342L7.5013 10.0008L15.418 2.08417Z\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_9964_44262\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Store Time</button>\r\n\r\n <div *ngIf=\"isEditing ==='edit'\" class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <a type=\"submit\" class=\"btn btn-primary px-4 \" (click)=\"onSubmit()\"><span>Save Changes</span></a>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9 mt-3\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1 w-50\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\"\r\n autocomplete=\"off\" placeholder=\"Search with Store Name, Store ID\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 mt-3 text-end ps-15\">\r\n <div class=\"position-relative w-100 mt-5 mb-5\">\r\n <button type=\"button\"\r\n class=\"btn py-3 btn-default w-100 btn-outline btn-outline-default rounded-3 text-nowrap border-val d-flex justify-content-between\">\r\n <span class=\"me-3 cursor-pointer\" #upload (click)=\"inputFile.click()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> <span class=\"template-dropdown bg-white ms-3\">BulkUpload </span>\r\n </span>\r\n <span><input style=\"display: none;\" type=\"file\" #inputFile accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\r\n id=\"kt_account_team_size_select_1\" (change)=\"onFileUpload($event)\" /></span>\r\n <span class=\"subtitle mx-3 me-2\"> | </span>\r\n <span class=\"cursor-pointer\" (click)=\"openDropdown($event)\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M6 9L12 15L18 9\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </button>\r\n\r\n <div *ngIf=\"dropDown\" class=\"card template-dropdown h-40px w-100 pe-5 position-absolute rounded-3 z-1 top-50px end-0\">\r\n <ul class=\"list-unstyled mb-0 w-auto cursor-pointer\" (click)=\"downloadTemplate()\">\r\n <li class=\"pe-5 fw-semibold cursor-pointer py-2\">Download Template</li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"downloadDropDown\"\r\n class=\"card w-auto py-2 position-absolute productdrop top-10\">\r\n <ul class=\"list-unstyled mb-2\">\r\n <li class=\"producttext items cursor-pointer p-2\"\r\n (click)=\"downloadTemplate()\">\r\n Download Template</li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n<ng-container *ngIf=\"noData\" >\r\n <div class=\"d-flex align-items-center justify-content-center\" >\r\n <img width=\"300px\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\"> \r\n </div>\r\n</ng-container>\r\n \r\n\r\n<ng-container *ngIf=\"loading\" >\r\n<div class=\"shimmer-card w-100\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n</ng-container>\r\n<div *ngIf=\"!loading && storeListData?.length && !noData\" class=\"card-body mt-2\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg \r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('openTime')\">Open Time<svg \r\n [ngClass]=\"sortedColumn === 'openTime' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'openTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('openTime')\">Close Time<svg \r\n [ngClass]=\"sortedColumn === 'openTime' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'openTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of storeListData; let i=index;\">\r\n <td>{{obj.storeName}}</td>\r\n <td><span *ngIf=\"isEditing===''\">{{formatTime(obj.openTime)}}</span>\r\n <input *ngIf=\"isEditing==='edit'\" [(ngModel)]=\"obj.openTime\" (change)=\"updateCloseTime(obj)\" class=\"form-control form-control-sm\" type=\"time\">\r\n </td>\r\n <td> <span *ngIf=\"isEditing===''\">{{ formatTime(obj.closeTime) }}</span>\r\n <input *ngIf=\"isEditing==='edit'\" class=\"form-control form-control-sm\" type=\"time\" [(ngModel)]=\"obj.closeTime\" [min]=\"obj.openTime\" (change)=\"validateCloseTime()\">\r\n <div *ngIf=\"obj.showError\" class=\"text-danger\">\r\n Close time must be later than open time.\r\n </div> \r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table>\r\n </div>\r\n</div>\r\n<div *ngIf=\"!loading && storeListData?.length && !noData\" class=\"card-footer\">\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalCount\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n</div>\r\n\r\n<ng-template #bulkUploadPopup let-model>\r\n <div class=\"p-5\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-5 text-nowrap\">\r\n <div class=\"my-5 d-flex\">\r\n <div class=\"d-flex\">\r\n <span class=\"symbol symbol-75px symbol-circle\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path d=\"M27.5 22.5V25.8333C27.5 26.2754 27.3244 26.6993 27.0118 27.0118C26.6993 27.3244 26.2754 27.5 25.8333 27.5H14.1667C13.7246 27.5 13.3007 27.3244 12.9882 27.0118C12.6756 26.6993 12.5 26.2754 12.5 25.8333V22.5M24.1667 16.6667L20 12.5M20 12.5L15.8333 16.6667M20 12.5V22.5\" stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span class=\"ms-3 pt-2 fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Bulk Upload</span>\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\">\r\n <div class=\"upload-text\">Step1 - <span class=\"text-decoration-underline text-primary download-text\"><span (click)=\"downloadTemplateV2()\" class=\"cursor-pointer\">Download the template here</span></span></div>\r\n <div class=\"upload-text\">Step2 - Add your data to the Template File with existing store data</div>\r\n <div class=\"upload-text\">Step3 - Upload it below for processing</div>\r\n <div class=\"note-text\">**Note : On uploading, all the existing data will be replaced</div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-footer border-0 text-end mt-3 pt-0\">\r\n <button class=\"btn btn-md btn-default btn-outline\" (click)=\"model.close()\">Cancel</button>\r\n <button class=\"btn py-3 btn-default ms-3 btn-primary\" (click)=\"file1.click()\">Upload</button>\r\n <input style=\"visibility: hidden;\" #file1 type=\"file\" id=\"kt_account_team_size_select_2\"\r\n (change)=\"onFileUpload($event)\" />\r\n </div>\r\n \r\n \r\n </div>\r\n\r\n</ng-template>", styles: [".badge{padding:8px!important;border-radius:8px!important;background:var(--Gray-100, #F2F4F7)!important}.store-conf{color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:500;line-height:18px}.productdrop{top:10;left:83%;z-index:10}.producttext{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.template-dropdown{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.upload-text{color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:30px}.download-text{color:var(--Primary-800, #008EDF);font-size:14px;font-weight:500;line-height:20px}.note-text{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.rotate{rotate:180deg;transition:1s}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }] });
8496
8532
  }
8497
8533
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StoreTimeConfigurationComponent, decorators: [{
8498
8534
  type: Component,
8499
8535
  args: [{ selector: 'lib-store-time-configuration', template: "<div class=\"row\">\r\n <ng-container>\r\n <div class=\"col-12 mb-2\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"badge badge-light-default\">\r\n <span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_9503_97591)\">\r\n <path\r\n d=\"M7.9987 10.6654V7.9987M7.9987 5.33203H8.00536M14.6654 7.9987C14.6654 11.6806 11.6806 14.6654 7.9987 14.6654C4.3168 14.6654 1.33203 11.6806 1.33203 7.9987C1.33203 4.3168 4.3168 1.33203 7.9987 1.33203C11.6806 1.33203 14.6654 4.3168 14.6654 7.9987Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_9503_97591\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"store-conf\">You Can Edit only Open time and Close time</span>\r\n </div>\r\n <ng-container *ngIf=\"!loading && storeListData?.length && !noData\">\r\n <button *ngIf=\"isEditing ===''\" (click)=\"editStoreList('edit')\" type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_9964_44262)\">\r\n <path d=\"M9.16797 3.33417H3.33464C2.89261 3.33417 2.46868 3.50977 2.15612 3.82233C1.84356 4.13489 1.66797 4.55881 1.66797 5.00084V16.6675C1.66797 17.1095 1.84356 17.5335 2.15612 17.846C2.46868 18.1586 2.89261 18.3342 3.33464 18.3342H15.0013C15.4433 18.3342 15.8673 18.1586 16.1798 17.846C16.4924 17.5335 16.668 17.1095 16.668 16.6675V10.8342M15.418 2.08417C15.7495 1.75265 16.1991 1.56641 16.668 1.56641C17.1368 1.56641 17.5864 1.75265 17.918 2.08417C18.2495 2.41569 18.4357 2.86533 18.4357 3.33417C18.4357 3.80301 18.2495 4.25265 17.918 4.58417L10.0013 12.5008L6.66797 13.3342L7.5013 10.0008L15.418 2.08417Z\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_9964_44262\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Store Time</button>\r\n\r\n <div *ngIf=\"isEditing ==='edit'\" class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline mt-1 me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <a type=\"submit\" class=\"btn btn-primary px-4 \" (click)=\"onSubmit()\"><span>Save Changes</span></a>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9 mt-3\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1 w-50\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\"\r\n autocomplete=\"off\" placeholder=\"Search with Store Name, Store ID\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3 mt-3 text-end ps-15\">\r\n <div class=\"position-relative w-100 mt-5 mb-5\">\r\n <button type=\"button\"\r\n class=\"btn py-3 btn-default w-100 btn-outline btn-outline-default rounded-3 text-nowrap border-val d-flex justify-content-between\">\r\n <span class=\"me-3 cursor-pointer\" #upload (click)=\"inputFile.click()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> <span class=\"template-dropdown bg-white ms-3\">BulkUpload </span>\r\n </span>\r\n <span><input style=\"display: none;\" type=\"file\" #inputFile accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\r\n id=\"kt_account_team_size_select_1\" (change)=\"onFileUpload($event)\" /></span>\r\n <span class=\"subtitle mx-3 me-2\"> | </span>\r\n <span class=\"cursor-pointer\" (click)=\"openDropdown($event)\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M6 9L12 15L18 9\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </button>\r\n\r\n <div *ngIf=\"dropDown\" class=\"card template-dropdown h-40px w-100 pe-5 position-absolute rounded-3 z-1 top-50px end-0\">\r\n <ul class=\"list-unstyled mb-0 w-auto cursor-pointer\" (click)=\"downloadTemplate()\">\r\n <li class=\"pe-5 fw-semibold cursor-pointer py-2\">Download Template</li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"downloadDropDown\"\r\n class=\"card w-auto py-2 position-absolute productdrop top-10\">\r\n <ul class=\"list-unstyled mb-2\">\r\n <li class=\"producttext items cursor-pointer p-2\"\r\n (click)=\"downloadTemplate()\">\r\n Download Template</li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n<ng-container *ngIf=\"noData\" >\r\n <div class=\"d-flex align-items-center justify-content-center\" >\r\n <img width=\"300px\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\"> \r\n </div>\r\n</ng-container>\r\n \r\n\r\n<ng-container *ngIf=\"loading\" >\r\n<div class=\"shimmer-card w-100\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n</ng-container>\r\n<div *ngIf=\"!loading && storeListData?.length && !noData\" class=\"card-body mt-2\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg \r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('openTime')\">Open Time<svg \r\n [ngClass]=\"sortedColumn === 'openTime' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'openTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span></th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('openTime')\">Close Time<svg \r\n [ngClass]=\"sortedColumn === 'openTime' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'openTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of storeListData; let i=index;\">\r\n <td>{{obj.storeName}}</td>\r\n <td><span *ngIf=\"isEditing===''\">{{formatTime(obj.openTime)}}</span>\r\n <input *ngIf=\"isEditing==='edit'\" [(ngModel)]=\"obj.openTime\" (change)=\"updateCloseTime(obj)\" class=\"form-control form-control-sm\" type=\"time\">\r\n </td>\r\n <td> <span *ngIf=\"isEditing===''\">{{ formatTime(obj.closeTime) }}</span>\r\n <input *ngIf=\"isEditing==='edit'\" class=\"form-control form-control-sm\" type=\"time\" [(ngModel)]=\"obj.closeTime\" [min]=\"obj.openTime\" (change)=\"validateCloseTime()\">\r\n <div *ngIf=\"obj.showError\" class=\"text-danger\">\r\n Close time must be later than open time.\r\n </div> \r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table>\r\n </div>\r\n</div>\r\n<div *ngIf=\"!loading && storeListData?.length && !noData\" class=\"card-footer\">\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalCount\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n</div>\r\n\r\n<ng-template #bulkUploadPopup let-model>\r\n <div class=\"p-5\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-5 text-nowrap\">\r\n <div class=\"my-5 d-flex\">\r\n <div class=\"d-flex\">\r\n <span class=\"symbol symbol-75px symbol-circle\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\"/>\r\n <path d=\"M27.5 22.5V25.8333C27.5 26.2754 27.3244 26.6993 27.0118 27.0118C26.6993 27.3244 26.2754 27.5 25.8333 27.5H14.1667C13.7246 27.5 13.3007 27.3244 12.9882 27.0118C12.6756 26.6993 12.5 26.2754 12.5 25.8333V22.5M24.1667 16.6667L20 12.5M20 12.5L15.8333 16.6667M20 12.5V22.5\" stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span class=\"ms-3 pt-2 fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Bulk Upload</span>\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\">\r\n <div class=\"upload-text\">Step1 - <span class=\"text-decoration-underline text-primary download-text\"><span (click)=\"downloadTemplateV2()\" class=\"cursor-pointer\">Download the template here</span></span></div>\r\n <div class=\"upload-text\">Step2 - Add your data to the Template File with existing store data</div>\r\n <div class=\"upload-text\">Step3 - Upload it below for processing</div>\r\n <div class=\"note-text\">**Note : On uploading, all the existing data will be replaced</div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-footer border-0 text-end mt-3 pt-0\">\r\n <button class=\"btn btn-md btn-default btn-outline\" (click)=\"model.close()\">Cancel</button>\r\n <button class=\"btn py-3 btn-default ms-3 btn-primary\" (click)=\"file1.click()\">Upload</button>\r\n <input style=\"visibility: hidden;\" #file1 type=\"file\" id=\"kt_account_team_size_select_2\"\r\n (change)=\"onFileUpload($event)\" />\r\n </div>\r\n \r\n \r\n </div>\r\n\r\n</ng-template>", styles: [".badge{padding:8px!important;border-radius:8px!important;background:var(--Gray-100, #F2F4F7)!important}.store-conf{color:var(--Gray-500, #667085)!important;font-size:12px!important;font-weight:500;line-height:18px}.productdrop{top:10;left:83%;z-index:10}.producttext{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.template-dropdown{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.upload-text{color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:30px}.download-text{color:var(--Primary-800, #008EDF);font-size:14px;font-weight:500;line-height:20px}.note-text{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.rotate{rotate:180deg;transition:1s}\n"] }]
8500
- }], ctorParameters: () => [{ type: ClientApiService }, { type: i1$1.NgbModal }, { type: i4.ToastService }, { type: i0.ChangeDetectorRef }], propDecorators: { inputFile: [{
8536
+ }], ctorParameters: () => [{ type: ExcelService }, { type: ClientApiService }, { type: i1$1.NgbModal }, { type: i4.ToastService }, { type: i0.ChangeDetectorRef }], propDecorators: { inputFile: [{
8501
8537
  type: ViewChild,
8502
8538
  args: ["inputFile"]
8503
8539
  }], fileInput1: [{