@piserve-tech/form-submission 1.3.302 → 1.3.303

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.
@@ -301,7 +301,11 @@ export class FormService {
301
301
  for (const key of Object.keys(this.header)) {
302
302
  const val = this.header[key];
303
303
  if (val !== undefined && val !== null) {
304
- safe[key] = String(val);
304
+ let headerKey = key;
305
+ if (key === 'authUser') {
306
+ headerKey = 'auth-user';
307
+ }
308
+ safe[headerKey] = String(val);
305
309
  }
306
310
  }
307
311
  }
@@ -317,4 +321,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
317
321
  providedIn: 'root',
318
322
  }]
319
323
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.DataService }]; } });
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBTzNFLE1BQU0sT0FBTyxXQUFXO0lBTXRCLFlBQW9CLElBQWdCLEVBQVUsV0FBd0I7UUFBbEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBTDlELFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDNUIsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUtmLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3hELElBQUksU0FBUyxFQUFFO2dCQUNiLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO2FBQ2xDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FB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LENBQUMsQ0FBQztpQkFDekI7YUFDRjtTQUNGO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2Q0FBNkMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBallVLFdBQVc7bUhBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4vZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBhcGlVcmw6IHN0cmluZyA9ICcnO1xuICBoZWFkZXI6IGFueSA9IHt9O1xuICBwYXJlbnRRdWVzdGlvbnM6IGFueTtcbiAgc3ViZm9ybURhdGE6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlKSB7XG4gICAgdGhpcy5kYXRhU2VydmljZS5hcGlVcmwkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5hcGlVcmwgPSBkYXRhO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhU2VydmljZS5oZWFkZXIkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5oZWFkZXIgPSBkYXRhO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhU2VydmljZS5wYXJlbnRRdWVzdGlvbnMkLnN1YnNjcmliZSgocXVlc3Rpb25zKSA9PiB7XG4gICAgICBpZiAocXVlc3Rpb25zKSB7XG4gICAgICAgIHRoaXMucGFyZW50UXVlc3Rpb25zID0gcXVlc3Rpb25zO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhU2VydmljZS5zdWJmb3JtJC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuc3ViZm9ybURhdGEgPSBkYXRhO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UXVlc3Rpb25zKFxuICAgIG1vZHVsZU5hbWU6IHN0cmluZyxcbiAgICBwYWdlTnVtYmVyOiBudW1iZXIgPSAxLFxuICAgIHJvd1NldDogbnVtYmVyID0gMCxcbiAgICBwcm9ncmVzc2l2ZUxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlLFxuICAgIGNvdW50cnk6IHN0cmluZyA9ICcnXG4gICkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5nZXRTYWZlSGVhZGVycygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXG4gICAgICAuc2V0KCdwYWdlTnVtYmVyJywgcGFnZU51bWJlci50b1N0cmluZygpKVxuICAgICAgLnNldCgncm93U2V0Jywgcm93U2V0LnRvU3RyaW5nKCkpXG4gICAgICAuc2V0KCdjb3VudHJ5JywgY291bnRyeSlcbiAgICAgIC5zZXQoJ3Byb2dyZXNzaXZlTG9hZGluZycsIHByb2dyZXNzaXZlTG9hZGluZyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYXBpVXJsfS9hcGkvcHVibGljL2Zvcm1zLyR7bW9kdWxlTmFtZX1gLCB7XG4gICAgICBoZWFkZXJzLFxuICAgICAgcGFyYW1zLFxuICAgIH0pO1xuICB9XG5cbiAgZmV0Y2hEYXRhRnJvbURhdGFiYXNlKGRhdGFiYXNlOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmFwaVVybH0vYXBpL2xvYWQtZnJvbS1kYmAsIGRhdGFiYXNlLCB7XG4gICAgICBoZWFkZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgZmV0Y2hEYXRhRnJvbUxvb2t1cCh0YWJsZU5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvbG9va3VwLyR7dGFibGVOYW1lfWApO1xuICB9XG5cbiAgZmV0Y2hEYXRhRnJvbUV4dGVybmFsQVBJKFxuICAgIGFwaUNvbmZpZzogYW55LFxuICAgIHNlbGVjdGVkVmFsdWVzOiBhbnlbXSA9IFtdXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgLy8g4pyFIENoZWNrIGlmIHBhZ2luYXRpb24gZXhpc3RzXG4gICAgY29uc3QgaGFzUGFnaW5hdGlvbiA9XG4gICAgICBhcGlDb25maWcucGFyYW1zPy5zb21lKChwOiBhbnkpID0+IHAudmFsdWVTb3VyY2UgPT09ICdQQUdFX0lOREVYJykgJiZcbiAgICAgIGFwaUNvbmZpZy5wYXJhbXM/LnNvbWUoKHA6IGFueSkgPT4gcC52YWx1ZVNvdXJjZSA9PT0gJ1BBR0VfU0laRScpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBIRUFERVJTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIC8vIGhlbHBlcjogcmVzb2x2ZSBhIHZhbHVlIChvciB2YWx1ZXMpIGJhc2VkIG9uIHZhbHVlU291cmNlXG5cbiAgICAvLyBBcHBseSB0byBoZWFkZXJzIChhc3N1bWluZyBgaGVhZGVyc2AgaXMgYW4gSHR0cEhlYWRlcnMgaW5zdGFuY2UpXG4gICAgaWYgKGFwaUNvbmZpZy5oZWFkZXJzKSB7XG4gICAgICBhcGlDb25maWcuaGVhZGVycy5mb3JFYWNoKChoZWFkZXI6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIWhlYWRlci5rZXlOYW1lKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcmF3VmFsdWUgPSByZXNvbHZlVmFsdWVGcm9tU291cmNlKFxuICAgICAgICAgIGhlYWRlci52YWx1ZVNvdXJjZSxcbiAgICAgICAgICBoZWFkZXIuaW5wdXRWYWx1ZSxcbiAgICAgICAgICBzZWxlY3RlZFZhbHVlc1xuICAgICAgICApO1xuXG4gICAgICAgIGlmIChoZWFkZXIudmFsdWVTb3VyY2UgPT09ICdTRUxFQ1RFRF9WQUxVRVMnKSB7XG4gICAgICAgICAgLy8gT25seSBhZGQgaGVhZGVyIGlmIHdlIGhhdmUgc2VsZWN0ZWQgdmFsdWVzXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmF3VmFsdWUpICYmIHJhd1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmIChoZWFkZXIuaW5wdXRWYWx1ZSA9PT0gJ1NJTkdMRV9WQUxVRScpIHtcbiAgICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KGhlYWRlci5rZXlOYW1lLCBTdHJpbmcocmF3VmFsdWVbMF0pKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaGVhZGVyLmlucHV0VmFsdWUgPT09ICdBUlJBWV9PRl9WQUxVRVMnKSB7XG4gICAgICAgICAgICAgIC8vIGpvaW4gYnkgY29tbWEgZm9yIGhlYWRlcnMgKGNvbW1vbiBwYXR0ZXJuKVxuICAgICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoaGVhZGVyLmtleU5hbWUsIHJhd1ZhbHVlLmpvaW4oJywnKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBmYWxsYmFjazogam9pblxuICAgICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoaGVhZGVyLmtleU5hbWUsIHJhd1ZhbHVlLmpvaW4oJywnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIG5vIHNlbGVjdGVkIHZhbHVlcyAtPiBza2lwIGhlYWRlclxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZvciBub24tc2VsZWN0ZWQgc291cmNlczogc2tpcCB3aGVuIHVucmVzb2x2ZWRcbiAgICAgICAgaWYgKHJhd1ZhbHVlID09PSBudWxsIHx8IHJhd1ZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICAvLyBJZiByYXdWYWx1ZSBpcyBhcnJheSAtPiBqb2luIGJ5IGNvbW1hIChoZWFkZXJzIGV4cGVjdCBzaW5nbGUgc3RyaW5nKVxuICAgICAgICBjb25zdCBoZWFkZXJWYWx1ZSA9IEFycmF5LmlzQXJyYXkocmF3VmFsdWUpXG4gICAgICAgICAgPyByYXdWYWx1ZS5qb2luKCcsJylcbiAgICAgICAgICA6IFN0cmluZyhyYXdWYWx1ZSk7XG5cbiAgICAgICAgaWYgKGhlYWRlci5rZXlOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdhdXRob3JpemF0aW9uJykge1xuICAgICAgICAgIC8vIGFkZCBCZWFyZXIgb25seSB3aGVuIGhlYWRlclZhbHVlIGlzIHRydXRoeSAoYW5kIG5vdCBhbHJlYWR5IHByZWZpeGVkKVxuICAgICAgICAgIGNvbnN0IHRva2VuID0gaGVhZGVyVmFsdWUuc3RhcnRzV2l0aCgnQmVhcmVyICcpXG4gICAgICAgICAgICA/IGhlYWRlclZhbHVlXG4gICAgICAgICAgICA6IGBCZWFyZXIgJHtoZWFkZXJWYWx1ZX1gO1xuICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldChoZWFkZXIua2V5TmFtZSwgdG9rZW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldChoZWFkZXIua2V5TmFtZSwgaGVhZGVyVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBBUkFNUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgLy8gaGVscGVyOiByZXNvbHZlIGEgdmFsdWUgKG9yIHZhbHVlcykgYmFzZWQgb24gdmFsdWVTb3VyY2VcbiAgICBmdW5jdGlvbiByZXNvbHZlVmFsdWVGcm9tU291cmNlKFxuICAgICAgdmFsdWVTb3VyY2U6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgIGlucHV0VmFsdWU6IGFueSxcbiAgICAgIHNlbGVjdGVkVmFsdWVzOiBhbnlbXSA9IFtdXG4gICAgKSB7XG4gICAgICBpZiAoIXZhbHVlU291cmNlKSByZXR1cm4gbnVsbDtcblxuICAgICAgc3dpdGNoICh2YWx1ZVNvdXJjZSkge1xuICAgICAgICBjYXNlICdMT0NBTF9TVE9SQUdFJzpcbiAgICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oaW5wdXRWYWx1ZSk7IC8vIHN0cmluZyBvciBudWxsXG5cbiAgICAgICAgY2FzZSAnU0VTU0lPTl9TVE9SQUdFJzpcbiAgICAgICAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShpbnB1dFZhbHVlKTsgLy8gc3RyaW5nIG9yIG51bGxcblxuICAgICAgICBjYXNlICdDVVNUT01fSU5QVVQnOlxuICAgICAgICBjYXNlICdRVUVTVElPTic6XG4gICAgICAgIGNhc2UgJ1BBR0VfSU5ERVgnIDpcbiAgICAgICAgY2FzZSAnUEFHRV9TSVpFJyA6XG4gICAgICAgIGNhc2UgJ1NFQVJDSF9TVFJJTkcnIDpcbiAgICAgICAgICAvLyBpbnB1dFZhbHVlIG1heSBiZSBhIHNpbmdsZSB2YWx1ZSBvciBhbiBhcnJheS9DU1YgZGVwZW5kaW5nIG9uIHVzYWdlXG4gICAgICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG5cbiAgICAgICAgY2FzZSAnU0VMRUNURURfVkFMVUVTJzpcbiAgICAgICAgICAvLyBGb3IgU0VMRUNURURfVkFMVUVTLCByZXR1cm4gdGhlIHNlbGVjdGVkVmFsdWVzIGFycmF5IChjYWxsZXIgZGVjaWRlcyBTSU5HTEUvQVJSQVkgYmVoYXZpb3IpXG4gICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRWYWx1ZXMpID8gc2VsZWN0ZWRWYWx1ZXMgOiBbXTtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgdmFsdWVTb3VyY2UgZm9yIHBhcmFtczogJHt2YWx1ZVNvdXJjZX1gKTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVc2FnZTogYnVpbGQgcGFyYW1zIChhc3N1bWluZyBgcGFyYW1zYCBpcyBhbiBIdHRwUGFyYW1zIGluc3RhbmNlKVxuICAgIGlmIChhcGlDb25maWcucGFyYW1zKSB7XG4gICAgICBhcGlDb25maWcucGFyYW1zLmZvckVhY2goKHBhcmFtOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFwYXJhbS5rZXlOYW1lKSByZXR1cm47XG5cbiAgICAgICAgLy8gUmVzb2x2ZSByYXcgdmFsdWUgYmFzZWQgb24gc291cmNlXG4gICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gcmVzb2x2ZVZhbHVlRnJvbVNvdXJjZShcbiAgICAgICAgICBwYXJhbS52YWx1ZVNvdXJjZSxcbiAgICAgICAgICBwYXJhbS5pbnB1dFZhbHVlLFxuICAgICAgICAgIHNlbGVjdGVkVmFsdWVzXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gSWYgcGFyYW0gZXhwZWN0cyBzZWxlY3RlZCB2YWx1ZXMsIGhhbmRsZSBTSU5HTEVfVkFMVUUgdnMgQVJSQVlfT0ZfVkFMVUVTXG4gICAgICAgIGlmIChwYXJhbS52YWx1ZVNvdXJjZSA9PT0gJ1NFTEVDVEVEX1ZBTFVFUycpIHtcbiAgICAgICAgICAvLyBPbmx5IGFkZCBpZiB0aGVyZSBhcmUgYWN0dWFsIHNlbGVjdGVkIHZhbHVlc1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJhd1ZhbHVlKSAmJiByYXdWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAocGFyYW0uaW5wdXRWYWx1ZSA9PT0gJ1NJTkdMRV9WQUxVRScpIHtcbiAgICAgICAgICAgICAgLy8gc2V0IHRvIGZpcnN0IHNlbGVjdGVkIHZhbHVlXG4gICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQocGFyYW0ua2V5TmFtZSwgcmF3VmFsdWVbMF0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbS5pbnB1dFZhbHVlID09PSAnQVJSQVlfT0ZfVkFMVUVTJykge1xuICAgICAgICAgICAgICAvLyBhcHBlbmQgZWFjaCBzZWxlY3RlZCB2YWx1ZSBhcyByZXBlYXRlZCBwYXJhbVxuICAgICAgICAgICAgICByYXdWYWx1ZS5mb3JFYWNoKCh2YWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQocGFyYW0ua2V5TmFtZSwgdmFsKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBpZiBpbnB1dFZhbHVlIG5vdCBwcm92aWRlZCwgZGVmYXVsdCB0byBhcnJheSBiZWhhdmlvclxuICAgICAgICAgICAgICByYXdWYWx1ZS5mb3JFYWNoKCh2YWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQocGFyYW0ua2V5TmFtZSwgdmFsKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGlmIG5vIHNlbGVjdGVkIHZhbHVlcywgc2tpcCBhZGRpbmcgdGhpcyBwYXJhbVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZvciBub24tc2VsZWN0ZWQgdmFsdWVTb3VyY2VzOiByYXdWYWx1ZSBjb3VsZCBiZSBudWxsL3VuZGVmaW5lZC9zdHJpbmcvYXJyYXlcbiAgICAgICAgaWYgKHJhd1ZhbHVlID09PSBudWxsIHx8IHJhd1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBza2lwIGFkZGluZyBwYXJhbSB3aGVuIHZhbHVlIG5vdCBmb3VuZFxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGlucHV0VmFsdWUgaW5kaWNhdGVzIGFycmF5LW9mLXZhbHVlcyAoZS5nLiwgcGFyYW0uaW5wdXRWYWx1ZSA9PT0gJ0FSUkFZX09GX1ZBTFVFUycpLFxuICAgICAgICAvLyBhY2NlcHQgZWl0aGVyIGFuIGFycmF5IG9yIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZ1xuICAgICAgICBpZiAocGFyYW0uaW5wdXRWYWx1ZSA9PT0gJ0FSUkFZX09GX1ZBTFVFUycpIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyYXdWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJhd1ZhbHVlLmZvckVhY2goKHZhbDogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQocGFyYW0ua2V5TmFtZSwgdmFsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJhd1ZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgLy8gc3VwcG9ydCBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nXG4gICAgICAgICAgICByYXdWYWx1ZVxuICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAubWFwKChzKSA9PiBzLnRyaW0oKSlcbiAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAuZm9yRWFjaCgodmFsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKHBhcmFtLmtleU5hbWUsIHZhbCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBmYWxsYmFjazogY29udmVydCB0byBzdHJpbmcgYW5kIGFwcGVuZFxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChwYXJhbS5rZXlOYW1lLCBTdHJpbmcocmF3VmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZGVmYXVsdDogc2V0IHNpbmdsZSB2YWx1ZVxuICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQocGFyYW0ua2V5TmFtZSwgU3RyaW5nKHJhd1ZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUEFUSCBWQVJJQUJMRVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGxldCB1cmwgPSBhcGlDb25maWcudXJsO1xuICAgIGlmIChhcGlDb25maWcucGF0aFZhcmlhYmxlcykge1xuICAgICAgYXBpQ29uZmlnLnBhdGhWYXJpYWJsZXMuZm9yRWFjaCgocGF0aFZhcjogYW55KSA9PiB7XG4gICAgICAgIGlmIChwYXRoVmFyLmtleU5hbWUpIHtcbiAgICAgICAgICBsZXQgdmFsdWVUb0JpbmQ6IGFueSA9IG51bGw7XG5cbiAgICAgICAgICBzd2l0Y2ggKHBhdGhWYXIudmFsdWVTb3VyY2UpIHtcbiAgICAgICAgICAgIGNhc2UgJ0xPQ0FMX1NUT1JBR0UnOlxuICAgICAgICAgICAgICB2YWx1ZVRvQmluZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHBhdGhWYXIuaW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdTRVNTSU9OX1NUT1JBR0UnOlxuICAgICAgICAgICAgICB2YWx1ZVRvQmluZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0ocGF0aFZhci5pbnB1dFZhbHVlKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0NVU1RPTV9JTlBVVCc6XG4gICAgICAgICAgICBjYXNlICdRVUVTVElPTic6XG4gICAgICAgICAgICAgIHZhbHVlVG9CaW5kID0gcGF0aFZhci5pbnB1dFZhbHVlO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBVbnN1cHBvcnRlZCB2YWx1ZVNvdXJjZTogJHtwYXRoVmFyLnZhbHVlU291cmNlfWApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2YWx1ZVRvQmluZCAhPT0gbnVsbCAmJiB2YWx1ZVRvQmluZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZShgeyR7cGF0aFZhci5rZXlOYW1lfX1gLCB2YWx1ZVRvQmluZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZJTkFMIENBTEwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odXJsLCB7IGhlYWRlcnMsIHBhcmFtcyB9KTtcbiAgfVxuXG4gIHN1Ym1pdEZvcm0oXG4gICAgbW9kdWxlTmFtZTogc3RyaW5nLFxuICAgIGZvcm1EYXRhOiBGb3JtRGF0YSxcbiAgICByZUNBUFRDSEFUb2tlbj86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgIC8vICAgJ0F1dGgtdXNlcic6IHRoaXMuaGVhZGVyLmF1dGhVc2VyLFxuICAgIC8vIH0pO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5nZXRTYWZlSGVhZGVycygpKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwaVVybH0vYXBpL3B1YmxpYy9mb3Jtcy8ke21vZHVsZU5hbWV9L3N1Ym1pc3Npb25zYDtcbiAgICBpZiAocmVDQVBUQ0hBVG9rZW4pIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVjYXB0Y2hhVG9rZW4nLCByZUNBUFRDSEFUb2tlbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIGZvcm1EYXRhLCB7XG4gICAgICBoZWFkZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U3VibWl0dGVkRm9ybShcbiAgICBtb2R1bGVOYW1lOiBzdHJpbmcsXG4gICAgc3VibWlzc2lvbklkOiBzdHJpbmcsXG4gICAgcGFnZU51bWJlcjogbnVtYmVyID0gMSxcbiAgICByb3dTZXQ6IG51bWJlciA9IDAsXG4gICAgbmF2aWdhdGVUbz86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXG4gICAgICAuc2V0KCdwYWdlTnVtYmVyJywgcGFnZU51bWJlci50b1N0cmluZygpKVxuICAgICAgLnNldCgncm93U2V0Jywgcm93U2V0LnRvU3RyaW5nKCkpO1xuICAgIGlmIChuYXZpZ2F0ZVRvKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCduYXZpZ2F0ZUlkJywgbmF2aWdhdGVUbyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGFyZW50UXVlc3Rpb25zKSB7XG4gICAgICB0aGlzLnBhcmVudFF1ZXN0aW9ucy5mb3JFYWNoKChxOiBhbnkpID0+IHtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFyZW50UXVlc3Rpb25zJywgcSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgLy8gICAnQWNjZXB0LUxhbmd1YWdlJzogdGhpcy5oZWFkZXIuYWNjZXB0ZWRMYW5ndWFnZSxcbiAgICAvLyB9KTtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuZ2V0U2FmZUhlYWRlcnMoKSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihcbiAgICAgIGAke3RoaXMuYXBpVXJsfS9hcGkvZm9ybXMvJHttb2R1bGVOYW1lfS9zdWJtaXNzaW9ucy8ke3N1Ym1pc3Npb25JZH1gLFxuICAgICAgeyBoZWFkZXJzLCBwYXJhbXMgfVxuICAgICk7XG4gIH1cblxuICB1cGRhdGVGb3JtKFxuICAgIG1vZHVsZU5hbWU6IHN0cmluZyxcbiAgICBzdWJtaXNzaW9uSWQ6IHN0cmluZyxcbiAgICBmb3JtRGF0YTogRm9ybURhdGEsXG4gICAgcmVDQVBUQ0hBVG9rZW4/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAvLyAgICdBdXRoLXVzZXInOiB0aGlzLmhlYWRlci5hdXRoVXNlcixcbiAgICAvLyB9KTtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuZ2V0U2FmZUhlYWRlcnMoKSk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvZm9ybXMvJHttb2R1bGVOYW1lfS9zdWJtaXNzaW9ucy8ke3N1Ym1pc3Npb25JZH1gO1xuICAgIGlmIChyZUNBUFRDSEFUb2tlbikge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdyZWNhcHRjaGFUb2tlbicsIHJlQ0FQVENIQVRva2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55Pih1cmwsIGZvcm1EYXRhLCB7XG4gICAgICBoZWFkZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgcHJldmlld0ZpbGUodXJsOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgIC8vICAgJ0FjY2VwdC1MYW5ndWFnZSc6IHRoaXMuaGVhZGVyLmFjY2VwdGVkTGFuZ3VhZ2UsXG4gICAgLy8gICAnQ29udGVudC1UeXBlJzogdGhpcy5oZWFkZXIuY29udGVudFR5cGUsXG4gICAgLy8gICAnYXV0aC11c2VyJzogdGhpcy5oZWFkZXIuYXV0aFVzZXIsXG4gICAgLy8gICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0aGlzLmhlYWRlci5hdXRob3JpemF0aW9ufWAsXG4gICAgLy8gfSk7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmdldFNhZmVIZWFkZXJzKCkpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgIH07XG4gICAgY29uc3QgZmlsZVVybCA9IHVybDtcbiAgICBjb25zdCBlbmNvZGVkRmlsZVVybCA9IGVuY29kZVVSSUNvbXBvbmVudChmaWxlVXJsKTtcbiAgICBjb25zdCBmdWxsVXJsID0gYD91cmw9JHtlbmNvZGVkRmlsZVVybH1gO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oXG4gICAgICB0aGlzLmFwaVVybCArIGAvYXBpL2Nkbi9wcmV2aWV3JHtmdWxsVXJsfWAsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuXG4gIGdldFN1YmZvcm1TdWJtaXNzaW9ucyhzdWJGb3JtRGF0YTogYW55KSB7XG4gICAgaWYgKFxuICAgICAgIXN1YkZvcm1EYXRhPy5tb2R1bGVOYW1lIHx8XG4gICAgICAhc3ViRm9ybURhdGE/LmR1cGxpY2F0ZVN1Ym1pc3Npb24/LnNvdXJjZVN1Ym1pc3Npb25JZHNcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuZ2V0U2FmZUhlYWRlcnMoKSk7XG5cbiAgICAvLyBFeHRyYWN0IGRhdGFcbiAgICBjb25zdCBtb2R1bGVOYW1lID0gc3ViRm9ybURhdGEubW9kdWxlTmFtZTtcbiAgICBjb25zdCBzdWJtaXNzaW9uSWRzOiBzdHJpbmdbXSA9XG4gICAgICBzdWJGb3JtRGF0YS5kdXBsaWNhdGVTdWJtaXNzaW9uLnNvdXJjZVN1Ym1pc3Npb25JZHM7XG5cbiAgICAvLyBCdWlsZCBxdWVyeSBzdHJpbmdcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHN1Ym1pc3Npb25JZHNcbiAgICAgIC5tYXAoKGlkKSA9PiBgc3VibWlzc2lvbklkcz0ke2VuY29kZVVSSUNvbXBvbmVudChpZCl9YClcbiAgICAgIC5qb2luKCcmJyk7XG5cbiAgICAvLyBGaW5hbCBVUkxcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwaVVybH0vYXBpL3B1YmxpYy8ke21vZHVsZU5hbWV9L3N1YmZvcm0tc3VibWlzc2lvbnM/JHtxdWVyeVBhcmFtc31gO1xuXG4gICAgLy8gTm93IG1ha2UgQVBJIGNhbGxcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwse1xuICAgICAgaGVhZGVyc1xuICAgIH0pO1xuXG4gIH1cblxuICBnZXRTYWZlSGVhZGVycygpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICBjb25zdCBzYWZlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgaWYgKHRoaXMuaGVhZGVyICYmIHR5cGVvZiB0aGlzLmhlYWRlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuaGVhZGVyKSkge1xuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLmhlYWRlcltrZXldO1xuICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSBudWxsKSB7XG4gICAgICAgICAgc2FmZVtrZXldID0gU3RyaW5nKHZhbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc29sZS5sb2coJ1tGb3JtU2VydmljZV0gZ2V0U2FmZUhlYWRlcnMsIGlucHV0IGhlYWRlcjonLCB0aGlzLmhlYWRlciwgJ291dHB1dCBzYWZlOicsIHNhZmUpO1xuICAgIHJldHVybiBzYWZlO1xuICB9XG59XG4iXX0=
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBTzNFLE1BQU0sT0FBTyxXQUFXO0lBTXRCLFlBQW9CLElBQWdCLEVBQVUsV0FBd0I7UUFBbEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBTDlELFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDNUIsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUtmLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3hELElBQUksU0FBUyxFQUFFO2dCQUNiLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO2FBQ2xDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FB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QUcsS0FBSyxVQUFVLEVBQUU7d0JBQ3RCLFNBQVMsR0FBRyxXQUFXLENBQUM7cUJBQ3pCO29CQUNELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQy9CO2FBQ0Y7U0FDRjtRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsNkNBQTZDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOytHQXJZVSxXQUFXO21IQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtU2VydmljZSB7XG4gIHByaXZhdGUgYXBpVXJsOiBzdHJpbmcgPSAnJztcbiAgaGVhZGVyOiBhbnkgPSB7fTtcbiAgcGFyZW50UXVlc3Rpb25zOiBhbnk7XG4gIHN1YmZvcm1EYXRhOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSkge1xuICAgIHRoaXMuZGF0YVNlcnZpY2UuYXBpVXJsJC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuYXBpVXJsID0gZGF0YTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YVNlcnZpY2UuaGVhZGVyJC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuaGVhZGVyID0gZGF0YTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YVNlcnZpY2UucGFyZW50UXVlc3Rpb25zJC5zdWJzY3JpYmUoKHF1ZXN0aW9ucykgPT4ge1xuICAgICAgaWYgKHF1ZXN0aW9ucykge1xuICAgICAgICB0aGlzLnBhcmVudFF1ZXN0aW9ucyA9IHF1ZXN0aW9ucztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YVNlcnZpY2Uuc3ViZm9ybSQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLnN1YmZvcm1EYXRhID0gZGF0YTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFF1ZXN0aW9ucyhcbiAgICBtb2R1bGVOYW1lOiBzdHJpbmcsXG4gICAgcGFnZU51bWJlcjogbnVtYmVyID0gMSxcbiAgICByb3dTZXQ6IG51bWJlciA9IDAsXG4gICAgcHJvZ3Jlc3NpdmVMb2FkaW5nOiBib29sZWFuID0gdHJ1ZSxcbiAgICBjb3VudHJ5OiBzdHJpbmcgPSAnJ1xuICApIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuZ2V0U2FmZUhlYWRlcnMoKSk7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxuICAgICAgLnNldCgncGFnZU51bWJlcicsIHBhZ2VOdW1iZXIudG9TdHJpbmcoKSlcbiAgICAgIC5zZXQoJ3Jvd1NldCcsIHJvd1NldC50b1N0cmluZygpKVxuICAgICAgLnNldCgnY291bnRyeScsIGNvdW50cnkpXG4gICAgICAuc2V0KCdwcm9ncmVzc2l2ZUxvYWRpbmcnLCBwcm9ncmVzc2l2ZUxvYWRpbmcpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmFwaVVybH0vYXBpL3B1YmxpYy9mb3Jtcy8ke21vZHVsZU5hbWV9YCwge1xuICAgICAgaGVhZGVycyxcbiAgICAgIHBhcmFtcyxcbiAgICB9KTtcbiAgfVxuXG4gIGZldGNoRGF0YUZyb21EYXRhYmFzZShkYXRhYmFzZTogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5hcGlVcmx9L2FwaS9sb2FkLWZyb20tZGJgLCBkYXRhYmFzZSwge1xuICAgICAgaGVhZGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIGZldGNoRGF0YUZyb21Mb29rdXAodGFibGVOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYXBpVXJsfS9hcGkvcHVibGljL2xvb2t1cC8ke3RhYmxlTmFtZX1gKTtcbiAgfVxuXG4gIGZldGNoRGF0YUZyb21FeHRlcm5hbEFQSShcbiAgICBhcGlDb25maWc6IGFueSxcbiAgICBzZWxlY3RlZFZhbHVlczogYW55W10gPSBbXVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIOKchSBDaGVjayBpZiBwYWdpbmF0aW9uIGV4aXN0c1xuICAgIGNvbnN0IGhhc1BhZ2luYXRpb24gPVxuICAgICAgYXBpQ29uZmlnLnBhcmFtcz8uc29tZSgocDogYW55KSA9PiBwLnZhbHVlU291cmNlID09PSAnUEFHRV9JTkRFWCcpICYmXG4gICAgICBhcGlDb25maWcucGFyYW1zPy5zb21lKChwOiBhbnkpID0+IHAudmFsdWVTb3VyY2UgPT09ICdQQUdFX1NJWkUnKTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSEVBREVSUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICAvLyBoZWxwZXI6IHJlc29sdmUgYSB2YWx1ZSAob3IgdmFsdWVzKSBiYXNlZCBvbiB2YWx1ZVNvdXJjZVxuXG4gICAgLy8gQXBwbHkgdG8gaGVhZGVycyAoYXNzdW1pbmcgYGhlYWRlcnNgIGlzIGFuIEh0dHBIZWFkZXJzIGluc3RhbmNlKVxuICAgIGlmIChhcGlDb25maWcuaGVhZGVycykge1xuICAgICAgYXBpQ29uZmlnLmhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFoZWFkZXIua2V5TmFtZSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gcmVzb2x2ZVZhbHVlRnJvbVNvdXJjZShcbiAgICAgICAgICBoZWFkZXIudmFsdWVTb3VyY2UsXG4gICAgICAgICAgaGVhZGVyLmlucHV0VmFsdWUsXG4gICAgICAgICAgc2VsZWN0ZWRWYWx1ZXNcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoaGVhZGVyLnZhbHVlU291cmNlID09PSAnU0VMRUNURURfVkFMVUVTJykge1xuICAgICAgICAgIC8vIE9ubHkgYWRkIGhlYWRlciBpZiB3ZSBoYXZlIHNlbGVjdGVkIHZhbHVlc1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJhd1ZhbHVlKSAmJiByYXdWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAoaGVhZGVyLmlucHV0VmFsdWUgPT09ICdTSU5HTEVfVkFMVUUnKSB7XG4gICAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldChoZWFkZXIua2V5TmFtZSwgU3RyaW5nKHJhd1ZhbHVlWzBdKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhlYWRlci5pbnB1dFZhbHVlID09PSAnQVJSQVlfT0ZfVkFMVUVTJykge1xuICAgICAgICAgICAgICAvLyBqb2luIGJ5IGNvbW1hIGZvciBoZWFkZXJzIChjb21tb24gcGF0dGVybilcbiAgICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KGhlYWRlci5rZXlOYW1lLCByYXdWYWx1ZS5qb2luKCcsJykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gZmFsbGJhY2s6IGpvaW5cbiAgICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KGhlYWRlci5rZXlOYW1lLCByYXdWYWx1ZS5qb2luKCcsJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBubyBzZWxlY3RlZCB2YWx1ZXMgLT4gc2tpcCBoZWFkZXJcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3Igbm9uLXNlbGVjdGVkIHNvdXJjZXM6IHNraXAgd2hlbiB1bnJlc29sdmVkXG4gICAgICAgIGlmIChyYXdWYWx1ZSA9PT0gbnVsbCB8fCByYXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICAgICAgLy8gSWYgcmF3VmFsdWUgaXMgYXJyYXkgLT4gam9pbiBieSBjb21tYSAoaGVhZGVycyBleHBlY3Qgc2luZ2xlIHN0cmluZylcbiAgICAgICAgY29uc3QgaGVhZGVyVmFsdWUgPSBBcnJheS5pc0FycmF5KHJhd1ZhbHVlKVxuICAgICAgICAgID8gcmF3VmFsdWUuam9pbignLCcpXG4gICAgICAgICAgOiBTdHJpbmcocmF3VmFsdWUpO1xuXG4gICAgICAgIGlmIChoZWFkZXIua2V5TmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYXV0aG9yaXphdGlvbicpIHtcbiAgICAgICAgICAvLyBhZGQgQmVhcmVyIG9ubHkgd2hlbiBoZWFkZXJWYWx1ZSBpcyB0cnV0aHkgKGFuZCBub3QgYWxyZWFkeSBwcmVmaXhlZClcbiAgICAgICAgICBjb25zdCB0b2tlbiA9IGhlYWRlclZhbHVlLnN0YXJ0c1dpdGgoJ0JlYXJlciAnKVxuICAgICAgICAgICAgPyBoZWFkZXJWYWx1ZVxuICAgICAgICAgICAgOiBgQmVhcmVyICR7aGVhZGVyVmFsdWV9YDtcbiAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoaGVhZGVyLmtleU5hbWUsIHRva2VuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoaGVhZGVyLmtleU5hbWUsIGhlYWRlclZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQQVJBTVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIC8vIGhlbHBlcjogcmVzb2x2ZSBhIHZhbHVlIChvciB2YWx1ZXMpIGJhc2VkIG9uIHZhbHVlU291cmNlXG4gICAgZnVuY3Rpb24gcmVzb2x2ZVZhbHVlRnJvbVNvdXJjZShcbiAgICAgIHZhbHVlU291cmNlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICBpbnB1dFZhbHVlOiBhbnksXG4gICAgICBzZWxlY3RlZFZhbHVlczogYW55W10gPSBbXVxuICAgICkge1xuICAgICAgaWYgKCF2YWx1ZVNvdXJjZSkgcmV0dXJuIG51bGw7XG5cbiAgICAgIHN3aXRjaCAodmFsdWVTb3VyY2UpIHtcbiAgICAgICAgY2FzZSAnTE9DQUxfU1RPUkFHRSc6XG4gICAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGlucHV0VmFsdWUpOyAvLyBzdHJpbmcgb3IgbnVsbFxuXG4gICAgICAgIGNhc2UgJ1NFU1NJT05fU1RPUkFHRSc6XG4gICAgICAgICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oaW5wdXRWYWx1ZSk7IC8vIHN0cmluZyBvciBudWxsXG5cbiAgICAgICAgY2FzZSAnQ1VTVE9NX0lOUFVUJzpcbiAgICAgICAgY2FzZSAnUVVFU1RJT04nOlxuICAgICAgICBjYXNlICdQQUdFX0lOREVYJzpcbiAgICAgICAgY2FzZSAnUEFHRV9TSVpFJzpcbiAgICAgICAgY2FzZSAnU0VBUkNIX1NUUklORyc6XG4gICAgICAgICAgLy8gaW5wdXRWYWx1ZSBtYXkgYmUgYSBzaW5nbGUgdmFsdWUgb3IgYW4gYXJyYXkvQ1NWIGRlcGVuZGluZyBvbiB1c2FnZVxuICAgICAgICAgIHJldHVybiBpbnB1dFZhbHVlO1xuXG4gICAgICAgIGNhc2UgJ1NFTEVDVEVEX1ZBTFVFUyc6XG4gICAgICAgICAgLy8gRm9yIFNFTEVDVEVEX1ZBTFVFUywgcmV0dXJuIHRoZSBzZWxlY3RlZFZhbHVlcyBhcnJheSAoY2FsbGVyIGRlY2lkZXMgU0lOR0xFL0FSUkFZIGJlaGF2aW9yKVxuICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHNlbGVjdGVkVmFsdWVzKSA/IHNlbGVjdGVkVmFsdWVzIDogW107XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFVuc3VwcG9ydGVkIHZhbHVlU291cmNlIGZvciBwYXJhbXM6ICR7dmFsdWVTb3VyY2V9YCk7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVXNhZ2U6IGJ1aWxkIHBhcmFtcyAoYXNzdW1pbmcgYHBhcmFtc2AgaXMgYW4gSHR0cFBhcmFtcyBpbnN0YW5jZSlcbiAgICBpZiAoYXBpQ29uZmlnLnBhcmFtcykge1xuICAgICAgYXBpQ29uZmlnLnBhcmFtcy5mb3JFYWNoKChwYXJhbTogYW55KSA9PiB7XG4gICAgICAgIGlmICghcGFyYW0ua2V5TmFtZSkgcmV0dXJuO1xuXG4gICAgICAgIC8vIFJlc29sdmUgcmF3IHZhbHVlIGJhc2VkIG9uIHNvdXJjZVxuICAgICAgICBjb25zdCByYXdWYWx1ZSA9IHJlc29sdmVWYWx1ZUZyb21Tb3VyY2UoXG4gICAgICAgICAgcGFyYW0udmFsdWVTb3VyY2UsXG4gICAgICAgICAgcGFyYW0uaW5wdXRWYWx1ZSxcbiAgICAgICAgICBzZWxlY3RlZFZhbHVlc1xuICAgICAgICApO1xuXG4gICAgICAgIC8vIElmIHBhcmFtIGV4cGVjdHMgc2VsZWN0ZWQgdmFsdWVzLCBoYW5kbGUgU0lOR0xFX1ZBTFVFIHZzIEFSUkFZX09GX1ZBTFVFU1xuICAgICAgICBpZiAocGFyYW0udmFsdWVTb3VyY2UgPT09ICdTRUxFQ1RFRF9WQUxVRVMnKSB7XG4gICAgICAgICAgLy8gT25seSBhZGQgaWYgdGhlcmUgYXJlIGFjdHVhbCBzZWxlY3RlZCB2YWx1ZXNcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyYXdWYWx1ZSkgJiYgcmF3VmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHBhcmFtLmlucHV0VmFsdWUgPT09ICdTSU5HTEVfVkFMVUUnKSB7XG4gICAgICAgICAgICAgIC8vIHNldCB0byBmaXJzdCBzZWxlY3RlZCB2YWx1ZVxuICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KHBhcmFtLmtleU5hbWUsIHJhd1ZhbHVlWzBdKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW0uaW5wdXRWYWx1ZSA9PT0gJ0FSUkFZX09GX1ZBTFVFUycpIHtcbiAgICAgICAgICAgICAgLy8gYXBwZW5kIGVhY2ggc2VsZWN0ZWQgdmFsdWUgYXMgcmVwZWF0ZWQgcGFyYW1cbiAgICAgICAgICAgICAgcmF3VmFsdWUuZm9yRWFjaCgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKHBhcmFtLmtleU5hbWUsIHZhbCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gaWYgaW5wdXRWYWx1ZSBub3QgcHJvdmlkZWQsIGRlZmF1bHQgdG8gYXJyYXkgYmVoYXZpb3JcbiAgICAgICAgICAgICAgcmF3VmFsdWUuZm9yRWFjaCgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKHBhcmFtLmtleU5hbWUsIHZhbCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBpZiBubyBzZWxlY3RlZCB2YWx1ZXMsIHNraXAgYWRkaW5nIHRoaXMgcGFyYW1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3Igbm9uLXNlbGVjdGVkIHZhbHVlU291cmNlczogcmF3VmFsdWUgY291bGQgYmUgbnVsbC91bmRlZmluZWQvc3RyaW5nL2FycmF5XG4gICAgICAgIGlmIChyYXdWYWx1ZSA9PT0gbnVsbCB8fCByYXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gc2tpcCBhZGRpbmcgcGFyYW0gd2hlbiB2YWx1ZSBub3QgZm91bmRcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBpbnB1dFZhbHVlIGluZGljYXRlcyBhcnJheS1vZi12YWx1ZXMgKGUuZy4sIHBhcmFtLmlucHV0VmFsdWUgPT09ICdBUlJBWV9PRl9WQUxVRVMnKSxcbiAgICAgICAgLy8gYWNjZXB0IGVpdGhlciBhbiBhcnJheSBvciBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdcbiAgICAgICAgaWYgKHBhcmFtLmlucHV0VmFsdWUgPT09ICdBUlJBWV9PRl9WQUxVRVMnKSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmF3VmFsdWUpKSB7XG4gICAgICAgICAgICByYXdWYWx1ZS5mb3JFYWNoKCh2YWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKHBhcmFtLmtleU5hbWUsIHZhbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByYXdWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIC8vIHN1cHBvcnQgY29tbWEgc2VwYXJhdGVkIHN0cmluZ1xuICAgICAgICAgICAgcmF3VmFsdWVcbiAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgLm1hcCgocykgPT4gcy50cmltKCkpXG4gICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgLmZvckVhY2goKHZhbDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChwYXJhbS5rZXlOYW1lLCB2YWwpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZmFsbGJhY2s6IGNvbnZlcnQgdG8gc3RyaW5nIGFuZCBhcHBlbmRcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQocGFyYW0ua2V5TmFtZSwgU3RyaW5nKHJhd1ZhbHVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGRlZmF1bHQ6IHNldCBzaW5nbGUgdmFsdWVcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KHBhcmFtLmtleU5hbWUsIFN0cmluZyhyYXdWYWx1ZSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBBVEggVkFSSUFCTEVTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBsZXQgdXJsID0gYXBpQ29uZmlnLnVybDtcbiAgICBpZiAoYXBpQ29uZmlnLnBhdGhWYXJpYWJsZXMpIHtcbiAgICAgIGFwaUNvbmZpZy5wYXRoVmFyaWFibGVzLmZvckVhY2goKHBhdGhWYXI6IGFueSkgPT4ge1xuICAgICAgICBpZiAocGF0aFZhci5rZXlOYW1lKSB7XG4gICAgICAgICAgbGV0IHZhbHVlVG9CaW5kOiBhbnkgPSBudWxsO1xuXG4gICAgICAgICAgc3dpdGNoIChwYXRoVmFyLnZhbHVlU291cmNlKSB7XG4gICAgICAgICAgICBjYXNlICdMT0NBTF9TVE9SQUdFJzpcbiAgICAgICAgICAgICAgdmFsdWVUb0JpbmQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShwYXRoVmFyLmlucHV0VmFsdWUpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnU0VTU0lPTl9TVE9SQUdFJzpcbiAgICAgICAgICAgICAgdmFsdWVUb0JpbmQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHBhdGhWYXIuaW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdDVVNUT01fSU5QVVQnOlxuICAgICAgICAgICAgY2FzZSAnUVVFU1RJT04nOlxuICAgICAgICAgICAgICB2YWx1ZVRvQmluZCA9IHBhdGhWYXIuaW5wdXRWYWx1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgdmFsdWVTb3VyY2U6ICR7cGF0aFZhci52YWx1ZVNvdXJjZX1gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmFsdWVUb0JpbmQgIT09IG51bGwgJiYgdmFsdWVUb0JpbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoYHske3BhdGhWYXIua2V5TmFtZX19YCwgdmFsdWVUb0JpbmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGSU5BTCBDQUxMIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCwgeyBoZWFkZXJzLCBwYXJhbXMgfSk7XG4gIH1cblxuICBzdWJtaXRGb3JtKFxuICAgIG1vZHVsZU5hbWU6IHN0cmluZyxcbiAgICBmb3JtRGF0YTogRm9ybURhdGEsXG4gICAgcmVDQVBUQ0hBVG9rZW4/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAvLyAgICdBdXRoLXVzZXInOiB0aGlzLmhlYWRlci5hdXRoVXNlcixcbiAgICAvLyB9KTtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuZ2V0U2FmZUhlYWRlcnMoKSk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvZm9ybXMvJHttb2R1bGVOYW1lfS9zdWJtaXNzaW9uc2A7XG4gICAgaWYgKHJlQ0FQVENIQVRva2VuKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ3JlY2FwdGNoYVRva2VuJywgcmVDQVBUQ0hBVG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCBmb3JtRGF0YSwge1xuICAgICAgaGVhZGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFN1Ym1pdHRlZEZvcm0oXG4gICAgbW9kdWxlTmFtZTogc3RyaW5nLFxuICAgIHN1Ym1pc3Npb25JZDogc3RyaW5nLFxuICAgIHBhZ2VOdW1iZXI6IG51bWJlciA9IDEsXG4gICAgcm93U2V0OiBudW1iZXIgPSAwLFxuICAgIG5hdmlnYXRlVG8/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxuICAgICAgLnNldCgncGFnZU51bWJlcicsIHBhZ2VOdW1iZXIudG9TdHJpbmcoKSlcbiAgICAgIC5zZXQoJ3Jvd1NldCcsIHJvd1NldC50b1N0cmluZygpKTtcbiAgICBpZiAobmF2aWdhdGVUbykge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnbmF2aWdhdGVJZCcsIG5hdmlnYXRlVG8pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhcmVudFF1ZXN0aW9ucykge1xuICAgICAgdGhpcy5wYXJlbnRRdWVzdGlvbnMuZm9yRWFjaCgocTogYW55KSA9PiB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3BhcmVudFF1ZXN0aW9ucycsIHEpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgIC8vICAgJ0FjY2VwdC1MYW5ndWFnZSc6IHRoaXMuaGVhZGVyLmFjY2VwdGVkTGFuZ3VhZ2UsXG4gICAgLy8gfSk7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmdldFNhZmVIZWFkZXJzKCkpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oXG4gICAgICBgJHt0aGlzLmFwaVVybH0vYXBpL2Zvcm1zLyR7bW9kdWxlTmFtZX0vc3VibWlzc2lvbnMvJHtzdWJtaXNzaW9uSWR9YCxcbiAgICAgIHsgaGVhZGVycywgcGFyYW1zIH1cbiAgICApO1xuICB9XG5cbiAgdXBkYXRlRm9ybShcbiAgICBtb2R1bGVOYW1lOiBzdHJpbmcsXG4gICAgc3VibWlzc2lvbklkOiBzdHJpbmcsXG4gICAgZm9ybURhdGE6IEZvcm1EYXRhLFxuICAgIHJlQ0FQVENIQVRva2VuPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgLy8gY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgLy8gICAnQXV0aC11c2VyJzogdGhpcy5oZWFkZXIuYXV0aFVzZXIsXG4gICAgLy8gfSk7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmdldFNhZmVIZWFkZXJzKCkpO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXBpVXJsfS9hcGkvcHVibGljL2Zvcm1zLyR7bW9kdWxlTmFtZX0vc3VibWlzc2lvbnMvJHtzdWJtaXNzaW9uSWR9YDtcbiAgICBpZiAocmVDQVBUQ0hBVG9rZW4pIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgncmVjYXB0Y2hhVG9rZW4nLCByZUNBUFRDSEFUb2tlbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PGFueT4odXJsLCBmb3JtRGF0YSwge1xuICAgICAgaGVhZGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIHByZXZpZXdGaWxlKHVybDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAvLyAgICdBY2NlcHQtTGFuZ3VhZ2UnOiB0aGlzLmhlYWRlci5hY2NlcHRlZExhbmd1YWdlLFxuICAgIC8vICAgJ0NvbnRlbnQtVHlwZSc6IHRoaXMuaGVhZGVyLmNvbnRlbnRUeXBlLFxuICAgIC8vICAgJ2F1dGgtdXNlcic6IHRoaXMuaGVhZGVyLmF1dGhVc2VyLFxuICAgIC8vICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dGhpcy5oZWFkZXIuYXV0aG9yaXphdGlvbn1gLFxuICAgIC8vIH0pO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5nZXRTYWZlSGVhZGVycygpKTtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICB9O1xuICAgIGNvbnN0IGZpbGVVcmwgPSB1cmw7XG4gICAgY29uc3QgZW5jb2RlZEZpbGVVcmwgPSBlbmNvZGVVUklDb21wb25lbnQoZmlsZVVybCk7XG4gICAgY29uc3QgZnVsbFVybCA9IGA/dXJsPSR7ZW5jb2RlZEZpbGVVcmx9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KFxuICAgICAgdGhpcy5hcGlVcmwgKyBgL2FwaS9jZG4vcHJldmlldyR7ZnVsbFVybH1gLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cblxuICBnZXRTdWJmb3JtU3VibWlzc2lvbnMoc3ViRm9ybURhdGE6IGFueSkge1xuICAgIGlmIChcbiAgICAgICFzdWJGb3JtRGF0YT8ubW9kdWxlTmFtZSB8fFxuICAgICAgIXN1YkZvcm1EYXRhPy5kdXBsaWNhdGVTdWJtaXNzaW9uPy5zb3VyY2VTdWJtaXNzaW9uSWRzXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLmdldFNhZmVIZWFkZXJzKCkpO1xuXG4gICAgLy8gRXh0cmFjdCBkYXRhXG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IHN1YkZvcm1EYXRhLm1vZHVsZU5hbWU7XG4gICAgY29uc3Qgc3VibWlzc2lvbklkczogc3RyaW5nW10gPVxuICAgICAgc3ViRm9ybURhdGEuZHVwbGljYXRlU3VibWlzc2lvbi5zb3VyY2VTdWJtaXNzaW9uSWRzO1xuXG4gICAgLy8gQnVpbGQgcXVlcnkgc3RyaW5nXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBzdWJtaXNzaW9uSWRzXG4gICAgICAubWFwKChpZCkgPT4gYHN1Ym1pc3Npb25JZHM9JHtlbmNvZGVVUklDb21wb25lbnQoaWQpfWApXG4gICAgICAuam9pbignJicpO1xuXG4gICAgLy8gRmluYWwgVVJMXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcGlVcmx9L2FwaS9wdWJsaWMvJHttb2R1bGVOYW1lfS9zdWJmb3JtLXN1Ym1pc3Npb25zPyR7cXVlcnlQYXJhbXN9YDtcblxuICAgIC8vIE5vdyBtYWtlIEFQSSBjYWxsXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7XG4gICAgICBoZWFkZXJzXG4gICAgfSk7XG5cbiAgfVxuXG4gIGdldFNhZmVIZWFkZXJzKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHNhZmU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBpZiAodGhpcy5oZWFkZXIgJiYgdHlwZW9mIHRoaXMuaGVhZGVyID09PSAnb2JqZWN0Jykge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5oZWFkZXIpKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuaGVhZGVyW2tleV07XG4gICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGwpIHtcbiAgICAgICAgICBsZXQgaGVhZGVyS2V5ID0ga2V5O1xuICAgICAgICAgIGlmIChrZXkgPT09ICdhdXRoVXNlcicpIHtcbiAgICAgICAgICAgIGhlYWRlcktleSA9ICdhdXRoLXVzZXInO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzYWZlW2hlYWRlcktleV0gPSBTdHJpbmcodmFsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zb2xlLmxvZygnW0Zvcm1TZXJ2aWNlXSBnZXRTYWZlSGVhZGVycywgaW5wdXQgaGVhZGVyOicsIHRoaXMuaGVhZGVyLCAnb3V0cHV0IHNhZmU6Jywgc2FmZSk7XG4gICAgcmV0dXJuIHNhZmU7XG4gIH1cbn1cbiJdfQ==
@@ -1517,7 +1517,11 @@ class FormService {
1517
1517
  for (const key of Object.keys(this.header)) {
1518
1518
  const val = this.header[key];
1519
1519
  if (val !== undefined && val !== null) {
1520
- safe[key] = String(val);
1520
+ let headerKey = key;
1521
+ if (key === 'authUser') {
1522
+ headerKey = 'auth-user';
1523
+ }
1524
+ safe[headerKey] = String(val);
1521
1525
  }
1522
1526
  }
1523
1527
  }