@arsedizioni/ars-utils 18.2.69 → 18.2.71

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.
@@ -228,16 +228,8 @@ export class ClipperSearchFacetsComponent {
228
228
  */
229
229
  restore(data) {
230
230
  if (data) {
231
- this.snapshot.groups = data.groups;
232
- this.snapshot.usedGroups = data.usedGroups;
233
- this.snapshot.hasFacets = data.hasFacets;
234
- this.snapshot.fromDate = data.fromDate;
235
- this.snapshot.toDate = data.toDate;
236
- this.snapshot.sector = data.sector;
237
- this.snapshot.author = data.author;
238
- this.snapshot.anchor = data.anchor;
239
- this.snapshot.type = data.type;
240
- this.snapshot.reason = data.reason;
231
+ this.snapshot = data;
232
+ this.changeDetector.markForCheck();
241
233
  }
242
234
  }
243
235
  /**
@@ -255,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
255
247
  }], propDecorators: { changed: [{
256
248
  type: Output
257
249
  }] } });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZhY2V0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvY2xpcHBlci51aS91aS9zZWFyY2gtZmFjZXRzL3NlYXJjaC1mYWNldHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvc2VhcmNoLWZhY2V0cy9zZWFyY2gtZmFjZXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUNMLFlBQVksRUFHWiwyQkFBMkIsRUFDNUIsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQVd4RCxNQUFNLE9BQU8sNEJBQTRCO0lBUnpDO1FBU1ksWUFBTyxHQUFHLElBQUksWUFBWSxFQUErQixDQUFDO1FBQzVELG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFD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QkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUM7Z0JBQ2pELENBQUM7cUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUM7Z0JBQ2pELENBQUM7cUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUM7Z0JBQy9DLENBQUM7cUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUM7Z0JBQ2pELENBQUM7cUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUM7Z0JBQ2pELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDakMsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtB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QUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7OEdBdE9VLDRCQUE0QjtrR0FBNUIsNEJBQTRCLGtIQ3pCekMsbytFQXlETSx1M1JEbENNLFVBQVUsK2hHQUFFLGVBQWUsOEJBQUUsZ0JBQWdCLDRUQUFFLGNBQWMsa2hCQUFFLGFBQWEsbUxBQUUsZ0JBQWdCLGtJQUFFLGtCQUFrQjs7MkZBRWpILDRCQUE0QjtrQkFSeEMsU0FBUzsrQkFDRSx1QkFBdUIsY0FHckIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixDQUFDOzhCQUduSCxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7XHJcbiAgQ2xpcHBlckZhY2V0LFxyXG4gIENsaXBwZXJTZWFyY2hGYWNldCxcclxuICBDbGlwcGVyU2VhcmNoRmFjZXRHcm91cCxcclxuICBDbGlwcGVyU2VhcmNoRmFjZXRzU25hcHNob3RcclxufSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NsaXBwZXIuY29tbW9uJztcclxuaW1wb3J0IHsgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXgnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2xpcHBlci1zZWFyY2gtZmFjZXRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWZhY2V0cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWZhY2V0cy5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaW1wb3J0czogW0ZsZXhNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSwgTWF0Q2hpcHNNb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdERpdmlkZXJNb2R1bGUsIE1hdEV4cGFuc2lvbk1vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIENsaXBwZXJTZWFyY2hGYWNldHNDb21wb25lbnQge1xyXG4gIEBPdXRwdXQoKSBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDbGlwcGVyU2VhcmNoRmFjZXRzU25hcHNob3Q+KCk7XHJcbiAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIHByb3RlY3RlZCBzbmFwc2hvdDogQ2xpcHBlclNlYXJjaEZhY2V0c1NuYXBzaG90ID0gbmV3IENsaXBwZXJTZWFyY2hGYWNldHNTbmFwc2hvdCgpO1xyXG5cclxuICAvKipcclxuICogVXBkYXRlIGZhY2V0c1xyXG4gKiBAcGFyYW0gdmFsdWVzIDogdGhlIGZhY2V0cyB2YWx1ZXNcclxuICogQHBhcmFtIGludGVydmFsIDogdGhlIGRhdGUgaW50ZXJ2YWwgZm9yIFlFQVIgZmFjZXRzXHJcbiAqL1xyXG4gIHVwZGF0ZSh2YWx1ZXM6IENsaXBwZXJTZWFyY2hGYWNldFtdW10gfCBudWxsID0gbnVsbCwgaW50ZXJ2YWw6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XHJcbiAgICB0aGlzLnNuYXBzaG90LmludGVydmFsID0gaW50ZXJ2YWw7XHJcbiAgICBpZiAodmFsdWVzKSB7XHJcbiAgICAgIHRoaXMuc25hcHNob3QuZ3JvdXBzID0gW107XHJcbiAgICAgIHZhbHVlcy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgIGxldCBuYW1lID0gblswXS50eXBlTmFtZTtcclxuICAgICAgICBsZXQgaW5kZXggPSBuWzBdLnR5cGU7XHJcbiAgICAgICAgbGV0IGkgPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRJbmRleEJ5S2V5KFxyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC51c2VkR3JvdXBzLFxyXG4gICAgICAgICAgJ2luZGV4JyxcclxuICAgICAgICAgIGluZGV4KTtcclxuICAgICAgICBsZXQgaiA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkoXHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90Lmdyb3VwcyxcclxuICAgICAgICAgICdpbmRleCcsXHJcbiAgICAgICAgICBpbmRleFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGkgPT09IC0xICYmIGogPT09IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90Lmdyb3Vwcy5wdXNoKHtcclxuICAgICAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZTogbnVsbCxcclxuICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZURlc2NyaXB0aW9uOiBudWxsLFxyXG4gICAgICAgICAgICB2YWx1ZXM6IG4sXHJcbiAgICAgICAgICAgIGluZGV4OiBpbmRleCxcclxuICAgICAgICAgIH0pOyAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zbmFwc2hvdC5oYXNGYWNldHMgPSB0aGlzLnNuYXBzaG90Lmdyb3Vwcy5sZW5ndGggPiAwIHx8IHRoaXMuc25hcHNob3QudXNlZEdyb3Vwcy5sZW5ndGggPiAwOyAgICBcclxuICAgIHRoaXMuc25hcHNob3QuaGFzTW9yZUZhY2V0cyA9IHRoaXMuc25hcHNob3QuaGFzRmFjZXRzICYmIHRoaXMuc25hcHNob3QuZ3JvdXBzLmxlbmd0aCA+IHRoaXMuc25hcHNob3QudXNlZEdyb3Vwcy5sZW5ndGg7ICAgIFxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIGEgZmFjZXQgaXRlbSBhcyBmaWx0ZXJcclxuICAgKiBAcGFyYW0gZ3JvdXAgOiB0aGUgZmFjZXQgZ3JvdXBcclxuICAgKiBAcGFyYW0gaXRlbSAgOiB0aGUgZmFjZXQgaXRlbVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCB1c2UoZ3JvdXA6IENsaXBwZXJTZWFyY2hGYWNldEdyb3VwLCBpdGVtOiBDbGlwcGVyU2VhcmNoRmFjZXQpIHtcclxuICAgIGdyb3VwLnNlbGVjdGVkVmFsdWUgPSBpdGVtLnZhbHVlO1xyXG4gICAgZ3JvdXAuc2VsZWN0ZWRWYWx1ZURlc2NyaXB0aW9uID0gaXRlbS50aXRsZTtcclxuICAgIGxldCBqID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kSW5kZXhCeUtleSh0aGlzLnNuYXBzaG90Lmdyb3VwcywgJ2luZGV4JywgZ3JvdXAuaW5kZXgpO1xyXG4gICAgaWYgKGogIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuc25hcHNob3QuZ3JvdXBzLnNwbGljZShqLCAxKTtcclxuICAgICAgbGV0IHVwZGF0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zbmFwc2hvdC51c2VkR3JvdXBzLmZvckVhY2goKG4sIGkpID0+IHtcclxuICAgICAgICBpZiAoIXVwZGF0ZWQgJiYgbi5pbmRleCA+IGdyb3VwLmluZGV4KSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LnVzZWRHcm91cHMuc3BsaWNlKGksIDAsIGdyb3VwKTtcclxuICAgICAgICAgIHVwZGF0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICghdXBkYXRlZCkge1xyXG4gICAgICAgIHRoaXMuc25hcHNob3QudXNlZEdyb3Vwcy5wdXNoKGdyb3VwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5hcHBseSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZGlzbWlzcyBhIGZhY2V0IGdyb3VwIGZpbHRlclxyXG4gICAqIEBwYXJhbSBncm91cCA6IHRoZSBmYWNldCBncm91cFxyXG4gICAqIEBwYXJhbSBhcHBseSA6IHRydWUgdG8gZW1pdCBjaGFuZ2VkIGV2ZW50IGFuZCBnZW5lcmF0ZSBhIG5ldyBzZWFyY2gsIGZhbHNlIGp1c3QgZm9yIHVwZGF0ZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkaXNtaXNzKGdyb3VwOiBDbGlwcGVyU2VhcmNoRmFjZXRHcm91cCwgYXBwbHk6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBncm91cC5zZWxlY3RlZFZhbHVlID0gbnVsbDtcclxuICAgIGdyb3VwLnNlbGVjdGVkVmFsdWVEZXNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICBsZXQgaSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkodGhpcy5zbmFwc2hvdC51c2VkR3JvdXBzLCAnaW5kZXgnLCBncm91cC5pbmRleCk7XHJcbiAgICBpZiAoaSAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5zbmFwc2hvdC51c2VkR3JvdXBzLnNwbGljZShpLCAxKTtcclxuICAgICAgbGV0IHVwZGF0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zbmFwc2hvdC5ncm91cHMuZm9yRWFjaCgobiwgaikgPT4ge1xyXG4gICAgICAgICBpZiAoIXVwZGF0ZWQgJiYgbi5pbmRleCA+IGdyb3VwLmluZGV4KSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90Lmdyb3Vwcy5zcGxpY2UoaiwgMCwgZ3JvdXApO1xyXG4gICAgICAgICAgdXBkYXRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKCF1cGRhdGVkKSB7XHJcbiAgICAgICAgdGhpcy5zbmFwc2hvdC5ncm91cHMucHVzaChncm91cCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChhcHBseSkge1xyXG4gICAgICB0aGlzLmFwcGx5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSBmaWx0ZXJcclxuICAgKi9cclxuICBwcml2YXRlIGFwcGx5KCkge1xyXG4gICAgaWYgKHRoaXMuc25hcHNob3QudXNlZEdyb3Vwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc25hcHNob3QudXNlZEdyb3Vwcy5mb3JFYWNoKChuKSA9PiB7XHJcbiAgICAgICAgaWYgKG4uaW5kZXggPT09IENsaXBwZXJGYWNldC5ZZWFyKSB7XHJcbiAgICAgICAgICBpZiAobi5zZWxlY3RlZFZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hcHNob3QuZnJvbURhdGUgPSBuZXcgRGF0ZShwYXJzZUludChuLnNlbGVjdGVkVmFsdWUpLCAwLCAxLCAxMiwgMCwgMCk7XHJcbiAgICAgICAgICAgIHRoaXMuc25hcHNob3QudG9EYXRlID0gbmV3IERhdGUocGFyc2VJbnQobi5zZWxlY3RlZFZhbHVlKSwgMTEsIDMxLCAxMiwgMCwgMCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBzaG90LmZyb21EYXRlID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5zbmFwc2hvdC50b0RhdGUgPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAobi5pbmRleCA9PT0gQ2xpcHBlckZhY2V0LlNlY3Rvcikge1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5zZWN0b3IgPSBuLnNlbGVjdGVkVmFsdWUgPz8gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKG4uaW5kZXggPT09IENsaXBwZXJGYWNldC5BdXRob3IpIHtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QuYXV0aG9yID0gbi5zZWxlY3RlZFZhbHVlID8/IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChuLmluZGV4ID09PSBDbGlwcGVyRmFjZXQuRG9jdW1lbnRUeXBlKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LnR5cGUgPSBuLnNlbGVjdGVkVmFsdWUgPz8gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKG4uaW5kZXggPT09IENsaXBwZXJGYWNldC5BcnRpY2xlKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmFuY2hvciA9IG4uc2VsZWN0ZWRWYWx1ZSA/PyBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobi5pbmRleCA9PT0gQ2xpcHBlckZhY2V0LlJlYXNvbikge1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5yZWFzb24gPSBuLnNlbGVjdGVkVmFsdWUgPz8gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc25hcHNob3QuZ3JvdXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zbmFwc2hvdC5ncm91cHMuZm9yRWFjaCgobikgPT4ge1xyXG4gICAgICAgIGlmIChuLmluZGV4ID09PSBDbGlwcGVyRmFjZXQuWWVhcikge1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5jaGFuZ2VkSW50ZXJ2YWwgPSB0aGlzLnNuYXBzaG90LmZyb21EYXRlICE9PSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5mcm9tRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LnRvRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChuLmluZGV4ID09PSBDbGlwcGVyRmFjZXQuU2VjdG9yKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmNoYW5nZWRTZWN0b3IgPSB0aGlzLnNuYXBzaG90LnNlY3RvciAhPT0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3Quc2VjdG9yID0gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKG4uaW5kZXggPT09IENsaXBwZXJGYWNldC5BdXRob3IpIHtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QuY2hhbmdlZEF1dGhvciA9IHRoaXMuc25hcHNob3QuYXV0aG9yICE9PSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5hdXRob3IgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobi5pbmRleCA9PT0gQ2xpcHBlckZhY2V0LkRvY3VtZW50VHlwZSkge1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5jaGFuZ2VkVHlwZSA9IHRoaXMuc25hcHNob3QudHlwZSAhPT0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QudHlwZSA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChuLmluZGV4ID09PSBDbGlwcGVyRmFjZXQuQXJ0aWNsZSkge1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5jaGFuZ2VkQW5jaG9yID0gdGhpcy5zbmFwc2hvdC5hbmNob3IgIT09IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmFuY2hvciA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChuLmluZGV4ID09PSBDbGlwcGVyRmFjZXQuUmVhc29uKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmNoYW5nZWRSZWFzb24gPSB0aGlzLnNuYXBzaG90LnJlYXNvbiAhPT0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QucmVhc29uID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQodGhpcy5zbmFwc2hvdCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBmYWNldHMgYnkgZ3JvdXAgaW5kZXhcclxuICAgKiBAcGFyYW0gaW5kZXggOiB0aGUgZ3JvdXAgaW5kZXggdG8gY2xlYXIuIFVzZSAtMSB0byBjbGVhciBhbGwgZ3JvdXBzIGF0IG9uY2VcclxuICAgKiBAcmV0dXJucyA6IHRoZSBudW1iZXIgb2YgZ3JvdXBzIGRpc21pc3NlZFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBjbGVhcihpbmRleDogbnVtYmVyID0gLTEpOiBudW1iZXIge1xyXG4gICAgbGV0IGRpc21pc3NlZCA9IDA7XHJcbiAgICB0aGlzLnNuYXBzaG90LnVzZWRHcm91cHMuZm9yRWFjaCgobikgPT4ge1xyXG4gICAgICBpZiAoaW5kZXggPT09IC0xIHx8IGluZGV4ID09PSBuLmluZGV4KSB7XHJcbiAgICAgICAgaWYgKG4uaW5kZXggPT09IENsaXBwZXJGYWNldC5ZZWFyKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmNoYW5nZWRJbnRlcnZhbCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmZyb21EYXRlID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QudG9EYXRlID0gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKG4uaW5kZXggPT09IENsaXBwZXJGYWNldC5TZWN0b3IpIHtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QuY2hhbmdlZFNlY3RvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LnNlY3RvciA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChuLmluZGV4ID09PSBDbGlwcGVyRmFjZXQuQXV0aG9yKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmNoYW5nZWRBdXRob3IgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5hdXRob3IgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobi5pbmRleCA9PT0gQ2xpcHBlckZhY2V0LkRvY3VtZW50VHlwZSkge1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5jaGFuZ2VkVHlwZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LnR5cGUgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobi5pbmRleCA9PT0gQ2xpcHBlckZhY2V0LkFydGljbGUpIHtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QuY2hhbmdlZEFuY2hvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmFuY2hvciA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChuLmluZGV4ID09PSBDbGlwcGVyRmFjZXQuUmVhc29uKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmNoYW5nZWRSZWFzb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5yZWFzb24gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc21pc3MobiwgZmFsc2UpO1xyXG4gICAgICAgIGRpc21pc3NlZCsrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChkaXNtaXNzZWQpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQodGhpcy5zbmFwc2hvdCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGlzbWlzc2VkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXRcclxuICAgKi9cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMuc25hcHNob3QuZ3JvdXBzID0gW107XHJcbiAgICB0aGlzLnNuYXBzaG90LnVzZWRHcm91cHMgPSBbXTtcclxuICAgIHRoaXMuc25hcHNob3QuaGFzRmFjZXRzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNuYXBzaG90LmZyb21EYXRlID0gbnVsbDtcclxuICAgIHRoaXMuc25hcHNob3QudG9EYXRlID0gbnVsbDtcclxuICAgIHRoaXMuc25hcHNob3Quc2VjdG9yID0gbnVsbDtcclxuICAgIHRoaXMuc25hcHNob3QuYXV0aG9yID0gbnVsbDtcclxuICAgIHRoaXMuc25hcHNob3QuYW5jaG9yID0gbnVsbDtcclxuICAgIHRoaXMuc25hcHNob3QudHlwZSA9IG51bGw7XHJcbiAgICB0aGlzLnNuYXBzaG90LnJlYXNvbiA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXN0b3JlIGRhdGFcclxuICAgKiBAcGFyYW0gZGF0YSA6IHRoZSBkYXRhIHRvIHJlc3RvcmVcclxuICAgKi9cclxuICByZXN0b3JlKGRhdGE6IENsaXBwZXJTZWFyY2hGYWNldHNTbmFwc2hvdCkge1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgdGhpcy5zbmFwc2hvdC5ncm91cHMgPSBkYXRhLmdyb3VwcztcclxuICAgICAgdGhpcy5zbmFwc2hvdC51c2VkR3JvdXBzID0gZGF0YS51c2VkR3JvdXBzO1xyXG4gICAgICB0aGlzLnNuYXBzaG90Lmhhc0ZhY2V0cyA9IGRhdGEuaGFzRmFjZXRzO1xyXG4gICAgICB0aGlzLnNuYXBzaG90LmZyb21EYXRlID0gZGF0YS5mcm9tRGF0ZTtcclxuICAgICAgdGhpcy5zbmFwc2hvdC50b0RhdGUgPSBkYXRhLnRvRGF0ZTtcclxuICAgICAgdGhpcy5zbmFwc2hvdC5zZWN0b3IgPSBkYXRhLnNlY3RvcjtcclxuICAgICAgdGhpcy5zbmFwc2hvdC5hdXRob3IgPSBkYXRhLmF1dGhvcjtcclxuICAgICAgdGhpcy5zbmFwc2hvdC5hbmNob3IgPSBkYXRhLmFuY2hvcjtcclxuICAgICAgdGhpcy5zbmFwc2hvdC50eXBlID0gZGF0YS50eXBlO1xyXG4gICAgICB0aGlzLnNuYXBzaG90LnJlYXNvbiA9IGRhdGEucmVhc29uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2F2ZSBkYXRhXHJcbiAgICovXHJcbiAgc2F2ZSgpOiBDbGlwcGVyU2VhcmNoRmFjZXRzU25hcHNob3Qge1xyXG4gICAgcmV0dXJuIHRoaXMuc25hcHNob3Q7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGwgY2xhc3M9XCJmYWNldHMtY29udGFpbmVyIHNjcm9sbC1oaWRkZW5cIj5cclxuICA8ZGl2PlxyXG4gICAgQGlmIChzbmFwc2hvdC51c2VkR3JvdXBzLmxlbmd0aCA+IDApIHtcclxuICAgIDxkaXYgY2xhc3M9XCJmYWNldHMtc2VsZWN0aW9uXCI+XHJcbiAgICAgIDxtYXQtY2hpcC1zZXQgYXJpYS1sYWJlbD1cIlNlbGV6aW9uZVwiPlxyXG4gICAgICAgIEBmb3IgKHVnIG9mIHNuYXBzaG90LnVzZWRHcm91cHM7IHRyYWNrIHVnKSB7XHJcbiAgICAgICAgPG1hdC1jaGlwIChyZW1vdmVkKT1cImRpc21pc3ModWcpXCIgW21hdFRvb2x0aXBdPVwidWcuc2VsZWN0ZWRWYWx1ZURlc2NyaXB0aW9uID8/ICcnXCI+XHJcbiAgICAgICAgICB7e3VnLnNlbGVjdGVkVmFsdWVEZXNjcmlwdGlvbn19XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdENoaXBSZW1vdmUgW2F0dHIuYXJpYS1sYWJlbF09XCInUmltdW92aSAnICsgdWcubmFtZVwiIFttYXRUb29sdGlwXT1cIidSaW11b3ZpICcgKyB1Zy5uYW1lXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9tYXQtY2hpcD5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbWF0LWNoaXAtc2V0PlxyXG4gICAgICA8bWF0LWRpdmlkZXIgY2xhc3M9XCJkaXZpZGVyXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAyMHB4O1wiPjwvbWF0LWRpdmlkZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICA8ZGl2IGZ4RmxleD1cIipcIiBjbGFzcz1cInNjcm9sbC1hdXRvXCI+XHJcbiAgICBAaWYgKHNuYXBzaG90Lmdyb3Vwcy5sZW5ndGggPiAwKSB7XHJcbiAgICBAZm9yIChncm91cCBvZiBzbmFwc2hvdC5ncm91cHM7IHRyYWNrIGdyb3VwLmluZGV4OyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgPG1hdC1hY2NvcmRpb24gbXVsdGkgZGlzcGxheU1vZGU9XCJmbGF0XCI+XHJcbiAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIGNsYXNzPVwiYWNjb3JkaW9uLXBhbmVsIG1hdC1lbGV2YXRpb24tejAgXCIgW2V4cGFuZGVkXT1cImkgPT0gMFwiPlxyXG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBjbGFzcz1cImFjY29yZGlvbi1oZWFkZXJcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImdyb3VwLm5hbWVcIj5cclxuICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICAgIEBpZiAoZ3JvdXAuaW5kZXggPT0gMiAmJiBzbmFwc2hvdC5pbnRlcnZhbCkge1xyXG4gICAgICAgICAgICB7e3NuYXBzaG90LmludGVydmFsfX0gKHt7Z3JvdXAudmFsdWVzLmxlbmd0aH19KVxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAge3tncm91cC5uYW1lfX0gKHt7Z3JvdXAudmFsdWVzLmxlbmd0aH19KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgIDxuYXYgY2xhc3M9XCJmYWNldHMtaXRlbXNcIj5cclxuICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBncm91cC52YWx1ZXM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICA8bGkgKGNsaWNrKT1cInVzZShncm91cCwgaXRlbSlcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0udGl0bGVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRydW5jYXRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJ1bmNhdGVkXCI+e3tpdGVtLnRpdGxlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwiZW5kXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAge3tzbmFwc2hvdC5oYXNUb29NYW55UmVzdWx0cyA/ICd+JyA6ICcnfX17e2l0ZW0uY291bnR9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9uYXY+XHJcbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgIDwvbWF0LWFjY29yZGlvbj5cclxuICAgIH1cclxuICAgIH0gQGVsc2UgaWYgKHNuYXBzaG90Lmhhc0ZhY2V0cyAmJiAhc25hcHNob3QuaGFzTW9yZUZhY2V0cykge1xyXG4gICAgPGRpdiBjbGFzcz1cImZhY2V0cy1tZXNzYWdlXCI+XHJcbiAgICAgIDxwIGNsYXNzPVwic21hbGxcIj48aT5UdXR0ZSBsZSBvcHppb25pIHNvbm8gc3RhdGUgc2VsZXppb25hdGU8L2k+PC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICB9ICAgIFxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZhY2V0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvY2xpcHBlci51aS91aS9zZWFyY2gtZmFjZXRzL3NlYXJjaC1mYWNldHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvc2VhcmNoLWZhY2V0cy9zZWFyY2gtZmFjZXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUNMLFlBQVksRUFHWiwyQkFBMkIsRUFDNUIsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQVd4RCxNQUFNLE9BQU8sNEJBQTRCO0lBUnpDO1FBU1ksWUFBTyxHQUFHLElBQUksWUFBWSxFQUErQixDQUFDO1FBQzVELG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFD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QkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUM7Z0JBQ2pELENBQUM7cUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUM7Z0JBQ2pELENBQUM7cUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUM7Z0JBQy9DLENBQUM7cUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUM7Z0JBQ2pELENBQUM7cUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUM7Z0JBQ2pELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDakMsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO29CQUNoRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7b0JBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDOUIsQ0FBQztxQkFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7b0JBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDOUIsQ0FBQztxQkFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7b0JBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDOUIsQ0FBQztxQkFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUM7b0JBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDNUIsQ0FBQztxQkFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7b0JBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDOUIsQ0FBQztxQkFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7b0JBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDOUIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLEtBQUssQ0FBQyxRQUFnQixDQUFDLENBQUM7UUFDaEMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3JDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztvQkFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO29CQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQzlCLENBQUM7cUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO29CQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQzlCLENBQUM7cUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO29CQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQzlCLENBQUM7cUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO29CQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQzVCLENBQUM7cUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO29CQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQzlCLENBQUM7cUJBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO29CQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQzlCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLFNBQVMsRUFBRSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLElBQWlDO1FBQ3ZDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7OEdBOU5VLDRCQUE0QjtrR0FBNUIsNEJBQTRCLGtIQ3pCekMsbytFQXlETSx1M1JEbENNLFVBQVUsK2hHQUFFLGVBQWUsOEJBQUUsZ0JBQWdCLDRUQUFFLGNBQWMsa2hCQUFFLGFBQWEsbUxBQUUsZ0JBQWdCLGtJQUFFLGtCQUFrQjs7MkZBRWpILDRCQUE0QjtrQkFSeEMsU0FBUzsrQkFDRSx1QkFBdUIsY0FHckIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixDQUFDOzhCQUduSCxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7XHJcbiAgQ2xpcHBlckZhY2V0LFxyXG4gIENsaXBwZXJTZWFyY2hGYWNldCxcclxuICBDbGlwcGVyU2VhcmNoRmFjZXRHcm91cCxcclxuICBDbGlwcGVyU2VhcmNoRmFjZXRzU25hcHNob3RcclxufSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NsaXBwZXIuY29tbW9uJztcclxuaW1wb3J0IHsgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXgnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2xpcHBlci1zZWFyY2gtZmFjZXRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWZhY2V0cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWZhY2V0cy5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaW1wb3J0czogW0ZsZXhNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSwgTWF0Q2hpcHNNb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdERpdmlkZXJNb2R1bGUsIE1hdEV4cGFuc2lvbk1vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIENsaXBwZXJTZWFyY2hGYWNldHNDb21wb25lbnQge1xyXG4gIEBPdXRwdXQoKSBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDbGlwcGVyU2VhcmNoRmFjZXRzU25hcHNob3Q+KCk7XHJcbiAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIHByb3RlY3RlZCBzbmFwc2hvdDogQ2xpcHBlclNlYXJjaEZhY2V0c1NuYXBzaG90ID0gbmV3IENsaXBwZXJTZWFyY2hGYWNldHNTbmFwc2hvdCgpO1xyXG5cclxuICAvKipcclxuICogVXBkYXRlIGZhY2V0c1xyXG4gKiBAcGFyYW0gdmFsdWVzIDogdGhlIGZhY2V0cyB2YWx1ZXNcclxuICogQHBhcmFtIGludGVydmFsIDogdGhlIGRhdGUgaW50ZXJ2YWwgZm9yIFlFQVIgZmFjZXRzXHJcbiAqL1xyXG4gIHVwZGF0ZSh2YWx1ZXM6IENsaXBwZXJTZWFyY2hGYWNldFtdW10gfCBudWxsID0gbnVsbCwgaW50ZXJ2YWw6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XHJcbiAgICB0aGlzLnNuYXBzaG90LmludGVydmFsID0gaW50ZXJ2YWw7XHJcbiAgICBpZiAodmFsdWVzKSB7XHJcbiAgICAgIHRoaXMuc25hcHNob3QuZ3JvdXBzID0gW107XHJcbiAgICAgIHZhbHVlcy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgIGxldCBuYW1lID0gblswXS50eXBlTmFtZTtcclxuICAgICAgICBsZXQgaW5kZXggPSBuWzBdLnR5cGU7XHJcbiAgICAgICAgbGV0IGkgPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRJbmRleEJ5S2V5KFxyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC51c2VkR3JvdXBzLFxyXG4gICAgICAgICAgJ2luZGV4JyxcclxuICAgICAgICAgIGluZGV4KTtcclxuICAgICAgICBsZXQgaiA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkoXHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90Lmdyb3VwcyxcclxuICAgICAgICAgICdpbmRleCcsXHJcbiAgICAgICAgICBpbmRleFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGkgPT09IC0xICYmIGogPT09IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90Lmdyb3Vwcy5wdXNoKHtcclxuICAgICAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZTogbnVsbCxcclxuICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZURlc2NyaXB0aW9uOiBudWxsLFxyXG4gICAgICAgICAgICB2YWx1ZXM6IG4sXHJcbiAgICAgICAgICAgIGluZGV4OiBpbmRleCxcclxuICAgICAgICAgIH0pOyAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zbmFwc2hvdC5oYXNGYWNldHMgPSB0aGlzLnNuYXBzaG90Lmdyb3Vwcy5sZW5ndGggPiAwIHx8IHRoaXMuc25hcHNob3QudXNlZEdyb3Vwcy5sZW5ndGggPiAwOyAgICBcclxuICAgIHRoaXMuc25hcHNob3QuaGFzTW9yZUZhY2V0cyA9IHRoaXMuc25hcHNob3QuaGFzRmFjZXRzICYmIHRoaXMuc25hcHNob3QuZ3JvdXBzLmxlbmd0aCA+IHRoaXMuc25hcHNob3QudXNlZEdyb3Vwcy5sZW5ndGg7ICAgIFxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIGEgZmFjZXQgaXRlbSBhcyBmaWx0ZXJcclxuICAgKiBAcGFyYW0gZ3JvdXAgOiB0aGUgZmFjZXQgZ3JvdXBcclxuICAgKiBAcGFyYW0gaXRlbSAgOiB0aGUgZmFjZXQgaXRlbVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCB1c2UoZ3JvdXA6IENsaXBwZXJTZWFyY2hGYWNldEdyb3VwLCBpdGVtOiBDbGlwcGVyU2VhcmNoRmFjZXQpIHtcclxuICAgIGdyb3VwLnNlbGVjdGVkVmFsdWUgPSBpdGVtLnZhbHVlO1xyXG4gICAgZ3JvdXAuc2VsZWN0ZWRWYWx1ZURlc2NyaXB0aW9uID0gaXRlbS50aXRsZTtcclxuICAgIGxldCBqID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kSW5kZXhCeUtleSh0aGlzLnNuYXBzaG90Lmdyb3VwcywgJ2luZGV4JywgZ3JvdXAuaW5kZXgpO1xyXG4gICAgaWYgKGogIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuc25hcHNob3QuZ3JvdXBzLnNwbGljZShqLCAxKTtcclxuICAgICAgbGV0IHVwZGF0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zbmFwc2hvdC51c2VkR3JvdXBzLmZvckVhY2goKG4sIGkpID0+IHtcclxuICAgICAgICBpZiAoIXVwZGF0ZWQgJiYgbi5pbmRleCA+IGdyb3VwLmluZGV4KSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LnVzZWRHcm91cHMuc3BsaWNlKGksIDAsIGdyb3VwKTtcclxuICAgICAgICAgIHVwZGF0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICghdXBkYXRlZCkge1xyXG4gICAgICAgIHRoaXMuc25hcHNob3QudXNlZEdyb3Vwcy5wdXNoKGdyb3VwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5hcHBseSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZGlzbWlzcyBhIGZhY2V0IGdyb3VwIGZpbHRlclxyXG4gICAqIEBwYXJhbSBncm91cCA6IHRoZSBmYWNldCBncm91cFxyXG4gICAqIEBwYXJhbSBhcHBseSA6IHRydWUgdG8gZW1pdCBjaGFuZ2VkIGV2ZW50IGFuZCBnZW5lcmF0ZSBhIG5ldyBzZWFyY2gsIGZhbHNlIGp1c3QgZm9yIHVwZGF0ZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkaXNtaXNzKGdyb3VwOiBDbGlwcGVyU2VhcmNoRmFjZXRHcm91cCwgYXBwbHk6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBncm91cC5zZWxlY3RlZFZhbHVlID0gbnVsbDtcclxuICAgIGdyb3VwLnNlbGVjdGVkVmFsdWVEZXNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICBsZXQgaSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEluZGV4QnlLZXkodGhpcy5zbmFwc2hvdC51c2VkR3JvdXBzLCAnaW5kZXgnLCBncm91cC5pbmRleCk7XHJcbiAgICBpZiAoaSAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5zbmFwc2hvdC51c2VkR3JvdXBzLnNwbGljZShpLCAxKTtcclxuICAgICAgbGV0IHVwZGF0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zbmFwc2hvdC5ncm91cHMuZm9yRWFjaCgobiwgaikgPT4ge1xyXG4gICAgICAgICBpZiAoIXVwZGF0ZWQgJiYgbi5pbmRleCA+IGdyb3VwLmluZGV4KSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90Lmdyb3Vwcy5zcGxpY2UoaiwgMCwgZ3JvdXApO1xyXG4gICAgICAgICAgdXBkYXRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKCF1cGRhdGVkKSB7XHJcbiAgICAgICAgdGhpcy5zbmFwc2hvdC5ncm91cHMucHVzaChncm91cCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChhcHBseSkge1xyXG4gICAgICB0aGlzLmFwcGx5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSBmaWx0ZXJcclxuICAgKi9cclxuICBwcml2YXRlIGFwcGx5KCkge1xyXG4gICAgaWYgKHRoaXMuc25hcHNob3QudXNlZEdyb3Vwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc25hcHNob3QudXNlZEdyb3Vwcy5mb3JFYWNoKChuKSA9PiB7XHJcbiAgICAgICAgaWYgKG4uaW5kZXggPT09IENsaXBwZXJGYWNldC5ZZWFyKSB7XHJcbiAgICAgICAgICBpZiAobi5zZWxlY3RlZFZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hcHNob3QuZnJvbURhdGUgPSBuZXcgRGF0ZShwYXJzZUludChuLnNlbGVjdGVkVmFsdWUpLCAwLCAxLCAxMiwgMCwgMCk7XHJcbiAgICAgICAgICAgIHRoaXMuc25hcHNob3QudG9EYXRlID0gbmV3IERhdGUocGFyc2VJbnQobi5zZWxlY3RlZFZhbHVlKSwgMTEsIDMxLCAxMiwgMCwgMCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBzaG90LmZyb21EYXRlID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5zbmFwc2hvdC50b0RhdGUgPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAobi5pbmRleCA9PT0gQ2xpcHBlckZhY2V0LlNlY3Rvcikge1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5zZWN0b3IgPSBuLnNlbGVjdGVkVmFsdWUgPz8gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKG4uaW5kZXggPT09IENsaXBwZXJGYWNldC5BdXRob3IpIHtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QuYXV0aG9yID0gbi5zZWxlY3RlZFZhbHVlID8/IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChuLmluZGV4ID09PSBDbGlwcGVyRmFjZXQuRG9jdW1lbnRUeXBlKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LnR5cGUgPSBuLnNlbGVjdGVkVmFsdWUgPz8gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKG4uaW5kZXggPT09IENsaXBwZXJGYWNldC5BcnRpY2xlKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmFuY2hvciA9IG4uc2VsZWN0ZWRWYWx1ZSA/PyBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobi5pbmRleCA9PT0gQ2xpcHBlckZhY2V0LlJlYXNvbikge1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5yZWFzb24gPSBuLnNlbGVjdGVkVmFsdWUgPz8gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc25hcHNob3QuZ3JvdXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zbmFwc2hvdC5ncm91cHMuZm9yRWFjaCgobikgPT4ge1xyXG4gICAgICAgIGlmIChuLmluZGV4ID09PSBDbGlwcGVyRmFjZXQuWWVhcikge1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5jaGFuZ2VkSW50ZXJ2YWwgPSB0aGlzLnNuYXBzaG90LmZyb21EYXRlICE9PSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5mcm9tRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LnRvRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChuLmluZGV4ID09PSBDbGlwcGVyRmFjZXQuU2VjdG9yKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmNoYW5nZWRTZWN0b3IgPSB0aGlzLnNuYXBzaG90LnNlY3RvciAhPT0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3Quc2VjdG9yID0gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKG4uaW5kZXggPT09IENsaXBwZXJGYWNldC5BdXRob3IpIHtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QuY2hhbmdlZEF1dGhvciA9IHRoaXMuc25hcHNob3QuYXV0aG9yICE9PSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5hdXRob3IgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobi5pbmRleCA9PT0gQ2xpcHBlckZhY2V0LkRvY3VtZW50VHlwZSkge1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5jaGFuZ2VkVHlwZSA9IHRoaXMuc25hcHNob3QudHlwZSAhPT0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QudHlwZSA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChuLmluZGV4ID09PSBDbGlwcGVyRmFjZXQuQXJ0aWNsZSkge1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5jaGFuZ2VkQW5jaG9yID0gdGhpcy5zbmFwc2hvdC5hbmNob3IgIT09IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmFuY2hvciA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChuLmluZGV4ID09PSBDbGlwcGVyRmFjZXQuUmVhc29uKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmNoYW5nZWRSZWFzb24gPSB0aGlzLnNuYXBzaG90LnJlYXNvbiAhPT0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QucmVhc29uID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQodGhpcy5zbmFwc2hvdCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBmYWNldHMgYnkgZ3JvdXAgaW5kZXhcclxuICAgKiBAcGFyYW0gaW5kZXggOiB0aGUgZ3JvdXAgaW5kZXggdG8gY2xlYXIuIFVzZSAtMSB0byBjbGVhciBhbGwgZ3JvdXBzIGF0IG9uY2VcclxuICAgKiBAcmV0dXJucyA6IHRoZSBudW1iZXIgb2YgZ3JvdXBzIGRpc21pc3NlZFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBjbGVhcihpbmRleDogbnVtYmVyID0gLTEpOiBudW1iZXIge1xyXG4gICAgbGV0IGRpc21pc3NlZCA9IDA7XHJcbiAgICB0aGlzLnNuYXBzaG90LnVzZWRHcm91cHMuZm9yRWFjaCgobikgPT4ge1xyXG4gICAgICBpZiAoaW5kZXggPT09IC0xIHx8IGluZGV4ID09PSBuLmluZGV4KSB7XHJcbiAgICAgICAgaWYgKG4uaW5kZXggPT09IENsaXBwZXJGYWNldC5ZZWFyKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmNoYW5nZWRJbnRlcnZhbCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmZyb21EYXRlID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QudG9EYXRlID0gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKG4uaW5kZXggPT09IENsaXBwZXJGYWNldC5TZWN0b3IpIHtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QuY2hhbmdlZFNlY3RvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LnNlY3RvciA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChuLmluZGV4ID09PSBDbGlwcGVyRmFjZXQuQXV0aG9yKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmNoYW5nZWRBdXRob3IgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5hdXRob3IgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobi5pbmRleCA9PT0gQ2xpcHBlckZhY2V0LkRvY3VtZW50VHlwZSkge1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5jaGFuZ2VkVHlwZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LnR5cGUgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobi5pbmRleCA9PT0gQ2xpcHBlckZhY2V0LkFydGljbGUpIHtcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QuY2hhbmdlZEFuY2hvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmFuY2hvciA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChuLmluZGV4ID09PSBDbGlwcGVyRmFjZXQuUmVhc29uKSB7XHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmNoYW5nZWRSZWFzb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zbmFwc2hvdC5yZWFzb24gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc21pc3MobiwgZmFsc2UpO1xyXG4gICAgICAgIGRpc21pc3NlZCsrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChkaXNtaXNzZWQpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQodGhpcy5zbmFwc2hvdCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGlzbWlzc2VkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXRcclxuICAgKi9cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMuc25hcHNob3QuZ3JvdXBzID0gW107XHJcbiAgICB0aGlzLnNuYXBzaG90LnVzZWRHcm91cHMgPSBbXTtcclxuICAgIHRoaXMuc25hcHNob3QuaGFzRmFjZXRzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNuYXBzaG90LmZyb21EYXRlID0gbnVsbDtcclxuICAgIHRoaXMuc25hcHNob3QudG9EYXRlID0gbnVsbDtcclxuICAgIHRoaXMuc25hcHNob3Quc2VjdG9yID0gbnVsbDtcclxuICAgIHRoaXMuc25hcHNob3QuYXV0aG9yID0gbnVsbDtcclxuICAgIHRoaXMuc25hcHNob3QuYW5jaG9yID0gbnVsbDtcclxuICAgIHRoaXMuc25hcHNob3QudHlwZSA9IG51bGw7XHJcbiAgICB0aGlzLnNuYXBzaG90LnJlYXNvbiA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXN0b3JlIGRhdGFcclxuICAgKiBAcGFyYW0gZGF0YSA6IHRoZSBkYXRhIHRvIHJlc3RvcmVcclxuICAgKi9cclxuICByZXN0b3JlKGRhdGE6IENsaXBwZXJTZWFyY2hGYWNldHNTbmFwc2hvdCkge1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgdGhpcy5zbmFwc2hvdCA9IGRhdGE7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYXZlIGRhdGFcclxuICAgKi9cclxuICBzYXZlKCk6IENsaXBwZXJTZWFyY2hGYWNldHNTbmFwc2hvdCB7XHJcbiAgICByZXR1cm4gdGhpcy5zbmFwc2hvdDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmlsbCBjbGFzcz1cImZhY2V0cy1jb250YWluZXIgc2Nyb2xsLWhpZGRlblwiPlxyXG4gIDxkaXY+XHJcbiAgICBAaWYgKHNuYXBzaG90LnVzZWRHcm91cHMubGVuZ3RoID4gMCkge1xyXG4gICAgPGRpdiBjbGFzcz1cImZhY2V0cy1zZWxlY3Rpb25cIj5cclxuICAgICAgPG1hdC1jaGlwLXNldCBhcmlhLWxhYmVsPVwiU2VsZXppb25lXCI+XHJcbiAgICAgICAgQGZvciAodWcgb2Ygc25hcHNob3QudXNlZEdyb3VwczsgdHJhY2sgdWcpIHtcclxuICAgICAgICA8bWF0LWNoaXAgKHJlbW92ZWQpPVwiZGlzbWlzcyh1ZylcIiBbbWF0VG9vbHRpcF09XCJ1Zy5zZWxlY3RlZFZhbHVlRGVzY3JpcHRpb24gPz8gJydcIj5cclxuICAgICAgICAgIHt7dWcuc2VsZWN0ZWRWYWx1ZURlc2NyaXB0aW9ufX1cclxuICAgICAgICAgIDxidXR0b24gbWF0Q2hpcFJlbW92ZSBbYXR0ci5hcmlhLWxhYmVsXT1cIidSaW11b3ZpICcgKyB1Zy5uYW1lXCIgW21hdFRvb2x0aXBdPVwiJ1JpbXVvdmkgJyArIHVnLm5hbWVcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNhbmNlbDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L21hdC1jaGlwPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9tYXQtY2hpcC1zZXQ+XHJcbiAgICAgIDxtYXQtZGl2aWRlciBjbGFzcz1cImRpdmlkZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDIwcHg7XCI+PC9tYXQtZGl2aWRlcj5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgZnhGbGV4PVwiKlwiIGNsYXNzPVwic2Nyb2xsLWF1dG9cIj5cclxuICAgIEBpZiAoc25hcHNob3QuZ3JvdXBzLmxlbmd0aCA+IDApIHtcclxuICAgIEBmb3IgKGdyb3VwIG9mIHNuYXBzaG90Lmdyb3VwczsgdHJhY2sgZ3JvdXAuaW5kZXg7IGxldCBpID0gJGluZGV4KSB7XHJcbiAgICA8bWF0LWFjY29yZGlvbiBtdWx0aSBkaXNwbGF5TW9kZT1cImZsYXRcIj5cclxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgY2xhc3M9XCJhY2NvcmRpb24tcGFuZWwgbWF0LWVsZXZhdGlvbi16MCBcIiBbZXhwYW5kZWRdPVwiaSA9PSAwXCI+XHJcbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIGNsYXNzPVwiYWNjb3JkaW9uLWhlYWRlclwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZ3JvdXAubmFtZVwiPlxyXG4gICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgICAgQGlmIChncm91cC5pbmRleCA9PSAyICYmIHNuYXBzaG90LmludGVydmFsKSB7XHJcbiAgICAgICAgICAgIHt7c25hcHNob3QuaW50ZXJ2YWx9fSAoe3tncm91cC52YWx1ZXMubGVuZ3RofX0pXHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICB7e2dyb3VwLm5hbWV9fSAoe3tncm91cC52YWx1ZXMubGVuZ3RofX0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgPG5hdiBjbGFzcz1cImZhY2V0cy1pdGVtc1wiPlxyXG4gICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGdyb3VwLnZhbHVlczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxsaSAoY2xpY2spPVwidXNlKGdyb3VwLCBpdGVtKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiaXRlbS50aXRsZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidHJ1bmNhdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnVuY2F0ZWRcIj57e2l0ZW0udGl0bGV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3NuYXBzaG90Lmhhc1Rvb01hbnlSZXN1bHRzID8gJ34nIDogJyd9fXt7aXRlbS5jb3VudH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC91bD5cclxuICAgICAgICA8L25hdj5cclxuICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgPC9tYXQtYWNjb3JkaW9uPlxyXG4gICAgfVxyXG4gICAgfSBAZWxzZSBpZiAoc25hcHNob3QuaGFzRmFjZXRzICYmICFzbmFwc2hvdC5oYXNNb3JlRmFjZXRzKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmFjZXRzLW1lc3NhZ2VcIj5cclxuICAgICAgPHAgY2xhc3M9XCJzbWFsbFwiPjxpPlR1dHRlIGxlIG9wemlvbmkgc29ubyBzdGF0ZSBzZWxlemlvbmF0ZTwvaT48L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIH0gICAgXHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
@@ -429,6 +429,8 @@ export class ClipperSearchResultManager extends ClipperDocumentManager {
429
429
  scroll: scroll,
430
430
  sort: { mode: this.sortMode, options: this.sortOptions },
431
431
  data: this.snapshot
432
+ ? { items: this.snapshot.items, total: this.snapshot.total }
433
+ : null
432
434
  }));
433
435
  }
434
436
  /**
@@ -487,4 +489,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
487
489
  type: ViewChild,
488
490
  args: ['contextMenuTrigger']
489
491
  }] } });
490
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvc2VhcmNoLXJlc3VsdC1tYW5hZ2VyL3NlYXJjaC1yZXN1bHQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQWEsU0FBUyxFQUFFLE1BQU0sRUFDdkMsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3pELE9BQU8sRUFDSCxVQUFVLEVBQ0ssYUFBYSxFQUFtQixXQUFXLEVBQzdELE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUYsT0FBTyxFQUF1QixlQUFlLEVBQUUsWUFBWSxFQUFrRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFVbE8sTUFBTSxPQUFPLDBCQUNULFNBQVEsc0JBQXNCO0lBUGxDOztRQWNjLGdCQUFXLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFDakQsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztR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QkFBQyxRQUFRO2dCQUNJLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDWSxXQUFXO3NCQUEzQyxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgaW5qZWN0LFxyXG4gICAgc2lnbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xyXG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQge1xyXG4gICAgRGF0ZUZvcm1hdCxcclxuICAgIE5hbWVWYWx1ZUl0ZW0sIFNjcmVlblNlcnZpY2UsIFNlbGVjdGFibGVNb2RlbCwgU3lzdGVtVXRpbHNcclxufSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN0YXJ0T2ZEYXksIHN0YXJ0T2ZUb2RheSwgc3ViRGF5cyB9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50TWFuYWdlciB9IGZyb20gJy4uL2RvY3VtZW50LW1hbmFnZXIvZG9jdW1lbnQtbWFuYWdlcic7XHJcbmltcG9ydCB7IENsaXBwZXJTZWFyY2hGYWNldHNDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtZmFjZXRzL3NlYXJjaC1mYWNldHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpcHBlclNlYXJjaENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWNhbGVuZGFyL3NlYXJjaC1jYWxlbmRhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbGlwcGVyRG9jdW1lbnRJbmZvLCBDbGlwcGVyTWVzc2FnZXMsIENsaXBwZXJNb2RlbCwgQ2xpcHBlclNlYXJjaENhbGVuZGFyU25hcHNob3RSZXN1bHQsIENsaXBwZXJTZWFyY2hGYWNldHNSZXN1bHQsIENsaXBwZXJTZWFyY2hQYXJhbXMsIENsaXBwZXJTZWFyY2hSZXN1bHQsIENsaXBwZXJTb3J0IH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jbGlwcGVyLmNvbW1vbic7XHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgdGVtcGxhdGU6ICc8ZGl2PjwvZGl2PicsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBpbXBvcnRzOiBbQ2xpcHBlckRvY3VtZW50TWFuYWdlciwgQ2xpcHBlclNlYXJjaEZhY2V0c0NvbXBvbmVudCwgQ2xpcHBlclNlYXJjaENhbGVuZGFyQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaXBwZXJTZWFyY2hSZXN1bHRNYW5hZ2VyXHJcbiAgICBleHRlbmRzIENsaXBwZXJEb2N1bWVudE1hbmFnZXJcclxuICAgIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoJ3BhZ2luYXRvcicpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcclxuICAgIEBWaWV3Q2hpbGQoJ2ZhY2V0cycpIGZhY2V0cyE6IENsaXBwZXJTZWFyY2hGYWNldHNDb21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdjYWxlbmRhcicpIGNhbGVuZGFyITogQ2xpcHBlclNlYXJjaENhbGVuZGFyQ29tcG9uZW50O1xyXG4gICAgQFZpZXdDaGlsZCgnY29udGV4dE1lbnVUcmlnZ2VyJykgY29udGV4dE1lbnUhOiBNYXRNZW51VHJpZ2dlcjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgdW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIHByb3RlY3RlZCBicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcclxuICAgIHB1YmxpYyBzY3JlZW5TZXJ2aWNlID0gaW5qZWN0KFNjcmVlblNlcnZpY2UpO1xyXG4gICAgcHVibGljIHNlbGVjdGlvbjogU2VsZWN0YWJsZU1vZGVsPGFueSwgc3RyaW5nPiB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvdGVjdGVkIHNuYXBzaG90OiBDbGlwcGVyU2VhcmNoUmVzdWx0IHwgbnVsbCA9IG5ldyBDbGlwcGVyU2VhcmNoUmVzdWx0KCk7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyQnVzeSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyUGFyYW1zOiBDbGlwcGVyU2VhcmNoUGFyYW1zID0gbmV3IENsaXBwZXJTZWFyY2hQYXJhbXMoKTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJQYW5lSGFzQmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJQYW5lQ2xvc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyUGFuZTJIYXNCYWNrZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIGZpbHRlclBhbmUyQ2xvc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgc29ydE9wdGlvbnM6IE5hbWVWYWx1ZUl0ZW08bnVtYmVyPltdID0gW107XHJcbiAgICBwcm90ZWN0ZWQgc29ydE1vZGU6IE5hbWVWYWx1ZUl0ZW08bnVtYmVyPiB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvdGVjdGVkIHNjcm9sbGVySWQ6IHN0cmluZyA9ICdzY3JvbGxlcl8nICsgU3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCk7XHJcbiAgICBwcm90ZWN0ZWQgcmVzdG9yYWJsZUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgIHByb3RlY3RlZCBjb250ZXh0TWVudVBvc2l0aW9uID0geyB4OiAnMHB4JywgeTogJzBweCcgfTtcclxuICAgIHByb3RlY3RlZCBoYXNGYWNldHMgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHJvdGVjdGVkIGhhc0NhbGVuZGFyID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHByb3RlY3RlZCBoYXNSZWdpb25zID0gKCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5maWx0ZXJQYXJhbXMuc2VjdG9ycz8uZmlsdGVyKG4gPT4gbi52YWx1ZSA9PT0gJ0xSJykubGVuZ3RoID8/IDApID4gMDtcclxuICAgIH07XHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG9uQ29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IGFueSkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnggPSBldmVudC5jbGllbnRYICsgJ3B4JztcclxuICAgICAgICB0aGlzLmNvbnRleHRNZW51UG9zaXRpb24ueSA9IGV2ZW50LmNsaWVudFkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMuY29udGV4dE1lbnUubWVudURhdGEgPSB7IGl0ZW06IGl0ZW0gfTtcclxuICAgICAgICB0aGlzLmNvbnRleHRNZW51Lm9wZW5NZW51KCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIG1lbnUgYnV0dG9ucyB2aXNpYmlsaXR5IHdoZW4gdGhlIG1lbnUgaXMgY2xvc2VkXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZU1lbnVCdXR0b25zVmlzaWJpbGl0eSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zbmFwc2hvdCkge1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBzaG90Lml0ZW1zPy5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIG4uaXNNZW51T3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTY3JvbGwgb24gdG9wIG8gbGlzdCBhcmVhXHJcbiAgICAgKiBAcGFyYW0gdG9wOiB0aGUgdG9wIHBvc2l0aW9uXHJcbiAgICAgKi9cclxuICAgIHNjcm9sbCh0b3A6IG51bWJlciA9IDApIHtcclxuICAgICAgICBjb25zdCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5zY3JvbGxlcklkKTtcclxuICAgICAgICBpZiAoZWxlbSkge1xyXG4gICAgICAgICAgICBlbGVtLnNjcm9sbFRvKHsgdG9wOiB0b3AsIGxlZnQ6IDAsIGJlaGF2aW9yOiAnYXV0bycgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2sgaWYgZXZlcnkgZWxlbWVudCBhcmUgc2VsZWN0ZWRcclxuICAgICAqL1xyXG4gICAgYWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uPy5jdXJyZW50Py5zZWxlY3RlZD8ubGVuZ3RoID09PSB0aGlzLnNuYXBzaG90Py5pdGVtcz8ubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWFzdGVyIHNlbGVjdGlvbiB0b2dnbGVcclxuICAgICAqIEBwYXJhbSBzZWxlY3Q6IHRydWUgdG8gc2VsZWN0IGFsbCBlbGVtZW50cyBmYWxzZSB0byBkZXNlbGVjdCBhbGwgZWxlbWVudHNcclxuICAgICAqL1xyXG4gICAgc2VsZWN0QWxsKHNlbGVjdDogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgICAgICBpZiAoc2VsZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hcHNob3Q/Lml0ZW1zPy5mb3JFYWNoKChuOiBhbnkpID0+IHRoaXMuc2VsZWN0aW9uPy5zZWxlY3Qobiwgbi5kb2N1bWVudElkKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zbmFwc2hvdD8uaXRlbXM/LmZvckVhY2goKG46IGFueSkgPT4gdGhpcy5zZWxlY3Rpb24/LmRlc2VsZWN0KG4sIG4uZG9jdW1lbnRJZCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogQ2hlY2sgaWYgc2VsZWN0aW9ucyBleGlzdHNcclxuICAgICogQHJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZWxlbWVudCBpcyBzZWxlY3RlZFxyXG4gICAgKi9cclxuICAgIGhhc0FueVNlbGVjdGlvbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA/PyAwKSA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENoZWNrIGlmIG9ubHkgb25lIGVsZW1lbnQgaXMgc2VsZWN0ZWRcclxuICAgICogQHJldHVybnMgdHJ1ZSBpZiBvbmx5IG9uZSBlbGVtZW50IGlzIHNlbGVjdGVkXHJcbiAgICAqL1xyXG4gICAgaGFzU2luZ2xlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID8/IDApID09PSAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBHZXQgdGhlIGZpcnN0IHNlbGVjdGVkIGl0ZW0gXHJcbiAgICAqIEByZXR1cm5zIHRoZSBzZWxlY3RlZCBpdGVtIG9yIG51bGwgICAgXHJcbiAgICAqL1xyXG4gICAgZ2V0U2luZ2xlU2VsZWN0aW9uKCk6IGFueSB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhhc0FueVNlbGVjdGlvbigpID8gdGhpcy5zZWxlY3Rpb24/LmFsbFswXSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICogQ2xlYXIgc2VsZWN0aW9uXHJcbiAgICAqL1xyXG4gICAgY2xlYXJTZWxlY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uPy5jbGVhcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGl0ZW1zIG9yIG51bGxcclxuICAgKiBAcmV0dXJucyBSZXR1cm4gdGhlIG51bWJlciBvZiBzZWxlY3RlZCBpdGVtc1xyXG4gICAqL1xyXG4gICAgY291bnRTZWxlY3Rpb25zKCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zZWxlY3Rpb24gJiYgdGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID4gMCkgPyB0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICogR2V0IHRoZSBzZWxlY3RlZCBpZFxyXG4gICovXHJcbiAgICBnZXRTZWxldGVjdElkKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbj8uYWxsWzBdLmRvY3VtZW50SWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gKiBHZXQgYWxsIHNlbGVjdGVkIGlkc1xyXG4gKi9cclxuICAgIGdldFNlbGV0ZWN0SWRzKCk6IHN0cmluZ1tdIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKCh0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggPz8gMCkgPiAxMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKCdMYSBzZWxlemlvbmUgbm9uIHB1w7IgY29udGVuZXJlIHBpw7kgZGkgMTAwIGVsZW1lbnRpLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGlkczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5oYXNBbnlTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbj8uYWxsPy5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlkcy5wdXNoKG4uZG9jdW1lbnRJZCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaWRzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGFsbCBzZWxlY3RlZCBpZHNcclxuICAgICAqL1xyXG4gICAgZ2V0U2VsZXRlY3RJZHNBbmREYXRhKCk6IGFueVtdIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKCh0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggPz8gMCkgPiAxMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKCdMYSBzZWxlemlvbmUgbm9uIHB1w7IgY29udGVuZXJlIHBpw7kgZGkgMTAwIGVsZW1lbnRpLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGRhdGE6IGFueSA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy5hbGw/LmZvckVhY2goKG46IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5wdXNoKHsgaWQ6IG4uZG9jdW1lbnRJZCwgZGF0YTogbiB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXBhcmUgcmVzdWx0IGl0ZW1zXHJcbiAgICAgKiBAcGFyYW0gaXRlbXMgOiB0aGUgaXRlbXMgdG8gcHJvY2Vzc1xyXG4gICAgICogQHBhcmFtIHBhcmFtcyA6IHRoZSBjdXJyZW50IHNlYXJjaCBwYXJhbXNcclxuICAgICAqL1xyXG4gICAgcHJlcGFyZVJlc3VsdEl0ZW1zKGl0ZW1zOiBDbGlwcGVyRG9jdW1lbnRJbmZvW10sIHBhcmFtczogQ2xpcHBlclNlYXJjaFBhcmFtcykge1xyXG4gICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZlRvZGF5KCk7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBCeVllYXIgPVxyXG4gICAgICAgICAgICAhcGFyYW1zLnNvcnRNb2RlIHx8XHJcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuRGF0ZUFzYyB8fFxyXG4gICAgICAgICAgICBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LkRhdGVEZXNjIHx8XHJcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuU291cmNlRGF0ZUFzYyB8fFxyXG4gICAgICAgICAgICBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LlNvdXJjZURhdGVEZXNjO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwQnlSZWxldmFuY2UgPSBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LlJlbGV2YW5jZTtcclxuICAgICAgICBjb25zdCBncm91cEJ5UG9wdWxhcml0eSA9IHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuUG9wdWxhcml0eTtcclxuICAgICAgICBsZXQgZ3JvdXAgPSAnJztcclxuICAgICAgICBpdGVtcz8uZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgbi5kb2N1bWVudElkID0gbi5kb2N1bWVudElkID8/IG4uaWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy51cGRhdGVDdXJyZW50KG4sIG4uZG9jdW1lbnRJZCk7XHJcbiAgICAgICAgICAgIGlmIChuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuUXVlc2l0aSkge1xyXG4gICAgICAgICAgICAgICAgbi5pbmZvID0gXCJRdWVzaXRvIG7CsCBcIiArIG4ubnVtYmVyICsgXCIgZGVsIFwiICsgU3lzdGVtVXRpbHMuZm9ybWF0RGF0ZShuLmRhdGUsIFwiZCBNTU0geXl5eVwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuU2NhZGVuemUgfHxcclxuICAgICAgICAgICAgICAgIG4ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5TZWduYWxhemlvbmkpIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAobi5tb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLlNjYWRlbnplOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuLm9yaWdpbkRlc2NyaXB0aW9uID0gJ1NjYWRlbnphJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuU2VnbmFsYXppb25pOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuLm9yaWdpbkRlc2NyaXB0aW9uID0gJ1NlZ25hbGF6aW9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG4uZXhwaXJpbmdJbmZvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnRzID0gbi5leHBpcmluZ0luZm8uc3BsaXQoJ3wnKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAzKSBuLmV4cGlyaW5nRGVzY3JpcHRpb24gPSBwYXJ0c1syXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLmV4cGlyaW5nRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi5leHBpcmluZ0RhdGUpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gc3RhcnRPZkRheShzdWJEYXlzKG4uZGF0ZSwgMTUpKTtcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJpbmcgPSB0b2RheSA8PSBuLmRhdGUgJiYgdG9kYXkgPj0gZDtcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJlZCA9IG4uZGF0ZSA8IHRvZGF5O1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICgobi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkFydGljb2xpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgbi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLk5ld3MpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgbi50YWdzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pbmZvID0gbi50YWdzLnRvVXBwZXJDYXNlKCkuc3Vic3RyaW5nKDEpLnJlcGxhY2VBbGwoXCIjXCIsIFwiLCBcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi5tb2RlbCAhPT0gQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8gJiZcclxuICAgICAgICAgICAgICAgICAgICBuLm1vZGVsICE9PSBDbGlwcGVyTW9kZWwuTm9ybWF0aXZhVmlnZW50ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG4ubW9kZWwgIT09IENsaXBwZXJNb2RlbC5KdXJpcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi5kYXRlID8/IG4ucHVibGlzaGluZ0RhdGUpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gc3RhcnRPZkRheShzdWJEYXlzKHN0YXJ0T2ZUb2RheSgpLCA3KSlcclxuICAgICAgICAgICAgICAgICAgICBuLmlzTmV3ID0gbi5kYXRlID4gZDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5kYXRlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLmFuY2hvcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYW5jaG9yVHlwZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFuY2hvcnM6IGFueSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uYW5jaG9ycy5mb3JFYWNoKChhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEudHlwZSA9PT0gMjApIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEudHlwZSAhPT0gYW5jaG9yVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEudHlwZSA+PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMucHVzaCh7IHRleHQ6IGEudHlwZURlc2NyaXB0aW9uIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yVHlwZSA9IGEudHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2NvcmUgPSBhLnNjb3JlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcmUgPiA3KSBzY29yZSAtPSA3O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzY29yZSA+IDUpIHNjb3JlIC09IDU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3JlID4gMykgc2NvcmUgLT0gMztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGEudGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRJZDogYS5kb2N1bWVudElkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpOiBhLnVyaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnlSZWxldmFudDogc2NvcmUgPiAwLjYsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uYW5jaG9ycyA9IGFuY2hvcnM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi52YWxpZGl0eVN0YXRlID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4udmFsaWRpdHlEZXNjcmlwdGlvbiA9ICdJbCBkb2N1bWVudG8gbm9uIMOoIHBpw7kgdmlnZW50ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuLnZhbGlkVW50aWxEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cGlyaW5nRGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi52YWxpZFVudGlsRGF0ZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwaXJpbmdEYXRlIDwgdG9kYXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4udmFsaWRpdHlEZXNjcmlwdGlvbiA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lsIGRvY3VtZW50byBub24gw6ggcGnDuSB2aWdlbnRlIGRhbCAnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKGV4cGlyaW5nRGF0ZSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4udmFsaWRpdHlEZXNjcmlwdGlvbiA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lsIGRvY3VtZW50byBub24gc2Fyw6AgcGnDuSB2aWdlbnRlIGRhbCAnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKGV4cGlyaW5nRGF0ZSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uaXNFeHBpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi5leHBpcmluZ0RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmRhdGUgPSBzdGFydE9mRGF5KG5ldyBEYXRlKG4uZXhwaXJpbmdEYXRlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IHN0YXJ0T2ZEYXkoc3ViRGF5cyhuLmRhdGUsIDE1KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyaW5nID0gdG9kYXkgPD0gbi5kYXRlICYmIHRvZGF5ID49IGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyZWQgPSBuLmRhdGUgPCB0b2RheTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZ3JvdXBCeVllYXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHllYXIgPSBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKG4uZGF0ZSA/PyBuLnB1Ymxpc2hpbmdEYXRlLCBEYXRlRm9ybWF0LkxvbmdNb250aEFuZFllYXIpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXAgIT09IHllYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmdyb3VwID0geWVhcjtcclxuICAgICAgICAgICAgICAgICAgICBncm91cCA9IHllYXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBCeVJlbGV2YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmdyb3VwID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0VsZW1lbnRpIHBpw7kgcmlsZXZhbnRpIHBlciBsYSByaWNlcmNhOiAnICsgcGFyYW1zLnRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBCeVBvcHVsYXJpdHkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChncm91cCAhPT0gJ25vbmUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5ncm91cCA9ICdFbGVtZW50aSBwacO5IHBvcG9sYXJpIGluIG9yZGluZSBkZWNyZXNjZW50ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVwYXJlIHJlc3VsdHNcclxuICAgICAqIEBwYXJhbSBkYXRhIDogdGhlIG9wdGlvbmFsIHJlc3VsdCBsaXN0IHRvIHByZXBhcmVcclxuICAgICAqIEBwYXJhbSBmYWNldHMgOiB0aGUgb3B0aW9uYWwgZmFjZXRzIGxpc3QgdG8gcHJlcGFyZVxyXG4gICAgICogQHBhcmFtIG1vbnRocyA6IHRoZSBvcHRpb25hbCBzbmFwc2hvdCBtb250aHMgXHJcbiAgICAgKiBAcGFyYW0gbW9udGggOiB0aGUgb3B0aW9uYWwgc25hcHNob3QgbW9udGhcclxuICAgICAqIEBwYXJhbSBkYXRlIDogdGhlIG9wdGluYWwgc25hcHNob3QgY3VycmVudCBkYXRlXHJcbiAgICAgKi9cclxuICAgIHByZXBhcmVSZXN1bHRzKFxyXG4gICAgICAgIGRhdGE/OiBDbGlwcGVyU2VhcmNoUmVzdWx0IHwgbnVsbCxcclxuICAgICAgICBmYWNldHM/OiBDbGlwcGVyU2VhcmNoRmFjZXRzUmVzdWx0IHwgbnVsbCxcclxuICAgICAgICBtb250aHM/OiBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJTbmFwc2hvdFJlc3VsdCB8IG51bGwsXHJcbiAgICAgICAgbW9udGg/OiBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJTbmFwc2hvdFJlc3VsdCB8IG51bGwsXHJcbiAgICAgICAgZGF0ZT86IERhdGUgfCBudWxsKSB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24/LmN1cnJlbnQuY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5zbmFwc2hvdCA9IGRhdGE7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNuYXBzaG90Lml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByZXBhcmVSZXN1bHRJdGVtcyh0aGlzLnNuYXBzaG90Lml0ZW1zLCB0aGlzLmZpbHRlclBhcmFtcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZhY2V0cyB8fCBtb250aHMgfHwgbW9udGgpIHtcclxuICAgICAgICAgICAgdGhpcy5oYXNGYWNldHMuc2V0KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5oYXNDYWxlbmRhci5zZXQoZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAoZmFjZXRzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhc0ZhY2V0cy5zZXQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhY2V0cz8udXBkYXRlKGZhY2V0cy5mYWNldHMsIGZhY2V0cy5pbnRlcnZhbCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNuYXBzaG90KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zbmFwc2hvdC5mYWNldHMgPSB0aGlzLmZhY2V0cy5zYXZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zbmFwc2hvdC5mYWNldHMuaGFzVG9vTWFueVJlc3VsdHMgPSB0aGlzLnNuYXBzaG90LnRvdGFsID49IDEwMDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobW9udGhzIHx8IG1vbnRoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhc0NhbGVuZGFyLnNldCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtb250aHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhcj8udXBkYXRlKG1vbnRocywgJ21vbnRocycsIGRhdGUgPz8gbmV3IERhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtb250aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyPy51cGRhdGUobW9udGgsICdtb250aCcsIGRhdGUgPz8gbmV3IERhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJldHVybiBpdGVtIHN0YXRlIGNzcyBjbGFzc1xyXG4gICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGV2YWx1YXRlXHJcbiAgICAqL1xyXG4gICAgZ2V0SXRlbVN0YXRlQ3NzQ2xhc3MoaXRlbTogYW55KTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXNFeHBpcmVkKSByZXR1cm4gJ2V4cGlyZWQtYmcnO1xyXG4gICAgICAgIGlmIChpdGVtLnBvcHVsYXJpdHkgPT09IDMpIHJldHVybiAncG9wdWxhci1iZyc7XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS5wb3B1bGFyaXR5ID4gMykgcmV0dXJuICd2ZXJ5LXBvcHVsYXItYmcnO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRoZSBpdGVtIHN0YXRlIHRvb2x0aXAgdGV4dFxyXG4gICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4gICAgICovXHJcbiAgICBnZXRJdGVtU3RhdGVUb29sdGlwKGl0ZW06IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXNFeHBpcmVkKSByZXR1cm4gJ05vbiBwacO5IHZpZ2VudGUnO1xyXG4gICAgICAgIGlmIChpdGVtLnBvcHVsYXJpdHkgPT09IDMpIHJldHVybiAnRG9jdW1lbnRvIGNvbiBudW1lcm8gZGkgY2l0YXppb25pIGFsdG8nO1xyXG4gICAgICAgIGVsc2UgaWYgKGl0ZW0ucG9wdWxhcml0eSA+IDMpXHJcbiAgICAgICAgICAgIHJldHVybiAnRG9jdW1lbnRvIGNvbiBudW1lcm8gZGkgY2l0YXppb25pIG1vbHRvIGFsdG8nO1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogUmV0dXJuIHRoZSBpdGVtIGljb25cclxuICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4gICAgKi9cclxuICAgIGdldEl0ZW1JY29uKGl0ZW06IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoIChpdGVtLm1vZGVsKSB7XHJcbiAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGU6IHJldHVybiAnZ2F2ZWwnO1xyXG4gICAgICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5BcnRpY29saTpcclxuICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuUXVlc2l0aTpcclxuICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuTWV0b2RpRGlBbmFsaXNpOiByZXR1cm4gJ2V4dGVuc2lvbic7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiAndXBkYXRlZCc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG9nZ2xlIHRoZSByZWFkIGZsYWdcclxuICAgICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gdXBkYXRlXHJcbiAgICAgKiBAcGFyYW4gZTogdGhlIG9wdGlvbmFsIGNsaWNrIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIHRvZ2dsZVJlYWQoaXRlbTogYW55LCBlOiBFdmVudCB8IG51bGwgPSBudWxsKSB7XHJcbiAgICAgICAgZT8ucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBlPy5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICB0aGlzLnNldFJlYWQoIWl0ZW0/LmlzUmVhZCwgaXRlbSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBUb2dnbGUgdGhlIHNlbGVjdGlvbiBmbGFnXHJcbiAgICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gdXBkYXRlXHJcbiAgICAqIEBwYXJhbiBlOiB0aGUgb3B0aW9uYWwgY2xpY2sgZXZlbnRcclxuICAgICovXHJcbiAgICB0b2dnbGVTZWxlY3Rpb24oaXRlbTogYW55LCBlOiBFdmVudCB8IG51bGwgPSBudWxsKSB7XHJcbiAgICAgICAgZT8ucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBlPy5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbj8udG9nZ2xlKGl0ZW0sIGl0ZW0uZG9jdW1lbnRJZClcclxuXHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBHZXQgdGhlIHNlbGVjdGVkIGlkXHJcbiAgICAqL1xyXG4gICAgc2V0UmVhZCh2YWx1ZTogYm9vbGVhbiwgaXRlbTogYW55ID0gbnVsbCkge1xyXG4gICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgIGl0ZW0uaXNSZWFkID0gdmFsdWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy5hbGw/LmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgICBuLmlzUmVhZCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8vXHJcbiAgICAvLyBSZXN0b3JhYmxlXHJcbiAgICAvLy9cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNhdmUgcmVzdG9yYWJsZSBkYXRhXHJcbiAgICAgKiBAcGFyYW0gaWQgOiB0aGUgcmVzdG9yYWJsZSBpZFxyXG4gICAgICogQHBhcmFtIHNjcm9sbCA6IHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvblxyXG4gICAgICovXHJcbiAgICBzYXZlKGlkOiBzdHJpbmcsIHNjcm9sbDogbnVtYmVyID0gMCkge1xyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICBwYWdpbmF0b3I6IHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2luYXRvcj8ucGFnZUluZGV4ID8/IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgdG90YWw6IHRoaXMuc25hcHNob3Q/LnRvdGFsID8/IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogdGhpcy5wYWdpbmF0b3I/LnBhZ2VTaXplID8/IDE1XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZmFjZXRzOiB0aGlzLmZhY2V0cz8uc2F2ZSgpLFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zOiB0aGlzLmZpbHRlclBhcmFtcyxcclxuICAgICAgICAgICAgICAgIHNjcm9sbDogc2Nyb2xsLFxyXG4gICAgICAgICAgICAgICAgc29ydDogeyBtb2RlOiB0aGlzLnNvcnRNb2RlLCBvcHRpb25zOiB0aGlzLnNvcnRPcHRpb25zIH0sXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLnNuYXBzaG90XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc3RvcmUgZGF0YVxyXG4gICAgICogQHBhcmFtIGlkIDogdGhlIHJlc3RvcmFibGUgaWRcclxuICAgICAqL1xyXG4gICAgcmVzdG9yZShpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oaWQpO1xyXG4gICAgICAgIGlmIChkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGQpO1xyXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMgPSBkYXRhLmZpbHRlclBhcmFtcztcclxuICAgICAgICAgICAgICAgIHRoaXMuc25hcHNob3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvcnRNb2RlID0gZGF0YS5zb3J0Lm1vZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0T3B0aW9ucyA9IGRhdGEuc29ydC5vcHRpb25zO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnNjcm9sbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbChkYXRhLnNjcm9sbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmZhY2V0cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZhY2V0cz8ucmVzdG9yZShkYXRhLmZhY2V0cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzRmFjZXRzLnNldChkYXRhLmZhY2V0cy5oYXNGYWNldHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gZGF0YS5wYWdpbmF0b3IucGFnZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZVNpemUgPSBkYXRhLnBhZ2luYXRvci5zaXplO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5sZW5ndGggPSBkYXRhLnBhZ2luYXRvci50b3RhbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKENsaXBwZXJNZXNzYWdlcy5DT01NQU5EX1NFQVJDSF9SRVNUT1JFRCwgZGF0YS5maWx0ZXJQYXJhbXMpXHJcbiAgICAgICAgICAgICAgICB9LCAyNTApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
492
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvc2VhcmNoLXJlc3VsdC1tYW5hZ2VyL3NlYXJjaC1yZXN1bHQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQWEsU0FBUyxFQUFFLE1BQU0sRUFDdkMsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3pELE9BQU8sRUFDSCxVQUFVLEVBQ0ssYUFBYSxFQUFtQixXQUFXLEVBQzdELE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUYsT0FBTyxFQUF1QixlQUFlLEVBQUUsWUFBWSxFQUFrRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFVbE8sTUFBTSxPQUFPLDBCQUNULFNBQVEsc0JBQXNCO0lBUGxDOztRQWNjLGdCQUFXLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFDakQsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztR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QUMvQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSw0QkFBNEIsRUFBRSw4QkFBOEIsQ0FBQztpQkFDbEc7OEJBSTJCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDRCxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0ksUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNZLFdBQVc7c0JBQTNDLFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBpbmplY3QsXHJcbiAgICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XHJcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7XHJcbiAgICBEYXRlRm9ybWF0LFxyXG4gICAgTmFtZVZhbHVlSXRlbSwgU2NyZWVuU2VydmljZSwgU2VsZWN0YWJsZU1vZGVsLCBTeXN0ZW1VdGlsc1xyXG59IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3RhcnRPZkRheSwgc3RhcnRPZlRvZGF5LCBzdWJEYXlzIH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5pbXBvcnQgeyBDbGlwcGVyRG9jdW1lbnRNYW5hZ2VyIH0gZnJvbSAnLi4vZG9jdW1lbnQtbWFuYWdlci9kb2N1bWVudC1tYW5hZ2VyJztcclxuaW1wb3J0IHsgQ2xpcHBlclNlYXJjaEZhY2V0c0NvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC1mYWNldHMvc2VhcmNoLWZhY2V0cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtY2FsZW5kYXIvc2VhcmNoLWNhbGVuZGFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudEluZm8sIENsaXBwZXJNZXNzYWdlcywgQ2xpcHBlck1vZGVsLCBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJTbmFwc2hvdFJlc3VsdCwgQ2xpcHBlclNlYXJjaEZhY2V0c1Jlc3VsdCwgQ2xpcHBlclNlYXJjaFBhcmFtcywgQ2xpcHBlclNlYXJjaFJlc3VsdCwgQ2xpcHBlclNvcnQgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NsaXBwZXIuY29tbW9uJztcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICB0ZW1wbGF0ZTogJzxkaXY+PC9kaXY+JyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGltcG9ydHM6IFtDbGlwcGVyRG9jdW1lbnRNYW5hZ2VyLCBDbGlwcGVyU2VhcmNoRmFjZXRzQ29tcG9uZW50LCBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJDb21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xpcHBlclNlYXJjaFJlc3VsdE1hbmFnZXJcclxuICAgIGV4dGVuZHMgQ2xpcHBlckRvY3VtZW50TWFuYWdlclxyXG4gICAgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgQFZpZXdDaGlsZCgncGFnaW5hdG9yJykgcGFnaW5hdG9yITogTWF0UGFnaW5hdG9yO1xyXG4gICAgQFZpZXdDaGlsZCgnZmFjZXRzJykgZmFjZXRzITogQ2xpcHBlclNlYXJjaEZhY2V0c0NvbXBvbmVudDtcclxuICAgIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyJykgY2FsZW5kYXIhOiBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJDb21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdjb250ZXh0TWVudVRyaWdnZXInKSBjb250ZXh0TWVudSE6IE1hdE1lbnVUcmlnZ2VyO1xyXG5cclxuICAgIHByb3RlY3RlZCB1bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgcHJvdGVjdGVkIGJyZWFrcG9pbnRPYnNlcnZlciA9IGluamVjdChCcmVha3BvaW50T2JzZXJ2ZXIpO1xyXG4gICAgcHVibGljIHNjcmVlblNlcnZpY2UgPSBpbmplY3QoU2NyZWVuU2VydmljZSk7XHJcbiAgICBwdWJsaWMgc2VsZWN0aW9uOiBTZWxlY3RhYmxlTW9kZWw8YW55LCBzdHJpbmc+IHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcm90ZWN0ZWQgc25hcHNob3Q6IENsaXBwZXJTZWFyY2hSZXN1bHQgfCBudWxsID0gbmV3IENsaXBwZXJTZWFyY2hSZXN1bHQoKTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJCdXN5ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJQYXJhbXM6IENsaXBwZXJTZWFyY2hQYXJhbXMgPSBuZXcgQ2xpcHBlclNlYXJjaFBhcmFtcygpO1xyXG4gICAgcHJvdGVjdGVkIGZpbHRlclBhbmVIYXNCYWNrZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIGZpbHRlclBhbmVDbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJQYW5lMkhhc0JhY2tkcm9wOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyUGFuZTJDbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByb3RlY3RlZCBzb3J0T3B0aW9uczogTmFtZVZhbHVlSXRlbTxudW1iZXI+W10gPSBbXTtcclxuICAgIHByb3RlY3RlZCBzb3J0TW9kZTogTmFtZVZhbHVlSXRlbTxudW1iZXI+IHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcm90ZWN0ZWQgc2Nyb2xsZXJJZDogc3RyaW5nID0gJ3Njcm9sbGVyXycgKyBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKTtcclxuICAgIHByb3RlY3RlZCByZXN0b3JhYmxlSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvdGVjdGVkIGNvbnRleHRNZW51UG9zaXRpb24gPSB7IHg6ICcwcHgnLCB5OiAnMHB4JyB9O1xyXG4gICAgcHJvdGVjdGVkIGhhc0ZhY2V0cyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcm90ZWN0ZWQgaGFzQ2FsZW5kYXIgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHJvdGVjdGVkIGhhc1JlZ2lvbnMgPSAoKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLmZpbHRlclBhcmFtcy5zZWN0b3JzPy5maWx0ZXIobiA9PiBuLnZhbHVlID09PSAnTFInKS5sZW5ndGggPz8gMCkgPiAwO1xyXG4gICAgfTtcclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgb25Db250ZXh0TWVudShldmVudDogTW91c2VFdmVudCwgaXRlbTogYW55KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLmNvbnRleHRNZW51UG9zaXRpb24ueCA9IGV2ZW50LmNsaWVudFggKyAncHgnO1xyXG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbi55ID0gZXZlbnQuY2xpZW50WSArICdweCc7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudS5tZW51RGF0YSA9IHsgaXRlbTogaXRlbSB9O1xyXG4gICAgICAgIHRoaXMuY29udGV4dE1lbnUub3Blbk1lbnUoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgbWVudSBidXR0b25zIHZpc2liaWxpdHkgd2hlbiB0aGUgbWVudSBpcyBjbG9zZWRcclxuICAgICAqL1xyXG4gICAgdXBkYXRlTWVudUJ1dHRvbnNWaXNpYmlsaXR5KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNuYXBzaG90KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hcHNob3QuaXRlbXM/LmZvckVhY2goKG46IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbi5pc01lbnVPcGVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNjcm9sbCBvbiB0b3AgbyBsaXN0IGFyZWFcclxuICAgICAqIEBwYXJhbSB0b3A6IHRoZSB0b3AgcG9zaXRpb25cclxuICAgICAqL1xyXG4gICAgc2Nyb2xsKHRvcDogbnVtYmVyID0gMCkge1xyXG4gICAgICAgIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLnNjcm9sbGVySWQpO1xyXG4gICAgICAgIGlmIChlbGVtKSB7XHJcbiAgICAgICAgICAgIGVsZW0uc2Nyb2xsVG8oeyB0b3A6IHRvcCwgbGVmdDogMCwgYmVoYXZpb3I6ICdhdXRvJyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVjayBpZiBldmVyeSBlbGVtZW50IGFyZSBzZWxlY3RlZFxyXG4gICAgICovXHJcbiAgICBhbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24/LmN1cnJlbnQ/LnNlbGVjdGVkPy5sZW5ndGggPT09IHRoaXMuc25hcHNob3Q/Lml0ZW1zPy5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXN0ZXIgc2VsZWN0aW9uIHRvZ2dsZVxyXG4gICAgICogQHBhcmFtIHNlbGVjdDogdHJ1ZSB0byBzZWxlY3QgYWxsIGVsZW1lbnRzIGZhbHNlIHRvIGRlc2VsZWN0IGFsbCBlbGVtZW50c1xyXG4gICAgICovXHJcbiAgICBzZWxlY3RBbGwoc2VsZWN0OiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgICAgIGlmIChzZWxlY3QpIHtcclxuICAgICAgICAgICAgdGhpcy5zbmFwc2hvdD8uaXRlbXM/LmZvckVhY2goKG46IGFueSkgPT4gdGhpcy5zZWxlY3Rpb24/LnNlbGVjdChuLCBuLmRvY3VtZW50SWQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBzaG90Py5pdGVtcz8uZm9yRWFjaCgobjogYW55KSA9PiB0aGlzLnNlbGVjdGlvbj8uZGVzZWxlY3Qobiwgbi5kb2N1bWVudElkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDaGVjayBpZiBzZWxlY3Rpb25zIGV4aXN0c1xyXG4gICAgKiBAcmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSBlbGVtZW50IGlzIHNlbGVjdGVkXHJcbiAgICAqL1xyXG4gICAgaGFzQW55U2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID8/IDApID4gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogQ2hlY2sgaWYgb25seSBvbmUgZWxlbWVudCBpcyBzZWxlY3RlZFxyXG4gICAgKiBAcmV0dXJucyB0cnVlIGlmIG9ubHkgb25lIGVsZW1lbnQgaXMgc2VsZWN0ZWRcclxuICAgICovXHJcbiAgICBoYXNTaW5nbGVTZWxlY3Rpb24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggPz8gMCkgPT09IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEdldCB0aGUgZmlyc3Qgc2VsZWN0ZWQgaXRlbSBcclxuICAgICogQHJldHVybnMgdGhlIHNlbGVjdGVkIGl0ZW0gb3IgbnVsbCAgICBcclxuICAgICovXHJcbiAgICBnZXRTaW5nbGVTZWxlY3Rpb24oKTogYW55IHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQW55U2VsZWN0aW9uKCkgPyB0aGlzLnNlbGVjdGlvbj8uYWxsWzBdIDogbnVsbDtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDbGVhciBzZWxlY3Rpb25cclxuICAgICovXHJcbiAgICBjbGVhclNlbGVjdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24/LmNsZWFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICogUmV0dXJuIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgaXRlbXMgb3IgbnVsbFxyXG4gICAqIEByZXR1cm5zIFJldHVybiB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGl0ZW1zXHJcbiAgICovXHJcbiAgICBjb3VudFNlbGVjdGlvbnMoKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnNlbGVjdGlvbiAmJiB0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggPiAwKSA/IHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgKiBHZXQgdGhlIHNlbGVjdGVkIGlkXHJcbiAgKi9cclxuICAgIGdldFNlbGV0ZWN0SWQoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzQW55U2VsZWN0aW9uKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uPy5hbGxbMF0uZG9jdW1lbnRJZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAqIEdldCBhbGwgc2VsZWN0ZWQgaWRzXHJcbiAqL1xyXG4gICAgZ2V0U2VsZXRlY3RJZHMoKTogc3RyaW5nW10gfCBudWxsIHtcclxuICAgICAgICBpZiAoKHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA/PyAwKSA+IDEwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3IoJ0xhIHNlbGV6aW9uZSBub24gcHXDsiBjb250ZW5lcmUgcGnDuSBkaSAxMDAgZWxlbWVudGkuJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy5hbGw/LmZvckVhY2goKG46IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWRzLnB1c2gobi5kb2N1bWVudElkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpZHM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgYWxsIHNlbGVjdGVkIGlkc1xyXG4gICAgICovXHJcbiAgICBnZXRTZWxldGVjdElkc0FuZERhdGEoKTogYW55W10gfCBudWxsIHtcclxuICAgICAgICBpZiAoKHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA/PyAwKSA+IDEwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3IoJ0xhIHNlbGV6aW9uZSBub24gcHXDsiBjb250ZW5lcmUgcGnDuSBkaSAxMDAgZWxlbWVudGkuJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZGF0YTogYW55ID0gW107XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzQW55U2VsZWN0aW9uKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24/LmFsbD8uZm9yRWFjaCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLnB1c2goeyBpZDogbi5kb2N1bWVudElkLCBkYXRhOiBuIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlcGFyZSByZXN1bHQgaXRlbXNcclxuICAgICAqIEBwYXJhbSBpdGVtcyA6IHRoZSBpdGVtcyB0byBwcm9jZXNzXHJcbiAgICAgKiBAcGFyYW0gcGFyYW1zIDogdGhlIGN1cnJlbnQgc2VhcmNoIHBhcmFtc1xyXG4gICAgICovXHJcbiAgICBwcmVwYXJlUmVzdWx0SXRlbXMoaXRlbXM6IENsaXBwZXJEb2N1bWVudEluZm9bXSwgcGFyYW1zOiBDbGlwcGVyU2VhcmNoUGFyYW1zKSB7XHJcbiAgICAgICAgY29uc3QgdG9kYXkgPSBzdGFydE9mVG9kYXkoKTtcclxuICAgICAgICBjb25zdCBncm91cEJ5WWVhciA9XHJcbiAgICAgICAgICAgICFwYXJhbXMuc29ydE1vZGUgfHxcclxuICAgICAgICAgICAgcGFyYW1zLnNvcnRNb2RlID09PSBDbGlwcGVyU29ydC5EYXRlQXNjIHx8XHJcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuRGF0ZURlc2MgfHxcclxuICAgICAgICAgICAgcGFyYW1zLnNvcnRNb2RlID09PSBDbGlwcGVyU29ydC5Tb3VyY2VEYXRlQXNjIHx8XHJcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuU291cmNlRGF0ZURlc2M7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBCeVJlbGV2YW5jZSA9IHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuUmVsZXZhbmNlO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwQnlQb3B1bGFyaXR5ID0gcGFyYW1zLnNvcnRNb2RlID09PSBDbGlwcGVyU29ydC5Qb3B1bGFyaXR5O1xyXG4gICAgICAgIGxldCBncm91cCA9ICcnO1xyXG4gICAgICAgIGl0ZW1zPy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgICAgICBuLmRvY3VtZW50SWQgPSBuLmRvY3VtZW50SWQgPz8gbi5pZDtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24/LnVwZGF0ZUN1cnJlbnQobiwgbi5kb2N1bWVudElkKTtcclxuICAgICAgICAgICAgaWYgKG4ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5RdWVzaXRpKSB7XHJcbiAgICAgICAgICAgICAgICBuLmluZm8gPSBcIlF1ZXNpdG8gbsKwIFwiICsgbi5udW1iZXIgKyBcIiBkZWwgXCIgKyBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKG4uZGF0ZSwgXCJkIE1NTSB5eXl5XCIpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG4ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5TY2FkZW56ZSB8fFxyXG4gICAgICAgICAgICAgICAgbi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLlNlZ25hbGF6aW9uaSkge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChuLm1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuU2NhZGVuemU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG4ub3JpZ2luRGVzY3JpcHRpb24gPSAnU2NhZGVuemEnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5TZWduYWxhemlvbmk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG4ub3JpZ2luRGVzY3JpcHRpb24gPSAnU2VnbmFsYXppb25lJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi5leHBpcmluZ0luZm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcGFydHMgPSBuLmV4cGlyaW5nSW5mby5zcGxpdCgnfCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDMpIG4uZXhwaXJpbmdEZXNjcmlwdGlvbiA9IHBhcnRzWzJdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG4uZXhwaXJpbmdEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5kYXRlID0gc3RhcnRPZkRheShuZXcgRGF0ZShuLmV4cGlyaW5nRGF0ZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBzdGFydE9mRGF5KHN1YkRheXMobi5kYXRlLCAxNSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uaXNFeHBpcmluZyA9IHRvZGF5IDw9IG4uZGF0ZSAmJiB0b2RheSA+PSBkO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uaXNFeHBpcmVkID0gbi5kYXRlIDwgdG9kYXk7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKChuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuQXJ0aWNvbGkgfHxcclxuICAgICAgICAgICAgICAgICAgICBuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuTmV3cykgJiZcclxuICAgICAgICAgICAgICAgICAgICBuLnRhZ3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmluZm8gPSBuLnRhZ3MudG9VcHBlckNhc2UoKS5zdWJzdHJpbmcoMSkucmVwbGFjZUFsbChcIiNcIiwgXCIsIFwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLm1vZGVsICE9PSBDbGlwcGVyTW9kZWwuQWdnaW9ybmFtZW50b05vcm1hdGl2byAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG4ubW9kZWwgIT09IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgbi5tb2RlbCAhPT0gQ2xpcHBlck1vZGVsLkp1cmlzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgbi5kYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5kYXRlID0gc3RhcnRPZkRheShuZXcgRGF0ZShuLmRhdGUgPz8gbi5wdWJsaXNoaW5nRGF0ZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBzdGFydE9mRGF5KHN1YkRheXMoc3RhcnRPZlRvZGF5KCksIDcpKVxyXG4gICAgICAgICAgICAgICAgICAgIG4uaXNOZXcgPSBuLmRhdGUgPiBkO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmRhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG4uYW5jaG9ycykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBhbmNob3JUeXBlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYW5jaG9yczogYW55ID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgbi5hbmNob3JzLmZvckVhY2goKGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYS50eXBlID09PSAyMCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYS50eXBlICE9PSBhbmNob3JUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYS50eXBlID49IDMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5wdXNoKHsgdGV4dDogYS50eXBlRGVzY3JpcHRpb24gfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JUeXBlID0gYS50eXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY29yZSA9IGEuc2NvcmU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29yZSA+IDcpIHNjb3JlIC09IDc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3JlID4gNSkgc2NvcmUgLT0gNTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcmUgPiAzKSBzY29yZSAtPSAzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogYS50ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGEudGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudElkOiBhLmRvY3VtZW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmk6IGEudXJpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyeVJlbGV2YW50OiBzY29yZSA+IDAuNixcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5hbmNob3JzID0gYW5jaG9ycztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLnZhbGlkaXR5U3RhdGUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi52YWxpZGl0eURlc2NyaXB0aW9uID0gJ0lsIGRvY3VtZW50byBub24gw6ggcGnDuSB2aWdlbnRlJztcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG4udmFsaWRVbnRpbERhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwaXJpbmdEYXRlID0gc3RhcnRPZkRheShuZXcgRGF0ZShuLnZhbGlkVW50aWxEYXRlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBpcmluZ0RhdGUgPCB0b2RheSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbi52YWxpZGl0eURlc2NyaXB0aW9uID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSWwgZG9jdW1lbnRvIG5vbiDDqCBwacO5IHZpZ2VudGUgZGFsICcgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbVV0aWxzLmZvcm1hdERhdGUoZXhwaXJpbmdEYXRlKSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbi52YWxpZGl0eURlc2NyaXB0aW9uID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSWwgZG9jdW1lbnRvIG5vbiBzYXLDoCBwacO5IHZpZ2VudGUgZGFsICcgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbVV0aWxzLmZvcm1hdERhdGUoZXhwaXJpbmdEYXRlKSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLmV4cGlyaW5nRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi5leHBpcmluZ0RhdGUpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gc3RhcnRPZkRheShzdWJEYXlzKG4uZGF0ZSwgMTUpKTtcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJpbmcgPSB0b2RheSA8PSBuLmRhdGUgJiYgdG9kYXkgPj0gZDtcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJlZCA9IG4uZGF0ZSA8IHRvZGF5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChncm91cEJ5WWVhcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeWVhciA9IFN5c3RlbVV0aWxzLmZvcm1hdERhdGUobi5kYXRlID8/IG4ucHVibGlzaGluZ0RhdGUsIERhdGVGb3JtYXQuTG9uZ01vbnRoQW5kWWVhcikudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgIGlmIChncm91cCAhPT0geWVhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZ3JvdXAgPSB5ZWFyO1xyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwID0geWVhcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChncm91cEJ5UmVsZXZhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXAgIT09ICdub25lJykge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZ3JvdXAgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnRWxlbWVudGkgcGnDuSByaWxldmFudGkgcGVyIGxhIHJpY2VyY2E6ICcgKyBwYXJhbXMudGV4dDtcclxuICAgICAgICAgICAgICAgICAgICBncm91cCA9ICdub25lJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChncm91cEJ5UG9wdWxhcml0eSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmdyb3VwID0gJ0VsZW1lbnRpIHBpw7kgcG9wb2xhcmkgaW4gb3JkaW5lIGRlY3Jlc2NlbnRlJztcclxuICAgICAgICAgICAgICAgICAgICBncm91cCA9ICdub25lJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXBhcmUgcmVzdWx0c1xyXG4gICAgICogQHBhcmFtIGRhdGEgOiB0aGUgb3B0aW9uYWwgcmVzdWx0IGxpc3QgdG8gcHJlcGFyZVxyXG4gICAgICogQHBhcmFtIGZhY2V0cyA6IHRoZSBvcHRpb25hbCBmYWNldHMgbGlzdCB0byBwcmVwYXJlXHJcbiAgICAgKiBAcGFyYW0gbW9udGhzIDogdGhlIG9wdGlvbmFsIHNuYXBzaG90IG1vbnRocyBcclxuICAgICAqIEBwYXJhbSBtb250aCA6IHRoZSBvcHRpb25hbCBzbmFwc2hvdCBtb250aFxyXG4gICAgICogQHBhcmFtIGRhdGUgOiB0aGUgb3B0aW5hbCBzbmFwc2hvdCBjdXJyZW50IGRhdGVcclxuICAgICAqL1xyXG4gICAgcHJlcGFyZVJlc3VsdHMoXHJcbiAgICAgICAgZGF0YT86IENsaXBwZXJTZWFyY2hSZXN1bHQgfCBudWxsLFxyXG4gICAgICAgIGZhY2V0cz86IENsaXBwZXJTZWFyY2hGYWNldHNSZXN1bHQgfCBudWxsLFxyXG4gICAgICAgIG1vbnRocz86IENsaXBwZXJTZWFyY2hDYWxlbmRhclNuYXBzaG90UmVzdWx0IHwgbnVsbCxcclxuICAgICAgICBtb250aD86IENsaXBwZXJTZWFyY2hDYWxlbmRhclNuYXBzaG90UmVzdWx0IHwgbnVsbCxcclxuICAgICAgICBkYXRlPzogRGF0ZSB8IG51bGwpIHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbj8uY3VycmVudC5jbGVhcigpO1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBzaG90ID0gZGF0YTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc25hcHNob3QuaXRlbXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJlcGFyZVJlc3VsdEl0ZW1zKHRoaXMuc25hcHNob3QuaXRlbXMsIHRoaXMuZmlsdGVyUGFyYW1zKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmFjZXRzIHx8IG1vbnRocyB8fCBtb250aCkge1xyXG4gICAgICAgICAgICB0aGlzLmhhc0ZhY2V0cy5zZXQoZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmhhc0NhbGVuZGFyLnNldChmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChmYWNldHMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFzRmFjZXRzLnNldCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmFjZXRzPy51cGRhdGUoZmFjZXRzLmZhY2V0cywgZmFjZXRzLmludGVydmFsKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc25hcHNob3QpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cyA9IHRoaXMuZmFjZXRzLnNhdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cy5oYXNUb29NYW55UmVzdWx0cyA9IHRoaXMuc25hcHNob3QudG90YWwgPj0gMTAwMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChtb250aHMgfHwgbW9udGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFzQ2FsZW5kYXIuc2V0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vbnRocykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyPy51cGRhdGUobW9udGhzLCAnbW9udGhzJywgZGF0ZSA/PyBuZXcgRGF0ZSgpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vbnRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXI/LnVwZGF0ZShtb250aCwgJ21vbnRoJywgZGF0ZSA/PyBuZXcgRGF0ZSgpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogUmV0dXJuIGl0ZW0gc3RhdGUgY3NzIGNsYXNzXHJcbiAgICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gZXZhbHVhdGVcclxuICAgICovXHJcbiAgICBnZXRJdGVtU3RhdGVDc3NDbGFzcyhpdGVtOiBhbnkpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBpZiAoaXRlbS5pc0V4cGlyZWQpIHJldHVybiAnZXhwaXJlZC1iZyc7XHJcbiAgICAgICAgaWYgKGl0ZW0ucG9wdWxhcml0eSA9PT0gMykgcmV0dXJuICdwb3B1bGFyLWJnJztcclxuICAgICAgICBlbHNlIGlmIChpdGVtLnBvcHVsYXJpdHkgPiAzKSByZXR1cm4gJ3ZlcnktcG9wdWxhci1iZyc7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm4gdGhlIGl0ZW0gc3RhdGUgdG9vbHRpcCB0ZXh0XHJcbiAgICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGV2YWx1YXRlXHJcbiAgICAgKi9cclxuICAgIGdldEl0ZW1TdGF0ZVRvb2x0aXAoaXRlbTogYW55KTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoaXRlbS5pc0V4cGlyZWQpIHJldHVybiAnTm9uIHBpw7kgdmlnZW50ZSc7XHJcbiAgICAgICAgaWYgKGl0ZW0ucG9wdWxhcml0eSA9PT0gMykgcmV0dXJuICdEb2N1bWVudG8gY29uIG51bWVybyBkaSBjaXRhemlvbmkgYWx0byc7XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS5wb3B1bGFyaXR5ID4gMylcclxuICAgICAgICAgICAgcmV0dXJuICdEb2N1bWVudG8gY29uIG51bWVybyBkaSBjaXRhemlvbmkgbW9sdG8gYWx0byc7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBSZXR1cm4gdGhlIGl0ZW0gaWNvblxyXG4gICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGV2YWx1YXRlXHJcbiAgICAqL1xyXG4gICAgZ2V0SXRlbUljb24oaXRlbTogYW55KTogc3RyaW5nIHtcclxuICAgICAgICBzd2l0Y2ggKGl0ZW0ubW9kZWwpIHtcclxuICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuTm9ybWF0aXZhVmlnZW50ZTogcmV0dXJuICdnYXZlbCc7XHJcbiAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLkFydGljb2xpOlxyXG4gICAgICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5RdWVzaXRpOlxyXG4gICAgICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5NZXRvZGlEaUFuYWxpc2k6IHJldHVybiAnZXh0ZW5zaW9uJztcclxuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuICd1cGRhdGVkJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUb2dnbGUgdGhlIHJlYWQgZmxhZ1xyXG4gICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byB1cGRhdGVcclxuICAgICAqIEBwYXJhbiBlOiB0aGUgb3B0aW9uYWwgY2xpY2sgZXZlbnRcclxuICAgICAqL1xyXG4gICAgdG9nZ2xlUmVhZChpdGVtOiBhbnksIGU6IEV2ZW50IHwgbnVsbCA9IG51bGwpIHtcclxuICAgICAgICBlPy5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGU/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuc2V0UmVhZCghaXRlbT8uaXNSZWFkLCBpdGVtKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFRvZ2dsZSB0aGUgc2VsZWN0aW9uIGZsYWdcclxuICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byB1cGRhdGVcclxuICAgICogQHBhcmFuIGU6IHRoZSBvcHRpb25hbCBjbGljayBldmVudFxyXG4gICAgKi9cclxuICAgIHRvZ2dsZVNlbGVjdGlvbihpdGVtOiBhbnksIGU6IEV2ZW50IHwgbnVsbCA9IG51bGwpIHtcclxuICAgICAgICBlPy5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGU/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uPy50b2dnbGUoaXRlbSwgaXRlbS5kb2N1bWVudElkKVxyXG5cclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEdldCB0aGUgc2VsZWN0ZWQgaWRcclxuICAgICovXHJcbiAgICBzZXRSZWFkKHZhbHVlOiBib29sZWFuLCBpdGVtOiBhbnkgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgaXRlbS5pc1JlYWQgPSB2YWx1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzQW55U2VsZWN0aW9uKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24/LmFsbD8uZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgICAgIG4uaXNSZWFkID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLy9cclxuICAgIC8vIFJlc3RvcmFibGVcclxuICAgIC8vL1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2F2ZSByZXN0b3JhYmxlIGRhdGFcclxuICAgICAqIEBwYXJhbSBpZCA6IHRoZSByZXN0b3JhYmxlIGlkXHJcbiAgICAgKiBAcGFyYW0gc2Nyb2xsIDogdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uXHJcbiAgICAgKi9cclxuICAgIHNhdmUoaWQ6IHN0cmluZywgc2Nyb2xsOiBudW1iZXIgPSAwKSB7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgIHBhZ2luYXRvcjoge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnaW5hdG9yPy5wYWdlSW5kZXggPz8gMCxcclxuICAgICAgICAgICAgICAgICAgICB0b3RhbDogdGhpcy5zbmFwc2hvdD8udG90YWwgPz8gMCxcclxuICAgICAgICAgICAgICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvcj8ucGFnZVNpemUgPz8gMTVcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmYWNldHM6IHRoaXMuZmFjZXRzPy5zYXZlKCksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXM6IHRoaXMuZmlsdGVyUGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgc2Nyb2xsOiBzY3JvbGwsXHJcbiAgICAgICAgICAgICAgICBzb3J0OiB7IG1vZGU6IHRoaXMuc29ydE1vZGUsIG9wdGlvbnM6IHRoaXMuc29ydE9wdGlvbnMgfSxcclxuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMuc25hcHNob3RcclxuICAgICAgICAgICAgICAgICAgICA/IHsgaXRlbXM6IHRoaXMuc25hcHNob3QuaXRlbXMsIHRvdGFsOiB0aGlzLnNuYXBzaG90LnRvdGFsIH1cclxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzdG9yZSBkYXRhXHJcbiAgICAgKiBAcGFyYW0gaWQgOiB0aGUgcmVzdG9yYWJsZSBpZFxyXG4gICAgICovXHJcbiAgICByZXN0b3JlKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShpZCk7XHJcbiAgICAgICAgaWYgKGQpIHtcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZCk7XHJcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcyA9IGRhdGEuZmlsdGVyUGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zbmFwc2hvdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydE1vZGUgPSBkYXRhLnNvcnQubW9kZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvcnRPcHRpb25zID0gZGF0YS5zb3J0Lm9wdGlvbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2Nyb2xsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsKGRhdGEuc2Nyb2xsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZmFjZXRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmFjZXRzPy5yZXN0b3JlKGRhdGEuZmFjZXRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNGYWNldHMuc2V0KGRhdGEuZmFjZXRzLmhhc0ZhY2V0cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggPSBkYXRhLnBhZ2luYXRvci5wYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSA9IGRhdGEucGFnaW5hdG9yLnNpemU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmxlbmd0aCA9IGRhdGEucGFnaW5hdG9yLnRvdGFsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLkNPTU1BTkRfU0VBUkNIX1JFU1RPUkVELCBkYXRhLmZpbHRlclBhcmFtcylcclxuICAgICAgICAgICAgICAgIH0sIDI1MCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
@@ -63,6 +63,7 @@ export class ButtonSelectorComponent {
63
63
  constructor(ngControl) {
64
64
  this.ngControl = ngControl;
65
65
  this.changed = new EventEmitter();
66
+ this.selected = new EventEmitter();
66
67
  this.stateChanges = new Subject();
67
68
  this.focused = false;
68
69
  this._value = [];
@@ -132,6 +133,7 @@ export class ButtonSelectorComponent {
132
133
  */
133
134
  select(item) {
134
135
  this.writeValue([item]);
136
+ this.selected.emit(item);
135
137
  }
136
138
  /**
137
139
  * Reset value
@@ -140,7 +142,7 @@ export class ButtonSelectorComponent {
140
142
  this.writeValue(null);
141
143
  }
142
144
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ButtonSelectorComponent, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
143
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ButtonSelectorComponent, isStandalone: true, selector: "button-selector", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, borderRadius: { classPropertyName: "borderRadius", publicName: "borderRadius", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelSelected: { classPropertyName: "labelSelected", publicName: "labelSelected", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, autoSelect: { classPropertyName: "autoSelect", publicName: "autoSelect", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed" }, host: { properties: { "id": "this.id", "attr.aria-describedBy": "this.describedBy" } }, ngImport: i0, template: "<button mat-stroked-button class=\"menu-selector-button\" [ngStyle]=\"{\r\n 'border': border() >= 0 ? border() : 'auto',\r\n 'border-radius': borderRadius(),\r\n 'height': border() <= 0 ? '40px' : 'auto',\r\n 'min-width': width() > 0 ? width()+'px' : (width() === -1 ? '100%' : 'auto')\r\n}\" [attr.aria-label]=\"label()\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"100\" fxFlexAlign=\"center\">\r\n @if(current) {\r\n <div class=\"truncated\" style=\"text-align: left;\"\r\n [ngStyle]=\"{'min-width': width() > 0 ? width()+'px' : (width() === -1 ? '100%' : 'auto')}\">\r\n <div class=\"x-small \">{{labelSelected() ?? label()}}</div>\r\n <div class=\"small\" style=\"margin-top:2px\">{{current.shortName ?? current.name}}</div>\r\n </div>\r\n } @else {\r\n <div class=\"truncated\" style=\"text-align: left;\"\r\n [ngStyle]=\"{'min-width': width() > 0 ? width()+'px' : (width() === -1 ? '100%' : 'auto')}\">\r\n {{label()}}</div>\r\n }\r\n </div>\r\n <div fxLayoutAlign=\"end\" fxFlexAlign=\"center\">\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </div>\r\n </div>\r\n</button>\r\n<mat-menu #optionsMenu=\"matMenu\" xPosition=\"before\">\r\n @for (o of options(); track o.value) {\r\n <button mat-menu-item (click)=\"select(o)\">\r\n {{o.name}}\r\n @if(o.bag) {\r\n ({{o.bag}})\r\n }\r\n </button>\r\n }\r\n</mat-menu>", styles: [".menu-selector-button{padding:0 10px 0 20px!important;border-radius:9999px!important}.menu-selector-button .in-search-bar{height:56px!important;padding:0 20px!important;border-top-left-radius:0!important;border-bottom-left-radius:0!important}::ng-deep .menu-selector-button>.mdc-button__label{width:100%!important}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i2.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: ExtendedModule }, { kind: "directive", type: i3.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
145
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ButtonSelectorComponent, isStandalone: true, selector: "button-selector", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, borderRadius: { classPropertyName: "borderRadius", publicName: "borderRadius", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelSelected: { classPropertyName: "labelSelected", publicName: "labelSelected", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, autoSelect: { classPropertyName: "autoSelect", publicName: "autoSelect", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed", selected: "selected" }, host: { properties: { "id": "this.id", "attr.aria-describedBy": "this.describedBy" } }, ngImport: i0, template: "<button mat-stroked-button class=\"menu-selector-button\" [ngStyle]=\"{\r\n 'border': border() >= 0 ? border() : 'auto',\r\n 'border-radius': borderRadius(),\r\n 'height': border() <= 0 ? '40px' : 'auto',\r\n 'min-width': width() > 0 ? width()+'px' : (width() === -1 ? '100%' : 'auto')\r\n}\" [attr.aria-label]=\"label()\" [matMenuTriggerFor]=\"optionsMenu\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"100\" fxFlexAlign=\"center\">\r\n @if(current) {\r\n <div class=\"truncated\" style=\"text-align: left;\"\r\n [ngStyle]=\"{'min-width': width() > 0 ? width()+'px' : (width() === -1 ? '100%' : 'auto')}\">\r\n <div class=\"x-small \">{{labelSelected() ?? label()}}</div>\r\n <div class=\"small\" style=\"margin-top:2px\">{{current.shortName ?? current.name}}</div>\r\n </div>\r\n } @else {\r\n <div class=\"truncated\" style=\"text-align: left;\"\r\n [ngStyle]=\"{'min-width': width() > 0 ? width()+'px' : (width() === -1 ? '100%' : 'auto')}\">\r\n {{label()}}</div>\r\n }\r\n </div>\r\n <div fxLayoutAlign=\"end\" fxFlexAlign=\"center\">\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </div>\r\n </div>\r\n</button>\r\n<mat-menu #optionsMenu=\"matMenu\" xPosition=\"before\">\r\n @for (o of options(); track o.value) {\r\n <button mat-menu-item (click)=\"select(o)\">\r\n {{o.name}}\r\n @if(o.bag) {\r\n ({{o.bag}})\r\n }\r\n </button>\r\n }\r\n</mat-menu>", styles: [".menu-selector-button{padding:0 10px 0 20px!important;border-radius:9999px!important}.menu-selector-button .in-search-bar{height:56px!important;padding:0 20px!important;border-top-left-radius:0!important;border-bottom-left-radius:0!important}::ng-deep .menu-selector-button>.mdc-button__label{width:100%!important}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i2.DefaultFlexAlignDirective, selector: " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]", inputs: ["fxFlexAlign", "fxFlexAlign.xs", "fxFlexAlign.sm", "fxFlexAlign.md", "fxFlexAlign.lg", "fxFlexAlign.xl", "fxFlexAlign.lt-sm", "fxFlexAlign.lt-md", "fxFlexAlign.lt-lg", "fxFlexAlign.lt-xl", "fxFlexAlign.gt-xs", "fxFlexAlign.gt-sm", "fxFlexAlign.gt-md", "fxFlexAlign.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "ngmodule", type: ExtendedModule }, { kind: "directive", type: i3.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
144
146
  }
145
147
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ButtonSelectorComponent, decorators: [{
146
148
  type: Component,
@@ -152,6 +154,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
152
154
  type: Self
153
155
  }] }], propDecorators: { changed: [{
154
156
  type: Output
157
+ }], selected: [{
158
+ type: Output
155
159
  }], disabled: [{
156
160
  type: Input
157
161
  }], id: [{
@@ -160,4 +164,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
160
164
  type: HostBinding,
161
165
  args: ['attr.aria-describedBy']
162
166
  }] } });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy91aS5hcHBsaWNhdGlvbi91aS9jb21wb25lbnRzL2J1dHRvbi1zZWxlY3Rvci9idXR0b24tc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uL3VpL2NvbXBvbmVudHMvYnV0dG9uLXNlbGVjdG9yL2J1dHRvbi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFLLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBaUIsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQVkvQixNQUFNLE9BQU8sdUJBQXVCO0lBUWxDLElBQUksS0FBSyxDQUFDLEtBQXdDO1FBQ2hELElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFxQixFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdkIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFDLENBQUM7Z0JBQ3JCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFxQixFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFELENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBRUgsQ0FBQztJQUNELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBR0QsSUFDSSxRQUFRO1FBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3RELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFvQkQsWUFDNkIsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQXpFdkMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUE2QixDQUFDO1FBRTFELGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNuQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLFdBQU0sR0FBc0MsRUFBRSxDQUFBO1FBaUM5QyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBZ0IzQixvQkFBZSxHQUFxQixDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELHFCQUFnQixHQUFlLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVsQyxPQUFFLEdBQUcsbUJBQW1CLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1FBQzlCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRS9DLGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFM0IsWUFBTyxHQUE4QixJQUFJLENBQUM7UUFFcEQsVUFBSyxHQUFHLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFdBQU0sR0FBRyxLQUFLLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixpQkFBWSxHQUFHLEtBQUssQ0FBUyxRQUFRLENBQUMsQ0FBQztRQUN2QyxVQUFLLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDeEIsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxZQUFPLEdBQUcsS0FBSyxFQUF3QixDQUFDO1FBQ3hDLGVBQVUsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFLakMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFhO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUUsVUFBbUI7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUU7WUFBRSxPQUFPO1FBQ3JDLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRTtnQkFBRSxPQUFPO1lBQ3JDLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7S0FHQztJQUNELE1BQU0sQ0FBQyxJQUF3QjtRQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDOzhHQS9JVSx1QkFBdUI7a0dBQXZCLHVCQUF1QiwrdENDckJwQyw4bERBa0NXLHNYRG5CQyxPQUFPLDBFQUFXLFVBQVUsK2hHQUFFLGNBQWMsa2lCQUFFLGFBQWEsbUxBQUUsZUFBZSwyTkFDcEYsYUFBYTs7MkZBS0osdUJBQXVCO2tCQVRuQyxTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsZUFBZTt3QkFDcEYsYUFBYSxDQUFDLG1CQUdDLHVCQUF1QixDQUFDLE1BQU07OzBCQTZFNUMsUUFBUTs7MEJBQUksSUFBSTt5Q0F6RVQsT0FBTztzQkFBaEIsTUFBTTtnQkF3Q0gsUUFBUTtzQkFEWCxLQUFLO2dCQWtCUyxFQUFFO3NCQUFoQixXQUFXO2dCQUMwQixXQUFXO3NCQUFoRCxXQUFXO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IE5nQ2xhc3MsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFJlbmRlcmVyMiwgU2VsZiwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTmFtZVZhbHVlSXRlbSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBFeHRlbmRlZE1vZHVsZSwgRmxleE1vZHVsZSB9IGZyb20gJ0BuZ2JyYWNrZXQvbmd4LWxheW91dCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2J1dHRvbi1zZWxlY3RvcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTmdTdHlsZSwgTmdDbGFzcywgRmxleE1vZHVsZSwgRXh0ZW5kZWRNb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24tc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9idXR0b24tc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQnV0dG9uU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBAT3V0cHV0KCkgY2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TmFtZVZhbHVlSXRlbTxhbnk+IHwgbnVsbD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgZm9jdXNlZCA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF92YWx1ZTogTmFtZVZhbHVlSXRlbTxhbnk+W10gfCBhbnkgfCBudWxsID0gW11cclxuICBzZXQgdmFsdWUodmFsdWU6IE5hbWVWYWx1ZUl0ZW08YW55PltdIHwgYW55IHwgbnVsbCkge1xyXG4gICAgbGV0IHYxID0gMDtcclxuICAgIGxldCB2MiA9IDA7XHJcbiAgICBpZiAodGhpcy5fdmFsdWU/Lmxlbmd0aCA+IDApe1xyXG4gICAgICB0aGlzLl92YWx1ZS5mb3JFYWNoKChuOiBOYW1lVmFsdWVJdGVtPGFueT4pID0+IHYxICs9IG4udmFsdWUpO1xyXG4gICAgfSAgICBcclxuICAgIGlmICh2YWx1ZSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgdjIgPSB2YWx1ZS52YWx1ZTtcclxuICAgICAgdGhpcy5fdmFsdWUgPSBbdmFsdWVdXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodmFsdWU/Lmxlbmd0aCA+IDApe1xyXG4gICAgICAgIHZhbHVlLmZvckVhY2goKG46IE5hbWVWYWx1ZUl0ZW08YW55PikgPT4gdjIgKz0gbi52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICAgIGlmICh0aGlzLl92YWx1ZSAmJiB0aGlzLl92YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudCA9IHRoaXMuX3ZhbHVlWzBdO1xyXG4gICAgICBpZiAodjIgIT09IHYxKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQodGhpcy5fdmFsdWVbMF0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnQgPSBudWxsO1xyXG4gICAgICB0aGlzLmNoYW5nZWQuZW1pdChudWxsKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIGdldCB2YWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBnZXQgZGlzYWJsZWQoKSB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XHJcbiAgfVxyXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xyXG4gICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9wYWdhdGVDaGFuZ2U6IChfOiBhbnkpID0+IHZvaWQgPSAoXzogYW55KSA9PiB7IH07XHJcbiAgcHJpdmF0ZSBwcm9wYWdhdGVUb3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4geyB9O1xyXG5cclxuICBASG9zdEJpbmRpbmcoKSBpZCA9IGBjaGlwcy1zZWxlY3Rvci0tJHtTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKX1gO1xyXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZEJ5JykgZGVzY3JpYmVkQnkgPSAnJztcclxuXHJcbiAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xyXG5cclxuICBwcm90ZWN0ZWQgY3VycmVudDogTmFtZVZhbHVlSXRlbTxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHdpZHRoID0gaW5wdXQ8bnVtYmVyPigtMSk7XHJcbiAgYm9yZGVyID0gaW5wdXQ8bnVtYmVyPigtMSk7XHJcbiAgYm9yZGVyUmFkaXVzID0gaW5wdXQ8c3RyaW5nPihcIjk5OTlweFwiKTtcclxuICBsYWJlbCA9IGlucHV0PHN0cmluZz4oKTtcclxuICBsYWJlbFNlbGVjdGVkID0gaW5wdXQ8c3RyaW5nPigpO1xyXG4gIG9wdGlvbnMgPSBpbnB1dDxOYW1lVmFsdWVJdGVtPGFueT5bXT4oKTtcclxuICBhdXRvU2VsZWN0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxyXG4gICkge1xyXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmF1dG9TZWxlY3QoKSkge1xyXG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zKCk7XHJcbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoID4gMCAmJiBvcHRpb25zWzBdLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gb3B0aW9uc1swXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcclxuICAgIHRoaXMuZGVzY3JpYmVkQnkgPSBpZHMuam9pbignICcpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKCFTeXN0ZW1VdGlscy5pc0Jyb3dzZXIoKSkgcmV0dXJuO1xyXG4gICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmlkKTtcclxuICAgIGlmIChlbGVtKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkoZWxlbSwgJ2Rpc2FibGVkJywgaXNEaXNhYmxlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNvbnRhaW5lckNsaWNrKCkge1xyXG4gICAgaWYgKCF0aGlzLmZvY3VzZWQpIHtcclxuICAgICAgaWYgKCFTeXN0ZW1VdGlscy5pc0Jyb3dzZXIoKSkgcmV0dXJuO1xyXG4gICAgICBsZXQgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpO1xyXG4gICAgICBpZiAoZWxlbSkge1xyXG4gICAgICAgIGVsZW0uZm9jdXMoKTtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIFNlbGVjdCBhbiBlbGVtZW50XHJcbiAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gc2VsZWN0XHJcbiAqL1xyXG4gIHNlbGVjdChpdGVtOiBOYW1lVmFsdWVJdGVtPGFueT4pIHtcclxuICAgIHRoaXMud3JpdGVWYWx1ZShbaXRlbV0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXQgdmFsdWVcclxuICAgKi9cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMud3JpdGVWYWx1ZShudWxsKTtcclxuICB9XHJcbn1cclxuIiwiPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJtZW51LXNlbGVjdG9yLWJ1dHRvblwiIFtuZ1N0eWxlXT1cIntcclxuICAgICdib3JkZXInOiBib3JkZXIoKSA+PSAwID8gYm9yZGVyKCkgOiAnYXV0bycsXHJcbiAgICAnYm9yZGVyLXJhZGl1cyc6IGJvcmRlclJhZGl1cygpLFxyXG4gICAgJ2hlaWdodCc6IGJvcmRlcigpIDw9IDAgPyAnNDBweCcgOiAnYXV0bycsXHJcbiAgICAnbWluLXdpZHRoJzogd2lkdGgoKSA+IDAgPyB3aWR0aCgpKydweCcgOiAod2lkdGgoKSA9PT0gLTEgPyAnMTAwJScgOiAnYXV0bycpXHJcbn1cIiBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsKClcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwib3B0aW9uc01lbnVcIj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCIxMDBcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgICBAaWYoY3VycmVudCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJ1bmNhdGVkXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0O1wiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J21pbi13aWR0aCc6IHdpZHRoKCkgPiAwID8gd2lkdGgoKSsncHgnIDogKHdpZHRoKCkgPT09IC0xID8gJzEwMCUnIDogJ2F1dG8nKX1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ4LXNtYWxsIFwiPnt7bGFiZWxTZWxlY3RlZCgpID8/IGxhYmVsKCl9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsXCIgc3R5bGU9XCJtYXJnaW4tdG9wOjJweFwiPnt7Y3VycmVudC5zaG9ydE5hbWUgPz8gY3VycmVudC5uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJ1bmNhdGVkXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0O1wiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J21pbi13aWR0aCc6IHdpZHRoKCkgPiAwID8gd2lkdGgoKSsncHgnIDogKHdpZHRoKCkgPT09IC0xID8gJzEwMCUnIDogJ2F1dG8nKX1cIj5cclxuICAgICAgICAgICAgICAgIHt7bGFiZWwoKX19PC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2J1dHRvbj5cclxuPG1hdC1tZW51ICNvcHRpb25zTWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cclxuICAgIEBmb3IgKG8gb2Ygb3B0aW9ucygpOyB0cmFjayBvLnZhbHVlKSB7XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNlbGVjdChvKVwiPlxyXG4gICAgICAgIHt7by5uYW1lfX1cclxuICAgICAgICBAaWYoby5iYWcpIHtcclxuICAgICAgICAgICAgKHt7by5iYWd9fSlcclxuICAgICAgICB9XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIH1cclxuPC9tYXQtbWVudT4iXX0=
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy91aS5hcHBsaWNhdGlvbi91aS9jb21wb25lbnRzL2J1dHRvbi1zZWxlY3Rvci9idXR0b24tc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uL3VpL2NvbXBvbmVudHMvYnV0dG9uLXNlbGVjdG9yL2J1dHRvbi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFLLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBaUIsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQVkvQixNQUFNLE9BQU8sdUJBQXVCO0lBU2xDLElBQUksS0FBSyxDQUFDLEtBQXdD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Q0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQzs4R0FqSlUsdUJBQXVCO2tHQUF2Qix1QkFBdUIscXZDQ3JCcEMsOGxEQWtDVyxzWERuQkMsT0FBTywwRUFBVyxVQUFVLCtoR0FBRSxjQUFjLGtpQkFBRSxhQUFhLG1MQUFFLGVBQWUsMk5BQ3BGLGFBQWE7OzJGQUtKLHVCQUF1QjtrQkFUbkMsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGVBQWU7d0JBQ3BGLGFBQWEsQ0FBQyxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNOzswQkE4RTVDLFFBQVE7OzBCQUFJLElBQUk7eUNBMUVULE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkF3Q0gsUUFBUTtzQkFEWCxLQUFLO2dCQWtCUyxFQUFFO3NCQUFoQixXQUFXO2dCQUMwQixXQUFXO3NCQUFoRCxXQUFXO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IE5nQ2xhc3MsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFJlbmRlcmVyMiwgU2VsZiwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTmFtZVZhbHVlSXRlbSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBFeHRlbmRlZE1vZHVsZSwgRmxleE1vZHVsZSB9IGZyb20gJ0BuZ2JyYWNrZXQvbmd4LWxheW91dCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2J1dHRvbi1zZWxlY3RvcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTmdTdHlsZSwgTmdDbGFzcywgRmxleE1vZHVsZSwgRXh0ZW5kZWRNb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24tc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9idXR0b24tc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQnV0dG9uU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBAT3V0cHV0KCkgY2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TmFtZVZhbHVlSXRlbTxhbnk+IHwgbnVsbD4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5hbWVWYWx1ZUl0ZW08YW55PiB8IG51bGw+KCk7XHJcblxyXG4gIHByaXZhdGUgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIGZvY3VzZWQgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfdmFsdWU6IE5hbWVWYWx1ZUl0ZW08YW55PltdIHwgYW55IHwgbnVsbCA9IFtdXHJcbiAgc2V0IHZhbHVlKHZhbHVlOiBOYW1lVmFsdWVJdGVtPGFueT5bXSB8IGFueSB8IG51bGwpIHtcclxuICAgIGxldCB2MSA9IDA7XHJcbiAgICBsZXQgdjIgPSAwO1xyXG4gICAgaWYgKHRoaXMuX3ZhbHVlPy5sZW5ndGggPiAwKXtcclxuICAgICAgdGhpcy5fdmFsdWUuZm9yRWFjaCgobjogTmFtZVZhbHVlSXRlbTxhbnk+KSA9PiB2MSArPSBuLnZhbHVlKTtcclxuICAgIH0gICAgXHJcbiAgICBpZiAodmFsdWUgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgIHYyID0gdmFsdWUudmFsdWU7XHJcbiAgICAgIHRoaXMuX3ZhbHVlID0gW3ZhbHVlXVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHZhbHVlPy5sZW5ndGggPiAwKXtcclxuICAgICAgICB2YWx1ZS5mb3JFYWNoKChuOiBOYW1lVmFsdWVJdGVtPGFueT4pID0+IHYyICs9IG4udmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLl92YWx1ZSk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgICBpZiAodGhpcy5fdmFsdWUgJiYgdGhpcy5fdmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLl92YWx1ZVswXTtcclxuICAgICAgaWYgKHYyICE9PSB2MSkge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KHRoaXMuX3ZhbHVlWzBdKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50ID0gbnVsbDtcclxuICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBnZXQgdmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRpc2FibGVkKCkge1xyXG4gICAgaWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmRpc2FibGVkICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmRpc2FibGVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gIH1cclxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcclxuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvcGFnYXRlQ2hhbmdlOiAoXzogYW55KSA9PiB2b2lkID0gKF86IGFueSkgPT4geyB9O1xyXG4gIHByaXZhdGUgcHJvcGFnYXRlVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHsgfTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCkgaWQgPSBgY2hpcHMtc2VsZWN0b3ItLSR7U3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCl9YDtcclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRCeScpIGRlc2NyaWJlZEJ5ID0gJyc7XHJcblxyXG4gIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuXHJcbiAgcHJvdGVjdGVkIGN1cnJlbnQ6IE5hbWVWYWx1ZUl0ZW08YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICB3aWR0aCA9IGlucHV0PG51bWJlcj4oLTEpO1xyXG4gIGJvcmRlciA9IGlucHV0PG51bWJlcj4oLTEpO1xyXG4gIGJvcmRlclJhZGl1cyA9IGlucHV0PHN0cmluZz4oXCI5OTk5cHhcIik7XHJcbiAgbGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XHJcbiAgbGFiZWxTZWxlY3RlZCA9IGlucHV0PHN0cmluZz4oKTtcclxuICBvcHRpb25zID0gaW5wdXQ8TmFtZVZhbHVlSXRlbTxhbnk+W10+KCk7XHJcbiAgYXV0b1NlbGVjdCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcclxuICApIHtcclxuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hdXRvU2VsZWN0KCkpIHtcclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucygpO1xyXG4gICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmxlbmd0aCA+IDAgJiYgb3B0aW9uc1swXS52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudCA9IG9wdGlvbnNbMF07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oJyAnKTtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmICghU3lzdGVtVXRpbHMuaXNCcm93c2VyKCkpIHJldHVybjtcclxuICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pZCk7XHJcbiAgICBpZiAoZWxlbSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KGVsZW0sICdkaXNhYmxlZCcsIGlzRGlzYWJsZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Db250YWluZXJDbGljaygpIHtcclxuICAgIGlmICghdGhpcy5mb2N1c2VkKSB7XHJcbiAgICAgIGlmICghU3lzdGVtVXRpbHMuaXNCcm93c2VyKCkpIHJldHVybjtcclxuICAgICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmlkKTtcclxuICAgICAgaWYgKGVsZW0pIHtcclxuICAgICAgICBlbGVtLmZvY3VzKCk7XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBTZWxlY3QgYW4gZWxlbWVudFxyXG4gKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIHNlbGVjdFxyXG4gKi9cclxuICBzZWxlY3QoaXRlbTogTmFtZVZhbHVlSXRlbTxhbnk+KSB7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUoW2l0ZW1dKTtcclxuICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChpdGVtKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2V0IHZhbHVlXHJcbiAgICovXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUobnVsbCk7XHJcbiAgfVxyXG59XHJcbiIsIjxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwibWVudS1zZWxlY3Rvci1idXR0b25cIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAnYm9yZGVyJzogYm9yZGVyKCkgPj0gMCA/IGJvcmRlcigpIDogJ2F1dG8nLFxyXG4gICAgJ2JvcmRlci1yYWRpdXMnOiBib3JkZXJSYWRpdXMoKSxcclxuICAgICdoZWlnaHQnOiBib3JkZXIoKSA8PSAwID8gJzQwcHgnIDogJ2F1dG8nLFxyXG4gICAgJ21pbi13aWR0aCc6IHdpZHRoKCkgPiAwID8gd2lkdGgoKSsncHgnIDogKHdpZHRoKCkgPT09IC0xID8gJzEwMCUnIDogJ2F1dG8nKVxyXG59XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbCgpXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm9wdGlvbnNNZW51XCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgIDxkaXYgZnhGbGV4PVwiMTAwXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgICAgQGlmKGN1cnJlbnQpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRydW5jYXRlZFwiIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydtaW4td2lkdGgnOiB3aWR0aCgpID4gMCA/IHdpZHRoKCkrJ3B4JyA6ICh3aWR0aCgpID09PSAtMSA/ICcxMDAlJyA6ICdhdXRvJyl9XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwieC1zbWFsbCBcIj57e2xhYmVsU2VsZWN0ZWQoKSA/PyBsYWJlbCgpfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbFwiIHN0eWxlPVwibWFyZ2luLXRvcDoycHhcIj57e2N1cnJlbnQuc2hvcnROYW1lID8/IGN1cnJlbnQubmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRydW5jYXRlZFwiIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydtaW4td2lkdGgnOiB3aWR0aCgpID4gMCA/IHdpZHRoKCkrJ3B4JyA6ICh3aWR0aCgpID09PSAtMSA/ICcxMDAlJyA6ICdhdXRvJyl9XCI+XHJcbiAgICAgICAgICAgICAgICB7e2xhYmVsKCl9fTwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwiZW5kXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9idXR0b24+XHJcbjxtYXQtbWVudSAjb3B0aW9uc01lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XHJcbiAgICBAZm9yIChvIG9mIG9wdGlvbnMoKTsgdHJhY2sgby52YWx1ZSkge1xyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZWxlY3QobylcIj5cclxuICAgICAgICB7e28ubmFtZX19XHJcbiAgICAgICAgQGlmKG8uYmFnKSB7XHJcbiAgICAgICAgICAgICh7e28uYmFnfX0pXHJcbiAgICAgICAgfVxyXG4gICAgPC9idXR0b24+XHJcbiAgICB9XHJcbjwvbWF0LW1lbnU+Il19
@@ -208,7 +208,7 @@ export class ChipsSelectorComponent {
208
208
  }
209
209
  }
210
210
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ChipsSelectorComponent, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
211
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ChipsSelectorComponent, isStandalone: true, selector: "chips-selector", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, collapsedWidth: { classPropertyName: "collapsedWidth", publicName: "collapsedWidth", isSignal: true, isRequired: false, transformFunction: null }, collapseAt: { classPropertyName: "collapseAt", publicName: "collapseAt", isSignal: true, isRequired: false, transformFunction: null }, collapseAtContainer: { classPropertyName: "collapseAtContainer", publicName: "collapseAtContainer", isSignal: true, isRequired: false, transformFunction: null }, collapseDisplayMode: { classPropertyName: "collapseDisplayMode", publicName: "collapseDisplayMode", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { changed: "changed" }, host: { properties: { "id": "this.id", "class.floating": "this.shouldLabelFloat", "attr.aria-describedBy": "this.describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: ChipsSelectorComponent }], ngImport: i0, template: "<div [id]=\"containerId\" class=\"chips-container\">\r\n @if(containerWidth() > 0) {\r\n @if(collapsed()) {\r\n @if(collapseDisplayMode() === 'dropdown') {\r\n <mat-form-field [ngStyle]=\"{'min-width': collapsedWidth() > 0 ? collapsedWidth()+'.px' : '100%'}\"\r\n subscriptSizing=\"dynamic\">\r\n @if(label()) {\r\n <mat-label>{{label()}}</mat-label>\r\n }\r\n <mat-select [(ngModel)]=\"value\" name=\"value\" [multiple]=\"multiple()\">\r\n <mat-select-trigger>\r\n @if (value && (value.length || 0) > 0) {\r\n {{value[0].shortName ?? value[0].name}}\r\n }\r\n @if (value && (value.length || 0) > 1) {\r\n <span class=\"collapsed-additional-selection\">\r\n (+{{(value.length || 0) - 1}} {{value.length === 2 ? 'altro' : 'altri'}})\r\n </span>\r\n }\r\n </mat-select-trigger>\r\n @for (o of options(); track o.value) {\r\n <mat-option [value]=\"o\">\r\n {{o.name}} \r\n @if(o.bag) {\r\n &nbsp; ({{o.bag}});\r\n }\r\n </mat-option>\r\n }\r\n </mat-select>\r\n @if (value && (value.length || 0) > 0) {\r\n <button matSuffix tabindex=\"-1\" mat-icon-button aria-label=\"Pulisci\" (click)=\"clear($event)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n\r\n <button-selector [label]=\"label()\" [options]=\"options()\" [width]=\"collapsedWidth()\" [(ngModel)]=\"value\"\r\n name=\"value\"></button-selector>\r\n\r\n }\r\n } @else {\r\n <mat-chip-listbox [multiple]=\"multiple()\" [(ngModel)]=\"value\" name=\"value\">\r\n @for (o of options(); track o.value) {\r\n <mat-chip-option [matBadge]=\"o.bag\" [value]=\"o\">{{o.shortName ?? o.name}}</mat-chip-option>\r\n }\r\n </mat-chip-listbox>\r\n }\r\n }\r\n</div>", styles: [".chips-container{width:100%}.collapsed-additional-selection{opacity:.75;font-size:.75em}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FlexModule }, { kind: "ngmodule", type: ExtendedModule }, { kind: "directive", type: i2.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i4.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i6.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i6.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i9.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: ButtonSelectorComponent, selector: "button-selector", inputs: ["disabled", "width", "border", "borderRadius", "label", "labelSelected", "options", "autoSelect"], outputs: ["changed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
211
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ChipsSelectorComponent, isStandalone: true, selector: "chips-selector", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, collapsedWidth: { classPropertyName: "collapsedWidth", publicName: "collapsedWidth", isSignal: true, isRequired: false, transformFunction: null }, collapseAt: { classPropertyName: "collapseAt", publicName: "collapseAt", isSignal: true, isRequired: false, transformFunction: null }, collapseAtContainer: { classPropertyName: "collapseAtContainer", publicName: "collapseAtContainer", isSignal: true, isRequired: false, transformFunction: null }, collapseDisplayMode: { classPropertyName: "collapseDisplayMode", publicName: "collapseDisplayMode", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { changed: "changed" }, host: { properties: { "id": "this.id", "class.floating": "this.shouldLabelFloat", "attr.aria-describedBy": "this.describedBy" } }, providers: [{ provide: MatFormFieldControl, useExisting: ChipsSelectorComponent }], ngImport: i0, template: "<div [id]=\"containerId\" class=\"chips-container\">\r\n @if(containerWidth() > 0) {\r\n @if(collapsed()) {\r\n @if(collapseDisplayMode() === 'dropdown') {\r\n <mat-form-field [ngStyle]=\"{'min-width': collapsedWidth() > 0 ? collapsedWidth()+'.px' : '100%'}\"\r\n subscriptSizing=\"dynamic\">\r\n @if(label()) {\r\n <mat-label>{{label()}}</mat-label>\r\n }\r\n <mat-select [(ngModel)]=\"value\" name=\"value\" [multiple]=\"multiple()\">\r\n <mat-select-trigger>\r\n @if (value && (value.length || 0) > 0) {\r\n {{value[0].shortName ?? value[0].name}}\r\n }\r\n @if (value && (value.length || 0) > 1) {\r\n <span class=\"collapsed-additional-selection\">\r\n (+{{(value.length || 0) - 1}} {{value.length === 2 ? 'altro' : 'altri'}})\r\n </span>\r\n }\r\n </mat-select-trigger>\r\n @for (o of options(); track o.value) {\r\n <mat-option [value]=\"o\">\r\n {{o.name}} \r\n @if(o.bag) {\r\n &nbsp; ({{o.bag}});\r\n }\r\n </mat-option>\r\n }\r\n </mat-select>\r\n @if (value && (value.length || 0) > 0) {\r\n <button matSuffix tabindex=\"-1\" mat-icon-button aria-label=\"Pulisci\" (click)=\"clear($event)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n } @else {\r\n\r\n <button-selector [label]=\"label()\" [options]=\"options()\" [width]=\"collapsedWidth()\" [(ngModel)]=\"value\"\r\n name=\"value\"></button-selector>\r\n\r\n }\r\n } @else {\r\n <mat-chip-listbox [multiple]=\"multiple()\" [(ngModel)]=\"value\" name=\"value\">\r\n @for (o of options(); track o.value) {\r\n <mat-chip-option [matBadge]=\"o.bag\" [value]=\"o\">{{o.shortName ?? o.name}}</mat-chip-option>\r\n }\r\n </mat-chip-listbox>\r\n }\r\n }\r\n</div>", styles: [".chips-container{width:100%}.collapsed-additional-selection{opacity:.75;font-size:.75em}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FlexModule }, { kind: "ngmodule", type: ExtendedModule }, { kind: "directive", type: i2.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i4.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i6.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i6.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i9.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: ButtonSelectorComponent, selector: "button-selector", inputs: ["disabled", "width", "border", "borderRadius", "label", "labelSelected", "options", "autoSelect"], outputs: ["changed", "selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
212
212
  }
213
213
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ChipsSelectorComponent, decorators: [{
214
214
  type: Component,