@ngx-pwa/local-storage 16.2.0 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,7 +10,7 @@ import { ValidationError } from "./exceptions";
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "../databases/local-database";
12
12
  import * as i2 from "../validation/json-validator";
13
- class StorageMap {
13
+ export class StorageMap {
14
14
  /**
15
15
  * Constructor params are provided by Angular (but can also be passed manually in tests)
16
16
  * @param database Storage to use
@@ -222,8 +222,12 @@ class StorageMap {
222
222
  const notifier = this.notifiers.get(key);
223
223
  /* Get the current item value */
224
224
  (schema ? this.get(key, schema) : this.get(key)).subscribe({
225
- next: (result) => notifier.next(result),
226
- error: (error) => notifier.error(error),
225
+ next: (result) => {
226
+ notifier.next(result);
227
+ },
228
+ error: (error) => {
229
+ notifier.error(error);
230
+ },
227
231
  });
228
232
  /* Only the public API of the `Observable` should be returned */
229
233
  return (schema ?
@@ -280,14 +284,13 @@ class StorageMap {
280
284
  }
281
285
  });
282
286
  }
283
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: StorageMap, deps: [{ token: i1.LocalDatabase }, { token: i2.JSONValidator }], target: i0.ɵɵFactoryTarget.Injectable }); }
284
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: StorageMap, providedIn: "root" }); }
287
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: StorageMap, deps: [{ token: i1.LocalDatabase }, { token: i2.JSONValidator }], target: i0.ɵɵFactoryTarget.Injectable }); }
288
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: StorageMap, providedIn: "root" }); }
285
289
  }
286
- export { StorageMap };
287
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: StorageMap, decorators: [{
290
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: StorageMap, decorators: [{
288
291
  type: Injectable,
289
292
  args: [{
290
293
  providedIn: "root"
291
294
  }]
292
- }], ctorParameters: function () { return [{ type: i1.LocalDatabase }, { type: i2.JSONValidator }]; } });
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1tYXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1wd2EvbG9jYWwtc3RvcmFnZS9zcmMvbGliL3N0b3JhZ2VzL3N0b3JhZ2UtbWFwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWdDLGFBQWEsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQU85RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQUUvQyxNQUdhLFVBQVU7SUFJckI7Ozs7O09BS0c7SUFDSCxZQUNZLFFBQXVCLEVBQ2QsZ0JBQStCLElBQUksYUFBYSxFQUFFO1FBRDNELGFBQVEsR0FBUixRQUFRLENBQWU7UUFDZCxrQkFBYSxHQUFiLGFBQWEsQ0FBcUM7UUFWcEQsY0FBUyxHQUFHLElBQUksR0FBRyxFQUFrQyxDQUFDO0lBV3RFLENBQUM7SUFFSjs7Ozs7OztPQU9HO0lBQ0gsSUFBSSxJQUFJO1FBRU4sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDdkIsb0NBQW9DO2FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsY0FB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LG9CQUFvQixFQUFFLENBQUM7cUJBRTVDO3lCQUFNO3dCQUVMLDBDQUEwQzt3QkFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO3FCQUV0QztpQkFFRjtnQkFBQyxNQUFNO29CQUVOLDBDQUEwQztvQkFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO2lCQUV0QztnQkFFRCx3QkFBd0I7Z0JBQ3hCLE9BQU8saUJBQWlCLEVBQUUsQ0FBQzthQUU1QjtpQkFBTTtnQkFFTCxrQ0FBa0M7Z0JBQ2xDLCtEQUErRDtnQkFDL0QsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7YUFFaEM7UUFFSCxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7OEdBcFpVLFVBQVU7a0hBQVYsVUFBVSxjQUZULE1BQU07O1NBRVAsVUFBVTsyRkFBVixVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT3BlcmF0b3JGdW5jdGlvbiwgUmVwbGF5U3ViamVjdCwgb2YsIHRocm93RXJyb3IgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWVyZ2VNYXAsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgSURCX0JST0tFTl9FUlJPUiB9IGZyb20gXCIuLi9kYXRhYmFzZXMvZXhjZXB0aW9uc1wiO1xuaW1wb3J0IHsgSW5kZXhlZERCRGF0YWJhc2UgfSBmcm9tIFwiLi4vZGF0YWJhc2VzL2luZGV4ZWRkYi1kYXRhYmFzZVwiO1xuaW1wb3J0IHsgTG9jYWxEYXRhYmFzZSB9IGZyb20gXCIuLi9kYXRhYmFzZXMvbG9jYWwtZGF0YWJhc2VcIjtcbmltcG9ydCB7IExvY2FsU3RvcmFnZURhdGFiYXNlIH0gZnJvbSBcIi4uL2RhdGFiYXNlcy9sb2NhbHN0b3JhZ2UtZGF0YWJhc2VcIjtcbmltcG9ydCB7IE1lbW9yeURhdGFiYXNlIH0gZnJvbSBcIi4uL2RhdGFiYXNlcy9tZW1vcnktZGF0YWJhc2VcIjtcbmltcG9ydCB7XG4gIEpTT05TY2hlbWEsXG4gIEpTT05TY2hlbWFBcnJheU9mLFxuICBKU09OU2NoZW1hQm9vbGVhbiwgSlNPTlNjaGVtYUludGVnZXIsXG4gIEpTT05TY2hlbWFOdW1iZXIsIEpTT05TY2hlbWFTdHJpbmdcbn0gZnJvbSBcIi4uL3ZhbGlkYXRpb24vanNvbi1zY2hlbWFcIjtcbmltcG9ydCB7IEpTT05WYWxpZGF0b3IgfSBmcm9tIFwiLi4vdmFsaWRhdGlvbi9qc29uLXZhbGlkYXRvclwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSBcIi4vZXhjZXB0aW9uc1wiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIFN0b3JhZ2VNYXAge1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBub3RpZmllcnMgPSBuZXcgTWFwPHN0cmluZywgUmVwbGF5U3ViamVjdDx1bmtub3duPj4oKTtcblxuICAvKipcbiAgICogQ29uc3RydWN0b3IgcGFyYW1zIGFyZSBwcm92aWRlZCBieSBBbmd1bGFyIChidXQgY2FuIGFsc28gYmUgcGFzc2VkIG1hbnVhbGx5IGluIHRlc3RzKVxuICAgKiBAcGFyYW0gZGF0YWJhc2UgU3RvcmFnZSB0byB1c2VcbiAgICogQHBhcmFtIGpzb25WYWxpZGF0b3IgVmFsaWRhdG9yIHNlcnZpY2VcbiAgICogQHBhcmFtIExTUHJlZml4IFByZWZpeCBmb3IgYGxvY2FsU3RvcmFnZWAga2V5cyB0byBhdm9pZCBjb2xsaXNpb24gZm9yIG11bHRpcGxlIGFwcHMgb24gdGhlIHNhbWUgc3ViZG9tYWluIG9yIGZvciBpbnRlcm9wZXJhYmlsaXR5XG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZGF0YWJhc2U6IExvY2FsRGF0YWJhc2UsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGpzb25WYWxpZGF0b3I6IEpTT05WYWxpZGF0b3IgPSBuZXcgSlNPTlZhbGlkYXRvcigpLFxuICApIHt9XG5cbiAgLyoqXG4gICAqICoqTnVtYmVyIG9mIGl0ZW1zKiogaW4gc3RvcmFnZSwgd3JhcHBlZCBpbiBhbiBgT2JzZXJ2YWJsZWAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHRoaXMuc3RvcmFnZU1hcC5zaXplLnN1YnNjcmliZSgoc2l6ZSkgPT4ge1xuICAgKiAgIGNvbnNvbGUubG9nKHNpemUpO1xuICAgKiB9KTtcbiAgICovXG4gIGdldCBzaXplKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5zaXplXG4gICAgICAvKiBDYXRjaCBpZiBgaW5kZXhlZERiYCBpcyBicm9rZW4gKi9cbiAgICAgIC5waXBlKHRoaXMuY2F0Y2hJREJCcm9rZW4oKCkgPT4gdGhpcy5kYXRhYmFzZS5zaXplKSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBUZWxscyB5b3Ugd2hpY2ggc3RvcmFnZSBlbmdpbmUgaXMgdXNlZC4gKk9ubHkgdXNlZnVsIGZvciBpbnRlcm9wZXJhYmlsaXR5LipcbiAgICogTm90ZSB0aGF0IGR1ZSB0byBzb21lIGJyb3dzZXJzIGlzc3VlcyBpbiBzb21lIHNwZWNpYWwgY29udGV4dHNcbiAgICogKEZpcmVmb3ggcHJpdmF0ZSBtb2RlIGFuZCBTYWZhcmkgY3Jvc3Mtb3JpZ2luIGlmcmFtZXMpLFxuICAgKiAqKnRoaXMgaW5mb3JtYXRpb24gbWF5IGJlIHdyb25nIGF0IGluaXRpYWxpemF0aW9uLCoqXG4gICAqIGFzIHRoZSBzdG9yYWdlIGNvdWxkIGZhbGxiYWNrIGZyb20gYGluZGV4ZWREQmAgdG8gYGxvY2FsU3RvcmFnZWBcbiAgICogb25seSBhZnRlciBhIGZpcnN0IHJlYWQgb3Igd3JpdGUgb3BlcmF0aW9uLlxuICAgKiBAcmV0dXJucyBTdG9yYWdlIGVuZ2luZSB1c2VkXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9jeXJpbGxldHV6aS9hbmd1bGFyLWFzeW5jLWxvY2FsLXN0b3JhZ2UvYmxvYi9tYWluL2RvY3MvSU5URVJPUEVSQUJJTElUWS5tZH1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogaWYgKHRoaXMuc3RvcmFnZU1hcC5iYWNraW5nRW5naW5lID09PSAnaW5kZXhlZERCJykge31cbiAgICovXG4gIGdldCBiYWNraW5nRW5naW5lKCk6IFwiaW5kZXhlZERCXCIgfCBcImxvY2FsU3RvcmFnZVwiIHwgXCJtZW1vcnlcIiB8IFwidW5rbm93blwiIHtcblxuICAgIGlmICh0aGlzLmRhdGFiYXNlIGluc3RhbmNlb2YgSW5kZXhlZERCRGF0YWJhc2UpIHtcblxuICAgICAgcmV0dXJuIFwiaW5kZXhlZERCXCI7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YWJhc2UgaW5zdGFuY2VvZiBMb2NhbFN0b3JhZ2VEYXRhYmFzZSkge1xuXG4gICAgICByZXR1cm4gXCJsb2NhbFN0b3JhZ2VcIjtcblxuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhYmFzZSBpbnN0YW5jZW9mIE1lbW9yeURhdGFiYXNlKSB7XG5cbiAgICAgIHJldHVybiBcIm1lbW9yeVwiO1xuXG4gICAgfSBlbHNlIHtcblxuICAgICAgcmV0dXJuIFwidW5rbm93blwiO1xuXG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogSW5mbyBhYm91dCBgaW5kZXhlZERCYCBkYXRhYmFzZS4gKk9ubHkgdXNlZnVsIGZvciBpbnRlcm9wZXJhYmlsaXR5LipcbiAgICogQHJldHVybnMgYGluZGV4ZWREQmAgZGF0YWJhc2UgbmFtZSwgc3RvcmUgbmFtZSBhbmQgZGF0YWJhc2UgdmVyc2lvbi5cbiAgICogKipWYWx1ZXMgd2lsbCBiZSBlbXB0eSBpZiB0aGUgc3RvcmFnZSBpcyBub3QgYGluZGV4ZWREQmAsKipcbiAgICogKipzbyBpdCBzaG91bGQgYmUgdXNlZCBhZnRlciBhbiBlbmdpbmUgY2hlY2sqKi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2N5cmlsbGV0dXppL2FuZ3VsYXItYXN5bmMtbG9jYWwtc3RvcmFnZS9ibG9iL21haW4vZG9jcy9JTlRFUk9QRVJBQklMSVRZLm1kfVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBpZiAodGhpcy5zdG9yYWdlTWFwLmJhY2tpbmdFbmdpbmUgPT09ICdpbmRleGVkREInKSB7XG4gICAqICAgY29uc3QgeyBkYXRhYmFzZSwgc3RvcmUsIHZlcnNpb24gfSA9IHRoaXMuc3RvcmFnZU1hcC5iYWNraW5nU3RvcmU7XG4gICAqIH1cbiAgICovXG4gIGdldCBiYWNraW5nU3RvcmUoKTogeyBkYXRhYmFzZTogc3RyaW5nLCBzdG9yZTogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXI7IH0ge1xuXG4gICAgcmV0dXJuICh0aGlzLmRhdGFiYXNlIGluc3RhbmNlb2YgSW5kZXhlZERCRGF0YWJhc2UpID9cbiAgICAgIHRoaXMuZGF0YWJhc2UuYmFja2luZ1N0b3JlIDpcbiAgICAgIHsgZGF0YWJhc2U6IFwiXCIsIHN0b3JlOiBcIlwiLCB2ZXJzaW9uOiAwIH07XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmZvIGFib3V0IGBsb2NhbFN0b3JhZ2VgIGZhbGxiYWNrIHN0b3JhZ2UuICpPbmx5IHVzZWZ1bCBmb3IgaW50ZXJvcGVyYWJpbGl0eS4qXG4gICAqIEByZXR1cm5zIGBsb2NhbFN0b3JhZ2VgIHByZWZpeC5cbiAgICogKipWYWx1ZXMgd2lsbCBiZSBlbXB0eSBpZiB0aGUgc3RvcmFnZSBpcyBub3QgYGxvY2FsU3RvcmFnZWAsKipcbiAgICogKipzbyBpdCBzaG91bGQgYmUgdXNlZCBhZnRlciBhbiBlbmdpbmUgY2hlY2sqKi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2N5cmlsbGV0dXppL2FuZ3VsYXItYXN5bmMtbG9jYWwtc3RvcmFnZS9ibG9iL21haW4vZG9jcy9JTlRFUk9QRVJBQklMSVRZLm1kfVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBpZiAodGhpcy5zdG9yYWdlTWFwLmJhY2tpbmdFbmdpbmUgPT09ICdsb2NhbFN0b3JhZ2UnKSB7XG4gICAqICAgY29uc3QgeyBwcmVmaXggfSA9IHRoaXMuc3RvcmFnZU1hcC5mYWxsYmFja0JhY2tpbmdTdG9yZTtcbiAgICogfVxuICAgKi9cbiAgZ2V0IGZhbGxiYWNrQmFja2luZ1N0b3JlKCk6IHsgcHJlZml4OiBzdHJpbmc7IH0ge1xuXG4gICAgcmV0dXJuICh0aGlzLmRhdGFiYXNlIGluc3RhbmNlb2YgTG9jYWxTdG9yYWdlRGF0YWJhc2UpID9cbiAgICAgIHsgcHJlZml4OiB0aGlzLmRhdGFiYXNlLnByZWZpeCB9IDpcbiAgICAgIHsgcHJlZml4OiBcIlwiIH07XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gaXRlbSB2YWx1ZSBpbiBzdG9yYWdlLlxuICAgKiBUaGUgc2lnbmF0dXJlIGhhcyBtYW55IG92ZXJsb2FkcyBkdWUgdG8gdmFsaWRhdGlvbiwgKipwbGVhc2UgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24uKipcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2N5cmlsbGV0dXppL2FuZ3VsYXItYXN5bmMtbG9jYWwtc3RvcmFnZS9ibG9iL21haW4vZG9jcy9WQUxJREFUSU9OLm1kfVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEBwYXJhbSBzY2hlbWEgT3B0aW9uYWwgSlNPTiBzY2hlbWEgdG8gdmFsaWRhdGUgdGhlIGRhdGFcbiAgICogQHJldHVybnMgVGhlIGl0ZW0ncyB2YWx1ZSBpZiB0aGUga2V5IGV4aXN0cywgYHVuZGVmaW5lZGAgb3RoZXJ3aXNlLCB3cmFwcGVkIGluIGEgUnhKUyBgT2JzZXJ2YWJsZWBcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogdGhpcy5zdG9yYWdlTWFwLmdldCgna2V5JywgeyB0eXBlOiAnc3RyaW5nJyB9KS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgKiAgIHJlc3VsdDsgLy8gc3RyaW5nIG9yIHVuZGVmaW5lZFxuICAgKiB9KTtcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogaW50ZXJmYWNlIFVzZXIge1xuICAgKiAgIGZpcnN0TmFtZTogc3RyaW5nO1xuICAgKiAgIGxhc3ROYW1lPzogc3RyaW5nO1xuICAgKiB9XG4gICAqXG4gICAqIGNvbnN0IHNjaGVtYSA9IHtcbiAgICogICB0eXBlOiAnb2JqZWN0JyxcbiAgICogICBwcm9wZXJ0aWVzOiB7XG4gICAqICAgICBmaXJzdE5hbWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICogICAgIGxhc3ROYW1lOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAqICAgfSxcbiAgICogICByZXF1aXJlZDogWydmaXJzdE5hbWUnXVxuICAgKiB9O1xuICAgKlxuICAgKiB0aGlzLnN0b3JhZ2VNYXAuZ2V0PFVzZXI+KCd1c2VyJywgc2NoZW1hKS5zdWJzY3JpYmUoKHVzZXIpID0+IHtcbiAgICogICBpZiAodXNlcikge1xuICAgKiAgICAgdXNlci5maXJzdE5hbWU7XG4gICAqICAgfVxuICAgKiB9KTtcbiAgICovXG4gIGdldChrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8dW5rbm93bj47XG4gIGdldDxUIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihrZXk6IHN0cmluZywgc2NoZW1hOiBKU09OU2NoZW1hU3RyaW5nKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPjtcbiAgZ2V0PFQgZXh0ZW5kcyBudW1iZXIgPSBudW1iZXI+KGtleTogc3RyaW5nLCBzY2hlbWE6IEpTT05TY2hlbWFJbnRlZ2VyIHwgSlNPTlNjaGVtYU51bWJlcik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47XG4gIGdldDxUIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4+KGtleTogc3RyaW5nLCBzY2hlbWE6IEpTT05TY2hlbWFCb29sZWFuKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPjtcbiAgZ2V0PFQgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXSA9IHN0cmluZ1tdPihrZXk6IHN0cmluZywgc2NoZW1hOiBKU09OU2NoZW1hQXJyYXlPZjxKU09OU2NoZW1hU3RyaW5nPik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47XG4gIGdldDxUIGV4dGVuZHMgcmVhZG9ubHkgbnVtYmVyW10gPSBudW1iZXJbXT4oa2V5OiBzdHJpbmcsIHNjaGVtYTogSlNPTlNjaGVtYUFycmF5T2Y8SlNPTlNjaGVtYUludGVnZXIgfCBKU09OU2NoZW1hTnVtYmVyPik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbWF4LWxlblxuICBnZXQ8VCBleHRlbmRzIHJlYWRvbmx5IGJvb2xlYW5bXSA9IGJvb2xlYW5bXT4oa2V5OiBzdHJpbmcsIHNjaGVtYTogSlNPTlNjaGVtYUFycmF5T2Y8SlNPTlNjaGVtYUJvb2xlYW4+KTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPjtcbiAgZ2V0PFQ+KGtleTogc3RyaW5nLCBzY2hlbWE6IEpTT05TY2hlbWEpOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+O1xuICBnZXQ8VCA9IHVua25vd24+KGtleTogc3RyaW5nLCBzY2hlbWE/OiBKU09OU2NoZW1hKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG5cbiAgICAvKiBHZXQgdGhlIGRhdGEgaW4gc3RvcmFnZSAqL1xuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmdldChrZXkpLnBpcGUoXG4gICAgICAvKiBDaGVjayBpZiBgaW5kZXhlZERiYCBpcyBicm9rZW4gKi9cbiAgICAgIHRoaXMuY2F0Y2hJREJCcm9rZW4oKCkgPT4gdGhpcy5kYXRhYmFzZS5nZXQoa2V5KSksXG4gICAgICBtZXJnZU1hcCgoZGF0YSkgPT4ge1xuXG4gICAgICAgIC8qIE5vIG5lZWQgdG8gdmFsaWRhdGUgaWYgdGhlIGRhdGEgaXMgZW1wdHkgKi9cbiAgICAgICAgaWYgKChkYXRhID09PSB1bmRlZmluZWQpIHx8IChkYXRhID09PSBudWxsKSkge1xuXG4gICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEpIHtcblxuICAgICAgICAgIC8qIFZhbGlkYXRlIGRhdGEgYWdhaW5zdCBhIEpTT04gc2NoZW1hIGlmIHByb3ZpZGVkICovXG4gICAgICAgICAgaWYgKCF0aGlzLmpzb25WYWxpZGF0b3IudmFsaWRhdGUoZGF0YSwgc2NoZW1hKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IFZhbGlkYXRpb25FcnJvcigpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvKiBEYXRhIGhhdmUgYmVlbiBjaGVja2VkLCBzbyBpdCdzIE9LIHRvIGNhc3QgKi9cbiAgICAgICAgICByZXR1cm4gb2YoZGF0YSBhcyBUIHwgdW5kZWZpbmVkKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgLyogQ2FzdCB0byB1bmtub3duIGFzIHRoZSBkYXRhIHdhc24ndCBjaGVja2VkICovXG4gICAgICAgIHJldHVybiBvZihkYXRhKTtcblxuICAgICAgfSksXG4gICAgKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhbiBpdGVtIGluIHN0b3JhZ2UuXG4gICAqIE5vdGUgdGhhdCBzZXR0aW5nIGBudWxsYCBvciBgdW5kZWZpbmVkYCB3aWxsIHJlbW92ZSB0aGUgaXRlbSB0byBhdm9pZCBzb21lIGJyb3dzZXJzIGlzc3Vlcy5cbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcGFyYW0gZGF0YSBUaGUgaXRlbSdzIHZhbHVlXG4gICAqIEBwYXJhbSBzY2hlbWEgT3B0aW9uYWwgSlNPTiBzY2hlbWEgdG8gdmFsaWRhdGUgdGhlIGRhdGFcbiAgICogQHJldHVybnMgQSBSeEpTIGBPYnNlcnZhYmxlYCB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB0aGlzLnN0b3JhZ2VNYXAuc2V0KCdrZXknLCAndmFsdWUnKS5zdWJzY3JpYmUoKCkgPT4ge30pO1xuICAgKi9cbiAgc2V0KGtleTogc3RyaW5nLCBkYXRhOiB1bmtub3duLCBzY2hlbWE/OiBKU09OU2NoZW1hKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcblxuICAgIC8qIFN0b3JpbmcgYHVuZGVmaW5lZGAgb3IgYG51bGxgIGlzIHVzZWxlc3MgYW5kIGNhbiBjYXVzZSBpc3N1ZXMgaW4gYGluZGV4ZWREYmAgaW4gc29tZSBicm93c2VycyxcbiAgICAgKiBzbyByZW1vdmluZyBpdGVtIGluc3RlYWQgZm9yIGFsbCBzdG9yYWdlcyB0byBoYXZlIGEgY29uc2lzdGVudCBBUEkgKi9cbiAgICBpZiAoKGRhdGEgPT09IHVuZGVmaW5lZCkgfHwgKGRhdGEgPT09IG51bGwpKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWxldGUoa2V5KTtcbiAgICB9XG5cbiAgICAvKiBWYWxpZGF0ZSBkYXRhIGFnYWluc3QgYSBKU09OIHNjaGVtYSBpZiBwcm92aWRlZCAqL1xuICAgIGlmIChzY2hlbWEgJiYgIXRoaXMuanNvblZhbGlkYXRvci52YWxpZGF0ZShkYXRhLCBzY2hlbWEpKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgVmFsaWRhdGlvbkVycm9yKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLnNldChrZXksIGRhdGEpLnBpcGUoXG4gICAgICAvKiBDYXRjaCBpZiBgaW5kZXhlZERiYCBpcyBicm9rZW4gKi9cbiAgICAgIHRoaXMuY2F0Y2hJREJCcm9rZW4oKCkgPT4gdGhpcy5kYXRhYmFzZS5zZXQoa2V5LCBkYXRhKSksXG4gICAgICAvKiBOb3RpZnkgd2F0Y2hlcnMgKG11c3QgYmUgbGFzdCBiZWNhdXNlIGl0IHNob3VsZCBvbmx5IGhhcHBlbiBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRzKSAqL1xuICAgICAgdGFwKCgpID0+IHsgdGhpcy5ub3RpZnkoa2V5LCBkYXRhKTsgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYW4gaXRlbSBpbiBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHJldHVybnMgQSBSeEpTIGBPYnNlcnZhYmxlYCB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB0aGlzLnN0b3JhZ2VNYXAuZGVsZXRlKCdrZXknKS5zdWJzY3JpYmUoKCkgPT4ge30pO1xuICAgKi9cbiAgZGVsZXRlKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcblxuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmRlbGV0ZShrZXkpLnBpcGUoXG4gICAgICAvKiBDYXRjaCBpZiBgaW5kZXhlZERiYCBpcyBicm9rZW4gKi9cbiAgICAgIHRoaXMuY2F0Y2hJREJCcm9rZW4oKCkgPT4gdGhpcy5kYXRhYmFzZS5kZWxldGUoa2V5KSksXG4gICAgICAvKiBOb3RpZnkgd2F0Y2hlcnMgKG11c3QgYmUgbGFzdCBiZWNhdXNlIGl0IHNob3VsZCBvbmx5IGhhcHBlbiBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRzKSAqL1xuICAgICAgdGFwKCgpID0+IHsgdGhpcy5ub3RpZnkoa2V5LCB1bmRlZmluZWQpOyB9KSxcbiAgICApO1xuXG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGFsbCBpdGVtcyBpbiBzdG9yYWdlXG4gICAqIEByZXR1cm5zIEEgUnhKUyBgT2JzZXJ2YWJsZWAgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogdGhpcy5zdG9yYWdlTWFwLmNsZWFyKCkuc3Vic2NyaWJlKCgpID0+IHt9KTtcbiAgICovXG4gIGNsZWFyKCk6IE9ic2VydmFibGU8dW5kZWZpbmVkPiB7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5jbGVhcigpLnBpcGUoXG4gICAgICAvKiBDYXRjaCBpZiBgaW5kZXhlZERiYCBpcyBicm9rZW4gKi9cbiAgICAgIHRoaXMuY2F0Y2hJREJCcm9rZW4oKCkgPT4gdGhpcy5kYXRhYmFzZS5jbGVhcigpKSxcbiAgICAgIC8qIE5vdGlmeSB3YXRjaGVycyAobXVzdCBiZSBsYXN0IGJlY2F1c2UgaXQgc2hvdWxkIG9ubHkgaGFwcGVuIGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZHMpICovXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLm5vdGlmaWVycy5rZXlzKCkpIHtcbiAgICAgICAgICB0aGlzLm5vdGlmeShrZXksIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIGtleXMgc3RvcmVkIGluIHN0b3JhZ2UuIE5vdGUgKip0aGlzIGlzIGFuICppdGVyYXRpbmcqIGBPYnNlcnZhYmxlYCoqOlxuICAgKiAqIGlmIHRoZXJlIGlzIG5vIGtleSwgdGhlIGBuZXh0YCBjYWxsYmFjayB3aWxsIG5vdCBiZSBpbnZva2VkLFxuICAgKiAqIGlmIHlvdSBuZWVkIHRvIHdhaXQgdGhlIHdob2xlIG9wZXJhdGlvbiB0byBlbmQsIGJlIHN1cmUgdG8gYWN0IGluIHRoZSBgY29tcGxldGVgIGNhbGxiYWNrLFxuICAgKiBhcyB0aGlzIGBPYnNlcnZhYmxlYCBjYW4gZW1pdCBzZXZlcmFsIHZhbHVlcyBhbmQgc28gd2lsbCBpbnZva2UgdGhlIGBuZXh0YCBjYWxsYmFjayBzZXZlcmFsIHRpbWVzLlxuICAgKiBAcmV0dXJucyBBIGxpc3Qgb2YgdGhlIGtleXMgd3JhcHBlZCBpbiBhIFJ4SlMgYE9ic2VydmFibGVgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHRoaXMuc3RvcmFnZU1hcC5rZXlzKCkuc3Vic2NyaWJlKHtcbiAgICogICBuZXh0OiAoa2V5KSA9PiB7IGNvbnNvbGUubG9nKGtleSk7IH0sXG4gICAqICAgY29tcGxldGU6ICgpID0+IHsgY29uc29sZS5sb2coJ0RvbmUnKTsgfSxcbiAgICogfSk7XG4gICAqL1xuICBrZXlzKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5rZXlzKClcbiAgICAgIC8qIENhdGNoIGlmIGBpbmRleGVkRGJgIGlzIGJyb2tlbiAqL1xuICAgICAgLnBpcGUodGhpcy5jYXRjaElEQkJyb2tlbigoKSA9PiB0aGlzLmRhdGFiYXNlLmtleXMoKSkpO1xuXG4gIH1cblxuICAvKipcbiAgICogVGVsbHMgaWYgYSBrZXkgZXhpc3RzIGluIHN0b3JhZ2VcbiAgICogQHJldHVybnMgQSBSeEpTIGBPYnNlcnZhYmxlYCB0ZWxsaW5nIGlmIHRoZSBrZXkgZXhpc3RzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHRoaXMuc3RvcmFnZU1hcC5oYXMoJ2tleScpLnN1YnNjcmliZSgoaGFzS2V5KSA9PiB7XG4gICAqICAgaWYgKGhhc0tleSkge31cbiAgICogfSk7XG4gICAqL1xuICBoYXMoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmhhcyhrZXkpXG4gICAgICAvKiBDYXRjaCBpZiBgaW5kZXhlZERiYCBpcyBicm9rZW4gKi9cbiAgICAgIC5waXBlKHRoaXMuY2F0Y2hJREJCcm9rZW4oKCkgPT4gdGhpcy5kYXRhYmFzZS5oYXMoa2V5KSkpO1xuXG4gIH1cblxuICAvKipcbiAgICogV2F0Y2ggYW4gaXRlbSB2YWx1ZSBpbiBzdG9yYWdlLlxuICAgKiAqKk5vdGUgb25seSBjaGFuZ2VzIGRvbmUgdmlhIHRoaXMgbGliIHdpbGwgYmUgd2F0Y2hlZCoqLCBleHRlcm5hbCBjaGFuZ2VzIGluIHN0b3JhZ2UgY2FuJ3QgYmUgZGV0ZWN0ZWQuXG4gICAqIFRoZSBzaWduYXR1cmUgaGFzIG1hbnkgb3ZlcmxvYWRzIGR1ZSB0byB2YWxpZGF0aW9uLCAqKnBsZWFzZSByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbi4qKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jeXJpbGxldHV6aS9hbmd1bGFyLWFzeW5jLWxvY2FsLXN0b3JhZ2UvYmxvYi9tYWluL2RvY3MvVkFMSURBVElPTi5tZFxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5IHRvIHdhdGNoXG4gICAqIEBwYXJhbSBzY2hlbWEgT3B0aW9uYWwgSlNPTiBzY2hlbWEgdG8gdmFsaWRhdGUgdGhlIGluaXRpYWwgdmFsdWVcbiAgICogQHJldHVybnMgQW4gaW5maW5pdGUgYE9ic2VydmFibGVgIGdpdmluZyB0aGUgY3VycmVudCB2YWx1ZVxuICAgKi9cbiAgd2F0Y2goa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHVua25vd24+O1xuICB3YXRjaDxUIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihrZXk6IHN0cmluZywgc2NoZW1hOiBKU09OU2NoZW1hU3RyaW5nKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPjtcbiAgd2F0Y2g8VCBleHRlbmRzIG51bWJlciA9IG51bWJlcj4oa2V5OiBzdHJpbmcsIHNjaGVtYTogSlNPTlNjaGVtYUludGVnZXIgfCBKU09OU2NoZW1hTnVtYmVyKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPjtcbiAgd2F0Y2g8VCBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuPihrZXk6IHN0cmluZywgc2NoZW1hOiBKU09OU2NoZW1hQm9vbGVhbik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47XG4gIHdhdGNoPFQgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXSA9IHN0cmluZ1tdPihrZXk6IHN0cmluZywgc2NoZW1hOiBKU09OU2NoZW1hQXJyYXlPZjxKU09OU2NoZW1hU3RyaW5nPik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47XG4gIHdhdGNoPFQgZXh0ZW5kcyByZWFkb25seSBudW1iZXJbXSA9IG51bWJlcltdPihrZXk6IHN0cmluZywgc2NoZW1hOiBKU09OU2NoZW1hQXJyYXlPZjxKU09OU2NoZW1hSW50ZWdlciB8IEpTT05TY2hlbWFOdW1iZXI+KTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBtYXgtbGVuXG4gIHdhdGNoPFQgZXh0ZW5kcyByZWFkb25seSBib29sZWFuW10gPSBib29sZWFuW10+KGtleTogc3RyaW5nLCBzY2hlbWE6IEpTT05TY2hlbWFBcnJheU9mPEpTT05TY2hlbWFCb29sZWFuPik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47XG4gIHdhdGNoPFQ+KGtleTogc3RyaW5nLCBzY2hlbWE6IEpTT05TY2hlbWEpOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+O1xuICB3YXRjaDxUID0gdW5rbm93bj4oa2V5OiBzdHJpbmcsIHNjaGVtYT86IEpTT05TY2hlbWEpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcblxuICAgIC8qIENoZWNrIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBub3RpZmllciAqL1xuICAgIGlmICghdGhpcy5ub3RpZmllcnMuaGFzKGtleSkpIHtcbiAgICAgIHRoaXMubm90aWZpZXJzLnNldChrZXksIG5ldyBSZXBsYXlTdWJqZWN0KDEpKTtcbiAgICB9XG5cbiAgICAvKiBOb24tbnVsbCBhc3NlcnRpb24gaXMgcmVxdWlyZWQgYmVjYXVzZSBUeXBlU2NyaXB0IGRvZXNuJ3QgbmFycm93IGAuaGFzKClgIHlldCAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgY29uc3Qgbm90aWZpZXIgPSB0aGlzLm5vdGlmaWVycy5nZXQoa2V5KSE7XG5cbiAgICAvKiBHZXQgdGhlIGN1cnJlbnQgaXRlbSB2YWx1ZSAqL1xuICAgIChzY2hlbWEgPyB0aGlzLmdldDxUPihrZXksIHNjaGVtYSkgOiB0aGlzLmdldChrZXkpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3VsdCkgPT4gbm90aWZpZXIubmV4dChyZXN1bHQpLFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4gbm90aWZpZXIuZXJyb3IoZXJyb3IpLFxuICAgIH0pO1xuXG4gICAgLyogT25seSB0aGUgcHVibGljIEFQSSBvZiB0aGUgYE9ic2VydmFibGVgIHNob3VsZCBiZSByZXR1cm5lZCAqL1xuICAgIHJldHVybiAoc2NoZW1hID9cbiAgICAgIG5vdGlmaWVyLmFzT2JzZXJ2YWJsZSgpIGFzIE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4gOlxuICAgICAgbm90aWZpZXIuYXNPYnNlcnZhYmxlKClcbiAgICApO1xuXG4gIH1cblxuICAvKipcbiAgICogTm90aWZ5IHdoZW4gYSB2YWx1ZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHBhcmFtIGRhdGEgVGhlIG5ldyB2YWx1ZVxuICAgKi9cbiAgcHJvdGVjdGVkIG5vdGlmeShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcblxuICAgIGNvbnN0IG5vdGlmaWVyID0gdGhpcy5ub3RpZmllcnMuZ2V0KGtleSk7XG5cbiAgICBpZiAobm90aWZpZXIpIHtcbiAgICAgIG5vdGlmaWVyLm5leHQodmFsdWUpO1xuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICAqIFJ4SlMgb3BlcmF0b3IgdG8gY2F0Y2ggaWYgYGluZGV4ZWREQmAgaXMgYnJva2VuXG4gICAqIEBwYXJhbSBvcGVyYXRpb25DYWxsYmFjayBDYWxsYmFjayB3aXRoIHRoZSBvcGVyYXRpb24gdG8gcmVkb1xuICAgKi9cbiAgcHJvdGVjdGVkIGNhdGNoSURCQnJva2VuPFQ+KG9wZXJhdGlvbkNhbGxiYWNrOiAoKSA9PiBPYnNlcnZhYmxlPFQ+KTogT3BlcmF0b3JGdW5jdGlvbjxULCBUPiB7XG5cbiAgICByZXR1cm4gY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcblxuICAgICAgLyogQ2hlY2sgaWYgYGluZGV4ZWREQmAgaXMgYnJva2VuIGJhc2VkIG9uIGVycm9yIG1lc3NhZ2UgKHRoZSBzcGVjaWZpYyBlcnJvciBjbGFzcyBzZWVtcyB0byBiZSBsb3N0IGluIHRoZSBwcm9jZXNzKSAqL1xuICAgICAgaWYgKChlcnJvciAhPT0gdW5kZWZpbmVkKSAmJiAoZXJyb3IgIT09IG51bGwpXG4gICAgICAgICYmICh0eXBlb2YgZXJyb3IgPT09IFwib2JqZWN0XCIpICYmIChcIm1lc3NhZ2VcIiBpbiBlcnJvcilcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgICAgICAmJiAoZXJyb3IubWVzc2FnZSA9PT0gSURCX0JST0tFTl9FUlJPUikpIHtcblxuICAgICAgICAvKiBXaGVuIHN0b3JhZ2UgaXMgZnVsbHkgZGlzYWJsZWQgaW4gYnJvd3NlciAodmlhIHRoZSBcIkJsb2NrIGFsbCBjb29raWVzXCIgb3B0aW9uKSxcbiAgICAgICAgICoganVzdCB0cnlpbmcgdG8gY2hlY2sgYGxvY2FsU3RvcmFnZWAgdmFyaWFibGUgY2F1c2VzIGEgc2VjdXJpdHkgZXhjZXB0aW9uLlxuICAgICAgICAgKiBQcmV2ZW50cyBodHRwczovL2dpdGh1Yi5jb20vY3lyaWxsZXR1emkvYW5ndWxhci1hc3luYy1sb2NhbC1zdG9yYWdlL2lzc3Vlcy8xMThcbiAgICAgICAgICovXG4gICAgICAgIHRyeSB7XG5cbiAgICAgICAgICBpZiAoXCJnZXRJdGVtXCIgaW4gbG9jYWxTdG9yYWdlKSB7XG5cbiAgICAgICAgICAgIC8qIEZhbGxiYWNrIHRvIGBsb2NhbFN0b3JhZ2VgIGlmIGF2YWlsYWJsZSAqL1xuICAgICAgICAgICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFzZSgpO1xuXG4gICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgLyogRmFsbGJhY2sgdG8gbWVtb3J5IHN0b3JhZ2Ugb3RoZXJ3aXNlICovXG4gICAgICAgICAgICB0aGlzLmRhdGFiYXNlID0gbmV3IE1lbW9yeURhdGFiYXNlKCk7XG5cbiAgICAgICAgICB9XG5cbiAgICAgICAgfSBjYXRjaCB7XG5cbiAgICAgICAgICAvKiBGYWxsYmFjayB0byBtZW1vcnkgc3RvcmFnZSBvdGhlcndpc2UgKi9cbiAgICAgICAgICB0aGlzLmRhdGFiYXNlID0gbmV3IE1lbW9yeURhdGFiYXNlKCk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIFJlZG8gdGhlIG9wZXJhdGlvbiAqL1xuICAgICAgICByZXR1cm4gb3BlcmF0aW9uQ2FsbGJhY2soKTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICAvKiBPdGhlcndpc2UsIHJldGhyb3cgdGhlIGVycm9yICovXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG5cbiAgICAgIH1cblxuICAgIH0pO1xuXG4gIH1cblxufVxuIl19
295
+ }], ctorParameters: () => [{ type: i1.LocalDatabase }, { type: i2.JSONValidator }] });
296
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1tYXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1wd2EvbG9jYWwtc3RvcmFnZS9zcmMvbGliL3N0b3JhZ2VzL3N0b3JhZ2UtbWFwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWdDLGFBQWEsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQU85RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQUsvQyxNQUFNLE9BQU8sVUFBVTtJQUlyQjs7Ozs7T0FLRztJQUNILFlBQ1ksUUFBdUIsRUFDZCxnQkFBK0IsSUFBSSxhQUFhLEVBQUU7UUFEM0QsYUFBUSxHQUFSLFFBQVEsQ0FBZTtRQUNkLGtCQUFhLEdBQWIsYUFBYSxDQUFxQztRQVZwRCxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7SUFXdEUsQ0FBQztJQUVKOzs7Ozs7O09BT0c7SUFDSCxJQUFJLElBQUk7UUFFTixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUN2QixvQ0FBb0M7YUFDbkMsSUFBSSxDQUFDLElBQUksQ0FB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Q0FBNkM7d0JBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO3FCQUU1Qzt5QkFBTTt3QkFFTCwwQ0FBMEM7d0JBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztxQkFFdEM7aUJBRUY7Z0JBQUMsTUFBTTtvQkFFTiwwQ0FBMEM7b0JBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztpQkFFdEM7Z0JBRUQsd0JBQXdCO2dCQUN4QixPQUFPLGlCQUFpQixFQUFFLENBQUM7YUFFNUI7aUJBQU07Z0JBRUwsa0NBQWtDO2dCQUNsQywrREFBK0Q7Z0JBQy9ELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBRWhDO1FBRUgsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDOzhHQTVaVSxVQUFVO2tIQUFWLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT3BlcmF0b3JGdW5jdGlvbiwgUmVwbGF5U3ViamVjdCwgb2YsIHRocm93RXJyb3IgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWVyZ2VNYXAsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgSURCX0JST0tFTl9FUlJPUiB9IGZyb20gXCIuLi9kYXRhYmFzZXMvZXhjZXB0aW9uc1wiO1xuaW1wb3J0IHsgSW5kZXhlZERCRGF0YWJhc2UgfSBmcm9tIFwiLi4vZGF0YWJhc2VzL2luZGV4ZWRkYi1kYXRhYmFzZVwiO1xuaW1wb3J0IHsgTG9jYWxEYXRhYmFzZSB9IGZyb20gXCIuLi9kYXRhYmFzZXMvbG9jYWwtZGF0YWJhc2VcIjtcbmltcG9ydCB7IExvY2FsU3RvcmFnZURhdGFiYXNlIH0gZnJvbSBcIi4uL2RhdGFiYXNlcy9sb2NhbHN0b3JhZ2UtZGF0YWJhc2VcIjtcbmltcG9ydCB7IE1lbW9yeURhdGFiYXNlIH0gZnJvbSBcIi4uL2RhdGFiYXNlcy9tZW1vcnktZGF0YWJhc2VcIjtcbmltcG9ydCB7XG4gIEpTT05TY2hlbWEsXG4gIEpTT05TY2hlbWFBcnJheU9mLFxuICBKU09OU2NoZW1hQm9vbGVhbiwgSlNPTlNjaGVtYUludGVnZXIsXG4gIEpTT05TY2hlbWFOdW1iZXIsIEpTT05TY2hlbWFTdHJpbmdcbn0gZnJvbSBcIi4uL3ZhbGlkYXRpb24vanNvbi1zY2hlbWFcIjtcbmltcG9ydCB7IEpTT05WYWxpZGF0b3IgfSBmcm9tIFwiLi4vdmFsaWRhdGlvbi9qc29uLXZhbGlkYXRvclwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSBcIi4vZXhjZXB0aW9uc1wiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIFN0b3JhZ2VNYXAge1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBub3RpZmllcnMgPSBuZXcgTWFwPHN0cmluZywgUmVwbGF5U3ViamVjdDx1bmtub3duPj4oKTtcblxuICAvKipcbiAgICogQ29uc3RydWN0b3IgcGFyYW1zIGFyZSBwcm92aWRlZCBieSBBbmd1bGFyIChidXQgY2FuIGFsc28gYmUgcGFzc2VkIG1hbnVhbGx5IGluIHRlc3RzKVxuICAgKiBAcGFyYW0gZGF0YWJhc2UgU3RvcmFnZSB0byB1c2VcbiAgICogQHBhcmFtIGpzb25WYWxpZGF0b3IgVmFsaWRhdG9yIHNlcnZpY2VcbiAgICogQHBhcmFtIExTUHJlZml4IFByZWZpeCBmb3IgYGxvY2FsU3RvcmFnZWAga2V5cyB0byBhdm9pZCBjb2xsaXNpb24gZm9yIG11bHRpcGxlIGFwcHMgb24gdGhlIHNhbWUgc3ViZG9tYWluIG9yIGZvciBpbnRlcm9wZXJhYmlsaXR5XG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZGF0YWJhc2U6IExvY2FsRGF0YWJhc2UsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGpzb25WYWxpZGF0b3I6IEpTT05WYWxpZGF0b3IgPSBuZXcgSlNPTlZhbGlkYXRvcigpLFxuICApIHt9XG5cbiAgLyoqXG4gICAqICoqTnVtYmVyIG9mIGl0ZW1zKiogaW4gc3RvcmFnZSwgd3JhcHBlZCBpbiBhbiBgT2JzZXJ2YWJsZWAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHRoaXMuc3RvcmFnZU1hcC5zaXplLnN1YnNjcmliZSgoc2l6ZSkgPT4ge1xuICAgKiAgIGNvbnNvbGUubG9nKHNpemUpO1xuICAgKiB9KTtcbiAgICovXG4gIGdldCBzaXplKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5zaXplXG4gICAgICAvKiBDYXRjaCBpZiBgaW5kZXhlZERiYCBpcyBicm9rZW4gKi9cbiAgICAgIC5waXBlKHRoaXMuY2F0Y2hJREJCcm9rZW4oKCkgPT4gdGhpcy5kYXRhYmFzZS5zaXplKSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBUZWxscyB5b3Ugd2hpY2ggc3RvcmFnZSBlbmdpbmUgaXMgdXNlZC4gKk9ubHkgdXNlZnVsIGZvciBpbnRlcm9wZXJhYmlsaXR5LipcbiAgICogTm90ZSB0aGF0IGR1ZSB0byBzb21lIGJyb3dzZXJzIGlzc3VlcyBpbiBzb21lIHNwZWNpYWwgY29udGV4dHNcbiAgICogKEZpcmVmb3ggcHJpdmF0ZSBtb2RlIGFuZCBTYWZhcmkgY3Jvc3Mtb3JpZ2luIGlmcmFtZXMpLFxuICAgKiAqKnRoaXMgaW5mb3JtYXRpb24gbWF5IGJlIHdyb25nIGF0IGluaXRpYWxpemF0aW9uLCoqXG4gICAqIGFzIHRoZSBzdG9yYWdlIGNvdWxkIGZhbGxiYWNrIGZyb20gYGluZGV4ZWREQmAgdG8gYGxvY2FsU3RvcmFnZWBcbiAgICogb25seSBhZnRlciBhIGZpcnN0IHJlYWQgb3Igd3JpdGUgb3BlcmF0aW9uLlxuICAgKiBAcmV0dXJucyBTdG9yYWdlIGVuZ2luZSB1c2VkXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9jeXJpbGxldHV6aS9hbmd1bGFyLWFzeW5jLWxvY2FsLXN0b3JhZ2UvYmxvYi9tYWluL2RvY3MvSU5URVJPUEVSQUJJTElUWS5tZH1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogaWYgKHRoaXMuc3RvcmFnZU1hcC5iYWNraW5nRW5naW5lID09PSAnaW5kZXhlZERCJykge31cbiAgICovXG4gIGdldCBiYWNraW5nRW5naW5lKCk6IFwiaW5kZXhlZERCXCIgfCBcImxvY2FsU3RvcmFnZVwiIHwgXCJtZW1vcnlcIiB8IFwidW5rbm93blwiIHtcblxuICAgIGlmICh0aGlzLmRhdGFiYXNlIGluc3RhbmNlb2YgSW5kZXhlZERCRGF0YWJhc2UpIHtcblxuICAgICAgcmV0dXJuIFwiaW5kZXhlZERCXCI7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YWJhc2UgaW5zdGFuY2VvZiBMb2NhbFN0b3JhZ2VEYXRhYmFzZSkge1xuXG4gICAgICByZXR1cm4gXCJsb2NhbFN0b3JhZ2VcIjtcblxuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhYmFzZSBpbnN0YW5jZW9mIE1lbW9yeURhdGFiYXNlKSB7XG5cbiAgICAgIHJldHVybiBcIm1lbW9yeVwiO1xuXG4gICAgfSBlbHNlIHtcblxuICAgICAgcmV0dXJuIFwidW5rbm93blwiO1xuXG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogSW5mbyBhYm91dCBgaW5kZXhlZERCYCBkYXRhYmFzZS4gKk9ubHkgdXNlZnVsIGZvciBpbnRlcm9wZXJhYmlsaXR5LipcbiAgICogQHJldHVybnMgYGluZGV4ZWREQmAgZGF0YWJhc2UgbmFtZSwgc3RvcmUgbmFtZSBhbmQgZGF0YWJhc2UgdmVyc2lvbi5cbiAgICogKipWYWx1ZXMgd2lsbCBiZSBlbXB0eSBpZiB0aGUgc3RvcmFnZSBpcyBub3QgYGluZGV4ZWREQmAsKipcbiAgICogKipzbyBpdCBzaG91bGQgYmUgdXNlZCBhZnRlciBhbiBlbmdpbmUgY2hlY2sqKi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2N5cmlsbGV0dXppL2FuZ3VsYXItYXN5bmMtbG9jYWwtc3RvcmFnZS9ibG9iL21haW4vZG9jcy9JTlRFUk9QRVJBQklMSVRZLm1kfVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBpZiAodGhpcy5zdG9yYWdlTWFwLmJhY2tpbmdFbmdpbmUgPT09ICdpbmRleGVkREInKSB7XG4gICAqICAgY29uc3QgeyBkYXRhYmFzZSwgc3RvcmUsIHZlcnNpb24gfSA9IHRoaXMuc3RvcmFnZU1hcC5iYWNraW5nU3RvcmU7XG4gICAqIH1cbiAgICovXG4gIGdldCBiYWNraW5nU3RvcmUoKTogeyBkYXRhYmFzZTogc3RyaW5nLCBzdG9yZTogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXI7IH0ge1xuXG4gICAgcmV0dXJuICh0aGlzLmRhdGFiYXNlIGluc3RhbmNlb2YgSW5kZXhlZERCRGF0YWJhc2UpID9cbiAgICAgIHRoaXMuZGF0YWJhc2UuYmFja2luZ1N0b3JlIDpcbiAgICAgIHsgZGF0YWJhc2U6IFwiXCIsIHN0b3JlOiBcIlwiLCB2ZXJzaW9uOiAwIH07XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmZvIGFib3V0IGBsb2NhbFN0b3JhZ2VgIGZhbGxiYWNrIHN0b3JhZ2UuICpPbmx5IHVzZWZ1bCBmb3IgaW50ZXJvcGVyYWJpbGl0eS4qXG4gICAqIEByZXR1cm5zIGBsb2NhbFN0b3JhZ2VgIHByZWZpeC5cbiAgICogKipWYWx1ZXMgd2lsbCBiZSBlbXB0eSBpZiB0aGUgc3RvcmFnZSBpcyBub3QgYGxvY2FsU3RvcmFnZWAsKipcbiAgICogKipzbyBpdCBzaG91bGQgYmUgdXNlZCBhZnRlciBhbiBlbmdpbmUgY2hlY2sqKi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2N5cmlsbGV0dXppL2FuZ3VsYXItYXN5bmMtbG9jYWwtc3RvcmFnZS9ibG9iL21haW4vZG9jcy9JTlRFUk9QRVJBQklMSVRZLm1kfVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBpZiAodGhpcy5zdG9yYWdlTWFwLmJhY2tpbmdFbmdpbmUgPT09ICdsb2NhbFN0b3JhZ2UnKSB7XG4gICAqICAgY29uc3QgeyBwcmVmaXggfSA9IHRoaXMuc3RvcmFnZU1hcC5mYWxsYmFja0JhY2tpbmdTdG9yZTtcbiAgICogfVxuICAgKi9cbiAgZ2V0IGZhbGxiYWNrQmFja2luZ1N0b3JlKCk6IHsgcHJlZml4OiBzdHJpbmc7IH0ge1xuXG4gICAgcmV0dXJuICh0aGlzLmRhdGFiYXNlIGluc3RhbmNlb2YgTG9jYWxTdG9yYWdlRGF0YWJhc2UpID9cbiAgICAgIHsgcHJlZml4OiB0aGlzLmRhdGFiYXNlLnByZWZpeCB9IDpcbiAgICAgIHsgcHJlZml4OiBcIlwiIH07XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gaXRlbSB2YWx1ZSBpbiBzdG9yYWdlLlxuICAgKiBUaGUgc2lnbmF0dXJlIGhhcyBtYW55IG92ZXJsb2FkcyBkdWUgdG8gdmFsaWRhdGlvbiwgKipwbGVhc2UgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24uKipcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2N5cmlsbGV0dXppL2FuZ3VsYXItYXN5bmMtbG9jYWwtc3RvcmFnZS9ibG9iL21haW4vZG9jcy9WQUxJREFUSU9OLm1kfVxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5XG4gICAqIEBwYXJhbSBzY2hlbWEgT3B0aW9uYWwgSlNPTiBzY2hlbWEgdG8gdmFsaWRhdGUgdGhlIGRhdGFcbiAgICogQHJldHVybnMgVGhlIGl0ZW0ncyB2YWx1ZSBpZiB0aGUga2V5IGV4aXN0cywgYHVuZGVmaW5lZGAgb3RoZXJ3aXNlLCB3cmFwcGVkIGluIGEgUnhKUyBgT2JzZXJ2YWJsZWBcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogdGhpcy5zdG9yYWdlTWFwLmdldCgna2V5JywgeyB0eXBlOiAnc3RyaW5nJyB9KS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgKiAgIHJlc3VsdDsgLy8gc3RyaW5nIG9yIHVuZGVmaW5lZFxuICAgKiB9KTtcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogaW50ZXJmYWNlIFVzZXIge1xuICAgKiAgIGZpcnN0TmFtZTogc3RyaW5nO1xuICAgKiAgIGxhc3ROYW1lPzogc3RyaW5nO1xuICAgKiB9XG4gICAqXG4gICAqIGNvbnN0IHNjaGVtYSA9IHtcbiAgICogICB0eXBlOiAnb2JqZWN0JyxcbiAgICogICBwcm9wZXJ0aWVzOiB7XG4gICAqICAgICBmaXJzdE5hbWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICogICAgIGxhc3ROYW1lOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAqICAgfSxcbiAgICogICByZXF1aXJlZDogWydmaXJzdE5hbWUnXVxuICAgKiB9O1xuICAgKlxuICAgKiB0aGlzLnN0b3JhZ2VNYXAuZ2V0PFVzZXI+KCd1c2VyJywgc2NoZW1hKS5zdWJzY3JpYmUoKHVzZXIpID0+IHtcbiAgICogICBpZiAodXNlcikge1xuICAgKiAgICAgdXNlci5maXJzdE5hbWU7XG4gICAqICAgfVxuICAgKiB9KTtcbiAgICovXG4gIGdldChrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8dW5rbm93bj47XG4gIGdldDxUIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihrZXk6IHN0cmluZywgc2NoZW1hOiBKU09OU2NoZW1hU3RyaW5nKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPjtcbiAgZ2V0PFQgZXh0ZW5kcyBudW1iZXIgPSBudW1iZXI+KGtleTogc3RyaW5nLCBzY2hlbWE6IEpTT05TY2hlbWFJbnRlZ2VyIHwgSlNPTlNjaGVtYU51bWJlcik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47XG4gIGdldDxUIGV4dGVuZHMgYm9vbGVhbiA9IGJvb2xlYW4+KGtleTogc3RyaW5nLCBzY2hlbWE6IEpTT05TY2hlbWFCb29sZWFuKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPjtcbiAgZ2V0PFQgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXSA9IHN0cmluZ1tdPihrZXk6IHN0cmluZywgc2NoZW1hOiBKU09OU2NoZW1hQXJyYXlPZjxKU09OU2NoZW1hU3RyaW5nPik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5pZmllZC1zaWduYXR1cmVzXG4gIGdldDxUIGV4dGVuZHMgcmVhZG9ubHkgbnVtYmVyW10gPSBudW1iZXJbXT4oa2V5OiBzdHJpbmcsIHNjaGVtYTogSlNPTlNjaGVtYUFycmF5T2Y8SlNPTlNjaGVtYUludGVnZXIgfCBKU09OU2NoZW1hTnVtYmVyPik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbWF4LWxlblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuaWZpZWQtc2lnbmF0dXJlc1xuICBnZXQ8VCBleHRlbmRzIHJlYWRvbmx5IGJvb2xlYW5bXSA9IGJvb2xlYW5bXT4oa2V5OiBzdHJpbmcsIHNjaGVtYTogSlNPTlNjaGVtYUFycmF5T2Y8SlNPTlNjaGVtYUJvb2xlYW4+KTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPjtcbiAgZ2V0PFQ+KGtleTogc3RyaW5nLCBzY2hlbWE6IEpTT05TY2hlbWEpOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+O1xuICBnZXQ8VCA9IHVua25vd24+KGtleTogc3RyaW5nLCBzY2hlbWE/OiBKU09OU2NoZW1hKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG5cbiAgICAvKiBHZXQgdGhlIGRhdGEgaW4gc3RvcmFnZSAqL1xuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmdldChrZXkpLnBpcGUoXG4gICAgICAvKiBDaGVjayBpZiBgaW5kZXhlZERiYCBpcyBicm9rZW4gKi9cbiAgICAgIHRoaXMuY2F0Y2hJREJCcm9rZW4oKCkgPT4gdGhpcy5kYXRhYmFzZS5nZXQoa2V5KSksXG4gICAgICBtZXJnZU1hcCgoZGF0YSkgPT4ge1xuXG4gICAgICAgIC8qIE5vIG5lZWQgdG8gdmFsaWRhdGUgaWYgdGhlIGRhdGEgaXMgZW1wdHkgKi9cbiAgICAgICAgaWYgKChkYXRhID09PSB1bmRlZmluZWQpIHx8IChkYXRhID09PSBudWxsKSkge1xuXG4gICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChzY2hlbWEpIHtcblxuICAgICAgICAgIC8qIFZhbGlkYXRlIGRhdGEgYWdhaW5zdCBhIEpTT04gc2NoZW1hIGlmIHByb3ZpZGVkICovXG4gICAgICAgICAgaWYgKCF0aGlzLmpzb25WYWxpZGF0b3IudmFsaWRhdGUoZGF0YSwgc2NoZW1hKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IFZhbGlkYXRpb25FcnJvcigpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvKiBEYXRhIGhhdmUgYmVlbiBjaGVja2VkLCBzbyBpdCdzIE9LIHRvIGNhc3QgKi9cbiAgICAgICAgICByZXR1cm4gb2YoZGF0YSBhcyBUIHwgdW5kZWZpbmVkKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgLyogQ2FzdCB0byB1bmtub3duIGFzIHRoZSBkYXRhIHdhc24ndCBjaGVja2VkICovXG4gICAgICAgIHJldHVybiBvZihkYXRhKTtcblxuICAgICAgfSksXG4gICAgKTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhbiBpdGVtIGluIHN0b3JhZ2UuXG4gICAqIE5vdGUgdGhhdCBzZXR0aW5nIGBudWxsYCBvciBgdW5kZWZpbmVkYCB3aWxsIHJlbW92ZSB0aGUgaXRlbSB0byBhdm9pZCBzb21lIGJyb3dzZXJzIGlzc3Vlcy5cbiAgICogQHBhcmFtIGtleSBUaGUgaXRlbSdzIGtleVxuICAgKiBAcGFyYW0gZGF0YSBUaGUgaXRlbSdzIHZhbHVlXG4gICAqIEBwYXJhbSBzY2hlbWEgT3B0aW9uYWwgSlNPTiBzY2hlbWEgdG8gdmFsaWRhdGUgdGhlIGRhdGFcbiAgICogQHJldHVybnMgQSBSeEpTIGBPYnNlcnZhYmxlYCB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB0aGlzLnN0b3JhZ2VNYXAuc2V0KCdrZXknLCAndmFsdWUnKS5zdWJzY3JpYmUoKCkgPT4ge30pO1xuICAgKi9cbiAgc2V0KGtleTogc3RyaW5nLCBkYXRhOiB1bmtub3duLCBzY2hlbWE/OiBKU09OU2NoZW1hKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcblxuICAgIC8qIFN0b3JpbmcgYHVuZGVmaW5lZGAgb3IgYG51bGxgIGlzIHVzZWxlc3MgYW5kIGNhbiBjYXVzZSBpc3N1ZXMgaW4gYGluZGV4ZWREYmAgaW4gc29tZSBicm93c2VycyxcbiAgICAgKiBzbyByZW1vdmluZyBpdGVtIGluc3RlYWQgZm9yIGFsbCBzdG9yYWdlcyB0byBoYXZlIGEgY29uc2lzdGVudCBBUEkgKi9cbiAgICBpZiAoKGRhdGEgPT09IHVuZGVmaW5lZCkgfHwgKGRhdGEgPT09IG51bGwpKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWxldGUoa2V5KTtcbiAgICB9XG5cbiAgICAvKiBWYWxpZGF0ZSBkYXRhIGFnYWluc3QgYSBKU09OIHNjaGVtYSBpZiBwcm92aWRlZCAqL1xuICAgIGlmIChzY2hlbWEgJiYgIXRoaXMuanNvblZhbGlkYXRvci52YWxpZGF0ZShkYXRhLCBzY2hlbWEpKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgVmFsaWRhdGlvbkVycm9yKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLnNldChrZXksIGRhdGEpLnBpcGUoXG4gICAgICAvKiBDYXRjaCBpZiBgaW5kZXhlZERiYCBpcyBicm9rZW4gKi9cbiAgICAgIHRoaXMuY2F0Y2hJREJCcm9rZW4oKCkgPT4gdGhpcy5kYXRhYmFzZS5zZXQoa2V5LCBkYXRhKSksXG4gICAgICAvKiBOb3RpZnkgd2F0Y2hlcnMgKG11c3QgYmUgbGFzdCBiZWNhdXNlIGl0IHNob3VsZCBvbmx5IGhhcHBlbiBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRzKSAqL1xuICAgICAgdGFwKCgpID0+IHsgdGhpcy5ub3RpZnkoa2V5LCBkYXRhKTsgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYW4gaXRlbSBpbiBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHJldHVybnMgQSBSeEpTIGBPYnNlcnZhYmxlYCB0byB3YWl0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvblxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB0aGlzLnN0b3JhZ2VNYXAuZGVsZXRlKCdrZXknKS5zdWJzY3JpYmUoKCkgPT4ge30pO1xuICAgKi9cbiAgZGVsZXRlKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcblxuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmRlbGV0ZShrZXkpLnBpcGUoXG4gICAgICAvKiBDYXRjaCBpZiBgaW5kZXhlZERiYCBpcyBicm9rZW4gKi9cbiAgICAgIHRoaXMuY2F0Y2hJREJCcm9rZW4oKCkgPT4gdGhpcy5kYXRhYmFzZS5kZWxldGUoa2V5KSksXG4gICAgICAvKiBOb3RpZnkgd2F0Y2hlcnMgKG11c3QgYmUgbGFzdCBiZWNhdXNlIGl0IHNob3VsZCBvbmx5IGhhcHBlbiBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRzKSAqL1xuICAgICAgdGFwKCgpID0+IHsgdGhpcy5ub3RpZnkoa2V5LCB1bmRlZmluZWQpOyB9KSxcbiAgICApO1xuXG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGFsbCBpdGVtcyBpbiBzdG9yYWdlXG4gICAqIEByZXR1cm5zIEEgUnhKUyBgT2JzZXJ2YWJsZWAgdG8gd2FpdCB0aGUgZW5kIG9mIHRoZSBvcGVyYXRpb25cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogdGhpcy5zdG9yYWdlTWFwLmNsZWFyKCkuc3Vic2NyaWJlKCgpID0+IHt9KTtcbiAgICovXG4gIGNsZWFyKCk6IE9ic2VydmFibGU8dW5kZWZpbmVkPiB7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5jbGVhcigpLnBpcGUoXG4gICAgICAvKiBDYXRjaCBpZiBgaW5kZXhlZERiYCBpcyBicm9rZW4gKi9cbiAgICAgIHRoaXMuY2F0Y2hJREJCcm9rZW4oKCkgPT4gdGhpcy5kYXRhYmFzZS5jbGVhcigpKSxcbiAgICAgIC8qIE5vdGlmeSB3YXRjaGVycyAobXVzdCBiZSBsYXN0IGJlY2F1c2UgaXQgc2hvdWxkIG9ubHkgaGFwcGVuIGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZHMpICovXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLm5vdGlmaWVycy5rZXlzKCkpIHtcbiAgICAgICAgICB0aGlzLm5vdGlmeShrZXksIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIGtleXMgc3RvcmVkIGluIHN0b3JhZ2UuIE5vdGUgKip0aGlzIGlzIGFuICppdGVyYXRpbmcqIGBPYnNlcnZhYmxlYCoqOlxuICAgKiAqIGlmIHRoZXJlIGlzIG5vIGtleSwgdGhlIGBuZXh0YCBjYWxsYmFjayB3aWxsIG5vdCBiZSBpbnZva2VkLFxuICAgKiAqIGlmIHlvdSBuZWVkIHRvIHdhaXQgdGhlIHdob2xlIG9wZXJhdGlvbiB0byBlbmQsIGJlIHN1cmUgdG8gYWN0IGluIHRoZSBgY29tcGxldGVgIGNhbGxiYWNrLFxuICAgKiBhcyB0aGlzIGBPYnNlcnZhYmxlYCBjYW4gZW1pdCBzZXZlcmFsIHZhbHVlcyBhbmQgc28gd2lsbCBpbnZva2UgdGhlIGBuZXh0YCBjYWxsYmFjayBzZXZlcmFsIHRpbWVzLlxuICAgKiBAcmV0dXJucyBBIGxpc3Qgb2YgdGhlIGtleXMgd3JhcHBlZCBpbiBhIFJ4SlMgYE9ic2VydmFibGVgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHRoaXMuc3RvcmFnZU1hcC5rZXlzKCkuc3Vic2NyaWJlKHtcbiAgICogICBuZXh0OiAoa2V5KSA9PiB7IGNvbnNvbGUubG9nKGtleSk7IH0sXG4gICAqICAgY29tcGxldGU6ICgpID0+IHsgY29uc29sZS5sb2coJ0RvbmUnKTsgfSxcbiAgICogfSk7XG4gICAqL1xuICBrZXlzKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5rZXlzKClcbiAgICAgIC8qIENhdGNoIGlmIGBpbmRleGVkRGJgIGlzIGJyb2tlbiAqL1xuICAgICAgLnBpcGUodGhpcy5jYXRjaElEQkJyb2tlbigoKSA9PiB0aGlzLmRhdGFiYXNlLmtleXMoKSkpO1xuXG4gIH1cblxuICAvKipcbiAgICogVGVsbHMgaWYgYSBrZXkgZXhpc3RzIGluIHN0b3JhZ2VcbiAgICogQHJldHVybnMgQSBSeEpTIGBPYnNlcnZhYmxlYCB0ZWxsaW5nIGlmIHRoZSBrZXkgZXhpc3RzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHRoaXMuc3RvcmFnZU1hcC5oYXMoJ2tleScpLnN1YnNjcmliZSgoaGFzS2V5KSA9PiB7XG4gICAqICAgaWYgKGhhc0tleSkge31cbiAgICogfSk7XG4gICAqL1xuICBoYXMoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmhhcyhrZXkpXG4gICAgICAvKiBDYXRjaCBpZiBgaW5kZXhlZERiYCBpcyBicm9rZW4gKi9cbiAgICAgIC5waXBlKHRoaXMuY2F0Y2hJREJCcm9rZW4oKCkgPT4gdGhpcy5kYXRhYmFzZS5oYXMoa2V5KSkpO1xuXG4gIH1cblxuICAvKipcbiAgICogV2F0Y2ggYW4gaXRlbSB2YWx1ZSBpbiBzdG9yYWdlLlxuICAgKiAqKk5vdGUgb25seSBjaGFuZ2VzIGRvbmUgdmlhIHRoaXMgbGliIHdpbGwgYmUgd2F0Y2hlZCoqLCBleHRlcm5hbCBjaGFuZ2VzIGluIHN0b3JhZ2UgY2FuJ3QgYmUgZGV0ZWN0ZWQuXG4gICAqIFRoZSBzaWduYXR1cmUgaGFzIG1hbnkgb3ZlcmxvYWRzIGR1ZSB0byB2YWxpZGF0aW9uLCAqKnBsZWFzZSByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbi4qKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jeXJpbGxldHV6aS9hbmd1bGFyLWFzeW5jLWxvY2FsLXN0b3JhZ2UvYmxvYi9tYWluL2RvY3MvVkFMSURBVElPTi5tZFxuICAgKiBAcGFyYW0ga2V5IFRoZSBpdGVtJ3Mga2V5IHRvIHdhdGNoXG4gICAqIEBwYXJhbSBzY2hlbWEgT3B0aW9uYWwgSlNPTiBzY2hlbWEgdG8gdmFsaWRhdGUgdGhlIGluaXRpYWwgdmFsdWVcbiAgICogQHJldHVybnMgQW4gaW5maW5pdGUgYE9ic2VydmFibGVgIGdpdmluZyB0aGUgY3VycmVudCB2YWx1ZVxuICAgKi9cbiAgd2F0Y2goa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHVua25vd24+O1xuICB3YXRjaDxUIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihrZXk6IHN0cmluZywgc2NoZW1hOiBKU09OU2NoZW1hU3RyaW5nKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPjtcbiAgd2F0Y2g8VCBleHRlbmRzIG51bWJlciA9IG51bWJlcj4oa2V5OiBzdHJpbmcsIHNjaGVtYTogSlNPTlNjaGVtYUludGVnZXIgfCBKU09OU2NoZW1hTnVtYmVyKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPjtcbiAgd2F0Y2g8VCBleHRlbmRzIGJvb2xlYW4gPSBib29sZWFuPihrZXk6IHN0cmluZywgc2NoZW1hOiBKU09OU2NoZW1hQm9vbGVhbik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47XG4gIHdhdGNoPFQgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXSA9IHN0cmluZ1tdPihrZXk6IHN0cmluZywgc2NoZW1hOiBKU09OU2NoZW1hQXJyYXlPZjxKU09OU2NoZW1hU3RyaW5nPik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5pZmllZC1zaWduYXR1cmVzXG4gIHdhdGNoPFQgZXh0ZW5kcyByZWFkb25seSBudW1iZXJbXSA9IG51bWJlcltdPihrZXk6IHN0cmluZywgc2NoZW1hOiBKU09OU2NoZW1hQXJyYXlPZjxKU09OU2NoZW1hSW50ZWdlciB8IEpTT05TY2hlbWFOdW1iZXI+KTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBtYXgtbGVuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5pZmllZC1zaWduYXR1cmVzXG4gIHdhdGNoPFQgZXh0ZW5kcyByZWFkb25seSBib29sZWFuW10gPSBib29sZWFuW10+KGtleTogc3RyaW5nLCBzY2hlbWE6IEpTT05TY2hlbWFBcnJheU9mPEpTT05TY2hlbWFCb29sZWFuPik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47XG4gIHdhdGNoPFQ+KGtleTogc3RyaW5nLCBzY2hlbWE6IEpTT05TY2hlbWEpOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+O1xuICB3YXRjaDxUID0gdW5rbm93bj4oa2V5OiBzdHJpbmcsIHNjaGVtYT86IEpTT05TY2hlbWEpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcblxuICAgIC8qIENoZWNrIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBub3RpZmllciAqL1xuICAgIGlmICghdGhpcy5ub3RpZmllcnMuaGFzKGtleSkpIHtcbiAgICAgIHRoaXMubm90aWZpZXJzLnNldChrZXksIG5ldyBSZXBsYXlTdWJqZWN0KDEpKTtcbiAgICB9XG5cbiAgICAvKiBOb24tbnVsbCBhc3NlcnRpb24gaXMgcmVxdWlyZWQgYmVjYXVzZSBUeXBlU2NyaXB0IGRvZXNuJ3QgbmFycm93IGAuaGFzKClgIHlldCAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgY29uc3Qgbm90aWZpZXIgPSB0aGlzLm5vdGlmaWVycy5nZXQoa2V5KSE7XG5cbiAgICAvKiBHZXQgdGhlIGN1cnJlbnQgaXRlbSB2YWx1ZSAqL1xuICAgIChzY2hlbWEgPyB0aGlzLmdldDxUPihrZXksIHNjaGVtYSkgOiB0aGlzLmdldChrZXkpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3VsdCkgPT4ge1xuICAgICAgICBub3RpZmllci5uZXh0KHJlc3VsdCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICBub3RpZmllci5lcnJvcihlcnJvcik7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLyogT25seSB0aGUgcHVibGljIEFQSSBvZiB0aGUgYE9ic2VydmFibGVgIHNob3VsZCBiZSByZXR1cm5lZCAqL1xuICAgIHJldHVybiAoc2NoZW1hID9cbiAgICAgIG5vdGlmaWVyLmFzT2JzZXJ2YWJsZSgpIGFzIE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4gOlxuICAgICAgbm90aWZpZXIuYXNPYnNlcnZhYmxlKClcbiAgICApO1xuXG4gIH1cblxuICAvKipcbiAgICogTm90aWZ5IHdoZW4gYSB2YWx1ZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSBrZXkgVGhlIGl0ZW0ncyBrZXlcbiAgICogQHBhcmFtIGRhdGEgVGhlIG5ldyB2YWx1ZVxuICAgKi9cbiAgcHJvdGVjdGVkIG5vdGlmeShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcblxuICAgIGNvbnN0IG5vdGlmaWVyID0gdGhpcy5ub3RpZmllcnMuZ2V0KGtleSk7XG5cbiAgICBpZiAobm90aWZpZXIpIHtcbiAgICAgIG5vdGlmaWVyLm5leHQodmFsdWUpO1xuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICAqIFJ4SlMgb3BlcmF0b3IgdG8gY2F0Y2ggaWYgYGluZGV4ZWREQmAgaXMgYnJva2VuXG4gICAqIEBwYXJhbSBvcGVyYXRpb25DYWxsYmFjayBDYWxsYmFjayB3aXRoIHRoZSBvcGVyYXRpb24gdG8gcmVkb1xuICAgKi9cbiAgcHJvdGVjdGVkIGNhdGNoSURCQnJva2VuPFQ+KG9wZXJhdGlvbkNhbGxiYWNrOiAoKSA9PiBPYnNlcnZhYmxlPFQ+KTogT3BlcmF0b3JGdW5jdGlvbjxULCBUPiB7XG5cbiAgICByZXR1cm4gY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcblxuICAgICAgLyogQ2hlY2sgaWYgYGluZGV4ZWREQmAgaXMgYnJva2VuIGJhc2VkIG9uIGVycm9yIG1lc3NhZ2UgKHRoZSBzcGVjaWZpYyBlcnJvciBjbGFzcyBzZWVtcyB0byBiZSBsb3N0IGluIHRoZSBwcm9jZXNzKSAqL1xuICAgICAgaWYgKChlcnJvciAhPT0gdW5kZWZpbmVkKSAmJiAoZXJyb3IgIT09IG51bGwpXG4gICAgICAgICYmICh0eXBlb2YgZXJyb3IgPT09IFwib2JqZWN0XCIpICYmIChcIm1lc3NhZ2VcIiBpbiBlcnJvcilcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgICAgICAmJiAoZXJyb3IubWVzc2FnZSA9PT0gSURCX0JST0tFTl9FUlJPUikpIHtcblxuICAgICAgICAvKiBXaGVuIHN0b3JhZ2UgaXMgZnVsbHkgZGlzYWJsZWQgaW4gYnJvd3NlciAodmlhIHRoZSBcIkJsb2NrIGFsbCBjb29raWVzXCIgb3B0aW9uKSxcbiAgICAgICAgICoganVzdCB0cnlpbmcgdG8gY2hlY2sgYGxvY2FsU3RvcmFnZWAgdmFyaWFibGUgY2F1c2VzIGEgc2VjdXJpdHkgZXhjZXB0aW9uLlxuICAgICAgICAgKiBQcmV2ZW50cyBodHRwczovL2dpdGh1Yi5jb20vY3lyaWxsZXR1emkvYW5ndWxhci1hc3luYy1sb2NhbC1zdG9yYWdlL2lzc3Vlcy8xMThcbiAgICAgICAgICovXG4gICAgICAgIHRyeSB7XG5cbiAgICAgICAgICBpZiAoXCJnZXRJdGVtXCIgaW4gbG9jYWxTdG9yYWdlKSB7XG5cbiAgICAgICAgICAgIC8qIEZhbGxiYWNrIHRvIGBsb2NhbFN0b3JhZ2VgIGlmIGF2YWlsYWJsZSAqL1xuICAgICAgICAgICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBMb2NhbFN0b3JhZ2VEYXRhYmFzZSgpO1xuXG4gICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgLyogRmFsbGJhY2sgdG8gbWVtb3J5IHN0b3JhZ2Ugb3RoZXJ3aXNlICovXG4gICAgICAgICAgICB0aGlzLmRhdGFiYXNlID0gbmV3IE1lbW9yeURhdGFiYXNlKCk7XG5cbiAgICAgICAgICB9XG5cbiAgICAgICAgfSBjYXRjaCB7XG5cbiAgICAgICAgICAvKiBGYWxsYmFjayB0byBtZW1vcnkgc3RvcmFnZSBvdGhlcndpc2UgKi9cbiAgICAgICAgICB0aGlzLmRhdGFiYXNlID0gbmV3IE1lbW9yeURhdGFiYXNlKCk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIFJlZG8gdGhlIG9wZXJhdGlvbiAqL1xuICAgICAgICByZXR1cm4gb3BlcmF0aW9uQ2FsbGJhY2soKTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICAvKiBPdGhlcndpc2UsIHJldGhyb3cgdGhlIGVycm9yICovXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG5cbiAgICAgIH1cblxuICAgIH0pO1xuXG4gIH1cblxufVxuIl19
@@ -2,4 +2,4 @@
2
2
  * to create a TypeScript discriminant union type.
3
3
  * Avoid https://github.com/cyrilletuzi/angular-async-local-storage/issues/64 */
4
4
  export {};
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcHdhL2xvY2FsLXN0b3JhZ2Uvc3JjL2xpYi92YWxpZGF0aW9uL2pzb24tc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztnRkFFZ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBBbGwgc2NoZW1hcyBpbnRlcmZhY2VzIG11c3QgaGF2ZSBhIHJlcXVpcmVkIGFuZCBkaWZmZXJlbnQgYHR5cGVgLFxuICogdG8gY3JlYXRlIGEgVHlwZVNjcmlwdCBkaXNjcmltaW5hbnQgdW5pb24gdHlwZS5cbiAqIEF2b2lkIGh0dHBzOi8vZ2l0aHViLmNvbS9jeXJpbGxldHV6aS9hbmd1bGFyLWFzeW5jLWxvY2FsLXN0b3JhZ2UvaXNzdWVzLzY0ICovXG5cbi8qKlxuICogSlNPTiBTY2hlbWEgdG8gZGVzY3JpYmUgYSBib29sZWFuIHZhbHVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpTT05TY2hlbWFCb29sZWFuIHtcblxuICAvKipcbiAgICogVHlwZSBmb3IgYSBib29sZWFuIHZhbHVlLlxuICAgKi9cbiAgdHlwZTogXCJib29sZWFuXCI7XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIHN0cmljdGx5IGVxdWFsIHRvIHRoaXMuXG4gICAqL1xuICBjb25zdD86IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBKU09OIFNjaGVtYSB0byBkZXNjcmliZSBhIG51bWJlciB2YWx1ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKU09OU2NoZW1hTnVtYmVyIHtcblxuICAvKipcbiAgICogVHlwZSBmb3IgYSBudW1lcmljIHZhbHVlLlxuICAgKi9cbiAgdHlwZTogXCJudW1iZXJcIjtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgdmFsdWUgaXMgc3RyaWN0bHkgZXF1YWwgdG8gdGhpcy5cbiAgICovXG4gIGNvbnN0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSB2YWx1ZSBpcyBzdHJpY3RseSBlcXVhbCB0byBvbmUgb2YgdGhlIHZhbHVlIG9mIGVudW0uXG4gICAqL1xuICBlbnVtPzogcmVhZG9ubHkgbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbnVtYmVyIGlzIGEgbXVsdGlwbGUgb2YgeC5cbiAgICogTXVzdCBiZSBzdHJpY3RseSBncmVhdGVyIHRoYW4gMC5cbiAgICovXG4gIG11bHRpcGxlT2Y/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbnVtYmVyIGlzIGxvd2VyIG9yIGVxdWFsIHRoYW4gdGhpcyBtYXhpbXVtLlxuICAgKi9cbiAgbWF4aW11bT86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBudW1iZXIgaXMgc3RyaWN0bHkgbG93ZXIgdGhhbiB0aGlzIG1heGltdW0uXG4gICAqL1xuICBleGNsdXNpdmVNYXhpbXVtPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG51bWJlciBpcyBncmVhdGVyIG9yIGVxdWFsIHRoYW4gdGhpcyBtaW5pbXVtLlxuICAgKi9cbiAgbWluaW11bT86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBudW1iZXIgaXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIHRoaXMgbWluaW11bS5cbiAgICovXG4gIGV4Y2x1c2l2ZU1pbmltdW0/OiBudW1iZXI7XG5cbn1cblxuLyoqXG4gKiBKU09OIFNjaGVtYSB0byBkZXNjcmliZSBhbiBpbnRlZ2VyIHZhbHVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpTT05TY2hlbWFJbnRlZ2VyIHtcblxuICAvKipcbiAgICogVHlwZSBmb3IgYW4gaW50ZWdlciB2YWx1ZS5cbiAgICovXG4gIHR5cGU6IFwiaW50ZWdlclwiO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSB2YWx1ZSBpcyBzdHJpY3RseSBlcXVhbCB0byB0aGlzLlxuICAgKi9cbiAgY29uc3Q/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIHN0cmljdGx5IGVxdWFsIHRvIG9uZSBvZiB0aGUgdmFsdWUgb2YgZW51bS5cbiAgICovXG4gIGVudW0/OiByZWFkb25seSBudW1iZXJbXTtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBudW1iZXIgaXMgYSBtdWx0aXBsZSBvZiB4LlxuICAgKiBNdXN0IGJlIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiAwLlxuICAgKi9cbiAgbXVsdGlwbGVPZj86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBudW1iZXIgaXMgbG93ZXIgb3IgZXF1YWwgdGhhbiB0aGlzIG1heGltdW0uXG4gICAqL1xuICBtYXhpbXVtPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG51bWJlciBpcyBzdHJpY3RseSBsb3dlciB0aGFuIHRoaXMgbWF4aW11bS5cbiAgICovXG4gIGV4Y2x1c2l2ZU1heGltdW0/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbnVtYmVyIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiB0aGlzIG1pbmltdW0uXG4gICAqL1xuICBtaW5pbXVtPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG51bWJlciBpcyBzdHJpY3RseSBncmVhdGVyIHRoYW4gdGhpcyBtaW5pbXVtLlxuICAgKi9cbiAgZXhjbHVzaXZlTWluaW11bT86IG51bWJlcjtcblxufVxuXG4vKipcbiAqIEpTT04gU2NoZW1hIHRvIGRlc2NyaWJlIGEgc3RyaW5nIHZhbHVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpTT05TY2hlbWFTdHJpbmcge1xuXG4gIC8qKlxuICAgKiBUeXBlIGZvciBhIHN0cmluZyB2YWx1ZS5cbiAgICovXG4gIHR5cGU6IFwic3RyaW5nXCI7XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIHN0cmljdGx5IGVxdWFsIHRvIHRoaXMuXG4gICAqL1xuICBjb25zdD86IHN0cmluZztcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgdmFsdWUgaXMgc3RyaWN0bHkgZXF1YWwgdG8gb25lIG9mIHRoZSB2YWx1ZSBvZiBlbnVtLlxuICAgKi9cbiAgZW51bT86IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBNYXhpdW0gbGVuZ3RoIGZvciBhIHN0cmluZy5cbiAgICogTXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNaW5pbXVtIGxlbmd0aCBmb3IgYSBzdHJpbmcuXG4gICAqIE11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci5cbiAgICovXG4gIG1pbkxlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogUGF0dGVybiB0byBtYXRjaCBmb3IgYSBzdHJpbmcuXG4gICAqIE11c3QgYmUgYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24sICp3aXRob3V0KiB0aGUgYC9gIGRlbGltaXRlcnMuXG4gICAqL1xuICBwYXR0ZXJuPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogSlNPTiBzY2hlbWEgdG8gZGVzY3JpYmUgYW4gYXJyYXkgb2YgdmFsdWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpTT05TY2hlbWFBcnJheSB7XG5cbiAgLyoqXG4gICAqIFR5cGUgZm9yIGFuIGFycmF5IG9mIHZhbHVlcy5cbiAgICovXG4gIHR5cGU6IFwiYXJyYXlcIjtcblxuICAvKipcbiAgICogU2NoZW1hIGZvciB0aGUgdmFsdWVzIG9mIHRoZSBhcnJheS5cbiAgICovXG4gIGl0ZW1zOiBKU09OU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhcnJheSBsZW5ndGggaXMgbG93ZXIgb3IgZXF1YWwgdG8gdGhpcyB2YWx1ZS5cbiAgICogTXVzdCBiZSBhIG5vbiBuZWdhdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgbWF4SXRlbXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGFycmF5IGxlbmd0aCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHRoaXMgdmFsdWUuXG4gICAqIE11c3QgYmUgYSBub24gbmVnYXRpdmUgaW50ZWdlci5cbiAgICovXG4gIG1pbkl0ZW1zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhcnJheSBvbmx5IGhhdmUgdW5pcXVlIHZhbHVlcy5cbiAgICovXG4gIHVuaXF1ZUl0ZW1zPzogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIEpTT04gU2NoZW1hIHRvIGRlc2NyaWJlIGFuIGFycmF5IG9mIHByaW1pdGl2ZSB2YWx1ZXM6XG4gKiAtIGFycmF5IG9mIGJvb2xlYW5zOiBgSlNPTlNjaGVtYUFycmF5T2Y8SlNPTlNjaGVtYUJvb2xlYW4+YCxcbiAqIC0gYXJyYXkgb2YgbnVtYmVyczogYEpTT05TY2hlbWFBcnJheU9mPEpTT05TY2hlbWFOdW1iZXI+YCxcbiAqIC0gYXJyYXkgb2YgaW50ZWdlcnM6IGBKU09OU2NoZW1hQXJyYXlPZjxKU09OU2NoZW1hSW50ZWdlcj5gLFxuICogLSBhcnJheSBvZiBzdHJpbmdzOiBgSlNPTlNjaGVtYUFycmF5T2Y8SlNPTlNjaGVtYVN0cmluZz5gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpTT05TY2hlbWFBcnJheU9mPFQgZXh0ZW5kcyBKU09OU2NoZW1hQm9vbGVhbiB8IEpTT05TY2hlbWFOdW1iZXIgfCBKU09OU2NoZW1hSW50ZWdlciB8IEpTT05TY2hlbWFTdHJpbmc+IHtcblxuICAvKipcbiAgICogVHlwZSBmb3IgYW4gYXJyYXkgb2YgdmFsdWVzLlxuICAgKi9cbiAgdHlwZTogXCJhcnJheVwiO1xuXG4gIC8qKlxuICAgKiBTY2hlbWEgZm9yIHRoZSB2YWx1ZXMgb2YgYW4gYXJyYXkuXG4gICAqL1xuICBpdGVtczogVDtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXJyYXkgbGVuZ3RoIGlzIGxvd2VyIG9yIGVxdWFsIHRvIHRoaXMgdmFsdWUuXG4gICAqIE11c3QgYmUgYSBub24gbmVnYXRpdmUgaW50ZWdlci5cbiAgICovXG4gIG1heEl0ZW1zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhcnJheSBsZW5ndGggaXMgZ3JlYXRlciBvciBlcXVhbCB0byB0aGlzIHZhbHVlLlxuICAgKiBNdXN0IGJlIGEgbm9uIG5lZ2F0aXZlIGludGVnZXIuXG4gICAqL1xuICBtaW5JdGVtcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXJyYXkgb25seSBoYXZlIHVuaXF1ZSB2YWx1ZXMuXG4gICAqL1xuICB1bmlxdWVJdGVtcz86IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBKU09OIHNjaGVtYSB0byBkZXNjcmliZSBhIHR1cGxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpTT05TY2hlbWFUdXBsZSB7XG5cbiAgLyoqXG4gICAqIFR5cGUgZm9yIGFuIGFycmF5IG9mIHZhbHVlcy5cbiAgICovXG4gIHR5cGU6IFwiYXJyYXlcIjtcblxuICAvKipcbiAgICogU2NoZW1hIGZvciB0aGUgdmFsdWVzIG9mIHRoZSB0dXBsZS5cbiAgICovXG4gIGl0ZW1zPzogcmVhZG9ubHkgSlNPTlNjaGVtYVtdO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhcnJheSBsZW5ndGggaXMgbG93ZXIgb3IgZXF1YWwgdG8gdGhpcyB2YWx1ZS5cbiAgICogTXVzdCBiZSBhIG5vbiBuZWdhdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgbWF4SXRlbXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGFycmF5IGxlbmd0aCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHRoaXMgdmFsdWUuXG4gICAqIE11c3QgYmUgYSBub24gbmVnYXRpdmUgaW50ZWdlci5cbiAgICovXG4gIG1pbkl0ZW1zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhcnJheSBvbmx5IGhhdmUgdW5pcXVlIHZhbHVlcy5cbiAgICovXG4gIHVuaXF1ZUl0ZW1zPzogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIEpTT04gc2NoZW1hIHRvIGRlc2NyaWJlIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKU09OU2NoZW1hT2JqZWN0IHtcblxuICAvKipcbiAgICogVHlwZSBmb3IgYW4gb2JqZWN0LlxuICAgKi9cbiAgdHlwZTogXCJvYmplY3RcIjtcblxuICAvKipcbiAgICogTGlzdCBvZiBwcm9wZXJ0aWVzIG9mIHRoZSBvYmplY3QgYW5kIHRoZWlyIGFzc29jaWF0ZWQgSlNPTiBzY2hlbWFzLlxuICAgKi9cbiAgcHJvcGVydGllczoge1xuICAgIFtrOiBzdHJpbmddOiBKU09OU2NoZW1hO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBuYW1lcyBvZiB0aGUgcmVxdWlyZWQgcHJvcGVydGllcyBmb3IgYW4gb2JqZWN0LlxuICAgKiBQcm9wZXJ0aWVzIHNldCBhcyByZXF1aXJlZCBzaG91bGQgYmUgcHJlc2VudCBpbiBgcHJvcGVydGllc2AgdG9vLlxuICAgKi9cbiAgcmVxdWlyZWQ/OiByZWFkb25seSBzdHJpbmdbXTtcblxufVxuXG4vKipcbiAqIFN1YnNldCBvZiB0aGUgSlNPTiBTY2hlbWEgc3RhbmRhcmQuXG4gKiBUeXBlcyBhcmUgZW5mb3JjZWQgdG8gdmFsaWRhdGUgZXZlcnl0aGluZzogZWFjaCB2YWx1ZSAqKm11c3QqKiBoYXZlIGEgYHR5cGVgLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2N5cmlsbGV0dXppL2FuZ3VsYXItYXN5bmMtbG9jYWwtc3RvcmFnZS9ibG9iL21haW4vZG9jcy9WQUxJREFUSU9OLm1kfVxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBzY2hlbWE6IEpTT05TY2hlbWEgPSB7IHR5cGU6ICdzdHJpbmcnIH07XG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHNjaGVtYTogSlNPTlNjaGVtYSA9IHsgdHlwZTogJ251bWJlcicgfTtcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgc2NoZW1hOiBKU09OU2NoZW1hID0geyB0eXBlOiAnaW50ZWdlcicgfTtcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgc2NoZW1hOiBKU09OU2NoZW1hID0geyB0eXBlOiAnYm9vbGVhbicgfTtcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgc2NoZW1hOiBKU09OU2NoZW1hID0ge1xuICogICB0eXBlOiAnYXJyYXknLFxuICogICBpdGVtczogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICogfTtcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgc2NoZW1hOiBKU09OU2NoZW1hID0ge1xuICogICB0eXBlOiAnb2JqZWN0JyxcbiAqICAgcHJvcGVydGllczoge1xuICogICAgIGZpcnN0TmFtZTogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICogICAgIGxhc3ROYW1lOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gKiAgIH0sXG4gKiAgIHJlcXVpcmVkOiBbJ2ZpcnN0TmFtZSddLFxuICogfTtcbiAqL1xuZXhwb3J0IHR5cGUgSlNPTlNjaGVtYSA9IEpTT05TY2hlbWFTdHJpbmcgfCBKU09OU2NoZW1hTnVtYmVyIHwgSlNPTlNjaGVtYUludGVnZXIgfCBKU09OU2NoZW1hQm9vbGVhbiB8IEpTT05TY2hlbWFBcnJheSB8IEpTT05TY2hlbWFUdXBsZSB8IEpTT05TY2hlbWFPYmplY3Q7XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcHdhL2xvY2FsLXN0b3JhZ2Uvc3JjL2xpYi92YWxpZGF0aW9uL2pzb24tc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztnRkFFZ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBBbGwgc2NoZW1hcyBpbnRlcmZhY2VzIG11c3QgaGF2ZSBhIHJlcXVpcmVkIGFuZCBkaWZmZXJlbnQgYHR5cGVgLFxuICogdG8gY3JlYXRlIGEgVHlwZVNjcmlwdCBkaXNjcmltaW5hbnQgdW5pb24gdHlwZS5cbiAqIEF2b2lkIGh0dHBzOi8vZ2l0aHViLmNvbS9jeXJpbGxldHV6aS9hbmd1bGFyLWFzeW5jLWxvY2FsLXN0b3JhZ2UvaXNzdWVzLzY0ICovXG5cbi8qKlxuICogSlNPTiBTY2hlbWEgdG8gZGVzY3JpYmUgYSBib29sZWFuIHZhbHVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpTT05TY2hlbWFCb29sZWFuIHtcblxuICAvKipcbiAgICogVHlwZSBmb3IgYSBib29sZWFuIHZhbHVlLlxuICAgKi9cbiAgdHlwZTogXCJib29sZWFuXCI7XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIHN0cmljdGx5IGVxdWFsIHRvIHRoaXMuXG4gICAqL1xuICBjb25zdD86IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBKU09OIFNjaGVtYSB0byBkZXNjcmliZSBhIG51bWJlciB2YWx1ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKU09OU2NoZW1hTnVtYmVyIHtcblxuICAvKipcbiAgICogVHlwZSBmb3IgYSBudW1lcmljIHZhbHVlLlxuICAgKi9cbiAgdHlwZTogXCJudW1iZXJcIjtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgdmFsdWUgaXMgc3RyaWN0bHkgZXF1YWwgdG8gdGhpcy5cbiAgICovXG4gIGNvbnN0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSB2YWx1ZSBpcyBzdHJpY3RseSBlcXVhbCB0byBvbmUgb2YgdGhlIHZhbHVlIG9mIGVudW0uXG4gICAqL1xuICBlbnVtPzogcmVhZG9ubHkgbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbnVtYmVyIGlzIGEgbXVsdGlwbGUgb2YgeC5cbiAgICogTXVzdCBiZSBzdHJpY3RseSBncmVhdGVyIHRoYW4gMC5cbiAgICovXG4gIG11bHRpcGxlT2Y/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbnVtYmVyIGlzIGxvd2VyIG9yIGVxdWFsIHRoYW4gdGhpcyBtYXhpbXVtLlxuICAgKi9cbiAgbWF4aW11bT86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBudW1iZXIgaXMgc3RyaWN0bHkgbG93ZXIgdGhhbiB0aGlzIG1heGltdW0uXG4gICAqL1xuICBleGNsdXNpdmVNYXhpbXVtPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG51bWJlciBpcyBncmVhdGVyIG9yIGVxdWFsIHRoYW4gdGhpcyBtaW5pbXVtLlxuICAgKi9cbiAgbWluaW11bT86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBudW1iZXIgaXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIHRoaXMgbWluaW11bS5cbiAgICovXG4gIGV4Y2x1c2l2ZU1pbmltdW0/OiBudW1iZXI7XG5cbn1cblxuLyoqXG4gKiBKU09OIFNjaGVtYSB0byBkZXNjcmliZSBhbiBpbnRlZ2VyIHZhbHVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpTT05TY2hlbWFJbnRlZ2VyIHtcblxuICAvKipcbiAgICogVHlwZSBmb3IgYW4gaW50ZWdlciB2YWx1ZS5cbiAgICovXG4gIHR5cGU6IFwiaW50ZWdlclwiO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSB2YWx1ZSBpcyBzdHJpY3RseSBlcXVhbCB0byB0aGlzLlxuICAgKi9cbiAgY29uc3Q/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIHN0cmljdGx5IGVxdWFsIHRvIG9uZSBvZiB0aGUgdmFsdWUgb2YgZW51bS5cbiAgICovXG4gIGVudW0/OiByZWFkb25seSBudW1iZXJbXTtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBudW1iZXIgaXMgYSBtdWx0aXBsZSBvZiB4LlxuICAgKiBNdXN0IGJlIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiAwLlxuICAgKi9cbiAgbXVsdGlwbGVPZj86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBudW1iZXIgaXMgbG93ZXIgb3IgZXF1YWwgdGhhbiB0aGlzIG1heGltdW0uXG4gICAqL1xuICBtYXhpbXVtPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG51bWJlciBpcyBzdHJpY3RseSBsb3dlciB0aGFuIHRoaXMgbWF4aW11bS5cbiAgICovXG4gIGV4Y2x1c2l2ZU1heGltdW0/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgbnVtYmVyIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiB0aGlzIG1pbmltdW0uXG4gICAqL1xuICBtaW5pbXVtPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG51bWJlciBpcyBzdHJpY3RseSBncmVhdGVyIHRoYW4gdGhpcyBtaW5pbXVtLlxuICAgKi9cbiAgZXhjbHVzaXZlTWluaW11bT86IG51bWJlcjtcblxufVxuXG4vKipcbiAqIEpTT04gU2NoZW1hIHRvIGRlc2NyaWJlIGEgc3RyaW5nIHZhbHVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpTT05TY2hlbWFTdHJpbmcge1xuXG4gIC8qKlxuICAgKiBUeXBlIGZvciBhIHN0cmluZyB2YWx1ZS5cbiAgICovXG4gIHR5cGU6IFwic3RyaW5nXCI7XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIHN0cmljdGx5IGVxdWFsIHRvIHRoaXMuXG4gICAqL1xuICBjb25zdD86IHN0cmluZztcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgdmFsdWUgaXMgc3RyaWN0bHkgZXF1YWwgdG8gb25lIG9mIHRoZSB2YWx1ZSBvZiBlbnVtLlxuICAgKi9cbiAgZW51bT86IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBNYXhpdW0gbGVuZ3RoIGZvciBhIHN0cmluZy5cbiAgICogTXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNaW5pbXVtIGxlbmd0aCBmb3IgYSBzdHJpbmcuXG4gICAqIE11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci5cbiAgICovXG4gIG1pbkxlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogUGF0dGVybiB0byBtYXRjaCBmb3IgYSBzdHJpbmcuXG4gICAqIE11c3QgYmUgYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24sICp3aXRob3V0KiB0aGUgYC9gIGRlbGltaXRlcnMuXG4gICAqL1xuICBwYXR0ZXJuPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogSlNPTiBzY2hlbWEgdG8gZGVzY3JpYmUgYW4gYXJyYXkgb2YgdmFsdWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpTT05TY2hlbWFBcnJheSB7XG5cbiAgLyoqXG4gICAqIFR5cGUgZm9yIGFuIGFycmF5IG9mIHZhbHVlcy5cbiAgICovXG4gIHR5cGU6IFwiYXJyYXlcIjtcblxuICAvKipcbiAgICogU2NoZW1hIGZvciB0aGUgdmFsdWVzIG9mIHRoZSBhcnJheS5cbiAgICovXG4gIGl0ZW1zOiBKU09OU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhcnJheSBsZW5ndGggaXMgbG93ZXIgb3IgZXF1YWwgdG8gdGhpcyB2YWx1ZS5cbiAgICogTXVzdCBiZSBhIG5vbiBuZWdhdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgbWF4SXRlbXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGFycmF5IGxlbmd0aCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHRoaXMgdmFsdWUuXG4gICAqIE11c3QgYmUgYSBub24gbmVnYXRpdmUgaW50ZWdlci5cbiAgICovXG4gIG1pbkl0ZW1zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhcnJheSBvbmx5IGhhdmUgdW5pcXVlIHZhbHVlcy5cbiAgICovXG4gIHVuaXF1ZUl0ZW1zPzogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIEpTT04gU2NoZW1hIHRvIGRlc2NyaWJlIGFuIGFycmF5IG9mIHByaW1pdGl2ZSB2YWx1ZXM6XG4gKiAtIGFycmF5IG9mIGJvb2xlYW5zOiBgSlNPTlNjaGVtYUFycmF5T2Y8SlNPTlNjaGVtYUJvb2xlYW4+YCxcbiAqIC0gYXJyYXkgb2YgbnVtYmVyczogYEpTT05TY2hlbWFBcnJheU9mPEpTT05TY2hlbWFOdW1iZXI+YCxcbiAqIC0gYXJyYXkgb2YgaW50ZWdlcnM6IGBKU09OU2NoZW1hQXJyYXlPZjxKU09OU2NoZW1hSW50ZWdlcj5gLFxuICogLSBhcnJheSBvZiBzdHJpbmdzOiBgSlNPTlNjaGVtYUFycmF5T2Y8SlNPTlNjaGVtYVN0cmluZz5gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpTT05TY2hlbWFBcnJheU9mPFQgZXh0ZW5kcyBKU09OU2NoZW1hQm9vbGVhbiB8IEpTT05TY2hlbWFOdW1iZXIgfCBKU09OU2NoZW1hSW50ZWdlciB8IEpTT05TY2hlbWFTdHJpbmc+IHtcblxuICAvKipcbiAgICogVHlwZSBmb3IgYW4gYXJyYXkgb2YgdmFsdWVzLlxuICAgKi9cbiAgdHlwZTogXCJhcnJheVwiO1xuXG4gIC8qKlxuICAgKiBTY2hlbWEgZm9yIHRoZSB2YWx1ZXMgb2YgYW4gYXJyYXkuXG4gICAqL1xuICBpdGVtczogVDtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXJyYXkgbGVuZ3RoIGlzIGxvd2VyIG9yIGVxdWFsIHRvIHRoaXMgdmFsdWUuXG4gICAqIE11c3QgYmUgYSBub24gbmVnYXRpdmUgaW50ZWdlci5cbiAgICovXG4gIG1heEl0ZW1zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhcnJheSBsZW5ndGggaXMgZ3JlYXRlciBvciBlcXVhbCB0byB0aGlzIHZhbHVlLlxuICAgKiBNdXN0IGJlIGEgbm9uIG5lZ2F0aXZlIGludGVnZXIuXG4gICAqL1xuICBtaW5JdGVtcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXJyYXkgb25seSBoYXZlIHVuaXF1ZSB2YWx1ZXMuXG4gICAqL1xuICB1bmlxdWVJdGVtcz86IGJvb2xlYW47XG5cbn1cblxuLyoqXG4gKiBKU09OIHNjaGVtYSB0byBkZXNjcmliZSBhIHR1cGxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpTT05TY2hlbWFUdXBsZSB7XG5cbiAgLyoqXG4gICAqIFR5cGUgZm9yIGFuIGFycmF5IG9mIHZhbHVlcy5cbiAgICovXG4gIHR5cGU6IFwiYXJyYXlcIjtcblxuICAvKipcbiAgICogU2NoZW1hIGZvciB0aGUgdmFsdWVzIG9mIHRoZSB0dXBsZS5cbiAgICovXG4gIGl0ZW1zPzogcmVhZG9ubHkgSlNPTlNjaGVtYVtdO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhcnJheSBsZW5ndGggaXMgbG93ZXIgb3IgZXF1YWwgdG8gdGhpcyB2YWx1ZS5cbiAgICogTXVzdCBiZSBhIG5vbiBuZWdhdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgbWF4SXRlbXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGFycmF5IGxlbmd0aCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHRoaXMgdmFsdWUuXG4gICAqIE11c3QgYmUgYSBub24gbmVnYXRpdmUgaW50ZWdlci5cbiAgICovXG4gIG1pbkl0ZW1zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhcnJheSBvbmx5IGhhdmUgdW5pcXVlIHZhbHVlcy5cbiAgICovXG4gIHVuaXF1ZUl0ZW1zPzogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIEpTT04gc2NoZW1hIHRvIGRlc2NyaWJlIGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKU09OU2NoZW1hT2JqZWN0IHtcblxuICAvKipcbiAgICogVHlwZSBmb3IgYW4gb2JqZWN0LlxuICAgKi9cbiAgdHlwZTogXCJvYmplY3RcIjtcblxuICAvKipcbiAgICogTGlzdCBvZiBwcm9wZXJ0aWVzIG9mIHRoZSBvYmplY3QgYW5kIHRoZWlyIGFzc29jaWF0ZWQgSlNPTiBzY2hlbWFzLlxuICAgKi9cbiAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgSlNPTlNjaGVtYT47XG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIG5hbWVzIG9mIHRoZSByZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBhbiBvYmplY3QuXG4gICAqIFByb3BlcnRpZXMgc2V0IGFzIHJlcXVpcmVkIHNob3VsZCBiZSBwcmVzZW50IGluIGBwcm9wZXJ0aWVzYCB0b28uXG4gICAqL1xuICByZXF1aXJlZD86IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG59XG5cbi8qKlxuICogU3Vic2V0IG9mIHRoZSBKU09OIFNjaGVtYSBzdGFuZGFyZC5cbiAqIFR5cGVzIGFyZSBlbmZvcmNlZCB0byB2YWxpZGF0ZSBldmVyeXRoaW5nOiBlYWNoIHZhbHVlICoqbXVzdCoqIGhhdmUgYSBgdHlwZWAuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vY3lyaWxsZXR1emkvYW5ndWxhci1hc3luYy1sb2NhbC1zdG9yYWdlL2Jsb2IvbWFpbi9kb2NzL1ZBTElEQVRJT04ubWR9XG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHNjaGVtYTogSlNPTlNjaGVtYSA9IHsgdHlwZTogJ3N0cmluZycgfTtcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgc2NoZW1hOiBKU09OU2NoZW1hID0geyB0eXBlOiAnbnVtYmVyJyB9O1xuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBzY2hlbWE6IEpTT05TY2hlbWEgPSB7IHR5cGU6ICdpbnRlZ2VyJyB9O1xuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBzY2hlbWE6IEpTT05TY2hlbWEgPSB7IHR5cGU6ICdib29sZWFuJyB9O1xuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBzY2hlbWE6IEpTT05TY2hlbWEgPSB7XG4gKiAgIHR5cGU6ICdhcnJheScsXG4gKiAgIGl0ZW1zOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gKiB9O1xuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBzY2hlbWE6IEpTT05TY2hlbWEgPSB7XG4gKiAgIHR5cGU6ICdvYmplY3QnLFxuICogICBwcm9wZXJ0aWVzOiB7XG4gKiAgICAgZmlyc3ROYW1lOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gKiAgICAgbGFzdE5hbWU6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAqICAgfSxcbiAqICAgcmVxdWlyZWQ6IFsnZmlyc3ROYW1lJ10sXG4gKiB9O1xuICovXG5leHBvcnQgdHlwZSBKU09OU2NoZW1hID0gSlNPTlNjaGVtYVN0cmluZyB8IEpTT05TY2hlbWFOdW1iZXIgfCBKU09OU2NoZW1hSW50ZWdlciB8IEpTT05TY2hlbWFCb29sZWFuIHwgSlNPTlNjaGVtYUFycmF5IHwgSlNPTlNjaGVtYVR1cGxlIHwgSlNPTlNjaGVtYU9iamVjdDtcbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
- class JSONValidator {
3
+ export class JSONValidator {
4
4
  /**
5
5
  * Validate a JSON data against a Jsubset of the JSON Schema standard.
6
6
  * Types are enforced to validate everything: each schema must
@@ -234,14 +234,13 @@ class JSONValidator {
234
234
  /* Cast as the data can be of multiple types, and so TypeScript is lost */
235
235
  return (schema.enum.includes(data));
236
236
  }
237
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: JSONValidator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
238
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: JSONValidator, providedIn: "root" }); }
237
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: JSONValidator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
238
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: JSONValidator, providedIn: "root" }); }
239
239
  }
240
- export { JSONValidator };
241
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: JSONValidator, decorators: [{
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: JSONValidator, decorators: [{
242
241
  type: Injectable,
243
242
  args: [{
244
243
  providedIn: "root"
245
244
  }]
246
245
  }] });
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcHdhL2xvY2FsLXN0b3JhZ2Uvc3JjL2xpYi92YWxpZGF0aW9uL2pzb24tdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBVzNDLE1BR2EsYUFBYTtJQUV4Qjs7Ozs7OztPQU9HO0lBQ0gsUUFBUSxDQUFDLElBQWEsRUFBRSxNQUFrQjtRQUV4QyxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFFbkIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDM0MsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzQyxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM1QyxLQUFLLE9BQU87Z0JBQ1YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMxQyxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUU1QztJQUVILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLGNBQWMsQ0FBQyxJQUFhLEVBQUUsTUFBd0I7UUFFOUQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDNUIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRTtZQUNyQyxPQUFPLEtBQUssQ0FBQztT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LENBQUM7U0FDYjtRQUVELDBFQUEwRTtRQUMxRSxPQUFPLENBQUUsTUFBTSxDQUFDLElBQWtCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFckQsQ0FBQzs4R0FoVVUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7U0FFUCxhQUFhOzJGQUFiLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBKU09OU2NoZW1hLFxuICBKU09OU2NoZW1hQXJyYXksXG4gIEpTT05TY2hlbWFCb29sZWFuLFxuICBKU09OU2NoZW1hSW50ZWdlciwgSlNPTlNjaGVtYU51bWJlcixcbiAgSlNPTlNjaGVtYU9iamVjdCxcbiAgSlNPTlNjaGVtYVN0cmluZyxcbiAgSlNPTlNjaGVtYVR1cGxlXG59IGZyb20gXCIuL2pzb24tc2NoZW1hXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcbn0pXG5leHBvcnQgY2xhc3MgSlNPTlZhbGlkYXRvciB7XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGEgSlNPTiBkYXRhIGFnYWluc3QgYSBKc3Vic2V0IG9mIHRoZSBKU09OIFNjaGVtYSBzdGFuZGFyZC5cbiAgICogVHlwZXMgYXJlIGVuZm9yY2VkIHRvIHZhbGlkYXRlIGV2ZXJ5dGhpbmc6IGVhY2ggc2NoZW1hIG11c3RcbiAgICogQHBhcmFtIGRhdGEgSlNPTiBkYXRhIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSBzY2hlbWEgU3Vic2V0IG9mIEpTT04gU2NoZW1hLiBNdXN0IGhhdmUgYSBgdHlwZWAuXG4gICAqIEByZXR1cm5zIElmIGRhdGEgaXMgdmFsaWQ6IGB0cnVlYCwgaWYgaXQgaXMgaW52YWxpZDogYGZhbHNlYFxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vY3lyaWxsZXR1emkvYW5ndWxhci1hc3luYy1sb2NhbC1zdG9yYWdlL2Jsb2IvbWFpbi9kb2NzL1ZBTElEQVRJT04ubWR9XG4gICAqL1xuICB2YWxpZGF0ZShkYXRhOiB1bmtub3duLCBzY2hlbWE6IEpTT05TY2hlbWEpOiBib29sZWFuIHtcblxuICAgIHN3aXRjaCAoc2NoZW1hLnR5cGUpIHtcblxuICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVN0cmluZyhkYXRhLCBzY2hlbWEpO1xuICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgY2FzZSBcImludGVnZXJcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVOdW1iZXIoZGF0YSwgc2NoZW1hKTtcbiAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlQm9vbGVhbihkYXRhLCBzY2hlbWEpO1xuICAgICAgY2FzZSBcImFycmF5XCI6XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlQXJyYXkoZGF0YSwgc2NoZW1hKTtcbiAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVPYmplY3QoZGF0YSwgc2NoZW1hKTtcblxuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGEgc3RyaW5nXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gdmFsaWRhdGVcbiAgICogQHBhcmFtIHNjaGVtYSBTY2hlbWEgZGVzY3JpYmluZyB0aGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIElmIGRhdGEgaXMgdmFsaWQ6IGB0cnVlYCwgaWYgaXQgaXMgaW52YWxpZDogYGZhbHNlYFxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlU3RyaW5nKGRhdGE6IHVua25vd24sIHNjaGVtYTogSlNPTlNjaGVtYVN0cmluZyk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlQ29uc3QoZGF0YSwgc2NoZW1hKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWxpZGF0ZUVudW0oZGF0YSwgc2NoZW1hKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICgoc2NoZW1hLm1heExlbmd0aCAhPT0gdW5kZWZpbmVkKSAmJiAoZGF0YS5sZW5ndGggPiBzY2hlbWEubWF4TGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICgoc2NoZW1hLm1pbkxlbmd0aCAhPT0gdW5kZWZpbmVkKSAmJiAoZGF0YS5sZW5ndGggPCBzY2hlbWEubWluTGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChzY2hlbWEucGF0dGVybikge1xuXG4gICAgICBsZXQgcmVndWxhckV4cHJlc3Npb246IFJlZ0V4cCB8IG51bGwgPSBudWxsO1xuXG4gICAgICB0cnkge1xuICAgICAgICByZWd1bGFyRXhwcmVzc2lvbiA9IG5ldyBSZWdFeHAoc2NoZW1hLnBhdHRlcm4pO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIE5vdGhpbmcgdG8gZG9cbiAgICAgIH1cblxuICAgICAgaWYgKHJlZ3VsYXJFeHByZXNzaW9uICYmICFyZWd1bGFyRXhwcmVzc2lvbi50ZXN0KGRhdGEpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuXG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgYSBudW1iZXIgb3IgYW4gaW50ZWdlclxuICAgKiBAcGFyYW0gZGF0YSBEYXRhIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSBzY2hlbWEgU2NoZW1hIGRlc2NyaWJpbmcgdGhlIG51bWJlciBvciBpbnRlZ2VyXG4gICAqIEByZXR1cm5zIElmIGRhdGEgaXMgdmFsaWQ6IGB0cnVlYCwgaWYgaXQgaXMgaW52YWxpZDogYGZhbHNlYFxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlTnVtYmVyKGRhdGE6IHVua25vd24sIHNjaGVtYTogSlNPTlNjaGVtYU51bWJlciB8IEpTT05TY2hlbWFJbnRlZ2VyKTogYm9vbGVhbiB7XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoKHNjaGVtYS50eXBlID09PSBcImludGVnZXJcIikgJiYgIU51bWJlci5pc0ludGVnZXIoZGF0YSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsaWRhdGVDb25zdChkYXRhLCBzY2hlbWEpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlRW51bShkYXRhLCBzY2hlbWEpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyogVGVzdCBpcyBkb25lIHRoaXMgd2F5IHRvIG5vdCBkaXZpZGUgYnkgMCAqL1xuICAgIGlmIChzY2hlbWEubXVsdGlwbGVPZiAmJiAhTnVtYmVyLmlzSW50ZWdlcihkYXRhIC8gc2NoZW1hLm11bHRpcGxlT2YpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKChzY2hlbWEubWF4aW11bSAhPT0gdW5kZWZpbmVkKSAmJiAoZGF0YSA+IHNjaGVtYS5tYXhpbXVtKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICgoc2NoZW1hLmV4Y2x1c2l2ZU1heGltdW0gIT09IHVuZGVmaW5lZCkgJiYgKGRhdGEgPj0gc2NoZW1hLmV4Y2x1c2l2ZU1heGltdW0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICB9XG5cbiAgICBpZiAoKHNjaGVtYS5taW5pbXVtICE9PSB1bmRlZmluZWQpICYmIChkYXRhIDwgc2NoZW1hLm1pbmltdW0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICB9XG5cbiAgICBpZiAoKHNjaGVtYS5leGNsdXNpdmVNaW5pbXVtICE9PSB1bmRlZmluZWQpICYmIChkYXRhIDw9IHNjaGVtYS5leGNsdXNpdmVNaW5pbXVtKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuXG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgYSBib29sZWFuXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gdmFsaWRhdGVcbiAgICogQHBhcmFtIHNjaGVtYSBTY2hlbWEgZGVzY3JpYmluZyB0aGUgYm9vbGVhblxuICAgKiBAcmV0dXJucyBJZiBkYXRhIGlzIHZhbGlkOiBgdHJ1ZWAsIGlmIGl0IGlzIGludmFsaWQ6IGBmYWxzZWBcbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZUJvb2xlYW4oZGF0YTogdW5rbm93biwgc2NoZW1hOiBKU09OU2NoZW1hQm9vbGVhbik6IGJvb2xlYW4ge1xuXG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWxpZGF0ZUNvbnN0KGRhdGEsIHNjaGVtYSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGFuIGFycmF5XG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gdmFsaWRhdGVcbiAgICogQHBhcmFtIHNjaGVtYSBTY2hlbWEgZGVzY3JpYmluZyB0aGUgYXJyYXlcbiAgICogQHJldHVybnMgSWYgZGF0YSBpcyB2YWxpZDogYHRydWVgLCBpZiBpdCBpcyBpbnZhbGlkOiBgZmFsc2VgXG4gICAqL1xuICBwcm90ZWN0ZWQgdmFsaWRhdGVBcnJheShkYXRhOiB1bmtub3duLCBzY2hlbWE6IEpTT05TY2hlbWFBcnJheSB8IEpTT05TY2hlbWFUdXBsZSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKChzY2hlbWEubWF4SXRlbXMgIT09IHVuZGVmaW5lZCkgJiYgKGRhdGEubGVuZ3RoID4gc2NoZW1hLm1heEl0ZW1zKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICgoc2NoZW1hLm1pbkl0ZW1zICE9PSB1bmRlZmluZWQpICYmIChkYXRhLmxlbmd0aCA8IHNjaGVtYS5taW5JdGVtcykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLnVuaXF1ZUl0ZW1zKSB7XG5cbiAgICAgIC8qIENyZWF0ZSBhIHNldCB0byBlbGltaW5hdGUgdmFsdWVzIHdpdGggbXVsdGlwbGUgb2NjdXJlbmNlcyAqL1xuICAgICAgY29uc3QgZGF0YVNldCA9IG5ldyBTZXQoZGF0YSk7XG5cbiAgICAgIGlmIChkYXRhLmxlbmd0aCAhPT0gZGF0YVNldC5zaXplKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIC8qIFNwZWNpZmljIHRlc3QgZm9yIHR1cGxlcyAqL1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYS5pdGVtcykgfHwgc2NoZW1hLml0ZW1zID09PSB1bmRlZmluZWQpIHtcblxuICAgICAgLy8gVE9ETzogY2FzdCBzaG91bGQgbm90IGJlIG5lZWRlZCBoZXJlXG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVR1cGxlKGRhdGEsIHNjaGVtYS5pdGVtcyBhcyBKU09OU2NoZW1hW10gfCB1bmRlZmluZWQpO1xuXG4gICAgfVxuXG4gICAgLyogVmFsaWRhdGUgYWxsIHRoZSB2YWx1ZXMgaW4gYXJyYXkgKi9cbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGRhdGEpIHtcblxuICAgICAgLy8gVE9ETzogcmVtb3ZlIHdoZW4gVHlwZVNjcmlwdCA0LjEgaXMgYXZhaWxhYmxlXG4gICAgICAvLyAoY3VycmVudGx5IHRoZSBuYXJyb3dlZCB0eXBlIGZyb20gYEFycmF5LmlzQXJyYXkoKWAgaXMgbG9zdCBvbiByZWFkb25seSBhcnJheXMpXG4gICAgICBpZiAoIXRoaXMudmFsaWRhdGUodmFsdWUsIHNjaGVtYS5pdGVtcyBhcyBKU09OU2NoZW1hKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGEgdHVwbGUgKGFycmF5IHdpdGggZml4ZWQgbGVuZ3RoIGFuZCBtdWx0aXBsZSB0eXBlcylcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gc2NoZW1hcyBTY2hlbWFzIGRlc2NyaWJpbmcgdGhlIHR1cGxlXG4gICAqIEByZXR1cm5zIElmIGRhdGEgaXMgdmFsaWQ6IGB0cnVlYCwgaWYgaXQgaXMgaW52YWxpZDogYGZhbHNlYFxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlVHVwbGUoZGF0YTogdW5rbm93bltdLCBzY2hlbWFzOiBKU09OU2NoZW1hW10gfCB1bmRlZmluZWQpOiBib29sZWFuIHtcblxuICAgIGNvbnN0IGxlbmd0aFRvQ2hlY2sgPSBzY2hlbWFzID8gc2NoZW1hcy5sZW5ndGggOiAwO1xuXG4gICAgLyogVHVwbGVzIGhhdmUgYSBmaXhlZCBsZW5ndGggKi9cbiAgICBpZiAoZGF0YS5sZW5ndGggIT09IGxlbmd0aFRvQ2hlY2spIHtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYXMpIHtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY2hlbWFzLmxlbmd0aDsgaSArPSAxKSB7XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlKGRhdGFbaV0sIHNjaGVtYXNbaV0hKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGFuIG9iamVjdFxuICAgKiBAcGFyYW0gZGF0YSBEYXRhIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSBzY2hlbWEgSlNPTiBzY2hlbWEgZGVzY3JpYmluZyB0aGUgb2JqZWN0XG4gICAqIEByZXR1cm5zIElmIGRhdGEgaXMgdmFsaWQ6IGB0cnVlYCwgaWYgaXQgaXMgaW52YWxpZDogYGZhbHNlYFxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlT2JqZWN0KGRhdGE6IHVua25vd24sIHNjaGVtYTogSlNPTlNjaGVtYU9iamVjdCk6IGJvb2xlYW4ge1xuXG4gICAgLyogQ2hlY2sgdGhlIHR5cGUgYW5kIGlmIG5vdCBgbnVsbGAgYXMgYG51bGxgIGFsc28gaGF2ZSB0aGUgdHlwZSBgb2JqZWN0YCBpbiBvbGQgYnJvd3NlcnMgKi9cbiAgICBpZiAoKHR5cGVvZiBkYXRhICE9PSBcIm9iamVjdFwiKSB8fCAoZGF0YSA9PT0gbnVsbCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiBDaGVjayBpZiB0aGUgb2JqZWN0IGRvZXNuJ3QgaGF2ZSBtb3JlIHByb3BlcnRpZXMgdGhhbiBleHBlY3RlZFxuICAgICAqIEVxdWl2YWxlbnQgb2YgYGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZWBcbiAgICAgKi9cbiAgICBpZiAoT2JqZWN0LmtleXMoc2NoZW1hLnByb3BlcnRpZXMpLmxlbmd0aCA8IE9iamVjdC5rZXlzKGRhdGEpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qIFZhbGlkYXRlIHJlcXVpcmVkIHByb3BlcnRpZXMgKi9cbiAgICBpZiAoc2NoZW1hLnJlcXVpcmVkKSB7XG5cbiAgICAgIGZvciAoY29uc3QgcmVxdWlyZWRQcm9wIG9mIHNjaGVtYS5yZXF1aXJlZCkge1xuXG4gICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIHJlcXVpcmVkUHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgfVxuXG4gICAgfVxuXG4gICAgLyogUmVjdXJzaXZlbHkgdmFsaWRhdGUgYWxsIHByb3BlcnRpZXMgKi9cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIHNjaGVtYS5wcm9wZXJ0aWVzKSB7XG5cbiAgICAgIC8qIEZpbHRlciB0byBrZWVwIG9ubHkgcmVhbCBwcm9wZXJ0aWVzIChubyBpbnRlcm5hbCBKUyBzdHVmZikgYW5kIGNoZWNrIGlmIHRoZSBkYXRhIGhhcyB0aGUgcHJvcGVydHkgdG9vICovXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNjaGVtYS5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSkgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIHByb3BlcnR5KSkge1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZSgoZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbcHJvcGVydHldLCBzY2hlbWEucHJvcGVydGllc1twcm9wZXJ0eV0hKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGEgY29uc3RhbnRcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0YSB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gc2NoZW1hIEpTT04gc2NoZW1hIGRlc2NyaWJpbmcgdGhlIGNvbnN0YW50XG4gICAqIEByZXR1cm5zIElmIGRhdGEgaXMgdmFsaWQ6IGB0cnVlYCwgaWYgaXQgaXMgaW52YWxpZDogYGZhbHNlYFxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlQ29uc3QoZGF0YTogdW5rbm93biwgc2NoZW1hOiBKU09OU2NoZW1hQm9vbGVhbiB8IEpTT05TY2hlbWFJbnRlZ2VyIHwgSlNPTlNjaGVtYU51bWJlciB8IEpTT05TY2hlbWFTdHJpbmcpOiBib29sZWFuIHtcblxuICAgIGlmICghc2NoZW1hLmNvbnN0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gKGRhdGEgPT09IHNjaGVtYS5jb25zdCk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhbiBlbnVtXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdGEgdmFsaWRhdGVcbiAgICogQHBhcmFtIHNjaGVtYSBKU09OIHNjaGVtYSBkZXNjcmliaW5nIHRoZSBlbnVtXG4gICAqIEByZXR1cm5zIElmIGRhdGEgaXMgdmFsaWQ6IGB0cnVlYCwgaWYgaXQgaXMgaW52YWxpZDogYGZhbHNlYFxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlRW51bShkYXRhOiB1bmtub3duLCBzY2hlbWE6IEpTT05TY2hlbWFJbnRlZ2VyIHwgSlNPTlNjaGVtYU51bWJlciB8IEpTT05TY2hlbWFTdHJpbmcpOiBib29sZWFuIHtcblxuICAgIGlmICghc2NoZW1hLmVudW0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qIENhc3QgYXMgdGhlIGRhdGEgY2FuIGJlIG9mIG11bHRpcGxlIHR5cGVzLCBhbmQgc28gVHlwZVNjcmlwdCBpcyBsb3N0ICovXG4gICAgcmV0dXJuICgoc2NoZW1hLmVudW0gYXMgdW5rbm93bltdKS5pbmNsdWRlcyhkYXRhKSk7XG5cbiAgfVxuXG59XG4iXX0=
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcHdhL2xvY2FsLXN0b3JhZ2Uvc3JjL2xpYi92YWxpZGF0aW9uL2pzb24tdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBYzNDLE1BQU0sT0FBTyxhQUFhO0lBRXhCOzs7Ozs7O09BT0c7SUFDSCxRQUFRLENBQUMsSUFBYSxFQUFFLE1BQWtCO1FBRXhDLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtZQUVuQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzQyxLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssU0FBUztnQkFDWixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzNDLEtBQUssU0FBUztnQkFDWixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVDLEtBQUssT0FBTztnQkFDVixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzFDLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBRTVDO0lBRUgsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sY0FBYyxDQUFDLElBQWEsRUFBRSxNQUF3QjtRQUU5RCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUM1QixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ3JDLE9BQU8sS0FBSyxD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LElBQUksQ0FBQztTQUNiO1FBRUQsMEVBQTBFO1FBQzFFLE9BQU8sQ0FBRSxNQUFNLENBQUMsSUFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUVyRCxDQUFDOzhHQWhVVSxhQUFhO2tIQUFiLGFBQWEsY0FGWixNQUFNOzsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgSlNPTlNjaGVtYSxcbiAgSlNPTlNjaGVtYUFycmF5LFxuICBKU09OU2NoZW1hQm9vbGVhbixcbiAgSlNPTlNjaGVtYUludGVnZXIsIEpTT05TY2hlbWFOdW1iZXIsXG4gIEpTT05TY2hlbWFPYmplY3QsXG4gIEpTT05TY2hlbWFTdHJpbmcsXG4gIEpTT05TY2hlbWFUdXBsZVxufSBmcm9tIFwiLi9qc29uLXNjaGVtYVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIEpTT05WYWxpZGF0b3Ige1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhIEpTT04gZGF0YSBhZ2FpbnN0IGEgSnN1YnNldCBvZiB0aGUgSlNPTiBTY2hlbWEgc3RhbmRhcmQuXG4gICAqIFR5cGVzIGFyZSBlbmZvcmNlZCB0byB2YWxpZGF0ZSBldmVyeXRoaW5nOiBlYWNoIHNjaGVtYSBtdXN0XG4gICAqIEBwYXJhbSBkYXRhIEpTT04gZGF0YSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gc2NoZW1hIFN1YnNldCBvZiBKU09OIFNjaGVtYS4gTXVzdCBoYXZlIGEgYHR5cGVgLlxuICAgKiBAcmV0dXJucyBJZiBkYXRhIGlzIHZhbGlkOiBgdHJ1ZWAsIGlmIGl0IGlzIGludmFsaWQ6IGBmYWxzZWBcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2N5cmlsbGV0dXppL2FuZ3VsYXItYXN5bmMtbG9jYWwtc3RvcmFnZS9ibG9iL21haW4vZG9jcy9WQUxJREFUSU9OLm1kfVxuICAgKi9cbiAgdmFsaWRhdGUoZGF0YTogdW5rbm93biwgc2NoZW1hOiBKU09OU2NoZW1hKTogYm9vbGVhbiB7XG5cbiAgICBzd2l0Y2ggKHNjaGVtYS50eXBlKSB7XG5cbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVTdHJpbmcoZGF0YSwgc2NoZW1hKTtcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgIGNhc2UgXCJpbnRlZ2VyXCI6XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlTnVtYmVyKGRhdGEsIHNjaGVtYSk7XG4gICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUJvb2xlYW4oZGF0YSwgc2NoZW1hKTtcbiAgICAgIGNhc2UgXCJhcnJheVwiOlxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUFycmF5KGRhdGEsIHNjaGVtYSk7XG4gICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlT2JqZWN0KGRhdGEsIHNjaGVtYSk7XG5cbiAgICB9XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhIHN0cmluZ1xuICAgKiBAcGFyYW0gZGF0YSBEYXRhIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSBzY2hlbWEgU2NoZW1hIGRlc2NyaWJpbmcgdGhlIHN0cmluZ1xuICAgKiBAcmV0dXJucyBJZiBkYXRhIGlzIHZhbGlkOiBgdHJ1ZWAsIGlmIGl0IGlzIGludmFsaWQ6IGBmYWxzZWBcbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVN0cmluZyhkYXRhOiB1bmtub3duLCBzY2hlbWE6IEpTT05TY2hlbWFTdHJpbmcpOiBib29sZWFuIHtcblxuICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWxpZGF0ZUNvbnN0KGRhdGEsIHNjaGVtYSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsaWRhdGVFbnVtKGRhdGEsIHNjaGVtYSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoKHNjaGVtYS5tYXhMZW5ndGggIT09IHVuZGVmaW5lZCkgJiYgKGRhdGEubGVuZ3RoID4gc2NoZW1hLm1heExlbmd0aCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoKHNjaGVtYS5taW5MZW5ndGggIT09IHVuZGVmaW5lZCkgJiYgKGRhdGEubGVuZ3RoIDwgc2NoZW1hLm1pbkxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLnBhdHRlcm4pIHtcblxuICAgICAgbGV0IHJlZ3VsYXJFeHByZXNzaW9uOiBSZWdFeHAgfCBudWxsID0gbnVsbDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVndWxhckV4cHJlc3Npb24gPSBuZXcgUmVnRXhwKHNjaGVtYS5wYXR0ZXJuKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBOb3RoaW5nIHRvIGRvXG4gICAgICB9XG5cbiAgICAgIGlmIChyZWd1bGFyRXhwcmVzc2lvbiAmJiAhcmVndWxhckV4cHJlc3Npb24udGVzdChkYXRhKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGEgbnVtYmVyIG9yIGFuIGludGVnZXJcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gc2NoZW1hIFNjaGVtYSBkZXNjcmliaW5nIHRoZSBudW1iZXIgb3IgaW50ZWdlclxuICAgKiBAcmV0dXJucyBJZiBkYXRhIGlzIHZhbGlkOiBgdHJ1ZWAsIGlmIGl0IGlzIGludmFsaWQ6IGBmYWxzZWBcbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU51bWJlcihkYXRhOiB1bmtub3duLCBzY2hlbWE6IEpTT05TY2hlbWFOdW1iZXIgfCBKU09OU2NoZW1hSW50ZWdlcik6IGJvb2xlYW4ge1xuXG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSBcIm51bWJlclwiKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKChzY2hlbWEudHlwZSA9PT0gXCJpbnRlZ2VyXCIpICYmICFOdW1iZXIuaXNJbnRlZ2VyKGRhdGEpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlQ29uc3QoZGF0YSwgc2NoZW1hKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWxpZGF0ZUVudW0oZGF0YSwgc2NoZW1hKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qIFRlc3QgaXMgZG9uZSB0aGlzIHdheSB0byBub3QgZGl2aWRlIGJ5IDAgKi9cbiAgICBpZiAoc2NoZW1hLm11bHRpcGxlT2YgJiYgIU51bWJlci5pc0ludGVnZXIoZGF0YSAvIHNjaGVtYS5tdWx0aXBsZU9mKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICgoc2NoZW1hLm1heGltdW0gIT09IHVuZGVmaW5lZCkgJiYgKGRhdGEgPiBzY2hlbWEubWF4aW11bSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoKHNjaGVtYS5leGNsdXNpdmVNYXhpbXVtICE9PSB1bmRlZmluZWQpICYmIChkYXRhID49IHNjaGVtYS5leGNsdXNpdmVNYXhpbXVtKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgfVxuXG4gICAgaWYgKChzY2hlbWEubWluaW11bSAhPT0gdW5kZWZpbmVkKSAmJiAoZGF0YSA8IHNjaGVtYS5taW5pbXVtKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgfVxuXG4gICAgaWYgKChzY2hlbWEuZXhjbHVzaXZlTWluaW11bSAhPT0gdW5kZWZpbmVkKSAmJiAoZGF0YSA8PSBzY2hlbWEuZXhjbHVzaXZlTWluaW11bSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGEgYm9vbGVhblxuICAgKiBAcGFyYW0gZGF0YSBEYXRhIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSBzY2hlbWEgU2NoZW1hIGRlc2NyaWJpbmcgdGhlIGJvb2xlYW5cbiAgICogQHJldHVybnMgSWYgZGF0YSBpcyB2YWxpZDogYHRydWVgLCBpZiBpdCBpcyBpbnZhbGlkOiBgZmFsc2VgXG4gICAqL1xuICBwcm90ZWN0ZWQgdmFsaWRhdGVCb29sZWFuKGRhdGE6IHVua25vd24sIHNjaGVtYTogSlNPTlNjaGVtYUJvb2xlYW4pOiBib29sZWFuIHtcblxuICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsaWRhdGVDb25zdChkYXRhLCBzY2hlbWEpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhbiBhcnJheVxuICAgKiBAcGFyYW0gZGF0YSBEYXRhIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSBzY2hlbWEgU2NoZW1hIGRlc2NyaWJpbmcgdGhlIGFycmF5XG4gICAqIEByZXR1cm5zIElmIGRhdGEgaXMgdmFsaWQ6IGB0cnVlYCwgaWYgaXQgaXMgaW52YWxpZDogYGZhbHNlYFxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlQXJyYXkoZGF0YTogdW5rbm93biwgc2NoZW1hOiBKU09OU2NoZW1hQXJyYXkgfCBKU09OU2NoZW1hVHVwbGUpOiBib29sZWFuIHtcblxuICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICgoc2NoZW1hLm1heEl0ZW1zICE9PSB1bmRlZmluZWQpICYmIChkYXRhLmxlbmd0aCA+IHNjaGVtYS5tYXhJdGVtcykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoKHNjaGVtYS5taW5JdGVtcyAhPT0gdW5kZWZpbmVkKSAmJiAoZGF0YS5sZW5ndGggPCBzY2hlbWEubWluSXRlbXMpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYS51bmlxdWVJdGVtcykge1xuXG4gICAgICAvKiBDcmVhdGUgYSBzZXQgdG8gZWxpbWluYXRlIHZhbHVlcyB3aXRoIG11bHRpcGxlIG9jY3VyZW5jZXMgKi9cbiAgICAgIGNvbnN0IGRhdGFTZXQgPSBuZXcgU2V0KGRhdGEpO1xuXG4gICAgICBpZiAoZGF0YS5sZW5ndGggIT09IGRhdGFTZXQuc2l6ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICAvKiBTcGVjaWZpYyB0ZXN0IGZvciB0dXBsZXMgKi9cbiAgICBpZiAoQXJyYXkuaXNBcnJheShzY2hlbWEuaXRlbXMpIHx8IHNjaGVtYS5pdGVtcyA9PT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgIC8vIFRPRE86IGNhc3Qgc2hvdWxkIG5vdCBiZSBuZWVkZWQgaGVyZVxuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVUdXBsZShkYXRhLCBzY2hlbWEuaXRlbXMgYXMgSlNPTlNjaGVtYVtdIHwgdW5kZWZpbmVkKTtcblxuICAgIH1cblxuICAgIC8qIFZhbGlkYXRlIGFsbCB0aGUgdmFsdWVzIGluIGFycmF5ICovXG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiBkYXRhKSB7XG5cbiAgICAgIC8vIFRPRE86IHJlbW92ZSB3aGVuIFR5cGVTY3JpcHQgNC4xIGlzIGF2YWlsYWJsZVxuICAgICAgLy8gKGN1cnJlbnRseSB0aGUgbmFycm93ZWQgdHlwZSBmcm9tIGBBcnJheS5pc0FycmF5KClgIGlzIGxvc3Qgb24gcmVhZG9ubHkgYXJyYXlzKVxuICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlKHZhbHVlLCBzY2hlbWEuaXRlbXMgYXMgSlNPTlNjaGVtYSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhIHR1cGxlIChhcnJheSB3aXRoIGZpeGVkIGxlbmd0aCBhbmQgbXVsdGlwbGUgdHlwZXMpXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gdmFsaWRhdGVcbiAgICogQHBhcmFtIHNjaGVtYXMgU2NoZW1hcyBkZXNjcmliaW5nIHRoZSB0dXBsZVxuICAgKiBAcmV0dXJucyBJZiBkYXRhIGlzIHZhbGlkOiBgdHJ1ZWAsIGlmIGl0IGlzIGludmFsaWQ6IGBmYWxzZWBcbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVR1cGxlKGRhdGE6IHVua25vd25bXSwgc2NoZW1hczogSlNPTlNjaGVtYVtdIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG5cbiAgICBjb25zdCBsZW5ndGhUb0NoZWNrID0gc2NoZW1hcyA/IHNjaGVtYXMubGVuZ3RoIDogMDtcblxuICAgIC8qIFR1cGxlcyBoYXZlIGEgZml4ZWQgbGVuZ3RoICovXG4gICAgaWYgKGRhdGEubGVuZ3RoICE9PSBsZW5ndGhUb0NoZWNrKSB7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIH1cblxuICAgIGlmIChzY2hlbWFzKSB7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NoZW1hcy5sZW5ndGg7IGkgKz0gMSkge1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZShkYXRhW2ldLCBzY2hlbWFzW2ldISkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhbiBvYmplY3RcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gc2NoZW1hIEpTT04gc2NoZW1hIGRlc2NyaWJpbmcgdGhlIG9iamVjdFxuICAgKiBAcmV0dXJucyBJZiBkYXRhIGlzIHZhbGlkOiBgdHJ1ZWAsIGlmIGl0IGlzIGludmFsaWQ6IGBmYWxzZWBcbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU9iamVjdChkYXRhOiB1bmtub3duLCBzY2hlbWE6IEpTT05TY2hlbWFPYmplY3QpOiBib29sZWFuIHtcblxuICAgIC8qIENoZWNrIHRoZSB0eXBlIGFuZCBpZiBub3QgYG51bGxgIGFzIGBudWxsYCBhbHNvIGhhdmUgdGhlIHR5cGUgYG9iamVjdGAgaW4gb2xkIGJyb3dzZXJzICovXG4gICAgaWYgKCh0eXBlb2YgZGF0YSAhPT0gXCJvYmplY3RcIikgfHwgKGRhdGEgPT09IG51bGwpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyogQ2hlY2sgaWYgdGhlIG9iamVjdCBkb2Vzbid0IGhhdmUgbW9yZSBwcm9wZXJ0aWVzIHRoYW4gZXhwZWN0ZWRcbiAgICAgKiBFcXVpdmFsZW50IG9mIGBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2VgXG4gICAgICovXG4gICAgaWYgKE9iamVjdC5rZXlzKHNjaGVtYS5wcm9wZXJ0aWVzKS5sZW5ndGggPCBPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiBWYWxpZGF0ZSByZXF1aXJlZCBwcm9wZXJ0aWVzICovXG4gICAgaWYgKHNjaGVtYS5yZXF1aXJlZCkge1xuXG4gICAgICBmb3IgKGNvbnN0IHJlcXVpcmVkUHJvcCBvZiBzY2hlbWEucmVxdWlyZWQpIHtcblxuICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCByZXF1aXJlZFByb3ApKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgIH1cblxuICAgIH1cblxuICAgIC8qIFJlY3Vyc2l2ZWx5IHZhbGlkYXRlIGFsbCBwcm9wZXJ0aWVzICovXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBzY2hlbWEucHJvcGVydGllcykge1xuXG4gICAgICAvKiBGaWx0ZXIgdG8ga2VlcCBvbmx5IHJlYWwgcHJvcGVydGllcyAobm8gaW50ZXJuYWwgSlMgc3R1ZmYpIGFuZCBjaGVjayBpZiB0aGUgZGF0YSBoYXMgdGhlIHByb3BlcnR5IHRvbyAqL1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzY2hlbWEucHJvcGVydGllcywgcHJvcGVydHkpICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBwcm9wZXJ0eSkpIHtcblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGUoKGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3Byb3BlcnR5XSwgc2NoZW1hLnByb3BlcnRpZXNbcHJvcGVydHldISkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhIGNvbnN0YW50XG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdGEgdmFsaWRhdGVcbiAgICogQHBhcmFtIHNjaGVtYSBKU09OIHNjaGVtYSBkZXNjcmliaW5nIHRoZSBjb25zdGFudFxuICAgKiBAcmV0dXJucyBJZiBkYXRhIGlzIHZhbGlkOiBgdHJ1ZWAsIGlmIGl0IGlzIGludmFsaWQ6IGBmYWxzZWBcbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZUNvbnN0KGRhdGE6IHVua25vd24sIHNjaGVtYTogSlNPTlNjaGVtYUJvb2xlYW4gfCBKU09OU2NoZW1hSW50ZWdlciB8IEpTT05TY2hlbWFOdW1iZXIgfCBKU09OU2NoZW1hU3RyaW5nKTogYm9vbGVhbiB7XG5cbiAgICBpZiAoIXNjaGVtYS5jb25zdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIChkYXRhID09PSBzY2hlbWEuY29uc3QpO1xuXG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgYW4gZW51bVxuICAgKiBAcGFyYW0gZGF0YSBEYXRhIHRhIHZhbGlkYXRlXG4gICAqIEBwYXJhbSBzY2hlbWEgSlNPTiBzY2hlbWEgZGVzY3JpYmluZyB0aGUgZW51bVxuICAgKiBAcmV0dXJucyBJZiBkYXRhIGlzIHZhbGlkOiBgdHJ1ZWAsIGlmIGl0IGlzIGludmFsaWQ6IGBmYWxzZWBcbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZUVudW0oZGF0YTogdW5rbm93biwgc2NoZW1hOiBKU09OU2NoZW1hSW50ZWdlciB8IEpTT05TY2hlbWFOdW1iZXIgfCBKU09OU2NoZW1hU3RyaW5nKTogYm9vbGVhbiB7XG5cbiAgICBpZiAoIXNjaGVtYS5lbnVtKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiBDYXN0IGFzIHRoZSBkYXRhIGNhbiBiZSBvZiBtdWx0aXBsZSB0eXBlcywgYW5kIHNvIFR5cGVTY3JpcHQgaXMgbG9zdCAqL1xuICAgIHJldHVybiAoKHNjaGVtYS5lbnVtIGFzIHVua25vd25bXSkuaW5jbHVkZXMoZGF0YSkpO1xuXG4gIH1cblxufVxuIl19
@@ -2,11 +2,8 @@
2
2
  * Public API Surface of local-storage
3
3
  */
4
4
  export { SERIALIZATION_ERROR, SerializationError } from "./lib/databases/exceptions";
5
- export { LocalDatabase } from "./lib/databases/local-database";
6
5
  export { provideIndexedDBDataBaseName, provideIndexedDBDataBaseVersion, provideIndexedDBStoreName, provideLocalStoragePrefix } from "./lib/providers";
7
6
  export { StorageModule } from "./lib/storage.module";
8
7
  export { VALIDATION_ERROR, ValidationError } from "./lib/storages/exceptions";
9
- export { LocalStorage } from "./lib/storages/local-storage.service";
10
8
  export { StorageMap } from "./lib/storages/storage-map.service";
11
- export { JSONValidator } from "./lib/validation/json-validator";
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1wd2EvbG9jYWwtc3RvcmFnZS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQ0wsNEJBQTRCLEVBQUUsK0JBQStCLEVBQzdELHlCQUF5QixFQUFFLHlCQUF5QixFQUNyRCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUtoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGxvY2FsLXN0b3JhZ2VcbiAqL1xuXG5leHBvcnQgeyBTRVJJQUxJWkFUSU9OX0VSUk9SLCBTZXJpYWxpemF0aW9uRXJyb3IgfSBmcm9tIFwiLi9saWIvZGF0YWJhc2VzL2V4Y2VwdGlvbnNcIjtcbmV4cG9ydCB7IExvY2FsRGF0YWJhc2UgfSBmcm9tIFwiLi9saWIvZGF0YWJhc2VzL2xvY2FsLWRhdGFiYXNlXCI7XG5leHBvcnQge1xuICBwcm92aWRlSW5kZXhlZERCRGF0YUJhc2VOYW1lLCBwcm92aWRlSW5kZXhlZERCRGF0YUJhc2VWZXJzaW9uLFxuICBwcm92aWRlSW5kZXhlZERCU3RvcmVOYW1lLCBwcm92aWRlTG9jYWxTdG9yYWdlUHJlZml4XG59IGZyb20gXCIuL2xpYi9wcm92aWRlcnNcIjtcbmV4cG9ydCB7IFN0b3JhZ2VNb2R1bGUgfSBmcm9tIFwiLi9saWIvc3RvcmFnZS5tb2R1bGVcIjtcbmV4cG9ydCB7IFZBTElEQVRJT05fRVJST1IsIFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuL2xpYi9zdG9yYWdlcy9leGNlcHRpb25zXCI7XG5leHBvcnQgeyBMb2NhbFN0b3JhZ2UgfSBmcm9tIFwiLi9saWIvc3RvcmFnZXMvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlXCI7XG5leHBvcnQgeyBTdG9yYWdlTWFwIH0gZnJvbSBcIi4vbGliL3N0b3JhZ2VzL3N0b3JhZ2UtbWFwLnNlcnZpY2VcIjtcbmV4cG9ydCB7IFN0b3JhZ2VDb25maWcgfSBmcm9tIFwiLi9saWIvdG9rZW5zXCI7XG5leHBvcnQge1xuICBKU09OU2NoZW1hLCBKU09OU2NoZW1hQXJyYXksIEpTT05TY2hlbWFBcnJheU9mLCBKU09OU2NoZW1hQm9vbGVhbiwgSlNPTlNjaGVtYUludGVnZXIsIEpTT05TY2hlbWFOdW1iZXIsIEpTT05TY2hlbWFPYmplY3QsIEpTT05TY2hlbWFTdHJpbmdcbn0gZnJvbSBcIi4vbGliL3ZhbGlkYXRpb24vanNvbi1zY2hlbWFcIjtcbmV4cG9ydCB7IEpTT05WYWxpZGF0b3IgfSBmcm9tIFwiLi9saWIvdmFsaWRhdGlvbi9qc29uLXZhbGlkYXRvclwiO1xuIl19
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1wd2EvbG9jYWwtc3RvcmFnZS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JGLE9BQU8sRUFDTCw0QkFBNEIsRUFBRSwrQkFBK0IsRUFDN0QseUJBQXlCLEVBQUUseUJBQXlCLEVBQ3JELE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGxvY2FsLXN0b3JhZ2VcbiAqL1xuXG5leHBvcnQgeyBTRVJJQUxJWkFUSU9OX0VSUk9SLCBTZXJpYWxpemF0aW9uRXJyb3IgfSBmcm9tIFwiLi9saWIvZGF0YWJhc2VzL2V4Y2VwdGlvbnNcIjtcbmV4cG9ydCB7XG4gIHByb3ZpZGVJbmRleGVkREJEYXRhQmFzZU5hbWUsIHByb3ZpZGVJbmRleGVkREJEYXRhQmFzZVZlcnNpb24sXG4gIHByb3ZpZGVJbmRleGVkREJTdG9yZU5hbWUsIHByb3ZpZGVMb2NhbFN0b3JhZ2VQcmVmaXhcbn0gZnJvbSBcIi4vbGliL3Byb3ZpZGVyc1wiO1xuZXhwb3J0IHsgU3RvcmFnZU1vZHVsZSB9IGZyb20gXCIuL2xpYi9zdG9yYWdlLm1vZHVsZVwiO1xuZXhwb3J0IHsgVkFMSURBVElPTl9FUlJPUiwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSBcIi4vbGliL3N0b3JhZ2VzL2V4Y2VwdGlvbnNcIjtcbmV4cG9ydCB7IFN0b3JhZ2VNYXAgfSBmcm9tIFwiLi9saWIvc3RvcmFnZXMvc3RvcmFnZS1tYXAuc2VydmljZVwiO1xuZXhwb3J0IHsgU3RvcmFnZUNvbmZpZyB9IGZyb20gXCIuL2xpYi90b2tlbnNcIjtcbmV4cG9ydCB7IEpTT05TY2hlbWEgfSBmcm9tIFwiLi9saWIvdmFsaWRhdGlvbi9qc29uLXNjaGVtYVwiO1xuIl19