ng-easycommerce 0.0.628 → 0.0.629

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.
@@ -16,8 +16,8 @@ export class PriceRangeFilter extends Filter {
16
16
  };
17
17
  // Método para actualizar los valores seleccionados
18
18
  this.setSelected = (min, max) => {
19
- this.currentMinPrice = min;
20
- this.currentMaxPrice = max;
19
+ this.currentMinPrice = (min !== this.minPrice) ? min : null;
20
+ this.currentMaxPrice = (max !== this.maxPrice) ? max : null;
21
21
  };
22
22
  // Retorna los valores seleccionados (rango de precios)
23
23
  this.getSelectedRange = () => {
@@ -46,6 +46,12 @@ export class PriceRangeFilter extends Filter {
46
46
  updatePrices(min, max) {
47
47
  this.minPrice = min;
48
48
  this.maxPrice = max;
49
+ if (this.currentMinPrice !== null && (this.currentMinPrice < min || this.currentMinPrice > max)) {
50
+ this.currentMinPrice = null;
51
+ }
52
+ if (this.currentMaxPrice !== null && (this.currentMaxPrice > max || this.currentMaxPrice < min)) {
53
+ this.currentMaxPrice = null;
54
+ }
49
55
  }
50
56
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpY2VSYW5nZUZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9jbGFzc2VzL2ZpbHRlcnMvUHJpY2VSYW5nZUZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR2xDLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxNQUFNO0lBQTVDOztRQUVJLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIsYUFBUSxHQUFXLElBQUksQ0FBQztRQUN4QixvQkFBZSxHQUFXLElBQUksQ0FBQztRQUMvQixvQkFBZSxHQUFXLElBQUksQ0FBQztRQUUvQixTQUFJLEdBQUcsR0FBZSxFQUFFLENBQUMsYUFBYSxDQUFDO1FBRXZDLHFEQUFxRDtRQUNyRCxlQUFVLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNsRCxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNoRSxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNwRSxDQUFDLENBQUE7UUFPRCxtREFBbUQ7UUFDbkQsZ0JBQVcsR0FBRyxDQUFDLEdBQVcsRUFBRSxHQUFXLEVBQVEsRUFBRTtZQUM3QyxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztZQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztRQUMvQixDQUFDLENBQUE7UUFFRCx1REFBdUQ7UUFDdkQscUJBQWdCLEdBQUcsR0FBaUMsRUFBRTtZQUNsRCxPQUFPO2dCQUNILEdBQUcsRUFBRSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxRQUFRO2dCQUMxQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsUUFBUTthQUM3QyxDQUFDO1FBQ04sQ0FBQyxDQUFBO1FBRUQsMkVBQTJFO1FBQzNFLGdCQUFXLEdBQUcsR0FBVyxFQUFFO1lBQ3ZCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUVoQixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDekUsTUFBTSxJQUFJLGNBQWMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ2xEO1lBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pFLE1BQU0sSUFBSSxjQUFjLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUNsRDtZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQTtRQUVELGlEQUFpRDtRQUNqRCxVQUFLLEdBQUcsR0FBUyxFQUFFO1lBQ2YsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3pDLENBQUMsQ0FBQTtJQUNMLENBQUM7SUF2Q0csWUFBWSxDQUFDLEdBQVcsRUFBRSxHQUFXO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO0lBQ3hCLENBQUM7Q0FvQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXIgfSBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCB7IEZpbHRlckVsZW1lbnQsIEZpbHRlclR5cGUgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9maWx0ZXJcIjtcblxuZXhwb3J0IGNsYXNzIFByaWNlUmFuZ2VGaWx0ZXIgZXh0ZW5kcyBGaWx0ZXIge1xuXG4gICAgbWluUHJpY2U6IG51bWJlciA9IDA7XG4gICAgbWF4UHJpY2U6IG51bWJlciA9IDEwMDA7XG4gICAgY3VycmVudE1pblByaWNlOiBudW1iZXIgPSBudWxsO1xuICAgIGN1cnJlbnRNYXhQcmljZTogbnVtYmVyID0gbnVsbDtcblxuICAgIHR5cGUgPSAoKTogRmlsdGVyVHlwZSA9PiAncHJpY2VfcmFuZ2UnO1xuXG4gICAgLy8gTcOpdG9kbyBwYXJhIGNvbmZpZ3VyYXIgZWwgcmFuZ28gZGUgcHJlY2lvcyBpbmljaWFsXG4gICAgc2V0Q29udGVudCA9IChvcHRpb25zKSA9PiB7XG4gICAgICAgIHRoaXMubWluUHJpY2UgPSBvcHRpb25zLm1pblByaWNlIHx8IHRoaXMubWluUHJpY2U7XG4gICAgICAgIHRoaXMubWF4UHJpY2UgPSBvcHRpb25zLm1heFByaWNlIHx8IHRoaXMubWF4UHJpY2U7XG4gICAgICAgIHRoaXMuY3VycmVudE1pblByaWNlID0gb3B0aW9ucy5jdXJyZW50TWluUHJpY2UgfHwgdGhpcy5taW5QcmljZTtcbiAgICAgICAgdGhpcy5jdXJyZW50TWF4UHJpY2UgPSBvcHRpb25zLmN1cnJlbnRNYXhQcmljZSB8fCB0aGlzLm1heFByaWNlO1xuICAgIH1cblxuICAgIHVwZGF0ZVByaWNlcyhtaW46IG51bWJlciwgbWF4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5taW5QcmljZSA9IG1pbjtcbiAgICAgICAgdGhpcy5tYXhQcmljZSA9IG1heDtcbiAgICB9XG5cbiAgICAvLyBNw6l0b2RvIHBhcmEgYWN0dWFsaXphciBsb3MgdmFsb3JlcyBzZWxlY2Npb25hZG9zXG4gICAgc2V0U2VsZWN0ZWQgPSAobWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudE1pblByaWNlID0gbWluO1xuICAgICAgICB0aGlzLmN1cnJlbnRNYXhQcmljZSA9IG1heDtcbiAgICB9XG5cbiAgICAvLyBSZXRvcm5hIGxvcyB2YWxvcmVzIHNlbGVjY2lvbmFkb3MgKHJhbmdvIGRlIHByZWNpb3MpXG4gICAgZ2V0U2VsZWN0ZWRSYW5nZSA9ICgpOiB7IG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciB9ID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1pbjogdGhpcy5jdXJyZW50TWluUHJpY2UgfHwgdGhpcy5taW5QcmljZSxcbiAgICAgICAgICAgIG1heDogdGhpcy5jdXJyZW50TWF4UHJpY2UgfHwgdGhpcy5tYXhQcmljZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBHZW5lcmEgbG9zIHBhcsOhbWV0cm9zIGRlIGxhIFVSTCBlbiBiYXNlIGFsIHJhbmdvIGRlIHByZWNpb3Mgc2VsZWNjaW9uYWRvXG4gICAgdG9VcmxQYXJhbXMgPSAoKTogc3RyaW5nID0+IHtcbiAgICAgICAgbGV0IHBhcmFtcyA9ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRNaW5QcmljZSAhPT0gbnVsbCAmJiB0aGlzLmN1cnJlbnRNaW5QcmljZSAhPT0gdGhpcy5taW5QcmljZSkge1xuICAgICAgICAgICAgcGFyYW1zICs9IGAmcHJpY2VfbWluPSR7dGhpcy5jdXJyZW50TWluUHJpY2V9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRNYXhQcmljZSAhPT0gbnVsbCAmJiB0aGlzLmN1cnJlbnRNYXhQcmljZSAhPT0gdGhpcy5tYXhQcmljZSkge1xuICAgICAgICAgICAgcGFyYW1zICs9IGAmcHJpY2VfbWF4PSR7dGhpcy5jdXJyZW50TWF4UHJpY2V9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfVxuXG4gICAgLy8gUmVzdGFibGVjZSBlbCBmaWx0cm8gYSBsb3MgdmFsb3JlcyBwb3IgZGVmZWN0b1xuICAgIHJlc2V0ID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRNaW5QcmljZSA9IDA7XG4gICAgICAgIHRoaXMuY3VycmVudE1heFByaWNlID0gdGhpcy5tYXhQcmljZTtcbiAgICB9XG59XG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpY2VSYW5nZUZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9jbGFzc2VzL2ZpbHRlcnMvUHJpY2VSYW5nZUZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR2xDLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxNQUFNO0lBQTVDOztRQUVJLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIsYUFBUSxHQUFXLElBQUksQ0FBQztRQUN4QixvQkFBZSxHQUFXLElBQUksQ0FBQztRQUMvQixvQkFBZSxHQUFXLElBQUksQ0FBQztRQUUvQixTQUFJLEdBQUcsR0FBZSxFQUFFLENBQUMsYUFBYSxDQUFDO1FBRXZDLHFEQUFxRDtRQUNyRCxlQUFVLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNsRCxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNoRSxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNwRSxDQUFDLENBQUE7UUFjRCxtREFBbUQ7UUFDbkQsZ0JBQVcsR0FBRyxDQUFDLEdBQVcsRUFBRSxHQUFXLEVBQVEsRUFBRTtZQUM3QyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDNUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hFLENBQUMsQ0FBQTtRQUVELHVEQUF1RDtRQUN2RCxxQkFBZ0IsR0FBRyxHQUFpQyxFQUFFO1lBQ2xELE9BQU87Z0JBQ0gsR0FBRyxFQUFFLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFFBQVE7Z0JBQzFDLEdBQUcsRUFBRSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxRQUFRO2FBQzdDLENBQUM7UUFDTixDQUFDLENBQUE7UUFFRCwyRUFBMkU7UUFDM0UsZ0JBQVcsR0FBRyxHQUFXLEVBQUU7WUFDdkIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBRWhCLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUN6RSxNQUFNLElBQUksY0FBYyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7YUFDbEQ7WUFFRCxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDekUsTUFBTSxJQUFJLGNBQWMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ2xEO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQyxDQUFBO1FBRUQsaURBQWlEO1FBQ2pELFVBQUssR0FBRyxHQUFTLEVBQUU7WUFDZixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDekMsQ0FBQyxDQUFBO0lBQ0wsQ0FBQztJQTlDRyxZQUFZLENBQUMsR0FBVyxFQUFFLEdBQVc7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLEVBQUU7WUFDN0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7U0FDL0I7UUFFRCxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUMsRUFBRTtZQUM3RixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztTQUMvQjtJQUNMLENBQUM7Q0FvQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXIgfSBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCB7IEZpbHRlckVsZW1lbnQsIEZpbHRlclR5cGUgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9maWx0ZXJcIjtcblxuZXhwb3J0IGNsYXNzIFByaWNlUmFuZ2VGaWx0ZXIgZXh0ZW5kcyBGaWx0ZXIge1xuXG4gICAgbWluUHJpY2U6IG51bWJlciA9IDA7XG4gICAgbWF4UHJpY2U6IG51bWJlciA9IDEwMDA7XG4gICAgY3VycmVudE1pblByaWNlOiBudW1iZXIgPSBudWxsO1xuICAgIGN1cnJlbnRNYXhQcmljZTogbnVtYmVyID0gbnVsbDtcblxuICAgIHR5cGUgPSAoKTogRmlsdGVyVHlwZSA9PiAncHJpY2VfcmFuZ2UnO1xuXG4gICAgLy8gTcOpdG9kbyBwYXJhIGNvbmZpZ3VyYXIgZWwgcmFuZ28gZGUgcHJlY2lvcyBpbmljaWFsXG4gICAgc2V0Q29udGVudCA9IChvcHRpb25zKSA9PiB7XG4gICAgICAgIHRoaXMubWluUHJpY2UgPSBvcHRpb25zLm1pblByaWNlIHx8IHRoaXMubWluUHJpY2U7XG4gICAgICAgIHRoaXMubWF4UHJpY2UgPSBvcHRpb25zLm1heFByaWNlIHx8IHRoaXMubWF4UHJpY2U7XG4gICAgICAgIHRoaXMuY3VycmVudE1pblByaWNlID0gb3B0aW9ucy5jdXJyZW50TWluUHJpY2UgfHwgdGhpcy5taW5QcmljZTtcbiAgICAgICAgdGhpcy5jdXJyZW50TWF4UHJpY2UgPSBvcHRpb25zLmN1cnJlbnRNYXhQcmljZSB8fCB0aGlzLm1heFByaWNlO1xuICAgIH1cblxuICAgIHVwZGF0ZVByaWNlcyhtaW46IG51bWJlciwgbWF4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5taW5QcmljZSA9IG1pbjtcbiAgICAgICAgdGhpcy5tYXhQcmljZSA9IG1heDtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE1pblByaWNlICE9PSBudWxsICYmICh0aGlzLmN1cnJlbnRNaW5QcmljZSA8IG1pbiB8fCB0aGlzLmN1cnJlbnRNaW5QcmljZSA+IG1heCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1pblByaWNlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRNYXhQcmljZSAhPT0gbnVsbCAmJiAodGhpcy5jdXJyZW50TWF4UHJpY2UgPiBtYXggfHwgdGhpcy5jdXJyZW50TWF4UHJpY2UgPCBtaW4pKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNYXhQcmljZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNw6l0b2RvIHBhcmEgYWN0dWFsaXphciBsb3MgdmFsb3JlcyBzZWxlY2Npb25hZG9zXG4gICAgc2V0U2VsZWN0ZWQgPSAobWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudE1pblByaWNlID0gKG1pbiAhPT0gdGhpcy5taW5QcmljZSkgPyBtaW4gOiBudWxsO1xuICAgICAgICB0aGlzLmN1cnJlbnRNYXhQcmljZSA9IChtYXggIT09IHRoaXMubWF4UHJpY2UpID8gbWF4IDogbnVsbDtcbiAgICB9XG5cbiAgICAvLyBSZXRvcm5hIGxvcyB2YWxvcmVzIHNlbGVjY2lvbmFkb3MgKHJhbmdvIGRlIHByZWNpb3MpXG4gICAgZ2V0U2VsZWN0ZWRSYW5nZSA9ICgpOiB7IG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciB9ID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1pbjogdGhpcy5jdXJyZW50TWluUHJpY2UgfHwgdGhpcy5taW5QcmljZSxcbiAgICAgICAgICAgIG1heDogdGhpcy5jdXJyZW50TWF4UHJpY2UgfHwgdGhpcy5tYXhQcmljZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBHZW5lcmEgbG9zIHBhcsOhbWV0cm9zIGRlIGxhIFVSTCBlbiBiYXNlIGFsIHJhbmdvIGRlIHByZWNpb3Mgc2VsZWNjaW9uYWRvXG4gICAgdG9VcmxQYXJhbXMgPSAoKTogc3RyaW5nID0+IHtcbiAgICAgICAgbGV0IHBhcmFtcyA9ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRNaW5QcmljZSAhPT0gbnVsbCAmJiB0aGlzLmN1cnJlbnRNaW5QcmljZSAhPT0gdGhpcy5taW5QcmljZSkge1xuICAgICAgICAgICAgcGFyYW1zICs9IGAmcHJpY2VfbWluPSR7dGhpcy5jdXJyZW50TWluUHJpY2V9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRNYXhQcmljZSAhPT0gbnVsbCAmJiB0aGlzLmN1cnJlbnRNYXhQcmljZSAhPT0gdGhpcy5tYXhQcmljZSkge1xuICAgICAgICAgICAgcGFyYW1zICs9IGAmcHJpY2VfbWF4PSR7dGhpcy5jdXJyZW50TWF4UHJpY2V9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfVxuXG4gICAgLy8gUmVzdGFibGVjZSBlbCBmaWx0cm8gYSBsb3MgdmFsb3JlcyBwb3IgZGVmZWN0b1xuICAgIHJlc2V0ID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRNaW5QcmljZSA9IDA7XG4gICAgICAgIHRoaXMuY3VycmVudE1heFByaWNlID0gdGhpcy5tYXhQcmljZTtcbiAgICB9XG59XG4iXX0=
@@ -262,7 +262,9 @@ let ProductsService = class ProductsService {
262
262
  this.getTotal = () => this.pagination.total;
263
263
  // Suscribirse a los cambios en el rango de precios
264
264
  this.pagination.priceRange$.subscribe(range => {
265
- this.updatePriceRangeFilter(range.price_min, range.price_max);
265
+ let min = Math.floor(range.price_min);
266
+ let max = Math.ceil(range.price_max);
267
+ this.updatePriceRangeFilter(min, max);
266
268
  });
267
269
  }
268
270
  updatePriceRangeFilter(min, max) {
@@ -285,4 +287,4 @@ ProductsService = __decorate([
285
287
  Injectable()
286
288
  ], ProductsService);
287
289
  export { ProductsService };
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9wcm9kdWN0cy9wcm9kdWN0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTlELE9BQU8seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRzFFLGdDQUFnQztBQUNoQyxJQUFJLFFBQVEsR0FBUSxFQUFFLENBQUM7QUFJdkIsSUFBYSxlQUFlLEdBQTVCLE1BQWEsZUFBZTtJQThCeEIsWUFBb0IsVUFBNkIsRUFDckMsU0FBb0IsRUFDcEIsVUFBNkIsRUFDN0IsT0FBdUIsRUFDeEIsY0FBOEI7UUFKckIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUE5QmpDLG9CQUFlLEdBQStCLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLG1CQUFjLEdBQThCLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLHlCQUFvQixHQUFtQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUVqRixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hELGFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzlDLG1CQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBSWpFLFdBQVc7UUFFWCxnQ0FBMkIsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEdBQUcsMEJBQTBCLEdBQUcsUUFBUSxDQUFDO1FBQzlILHNCQUFpQixHQUFHLEdBQUcsRUFBRSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxHQUFHLGtCQUFrQixDQUFDO1FBQ3pGLHVCQUFrQixHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEdBQUcsb0JBQW9CLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3hMLDZCQUF3QixHQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxpQkFBaUIsR0FBRyxXQUFXLEdBQUcsWUFBWSxDQUFDO1FBQzNLLHVCQUFrQixHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsR0FBRyw0QkFBNEIsR0FBRyxHQUFHLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdkosc0JBQWlCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxHQUFHLDRCQUE0QixHQUFHLElBQUksQ0FBQztRQUM5RyxpQ0FBNEIsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEdBQUcseUJBQXlCLEdBQUcsU0FBUyxDQUFDO1FBQ2hJLHFCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxHQUFHLGtCQUFrQixDQUFDO1FBQ3hGLDBCQUFxQixHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxRQUFRLEdBQUcsSUFBSSxHQUFHLGtCQUFrQixDQUFDO1FBQ2pKLHNCQUFpQixHQUFHLENBQUMsT0FBTyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEdBQUcsa0JBQWtCLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ3pKLDBCQUFxQixHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsVUFBVSxDQUFDO1FBYXZILGdCQUFnQjtRQUVoQixzQkFBaUIsR0FBRyxDQUFDLFFBQWdCLEdBQUcsRUFBbUIsRUFBRSxDQUN6RCxLQUFLLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdEUsZ0NBQTJCLEdBQUcsQ0FBQyxRQUFnQixFQUFFLFFBQWdCLEdBQUcsRUFBbUIsRUFBRSxDQUNyRixLQUFLLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4RixpQkFBWSxHQUFHLENBQUMsS0FBYSxFQUFFLElBQVksRUFBbUIsRUFBRSxDQUM1RCxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFeEUsdUJBQWtCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsT0FBZ0IsRUFBbUIsRUFBRSxDQUNyRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFaEUsNkJBQXdCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsUUFBZ0IsR0FBRyxFQUFtQixFQUFFLENBQzdFLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhGLHVCQUFrQixHQUFHLENBQUMsR0FBVyxFQUFtQixFQUFFLENBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXRELHNCQUFpQixHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFdEQsaUNBQTRCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUV0RSx3QkFBbUIsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFOztZQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBQSxRQUFRLDBDQUFFLEtBQUssS0FBSSxDQUFDLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDOUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFDckMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDekMsQ0FBQTtRQUNMLENBQUMsQ0FBQTtRQUVELDBCQUFxQixHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVuRix3QkFBbUIsR0FBRyxDQUFDLFlBQVksRUFBRSxPQUFzQixFQUFFLEVBQUU7WUFDM0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFBO1FBRUQ7Ozs7O1dBS0c7UUFDSCxnQkFBVyxHQUFHLENBQUMsSUFBWSxFQUFFLFNBQWMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBRWpIOzs7OztXQUtHO1FBQ0gseUJBQW9CLEdBQUcsQ0FBQyxRQUE4RSxFQUFFLE9BQXNCLEVBQUUsWUFBYSxFQUFFLGNBQWdDLEVBQUUsRUFBRTs7WUFDL0ssSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUIsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDekUsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEVBQUUsT0FBQSxRQUFRLDBDQUFFLEtBQUssS0FBSSxDQUFDLENBQUMsQ0FBQztZQUN0RixJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQzlDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQ3JDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ3pDLENBQUE7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksVUFBVSxDQUFDO2dCQUNqRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO2dCQUNwRCxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUE7UUFFRCxlQUFVLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBcUIsRUFBRSxjQUFnQyxFQUFFLEVBQUU7O1lBQy9FLElBQUksYUFBYSxHQUFhLEVBQUUsQ0FBQztZQUNqQyxVQUFJLE9BQU8sMENBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQUcsT0FBTyxHQUFHLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3RHLE1BQUEsT0FBTywwQ0FBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtZQUN6RixNQUFBLGNBQWMsMENBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNwQyxJQUFJLE1BQU0sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDdEYsTUFBTSxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzlFLENBQUMsRUFBQztZQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQTtRQUVELHNCQUFpQixHQUFHLENBQUMsTUFBYyxFQUFFLFFBQVMsRUFBVSxFQUFFO1lBQ3RELElBQUksUUFBZ0IsQ0FBQztZQUNyQixRQUFRLE1BQU0sRUFBRTtnQkFDWixLQUFLLFVBQVU7b0JBQUUsUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLFlBQVksSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQy9LLEtBQUssWUFBWTtvQkFBRSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxZQUFZLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFBQyxNQUFNO2dCQUNuTCxLQUFLLE1BQU07b0JBQUUsUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFBQyxNQUFNO2dCQUM5RCxLQUFLLFVBQVU7b0JBQUUsUUFBUSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7b0JBQUMsTUFBTTtnQkFDeEQsS0FBSyxhQUFhO29CQUFFLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7b0JBQUMsTUFBTTthQUNoRTtZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ3BCLENBQUMsQ0FBQTtRQUVELHlCQUFvQixHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO2dCQUFFLE9BQU87WUFDN0IsSUFBSSxhQUFhLEdBQWEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7WUFDeEQsSUFBSSxLQUFLLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxVQUFVLENBQUMsQ0FBQztZQUMzRSxLQUFLLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFBO1FBRUQsWUFBTyxHQUFHLEdBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXBGLHNCQUFpQixHQUFHLENBQUMsU0FBaUIsRUFBRSxVQUF5QixFQUFFLEVBQUU7WUFDakUsSUFBSSxhQUFhLEdBQWEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7WUFDeEQsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssYUFBYSxFQUFFO2dCQUNwQyxJQUFJLEtBQUssR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRixhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9EOzs7Ozs7O2tCQU9FO2dCQUNGLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxTQUFTLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzNJO1lBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDbkMsQ0FBQyxDQUFBO1FBRUQsNEJBQXVCLEdBQUcsR0FBRyxFQUFFO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ25ILElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsd0RBQXdEO1lBQ3hELDhDQUE4QztZQUM5Qyx5REFBeUQ7WUFDekQsNERBQTREO1lBQzVELG9DQUFvQztRQUN4QyxDQUFDLENBQUE7UUFFRDs7Ozs7Ozs7OztXQVVHO1FBQ0gsaUNBQTRCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsYUFBOEMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBRXZLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQTtZQUMvSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUE7WUFDL0ksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQTtZQUM5RixDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7WUFFakYsSUFBSSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7WUFDL0IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTs7Z0JBQ3ZCLElBQUksUUFBUSxHQUFHLENBQUMsU0FBRyxPQUFPLDBDQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUVuRyxJQUFJLE1BQU0sRUFBRTtvQkFDUixNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTt3QkFDaEMsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzt3QkFDM0QsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO3dCQUNsSyxxRUFBcUU7d0JBQ3JFLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQzFCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQzsrQkFDeEYsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNOytCQUN0QixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7bUNBQzdILENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEtBQUssV0FBVyxDQUFDLElBQUksQ0FBQyxDQUU1RyxDQUFDO3dCQUNGLFVBQVUsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUN2SCxDQUFDLENBQUMsQ0FBQTtpQkFDTDtxQkFBTTtvQkFDSDs7O3VCQUdHO29CQUNILElBQUksVUFBVSxDQUFDLGtCQUFrQixXQUFJLE9BQU8sQ0FBQyxPQUFPLDBDQUFFLE1BQU0sQ0FBQSxFQUFFO3dCQUMxRCxJQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO3dCQUNyQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7NEJBRTVDLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7NEJBQzNELGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzs0QkFFeEksSUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtnQ0FDckMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBOzRCQUNwRixDQUFDLENBQUMsQ0FBQTs0QkFFRixJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0NBQzdDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQTs2QkFDOUM7NEJBRUQsSUFBSSxVQUFVLENBQUMsWUFBWSxFQUFFO2dDQUN6QixDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7NkJBQ3RKO2lDQUFNO2dDQUNILFVBQVUsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFBOzZCQUNySDt3QkFFTCxDQUFDLENBQUMsQ0FBQTtxQkFDTDt5QkFBTTt3QkFDSCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7cUJBQ3RDO2lCQUVKO1lBQ0wsQ0FBQyxDQUFDLENBQUE7WUFDRixPQUFPLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDL0UsQ0FBQyxDQUFBO1FBRUQsNkJBQXdCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxFQUFFO1lBQ3pELE9BQU8sQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQTtZQUN4QyxPQUFPLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyx5RUFBeUU7WUFDNUcsT0FBTyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLHlFQUF5RTtZQUM3RyxPQUFPLENBQUMsYUFBYSxtQ0FDZCxXQUFXLEtBQ2QsV0FBVyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQ3ZCLFdBQVcsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUN6QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQ3pCLFVBQVUsRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUN0RCxDQUFBO1lBQ0QsT0FBTyxPQUFPLENBQUE7UUFDbEIsQ0FBQyxDQUFBO1FBR0Qsb0JBQWUsR0FBRyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxhQUFhLEdBQWEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7WUFDeEQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ25DLENBQUMsQ0FBQTtRQUVELDBCQUEwQjtRQUUxQixjQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDMUMsZUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFaEQscUJBQWdCLEdBQUcsQ0FBQyxZQUFhLEVBQUUsRUFBRTtZQUNqQyxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ25DLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUE7WUFDRixJQUFJLFlBQVk7Z0JBQUUsWUFBWSxJQUFJLENBQUMsMkRBQTJELEdBQUcsWUFBWSxDQUFDLENBQUM7WUFDL0csSUFBSSxZQUFZLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO2dCQUNoRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUM3QztZQUNELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQTtRQUVELGFBQVEsR0FBRyxHQUF3QixFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7UUFFaEUsYUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBcFFuQyxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFrUU8sc0JBQXNCLENBQUMsR0FBVyxFQUFFLEdBQVc7UUFDbkQsTUFBTSxhQUFhLEdBQWEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFDMUQsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxZQUFZLGdCQUFnQixDQUFDLENBQUM7UUFFMUYsSUFBSSxnQkFBZ0IsRUFBRTtZQUNqQixnQkFBcUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzNDO0lBQ0wsQ0FBQztDQUNKLENBQUE7O1lBcFJtQyxpQkFBaUI7WUFDMUIsU0FBUztZQUNSLGlCQUFpQjtZQUNwQixjQUFjO1lBQ1IsY0FBYzs7QUFsQ2hDLGVBQWU7SUFEM0IsVUFBVSxFQUFFO0dBQ0EsZUFBZSxDQWtUM0I7U0FsVFksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaWJlciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL21hcCc7XHJcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvcmUuY29uc3RzJztcclxuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcHJvZHVjdCc7XHJcbmltcG9ydCB7IEZpbHRlck9wdGlvblZhbHVlLCBGaWx0ZXJPcHRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Nob29zZS1vcHRpb25zL2ZpbHRlci1vcHRpb24nO1xyXG5pbXBvcnQgeyBGaWx0ZXJUeXBlLCBGaWx0ZXJFbGVtZW50LCBEZWZhdWx0RmlsdGVyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9maWx0ZXInO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJy4uL3BhZ2luYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENhdGVnb3J5RmlsdGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXJzL0NhdGVnb3J5RmlsdGVyJztcclxuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9vcHRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdHRyaWJ1dGVzRmlsdGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXJzL0F0dHJpYnV0ZXNGaWx0ZXInO1xyXG5pbXBvcnQgeyBEeW5hbWljc0ZpbHRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVycy9EaW5hbXljc0ZpbHRlcic7XHJcbmltcG9ydCB7IFNvcnRGaWx0ZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlcnMvU29ydEZpbHRlcic7XHJcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVycy9GaWx0ZXInO1xyXG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL2NhdGNoJztcclxuaW1wb3J0IHsgUGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGFyYW1zSW50ZXJmYWNlcy9wYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50JztcclxuaW1wb3J0IHsgRmlsdGVyc1NlcnZpY2UgfSBmcm9tICcuLi9maWx0ZXJzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcmljZVJhbmdlRmlsdGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXJzL1ByaWNlUmFuZ2VGaWx0ZXInO1xyXG5cclxuXHJcbi8vIEdldCBwcm9kdWN0IGZyb20gTG9jYWxzdG9yYWdlXHJcbmxldCBwcm9kdWN0czogYW55ID0ge307XHJcbnR5cGUgb3JkZXJfdHlwZSA9ICdhc2MnIHwgJ2Rlc2MnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdHNTZXJ2aWNlIHtcclxuXHJcbiAgICAvKiogQVRUUklCVVRFUyAqL1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIHByb2R1Y3RzU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3RbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcclxuICAgIHByaXZhdGUgZmlsdGVyc1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcclxuICAgIHByaXZhdGUgZmlsdGVyc0luVmlld1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJFbGVtZW50PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbClcclxuXHJcbiAgICBwdWJsaWMgY3VycmVuY3kgPSAnVVNEJztcclxuICAgIHB1YmxpYyBjYXRhbG9nTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHByb2R1Y3RzJCA9IHRoaXMucHJvZHVjdHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHVibGljIGZpbHRlcnMkID0gdGhpcy5maWx0ZXJzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgIHB1YmxpYyBmaWx0ZXJzSW5WaWV3JCA9IHRoaXMuZmlsdGVyc0luVmlld1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJpdmF0ZSBzZWFyY2hfdmFsdWU6IFN0cmluZztcclxuXHJcbiAgICAvKiogQVBJUyAqL1xyXG5cclxuICAgIGxhdGVzdFByb2R1Y3RzQnlDYXRlZ29yeUFwaSA9IChjYXRlZ29yeSkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3RheG9uLXByb2R1Y3RzL2J5LWNvZGUvJyArIGNhdGVnb3J5O1xyXG4gICAgbGF0ZXN0UHJvZHVjdHNBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvcHJvZHVjdC1sYXRlc3QvJztcclxuICAgIHNwZWNpZmljUHJvZHVjdEFwaSA9IChjb2RlLCB2YXJpYW50KSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvcHJvZHVjdHMvYnktY29kZS8nICsgKHZhcmlhbnQgPyAndmFyaWFudC8nIDogJycpICsgY29kZSArICc/bG9jYWxlPScgKyB0aGlzLmNvbnN0YW50cy5nZXRMb2NhbGUoKTtcclxuICAgIHByb2R1Y3RzQnlTcGVjaWFsTWFya0FwaSA9IChzcGVjaWFsbWFyaykgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRWZXJzaW9uKCkgKyAnLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3NwZWNpYWwtbWFya3MvJyArIHNwZWNpYWxtYXJrICsgJy9wcm9kdWN0cy8nO1xyXG4gICAgcmVsYXRlZFByb2R1Y3RzQXBpID0gKGtleSkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3Byb2R1Y3RzL3JlbGF0ZWQvYnktY29kZS8nICsga2V5ICsgJz9sb2NhbGU9JyArIHRoaXMuY29uc3RhbnRzLmdldExvY2FsZSgpO1xyXG4gICAgcHJvZHVjdFZhcmlhbnRBcGkgPSAoY29kZSkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3Byb2R1Y3RzL2J5LWNvZGUvdmFyaWFudC8nICsgY29kZTtcclxuICAgIGxhdGVzdFByb2R1Y3RzQnlBdHRyaWJ1dGVBcGkgPSAoYXR0cmlidXRlKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvcHJvZHVjdHMvYnktYXR0cmlidXRlLycgKyBhdHRyaWJ1dGU7XHJcbiAgICBwcm9kdWN0U2VhcmNoQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3Byb2R1Y3Qtc2VhcmNoLyc7XHJcbiAgICBjbXNSZWxhdGVkUHJvZHVjdHNBcGkgPSAocGFnZSkgPT4gJ2Ntcy8nICsgdGhpcy5jb25zdGFudHMuZ2V0TG9jYWxlKCkgKyAnLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3BhZ2UvJyArIHBhZ2UgKyAnL3Byb2R1Y3QtcmVsYXRlZCc7XHJcbiAgICBwcm9kdWN0c0ZpbHRlckFwaSA9IChmaWx0ZXJzID0gJycpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy9wcm9kdWN0LXNlYXJjaC8nICsgJz9sb2NhbGU9JyArIHRoaXMuY29uc3RhbnRzLmdldExvY2FsZSgpICsgZmlsdGVycztcclxuICAgIHNhdmVQcm9kdWN0UmV2aWV3c0FwaSA9IChjb2RlKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvcHJvZHVjdHMvYnktY29kZS8nICsgY29kZSArICcvcmV2aWV3cyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNvbnN0YW50czogQ29uc3RhbnRzLFxyXG4gICAgICAgIHByaXZhdGUgcGFnaW5hdGlvbjogUGFnaW5hdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgZmlsdGVyc1NlcnZpY2U6IEZpbHRlcnNTZXJ2aWNlKSB7XHJcbiAgICAgICAgLy8gU3VzY3JpYmlyc2UgYSBsb3MgY2FtYmlvcyBlbiBlbCByYW5nbyBkZSBwcmVjaW9zXHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnByaWNlUmFuZ2UkLnN1YnNjcmliZShyYW5nZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJpY2VSYW5nZUZpbHRlcihyYW5nZS5wcmljZV9taW4sIHJhbmdlLnByaWNlX21heCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEZVTkNUSU9OUyAqL1xyXG5cclxuICAgIGdldExhdGVzdFByb2R1Y3RzID0gKGxpbWl0OiBzdHJpbmcgPSAnMCcpOiBPYnNlcnZhYmxlPGFueT4gPT5cclxuICAgICAgICBsaW1pdCA9PSAnMCcgPyB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMubGF0ZXN0UHJvZHVjdHNBcGkoKSkgOlxyXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0V2l0aExpbWl0KHRoaXMubGF0ZXN0UHJvZHVjdHNBcGkoKSwgbGltaXQpO1xyXG5cclxuICAgIGdldExhdGVzdFByb2R1Y3RzQnlDYXRlZ29yeSA9IChjYXRlZ29yeTogc3RyaW5nLCBsaW1pdDogc3RyaW5nID0gJzAnKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgbGltaXQgPT0gJzAnID8gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmxhdGVzdFByb2R1Y3RzQnlDYXRlZ29yeUFwaShjYXRlZ29yeSkpIDpcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldFdpdGhMaW1pdCh0aGlzLmxhdGVzdFByb2R1Y3RzQnlDYXRlZ29yeUFwaShjYXRlZ29yeSksIGxpbWl0KTtcclxuXHJcbiAgICBnZXRQYWdpbmF0ZWQgPSAobGltaXQ6IHN0cmluZywgcGFnZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldFBhZ2luYXRlZCh0aGlzLmxhdGVzdFByb2R1Y3RzQXBpKCksIGxpbWl0LCBwYWdlKTtcclxuXHJcbiAgICBnZXRTcGVjaWZpY1Byb2R1Y3QgPSAoY29kZTogc3RyaW5nLCB2YXJpYW50OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnNwZWNpZmljUHJvZHVjdEFwaShjb2RlLCB2YXJpYW50KSk7XHJcblxyXG4gICAgZ2V0UHJvZHVjdHNCeVNwZWNpYWxNYXJrID0gKHNwZWNpYWxtYXJrLCBsaW1pdDogc3RyaW5nID0gJzAnKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgbGltaXQgPT0gJzAnID8gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnByb2R1Y3RzQnlTcGVjaWFsTWFya0FwaShzcGVjaWFsbWFyaykpIDpcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldFdpdGhMaW1pdCh0aGlzLnByb2R1Y3RzQnlTcGVjaWFsTWFya0FwaShzcGVjaWFsbWFyayksIGxpbWl0KTtcclxuXHJcbiAgICBnZXRSZWxhdGVkUHJvZHVjdHMgPSAoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT5cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMucmVsYXRlZFByb2R1Y3RzQXBpKGtleSkpO1xyXG5cclxuICAgIGdldFByb2R1Y3RWYXJpYW50ID0gKGNvZGU6IHN0cmluZykgPT5cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMucHJvZHVjdFZhcmlhbnRBcGkoY29kZSkpO1xyXG5cclxuICAgIGdldGxhdGVzdFByb2R1Y3RzQnlBdHRyaWJ1dGUgPSAoYXR0cmlidXRlKSA9PlxyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5sYXRlc3RQcm9kdWN0c0J5QXR0cmlidXRlQXBpKGF0dHJpYnV0ZSkpO1xyXG5cclxuICAgIGdldFNlYXJjaGVkUHJvZHVjdHMgPSAoY29udGVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvZHVjdHNTdWJqZWN0Lm5leHQoW10pO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5pbml0aWFsaXplKHRoaXMuZ2VuZXJhdGVGaW5hbEFwaShjb250ZW50KSwgcHJvZHVjdHM/LmxpbWl0IHx8IDgpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5wYWdpbmF0aW9uLm5leHQuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICByZXMgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChyZXMpLFxyXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChudWxsKVxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBnZXRDTVNSZWxhdGVkUHJvZHVjdHMgPSAocGFnZSkgPT5cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuY21zUmVsYXRlZFByb2R1Y3RzQXBpKHBhZ2UpKS5jYXRjaCgoZXJyKSA9PiBvZihudWxsKSk7XHJcblxyXG4gICAgZ2V0UHJvZHVjdHNTZWFyY2hlZCA9IChzZWFyY2hfdmFsdWUsIGZpbHRlcnM/OiBGaWx0ZXJUeXBlW10pID0+IHtcclxuICAgICAgICB0aGlzLmdldFByb2R1Y3RzRm9yRmlsdGVyKG51bGwsIGZpbHRlcnMsIHNlYXJjaF92YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gR3VhcmRhIGxhIHJlc2XDsWEgZGUgdW4gcHJvZHVjdG8uXHJcbiAgICAgKiBAcGFyYW0gY29kZVxyXG4gICAgICogQHBhcmFtIGZvcm1fZGF0YVxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgc2F2ZVJldmlld3MgPSAoY29kZTogc3RyaW5nLCBmb3JtX2RhdGE6IGFueSkgPT4gdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy5zYXZlUHJvZHVjdFJldmlld3NBcGkoY29kZSksIGZvcm1fZGF0YSlcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwYXJhbSBwcm9kdWN0c1xyXG4gICAgICogQHBhcmFtIGZpbHRlcnNcclxuICAgICAqIEBwYXJhbSBzZWFyY2hfdmFsdWVcclxuICAgICAqIEBwYXJhbSBkZWZhdWx0RmlsdGVyc1xyXG4gICAgICovXHJcbiAgICBnZXRQcm9kdWN0c0ZvckZpbHRlciA9IChwcm9kdWN0cz86IHsgdHlwZT86IHN0cmluZywgdmFsdWU/OiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyLCBsYXRlc3Q/OiBib29sZWFuIH0sIGZpbHRlcnM/OiBGaWx0ZXJUeXBlW10sIHNlYXJjaF92YWx1ZT8sIGRlZmF1bHRGaWx0ZXJzPzogRGVmYXVsdEZpbHRlcltdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChbXSk7XHJcbiAgICAgICAgc2VhcmNoX3ZhbHVlID8gdGhpcy5zZWFyY2hfdmFsdWUgPSBzZWFyY2hfdmFsdWUgOiB0aGlzLnNlYXJjaF92YWx1ZSA9ICcnO1xyXG4gICAgICAgIGZpbHRlcnMgJiYgdGhpcy5zZXRGaWx0ZXJzKHByb2R1Y3RzLCBmaWx0ZXJzLCBkZWZhdWx0RmlsdGVycyk7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLmluaXRpYWxpemUodGhpcy5nZW5lcmF0ZUZpbmFsQXBpKHNlYXJjaF92YWx1ZSksIHByb2R1Y3RzPy5saW1pdCB8fCA4KTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiAmJiB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5wYWdpbmF0aW9uLm5leHQuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICByZXMgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChyZXMpLFxyXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChudWxsKVxyXG4gICAgICAgIClcclxuICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlLnNvbWUoZmlsdGVyID0+IGZpbHRlci50eXBlKCkgPT0gJ2R5bmFtaWNzJylcclxuICAgICAgICAgICAgPyB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCh0aGlzLnVwZGF0ZUR5bmFtaWNGaWx0ZXJzKVxyXG4gICAgICAgICAgICA6IHRoaXMucGFnaW5hdGlvbi5nZXROZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RmlsdGVycyA9IChwcm9kdWN0cywgZmlsdGVyczogRmlsdGVyVHlwZVtdLCBkZWZhdWx0RmlsdGVycz86IERlZmF1bHRGaWx0ZXJbXSkgPT4ge1xyXG4gICAgICAgIGxldCBmaW5hbF9maWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xyXG4gICAgICAgIGlmIChmaWx0ZXJzPy5pbmNsdWRlcygnYWxsJykpIGZpbHRlcnMgPSBbJ2F0dHJpYnV0ZXMnLCAnY2F0ZWdvcnknLCAnZHluYW1pY3MnLCAncHJpY2VfcmFuZ2UnLCAnc29ydCddO1xyXG4gICAgICAgIGZpbHRlcnM/LmZvckVhY2goZmlsdGVyID0+IGZpbmFsX2ZpbHRlcnMucHVzaCh0aGlzLmdldEZpbHRlckluc3RhbmNlKGZpbHRlciwgcHJvZHVjdHMpKSk7XHJcbiAgICAgICAgZGVmYXVsdEZpbHRlcnM/LmZvckVhY2goZmlsdGVyRGVmYXVsdCA9PiB7XHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXIgPSBmaW5hbF9maWx0ZXJzLmZpbmQoZmlsdGVyID0+IGZpbHRlci50eXBlKCkgPT0gZmlsdGVyRGVmYXVsdC5maWx0ZXJfdHlwZSk7XHJcbiAgICAgICAgICAgIGZpbHRlciAmJiBmaWx0ZXJEZWZhdWx0LmNvZGVzLmZvckVhY2godmFsdWUgPT4gZmlsdGVyLnNldFNlbGVjdGVkKHZhbHVlKSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsdGVySW5zdGFuY2UgPSAoZmlsdGVyOiBzdHJpbmcsIHByb2R1Y3RzPyk6IEZpbHRlciA9PiB7XHJcbiAgICAgICAgbGV0IGluc3RhbmNlOiBGaWx0ZXI7XHJcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIpIHtcclxuICAgICAgICAgICAgY2FzZSAnY2F0ZWdvcnknOiBpbnN0YW5jZSA9IG5ldyBDYXRlZ29yeUZpbHRlcih0aGlzLm9wdGlvbnMuY2F0ZWdvcmllcywgdGhpcy5vcHRpb25zLmdlbmVyYXRlTWVudSwgcHJvZHVjdHMgPyAocHJvZHVjdHMudHlwZSA9PSAnY2F0ZWdvcmllcycgJiYgcHJvZHVjdHMudmFsdWUpIDogbnVsbCk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdhdHRyaWJ1dGVzJzogaW5zdGFuY2UgPSBuZXcgQXR0cmlidXRlc0ZpbHRlcih0aGlzLm9wdGlvbnMuYXR0cmlidXRlcywgdGhpcy5vcHRpb25zLmdlbmVyYXRlTWVudSwgcHJvZHVjdHMgPyAocHJvZHVjdHMudHlwZSA9PSAnYXR0cmlidXRlcycgJiYgcHJvZHVjdHMudmFsdWUpIDogbnVsbCk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdzb3J0JzogaW5zdGFuY2UgPSBuZXcgU29ydEZpbHRlcih0aGlzLmNvbnN0YW50cyk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdkeW5hbWljcyc6IGluc3RhbmNlID0gbmV3IER5bmFtaWNzRmlsdGVyKCk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdwcmljZV9yYW5nZSc6IGluc3RhbmNlID0gbmV3IFByaWNlUmFuZ2VGaWx0ZXIoKTsgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbnN0YW5jZTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVEeW5hbWljRmlsdGVycyA9IChyZXF1ZXN0KSA9PiB7XHJcbiAgICAgICAgaWYgKCFyZXF1ZXN0Lm9wdGlvbnMpIHJldHVybjtcclxuICAgICAgICBsZXQgZmluYWxfZmlsdGVyczogRmlsdGVyW10gPSB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlO1xyXG4gICAgICAgIGxldCBpbmRleCA9IGZpbmFsX2ZpbHRlcnMuZmluZEluZGV4KGZpbHRlciA9PiBmaWx0ZXIudHlwZSgpID09ICdkeW5hbWljcycpO1xyXG4gICAgICAgIGluZGV4ICYmIGZpbmFsX2ZpbHRlcnNbaW5kZXhdLnNldENvbnRlbnQocmVxdWVzdC5vcHRpb25zKTtcclxuICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TmV4dCA9ICgpOiBib29sZWFuID0+ICF0aGlzLnBhZ2luYXRpb24uaXNGaW5pc2hlZCgpICYmIHRoaXMucGFnaW5hdGlvbi5nZXROZXh0KCk7XHJcblxyXG4gICAgc2V0RmlsdGVyU2VsZWN0ZWQgPSAoZmlsdGVyT2JqOiBGaWx0ZXIsIGZpbHRlckVsZW06IEZpbHRlckVsZW1lbnQpID0+IHtcclxuICAgICAgICBsZXQgZmluYWxfZmlsdGVyczogRmlsdGVyW10gPSB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlO1xyXG4gICAgICAgIGlmIChmaWx0ZXJPYmoudHlwZSgpICE9PSAncHJpY2VfcmFuZ2UnKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IGZpbmFsX2ZpbHRlcnMuZmluZEluZGV4KGZpbHRlciA9PiBmaWx0ZXIudHlwZSgpID09IGZpbHRlck9iai50eXBlKCkpO1xyXG4gICAgICAgICAgICBmaW5hbF9maWx0ZXJzW2luZGV4XS5zZXRTZWxlY3RlZChmaWx0ZXJFbGVtLCBmaWx0ZXJFbGVtLnZhbHVlKTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBFc3RhIHBhcnRlIGRlbCBjb2RpZ28gbG8gcXVlIGhhY2UgZXMgY2hlcXVlYXIgc2Ugc2VhIHVuIGZpbHRybyBkZSBsYSB2aXN0YSwgcGFyYSBjYXJnYXIgZWwgb2JzZXJ2YWJsZVxyXG4gICAgICAgICAgICAgKiBjb24gbG9zIGRhdG9zIGRlbCBtaXNtby4gRGUgbG8gY29udHJhcmlvIHNlIGxvIGNhcmdhIGNvbiBudWxsLiBFc3RlIG9ic2VydmFibGUgZXN0YSBoZWNobyBwYXJhIHF1ZSBlbiBjb2xsZWN0aW9uIHNlXHJcbiAgICAgICAgICAgICAqIHB1ZWRhIGRldGVjdGFyIHNpIGVzIG5lY2VzYXJpbyBoYWNlciB1biBmaWx0cmFkbyBlbiBsYSB2aXN0YS5cclxuICAgICAgICAgICAgICogQWNsYXJhY2nDs246IGhhY2VyIGVzdGUgdGlwbyBkZSBmaWx0cmFkb3MgZXN0YSBtYWwsIHNpIGNyZWNlIG11Y2hvIGxhIHBlcmZvcm1hbmNlIHZhIGEgYmFqYXIsIGxvIGlkZWFsIHNlcmlhIHF1ZVxyXG4gICAgICAgICAgICAgKiBkZXNkZSBiYWNrZW5kIHNlIHB1ZWRhbiBwcm92ZWVyIGVuZHBvaW50cyBwYXJhIHBvZGVyIGZpbHRyYXIgc29icmUgbG9zIGNhbXBvcyBkZXNlYWRvcyB5IG1hbnRlbmVyIGxhIG1pc21hIGxvZ2ljYSBjb25cclxuICAgICAgICAgICAgICogbGEgcXVlIHNlIHZpZW5lIHRyYWJhamFuZG8uXHJcbiAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIChmaWx0ZXJFbGVtLm5vVXJsICE9IHVuZGVmaW5lZCAmJiBmaWx0ZXJFbGVtLm5vVXJsKSA/IHRoaXMuZmlsdGVyc0luVmlld1N1YmplY3QubmV4dChmaWx0ZXJFbGVtKSA6IHRoaXMuZmlsdGVyc0luVmlld1N1YmplY3QubmV4dChudWxsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmlsdGVyc1N1YmplY3QubmV4dChmaW5hbF9maWx0ZXJzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVByb2R1Y3RzRm9yRmlsdGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUHJvZHVjdHNGb3JGaWx0ZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLndhaXRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucHJvZHVjdHNTdWJqZWN0Lm5leHQoW10pO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5pbml0aWFsaXplKHRoaXMuc2VhcmNoX3ZhbHVlID8gdGhpcy5nZW5lcmF0ZUZpbmFsQXBpKHRoaXMuc2VhcmNoX3ZhbHVlKSA6IHRoaXMuZ2VuZXJhdGVGaW5hbEFwaSgpKTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCgpO1xyXG4gICAgICAgIC8vIFNJIFNFIEFDVFVBTElaQVJBTiBMT1MgRklMVFJPUyBESU5BTUlDT1MgRU4gRUwgRlVUVVJPXHJcbiAgICAgICAgLy8gbGV0IGZpbHRlcnNPYmogPSB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlO1xyXG4gICAgICAgIC8vIGZpbHRlcnNPYmouc29tZShmaWx0ZXIgPT4gZmlsdGVyLnR5cGUoKSA9PSAnZHluYW1pY3MnKVxyXG4gICAgICAgIC8vICAgICAgPyB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCh0aGlzLnVwZGF0ZUR5bmFtaWNGaWx0ZXJzKVxyXG4gICAgICAgIC8vICAgICAgOiB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwcm9kdWN0cyAgQXJyYXkuIExpc3RhIGRlIHByb2R1Y3Rvcy5cclxuICAgICAqIEBwYXJhbSB3aXRoT3B0aW9uICd0eXBlJyB0aXBvIGRlIG9wY2nDs24sIGNvZGU6IGPDs2RpZ28gZGUgbGEgb3BjacOzbi4gJ2RlZmF1bHRGaXJzdE9wdGlvbic6IGVuIGNhc28gZGUgcXVlIG5vIHNlIHB1ZWRhIGRlc2RvYmxhciBwb3IgbGEgb3BjacOzbiBpbmRpY2FkYSBzaSBlbCB2YWxvciBlcyB2ZXJkYWRlcm8gc2UgaW50ZW50YXJhIGRlc2RvYmxhciBwb3IgbGEgcHJpbWVyYSBvcGNpw7NuIGFzb2NpYWRhIGFsIHByb2R1Y3RvLlxyXG4gICAgICogJ2NoZWNrSWZTdG9jayc6IGVuIGNhc28gZGUgcXVlIGVzdGEgdmFsb3Igc2VhIHZlcmRhZGVybyBzZSByZWFsaXphIHVuIGNvbnRyb2wgZGUgcXVlIGxhIHZhcmlhbnRlcyBjdWVudGVuIGNvbiBzdG9jayBwYXJhIHNlciB1biBwcm9kdWN0byBkZXNkb2JsYWRvIHBvciBsYSB2YXJpYW50ZSwgc2kgZWwgdmFsb3IgZXMgZmFsc28gbm8gc2UgcmVhbGl6YSBkaWNobyBjb250cm9sIHkgZWwgcHJvZHVjdG8gc2UgZGVzZG9ibGFyYSBjb24gc3RvY2sgZW4gMC5cclxuICAgICAqIEByZXR1cm5zIGFycmVnbG8gY29uIGxvcyBwcm9kdWN0b3MgZGVzZG9ibGFkb3MgcG9yIGxhIG9wY2nDs24gc29saWNpdGFkYS5cclxuICAgICAqIChvcGNpw7NuIHBvciBkZWZlY3RvIHF1ZSBzZSBpbnRlbnRhIGhhY2VyIGVsIGRlc2RvYmxhbWllbnRvICdjb2xvcicsIG8gYmllbiBzaSBlbiBsZSBwYXLDoW1ldHJvIHdpdGhPcHRpb24gZWwgYXRyaWJ1dG8gJ2RlZmF1bHRGaXJzdE9wdGlvbicgZXMgdmVyZGFkZXJvIHNlIGRlc2RvYmxhIHBvciBsYSBwcmltZXJhIG9wY2nDs24gYXNvY2lhZGEgYWwgcHJvZHVjdG8gKVxyXG4gICAgICpcclxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWNpYmUgdW5hIGxpc3RhIGRlIHByb2R1Y3RvcyB5IHJldG9ybmEgbG9zIG1pc21vcyBwcm9kdWN0b3MgdGFudGFzIHZlY2VzIGNvbW8gdmFyaWFudGVzIHRlbmdhLlxyXG4gICAgICogY2FkYSBwcm9kdWN0byByZXRvcm5hZG8gdGVuZHLDoSB1bmEgw7puaWNhIHZhcmlhbnRlLlxyXG4gICAgICovXHJcbiAgICBnZXRQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0gKHByb2R1Y3RzLCB3aXRoT3B0aW9uOiBQYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0geyB0eXBlOiAnY29sb3InLCBjb2RlOiAnY29sb3InLCBkZWZhdWx0Rmlyc3RPcHRpb246IGZhbHNlLCBjaGVja0lmU3RvY2s6IHRydWUgfSkgPT4ge1xyXG5cclxuICAgICAgICAhd2l0aE9wdGlvblsnY29kZSddICYmIHdpdGhPcHRpb25bJ3R5cGUnXSAmJiAod2l0aE9wdGlvblsnY29kZSddID0gd2l0aE9wdGlvblsndHlwZSddKSB8fCAhd2l0aE9wdGlvblsnY29kZSddICYmICh3aXRoT3B0aW9uWydjb2RlJ10gPSAnY29sb3InKVxyXG4gICAgICAgICF3aXRoT3B0aW9uWyd0eXBlJ10gJiYgd2l0aE9wdGlvblsnY29kZSddICYmICh3aXRoT3B0aW9uWyd0eXBlJ10gPSB3aXRoT3B0aW9uWydjb2RlJ10pIHx8ICF3aXRoT3B0aW9uWyd0eXBlJ10gJiYgKHdpdGhPcHRpb25bJ3R5cGUnXSA9ICdjb2xvcicpXHJcbiAgICAgICAgIXdpdGhPcHRpb24uaGFzT3duUHJvcGVydHkoJ2RlZmF1bHRGaXJzdE9wdGlvbicpICYmICh3aXRoT3B0aW9uWydkZWZhdWx0Rmlyc3RPcHRpb24nXSA9IGZhbHNlKVxyXG4gICAgICAgICF3aXRoT3B0aW9uLmhhc093blByb3BlcnR5KCdjaGVja0lmU3RvY2snKSAmJiAod2l0aE9wdGlvblsnY2hlY2tJZlN0b2NrJ10gPSB0cnVlKVxyXG5cclxuICAgICAgICBsZXQgcHJvZHVjdHNVbmlxdWVWYXJpYW50ID0gW107XHJcbiAgICAgICAgcHJvZHVjdHMuZm9yRWFjaChwcm9kdWN0ID0+IHtcclxuICAgICAgICAgICAgbGV0IHZhcmlhbnRzID0gWy4uLnByb2R1Y3Q/LnZhcmlhbnRzXTtcclxuICAgICAgICAgICAgbGV0IG9wdGlvbiA9IHByb2R1Y3Qub3B0aW9ucy5maW5kKG9wdCA9PiBvcHQudHlwZS50b0xvd2VyQ2FzZSgpID09PSB3aXRoT3B0aW9uLnR5cGUudG9Mb3dlckNhc2UoKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAob3B0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWVzLmZvckVhY2gob3B0aW9uVmFsdWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBtb2RpZmllZF9wcm9kdWN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9kdWN0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRfcHJvZHVjdC5vcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvbi50eXBlLnRvTG93ZXJDYXNlKCkgPT0gd2l0aE9wdGlvbi50eXBlLnRvTG93ZXJDYXNlKCkpLnZhbHVlcyA9IFt7IGNvZGU6IG9wdGlvblZhbHVlLmNvZGUsIG5hbWU6IG9wdGlvblZhbHVlLm5hbWUgfV07XHJcbiAgICAgICAgICAgICAgICAgICAgLy9idXNjbyB1bmEgdmFyaWFudGUgY29uIGVzZSBjb2RlIHBhcmEgYXNpZ25hcmxlIGxhIGxpc3RhIGRlIGltYWdlbmVzXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhcmlhbnRBdXggPSB2YXJpYW50cy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50ID0+ICgod2l0aE9wdGlvbi5jaGVja0lmU3RvY2sgJiYgdmFyaWFudC5zdG9jayA+IDApIHx8IHdpdGhPcHRpb24uY2hlY2tJZlN0b2NrID09IGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFyaWFudC5vcHRpb25zLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFyaWFudC5vcHRpb25zLnNvbWUob3AgPT4gKG9wLmhhc093blByb3BlcnR5KHdpdGhPcHRpb24uY29kZS50b0xvd2VyQ2FzZSgpKSB8fCBvcC5oYXNPd25Qcm9wZXJ0eSh3aXRoT3B0aW9uLmNvZGUudG9VcHBlckNhc2UoKSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKG9wW3dpdGhPcHRpb24uY29kZS50b0xvd2VyQ2FzZSgpXSB8fCBvcFt3aXRoT3B0aW9uLmNvZGUudG9VcHBlckNhc2UoKV0pID09PSBvcHRpb25WYWx1ZS5jb2RlKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnRBdXggJiYgcHJvZHVjdHNVbmlxdWVWYXJpYW50LnB1c2godGhpcy5wcm9kdWN0V2l0aFZhcmlhbnRWYWx1ZXMobW9kaWZpZWRfcHJvZHVjdCwgdmFyaWFudEF1eCwgb3B0aW9uVmFsdWUpKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAqIHNlIG1vZGlmaWNhIGVsIGNhc28gcGFyYSBjdWFuZG8gc2UgdG9tYSBlbCBwcmltZXIgYG9wdGlvbmAgZGVsIHByb2R1Y3RvIHBhcmFcclxuICAgICAgICAgICAgICAgICAqIGFybWFyIGxhIGxpc3RhIGRlIHByb2R1Y3RvcyBjb24gdmFyaWFudGVzLlxyXG4gICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICBpZiAod2l0aE9wdGlvbi5kZWZhdWx0Rmlyc3RPcHRpb24gJiYgcHJvZHVjdC5vcHRpb25zPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZmlyc3RPcHRpb25zID0gcHJvZHVjdC5vcHRpb25zWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5vcHRpb25zWzBdLnZhbHVlcy5mb3JFYWNoKG9wdGlvblZhbHVlID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb2RpZmllZF9wcm9kdWN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9kdWN0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkX3Byb2R1Y3Qub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24udHlwZSA9PSBmaXJzdE9wdGlvbnMudHlwZSkudmFsdWVzID0gW3sgY29kZTogb3B0aW9uVmFsdWUuY29kZSwgbmFtZTogb3B0aW9uVmFsdWUubmFtZSB9XTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YXJpYW50QXV4ID0gdmFyaWFudHMuZmluZCh2YXJpYW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YXJpYW50Lm9wdGlvbnMuZmluZChlbGVtID0+IGVsZW1bZmlyc3RPcHRpb25zLmNvZGVdID09IG9wdGlvblZhbHVlLmNvZGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFudEF1eCAmJiB2YXJpYW50QXV4LmltYWdlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudEF1eC5pbWFnZXMgPSBwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2l0aE9wdGlvbi5jaGVja0lmU3RvY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YXJpYW50QXV4ICYmIHZhcmlhbnRBdXguc3RvY2sgPiAwKSA/IHByb2R1Y3RzVW5pcXVlVmFyaWFudC5wdXNoKHRoaXMucHJvZHVjdFdpdGhWYXJpYW50VmFsdWVzKG1vZGlmaWVkX3Byb2R1Y3QsIHZhcmlhbnRBdXgsIG9wdGlvblZhbHVlKSkgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudEF1eCAmJiBwcm9kdWN0c1VuaXF1ZVZhcmlhbnQucHVzaCh0aGlzLnByb2R1Y3RXaXRoVmFyaWFudFZhbHVlcyhtb2RpZmllZF9wcm9kdWN0LCB2YXJpYW50QXV4LCBvcHRpb25WYWx1ZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdHNVbmlxdWVWYXJpYW50LnB1c2gocHJvZHVjdClcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiBwcm9kdWN0c1VuaXF1ZVZhcmlhbnQubGVuZ3RoID4gMCA/IHByb2R1Y3RzVW5pcXVlVmFyaWFudCA6IHByb2R1Y3RzO1xyXG4gICAgfVxyXG5cclxuICAgIHByb2R1Y3RXaXRoVmFyaWFudFZhbHVlcyA9IChwcm9kdWN0LCB2YXJpYW50LCBvcHRpb25WYWx1ZSkgPT4ge1xyXG4gICAgICAgIHByb2R1Y3QucGljdHVyZXNkZWZhdWx0ID0gdmFyaWFudC5pbWFnZXNcclxuICAgICAgICBwcm9kdWN0LnZhcmlhbnRfaWQgPSB2YXJpYW50LmNvZGU7IC8vbG8gZGVqbyBhY2EgaGFzdGEgYXNlZ3VyYXJub3MgZGUgcXVlIG5vIHNlIGVzdGFiYSB1c2FuZG8gZW4gb3RyYSBwYXJ0ZS5cclxuICAgICAgICBwcm9kdWN0LnN0b2NrID0gdmFyaWFudC5zdG9jayB8fCAwOyAvL2xvIGRlam8gYWNhIGhhc3RhIGFzZWd1cmFybm9zIGRlIHF1ZSBubyBzZSBlc3RhYmEgdXNhbmRvIGVuIG90cmEgcGFydGUuXHJcbiAgICAgICAgcHJvZHVjdC5jdXJyZW50T3B0aW9uID0ge1xyXG4gICAgICAgICAgICAuLi5vcHRpb25WYWx1ZSxcclxuICAgICAgICAgICAgcHJvZHVjdENvZGU6IHByb2R1Y3QuaWQsXHJcbiAgICAgICAgICAgIHZhcmlhbnRDb2RlOiB2YXJpYW50LmNvZGUsXHJcbiAgICAgICAgICAgIHN0b2NrOiB2YXJpYW50LnN0b2NrIHx8IDAsXHJcbiAgICAgICAgICAgIGZpbmFsUHJpY2U6IHZhcmlhbnQuc2FsZXByaWNlIHx8IHZhcmlhbnQucHJpY2UgfHwgMCxcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RcclxuICAgIH1cclxuXHJcblxyXG4gICAgY2xlYW5BbGxGaWx0ZXJzID0gKCkgPT4ge1xyXG4gICAgICAgIGxldCBmaW5hbF9maWx0ZXJzOiBGaWx0ZXJbXSA9IHRoaXMuZmlsdGVyc1N1YmplY3QudmFsdWU7XHJcbiAgICAgICAgZmluYWxfZmlsdGVycy5mb3JFYWNoKGZpbHRlciA9PiBmaWx0ZXIucmVzZXQoKSk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzU3ViamVjdC5uZXh0KGZpbmFsX2ZpbHRlcnMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlUHJvZHVjdHNGb3JGaWx0ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogVVRJTFMgQU5EIEZJTFRFUklORyAqL1xyXG5cclxuICAgIGlzV2FpdGluZyA9ICgpID0+IHRoaXMucGFnaW5hdGlvbi53YWl0aW5nO1xyXG4gICAgaXNGaW5pc2hlZCA9ICgpID0+IHRoaXMucGFnaW5hdGlvbi5pc0ZpbmlzaGVkKCk7XHJcblxyXG4gICAgZ2VuZXJhdGVGaW5hbEFwaSA9IChzZWFyY2hfdmFsdWU/KSA9PiB7XHJcbiAgICAgICAgbGV0IGV4dHJhX3BhcmFtcyA9ICcnO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyc1N1YmplY3QudmFsdWUuZm9yRWFjaChmaWx0ZXIgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBleHRyYSA9IGZpbHRlci50b1VybFBhcmFtcygpO1xyXG4gICAgICAgICAgICBleHRyYS5zcGxpdCgnPScpWzFdICE9ICcnID8gZXh0cmFfcGFyYW1zICs9IGV4dHJhIDogbnVsbDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmIChzZWFyY2hfdmFsdWUpIGV4dHJhX3BhcmFtcyArPSAoJyZjcml0ZXJpYVtzZWFyY2hdW3R5cGVdPWNvbnRhaW5zJmNyaXRlcmlhW3NlYXJjaF1bdmFsdWVdPScgKyBzZWFyY2hfdmFsdWUpO1xyXG4gICAgICAgIGlmIChleHRyYV9wYXJhbXMgIT0gJycgJiYgIWV4dHJhX3BhcmFtcy5pbmNsdWRlcygnYXR0cmlidXRlQ29kZXMnKSkge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuZ2V0QXR0cmlidXRlczIoZXh0cmFfcGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvZHVjdHNGaWx0ZXJBcGkoZXh0cmFfcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBmaW5pc2hlZCA9ICgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0+IHRoaXMucGFnaW5hdGlvbi5maW5pc2hlZCQ7XHJcblxyXG4gICAgZ2V0VG90YWwgPSAoKSA9PiB0aGlzLnBhZ2luYXRpb24udG90YWw7XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVQcmljZVJhbmdlRmlsdGVyKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikge1xyXG4gICAgICAgIGNvbnN0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gdGhpcy5maWx0ZXJzU3ViamVjdC52YWx1ZTtcclxuICAgICAgICBjb25zdCBwcmljZVJhbmdlRmlsdGVyID0gZmluYWxfZmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIgaW5zdGFuY2VvZiBQcmljZVJhbmdlRmlsdGVyKTtcclxuXHJcbiAgICAgICAgaWYgKHByaWNlUmFuZ2VGaWx0ZXIpIHtcclxuICAgICAgICAgICAgKHByaWNlUmFuZ2VGaWx0ZXIgYXMgUHJpY2VSYW5nZUZpbHRlcikudXBkYXRlUHJpY2VzKG1pbiwgbWF4KTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJzU3ViamVjdC5uZXh0KGZpbmFsX2ZpbHRlcnMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9wcm9kdWN0cy9wcm9kdWN0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTlELE9BQU8seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRzFFLGdDQUFnQztBQUNoQyxJQUFJLFFBQVEsR0FBUSxFQUFFLENBQUM7QUFJdkIsSUFBYSxlQUFlLEdBQTVCLE1BQWEsZUFBZTtJQThCeEIsWUFBb0IsVUFBNkIsRUFDckMsU0FBb0IsRUFDcEIsVUFBNkIsRUFDN0IsT0FBdUIsRUFDeEIsY0FBOEI7UUFKckIsZUFBVSxHQUFWLFVB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LE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sWUFBWSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTFGLElBQUksZ0JBQWdCLEVBQUU7WUFDakIsZ0JBQXFDLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMzQztJQUNMLENBQUM7Q0FDSixDQUFBOztZQXRSbUMsaUJBQWlCO1lBQzFCLFNBQVM7WUFDUixpQkFBaUI7WUFDcEIsY0FBYztZQUNSLGNBQWM7O0FBbENoQyxlQUFlO0lBRDNCLFVBQVUsRUFBRTtHQUNBLGVBQWUsQ0FvVDNCO1NBcFRZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9tYXAnO1xyXG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XHJcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Byb2R1Y3QnO1xyXG5pbXBvcnQgeyBGaWx0ZXJPcHRpb25WYWx1ZSwgRmlsdGVyT3B0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jaG9vc2Utb3B0aW9ucy9maWx0ZXItb3B0aW9uJztcclxuaW1wb3J0IHsgRmlsdGVyVHlwZSwgRmlsdGVyRWxlbWVudCwgRGVmYXVsdEZpbHRlciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZmlsdGVyJztcclxuaW1wb3J0IHsgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tICcuLi9wYWdpbmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXRlZ29yeUZpbHRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVycy9DYXRlZ29yeUZpbHRlcic7XHJcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vb3B0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXR0cmlidXRlc0ZpbHRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVycy9BdHRyaWJ1dGVzRmlsdGVyJztcclxuaW1wb3J0IHsgRHluYW1pY3NGaWx0ZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlcnMvRGluYW15Y3NGaWx0ZXInO1xyXG5pbXBvcnQgeyBTb3J0RmlsdGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXJzL1NvcnRGaWx0ZXInO1xyXG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlcnMvRmlsdGVyJztcclxuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9jYXRjaCc7XHJcbmltcG9ydCB7IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BhcmFtc0ludGVyZmFjZXMvcGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCc7XHJcbmltcG9ydCB7IEZpbHRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vZmlsdGVycy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJpY2VSYW5nZUZpbHRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVycy9QcmljZVJhbmdlRmlsdGVyJztcclxuXHJcblxyXG4vLyBHZXQgcHJvZHVjdCBmcm9tIExvY2Fsc3RvcmFnZVxyXG5sZXQgcHJvZHVjdHM6IGFueSA9IHt9O1xyXG50eXBlIG9yZGVyX3R5cGUgPSAnYXNjJyB8ICdkZXNjJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFByb2R1Y3RzU2VydmljZSB7XHJcblxyXG4gICAgLyoqIEFUVFJJQlVURVMgKi9cclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSBwcm9kdWN0c1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxQcm9kdWN0W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XHJcbiAgICBwcml2YXRlIGZpbHRlcnNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XHJcbiAgICBwcml2YXRlIGZpbHRlcnNJblZpZXdTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8RmlsdGVyRWxlbWVudD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpXHJcblxyXG4gICAgcHVibGljIGN1cnJlbmN5ID0gJ1VTRCc7XHJcbiAgICBwdWJsaWMgY2F0YWxvZ01vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBwcm9kdWN0cyQgPSB0aGlzLnByb2R1Y3RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgIHB1YmxpYyBmaWx0ZXJzJCA9IHRoaXMuZmlsdGVyc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBwdWJsaWMgZmlsdGVyc0luVmlldyQgPSB0aGlzLmZpbHRlcnNJblZpZXdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHByaXZhdGUgc2VhcmNoX3ZhbHVlOiBTdHJpbmc7XHJcblxyXG4gICAgLyoqIEFQSVMgKi9cclxuXHJcbiAgICBsYXRlc3RQcm9kdWN0c0J5Q2F0ZWdvcnlBcGkgPSAoY2F0ZWdvcnkpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy90YXhvbi1wcm9kdWN0cy9ieS1jb2RlLycgKyBjYXRlZ29yeTtcclxuICAgIGxhdGVzdFByb2R1Y3RzQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3Byb2R1Y3QtbGF0ZXN0Lyc7XHJcbiAgICBzcGVjaWZpY1Byb2R1Y3RBcGkgPSAoY29kZSwgdmFyaWFudCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3Byb2R1Y3RzL2J5LWNvZGUvJyArICh2YXJpYW50ID8gJ3ZhcmlhbnQvJyA6ICcnKSArIGNvZGUgKyAnP2xvY2FsZT0nICsgdGhpcy5jb25zdGFudHMuZ2V0TG9jYWxlKCk7XHJcbiAgICBwcm9kdWN0c0J5U3BlY2lhbE1hcmtBcGkgPSAoc3BlY2lhbG1hcmspID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdGFudHMuZ2V0VmVyc2lvbigpICsgJy8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy9zcGVjaWFsLW1hcmtzLycgKyBzcGVjaWFsbWFyayArICcvcHJvZHVjdHMvJztcclxuICAgIHJlbGF0ZWRQcm9kdWN0c0FwaSA9IChrZXkpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy9wcm9kdWN0cy9yZWxhdGVkL2J5LWNvZGUvJyArIGtleSArICc/bG9jYWxlPScgKyB0aGlzLmNvbnN0YW50cy5nZXRMb2NhbGUoKTtcclxuICAgIHByb2R1Y3RWYXJpYW50QXBpID0gKGNvZGUpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy9wcm9kdWN0cy9ieS1jb2RlL3ZhcmlhbnQvJyArIGNvZGU7XHJcbiAgICBsYXRlc3RQcm9kdWN0c0J5QXR0cmlidXRlQXBpID0gKGF0dHJpYnV0ZSkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3Byb2R1Y3RzL2J5LWF0dHJpYnV0ZS8nICsgYXR0cmlidXRlO1xyXG4gICAgcHJvZHVjdFNlYXJjaEFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy9wcm9kdWN0LXNlYXJjaC8nO1xyXG4gICAgY21zUmVsYXRlZFByb2R1Y3RzQXBpID0gKHBhZ2UpID0+ICdjbXMvJyArIHRoaXMuY29uc3RhbnRzLmdldExvY2FsZSgpICsgJy8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy9wYWdlLycgKyBwYWdlICsgJy9wcm9kdWN0LXJlbGF0ZWQnO1xyXG4gICAgcHJvZHVjdHNGaWx0ZXJBcGkgPSAoZmlsdGVycyA9ICcnKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvcHJvZHVjdC1zZWFyY2gvJyArICc/bG9jYWxlPScgKyB0aGlzLmNvbnN0YW50cy5nZXRMb2NhbGUoKSArIGZpbHRlcnM7XHJcbiAgICBzYXZlUHJvZHVjdFJldmlld3NBcGkgPSAoY29kZSkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3Byb2R1Y3RzL2J5LWNvZGUvJyArIGNvZGUgKyAnL3Jldmlld3MnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjb25zdGFudHM6IENvbnN0YW50cyxcclxuICAgICAgICBwcml2YXRlIHBhZ2luYXRpb246IFBhZ2luYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgb3B0aW9uczogT3B0aW9uc1NlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGZpbHRlcnNTZXJ2aWNlOiBGaWx0ZXJzU2VydmljZSkge1xyXG4gICAgICAgIC8vIFN1c2NyaWJpcnNlIGEgbG9zIGNhbWJpb3MgZW4gZWwgcmFuZ28gZGUgcHJlY2lvc1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5wcmljZVJhbmdlJC5zdWJzY3JpYmUocmFuZ2UgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbWluID0gTWF0aC5mbG9vcihyYW5nZS5wcmljZV9taW4pO1xyXG4gICAgICAgICAgICBsZXQgbWF4ID0gTWF0aC5jZWlsKHJhbmdlLnByaWNlX21heCk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJpY2VSYW5nZUZpbHRlcihtaW4sIG1heCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEZVTkNUSU9OUyAqL1xyXG5cclxuICAgIGdldExhdGVzdFByb2R1Y3RzID0gKGxpbWl0OiBzdHJpbmcgPSAnMCcpOiBPYnNlcnZhYmxlPGFueT4gPT5cclxuICAgICAgICBsaW1pdCA9PSAnMCcgPyB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMubGF0ZXN0UHJvZHVjdHNBcGkoKSkgOlxyXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0V2l0aExpbWl0KHRoaXMubGF0ZXN0UHJvZHVjdHNBcGkoKSwgbGltaXQpO1xyXG5cclxuICAgIGdldExhdGVzdFByb2R1Y3RzQnlDYXRlZ29yeSA9IChjYXRlZ29yeTogc3RyaW5nLCBsaW1pdDogc3RyaW5nID0gJzAnKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgbGltaXQgPT0gJzAnID8gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmxhdGVzdFByb2R1Y3RzQnlDYXRlZ29yeUFwaShjYXRlZ29yeSkpIDpcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldFdpdGhMaW1pdCh0aGlzLmxhdGVzdFByb2R1Y3RzQnlDYXRlZ29yeUFwaShjYXRlZ29yeSksIGxpbWl0KTtcclxuXHJcbiAgICBnZXRQYWdpbmF0ZWQgPSAobGltaXQ6IHN0cmluZywgcGFnZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldFBhZ2luYXRlZCh0aGlzLmxhdGVzdFByb2R1Y3RzQXBpKCksIGxpbWl0LCBwYWdlKTtcclxuXHJcbiAgICBnZXRTcGVjaWZpY1Byb2R1Y3QgPSAoY29kZTogc3RyaW5nLCB2YXJpYW50OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnNwZWNpZmljUHJvZHVjdEFwaShjb2RlLCB2YXJpYW50KSk7XHJcblxyXG4gICAgZ2V0UHJvZHVjdHNCeVNwZWNpYWxNYXJrID0gKHNwZWNpYWxtYXJrLCBsaW1pdDogc3RyaW5nID0gJzAnKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgbGltaXQgPT0gJzAnID8gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnByb2R1Y3RzQnlTcGVjaWFsTWFya0FwaShzcGVjaWFsbWFyaykpIDpcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldFdpdGhMaW1pdCh0aGlzLnByb2R1Y3RzQnlTcGVjaWFsTWFya0FwaShzcGVjaWFsbWFyayksIGxpbWl0KTtcclxuXHJcbiAgICBnZXRSZWxhdGVkUHJvZHVjdHMgPSAoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT5cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMucmVsYXRlZFByb2R1Y3RzQXBpKGtleSkpO1xyXG5cclxuICAgIGdldFByb2R1Y3RWYXJpYW50ID0gKGNvZGU6IHN0cmluZykgPT5cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMucHJvZHVjdFZhcmlhbnRBcGkoY29kZSkpO1xyXG5cclxuICAgIGdldGxhdGVzdFByb2R1Y3RzQnlBdHRyaWJ1dGUgPSAoYXR0cmlidXRlKSA9PlxyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5sYXRlc3RQcm9kdWN0c0J5QXR0cmlidXRlQXBpKGF0dHJpYnV0ZSkpO1xyXG5cclxuICAgIGdldFNlYXJjaGVkUHJvZHVjdHMgPSAoY29udGVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvZHVjdHNTdWJqZWN0Lm5leHQoW10pO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5pbml0aWFsaXplKHRoaXMuZ2VuZXJhdGVGaW5hbEFwaShjb250ZW50KSwgcHJvZHVjdHM/LmxpbWl0IHx8IDgpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5wYWdpbmF0aW9uLm5leHQuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICByZXMgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChyZXMpLFxyXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChudWxsKVxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBnZXRDTVNSZWxhdGVkUHJvZHVjdHMgPSAocGFnZSkgPT5cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuY21zUmVsYXRlZFByb2R1Y3RzQXBpKHBhZ2UpKS5jYXRjaCgoZXJyKSA9PiBvZihudWxsKSk7XHJcblxyXG4gICAgZ2V0UHJvZHVjdHNTZWFyY2hlZCA9IChzZWFyY2hfdmFsdWUsIGZpbHRlcnM/OiBGaWx0ZXJUeXBlW10pID0+IHtcclxuICAgICAgICB0aGlzLmdldFByb2R1Y3RzRm9yRmlsdGVyKG51bGwsIGZpbHRlcnMsIHNlYXJjaF92YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gR3VhcmRhIGxhIHJlc2XDsWEgZGUgdW4gcHJvZHVjdG8uXHJcbiAgICAgKiBAcGFyYW0gY29kZVxyXG4gICAgICogQHBhcmFtIGZvcm1fZGF0YVxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgc2F2ZVJldmlld3MgPSAoY29kZTogc3RyaW5nLCBmb3JtX2RhdGE6IGFueSkgPT4gdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy5zYXZlUHJvZHVjdFJldmlld3NBcGkoY29kZSksIGZvcm1fZGF0YSlcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwYXJhbSBwcm9kdWN0c1xyXG4gICAgICogQHBhcmFtIGZpbHRlcnNcclxuICAgICAqIEBwYXJhbSBzZWFyY2hfdmFsdWVcclxuICAgICAqIEBwYXJhbSBkZWZhdWx0RmlsdGVyc1xyXG4gICAgICovXHJcbiAgICBnZXRQcm9kdWN0c0ZvckZpbHRlciA9IChwcm9kdWN0cz86IHsgdHlwZT86IHN0cmluZywgdmFsdWU/OiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyLCBsYXRlc3Q/OiBib29sZWFuIH0sIGZpbHRlcnM/OiBGaWx0ZXJUeXBlW10sIHNlYXJjaF92YWx1ZT8sIGRlZmF1bHRGaWx0ZXJzPzogRGVmYXVsdEZpbHRlcltdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChbXSk7XHJcbiAgICAgICAgc2VhcmNoX3ZhbHVlID8gdGhpcy5zZWFyY2hfdmFsdWUgPSBzZWFyY2hfdmFsdWUgOiB0aGlzLnNlYXJjaF92YWx1ZSA9ICcnO1xyXG4gICAgICAgIGZpbHRlcnMgJiYgdGhpcy5zZXRGaWx0ZXJzKHByb2R1Y3RzLCBmaWx0ZXJzLCBkZWZhdWx0RmlsdGVycyk7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLmluaXRpYWxpemUodGhpcy5nZW5lcmF0ZUZpbmFsQXBpKHNlYXJjaF92YWx1ZSksIHByb2R1Y3RzPy5saW1pdCB8fCA4KTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiAmJiB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5wYWdpbmF0aW9uLm5leHQuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICByZXMgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChyZXMpLFxyXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChudWxsKVxyXG4gICAgICAgIClcclxuICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlLnNvbWUoZmlsdGVyID0+IGZpbHRlci50eXBlKCkgPT0gJ2R5bmFtaWNzJylcclxuICAgICAgICAgICAgPyB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCh0aGlzLnVwZGF0ZUR5bmFtaWNGaWx0ZXJzKVxyXG4gICAgICAgICAgICA6IHRoaXMucGFnaW5hdGlvbi5nZXROZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RmlsdGVycyA9IChwcm9kdWN0cywgZmlsdGVyczogRmlsdGVyVHlwZVtdLCBkZWZhdWx0RmlsdGVycz86IERlZmF1bHRGaWx0ZXJbXSkgPT4ge1xyXG4gICAgICAgIGxldCBmaW5hbF9maWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xyXG4gICAgICAgIGlmIChmaWx0ZXJzPy5pbmNsdWRlcygnYWxsJykpIGZpbHRlcnMgPSBbJ2F0dHJpYnV0ZXMnLCAnY2F0ZWdvcnknLCAnZHluYW1pY3MnLCAncHJpY2VfcmFuZ2UnLCAnc29ydCddO1xyXG4gICAgICAgIGZpbHRlcnM/LmZvckVhY2goZmlsdGVyID0+IGZpbmFsX2ZpbHRlcnMucHVzaCh0aGlzLmdldEZpbHRlckluc3RhbmNlKGZpbHRlciwgcHJvZHVjdHMpKSk7XHJcbiAgICAgICAgZGVmYXVsdEZpbHRlcnM/LmZvckVhY2goZmlsdGVyRGVmYXVsdCA9PiB7XHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXIgPSBmaW5hbF9maWx0ZXJzLmZpbmQoZmlsdGVyID0+IGZpbHRlci50eXBlKCkgPT0gZmlsdGVyRGVmYXVsdC5maWx0ZXJfdHlwZSk7XHJcbiAgICAgICAgICAgIGZpbHRlciAmJiBmaWx0ZXJEZWZhdWx0LmNvZGVzLmZvckVhY2godmFsdWUgPT4gZmlsdGVyLnNldFNlbGVjdGVkKHZhbHVlKSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsdGVySW5zdGFuY2UgPSAoZmlsdGVyOiBzdHJpbmcsIHByb2R1Y3RzPyk6IEZpbHRlciA9PiB7XHJcbiAgICAgICAgbGV0IGluc3RhbmNlOiBGaWx0ZXI7XHJcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIpIHtcclxuICAgICAgICAgICAgY2FzZSAnY2F0ZWdvcnknOiBpbnN0YW5jZSA9IG5ldyBDYXRlZ29yeUZpbHRlcih0aGlzLm9wdGlvbnMuY2F0ZWdvcmllcywgdGhpcy5vcHRpb25zLmdlbmVyYXRlTWVudSwgcHJvZHVjdHMgPyAocHJvZHVjdHMudHlwZSA9PSAnY2F0ZWdvcmllcycgJiYgcHJvZHVjdHMudmFsdWUpIDogbnVsbCk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdhdHRyaWJ1dGVzJzogaW5zdGFuY2UgPSBuZXcgQXR0cmlidXRlc0ZpbHRlcih0aGlzLm9wdGlvbnMuYXR0cmlidXRlcywgdGhpcy5vcHRpb25zLmdlbmVyYXRlTWVudSwgcHJvZHVjdHMgPyAocHJvZHVjdHMudHlwZSA9PSAnYXR0cmlidXRlcycgJiYgcHJvZHVjdHMudmFsdWUpIDogbnVsbCk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdzb3J0JzogaW5zdGFuY2UgPSBuZXcgU29ydEZpbHRlcih0aGlzLmNvbnN0YW50cyk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdkeW5hbWljcyc6IGluc3RhbmNlID0gbmV3IER5bmFtaWNzRmlsdGVyKCk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdwcmljZV9yYW5nZSc6IGluc3RhbmNlID0gbmV3IFByaWNlUmFuZ2VGaWx0ZXIoKTsgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbnN0YW5jZTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVEeW5hbWljRmlsdGVycyA9IChyZXF1ZXN0KSA9PiB7XHJcbiAgICAgICAgaWYgKCFyZXF1ZXN0Lm9wdGlvbnMpIHJldHVybjtcclxuICAgICAgICBsZXQgZmluYWxfZmlsdGVyczogRmlsdGVyW10gPSB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlO1xyXG4gICAgICAgIGxldCBpbmRleCA9IGZpbmFsX2ZpbHRlcnMuZmluZEluZGV4KGZpbHRlciA9PiBmaWx0ZXIudHlwZSgpID09ICdkeW5hbWljcycpO1xyXG4gICAgICAgIGluZGV4ICYmIGZpbmFsX2ZpbHRlcnNbaW5kZXhdLnNldENvbnRlbnQocmVxdWVzdC5vcHRpb25zKTtcclxuICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TmV4dCA9ICgpOiBib29sZWFuID0+ICF0aGlzLnBhZ2luYXRpb24uaXNGaW5pc2hlZCgpICYmIHRoaXMucGFnaW5hdGlvbi5nZXROZXh0KCk7XHJcblxyXG4gICAgc2V0RmlsdGVyU2VsZWN0ZWQgPSAoZmlsdGVyT2JqOiBGaWx0ZXIsIGZpbHRlckVsZW06IEZpbHRlckVsZW1lbnQpID0+IHtcclxuICAgICAgICBsZXQgZmluYWxfZmlsdGVyczogRmlsdGVyW10gPSB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlO1xyXG4gICAgICAgIGlmIChmaWx0ZXJPYmoudHlwZSgpICE9PSAncHJpY2VfcmFuZ2UnKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IGZpbmFsX2ZpbHRlcnMuZmluZEluZGV4KGZpbHRlciA9PiBmaWx0ZXIudHlwZSgpID09IGZpbHRlck9iai50eXBlKCkpO1xyXG4gICAgICAgICAgICBmaW5hbF9maWx0ZXJzW2luZGV4XS5zZXRTZWxlY3RlZChmaWx0ZXJFbGVtLCBmaWx0ZXJFbGVtLnZhbHVlKTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBFc3RhIHBhcnRlIGRlbCBjb2RpZ28gbG8gcXVlIGhhY2UgZXMgY2hlcXVlYXIgc2Ugc2VhIHVuIGZpbHRybyBkZSBsYSB2aXN0YSwgcGFyYSBjYXJnYXIgZWwgb2JzZXJ2YWJsZVxyXG4gICAgICAgICAgICAgKiBjb24gbG9zIGRhdG9zIGRlbCBtaXNtby4gRGUgbG8gY29udHJhcmlvIHNlIGxvIGNhcmdhIGNvbiBudWxsLiBFc3RlIG9ic2VydmFibGUgZXN0YSBoZWNobyBwYXJhIHF1ZSBlbiBjb2xsZWN0aW9uIHNlXHJcbiAgICAgICAgICAgICAqIHB1ZWRhIGRldGVjdGFyIHNpIGVzIG5lY2VzYXJpbyBoYWNlciB1biBmaWx0cmFkbyBlbiBsYSB2aXN0YS5cclxuICAgICAgICAgICAgICogQWNsYXJhY2nDs246IGhhY2VyIGVzdGUgdGlwbyBkZSBmaWx0cmFkb3MgZXN0YSBtYWwsIHNpIGNyZWNlIG11Y2hvIGxhIHBlcmZvcm1hbmNlIHZhIGEgYmFqYXIsIGxvIGlkZWFsIHNlcmlhIHF1ZVxyXG4gICAgICAgICAgICAgKiBkZXNkZSBiYWNrZW5kIHNlIHB1ZWRhbiBwcm92ZWVyIGVuZHBvaW50cyBwYXJhIHBvZGVyIGZpbHRyYXIgc29icmUgbG9zIGNhbXBvcyBkZXNlYWRvcyB5IG1hbnRlbmVyIGxhIG1pc21hIGxvZ2ljYSBjb25cclxuICAgICAgICAgICAgICogbGEgcXVlIHNlIHZpZW5lIHRyYWJhamFuZG8uXHJcbiAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIChmaWx0ZXJFbGVtLm5vVXJsICE9IHVuZGVmaW5lZCAmJiBmaWx0ZXJFbGVtLm5vVXJsKSA/IHRoaXMuZmlsdGVyc0luVmlld1N1YmplY3QubmV4dChmaWx0ZXJFbGVtKSA6IHRoaXMuZmlsdGVyc0luVmlld1N1YmplY3QubmV4dChudWxsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmlsdGVyc1N1YmplY3QubmV4dChmaW5hbF9maWx0ZXJzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVByb2R1Y3RzRm9yRmlsdGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUHJvZHVjdHNGb3JGaWx0ZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLndhaXRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucHJvZHVjdHNTdWJqZWN0Lm5leHQoW10pO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5pbml0aWFsaXplKHRoaXMuc2VhcmNoX3ZhbHVlID8gdGhpcy5nZW5lcmF0ZUZpbmFsQXBpKHRoaXMuc2VhcmNoX3ZhbHVlKSA6IHRoaXMuZ2VuZXJhdGVGaW5hbEFwaSgpKTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCgpO1xyXG4gICAgICAgIC8vIFNJIFNFIEFDVFVBTElaQVJBTiBMT1MgRklMVFJPUyBESU5BTUlDT1MgRU4gRUwgRlVUVVJPXHJcbiAgICAgICAgLy8gbGV0IGZpbHRlcnNPYmogPSB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlO1xyXG4gICAgICAgIC8vIGZpbHRlcnNPYmouc29tZShmaWx0ZXIgPT4gZmlsdGVyLnR5cGUoKSA9PSAnZHluYW1pY3MnKVxyXG4gICAgICAgIC8vICAgICAgPyB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCh0aGlzLnVwZGF0ZUR5bmFtaWNGaWx0ZXJzKVxyXG4gICAgICAgIC8vICAgICAgOiB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwcm9kdWN0cyAgQXJyYXkuIExpc3RhIGRlIHByb2R1Y3Rvcy5cclxuICAgICAqIEBwYXJhbSB3aXRoT3B0aW9uICd0eXBlJyB0aXBvIGRlIG9wY2nDs24sIGNvZGU6IGPDs2RpZ28gZGUgbGEgb3BjacOzbi4gJ2RlZmF1bHRGaXJzdE9wdGlvbic6IGVuIGNhc28gZGUgcXVlIG5vIHNlIHB1ZWRhIGRlc2RvYmxhciBwb3IgbGEgb3BjacOzbiBpbmRpY2FkYSBzaSBlbCB2YWxvciBlcyB2ZXJkYWRlcm8gc2UgaW50ZW50YXJhIGRlc2RvYmxhciBwb3IgbGEgcHJpbWVyYSBvcGNpw7NuIGFzb2NpYWRhIGFsIHByb2R1Y3RvLlxyXG4gICAgICogJ2NoZWNrSWZTdG9jayc6IGVuIGNhc28gZGUgcXVlIGVzdGEgdmFsb3Igc2VhIHZlcmRhZGVybyBzZSByZWFsaXphIHVuIGNvbnRyb2wgZGUgcXVlIGxhIHZhcmlhbnRlcyBjdWVudGVuIGNvbiBzdG9jayBwYXJhIHNlciB1biBwcm9kdWN0byBkZXNkb2JsYWRvIHBvciBsYSB2YXJpYW50ZSwgc2kgZWwgdmFsb3IgZXMgZmFsc28gbm8gc2UgcmVhbGl6YSBkaWNobyBjb250cm9sIHkgZWwgcHJvZHVjdG8gc2UgZGVzZG9ibGFyYSBjb24gc3RvY2sgZW4gMC5cclxuICAgICAqIEByZXR1cm5zIGFycmVnbG8gY29uIGxvcyBwcm9kdWN0b3MgZGVzZG9ibGFkb3MgcG9yIGxhIG9wY2nDs24gc29saWNpdGFkYS5cclxuICAgICAqIChvcGNpw7NuIHBvciBkZWZlY3RvIHF1ZSBzZSBpbnRlbnRhIGhhY2VyIGVsIGRlc2RvYmxhbWllbnRvICdjb2xvcicsIG8gYmllbiBzaSBlbiBsZSBwYXLDoW1ldHJvIHdpdGhPcHRpb24gZWwgYXRyaWJ1dG8gJ2RlZmF1bHRGaXJzdE9wdGlvbicgZXMgdmVyZGFkZXJvIHNlIGRlc2RvYmxhIHBvciBsYSBwcmltZXJhIG9wY2nDs24gYXNvY2lhZGEgYWwgcHJvZHVjdG8gKVxyXG4gICAgICpcclxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWNpYmUgdW5hIGxpc3RhIGRlIHByb2R1Y3RvcyB5IHJldG9ybmEgbG9zIG1pc21vcyBwcm9kdWN0b3MgdGFudGFzIHZlY2VzIGNvbW8gdmFyaWFudGVzIHRlbmdhLlxyXG4gICAgICogY2FkYSBwcm9kdWN0byByZXRvcm5hZG8gdGVuZHLDoSB1bmEgw7puaWNhIHZhcmlhbnRlLlxyXG4gICAgICovXHJcbiAgICBnZXRQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0gKHByb2R1Y3RzLCB3aXRoT3B0aW9uOiBQYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0geyB0eXBlOiAnY29sb3InLCBjb2RlOiAnY29sb3InLCBkZWZhdWx0Rmlyc3RPcHRpb246IGZhbHNlLCBjaGVja0lmU3RvY2s6IHRydWUgfSkgPT4ge1xyXG5cclxuICAgICAgICAhd2l0aE9wdGlvblsnY29kZSddICYmIHdpdGhPcHRpb25bJ3R5cGUnXSAmJiAod2l0aE9wdGlvblsnY29kZSddID0gd2l0aE9wdGlvblsndHlwZSddKSB8fCAhd2l0aE9wdGlvblsnY29kZSddICYmICh3aXRoT3B0aW9uWydjb2RlJ10gPSAnY29sb3InKVxyXG4gICAgICAgICF3aXRoT3B0aW9uWyd0eXBlJ10gJiYgd2l0aE9wdGlvblsnY29kZSddICYmICh3aXRoT3B0aW9uWyd0eXBlJ10gPSB3aXRoT3B0aW9uWydjb2RlJ10pIHx8ICF3aXRoT3B0aW9uWyd0eXBlJ10gJiYgKHdpdGhPcHRpb25bJ3R5cGUnXSA9ICdjb2xvcicpXHJcbiAgICAgICAgIXdpdGhPcHRpb24uaGFzT3duUHJvcGVydHkoJ2RlZmF1bHRGaXJzdE9wdGlvbicpICYmICh3aXRoT3B0aW9uWydkZWZhdWx0Rmlyc3RPcHRpb24nXSA9IGZhbHNlKVxyXG4gICAgICAgICF3aXRoT3B0aW9uLmhhc093blByb3BlcnR5KCdjaGVja0lmU3RvY2snKSAmJiAod2l0aE9wdGlvblsnY2hlY2tJZlN0b2NrJ10gPSB0cnVlKVxyXG5cclxuICAgICAgICBsZXQgcHJvZHVjdHNVbmlxdWVWYXJpYW50ID0gW107XHJcbiAgICAgICAgcHJvZHVjdHMuZm9yRWFjaChwcm9kdWN0ID0+IHtcclxuICAgICAgICAgICAgbGV0IHZhcmlhbnRzID0gWy4uLnByb2R1Y3Q/LnZhcmlhbnRzXTtcclxuICAgICAgICAgICAgbGV0IG9wdGlvbiA9IHByb2R1Y3Qub3B0aW9ucy5maW5kKG9wdCA9PiBvcHQudHlwZS50b0xvd2VyQ2FzZSgpID09PSB3aXRoT3B0aW9uLnR5cGUudG9Mb3dlckNhc2UoKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAob3B0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWVzLmZvckVhY2gob3B0aW9uVmFsdWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBtb2RpZmllZF9wcm9kdWN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9kdWN0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRfcHJvZHVjdC5vcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvbi50eXBlLnRvTG93ZXJDYXNlKCkgPT0gd2l0aE9wdGlvbi50eXBlLnRvTG93ZXJDYXNlKCkpLnZhbHVlcyA9IFt7IGNvZGU6IG9wdGlvblZhbHVlLmNvZGUsIG5hbWU6IG9wdGlvblZhbHVlLm5hbWUgfV07XHJcbiAgICAgICAgICAgICAgICAgICAgLy9idXNjbyB1bmEgdmFyaWFudGUgY29uIGVzZSBjb2RlIHBhcmEgYXNpZ25hcmxlIGxhIGxpc3RhIGRlIGltYWdlbmVzXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhcmlhbnRBdXggPSB2YXJpYW50cy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50ID0+ICgod2l0aE9wdGlvbi5jaGVja0lmU3RvY2sgJiYgdmFyaWFudC5zdG9jayA+IDApIHx8IHdpdGhPcHRpb24uY2hlY2tJZlN0b2NrID09IGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFyaWFudC5vcHRpb25zLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFyaWFudC5vcHRpb25zLnNvbWUob3AgPT4gKG9wLmhhc093blByb3BlcnR5KHdpdGhPcHRpb24uY29kZS50b0xvd2VyQ2FzZSgpKSB8fCBvcC5oYXNPd25Qcm9wZXJ0eSh3aXRoT3B0aW9uLmNvZGUudG9VcHBlckNhc2UoKSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKG9wW3dpdGhPcHRpb24uY29kZS50b0xvd2VyQ2FzZSgpXSB8fCBvcFt3aXRoT3B0aW9uLmNvZGUudG9VcHBlckNhc2UoKV0pID09PSBvcHRpb25WYWx1ZS5jb2RlKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnRBdXggJiYgcHJvZHVjdHNVbmlxdWVWYXJpYW50LnB1c2godGhpcy5wcm9kdWN0V2l0aFZhcmlhbnRWYWx1ZXMobW9kaWZpZWRfcHJvZHVjdCwgdmFyaWFudEF1eCwgb3B0aW9uVmFsdWUpKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAqIHNlIG1vZGlmaWNhIGVsIGNhc28gcGFyYSBjdWFuZG8gc2UgdG9tYSBlbCBwcmltZXIgYG9wdGlvbmAgZGVsIHByb2R1Y3RvIHBhcmFcclxuICAgICAgICAgICAgICAgICAqIGFybWFyIGxhIGxpc3RhIGRlIHByb2R1Y3RvcyBjb24gdmFyaWFudGVzLlxyXG4gICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICBpZiAod2l0aE9wdGlvbi5kZWZhdWx0Rmlyc3RPcHRpb24gJiYgcHJvZHVjdC5vcHRpb25zPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZmlyc3RPcHRpb25zID0gcHJvZHVjdC5vcHRpb25zWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5vcHRpb25zWzBdLnZhbHVlcy5mb3JFYWNoKG9wdGlvblZhbHVlID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb2RpZmllZF9wcm9kdWN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9kdWN0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkX3Byb2R1Y3Qub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24udHlwZSA9PSBmaXJzdE9wdGlvbnMudHlwZSkudmFsdWVzID0gW3sgY29kZTogb3B0aW9uVmFsdWUuY29kZSwgbmFtZTogb3B0aW9uVmFsdWUubmFtZSB9XTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YXJpYW50QXV4ID0gdmFyaWFudHMuZmluZCh2YXJpYW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YXJpYW50Lm9wdGlvbnMuZmluZChlbGVtID0+IGVsZW1bZmlyc3RPcHRpb25zLmNvZGVdID09IG9wdGlvblZhbHVlLmNvZGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFudEF1eCAmJiB2YXJpYW50QXV4LmltYWdlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudEF1eC5pbWFnZXMgPSBwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2l0aE9wdGlvbi5jaGVja0lmU3RvY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YXJpYW50QXV4ICYmIHZhcmlhbnRBdXguc3RvY2sgPiAwKSA/IHByb2R1Y3RzVW5pcXVlVmFyaWFudC5wdXNoKHRoaXMucHJvZHVjdFdpdGhWYXJpYW50VmFsdWVzKG1vZGlmaWVkX3Byb2R1Y3QsIHZhcmlhbnRBdXgsIG9wdGlvblZhbHVlKSkgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudEF1eCAmJiBwcm9kdWN0c1VuaXF1ZVZhcmlhbnQucHVzaCh0aGlzLnByb2R1Y3RXaXRoVmFyaWFudFZhbHVlcyhtb2RpZmllZF9wcm9kdWN0LCB2YXJpYW50QXV4LCBvcHRpb25WYWx1ZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdHNVbmlxdWVWYXJpYW50LnB1c2gocHJvZHVjdClcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiBwcm9kdWN0c1VuaXF1ZVZhcmlhbnQubGVuZ3RoID4gMCA/IHByb2R1Y3RzVW5pcXVlVmFyaWFudCA6IHByb2R1Y3RzO1xyXG4gICAgfVxyXG5cclxuICAgIHByb2R1Y3RXaXRoVmFyaWFudFZhbHVlcyA9IChwcm9kdWN0LCB2YXJpYW50LCBvcHRpb25WYWx1ZSkgPT4ge1xyXG4gICAgICAgIHByb2R1Y3QucGljdHVyZXNkZWZhdWx0ID0gdmFyaWFudC5pbWFnZXNcclxuICAgICAgICBwcm9kdWN0LnZhcmlhbnRfaWQgPSB2YXJpYW50LmNvZGU7IC8vbG8gZGVqbyBhY2EgaGFzdGEgYXNlZ3VyYXJub3MgZGUgcXVlIG5vIHNlIGVzdGFiYSB1c2FuZG8gZW4gb3RyYSBwYXJ0ZS5cclxuICAgICAgICBwcm9kdWN0LnN0b2NrID0gdmFyaWFudC5zdG9jayB8fCAwOyAvL2xvIGRlam8gYWNhIGhhc3RhIGFzZWd1cmFybm9zIGRlIHF1ZSBubyBzZSBlc3RhYmEgdXNhbmRvIGVuIG90cmEgcGFydGUuXHJcbiAgICAgICAgcHJvZHVjdC5jdXJyZW50T3B0aW9uID0ge1xyXG4gICAgICAgICAgICAuLi5vcHRpb25WYWx1ZSxcclxuICAgICAgICAgICAgcHJvZHVjdENvZGU6IHByb2R1Y3QuaWQsXHJcbiAgICAgICAgICAgIHZhcmlhbnRDb2RlOiB2YXJpYW50LmNvZGUsXHJcbiAgICAgICAgICAgIHN0b2NrOiB2YXJpYW50LnN0b2NrIHx8IDAsXHJcbiAgICAgICAgICAgIGZpbmFsUHJpY2U6IHZhcmlhbnQuc2FsZXByaWNlIHx8IHZhcmlhbnQucHJpY2UgfHwgMCxcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RcclxuICAgIH1cclxuXHJcblxyXG4gICAgY2xlYW5BbGxGaWx0ZXJzID0gKCkgPT4ge1xyXG4gICAgICAgIGxldCBmaW5hbF9maWx0ZXJzOiBGaWx0ZXJbXSA9IHRoaXMuZmlsdGVyc1N1YmplY3QudmFsdWU7XHJcbiAgICAgICAgZmluYWxfZmlsdGVycy5mb3JFYWNoKGZpbHRlciA9PiBmaWx0ZXIucmVzZXQoKSk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzU3ViamVjdC5uZXh0KGZpbmFsX2ZpbHRlcnMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlUHJvZHVjdHNGb3JGaWx0ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogVVRJTFMgQU5EIEZJTFRFUklORyAqL1xyXG5cclxuICAgIGlzV2FpdGluZyA9ICgpID0+IHRoaXMucGFnaW5hdGlvbi53YWl0aW5nO1xyXG4gICAgaXNGaW5pc2hlZCA9ICgpID0+IHRoaXMucGFnaW5hdGlvbi5pc0ZpbmlzaGVkKCk7XHJcblxyXG4gICAgZ2VuZXJhdGVGaW5hbEFwaSA9IChzZWFyY2hfdmFsdWU/KSA9PiB7XHJcbiAgICAgICAgbGV0IGV4dHJhX3BhcmFtcyA9ICcnO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyc1N1YmplY3QudmFsdWUuZm9yRWFjaChmaWx0ZXIgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBleHRyYSA9IGZpbHRlci50b1VybFBhcmFtcygpO1xyXG4gICAgICAgICAgICBleHRyYS5zcGxpdCgnPScpWzFdICE9ICcnID8gZXh0cmFfcGFyYW1zICs9IGV4dHJhIDogbnVsbDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmIChzZWFyY2hfdmFsdWUpIGV4dHJhX3BhcmFtcyArPSAoJyZjcml0ZXJpYVtzZWFyY2hdW3R5cGVdPWNvbnRhaW5zJmNyaXRlcmlhW3NlYXJjaF1bdmFsdWVdPScgKyBzZWFyY2hfdmFsdWUpO1xyXG4gICAgICAgIGlmIChleHRyYV9wYXJhbXMgIT0gJycgJiYgIWV4dHJhX3BhcmFtcy5pbmNsdWRlcygnYXR0cmlidXRlQ29kZXMnKSkge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuZ2V0QXR0cmlidXRlczIoZXh0cmFfcGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvZHVjdHNGaWx0ZXJBcGkoZXh0cmFfcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBmaW5pc2hlZCA9ICgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0+IHRoaXMucGFnaW5hdGlvbi5maW5pc2hlZCQ7XHJcblxyXG4gICAgZ2V0VG90YWwgPSAoKSA9PiB0aGlzLnBhZ2luYXRpb24udG90YWw7XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVQcmljZVJhbmdlRmlsdGVyKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikge1xyXG4gICAgICAgIGNvbnN0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gdGhpcy5maWx0ZXJzU3ViamVjdC52YWx1ZTtcclxuICAgICAgICBjb25zdCBwcmljZVJhbmdlRmlsdGVyID0gZmluYWxfZmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIgaW5zdGFuY2VvZiBQcmljZVJhbmdlRmlsdGVyKTtcclxuXHJcbiAgICAgICAgaWYgKHByaWNlUmFuZ2VGaWx0ZXIpIHtcclxuICAgICAgICAgICAgKHByaWNlUmFuZ2VGaWx0ZXIgYXMgUHJpY2VSYW5nZUZpbHRlcikudXBkYXRlUHJpY2VzKG1pbiwgbWF4KTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJzU3ViamVjdC5uZXh0KGZpbmFsX2ZpbHRlcnMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -30,8 +30,8 @@ var PriceRangeFilter = /** @class */ (function (_super) {
30
30
  };
31
31
  // Método para actualizar los valores seleccionados
32
32
  _this.setSelected = function (min, max) {
33
- _this.currentMinPrice = min;
34
- _this.currentMaxPrice = max;
33
+ _this.currentMinPrice = (min !== _this.minPrice) ? min : null;
34
+ _this.currentMaxPrice = (max !== _this.maxPrice) ? max : null;
35
35
  };
36
36
  // Retorna los valores seleccionados (rango de precios)
37
37
  _this.getSelectedRange = function () {
@@ -61,8 +61,14 @@ var PriceRangeFilter = /** @class */ (function (_super) {
61
61
  PriceRangeFilter.prototype.updatePrices = function (min, max) {
62
62
  this.minPrice = min;
63
63
  this.maxPrice = max;
64
+ if (this.currentMinPrice !== null && (this.currentMinPrice < min || this.currentMinPrice > max)) {
65
+ this.currentMinPrice = null;
66
+ }
67
+ if (this.currentMaxPrice !== null && (this.currentMaxPrice > max || this.currentMaxPrice < min)) {
68
+ this.currentMaxPrice = null;
69
+ }
64
70
  };
65
71
  return PriceRangeFilter;
66
72
  }(Filter));
67
73
  export { PriceRangeFilter };
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpY2VSYW5nZUZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9jbGFzc2VzL2ZpbHRlcnMvUHJpY2VSYW5nZUZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdsQztJQUFzQyxvQ0FBTTtJQUE1QztRQUFBLHFFQXdEQztRQXRERyxjQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGNBQVEsR0FBVyxJQUFJLENBQUM7UUFDeEIscUJBQWUsR0FBVyxJQUFJLENBQUM7UUFDL0IscUJBQWUsR0FBVyxJQUFJLENBQUM7UUFFL0IsVUFBSSxHQUFHLGNBQWtCLE9BQUEsYUFBYSxFQUFiLENBQWEsQ0FBQztRQUV2QyxxREFBcUQ7UUFDckQsZ0JBQVUsR0FBRyxVQUFDLE9BQU87WUFDakIsS0FBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLEtBQUksQ0FBQyxRQUFRLENBQUM7WUFDbEQsS0FBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLEtBQUksQ0FBQyxRQUFRLENBQUM7WUFDbEQsS0FBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLEtBQUksQ0FBQyxRQUFRLENBQUM7WUFDaEUsS0FBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLEtBQUksQ0FBQyxRQUFRLENBQUM7UUFDcEUsQ0FBQyxDQUFBO1FBT0QsbURBQW1EO1FBQ25ELGlCQUFXLEdBQUcsVUFBQyxHQUFXLEVBQUUsR0FBVztZQUNuQyxLQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztZQUMzQixLQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztRQUMvQixDQUFDLENBQUE7UUFFRCx1REFBdUQ7UUFDdkQsc0JBQWdCLEdBQUc7WUFDZixPQUFPO2dCQUNILEdBQUcsRUFBRSxLQUFJLENBQUMsZUFBZSxJQUFJLEtBQUksQ0FBQyxRQUFRO2dCQUMxQyxHQUFHLEVBQUUsS0FBSSxDQUFDLGVBQWUsSUFBSSxLQUFJLENBQUMsUUFBUTthQUM3QyxDQUFDO1FBQ04sQ0FBQyxDQUFBO1FBRUQsMkVBQTJFO1FBQzNFLGlCQUFXLEdBQUc7WUFDVixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFFaEIsSUFBSSxLQUFJLENBQUMsZUFBZSxLQUFLLElBQUksSUFBSSxLQUFJLENBQUMsZUFBZSxLQUFLLEtBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pFLE1BQU0sSUFBSSxnQkFBYyxLQUFJLENBQUMsZUFBaUIsQ0FBQzthQUNsRDtZQUVELElBQUksS0FBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLElBQUksS0FBSSxDQUFDLGVBQWUsS0FBSyxLQUFJLENBQUMsUUFBUSxFQUFFO2dCQUN6RSxNQUFNLElBQUksZ0JBQWMsS0FBSSxDQUFDLGVBQWlCLENBQUM7YUFDbEQ7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDLENBQUE7UUFFRCxpREFBaUQ7UUFDakQsV0FBSyxHQUFHO1lBQ0osS0FBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7WUFDekIsS0FBSSxDQUFDLGVBQWUsR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3pDLENBQUMsQ0FBQTs7SUFDTCxDQUFDO0lBdkNHLHVDQUFZLEdBQVosVUFBYSxHQUFXLEVBQUUsR0FBVztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztJQUN4QixDQUFDO0lBb0NMLHVCQUFDO0FBQUQsQ0FBQyxBQXhERCxDQUFzQyxNQUFNLEdBd0QzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbHRlciB9IGZyb20gXCIuL0ZpbHRlclwiO1xuaW1wb3J0IHsgRmlsdGVyRWxlbWVudCwgRmlsdGVyVHlwZSB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL2ZpbHRlclwiO1xuXG5leHBvcnQgY2xhc3MgUHJpY2VSYW5nZUZpbHRlciBleHRlbmRzIEZpbHRlciB7XG5cbiAgICBtaW5QcmljZTogbnVtYmVyID0gMDtcbiAgICBtYXhQcmljZTogbnVtYmVyID0gMTAwMDtcbiAgICBjdXJyZW50TWluUHJpY2U6IG51bWJlciA9IG51bGw7XG4gICAgY3VycmVudE1heFByaWNlOiBudW1iZXIgPSBudWxsO1xuXG4gICAgdHlwZSA9ICgpOiBGaWx0ZXJUeXBlID0+ICdwcmljZV9yYW5nZSc7XG5cbiAgICAvLyBNw6l0b2RvIHBhcmEgY29uZmlndXJhciBlbCByYW5nbyBkZSBwcmVjaW9zIGluaWNpYWxcbiAgICBzZXRDb250ZW50ID0gKG9wdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy5taW5QcmljZSA9IG9wdGlvbnMubWluUHJpY2UgfHwgdGhpcy5taW5QcmljZTtcbiAgICAgICAgdGhpcy5tYXhQcmljZSA9IG9wdGlvbnMubWF4UHJpY2UgfHwgdGhpcy5tYXhQcmljZTtcbiAgICAgICAgdGhpcy5jdXJyZW50TWluUHJpY2UgPSBvcHRpb25zLmN1cnJlbnRNaW5QcmljZSB8fCB0aGlzLm1pblByaWNlO1xuICAgICAgICB0aGlzLmN1cnJlbnRNYXhQcmljZSA9IG9wdGlvbnMuY3VycmVudE1heFByaWNlIHx8IHRoaXMubWF4UHJpY2U7XG4gICAgfVxuXG4gICAgdXBkYXRlUHJpY2VzKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLm1pblByaWNlID0gbWluO1xuICAgICAgICB0aGlzLm1heFByaWNlID0gbWF4O1xuICAgIH1cblxuICAgIC8vIE3DqXRvZG8gcGFyYSBhY3R1YWxpemFyIGxvcyB2YWxvcmVzIHNlbGVjY2lvbmFkb3NcbiAgICBzZXRTZWxlY3RlZCA9IChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50TWluUHJpY2UgPSBtaW47XG4gICAgICAgIHRoaXMuY3VycmVudE1heFByaWNlID0gbWF4O1xuICAgIH1cblxuICAgIC8vIFJldG9ybmEgbG9zIHZhbG9yZXMgc2VsZWNjaW9uYWRvcyAocmFuZ28gZGUgcHJlY2lvcylcbiAgICBnZXRTZWxlY3RlZFJhbmdlID0gKCk6IHsgbWluOiBudW1iZXIsIG1heDogbnVtYmVyIH0gPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWluOiB0aGlzLmN1cnJlbnRNaW5QcmljZSB8fCB0aGlzLm1pblByaWNlLFxuICAgICAgICAgICAgbWF4OiB0aGlzLmN1cnJlbnRNYXhQcmljZSB8fCB0aGlzLm1heFByaWNlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIEdlbmVyYSBsb3MgcGFyw6FtZXRyb3MgZGUgbGEgVVJMIGVuIGJhc2UgYWwgcmFuZ28gZGUgcHJlY2lvcyBzZWxlY2Npb25hZG9cbiAgICB0b1VybFBhcmFtcyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE1pblByaWNlICE9PSBudWxsICYmIHRoaXMuY3VycmVudE1pblByaWNlICE9PSB0aGlzLm1pblByaWNlKSB7XG4gICAgICAgICAgICBwYXJhbXMgKz0gYCZwcmljZV9taW49JHt0aGlzLmN1cnJlbnRNaW5QcmljZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE1heFByaWNlICE9PSBudWxsICYmIHRoaXMuY3VycmVudE1heFByaWNlICE9PSB0aGlzLm1heFByaWNlKSB7XG4gICAgICAgICAgICBwYXJhbXMgKz0gYCZwcmljZV9tYXg9JHt0aGlzLmN1cnJlbnRNYXhQcmljZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbiAgICAvLyBSZXN0YWJsZWNlIGVsIGZpbHRybyBhIGxvcyB2YWxvcmVzIHBvciBkZWZlY3RvXG4gICAgcmVzZXQgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudE1pblByaWNlID0gMDtcbiAgICAgICAgdGhpcy5jdXJyZW50TWF4UHJpY2UgPSB0aGlzLm1heFByaWNlO1xuICAgIH1cbn1cbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpY2VSYW5nZUZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9jbGFzc2VzL2ZpbHRlcnMvUHJpY2VSYW5nZUZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdsQztJQUFzQyxvQ0FBTTtJQUE1QztRQUFBLHFFQStEQztRQTdERyxjQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGNBQVEsR0FBVyxJQUFJLENBQUM7UUFDeEIscUJBQWUsR0FBVyxJQUFJLENBQUM7UUFDL0IscUJBQWUsR0FBVyxJQUFJLENBQUM7UUFFL0IsVUFBSSxHQUFHLGNBQWtCLE9BQUEsYUFBYSxFQUFiLENBQWEsQ0FBQztRQUV2QyxxREFBcUQ7UUFDckQsZ0JBQVUsR0FBRyxVQUFDLE9BQU87WUFDakIsS0FBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLEtBQUksQ0FBQyxRQUFRLENBQUM7WUFDbEQsS0FBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLEtBQUksQ0FBQyxRQUFRLENBQUM7WUFDbEQsS0FBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLEtBQUksQ0FBQyxRQUFRLENBQUM7WUFDaEUsS0FBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLEtBQUksQ0FBQyxRQUFRLENBQUM7UUFDcEUsQ0FBQyxDQUFBO1FBY0QsbURBQW1EO1FBQ25ELGlCQUFXLEdBQUcsVUFBQyxHQUFXLEVBQUUsR0FBVztZQUNuQyxLQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsR0FBRyxLQUFLLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDNUQsS0FBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEdBQUcsS0FBSyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hFLENBQUMsQ0FBQTtRQUVELHVEQUF1RDtRQUN2RCxzQkFBZ0IsR0FBRztZQUNmLE9BQU87Z0JBQ0gsR0FBRyxFQUFFLEtBQUksQ0FBQyxlQUFlLElBQUksS0FBSSxDQUFDLFFBQVE7Z0JBQzFDLEdBQUcsRUFBRSxLQUFJLENBQUMsZUFBZSxJQUFJLEtBQUksQ0FBQyxRQUFRO2FBQzdDLENBQUM7UUFDTixDQUFDLENBQUE7UUFFRCwyRUFBMkU7UUFDM0UsaUJBQVcsR0FBRztZQUNWLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUVoQixJQUFJLEtBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxJQUFJLEtBQUksQ0FBQyxlQUFlLEtBQUssS0FBSSxDQUFDLFFBQVEsRUFBRTtnQkFDekUsTUFBTSxJQUFJLGdCQUFjLEtBQUksQ0FBQyxlQUFpQixDQUFDO2FBQ2xEO1lBRUQsSUFBSSxLQUFJLENBQUMsZUFBZSxLQUFLLElBQUksSUFBSSxLQUFJLENBQUMsZUFBZSxLQUFLLEtBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pFLE1BQU0sSUFBSSxnQkFBYyxLQUFJLENBQUMsZUFBaUIsQ0FBQzthQUNsRDtZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQTtRQUVELGlEQUFpRDtRQUNqRCxXQUFLLEdBQUc7WUFDSixLQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztZQUN6QixLQUFJLENBQUMsZUFBZSxHQUFHLEtBQUksQ0FBQyxRQUFRLENBQUM7UUFDekMsQ0FBQyxDQUFBOztJQUNMLENBQUM7SUE5Q0csdUNBQVksR0FBWixVQUFhLEdBQVcsRUFBRSxHQUFXO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxFQUFFO1lBQzdGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1NBQy9CO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLEVBQUU7WUFDN0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBb0NMLHVCQUFDO0FBQUQsQ0FBQyxBQS9ERCxDQUFzQyxNQUFNLEdBK0QzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbHRlciB9IGZyb20gXCIuL0ZpbHRlclwiO1xuaW1wb3J0IHsgRmlsdGVyRWxlbWVudCwgRmlsdGVyVHlwZSB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL2ZpbHRlclwiO1xuXG5leHBvcnQgY2xhc3MgUHJpY2VSYW5nZUZpbHRlciBleHRlbmRzIEZpbHRlciB7XG5cbiAgICBtaW5QcmljZTogbnVtYmVyID0gMDtcbiAgICBtYXhQcmljZTogbnVtYmVyID0gMTAwMDtcbiAgICBjdXJyZW50TWluUHJpY2U6IG51bWJlciA9IG51bGw7XG4gICAgY3VycmVudE1heFByaWNlOiBudW1iZXIgPSBudWxsO1xuXG4gICAgdHlwZSA9ICgpOiBGaWx0ZXJUeXBlID0+ICdwcmljZV9yYW5nZSc7XG5cbiAgICAvLyBNw6l0b2RvIHBhcmEgY29uZmlndXJhciBlbCByYW5nbyBkZSBwcmVjaW9zIGluaWNpYWxcbiAgICBzZXRDb250ZW50ID0gKG9wdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy5taW5QcmljZSA9IG9wdGlvbnMubWluUHJpY2UgfHwgdGhpcy5taW5QcmljZTtcbiAgICAgICAgdGhpcy5tYXhQcmljZSA9IG9wdGlvbnMubWF4UHJpY2UgfHwgdGhpcy5tYXhQcmljZTtcbiAgICAgICAgdGhpcy5jdXJyZW50TWluUHJpY2UgPSBvcHRpb25zLmN1cnJlbnRNaW5QcmljZSB8fCB0aGlzLm1pblByaWNlO1xuICAgICAgICB0aGlzLmN1cnJlbnRNYXhQcmljZSA9IG9wdGlvbnMuY3VycmVudE1heFByaWNlIHx8IHRoaXMubWF4UHJpY2U7XG4gICAgfVxuXG4gICAgdXBkYXRlUHJpY2VzKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLm1pblByaWNlID0gbWluO1xuICAgICAgICB0aGlzLm1heFByaWNlID0gbWF4O1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50TWluUHJpY2UgIT09IG51bGwgJiYgKHRoaXMuY3VycmVudE1pblByaWNlIDwgbWluIHx8IHRoaXMuY3VycmVudE1pblByaWNlID4gbWF4KSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TWluUHJpY2UgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE1heFByaWNlICE9PSBudWxsICYmICh0aGlzLmN1cnJlbnRNYXhQcmljZSA+IG1heCB8fCB0aGlzLmN1cnJlbnRNYXhQcmljZSA8IG1pbikpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1heFByaWNlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE3DqXRvZG8gcGFyYSBhY3R1YWxpemFyIGxvcyB2YWxvcmVzIHNlbGVjY2lvbmFkb3NcbiAgICBzZXRTZWxlY3RlZCA9IChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50TWluUHJpY2UgPSAobWluICE9PSB0aGlzLm1pblByaWNlKSA/IG1pbiA6IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudE1heFByaWNlID0gKG1heCAhPT0gdGhpcy5tYXhQcmljZSkgPyBtYXggOiBudWxsO1xuICAgIH1cblxuICAgIC8vIFJldG9ybmEgbG9zIHZhbG9yZXMgc2VsZWNjaW9uYWRvcyAocmFuZ28gZGUgcHJlY2lvcylcbiAgICBnZXRTZWxlY3RlZFJhbmdlID0gKCk6IHsgbWluOiBudW1iZXIsIG1heDogbnVtYmVyIH0gPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWluOiB0aGlzLmN1cnJlbnRNaW5QcmljZSB8fCB0aGlzLm1pblByaWNlLFxuICAgICAgICAgICAgbWF4OiB0aGlzLmN1cnJlbnRNYXhQcmljZSB8fCB0aGlzLm1heFByaWNlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIEdlbmVyYSBsb3MgcGFyw6FtZXRyb3MgZGUgbGEgVVJMIGVuIGJhc2UgYWwgcmFuZ28gZGUgcHJlY2lvcyBzZWxlY2Npb25hZG9cbiAgICB0b1VybFBhcmFtcyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE1pblByaWNlICE9PSBudWxsICYmIHRoaXMuY3VycmVudE1pblByaWNlICE9PSB0aGlzLm1pblByaWNlKSB7XG4gICAgICAgICAgICBwYXJhbXMgKz0gYCZwcmljZV9taW49JHt0aGlzLmN1cnJlbnRNaW5QcmljZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE1heFByaWNlICE9PSBudWxsICYmIHRoaXMuY3VycmVudE1heFByaWNlICE9PSB0aGlzLm1heFByaWNlKSB7XG4gICAgICAgICAgICBwYXJhbXMgKz0gYCZwcmljZV9tYXg9JHt0aGlzLmN1cnJlbnRNYXhQcmljZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbiAgICAvLyBSZXN0YWJsZWNlIGVsIGZpbHRybyBhIGxvcyB2YWxvcmVzIHBvciBkZWZlY3RvXG4gICAgcmVzZXQgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudE1pblByaWNlID0gMDtcbiAgICAgICAgdGhpcy5jdXJyZW50TWF4UHJpY2UgPSB0aGlzLm1heFByaWNlO1xuICAgIH1cbn1cbiJdfQ==
@@ -319,7 +319,9 @@ var ProductsService = /** @class */ (function () {
319
319
  this.getTotal = function () { return _this.pagination.total; };
320
320
  // Suscribirse a los cambios en el rango de precios
321
321
  this.pagination.priceRange$.subscribe(function (range) {
322
- _this.updatePriceRangeFilter(range.price_min, range.price_max);
322
+ var min = Math.floor(range.price_min);
323
+ var max = Math.ceil(range.price_max);
324
+ _this.updatePriceRangeFilter(min, max);
323
325
  });
324
326
  }
325
327
  ProductsService.prototype.updatePriceRangeFilter = function (min, max) {
@@ -343,4 +345,4 @@ var ProductsService = /** @class */ (function () {
343
345
  return ProductsService;
344
346
  }());
345
347
  export { ProductsService };
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9wcm9kdWN0cy9wcm9kdWN0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQVUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSTlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUU5RCxPQUFPLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUcxRSxnQ0FBZ0M7QUFDaEMsSUFBSSxRQUFRLEdBQVEsRUFBRSxDQUFDO0FBSXZCO0lBOEJJLHlCQUFvQixVQUE2QixFQUNyQyxTQUFvQixFQUNwQixVQUE2QixFQUM3QixPQUF1QixFQUN4QixjQUE4QjtRQUp6QyxpQkFTQztR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LENBQUMsVUFBQSxLQUFLO1lBQ3ZDLEtBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFrUU8sZ0RBQXNCLEdBQTlCLFVBQStCLEdBQVcsRUFBRSxHQUFXO1FBQ25ELElBQU0sYUFBYSxHQUFhLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQzFELElBQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFBLE1BQU0sSUFBSSxPQUFBLE1BQU0sWUFBWSxnQkFBZ0IsRUFBbEMsQ0FBa0MsQ0FBQyxDQUFDO1FBRTFGLElBQUksZ0JBQWdCLEVBQUU7WUFDakIsZ0JBQXFDLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMzQztJQUNMLENBQUM7O2dCQW5SK0IsaUJBQWlCO2dCQUMxQixTQUFTO2dCQUNSLGlCQUFpQjtnQkFDcEIsY0FBYztnQkFDUixjQUFjOztJQWxDaEMsZUFBZTtRQUQzQixVQUFVLEVBQUU7T0FDQSxlQUFlLENBa1QzQjtJQUFELHNCQUFDO0NBQUEsQUFsVEQsSUFrVEM7U0FsVFksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaWJlciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL21hcCc7XHJcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvcmUuY29uc3RzJztcclxuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcHJvZHVjdCc7XHJcbmltcG9ydCB7IEZpbHRlck9wdGlvblZhbHVlLCBGaWx0ZXJPcHRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Nob29zZS1vcHRpb25zL2ZpbHRlci1vcHRpb24nO1xyXG5pbXBvcnQgeyBGaWx0ZXJUeXBlLCBGaWx0ZXJFbGVtZW50LCBEZWZhdWx0RmlsdGVyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9maWx0ZXInO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJy4uL3BhZ2luYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENhdGVnb3J5RmlsdGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXJzL0NhdGVnb3J5RmlsdGVyJztcclxuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9vcHRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdHRyaWJ1dGVzRmlsdGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXJzL0F0dHJpYnV0ZXNGaWx0ZXInO1xyXG5pbXBvcnQgeyBEeW5hbWljc0ZpbHRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVycy9EaW5hbXljc0ZpbHRlcic7XHJcbmltcG9ydCB7IFNvcnRGaWx0ZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlcnMvU29ydEZpbHRlcic7XHJcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVycy9GaWx0ZXInO1xyXG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL2NhdGNoJztcclxuaW1wb3J0IHsgUGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGFyYW1zSW50ZXJmYWNlcy9wYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50JztcclxuaW1wb3J0IHsgRmlsdGVyc1NlcnZpY2UgfSBmcm9tICcuLi9maWx0ZXJzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcmljZVJhbmdlRmlsdGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXJzL1ByaWNlUmFuZ2VGaWx0ZXInO1xyXG5cclxuXHJcbi8vIEdldCBwcm9kdWN0IGZyb20gTG9jYWxzdG9yYWdlXHJcbmxldCBwcm9kdWN0czogYW55ID0ge307XHJcbnR5cGUgb3JkZXJfdHlwZSA9ICdhc2MnIHwgJ2Rlc2MnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdHNTZXJ2aWNlIHtcclxuXHJcbiAgICAvKiogQVRUUklCVVRFUyAqL1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIHByb2R1Y3RzU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3RbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcclxuICAgIHByaXZhdGUgZmlsdGVyc1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcclxuICAgIHByaXZhdGUgZmlsdGVyc0luVmlld1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJFbGVtZW50PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbClcclxuXHJcbiAgICBwdWJsaWMgY3VycmVuY3kgPSAnVVNEJztcclxuICAgIHB1YmxpYyBjYXRhbG9nTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHByb2R1Y3RzJCA9IHRoaXMucHJvZHVjdHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHVibGljIGZpbHRlcnMkID0gdGhpcy5maWx0ZXJzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgIHB1YmxpYyBmaWx0ZXJzSW5WaWV3JCA9IHRoaXMuZmlsdGVyc0luVmlld1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJpdmF0ZSBzZWFyY2hfdmFsdWU6IFN0cmluZztcclxuXHJcbiAgICAvKiogQVBJUyAqL1xyXG5cclxuICAgIGxhdGVzdFByb2R1Y3RzQnlDYXRlZ29yeUFwaSA9IChjYXRlZ29yeSkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3RheG9uLXByb2R1Y3RzL2J5LWNvZGUvJyArIGNhdGVnb3J5O1xyXG4gICAgbGF0ZXN0UHJvZHVjdHNBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvcHJvZHVjdC1sYXRlc3QvJztcclxuICAgIHNwZWNpZmljUHJvZHVjdEFwaSA9IChjb2RlLCB2YXJpYW50KSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvcHJvZHVjdHMvYnktY29kZS8nICsgKHZhcmlhbnQgPyAndmFyaWFudC8nIDogJycpICsgY29kZSArICc/bG9jYWxlPScgKyB0aGlzLmNvbnN0YW50cy5nZXRMb2NhbGUoKTtcclxuICAgIHByb2R1Y3RzQnlTcGVjaWFsTWFya0FwaSA9IChzcGVjaWFsbWFyaykgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRWZXJzaW9uKCkgKyAnLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3NwZWNpYWwtbWFya3MvJyArIHNwZWNpYWxtYXJrICsgJy9wcm9kdWN0cy8nO1xyXG4gICAgcmVsYXRlZFByb2R1Y3RzQXBpID0gKGtleSkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3Byb2R1Y3RzL3JlbGF0ZWQvYnktY29kZS8nICsga2V5ICsgJz9sb2NhbGU9JyArIHRoaXMuY29uc3RhbnRzLmdldExvY2FsZSgpO1xyXG4gICAgcHJvZHVjdFZhcmlhbnRBcGkgPSAoY29kZSkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3Byb2R1Y3RzL2J5LWNvZGUvdmFyaWFudC8nICsgY29kZTtcclxuICAgIGxhdGVzdFByb2R1Y3RzQnlBdHRyaWJ1dGVBcGkgPSAoYXR0cmlidXRlKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvcHJvZHVjdHMvYnktYXR0cmlidXRlLycgKyBhdHRyaWJ1dGU7XHJcbiAgICBwcm9kdWN0U2VhcmNoQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3Byb2R1Y3Qtc2VhcmNoLyc7XHJcbiAgICBjbXNSZWxhdGVkUHJvZHVjdHNBcGkgPSAocGFnZSkgPT4gJ2Ntcy8nICsgdGhpcy5jb25zdGFudHMuZ2V0TG9jYWxlKCkgKyAnLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3BhZ2UvJyArIHBhZ2UgKyAnL3Byb2R1Y3QtcmVsYXRlZCc7XHJcbiAgICBwcm9kdWN0c0ZpbHRlckFwaSA9IChmaWx0ZXJzID0gJycpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy9wcm9kdWN0LXNlYXJjaC8nICsgJz9sb2NhbGU9JyArIHRoaXMuY29uc3RhbnRzLmdldExvY2FsZSgpICsgZmlsdGVycztcclxuICAgIHNhdmVQcm9kdWN0UmV2aWV3c0FwaSA9IChjb2RlKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvcHJvZHVjdHMvYnktY29kZS8nICsgY29kZSArICcvcmV2aWV3cyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNvbnN0YW50czogQ29uc3RhbnRzLFxyXG4gICAgICAgIHByaXZhdGUgcGFnaW5hdGlvbjogUGFnaW5hdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgZmlsdGVyc1NlcnZpY2U6IEZpbHRlcnNTZXJ2aWNlKSB7XHJcbiAgICAgICAgLy8gU3VzY3JpYmlyc2UgYSBsb3MgY2FtYmlvcyBlbiBlbCByYW5nbyBkZSBwcmVjaW9zXHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLnByaWNlUmFuZ2UkLnN1YnNjcmliZShyYW5nZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJpY2VSYW5nZUZpbHRlcihyYW5nZS5wcmljZV9taW4sIHJhbmdlLnByaWNlX21heCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEZVTkNUSU9OUyAqL1xyXG5cclxuICAgIGdldExhdGVzdFByb2R1Y3RzID0gKGxpbWl0OiBzdHJpbmcgPSAnMCcpOiBPYnNlcnZhYmxlPGFueT4gPT5cclxuICAgICAgICBsaW1pdCA9PSAnMCcgPyB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMubGF0ZXN0UHJvZHVjdHNBcGkoKSkgOlxyXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0V2l0aExpbWl0KHRoaXMubGF0ZXN0UHJvZHVjdHNBcGkoKSwgbGltaXQpO1xyXG5cclxuICAgIGdldExhdGVzdFByb2R1Y3RzQnlDYXRlZ29yeSA9IChjYXRlZ29yeTogc3RyaW5nLCBsaW1pdDogc3RyaW5nID0gJzAnKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgbGltaXQgPT0gJzAnID8gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmxhdGVzdFByb2R1Y3RzQnlDYXRlZ29yeUFwaShjYXRlZ29yeSkpIDpcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldFdpdGhMaW1pdCh0aGlzLmxhdGVzdFByb2R1Y3RzQnlDYXRlZ29yeUFwaShjYXRlZ29yeSksIGxpbWl0KTtcclxuXHJcbiAgICBnZXRQYWdpbmF0ZWQgPSAobGltaXQ6IHN0cmluZywgcGFnZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldFBhZ2luYXRlZCh0aGlzLmxhdGVzdFByb2R1Y3RzQXBpKCksIGxpbWl0LCBwYWdlKTtcclxuXHJcbiAgICBnZXRTcGVjaWZpY1Byb2R1Y3QgPSAoY29kZTogc3RyaW5nLCB2YXJpYW50OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnNwZWNpZmljUHJvZHVjdEFwaShjb2RlLCB2YXJpYW50KSk7XHJcblxyXG4gICAgZ2V0UHJvZHVjdHNCeVNwZWNpYWxNYXJrID0gKHNwZWNpYWxtYXJrLCBsaW1pdDogc3RyaW5nID0gJzAnKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgbGltaXQgPT0gJzAnID8gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnByb2R1Y3RzQnlTcGVjaWFsTWFya0FwaShzcGVjaWFsbWFyaykpIDpcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldFdpdGhMaW1pdCh0aGlzLnByb2R1Y3RzQnlTcGVjaWFsTWFya0FwaShzcGVjaWFsbWFyayksIGxpbWl0KTtcclxuXHJcbiAgICBnZXRSZWxhdGVkUHJvZHVjdHMgPSAoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT5cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMucmVsYXRlZFByb2R1Y3RzQXBpKGtleSkpO1xyXG5cclxuICAgIGdldFByb2R1Y3RWYXJpYW50ID0gKGNvZGU6IHN0cmluZykgPT5cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMucHJvZHVjdFZhcmlhbnRBcGkoY29kZSkpO1xyXG5cclxuICAgIGdldGxhdGVzdFByb2R1Y3RzQnlBdHRyaWJ1dGUgPSAoYXR0cmlidXRlKSA9PlxyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5sYXRlc3RQcm9kdWN0c0J5QXR0cmlidXRlQXBpKGF0dHJpYnV0ZSkpO1xyXG5cclxuICAgIGdldFNlYXJjaGVkUHJvZHVjdHMgPSAoY29udGVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvZHVjdHNTdWJqZWN0Lm5leHQoW10pO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5pbml0aWFsaXplKHRoaXMuZ2VuZXJhdGVGaW5hbEFwaShjb250ZW50KSwgcHJvZHVjdHM/LmxpbWl0IHx8IDgpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5wYWdpbmF0aW9uLm5leHQuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICByZXMgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChyZXMpLFxyXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChudWxsKVxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBnZXRDTVNSZWxhdGVkUHJvZHVjdHMgPSAocGFnZSkgPT5cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuY21zUmVsYXRlZFByb2R1Y3RzQXBpKHBhZ2UpKS5jYXRjaCgoZXJyKSA9PiBvZihudWxsKSk7XHJcblxyXG4gICAgZ2V0UHJvZHVjdHNTZWFyY2hlZCA9IChzZWFyY2hfdmFsdWUsIGZpbHRlcnM/OiBGaWx0ZXJUeXBlW10pID0+IHtcclxuICAgICAgICB0aGlzLmdldFByb2R1Y3RzRm9yRmlsdGVyKG51bGwsIGZpbHRlcnMsIHNlYXJjaF92YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gR3VhcmRhIGxhIHJlc2XDsWEgZGUgdW4gcHJvZHVjdG8uXHJcbiAgICAgKiBAcGFyYW0gY29kZVxyXG4gICAgICogQHBhcmFtIGZvcm1fZGF0YVxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgc2F2ZVJldmlld3MgPSAoY29kZTogc3RyaW5nLCBmb3JtX2RhdGE6IGFueSkgPT4gdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy5zYXZlUHJvZHVjdFJldmlld3NBcGkoY29kZSksIGZvcm1fZGF0YSlcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwYXJhbSBwcm9kdWN0c1xyXG4gICAgICogQHBhcmFtIGZpbHRlcnNcclxuICAgICAqIEBwYXJhbSBzZWFyY2hfdmFsdWVcclxuICAgICAqIEBwYXJhbSBkZWZhdWx0RmlsdGVyc1xyXG4gICAgICovXHJcbiAgICBnZXRQcm9kdWN0c0ZvckZpbHRlciA9IChwcm9kdWN0cz86IHsgdHlwZT86IHN0cmluZywgdmFsdWU/OiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyLCBsYXRlc3Q/OiBib29sZWFuIH0sIGZpbHRlcnM/OiBGaWx0ZXJUeXBlW10sIHNlYXJjaF92YWx1ZT8sIGRlZmF1bHRGaWx0ZXJzPzogRGVmYXVsdEZpbHRlcltdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChbXSk7XHJcbiAgICAgICAgc2VhcmNoX3ZhbHVlID8gdGhpcy5zZWFyY2hfdmFsdWUgPSBzZWFyY2hfdmFsdWUgOiB0aGlzLnNlYXJjaF92YWx1ZSA9ICcnO1xyXG4gICAgICAgIGZpbHRlcnMgJiYgdGhpcy5zZXRGaWx0ZXJzKHByb2R1Y3RzLCBmaWx0ZXJzLCBkZWZhdWx0RmlsdGVycyk7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLmluaXRpYWxpemUodGhpcy5nZW5lcmF0ZUZpbmFsQXBpKHNlYXJjaF92YWx1ZSksIHByb2R1Y3RzPy5saW1pdCB8fCA4KTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiAmJiB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5wYWdpbmF0aW9uLm5leHQuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICByZXMgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChyZXMpLFxyXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChudWxsKVxyXG4gICAgICAgIClcclxuICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlLnNvbWUoZmlsdGVyID0+IGZpbHRlci50eXBlKCkgPT0gJ2R5bmFtaWNzJylcclxuICAgICAgICAgICAgPyB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCh0aGlzLnVwZGF0ZUR5bmFtaWNGaWx0ZXJzKVxyXG4gICAgICAgICAgICA6IHRoaXMucGFnaW5hdGlvbi5nZXROZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RmlsdGVycyA9IChwcm9kdWN0cywgZmlsdGVyczogRmlsdGVyVHlwZVtdLCBkZWZhdWx0RmlsdGVycz86IERlZmF1bHRGaWx0ZXJbXSkgPT4ge1xyXG4gICAgICAgIGxldCBmaW5hbF9maWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xyXG4gICAgICAgIGlmIChmaWx0ZXJzPy5pbmNsdWRlcygnYWxsJykpIGZpbHRlcnMgPSBbJ2F0dHJpYnV0ZXMnLCAnY2F0ZWdvcnknLCAnZHluYW1pY3MnLCAncHJpY2VfcmFuZ2UnLCAnc29ydCddO1xyXG4gICAgICAgIGZpbHRlcnM/LmZvckVhY2goZmlsdGVyID0+IGZpbmFsX2ZpbHRlcnMucHVzaCh0aGlzLmdldEZpbHRlckluc3RhbmNlKGZpbHRlciwgcHJvZHVjdHMpKSk7XHJcbiAgICAgICAgZGVmYXVsdEZpbHRlcnM/LmZvckVhY2goZmlsdGVyRGVmYXVsdCA9PiB7XHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXIgPSBmaW5hbF9maWx0ZXJzLmZpbmQoZmlsdGVyID0+IGZpbHRlci50eXBlKCkgPT0gZmlsdGVyRGVmYXVsdC5maWx0ZXJfdHlwZSk7XHJcbiAgICAgICAgICAgIGZpbHRlciAmJiBmaWx0ZXJEZWZhdWx0LmNvZGVzLmZvckVhY2godmFsdWUgPT4gZmlsdGVyLnNldFNlbGVjdGVkKHZhbHVlKSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsdGVySW5zdGFuY2UgPSAoZmlsdGVyOiBzdHJpbmcsIHByb2R1Y3RzPyk6IEZpbHRlciA9PiB7XHJcbiAgICAgICAgbGV0IGluc3RhbmNlOiBGaWx0ZXI7XHJcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIpIHtcclxuICAgICAgICAgICAgY2FzZSAnY2F0ZWdvcnknOiBpbnN0YW5jZSA9IG5ldyBDYXRlZ29yeUZpbHRlcih0aGlzLm9wdGlvbnMuY2F0ZWdvcmllcywgdGhpcy5vcHRpb25zLmdlbmVyYXRlTWVudSwgcHJvZHVjdHMgPyAocHJvZHVjdHMudHlwZSA9PSAnY2F0ZWdvcmllcycgJiYgcHJvZHVjdHMudmFsdWUpIDogbnVsbCk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdhdHRyaWJ1dGVzJzogaW5zdGFuY2UgPSBuZXcgQXR0cmlidXRlc0ZpbHRlcih0aGlzLm9wdGlvbnMuYXR0cmlidXRlcywgdGhpcy5vcHRpb25zLmdlbmVyYXRlTWVudSwgcHJvZHVjdHMgPyAocHJvZHVjdHMudHlwZSA9PSAnYXR0cmlidXRlcycgJiYgcHJvZHVjdHMudmFsdWUpIDogbnVsbCk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdzb3J0JzogaW5zdGFuY2UgPSBuZXcgU29ydEZpbHRlcih0aGlzLmNvbnN0YW50cyk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdkeW5hbWljcyc6IGluc3RhbmNlID0gbmV3IER5bmFtaWNzRmlsdGVyKCk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdwcmljZV9yYW5nZSc6IGluc3RhbmNlID0gbmV3IFByaWNlUmFuZ2VGaWx0ZXIoKTsgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbnN0YW5jZTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVEeW5hbWljRmlsdGVycyA9IChyZXF1ZXN0KSA9PiB7XHJcbiAgICAgICAgaWYgKCFyZXF1ZXN0Lm9wdGlvbnMpIHJldHVybjtcclxuICAgICAgICBsZXQgZmluYWxfZmlsdGVyczogRmlsdGVyW10gPSB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlO1xyXG4gICAgICAgIGxldCBpbmRleCA9IGZpbmFsX2ZpbHRlcnMuZmluZEluZGV4KGZpbHRlciA9PiBmaWx0ZXIudHlwZSgpID09ICdkeW5hbWljcycpO1xyXG4gICAgICAgIGluZGV4ICYmIGZpbmFsX2ZpbHRlcnNbaW5kZXhdLnNldENvbnRlbnQocmVxdWVzdC5vcHRpb25zKTtcclxuICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TmV4dCA9ICgpOiBib29sZWFuID0+ICF0aGlzLnBhZ2luYXRpb24uaXNGaW5pc2hlZCgpICYmIHRoaXMucGFnaW5hdGlvbi5nZXROZXh0KCk7XHJcblxyXG4gICAgc2V0RmlsdGVyU2VsZWN0ZWQgPSAoZmlsdGVyT2JqOiBGaWx0ZXIsIGZpbHRlckVsZW06IEZpbHRlckVsZW1lbnQpID0+IHtcclxuICAgICAgICBsZXQgZmluYWxfZmlsdGVyczogRmlsdGVyW10gPSB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlO1xyXG4gICAgICAgIGlmIChmaWx0ZXJPYmoudHlwZSgpICE9PSAncHJpY2VfcmFuZ2UnKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IGZpbmFsX2ZpbHRlcnMuZmluZEluZGV4KGZpbHRlciA9PiBmaWx0ZXIudHlwZSgpID09IGZpbHRlck9iai50eXBlKCkpO1xyXG4gICAgICAgICAgICBmaW5hbF9maWx0ZXJzW2luZGV4XS5zZXRTZWxlY3RlZChmaWx0ZXJFbGVtLCBmaWx0ZXJFbGVtLnZhbHVlKTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBFc3RhIHBhcnRlIGRlbCBjb2RpZ28gbG8gcXVlIGhhY2UgZXMgY2hlcXVlYXIgc2Ugc2VhIHVuIGZpbHRybyBkZSBsYSB2aXN0YSwgcGFyYSBjYXJnYXIgZWwgb2JzZXJ2YWJsZVxyXG4gICAgICAgICAgICAgKiBjb24gbG9zIGRhdG9zIGRlbCBtaXNtby4gRGUgbG8gY29udHJhcmlvIHNlIGxvIGNhcmdhIGNvbiBudWxsLiBFc3RlIG9ic2VydmFibGUgZXN0YSBoZWNobyBwYXJhIHF1ZSBlbiBjb2xsZWN0aW9uIHNlXHJcbiAgICAgICAgICAgICAqIHB1ZWRhIGRldGVjdGFyIHNpIGVzIG5lY2VzYXJpbyBoYWNlciB1biBmaWx0cmFkbyBlbiBsYSB2aXN0YS5cclxuICAgICAgICAgICAgICogQWNsYXJhY2nDs246IGhhY2VyIGVzdGUgdGlwbyBkZSBmaWx0cmFkb3MgZXN0YSBtYWwsIHNpIGNyZWNlIG11Y2hvIGxhIHBlcmZvcm1hbmNlIHZhIGEgYmFqYXIsIGxvIGlkZWFsIHNlcmlhIHF1ZVxyXG4gICAgICAgICAgICAgKiBkZXNkZSBiYWNrZW5kIHNlIHB1ZWRhbiBwcm92ZWVyIGVuZHBvaW50cyBwYXJhIHBvZGVyIGZpbHRyYXIgc29icmUgbG9zIGNhbXBvcyBkZXNlYWRvcyB5IG1hbnRlbmVyIGxhIG1pc21hIGxvZ2ljYSBjb25cclxuICAgICAgICAgICAgICogbGEgcXVlIHNlIHZpZW5lIHRyYWJhamFuZG8uXHJcbiAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIChmaWx0ZXJFbGVtLm5vVXJsICE9IHVuZGVmaW5lZCAmJiBmaWx0ZXJFbGVtLm5vVXJsKSA/IHRoaXMuZmlsdGVyc0luVmlld1N1YmplY3QubmV4dChmaWx0ZXJFbGVtKSA6IHRoaXMuZmlsdGVyc0luVmlld1N1YmplY3QubmV4dChudWxsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmlsdGVyc1N1YmplY3QubmV4dChmaW5hbF9maWx0ZXJzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVByb2R1Y3RzRm9yRmlsdGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUHJvZHVjdHNGb3JGaWx0ZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLndhaXRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucHJvZHVjdHNTdWJqZWN0Lm5leHQoW10pO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5pbml0aWFsaXplKHRoaXMuc2VhcmNoX3ZhbHVlID8gdGhpcy5nZW5lcmF0ZUZpbmFsQXBpKHRoaXMuc2VhcmNoX3ZhbHVlKSA6IHRoaXMuZ2VuZXJhdGVGaW5hbEFwaSgpKTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCgpO1xyXG4gICAgICAgIC8vIFNJIFNFIEFDVFVBTElaQVJBTiBMT1MgRklMVFJPUyBESU5BTUlDT1MgRU4gRUwgRlVUVVJPXHJcbiAgICAgICAgLy8gbGV0IGZpbHRlcnNPYmogPSB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlO1xyXG4gICAgICAgIC8vIGZpbHRlcnNPYmouc29tZShmaWx0ZXIgPT4gZmlsdGVyLnR5cGUoKSA9PSAnZHluYW1pY3MnKVxyXG4gICAgICAgIC8vICAgICAgPyB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCh0aGlzLnVwZGF0ZUR5bmFtaWNGaWx0ZXJzKVxyXG4gICAgICAgIC8vICAgICAgOiB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwcm9kdWN0cyAgQXJyYXkuIExpc3RhIGRlIHByb2R1Y3Rvcy5cclxuICAgICAqIEBwYXJhbSB3aXRoT3B0aW9uICd0eXBlJyB0aXBvIGRlIG9wY2nDs24sIGNvZGU6IGPDs2RpZ28gZGUgbGEgb3BjacOzbi4gJ2RlZmF1bHRGaXJzdE9wdGlvbic6IGVuIGNhc28gZGUgcXVlIG5vIHNlIHB1ZWRhIGRlc2RvYmxhciBwb3IgbGEgb3BjacOzbiBpbmRpY2FkYSBzaSBlbCB2YWxvciBlcyB2ZXJkYWRlcm8gc2UgaW50ZW50YXJhIGRlc2RvYmxhciBwb3IgbGEgcHJpbWVyYSBvcGNpw7NuIGFzb2NpYWRhIGFsIHByb2R1Y3RvLlxyXG4gICAgICogJ2NoZWNrSWZTdG9jayc6IGVuIGNhc28gZGUgcXVlIGVzdGEgdmFsb3Igc2VhIHZlcmRhZGVybyBzZSByZWFsaXphIHVuIGNvbnRyb2wgZGUgcXVlIGxhIHZhcmlhbnRlcyBjdWVudGVuIGNvbiBzdG9jayBwYXJhIHNlciB1biBwcm9kdWN0byBkZXNkb2JsYWRvIHBvciBsYSB2YXJpYW50ZSwgc2kgZWwgdmFsb3IgZXMgZmFsc28gbm8gc2UgcmVhbGl6YSBkaWNobyBjb250cm9sIHkgZWwgcHJvZHVjdG8gc2UgZGVzZG9ibGFyYSBjb24gc3RvY2sgZW4gMC5cclxuICAgICAqIEByZXR1cm5zIGFycmVnbG8gY29uIGxvcyBwcm9kdWN0b3MgZGVzZG9ibGFkb3MgcG9yIGxhIG9wY2nDs24gc29saWNpdGFkYS5cclxuICAgICAqIChvcGNpw7NuIHBvciBkZWZlY3RvIHF1ZSBzZSBpbnRlbnRhIGhhY2VyIGVsIGRlc2RvYmxhbWllbnRvICdjb2xvcicsIG8gYmllbiBzaSBlbiBsZSBwYXLDoW1ldHJvIHdpdGhPcHRpb24gZWwgYXRyaWJ1dG8gJ2RlZmF1bHRGaXJzdE9wdGlvbicgZXMgdmVyZGFkZXJvIHNlIGRlc2RvYmxhIHBvciBsYSBwcmltZXJhIG9wY2nDs24gYXNvY2lhZGEgYWwgcHJvZHVjdG8gKVxyXG4gICAgICpcclxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWNpYmUgdW5hIGxpc3RhIGRlIHByb2R1Y3RvcyB5IHJldG9ybmEgbG9zIG1pc21vcyBwcm9kdWN0b3MgdGFudGFzIHZlY2VzIGNvbW8gdmFyaWFudGVzIHRlbmdhLlxyXG4gICAgICogY2FkYSBwcm9kdWN0byByZXRvcm5hZG8gdGVuZHLDoSB1bmEgw7puaWNhIHZhcmlhbnRlLlxyXG4gICAgICovXHJcbiAgICBnZXRQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0gKHByb2R1Y3RzLCB3aXRoT3B0aW9uOiBQYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0geyB0eXBlOiAnY29sb3InLCBjb2RlOiAnY29sb3InLCBkZWZhdWx0Rmlyc3RPcHRpb246IGZhbHNlLCBjaGVja0lmU3RvY2s6IHRydWUgfSkgPT4ge1xyXG5cclxuICAgICAgICAhd2l0aE9wdGlvblsnY29kZSddICYmIHdpdGhPcHRpb25bJ3R5cGUnXSAmJiAod2l0aE9wdGlvblsnY29kZSddID0gd2l0aE9wdGlvblsndHlwZSddKSB8fCAhd2l0aE9wdGlvblsnY29kZSddICYmICh3aXRoT3B0aW9uWydjb2RlJ10gPSAnY29sb3InKVxyXG4gICAgICAgICF3aXRoT3B0aW9uWyd0eXBlJ10gJiYgd2l0aE9wdGlvblsnY29kZSddICYmICh3aXRoT3B0aW9uWyd0eXBlJ10gPSB3aXRoT3B0aW9uWydjb2RlJ10pIHx8ICF3aXRoT3B0aW9uWyd0eXBlJ10gJiYgKHdpdGhPcHRpb25bJ3R5cGUnXSA9ICdjb2xvcicpXHJcbiAgICAgICAgIXdpdGhPcHRpb24uaGFzT3duUHJvcGVydHkoJ2RlZmF1bHRGaXJzdE9wdGlvbicpICYmICh3aXRoT3B0aW9uWydkZWZhdWx0Rmlyc3RPcHRpb24nXSA9IGZhbHNlKVxyXG4gICAgICAgICF3aXRoT3B0aW9uLmhhc093blByb3BlcnR5KCdjaGVja0lmU3RvY2snKSAmJiAod2l0aE9wdGlvblsnY2hlY2tJZlN0b2NrJ10gPSB0cnVlKVxyXG5cclxuICAgICAgICBsZXQgcHJvZHVjdHNVbmlxdWVWYXJpYW50ID0gW107XHJcbiAgICAgICAgcHJvZHVjdHMuZm9yRWFjaChwcm9kdWN0ID0+IHtcclxuICAgICAgICAgICAgbGV0IHZhcmlhbnRzID0gWy4uLnByb2R1Y3Q/LnZhcmlhbnRzXTtcclxuICAgICAgICAgICAgbGV0IG9wdGlvbiA9IHByb2R1Y3Qub3B0aW9ucy5maW5kKG9wdCA9PiBvcHQudHlwZS50b0xvd2VyQ2FzZSgpID09PSB3aXRoT3B0aW9uLnR5cGUudG9Mb3dlckNhc2UoKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAob3B0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWVzLmZvckVhY2gob3B0aW9uVmFsdWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBtb2RpZmllZF9wcm9kdWN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9kdWN0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRfcHJvZHVjdC5vcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvbi50eXBlLnRvTG93ZXJDYXNlKCkgPT0gd2l0aE9wdGlvbi50eXBlLnRvTG93ZXJDYXNlKCkpLnZhbHVlcyA9IFt7IGNvZGU6IG9wdGlvblZhbHVlLmNvZGUsIG5hbWU6IG9wdGlvblZhbHVlLm5hbWUgfV07XHJcbiAgICAgICAgICAgICAgICAgICAgLy9idXNjbyB1bmEgdmFyaWFudGUgY29uIGVzZSBjb2RlIHBhcmEgYXNpZ25hcmxlIGxhIGxpc3RhIGRlIGltYWdlbmVzXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhcmlhbnRBdXggPSB2YXJpYW50cy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50ID0+ICgod2l0aE9wdGlvbi5jaGVja0lmU3RvY2sgJiYgdmFyaWFudC5zdG9jayA+IDApIHx8IHdpdGhPcHRpb24uY2hlY2tJZlN0b2NrID09IGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFyaWFudC5vcHRpb25zLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFyaWFudC5vcHRpb25zLnNvbWUob3AgPT4gKG9wLmhhc093blByb3BlcnR5KHdpdGhPcHRpb24uY29kZS50b0xvd2VyQ2FzZSgpKSB8fCBvcC5oYXNPd25Qcm9wZXJ0eSh3aXRoT3B0aW9uLmNvZGUudG9VcHBlckNhc2UoKSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKG9wW3dpdGhPcHRpb24uY29kZS50b0xvd2VyQ2FzZSgpXSB8fCBvcFt3aXRoT3B0aW9uLmNvZGUudG9VcHBlckNhc2UoKV0pID09PSBvcHRpb25WYWx1ZS5jb2RlKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnRBdXggJiYgcHJvZHVjdHNVbmlxdWVWYXJpYW50LnB1c2godGhpcy5wcm9kdWN0V2l0aFZhcmlhbnRWYWx1ZXMobW9kaWZpZWRfcHJvZHVjdCwgdmFyaWFudEF1eCwgb3B0aW9uVmFsdWUpKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAqIHNlIG1vZGlmaWNhIGVsIGNhc28gcGFyYSBjdWFuZG8gc2UgdG9tYSBlbCBwcmltZXIgYG9wdGlvbmAgZGVsIHByb2R1Y3RvIHBhcmFcclxuICAgICAgICAgICAgICAgICAqIGFybWFyIGxhIGxpc3RhIGRlIHByb2R1Y3RvcyBjb24gdmFyaWFudGVzLlxyXG4gICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICBpZiAod2l0aE9wdGlvbi5kZWZhdWx0Rmlyc3RPcHRpb24gJiYgcHJvZHVjdC5vcHRpb25zPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZmlyc3RPcHRpb25zID0gcHJvZHVjdC5vcHRpb25zWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5vcHRpb25zWzBdLnZhbHVlcy5mb3JFYWNoKG9wdGlvblZhbHVlID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb2RpZmllZF9wcm9kdWN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9kdWN0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkX3Byb2R1Y3Qub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24udHlwZSA9PSBmaXJzdE9wdGlvbnMudHlwZSkudmFsdWVzID0gW3sgY29kZTogb3B0aW9uVmFsdWUuY29kZSwgbmFtZTogb3B0aW9uVmFsdWUubmFtZSB9XTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YXJpYW50QXV4ID0gdmFyaWFudHMuZmluZCh2YXJpYW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YXJpYW50Lm9wdGlvbnMuZmluZChlbGVtID0+IGVsZW1bZmlyc3RPcHRpb25zLmNvZGVdID09IG9wdGlvblZhbHVlLmNvZGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFudEF1eCAmJiB2YXJpYW50QXV4LmltYWdlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudEF1eC5pbWFnZXMgPSBwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2l0aE9wdGlvbi5jaGVja0lmU3RvY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YXJpYW50QXV4ICYmIHZhcmlhbnRBdXguc3RvY2sgPiAwKSA/IHByb2R1Y3RzVW5pcXVlVmFyaWFudC5wdXNoKHRoaXMucHJvZHVjdFdpdGhWYXJpYW50VmFsdWVzKG1vZGlmaWVkX3Byb2R1Y3QsIHZhcmlhbnRBdXgsIG9wdGlvblZhbHVlKSkgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudEF1eCAmJiBwcm9kdWN0c1VuaXF1ZVZhcmlhbnQucHVzaCh0aGlzLnByb2R1Y3RXaXRoVmFyaWFudFZhbHVlcyhtb2RpZmllZF9wcm9kdWN0LCB2YXJpYW50QXV4LCBvcHRpb25WYWx1ZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdHNVbmlxdWVWYXJpYW50LnB1c2gocHJvZHVjdClcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiBwcm9kdWN0c1VuaXF1ZVZhcmlhbnQubGVuZ3RoID4gMCA/IHByb2R1Y3RzVW5pcXVlVmFyaWFudCA6IHByb2R1Y3RzO1xyXG4gICAgfVxyXG5cclxuICAgIHByb2R1Y3RXaXRoVmFyaWFudFZhbHVlcyA9IChwcm9kdWN0LCB2YXJpYW50LCBvcHRpb25WYWx1ZSkgPT4ge1xyXG4gICAgICAgIHByb2R1Y3QucGljdHVyZXNkZWZhdWx0ID0gdmFyaWFudC5pbWFnZXNcclxuICAgICAgICBwcm9kdWN0LnZhcmlhbnRfaWQgPSB2YXJpYW50LmNvZGU7IC8vbG8gZGVqbyBhY2EgaGFzdGEgYXNlZ3VyYXJub3MgZGUgcXVlIG5vIHNlIGVzdGFiYSB1c2FuZG8gZW4gb3RyYSBwYXJ0ZS5cclxuICAgICAgICBwcm9kdWN0LnN0b2NrID0gdmFyaWFudC5zdG9jayB8fCAwOyAvL2xvIGRlam8gYWNhIGhhc3RhIGFzZWd1cmFybm9zIGRlIHF1ZSBubyBzZSBlc3RhYmEgdXNhbmRvIGVuIG90cmEgcGFydGUuXHJcbiAgICAgICAgcHJvZHVjdC5jdXJyZW50T3B0aW9uID0ge1xyXG4gICAgICAgICAgICAuLi5vcHRpb25WYWx1ZSxcclxuICAgICAgICAgICAgcHJvZHVjdENvZGU6IHByb2R1Y3QuaWQsXHJcbiAgICAgICAgICAgIHZhcmlhbnRDb2RlOiB2YXJpYW50LmNvZGUsXHJcbiAgICAgICAgICAgIHN0b2NrOiB2YXJpYW50LnN0b2NrIHx8IDAsXHJcbiAgICAgICAgICAgIGZpbmFsUHJpY2U6IHZhcmlhbnQuc2FsZXByaWNlIHx8IHZhcmlhbnQucHJpY2UgfHwgMCxcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RcclxuICAgIH1cclxuXHJcblxyXG4gICAgY2xlYW5BbGxGaWx0ZXJzID0gKCkgPT4ge1xyXG4gICAgICAgIGxldCBmaW5hbF9maWx0ZXJzOiBGaWx0ZXJbXSA9IHRoaXMuZmlsdGVyc1N1YmplY3QudmFsdWU7XHJcbiAgICAgICAgZmluYWxfZmlsdGVycy5mb3JFYWNoKGZpbHRlciA9PiBmaWx0ZXIucmVzZXQoKSk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzU3ViamVjdC5uZXh0KGZpbmFsX2ZpbHRlcnMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlUHJvZHVjdHNGb3JGaWx0ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogVVRJTFMgQU5EIEZJTFRFUklORyAqL1xyXG5cclxuICAgIGlzV2FpdGluZyA9ICgpID0+IHRoaXMucGFnaW5hdGlvbi53YWl0aW5nO1xyXG4gICAgaXNGaW5pc2hlZCA9ICgpID0+IHRoaXMucGFnaW5hdGlvbi5pc0ZpbmlzaGVkKCk7XHJcblxyXG4gICAgZ2VuZXJhdGVGaW5hbEFwaSA9IChzZWFyY2hfdmFsdWU/KSA9PiB7XHJcbiAgICAgICAgbGV0IGV4dHJhX3BhcmFtcyA9ICcnO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyc1N1YmplY3QudmFsdWUuZm9yRWFjaChmaWx0ZXIgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBleHRyYSA9IGZpbHRlci50b1VybFBhcmFtcygpO1xyXG4gICAgICAgICAgICBleHRyYS5zcGxpdCgnPScpWzFdICE9ICcnID8gZXh0cmFfcGFyYW1zICs9IGV4dHJhIDogbnVsbDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmIChzZWFyY2hfdmFsdWUpIGV4dHJhX3BhcmFtcyArPSAoJyZjcml0ZXJpYVtzZWFyY2hdW3R5cGVdPWNvbnRhaW5zJmNyaXRlcmlhW3NlYXJjaF1bdmFsdWVdPScgKyBzZWFyY2hfdmFsdWUpO1xyXG4gICAgICAgIGlmIChleHRyYV9wYXJhbXMgIT0gJycgJiYgIWV4dHJhX3BhcmFtcy5pbmNsdWRlcygnYXR0cmlidXRlQ29kZXMnKSkge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuZ2V0QXR0cmlidXRlczIoZXh0cmFfcGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvZHVjdHNGaWx0ZXJBcGkoZXh0cmFfcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBmaW5pc2hlZCA9ICgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0+IHRoaXMucGFnaW5hdGlvbi5maW5pc2hlZCQ7XHJcblxyXG4gICAgZ2V0VG90YWwgPSAoKSA9PiB0aGlzLnBhZ2luYXRpb24udG90YWw7XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVQcmljZVJhbmdlRmlsdGVyKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikge1xyXG4gICAgICAgIGNvbnN0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gdGhpcy5maWx0ZXJzU3ViamVjdC52YWx1ZTtcclxuICAgICAgICBjb25zdCBwcmljZVJhbmdlRmlsdGVyID0gZmluYWxfZmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIgaW5zdGFuY2VvZiBQcmljZVJhbmdlRmlsdGVyKTtcclxuXHJcbiAgICAgICAgaWYgKHByaWNlUmFuZ2VGaWx0ZXIpIHtcclxuICAgICAgICAgICAgKHByaWNlUmFuZ2VGaWx0ZXIgYXMgUHJpY2VSYW5nZUZpbHRlcikudXBkYXRlUHJpY2VzKG1pbiwgbWF4KTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJzU3ViamVjdC5uZXh0KGZpbmFsX2ZpbHRlcnMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9wcm9kdWN0cy9wcm9kdWN0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQVUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSTlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUU5RCxPQUFPLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUcxRSxnQ0FBZ0M7QUFDaEMsSUFBSSxRQUFRLEdBQVEsRUFBRSxDQUFDO0FBSXZCO0lBOEJJLHlCQUFvQixVQUE2QixFQUNyQyxTQUFvQixFQUNwQixVQUE2QixFQUM3QixPQUF1QixFQUN4QixjQUE4QjtRQUp6QyxpQkFXQztR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LENBQUMsVUFBQSxLQUFLO1lBQ3ZDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JDLEtBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBa1FPLGdEQUFzQixHQUE5QixVQUErQixHQUFXLEVBQUUsR0FBVztRQUNuRCxJQUFNLGFBQWEsR0FBYSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztRQUMxRCxJQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBQSxNQUFNLElBQUksT0FBQSxNQUFNLFlBQVksZ0JBQWdCLEVBQWxDLENBQWtDLENBQUMsQ0FBQztRQUUxRixJQUFJLGdCQUFnQixFQUFFO1lBQ2pCLGdCQUFxQyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDM0M7SUFDTCxDQUFDOztnQkFyUitCLGlCQUFpQjtnQkFDMUIsU0FBUztnQkFDUixpQkFBaUI7Z0JBQ3BCLGNBQWM7Z0JBQ1IsY0FBYzs7SUFsQ2hDLGVBQWU7UUFEM0IsVUFBVSxFQUFFO09BQ0EsZUFBZSxDQW9UM0I7SUFBRCxzQkFBQztDQUFBLEFBcFRELElBb1RDO1NBcFRZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9tYXAnO1xyXG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XHJcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Byb2R1Y3QnO1xyXG5pbXBvcnQgeyBGaWx0ZXJPcHRpb25WYWx1ZSwgRmlsdGVyT3B0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jaG9vc2Utb3B0aW9ucy9maWx0ZXItb3B0aW9uJztcclxuaW1wb3J0IHsgRmlsdGVyVHlwZSwgRmlsdGVyRWxlbWVudCwgRGVmYXVsdEZpbHRlciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZmlsdGVyJztcclxuaW1wb3J0IHsgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tICcuLi9wYWdpbmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXRlZ29yeUZpbHRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVycy9DYXRlZ29yeUZpbHRlcic7XHJcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vb3B0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXR0cmlidXRlc0ZpbHRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVycy9BdHRyaWJ1dGVzRmlsdGVyJztcclxuaW1wb3J0IHsgRHluYW1pY3NGaWx0ZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlcnMvRGluYW15Y3NGaWx0ZXInO1xyXG5pbXBvcnQgeyBTb3J0RmlsdGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXJzL1NvcnRGaWx0ZXInO1xyXG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlcnMvRmlsdGVyJztcclxuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9jYXRjaCc7XHJcbmltcG9ydCB7IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BhcmFtc0ludGVyZmFjZXMvcGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCc7XHJcbmltcG9ydCB7IEZpbHRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vZmlsdGVycy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJpY2VSYW5nZUZpbHRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVycy9QcmljZVJhbmdlRmlsdGVyJztcclxuXHJcblxyXG4vLyBHZXQgcHJvZHVjdCBmcm9tIExvY2Fsc3RvcmFnZVxyXG5sZXQgcHJvZHVjdHM6IGFueSA9IHt9O1xyXG50eXBlIG9yZGVyX3R5cGUgPSAnYXNjJyB8ICdkZXNjJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFByb2R1Y3RzU2VydmljZSB7XHJcblxyXG4gICAgLyoqIEFUVFJJQlVURVMgKi9cclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSBwcm9kdWN0c1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxQcm9kdWN0W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XHJcbiAgICBwcml2YXRlIGZpbHRlcnNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XHJcbiAgICBwcml2YXRlIGZpbHRlcnNJblZpZXdTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8RmlsdGVyRWxlbWVudD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpXHJcblxyXG4gICAgcHVibGljIGN1cnJlbmN5ID0gJ1VTRCc7XHJcbiAgICBwdWJsaWMgY2F0YWxvZ01vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBwcm9kdWN0cyQgPSB0aGlzLnByb2R1Y3RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgIHB1YmxpYyBmaWx0ZXJzJCA9IHRoaXMuZmlsdGVyc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBwdWJsaWMgZmlsdGVyc0luVmlldyQgPSB0aGlzLmZpbHRlcnNJblZpZXdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHByaXZhdGUgc2VhcmNoX3ZhbHVlOiBTdHJpbmc7XHJcblxyXG4gICAgLyoqIEFQSVMgKi9cclxuXHJcbiAgICBsYXRlc3RQcm9kdWN0c0J5Q2F0ZWdvcnlBcGkgPSAoY2F0ZWdvcnkpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy90YXhvbi1wcm9kdWN0cy9ieS1jb2RlLycgKyBjYXRlZ29yeTtcclxuICAgIGxhdGVzdFByb2R1Y3RzQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3Byb2R1Y3QtbGF0ZXN0Lyc7XHJcbiAgICBzcGVjaWZpY1Byb2R1Y3RBcGkgPSAoY29kZSwgdmFyaWFudCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3Byb2R1Y3RzL2J5LWNvZGUvJyArICh2YXJpYW50ID8gJ3ZhcmlhbnQvJyA6ICcnKSArIGNvZGUgKyAnP2xvY2FsZT0nICsgdGhpcy5jb25zdGFudHMuZ2V0TG9jYWxlKCk7XHJcbiAgICBwcm9kdWN0c0J5U3BlY2lhbE1hcmtBcGkgPSAoc3BlY2lhbG1hcmspID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdGFudHMuZ2V0VmVyc2lvbigpICsgJy8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy9zcGVjaWFsLW1hcmtzLycgKyBzcGVjaWFsbWFyayArICcvcHJvZHVjdHMvJztcclxuICAgIHJlbGF0ZWRQcm9kdWN0c0FwaSA9IChrZXkpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy9wcm9kdWN0cy9yZWxhdGVkL2J5LWNvZGUvJyArIGtleSArICc/bG9jYWxlPScgKyB0aGlzLmNvbnN0YW50cy5nZXRMb2NhbGUoKTtcclxuICAgIHByb2R1Y3RWYXJpYW50QXBpID0gKGNvZGUpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy9wcm9kdWN0cy9ieS1jb2RlL3ZhcmlhbnQvJyArIGNvZGU7XHJcbiAgICBsYXRlc3RQcm9kdWN0c0J5QXR0cmlidXRlQXBpID0gKGF0dHJpYnV0ZSkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3Byb2R1Y3RzL2J5LWF0dHJpYnV0ZS8nICsgYXR0cmlidXRlO1xyXG4gICAgcHJvZHVjdFNlYXJjaEFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy9wcm9kdWN0LXNlYXJjaC8nO1xyXG4gICAgY21zUmVsYXRlZFByb2R1Y3RzQXBpID0gKHBhZ2UpID0+ICdjbXMvJyArIHRoaXMuY29uc3RhbnRzLmdldExvY2FsZSgpICsgJy8nICsgdGhpcy5jb25zdGFudHMuZ2V0Q2hhbm5lbCgpICsgJy9wYWdlLycgKyBwYWdlICsgJy9wcm9kdWN0LXJlbGF0ZWQnO1xyXG4gICAgcHJvZHVjdHNGaWx0ZXJBcGkgPSAoZmlsdGVycyA9ICcnKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RhbnRzLmdldENoYW5uZWwoKSArICcvcHJvZHVjdC1zZWFyY2gvJyArICc/bG9jYWxlPScgKyB0aGlzLmNvbnN0YW50cy5nZXRMb2NhbGUoKSArIGZpbHRlcnM7XHJcbiAgICBzYXZlUHJvZHVjdFJldmlld3NBcGkgPSAoY29kZSkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0YW50cy5nZXRDaGFubmVsKCkgKyAnL3Byb2R1Y3RzL2J5LWNvZGUvJyArIGNvZGUgKyAnL3Jldmlld3MnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjb25zdGFudHM6IENvbnN0YW50cyxcclxuICAgICAgICBwcml2YXRlIHBhZ2luYXRpb246IFBhZ2luYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgb3B0aW9uczogT3B0aW9uc1NlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGZpbHRlcnNTZXJ2aWNlOiBGaWx0ZXJzU2VydmljZSkge1xyXG4gICAgICAgIC8vIFN1c2NyaWJpcnNlIGEgbG9zIGNhbWJpb3MgZW4gZWwgcmFuZ28gZGUgcHJlY2lvc1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5wcmljZVJhbmdlJC5zdWJzY3JpYmUocmFuZ2UgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbWluID0gTWF0aC5mbG9vcihyYW5nZS5wcmljZV9taW4pO1xyXG4gICAgICAgICAgICBsZXQgbWF4ID0gTWF0aC5jZWlsKHJhbmdlLnByaWNlX21heCk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJpY2VSYW5nZUZpbHRlcihtaW4sIG1heCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEZVTkNUSU9OUyAqL1xyXG5cclxuICAgIGdldExhdGVzdFByb2R1Y3RzID0gKGxpbWl0OiBzdHJpbmcgPSAnMCcpOiBPYnNlcnZhYmxlPGFueT4gPT5cclxuICAgICAgICBsaW1pdCA9PSAnMCcgPyB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMubGF0ZXN0UHJvZHVjdHNBcGkoKSkgOlxyXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0V2l0aExpbWl0KHRoaXMubGF0ZXN0UHJvZHVjdHNBcGkoKSwgbGltaXQpO1xyXG5cclxuICAgIGdldExhdGVzdFByb2R1Y3RzQnlDYXRlZ29yeSA9IChjYXRlZ29yeTogc3RyaW5nLCBsaW1pdDogc3RyaW5nID0gJzAnKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgbGltaXQgPT0gJzAnID8gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmxhdGVzdFByb2R1Y3RzQnlDYXRlZ29yeUFwaShjYXRlZ29yeSkpIDpcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldFdpdGhMaW1pdCh0aGlzLmxhdGVzdFByb2R1Y3RzQnlDYXRlZ29yeUFwaShjYXRlZ29yeSksIGxpbWl0KTtcclxuXHJcbiAgICBnZXRQYWdpbmF0ZWQgPSAobGltaXQ6IHN0cmluZywgcGFnZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldFBhZ2luYXRlZCh0aGlzLmxhdGVzdFByb2R1Y3RzQXBpKCksIGxpbWl0LCBwYWdlKTtcclxuXHJcbiAgICBnZXRTcGVjaWZpY1Byb2R1Y3QgPSAoY29kZTogc3RyaW5nLCB2YXJpYW50OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnNwZWNpZmljUHJvZHVjdEFwaShjb2RlLCB2YXJpYW50KSk7XHJcblxyXG4gICAgZ2V0UHJvZHVjdHNCeVNwZWNpYWxNYXJrID0gKHNwZWNpYWxtYXJrLCBsaW1pdDogc3RyaW5nID0gJzAnKTogT2JzZXJ2YWJsZTxhbnk+ID0+XHJcbiAgICAgICAgbGltaXQgPT0gJzAnID8gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnByb2R1Y3RzQnlTcGVjaWFsTWFya0FwaShzcGVjaWFsbWFyaykpIDpcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldFdpdGhMaW1pdCh0aGlzLnByb2R1Y3RzQnlTcGVjaWFsTWFya0FwaShzcGVjaWFsbWFyayksIGxpbWl0KTtcclxuXHJcbiAgICBnZXRSZWxhdGVkUHJvZHVjdHMgPSAoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT5cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMucmVsYXRlZFByb2R1Y3RzQXBpKGtleSkpO1xyXG5cclxuICAgIGdldFByb2R1Y3RWYXJpYW50ID0gKGNvZGU6IHN0cmluZykgPT5cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMucHJvZHVjdFZhcmlhbnRBcGkoY29kZSkpO1xyXG5cclxuICAgIGdldGxhdGVzdFByb2R1Y3RzQnlBdHRyaWJ1dGUgPSAoYXR0cmlidXRlKSA9PlxyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5sYXRlc3RQcm9kdWN0c0J5QXR0cmlidXRlQXBpKGF0dHJpYnV0ZSkpO1xyXG5cclxuICAgIGdldFNlYXJjaGVkUHJvZHVjdHMgPSAoY29udGVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvZHVjdHNTdWJqZWN0Lm5leHQoW10pO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5pbml0aWFsaXplKHRoaXMuZ2VuZXJhdGVGaW5hbEFwaShjb250ZW50KSwgcHJvZHVjdHM/LmxpbWl0IHx8IDgpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5wYWdpbmF0aW9uLm5leHQuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICByZXMgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChyZXMpLFxyXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChudWxsKVxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBnZXRDTVNSZWxhdGVkUHJvZHVjdHMgPSAocGFnZSkgPT5cclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuY21zUmVsYXRlZFByb2R1Y3RzQXBpKHBhZ2UpKS5jYXRjaCgoZXJyKSA9PiBvZihudWxsKSk7XHJcblxyXG4gICAgZ2V0UHJvZHVjdHNTZWFyY2hlZCA9IChzZWFyY2hfdmFsdWUsIGZpbHRlcnM/OiBGaWx0ZXJUeXBlW10pID0+IHtcclxuICAgICAgICB0aGlzLmdldFByb2R1Y3RzRm9yRmlsdGVyKG51bGwsIGZpbHRlcnMsIHNlYXJjaF92YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gR3VhcmRhIGxhIHJlc2XDsWEgZGUgdW4gcHJvZHVjdG8uXHJcbiAgICAgKiBAcGFyYW0gY29kZVxyXG4gICAgICogQHBhcmFtIGZvcm1fZGF0YVxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgc2F2ZVJldmlld3MgPSAoY29kZTogc3RyaW5nLCBmb3JtX2RhdGE6IGFueSkgPT4gdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy5zYXZlUHJvZHVjdFJldmlld3NBcGkoY29kZSksIGZvcm1fZGF0YSlcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwYXJhbSBwcm9kdWN0c1xyXG4gICAgICogQHBhcmFtIGZpbHRlcnNcclxuICAgICAqIEBwYXJhbSBzZWFyY2hfdmFsdWVcclxuICAgICAqIEBwYXJhbSBkZWZhdWx0RmlsdGVyc1xyXG4gICAgICovXHJcbiAgICBnZXRQcm9kdWN0c0ZvckZpbHRlciA9IChwcm9kdWN0cz86IHsgdHlwZT86IHN0cmluZywgdmFsdWU/OiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyLCBsYXRlc3Q/OiBib29sZWFuIH0sIGZpbHRlcnM/OiBGaWx0ZXJUeXBlW10sIHNlYXJjaF92YWx1ZT8sIGRlZmF1bHRGaWx0ZXJzPzogRGVmYXVsdEZpbHRlcltdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChbXSk7XHJcbiAgICAgICAgc2VhcmNoX3ZhbHVlID8gdGhpcy5zZWFyY2hfdmFsdWUgPSBzZWFyY2hfdmFsdWUgOiB0aGlzLnNlYXJjaF92YWx1ZSA9ICcnO1xyXG4gICAgICAgIGZpbHRlcnMgJiYgdGhpcy5zZXRGaWx0ZXJzKHByb2R1Y3RzLCBmaWx0ZXJzLCBkZWZhdWx0RmlsdGVycyk7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLmluaXRpYWxpemUodGhpcy5nZW5lcmF0ZUZpbmFsQXBpKHNlYXJjaF92YWx1ZSksIHByb2R1Y3RzPy5saW1pdCB8fCA4KTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiAmJiB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5wYWdpbmF0aW9uLm5leHQuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICByZXMgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChyZXMpLFxyXG4gICAgICAgICAgICBlcnIgPT4gdGhpcy5wcm9kdWN0c1N1YmplY3QubmV4dChudWxsKVxyXG4gICAgICAgIClcclxuICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlLnNvbWUoZmlsdGVyID0+IGZpbHRlci50eXBlKCkgPT0gJ2R5bmFtaWNzJylcclxuICAgICAgICAgICAgPyB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCh0aGlzLnVwZGF0ZUR5bmFtaWNGaWx0ZXJzKVxyXG4gICAgICAgICAgICA6IHRoaXMucGFnaW5hdGlvbi5nZXROZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RmlsdGVycyA9IChwcm9kdWN0cywgZmlsdGVyczogRmlsdGVyVHlwZVtdLCBkZWZhdWx0RmlsdGVycz86IERlZmF1bHRGaWx0ZXJbXSkgPT4ge1xyXG4gICAgICAgIGxldCBmaW5hbF9maWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xyXG4gICAgICAgIGlmIChmaWx0ZXJzPy5pbmNsdWRlcygnYWxsJykpIGZpbHRlcnMgPSBbJ2F0dHJpYnV0ZXMnLCAnY2F0ZWdvcnknLCAnZHluYW1pY3MnLCAncHJpY2VfcmFuZ2UnLCAnc29ydCddO1xyXG4gICAgICAgIGZpbHRlcnM/LmZvckVhY2goZmlsdGVyID0+IGZpbmFsX2ZpbHRlcnMucHVzaCh0aGlzLmdldEZpbHRlckluc3RhbmNlKGZpbHRlciwgcHJvZHVjdHMpKSk7XHJcbiAgICAgICAgZGVmYXVsdEZpbHRlcnM/LmZvckVhY2goZmlsdGVyRGVmYXVsdCA9PiB7XHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXIgPSBmaW5hbF9maWx0ZXJzLmZpbmQoZmlsdGVyID0+IGZpbHRlci50eXBlKCkgPT0gZmlsdGVyRGVmYXVsdC5maWx0ZXJfdHlwZSk7XHJcbiAgICAgICAgICAgIGZpbHRlciAmJiBmaWx0ZXJEZWZhdWx0LmNvZGVzLmZvckVhY2godmFsdWUgPT4gZmlsdGVyLnNldFNlbGVjdGVkKHZhbHVlKSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsdGVySW5zdGFuY2UgPSAoZmlsdGVyOiBzdHJpbmcsIHByb2R1Y3RzPyk6IEZpbHRlciA9PiB7XHJcbiAgICAgICAgbGV0IGluc3RhbmNlOiBGaWx0ZXI7XHJcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIpIHtcclxuICAgICAgICAgICAgY2FzZSAnY2F0ZWdvcnknOiBpbnN0YW5jZSA9IG5ldyBDYXRlZ29yeUZpbHRlcih0aGlzLm9wdGlvbnMuY2F0ZWdvcmllcywgdGhpcy5vcHRpb25zLmdlbmVyYXRlTWVudSwgcHJvZHVjdHMgPyAocHJvZHVjdHMudHlwZSA9PSAnY2F0ZWdvcmllcycgJiYgcHJvZHVjdHMudmFsdWUpIDogbnVsbCk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdhdHRyaWJ1dGVzJzogaW5zdGFuY2UgPSBuZXcgQXR0cmlidXRlc0ZpbHRlcih0aGlzLm9wdGlvbnMuYXR0cmlidXRlcywgdGhpcy5vcHRpb25zLmdlbmVyYXRlTWVudSwgcHJvZHVjdHMgPyAocHJvZHVjdHMudHlwZSA9PSAnYXR0cmlidXRlcycgJiYgcHJvZHVjdHMudmFsdWUpIDogbnVsbCk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdzb3J0JzogaW5zdGFuY2UgPSBuZXcgU29ydEZpbHRlcih0aGlzLmNvbnN0YW50cyk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdkeW5hbWljcyc6IGluc3RhbmNlID0gbmV3IER5bmFtaWNzRmlsdGVyKCk7IGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdwcmljZV9yYW5nZSc6IGluc3RhbmNlID0gbmV3IFByaWNlUmFuZ2VGaWx0ZXIoKTsgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbnN0YW5jZTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVEeW5hbWljRmlsdGVycyA9IChyZXF1ZXN0KSA9PiB7XHJcbiAgICAgICAgaWYgKCFyZXF1ZXN0Lm9wdGlvbnMpIHJldHVybjtcclxuICAgICAgICBsZXQgZmluYWxfZmlsdGVyczogRmlsdGVyW10gPSB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlO1xyXG4gICAgICAgIGxldCBpbmRleCA9IGZpbmFsX2ZpbHRlcnMuZmluZEluZGV4KGZpbHRlciA9PiBmaWx0ZXIudHlwZSgpID09ICdkeW5hbWljcycpO1xyXG4gICAgICAgIGluZGV4ICYmIGZpbmFsX2ZpbHRlcnNbaW5kZXhdLnNldENvbnRlbnQocmVxdWVzdC5vcHRpb25zKTtcclxuICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TmV4dCA9ICgpOiBib29sZWFuID0+ICF0aGlzLnBhZ2luYXRpb24uaXNGaW5pc2hlZCgpICYmIHRoaXMucGFnaW5hdGlvbi5nZXROZXh0KCk7XHJcblxyXG4gICAgc2V0RmlsdGVyU2VsZWN0ZWQgPSAoZmlsdGVyT2JqOiBGaWx0ZXIsIGZpbHRlckVsZW06IEZpbHRlckVsZW1lbnQpID0+IHtcclxuICAgICAgICBsZXQgZmluYWxfZmlsdGVyczogRmlsdGVyW10gPSB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlO1xyXG4gICAgICAgIGlmIChmaWx0ZXJPYmoudHlwZSgpICE9PSAncHJpY2VfcmFuZ2UnKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IGZpbmFsX2ZpbHRlcnMuZmluZEluZGV4KGZpbHRlciA9PiBmaWx0ZXIudHlwZSgpID09IGZpbHRlck9iai50eXBlKCkpO1xyXG4gICAgICAgICAgICBmaW5hbF9maWx0ZXJzW2luZGV4XS5zZXRTZWxlY3RlZChmaWx0ZXJFbGVtLCBmaWx0ZXJFbGVtLnZhbHVlKTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBFc3RhIHBhcnRlIGRlbCBjb2RpZ28gbG8gcXVlIGhhY2UgZXMgY2hlcXVlYXIgc2Ugc2VhIHVuIGZpbHRybyBkZSBsYSB2aXN0YSwgcGFyYSBjYXJnYXIgZWwgb2JzZXJ2YWJsZVxyXG4gICAgICAgICAgICAgKiBjb24gbG9zIGRhdG9zIGRlbCBtaXNtby4gRGUgbG8gY29udHJhcmlvIHNlIGxvIGNhcmdhIGNvbiBudWxsLiBFc3RlIG9ic2VydmFibGUgZXN0YSBoZWNobyBwYXJhIHF1ZSBlbiBjb2xsZWN0aW9uIHNlXHJcbiAgICAgICAgICAgICAqIHB1ZWRhIGRldGVjdGFyIHNpIGVzIG5lY2VzYXJpbyBoYWNlciB1biBmaWx0cmFkbyBlbiBsYSB2aXN0YS5cclxuICAgICAgICAgICAgICogQWNsYXJhY2nDs246IGhhY2VyIGVzdGUgdGlwbyBkZSBmaWx0cmFkb3MgZXN0YSBtYWwsIHNpIGNyZWNlIG11Y2hvIGxhIHBlcmZvcm1hbmNlIHZhIGEgYmFqYXIsIGxvIGlkZWFsIHNlcmlhIHF1ZVxyXG4gICAgICAgICAgICAgKiBkZXNkZSBiYWNrZW5kIHNlIHB1ZWRhbiBwcm92ZWVyIGVuZHBvaW50cyBwYXJhIHBvZGVyIGZpbHRyYXIgc29icmUgbG9zIGNhbXBvcyBkZXNlYWRvcyB5IG1hbnRlbmVyIGxhIG1pc21hIGxvZ2ljYSBjb25cclxuICAgICAgICAgICAgICogbGEgcXVlIHNlIHZpZW5lIHRyYWJhamFuZG8uXHJcbiAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIChmaWx0ZXJFbGVtLm5vVXJsICE9IHVuZGVmaW5lZCAmJiBmaWx0ZXJFbGVtLm5vVXJsKSA/IHRoaXMuZmlsdGVyc0luVmlld1N1YmplY3QubmV4dChmaWx0ZXJFbGVtKSA6IHRoaXMuZmlsdGVyc0luVmlld1N1YmplY3QubmV4dChudWxsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmlsdGVyc1N1YmplY3QubmV4dChmaW5hbF9maWx0ZXJzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVByb2R1Y3RzRm9yRmlsdGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUHJvZHVjdHNGb3JGaWx0ZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uLndhaXRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucHJvZHVjdHNTdWJqZWN0Lm5leHQoW10pO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5pbml0aWFsaXplKHRoaXMuc2VhcmNoX3ZhbHVlID8gdGhpcy5nZW5lcmF0ZUZpbmFsQXBpKHRoaXMuc2VhcmNoX3ZhbHVlKSA6IHRoaXMuZ2VuZXJhdGVGaW5hbEFwaSgpKTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCgpO1xyXG4gICAgICAgIC8vIFNJIFNFIEFDVFVBTElaQVJBTiBMT1MgRklMVFJPUyBESU5BTUlDT1MgRU4gRUwgRlVUVVJPXHJcbiAgICAgICAgLy8gbGV0IGZpbHRlcnNPYmogPSB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlO1xyXG4gICAgICAgIC8vIGZpbHRlcnNPYmouc29tZShmaWx0ZXIgPT4gZmlsdGVyLnR5cGUoKSA9PSAnZHluYW1pY3MnKVxyXG4gICAgICAgIC8vICAgICAgPyB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCh0aGlzLnVwZGF0ZUR5bmFtaWNGaWx0ZXJzKVxyXG4gICAgICAgIC8vICAgICAgOiB0aGlzLnBhZ2luYXRpb24uZ2V0TmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwcm9kdWN0cyAgQXJyYXkuIExpc3RhIGRlIHByb2R1Y3Rvcy5cclxuICAgICAqIEBwYXJhbSB3aXRoT3B0aW9uICd0eXBlJyB0aXBvIGRlIG9wY2nDs24sIGNvZGU6IGPDs2RpZ28gZGUgbGEgb3BjacOzbi4gJ2RlZmF1bHRGaXJzdE9wdGlvbic6IGVuIGNhc28gZGUgcXVlIG5vIHNlIHB1ZWRhIGRlc2RvYmxhciBwb3IgbGEgb3BjacOzbiBpbmRpY2FkYSBzaSBlbCB2YWxvciBlcyB2ZXJkYWRlcm8gc2UgaW50ZW50YXJhIGRlc2RvYmxhciBwb3IgbGEgcHJpbWVyYSBvcGNpw7NuIGFzb2NpYWRhIGFsIHByb2R1Y3RvLlxyXG4gICAgICogJ2NoZWNrSWZTdG9jayc6IGVuIGNhc28gZGUgcXVlIGVzdGEgdmFsb3Igc2VhIHZlcmRhZGVybyBzZSByZWFsaXphIHVuIGNvbnRyb2wgZGUgcXVlIGxhIHZhcmlhbnRlcyBjdWVudGVuIGNvbiBzdG9jayBwYXJhIHNlciB1biBwcm9kdWN0byBkZXNkb2JsYWRvIHBvciBsYSB2YXJpYW50ZSwgc2kgZWwgdmFsb3IgZXMgZmFsc28gbm8gc2UgcmVhbGl6YSBkaWNobyBjb250cm9sIHkgZWwgcHJvZHVjdG8gc2UgZGVzZG9ibGFyYSBjb24gc3RvY2sgZW4gMC5cclxuICAgICAqIEByZXR1cm5zIGFycmVnbG8gY29uIGxvcyBwcm9kdWN0b3MgZGVzZG9ibGFkb3MgcG9yIGxhIG9wY2nDs24gc29saWNpdGFkYS5cclxuICAgICAqIChvcGNpw7NuIHBvciBkZWZlY3RvIHF1ZSBzZSBpbnRlbnRhIGhhY2VyIGVsIGRlc2RvYmxhbWllbnRvICdjb2xvcicsIG8gYmllbiBzaSBlbiBsZSBwYXLDoW1ldHJvIHdpdGhPcHRpb24gZWwgYXRyaWJ1dG8gJ2RlZmF1bHRGaXJzdE9wdGlvbicgZXMgdmVyZGFkZXJvIHNlIGRlc2RvYmxhIHBvciBsYSBwcmltZXJhIG9wY2nDs24gYXNvY2lhZGEgYWwgcHJvZHVjdG8gKVxyXG4gICAgICpcclxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWNpYmUgdW5hIGxpc3RhIGRlIHByb2R1Y3RvcyB5IHJldG9ybmEgbG9zIG1pc21vcyBwcm9kdWN0b3MgdGFudGFzIHZlY2VzIGNvbW8gdmFyaWFudGVzIHRlbmdhLlxyXG4gICAgICogY2FkYSBwcm9kdWN0byByZXRvcm5hZG8gdGVuZHLDoSB1bmEgw7puaWNhIHZhcmlhbnRlLlxyXG4gICAgICovXHJcbiAgICBnZXRQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0gKHByb2R1Y3RzLCB3aXRoT3B0aW9uOiBQYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0geyB0eXBlOiAnY29sb3InLCBjb2RlOiAnY29sb3InLCBkZWZhdWx0Rmlyc3RPcHRpb246IGZhbHNlLCBjaGVja0lmU3RvY2s6IHRydWUgfSkgPT4ge1xyXG5cclxuICAgICAgICAhd2l0aE9wdGlvblsnY29kZSddICYmIHdpdGhPcHRpb25bJ3R5cGUnXSAmJiAod2l0aE9wdGlvblsnY29kZSddID0gd2l0aE9wdGlvblsndHlwZSddKSB8fCAhd2l0aE9wdGlvblsnY29kZSddICYmICh3aXRoT3B0aW9uWydjb2RlJ10gPSAnY29sb3InKVxyXG4gICAgICAgICF3aXRoT3B0aW9uWyd0eXBlJ10gJiYgd2l0aE9wdGlvblsnY29kZSddICYmICh3aXRoT3B0aW9uWyd0eXBlJ10gPSB3aXRoT3B0aW9uWydjb2RlJ10pIHx8ICF3aXRoT3B0aW9uWyd0eXBlJ10gJiYgKHdpdGhPcHRpb25bJ3R5cGUnXSA9ICdjb2xvcicpXHJcbiAgICAgICAgIXdpdGhPcHRpb24uaGFzT3duUHJvcGVydHkoJ2RlZmF1bHRGaXJzdE9wdGlvbicpICYmICh3aXRoT3B0aW9uWydkZWZhdWx0Rmlyc3RPcHRpb24nXSA9IGZhbHNlKVxyXG4gICAgICAgICF3aXRoT3B0aW9uLmhhc093blByb3BlcnR5KCdjaGVja0lmU3RvY2snKSAmJiAod2l0aE9wdGlvblsnY2hlY2tJZlN0b2NrJ10gPSB0cnVlKVxyXG5cclxuICAgICAgICBsZXQgcHJvZHVjdHNVbmlxdWVWYXJpYW50ID0gW107XHJcbiAgICAgICAgcHJvZHVjdHMuZm9yRWFjaChwcm9kdWN0ID0+IHtcclxuICAgICAgICAgICAgbGV0IHZhcmlhbnRzID0gWy4uLnByb2R1Y3Q/LnZhcmlhbnRzXTtcclxuICAgICAgICAgICAgbGV0IG9wdGlvbiA9IHByb2R1Y3Qub3B0aW9ucy5maW5kKG9wdCA9PiBvcHQudHlwZS50b0xvd2VyQ2FzZSgpID09PSB3aXRoT3B0aW9uLnR5cGUudG9Mb3dlckNhc2UoKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAob3B0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWVzLmZvckVhY2gob3B0aW9uVmFsdWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBtb2RpZmllZF9wcm9kdWN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9kdWN0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRfcHJvZHVjdC5vcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvbi50eXBlLnRvTG93ZXJDYXNlKCkgPT0gd2l0aE9wdGlvbi50eXBlLnRvTG93ZXJDYXNlKCkpLnZhbHVlcyA9IFt7IGNvZGU6IG9wdGlvblZhbHVlLmNvZGUsIG5hbWU6IG9wdGlvblZhbHVlLm5hbWUgfV07XHJcbiAgICAgICAgICAgICAgICAgICAgLy9idXNjbyB1bmEgdmFyaWFudGUgY29uIGVzZSBjb2RlIHBhcmEgYXNpZ25hcmxlIGxhIGxpc3RhIGRlIGltYWdlbmVzXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhcmlhbnRBdXggPSB2YXJpYW50cy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50ID0+ICgod2l0aE9wdGlvbi5jaGVja0lmU3RvY2sgJiYgdmFyaWFudC5zdG9jayA+IDApIHx8IHdpdGhPcHRpb24uY2hlY2tJZlN0b2NrID09IGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFyaWFudC5vcHRpb25zLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFyaWFudC5vcHRpb25zLnNvbWUob3AgPT4gKG9wLmhhc093blByb3BlcnR5KHdpdGhPcHRpb24uY29kZS50b0xvd2VyQ2FzZSgpKSB8fCBvcC5oYXNPd25Qcm9wZXJ0eSh3aXRoT3B0aW9uLmNvZGUudG9VcHBlckNhc2UoKSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKG9wW3dpdGhPcHRpb24uY29kZS50b0xvd2VyQ2FzZSgpXSB8fCBvcFt3aXRoT3B0aW9uLmNvZGUudG9VcHBlckNhc2UoKV0pID09PSBvcHRpb25WYWx1ZS5jb2RlKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnRBdXggJiYgcHJvZHVjdHNVbmlxdWVWYXJpYW50LnB1c2godGhpcy5wcm9kdWN0V2l0aFZhcmlhbnRWYWx1ZXMobW9kaWZpZWRfcHJvZHVjdCwgdmFyaWFudEF1eCwgb3B0aW9uVmFsdWUpKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAqIHNlIG1vZGlmaWNhIGVsIGNhc28gcGFyYSBjdWFuZG8gc2UgdG9tYSBlbCBwcmltZXIgYG9wdGlvbmAgZGVsIHByb2R1Y3RvIHBhcmFcclxuICAgICAgICAgICAgICAgICAqIGFybWFyIGxhIGxpc3RhIGRlIHByb2R1Y3RvcyBjb24gdmFyaWFudGVzLlxyXG4gICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICBpZiAod2l0aE9wdGlvbi5kZWZhdWx0Rmlyc3RPcHRpb24gJiYgcHJvZHVjdC5vcHRpb25zPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZmlyc3RPcHRpb25zID0gcHJvZHVjdC5vcHRpb25zWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5vcHRpb25zWzBdLnZhbHVlcy5mb3JFYWNoKG9wdGlvblZhbHVlID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb2RpZmllZF9wcm9kdWN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9kdWN0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkX3Byb2R1Y3Qub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24udHlwZSA9PSBmaXJzdE9wdGlvbnMudHlwZSkudmFsdWVzID0gW3sgY29kZTogb3B0aW9uVmFsdWUuY29kZSwgbmFtZTogb3B0aW9uVmFsdWUubmFtZSB9XTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YXJpYW50QXV4ID0gdmFyaWFudHMuZmluZCh2YXJpYW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YXJpYW50Lm9wdGlvbnMuZmluZChlbGVtID0+IGVsZW1bZmlyc3RPcHRpb25zLmNvZGVdID09IG9wdGlvblZhbHVlLmNvZGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFudEF1eCAmJiB2YXJpYW50QXV4LmltYWdlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudEF1eC5pbWFnZXMgPSBwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2l0aE9wdGlvbi5jaGVja0lmU3RvY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YXJpYW50QXV4ICYmIHZhcmlhbnRBdXguc3RvY2sgPiAwKSA/IHByb2R1Y3RzVW5pcXVlVmFyaWFudC5wdXNoKHRoaXMucHJvZHVjdFdpdGhWYXJpYW50VmFsdWVzKG1vZGlmaWVkX3Byb2R1Y3QsIHZhcmlhbnRBdXgsIG9wdGlvblZhbHVlKSkgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudEF1eCAmJiBwcm9kdWN0c1VuaXF1ZVZhcmlhbnQucHVzaCh0aGlzLnByb2R1Y3RXaXRoVmFyaWFudFZhbHVlcyhtb2RpZmllZF9wcm9kdWN0LCB2YXJpYW50QXV4LCBvcHRpb25WYWx1ZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdHNVbmlxdWVWYXJpYW50LnB1c2gocHJvZHVjdClcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiBwcm9kdWN0c1VuaXF1ZVZhcmlhbnQubGVuZ3RoID4gMCA/IHByb2R1Y3RzVW5pcXVlVmFyaWFudCA6IHByb2R1Y3RzO1xyXG4gICAgfVxyXG5cclxuICAgIHByb2R1Y3RXaXRoVmFyaWFudFZhbHVlcyA9IChwcm9kdWN0LCB2YXJpYW50LCBvcHRpb25WYWx1ZSkgPT4ge1xyXG4gICAgICAgIHByb2R1Y3QucGljdHVyZXNkZWZhdWx0ID0gdmFyaWFudC5pbWFnZXNcclxuICAgICAgICBwcm9kdWN0LnZhcmlhbnRfaWQgPSB2YXJpYW50LmNvZGU7IC8vbG8gZGVqbyBhY2EgaGFzdGEgYXNlZ3VyYXJub3MgZGUgcXVlIG5vIHNlIGVzdGFiYSB1c2FuZG8gZW4gb3RyYSBwYXJ0ZS5cclxuICAgICAgICBwcm9kdWN0LnN0b2NrID0gdmFyaWFudC5zdG9jayB8fCAwOyAvL2xvIGRlam8gYWNhIGhhc3RhIGFzZWd1cmFybm9zIGRlIHF1ZSBubyBzZSBlc3RhYmEgdXNhbmRvIGVuIG90cmEgcGFydGUuXHJcbiAgICAgICAgcHJvZHVjdC5jdXJyZW50T3B0aW9uID0ge1xyXG4gICAgICAgICAgICAuLi5vcHRpb25WYWx1ZSxcclxuICAgICAgICAgICAgcHJvZHVjdENvZGU6IHByb2R1Y3QuaWQsXHJcbiAgICAgICAgICAgIHZhcmlhbnRDb2RlOiB2YXJpYW50LmNvZGUsXHJcbiAgICAgICAgICAgIHN0b2NrOiB2YXJpYW50LnN0b2NrIHx8IDAsXHJcbiAgICAgICAgICAgIGZpbmFsUHJpY2U6IHZhcmlhbnQuc2FsZXByaWNlIHx8IHZhcmlhbnQucHJpY2UgfHwgMCxcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RcclxuICAgIH1cclxuXHJcblxyXG4gICAgY2xlYW5BbGxGaWx0ZXJzID0gKCkgPT4ge1xyXG4gICAgICAgIGxldCBmaW5hbF9maWx0ZXJzOiBGaWx0ZXJbXSA9IHRoaXMuZmlsdGVyc1N1YmplY3QudmFsdWU7XHJcbiAgICAgICAgZmluYWxfZmlsdGVycy5mb3JFYWNoKGZpbHRlciA9PiBmaWx0ZXIucmVzZXQoKSk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzU3ViamVjdC5uZXh0KGZpbmFsX2ZpbHRlcnMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlUHJvZHVjdHNGb3JGaWx0ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogVVRJTFMgQU5EIEZJTFRFUklORyAqL1xyXG5cclxuICAgIGlzV2FpdGluZyA9ICgpID0+IHRoaXMucGFnaW5hdGlvbi53YWl0aW5nO1xyXG4gICAgaXNGaW5pc2hlZCA9ICgpID0+IHRoaXMucGFnaW5hdGlvbi5pc0ZpbmlzaGVkKCk7XHJcblxyXG4gICAgZ2VuZXJhdGVGaW5hbEFwaSA9IChzZWFyY2hfdmFsdWU/KSA9PiB7XHJcbiAgICAgICAgbGV0IGV4dHJhX3BhcmFtcyA9ICcnO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyc1N1YmplY3QudmFsdWUuZm9yRWFjaChmaWx0ZXIgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBleHRyYSA9IGZpbHRlci50b1VybFBhcmFtcygpO1xyXG4gICAgICAgICAgICBleHRyYS5zcGxpdCgnPScpWzFdICE9ICcnID8gZXh0cmFfcGFyYW1zICs9IGV4dHJhIDogbnVsbDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmIChzZWFyY2hfdmFsdWUpIGV4dHJhX3BhcmFtcyArPSAoJyZjcml0ZXJpYVtzZWFyY2hdW3R5cGVdPWNvbnRhaW5zJmNyaXRlcmlhW3NlYXJjaF1bdmFsdWVdPScgKyBzZWFyY2hfdmFsdWUpO1xyXG4gICAgICAgIGlmIChleHRyYV9wYXJhbXMgIT0gJycgJiYgIWV4dHJhX3BhcmFtcy5pbmNsdWRlcygnYXR0cmlidXRlQ29kZXMnKSkge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuZ2V0QXR0cmlidXRlczIoZXh0cmFfcGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvZHVjdHNGaWx0ZXJBcGkoZXh0cmFfcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBmaW5pc2hlZCA9ICgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0+IHRoaXMucGFnaW5hdGlvbi5maW5pc2hlZCQ7XHJcblxyXG4gICAgZ2V0VG90YWwgPSAoKSA9PiB0aGlzLnBhZ2luYXRpb24udG90YWw7XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVQcmljZVJhbmdlRmlsdGVyKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikge1xyXG4gICAgICAgIGNvbnN0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gdGhpcy5maWx0ZXJzU3ViamVjdC52YWx1ZTtcclxuICAgICAgICBjb25zdCBwcmljZVJhbmdlRmlsdGVyID0gZmluYWxfZmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIgaW5zdGFuY2VvZiBQcmljZVJhbmdlRmlsdGVyKTtcclxuXHJcbiAgICAgICAgaWYgKHByaWNlUmFuZ2VGaWx0ZXIpIHtcclxuICAgICAgICAgICAgKHByaWNlUmFuZ2VGaWx0ZXIgYXMgUHJpY2VSYW5nZUZpbHRlcikudXBkYXRlUHJpY2VzKG1pbiwgbWF4KTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJzU3ViamVjdC5uZXh0KGZpbmFsX2ZpbHRlcnMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1322,8 +1322,8 @@ class PriceRangeFilter extends Filter {
1322
1322
  };
1323
1323
  // Método para actualizar los valores seleccionados
1324
1324
  this.setSelected = (min, max) => {
1325
- this.currentMinPrice = min;
1326
- this.currentMaxPrice = max;
1325
+ this.currentMinPrice = (min !== this.minPrice) ? min : null;
1326
+ this.currentMaxPrice = (max !== this.maxPrice) ? max : null;
1327
1327
  };
1328
1328
  // Retorna los valores seleccionados (rango de precios)
1329
1329
  this.getSelectedRange = () => {
@@ -1352,6 +1352,12 @@ class PriceRangeFilter extends Filter {
1352
1352
  updatePrices(min, max) {
1353
1353
  this.minPrice = min;
1354
1354
  this.maxPrice = max;
1355
+ if (this.currentMinPrice !== null && (this.currentMinPrice < min || this.currentMinPrice > max)) {
1356
+ this.currentMinPrice = null;
1357
+ }
1358
+ if (this.currentMaxPrice !== null && (this.currentMaxPrice > max || this.currentMaxPrice < min)) {
1359
+ this.currentMaxPrice = null;
1360
+ }
1355
1361
  }
1356
1362
  }
1357
1363
 
@@ -1714,7 +1720,9 @@ let ProductsService = class ProductsService {
1714
1720
  this.getTotal = () => this.pagination.total;
1715
1721
  // Suscribirse a los cambios en el rango de precios
1716
1722
  this.pagination.priceRange$.subscribe(range => {
1717
- this.updatePriceRangeFilter(range.price_min, range.price_max);
1723
+ let min = Math.floor(range.price_min);
1724
+ let max = Math.ceil(range.price_max);
1725
+ this.updatePriceRangeFilter(min, max);
1718
1726
  });
1719
1727
  }
1720
1728
  updatePriceRangeFilter(min, max) {