ps-toolkit-ui 1.20.18 → 1.20.19

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.
@@ -39,6 +39,7 @@ export class TableClass {
39
39
  this.showExtraButtons = true;
40
40
  this.firstLoad = true;
41
41
  this.extraButtons = [];
42
+ this.optionButtons = [];
42
43
  this.form = null;
43
44
  this.searchForm = null;
44
45
  this.modal = null;
@@ -151,6 +152,7 @@ export class TableClass {
151
152
  }
152
153
  else if (res.status === ResultStatusEnum.Unauthorized) {
153
154
  m = 'FormBaseErrorExpired';
155
+ HelperClass.eraseCookie('TOKEN');
154
156
  }
155
157
  else if (res.status === ResultStatusEnum.NotAccess) {
156
158
  m = 'FormBaseErrorAccess';
@@ -383,7 +385,7 @@ export class TableClass {
383
385
  });
384
386
  };
385
387
  }
386
- this.extraButtons.push(opt);
388
+ this.optionButtons.push(opt);
387
389
  }
388
390
  if (this.form) {
389
391
  this.form.addButtons('Save', this.permissions.Type === PermissionTypeEnum.Form ? 'green w-10 only-icon f-l' : 'green', this.permissions.Type !== PermissionTypeEnum.Form, this.permissions.getAccesses().some(x => x.AccessType === PermissionAccessTypeEnum.Insert), this.permissions.Type === PermissionTypeEnum.Form ? (data) => {
@@ -585,4 +587,4 @@ export class TableCollClass {
585
587
  this.sort = type === TableCollType.Image ? false : sort;
586
588
  }
587
589
  }
588
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiRDovUHNUb29sa2l0L1VJL3Byb2plY3RzL3BzLXRvb2xraXQtdWkvc3JjLyIsInNvdXJjZXMiOlsibGliL2NsYXNzZXMvdGFibGUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQVksVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFDaEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQU8sVUFBVTtJQUNyQixZQUFZLFdBQWdCLEVBQUUsQ0FBb0IsRUFBRSxXQUE0QixFQUFFLE9BQWUsRUFBRSxFQUFFLE1BQWMsRUFBRSxFQUN6RyxVQUFrQixFQUFFLEVBQUUsU0FBaUIsRUFBRTtRQVVyRCxnQkFBVyxHQUFRLElBQUksQ0FBQztRQUd4QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBSWxCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxRQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ1gsV0FBTSxHQUFXLE1BQU0sQ0FB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QUVyQixRQUFHLEdBQWtCLElBQUksQ0FBQztRQWZ4QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkgsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDcEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEtBQUssYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDMUQsQ0FBQztDQVdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RhbENsYXNzfSBmcm9tICcuL21vZGFsLmNsYXNzJztcclxuaW1wb3J0IHtGb3JtQ2xhc3MsIElucHV0Q2xhc3MsIE9wdGlvbkNsYXNzfSBmcm9tICcuL2Zvcm0uY2xhc3MnO1xyXG5pbXBvcnQge1xyXG4gIEVudW1VdGlscyxcclxuICBGaWxlSWNvbnMsXHJcbiAgSW5wdXRUeXBlLFxyXG4gIE1ldGhvZCxcclxuICBQZXJtaXNzaW9uQWNjZXNzVHlwZUVudW0sXHJcbiAgUGVybWlzc2lvbklucHV0QWN0aW9uRW51bSxcclxuICBQZXJtaXNzaW9uSW5wdXRUeXBlRW51bSxcclxuICBQZXJtaXNzaW9uVHlwZUVudW0sXHJcbiAgUmVzdWx0U3RhdHVzRW51bSxcclxuICBUYWJsZUNvbGxUeXBlLFxyXG4gIFRhYmxlT3B0aW9uVHlwZVxyXG59IGZyb20gJy4vZW51bS5jbGFzcyc7XHJcbmltcG9ydCB7UmVxdWVzdENsYXNzfSBmcm9tICcuL3JlcXVlc3QuY2xhc3MnO1xyXG5pbXBvcnQge1Blcm1pc3Npb25DbGFzc30gZnJvbSAnLi9wZXJtaXNzaW9uLmNsYXNzJztcclxuaW1wb3J0IHtIZWxwZXJDbGFzc30gZnJvbSAnLi9oZWxwZXIuY2xhc3MnO1xyXG5pbXBvcnQgKiBhcyAkIGZyb20gJ2pxdWVyeSc7XHJcbmltcG9ydCB7RXhjZWxDbGFzc30gZnJvbSAnLi9leGNlbC5jbGFzcyc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcclxuXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNsYXNzIHtcclxuICBjb25zdHJ1Y3RvcihlbnZpcm9ubWVudDogYW55LCBsOiAoaywgdj8pID0+IHN0cmluZywgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25DbGFzcywgbmFtZTogc3RyaW5nID0gJycsIGNsczogc3RyaW5nID0gJycsXHJcbiAgICAgICAgICAgICAgcGVyUGFnZTogbnVtYmVyID0gMTAsIGhlaWdodDogbnVtYmVyID0gNTApIHtcclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcclxuICAgIHRoaXMubCA9IGw7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5pZCA9IHRoaXMubmFtZTtcclxuICAgIHRoaXMucGVybWlzc2lvbnMgPSBwZXJtaXNzaW9ucztcclxuICAgIHRoaXMuY2xhc3MgPSBjbHM7XHJcbiAgICB0aGlzLnBlclBhZ2UgPSBwZXJQYWdlO1xyXG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgfVxyXG4gIGVudmlyb25tZW50OiBhbnkgPSBudWxsO1xyXG4gIGw6IChrLCB2PykgPT4gc3RyaW5nO1xyXG4gIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uQ2xhc3M7XHJcbiAgcGVybWlzc2lvbiA9IHRydWU7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgY2xhc3M6IHN0cmluZztcclxuICBzdHlsZSA9IHt9O1xyXG4gIHVybCA9IG51bGw7XHJcbiAgbWV0aG9kOiBNZXRob2QgPSBNZXRob2QuUG9zdDtcclxuICBoZWlnaHQgPSA0MDtcclxuICBwZXJQYWdlID0gMTA7XHJcbiAgY29sczogVGFibGVDb2xsQ2xhc3NbXSA9IFtdO1xyXG4gIGJ1dHRvbnM6IElucHV0Q2xhc3NbXSA9IFtdO1xyXG4gIG9wdGlvbnNBY3Rpb25zOiBhbnlbXSA9IFtdO1xyXG4gIHJvd3MgPSBbXTtcclxuICBjb3VudCA9IDA7XHJcbiAgcGFnZSA9IDE7XHJcbiAgc29ydCA9IG51bGw7XHJcbiAgdGl0bGUgPSBudWxsO1xyXG4gIGRlc2NyaXB0aW9uID0gbnVsbDtcclxuICBzb3J0VHlwZSA9IG51bGw7XHJcbiAgZGlzcGxheUxhYmVsID0gdHJ1ZTtcclxuICBzb3J0YWJsZSA9IGZhbHNlO1xyXG4gIGV4cGVydFNlYXJjaCA9IGZhbHNlO1xyXG4gIG9wdGlvblR5cGUgPSBUYWJsZU9wdGlvblR5cGUuSGlkZGVuO1xyXG4gIGxvYWRpbmcgPSB0cnVlO1xyXG4gIGhhc0NoaWxkcmVuID0gZmFsc2U7XHJcbiAgdmVydGljYWwgPSBmYWxzZTtcclxuICBjaGlsZHJlbkF1dG9Mb2FkID0gZmFsc2U7XHJcbiAgd2l0aENoZWNrID0gZmFsc2U7XHJcbiAgd2l0aFNlbGVjdCA9IGZhbHNlO1xyXG4gIHNob3dFeHRyYUJ1dHRvbnMgPSB0cnVlO1xyXG4gIGZpcnN0TG9hZCA9IHRydWU7XHJcbiAgZXh0cmFCdXR0b25zOiBJbnB1dENsYXNzW10gPSBbXTtcclxuICBmb3JtOiBGb3JtQ2xhc3MgPSBudWxsO1xyXG4gIHNlYXJjaEZvcm06IEZvcm1DbGFzcyA9IG51bGw7XHJcbiAgbW9kYWw6IE1vZGFsQ2xhc3MgPSBudWxsO1xyXG4gIGxldmVsID0gbnVsbDtcclxuICB3aXRoUmVsYXRlZFJvdyA9IGZhbHNlO1xyXG4gIHJlbGF0ZWRSb3cgPSBudWxsO1xyXG4gIGxpc3RBY2Nlc3M6IFBlcm1pc3Npb25DbGFzcyA9IG51bGw7XHJcbiAgaW5zZXJ0QWNjZXNzOiBQZXJtaXNzaW9uQ2xhc3MgPSBudWxsO1xyXG4gIHN1YlRhYmxlOiBUYWJsZUNsYXNzID0gbnVsbDtcclxuICByZXF1ZXN0OiBhbnkgPSBudWxsO1xyXG4gIG9uTG9hZDogKGRhdGEpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uU2VsZWN0Um93OiAocm93KSA9PiB2b2lkID0gbnVsbDtcclxuICBvbkRibENsaWNrUm93OiAocm93KSA9PiB2b2lkID0gbnVsbDtcclxuICBvblJpZ2h0Q2xpY2tSb3c6IChyb3cpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uQ2hhbmdlQ2hlY2s6IChyb3cpID0+IHZvaWQgPSBudWxsO1xyXG4gIG9uU29ydDogKCkgPT4gdm9pZCA9IG51bGw7XHJcbiAgZ2V0Um93Q2xhc3M6IChyb3c6IGFueSkgPT4gc3RyaW5nID0gbnVsbDtcclxuICBzaG93Q29uZmlybTogKGw6IHN0cmluZywgdXJsOiBzdHJpbmcsIGRhdGEsIGFjY2VwdDogKGJ0bjogSW5wdXRDbGFzcykgPT4gdm9pZCkgPT4gdm9pZCA9IG51bGw7XHJcbiAgbG9hZChidG4gPSBudWxsKTogdm9pZHtcclxuICAgIGlmICh0aGlzLnVybCl7XHJcbiAgICAgIHRoaXMuc2VuZFJlcXVlc3QoYnRuKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRhdGEoKTogYW55W117XHJcbiAgICByZXR1cm4gdGhpcy5yb3dzLmZpbHRlcih4ID0+IHguY2hlY2tlZCkubWFwKHggPT4geC5EYXRhKTtcclxuICB9XHJcblxyXG4gIHNldENvbHMoKTogdm9pZHtcclxuICAgIGZvciAoY29uc3QgYyBvZiB0aGlzLmNvbHMuZmlsdGVyKHggPT4geC53aXRoU2VhcmNoKSl7XHJcbiAgICAgIGMuc2VhcmNoID0gbmV3IElucHV0Q2xhc3ModGhpcy5lbnZpcm9ubWVudCwgdGhpcy5sLCBjLm5hbWUsIG51bGwsIElucHV0VHlwZS5UZXh0LCAnaC0yNSB0YWJsZS1zZWFyY2gnLCBjLnNlYXJjaERlZmF1bHQpO1xyXG4gICAgICBpZiAoYy50eXBlID09PSBUYWJsZUNvbGxUeXBlLkRhdGUgfHwgYy50eXBlID09PSBUYWJsZUNvbGxUeXBlLkRhdGVUaW1lIHx8IGMudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5EYXRlRGlmIHx8IGMudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5EYXRlUmVtYWluKXtcclxuICAgICAgICBjLnNlYXJjaC50eXBlID0gSW5wdXRUeXBlLkRhdGU7XHJcbiAgICAgIH0gZWxzZSBpZiAoYy50eXBlID09PSBUYWJsZUNvbGxUeXBlLk1vbnRoKXtcclxuICAgICAgICBjLnNlYXJjaC50eXBlID0gSW5wdXRUeXBlLk1vbnRoO1xyXG4gICAgICB9IGVsc2UgaWYgKGMudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5ZZWFyKXtcclxuICAgICAgICBjLnNlYXJjaC50eXBlID0gSW5wdXRUeXBlLlllYXI7XHJcbiAgICAgIH0gZWxzZSBpZiAoYy50eXBlID09PSBUYWJsZUNvbGxUeXBlLlByaWNlKXtcclxuICAgICAgICBjLnNlYXJjaC50eXBlID0gSW5wdXRUeXBlLlByaWNlO1xyXG4gICAgICB9IGVsc2UgaWYgKGMuZW51bSAhPSBudWxsKXtcclxuICAgICAgICBjLnNlYXJjaC50eXBlID0gSW5wdXRUeXBlLlNlbGVjdDtcclxuICAgICAgICBjLnNlYXJjaC5vcHRpb25zID0gW25ldyBPcHRpb25DbGFzcygnJywgJy0xJyldLmNvbmNhdChFbnVtVXRpbHMuZ2V0S2V5c0FuZFZhbHVlcyhjLmVudW0pLm1hcCh4ID0+IG5ldyBPcHRpb25DbGFzcyh0aGlzLmwoeC5rZXkpLCB4LnZhbHVlLnRvU3RyaW5nKCkpKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYy5zZWFyY2gudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB9XHJcbiAgICAgIGMuc2VhcmNoLmRpc3BsYXlMYWJlbCA9IGZhbHNlO1xyXG4gICAgICBjLnNlYXJjaC5vbkNoYW5nZSA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLnBhZ2UgPSAxO1xyXG4gICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VuZFJlcXVlc3QoYnRuOiBJbnB1dENsYXNzID0gbnVsbCk6IHZvaWR7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hGb3JtICYmICF0aGlzLnNlYXJjaEZvcm0uY2hlY2soKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgaWYgKGJ0bil7XHJcbiAgICAgIGlmIChidG4ubG9hZGluZyl7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGJ0bi5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMucmVxdWVzdCA9IG5ldyBSZXF1ZXN0Q2xhc3ModGhpcy5lbnZpcm9ubWVudCkuZ2V0Q2xpZW50KHRoaXMucmVxdWVzdCwgdGhpcy51cmwsIHRoaXMubWV0aG9kLCB0aGlzLnNlYXJjaERhdGEoKSxcclxuICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMuc3RhdHVzID09PSBSZXN1bHRTdGF0dXNFbnVtLlN1Y2Nlc3MpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnZlcnRpY2FsKXtcclxuICAgICAgICAgICAgY29uc3QgYzogYW55ID0ge307XHJcbiAgICAgICAgICAgIHRoaXMuY29scy5mb3JFYWNoKHggPT4gY1t4Lm5hbWVdID0geC5uYW1lKTtcclxuICAgICAgICAgICAgYy5Db2xUeXBlID0gJ0NvbHVtbic7XHJcbiAgICAgICAgICAgIHJlcy5yZXN1bHQuTGlzdC51bnNoaWZ0KHtEYXRhOiBjLCBPcHRpb25zOiBbXX0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5yb3dzID0gcmVzLnJlc3VsdC5MaXN0O1xyXG4gICAgICAgICAgdGhpcy5jb3VudCA9IHJlcy5yZXN1bHQuQ291bnQ7XHJcbiAgICAgICAgICBpZiAodGhpcy5vbkxvYWQpe1xyXG4gICAgICAgICAgICB0aGlzLm9uTG9hZChyZXMucmVzdWx0LkRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGJ0bil7XHJcbiAgICAgICAgICAgIGJ0bi5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IG0gPSAnJztcclxuICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSBSZXN1bHRTdGF0dXNFbnVtLk5vdFJlZ2lzdGVyZWQpIHtcclxuICAgICAgICAgICAgbSA9ICdGb3JtQmFzZUVycm9yTm90UmVnaXN0ZXJlZCc7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5zdGF0dXMgPT09IFJlc3VsdFN0YXR1c0VudW0uRXhwaXJlZFJlZ2lzdGVyZWQpIHtcclxuICAgICAgICAgICAgbSA9ICdGb3JtQmFzZUVycm9yRXhwaXJlZFJlZ2lzdGVyZWQnO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMuc3RhdHVzID09PSBSZXN1bHRTdGF0dXNFbnVtLkludmFsaWRJcCkge1xyXG4gICAgICAgICAgICBtID0gJ0Zvcm1CYXNlRXJyb3JJbnZhbGlkSXAnO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMuc3RhdHVzID09PSBSZXN1bHRTdGF0dXNFbnVtLk5vQ3JlZGl0KSB7XHJcbiAgICAgICAgICAgIG0gPSAnRm9ybUJhc2VFcnJvck5vQ3JlZGl0JztcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzLnN0YXR1cyA9PT0gUmVzdWx0U3RhdHVzRW51bS5VbmF1dGhvcml6ZWQpIHtcclxuICAgICAgICAgICAgbSA9ICdGb3JtQmFzZUVycm9yRXhwaXJlZCc7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5zdGF0dXMgPT09IFJlc3VsdFN0YXR1c0VudW0uTm90QWNjZXNzKSB7XHJcbiAgICAgICAgICAgIG0gPSAnRm9ybUJhc2VFcnJvckFjY2Vzcyc7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5zdGF0dXMgPT09IFJlc3VsdFN0YXR1c0VudW0uTm90UGVybWlzc2lvbikge1xyXG4gICAgICAgICAgICBtID0gJ0Zvcm1CYXNlRXJyb3JQZXJtaXNzaW9uJztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzLm1lc3NhZ2UgPT09ICdzdHJpbmcnKXtcclxuICAgICAgICAgICAgICBjb25zdCBhbSA9IHJlcy5tZXNzYWdlLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgICAgbSA9IHRoaXMubChhbVswXSwgYW0ubGVuZ3RoID4gMSA/IGFtLnNsaWNlKDEpIDogbnVsbCk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpmb3JpblxyXG4gICAgICAgICAgICAgIGZvciAoY29uc3QgbXNnIGluIHJlcy5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBub2luc3BlY3Rpb24gSlNVbmZpbHRlcmVkRm9ySW5Mb29wXHJcbiAgICAgICAgICAgICAgICBtID0gdGhpcy5sKG1zZywgcmVzLm1lc3NhZ2VbbXNnXSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAobSkge1xyXG4gICAgICAgICAgICBIZWxwZXJDbGFzcy5hZGROb3RpZmljYXRpb24odGhpcy5sKG0pKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucm93cyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5jb3VudCA9IDA7XHJcbiAgICAgICAgICB0aGlzLnBhZ2UgPSAxO1xyXG4gICAgICAgICAgaWYgKGJ0bil7XHJcbiAgICAgICAgICAgIGJ0bi5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICB0aGlzLnJvd3MgPSBbXTtcclxuICAgICAgICB0aGlzLmNvdW50ID0gMDtcclxuICAgICAgICB0aGlzLnBhZ2UgPSAxO1xyXG4gICAgICAgIGlmIChidG4pe1xyXG4gICAgICAgICAgYnRuLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25VcmwodXJsLCByZWxhdGVkSWQsIHJvd0lkKTogc3RyaW5ne1xyXG4gICAgcmV0dXJuIChyZWxhdGVkSWQgPyB1cmwucmVwbGFjZSgne30nLCByZWxhdGVkSWQpIDogKHVybC5tYXRjaCgve30vZykgfHwgW10pLmxlbmd0aCA+IDEgPyB1cmwucmVwbGFjZSgnL3t9JywgJycpIDogdXJsKS5yZXBsYWNlKCd7fScsIHJvd0lkKTtcclxuICB9XHJcbiAgc2VhcmNoRGF0YShyZXBvcnQgPSBmYWxzZSk6IHt9IHtcclxuICAgIGxldCBkOiBhbnkgPSB7fTtcclxuICAgIGlmICghcmVwb3J0KXtcclxuICAgICAgZC5QYWdlID0gdGhpcy5wYWdlO1xyXG4gICAgICBkLlBlclBhZ2UgPSB0aGlzLnBlclBhZ2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkLlJlcG9ydElkID0gSGVscGVyQ2xhc3MucmFuZG9tKDIwKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNvcnRhYmxlKXtcclxuICAgICAgZC5Tb3J0ID0gJ1ByaW9yaXR5JztcclxuICAgICAgZC5Tb3J0VHlwZSA9ICdBU0MnO1xyXG4gICAgfWVsc2UgaWYgKHRoaXMuc29ydCl7XHJcbiAgICAgIGQuU29ydCA9IHRoaXMuc29ydDtcclxuICAgICAgZC5Tb3J0VHlwZSA9IHRoaXMuc29ydFR5cGU7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGMgb2YgdGhpcy5jb2xzLmZpbHRlcih4ID0+IHgud2l0aFNlYXJjaCAmJiB4LnNlYXJjaCAhPSBudWxsICYmIHguc2VhcmNoLmRhdGEoKSAhPSBudWxsICYmIHguc2VhcmNoLmRhdGEoKSAhPT0gJycpKXtcclxuICAgICAgY29uc3QgdmwgPSBjLnNlYXJjaC5kYXRhKCk7XHJcbiAgICAgIHRoaXMuYWRkRGF0YShkLCBjLm5hbWUsIHZsKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLndpdGhSZWxhdGVkUm93KXtcclxuICAgICAgZCA9IE9iamVjdC5hc3NpZ24oe30sIGQsIHRoaXMucmVsYXRlZFJvdyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hGb3JtID8gdGhpcy5zZWFyY2hGb3JtLmRhdGEoZCkgOiBkO1xyXG4gIH1cclxuICBhZGREYXRhKGQ6IHt9LCBuYW1lOiBzdHJpbmcsIHZsOiBhbnkpOiB2b2lke1xyXG4gICAgaWYgKHR5cGVvZiB2bCA9PT0gJ29iamVjdCcgJiYgISh2bCBpbnN0YW5jZW9mIEFycmF5KSl7XHJcbiAgICAgIGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgT2JqZWN0LmVudHJpZXModmwpKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpe1xyXG4gICAgICAgICAgZFtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodmwgIT0gbnVsbCl7XHJcbiAgICAgICAgZFtuYW1lXSA9IHZsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFVybCh1cmw6IHN0cmluZyk6IHN0cmluZ3tcclxuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25zLlJlbGF0ZWRJZCA/IHVybC5yZXBsYWNlKCd7fScsIHRoaXMucGVybWlzc2lvbnMuUmVsYXRlZElkKSA6IHVybC5yZXBsYWNlKCcve30nLCAnJyk7XHJcbiAgfVxyXG4gIHNob3dJbnNlcnRNb2RhbChjSWQgPSBudWxsLCBsZXZlbCA9IG51bGwsIGRhdGEgPSBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0uaXNFZGl0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmZvcm0udXJsID0gdGhpcy5mb3JtLmJhc2VVcmwgPSB0aGlzLmdldFVybCh0aGlzLmluc2VydEFjY2Vzcy5VcmwpICsgKGNJZCA/ICcvJyArIGNJZCA6ICcnKTtcclxuICAgIHRoaXMuZm9ybS5uYW1lID0gdGhpcy5pbnNlcnRBY2Nlc3MuTmFtZTtcclxuICAgIHRoaXMuZm9ybS5tZXRob2QgPSBNZXRob2QuUG9zdDtcclxuICAgIHRoaXMuZm9ybS5pbnB1dHMuZmlsdGVyKHggPT4geC5pbkVkaXREaXNhYmxlZCkuZm9yRWFjaCh4ID0+IHguZGlzYWJsZWQgPSBmYWxzZSk7XHJcbiAgICB0aGlzLmZvcm0uaW5wdXRzLmZpbHRlcih4ID0+ICF4LmluRWRpdFZpc2libGUpLmZvckVhY2goeCA9PiB4LnZpc2libGUgPSB0cnVlKTtcclxuICAgIHRoaXMuZm9ybS5pbnB1dHMuZm9yRWFjaCh4ID0+IHgucmVxdWlyZWQgPSB4LmJhc2VSZXF1aXJlZCk7XHJcbiAgICBjb25zdCBsID0gdGhpcy5mb3JtLmlucHV0cy5maW5kKHggPT4geC5uYW1lID09PSAnTGV2ZWwnKTtcclxuICAgIGlmIChsZXZlbCAhPSBudWxsICYmIGwpe1xyXG4gICAgICBsLnZhbHVlID0gbGV2ZWw7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1vZGFsLnNob3coZGF0YSk7XHJcbiAgfVxyXG4gIHNldChjaGFuZ2VSb3dzID0gbnVsbCk6IHZvaWR7XHJcbiAgICB0aGlzLnBlcm1pc3Npb24gPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMucGVybWlzc2lvbnMpXHJcbiAgICB7XHJcbiAgICAgIHRoaXMubGlzdEFjY2VzcyA9IHRoaXMucGVybWlzc2lvbnMuZ2V0QWNjZXNzKFBlcm1pc3Npb25BY2Nlc3NUeXBlRW51bS5MaXN0KTtcclxuICAgICAgdGhpcy5pbnNlcnRBY2Nlc3MgPSB0aGlzLnBlcm1pc3Npb25zLmdldEFjY2VzcyhQZXJtaXNzaW9uQWNjZXNzVHlwZUVudW0uSW5zZXJ0KTtcclxuICAgICAgaWYgKHRoaXMubGlzdEFjY2VzcyAhPT0gbnVsbCl7XHJcbiAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMubGlzdEFjY2Vzcy5OYW1lO1xyXG4gICAgICAgIHRoaXMudXJsID0gdGhpcy5nZXRVcmwodGhpcy5saXN0QWNjZXNzLlVybCk7XHJcbiAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbnMuVHlwZSAhPT0gUGVybWlzc2lvblR5cGVFbnVtLkZvcm0pe1xyXG4gICAgICAgICAgaWYgKHRoaXMuZmlyc3RMb2FkKXtcclxuICAgICAgICAgICAgdGhpcy5sb2FkKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZXtcclxuICAgICAgICB0aGlzLnBlcm1pc3Npb24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMucGVybWlzc2lvbiA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5mb3JtICYmIHRoaXMuZm9ybS5vblRvcCl7XHJcbiAgICAgIHRoaXMuZm9ybS5kaXNwbGF5TGFiZWwgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3QgYWNjZXNzIG9mIHRoaXMucGVybWlzc2lvbnMuZ2V0QWNjZXNzZXMoKS5maWx0ZXIoeCA9PiB4LklucHV0QWN0aW9uICE9PSBQZXJtaXNzaW9uSW5wdXRBY3Rpb25FbnVtLk5vbmUpKXtcclxuICAgICAgaWYgKHRoaXMuYnV0dG9ucy5maWx0ZXIoeCA9PiB4Lm5hbWUgPT09IGFjY2Vzcy5OYW1lKS5sZW5ndGggPiAwKXtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBhY2Nlc3NJbnAgPSBuZXcgSW5wdXRDbGFzcyh0aGlzLmVudmlyb25tZW50LCB0aGlzLmwsIGFjY2Vzcy5OYW1lLCBhY2Nlc3MuSWNvbixcclxuICAgICAgICBhY2Nlc3MuSW5wdXRUeXBlID09PSBQZXJtaXNzaW9uSW5wdXRUeXBlRW51bS5CdXR0b24gPyBJbnB1dFR5cGUuQnV0dG9uIDogSW5wdXRUeXBlLkljb24sICdibHVlIHAtMCBtLXItMTAtcCB3LXUgaC0zMCcpO1xyXG4gICAgICBpZiAoYWNjZXNzLkFjY2Vzc1R5cGUgPT09IFBlcm1pc3Npb25BY2Nlc3NUeXBlRW51bS5JbnNlcnQpe1xyXG4gICAgICAgIGFjY2Vzc0lucC5jbGFzcyA9IGFjY2Vzc0lucC5jbGFzcy5yZXBsYWNlKCdibHVlJywgJ2dyZWVuJyk7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybSl7XHJcbiAgICAgICAgICB0aGlzLmZvcm0udXJsID0gdGhpcy5mb3JtLmJhc2VVcmwgPSB0aGlzLmdldFVybChhY2Nlc3MuVXJsKTtcclxuICAgICAgICAgIGlmICghdGhpcy5mb3JtLm9uVG9wKXtcclxuICAgICAgICAgICAgYWNjZXNzSW5wLm9uQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtLm9uU3VjY2Vzc0Jhc2UgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGFsLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93SW5zZXJ0TW9kYWwoKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZGlzcGxheUxhYmVsID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgaWYgKHRoaXMubW9kYWwpe1xyXG4gICAgICAgICAgICBhY2Nlc3NJbnAub25DbGljayA9ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm1vZGFsLnNob3coKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBhY2Nlc3NJbnAudXJsID0gYWNjZXNzLlVybDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoYWNjZXNzLkFjY2Vzc1R5cGUgPT09IFBlcm1pc3Npb25BY2Nlc3NUeXBlRW51bS5SZXBvcnQpe1xyXG4gICAgICAgIGFjY2Vzc0lucC5vbkNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgcCA9IG5ldyBQZXJtaXNzaW9uQ2xhc3MoKTtcclxuICAgICAgICAgIHAuQXJlYSA9IHRoaXMucGVybWlzc2lvbnMuQXJlYTtcclxuICAgICAgICAgIHAuQ29udHJvbGxlciA9ICdwcmludCc7XHJcbiAgICAgICAgICBwLkFjdGlvbiA9IHRoaXMucGVybWlzc2lvbnMuQ29udHJvbGxlciArICh0aGlzLnBlcm1pc3Npb25zLkFjdGlvbiA/IHRoaXMucGVybWlzc2lvbnMuQWN0aW9uIDogJycpO1xyXG4gICAgICAgICAgY29uc3QgcGFyYW1zID0gJC5wYXJhbSh0aGlzLnNlYXJjaERhdGEodHJ1ZSkpO1xyXG4gICAgICAgICAgY29uc3QgdSA9IHRoaXMuZ2V0VXJsKGFjY2Vzcy5VcmwpO1xyXG4gICAgICAgICAgd2luZG93Lm9wZW4oJy9yZXBvcnQnICsgdSArIChwYXJhbXMgPyAodS5pbmNsdWRlcygnPycpID8gJyYnIDogJz8nKSArIHBhcmFtcyA6ICcnKSwgJ19ibGFuaycpO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoYWNjZXNzLklucHV0QWN0aW9uID09PSBQZXJtaXNzaW9uSW5wdXRBY3Rpb25FbnVtLk1vZGFsKXtcclxuICAgICAgICBhY2Nlc3NJbnAubW9kYWwgPSB0aGlzLm9wdGlvbnNBY3Rpb25zLmZpbmQoeCA9PiB4Lm5hbWUgPT09IGFjY2Vzcy5BY3Rpb24pO1xyXG4gICAgICAgIGFjY2Vzc0lucC5vbkNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGFjY2Vzc0lucC5tb2RhbC50YWJsZSl7XHJcbiAgICAgICAgICAgIGNvbnN0IHAgPSBuZXcgUGVybWlzc2lvbkNsYXNzKCk7XHJcbiAgICAgICAgICAgIHAuQXJlYSA9IHRoaXMucGVybWlzc2lvbnMuQXJlYTtcclxuICAgICAgICAgICAgcC5Db250cm9sbGVyID0gdGhpcy5wZXJtaXNzaW9ucy5Db250cm9sbGVyO1xyXG4gICAgICAgICAgICBwLkFjdGlvbiA9IGFjY2Vzcy5BY3Rpb247XHJcbiAgICAgICAgICAgIGFjY2Vzc0lucC5tb2RhbC50YWJsZS5wZXJtaXNzaW9ucyA9IHA7XHJcbiAgICAgICAgICAgIGlmIChhY2Nlc3NJbnAubW9kYWwudGFibGUuZm9ybSl7XHJcbiAgICAgICAgICAgICAgYWNjZXNzSW5wLm1vZGFsLnRhYmxlLmZvcm0udXJsID0gYWNjZXNzLlVybDtcclxuICAgICAgICAgICAgICBhY2Nlc3NJbnAubW9kYWwudGFibGUuZm9ybS5iYXNlVXJsID0gYWNjZXNzLlVybDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhY2Nlc3NJbnAubW9kYWwudGFibGUuc2V0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoYWNjZXNzSW5wLm1vZGFsLmZvcm0pe1xyXG4gICAgICAgICAgICBhY2Nlc3NJbnAubW9kYWwuZm9ybS5uYW1lID0gYWNjZXNzLk5hbWU7XHJcbiAgICAgICAgICAgIGFjY2Vzc0lucC5tb2RhbC5mb3JtLnVybCA9IGFjY2Vzcy5Vcmw7XHJcbiAgICAgICAgICAgIGFjY2Vzc0lucC5tb2RhbC5mb3JtLm9uU3VjY2Vzc0Jhc2UgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgYWNjZXNzSW5wLm1vZGFsLmhpZGUoKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2UgaWYgKGFjY2Vzcy5JbnB1dEFjdGlvbiA9PT0gUGVybWlzc2lvbklucHV0QWN0aW9uRW51bS5PbkNsaWNrKXtcclxuICAgICAgICBhY2Nlc3NJbnAub25DbGljayA9IChidG4pID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9uc0FjdGlvbnMuZmluZCh4ID0+IHgubmFtZSA9PT0gYWNjZXNzLkFjdGlvbikub25DbGljayhidG4pO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5idXR0b25zLnB1c2goYWNjZXNzSW5wKTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIHRoaXMucGVybWlzc2lvbnMuZ2V0T3B0aW9ucygpLmZpbHRlcih4ID0+IHguTXVsdGkpKXtcclxuICAgICAgY29uc3Qgb3B0ID0gbmV3IElucHV0Q2xhc3ModGhpcy5lbnZpcm9ubWVudCwgdGhpcy5sLCBvcHRpb24uTmFtZSwgb3B0aW9uLkljb24sIElucHV0VHlwZS5JY29uLCAnbS1yLTEwLXAnKTtcclxuICAgICAgaWYgKG9wdGlvbi5BY2Nlc3NUeXBlID09PSBQZXJtaXNzaW9uQWNjZXNzVHlwZUVudW0uUmVwb3J0KXtcclxuICAgICAgICBvcHQub25DbGljayA9ICgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZGF0YSgpLm1hcCh4ID0+ICdJZHM9JyArIHguSWQpLmpvaW4oJyYnKTtcclxuICAgICAgICAgIGNvbnN0IHUgPSB0aGlzLmdldE9wdGlvblVybChvcHRpb24uVXJsLCB0aGlzLnBlcm1pc3Npb25zLlJlbGF0ZWRJZCwgJycpO1xyXG4gICAgICAgICAgd2luZG93Lm9wZW4oJy9yZXBvcnQnICsgdSArIChwYXJhbXMgPyAodS5pbmNsdWRlcygnPycpID8gJyYnIDogJz8nKSArIHBhcmFtcyA6ICcnKSwgJ19ibGFuaycpO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH0gIGVsc2UgaWYgKG9wdGlvbi5JbnB1dEFjdGlvbiA9PT0gUGVybWlzc2lvbklucHV0QWN0aW9uRW51bS5PbkNsaWNrKXtcclxuICAgICAgICBvcHQub25DbGljayA9IChidG4pID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9uc0FjdGlvbnMuZmluZCh4ID0+IHgubmFtZSA9PT0gb3B0aW9uLkFjdGlvbikub25DbGljayhidG4pO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb3B0Lm9uQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBwID0gbmV3IFBlcm1pc3Npb25DbGFzcygpO1xyXG4gICAgICAgICAgcC5SZWxhdGVkSWQgPSB0aGlzLnBlcm1pc3Npb25zLlJlbGF0ZWRJZDtcclxuICAgICAgICAgIHAuQXJlYSA9IHRoaXMucGVybWlzc2lvbnMuQXJlYTtcclxuICAgICAgICAgIHAuQ29udHJvbGxlciA9IG9wdGlvbi5Db250cm9sbGVyO1xyXG4gICAgICAgICAgcC5BY3Rpb24gPSBvcHRpb24uQWN0aW9uO1xyXG4gICAgICAgICAgY29uc3QgZGF0YSA9IHtJZHM6IHRoaXMuZGF0YSgpLm1hcCh4ID0+IHguSWQpfTtcclxuICAgICAgICAgIHRoaXMuc2hvd0NvbmZpcm0odGhpcy5sKG9wdGlvbi5BY3Rpb24gKyAnQ29uZmlybU11bHRpJywgZGF0YS5JZHMubGVuZ3RoKSwgdGhpcy5nZXRPcHRpb25Vcmwob3B0aW9uLlVybCwgdGhpcy5wZXJtaXNzaW9ucy5SZWxhdGVkSWQsICcnKSwgZGF0YSwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5leHRyYUJ1dHRvbnMucHVzaChvcHQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZm9ybSl7XHJcbiAgICAgIHRoaXMuZm9ybS5hZGRCdXR0b25zKCdTYXZlJywgdGhpcy5wZXJtaXNzaW9ucy5UeXBlID09PSBQZXJtaXNzaW9uVHlwZUVudW0uRm9ybSA/ICdncmVlbiB3LTEwIG9ubHktaWNvbiBmLWwnIDogJ2dyZWVuJyxcclxuICAgICAgICB0aGlzLnBlcm1pc3Npb25zLlR5cGUgIT09IFBlcm1pc3Npb25UeXBlRW51bS5Gb3JtLCB0aGlzLnBlcm1pc3Npb25zLmdldEFjY2Vzc2VzKCkuc29tZSh4ID0+IHguQWNjZXNzVHlwZSA9PT0gUGVybWlzc2lvbkFjY2Vzc1R5cGVFbnVtLkluc2VydCksXHJcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9ucy5UeXBlID09PSBQZXJtaXNzaW9uVHlwZUVudW0uRm9ybSA/IChkYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vblRvcEZvcm1TdWJtaXQoZGF0YSwgY2hhbmdlUm93cyk7XHJcbiAgICAgIH0gOiBudWxsKTtcclxuICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4pe1xyXG4gICAgICAgIGNvbnN0IGxldmVsID0gbmV3IElucHV0Q2xhc3ModGhpcy5lbnZpcm9ubWVudCwgdGhpcy5sLCAnTGV2ZWwnLCBudWxsLCBJbnB1dFR5cGUuSGlkZGVuKTtcclxuICAgICAgICB0aGlzLmZvcm0uaW5wdXRzLnB1c2gobGV2ZWwpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZvcm0ub25Ub3Ape1xyXG4gICAgICAgIHRoaXMuZm9ybS5vblN1Y2Nlc3NCYXNlID0gKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLmNsZWFyKHRoaXMuaW5zZXJ0QWNjZXNzICE9IG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkKCk7XHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIXRoaXMubW9kYWwpe1xyXG4gICAgICAgICAgdGhpcy5tb2RhbCA9IG5ldyBNb2RhbENsYXNzKHRoaXMuZW52aXJvbm1lbnQsIHRoaXMubCwgdGhpcy5mb3JtLm5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1vZGFsLmZvcm0gPSB0aGlzLmZvcm07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgb25Ub3BGb3JtU3VibWl0KGRhdGEsIGNoYW5nZVJvd3MgPSBudWxsKTogdm9pZHtcclxuICAgIGlmIChkYXRhLklkKXtcclxuICAgICAgY29uc3QgaSA9IHRoaXMucm93cy5maW5kSW5kZXgoeCA9PiB4LkRhdGEuSWQgPT09IGRhdGEuSWQpO1xyXG4gICAgICB0aGlzLnJvd3NbaV0uRGF0YSA9IGRhdGE7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgZGF0YS5JZCA9IHBhcnNlSW50KEhlbHBlckNsYXNzLnJhbmRvbSg1LCBmYWxzZSwgZmFsc2UpLCAxMCk7XHJcbiAgICAgIGNvbnN0IHVBY2Nlc3MgPSBuZXcgUGVybWlzc2lvbkNsYXNzKCk7XHJcbiAgICAgIHVBY2Nlc3MuQWN0aW9uID0gJ1VwZGF0ZSc7XHJcbiAgICAgIHVBY2Nlc3MuVHlwZSA9IFBlcm1pc3Npb25UeXBlRW51bS5PcHRpb247XHJcbiAgICAgIHVBY2Nlc3MuSW5wdXRBY3Rpb24gPSBQZXJtaXNzaW9uSW5wdXRBY3Rpb25FbnVtLk5vbmU7XHJcbiAgICAgIHVBY2Nlc3MuSW5wdXRUeXBlID0gUGVybWlzc2lvbklucHV0VHlwZUVudW0uSWNvbjtcclxuICAgICAgdUFjY2Vzcy5BY2Nlc3NUeXBlID0gUGVybWlzc2lvbkFjY2Vzc1R5cGVFbnVtLlVwZGF0ZTtcclxuICAgICAgdUFjY2Vzcy5JY29uID0gJ2ZhZCBmYS1wZW4nO1xyXG4gICAgICB1QWNjZXNzLk5hbWUgPSAnVXBkYXRlJztcclxuICAgICAgY29uc3QgZEFjY2VzcyA9IG5ldyBQZXJtaXNzaW9uQ2xhc3MoKTtcclxuICAgICAgZEFjY2Vzcy5BY3Rpb24gPSAnRGVsZXRlJztcclxuICAgICAgZEFjY2Vzcy5UeXBlID0gUGVybWlzc2lvblR5cGVFbnVtLk9wdGlvbjtcclxuICAgICAgZEFjY2Vzcy5JbnB1dEFjdGlvbiA9IFBlcm1pc3Npb25JbnB1dEFjdGlvbkVudW0uTm9uZTtcclxuICAgICAgZEFjY2Vzcy5JbnB1dFR5cGUgPSBQZXJtaXNzaW9uSW5wdXRUeXBlRW51bS5JY29uO1xyXG4gICAgICBkQWNjZXNzLkFjY2Vzc1R5cGUgPSBQZXJtaXNzaW9uQWNjZXNzVHlwZUVudW0uRGVsZXRlO1xyXG4gICAgICBkQWNjZXNzLkljb24gPSAnZmFkIGZhLXRyYXNoJztcclxuICAgICAgZEFjY2Vzcy5OYW1lID0gJ0RlbGV0ZSc7XHJcbiAgICAgIGlmICh0aGlzLnNvcnRUeXBlID09PSAnREVTQycpe1xyXG4gICAgICAgIHRoaXMucm93cy5wdXNoKHtcclxuICAgICAgICAgIERhdGE6IGRhdGEsXHJcbiAgICAgICAgICBPcHRpb25zOiBbdUFjY2VzcywgZEFjY2Vzc11cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvd3MudW5zaGlmdCh7XHJcbiAgICAgICAgICBEYXRhOiBkYXRhLFxyXG4gICAgICAgICAgT3B0aW9uczogW3VBY2Nlc3MsIGRBY2Nlc3NdXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VSb3dzKXtcclxuICAgICAgY2hhbmdlUm93cy5lbWl0KGRhdGEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtLmNsZWFyKHRoaXMuaW5zZXJ0QWNjZXNzICE9IG51bGwpO1xyXG4gICAgaWYgKHRoaXMub25Mb2FkKXtcclxuICAgICAgdGhpcy5vbkxvYWQobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDZWxsKHJvdzogYW55LCBjb2w6IFRhYmxlQ29sbENsYXNzKTogYW55e1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2dldENlbGwnKTtcclxuICAgIGNvbnN0IGN2ID0gXy5nZXQocm93LkRhdGEsIGNvbC5uYW1lKTtcclxuICAgIGlmIChjdiA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gY29sLmRlZmF1bHQgPyBjb2wuZGVmYXVsdCA6ICcnO1xyXG4gICAgfSBlbHNlIGlmIChjb2wuZnVuICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIGNvbC5mdW4ocm93LkRhdGEpO1xyXG4gICAgfSBlbHNlIGlmIChjb2wuZW51bSAhPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5sKEVudW1VdGlscy5nZXRLZXlCeVZhbHVlKGNvbC5lbnVtLCBjdikpO1xyXG4gICAgfSBlbHNlIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5EYXRlRGlmKSB7XHJcbiAgICAgIHJldHVybiBIZWxwZXJDbGFzcy5nZXREYXRlRGlmKHRoaXMubCwgY3YpO1xyXG4gICAgfSBlbHNlIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5EYXRlKSB7XHJcbiAgICAgIHJldHVybiBIZWxwZXJDbGFzcy5nZXREYXRlKGN2KTtcclxuICAgIH0gZWxzZSBpZiAoY29sLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuRGF0ZVRpbWUpIHtcclxuICAgICAgcmV0dXJuICc8c3BhbiBjbGFzcz1cImx0clwiPicgKyBIZWxwZXJDbGFzcy5nZXREYXRlVGltZShjdikgKyAnPC9zcGFuPic7XHJcbiAgICB9IGVsc2UgIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5Nb250aCkge1xyXG4gICAgICByZXR1cm4gSGVscGVyQ2xhc3MuZ2V0RGF0ZShjdiwgJ2pNTU1NIGpZWVlZJyk7XHJcbiAgICB9ICBlbHNlICBpZiAoY29sLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuWWVhcikge1xyXG4gICAgICByZXR1cm4gSGVscGVyQ2xhc3MuZ2V0RGF0ZShjdiwgJ2pZWVlZJyk7XHJcbiAgICB9IGVsc2UgaWYgKGNvbC50eXBlID09PSBUYWJsZUNvbGxUeXBlLlRpbWUpIHtcclxuICAgICAgcmV0dXJuIEhlbHBlckNsYXNzLmdldFRpbWUoY3YpO1xyXG4gICAgfSBlbHNlIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5Db2xvcikge1xyXG4gICAgICByZXR1cm4gJzxkaXYgY2xhc3M9XCJjb2xvclwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogJyArIGN2ICsgJzsgY29sb3I6ICcgKyBIZWxwZXJDbGFzcy5nZXRDb2xvckJ5QmdDb2xvcihjdikgKyAnXCI+JyArIGN2ICsgJzwvZGl2Pic7XHJcbiAgICB9IGVsc2UgaWYgKGNvbC50eXBlID09PSBUYWJsZUNvbGxUeXBlLlVybCkge1xyXG4gICAgICByZXR1cm4gJzxhIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwibHRyXCIgaHJlZj1cIicgKyBjdiArICdcIj4nICsgY3YgKyAnPC9hPic7XHJcbiAgICB9IGVsc2UgaWYgKGNvbC50eXBlID09PSBUYWJsZUNvbGxUeXBlLkltYWdlKSB7XHJcbiAgICAgIHJldHVybiAnPGltZyBzdHlsZT1cImhlaWdodDogJyArIHRoaXMuaGVpZ2h0ICsgJ3B4XCIgYWx0PVwiXCIgc3JjPVwiJyArIHRoaXMuZW52aXJvbm1lbnQudXJsICsgY3YgKyAnXCIvPic7XHJcbiAgICB9IGVsc2UgaWYgKGNvbC50eXBlID09PSBUYWJsZUNvbGxUeXBlLkZpbGVTaXplKSB7XHJcbiAgICAgIHJldHVybiBIZWxwZXJDbGFzcy5nZXRGaWxlU2l6ZShjdik7XHJcbiAgICB9IGVsc2UgaWYgKGNvbC50eXBlID09PSBUYWJsZUNvbGxUeXBlLlByaWNlKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgcmV0dXJuIEhlbHBlckNsYXNzLnRvUHJpY2UodGhpcy5sLCBjdik7XHJcbiAgICAgIH1jYXRjaCB7fVxyXG4gICAgfSAgZWxzZSBpZiAoY29sLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuTnVtYmVyKSB7XHJcbiAgICAgIHJldHVybiBjdi50b0xvY2FsZVN0cmluZygpO1xyXG4gICAgfSAgZWxzZSBpZiAoY29sLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuRmlsZXMpIHtcclxuICAgICAgbGV0IGZpbGVzID0gJyc7XHJcbiAgICAgIGZvciAoY29uc3QgZiBvZiBjdikge1xyXG4gICAgICAgIGNvbnN0IGsgPSBmLnNwbGl0KCcuJykuYXQoLTEpO1xyXG4gICAgICAgIGlmIChrID09PSAnanBlZycgfHwgayA9PT0gJ2pwZycgfHwgayA9PT0gJ3BuZycpe1xyXG4gICAgICAgICAgZmlsZXMgKz0gJzxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCInICsgdGhpcy5lbnZpcm9ubWVudC51cmwgKyBmICsgJ1wiIGNsYXNzPVwibS1oLTVcIj48aW1nIGFsdD1cIlwiIHNyYz1cIicgKyB0aGlzLmVudmlyb25tZW50LnVybCArIGYgKyAnXCIgc3R5bGU9XCJoZWlnaHQ6IDMwcHhcIi8+PC9hPic7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBmaWxlcyArPSAnPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIicgKyB0aGlzLmVudmlyb25tZW50LnVybCArIGYgKyAnXCIgY2xhc3M9XCJmLXMtMzAgbS1oLTUgJyArIEZpbGVJY29uc1trXSArICdcIj48L2E+JztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZpbGVzO1xyXG4gICAgfSBlbHNlIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5QbGFxdWUpIHtcclxuICAgICAgY29uc3QgcGFydHMgPSBjdi5zcGxpdCgnXycpO1xyXG4gICAgICBpZiAocGFydHMubGVuZ3RoID09PSA0KSB7XHJcbiAgICAgICAgcmV0dXJuICc8ZGl2IGRhdGEtY29weT1cIicgKyBwYXJ0cy5qb2luKCcgJykgKyAnXCIgY2xhc3M9XCJwbGFxdWUnICsgKHBhcnRzWzFdID09PSAn2LknID8gJyBwJyA6ICcnKSArIChwYXJ0c1sxXSA9PT0gJ9inJyA/ICcgZycgOiAnJykgKyAnXCI+JyArXHJcbiAgICAgICAgICAnPGRpdiBjbGFzcz1cInBhcnQxXCI+JyArIHBhcnRzWzBdICsgJzwvZGl2PicgK1xyXG4gICAgICAgICAgJzxkaXYgY2xhc3M9XCJwYXJ0MlwiPicgKyBwYXJ0c1sxXSArICc8L2Rpdj4nICtcclxuICAgICAgICAgICc8ZGl2IGNsYXNzPVwicGFydDNcIj4nICsgcGFydHNbMl0gKyAnPC9kaXY+JyArXHJcbiAgICAgICAgICAnPGRpdiBjbGFzcz1cInBhcnQ0XCI+JyArIHBhcnRzWzNdICsgJzwvZGl2PicgK1xyXG4gICAgICAgICAgJzwvZGl2Pic7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFydHMubGVuZ3RoID09PSAyICYmIHBhcnRzLmV2ZXJ5KHggPT4gL15bMC05XSskLy50ZXN0KHgpKSl7XHJcbiAgICAgICAgcmV0dXJuICc8ZGl2IGRhdGEtY29weT1cIicgKyBwYXJ0cy5qb2luKCcgJykgKyAnXCIgY2xhc3M9XCJwbGFxdWUgcGxhcXVlLW1cIj4nICtcclxuICAgICAgICAgICc8ZGl2IGNsYXNzPVwicGFydDFcIj4nICsgcGFydHNbMF0gKyAnPC9kaXY+JyArXHJcbiAgICAgICAgICAnPGRpdiBjbGFzcz1cInBhcnQyXCI+JyArIHBhcnRzWzFdICsgJzwvZGl2PicgK1xyXG4gICAgICAgICAgJzwvZGl2Pic7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFydHMubGVuZ3RoID09PSAyKXtcclxuICAgICAgICByZXR1cm4gJzxkaXYgZGF0YS1jb3B5PVwiJyArIHBhcnRzLmpvaW4oJyAnKSArICdcIiBjbGFzcz1cInBsYXF1ZSBwbGFxdWUtZlwiPicgK1xyXG4gICAgICAgICAgJzxkaXYgY2xhc3M9XCJwYXJ0MVwiPicgKyBwYXJ0c1swXSArICc8L2Rpdj4nICtcclxuICAgICAgICAgICc8ZGl2IGNsYXNzPVwicGFydDJcIj4nICsgcGFydHNbMV0gKyAnPC9kaXY+JyArXHJcbiAgICAgICAgICAnPC9kaXY+JztcclxuICAgICAgfSBlbHNlIGlmIChwYXJ0cy5sZW5ndGggPT09IDEpe1xyXG4gICAgICAgIHJldHVybiAnPGRpdiBkYXRhLWNvcHk9XCInICsgcGFydHNbMF0gKyAnXCIgY2xhc3M9XCJwbGFxdWUgcGxhcXVlLWdcIj4nICtcclxuICAgICAgICAgICc8ZGl2IGNsYXNzPVwicGFydDFcIj4nICsgcGFydHNbMF0gKyAnPC9kaXY+JyArXHJcbiAgICAgICAgICAnPC9kaXY+JztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5QbGFxdWVUZXh0KSB7XHJcbiAgICAgIHJldHVybiBgPGRpdiBjbGFzcz1cImx0clwiPiR7SGVscGVyQ2xhc3MuVG9SZWFkYWJsZVBsYXF1ZShjdil9PC9kaXY+YDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmwoY3YpO1xyXG4gIH1cclxuICBleGNlbCgpOiB2b2lke1xyXG4gICAgY29uc3QgZGF0YSA9IFtdO1xyXG4gICAgdGhpcy5yb3dzLmZvckVhY2gocm93ID0+IHtcclxuICAgICAgY29uc3QgeCA9IHt9O1xyXG4gICAgICB0aGlzLmNvbHMuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgIGxldCB0eHQ6IGFueSA9IHRoaXMuZ2V0VGV4dCh0aGlzLmdldENlbGwocm93LCBjb2wpKTtcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuUHJpY2Upe1xyXG4gICAgICAgICAgdHh0ID0gcGFyc2VJbnQodHh0LnJlcGxhY2UoJ9ix24zYp9mEJywgJycpLnJlcGxhY2UoLywvZywgJycpLnRyaW0oKSwgMTApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB4W3RoaXMubChjb2wubmFtZSldID0gdHh0O1xyXG4gICAgICB9KTtcclxuICAgICAgZGF0YS5wdXNoKHgpO1xyXG4gICAgfSk7XHJcbiAgICBuZXcgRXhjZWxDbGFzcygpLmV4cG9ydEFzRXhjZWxGaWxlKGRhdGEsIHRoaXMubCh0aGlzLnBlcm1pc3Npb25zPy5OYW1lID8/ICdFeHBvcnRFeGNlbERhdGEnKSk7XHJcbiAgfVxyXG4gIGdldFRleHQocyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgc3Bhbi5pbm5lckhUTUwgPSBzO1xyXG4gICAgcmV0dXJuIHNwYW4udGV4dENvbnRlbnQgfHwgc3Bhbi5pbm5lclRleHQ7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGFibGVDb2xsQ2xhc3Mge1xyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgY2xzID0gJycsIHR5cGU6IFRhYmxlQ29sbFR5cGUgPSBUYWJsZUNvbGxUeXBlLlRleHQsXHJcbiAgICAgICAgICAgICAgd2l0aFNlYXJjaDogYm9vbGVhbiA9IHRydWUsIHNvcnQ6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5jbGFzcyA9IGNscyArIChbVGFibGVDb2xsVHlwZS5Db2xvciwgVGFibGVDb2xsVHlwZS5VcmwsIFRhYmxlQ29sbFR5cGUuRmlsZVNpemVdLmluY2x1ZGVzKHR5cGUpID8gJyBsdHInIDogJycpO1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMud2l0aFNlYXJjaCA9IHR5cGUgPT09IFRhYmxlQ29sbFR5cGUuSW1hZ2UgPyBmYWxzZSA6IHdpdGhTZWFyY2g7XHJcbiAgICB0aGlzLnNvcnQgPSB0eXBlID09PSBUYWJsZUNvbGxUeXBlLkltYWdlID8gZmFsc2UgOiBzb3J0O1xyXG4gIH1cclxuICBlbnVtID0gbnVsbDtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgY2xhc3M6IHN0cmluZztcclxuICBkZWZhdWx0OiBzdHJpbmcgPSBudWxsO1xyXG4gIHNvcnQgPSB0cnVlO1xyXG4gIHdpdGhTZWFyY2g6IGJvb2xlYW47XHJcbiAgc2VhcmNoOiBJbnB1dENsYXNzID0gbnVsbDtcclxuICBzZWFyY2hEZWZhdWx0ID0gbnVsbDtcclxuICB0eXBlOiBUYWJsZUNvbGxUeXBlO1xyXG4gIGZ1bjogKHJvdykgPT4gdm9pZCA9IG51bGw7XHJcbn1cclxuIl19
590
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiRDovUHNUb29sa2l0L1VJL3Byb2plY3RzL3BzLXRvb2xraXQtdWkvc3JjLyIsInNvdXJjZXMiOlsibGliL2NsYXNzZXMvdGFibGUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQVksVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFDaEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQU8sVUFBVTtJQUNyQixZQUFZLFdBQWdCLEVBQUUsQ0FBb0IsRUFBRSxXQUE0QixFQUFFLE9BQWUsRUFBRSxFQUFFLE1BQWMsRUFBRSxFQUN6RyxVQUFrQixFQUFFLEVBQUUsU0FBaUIsRUFBRTtRQVVyRCxnQkFBVyxHQUFRLElBQUksQ0FBQztRQUd4QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBSWxCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxRQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ1gsV0FBTSxHQUFXLE1BQU0sQ0FB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SSxHQUFHLElBQUksQ0FBQztRQUVaLFdBQU0sR0FBZSxJQUFJLENBQUM7UUFDMUIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFckIsUUFBRyxHQUFrQixJQUFJLENBQUM7UUFmeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25ILElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxLQUFLLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxLQUFLLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzFELENBQUM7Q0FXRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TW9kYWxDbGFzc30gZnJvbSAnLi9tb2RhbC5jbGFzcyc7XHJcbmltcG9ydCB7Rm9ybUNsYXNzLCBJbnB1dENsYXNzLCBPcHRpb25DbGFzc30gZnJvbSAnLi9mb3JtLmNsYXNzJztcclxuaW1wb3J0IHtcclxuICBFbnVtVXRpbHMsXHJcbiAgRmlsZUljb25zLFxyXG4gIElucHV0VHlwZSxcclxuICBNZXRob2QsXHJcbiAgUGVybWlzc2lvbkFjY2Vzc1R5cGVFbnVtLFxyXG4gIFBlcm1pc3Npb25JbnB1dEFjdGlvbkVudW0sXHJcbiAgUGVybWlzc2lvbklucHV0VHlwZUVudW0sXHJcbiAgUGVybWlzc2lvblR5cGVFbnVtLFxyXG4gIFJlc3VsdFN0YXR1c0VudW0sXHJcbiAgVGFibGVDb2xsVHlwZSxcclxuICBUYWJsZU9wdGlvblR5cGVcclxufSBmcm9tICcuL2VudW0uY2xhc3MnO1xyXG5pbXBvcnQge1JlcXVlc3RDbGFzc30gZnJvbSAnLi9yZXF1ZXN0LmNsYXNzJztcclxuaW1wb3J0IHtQZXJtaXNzaW9uQ2xhc3N9IGZyb20gJy4vcGVybWlzc2lvbi5jbGFzcyc7XHJcbmltcG9ydCB7SGVscGVyQ2xhc3N9IGZyb20gJy4vaGVscGVyLmNsYXNzJztcclxuaW1wb3J0ICogYXMgJCBmcm9tICdqcXVlcnknO1xyXG5pbXBvcnQge0V4Y2VsQ2xhc3N9IGZyb20gJy4vZXhjZWwuY2xhc3MnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcblxyXG5leHBvcnQgY2xhc3MgVGFibGVDbGFzcyB7XHJcbiAgY29uc3RydWN0b3IoZW52aXJvbm1lbnQ6IGFueSwgbDogKGssIHY/KSA9PiBzdHJpbmcsIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uQ2xhc3MsIG5hbWU6IHN0cmluZyA9ICcnLCBjbHM6IHN0cmluZyA9ICcnLFxyXG4gICAgICAgICAgICAgIHBlclBhZ2U6IG51bWJlciA9IDEwLCBoZWlnaHQ6IG51bWJlciA9IDUwKSB7XHJcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XHJcbiAgICB0aGlzLmwgPSBsO1xyXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuaWQgPSB0aGlzLm5hbWU7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25zID0gcGVybWlzc2lvbnM7XHJcbiAgICB0aGlzLmNsYXNzID0gY2xzO1xyXG4gICAgdGhpcy5wZXJQYWdlID0gcGVyUGFnZTtcclxuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gIH1cclxuICBlbnZpcm9ubWVudDogYW55ID0gbnVsbDtcclxuICBsOiAoaywgdj8pID0+IHN0cmluZztcclxuICBwZXJtaXNzaW9uczogUGVybWlzc2lvbkNsYXNzO1xyXG4gIHBlcm1pc3Npb24gPSB0cnVlO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBpZDogc3RyaW5nO1xyXG4gIGNsYXNzOiBzdHJpbmc7XHJcbiAgc3R5bGUgPSB7fTtcclxuICB1cmwgPSBudWxsO1xyXG4gIG1ldGhvZDogTWV0aG9kID0gTWV0aG9kLlBvc3Q7XHJcbiAgaGVpZ2h0ID0gNDA7XHJcbiAgcGVyUGFnZSA9IDEwO1xyXG4gIGNvbHM6IFRhYmxlQ29sbENsYXNzW10gPSBbXTtcclxuICBidXR0b25zOiBJbnB1dENsYXNzW10gPSBbXTtcclxuICBvcHRpb25zQWN0aW9uczogYW55W10gPSBbXTtcclxuICByb3dzID0gW107XHJcbiAgY291bnQgPSAwO1xyXG4gIHBhZ2UgPSAxO1xyXG4gIHNvcnQgPSBudWxsO1xyXG4gIHRpdGxlID0gbnVsbDtcclxuICBkZXNjcmlwdGlvbiA9IG51bGw7XHJcbiAgc29ydFR5cGUgPSBudWxsO1xyXG4gIGRpc3BsYXlMYWJlbCA9IHRydWU7XHJcbiAgc29ydGFibGUgPSBmYWxzZTtcclxuICBleHBlcnRTZWFyY2ggPSBmYWxzZTtcclxuICBvcHRpb25UeXBlID0gVGFibGVPcHRpb25UeXBlLkhpZGRlbjtcclxuICBsb2FkaW5nID0gdHJ1ZTtcclxuICBoYXNDaGlsZHJlbiA9IGZhbHNlO1xyXG4gIHZlcnRpY2FsID0gZmFsc2U7XHJcbiAgY2hpbGRyZW5BdXRvTG9hZCA9IGZhbHNlO1xyXG4gIHdpdGhDaGVjayA9IGZhbHNlO1xyXG4gIHdpdGhTZWxlY3QgPSBmYWxzZTtcclxuICBzaG93RXh0cmFCdXR0b25zID0gdHJ1ZTtcclxuICBmaXJzdExvYWQgPSB0cnVlO1xyXG4gIGV4dHJhQnV0dG9uczogSW5wdXRDbGFzc1tdID0gW107XHJcbiAgb3B0aW9uQnV0dG9uczogSW5wdXRDbGFzc1tdID0gW107XHJcbiAgZm9ybTogRm9ybUNsYXNzID0gbnVsbDtcclxuICBzZWFyY2hGb3JtOiBGb3JtQ2xhc3MgPSBudWxsO1xyXG4gIG1vZGFsOiBNb2RhbENsYXNzID0gbnVsbDtcclxuICBsZXZlbCA9IG51bGw7XHJcbiAgd2l0aFJlbGF0ZWRSb3cgPSBmYWxzZTtcclxuICByZWxhdGVkUm93ID0gbnVsbDtcclxuICBsaXN0QWNjZXNzOiBQZXJtaXNzaW9uQ2xhc3MgPSBudWxsO1xyXG4gIGluc2VydEFjY2VzczogUGVybWlzc2lvbkNsYXNzID0gbnVsbDtcclxuICBzdWJUYWJsZTogVGFibGVDbGFzcyA9IG51bGw7XHJcbiAgcmVxdWVzdDogYW55ID0gbnVsbDtcclxuICBvbkxvYWQ6IChkYXRhKSA9PiB2b2lkID0gbnVsbDtcclxuICBvblNlbGVjdFJvdzogKHJvdykgPT4gdm9pZCA9IG51bGw7XHJcbiAgb25EYmxDbGlja1JvdzogKHJvdykgPT4gdm9pZCA9IG51bGw7XHJcbiAgb25SaWdodENsaWNrUm93OiAocm93KSA9PiB2b2lkID0gbnVsbDtcclxuICBvbkNoYW5nZUNoZWNrOiAocm93KSA9PiB2b2lkID0gbnVsbDtcclxuICBvblNvcnQ6ICgpID0+IHZvaWQgPSBudWxsO1xyXG4gIGdldFJvd0NsYXNzOiAocm93OiBhbnkpID0+IHN0cmluZyA9IG51bGw7XHJcbiAgc2hvd0NvbmZpcm06IChsOiBzdHJpbmcsIHVybDogc3RyaW5nLCBkYXRhLCBhY2NlcHQ6IChidG46IElucHV0Q2xhc3MpID0+IHZvaWQpID0+IHZvaWQgPSBudWxsO1xyXG4gIGxvYWQoYnRuID0gbnVsbCk6IHZvaWR7XHJcbiAgICBpZiAodGhpcy51cmwpe1xyXG4gICAgICB0aGlzLnNlbmRSZXF1ZXN0KGJ0bik7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkYXRhKCk6IGFueVtde1xyXG4gICAgcmV0dXJuIHRoaXMucm93cy5maWx0ZXIoeCA9PiB4LmNoZWNrZWQpLm1hcCh4ID0+IHguRGF0YSk7XHJcbiAgfVxyXG5cclxuICBzZXRDb2xzKCk6IHZvaWR7XHJcbiAgICBmb3IgKGNvbnN0IGMgb2YgdGhpcy5jb2xzLmZpbHRlcih4ID0+IHgud2l0aFNlYXJjaCkpe1xyXG4gICAgICBjLnNlYXJjaCA9IG5ldyBJbnB1dENsYXNzKHRoaXMuZW52aXJvbm1lbnQsIHRoaXMubCwgYy5uYW1lLCBudWxsLCBJbnB1dFR5cGUuVGV4dCwgJ2gtMjUgdGFibGUtc2VhcmNoJywgYy5zZWFyY2hEZWZhdWx0KTtcclxuICAgICAgaWYgKGMudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5EYXRlIHx8IGMudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5EYXRlVGltZSB8fCBjLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuRGF0ZURpZiB8fCBjLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuRGF0ZVJlbWFpbil7XHJcbiAgICAgICAgYy5zZWFyY2gudHlwZSA9IElucHV0VHlwZS5EYXRlO1xyXG4gICAgICB9IGVsc2UgaWYgKGMudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5Nb250aCl7XHJcbiAgICAgICAgYy5zZWFyY2gudHlwZSA9IElucHV0VHlwZS5Nb250aDtcclxuICAgICAgfSBlbHNlIGlmIChjLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuWWVhcil7XHJcbiAgICAgICAgYy5zZWFyY2gudHlwZSA9IElucHV0VHlwZS5ZZWFyO1xyXG4gICAgICB9IGVsc2UgaWYgKGMudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5QcmljZSl7XHJcbiAgICAgICAgYy5zZWFyY2gudHlwZSA9IElucHV0VHlwZS5QcmljZTtcclxuICAgICAgfSBlbHNlIGlmIChjLmVudW0gIT0gbnVsbCl7XHJcbiAgICAgICAgYy5zZWFyY2gudHlwZSA9IElucHV0VHlwZS5TZWxlY3Q7XHJcbiAgICAgICAgYy5zZWFyY2gub3B0aW9ucyA9IFtuZXcgT3B0aW9uQ2xhc3MoJycsICctMScpXS5jb25jYXQoRW51bVV0aWxzLmdldEtleXNBbmRWYWx1ZXMoYy5lbnVtKS5tYXAoeCA9PiBuZXcgT3B0aW9uQ2xhc3ModGhpcy5sKHgua2V5KSwgeC52YWx1ZS50b1N0cmluZygpKSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGMuc2VhcmNoLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgfVxyXG4gICAgICBjLnNlYXJjaC5kaXNwbGF5TGFiZWwgPSBmYWxzZTtcclxuICAgICAgYy5zZWFyY2gub25DaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYWdlID0gMTtcclxuICAgICAgICB0aGlzLmxvYWQoKTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbmRSZXF1ZXN0KGJ0bjogSW5wdXRDbGFzcyA9IG51bGwpOiB2b2lke1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoRm9ybSAmJiAhdGhpcy5zZWFyY2hGb3JtLmNoZWNrKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGlmIChidG4pe1xyXG4gICAgICBpZiAoYnRuLmxvYWRpbmcpe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBidG4ubG9hZGluZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlcXVlc3QgPSBuZXcgUmVxdWVzdENsYXNzKHRoaXMuZW52aXJvbm1lbnQpLmdldENsaWVudCh0aGlzLnJlcXVlc3QsIHRoaXMudXJsLCB0aGlzLm1ldGhvZCwgdGhpcy5zZWFyY2hEYXRhKCksXHJcbiAgICAgIChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gUmVzdWx0U3RhdHVzRW51bS5TdWNjZXNzKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy52ZXJ0aWNhbCl7XHJcbiAgICAgICAgICAgIGNvbnN0IGM6IGFueSA9IHt9O1xyXG4gICAgICAgICAgICB0aGlzLmNvbHMuZm9yRWFjaCh4ID0+IGNbeC5uYW1lXSA9IHgubmFtZSk7XHJcbiAgICAgICAgICAgIGMuQ29sVHlwZSA9ICdDb2x1bW4nO1xyXG4gICAgICAgICAgICByZXMucmVzdWx0Lkxpc3QudW5zaGlmdCh7RGF0YTogYywgT3B0aW9uczogW119KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucm93cyA9IHJlcy5yZXN1bHQuTGlzdDtcclxuICAgICAgICAgIHRoaXMuY291bnQgPSByZXMucmVzdWx0LkNvdW50O1xyXG4gICAgICAgICAgaWYgKHRoaXMub25Mb2FkKXtcclxuICAgICAgICAgICAgdGhpcy5vbkxvYWQocmVzLnJlc3VsdC5EYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChidG4pe1xyXG4gICAgICAgICAgICBidG4ubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBtID0gJyc7XHJcbiAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gUmVzdWx0U3RhdHVzRW51bS5Ob3RSZWdpc3RlcmVkKSB7XHJcbiAgICAgICAgICAgIG0gPSAnRm9ybUJhc2VFcnJvck5vdFJlZ2lzdGVyZWQnO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMuc3RhdHVzID09PSBSZXN1bHRTdGF0dXNFbnVtLkV4cGlyZWRSZWdpc3RlcmVkKSB7XHJcbiAgICAgICAgICAgIG0gPSAnRm9ybUJhc2VFcnJvckV4cGlyZWRSZWdpc3RlcmVkJztcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzLnN0YXR1cyA9PT0gUmVzdWx0U3RhdHVzRW51bS5JbnZhbGlkSXApIHtcclxuICAgICAgICAgICAgbSA9ICdGb3JtQmFzZUVycm9ySW52YWxpZElwJztcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzLnN0YXR1cyA9PT0gUmVzdWx0U3RhdHVzRW51bS5Ob0NyZWRpdCkge1xyXG4gICAgICAgICAgICBtID0gJ0Zvcm1CYXNlRXJyb3JOb0NyZWRpdCc7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5zdGF0dXMgPT09IFJlc3VsdFN0YXR1c0VudW0uVW5hdXRob3JpemVkKSB7XHJcbiAgICAgICAgICAgIG0gPSAnRm9ybUJhc2VFcnJvckV4cGlyZWQnO1xyXG4gICAgICAgICAgICBIZWxwZXJDbGFzcy5lcmFzZUNvb2tpZSgnVE9LRU4nKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzLnN0YXR1cyA9PT0gUmVzdWx0U3RhdHVzRW51bS5Ob3RBY2Nlc3MpIHtcclxuICAgICAgICAgICAgbSA9ICdGb3JtQmFzZUVycm9yQWNjZXNzJztcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzLnN0YXR1cyA9PT0gUmVzdWx0U3RhdHVzRW51bS5Ob3RQZXJtaXNzaW9uKSB7XHJcbiAgICAgICAgICAgIG0gPSAnRm9ybUJhc2VFcnJvclBlcm1pc3Npb24nO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXMubWVzc2FnZSA9PT0gJ3N0cmluZycpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFtID0gcmVzLm1lc3NhZ2Uuc3BsaXQoJzonKTtcclxuICAgICAgICAgICAgICBtID0gdGhpcy5sKGFtWzBdLCBhbS5sZW5ndGggPiAxID8gYW0uc2xpY2UoMSkgOiBudWxsKTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmZvcmluXHJcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBtc2cgaW4gcmVzLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgIC8vIG5vaW5zcGVjdGlvbiBKU1VuZmlsdGVyZWRGb3JJbkxvb3BcclxuICAgICAgICAgICAgICAgIG0gPSB0aGlzLmwobXNnLCByZXMubWVzc2FnZVttc2ddKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChtKSB7XHJcbiAgICAgICAgICAgIEhlbHBlckNsYXNzLmFkZE5vdGlmaWNhdGlvbih0aGlzLmwobSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5yb3dzID0gW107XHJcbiAgICAgICAgICB0aGlzLmNvdW50ID0gMDtcclxuICAgICAgICAgIHRoaXMucGFnZSA9IDE7XHJcbiAgICAgICAgICBpZiAoYnRuKXtcclxuICAgICAgICAgICAgYnRuLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucm93cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuY291bnQgPSAwO1xyXG4gICAgICAgIHRoaXMucGFnZSA9IDE7XHJcbiAgICAgICAgaWYgKGJ0bil7XHJcbiAgICAgICAgICBidG4ubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldE9wdGlvblVybCh1cmwsIHJlbGF0ZWRJZCwgcm93SWQpOiBzdHJpbmd7XHJcbiAgICByZXR1cm4gKHJlbGF0ZWRJZCA/IHVybC5yZXBsYWNlKCd7fScsIHJlbGF0ZWRJZCkgOiAodXJsLm1hdGNoKC97fS9nKSB8fCBbXSkubGVuZ3RoID4gMSA/IHVybC5yZXBsYWNlKCcve30nLCAnJykgOiB1cmwpLnJlcGxhY2UoJ3t9Jywgcm93SWQpO1xyXG4gIH1cclxuICBzZWFyY2hEYXRhKHJlcG9ydCA9IGZhbHNlKToge30ge1xyXG4gICAgbGV0IGQ6IGFueSA9IHt9O1xyXG4gICAgaWYgKCFyZXBvcnQpe1xyXG4gICAgICBkLlBhZ2UgPSB0aGlzLnBhZ2U7XHJcbiAgICAgIGQuUGVyUGFnZSA9IHRoaXMucGVyUGFnZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGQuUmVwb3J0SWQgPSBIZWxwZXJDbGFzcy5yYW5kb20oMjApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc29ydGFibGUpe1xyXG4gICAgICBkLlNvcnQgPSAnUHJpb3JpdHknO1xyXG4gICAgICBkLlNvcnRUeXBlID0gJ0FTQyc7XHJcbiAgICB9ZWxzZSBpZiAodGhpcy5zb3J0KXtcclxuICAgICAgZC5Tb3J0ID0gdGhpcy5zb3J0O1xyXG4gICAgICBkLlNvcnRUeXBlID0gdGhpcy5zb3J0VHlwZTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3QgYyBvZiB0aGlzLmNvbHMuZmlsdGVyKHggPT4geC53aXRoU2VhcmNoICYmIHguc2VhcmNoICE9IG51bGwgJiYgeC5zZWFyY2guZGF0YSgpICE9IG51bGwgJiYgeC5zZWFyY2guZGF0YSgpICE9PSAnJykpe1xyXG4gICAgICBjb25zdCB2bCA9IGMuc2VhcmNoLmRhdGEoKTtcclxuICAgICAgdGhpcy5hZGREYXRhKGQsIGMubmFtZSwgdmwpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMud2l0aFJlbGF0ZWRSb3cpe1xyXG4gICAgICBkID0gT2JqZWN0LmFzc2lnbih7fSwgZCwgdGhpcy5yZWxhdGVkUm93KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnNlYXJjaEZvcm0gPyB0aGlzLnNlYXJjaEZvcm0uZGF0YShkKSA6IGQ7XHJcbiAgfVxyXG4gIGFkZERhdGEoZDoge30sIG5hbWU6IHN0cmluZywgdmw6IGFueSk6IHZvaWR7XHJcbiAgICBpZiAodHlwZW9mIHZsID09PSAnb2JqZWN0JyAmJiAhKHZsIGluc3RhbmNlb2YgQXJyYXkpKXtcclxuICAgICAgZm9yIChjb25zdCBbIGtleSwgdmFsdWUgXSBvZiBPYmplY3QuZW50cmllcyh2bCkpIHtcclxuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCl7XHJcbiAgICAgICAgICBkW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh2bCAhPSBudWxsKXtcclxuICAgICAgICBkW25hbWVdID0gdmw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZ2V0VXJsKHVybDogc3RyaW5nKTogc3RyaW5ne1xyXG4gICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbnMuUmVsYXRlZElkID8gdXJsLnJlcGxhY2UoJ3t9JywgdGhpcy5wZXJtaXNzaW9ucy5SZWxhdGVkSWQpIDogdXJsLnJlcGxhY2UoJy97fScsICcnKTtcclxuICB9XHJcbiAgc2hvd0luc2VydE1vZGFsKGNJZCA9IG51bGwsIGxldmVsID0gbnVsbCwgZGF0YSA9IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5pc0VkaXQgPSBmYWxzZTtcclxuICAgIHRoaXMuZm9ybS51cmwgPSB0aGlzLmZvcm0uYmFzZVVybCA9IHRoaXMuZ2V0VXJsKHRoaXMuaW5zZXJ0QWNjZXNzLlVybCkgKyAoY0lkID8gJy8nICsgY0lkIDogJycpO1xyXG4gICAgdGhpcy5mb3JtLm5hbWUgPSB0aGlzLmluc2VydEFjY2Vzcy5OYW1lO1xyXG4gICAgdGhpcy5mb3JtLm1ldGhvZCA9IE1ldGhvZC5Qb3N0O1xyXG4gICAgdGhpcy5mb3JtLmlucHV0cy5maWx0ZXIoeCA9PiB4LmluRWRpdERpc2FibGVkKS5mb3JFYWNoKHggPT4geC5kaXNhYmxlZCA9IGZhbHNlKTtcclxuICAgIHRoaXMuZm9ybS5pbnB1dHMuZmlsdGVyKHggPT4gIXguaW5FZGl0VmlzaWJsZSkuZm9yRWFjaCh4ID0+IHgudmlzaWJsZSA9IHRydWUpO1xyXG4gICAgdGhpcy5mb3JtLmlucHV0cy5mb3JFYWNoKHggPT4geC5yZXF1aXJlZCA9IHguYmFzZVJlcXVpcmVkKTtcclxuICAgIGNvbnN0IGwgPSB0aGlzLmZvcm0uaW5wdXRzLmZpbmQoeCA9PiB4Lm5hbWUgPT09ICdMZXZlbCcpO1xyXG4gICAgaWYgKGxldmVsICE9IG51bGwgJiYgbCl7XHJcbiAgICAgIGwudmFsdWUgPSBsZXZlbDtcclxuICAgIH1cclxuICAgIHRoaXMubW9kYWwuc2hvdyhkYXRhKTtcclxuICB9XHJcbiAgc2V0KGNoYW5nZVJvd3MgPSBudWxsKTogdm9pZHtcclxuICAgIHRoaXMucGVybWlzc2lvbiA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5wZXJtaXNzaW9ucylcclxuICAgIHtcclxuICAgICAgdGhpcy5saXN0QWNjZXNzID0gdGhpcy5wZXJtaXNzaW9ucy5nZXRBY2Nlc3MoUGVybWlzc2lvbkFjY2Vzc1R5cGVFbnVtLkxpc3QpO1xyXG4gICAgICB0aGlzLmluc2VydEFjY2VzcyA9IHRoaXMucGVybWlzc2lvbnMuZ2V0QWNjZXNzKFBlcm1pc3Npb25BY2Nlc3NUeXBlRW51bS5JbnNlcnQpO1xyXG4gICAgICBpZiAodGhpcy5saXN0QWNjZXNzICE9PSBudWxsKXtcclxuICAgICAgICB0aGlzLnRpdGxlID0gdGhpcy5saXN0QWNjZXNzLk5hbWU7XHJcbiAgICAgICAgdGhpcy51cmwgPSB0aGlzLmdldFVybCh0aGlzLmxpc3RBY2Nlc3MuVXJsKTtcclxuICAgICAgICBpZiAodGhpcy5wZXJtaXNzaW9ucy5UeXBlICE9PSBQZXJtaXNzaW9uVHlwZUVudW0uRm9ybSl7XHJcbiAgICAgICAgICBpZiAodGhpcy5maXJzdExvYWQpe1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNle1xyXG4gICAgICAgIHRoaXMucGVybWlzc2lvbiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZvcm0gJiYgdGhpcy5mb3JtLm9uVG9wKXtcclxuICAgICAgdGhpcy5mb3JtLmRpc3BsYXlMYWJlbCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBhY2Nlc3Mgb2YgdGhpcy5wZXJtaXNzaW9ucy5nZXRBY2Nlc3NlcygpLmZpbHRlcih4ID0+IHguSW5wdXRBY3Rpb24gIT09IFBlcm1pc3Npb25JbnB1dEFjdGlvbkVudW0uTm9uZSkpe1xyXG4gICAgICBpZiAodGhpcy5idXR0b25zLmZpbHRlcih4ID0+IHgubmFtZSA9PT0gYWNjZXNzLk5hbWUpLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGFjY2Vzc0lucCA9IG5ldyBJbnB1dENsYXNzKHRoaXMuZW52aXJvbm1lbnQsIHRoaXMubCwgYWNjZXNzLk5hbWUsIGFjY2Vzcy5JY29uLFxyXG4gICAgICAgIGFjY2Vzcy5JbnB1dFR5cGUgPT09IFBlcm1pc3Npb25JbnB1dFR5cGVFbnVtLkJ1dHRvbiA/IElucHV0VHlwZS5CdXR0b24gOiBJbnB1dFR5cGUuSWNvbiwgJ2JsdWUgcC0wIG0tci0xMC1wIHctdSBoLTMwJyk7XHJcbiAgICAgIGlmIChhY2Nlc3MuQWNjZXNzVHlwZSA9PT0gUGVybWlzc2lvbkFjY2Vzc1R5cGVFbnVtLkluc2VydCl7XHJcbiAgICAgICAgYWNjZXNzSW5wLmNsYXNzID0gYWNjZXNzSW5wLmNsYXNzLnJlcGxhY2UoJ2JsdWUnLCAnZ3JlZW4nKTtcclxuICAgICAgICBpZiAodGhpcy5mb3JtKXtcclxuICAgICAgICAgIHRoaXMuZm9ybS51cmwgPSB0aGlzLmZvcm0uYmFzZVVybCA9IHRoaXMuZ2V0VXJsKGFjY2Vzcy5VcmwpO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmZvcm0ub25Ub3Ape1xyXG4gICAgICAgICAgICBhY2Nlc3NJbnAub25DbGljayA9ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmZvcm0ub25TdWNjZXNzQmFzZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubW9kYWwuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkKCk7XHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB0aGlzLnNob3dJbnNlcnRNb2RhbCgpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5kaXNwbGF5TGFiZWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBpZiAodGhpcy5tb2RhbCl7XHJcbiAgICAgICAgICAgIGFjY2Vzc0lucC5vbkNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kYWwuc2hvdygpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGFjY2Vzc0lucC51cmwgPSBhY2Nlc3MuVXJsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChhY2Nlc3MuQWNjZXNzVHlwZSA9PT0gUGVybWlzc2lvbkFjY2Vzc1R5cGVFbnVtLlJlcG9ydCl7XHJcbiAgICAgICAgYWNjZXNzSW5wLm9uQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBwID0gbmV3IFBlcm1pc3Npb25DbGFzcygpO1xyXG4gICAgICAgICAgcC5BcmVhID0gdGhpcy5wZXJtaXNzaW9ucy5BcmVhO1xyXG4gICAgICAgICAgcC5Db250cm9sbGVyID0gJ3ByaW50JztcclxuICAgICAgICAgIHAuQWN0aW9uID0gdGhpcy5wZXJtaXNzaW9ucy5Db250cm9sbGVyICsgKHRoaXMucGVybWlzc2lvbnMuQWN0aW9uID8gdGhpcy5wZXJtaXNzaW9ucy5BY3Rpb24gOiAnJyk7XHJcbiAgICAgICAgICBjb25zdCBwYXJhbXMgPSAkLnBhcmFtKHRoaXMuc2VhcmNoRGF0YSh0cnVlKSk7XHJcbiAgICAgICAgICBjb25zdCB1ID0gdGhpcy5nZXRVcmwoYWNjZXNzLlVybCk7XHJcbiAgICAgICAgICB3aW5kb3cub3BlbignL3JlcG9ydCcgKyB1ICsgKHBhcmFtcyA/ICh1LmluY2x1ZGVzKCc/JykgPyAnJicgOiAnPycpICsgcGFyYW1zIDogJycpLCAnX2JsYW5rJyk7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChhY2Nlc3MuSW5wdXRBY3Rpb24gPT09IFBlcm1pc3Npb25JbnB1dEFjdGlvbkVudW0uTW9kYWwpe1xyXG4gICAgICAgIGFjY2Vzc0lucC5tb2RhbCA9IHRoaXMub3B0aW9uc0FjdGlvbnMuZmluZCh4ID0+IHgubmFtZSA9PT0gYWNjZXNzLkFjdGlvbik7XHJcbiAgICAgICAgYWNjZXNzSW5wLm9uQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoYWNjZXNzSW5wLm1vZGFsLnRhYmxlKXtcclxuICAgICAgICAgICAgY29uc3QgcCA9IG5ldyBQZXJtaXNzaW9uQ2xhc3MoKTtcclxuICAgICAgICAgICAgcC5BcmVhID0gdGhpcy5wZXJtaXNzaW9ucy5BcmVhO1xyXG4gICAgICAgICAgICBwLkNvbnRyb2xsZXIgPSB0aGlzLnBlcm1pc3Npb25zLkNvbnRyb2xsZXI7XHJcbiAgICAgICAgICAgIHAuQWN0aW9uID0gYWNjZXNzLkFjdGlvbjtcclxuICAgICAgICAgICAgYWNjZXNzSW5wLm1vZGFsLnRhYmxlLnBlcm1pc3Npb25zID0gcDtcclxuICAgICAgICAgICAgaWYgKGFjY2Vzc0lucC5tb2RhbC50YWJsZS5mb3JtKXtcclxuICAgICAgICAgICAgICBhY2Nlc3NJbnAubW9kYWwudGFibGUuZm9ybS51cmwgPSBhY2Nlc3MuVXJsO1xyXG4gICAgICAgICAgICAgIGFjY2Vzc0lucC5tb2RhbC50YWJsZS5mb3JtLmJhc2VVcmwgPSBhY2Nlc3MuVXJsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFjY2Vzc0lucC5tb2RhbC50YWJsZS5zZXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChhY2Nlc3NJbnAubW9kYWwuZm9ybSl7XHJcbiAgICAgICAgICAgIGFjY2Vzc0lucC5tb2RhbC5mb3JtLm5hbWUgPSBhY2Nlc3MuTmFtZTtcclxuICAgICAgICAgICAgYWNjZXNzSW5wLm1vZGFsLmZvcm0udXJsID0gYWNjZXNzLlVybDtcclxuICAgICAgICAgICAgYWNjZXNzSW5wLm1vZGFsLmZvcm0ub25TdWNjZXNzQmFzZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICBhY2Nlc3NJbnAubW9kYWwuaGlkZSgpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSBpZiAoYWNjZXNzLklucHV0QWN0aW9uID09PSBQZXJtaXNzaW9uSW5wdXRBY3Rpb25FbnVtLk9uQ2xpY2spe1xyXG4gICAgICAgIGFjY2Vzc0lucC5vbkNsaWNrID0gKGJ0bikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zQWN0aW9ucy5maW5kKHggPT4geC5uYW1lID09PSBhY2Nlc3MuQWN0aW9uKS5vbkNsaWNrKGJ0bik7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmJ1dHRvbnMucHVzaChhY2Nlc3NJbnApO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgdGhpcy5wZXJtaXNzaW9ucy5nZXRPcHRpb25zKCkuZmlsdGVyKHggPT4geC5NdWx0aSkpe1xyXG4gICAgICBjb25zdCBvcHQgPSBuZXcgSW5wdXRDbGFzcyh0aGlzLmVudmlyb25tZW50LCB0aGlzLmwsIG9wdGlvbi5OYW1lLCBvcHRpb24uSWNvbiwgSW5wdXRUeXBlLkljb24sICdtLXItMTAtcCcpO1xyXG4gICAgICBpZiAob3B0aW9uLkFjY2Vzc1R5cGUgPT09IFBlcm1pc3Npb25BY2Nlc3NUeXBlRW51bS5SZXBvcnQpe1xyXG4gICAgICAgIG9wdC5vbkNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5kYXRhKCkubWFwKHggPT4gJ0lkcz0nICsgeC5JZCkuam9pbignJicpO1xyXG4gICAgICAgICAgY29uc3QgdSA9IHRoaXMuZ2V0T3B0aW9uVXJsKG9wdGlvbi5VcmwsIHRoaXMucGVybWlzc2lvbnMuUmVsYXRlZElkLCAnJyk7XHJcbiAgICAgICAgICB3aW5kb3cub3BlbignL3JlcG9ydCcgKyB1ICsgKHBhcmFtcyA/ICh1LmluY2x1ZGVzKCc/JykgPyAnJicgOiAnPycpICsgcGFyYW1zIDogJycpLCAnX2JsYW5rJyk7XHJcbiAgICAgICAgfTtcclxuICAgICAgfSAgZWxzZSBpZiAob3B0aW9uLklucHV0QWN0aW9uID09PSBQZXJtaXNzaW9uSW5wdXRBY3Rpb25FbnVtLk9uQ2xpY2spe1xyXG4gICAgICAgIG9wdC5vbkNsaWNrID0gKGJ0bikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zQWN0aW9ucy5maW5kKHggPT4geC5uYW1lID09PSBvcHRpb24uQWN0aW9uKS5vbkNsaWNrKGJ0bik7XHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvcHQub25DbGljayA9ICgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHAgPSBuZXcgUGVybWlzc2lvbkNsYXNzKCk7XHJcbiAgICAgICAgICBwLlJlbGF0ZWRJZCA9IHRoaXMucGVybWlzc2lvbnMuUmVsYXRlZElkO1xyXG4gICAgICAgICAgcC5BcmVhID0gdGhpcy5wZXJtaXNzaW9ucy5BcmVhO1xyXG4gICAgICAgICAgcC5Db250cm9sbGVyID0gb3B0aW9uLkNvbnRyb2xsZXI7XHJcbiAgICAgICAgICBwLkFjdGlvbiA9IG9wdGlvbi5BY3Rpb247XHJcbiAgICAgICAgICBjb25zdCBkYXRhID0ge0lkczogdGhpcy5kYXRhKCkubWFwKHggPT4geC5JZCl9O1xyXG4gICAgICAgICAgdGhpcy5zaG93Q29uZmlybSh0aGlzLmwob3B0aW9uLkFjdGlvbiArICdDb25maXJtTXVsdGknLCBkYXRhLklkcy5sZW5ndGgpLCB0aGlzLmdldE9wdGlvblVybChvcHRpb24uVXJsLCB0aGlzLnBlcm1pc3Npb25zLlJlbGF0ZWRJZCwgJycpLCBkYXRhLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9wdGlvbkJ1dHRvbnMucHVzaChvcHQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZm9ybSl7XHJcbiAgICAgIHRoaXMuZm9ybS5hZGRCdXR0b25zKCdTYXZlJywgdGhpcy5wZXJtaXNzaW9ucy5UeXBlID09PSBQZXJtaXNzaW9uVHlwZUVudW0uRm9ybSA/ICdncmVlbiB3LTEwIG9ubHktaWNvbiBmLWwnIDogJ2dyZWVuJyxcclxuICAgICAgICB0aGlzLnBlcm1pc3Npb25zLlR5cGUgIT09IFBlcm1pc3Npb25UeXBlRW51bS5Gb3JtLCB0aGlzLnBlcm1pc3Npb25zLmdldEFjY2Vzc2VzKCkuc29tZSh4ID0+IHguQWNjZXNzVHlwZSA9PT0gUGVybWlzc2lvbkFjY2Vzc1R5cGVFbnVtLkluc2VydCksXHJcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9ucy5UeXBlID09PSBQZXJtaXNzaW9uVHlwZUVudW0uRm9ybSA/IChkYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vblRvcEZvcm1TdWJtaXQoZGF0YSwgY2hhbmdlUm93cyk7XHJcbiAgICAgIH0gOiBudWxsKTtcclxuICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4pe1xyXG4gICAgICAgIGNvbnN0IGxldmVsID0gbmV3IElucHV0Q2xhc3ModGhpcy5lbnZpcm9ubWVudCwgdGhpcy5sLCAnTGV2ZWwnLCBudWxsLCBJbnB1dFR5cGUuSGlkZGVuKTtcclxuICAgICAgICB0aGlzLmZvcm0uaW5wdXRzLnB1c2gobGV2ZWwpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZvcm0ub25Ub3Ape1xyXG4gICAgICAgIHRoaXMuZm9ybS5vblN1Y2Nlc3NCYXNlID0gKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLmNsZWFyKHRoaXMuaW5zZXJ0QWNjZXNzICE9IG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkKCk7XHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIXRoaXMubW9kYWwpe1xyXG4gICAgICAgICAgdGhpcy5tb2RhbCA9IG5ldyBNb2RhbENsYXNzKHRoaXMuZW52aXJvbm1lbnQsIHRoaXMubCwgdGhpcy5mb3JtLm5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1vZGFsLmZvcm0gPSB0aGlzLmZvcm07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgb25Ub3BGb3JtU3VibWl0KGRhdGEsIGNoYW5nZVJvd3MgPSBudWxsKTogdm9pZHtcclxuICAgIGlmIChkYXRhLklkKXtcclxuICAgICAgY29uc3QgaSA9IHRoaXMucm93cy5maW5kSW5kZXgoeCA9PiB4LkRhdGEuSWQgPT09IGRhdGEuSWQpO1xyXG4gICAgICB0aGlzLnJvd3NbaV0uRGF0YSA9IGRhdGE7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgZGF0YS5JZCA9IHBhcnNlSW50KEhlbHBlckNsYXNzLnJhbmRvbSg1LCBmYWxzZSwgZmFsc2UpLCAxMCk7XHJcbiAgICAgIGNvbnN0IHVBY2Nlc3MgPSBuZXcgUGVybWlzc2lvbkNsYXNzKCk7XHJcbiAgICAgIHVBY2Nlc3MuQWN0aW9uID0gJ1VwZGF0ZSc7XHJcbiAgICAgIHVBY2Nlc3MuVHlwZSA9IFBlcm1pc3Npb25UeXBlRW51bS5PcHRpb247XHJcbiAgICAgIHVBY2Nlc3MuSW5wdXRBY3Rpb24gPSBQZXJtaXNzaW9uSW5wdXRBY3Rpb25FbnVtLk5vbmU7XHJcbiAgICAgIHVBY2Nlc3MuSW5wdXRUeXBlID0gUGVybWlzc2lvbklucHV0VHlwZUVudW0uSWNvbjtcclxuICAgICAgdUFjY2Vzcy5BY2Nlc3NUeXBlID0gUGVybWlzc2lvbkFjY2Vzc1R5cGVFbnVtLlVwZGF0ZTtcclxuICAgICAgdUFjY2Vzcy5JY29uID0gJ2ZhZCBmYS1wZW4nO1xyXG4gICAgICB1QWNjZXNzLk5hbWUgPSAnVXBkYXRlJztcclxuICAgICAgY29uc3QgZEFjY2VzcyA9IG5ldyBQZXJtaXNzaW9uQ2xhc3MoKTtcclxuICAgICAgZEFjY2Vzcy5BY3Rpb24gPSAnRGVsZXRlJztcclxuICAgICAgZEFjY2Vzcy5UeXBlID0gUGVybWlzc2lvblR5cGVFbnVtLk9wdGlvbjtcclxuICAgICAgZEFjY2Vzcy5JbnB1dEFjdGlvbiA9IFBlcm1pc3Npb25JbnB1dEFjdGlvbkVudW0uTm9uZTtcclxuICAgICAgZEFjY2Vzcy5JbnB1dFR5cGUgPSBQZXJtaXNzaW9uSW5wdXRUeXBlRW51bS5JY29uO1xyXG4gICAgICBkQWNjZXNzLkFjY2Vzc1R5cGUgPSBQZXJtaXNzaW9uQWNjZXNzVHlwZUVudW0uRGVsZXRlO1xyXG4gICAgICBkQWNjZXNzLkljb24gPSAnZmFkIGZhLXRyYXNoJztcclxuICAgICAgZEFjY2Vzcy5OYW1lID0gJ0RlbGV0ZSc7XHJcbiAgICAgIGlmICh0aGlzLnNvcnRUeXBlID09PSAnREVTQycpe1xyXG4gICAgICAgIHRoaXMucm93cy5wdXNoKHtcclxuICAgICAgICAgIERhdGE6IGRhdGEsXHJcbiAgICAgICAgICBPcHRpb25zOiBbdUFjY2VzcywgZEFjY2Vzc11cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvd3MudW5zaGlmdCh7XHJcbiAgICAgICAgICBEYXRhOiBkYXRhLFxyXG4gICAgICAgICAgT3B0aW9uczogW3VBY2Nlc3MsIGRBY2Nlc3NdXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VSb3dzKXtcclxuICAgICAgY2hhbmdlUm93cy5lbWl0KGRhdGEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtLmNsZWFyKHRoaXMuaW5zZXJ0QWNjZXNzICE9IG51bGwpO1xyXG4gICAgaWYgKHRoaXMub25Mb2FkKXtcclxuICAgICAgdGhpcy5vbkxvYWQobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDZWxsKHJvdzogYW55LCBjb2w6IFRhYmxlQ29sbENsYXNzKTogYW55e1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2dldENlbGwnKTtcclxuICAgIGNvbnN0IGN2ID0gXy5nZXQocm93LkRhdGEsIGNvbC5uYW1lKTtcclxuICAgIGlmIChjdiA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gY29sLmRlZmF1bHQgPyBjb2wuZGVmYXVsdCA6ICcnO1xyXG4gICAgfSBlbHNlIGlmIChjb2wuZnVuICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIGNvbC5mdW4ocm93LkRhdGEpO1xyXG4gICAgfSBlbHNlIGlmIChjb2wuZW51bSAhPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5sKEVudW1VdGlscy5nZXRLZXlCeVZhbHVlKGNvbC5lbnVtLCBjdikpO1xyXG4gICAgfSBlbHNlIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5EYXRlRGlmKSB7XHJcbiAgICAgIHJldHVybiBIZWxwZXJDbGFzcy5nZXREYXRlRGlmKHRoaXMubCwgY3YpO1xyXG4gICAgfSBlbHNlIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5EYXRlKSB7XHJcbiAgICAgIHJldHVybiBIZWxwZXJDbGFzcy5nZXREYXRlKGN2KTtcclxuICAgIH0gZWxzZSBpZiAoY29sLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuRGF0ZVRpbWUpIHtcclxuICAgICAgcmV0dXJuICc8c3BhbiBjbGFzcz1cImx0clwiPicgKyBIZWxwZXJDbGFzcy5nZXREYXRlVGltZShjdikgKyAnPC9zcGFuPic7XHJcbiAgICB9IGVsc2UgIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5Nb250aCkge1xyXG4gICAgICByZXR1cm4gSGVscGVyQ2xhc3MuZ2V0RGF0ZShjdiwgJ2pNTU1NIGpZWVlZJyk7XHJcbiAgICB9ICBlbHNlICBpZiAoY29sLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuWWVhcikge1xyXG4gICAgICByZXR1cm4gSGVscGVyQ2xhc3MuZ2V0RGF0ZShjdiwgJ2pZWVlZJyk7XHJcbiAgICB9IGVsc2UgaWYgKGNvbC50eXBlID09PSBUYWJsZUNvbGxUeXBlLlRpbWUpIHtcclxuICAgICAgcmV0dXJuIEhlbHBlckNsYXNzLmdldFRpbWUoY3YpO1xyXG4gICAgfSBlbHNlIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5Db2xvcikge1xyXG4gICAgICByZXR1cm4gJzxkaXYgY2xhc3M9XCJjb2xvclwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogJyArIGN2ICsgJzsgY29sb3I6ICcgKyBIZWxwZXJDbGFzcy5nZXRDb2xvckJ5QmdDb2xvcihjdikgKyAnXCI+JyArIGN2ICsgJzwvZGl2Pic7XHJcbiAgICB9IGVsc2UgaWYgKGNvbC50eXBlID09PSBUYWJsZUNvbGxUeXBlLlVybCkge1xyXG4gICAgICByZXR1cm4gJzxhIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwibHRyXCIgaHJlZj1cIicgKyBjdiArICdcIj4nICsgY3YgKyAnPC9hPic7XHJcbiAgICB9IGVsc2UgaWYgKGNvbC50eXBlID09PSBUYWJsZUNvbGxUeXBlLkltYWdlKSB7XHJcbiAgICAgIHJldHVybiAnPGltZyBzdHlsZT1cImhlaWdodDogJyArIHRoaXMuaGVpZ2h0ICsgJ3B4XCIgYWx0PVwiXCIgc3JjPVwiJyArIHRoaXMuZW52aXJvbm1lbnQudXJsICsgY3YgKyAnXCIvPic7XHJcbiAgICB9IGVsc2UgaWYgKGNvbC50eXBlID09PSBUYWJsZUNvbGxUeXBlLkZpbGVTaXplKSB7XHJcbiAgICAgIHJldHVybiBIZWxwZXJDbGFzcy5nZXRGaWxlU2l6ZShjdik7XHJcbiAgICB9IGVsc2UgaWYgKGNvbC50eXBlID09PSBUYWJsZUNvbGxUeXBlLlByaWNlKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgcmV0dXJuIEhlbHBlckNsYXNzLnRvUHJpY2UodGhpcy5sLCBjdik7XHJcbiAgICAgIH1jYXRjaCB7fVxyXG4gICAgfSAgZWxzZSBpZiAoY29sLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuTnVtYmVyKSB7XHJcbiAgICAgIHJldHVybiBjdi50b0xvY2FsZVN0cmluZygpO1xyXG4gICAgfSAgZWxzZSBpZiAoY29sLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuRmlsZXMpIHtcclxuICAgICAgbGV0IGZpbGVzID0gJyc7XHJcbiAgICAgIGZvciAoY29uc3QgZiBvZiBjdikge1xyXG4gICAgICAgIGNvbnN0IGsgPSBmLnNwbGl0KCcuJykuYXQoLTEpO1xyXG4gICAgICAgIGlmIChrID09PSAnanBlZycgfHwgayA9PT0gJ2pwZycgfHwgayA9PT0gJ3BuZycpe1xyXG4gICAgICAgICAgZmlsZXMgKz0gJzxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCInICsgdGhpcy5lbnZpcm9ubWVudC51cmwgKyBmICsgJ1wiIGNsYXNzPVwibS1oLTVcIj48aW1nIGFsdD1cIlwiIHNyYz1cIicgKyB0aGlzLmVudmlyb25tZW50LnVybCArIGYgKyAnXCIgc3R5bGU9XCJoZWlnaHQ6IDMwcHhcIi8+PC9hPic7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBmaWxlcyArPSAnPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIicgKyB0aGlzLmVudmlyb25tZW50LnVybCArIGYgKyAnXCIgY2xhc3M9XCJmLXMtMzAgbS1oLTUgJyArIEZpbGVJY29uc1trXSArICdcIj48L2E+JztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZpbGVzO1xyXG4gICAgfSBlbHNlIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5QbGFxdWUpIHtcclxuICAgICAgY29uc3QgcGFydHMgPSBjdi5zcGxpdCgnXycpO1xyXG4gICAgICBpZiAocGFydHMubGVuZ3RoID09PSA0KSB7XHJcbiAgICAgICAgcmV0dXJuICc8ZGl2IGRhdGEtY29weT1cIicgKyBwYXJ0cy5qb2luKCcgJykgKyAnXCIgY2xhc3M9XCJwbGFxdWUnICsgKHBhcnRzWzFdID09PSAn2LknID8gJyBwJyA6ICcnKSArIChwYXJ0c1sxXSA9PT0gJ9inJyA/ICcgZycgOiAnJykgKyAnXCI+JyArXHJcbiAgICAgICAgICAnPGRpdiBjbGFzcz1cInBhcnQxXCI+JyArIHBhcnRzWzBdICsgJzwvZGl2PicgK1xyXG4gICAgICAgICAgJzxkaXYgY2xhc3M9XCJwYXJ0MlwiPicgKyBwYXJ0c1sxXSArICc8L2Rpdj4nICtcclxuICAgICAgICAgICc8ZGl2IGNsYXNzPVwicGFydDNcIj4nICsgcGFydHNbMl0gKyAnPC9kaXY+JyArXHJcbiAgICAgICAgICAnPGRpdiBjbGFzcz1cInBhcnQ0XCI+JyArIHBhcnRzWzNdICsgJzwvZGl2PicgK1xyXG4gICAgICAgICAgJzwvZGl2Pic7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFydHMubGVuZ3RoID09PSAyICYmIHBhcnRzLmV2ZXJ5KHggPT4gL15bMC05XSskLy50ZXN0KHgpKSl7XHJcbiAgICAgICAgcmV0dXJuICc8ZGl2IGRhdGEtY29weT1cIicgKyBwYXJ0cy5qb2luKCcgJykgKyAnXCIgY2xhc3M9XCJwbGFxdWUgcGxhcXVlLW1cIj4nICtcclxuICAgICAgICAgICc8ZGl2IGNsYXNzPVwicGFydDFcIj4nICsgcGFydHNbMF0gKyAnPC9kaXY+JyArXHJcbiAgICAgICAgICAnPGRpdiBjbGFzcz1cInBhcnQyXCI+JyArIHBhcnRzWzFdICsgJzwvZGl2PicgK1xyXG4gICAgICAgICAgJzwvZGl2Pic7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFydHMubGVuZ3RoID09PSAyKXtcclxuICAgICAgICByZXR1cm4gJzxkaXYgZGF0YS1jb3B5PVwiJyArIHBhcnRzLmpvaW4oJyAnKSArICdcIiBjbGFzcz1cInBsYXF1ZSBwbGFxdWUtZlwiPicgK1xyXG4gICAgICAgICAgJzxkaXYgY2xhc3M9XCJwYXJ0MVwiPicgKyBwYXJ0c1swXSArICc8L2Rpdj4nICtcclxuICAgICAgICAgICc8ZGl2IGNsYXNzPVwicGFydDJcIj4nICsgcGFydHNbMV0gKyAnPC9kaXY+JyArXHJcbiAgICAgICAgICAnPC9kaXY+JztcclxuICAgICAgfSBlbHNlIGlmIChwYXJ0cy5sZW5ndGggPT09IDEpe1xyXG4gICAgICAgIHJldHVybiAnPGRpdiBkYXRhLWNvcHk9XCInICsgcGFydHNbMF0gKyAnXCIgY2xhc3M9XCJwbGFxdWUgcGxhcXVlLWdcIj4nICtcclxuICAgICAgICAgICc8ZGl2IGNsYXNzPVwicGFydDFcIj4nICsgcGFydHNbMF0gKyAnPC9kaXY+JyArXHJcbiAgICAgICAgICAnPC9kaXY+JztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5QbGFxdWVUZXh0KSB7XHJcbiAgICAgIHJldHVybiBgPGRpdiBjbGFzcz1cImx0clwiPiR7SGVscGVyQ2xhc3MuVG9SZWFkYWJsZVBsYXF1ZShjdil9PC9kaXY+YDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmwoY3YpO1xyXG4gIH1cclxuICBleGNlbCgpOiB2b2lke1xyXG4gICAgY29uc3QgZGF0YSA9IFtdO1xyXG4gICAgdGhpcy5yb3dzLmZvckVhY2gocm93ID0+IHtcclxuICAgICAgY29uc3QgeCA9IHt9O1xyXG4gICAgICB0aGlzLmNvbHMuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgIGxldCB0eHQ6IGFueSA9IHRoaXMuZ2V0VGV4dCh0aGlzLmdldENlbGwocm93LCBjb2wpKTtcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuUHJpY2Upe1xyXG4gICAgICAgICAgdHh0ID0gcGFyc2VJbnQodHh0LnJlcGxhY2UoJ9ix24zYp9mEJywgJycpLnJlcGxhY2UoLywvZywgJycpLnRyaW0oKSwgMTApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB4W3RoaXMubChjb2wubmFtZSldID0gdHh0O1xyXG4gICAgICB9KTtcclxuICAgICAgZGF0YS5wdXNoKHgpO1xyXG4gICAgfSk7XHJcbiAgICBuZXcgRXhjZWxDbGFzcygpLmV4cG9ydEFzRXhjZWxGaWxlKGRhdGEsIHRoaXMubCh0aGlzLnBlcm1pc3Npb25zPy5OYW1lID8/ICdFeHBvcnRFeGNlbERhdGEnKSk7XHJcbiAgfVxyXG4gIGdldFRleHQocyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgc3Bhbi5pbm5lckhUTUwgPSBzO1xyXG4gICAgcmV0dXJuIHNwYW4udGV4dENvbnRlbnQgfHwgc3Bhbi5pbm5lclRleHQ7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGFibGVDb2xsQ2xhc3Mge1xyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgY2xzID0gJycsIHR5cGU6IFRhYmxlQ29sbFR5cGUgPSBUYWJsZUNvbGxUeXBlLlRleHQsXHJcbiAgICAgICAgICAgICAgd2l0aFNlYXJjaDogYm9vbGVhbiA9IHRydWUsIHNvcnQ6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5jbGFzcyA9IGNscyArIChbVGFibGVDb2xsVHlwZS5Db2xvciwgVGFibGVDb2xsVHlwZS5VcmwsIFRhYmxlQ29sbFR5cGUuRmlsZVNpemVdLmluY2x1ZGVzKHR5cGUpID8gJyBsdHInIDogJycpO1xyXG4gICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMud2l0aFNlYXJjaCA9IHR5cGUgPT09IFRhYmxlQ29sbFR5cGUuSW1hZ2UgPyBmYWxzZSA6IHdpdGhTZWFyY2g7XHJcbiAgICB0aGlzLnNvcnQgPSB0eXBlID09PSBUYWJsZUNvbGxUeXBlLkltYWdlID8gZmFsc2UgOiBzb3J0O1xyXG4gIH1cclxuICBlbnVtID0gbnVsbDtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgY2xhc3M6IHN0cmluZztcclxuICBkZWZhdWx0OiBzdHJpbmcgPSBudWxsO1xyXG4gIHNvcnQgPSB0cnVlO1xyXG4gIHdpdGhTZWFyY2g6IGJvb2xlYW47XHJcbiAgc2VhcmNoOiBJbnB1dENsYXNzID0gbnVsbDtcclxuICBzZWFyY2hEZWZhdWx0ID0gbnVsbDtcclxuICB0eXBlOiBUYWJsZUNvbGxUeXBlO1xyXG4gIGZ1bjogKHJvdykgPT4gdm9pZCA9IG51bGw7XHJcbn1cclxuIl19
@@ -172,7 +172,7 @@ export class TableComponent {
172
172
  TableComponent.decorators = [
173
173
  { type: Component, args: [{
174
174
  selector: 'lib-table',
175
- template: "<div [id]=\"table.id + 'Table'\" [style]=\"table.style\" #tableDiv [className]=\"(table.class ? table.class : '') + (table.sortable ? 'sortable' : '') + (table.hasChildren || table.subTable != null ? ' has-children' : '') + (table.vertical ? ' vertical' : '') + (table.expertSearch ? ' expert-search' : '') + ' table-con w-100'\">\r\n <div *ngIf=\"table.displayLabel\" class=\"title\">\r\n <div class=\"f-r\" [innerHTML]=\"this.table.title ? this.table.title : table.l('List')\"></div>\r\n <span class=\"description\" *ngIf=\"this.table.description != null\" [innerHTML]=\"'( ' + this.table.description + ' )'\"></span>\r\n <div class=\"extra-buttons\" *ngIf=\"table.showExtraButtons\">\r\n <span *ngIf=\"isChecked()\">\r\n <lib-form-icon *ngFor=\"let btn of table.extraButtons\" [inp]=\"btn\"></lib-form-icon>\r\n </span>\r\n <span *ngIf=\"!isChecked()\">\r\n <lib-form-icon *ngIf=\"table.expertSearch\" [inp]=\"expertSearch\"></lib-form-icon>\r\n <lib-form-icon [inp]=\"excel\"></lib-form-icon>\r\n <lib-form-icon [inp]=\"reload\"></lib-form-icon>\r\n <lib-form-icon [inp]=\"maximum\"></lib-form-icon>\r\n </span>\r\n </div>\r\n <div *ngIf=\"table.buttons.length > 0\" class=\"buttons\">\r\n <span *ngFor=\"let btn of table.buttons\">\r\n <lib-form-button [inp]=\"btn\" *ngIf=\"btn.type == type.Button\"></lib-form-button>\r\n <lib-form-icon [inp]=\"btn\" *ngIf=\"btn.type == type.Icon\"></lib-form-icon>\r\n <lib-form-label [inp]=\"btn\" *ngIf=\"btn.type == type.Label\"></lib-form-label>\r\n <lib-form-select [inp]=\"btn\" *ngIf=\"btn.type == type.Select\"></lib-form-select>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"search-form\" *ngIf=\"table.searchForm\" (click)=\"hideExpertSearch($event)\">\r\n <lib-form [form]=\"table.searchForm\"></lib-form>\r\n </div>\r\n <lib-form *ngIf=\"table.form && table.form.onTop\" [form]=\"table.form\"></lib-form>\r\n <div class=\"table\">\r\n <div class=\"header\">\r\n <div [className]=\"(table.hasChildren || table.subTable != null ? 'with-handle-children ' : '') + (table.sortable ? 'with-handle-sortable ' : '') + (table.withCheck ? 'with-handle-check ' : '') + 'row'\">\r\n <div class=\"handle-con\">\r\n <div class=\"handle handle-sortable\" *ngIf=\"table.sortable\"></div>\r\n <div class=\"handle handle-check\" *ngIf=\"table.hasChildren || table.subTable != null\"></div>\r\n <div class=\"handle handle-children\" *ngIf=\"table.withCheck\">\r\n <i (click)=\"checkAll()\" [className]=\"(allChecked() ? 'fa-solid fa-square-check c-green' : isChecked() ? 'fa-solid fa-square-minus c-green' : 'fa-regular fa-square') + ' check-row'\" *ngIf=\"table.rows.length > 0\"></i>\r\n </div>\r\n </div>\r\n <div (click)=\"!table.sortable && col.sort && changeSort($event, col.name)\" [className]=\"(!table.sortable && col.sort ? 'sort ' : '') + col.class + ' ' + col.name + '-cell cell w-100'\" *ngFor=\"let col of table.cols\">\r\n <div class=\"header-title\" *ngIf=\"col.search == null || table.sortable\" [innerHTML]=\"table.l(col.name)\"></div>\r\n <div class=\"header-search\" *ngIf=\"!table.sortable && col.search != null\">\r\n <lib-form-textbox *ngIf=\"col.type != colType.Date && col.type != colType.DateTime && col.type != colType.DateDif && col.type != colType.DateRemain && col.type != colType.Month && col.type != colType.Year && col.enum == null\" [inp]=\"col.search\"></lib-form-textbox>\r\n <lib-form-date *ngIf=\"(col.type == colType.Date || col.type == colType.DateTime || col.type === colType.DateDif || col.type === colType.DateRemain || col.type == colType.Month || col.type == colType.Year) && col.enum == null\" [inp]=\"col.search\"></lib-form-date>\r\n <lib-form-select *ngIf=\"col.enum != null\" [inp]=\"col.search\"></lib-form-select>\r\n </div>\r\n <i *ngIf=\"!table.sortable && col.sort\" [className]=\"'sort-icon fas' + (table.sort === col.name ? (table.sortType === 'ASC' ? ' fa-sort-up' : ' fa-sort-down') : ' fa-sort')\"></i>\r\n </div>\r\n <div class=\"cell options\" *ngIf=\"table.optionType == tableOptionType.Show\">{{table.l('Options')}}</div>\r\n </div>\r\n </div>\r\n <div class=\"body\" #rows [style]=\"table.perPage > 0 ? {minHeight: table.height * table.perPage + 'px'} : {minHeight: '250px'}\">\r\n <lib-table-row (confirmShow)=\"onConfirmShow($event)\" [level]=\"1\" (changeRows)=\"onChangeRows($event)\" [id]=\"row.id ? row.id : ''\" [table]=\"table\" [row]=\"row\" *ngFor=\"let row of getRows()\"></lib-table-row>\r\n <lib-table-loading [table]=\"table\"></lib-table-loading>\r\n </div>\r\n </div>\r\n <lib-table-pagination [table]=\"table\" *ngIf=\"table.perPage > 0\"></lib-table-pagination>\r\n <lib-modal *ngIf=\"table.modal != null\" [modal]=\"table.modal\"></lib-modal>\r\n <lib-modal [modal]=\"opt\" *ngFor=\"let opt of getModals()\"></lib-modal>\r\n <lib-confirm #confirm [tableId]=\"table.name\"></lib-confirm>\r\n</div>\r\n",
175
+ template: "<div [id]=\"table.id + 'Table'\" [style]=\"table.style\" #tableDiv [className]=\"(table.class ? table.class : '') + (table.sortable ? 'sortable' : '') + (table.hasChildren || table.subTable != null ? ' has-children' : '') + (table.vertical ? ' vertical' : '') + (table.expertSearch ? ' expert-search' : '') + ' table-con w-100'\">\r\n <div *ngIf=\"table.displayLabel\" class=\"title\">\r\n <div class=\"f-r\" [innerHTML]=\"this.table.title ? this.table.title : table.l('List')\"></div>\r\n <span class=\"description\" *ngIf=\"this.table.description != null\" [innerHTML]=\"'( ' + this.table.description + ' )'\"></span>\r\n <div class=\"extra-buttons\" *ngIf=\"table.showExtraButtons\">\r\n <lib-form-icon *ngFor=\"let btn of table.extraButtons\" [inp]=\"btn\"></lib-form-icon>\r\n <span *ngIf=\"isChecked()\">\r\n <lib-form-icon *ngFor=\"let btn of table.optionButtons\" [inp]=\"btn\"></lib-form-icon>\r\n </span>\r\n <span *ngIf=\"!isChecked()\">\r\n <lib-form-icon *ngIf=\"table.expertSearch\" [inp]=\"expertSearch\"></lib-form-icon>\r\n <lib-form-icon [inp]=\"excel\"></lib-form-icon>\r\n <lib-form-icon [inp]=\"reload\"></lib-form-icon>\r\n <lib-form-icon [inp]=\"maximum\"></lib-form-icon>\r\n </span>\r\n </div>\r\n <div *ngIf=\"table.buttons.length > 0\" class=\"buttons\">\r\n <span *ngFor=\"let btn of table.buttons\">\r\n <lib-form-button [inp]=\"btn\" *ngIf=\"btn.type == type.Button\"></lib-form-button>\r\n <lib-form-icon [inp]=\"btn\" *ngIf=\"btn.type == type.Icon\"></lib-form-icon>\r\n <lib-form-label [inp]=\"btn\" *ngIf=\"btn.type == type.Label\"></lib-form-label>\r\n <lib-form-select [inp]=\"btn\" *ngIf=\"btn.type == type.Select\"></lib-form-select>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"search-form\" *ngIf=\"table.searchForm\" (click)=\"hideExpertSearch($event)\">\r\n <lib-form [form]=\"table.searchForm\"></lib-form>\r\n </div>\r\n <lib-form *ngIf=\"table.form && table.form.onTop\" [form]=\"table.form\"></lib-form>\r\n <div class=\"table\">\r\n <div class=\"header\">\r\n <div [className]=\"(table.hasChildren || table.subTable != null ? 'with-handle-children ' : '') + (table.sortable ? 'with-handle-sortable ' : '') + (table.withCheck ? 'with-handle-check ' : '') + 'row'\">\r\n <div class=\"handle-con\">\r\n <div class=\"handle handle-sortable\" *ngIf=\"table.sortable\"></div>\r\n <div class=\"handle handle-check\" *ngIf=\"table.hasChildren || table.subTable != null\"></div>\r\n <div class=\"handle handle-children\" *ngIf=\"table.withCheck\">\r\n <i (click)=\"checkAll()\" [className]=\"(allChecked() ? 'fa-solid fa-square-check c-green' : isChecked() ? 'fa-solid fa-square-minus c-green' : 'fa-regular fa-square') + ' check-row'\" *ngIf=\"table.rows.length > 0\"></i>\r\n </div>\r\n </div>\r\n <div (click)=\"!table.sortable && col.sort && changeSort($event, col.name)\" [className]=\"(!table.sortable && col.sort ? 'sort ' : '') + col.class + ' ' + col.name + '-cell cell w-100'\" *ngFor=\"let col of table.cols\">\r\n <div class=\"header-title\" *ngIf=\"col.search == null || table.sortable\" [innerHTML]=\"table.l(col.name)\"></div>\r\n <div class=\"header-search\" *ngIf=\"!table.sortable && col.search != null\">\r\n <lib-form-textbox *ngIf=\"col.type != colType.Date && col.type != colType.DateTime && col.type != colType.DateDif && col.type != colType.DateRemain && col.type != colType.Month && col.type != colType.Year && col.enum == null\" [inp]=\"col.search\"></lib-form-textbox>\r\n <lib-form-date *ngIf=\"(col.type == colType.Date || col.type == colType.DateTime || col.type === colType.DateDif || col.type === colType.DateRemain || col.type == colType.Month || col.type == colType.Year) && col.enum == null\" [inp]=\"col.search\"></lib-form-date>\r\n <lib-form-select *ngIf=\"col.enum != null\" [inp]=\"col.search\"></lib-form-select>\r\n </div>\r\n <i *ngIf=\"!table.sortable && col.sort\" [className]=\"'sort-icon fas' + (table.sort === col.name ? (table.sortType === 'ASC' ? ' fa-sort-up' : ' fa-sort-down') : ' fa-sort')\"></i>\r\n </div>\r\n <div class=\"cell options\" *ngIf=\"table.optionType == tableOptionType.Show\">{{table.l('Options')}}</div>\r\n </div>\r\n </div>\r\n <div class=\"body\" #rows [style]=\"table.perPage > 0 ? {minHeight: table.height * table.perPage + 'px'} : {minHeight: '250px'}\">\r\n <lib-table-row (confirmShow)=\"onConfirmShow($event)\" [level]=\"1\" (changeRows)=\"onChangeRows($event)\" [id]=\"row.id ? row.id : ''\" [table]=\"table\" [row]=\"row\" *ngFor=\"let row of getRows()\"></lib-table-row>\r\n <lib-table-loading [table]=\"table\"></lib-table-loading>\r\n </div>\r\n </div>\r\n <lib-table-pagination [table]=\"table\" *ngIf=\"table.perPage > 0\"></lib-table-pagination>\r\n <lib-modal *ngIf=\"table.modal != null\" [modal]=\"table.modal\"></lib-modal>\r\n <lib-modal [modal]=\"opt\" *ngFor=\"let opt of getModals()\"></lib-modal>\r\n <lib-confirm #confirm [tableId]=\"table.name\"></lib-confirm>\r\n</div>\r\n",
176
176
  styles: [".table-con{background-color:#fff;border-radius:var(--border-radius-base);box-shadow:var(--box-shadow-table);float:right;padding:20px;position:relative}.table-con.maximum{border-radius:0;height:100%;overflow-y:auto;position:fixed;right:0;top:0;width:100%;z-index:102}.table-con>.title{float:right;font-size:16px;font-weight:700;line-height:40px;margin-bottom:10px;position:relative;text-align:right;width:100%;z-index:3}.table-con>.title .description{font-size:13px;font-weight:200;margin-right:10px}.table-con>.title .buttons,.table-con>.title .extra-buttons{float:left;margin-top:5px;position:relative;z-index:1}.table-con>.title .extra-buttons{min-width:80px}.table-con>.search-form{border-radius:var(--border-radius-base);float:right;margin-bottom:10px;width:100%}.table-con.expert-search>.search-form{background-color:rgba(51,51,51,.4);height:100%;left:0;margin-bottom:0;opacity:0;overflow:hidden;position:absolute;top:0;transition:all .35s ease-in-out;visibility:hidden;width:100%;z-index:4}.table-con.expert-search.show-expert-search>.search-form{opacity:1;visibility:visible}::ng-deep .table-con.expert-search>.search-form .form{background-color:var(--white);box-shadow:var(--box-shadow-right);height:100%;left:calc(-20% - 20px);padding:20px;position:absolute;top:0;transition:all .35s ease-in-out;width:20%;z-index:4}::ng-deep .table-con.expert-search>.search-form .form .inputs{float:right;height:calc(100% - 50px);margin:0;overflow-y:auto;width:100%}::ng-deep .table-con.expert-search.show-expert-search>.search-form .form{left:0}.table-con .table,.table-con .table .header{float:right;width:100%}.table-con .table .header .row{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;align-items:center;background-color:var(--base-white);border-radius:var(--border-radius-base);display:flex;flex-wrap:wrap;float:right;justify-content:right;position:relative;width:100%}.table-con .table .header .row.with-handle-check,.table-con .table .header .row.with-handle-children,.table-con .table .header .row.with-handle-sortable{padding-right:30px}.table-con .table .header .row.with-handle-children.with-handle-check,.table-con .table .header .row.with-handle-sortable.with-handle-check,.table-con .table .header .row.with-handle-sortable.with-handle-children{padding-right:60px}.table-con .table .header .row.with-handle-sortable.with-handle-children.with-handle-check{padding-right:90px}.table-con .table .header .row .cell{align-items:center;color:var(--black-light);display:flex;float:right;font-size:12px;font-weight:200;font-weight:400;height:45px;justify-content:center;position:relative}.table-con .table .header .row .cell.options{margin-left:auto;margin-right:auto}.table-con .table .header .row .handle-con{height:100%;position:absolute;right:0;top:0}.table-con .table .header .row .handle-con .handle{align-items:center;display:flex;float:right;height:100%;justify-content:center;width:30px}.table-con .table .header .row .handle-con .handle i{cursor:pointer;font-size:18px}.table-con .table .header .row .cell.sort{cursor:pointer}.table-con .table .header .row .cell .header-title{float:right;padding:0 15px;text-align:center;width:calc(100% - 20px)}.table-con .table .header .row .cell .header-search{float:right;width:calc(100% - 20px)}.table-con .table .header .row .cell .sort-icon{float:right;font-size:13px;height:20px;left:5px;line-height:20px;opacity:.6;top:calc(50% - 10px);width:20px}.table-con .table .body{float:right;position:relative;width:100%}::ng-deep .table-con .table .header .row .cell .check-row{cursor:pointer;font-size:18px;height:30px;line-height:30px}::ng-deep .table-con.vertical .table lib-table-row>.row-con>.row:after{background-image:linear-gradient(180deg,rgba(0,0,0,.05),rgba(50,50,50,.15),rgba(0,0,0,.05));height:100%;left:0;right:unset;width:1px}::ng-deep .table-con.vertical:not(.sortable) .table lib-table-row:first-of-type>.row-con>.row:after,::ng-deep .table-con:not(.sortable) .table lib-table-row:last-of-type>.row-con>.row:after{background-image:unset}.table-con.vertical .table .header{display:none}::ng-deep .table-con .table lib-table-row{display:contents}.table-con.vertical .table .body{display:flex}::ng-deep .table-con.vertical .table lib-table-row:first-of-type>.row-con{background-color:var(--base-white);border-radius:var(--border-radius-base);max-width:150px}@media (max-width:499.99px){::ng-deep .table-con.expert-search>.search-form .form{left:calc(-100% - 20px);width:100%}}@media (min-width:500px) and (max-width:699.99px){::ng-deep .table-con.expert-search>.search-form .form{left:calc(-50% - 20px);width:50%}}@media (min-width:700px) and (max-width:999.99px){::ng-deep .table-con.expert-search>.search-form .form{left:calc(-40% - 20px);width:40%}}@media (min-width:1000px) and (max-width:1599.99px){::ng-deep .table-con.expert-search>.search-form .form{left:calc(-30% - 20px);width:30%}}"]
177
177
  },] }
178
178
  ];
@@ -187,4 +187,4 @@ TableComponent.propDecorators = {
187
187
  exportDropDown: [{ type: ViewChild, args: ['exportDropDown',] }],
188
188
  confirm: [{ type: ViewChild, args: ['confirm',] }]
189
189
  };
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkQ6L1BzVG9vbGtpdC9VSS9wcm9qZWN0cy9wcy10b29sa2l0LXVpL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFdkMsT0FBTyxFQUFZLFNBQVMsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3RHLE9BQU8sRUFBQyxVQUFVLEVBQWMsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTywwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBTy9ELE1BQU0sT0FBTyxjQUFjO0lBaUJ6QixZQUFtQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWJqQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQVl4QyxXQUFNLEdBQWUsSUFBSSxDQUFDO0lBRTFCLENBQUM7SUFiRCxJQUFJLElBQUksS0FBc0IsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2pELElBQUksZUFBZSxLQUE0QixPQUFPLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsSUFBSSxPQUFPLEtBQTBCLE9BQU8sYUFBYSxDQUFDLENBQUMsQ0FBQztJQWE1RCxRQUFRO1FBQ04sSUFB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QUMsRUFDbEU7WUFDRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUNsRTtJQUNILENBQUM7OztZQWhMRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLHloS0FBcUM7O2FBRXRDOzs7WUFmTyxNQUFNOzs7b0JBaUJYLEtBQUs7eUJBRUwsTUFBTTttQkFLTixTQUFTLFNBQUMsTUFBTTt1QkFDaEIsU0FBUyxTQUFDLFVBQVU7NkJBQ3BCLFNBQVMsU0FBQyxnQkFBZ0I7c0JBQzFCLFNBQVMsU0FBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtUYWJsZUNsYXNzfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLmNsYXNzJztcclxuaW1wb3J0IHtFbnVtVXRpbHMsIElucHV0VHlwZSwgTWV0aG9kLCBUYWJsZUNvbGxUeXBlLCBUYWJsZU9wdGlvblR5cGV9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW51bS5jbGFzcyc7XHJcbmltcG9ydCB7SW5wdXRDbGFzcywgT3B0aW9uQ2xhc3N9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS5jbGFzcyc7XHJcbmltcG9ydCAqIGFzICQgZnJvbSAnanF1ZXJ5JztcclxuaW1wb3J0IHtDb25maXJtQ29tcG9uZW50fSBmcm9tICcuLi9jb25maXJtL2NvbmZpcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHtNb2RhbENsYXNzfSBmcm9tICcuLi8uLi9jbGFzc2VzL21vZGFsLmNsYXNzJztcclxuaW1wb3J0ICdqcXVlcnktdWktZGlzdC9qcXVlcnktdWknO1xyXG5pbXBvcnQge1JlcXVlc3RDbGFzc30gZnJvbSAnLi4vLi4vY2xhc3Nlcy9yZXF1ZXN0LmNsYXNzJztcclxuaW1wb3J0IHtQZXJtaXNzaW9uQ2xhc3N9IGZyb20gJy4uLy4uL2NsYXNzZXMvcGVybWlzc2lvbi5jbGFzcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0e1xyXG4gIEBJbnB1dCgpXHJcbiAgdGFibGU6IFRhYmxlQ2xhc3M7XHJcbiAgQE91dHB1dCgpXHJcbiAgY2hhbmdlUm93cyA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xyXG4gIGdldCB0eXBlKCk6IHR5cGVvZiBJbnB1dFR5cGV7IHJldHVybiBJbnB1dFR5cGU7IH1cclxuICBnZXQgdGFibGVPcHRpb25UeXBlKCk6IHR5cGVvZiBUYWJsZU9wdGlvblR5cGV7IHJldHVybiBUYWJsZU9wdGlvblR5cGU7IH1cclxuICBnZXQgY29sVHlwZSgpOiB0eXBlb2YgVGFibGVDb2xsVHlwZXsgcmV0dXJuIFRhYmxlQ29sbFR5cGU7IH1cclxuICBAVmlld0NoaWxkKCdyb3dzJykgcm93czogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCd0YWJsZURpdicpIHRhYmxlRGl2OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2V4cG9ydERyb3BEb3duJykgZXhwb3J0RHJvcERvd246IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnY29uZmlybScpIGNvbmZpcm06IENvbmZpcm1Db21wb25lbnQ7XHJcbiAgcmVsb2FkOiBJbnB1dENsYXNzO1xyXG4gIGV4Y2VsOiBJbnB1dENsYXNzO1xyXG4gIG1heGltdW06IElucHV0Q2xhc3M7XHJcbiAgZXhwZXJ0U2VhcmNoOiBJbnB1dENsYXNzO1xyXG4gIGV4cG9ydDogSW5wdXRDbGFzcyA9IG51bGw7XHJcbiAgY29uc3RydWN0b3IocHVibGljIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgfVxyXG4gIG9wdGlvbnM6IElucHV0Q2xhc3NbXTtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVsb2FkID0gbmV3IElucHV0Q2xhc3ModGhpcy50YWJsZS5lbnZpcm9ubWVudCwgdGhpcy50YWJsZS5sLCAnUmVsb2FkJywgJ2ZhZCBmYS1zeW5jLWFsdCcsIElucHV0VHlwZS5JY29uLCAnbS1yLTEwLXAnKTtcclxuICAgIHRoaXMuZXhjZWwgPSBuZXcgSW5wdXRDbGFzcyh0aGlzLnRhYmxlLmVudmlyb25tZW50LCB0aGlzLnRhYmxlLmwsICdFeHBvcnRFeGNlbCcsICdmYWQgZmEtZmlsZS1leGNlbCBmLXMtMjEnLCBJbnB1dFR5cGUuSWNvbiwgJ20tci0xMC1wJyk7XHJcbiAgICB0aGlzLm1heGltdW0gPSBuZXcgSW5wdXRDbGFzcyh0aGlzLnRhYmxlLmVudmlyb25tZW50LCB0aGlzLnRhYmxlLmwsICdNYXhpbXVtJywgJ2ZhZCBmYS1hcnJvd3MtbWF4aW1pemUnLCBJbnB1dFR5cGUuSWNvbiwgJ20tci0xMC1wJyk7XHJcbiAgICB0aGlzLmV4cGVydFNlYXJjaCA9IG5ldyBJbnB1dENsYXNzKHRoaXMudGFibGUuZW52aXJvbm1lbnQsIHRoaXMudGFibGUubCwgJ0V4cGVydFNlYXJjaCcsICdmYWQgZmEtbWFnbmlmeWluZy1nbGFzcycsIElucHV0VHlwZS5JY29uLCAnbS1yLTEwLXAnKTtcclxuICAgIHRoaXMudGFibGUuc2V0Q29scygpO1xyXG4gICAgaWYgKHRoaXMudGFibGUuc29ydGFibGUpe1xyXG4gICAgICB0aGlzLnRhYmxlLnBlclBhZ2UgPSAtMTtcclxuICAgICAgdGhpcy50YWJsZS5vbkxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRTb3J0YWJsZSgpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZS5zZXQodGhpcy5jaGFuZ2VSb3dzKTtcclxuICAgIGlmICh0aGlzLnRhYmxlLnNlYXJjaEZvcm0pe1xyXG4gICAgICB0aGlzLnRhYmxlLnNlYXJjaEZvcm0uZGlzcGxheUxhYmVsID0gdGhpcy50YWJsZS5leHBlcnRTZWFyY2g7XHJcbiAgICAgIHRoaXMudGFibGUuc2VhcmNoRm9ybS5jbGFzcyA9ICh0aGlzLnRhYmxlLnNlYXJjaEZvcm0uY2xhc3MgPyB0aGlzLnRhYmxlLnNlYXJjaEZvcm0uY2xhc3MgOiAnJykgKyAodGhpcy50YWJsZS5leHBlcnRTZWFyY2ggPyAnJyA6ICcgcC0wJyk7XHJcbiAgICAgIGlmICh0aGlzLnRhYmxlLmV4cGVydFNlYXJjaCl7XHJcbiAgICAgICAgY29uc3QgcyA9IG5ldyBJbnB1dENsYXNzKHRoaXMudGFibGUuZW52aXJvbm1lbnQsIHRoaXMudGFibGUubCwgJ1NlYXJjaCcsICdmYWQgZmEtbWFnbmlmeWluZy1nbGFzcycsIElucHV0VHlwZS5TdWJtaXQsICdibHVlIGgtMzAnKTtcclxuICAgICAgICBzLnN0eWxlID0ge3RvcDogJzIwcHgnLCBsZWZ0OiAnNXB4JywgcG9zaXRpb246ICdhYnNvbHV0ZScsIHdpZHRoOiAnNTAlJ307XHJcbiAgICAgICAgdGhpcy50YWJsZS5zZWFyY2hGb3JtLmlucHV0cy5wdXNoKHMpO1xyXG4gICAgICAgIHRoaXMudGFibGUuc2VhcmNoRm9ybS5uYW1lID0gJ0V4cGVydFNlYXJjaCc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50YWJsZS5zZWFyY2hGb3JtLmlucHV0cy5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgIGNvbnN0IGhhc1N1Ym1pdCA9IHRoaXMudGFibGUuc2VhcmNoRm9ybS5pbnB1dHMuc29tZShzID0+IHMudHlwZSA9PT0gSW5wdXRUeXBlLlN1Ym1pdCk7XHJcbiAgICAgICAgeC5yZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgICAgIHguZGlzcGxheUxhYmVsID0gdGhpcy50YWJsZS5leHBlcnRTZWFyY2g7XHJcbiAgICAgICAgeC5jbGFzcyA9IHguY2xhc3MgKyAnIHNlYXJjaC1mb3JtLWlucCcgKyAodGhpcy50YWJsZS5leHBlcnRTZWFyY2ggJiYgeC50eXBlICE9PSBJbnB1dFR5cGUuU3VibWl0ID8gJyBwLTAnIDogJycpO1xyXG4gICAgICAgIHgud2l0aENsZWFyID0gIWhhc1N1Ym1pdCB8fCB0aGlzLnRhYmxlLmV4cGVydFNlYXJjaDtcclxuICAgICAgICBpZiAoIWhhc1N1Ym1pdCl7XHJcbiAgICAgICAgICBpZiAoeC5vbkNoYW5nZSA9PSBudWxsKXtcclxuICAgICAgICAgICAgeC5vbkNoYW5nZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnRhYmxlLmxvYWQoKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHgudHlwZSA9PT0gSW5wdXRUeXBlLlN1Ym1pdCl7XHJcbiAgICAgICAgICB4Lm9uQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRhYmxlLnNlYXJjaEZvcm0ub25CZWZvcmVTdWJtaXQgJiYgIXRoaXMudGFibGUuc2VhcmNoRm9ybS5vbkJlZm9yZVN1Ym1pdCgpKXtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy50YWJsZS5sb2FkKHgpO1xyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIC8vIHRoaXMudGFibGUuc2VhcmNoRm9ybS5zdWJtaXQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCd0aGlzLnRhYmxlLnNlYXJjaEZvcm0uc3VibWl0Jyk7XHJcbiAgICAgICAgICAvLyAgIGlmICh0aGlzLnRhYmxlLnNlYXJjaEZvcm0ub25CZWZvcmVTdWJtaXQgJiYgIXRoaXMudGFibGUuc2VhcmNoRm9ybS5vbkJlZm9yZVN1Ym1pdCgpKXtcclxuICAgICAgICAgIC8vICAgICByZXR1cm47XHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgIC8vICAgdGhpcy50YWJsZS5sb2FkKHgpO1xyXG4gICAgICAgICAgLy8gICAkKHRoaXMudGFibGVEaXYubmF0aXZlRWxlbWVudCkucmVtb3ZlQ2xhc3MoJ3Nob3ctZXhwZXJ0LXNlYXJjaCcpO1xyXG4gICAgICAgICAgLy8gfTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5nZXRPcHRpb25zKCk7XHJcbiAgICB0aGlzLnJlbG9hZC5vbkNsaWNrID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLnRhYmxlLmxvYWQodGhpcy5yZWxvYWQpO1xyXG4gICAgfTtcclxuICAgIHRoaXMuZXhjZWwub25DbGljayA9ICgpID0+IHtcclxuICAgICAgdGhpcy50YWJsZS5leGNlbCgpO1xyXG4gICAgfTtcclxuICAgIHRoaXMubWF4aW11bS5vbkNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAkKHRoaXMudGFibGVEaXYubmF0aXZlRWxlbWVudCkudG9nZ2xlQ2xhc3MoJ21heGltdW0nKTtcclxuICAgICAgdGhpcy5tYXhpbXVtLmljb24gPSB0aGlzLm1heGltdW0ubmFtZSA9PT0gJ01pbmltdW0nID8gJ2ZhZCBmYS1hcnJvd3MtbWF4aW1pemUnIDogJ2ZhZCBmYS1hcnJvd3MtbWluaW1pemUnO1xyXG4gICAgICB0aGlzLm1heGltdW0ubmFtZSA9IHRoaXMubWF4aW11bS5uYW1lID09PSAnTWluaW11bScgPyAnTWF4aW11bScgOiAnTWluaW11bSc7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5leHBlcnRTZWFyY2gub25DbGljayA9ICgpID0+IHtcclxuICAgICAgJCh0aGlzLnRhYmxlRGl2Lm5hdGl2ZUVsZW1lbnQpLmFkZENsYXNzKCdzaG93LWV4cGVydC1zZWFyY2gnKTtcclxuICAgIH07XHJcbiAgICB0aGlzLnRhYmxlLnNob3dDb25maXJtID0gKGw6IHN0cmluZywgdXJsOiBzdHJpbmcsIGRhdGEsIGFjY2VwdDogKHJlc3VsdDogYW55KSA9PiB2b2lkKSA9PiB7XHJcbiAgICAgIHRoaXMuY29uZmlybS5zaG93KGwsIHVybCwgZGF0YSwgYWNjZXB0KTtcclxuICAgIH07XHJcbiAgfVxyXG4gIGFsbENoZWNrZWQoKTogYm9vbGVhbntcclxuICAgIHJldHVybiB0aGlzLnRhYmxlLnJvd3MuZmlsdGVyKHggPT4gIXguY2hlY2tlZCkubGVuZ3RoID09PSAwO1xyXG4gIH1cclxuICBpc0NoZWNrZWQoKTogYm9vbGVhbntcclxuICAgIHJldHVybiB0aGlzLnRhYmxlLnJvd3MuZmlsdGVyKHggPT4geC5jaGVja2VkKS5sZW5ndGggPiAwO1xyXG4gIH1cclxuICBjaGVja0FsbCgpOiB2b2lke1xyXG4gICAgaWYgKHRoaXMudGFibGUucm93cy5maWx0ZXIoeCA9PiAheC5jaGVja2VkKS5sZW5ndGggPT09IDApe1xyXG4gICAgICB0aGlzLnRhYmxlLnJvd3MuZm9yRWFjaCh4ID0+IHguY2hlY2tlZCA9IGZhbHNlKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnRhYmxlLnJvd3MuZm9yRWFjaCh4ID0+IHguY2hlY2tlZCA9IHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRPcHRpb25zKCk6IElucHV0Q2xhc3NbXXtcclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcbiAgc2V0U29ydGFibGUoKTogdm9pZHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICQodGhpcy5yb3dzLm5hdGl2ZUVsZW1lbnQpLnNvcnRhYmxlKHtcclxuICAgICAgICBheGlzOiAneScsXHJcbiAgICAgICAgaXRlbXM6ICcucm93JyxcclxuICAgICAgICBoYW5kbGU6ICc+IC5oYW5kbGUtY29uID4gLmhhbmRsZS5oYW5kbGUtc29ydGFibGUnLFxyXG4gICAgICAgIHVwZGF0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZGF0YSA9IFtdO1xyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgJCh0aGlzLnJvd3MubmF0aXZlRWxlbWVudCkuc29ydGFibGUoJ3RvQXJyYXknLCB7YXR0cmlidXRlOiAnZGF0YS1pZCd9KS5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgICBkYXRhLnB1c2gocGFyc2VJbnQoeCwgMTApKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgY29uc3QgcCA9IG5ldyBQZXJtaXNzaW9uQ2xhc3MoKTtcclxuICAgICAgICAgIHAuQXJlYSA9IHRoaXMudGFibGUucGVybWlzc2lvbnMuQXJlYTtcclxuICAgICAgICAgIHAuQ29udHJvbGxlciA9IHRoaXMudGFibGUucGVybWlzc2lvbnMuQ29udHJvbGxlcjtcclxuICAgICAgICAgIHAuUmVsYXRlZElkID0gdGhpcy50YWJsZS5wZXJtaXNzaW9ucy5SZWxhdGVkSWQ7XHJcbiAgICAgICAgICBwLkFjdGlvbiA9IHRoaXMudGFibGUucGVybWlzc2lvbnMuQWN0aW9uID8gdGhpcy50YWJsZS5wZXJtaXNzaW9ucy5BY3Rpb24gKyAnLXNvcnQnIDogJ3NvcnQnO1xyXG4gICAgICAgICAgbmV3IFJlcXVlc3RDbGFzcyh0aGlzLnRhYmxlLmVudmlyb25tZW50LCB0aGlzLnRhYmxlLmwpLnNlbmQocC5nZXRVcmwoKS50b0xvd2VyQ2FzZSgpLCBNZXRob2QuUG9zdCwge0lkczogZGF0YX0sIG51bGwsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudGFibGUub25Tb3J0KXtcclxuICAgICAgICAgICAgICB0aGlzLnRhYmxlLm9uU29ydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCAoKSA9PiB7fSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5kaXNhYmxlU2VsZWN0aW9uKCk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuICBnZXRSb3dzKCk6IGFueVtde1xyXG4gICAgY29uc3QgYyA9IHRoaXMudGFibGUucm93cy5maWx0ZXIoeCA9PiAheC5EYXRhLlBhcmVudElkKTtcclxuICAgIGMuZm9yRWFjaCgoeCwgaSkgPT4geC5Sb3dOdW0gPSBjLmxlbmd0aCAtIGkgKyAxKTtcclxuICAgIHJldHVybiBjO1xyXG4gIH1cclxuICAvLyBnZXRPcHRpb25Nb2RhbHMoKTogSW5wdXRDbGFzc1tde1xyXG4gIC8vICAgY29uc3QgbW9kYWxzID0gW107XHJcbiAgLy8gICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnRhYmxlLm9wdGlvbkFjdGlvbnMpKSB7XHJcbiAgLy8gICAgIGlmICh0aGlzLnRhYmxlLm9wdGlvbkFjdGlvbnNba2V5XS5tb2RhbCl7XHJcbiAgLy8gICAgICAgbW9kYWxzLnB1c2godGhpcy50YWJsZS5vcHRpb25BY3Rpb25zW2tleV0ubW9kYWwpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gICByZXR1cm4gbW9kYWxzO1xyXG4gIC8vIH1cclxuICBvbkNoYW5nZVJvd3MoZSk6IHZvaWR7XHJcbiAgICByZXR1cm4gdGhpcy5jaGFuZ2VSb3dzLmVtaXQoZSk7XHJcbiAgfVxyXG4gIG9uQ29uZmlybVNob3coZSk6IHZvaWR7XHJcbiAgICB0aGlzLmNvbmZpcm0uc2hvdyh0aGlzLnRhYmxlLmwoZS5hY3Rpb24gKyAnQ29uZmlybScpLCBlLnVybCwgZS5kYXRhLCBlLmFjY2VwdCk7XHJcbiAgfVxyXG4gIGNoYW5nZVNvcnQoZSwgczogc3RyaW5nKTogdm9pZHtcclxuICAgIGlmICgkKGUudGFyZ2V0KS5jbG9zZXN0KCcuaGVhZGVyLXNlYXJjaCcpLmhhc0NsYXNzKCdoZWFkZXItc2VhcmNoJykpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlLnNvcnRUeXBlID0gdGhpcy50YWJsZS5zb3J0ID09PSBzID8gdGhpcy50YWJsZS5zb3J0VHlwZSA9PT0gJ0FTQycgPyAnREVTQycgOiBudWxsIDogJ0FTQyc7XHJcbiAgICB0aGlzLnRhYmxlLnNvcnQgPSB0aGlzLnRhYmxlLnNvcnRUeXBlID09IG51bGwgPyBudWxsIDogcztcclxuICAgIHRoaXMudGFibGUubG9hZCgpO1xyXG4gIH1cclxuICBnZXRNb2RhbHMoKTogTW9kYWxDbGFzc1tde1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGUub3B0aW9uc0FjdGlvbnMuZmlsdGVyKHggPT4geCBpbnN0YW5jZW9mIE1vZGFsQ2xhc3MpO1xyXG4gIH1cclxuICBoaWRlRXhwZXJ0U2VhcmNoKGUpOiB2b2lke1xyXG4gICAgaWYgKHRoaXMudGFibGUuZXhwZXJ0U2VhcmNoICYmICQoZS50YXJnZXQpLmhhc0NsYXNzKCdzZWFyY2gtZm9ybScpKVxyXG4gICAge1xyXG4gICAgICAkKHRoaXMudGFibGVEaXYubmF0aXZlRWxlbWVudCkucmVtb3ZlQ2xhc3MoJ3Nob3ctZXhwZXJ0LXNlYXJjaCcpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkQ6L1BzVG9vbGtpdC9VSS9wcm9qZWN0cy9wcy10b29sa2l0LXVpL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFdkMsT0FBTyxFQUFZLFNBQVMsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3RHLE9BQU8sRUFBQyxVQUFVLEVBQWMsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTywwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBTy9ELE1BQU0sT0FBTyxjQUFjO0lBaUJ6QixZQUFtQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWJqQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQVl4QyxXQUFNLEdBQWUsSUFBSSxDQUFDO0lBRTFCLENBQUM7SUFiRCxJQUFJLElBQUksS0FBc0IsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2pELElBQUksZUFBZSxLQUE0QixPQUFPLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsSUFBSSxPQUFPLEtBQTBCLE9BQU8sYUFBYSxDQUFDLENBQUMsQ0FBQztJQWE1RCxRQUFRO1FBQ04sSUFB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QUMsRUFDbEU7WUFDRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUNsRTtJQUNILENBQUM7OztZQWhMRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLDBuS0FBcUM7O2FBRXRDOzs7WUFmTyxNQUFNOzs7b0JBaUJYLEtBQUs7eUJBRUwsTUFBTTttQkFLTixTQUFTLFNBQUMsTUFBTTt1QkFDaEIsU0FBUyxTQUFDLFVBQVU7NkJBQ3BCLFNBQVMsU0FBQyxnQkFBZ0I7c0JBQzFCLFNBQVMsU0FBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtUYWJsZUNsYXNzfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLmNsYXNzJztcclxuaW1wb3J0IHtFbnVtVXRpbHMsIElucHV0VHlwZSwgTWV0aG9kLCBUYWJsZUNvbGxUeXBlLCBUYWJsZU9wdGlvblR5cGV9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW51bS5jbGFzcyc7XHJcbmltcG9ydCB7SW5wdXRDbGFzcywgT3B0aW9uQ2xhc3N9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS5jbGFzcyc7XHJcbmltcG9ydCAqIGFzICQgZnJvbSAnanF1ZXJ5JztcclxuaW1wb3J0IHtDb25maXJtQ29tcG9uZW50fSBmcm9tICcuLi9jb25maXJtL2NvbmZpcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHtNb2RhbENsYXNzfSBmcm9tICcuLi8uLi9jbGFzc2VzL21vZGFsLmNsYXNzJztcclxuaW1wb3J0ICdqcXVlcnktdWktZGlzdC9qcXVlcnktdWknO1xyXG5pbXBvcnQge1JlcXVlc3RDbGFzc30gZnJvbSAnLi4vLi4vY2xhc3Nlcy9yZXF1ZXN0LmNsYXNzJztcclxuaW1wb3J0IHtQZXJtaXNzaW9uQ2xhc3N9IGZyb20gJy4uLy4uL2NsYXNzZXMvcGVybWlzc2lvbi5jbGFzcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0e1xyXG4gIEBJbnB1dCgpXHJcbiAgdGFibGU6IFRhYmxlQ2xhc3M7XHJcbiAgQE91dHB1dCgpXHJcbiAgY2hhbmdlUm93cyA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xyXG4gIGdldCB0eXBlKCk6IHR5cGVvZiBJbnB1dFR5cGV7IHJldHVybiBJbnB1dFR5cGU7IH1cclxuICBnZXQgdGFibGVPcHRpb25UeXBlKCk6IHR5cGVvZiBUYWJsZU9wdGlvblR5cGV7IHJldHVybiBUYWJsZU9wdGlvblR5cGU7IH1cclxuICBnZXQgY29sVHlwZSgpOiB0eXBlb2YgVGFibGVDb2xsVHlwZXsgcmV0dXJuIFRhYmxlQ29sbFR5cGU7IH1cclxuICBAVmlld0NoaWxkKCdyb3dzJykgcm93czogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCd0YWJsZURpdicpIHRhYmxlRGl2OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2V4cG9ydERyb3BEb3duJykgZXhwb3J0RHJvcERvd246IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnY29uZmlybScpIGNvbmZpcm06IENvbmZpcm1Db21wb25lbnQ7XHJcbiAgcmVsb2FkOiBJbnB1dENsYXNzO1xyXG4gIGV4Y2VsOiBJbnB1dENsYXNzO1xyXG4gIG1heGltdW06IElucHV0Q2xhc3M7XHJcbiAgZXhwZXJ0U2VhcmNoOiBJbnB1dENsYXNzO1xyXG4gIGV4cG9ydDogSW5wdXRDbGFzcyA9IG51bGw7XHJcbiAgY29uc3RydWN0b3IocHVibGljIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgfVxyXG4gIG9wdGlvbnM6IElucHV0Q2xhc3NbXTtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVsb2FkID0gbmV3IElucHV0Q2xhc3ModGhpcy50YWJsZS5lbnZpcm9ubWVudCwgdGhpcy50YWJsZS5sLCAnUmVsb2FkJywgJ2ZhZCBmYS1zeW5jLWFsdCcsIElucHV0VHlwZS5JY29uLCAnbS1yLTEwLXAnKTtcclxuICAgIHRoaXMuZXhjZWwgPSBuZXcgSW5wdXRDbGFzcyh0aGlzLnRhYmxlLmVudmlyb25tZW50LCB0aGlzLnRhYmxlLmwsICdFeHBvcnRFeGNlbCcsICdmYWQgZmEtZmlsZS1leGNlbCBmLXMtMjEnLCBJbnB1dFR5cGUuSWNvbiwgJ20tci0xMC1wJyk7XHJcbiAgICB0aGlzLm1heGltdW0gPSBuZXcgSW5wdXRDbGFzcyh0aGlzLnRhYmxlLmVudmlyb25tZW50LCB0aGlzLnRhYmxlLmwsICdNYXhpbXVtJywgJ2ZhZCBmYS1hcnJvd3MtbWF4aW1pemUnLCBJbnB1dFR5cGUuSWNvbiwgJ20tci0xMC1wJyk7XHJcbiAgICB0aGlzLmV4cGVydFNlYXJjaCA9IG5ldyBJbnB1dENsYXNzKHRoaXMudGFibGUuZW52aXJvbm1lbnQsIHRoaXMudGFibGUubCwgJ0V4cGVydFNlYXJjaCcsICdmYWQgZmEtbWFnbmlmeWluZy1nbGFzcycsIElucHV0VHlwZS5JY29uLCAnbS1yLTEwLXAnKTtcclxuICAgIHRoaXMudGFibGUuc2V0Q29scygpO1xyXG4gICAgaWYgKHRoaXMudGFibGUuc29ydGFibGUpe1xyXG4gICAgICB0aGlzLnRhYmxlLnBlclBhZ2UgPSAtMTtcclxuICAgICAgdGhpcy50YWJsZS5vbkxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRTb3J0YWJsZSgpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZS5zZXQodGhpcy5jaGFuZ2VSb3dzKTtcclxuICAgIGlmICh0aGlzLnRhYmxlLnNlYXJjaEZvcm0pe1xyXG4gICAgICB0aGlzLnRhYmxlLnNlYXJjaEZvcm0uZGlzcGxheUxhYmVsID0gdGhpcy50YWJsZS5leHBlcnRTZWFyY2g7XHJcbiAgICAgIHRoaXMudGFibGUuc2VhcmNoRm9ybS5jbGFzcyA9ICh0aGlzLnRhYmxlLnNlYXJjaEZvcm0uY2xhc3MgPyB0aGlzLnRhYmxlLnNlYXJjaEZvcm0uY2xhc3MgOiAnJykgKyAodGhpcy50YWJsZS5leHBlcnRTZWFyY2ggPyAnJyA6ICcgcC0wJyk7XHJcbiAgICAgIGlmICh0aGlzLnRhYmxlLmV4cGVydFNlYXJjaCl7XHJcbiAgICAgICAgY29uc3QgcyA9IG5ldyBJbnB1dENsYXNzKHRoaXMudGFibGUuZW52aXJvbm1lbnQsIHRoaXMudGFibGUubCwgJ1NlYXJjaCcsICdmYWQgZmEtbWFnbmlmeWluZy1nbGFzcycsIElucHV0VHlwZS5TdWJtaXQsICdibHVlIGgtMzAnKTtcclxuICAgICAgICBzLnN0eWxlID0ge3RvcDogJzIwcHgnLCBsZWZ0OiAnNXB4JywgcG9zaXRpb246ICdhYnNvbHV0ZScsIHdpZHRoOiAnNTAlJ307XHJcbiAgICAgICAgdGhpcy50YWJsZS5zZWFyY2hGb3JtLmlucHV0cy5wdXNoKHMpO1xyXG4gICAgICAgIHRoaXMudGFibGUuc2VhcmNoRm9ybS5uYW1lID0gJ0V4cGVydFNlYXJjaCc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50YWJsZS5zZWFyY2hGb3JtLmlucHV0cy5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgIGNvbnN0IGhhc1N1Ym1pdCA9IHRoaXMudGFibGUuc2VhcmNoRm9ybS5pbnB1dHMuc29tZShzID0+IHMudHlwZSA9PT0gSW5wdXRUeXBlLlN1Ym1pdCk7XHJcbiAgICAgICAgeC5yZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgICAgIHguZGlzcGxheUxhYmVsID0gdGhpcy50YWJsZS5leHBlcnRTZWFyY2g7XHJcbiAgICAgICAgeC5jbGFzcyA9IHguY2xhc3MgKyAnIHNlYXJjaC1mb3JtLWlucCcgKyAodGhpcy50YWJsZS5leHBlcnRTZWFyY2ggJiYgeC50eXBlICE9PSBJbnB1dFR5cGUuU3VibWl0ID8gJyBwLTAnIDogJycpO1xyXG4gICAgICAgIHgud2l0aENsZWFyID0gIWhhc1N1Ym1pdCB8fCB0aGlzLnRhYmxlLmV4cGVydFNlYXJjaDtcclxuICAgICAgICBpZiAoIWhhc1N1Ym1pdCl7XHJcbiAgICAgICAgICBpZiAoeC5vbkNoYW5nZSA9PSBudWxsKXtcclxuICAgICAgICAgICAgeC5vbkNoYW5nZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnRhYmxlLmxvYWQoKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHgudHlwZSA9PT0gSW5wdXRUeXBlLlN1Ym1pdCl7XHJcbiAgICAgICAgICB4Lm9uQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRhYmxlLnNlYXJjaEZvcm0ub25CZWZvcmVTdWJtaXQgJiYgIXRoaXMudGFibGUuc2VhcmNoRm9ybS5vbkJlZm9yZVN1Ym1pdCgpKXtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy50YWJsZS5sb2FkKHgpO1xyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIC8vIHRoaXMudGFibGUuc2VhcmNoRm9ybS5zdWJtaXQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCd0aGlzLnRhYmxlLnNlYXJjaEZvcm0uc3VibWl0Jyk7XHJcbiAgICAgICAgICAvLyAgIGlmICh0aGlzLnRhYmxlLnNlYXJjaEZvcm0ub25CZWZvcmVTdWJtaXQgJiYgIXRoaXMudGFibGUuc2VhcmNoRm9ybS5vbkJlZm9yZVN1Ym1pdCgpKXtcclxuICAgICAgICAgIC8vICAgICByZXR1cm47XHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgIC8vICAgdGhpcy50YWJsZS5sb2FkKHgpO1xyXG4gICAgICAgICAgLy8gICAkKHRoaXMudGFibGVEaXYubmF0aXZlRWxlbWVudCkucmVtb3ZlQ2xhc3MoJ3Nob3ctZXhwZXJ0LXNlYXJjaCcpO1xyXG4gICAgICAgICAgLy8gfTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5nZXRPcHRpb25zKCk7XHJcbiAgICB0aGlzLnJlbG9hZC5vbkNsaWNrID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLnRhYmxlLmxvYWQodGhpcy5yZWxvYWQpO1xyXG4gICAgfTtcclxuICAgIHRoaXMuZXhjZWwub25DbGljayA9ICgpID0+IHtcclxuICAgICAgdGhpcy50YWJsZS5leGNlbCgpO1xyXG4gICAgfTtcclxuICAgIHRoaXMubWF4aW11bS5vbkNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAkKHRoaXMudGFibGVEaXYubmF0aXZlRWxlbWVudCkudG9nZ2xlQ2xhc3MoJ21heGltdW0nKTtcclxuICAgICAgdGhpcy5tYXhpbXVtLmljb24gPSB0aGlzLm1heGltdW0ubmFtZSA9PT0gJ01pbmltdW0nID8gJ2ZhZCBmYS1hcnJvd3MtbWF4aW1pemUnIDogJ2ZhZCBmYS1hcnJvd3MtbWluaW1pemUnO1xyXG4gICAgICB0aGlzLm1heGltdW0ubmFtZSA9IHRoaXMubWF4aW11bS5uYW1lID09PSAnTWluaW11bScgPyAnTWF4aW11bScgOiAnTWluaW11bSc7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5leHBlcnRTZWFyY2gub25DbGljayA9ICgpID0+IHtcclxuICAgICAgJCh0aGlzLnRhYmxlRGl2Lm5hdGl2ZUVsZW1lbnQpLmFkZENsYXNzKCdzaG93LWV4cGVydC1zZWFyY2gnKTtcclxuICAgIH07XHJcbiAgICB0aGlzLnRhYmxlLnNob3dDb25maXJtID0gKGw6IHN0cmluZywgdXJsOiBzdHJpbmcsIGRhdGEsIGFjY2VwdDogKHJlc3VsdDogYW55KSA9PiB2b2lkKSA9PiB7XHJcbiAgICAgIHRoaXMuY29uZmlybS5zaG93KGwsIHVybCwgZGF0YSwgYWNjZXB0KTtcclxuICAgIH07XHJcbiAgfVxyXG4gIGFsbENoZWNrZWQoKTogYm9vbGVhbntcclxuICAgIHJldHVybiB0aGlzLnRhYmxlLnJvd3MuZmlsdGVyKHggPT4gIXguY2hlY2tlZCkubGVuZ3RoID09PSAwO1xyXG4gIH1cclxuICBpc0NoZWNrZWQoKTogYm9vbGVhbntcclxuICAgIHJldHVybiB0aGlzLnRhYmxlLnJvd3MuZmlsdGVyKHggPT4geC5jaGVja2VkKS5sZW5ndGggPiAwO1xyXG4gIH1cclxuICBjaGVja0FsbCgpOiB2b2lke1xyXG4gICAgaWYgKHRoaXMudGFibGUucm93cy5maWx0ZXIoeCA9PiAheC5jaGVja2VkKS5sZW5ndGggPT09IDApe1xyXG4gICAgICB0aGlzLnRhYmxlLnJvd3MuZm9yRWFjaCh4ID0+IHguY2hlY2tlZCA9IGZhbHNlKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnRhYmxlLnJvd3MuZm9yRWFjaCh4ID0+IHguY2hlY2tlZCA9IHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRPcHRpb25zKCk6IElucHV0Q2xhc3NbXXtcclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcbiAgc2V0U29ydGFibGUoKTogdm9pZHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICQodGhpcy5yb3dzLm5hdGl2ZUVsZW1lbnQpLnNvcnRhYmxlKHtcclxuICAgICAgICBheGlzOiAneScsXHJcbiAgICAgICAgaXRlbXM6ICcucm93JyxcclxuICAgICAgICBoYW5kbGU6ICc+IC5oYW5kbGUtY29uID4gLmhhbmRsZS5oYW5kbGUtc29ydGFibGUnLFxyXG4gICAgICAgIHVwZGF0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZGF0YSA9IFtdO1xyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgJCh0aGlzLnJvd3MubmF0aXZlRWxlbWVudCkuc29ydGFibGUoJ3RvQXJyYXknLCB7YXR0cmlidXRlOiAnZGF0YS1pZCd9KS5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgICBkYXRhLnB1c2gocGFyc2VJbnQoeCwgMTApKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgY29uc3QgcCA9IG5ldyBQZXJtaXNzaW9uQ2xhc3MoKTtcclxuICAgICAgICAgIHAuQXJlYSA9IHRoaXMudGFibGUucGVybWlzc2lvbnMuQXJlYTtcclxuICAgICAgICAgIHAuQ29udHJvbGxlciA9IHRoaXMudGFibGUucGVybWlzc2lvbnMuQ29udHJvbGxlcjtcclxuICAgICAgICAgIHAuUmVsYXRlZElkID0gdGhpcy50YWJsZS5wZXJtaXNzaW9ucy5SZWxhdGVkSWQ7XHJcbiAgICAgICAgICBwLkFjdGlvbiA9IHRoaXMudGFibGUucGVybWlzc2lvbnMuQWN0aW9uID8gdGhpcy50YWJsZS5wZXJtaXNzaW9ucy5BY3Rpb24gKyAnLXNvcnQnIDogJ3NvcnQnO1xyXG4gICAgICAgICAgbmV3IFJlcXVlc3RDbGFzcyh0aGlzLnRhYmxlLmVudmlyb25tZW50LCB0aGlzLnRhYmxlLmwpLnNlbmQocC5nZXRVcmwoKS50b0xvd2VyQ2FzZSgpLCBNZXRob2QuUG9zdCwge0lkczogZGF0YX0sIG51bGwsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudGFibGUub25Tb3J0KXtcclxuICAgICAgICAgICAgICB0aGlzLnRhYmxlLm9uU29ydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCAoKSA9PiB7fSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5kaXNhYmxlU2VsZWN0aW9uKCk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuICBnZXRSb3dzKCk6IGFueVtde1xyXG4gICAgY29uc3QgYyA9IHRoaXMudGFibGUucm93cy5maWx0ZXIoeCA9PiAheC5EYXRhLlBhcmVudElkKTtcclxuICAgIGMuZm9yRWFjaCgoeCwgaSkgPT4geC5Sb3dOdW0gPSBjLmxlbmd0aCAtIGkgKyAxKTtcclxuICAgIHJldHVybiBjO1xyXG4gIH1cclxuICAvLyBnZXRPcHRpb25Nb2RhbHMoKTogSW5wdXRDbGFzc1tde1xyXG4gIC8vICAgY29uc3QgbW9kYWxzID0gW107XHJcbiAgLy8gICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnRhYmxlLm9wdGlvbkFjdGlvbnMpKSB7XHJcbiAgLy8gICAgIGlmICh0aGlzLnRhYmxlLm9wdGlvbkFjdGlvbnNba2V5XS5tb2RhbCl7XHJcbiAgLy8gICAgICAgbW9kYWxzLnB1c2godGhpcy50YWJsZS5vcHRpb25BY3Rpb25zW2tleV0ubW9kYWwpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gICByZXR1cm4gbW9kYWxzO1xyXG4gIC8vIH1cclxuICBvbkNoYW5nZVJvd3MoZSk6IHZvaWR7XHJcbiAgICByZXR1cm4gdGhpcy5jaGFuZ2VSb3dzLmVtaXQoZSk7XHJcbiAgfVxyXG4gIG9uQ29uZmlybVNob3coZSk6IHZvaWR7XHJcbiAgICB0aGlzLmNvbmZpcm0uc2hvdyh0aGlzLnRhYmxlLmwoZS5hY3Rpb24gKyAnQ29uZmlybScpLCBlLnVybCwgZS5kYXRhLCBlLmFjY2VwdCk7XHJcbiAgfVxyXG4gIGNoYW5nZVNvcnQoZSwgczogc3RyaW5nKTogdm9pZHtcclxuICAgIGlmICgkKGUudGFyZ2V0KS5jbG9zZXN0KCcuaGVhZGVyLXNlYXJjaCcpLmhhc0NsYXNzKCdoZWFkZXItc2VhcmNoJykpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlLnNvcnRUeXBlID0gdGhpcy50YWJsZS5zb3J0ID09PSBzID8gdGhpcy50YWJsZS5zb3J0VHlwZSA9PT0gJ0FTQycgPyAnREVTQycgOiBudWxsIDogJ0FTQyc7XHJcbiAgICB0aGlzLnRhYmxlLnNvcnQgPSB0aGlzLnRhYmxlLnNvcnRUeXBlID09IG51bGwgPyBudWxsIDogcztcclxuICAgIHRoaXMudGFibGUubG9hZCgpO1xyXG4gIH1cclxuICBnZXRNb2RhbHMoKTogTW9kYWxDbGFzc1tde1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGUub3B0aW9uc0FjdGlvbnMuZmlsdGVyKHggPT4geCBpbnN0YW5jZW9mIE1vZGFsQ2xhc3MpO1xyXG4gIH1cclxuICBoaWRlRXhwZXJ0U2VhcmNoKGUpOiB2b2lke1xyXG4gICAgaWYgKHRoaXMudGFibGUuZXhwZXJ0U2VhcmNoICYmICQoZS50YXJnZXQpLmhhc0NsYXNzKCdzZWFyY2gtZm9ybScpKVxyXG4gICAge1xyXG4gICAgICAkKHRoaXMudGFibGVEaXYubmF0aXZlRWxlbWVudCkucmVtb3ZlQ2xhc3MoJ3Nob3ctZXhwZXJ0LXNlYXJjaCcpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1368,6 +1368,7 @@ class RequestClass {
1368
1368
  }
1369
1369
  else if (res.status === ResultStatusEnum.Unauthorized) {
1370
1370
  m = 'FormBaseErrorExpired';
1371
+ HelperClass.eraseCookie('TOKEN');
1371
1372
  }
1372
1373
  else if (res.status === ResultStatusEnum.NotAccess) {
1373
1374
  m = 'FormBaseErrorAccess';
@@ -1613,6 +1614,7 @@ class FormClass {
1613
1614
  }
1614
1615
  else if (res.status === ResultStatusEnum.Unauthorized) {
1615
1616
  m = this.l('FormBaseErrorExpired');
1617
+ HelperClass.eraseCookie('TOKEN');
1616
1618
  }
1617
1619
  else if (res.status === ResultStatusEnum.NotAccess) {
1618
1620
  m = this.l('FormBaseErrorAccess');
@@ -3183,7 +3185,7 @@ class TableComponent {
3183
3185
  TableComponent.decorators = [
3184
3186
  { type: Component, args: [{
3185
3187
  selector: 'lib-table',
3186
- template: "<div [id]=\"table.id + 'Table'\" [style]=\"table.style\" #tableDiv [className]=\"(table.class ? table.class : '') + (table.sortable ? 'sortable' : '') + (table.hasChildren || table.subTable != null ? ' has-children' : '') + (table.vertical ? ' vertical' : '') + (table.expertSearch ? ' expert-search' : '') + ' table-con w-100'\">\r\n <div *ngIf=\"table.displayLabel\" class=\"title\">\r\n <div class=\"f-r\" [innerHTML]=\"this.table.title ? this.table.title : table.l('List')\"></div>\r\n <span class=\"description\" *ngIf=\"this.table.description != null\" [innerHTML]=\"'( ' + this.table.description + ' )'\"></span>\r\n <div class=\"extra-buttons\" *ngIf=\"table.showExtraButtons\">\r\n <span *ngIf=\"isChecked()\">\r\n <lib-form-icon *ngFor=\"let btn of table.extraButtons\" [inp]=\"btn\"></lib-form-icon>\r\n </span>\r\n <span *ngIf=\"!isChecked()\">\r\n <lib-form-icon *ngIf=\"table.expertSearch\" [inp]=\"expertSearch\"></lib-form-icon>\r\n <lib-form-icon [inp]=\"excel\"></lib-form-icon>\r\n <lib-form-icon [inp]=\"reload\"></lib-form-icon>\r\n <lib-form-icon [inp]=\"maximum\"></lib-form-icon>\r\n </span>\r\n </div>\r\n <div *ngIf=\"table.buttons.length > 0\" class=\"buttons\">\r\n <span *ngFor=\"let btn of table.buttons\">\r\n <lib-form-button [inp]=\"btn\" *ngIf=\"btn.type == type.Button\"></lib-form-button>\r\n <lib-form-icon [inp]=\"btn\" *ngIf=\"btn.type == type.Icon\"></lib-form-icon>\r\n <lib-form-label [inp]=\"btn\" *ngIf=\"btn.type == type.Label\"></lib-form-label>\r\n <lib-form-select [inp]=\"btn\" *ngIf=\"btn.type == type.Select\"></lib-form-select>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"search-form\" *ngIf=\"table.searchForm\" (click)=\"hideExpertSearch($event)\">\r\n <lib-form [form]=\"table.searchForm\"></lib-form>\r\n </div>\r\n <lib-form *ngIf=\"table.form && table.form.onTop\" [form]=\"table.form\"></lib-form>\r\n <div class=\"table\">\r\n <div class=\"header\">\r\n <div [className]=\"(table.hasChildren || table.subTable != null ? 'with-handle-children ' : '') + (table.sortable ? 'with-handle-sortable ' : '') + (table.withCheck ? 'with-handle-check ' : '') + 'row'\">\r\n <div class=\"handle-con\">\r\n <div class=\"handle handle-sortable\" *ngIf=\"table.sortable\"></div>\r\n <div class=\"handle handle-check\" *ngIf=\"table.hasChildren || table.subTable != null\"></div>\r\n <div class=\"handle handle-children\" *ngIf=\"table.withCheck\">\r\n <i (click)=\"checkAll()\" [className]=\"(allChecked() ? 'fa-solid fa-square-check c-green' : isChecked() ? 'fa-solid fa-square-minus c-green' : 'fa-regular fa-square') + ' check-row'\" *ngIf=\"table.rows.length > 0\"></i>\r\n </div>\r\n </div>\r\n <div (click)=\"!table.sortable && col.sort && changeSort($event, col.name)\" [className]=\"(!table.sortable && col.sort ? 'sort ' : '') + col.class + ' ' + col.name + '-cell cell w-100'\" *ngFor=\"let col of table.cols\">\r\n <div class=\"header-title\" *ngIf=\"col.search == null || table.sortable\" [innerHTML]=\"table.l(col.name)\"></div>\r\n <div class=\"header-search\" *ngIf=\"!table.sortable && col.search != null\">\r\n <lib-form-textbox *ngIf=\"col.type != colType.Date && col.type != colType.DateTime && col.type != colType.DateDif && col.type != colType.DateRemain && col.type != colType.Month && col.type != colType.Year && col.enum == null\" [inp]=\"col.search\"></lib-form-textbox>\r\n <lib-form-date *ngIf=\"(col.type == colType.Date || col.type == colType.DateTime || col.type === colType.DateDif || col.type === colType.DateRemain || col.type == colType.Month || col.type == colType.Year) && col.enum == null\" [inp]=\"col.search\"></lib-form-date>\r\n <lib-form-select *ngIf=\"col.enum != null\" [inp]=\"col.search\"></lib-form-select>\r\n </div>\r\n <i *ngIf=\"!table.sortable && col.sort\" [className]=\"'sort-icon fas' + (table.sort === col.name ? (table.sortType === 'ASC' ? ' fa-sort-up' : ' fa-sort-down') : ' fa-sort')\"></i>\r\n </div>\r\n <div class=\"cell options\" *ngIf=\"table.optionType == tableOptionType.Show\">{{table.l('Options')}}</div>\r\n </div>\r\n </div>\r\n <div class=\"body\" #rows [style]=\"table.perPage > 0 ? {minHeight: table.height * table.perPage + 'px'} : {minHeight: '250px'}\">\r\n <lib-table-row (confirmShow)=\"onConfirmShow($event)\" [level]=\"1\" (changeRows)=\"onChangeRows($event)\" [id]=\"row.id ? row.id : ''\" [table]=\"table\" [row]=\"row\" *ngFor=\"let row of getRows()\"></lib-table-row>\r\n <lib-table-loading [table]=\"table\"></lib-table-loading>\r\n </div>\r\n </div>\r\n <lib-table-pagination [table]=\"table\" *ngIf=\"table.perPage > 0\"></lib-table-pagination>\r\n <lib-modal *ngIf=\"table.modal != null\" [modal]=\"table.modal\"></lib-modal>\r\n <lib-modal [modal]=\"opt\" *ngFor=\"let opt of getModals()\"></lib-modal>\r\n <lib-confirm #confirm [tableId]=\"table.name\"></lib-confirm>\r\n</div>\r\n",
3188
+ template: "<div [id]=\"table.id + 'Table'\" [style]=\"table.style\" #tableDiv [className]=\"(table.class ? table.class : '') + (table.sortable ? 'sortable' : '') + (table.hasChildren || table.subTable != null ? ' has-children' : '') + (table.vertical ? ' vertical' : '') + (table.expertSearch ? ' expert-search' : '') + ' table-con w-100'\">\r\n <div *ngIf=\"table.displayLabel\" class=\"title\">\r\n <div class=\"f-r\" [innerHTML]=\"this.table.title ? this.table.title : table.l('List')\"></div>\r\n <span class=\"description\" *ngIf=\"this.table.description != null\" [innerHTML]=\"'( ' + this.table.description + ' )'\"></span>\r\n <div class=\"extra-buttons\" *ngIf=\"table.showExtraButtons\">\r\n <lib-form-icon *ngFor=\"let btn of table.extraButtons\" [inp]=\"btn\"></lib-form-icon>\r\n <span *ngIf=\"isChecked()\">\r\n <lib-form-icon *ngFor=\"let btn of table.optionButtons\" [inp]=\"btn\"></lib-form-icon>\r\n </span>\r\n <span *ngIf=\"!isChecked()\">\r\n <lib-form-icon *ngIf=\"table.expertSearch\" [inp]=\"expertSearch\"></lib-form-icon>\r\n <lib-form-icon [inp]=\"excel\"></lib-form-icon>\r\n <lib-form-icon [inp]=\"reload\"></lib-form-icon>\r\n <lib-form-icon [inp]=\"maximum\"></lib-form-icon>\r\n </span>\r\n </div>\r\n <div *ngIf=\"table.buttons.length > 0\" class=\"buttons\">\r\n <span *ngFor=\"let btn of table.buttons\">\r\n <lib-form-button [inp]=\"btn\" *ngIf=\"btn.type == type.Button\"></lib-form-button>\r\n <lib-form-icon [inp]=\"btn\" *ngIf=\"btn.type == type.Icon\"></lib-form-icon>\r\n <lib-form-label [inp]=\"btn\" *ngIf=\"btn.type == type.Label\"></lib-form-label>\r\n <lib-form-select [inp]=\"btn\" *ngIf=\"btn.type == type.Select\"></lib-form-select>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"search-form\" *ngIf=\"table.searchForm\" (click)=\"hideExpertSearch($event)\">\r\n <lib-form [form]=\"table.searchForm\"></lib-form>\r\n </div>\r\n <lib-form *ngIf=\"table.form && table.form.onTop\" [form]=\"table.form\"></lib-form>\r\n <div class=\"table\">\r\n <div class=\"header\">\r\n <div [className]=\"(table.hasChildren || table.subTable != null ? 'with-handle-children ' : '') + (table.sortable ? 'with-handle-sortable ' : '') + (table.withCheck ? 'with-handle-check ' : '') + 'row'\">\r\n <div class=\"handle-con\">\r\n <div class=\"handle handle-sortable\" *ngIf=\"table.sortable\"></div>\r\n <div class=\"handle handle-check\" *ngIf=\"table.hasChildren || table.subTable != null\"></div>\r\n <div class=\"handle handle-children\" *ngIf=\"table.withCheck\">\r\n <i (click)=\"checkAll()\" [className]=\"(allChecked() ? 'fa-solid fa-square-check c-green' : isChecked() ? 'fa-solid fa-square-minus c-green' : 'fa-regular fa-square') + ' check-row'\" *ngIf=\"table.rows.length > 0\"></i>\r\n </div>\r\n </div>\r\n <div (click)=\"!table.sortable && col.sort && changeSort($event, col.name)\" [className]=\"(!table.sortable && col.sort ? 'sort ' : '') + col.class + ' ' + col.name + '-cell cell w-100'\" *ngFor=\"let col of table.cols\">\r\n <div class=\"header-title\" *ngIf=\"col.search == null || table.sortable\" [innerHTML]=\"table.l(col.name)\"></div>\r\n <div class=\"header-search\" *ngIf=\"!table.sortable && col.search != null\">\r\n <lib-form-textbox *ngIf=\"col.type != colType.Date && col.type != colType.DateTime && col.type != colType.DateDif && col.type != colType.DateRemain && col.type != colType.Month && col.type != colType.Year && col.enum == null\" [inp]=\"col.search\"></lib-form-textbox>\r\n <lib-form-date *ngIf=\"(col.type == colType.Date || col.type == colType.DateTime || col.type === colType.DateDif || col.type === colType.DateRemain || col.type == colType.Month || col.type == colType.Year) && col.enum == null\" [inp]=\"col.search\"></lib-form-date>\r\n <lib-form-select *ngIf=\"col.enum != null\" [inp]=\"col.search\"></lib-form-select>\r\n </div>\r\n <i *ngIf=\"!table.sortable && col.sort\" [className]=\"'sort-icon fas' + (table.sort === col.name ? (table.sortType === 'ASC' ? ' fa-sort-up' : ' fa-sort-down') : ' fa-sort')\"></i>\r\n </div>\r\n <div class=\"cell options\" *ngIf=\"table.optionType == tableOptionType.Show\">{{table.l('Options')}}</div>\r\n </div>\r\n </div>\r\n <div class=\"body\" #rows [style]=\"table.perPage > 0 ? {minHeight: table.height * table.perPage + 'px'} : {minHeight: '250px'}\">\r\n <lib-table-row (confirmShow)=\"onConfirmShow($event)\" [level]=\"1\" (changeRows)=\"onChangeRows($event)\" [id]=\"row.id ? row.id : ''\" [table]=\"table\" [row]=\"row\" *ngFor=\"let row of getRows()\"></lib-table-row>\r\n <lib-table-loading [table]=\"table\"></lib-table-loading>\r\n </div>\r\n </div>\r\n <lib-table-pagination [table]=\"table\" *ngIf=\"table.perPage > 0\"></lib-table-pagination>\r\n <lib-modal *ngIf=\"table.modal != null\" [modal]=\"table.modal\"></lib-modal>\r\n <lib-modal [modal]=\"opt\" *ngFor=\"let opt of getModals()\"></lib-modal>\r\n <lib-confirm #confirm [tableId]=\"table.name\"></lib-confirm>\r\n</div>\r\n",
3187
3189
  styles: [".table-con{background-color:#fff;border-radius:var(--border-radius-base);box-shadow:var(--box-shadow-table);float:right;padding:20px;position:relative}.table-con.maximum{border-radius:0;height:100%;overflow-y:auto;position:fixed;right:0;top:0;width:100%;z-index:102}.table-con>.title{float:right;font-size:16px;font-weight:700;line-height:40px;margin-bottom:10px;position:relative;text-align:right;width:100%;z-index:3}.table-con>.title .description{font-size:13px;font-weight:200;margin-right:10px}.table-con>.title .buttons,.table-con>.title .extra-buttons{float:left;margin-top:5px;position:relative;z-index:1}.table-con>.title .extra-buttons{min-width:80px}.table-con>.search-form{border-radius:var(--border-radius-base);float:right;margin-bottom:10px;width:100%}.table-con.expert-search>.search-form{background-color:rgba(51,51,51,.4);height:100%;left:0;margin-bottom:0;opacity:0;overflow:hidden;position:absolute;top:0;transition:all .35s ease-in-out;visibility:hidden;width:100%;z-index:4}.table-con.expert-search.show-expert-search>.search-form{opacity:1;visibility:visible}::ng-deep .table-con.expert-search>.search-form .form{background-color:var(--white);box-shadow:var(--box-shadow-right);height:100%;left:calc(-20% - 20px);padding:20px;position:absolute;top:0;transition:all .35s ease-in-out;width:20%;z-index:4}::ng-deep .table-con.expert-search>.search-form .form .inputs{float:right;height:calc(100% - 50px);margin:0;overflow-y:auto;width:100%}::ng-deep .table-con.expert-search.show-expert-search>.search-form .form{left:0}.table-con .table,.table-con .table .header{float:right;width:100%}.table-con .table .header .row{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;align-items:center;background-color:var(--base-white);border-radius:var(--border-radius-base);display:flex;flex-wrap:wrap;float:right;justify-content:right;position:relative;width:100%}.table-con .table .header .row.with-handle-check,.table-con .table .header .row.with-handle-children,.table-con .table .header .row.with-handle-sortable{padding-right:30px}.table-con .table .header .row.with-handle-children.with-handle-check,.table-con .table .header .row.with-handle-sortable.with-handle-check,.table-con .table .header .row.with-handle-sortable.with-handle-children{padding-right:60px}.table-con .table .header .row.with-handle-sortable.with-handle-children.with-handle-check{padding-right:90px}.table-con .table .header .row .cell{align-items:center;color:var(--black-light);display:flex;float:right;font-size:12px;font-weight:200;font-weight:400;height:45px;justify-content:center;position:relative}.table-con .table .header .row .cell.options{margin-left:auto;margin-right:auto}.table-con .table .header .row .handle-con{height:100%;position:absolute;right:0;top:0}.table-con .table .header .row .handle-con .handle{align-items:center;display:flex;float:right;height:100%;justify-content:center;width:30px}.table-con .table .header .row .handle-con .handle i{cursor:pointer;font-size:18px}.table-con .table .header .row .cell.sort{cursor:pointer}.table-con .table .header .row .cell .header-title{float:right;padding:0 15px;text-align:center;width:calc(100% - 20px)}.table-con .table .header .row .cell .header-search{float:right;width:calc(100% - 20px)}.table-con .table .header .row .cell .sort-icon{float:right;font-size:13px;height:20px;left:5px;line-height:20px;opacity:.6;top:calc(50% - 10px);width:20px}.table-con .table .body{float:right;position:relative;width:100%}::ng-deep .table-con .table .header .row .cell .check-row{cursor:pointer;font-size:18px;height:30px;line-height:30px}::ng-deep .table-con.vertical .table lib-table-row>.row-con>.row:after{background-image:linear-gradient(180deg,rgba(0,0,0,.05),rgba(50,50,50,.15),rgba(0,0,0,.05));height:100%;left:0;right:unset;width:1px}::ng-deep .table-con.vertical:not(.sortable) .table lib-table-row:first-of-type>.row-con>.row:after,::ng-deep .table-con:not(.sortable) .table lib-table-row:last-of-type>.row-con>.row:after{background-image:unset}.table-con.vertical .table .header{display:none}::ng-deep .table-con .table lib-table-row{display:contents}.table-con.vertical .table .body{display:flex}::ng-deep .table-con.vertical .table lib-table-row:first-of-type>.row-con{background-color:var(--base-white);border-radius:var(--border-radius-base);max-width:150px}@media (max-width:499.99px){::ng-deep .table-con.expert-search>.search-form .form{left:calc(-100% - 20px);width:100%}}@media (min-width:500px) and (max-width:699.99px){::ng-deep .table-con.expert-search>.search-form .form{left:calc(-50% - 20px);width:50%}}@media (min-width:700px) and (max-width:999.99px){::ng-deep .table-con.expert-search>.search-form .form{left:calc(-40% - 20px);width:40%}}@media (min-width:1000px) and (max-width:1599.99px){::ng-deep .table-con.expert-search>.search-form .form{left:calc(-30% - 20px);width:30%}}"]
3188
3190
  },] }
3189
3191
  ];
@@ -8046,6 +8048,7 @@ class TableClass {
8046
8048
  this.showExtraButtons = true;
8047
8049
  this.firstLoad = true;
8048
8050
  this.extraButtons = [];
8051
+ this.optionButtons = [];
8049
8052
  this.form = null;
8050
8053
  this.searchForm = null;
8051
8054
  this.modal = null;
@@ -8158,6 +8161,7 @@ class TableClass {
8158
8161
  }
8159
8162
  else if (res.status === ResultStatusEnum.Unauthorized) {
8160
8163
  m = 'FormBaseErrorExpired';
8164
+ HelperClass.eraseCookie('TOKEN');
8161
8165
  }
8162
8166
  else if (res.status === ResultStatusEnum.NotAccess) {
8163
8167
  m = 'FormBaseErrorAccess';
@@ -8390,7 +8394,7 @@ class TableClass {
8390
8394
  });
8391
8395
  };
8392
8396
  }
8393
- this.extraButtons.push(opt);
8397
+ this.optionButtons.push(opt);
8394
8398
  }
8395
8399
  if (this.form) {
8396
8400
  this.form.addButtons('Save', this.permissions.Type === PermissionTypeEnum.Form ? 'green w-10 only-icon f-l' : 'green', this.permissions.Type !== PermissionTypeEnum.Form, this.permissions.getAccesses().some(x => x.AccessType === PermissionAccessTypeEnum.Insert), this.permissions.Type === PermissionTypeEnum.Form ? (data) => {