cps-ui-kit 18.3.0 → 18.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -82,7 +82,7 @@ export class CpsFileUploadComponent {
82
82
  }
83
83
  }
84
84
  updateExtensionsString() {
85
- this.extensions = this.extensions.map((ext) => ext.startsWith('.') ? ext : '.' + ext);
85
+ this.extensions = this.extensions.map((ext) => ext.startsWith('.') ? ext.toLowerCase() : '.' + ext.toLowerCase());
86
86
  this.extensionsString = this.extensions.join(', ');
87
87
  this.extensionsStringAsterisks = this.extensions
88
88
  .map((ext) => '*' + ext)
@@ -136,8 +136,9 @@ export class CpsFileUploadComponent {
136
136
  return false;
137
137
  if (this.extensions.length < 1)
138
138
  return true;
139
+ const fileNameLowerCase = file.name.toLowerCase();
139
140
  for (const ext of this.extensions) {
140
- if (file.name.endsWith(ext))
141
+ if (fileNameLowerCase.endsWith(ext))
141
142
  return true;
142
143
  }
143
144
  return false;
@@ -178,4 +179,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
178
179
  type: ViewChild,
179
180
  args: ['fileInput']
180
181
  }] } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Nwcy1maWxlLXVwbG9hZC9jcHMtZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLWZpbGUtdXBsb2FkL2Nwcy1maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLGVBQWUsRUFHZixNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUNMLG1CQUFtQixFQUVwQixNQUFNLG9EQUFvRCxDQUFDO0FBQzVELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7QUFFbEc7OztHQUdHO0FBYUgsTUFBTSxPQUFPLHNCQUFzQjtJQVpuQztRQWFFOzs7V0FHRztRQUNNLGVBQVUsR0FBYSxFQUFFLENBQUM7UUFFbkM7OztXQUdHO1FBQ00sYUFBUSxHQUFHLFVBQVUsQ0FBQztRQUUvQjs7O1dBR0c7UUFDTSxVQUFLLEdBQW9CLE1BQU0sQ0FBQztRQUV6Qzs7O1dBR0c7UUFDTSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBRS9COzs7V0FHRztRQUNNLDJC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USxDQUFDLEdBQUcsQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQztRQUMzQyxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzhHQTVKVSxzQkFBc0I7a0dBQXRCLHNCQUFzQixtVUEwQ2IsZUFBZSx1UkNoRnJDLDIrRUF3RUEsNHRGRDFDSSxZQUFZLHNUQUNaLGdCQUFnQix3RkFDaEIsMEJBQTBCLHNJQUMxQixtQkFBbUI7OzJGQUtWLHNCQUFzQjtrQkFabEMsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLDBCQUEwQjt3QkFDMUIsbUJBQW1CO3FCQUNwQjs4QkFTUSxVQUFVO3NCQUFsQixLQUFLO2dCQU1HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsS0FBSztzQkFBYixLQUFLO2dCQU1HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsc0JBQXNCO3NCQUE5QixLQUFLO2dCQU9HLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFNaUMscUJBQXFCO3NCQUEzRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFPM0IsWUFBWTtzQkFBckIsTUFBTTtnQkFPRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBT0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUVpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBudW1iZXJBdHRyaWJ1dGUsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIE9ic2VydmFibGUsIG9mLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb252ZXJ0U2l6ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2ludGVybmFsL3NpemUtdXRpbHMnO1xuaW1wb3J0IHsgQ3BzSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1pY29uL2Nwcy1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDcHNUb29sdGlwRGlyZWN0aXZlLFxuICBDcHNUb29sdGlwUG9zaXRpb25cbn0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jcHMtdG9vbHRpcC9jcHMtdG9vbHRpcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ3BzUHJvZ3Jlc3NMaW5lYXJDb21wb25lbnQgfSBmcm9tICcuLi9jcHMtcHJvZ3Jlc3MtbGluZWFyL2Nwcy1wcm9ncmVzcy1saW5lYXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBDcHNGaWxlVXBsb2FkQ29tcG9uZW50IGlzIGFuIGFkdmFuY2VkIHVwbG9hZGVyIHdpdGggZHJhZ2Ryb3Agc3VwcG9ydC5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nwcy1maWxlLXVwbG9hZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ3BzSWNvbkNvbXBvbmVudCxcbiAgICBDcHNQcm9ncmVzc0xpbmVhckNvbXBvbmVudCxcbiAgICBDcHNUb29sdGlwRGlyZWN0aXZlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jcHMtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcHMtZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDcHNGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvKipcbiAgICogRXhwZWN0ZWQgZXh0ZW5zaW9ucyBvZiBhIGZpbGUgdG8gYmUgdXBsb2FkZWQuIEUuZy4gJ2RvYyBvciAuZG9jJy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBleHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBFeHBlY3RlZCBmaWxlIGRlc2NyaXB0aW9uLiBFLmcuICdXb3JkIGRvY3VtZW50Jy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBmaWxlRGVzYyA9ICdBbnkgZmlsZSc7XG5cbiAgLyoqXG4gICAqIFdpZHRoIG9mIHRoZSBjb21wb25lbnQsIGEgbnVtYmVyIGRlbm90aW5nIHBpeGVscyBvciBhIHN0cmluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB3aWR0aDogbnVtYmVyIHwgc3RyaW5nID0gJzEwMCUnO1xuXG4gIC8qKlxuICAgKiBFeHBlY3RlZCBmaWxlIGluZm8gYmxvY2ssIGV4cGxhaW5pbmcgc29tZSBleHRyYSBzdHVmZiBhYm91dCBmaWxlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGZpbGVJbmZvOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZm9yIHVwbG9hZGVkIGZpbGUgcHJvY2Vzc2luZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBmaWxlUHJvY2Vzc2luZ0NhbGxiYWNrPzogKGZpbGU6IEZpbGUpID0+IE9ic2VydmFibGU8Ym9vbGVhbj4gPVxuICAgIHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUG9zaXRpb24gb2YgZmlsZSBuYW1lIHRvb2x0aXAsIGl0IGNhbiBiZSAndG9wJywgJ2JvdHRvbScsICdsZWZ0JyBvciAncmlnaHQnLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGZpbGVOYW1lVG9vbHRpcFBvc2l0aW9uOiBDcHNUb29sdGlwUG9zaXRpb24gPSAndG9wJztcblxuICAvKipcbiAgICogRmlsZSBuYW1lIHRvb2x0aXAgb2Zmc2V0IGZvciBzdHlsaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGZpbGVOYW1lVG9vbHRpcE9mZnNldDogbnVtYmVyID0gMTI7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGZpbGUgaXMgdXBsb2FkZWQuXG4gICAqIEBwYXJhbSB7RmlsZX0gRmlsZVxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBmaWxlVXBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGU+KCk7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGZpbGUgdXBsb2FkIGZhaWxzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gLSBmaWxlIG5hbWVcbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgZmlsZVVwbG9hZEZhaWxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB1cGxvYWRlZCBmaWxlIGlzIHJlbW92ZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSAtIGZpbGUgbmFtZVxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSB1cGxvYWRlZEZpbGVSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgZmlsZUlucHV0PzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBpc0RyYWdvdmVyRmlsZSA9IGZhbHNlO1xuICB1cGxvYWRlZEZpbGU/OiBGaWxlO1xuICBleHRlbnNpb25zU3RyaW5nID0gJyc7XG4gIGV4dGVuc2lvbnNTdHJpbmdBc3Rlcmlza3MgPSAnJztcbiAgY3Z0V2lkdGggPSAnJztcblxuICBpc1Byb2Nlc3NpbmdGaWxlID0gZmFsc2U7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVFeHRlbnNpb25zU3RyaW5nKCk7XG4gICAgdGhpcy5jdnRXaWR0aCA9IGNvbnZlcnRTaXplKHRoaXMud2lkdGgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmV4dGVuc2lvbnMpIHtcbiAgICAgIHRoaXMudXBkYXRlRXh0ZW5zaW9uc1N0cmluZygpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUV4dGVuc2lvbnNTdHJpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5leHRlbnNpb25zID0gdGhpcy5leHRlbnNpb25zLm1hcCgoZXh0KSA9PlxuICAgICAgZXh0LnN0YXJ0c1dpdGgoJy4nKSA/IGV4dCA6ICcuJyArIGV4dFxuICAgICk7XG4gICAgdGhpcy5leHRlbnNpb25zU3RyaW5nID0gdGhpcy5leHRlbnNpb25zLmpvaW4oJywgJyk7XG4gICAgdGhpcy5leHRlbnNpb25zU3RyaW5nQXN0ZXJpc2tzID0gdGhpcy5leHRlbnNpb25zXG4gICAgICAubWFwKChleHQpID0+ICcqJyArIGV4dClcbiAgICAgIC5qb2luKCcsICcpO1xuICB9XG5cbiAgdHJ5VXBsb2FkRmlsZShldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5pc0RyYWdvdmVyRmlsZSA9IGZhbHNlO1xuICAgIGxldCBmaWxlOiBGaWxlIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdkcm9wJykge1xuICAgICAgZmlsZSA9IChldmVudCBhcyBEcmFnRXZlbnQpLmRhdGFUcmFuc2Zlcj8uZmlsZXMuaXRlbSgwKSA/PyB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZpbGVzID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcztcbiAgICAgIGlmICghZmlsZXMgfHwgZmlsZXMubGVuZ3RoIDwgMSkgcmV0dXJuO1xuICAgICAgZmlsZSA9IGZpbGVzLml0ZW0oMCkgPz8gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5faXNGaWxlRXh0ZW5zaW9uVmFsaWQoZmlsZSkpIHtcbiAgICAgIHRoaXMuZmlsZVVwbG9hZEZhaWxlZC5lbWl0KGZpbGU/Lm5hbWUgPz8gJycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBsb2FkZWRGaWxlID0gZmlsZTtcbiAgICBpZiAodGhpcy51cGxvYWRlZEZpbGUpIHtcbiAgICAgIHRoaXMuZmlsZVVwbG9hZGVkLmVtaXQodGhpcy51cGxvYWRlZEZpbGUpO1xuICAgICAgaWYgKHRoaXMuZmlsZVByb2Nlc3NpbmdDYWxsYmFjaykge1xuICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZpbGUgPSB0cnVlO1xuICAgICAgICB0aGlzLmZpbGVQcm9jZXNzaW5nQ2FsbGJhY2sodGhpcy51cGxvYWRlZEZpbGUpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgIGlmICghcmVzKSB0aGlzLnJlbW92ZVVwbG9hZGVkRmlsZSgpO1xuICAgICAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdGaWxlID0gZmFsc2U7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlVXBsb2FkZWRGaWxlKCkge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnVwbG9hZGVkRmlsZT8ubmFtZSA/PyAnJztcbiAgICB0aGlzLnVwbG9hZGVkRmlsZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnVwbG9hZGVkRmlsZVJlbW92ZWQuZW1pdChuYW1lKTtcblxuICAgIGlmICh0aGlzLmZpbGVJbnB1dCkge1xuICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzRmlsZUV4dGVuc2lvblZhbGlkKGZpbGU/OiBGaWxlKSB7XG4gICAgaWYgKCFmaWxlKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5leHRlbnNpb25zLmxlbmd0aCA8IDEpIHJldHVybiB0cnVlO1xuXG4gICAgZm9yIChjb25zdCBleHQgb2YgdGhpcy5leHRlbnNpb25zKSB7XG4gICAgICBpZiAoZmlsZS5uYW1lLmVuZHNXaXRoKGV4dCkpIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNwcy1maWxlLXVwbG9hZFwiIFtuZ1N0eWxlXT1cInsgd2lkdGg6IGN2dFdpZHRoIH1cIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3BzLWZpbGUtdXBsb2FkLWRyb3B6b25lXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnZHJhZ2dlZC1vdmVyJzogaXNEcmFnb3ZlckZpbGUsXG4gICAgICAnd2l0aC11cGxvYWRzJzogdXBsb2FkZWRGaWxlPy5uYW1lXG4gICAgfVwiXG4gICAgKGRyYWdlbmQpPVwiaXNEcmFnb3ZlckZpbGUgPSBmYWxzZVwiXG4gICAgKGRyYWdlbnRlcik9XCJpc0RyYWdvdmVyRmlsZSA9IHRydWVcIlxuICAgIChkcmFnbGVhdmUpPVwiaXNEcmFnb3ZlckZpbGUgPSBmYWxzZVwiXG4gICAgKGRyYWdvdmVyKT1cImlzRHJhZ292ZXJGaWxlID0gdHJ1ZVwiXG4gICAgKG1vdXNlbGVhdmUpPVwiaXNEcmFnb3ZlckZpbGUgPSBmYWxzZVwiXG4gICAgKGRyb3ApPVwidHJ5VXBsb2FkRmlsZSgkZXZlbnQpXCI+XG4gICAgPGlucHV0XG4gICAgICAjZmlsZUlucHV0XG4gICAgICAoY2hhbmdlKT1cInRyeVVwbG9hZEZpbGUoJGV2ZW50KVwiXG4gICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICBbYWNjZXB0XT1cImV4dGVuc2lvbnNTdHJpbmdcIlxuICAgICAgdGl0bGU9XCJcIiAvPlxuICAgIDxjcHMtaWNvbiBpY29uPVwiZXhwb3J0XCIgc2l6ZT1cImxhcmdlXCIgY29sb3I9XCJ0ZXh0LWRhcmtlc3RcIj48L2Nwcy1pY29uPlxuICAgIDxkaXYgY2xhc3M9XCJjcHMtZmlsZS11cGxvYWQtZHJvcHpvbmUtdGl0bGVcIj5cbiAgICAgIERyYWcmRHJvcCBvciBjaG9vc2UgYSBmaWxlIHRvIHVwbG9hZFxuICAgIDwvZGl2PlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImNwcy1maWxlLXVwbG9hZC1kcm9wem9uZS1maWxlLWRlc2NcIlxuICAgICAgKm5nSWY9XCJmaWxlRGVzYyB8fCBleHRlbnNpb25zU3RyaW5nQXN0ZXJpc2tzXCJcbiAgICAgID57eyBmaWxlRGVzYyB9fVxuICAgICAge3tcbiAgICAgICAgZXh0ZW5zaW9uc1N0cmluZ0FzdGVyaXNrcyA/ICcoJyArIGV4dGVuc2lvbnNTdHJpbmdBc3Rlcmlza3MgKyAnKScgOiAnJ1xuICAgICAgfX08L3NwYW5cbiAgICA+XG4gICAgQGlmKGZpbGVJbmZvKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY3BzLWZpbGUtdXBsb2FkLWRyb3B6b25lLWNvbnRlbnRcIj5cbiAgICAgICAgPGNwcy1pY29uIGNvbG9yPVwiY2FsbVwiIGljb249XCJpbmZvLWNpcmNsZVwiIHNpemU9XCJ4c21hbGxcIj48L2Nwcy1pY29uPlxuICAgICAgICB7e2ZpbGVJbmZvfX1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8Y3BzLXByb2dyZXNzLWxpbmVhclxuICAgICAgKm5nSWY9XCJpc1Byb2Nlc3NpbmdGaWxlICYmIHVwbG9hZGVkRmlsZVwiXG4gICAgICBoZWlnaHQ9XCIzXCJcbiAgICAgIHJhZGl1cz1cIjRcIlxuICAgICAgb3BhY2l0eT1cIjAuM1wiXG4gICAgICBjbGFzcz1cImNwcy1maWxlLXVwbG9hZC1wcm9ncmVzcy1iYXJcIlxuICAgICAgYmdDb2xvcj1cInRyYW5zcGFyZW50XCI+XG4gICAgPC9jcHMtcHJvZ3Jlc3MtbGluZWFyPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cInVwbG9hZGVkRmlsZVwiIGNsYXNzPVwiY3BzLWZpbGUtdXBsb2FkLXVwbG9hZGVkLWZpbGVzXCI+XG4gICAgPGRpdiBjbGFzcz1cImNwcy1maWxlLXVwbG9hZC11cGxvYWRlZC1maWxlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3BzLWZpbGUtdXBsb2FkLXVwbG9hZGVkLWZpbGUtdGl0bGVcIj5cbiAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgY2xhc3M9XCJjcHMtZmlsZS11cGxvYWQtdXBsb2FkZWQtZmlsZS1zdGF0dXMtaWNvblwiXG4gICAgICAgICAgW2ljb25dPVwiaXNQcm9jZXNzaW5nRmlsZSA/ICdwZW5kaW5nJyA6ICd0b2FzdC1zdWNjZXNzJ1wiXG4gICAgICAgICAgW2NvbG9yXT1cImlzUHJvY2Vzc2luZ0ZpbGUgPyAnd2FybicgOiAnc3VjY2VzcydcIj5cbiAgICAgICAgPC9jcHMtaWNvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNwcy1maWxlLXVwbG9hZC11cGxvYWRlZC1maWxlLW5hbWVcIlxuICAgICAgICAgICAgIGNwc1Rvb2x0aXA9XCJ7eyB1cGxvYWRlZEZpbGUubmFtZSB9fVwiXG4gICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJmaWxlTmFtZVRvb2x0aXBQb3NpdGlvblwiXG4gICAgICAgICAgICAgW3Rvb2x0aXBPZmZzZXRdPVwiZmlsZU5hbWVUb29sdGlwT2Zmc2V0XCJcbiAgICAgICAgICAgICB0b29sdGlwT3Blbk9uPVwiaG92ZXJcIj5cbiAgICAgICAgICB7eyB1cGxvYWRlZEZpbGUubmFtZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGNwcy1pY29uXG4gICAgICAgICpuZ0lmPVwiIWlzUHJvY2Vzc2luZ0ZpbGVcIlxuICAgICAgICBjbGFzcz1cImNwcy1maWxlLXVwbG9hZC11cGxvYWRlZC1maWxlLXJlbW92ZS1pY29uXCJcbiAgICAgICAgaWNvbj1cInJlbW92ZVwiXG4gICAgICAgIGNvbG9yPVwiZXJyb3JcIlxuICAgICAgICAoY2xpY2spPVwicmVtb3ZlVXBsb2FkZWRGaWxlKClcIj5cbiAgICAgIDwvY3BzLWljb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Nwcy1maWxlLXVwbG9hZC9jcHMtZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLWZpbGUtdXBsb2FkL2Nwcy1maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLGVBQWUsRUFHZixNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUNMLG1CQUFtQixFQUVwQixNQUFNLG9EQUFvRCxDQUFDO0FBQzVELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7QUFFbEc7OztHQUdHO0FBYUgsTUFBTSxPQUFPLHNCQUFzQjtJQVpuQztRQWFFOzs7V0FHRztRQUNNLGVBQVUsR0FBYSxFQUFFLENBQUM7UUFFbkM7OztXQUdHO1FBQ00sYUFBUSxHQUFHLFVBQVUsQ0FBQztRQUUvQjs7O1dBR0c7UUFDTSxVQUFLLEdBQW9CLE1BQU0sQ0FBQztRQUV6Qzs7O1dBR0c7UUFDTSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBRS9COzs7V0FHRztRQUNNLDJC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QUM7UUFDbEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEMsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ25ELENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OEdBNUpVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLG1VQTBDYixlQUFlLHVSQ2hGckMsMitFQXdFQSw0dEZEMUNJLFlBQVksc1RBQ1osZ0JBQWdCLHdGQUNoQiwwQkFBMEIsc0lBQzFCLG1CQUFtQjs7MkZBS1Ysc0JBQXNCO2tCQVpsQyxTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsMEJBQTBCO3dCQUMxQixtQkFBbUI7cUJBQ3BCOzhCQVNRLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsUUFBUTtzQkFBaEIsS0FBSztnQkFNRyxLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsUUFBUTtzQkFBaEIsS0FBSztnQkFNRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBT0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQU1pQyxxQkFBcUI7c0JBQTNELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQU8zQixZQUFZO3NCQUFyQixNQUFNO2dCQU9HLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFPRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBRWlCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIG51bWJlckF0dHJpYnV0ZSxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgT2JzZXJ2YWJsZSwgb2YsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbnZlcnRTaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJuYWwvc2l6ZS11dGlscyc7XG5pbXBvcnQgeyBDcHNJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWljb24vY3BzLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENwc1Rvb2x0aXBEaXJlY3RpdmUsXG4gIENwc1Rvb2x0aXBQb3NpdGlvblxufSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2Nwcy10b29sdGlwL2Nwcy10b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDcHNQcm9ncmVzc0xpbmVhckNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1wcm9ncmVzcy1saW5lYXIvY3BzLXByb2dyZXNzLWxpbmVhci5jb21wb25lbnQnO1xuXG4vKipcbiAqIENwc0ZpbGVVcGxvYWRDb21wb25lbnQgaXMgYW4gYWR2YW5jZWQgdXBsb2FkZXIgd2l0aCBkcmFnZHJvcCBzdXBwb3J0LlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3BzLWZpbGUtdXBsb2FkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDcHNJY29uQ29tcG9uZW50LFxuICAgIENwc1Byb2dyZXNzTGluZWFyQ29tcG9uZW50LFxuICAgIENwc1Rvb2x0aXBEaXJlY3RpdmVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nwcy1maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nwcy1maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENwc0ZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBFeHBlY3RlZCBleHRlbnNpb25zIG9mIGEgZmlsZSB0byBiZSB1cGxvYWRlZC4gRS5nLiAnZG9jIG9yIC5kb2MnLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGV4dGVuc2lvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIEV4cGVjdGVkIGZpbGUgZGVzY3JpcHRpb24uIEUuZy4gJ1dvcmQgZG9jdW1lbnQnLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGZpbGVEZXNjID0gJ0FueSBmaWxlJztcblxuICAvKipcbiAgICogV2lkdGggb2YgdGhlIGNvbXBvbmVudCwgYSBudW1iZXIgZGVub3RpbmcgcGl4ZWxzIG9yIGEgc3RyaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHdpZHRoOiBudW1iZXIgfCBzdHJpbmcgPSAnMTAwJSc7XG5cbiAgLyoqXG4gICAqIEV4cGVjdGVkIGZpbGUgaW5mbyBibG9jaywgZXhwbGFpbmluZyBzb21lIGV4dHJhIHN0dWZmIGFib3V0IGZpbGUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZmlsZUluZm86IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmb3IgdXBsb2FkZWQgZmlsZSBwcm9jZXNzaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGZpbGVQcm9jZXNzaW5nQ2FsbGJhY2s/OiAoZmlsZTogRmlsZSkgPT4gT2JzZXJ2YWJsZTxib29sZWFuPiA9XG4gICAgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbiBvZiBmaWxlIG5hbWUgdG9vbHRpcCwgaXQgY2FuIGJlICd0b3AnLCAnYm90dG9tJywgJ2xlZnQnIG9yICdyaWdodCcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZmlsZU5hbWVUb29sdGlwUG9zaXRpb246IENwc1Rvb2x0aXBQb3NpdGlvbiA9ICd0b3AnO1xuXG4gIC8qKlxuICAgKiBGaWxlIG5hbWUgdG9vbHRpcCBvZmZzZXQgZm9yIHN0eWxpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgZmlsZU5hbWVUb29sdGlwT2Zmc2V0OiBudW1iZXIgPSAxMjtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gZmlsZSBpcyB1cGxvYWRlZC5cbiAgICogQHBhcmFtIHtGaWxlfSBGaWxlXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIGZpbGVVcGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZT4oKTtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gZmlsZSB1cGxvYWQgZmFpbHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSAtIGZpbGUgbmFtZVxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSBmaWxlVXBsb2FkRmFpbGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHVwbG9hZGVkIGZpbGUgaXMgcmVtb3ZlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IC0gZmlsZSBuYW1lXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIHVwbG9hZGVkRmlsZVJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIGlzRHJhZ292ZXJGaWxlID0gZmFsc2U7XG4gIHVwbG9hZGVkRmlsZT86IEZpbGU7XG4gIGV4dGVuc2lvbnNTdHJpbmcgPSAnJztcbiAgZXh0ZW5zaW9uc1N0cmluZ0FzdGVyaXNrcyA9ICcnO1xuICBjdnRXaWR0aCA9ICcnO1xuXG4gIGlzUHJvY2Vzc2luZ0ZpbGUgPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUV4dGVuc2lvbnNTdHJpbmcoKTtcbiAgICB0aGlzLmN2dFdpZHRoID0gY29udmVydFNpemUodGhpcy53aWR0aCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZXh0ZW5zaW9ucykge1xuICAgICAgdGhpcy51cGRhdGVFeHRlbnNpb25zU3RyaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRXh0ZW5zaW9uc1N0cmluZygpOiB2b2lkIHtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSB0aGlzLmV4dGVuc2lvbnMubWFwKChleHQpID0+XG4gICAgICBleHQuc3RhcnRzV2l0aCgnLicpID8gZXh0LnRvTG93ZXJDYXNlKCkgOiAnLicgKyBleHQudG9Mb3dlckNhc2UoKVxuICAgICk7XG4gICAgdGhpcy5leHRlbnNpb25zU3RyaW5nID0gdGhpcy5leHRlbnNpb25zLmpvaW4oJywgJyk7XG4gICAgdGhpcy5leHRlbnNpb25zU3RyaW5nQXN0ZXJpc2tzID0gdGhpcy5leHRlbnNpb25zXG4gICAgICAubWFwKChleHQpID0+ICcqJyArIGV4dClcbiAgICAgIC5qb2luKCcsICcpO1xuICB9XG5cbiAgdHJ5VXBsb2FkRmlsZShldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5pc0RyYWdvdmVyRmlsZSA9IGZhbHNlO1xuICAgIGxldCBmaWxlOiBGaWxlIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdkcm9wJykge1xuICAgICAgZmlsZSA9IChldmVudCBhcyBEcmFnRXZlbnQpLmRhdGFUcmFuc2Zlcj8uZmlsZXMuaXRlbSgwKSA/PyB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZpbGVzID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcztcbiAgICAgIGlmICghZmlsZXMgfHwgZmlsZXMubGVuZ3RoIDwgMSkgcmV0dXJuO1xuICAgICAgZmlsZSA9IGZpbGVzLml0ZW0oMCkgPz8gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5faXNGaWxlRXh0ZW5zaW9uVmFsaWQoZmlsZSkpIHtcbiAgICAgIHRoaXMuZmlsZVVwbG9hZEZhaWxlZC5lbWl0KGZpbGU/Lm5hbWUgPz8gJycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBsb2FkZWRGaWxlID0gZmlsZTtcbiAgICBpZiAodGhpcy51cGxvYWRlZEZpbGUpIHtcbiAgICAgIHRoaXMuZmlsZVVwbG9hZGVkLmVtaXQodGhpcy51cGxvYWRlZEZpbGUpO1xuICAgICAgaWYgKHRoaXMuZmlsZVByb2Nlc3NpbmdDYWxsYmFjaykge1xuICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZpbGUgPSB0cnVlO1xuICAgICAgICB0aGlzLmZpbGVQcm9jZXNzaW5nQ2FsbGJhY2sodGhpcy51cGxvYWRlZEZpbGUpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgIGlmICghcmVzKSB0aGlzLnJlbW92ZVVwbG9hZGVkRmlsZSgpO1xuICAgICAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdGaWxlID0gZmFsc2U7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlVXBsb2FkZWRGaWxlKCkge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnVwbG9hZGVkRmlsZT8ubmFtZSA/PyAnJztcbiAgICB0aGlzLnVwbG9hZGVkRmlsZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnVwbG9hZGVkRmlsZVJlbW92ZWQuZW1pdChuYW1lKTtcblxuICAgIGlmICh0aGlzLmZpbGVJbnB1dCkge1xuICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzRmlsZUV4dGVuc2lvblZhbGlkKGZpbGU/OiBGaWxlKSB7XG4gICAgaWYgKCFmaWxlKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5leHRlbnNpb25zLmxlbmd0aCA8IDEpIHJldHVybiB0cnVlO1xuICAgIGNvbnN0IGZpbGVOYW1lTG93ZXJDYXNlID0gZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgZm9yIChjb25zdCBleHQgb2YgdGhpcy5leHRlbnNpb25zKSB7XG4gICAgICBpZiAoZmlsZU5hbWVMb3dlckNhc2UuZW5kc1dpdGgoZXh0KSkgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY3BzLWZpbGUtdXBsb2FkXCIgW25nU3R5bGVdPVwieyB3aWR0aDogY3Z0V2lkdGggfVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjcHMtZmlsZS11cGxvYWQtZHJvcHpvbmVcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdkcmFnZ2VkLW92ZXInOiBpc0RyYWdvdmVyRmlsZSxcbiAgICAgICd3aXRoLXVwbG9hZHMnOiB1cGxvYWRlZEZpbGU/Lm5hbWVcbiAgICB9XCJcbiAgICAoZHJhZ2VuZCk9XCJpc0RyYWdvdmVyRmlsZSA9IGZhbHNlXCJcbiAgICAoZHJhZ2VudGVyKT1cImlzRHJhZ292ZXJGaWxlID0gdHJ1ZVwiXG4gICAgKGRyYWdsZWF2ZSk9XCJpc0RyYWdvdmVyRmlsZSA9IGZhbHNlXCJcbiAgICAoZHJhZ292ZXIpPVwiaXNEcmFnb3ZlckZpbGUgPSB0cnVlXCJcbiAgICAobW91c2VsZWF2ZSk9XCJpc0RyYWdvdmVyRmlsZSA9IGZhbHNlXCJcbiAgICAoZHJvcCk9XCJ0cnlVcGxvYWRGaWxlKCRldmVudClcIj5cbiAgICA8aW5wdXRcbiAgICAgICNmaWxlSW5wdXRcbiAgICAgIChjaGFuZ2UpPVwidHJ5VXBsb2FkRmlsZSgkZXZlbnQpXCJcbiAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgIFthY2NlcHRdPVwiZXh0ZW5zaW9uc1N0cmluZ1wiXG4gICAgICB0aXRsZT1cIlwiIC8+XG4gICAgPGNwcy1pY29uIGljb249XCJleHBvcnRcIiBzaXplPVwibGFyZ2VcIiBjb2xvcj1cInRleHQtZGFya2VzdFwiPjwvY3BzLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImNwcy1maWxlLXVwbG9hZC1kcm9wem9uZS10aXRsZVwiPlxuICAgICAgRHJhZyZEcm9wIG9yIGNob29zZSBhIGZpbGUgdG8gdXBsb2FkXG4gICAgPC9kaXY+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiY3BzLWZpbGUtdXBsb2FkLWRyb3B6b25lLWZpbGUtZGVzY1wiXG4gICAgICAqbmdJZj1cImZpbGVEZXNjIHx8IGV4dGVuc2lvbnNTdHJpbmdBc3Rlcmlza3NcIlxuICAgICAgPnt7IGZpbGVEZXNjIH19XG4gICAgICB7e1xuICAgICAgICBleHRlbnNpb25zU3RyaW5nQXN0ZXJpc2tzID8gJygnICsgZXh0ZW5zaW9uc1N0cmluZ0FzdGVyaXNrcyArICcpJyA6ICcnXG4gICAgICB9fTwvc3BhblxuICAgID5cbiAgICBAaWYoZmlsZUluZm8pIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJjcHMtZmlsZS11cGxvYWQtZHJvcHpvbmUtY29udGVudFwiPlxuICAgICAgICA8Y3BzLWljb24gY29sb3I9XCJjYWxtXCIgaWNvbj1cImluZm8tY2lyY2xlXCIgc2l6ZT1cInhzbWFsbFwiPjwvY3BzLWljb24+XG4gICAgICAgIHt7ZmlsZUluZm99fVxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDxjcHMtcHJvZ3Jlc3MtbGluZWFyXG4gICAgICAqbmdJZj1cImlzUHJvY2Vzc2luZ0ZpbGUgJiYgdXBsb2FkZWRGaWxlXCJcbiAgICAgIGhlaWdodD1cIjNcIlxuICAgICAgcmFkaXVzPVwiNFwiXG4gICAgICBvcGFjaXR5PVwiMC4zXCJcbiAgICAgIGNsYXNzPVwiY3BzLWZpbGUtdXBsb2FkLXByb2dyZXNzLWJhclwiXG4gICAgICBiZ0NvbG9yPVwidHJhbnNwYXJlbnRcIj5cbiAgICA8L2Nwcy1wcm9ncmVzcy1saW5lYXI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwidXBsb2FkZWRGaWxlXCIgY2xhc3M9XCJjcHMtZmlsZS11cGxvYWQtdXBsb2FkZWQtZmlsZXNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3BzLWZpbGUtdXBsb2FkLXVwbG9hZGVkLWZpbGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcHMtZmlsZS11cGxvYWQtdXBsb2FkZWQtZmlsZS10aXRsZVwiPlxuICAgICAgICA8Y3BzLWljb25cbiAgICAgICAgICBjbGFzcz1cImNwcy1maWxlLXVwbG9hZC11cGxvYWRlZC1maWxlLXN0YXR1cy1pY29uXCJcbiAgICAgICAgICBbaWNvbl09XCJpc1Byb2Nlc3NpbmdGaWxlID8gJ3BlbmRpbmcnIDogJ3RvYXN0LXN1Y2Nlc3MnXCJcbiAgICAgICAgICBbY29sb3JdPVwiaXNQcm9jZXNzaW5nRmlsZSA/ICd3YXJuJyA6ICdzdWNjZXNzJ1wiPlxuICAgICAgICA8L2Nwcy1pY29uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3BzLWZpbGUtdXBsb2FkLXVwbG9hZGVkLWZpbGUtbmFtZVwiXG4gICAgICAgICAgICAgY3BzVG9vbHRpcD1cInt7IHVwbG9hZGVkRmlsZS5uYW1lIH19XCJcbiAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cImZpbGVOYW1lVG9vbHRpcFBvc2l0aW9uXCJcbiAgICAgICAgICAgICBbdG9vbHRpcE9mZnNldF09XCJmaWxlTmFtZVRvb2x0aXBPZmZzZXRcIlxuICAgICAgICAgICAgIHRvb2x0aXBPcGVuT249XCJob3ZlclwiPlxuICAgICAgICAgIHt7IHVwbG9hZGVkRmlsZS5uYW1lIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8Y3BzLWljb25cbiAgICAgICAgKm5nSWY9XCIhaXNQcm9jZXNzaW5nRmlsZVwiXG4gICAgICAgIGNsYXNzPVwiY3BzLWZpbGUtdXBsb2FkLXVwbG9hZGVkLWZpbGUtcmVtb3ZlLWljb25cIlxuICAgICAgICBpY29uPVwicmVtb3ZlXCJcbiAgICAgICAgY29sb3I9XCJlcnJvclwiXG4gICAgICAgIChjbGljayk9XCJyZW1vdmVVcGxvYWRlZEZpbGUoKVwiPlxuICAgICAgPC9jcHMtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -5,6 +5,14 @@ import * as i1 from "primeng/treetable";
5
5
  export class TreeTableUnsortDirective {
6
6
  constructor(pTreeTable) {
7
7
  this.pTreeTable = pTreeTable;
8
+ this.sort(pTreeTable);
9
+ this.sortNodes(pTreeTable);
10
+ this.sortMultipleNodes(pTreeTable);
11
+ this.multisortField(pTreeTable);
12
+ this.filter(pTreeTable);
13
+ this.findFilteredNodes(pTreeTable);
14
+ }
15
+ sort(pTreeTable) {
8
16
  pTreeTable.sort = (event) => {
9
17
  if (pTreeTable.sortMode === 'single') {
10
18
  if (pTreeTable.sortField === event.field &&
@@ -53,6 +61,8 @@ export class TreeTableUnsortDirective {
53
61
  pTreeTable.multiSortMeta = [];
54
62
  }
55
63
  };
64
+ }
65
+ sortNodes(pTreeTable) {
56
66
  pTreeTable.sortNodes = (nodes) => {
57
67
  if (!nodes || nodes.length === 0) {
58
68
  return;
@@ -94,6 +104,8 @@ export class TreeTableUnsortDirective {
94
104
  pTreeTable.sortNodes(node.children);
95
105
  }
96
106
  };
107
+ }
108
+ sortMultipleNodes(pTreeTable) {
97
109
  pTreeTable.sortMultipleNodes = (nodes) => {
98
110
  if (!nodes || nodes.length === 0) {
99
111
  return;
@@ -116,6 +128,8 @@ export class TreeTableUnsortDirective {
116
128
  pTreeTable.sortMultipleNodes(node.children);
117
129
  }
118
130
  };
131
+ }
132
+ multisortField(pTreeTable) {
119
133
  pTreeTable.multisortField = (node1, node2, multiSortMeta, index) => {
120
134
  if (ObjectUtils.isEmpty(pTreeTable.multiSortMeta) ||
121
135
  ObjectUtils.isEmpty(multiSortMeta[index])) {
@@ -151,6 +165,8 @@ export class TreeTableUnsortDirective {
151
165
  }
152
166
  return multiSortMeta[index].order * result;
153
167
  };
168
+ }
169
+ filter(pTreeTable) {
154
170
  pTreeTable._filter = () => {
155
171
  if (pTreeTable.lazy) {
156
172
  pTreeTable.onLazyLoad.emit(pTreeTable.createLazyLoadMetadata());
@@ -217,28 +233,26 @@ export class TreeTableUnsortDirective {
217
233
  if (pTreeTable.filters.global &&
218
234
  !globalMatch &&
219
235
  globalFilterFieldsArray) {
220
- for (let j = 0; j < globalFilterFieldsArray.length; j++) {
221
- const copyNodeForGlobal = { ...copyNode };
222
- const filterField = globalFilterFieldsArray[j].field ||
223
- globalFilterFieldsArray[j];
224
- const filterValue = pTreeTable.filters.global.value;
225
- const filterConstraint = pTreeTable.filterService.filters[pTreeTable.filters.global
226
- .matchMode];
227
- paramsWithoutNode = {
228
- filterField,
229
- filterValue,
230
- filterConstraint,
231
- isStrictMode
232
- };
233
- if ((isStrictMode &&
234
- (pTreeTable.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) ||
235
- pTreeTable.isFilterMatched(copyNodeForGlobal, paramsWithoutNode))) ||
236
- (!isStrictMode &&
237
- (pTreeTable.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) ||
238
- pTreeTable.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode)))) {
239
- globalMatch = true;
240
- copyNode = copyNodeForGlobal;
241
- }
236
+ const copyNodeForGlobal = { ...copyNode };
237
+ const filterField = undefined;
238
+ const filterValue = pTreeTable.filters.global.value;
239
+ const filterConstraint = pTreeTable.filterService.filters[pTreeTable.filters.global
240
+ .matchMode];
241
+ paramsWithoutNode = {
242
+ filterField,
243
+ filterValue,
244
+ filterConstraint,
245
+ isStrictMode,
246
+ globalFilterFieldsArray
247
+ };
248
+ if ((isStrictMode &&
249
+ (pTreeTable.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) ||
250
+ pTreeTable.isFilterMatched(copyNodeForGlobal, paramsWithoutNode))) ||
251
+ (!isStrictMode &&
252
+ (pTreeTable.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) ||
253
+ pTreeTable.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode)))) {
254
+ globalMatch = true;
255
+ copyNode = copyNodeForGlobal;
242
256
  }
243
257
  }
244
258
  let matches = localMatch;
@@ -280,6 +294,8 @@ export class TreeTableUnsortDirective {
280
294
  pTreeTable.resetScrollTop();
281
295
  }
282
296
  };
297
+ }
298
+ findFilteredNodes(pTreeTable) {
283
299
  pTreeTable.findFilteredNodes = (node, paramsWithoutNode) => {
284
300
  if (node) {
285
301
  let matched = false;
@@ -333,4 +349,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
333
349
  }, {
334
350
  type: Optional
335
351
  }] }] });
336
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS10YWJsZS11bnNvcnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRyZWUtdGFibGUvZGlyZWN0aXZlcy9pbnRlcm5hbC90cmVlLXRhYmxlLXVuc29ydC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNNUMsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUErQyxVQUFxQjtRQUFyQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ2xFLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUMvQixJQUFJLFVBQVUsQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3JDLElBQ0UsVUFBVSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsS0FBSztvQkFDcEMsVUFBVSxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFDM0IsQ0FBQztvQkFDRCxLQUFLLENBQUMsS0FBSyxHQUFHLG1CQUFtQixDQUFDO2dCQUNwQyxDQUFDO2dCQUVELFVBQVUsQ0FBQyxVQUFVO29CQUNuQixVQUFVLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxLQUFLO3dCQUNsQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7d0JBQzNCLENBQUMsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ2xDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDcEMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzFCLENBQUM7WUFDRCxJQUFJ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LElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN0QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ3hCLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNuQixJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztvQkFDbEMsTUFBTSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO29CQUNoRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXZZVSx3QkFBd0I7a0dBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7OzBCQUVjLElBQUk7OzBCQUFJLElBQUk7OzBCQUFJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3QsIFNlbGYsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmVlVGFibGUgfSBmcm9tICdwcmltZW5nL3RyZWV0YWJsZSc7XG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gJ3ByaW1lbmcvdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbdHRXaXRoVW5zb3J0XSdcbn0pXG5leHBvcnQgY2xhc3MgVHJlZVRhYmxlVW5zb3J0RGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IoQEhvc3QoKSBAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBwVHJlZVRhYmxlOiBUcmVlVGFibGUpIHtcbiAgICBwVHJlZVRhYmxlLnNvcnQgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHBUcmVlVGFibGUuc29ydE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwVHJlZVRhYmxlLnNvcnRGaWVsZCA9PT0gZXZlbnQuZmllbGQgJiZcbiAgICAgICAgICBwVHJlZVRhYmxlLnNvcnRPcmRlciA9PT0gLTFcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXZlbnQuZmllbGQgPSAnX2RlZmF1bHRTb3J0T3JkZXInO1xuICAgICAgICB9XG5cbiAgICAgICAgcFRyZWVUYWJsZS5fc29ydE9yZGVyID1cbiAgICAgICAgICBwVHJlZVRhYmxlLnNvcnRGaWVsZCA9PT0gZXZlbnQuZmllbGRcbiAgICAgICAgICAgID8gcFRyZWVUYWJsZS5zb3J0T3JkZXIgKiAtMVxuICAgICAgICAgICAgOiBwVHJlZVRhYmxlLmRlZmF1bHRTb3J0T3JkZXI7XG4gICAgICAgIHBUcmVlVGFibGUuX3NvcnRGaWVsZCA9IGV2ZW50LmZpZWxkO1xuICAgICAgICBwVHJlZVRhYmxlLnNvcnRTaW5nbGUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChwVHJlZVRhYmxlLnNvcnRNb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgIGxldCByZXNldEluZGV4ID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHNvcnRNZXRhID0gcFRyZWVUYWJsZS5nZXRTb3J0TWV0YShldmVudC5maWVsZCk7XG5cbiAgICAgICAgaWYgKHNvcnRNZXRhICYmIHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YSkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAocFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhW2ldLmZpZWxkID09PSBzb3J0TWV0YS5maWVsZCkge1xuICAgICAgICAgICAgICBwVHJlZVRhYmxlLm11bHRpU29ydE1ldGEuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc29ydE1ldGEub3JkZXIgPT09IDEpIHtcbiAgICAgICAgICAgIHNvcnRNZXRhLm9yZGVyID0gc29ydE1ldGEub3JkZXIgKiAtMTtcbiAgICAgICAgICAgIHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YS5wdXNoKHNvcnRNZXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YS5wdXNoKHtcbiAgICAgICAgICAgICAgZmllbGQ6ICdfZGVmYXVsdFNvcnRPcmRlcicsXG4gICAgICAgICAgICAgIG9yZGVyOiBwVHJlZVRhYmxlLmRlZmF1bHRTb3J0T3JkZXJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzZXRJbmRleCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghcFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhKSB7XG4gICAgICAgICAgICBwVHJlZVRhYmxlLm11bHRpU29ydE1ldGEgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhLnB1c2goe1xuICAgICAgICAgICAgZmllbGQ6IGV2ZW50LmZpZWxkLFxuICAgICAgICAgICAgb3JkZXI6IHBUcmVlVGFibGUuZGVmYXVsdFNvcnRPcmRlclxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcFRyZWVUYWJsZS5zb3J0TXVsdGlwbGUoKTtcbiAgICAgICAgaWYgKHJlc2V0SW5kZXgpIHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YSA9IFtdO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBwVHJlZVRhYmxlLnNvcnROb2RlcyA9IChub2RlcykgPT4ge1xuICAgICAgaWYgKCFub2RlcyB8fCBub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9zeW5jTm9kZXNQYXJhbXMocFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzLCBub2Rlcyk7XG5cbiAgICAgIGlmIChwVHJlZVRhYmxlLmN1c3RvbVNvcnQpIHtcbiAgICAgICAgcFRyZWVUYWJsZS5zb3J0RnVuY3Rpb24uZW1pdCh7XG4gICAgICAgICAgZGF0YTogbm9kZXMsXG4gICAgICAgICAgbW9kZTogcFRyZWVUYWJsZS5zb3J0TW9kZSxcbiAgICAgICAgICBmaWVsZDogcFRyZWVUYWJsZS5zb3J0RmllbGQgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIG9yZGVyOiBwVHJlZVRhYmxlLnNvcnRPcmRlclxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGlzVW5zb3J0ID0gcFRyZWVUYWJsZS5zb3J0RmllbGQgPT09ICdfZGVmYXVsdFNvcnRPcmRlcic7XG4gICAgICAgIG5vZGVzLnNvcnQoKG5vZGUxOiBhbnksIG5vZGUyOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZTEgPSBpc1Vuc29ydFxuICAgICAgICAgICAgPyBub2RlMS5fZGVmYXVsdFNvcnRPcmRlclxuICAgICAgICAgICAgOiBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG5vZGUxLmRhdGEsIHBUcmVlVGFibGUuc29ydEZpZWxkKTtcbiAgICAgICAgICBjb25zdCB2YWx1ZTIgPSBpc1Vuc29ydFxuICAgICAgICAgICAgPyBub2RlMi5fZGVmYXVsdFNvcnRPcmRlclxuICAgICAgICAgICAgOiBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG5vZGUyLmRhdGEsIHBUcmVlVGFibGUuc29ydEZpZWxkKTtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcblxuICAgICAgICAgIGlmICh2YWx1ZTEgPT0gbnVsbCAmJiB2YWx1ZTIgIT0gbnVsbCkgcmVzdWx0ID0gLTE7XG4gICAgICAgICAgZWxzZSBpZiAodmFsdWUxICE9IG51bGwgJiYgdmFsdWUyID09IG51bGwpIHJlc3VsdCA9IDE7XG4gICAgICAgICAgZWxzZSBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyID09IG51bGwpIHJlc3VsdCA9IDA7XG4gICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlMSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlMiA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTEubG9jYWxlQ29tcGFyZSh2YWx1ZTIsIHVuZGVmaW5lZCwgeyBudW1lcmljOiB0cnVlIH0pO1xuICAgICAgICAgIGVsc2UgcmVzdWx0ID0gdmFsdWUxIDwgdmFsdWUyID8gLTEgOiB2YWx1ZTEgPiB2YWx1ZTIgPyAxIDogMDtcblxuICAgICAgICAgIHJldHVybiBwVHJlZVRhYmxlLnNvcnRPcmRlciAqIHJlc3VsdDtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikgcFRyZWVUYWJsZS5zb3J0Tm9kZXMobm9kZS5jaGlsZHJlbik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHBUcmVlVGFibGUuc29ydE11bHRpcGxlTm9kZXMgPSAobm9kZXMpID0+IHtcbiAgICAgIGlmICghbm9kZXMgfHwgbm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fc3luY05vZGVzUGFyYW1zKHBUcmVlVGFibGUuZmlsdGVyZWROb2Rlcywgbm9kZXMpO1xuXG4gICAgICBpZiAocFRyZWVUYWJsZS5jdXN0b21Tb3J0KSB7XG4gICAgICAgIHBUcmVlVGFibGUuc29ydEZ1bmN0aW9uLmVtaXQoe1xuICAgICAgICAgIGRhdGE6IHBUcmVlVGFibGUudmFsdWUsXG4gICAgICAgICAgbW9kZTogcFRyZWVUYWJsZS5zb3J0TW9kZSxcbiAgICAgICAgICBtdWx0aVNvcnRNZXRhOiBwVHJlZVRhYmxlLm11bHRpU29ydE1ldGFcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2Rlcy5zb3J0KChub2RlMTogYW55LCBub2RlMjogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHBUcmVlVGFibGUubXVsdGlzb3J0RmllbGQoXG4gICAgICAgICAgICBub2RlMSxcbiAgICAgICAgICAgIG5vZGUyLFxuICAgICAgICAgICAgcFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhIHx8IFtdLFxuICAgICAgICAgICAgMFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHBUcmVlVGFibGUuc29ydE11bHRpcGxlTm9kZXMobm9kZS5jaGlsZHJlbik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHBUcmVlVGFibGUubXVsdGlzb3J0RmllbGQgPSAobm9kZTEsIG5vZGUyLCBtdWx0aVNvcnRNZXRhLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBPYmplY3RVdGlscy5pc0VtcHR5KHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YSkgfHxcbiAgICAgICAgT2JqZWN0VXRpbHMuaXNFbXB0eShtdWx0aVNvcnRNZXRhW2luZGV4XSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzVW5zb3J0ID0gbXVsdGlTb3J0TWV0YVtpbmRleF0uZmllbGQgPT09ICdfZGVmYXVsdFNvcnRPcmRlcic7XG4gICAgICBjb25zdCB2YWx1ZTEgPSBpc1Vuc29ydFxuICAgICAgICA/IChub2RlMSBhcyBhbnkpLl9kZWZhdWx0U29ydE9yZGVyXG4gICAgICAgIDogT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShub2RlMS5kYXRhLCBtdWx0aVNvcnRNZXRhW2luZGV4XS5maWVsZCk7XG4gICAgICBjb25zdCB2YWx1ZTIgPSBpc1Vuc29ydFxuICAgICAgICA/IChub2RlMiBhcyBhbnkpLl9kZWZhdWx0U29ydE9yZGVyXG4gICAgICAgIDogT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShub2RlMi5kYXRhLCBtdWx0aVNvcnRNZXRhW2luZGV4XS5maWVsZCk7XG4gICAgICBsZXQgcmVzdWx0ID0gMDtcblxuICAgICAgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiAhPSBudWxsKSByZXN1bHQgPSAtMTtcbiAgICAgIGVsc2UgaWYgKHZhbHVlMSAhPSBudWxsICYmIHZhbHVlMiA9PSBudWxsKSByZXN1bHQgPSAxO1xuICAgICAgZWxzZSBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyID09IG51bGwpIHJlc3VsdCA9IDA7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlMSA9PT0gJ3N0cmluZycgfHwgdmFsdWUxIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZTEubG9jYWxlQ29tcGFyZSAmJiB2YWx1ZTEgIT09IHZhbHVlMikge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBtdWx0aVNvcnRNZXRhW2luZGV4XS5vcmRlciAqXG4gICAgICAgICAgICB2YWx1ZTEubG9jYWxlQ29tcGFyZSh2YWx1ZTIsIHVuZGVmaW5lZCwgeyBudW1lcmljOiB0cnVlIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gdmFsdWUxIDwgdmFsdWUyID8gLTEgOiAxO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUxID09PSB2YWx1ZTIpIHtcbiAgICAgICAgcmV0dXJuIG11bHRpU29ydE1ldGEubGVuZ3RoIC0gMSA+IGluZGV4XG4gICAgICAgICAgPyBwVHJlZVRhYmxlLm11bHRpc29ydEZpZWxkKG5vZGUxLCBub2RlMiwgbXVsdGlTb3J0TWV0YSwgaW5kZXggKyAxKVxuICAgICAgICAgIDogMDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG11bHRpU29ydE1ldGFbaW5kZXhdLm9yZGVyICogcmVzdWx0O1xuICAgIH07XG5cbiAgICBwVHJlZVRhYmxlLl9maWx0ZXIgPSAoKSA9PiB7XG4gICAgICBpZiAocFRyZWVUYWJsZS5sYXp5KSB7XG4gICAgICAgIHBUcmVlVGFibGUub25MYXp5TG9hZC5lbWl0KHBUcmVlVGFibGUuY3JlYXRlTGF6eUxvYWRNZXRhZGF0YSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghcFRyZWVUYWJsZS52YWx1ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcFRyZWVUYWJsZS5oYXNGaWx0ZXIoKSkge1xuICAgICAgICAgIChwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMgYXMgYW55KSA9IG51bGw7XG4gICAgICAgICAgaWYgKHBUcmVlVGFibGUucGFnaW5hdG9yKSB7XG4gICAgICAgICAgICBwVHJlZVRhYmxlLnRvdGFsUmVjb3JkcyA9IHBUcmVlVGFibGUudmFsdWVcbiAgICAgICAgICAgICAgPyBwVHJlZVRhYmxlLnZhbHVlLmxlbmd0aFxuICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBnbG9iYWxGaWx0ZXJGaWVsZHNBcnJheTogYW55W10gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHBUcmVlVGFibGUuZmlsdGVycy5nbG9iYWwpIHtcbiAgICAgICAgICAgIGlmICghcFRyZWVUYWJsZS5jb2x1bW5zICYmICFwVHJlZVRhYmxlLmdsb2JhbEZpbHRlckZpZWxkcylcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICdHbG9iYWwgZmlsdGVyaW5nIHJlcXVpcmVzIGR5bmFtaWMgY29sdW1ucyBvciBnbG9iYWxGaWx0ZXJGaWVsZHMgdG8gYmUgZGVmaW5lZC4nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGdsb2JhbEZpbHRlckZpZWxkc0FycmF5ID1cbiAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmdsb2JhbEZpbHRlckZpZWxkcyB8fCBwVHJlZVRhYmxlLmNvbHVtbnM7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fc3luY05vZGVzUGFyYW1zKHBUcmVlVGFibGUuZmlsdGVyZWROb2RlcywgcFRyZWVUYWJsZS52YWx1ZSk7XG5cbiAgICAgICAgICBwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMgPSBbXTtcbiAgICAgICAgICBjb25zdCBpc1N0cmljdE1vZGUgPSBwVHJlZVRhYmxlLmZpbHRlck1vZGUgPT09ICdzdHJpY3QnO1xuICAgICAgICAgIGxldCBpc1ZhbHVlQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBbaWR4LCBub2RlXSBvZiBwVHJlZVRhYmxlLnZhbHVlLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgbGV0IGNvcHlOb2RlID0geyAuLi5ub2RlIH07XG4gICAgICAgICAgICBsZXQgbG9jYWxNYXRjaCA9IHRydWU7XG4gICAgICAgICAgICBsZXQgZ2xvYmFsTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBwYXJhbXNXaXRob3V0Tm9kZTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIHBUcmVlVGFibGUuZmlsdGVycykge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuZmlsdGVycy5oYXNPd25Qcm9wZXJ0eShwcm9wKSAmJlxuICAgICAgICAgICAgICAgIHByb3AgIT09ICdnbG9iYWwnXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlck1ldGEgPSBwVHJlZVRhYmxlLmZpbHRlcnNbcHJvcF07XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRmllbGQgPSBwcm9wO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gZmlsdGVyTWV0YT8udmFsdWU7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyTWF0Y2hNb2RlID0gZmlsdGVyTWV0YT8ubWF0Y2hNb2RlIHx8ICdzdGFydHNXaXRoJztcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJDb25zdHJhaW50ID1cbiAgICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuZmlsdGVyU2VydmljZS5maWx0ZXJzW1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJNYXRjaE1vZGUgYXMga2V5b2YgdHlwZW9mIHBUcmVlVGFibGUuZmlsdGVyU2VydmljZS5maWx0ZXJzXG4gICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIHBhcmFtc1dpdGhvdXROb2RlID0ge1xuICAgICAgICAgICAgICAgICAgZmlsdGVyRmllbGQsXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZSxcbiAgICAgICAgICAgICAgICAgIGZpbHRlckNvbnN0cmFpbnQsXG4gICAgICAgICAgICAgICAgICBpc1N0cmljdE1vZGVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIChpc1N0cmljdE1vZGUgJiZcbiAgICAgICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmZpbmRGaWx0ZXJlZE5vZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29weU5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNXaXRob3V0Tm9kZVxuICAgICAgICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmlzRmlsdGVyTWF0Y2hlZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlOb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zV2l0aG91dE5vZGUgYXMgYW55XG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApKSB8fFxuICAgICAgICAgICAgICAgICAgKCFpc1N0cmljdE1vZGUgJiZcbiAgICAgICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmlzRmlsdGVyTWF0Y2hlZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlOb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zV2l0aG91dE5vZGUgYXMgYW55XG4gICAgICAgICAgICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuZmluZEZpbHRlcmVkTm9kZXMoY29weU5vZGUsIHBhcmFtc1dpdGhvdXROb2RlKVxuICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgbG9jYWxNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghbG9jYWxNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgcFRyZWVUYWJsZS5maWx0ZXJzLmdsb2JhbCAmJlxuICAgICAgICAgICAgICAhZ2xvYmFsTWF0Y2ggJiZcbiAgICAgICAgICAgICAgZ2xvYmFsRmlsdGVyRmllbGRzQXJyYXlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGdsb2JhbEZpbHRlckZpZWxkc0FycmF5Lmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29weU5vZGVGb3JHbG9iYWwgPSB7IC4uLmNvcHlOb2RlIH07XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRmllbGQgPVxuICAgICAgICAgICAgICAgICAgZ2xvYmFsRmlsdGVyRmllbGRzQXJyYXlbal0uZmllbGQgfHxcbiAgICAgICAgICAgICAgICAgIGdsb2JhbEZpbHRlckZpZWxkc0FycmF5W2pdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gcFRyZWVUYWJsZS5maWx0ZXJzLmdsb2JhbC52YWx1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJDb25zdHJhaW50ID1cbiAgICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuZmlsdGVyU2VydmljZS5maWx0ZXJzW1xuICAgICAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmZpbHRlcnMuZ2xvYmFsXG4gICAgICAgICAgICAgICAgICAgICAgLm1hdGNoTW9kZSBhcyBrZXlvZiB0eXBlb2YgcFRyZWVUYWJsZS5maWx0ZXJTZXJ2aWNlLmZpbHRlcnNcbiAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcGFyYW1zV2l0aG91dE5vZGUgPSB7XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJGaWVsZCxcbiAgICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlLFxuICAgICAgICAgICAgICAgICAgZmlsdGVyQ29uc3RyYWludCxcbiAgICAgICAgICAgICAgICAgIGlzU3RyaWN0TW9kZVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAoaXNTdHJpY3RNb2RlICYmXG4gICAgICAgICAgICAgICAgICAgIChwVHJlZVRhYmxlLmZpbmRGaWx0ZXJlZE5vZGVzKFxuICAgICAgICAgICAgICAgICAgICAgIGNvcHlOb2RlRm9yR2xvYmFsLFxuICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1dpdGhvdXROb2RlXG4gICAgICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmlzRmlsdGVyTWF0Y2hlZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlOb2RlRm9yR2xvYmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zV2l0aG91dE5vZGUgYXMgYW55XG4gICAgICAgICAgICAgICAgICAgICAgKSkpIHx8XG4gICAgICAgICAgICAgICAgICAoIWlzU3RyaWN0TW9kZSAmJlxuICAgICAgICAgICAgICAgICAgICAocFRyZWVUYWJsZS5pc0ZpbHRlck1hdGNoZWQoXG4gICAgICAgICAgICAgICAgICAgICAgY29weU5vZGVGb3JHbG9iYWwsXG4gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zV2l0aG91dE5vZGUgYXMgYW55XG4gICAgICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmZpbmRGaWx0ZXJlZE5vZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29weU5vZGVGb3JHbG9iYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNXaXRob3V0Tm9kZVxuICAgICAgICAgICAgICAgICAgICAgICkpKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgZ2xvYmFsTWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgY29weU5vZGUgPSBjb3B5Tm9kZUZvckdsb2JhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBsb2NhbE1hdGNoO1xuICAgICAgICAgICAgaWYgKHBUcmVlVGFibGUuZmlsdGVycy5nbG9iYWwpIHtcbiAgICAgICAgICAgICAgbWF0Y2hlcyA9IGxvY2FsTWF0Y2ggJiYgZ2xvYmFsTWF0Y2g7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgICAgICAgIChjb3B5Tm9kZSBhcyBhbnkpLl9pZHggPSBpZHg7XG4gICAgICAgICAgICAgIHBUcmVlVGFibGUuZmlsdGVyZWROb2Rlcy5wdXNoKGNvcHlOb2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaXNWYWx1ZUNoYW5nZWQgPVxuICAgICAgICAgICAgICBpc1ZhbHVlQ2hhbmdlZCB8fFxuICAgICAgICAgICAgICAhbG9jYWxNYXRjaCB8fFxuICAgICAgICAgICAgICBnbG9iYWxNYXRjaCB8fFxuICAgICAgICAgICAgICAobG9jYWxNYXRjaCAmJiBwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMubGVuZ3RoID4gMCkgfHxcbiAgICAgICAgICAgICAgKCFnbG9iYWxNYXRjaCAmJiBwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMubGVuZ3RoID09PSAwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWlzVmFsdWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICAocFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzIGFzIGFueSkgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwVHJlZVRhYmxlLnBhZ2luYXRvcikge1xuICAgICAgICAgICAgcFRyZWVUYWJsZS50b3RhbFJlY29yZHMgPSBwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXNcbiAgICAgICAgICAgICAgPyBwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMubGVuZ3RoXG4gICAgICAgICAgICAgIDogcFRyZWVUYWJsZS52YWx1ZVxuICAgICAgICAgICAgICAgID8gcFRyZWVUYWJsZS52YWx1ZS5sZW5ndGhcbiAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHBUcmVlVGFibGUuZmlyc3QgPSAwO1xuXG4gICAgICBjb25zdCBmaWx0ZXJlZFZhbHVlID0gcFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzIHx8IHBUcmVlVGFibGUudmFsdWU7XG5cbiAgICAgIHBUcmVlVGFibGUub25GaWx0ZXIuZW1pdCh7XG4gICAgICAgIGZpbHRlcnM6IHBUcmVlVGFibGUuZmlsdGVycyxcbiAgICAgICAgZmlsdGVyZWRWYWx1ZVxuICAgICAgfSk7XG5cbiAgICAgIHBUcmVlVGFibGUudGFibGVTZXJ2aWNlLm9uVUlVcGRhdGUoZmlsdGVyZWRWYWx1ZSk7XG4gICAgICBwVHJlZVRhYmxlLnVwZGF0ZVNlcmlhbGl6ZWRWYWx1ZSgpO1xuXG4gICAgICBpZiAocFRyZWVUYWJsZS5zY3JvbGxhYmxlKSB7XG4gICAgICAgIHBUcmVlVGFibGUucmVzZXRTY3JvbGxUb3AoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcFRyZWVUYWJsZS5maW5kRmlsdGVyZWROb2RlcyA9IChub2RlLCBwYXJhbXNXaXRob3V0Tm9kZSk6IGFueSA9PiB7XG4gICAgICBpZiAobm9kZSkge1xuICAgICAgICBsZXQgbWF0Y2hlZCA9IGZhbHNlO1xuICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBbLi4ubm9kZS5jaGlsZHJlbl07XG4gICAgICAgICAgbm9kZS5jaGlsZHJlbiA9IFtdO1xuICAgICAgICAgIGZvciAoY29uc3QgW2lkeCwgY2hpbGROb2RlXSBvZiBjaGlsZE5vZGVzLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgY29uc3QgY29weUNoaWxkTm9kZSA9IHsgLi4uY2hpbGROb2RlIH07XG4gICAgICAgICAgICBpZiAocFRyZWVUYWJsZS5pc0ZpbHRlck1hdGNoZWQoY29weUNoaWxkTm9kZSwgcGFyYW1zV2l0aG91dE5vZGUpKSB7XG4gICAgICAgICAgICAgIG1hdGNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAoY29weUNoaWxkTm9kZSBhcyBhbnkpLl9pZHggPSBpZHg7XG4gICAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4ucHVzaChjb3B5Q2hpbGROb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNOb2Rlc1BhcmFtcyhcbiAgICBmcm9tOiBhbnlbXSB8IHVuZGVmaW5lZCB8IG51bGwsXG4gICAgdG86IGFueVtdIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIGlmICghZnJvbSB8fCAhdG8pIHJldHVybjtcblxuICAgIGZyb20uZm9yRWFjaCgoc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBpZHggPSBzb3VyY2UuX2lkeDtcbiAgICAgIGlmICh0eXBlb2YgaWR4ID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSB0b1tpZHhdO1xuICAgICAgICBkZWxldGUgc291cmNlLl9pZHg7XG4gICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICB0YXJnZXQuZXhwYW5kZWQgPSBzb3VyY2UuZXhwYW5kZWQ7XG4gICAgICAgICAgdGFyZ2V0LnBhcnRpYWxTZWxlY3RlZCA9IHNvdXJjZS5wYXJ0aWFsU2VsZWN0ZWQ7XG4gICAgICAgICAgdGhpcy5fc3luY05vZGVzUGFyYW1zKHNvdXJjZS5jaGlsZHJlbiwgdGFyZ2V0LmNoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
352
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS10YWJsZS11bnNvcnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRyZWUtdGFibGUvZGlyZWN0aXZlcy9pbnRlcm5hbC90cmVlLXRhYmxlLXVuc29ydC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNNUMsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUErQyxVQUFxQjtRQUFyQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxDQUFDLFVBQXFCO1FBQ3hCLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUMvQixJQUFJLFVBQVUsQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3JDLElBQ0UsVUFBVSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsS0FBSztvQkFDcEMsVUFBVSxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFDM0IsQ0FBQztvQkFDRCxLQUFLLENBQUMs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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0LCBTZWxmLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJlZVRhYmxlIH0gZnJvbSAncHJpbWVuZy90cmVldGFibGUnO1xuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICdwcmltZW5nL3V0aWxzJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW3R0V2l0aFVuc29ydF0nXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVUYWJsZVVuc29ydERpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKEBIb3N0KCkgQFNlbGYoKSBAT3B0aW9uYWwoKSBwdWJsaWMgcFRyZWVUYWJsZTogVHJlZVRhYmxlKSB7XG4gICAgdGhpcy5zb3J0KHBUcmVlVGFibGUpO1xuICAgIHRoaXMuc29ydE5vZGVzKHBUcmVlVGFibGUpO1xuICAgIHRoaXMuc29ydE11bHRpcGxlTm9kZXMocFRyZWVUYWJsZSk7XG4gICAgdGhpcy5tdWx0aXNvcnRGaWVsZChwVHJlZVRhYmxlKTtcbiAgICB0aGlzLmZpbHRlcihwVHJlZVRhYmxlKTtcbiAgICB0aGlzLmZpbmRGaWx0ZXJlZE5vZGVzKHBUcmVlVGFibGUpO1xuICB9XG5cbiAgc29ydChwVHJlZVRhYmxlOiBUcmVlVGFibGUpIHtcbiAgICBwVHJlZVRhYmxlLnNvcnQgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHBUcmVlVGFibGUuc29ydE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwVHJlZVRhYmxlLnNvcnRGaWVsZCA9PT0gZXZlbnQuZmllbGQgJiZcbiAgICAgICAgICBwVHJlZVRhYmxlLnNvcnRPcmRlciA9PT0gLTFcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXZlbnQuZmllbGQgPSAnX2RlZmF1bHRTb3J0T3JkZXInO1xuICAgICAgICB9XG5cbiAgICAgICAgcFRyZWVUYWJsZS5fc29ydE9yZGVyID1cbiAgICAgICAgICBwVHJlZVRhYmxlLnNvcnRGaWVsZCA9PT0gZXZlbnQuZmllbGRcbiAgICAgICAgICAgID8gcFRyZWVUYWJsZS5zb3J0T3JkZXIgKiAtMVxuICAgICAgICAgICAgOiBwVHJlZVRhYmxlLmRlZmF1bHRTb3J0T3JkZXI7XG4gICAgICAgIHBUcmVlVGFibGUuX3NvcnRGaWVsZCA9IGV2ZW50LmZpZWxkO1xuICAgICAgICBwVHJlZVRhYmxlLnNvcnRTaW5nbGUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChwVHJlZVRhYmxlLnNvcnRNb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgIGxldCByZXNldEluZGV4ID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHNvcnRNZXRhID0gcFRyZWVUYWJsZS5nZXRTb3J0TWV0YShldmVudC5maWVsZCk7XG5cbiAgICAgICAgaWYgKHNvcnRNZXRhICYmIHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YSkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAocFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhW2ldLmZpZWxkID09PSBzb3J0TWV0YS5maWVsZCkge1xuICAgICAgICAgICAgICBwVHJlZVRhYmxlLm11bHRpU29ydE1ldGEuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc29ydE1ldGEub3JkZXIgPT09IDEpIHtcbiAgICAgICAgICAgIHNvcnRNZXRhLm9yZGVyID0gc29ydE1ldGEub3JkZXIgKiAtMTtcbiAgICAgICAgICAgIHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YS5wdXNoKHNvcnRNZXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YS5wdXNoKHtcbiAgICAgICAgICAgICAgZmllbGQ6ICdfZGVmYXVsdFNvcnRPcmRlcicsXG4gICAgICAgICAgICAgIG9yZGVyOiBwVHJlZVRhYmxlLmRlZmF1bHRTb3J0T3JkZXJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzZXRJbmRleCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghcFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhKSB7XG4gICAgICAgICAgICBwVHJlZVRhYmxlLm11bHRpU29ydE1ldGEgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhLnB1c2goe1xuICAgICAgICAgICAgZmllbGQ6IGV2ZW50LmZpZWxkLFxuICAgICAgICAgICAgb3JkZXI6IHBUcmVlVGFibGUuZGVmYXVsdFNvcnRPcmRlclxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcFRyZWVUYWJsZS5zb3J0TXVsdGlwbGUoKTtcbiAgICAgICAgaWYgKHJlc2V0SW5kZXgpIHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YSA9IFtdO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzb3J0Tm9kZXMocFRyZWVUYWJsZTogVHJlZVRhYmxlKSB7XG4gICAgcFRyZWVUYWJsZS5zb3J0Tm9kZXMgPSAobm9kZXMpID0+IHtcbiAgICAgIGlmICghbm9kZXMgfHwgbm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fc3luY05vZGVzUGFyYW1zKHBUcmVlVGFibGUuZmlsdGVyZWROb2Rlcywgbm9kZXMpO1xuXG4gICAgICBpZiAocFRyZWVUYWJsZS5jdXN0b21Tb3J0KSB7XG4gICAgICAgIHBUcmVlVGFibGUuc29ydEZ1bmN0aW9uLmVtaXQoe1xuICAgICAgICAgIGRhdGE6IG5vZGVzLFxuICAgICAgICAgIG1vZGU6IHBUcmVlVGFibGUuc29ydE1vZGUsXG4gICAgICAgICAgZmllbGQ6IHBUcmVlVGFibGUuc29ydEZpZWxkIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICBvcmRlcjogcFRyZWVUYWJsZS5zb3J0T3JkZXJcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpc1Vuc29ydCA9IHBUcmVlVGFibGUuc29ydEZpZWxkID09PSAnX2RlZmF1bHRTb3J0T3JkZXInO1xuICAgICAgICBub2Rlcy5zb3J0KChub2RlMTogYW55LCBub2RlMjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUxID0gaXNVbnNvcnRcbiAgICAgICAgICAgID8gbm9kZTEuX2RlZmF1bHRTb3J0T3JkZXJcbiAgICAgICAgICAgIDogT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShub2RlMS5kYXRhLCBwVHJlZVRhYmxlLnNvcnRGaWVsZCk7XG4gICAgICAgICAgY29uc3QgdmFsdWUyID0gaXNVbnNvcnRcbiAgICAgICAgICAgID8gbm9kZTIuX2RlZmF1bHRTb3J0T3JkZXJcbiAgICAgICAgICAgIDogT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShub2RlMi5kYXRhLCBwVHJlZVRhYmxlLnNvcnRGaWVsZCk7XG4gICAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG5cbiAgICAgICAgICBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyICE9IG51bGwpIHJlc3VsdCA9IC0xO1xuICAgICAgICAgIGVsc2UgaWYgKHZhbHVlMSAhPSBudWxsICYmIHZhbHVlMiA9PSBudWxsKSByZXN1bHQgPSAxO1xuICAgICAgICAgIGVsc2UgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiA9PSBudWxsKSByZXN1bHQgPSAwO1xuICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZTEgPT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZTIgPT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyLCB1bmRlZmluZWQsIHsgbnVtZXJpYzogdHJ1ZSB9KTtcbiAgICAgICAgICBlbHNlIHJlc3VsdCA9IHZhbHVlMSA8IHZhbHVlMiA/IC0xIDogdmFsdWUxID4gdmFsdWUyID8gMSA6IDA7XG5cbiAgICAgICAgICByZXR1cm4gcFRyZWVUYWJsZS5zb3J0T3JkZXIgKiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHBUcmVlVGFibGUuc29ydE5vZGVzKG5vZGUuY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzb3J0TXVsdGlwbGVOb2RlcyhwVHJlZVRhYmxlOiBUcmVlVGFibGUpIHtcbiAgICBwVHJlZVRhYmxlLnNvcnRNdWx0aXBsZU5vZGVzID0gKG5vZGVzKSA9PiB7XG4gICAgICBpZiAoIW5vZGVzIHx8IG5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3N5bmNOb2Rlc1BhcmFtcyhwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMsIG5vZGVzKTtcblxuICAgICAgaWYgKHBUcmVlVGFibGUuY3VzdG9tU29ydCkge1xuICAgICAgICBwVHJlZVRhYmxlLnNvcnRGdW5jdGlvbi5lbWl0KHtcbiAgICAgICAgICBkYXRhOiBwVHJlZVRhYmxlLnZhbHVlLFxuICAgICAgICAgIG1vZGU6IHBUcmVlVGFibGUuc29ydE1vZGUsXG4gICAgICAgICAgbXVsdGlTb3J0TWV0YTogcFRyZWVUYWJsZS5tdWx0aVNvcnRNZXRhXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZXMuc29ydCgobm9kZTE6IGFueSwgbm9kZTI6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBwVHJlZVRhYmxlLm11bHRpc29ydEZpZWxkKFxuICAgICAgICAgICAgbm9kZTEsXG4gICAgICAgICAgICBub2RlMixcbiAgICAgICAgICAgIHBUcmVlVGFibGUubXVsdGlTb3J0TWV0YSB8fCBbXSxcbiAgICAgICAgICAgIDBcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSBwVHJlZVRhYmxlLnNvcnRNdWx0aXBsZU5vZGVzKG5vZGUuY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBtdWx0aXNvcnRGaWVsZChwVHJlZVRhYmxlOiBUcmVlVGFibGUpIHtcbiAgICBwVHJlZVRhYmxlLm11bHRpc29ydEZpZWxkID0gKG5vZGUxLCBub2RlMiwgbXVsdGlTb3J0TWV0YSwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgT2JqZWN0VXRpbHMuaXNFbXB0eShwVHJlZVRhYmxlLm11bHRpU29ydE1ldGEpIHx8XG4gICAgICAgIE9iamVjdFV0aWxzLmlzRW1wdHkobXVsdGlTb3J0TWV0YVtpbmRleF0pXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICBjb25zdCBpc1Vuc29ydCA9IG11bHRpU29ydE1ldGFbaW5kZXhdLmZpZWxkID09PSAnX2RlZmF1bHRTb3J0T3JkZXInO1xuICAgICAgY29uc3QgdmFsdWUxID0gaXNVbnNvcnRcbiAgICAgICAgPyAobm9kZTEgYXMgYW55KS5fZGVmYXVsdFNvcnRPcmRlclxuICAgICAgICA6IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEobm9kZTEuZGF0YSwgbXVsdGlTb3J0TWV0YVtpbmRleF0uZmllbGQpO1xuICAgICAgY29uc3QgdmFsdWUyID0gaXNVbnNvcnRcbiAgICAgICAgPyAobm9kZTIgYXMgYW55KS5fZGVmYXVsdFNvcnRPcmRlclxuICAgICAgICA6IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEobm9kZTIuZGF0YSwgbXVsdGlTb3J0TWV0YVtpbmRleF0uZmllbGQpO1xuICAgICAgbGV0IHJlc3VsdCA9IDA7XG5cbiAgICAgIGlmICh2YWx1ZTEgPT0gbnVsbCAmJiB2YWx1ZTIgIT0gbnVsbCkgcmVzdWx0ID0gLTE7XG4gICAgICBlbHNlIGlmICh2YWx1ZTEgIT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbCkgcmVzdWx0ID0gMTtcbiAgICAgIGVsc2UgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiA9PSBudWxsKSByZXN1bHQgPSAwO1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZTEgPT09ICdzdHJpbmcnIHx8IHZhbHVlMSBpbnN0YW5jZW9mIFN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUxLmxvY2FsZUNvbXBhcmUgJiYgdmFsdWUxICE9PSB2YWx1ZTIpIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgbXVsdGlTb3J0TWV0YVtpbmRleF0ub3JkZXIgKlxuICAgICAgICAgICAgdmFsdWUxLmxvY2FsZUNvbXBhcmUodmFsdWUyLCB1bmRlZmluZWQsIHsgbnVtZXJpYzogdHJ1ZSB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHZhbHVlMSA8IHZhbHVlMiA/IC0xIDogMTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlMSA9PT0gdmFsdWUyKSB7XG4gICAgICAgIHJldHVybiBtdWx0aVNvcnRNZXRhLmxlbmd0aCAtIDEgPiBpbmRleFxuICAgICAgICAgID8gcFRyZWVUYWJsZS5tdWx0aXNvcnRGaWVsZChub2RlMSwgbm9kZTIsIG11bHRpU29ydE1ldGEsIGluZGV4ICsgMSlcbiAgICAgICAgICA6IDA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtdWx0aVNvcnRNZXRhW2luZGV4XS5vcmRlciAqIHJlc3VsdDtcbiAgICB9O1xuICB9XG5cbiAgZmlsdGVyKHBUcmVlVGFibGU6IFRyZWVUYWJsZSkge1xuICAgIHBUcmVlVGFibGUuX2ZpbHRlciA9ICgpID0+IHtcbiAgICAgIGlmIChwVHJlZVRhYmxlLmxhenkpIHtcbiAgICAgICAgcFRyZWVUYWJsZS5vbkxhenlMb2FkLmVtaXQocFRyZWVUYWJsZS5jcmVhdGVMYXp5TG9hZE1ldGFkYXRhKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFwVHJlZVRhYmxlLnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwVHJlZVRhYmxlLmhhc0ZpbHRlcigpKSB7XG4gICAgICAgICAgKHBUcmVlVGFibGUuZmlsdGVyZWROb2RlcyBhcyBhbnkpID0gbnVsbDtcbiAgICAgICAgICBpZiAocFRyZWVUYWJsZS5wYWdpbmF0b3IpIHtcbiAgICAgICAgICAgIHBUcmVlVGFibGUudG90YWxSZWNvcmRzID0gcFRyZWVUYWJsZS52YWx1ZVxuICAgICAgICAgICAgICA/IHBUcmVlVGFibGUudmFsdWUubGVuZ3RoXG4gICAgICAgICAgICAgIDogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IGdsb2JhbEZpbHRlckZpZWxkc0FycmF5OiBhbnlbXSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBpZiAocFRyZWVUYWJsZS5maWx0ZXJzLmdsb2JhbCkge1xuICAgICAgICAgICAgaWYgKCFwVHJlZVRhYmxlLmNvbHVtbnMgJiYgIXBUcmVlVGFibGUuZ2xvYmFsRmlsdGVyRmllbGRzKVxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgJ0dsb2JhbCBmaWx0ZXJpbmcgcmVxdWlyZXMgZHluYW1pYyBjb2x1bW5zIG9yIGdsb2JhbEZpbHRlckZpZWxkcyB0byBiZSBkZWZpbmVkLidcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZ2xvYmFsRmlsdGVyRmllbGRzQXJyYXkgPVxuICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuZ2xvYmFsRmlsdGVyRmllbGRzIHx8IHBUcmVlVGFibGUuY29sdW1ucztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9zeW5jTm9kZXNQYXJhbXMocFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzLCBwVHJlZVRhYmxlLnZhbHVlKTtcblxuICAgICAgICAgIHBUcmVlVGFibGUuZmlsdGVyZWROb2RlcyA9IFtdO1xuICAgICAgICAgIGNvbnN0IGlzU3RyaWN0TW9kZSA9IHBUcmVlVGFibGUuZmlsdGVyTW9kZSA9PT0gJ3N0cmljdCc7XG4gICAgICAgICAgbGV0IGlzVmFsdWVDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IFtpZHgsIG5vZGVdIG9mIHBUcmVlVGFibGUudmFsdWUuZW50cmllcygpKSB7XG4gICAgICAgICAgICBsZXQgY29weU5vZGUgPSB7IC4uLm5vZGUgfTtcbiAgICAgICAgICAgIGxldCBsb2NhbE1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgIGxldCBnbG9iYWxNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IHBhcmFtc1dpdGhvdXROb2RlO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3AgaW4gcFRyZWVUYWJsZS5maWx0ZXJzKSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gICAgICAgICAgICAgICAgcFRyZWVUYWJsZS5maWx0ZXJzLmhhc093blByb3BlcnR5KHByb3ApICYmXG4gICAgICAgICAgICAgICAgcHJvcCAhPT0gJ2dsb2JhbCdcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyTWV0YSA9IHBUcmVlVGFibGUuZmlsdGVyc1twcm9wXTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJGaWVsZCA9IHByb3A7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSBmaWx0ZXJNZXRhPy52YWx1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJNYXRjaE1vZGUgPSBmaWx0ZXJNZXRhPy5tYXRjaE1vZGUgfHwgJ3N0YXJ0c1dpdGgnO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlckNvbnN0cmFpbnQgPVxuICAgICAgICAgICAgICAgICAgcFRyZWVUYWJsZS5maWx0ZXJTZXJ2aWNlLmZpbHRlcnNbXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlck1hdGNoTW9kZSBhcyBrZXlvZiB0eXBlb2YgcFRyZWVUYWJsZS5maWx0ZXJTZXJ2aWNlLmZpbHRlcnNcbiAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcGFyYW1zV2l0aG91dE5vZGUgPSB7XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJGaWVsZCxcbiAgICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlLFxuICAgICAgICAgICAgICAgICAgZmlsdGVyQ29uc3RyYWludCxcbiAgICAgICAgICAgICAgICAgIGlzU3RyaWN0TW9kZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgKGlzU3RyaWN0TW9kZSAmJlxuICAgICAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuZmluZEZpbHRlcmVkTm9kZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3B5Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1dpdGhvdXROb2RlXG4gICAgICAgICAgICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuaXNGaWx0ZXJNYXRjaGVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29weU5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNXaXRob3V0Tm9kZSBhcyBhbnlcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICkpIHx8XG4gICAgICAgICAgICAgICAgICAoIWlzU3RyaWN0TW9kZSAmJlxuICAgICAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuaXNGaWx0ZXJNYXRjaGVkKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29weU5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNXaXRob3V0Tm9kZSBhcyBhbnlcbiAgICAgICAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgICAgICAgcFRyZWVUYWJsZS5maW5kRmlsdGVyZWROb2Rlcyhjb3B5Tm9kZSwgcGFyYW1zV2l0aG91dE5vZGUpXG4gICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBsb2NhbE1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFsb2NhbE1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBwVHJlZVRhYmxlLmZpbHRlcnMuZ2xvYmFsICYmXG4gICAgICAgICAgICAgICFnbG9iYWxNYXRjaCAmJlxuICAgICAgICAgICAgICBnbG9iYWxGaWx0ZXJGaWVsZHNBcnJheVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvcHlOb2RlRm9yR2xvYmFsID0geyAuLi5jb3B5Tm9kZSB9O1xuICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJGaWVsZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSBwVHJlZVRhYmxlLmZpbHRlcnMuZ2xvYmFsLnZhbHVlO1xuICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJDb25zdHJhaW50ID1cbiAgICAgICAgICAgICAgICBwVHJlZVRhYmxlLmZpbHRlclNlcnZpY2UuZmlsdGVyc1tcbiAgICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuZmlsdGVycy5nbG9iYWxcbiAgICAgICAgICAgICAgICAgICAgLm1hdGNoTW9kZSBhcyBrZXlvZiB0eXBlb2YgcFRyZWVUYWJsZS5maWx0ZXJTZXJ2aWNlLmZpbHRlcnNcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICBwYXJhbXNXaXRob3V0Tm9kZSA9IHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJGaWVsZCxcbiAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJDb25zdHJhaW50LFxuICAgICAgICAgICAgICAgIGlzU3RyaWN0TW9kZSxcbiAgICAgICAgICAgICAgICBnbG9iYWxGaWx0ZXJGaWVsZHNBcnJheVxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAoaXNTdHJpY3RNb2RlICYmXG4gICAgICAgICAgICAgICAgICAocFRyZWVUYWJsZS5maW5kRmlsdGVyZWROb2RlcyhcbiAgICAgICAgICAgICAgICAgICAgY29weU5vZGVGb3JHbG9iYWwsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtc1dpdGhvdXROb2RlXG4gICAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuaXNGaWx0ZXJNYXRjaGVkKFxuICAgICAgICAgICAgICAgICAgICAgIGNvcHlOb2RlRm9yR2xvYmFsLFxuICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1dpdGhvdXROb2RlIGFzIGFueVxuICAgICAgICAgICAgICAgICAgICApKSkgfHxcbiAgICAgICAgICAgICAgICAoIWlzU3RyaWN0TW9kZSAmJlxuICAgICAgICAgICAgICAgICAgKHBUcmVlVGFibGUuaXNGaWx0ZXJNYXRjaGVkKFxuICAgICAgICAgICAgICAgICAgICBjb3B5Tm9kZUZvckdsb2JhbCxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zV2l0aG91dE5vZGUgYXMgYW55XG4gICAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgICAgIHBUcmVlVGFibGUuZmluZEZpbHRlcmVkTm9kZXMoXG4gICAgICAgICAgICAgICAgICAgICAgY29weU5vZGVGb3JHbG9iYWwsXG4gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zV2l0aG91dE5vZGVcbiAgICAgICAgICAgICAgICAgICAgKSkpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGdsb2JhbE1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb3B5Tm9kZSA9IGNvcHlOb2RlRm9yR2xvYmFsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0gbG9jYWxNYXRjaDtcbiAgICAgICAgICAgIGlmIChwVHJlZVRhYmxlLmZpbHRlcnMuZ2xvYmFsKSB7XG4gICAgICAgICAgICAgIG1hdGNoZXMgPSBsb2NhbE1hdGNoICYmIGdsb2JhbE1hdGNoO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgICAoY29weU5vZGUgYXMgYW55KS5faWR4ID0gaWR4O1xuICAgICAgICAgICAgICBwVHJlZVRhYmxlLmZpbHRlcmVkTm9kZXMucHVzaChjb3B5Tm9kZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlzVmFsdWVDaGFuZ2VkID1cbiAgICAgICAgICAgICAgaXNWYWx1ZUNoYW5nZWQgfHxcbiAgICAgICAgICAgICAgIWxvY2FsTWF0Y2ggfHxcbiAgICAgICAgICAgICAgZ2xvYmFsTWF0Y2ggfHxcbiAgICAgICAgICAgICAgKGxvY2FsTWF0Y2ggJiYgcFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzLmxlbmd0aCA+IDApIHx8XG4gICAgICAgICAgICAgICghZ2xvYmFsTWF0Y2ggJiYgcFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzLmxlbmd0aCA9PT0gMCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFpc1ZhbHVlQ2hhbmdlZCkge1xuICAgICAgICAgICAgKHBUcmVlVGFibGUuZmlsdGVyZWROb2RlcyBhcyBhbnkpID0gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocFRyZWVUYWJsZS5wYWdpbmF0b3IpIHtcbiAgICAgICAgICAgIHBUcmVlVGFibGUudG90YWxSZWNvcmRzID0gcFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzXG4gICAgICAgICAgICAgID8gcFRyZWVUYWJsZS5maWx0ZXJlZE5vZGVzLmxlbmd0aFxuICAgICAgICAgICAgICA6IHBUcmVlVGFibGUudmFsdWVcbiAgICAgICAgICAgICAgICA/IHBUcmVlVGFibGUudmFsdWUubGVuZ3RoXG4gICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwVHJlZVRhYmxlLmZpcnN0ID0gMDtcblxuICAgICAgY29uc3QgZmlsdGVyZWRWYWx1ZSA9IHBUcmVlVGFibGUuZmlsdGVyZWROb2RlcyB8fCBwVHJlZVRhYmxlLnZhbHVlO1xuXG4gICAgICBwVHJlZVRhYmxlLm9uRmlsdGVyLmVtaXQoe1xuICAgICAgICBmaWx0ZXJzOiBwVHJlZVRhYmxlLmZpbHRlcnMsXG4gICAgICAgIGZpbHRlcmVkVmFsdWVcbiAgICAgIH0pO1xuXG4gICAgICBwVHJlZVRhYmxlLnRhYmxlU2VydmljZS5vblVJVXBkYXRlKGZpbHRlcmVkVmFsdWUpO1xuICAgICAgcFRyZWVUYWJsZS51cGRhdGVTZXJpYWxpemVkVmFsdWUoKTtcblxuICAgICAgaWYgKHBUcmVlVGFibGUuc2Nyb2xsYWJsZSkge1xuICAgICAgICBwVHJlZVRhYmxlLnJlc2V0U2Nyb2xsVG9wKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGZpbmRGaWx0ZXJlZE5vZGVzKHBUcmVlVGFibGU6IFRyZWVUYWJsZSkge1xuICAgIHBUcmVlVGFibGUuZmluZEZpbHRlcmVkTm9kZXMgPSAobm9kZSwgcGFyYW1zV2l0aG91dE5vZGUpOiBhbnkgPT4ge1xuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgbGV0IG1hdGNoZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICBjb25zdCBjaGlsZE5vZGVzID0gWy4uLm5vZGUuY2hpbGRyZW5dO1xuICAgICAgICAgIG5vZGUuY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtpZHgsIGNoaWxkTm9kZV0gb2YgY2hpbGROb2Rlcy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvcHlDaGlsZE5vZGUgPSB7IC4uLmNoaWxkTm9kZSB9O1xuICAgICAgICAgICAgaWYgKHBUcmVlVGFibGUuaXNGaWx0ZXJNYXRjaGVkKGNvcHlDaGlsZE5vZGUsIHBhcmFtc1dpdGhvdXROb2RlKSkge1xuICAgICAgICAgICAgICBtYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgKGNvcHlDaGlsZE5vZGUgYXMgYW55KS5faWR4ID0gaWR4O1xuICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLnB1c2goY29weUNoaWxkTm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIF9zeW5jTm9kZXNQYXJhbXMoXG4gICAgZnJvbTogYW55W10gfCB1bmRlZmluZWQgfCBudWxsLFxuICAgIHRvOiBhbnlbXSB8IHVuZGVmaW5lZFxuICApIHtcbiAgICBpZiAoIWZyb20gfHwgIXRvKSByZXR1cm47XG5cbiAgICBmcm9tLmZvckVhY2goKHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gc291cmNlLl9pZHg7XG4gICAgICBpZiAodHlwZW9mIGlkeCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdG9baWR4XTtcbiAgICAgICAgZGVsZXRlIHNvdXJjZS5faWR4O1xuICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgdGFyZ2V0LmV4cGFuZGVkID0gc291cmNlLmV4cGFuZGVkO1xuICAgICAgICAgIHRhcmdldC5wYXJ0aWFsU2VsZWN0ZWQgPSBzb3VyY2UucGFydGlhbFNlbGVjdGVkO1xuICAgICAgICAgIHRoaXMuX3N5bmNOb2Rlc1BhcmFtcyhzb3VyY2UuY2hpbGRyZW4sIHRhcmdldC5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -7986,6 +7986,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
7986
7986
  class TreeTableUnsortDirective {
7987
7987
  constructor(pTreeTable) {
7988
7988
  this.pTreeTable = pTreeTable;
7989
+ this.sort(pTreeTable);
7990
+ this.sortNodes(pTreeTable);
7991
+ this.sortMultipleNodes(pTreeTable);
7992
+ this.multisortField(pTreeTable);
7993
+ this.filter(pTreeTable);
7994
+ this.findFilteredNodes(pTreeTable);
7995
+ }
7996
+ sort(pTreeTable) {
7989
7997
  pTreeTable.sort = (event) => {
7990
7998
  if (pTreeTable.sortMode === 'single') {
7991
7999
  if (pTreeTable.sortField === event.field &&
@@ -8034,6 +8042,8 @@ class TreeTableUnsortDirective {
8034
8042
  pTreeTable.multiSortMeta = [];
8035
8043
  }
8036
8044
  };
8045
+ }
8046
+ sortNodes(pTreeTable) {
8037
8047
  pTreeTable.sortNodes = (nodes) => {
8038
8048
  if (!nodes || nodes.length === 0) {
8039
8049
  return;
@@ -8075,6 +8085,8 @@ class TreeTableUnsortDirective {
8075
8085
  pTreeTable.sortNodes(node.children);
8076
8086
  }
8077
8087
  };
8088
+ }
8089
+ sortMultipleNodes(pTreeTable) {
8078
8090
  pTreeTable.sortMultipleNodes = (nodes) => {
8079
8091
  if (!nodes || nodes.length === 0) {
8080
8092
  return;
@@ -8097,6 +8109,8 @@ class TreeTableUnsortDirective {
8097
8109
  pTreeTable.sortMultipleNodes(node.children);
8098
8110
  }
8099
8111
  };
8112
+ }
8113
+ multisortField(pTreeTable) {
8100
8114
  pTreeTable.multisortField = (node1, node2, multiSortMeta, index) => {
8101
8115
  if (ObjectUtils.isEmpty(pTreeTable.multiSortMeta) ||
8102
8116
  ObjectUtils.isEmpty(multiSortMeta[index])) {
@@ -8132,6 +8146,8 @@ class TreeTableUnsortDirective {
8132
8146
  }
8133
8147
  return multiSortMeta[index].order * result;
8134
8148
  };
8149
+ }
8150
+ filter(pTreeTable) {
8135
8151
  pTreeTable._filter = () => {
8136
8152
  if (pTreeTable.lazy) {
8137
8153
  pTreeTable.onLazyLoad.emit(pTreeTable.createLazyLoadMetadata());
@@ -8198,28 +8214,26 @@ class TreeTableUnsortDirective {
8198
8214
  if (pTreeTable.filters.global &&
8199
8215
  !globalMatch &&
8200
8216
  globalFilterFieldsArray) {
8201
- for (let j = 0; j < globalFilterFieldsArray.length; j++) {
8202
- const copyNodeForGlobal = { ...copyNode };
8203
- const filterField = globalFilterFieldsArray[j].field ||
8204
- globalFilterFieldsArray[j];
8205
- const filterValue = pTreeTable.filters.global.value;
8206
- const filterConstraint = pTreeTable.filterService.filters[pTreeTable.filters.global
8207
- .matchMode];
8208
- paramsWithoutNode = {
8209
- filterField,
8210
- filterValue,
8211
- filterConstraint,
8212
- isStrictMode
8213
- };
8214
- if ((isStrictMode &&
8215
- (pTreeTable.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) ||
8216
- pTreeTable.isFilterMatched(copyNodeForGlobal, paramsWithoutNode))) ||
8217
- (!isStrictMode &&
8218
- (pTreeTable.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) ||
8219
- pTreeTable.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode)))) {
8220
- globalMatch = true;
8221
- copyNode = copyNodeForGlobal;
8222
- }
8217
+ const copyNodeForGlobal = { ...copyNode };
8218
+ const filterField = undefined;
8219
+ const filterValue = pTreeTable.filters.global.value;
8220
+ const filterConstraint = pTreeTable.filterService.filters[pTreeTable.filters.global
8221
+ .matchMode];
8222
+ paramsWithoutNode = {
8223
+ filterField,
8224
+ filterValue,
8225
+ filterConstraint,
8226
+ isStrictMode,
8227
+ globalFilterFieldsArray
8228
+ };
8229
+ if ((isStrictMode &&
8230
+ (pTreeTable.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode) ||
8231
+ pTreeTable.isFilterMatched(copyNodeForGlobal, paramsWithoutNode))) ||
8232
+ (!isStrictMode &&
8233
+ (pTreeTable.isFilterMatched(copyNodeForGlobal, paramsWithoutNode) ||
8234
+ pTreeTable.findFilteredNodes(copyNodeForGlobal, paramsWithoutNode)))) {
8235
+ globalMatch = true;
8236
+ copyNode = copyNodeForGlobal;
8223
8237
  }
8224
8238
  }
8225
8239
  let matches = localMatch;
@@ -8261,6 +8275,8 @@ class TreeTableUnsortDirective {
8261
8275
  pTreeTable.resetScrollTop();
8262
8276
  }
8263
8277
  };
8278
+ }
8279
+ findFilteredNodes(pTreeTable) {
8264
8280
  pTreeTable.findFilteredNodes = (node, paramsWithoutNode) => {
8265
8281
  if (node) {
8266
8282
  let matched = false;
@@ -11541,7 +11557,7 @@ class CpsFileUploadComponent {
11541
11557
  }
11542
11558
  }
11543
11559
  updateExtensionsString() {
11544
- this.extensions = this.extensions.map((ext) => ext.startsWith('.') ? ext : '.' + ext);
11560
+ this.extensions = this.extensions.map((ext) => ext.startsWith('.') ? ext.toLowerCase() : '.' + ext.toLowerCase());
11545
11561
  this.extensionsString = this.extensions.join(', ');
11546
11562
  this.extensionsStringAsterisks = this.extensions
11547
11563
  .map((ext) => '*' + ext)
@@ -11595,8 +11611,9 @@ class CpsFileUploadComponent {
11595
11611
  return false;
11596
11612
  if (this.extensions.length < 1)
11597
11613
  return true;
11614
+ const fileNameLowerCase = file.name.toLowerCase();
11598
11615
  for (const ext of this.extensions) {
11599
- if (file.name.endsWith(ext))
11616
+ if (fileNameLowerCase.endsWith(ext))
11600
11617
  return true;
11601
11618
  }
11602
11619
  return false;