ng-easycommerce 0.0.638 → 0.0.640

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.
@@ -53,7 +53,7 @@ var SuccessEcComponent = /** @class */ (function (_super) {
53
53
  SuccessEcComponent.prototype.ngOnInit = function () {
54
54
  var _this = this;
55
55
  this.checkoutService.order$.subscribe(function (res) {
56
- var _a, _b, _c, _d, _e, _f, _g, _h;
56
+ var _a, _b, _c, _d, _e;
57
57
  //console.log('LO QUE LLEGA EN ORDEN', res);
58
58
  ((_a = res) === null || _a === void 0 ? void 0 : _a.number) ? _this.params = {
59
59
  external_reference: res.number,
@@ -61,7 +61,11 @@ var SuccessEcComponent = /** @class */ (function (_super) {
61
61
  //this.payments = [{method:{code:'bank_transsfer'}}]
62
62
  _this.payments = ((_b = res) === null || _b === void 0 ? void 0 : _b.payments) ? res.payments : null;
63
63
  if (((_e = (_d = (_c = _this.payments) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.method) === null || _e === void 0 ? void 0 : _e.code) && _this.isPlaceToPay(_this.payments[0].method.code)) {
64
- _this.totalAmount = (_h = (_g = (_f = res) === null || _f === void 0 ? void 0 : _f.totals) === null || _g === void 0 ? void 0 : _g.total, (_h !== null && _h !== void 0 ? _h : null));
64
+ var stored = localStorage.getItem('total_amount');
65
+ if (stored !== null) {
66
+ _this.totalAmount = parseFloat(stored);
67
+ localStorage.removeItem('total_amount');
68
+ }
65
69
  var now = new Date();
66
70
  _this.paymentDate = now.toLocaleDateString('es-AR', {
67
71
  day: '2-digit',
@@ -92,4 +96,4 @@ var SuccessEcComponent = /** @class */ (function (_super) {
92
96
  return SuccessEcComponent;
93
97
  }(ComponentHelper));
94
98
  export { SuccessEcComponent };
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VjY2Vzcy1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2NoZWNrb3V0LWVjL3N1Y2Nlc3MtZWMvc3VjY2Vzcy1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQU85RTtJQUF3QyxzQ0FBZTtJQWVuRCw0QkFBc0IsWUFBNEIsRUFDcEMsV0FBd0IsRUFDM0IsTUFBYyxFQUNYLGVBQWdDLEVBQ25DLGFBQTRCLEVBQzVCLE1BQWlCO1FBTDVCLFlBTUksaUJBQU8sU0FFVjtRQVJxQixrQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFDcEMsaUJBQVcsR0FBWCxXQUFXLENBQWE7UUFDM0IsWUFBTSxHQUFOLE1BQU0sQ0FBUTtRQUNYLHFCQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNuQyxtQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixZQUFNLEdBQU4sTUFBTSxDQUFXO1FBbEJyQixrQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixZQUFNLEdBQVEsRUFBRSxDQUFDO1FBQ2pCLGFBQU8sR0FBRyxJQUFJLENBQUM7UUFHZixpQkFBVyxHQUFXLElBQUksQ0FBQztRQUMzQixpQkFBVyxHQUFXLElBQUksQ0FBQztRQStDbEM7Ozs7V0FJRztRQUNILG1CQUFhLEdBQUcsVUFBQyxTQUFpQixJQUFjLE9BQUEsS0FBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLENBQUMsSUFBSSxJQUFJLFNBQVMsRUFBdkIsQ0FBdUIsQ0FBQyxFQUFsRCxDQUFrRCxDQUFBO1FBRWxHLHdCQUFrQixHQUFHLFVBQUMsSUFBWSxJQUFLLE9BQUEsSUFBSSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxFQUEvRCxDQUErRCxDQUFDO1FBQ3ZHLGtCQUFZLEdBQUcsVUFBQyxJQUFZLElBQUssT0FBQSxJQUFJLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUF6RCxDQUF5RCxDQUFBO1FBekN0RixLQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7O0lBQ3hCLENBQUM7SUFFRCxxQ0FBUSxHQUFSO1FBQUEsaUJBNEJDO1FBMUJHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FDakMsVUFBQSxHQUFHOztZQUNDLDRDQUE0QztZQUM1QyxPQUFBLEdBQUcsMENBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsTUFBTSxHQUFHO2dCQUN4QixrQkFBa0IsRUFBRSxHQUFHLENBQUMsTUFBTTthQUNqQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7WUFDUixvREFBb0Q7WUFDcEQsS0FBSSxDQUFDLFFBQVEsR0FBRyxPQUFBLEdBQUcsMENBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7WUFFbkQsSUFBSSxtQkFBQSxLQUFJLENBQUMsUUFBUSwwQ0FBRyxDQUFDLDJDQUFHLE1BQU0sMENBQUUsSUFBSSxLQUFJLEtBQUksQ0FBQyxZQUFZLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3JGLEtBQUksQ0FBQyxXQUFXLHFCQUFHLEdBQUcsMENBQUUsTUFBTSwwQ0FBRSxLQUFLLHVDQUFJLElBQUksRUFBQSxDQUFDO2dCQUU5QyxJQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN2QixLQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUU7b0JBQy9DLEdBQUcsRUFBRSxTQUFTO29CQUNkLEtBQUssRUFBRSxTQUFTO29CQUNoQixJQUFJLEVBQUUsU0FBUztpQkFDbEIsQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDLENBQ0osQ0FBQztRQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsS0FBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQWpCLENBQWlCLENBQUMsQ0FBQTtRQUU3RCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDbkIsQ0FBQzs7Z0JBdENtQyxjQUFjO2dCQUN2QixXQUFXO2dCQUNuQixNQUFNO2dCQUNNLGVBQWU7Z0JBQ3BCLGFBQWE7Z0JBQ3BCLFNBQVM7O0lBcEJuQixrQkFBa0I7UUFMOUIsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLHNCQUFzQjtZQUNoQywrdklBQTBDOztTQUU3QyxDQUFDO09BQ1csa0JBQWtCLENBaUU5QjtJQUFELHlCQUFDO0NBQUEsQUFqRUQsQ0FBd0MsZUFBZSxHQWlFdEQ7U0FqRVksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBCbG9ja3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYmxvY2tzL2Jsb2Nrcy5zZXJ2aWNlJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IENoZWNrb3V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NoZWNrb3V0L2NoZWNrb3V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1vcmRlci1zdWNjZXNzLWVjJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc3VjY2Vzcy1lYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3VjY2Vzcy1lYy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFN1Y2Nlc3NFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBwdWJsaWMgb3JkZXJEZXRhaWxzID0ge307XG4gICAgcHVibGljIHBhcmFtczogYW55ID0ge307XG4gICAgcHVibGljIGZyb21fbXAgPSB0cnVlO1xuICAgIHB1YmxpYyBwYXltZW50cztcbiAgICBwdWJsaWMgYmxvY2tzO1xuICAgIHB1YmxpYyB0b3RhbEFtb3VudDogbnVtYmVyID0gbnVsbDtcbiAgICBwdWJsaWMgcGF5bWVudERhdGU6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gdmFyaWFibGUgcGFyYSByZWNpYmlyIHVuIHRlbXBsYXRlIGVuIGNhc28gZGUgcXVlIHNlIHF1aWVyYSBjYW1iaWFyIGxhIGluZm9ybWFjaW9uIHBvciBkZWZlY3RvLlxuICAgICAqL1xuICAgIHB1YmxpYyBub3RJbmZvVG9NZXRob2RUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBhY3RpdmVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcm90ZWN0ZWQgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByb3RlY3RlZCBjaGVja291dFNlcnZpY2U6IENoZWNrb3V0U2VydmljZSxcbiAgICAgICAgcHVibGljIGJsb2Nrc1NlcnZpY2U6IEJsb2Nrc1NlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBjb25zdHM6IENvbnN0YW50cykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuXG4gICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLm9yZGVyJC5zdWJzY3JpYmUoXG4gICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ0xPIFFVRSBMTEVHQSBFTiBPUkRFTicsIHJlcyk7XG4gICAgICAgICAgICAgICAgcmVzPy5udW1iZXIgPyB0aGlzLnBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfcmVmZXJlbmNlOiByZXMubnVtYmVyLFxuICAgICAgICAgICAgICAgIH0gOiBudWxsXG4gICAgICAgICAgICAgICAgLy90aGlzLnBheW1lbnRzID0gW3ttZXRob2Q6e2NvZGU6J2JhbmtfdHJhbnNzZmVyJ319XVxuICAgICAgICAgICAgICAgIHRoaXMucGF5bWVudHMgPSByZXM/LnBheW1lbnRzID8gcmVzLnBheW1lbnRzIDogbnVsbFxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGF5bWVudHM/LlswXT8ubWV0aG9kPy5jb2RlICYmIHRoaXMuaXNQbGFjZVRvUGF5KHRoaXMucGF5bWVudHNbMF0ubWV0aG9kLmNvZGUpKSB7ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbEFtb3VudCA9IHJlcz8udG90YWxzPy50b3RhbCA/PyBudWxsOyAgICAgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXltZW50RGF0ZSA9IG5vdy50b0xvY2FsZURhdGVTdHJpbmcoJ2VzLUFSJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtb250aDogJzItZGlnaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuYmxvY2tzU2VydmljZS5nZXRCbG9ja3MoJ2luZm9fbWV0b2RvX3BhZ28nKVxuICAgICAgICB0aGlzLmJsb2Nrc1NlcnZpY2UuYmxvY2tzLnN1YnNjcmliZShyZXMgPT4gdGhpcy5ibG9ja3MgPSByZXMpXG5cbiAgICAgICAgdGhpcy5lY09uSW5pdCgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENoZXF1ZWEgc2kgZXhpc3RlIHVuIGJsb3F1ZSByZWNpYmlkbyBwb3IgcGFyYW1ldHJvLlxuICAgICAqIEBwYXJhbSBjb2RlQmxvY2sgY29kaWdvIGRlbCBibG9xdWUuXG4gICAgICogQHJldHVybnMgZWwgYmxvcXVlIHNpIGxvIGVuY29udHJvLlxuICAgICAqL1xuICAgIGNvbnRhaW5zQmxvY2sgPSAoY29kZUJsb2NrOiBzdHJpbmcpOiBib29sZWFuID0+IHRoaXMuYmxvY2tzLmZpbmQoYmxvY2sgPT4gYmxvY2suY29kZSA9PSBjb2RlQmxvY2spXG5cbiAgICBpc0JhbGFuY2VJbkFjY291bnQgPSAoY29kZTogc3RyaW5nKSA9PiBjb2RlICYmIGNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcygnYmFsYW5jZV9pbl9hY2NvdW50Jyk7XG4gICAgaXNQbGFjZVRvUGF5ID0gKGNvZGU6IHN0cmluZykgPT4gY29kZSAmJiBjb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3BsYWNlX3RvX3BheScpXG5cbn1cbiJdfQ==
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VjY2Vzcy1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2NoZWNrb3V0LWVjL3N1Y2Nlc3MtZWMvc3VjY2Vzcy1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQU85RTtJQUF3QyxzQ0FBZTtJQWVuRCw0QkFBc0IsWUFBNEIsRUFDcEMsV0FBd0IsRUFDM0IsTUFBYyxFQUNYLGVBQWdDLEVBQ25DLGFBQTRCLEVBQzVCLE1BQWlCO1FBTDVCLFlBTUksaUJBQU8sU0FFVjtRQVJxQixrQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFDcEMsaUJBQVcsR0FBWCxXQUFXLENBQWE7UUFDM0IsWUFBTSxHQUFOLE1BQU0sQ0FBUTtRQUNYLHFCQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNuQyxtQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixZQUFNLEdBQU4sTUFBTSxDQUFXO1FBbEJyQixrQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixZQUFNLEdBQVEsRUFBRSxDQUFDO1FBQ2pCLGFBQU8sR0FBRyxJQUFJLENBQUM7UUFHZixpQkFBVyxHQUFXLElBQUksQ0FBQztRQUMz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b21wb25lbnQsIE9uSW5pdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uLy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IEJsb2Nrc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ibG9ja3MvYmxvY2tzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hlY2tvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2hlY2tvdXQvY2hlY2tvdXQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLW9yZGVyLXN1Y2Nlc3MtZWMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdWNjZXNzLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdWNjZXNzLWVjLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU3VjY2Vzc0VjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIHB1YmxpYyBvcmRlckRldGFpbHMgPSB7fTtcbiAgICBwdWJsaWMgcGFyYW1zOiBhbnkgPSB7fTtcbiAgICBwdWJsaWMgZnJvbV9tcCA9IHRydWU7XG4gICAgcHVibGljIHBheW1lbnRzO1xuICAgIHB1YmxpYyBibG9ja3M7XG4gICAgcHVibGljIHRvdGFsQW1vdW50OiBudW1iZXIgPSBudWxsO1xuICAgIHB1YmxpYyBwYXltZW50RGF0ZTogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiB2YXJpYWJsZSBwYXJhIHJlY2liaXIgdW4gdGVtcGxhdGUgZW4gY2FzbyBkZSBxdWUgc2UgcXVpZXJhIGNhbWJpYXIgbGEgaW5mb3JtYWNpb24gcG9yIGRlZmVjdG8uXG4gICAgICovXG4gICAgcHVibGljIG5vdEluZm9Ub01ldGhvZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGFjdGl2ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByb3RlY3RlZCBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJvdGVjdGVkIGNoZWNrb3V0U2VydmljZTogQ2hlY2tvdXRTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgYmxvY2tzU2VydmljZTogQmxvY2tzU2VydmljZSxcbiAgICAgICAgcHVibGljIGNvbnN0czogQ29uc3RhbnRzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG5cbiAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2Uub3JkZXIkLnN1YnNjcmliZShcbiAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnTE8gUVVFIExMRUdBIEVOIE9SREVOJywgcmVzKTtcbiAgICAgICAgICAgICAgICByZXM/Lm51bWJlciA/IHRoaXMucGFyYW1zID0ge1xuICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF9yZWZlcmVuY2U6IHJlcy5udW1iZXIsXG4gICAgICAgICAgICAgICAgfSA6IG51bGxcbiAgICAgICAgICAgICAgICAvL3RoaXMucGF5bWVudHMgPSBbe21ldGhvZDp7Y29kZTonYmFua190cmFuc3NmZXInfX1dXG4gICAgICAgICAgICAgICAgdGhpcy5wYXltZW50cyA9IHJlcz8ucGF5bWVudHMgPyByZXMucGF5bWVudHMgOiBudWxsXG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXltZW50cz8uWzBdPy5tZXRob2Q/LmNvZGUgJiYgdGhpcy5pc1BsYWNlVG9QYXkodGhpcy5wYXltZW50c1swXS5tZXRob2QuY29kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RvdGFsX2Ftb3VudCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcmVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdGFsQW1vdW50ID0gcGFyc2VGbG9hdChzdG9yZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3RvdGFsX2Ftb3VudCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXltZW50RGF0ZSA9IG5vdy50b0xvY2FsZURhdGVTdHJpbmcoJ2VzLUFSJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtb250aDogJzItZGlnaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuYmxvY2tzU2VydmljZS5nZXRCbG9ja3MoJ2luZm9fbWV0b2RvX3BhZ28nKVxuICAgICAgICB0aGlzLmJsb2Nrc1NlcnZpY2UuYmxvY2tzLnN1YnNjcmliZShyZXMgPT4gdGhpcy5ibG9ja3MgPSByZXMpXG5cbiAgICAgICAgdGhpcy5lY09uSW5pdCgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENoZXF1ZWEgc2kgZXhpc3RlIHVuIGJsb3F1ZSByZWNpYmlkbyBwb3IgcGFyYW1ldHJvLlxuICAgICAqIEBwYXJhbSBjb2RlQmxvY2sgY29kaWdvIGRlbCBibG9xdWUuXG4gICAgICogQHJldHVybnMgZWwgYmxvcXVlIHNpIGxvIGVuY29udHJvLlxuICAgICAqL1xuICAgIGNvbnRhaW5zQmxvY2sgPSAoY29kZUJsb2NrOiBzdHJpbmcpOiBib29sZWFuID0+IHRoaXMuYmxvY2tzLmZpbmQoYmxvY2sgPT4gYmxvY2suY29kZSA9PSBjb2RlQmxvY2spXG5cbiAgICBpc0JhbGFuY2VJbkFjY291bnQgPSAoY29kZTogc3RyaW5nKSA9PiBjb2RlICYmIGNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcygnYmFsYW5jZV9pbl9hY2NvdW50Jyk7XG4gICAgaXNQbGFjZVRvUGF5ID0gKGNvZGU6IHN0cmluZykgPT4gY29kZSAmJiBjb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3BsYWNlX3RvX3BheScpXG5cbn1cbiJdfQ==
@@ -39,6 +39,10 @@ var PlaceToPayEcComponent = /** @class */ (function (_super) {
39
39
  _this.ready = new EventEmitter();
40
40
  _this.loading = false;
41
41
  _this.closeModal = '';
42
+ _this.hasPreviousFailure = false;
43
+ _this.previousFailureAmount = null;
44
+ _this.previousFailureDate = null;
45
+ _this.buttonText = 'Pagar';
42
46
  _this.dataRedirect = function () {
43
47
  return _this.consts.getUrlBase() + 'shop-api/' + _this.consts.getChannel() + '/place-to-pay/' + _this.cartService.cart_token + '/process-payment';
44
48
  };
@@ -61,17 +65,33 @@ var PlaceToPayEcComponent = /** @class */ (function (_super) {
61
65
  var _a, _b, _c, _d;
62
66
  var state = _this.closeModal !== '' ? _this.closeModal : localStorage.getItem('state');
63
67
  !state && ((_a = _this.ventana) === null || _a === void 0 ? void 0 : _a.closed) && (state = 'cancel');
68
+ _this.hasPreviousFailure = false;
64
69
  _this.loading = true;
65
70
  if (state) {
66
- _this.loading = false;
67
71
  localStorage.removeItem('state');
68
72
  if (state === 'success' || state === 'pending') {
69
73
  (_b = _this.ventana) === null || _b === void 0 ? void 0 : _b.close();
70
74
  _this.ready.emit(true);
71
75
  return;
72
76
  }
77
+ _this.loading = false;
73
78
  if (state === 'failure' || state === 'cancel') {
74
79
  (_c = _this.ventana) === null || _c === void 0 ? void 0 : _c.close();
80
+ if (state === 'failure') {
81
+ var amt = localStorage.getItem('total_amount');
82
+ if (amt) {
83
+ _this.hasPreviousFailure = true;
84
+ _this.previousFailureAmount = parseFloat(amt);
85
+ _this.previousFailureDate = new Date().toLocaleDateString('es-AR', {
86
+ day: '2-digit',
87
+ month: '2-digit',
88
+ year: 'numeric',
89
+ });
90
+ _this.buttonText = 'Reintentar pago';
91
+ localStorage.removeItem('total_amount');
92
+ localStorage.removeItem('payment_date');
93
+ }
94
+ }
75
95
  _this.getPreference();
76
96
  _this.processError(state === 'cancel' ? 'Se canceló el pago con Place to Pay' : '');
77
97
  return;
@@ -134,11 +154,11 @@ var PlaceToPayEcComponent = /** @class */ (function (_super) {
134
154
  PlaceToPayEcComponent = __decorate([
135
155
  Component({
136
156
  selector: 'app-place-to-pay-ec',
137
- template: "<div class=\"text-center\">\n <ng-container *ngIf=\"url; else loadingUrl\">\n <ng-container *ngIf=\"!loading; else loadingTemp\">\n <button (click)=\"iniciar()\" class=\"btn btn-outline-secondary rounded-0 comprar mt-3\">Pagar</button>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #loadingUrl>\n <div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n <app-loading-full-ec></app-loading-full-ec>\n </div>\n</ng-template>\n\n<ng-template #loadingTemp>\n <div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n <h3>Procesando el pago por Place to Pay</h3>\n <h5>Recuerde hacer click en \"Volver al sitio\" desde Place to Pay para finalizar la compra.</h5>\n <app-loading-full-ec></app-loading-full-ec>\n </div>\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-5\">\n <hr>\n </div>\n <div class=\"col-2 text-center\">\n <label>o</label>\n </div>\n <div class=\"col-5\">\n <hr>\n </div>\n </div>\n </div>\n <div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n <button (click)=\"clickClose()\" class=\"btn btn-outline-secondary rounded-0 comprar\">Cancelar pago</button>\n </div>\n</ng-template>",
157
+ template: "<div class=\"text-center\">\n <ng-container *ngIf=\"url; else loadingUrl\">\n <ng-container *ngIf=\"!loading; else loadingTemp\">\n <button (click)=\"iniciar()\" class=\"btn btn-outline-secondary rounded-0 comprar mt-3\">\n {{ buttonText }}\n </button>\n\n <!-- Mensaje de intento previo fallido -->\n <div *ngIf=\"hasPreviousFailure\" class=\"alert alert-danger mt-3\">\n El pago no se pudo realizar el {{ previousFailureDate }}\n por un monto de {{ previousFailureAmount | ecCurrencySymbol }}.\n </div>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #loadingUrl>\n <div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n <app-loading-full-ec></app-loading-full-ec>\n </div>\n</ng-template>\n\n<ng-template #loadingTemp>\n <div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n <h3>Procesando el pago por Place to Pay</h3>\n <h5>Recuerde hacer click en \"Volver al sitio\" desde Place to Pay para finalizar la compra.</h5>\n <app-loading-full-ec></app-loading-full-ec>\n </div>\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-5\">\n <hr>\n </div>\n <div class=\"col-2 text-center\">\n <label>o</label>\n </div>\n <div class=\"col-5\">\n <hr>\n </div>\n </div>\n </div>\n <div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n <button (click)=\"clickClose()\" class=\"btn btn-outline-secondary rounded-0 comprar\">Cancelar pago</button>\n </div>\n</ng-template>",
138
158
  styles: [""]
139
159
  })
140
160
  ], PlaceToPayEcComponent);
141
161
  return PlaceToPayEcComponent;
142
162
  }(ComponentHelper));
143
163
  export { PlaceToPayEcComponent };
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtdG8tcGF5LWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9lYy1jb21wb25lbnQvd2lkZ2V0cy1lYy9wbGFjZS10by1wYXktZWMvcGxhY2UtdG8tcGF5LWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBT2pEO0lBQTJDLHlDQUFlO0lBZ0J0RCwrQkFDVyxRQUFtQixFQUNuQixVQUE2QixFQUM3QixhQUEyQixFQUMzQixNQUFpQixFQUNqQixXQUF3QixFQUN4QixZQUE0QjtRQU52QyxZQVFJLGlCQUFPLFNBRVY7UUFUVSxjQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGdCQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixtQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixZQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGlCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGtCQUFZLEdBQVosWUFBWSxDQUFnQjtRQXBCOUIsWUFBTSxHQUFHLElBQUksQ0FBQztRQUNkLGtCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBR2hCLFdBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTlCLGFBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsZ0JBQVUsR0FBRyxFQUFFLENBQUM7UUFHYixrQkFBWSxHQUFHO1lBQ3JCLE9BQUEsS0FBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxXQUFXLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxnQkFBZ0IsR0FBRyxLQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxrQkFBa0I7UUFBdkksQ0FBdUksQ0FBQztRQXVCNUksYUFBTyxHQUFHO1lBQ04sS0FBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsS0FBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsS0FBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQyxLQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFBO1FBRUQsdUJBQWlCLEdBQUc7WUFDaEIsY0FBYyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQTtRQUVELGdCQUFVLEdBQUc7O1lBQ1QsS0FBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7WUFDM0IsTUFBQSxLQUFJLENBQUMsT0FBTywwQ0FBRSxLQUFLLEdBQUc7UUFDMUIsQ0FBQyxDQUFBO1FBRUQsZUFBUyxHQUFHOztZQUNSLElBQUksS0FBSyxHQUFHLEtBQUksQ0FBQyxVQUFVLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JGLENBQUMsS0FBSyxXQUFJLEtBQUksQ0FBQyxPQUFPLDBDQUFFLE1BQU0sQ0FBQSxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1lBRXJELEtBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksS0FBSyxFQUFFO2dCQUNQLEtBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUVqQyxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtvQkFDNUMsTUFBQSxLQUFJLENBQUMsT0FBTywwQ0FBRSxLQUFLLEdBQUc7b0JBQ3RCLEtBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN0QixPQUFPO2lCQUNWO2dCQUNELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssUUFBUSxFQUFFO29CQUMzQyxNQUFBLEtBQUksQ0FBQyxPQUFPLDBDQUFFLEtBQUssR0FBRztvQkFDdEIsS0FBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNyQixLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDbkYsT0FBTztpQkFDVjtnQkFFRCxNQUFBLEtBQUksQ0FBQyxPQUFPLDBDQUFFLEtBQUssR0FBRztnQkFDdEIsS0FBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdEIsT0FBTzthQUNWO1lBRUQsVUFBVSxDQUFDO2dCQUNQLEtBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDYixDQUFDLENBQUE7UUFFRCxrQkFBWSxHQUFHLFVBQUMsR0FBRztZQUNmLEtBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFBO1FBRUQsbUJBQWEsR0FBRztZQUNaLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM1RCxVQUFBLEdBQUc7O2dCQUNDLElBQUksT0FBQSxHQUFHLENBQUMsTUFBTSwwQ0FBRSxNQUFNLE1BQUssSUFBSSxFQUFFO29CQUM3QixLQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7aUJBQzdCO3FCQUFNO29CQUNILEtBQUksQ0FBQyxZQUFZLENBQUMsT0FBQSxHQUFHLENBQUMsTUFBTSwwQ0FBRSxPQUFPLEtBQUksd0NBQXdDLENBQUMsQ0FBQztpQkFDdEY7WUFDTCxDQUFDLEVBQ0QsVUFBQSxHQUFHLElBQUksT0FBQSxLQUFJLENBQUMsWUFBWSxDQUFDLDREQUE0RCxDQUFDLEVBQS9FLENBQStFLENBQ3pGLENBQUM7UUFDTixDQUFDLENBQUE7UUEzRUcsS0FBSSxDQUFDLGFBQWEsRUFBRSxDQUFDOztJQUN6QixDQUFDO0lBRUQsd0NBQVEsR0FBUjtRQUNJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELDJDQUFXLEdBQVg7UUFDSSw2Q0FBNkM7SUFDakQsQ0FBQzs7Z0JBbEJvQixTQUFTO2dCQUNQLGlCQUFpQjtnQkFDZCxZQUFZO2dCQUNuQixTQUFTO2dCQUNKLFdBQVc7Z0JBQ1YsY0FBYzs7SUFwQjlCO1FBQVIsS0FBSyxFQUFFO3lEQUFlO0lBQ2Q7UUFBUixLQUFLLEVBQUU7K0RBQWtCO0lBQ2pCO1FBQVIsS0FBSyxFQUFFO3FFQUFvQjtJQUNuQjtRQUFSLEtBQUssRUFBRTswREFBUztJQUNQO1FBQVQsTUFBTSxFQUFFO3dEQUE0QjtJQU41QixxQkFBcUI7UUFMakMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLHFCQUFxQjtZQUMvQixxNkNBQStDOztTQUVsRCxDQUFDO09BQ1cscUJBQXFCLENBc0dqQztJQUFELDRCQUFDO0NBQUEsQUF0R0QsQ0FBMkMsZUFBZSxHQXNHekQ7U0F0R1kscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIE9uSW5pdCwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gXCIuLi8uLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXJcIjtcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uLy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtcGxhY2UtdG8tcGF5LWVjJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGxhY2UtdG8tcGF5LWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wbGFjZS10by1wYXktZWMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VUb1BheUVjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgbWV0aG9kID0gbnVsbDtcbiAgICBASW5wdXQoKSB0b3RhbF9hbW91bnQgPSAwO1xuICAgIEBJbnB1dCgpIHBheW1lbnRTZXJ2aWNlSW5zdDtcbiAgICBASW5wdXQoKSBhbGxEYXRhO1xuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG4gICAgcHVibGljIHVybDogc3RyaW5nO1xuICAgIHB1YmxpYyBjbG9zZU1vZGFsID0gJyc7XG4gICAgcHVibGljIHZlbnRhbmE7XG5cbiAgICBwcm90ZWN0ZWQgZGF0YVJlZGlyZWN0ID0gKCkgPT5cbiAgICAgICAgdGhpcy5jb25zdHMuZ2V0VXJsQmFzZSgpICsgJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL3BsYWNlLXRvLXBheS8nICsgdGhpcy5jYXJ0U2VydmljZS5jYXJ0X3Rva2VuICsgJy9wcm9jZXNzLXBheW1lbnQnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwdWJsaWMgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyB0b2FzdHJTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBjb25zdHM6IENvbnN0YW50cyxcbiAgICAgICAgcHVibGljIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcbiAgICAgICAgcHVibGljIGFjdGl2ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lY09uQ29uc3RydWN0KCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZ2V0UHJlZmVyZW5jZSgpO1xuICAgICAgICB0aGlzLmVjT25Jbml0KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIC8vIEPDs2RpZ28gbmVjZXNhcmlvIGFsIGRlc3RydWlyIGVsIGNvbXBvbmVudGVcbiAgICB9XG5cbiAgICBpbmljaWFyID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwgPSAnJztcbiAgICAgICAgdGhpcy5jbGVhclN0b3JhZ2VTdGF0ZSgpO1xuICAgICAgICB0aGlzLnZlbnRhbmEgPSB3aW5kb3cub3Blbih0aGlzLnVybCk7XG4gICAgICAgIHRoaXMuY2FsbFN0YXRlKCk7XG4gICAgfVxuXG4gICAgY2xlYXJTdG9yYWdlU3RhdGUgPSAoKSA9PiB7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3N0YXRlJyk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzdGF0ZScpO1xuICAgIH1cblxuICAgIGNsaWNrQ2xvc2UgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbCA9ICdjYW5jZWwnO1xuICAgICAgICB0aGlzLnZlbnRhbmE/LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgY2FsbFN0YXRlID0gKCkgPT4ge1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmNsb3NlTW9kYWwgIT09ICcnID8gdGhpcy5jbG9zZU1vZGFsIDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3N0YXRlJyk7XG4gICAgICAgICFzdGF0ZSAmJiB0aGlzLnZlbnRhbmE/LmNsb3NlZCAmJiAoc3RhdGUgPSAnY2FuY2VsJyk7XG5cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzdGF0ZScpO1xuXG4gICAgICAgICAgICBpZiAoc3RhdGUgPT09ICdzdWNjZXNzJyB8fCBzdGF0ZSA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52ZW50YW5hPy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVhZHkuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RhdGUgPT09ICdmYWlsdXJlJyB8fCBzdGF0ZSA9PT0gJ2NhbmNlbCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZlbnRhbmE/LmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRQcmVmZXJlbmNlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3Ioc3RhdGUgPT09ICdjYW5jZWwnID8gJ1NlIGNhbmNlbMOzIGVsIHBhZ28gY29uIFBsYWNlIHRvIFBheScgOiAnJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnZlbnRhbmE/LmNsb3NlKCk7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcignJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2FsbFN0YXRlKCk7XG4gICAgICAgIH0sIDUwMDApO1xuICAgIH1cblxuICAgIHByb2Nlc3NFcnJvciA9IChlcnIpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coZXJyICE9PSAnJyA/IGVyciA6ICdwYXltZW50LWVycm9yJyk7XG4gICAgfVxuXG4gICAgZ2V0UHJlZmVyZW5jZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5wYXltZW50U2VydmljZUluc3QuZ2V0Q2hlY2tvdXRQbGFjZVRvUGF5KHRoaXMuYWxsRGF0YSkudGhlbihcbiAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXM/LnN0YXR1cyA9PT0gJ09LJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVybCA9IHJlcy5wcm9jZXNzVXJsO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0Vycm9yKHJlcy5zdGF0dXM/Lm1lc3NhZ2UgfHwgJ09jdXJyacOzIHVuIGVycm9yLiBJbnTDqW50ZWxvIG3DoXMgdGFyZGUuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVyciA9PiB0aGlzLnByb2Nlc3NFcnJvcignT2N1cnJpw7MgdW4gZXJyb3IgYWwgcHJvY2VzYXIgZWwgcGFnby4gSW50w6ludGVsbyBtw6FzIHRhcmRlLicpXG4gICAgICAgICk7XG4gICAgfVxuXG59XG4iXX0=
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtdG8tcGF5LWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9lYy1jb21wb25lbnQvd2lkZ2V0cy1lYy9wbGFjZS10by1wYXktZWMvcGxhY2UtdG8tcGF5LWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBT2pEO0lBQTJDLHlDQUFlO0lBcUJ0RCwrQkFDVyxRQUFtQixFQUNuQixVQUE2QixFQUM3QixhQUEyQixFQUMzQixNQUFpQixFQUNqQixXQUF3QixFQUN4QixZQUE0QjtRQU52QyxZQVFJLGlCQUFPLFNBRVY7UUFUVSxjQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGdCQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixtQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixZQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGlCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGtCQUFZLEdBQVosWUFBWSxDQUFnQjtRQXpCOUIsWUFBTSxHQUFHLElBQUksQ0FBQztRQUNkLGtCQUFZLEdBQUcs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LE1BQU0sMENBQUUsT0FBTyxLQUFJLHdDQUF3QyxDQUFDLENBQUM7aUJBQ3RGO1lBQ0wsQ0FBQyxFQUNELFVBQUEsR0FBRyxJQUFJLE9BQUEsS0FBSSxDQUFDLFlBQVksQ0FBQyw0REFBNEQsQ0FBQyxFQUEvRSxDQUErRSxDQUN6RixDQUFDO1FBQ04sQ0FBQyxDQUFBO1FBaEdHLEtBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzs7SUFDekIsQ0FBQztJQUVELHdDQUFRLEdBQVI7UUFDSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCwyQ0FBVyxHQUFYO1FBQ0ksNkNBQTZDO0lBQ2pELENBQUM7O2dCQWxCb0IsU0FBUztnQkFDUCxpQkFBaUI7Z0JBQ2QsWUFBWTtnQkFDbkIsU0FBUztnQkFDSixXQUFXO2dCQUNWLGNBQWM7O0lBekI5QjtRQUFSLEtBQUssRUFBRTt5REFBZTtJQUNkO1FBQVIsS0FBSyxFQUFFOytEQUFrQjtJQUNqQjtRQUFSLEtBQUssRUFBRTtxRUFBb0I7SUFDbkI7UUFBUixLQUFLLEVBQUU7MERBQVM7SUFDUDtRQUFULE1BQU0sRUFBRTt3REFBNEI7SUFONUIscUJBQXFCO1FBTGpDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxxQkFBcUI7WUFDL0IsMndEQUErQzs7U0FFbEQsQ0FBQztPQUNXLHFCQUFxQixDQWdJakM7SUFBRCw0QkFBQztDQUFBLEFBaElELENBQTJDLGVBQWUsR0FnSXpEO1NBaElZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBPbkluaXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tIFwiLi4vLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyXCI7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXBsYWNlLXRvLXBheS1lYycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BsYWNlLXRvLXBheS1lYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcGxhY2UtdG8tcGF5LWVjLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlVG9QYXlFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIG1ldGhvZCA9IG51bGw7XG4gICAgQElucHV0KCkgdG90YWxfYW1vdW50ID0gMDtcbiAgICBASW5wdXQoKSBwYXltZW50U2VydmljZUluc3Q7XG4gICAgQElucHV0KCkgYWxsRGF0YTtcbiAgICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuICAgIHB1YmxpYyB1cmw6IHN0cmluZztcbiAgICBwdWJsaWMgY2xvc2VNb2RhbCA9ICcnO1xuICAgIHB1YmxpYyB2ZW50YW5hO1xuXG4gICAgcHVibGljIGhhc1ByZXZpb3VzRmFpbHVyZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBwcmV2aW91c0ZhaWx1cmVBbW91bnQ6IG51bWJlciA9IG51bGw7XG4gICAgcHVibGljIHByZXZpb3VzRmFpbHVyZURhdGU6IHN0cmluZyA9IG51bGw7XG4gICAgcHVibGljIGJ1dHRvblRleHQgPSAnUGFnYXInO1xuXG4gICAgcHJvdGVjdGVkIGRhdGFSZWRpcmVjdCA9ICgpID0+XG4gICAgICAgIHRoaXMuY29uc3RzLmdldFVybEJhc2UoKSArICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9wbGFjZS10by1wYXkvJyArIHRoaXMuY2FydFNlcnZpY2UuY2FydF90b2tlbiArICcvcHJvY2Vzcy1wYXltZW50JztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHVibGljIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgdG9hc3RyU2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgY29uc3RzOiBDb25zdGFudHMsXG4gICAgICAgIHB1YmxpYyBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBhY3RpdmVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmdldFByZWZlcmVuY2UoKTtcbiAgICAgICAgdGhpcy5lY09uSW5pdCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICAvLyBDw7NkaWdvIG5lY2VzYXJpbyBhbCBkZXN0cnVpciBlbCBjb21wb25lbnRlXG4gICAgfVxuXG4gICAgaW5pY2lhciA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZU1vZGFsID0gJyc7XG4gICAgICAgIHRoaXMuY2xlYXJTdG9yYWdlU3RhdGUoKTtcbiAgICAgICAgdGhpcy52ZW50YW5hID0gd2luZG93Lm9wZW4odGhpcy51cmwpO1xuICAgICAgICB0aGlzLmNhbGxTdGF0ZSgpO1xuICAgIH1cblxuICAgIGNsZWFyU3RvcmFnZVN0YXRlID0gKCkgPT4ge1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdzdGF0ZScpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnc3RhdGUnKTtcbiAgICB9XG5cbiAgICBjbGlja0Nsb3NlID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwgPSAnY2FuY2VsJztcbiAgICAgICAgdGhpcy52ZW50YW5hPy5jbG9zZSgpO1xuICAgIH1cblxuICAgIGNhbGxTdGF0ZSA9ICgpID0+IHtcbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5jbG9zZU1vZGFsICE9PSAnJyA/IHRoaXMuY2xvc2VNb2RhbCA6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzdGF0ZScpO1xuICAgICAgICAhc3RhdGUgJiYgdGhpcy52ZW50YW5hPy5jbG9zZWQgJiYgKHN0YXRlID0gJ2NhbmNlbCcpO1xuXG4gICAgICAgIHRoaXMuaGFzUHJldmlvdXNGYWlsdXJlID0gZmFsc2U7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3N0YXRlJyk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIChzdGF0ZSA9PT0gJ3N1Y2Nlc3MnIHx8IHN0YXRlID09PSAncGVuZGluZycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZlbnRhbmE/LmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkeS5lbWl0KHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoc3RhdGUgPT09ICdmYWlsdXJlJyB8fCBzdGF0ZSA9PT0gJ2NhbmNlbCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZlbnRhbmE/LmNsb3NlKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT09ICdmYWlsdXJlJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhbXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG90YWxfYW1vdW50Jyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhbXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzUHJldmlvdXNGYWlsdXJlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNGYWlsdXJlQW1vdW50ID0gcGFyc2VGbG9hdChhbXQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzRmFpbHVyZURhdGUgPSBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygnZXMtQVInLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYnV0dG9uVGV4dCA9ICdSZWludGVudGFyIHBhZ28nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndG90YWxfYW1vdW50Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgncGF5bWVudF9kYXRlJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmdldFByZWZlcmVuY2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcihzdGF0ZSA9PT0gJ2NhbmNlbCcgPyAnU2UgY2FuY2Vsw7MgZWwgcGFnbyBjb24gUGxhY2UgdG8gUGF5JyA6ICcnKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudmVudGFuYT8uY2xvc2UoKTtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc0Vycm9yKCcnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jYWxsU3RhdGUoKTtcbiAgICAgICAgfSwgNTAwMCk7XG4gICAgfVxuXG4gICAgcHJvY2Vzc0Vycm9yID0gKGVycikgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdyhlcnIgIT09ICcnID8gZXJyIDogJ3BheW1lbnQtZXJyb3InKTtcbiAgICB9XG5cbiAgICBnZXRQcmVmZXJlbmNlID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlSW5zdC5nZXRDaGVja291dFBsYWNlVG9QYXkodGhpcy5hbGxEYXRhKS50aGVuKFxuICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cz8uc3RhdHVzID09PSAnT0snKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXJsID0gcmVzLnByb2Nlc3NVcmw7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3IocmVzLnN0YXR1cz8ubWVzc2FnZSB8fCAnT2N1cnJpw7MgdW4gZXJyb3IuIEludMOpbnRlbG8gbcOhcyB0YXJkZS4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyID0+IHRoaXMucHJvY2Vzc0Vycm9yKCdPY3VycmnDsyB1biBlcnJvciBhbCBwcm9jZXNhciBlbCBwYWdvLiBJbnTDqW50ZWxvIG3DoXMgdGFyZGUuJylcbiAgICAgICAgKTtcbiAgICB9XG5cbn1cbiJdfQ==
@@ -74,15 +74,24 @@ var RedsysCatchEcComponent = /** @class */ (function (_super) {
74
74
  case '200':
75
75
  state = 'success';
76
76
  _this.setStateInLocal('Su pago fue procesado con éxito.', state);
77
+ if (queryParams.total_amount) {
78
+ localStorage.setItem('total_amount', queryParams.total_amount);
79
+ }
77
80
  break;
78
81
  case 'success':
79
82
  _this.setStateInLocal('Su pago fue procesado con éxito.', state);
83
+ if (queryParams.total_amount) {
84
+ localStorage.setItem('total_amount', queryParams.total_amount);
85
+ }
80
86
  break;
81
87
  case 'pending':
82
88
  _this.setStateInLocal('Su pago fue procesado con éxito.', state);
83
89
  break;
84
90
  case 'failure':
85
91
  _this.setStateInLocal('Se ha cancelado el proceso de pago.', state);
92
+ if (queryParams.total_amount) {
93
+ localStorage.setItem('total_amount', queryParams.total_amount);
94
+ }
86
95
  break;
87
96
  case 'cancel':
88
97
  _this.setStateInLocal('Se ha cancelado el proceso de pago.', state);
@@ -121,4 +130,4 @@ var RedsysCatchEcComponent = /** @class */ (function (_super) {
121
130
  return RedsysCatchEcComponent;
122
131
  }(ComponentHelper));
123
132
  export { RedsysCatchEcComponent };
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkc3lzLWNhdGNoLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9lYy1jb21wb25lbnQvd2lkZ2V0cy1lYy9yZWRzeXMtY2F0Y2gtZWMvcmVkc3lzLWNhdGNoLWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFROUU7SUFBNEMsMENBQWU7SUFJdkQsZ0NBQW1CLFlBQTRCLEVBQVMsTUFBYyxFQUFTLGVBQWdDO1FBQS9HLFlBQ0ksaUJBQU8sU0FJVjtRQUxrQixrQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFBUyxZQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVMscUJBQWUsR0FBZixlQUFlLENBQWlCO1FBRnhHLGFBQU8sR0FBRyxFQUFFLENBQUE7UUFxRG5CLHFCQUFlLEdBQUcsVUFBQyxPQUFPLEVBQUUsS0FBSztZQUM3QixLQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtZQUN0QixZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUNwQyxjQUFjLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNoRCxDQUFDLENBQUE7UUFFRCxzQkFBZ0IsR0FBRyxVQUFDLE9BQU8sRUFBRSxLQUFLO1lBQzlCLEtBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxD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ZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDaGVja291dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jaGVja291dC9jaGVja291dC5zZXJ2aWNlJztcbmRlY2xhcmUgdmFyICQ6IGFueTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtcmVkc3lzLWNhdGNoLWVjJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVkc3lzLWNhdGNoLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yZWRzeXMtY2F0Y2gtZWMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZWRzeXNDYXRjaEVjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIHB1YmxpYyBtZXNzYWdlID0gJydcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBhY3RpdmVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBjaGVja291dFNlcnZpY2U6IENoZWNrb3V0U2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAkKFwiaGVhZGVyXCIpLmhpZGUoKTtcbiAgICAgICAgJChcImZvb3RlclwiKS5oaWRlKCk7XG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGxldCBzdGF0ZVxuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmFjdGl2ZWRSb3V0ZS5wYXJhbXMsIHRoaXMuYWN0aXZlZFJvdXRlLnF1ZXJ5UGFyYW1zXSkuc3Vic2NyaWJlKChbcXVlcnlSb3V0ZXIsIHF1ZXJ5UGFyYW1zXSkgPT4ge1xuICAgICAgICAgICAgc3RhdGUgPSBxdWVyeVJvdXRlci5zdGF0ZVxuICAgICAgICAgICAgc3RhdGUgJiYgc3RhdGUgPT0gJ3N0YXR1c3BheW1lbnQnICYmIChzdGF0ZSA9IHF1ZXJ5UGFyYW1zLnN0YXR1cylcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdQQVJBTUVUUk9TIFNUQVRFICAtPiAnLCBzdGF0ZSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnMjAwJzpcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAnc3VjY2VzcydcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUluTG9jYWwoJ1N1IHBhZ28gZnVlIHByb2Nlc2FkbyBjb24gw6l4aXRvLicsIHN0YXRlKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUluTG9jYWwoJ1N1IHBhZ28gZnVlIHByb2Nlc2FkbyBjb24gw6l4aXRvLicsIHN0YXRlKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdwZW5kaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUluTG9jYWwoJ1N1IHBhZ28gZnVlIHByb2Nlc2FkbyBjb24gw6l4aXRvLicsIHN0YXRlKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdmYWlsdXJlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUluTG9jYWwoJ1NlIGhhIGNhbmNlbGFkbyBlbCBwcm9jZXNvIGRlIHBhZ28uJywgc3RhdGUpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NhbmNlbCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJbkxvY2FsKCdTZSBoYSBjYW5jZWxhZG8gZWwgcHJvY2VzbyBkZSBwYWdvLicsIHN0YXRlKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdvayc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJblNlc2lvbignU3UgcGFnbyBmdWUgcHJvY2VzYWRvIGNvbiDDqXhpdG8uJywgc3RhdGUpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoYWxsZW5nZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJblNlc2lvbignUmVkaXJpZ2llbmRvIGEgYXV0ZW50aWNhY2nDs24gZGVsIGJhbmNvIGVtaXNvci4nLCBzdGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlSW5TZXNpb24oJ0FsZ28gbm8gc2FsaW8gYmllbiBlbiBsYSB2YWxpZGFjacOzbiBkZSBzdXMgZGF0b3MuJywgc3RhdGUpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJzAnOlxuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9ICdmYWlsdXJlJ1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlSW5Mb2NhbCgnU2UgaGEgY2FuY2VsYWRvIGVsIHByb2Nlc28gZGUgcGFnby4nLCBzdGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuZWNPbkluaXQoKVxuICAgIH1cblxuXG4gICAgc2V0U3RhdGVJbkxvY2FsID0gKG1lbnNhamUsIHN0YXRlKSA9PiB7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IG1lbnNhamVcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXRlJywgc3RhdGUpXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ21vZGFsbmV3cycsICdmYWxzZScpXG4gICAgfVxuXG4gICAgc2V0U3RhdGVJblNlc2lvbiA9IChtZW5zYWplLCBzdGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZW5zYWplXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3N0YXRlJywgc3RhdGUpXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGF0ZScsIHN0YXRlKVxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdtb2RhbG5ld3MnLCAnZmFsc2UnKVxuICAgIH1cblxufVxuIl19
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkc3lzLWNhdGNoLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9lYy1jb21wb25lbnQvd2lkZ2V0cy1lYy9yZWRzeXMtY2F0Y2gtZWMvcmVkc3lzLWNhdGNoLWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFROUU7SUFBNEMsMENBQWU7SUFJdkQsZ0NBQW1CLFlBQTRCLEVBQVMsTUFBYyxFQUFTLGVBQWdDO1FBQS9HLFlBQ0ksaUJBQU8sU0FJVjtRQUxrQixrQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFBUyxZQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVMscUJBQWUsR0FBZixlQUFlLENBQWlCO1FBRnhHLGFBQU8sR0FBRyxFQUFFLENBQUE7UUE4RG5CLHFCQUFlLEdBQUcsVUFBQyxPQUFPLEVBQUUsS0FBSztZQUM3QixLQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtZQUN0QixZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUNwQyxjQUFjLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNoRCxDQUFDLENBQUE7UUFFRCxzQkFBZ0IsR0FBRyxVQUFDLE9BQU8sRUFBRSxLQUFLO1lBQzlCLEtBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxD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YjtRQUNMLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ25CLENBQUM7O2dCQXpEZ0MsY0FBYztnQkFBaUIsTUFBTTtnQkFBMEIsZUFBZTs7SUFKdEcsc0JBQXNCO1FBTGxDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxxQkFBcUI7WUFDL0IscW9CQUErQzs7U0FFbEQsQ0FBQztPQUNXLHNCQUFzQixDQTZFbEM7SUFBRCw2QkFBQztDQUFBLEFBN0VELENBQTRDLGVBQWUsR0E2RTFEO1NBN0VZLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDaGVja291dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jaGVja291dC9jaGVja291dC5zZXJ2aWNlJztcbmRlY2xhcmUgdmFyICQ6IGFueTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtcmVkc3lzLWNhdGNoLWVjJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVkc3lzLWNhdGNoLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yZWRzeXMtY2F0Y2gtZWMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZWRzeXNDYXRjaEVjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIHB1YmxpYyBtZXNzYWdlID0gJydcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBhY3RpdmVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBjaGVja291dFNlcnZpY2U6IENoZWNrb3V0U2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAkKFwiaGVhZGVyXCIpLmhpZGUoKTtcbiAgICAgICAgJChcImZvb3RlclwiKS5oaWRlKCk7XG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGxldCBzdGF0ZVxuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmFjdGl2ZWRSb3V0ZS5wYXJhbXMsIHRoaXMuYWN0aXZlZFJvdXRlLnF1ZXJ5UGFyYW1zXSkuc3Vic2NyaWJlKChbcXVlcnlSb3V0ZXIsIHF1ZXJ5UGFyYW1zXSkgPT4ge1xuICAgICAgICAgICAgc3RhdGUgPSBxdWVyeVJvdXRlci5zdGF0ZVxuICAgICAgICAgICAgc3RhdGUgJiYgc3RhdGUgPT0gJ3N0YXR1c3BheW1lbnQnICYmIChzdGF0ZSA9IHF1ZXJ5UGFyYW1zLnN0YXR1cylcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdQQVJBTUVUUk9TIFNUQVRFICAtPiAnLCBzdGF0ZSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnMjAwJzpcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAnc3VjY2VzcydcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUluTG9jYWwoJ1N1IHBhZ28gZnVlIHByb2Nlc2FkbyBjb24gw6l4aXRvLicsIHN0YXRlKVxuICAgICAgICAgICAgICAgICAgICBpZiAocXVlcnlQYXJhbXMudG90YWxfYW1vdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG90YWxfYW1vdW50JywgcXVlcnlQYXJhbXMudG90YWxfYW1vdW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUluTG9jYWwoJ1N1IHBhZ28gZnVlIHByb2Nlc2FkbyBjb24gw6l4aXRvLicsIHN0YXRlKVxuICAgICAgICAgICAgICAgICAgICBpZiAocXVlcnlQYXJhbXMudG90YWxfYW1vdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG90YWxfYW1vdW50JywgcXVlcnlQYXJhbXMudG90YWxfYW1vdW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdwZW5kaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUluTG9jYWwoJ1N1IHBhZ28gZnVlIHByb2Nlc2FkbyBjb24gw6l4aXRvLicsIHN0YXRlKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdmYWlsdXJlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUluTG9jYWwoJ1NlIGhhIGNhbmNlbGFkbyBlbCBwcm9jZXNvIGRlIHBhZ28uJywgc3RhdGUpXG4gICAgICAgICAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtcy50b3RhbF9hbW91bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b3RhbF9hbW91bnQnLCBxdWVyeVBhcmFtcy50b3RhbF9hbW91bnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NhbmNlbCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJbkxvY2FsKCdTZSBoYSBjYW5jZWxhZG8gZWwgcHJvY2VzbyBkZSBwYWdvLicsIHN0YXRlKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdvayc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJblNlc2lvbignU3UgcGFnbyBmdWUgcHJvY2VzYWRvIGNvbiDDqXhpdG8uJywgc3RhdGUpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoYWxsZW5nZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJblNlc2lvbignUmVkaXJpZ2llbmRvIGEgYXV0ZW50aWNhY2nDs24gZGVsIGJhbmNvIGVtaXNvci4nLCBzdGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlSW5TZXNpb24oJ0FsZ28gbm8gc2FsaW8gYmllbiBlbiBsYSB2YWxpZGFjacOzbiBkZSBzdXMgZGF0b3MuJywgc3RhdGUpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJzAnOlxuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9ICdmYWlsdXJlJ1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlSW5Mb2NhbCgnU2UgaGEgY2FuY2VsYWRvIGVsIHByb2Nlc28gZGUgcGFnby4nLCBzdGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuZWNPbkluaXQoKVxuICAgIH1cblxuXG4gICAgc2V0U3RhdGVJbkxvY2FsID0gKG1lbnNhamUsIHN0YXRlKSA9PiB7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IG1lbnNhamVcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXRlJywgc3RhdGUpXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ21vZGFsbmV3cycsICdmYWxzZScpXG4gICAgfVxuXG4gICAgc2V0U3RhdGVJblNlc2lvbiA9IChtZW5zYWplLCBzdGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZW5zYWplXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3N0YXRlJywgc3RhdGUpXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGF0ZScsIHN0YXRlKVxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdtb2RhbG5ld3MnLCAnZmFsc2UnKVxuICAgIH1cblxufVxuIl19
@@ -225,16 +225,19 @@ var ProductDetailService = /** @class */ (function () {
225
225
  options && options.forEach(function (option) { return Object.keys(option).forEach(function (key) { return _this.setOption(key, option[key]); }); });
226
226
  };
227
227
  this.generateAsociatedDataFromVariants = function () {
228
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
228
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6;
229
229
  var asociated = {};
230
230
  if (_this.isReady()) {
231
231
  asociated.stock = _this.variants[0].stock;
232
- asociated.price = _this.variants[0].price.toString();
233
- asociated.saleprice = _this.variants[0].saleprice && _this.variants[0].saleprice.toString() || undefined;
234
- asociated.discount = ((_a = _this.variants[0]) === null || _a === void 0 ? void 0 : _a.discount) || undefined;
232
+ // Precio: si viene taxLegendInfo usamos su price, si no el v.price
233
+ var rawPrice = (_b = (_a = _this.variants[0].taxLegendInfo) === null || _a === void 0 ? void 0 : _a.price, (_b !== null && _b !== void 0 ? _b : _this.variants[0].price));
234
+ asociated.price = rawPrice.toString();
235
+ var rawSalePrice = (_d = (_c = _this.variants[0].taxLegendInfo) === null || _c === void 0 ? void 0 : _c.saleprice, (_d !== null && _d !== void 0 ? _d : _this.variants[0].saleprice));
236
+ asociated.saleprice = rawSalePrice ? rawSalePrice.toString() : undefined;
237
+ asociated.discount = ((_e = _this.variants[0]) === null || _e === void 0 ? void 0 : _e.discount) || undefined;
235
238
  asociated.properties = _this.variants[0].properties ? _this.beautifyProperties(_this.variants[0].properties) : undefined;
236
- asociated.uniqueExternalCode = ((_b = _this.variants[0]) === null || _b === void 0 ? void 0 : _b.uniqueExternalCode) || undefined;
237
- asociated.multipleQuantity = ((_c = _this.variants[0]) === null || _c === void 0 ? void 0 : _c.multipleQuantity) || undefined;
239
+ asociated.uniqueExternalCode = ((_f = _this.variants[0]) === null || _f === void 0 ? void 0 : _f.uniqueExternalCode) || undefined;
240
+ asociated.multipleQuantity = ((_g = _this.variants[0]) === null || _g === void 0 ? void 0 : _g.multipleQuantity) || undefined;
238
241
  }
239
242
  else {
240
243
  asociated.price = _this.cratePrice();
@@ -245,22 +248,32 @@ var ProductDetailService = /** @class */ (function () {
245
248
  ('images' in _this.variants[0] && _this.variants[0].images.length > 0)
246
249
  ? asociated.picture = _this.variants[0].images[0]
247
250
  : asociated.picture = (_this.asociatedDataSubject.value.picture || _this.productSubject.value.picturesdefault[0]);
248
- asociated.maximumAmount = ((_d = _this.variants[0]) === null || _d === void 0 ? void 0 : _d.maximumAmount) || 0;
249
- asociated.minimumAmount = ((_e = _this.variants[0]) === null || _e === void 0 ? void 0 : _e.minimumAmount) || 0;
250
- asociated.maximumItemsQuantity = ((_f = _this.variants[0]) === null || _f === void 0 ? void 0 : _f.stock) > 0 && 'maximumItemsQuantity' in _this.variants[0] ? (_g = _this.variants[0]) === null || _g === void 0 ? void 0 : _g.maximumItemsQuantity : (_h = _this.variants[0]) === null || _h === void 0 ? void 0 : _h.stock;
251
- asociated.minimumItemsQuantity = ((_j = _this.variants[0]) === null || _j === void 0 ? void 0 : _j.stock) > 0 && 'minimumItemsQuantity' in _this.variants[0]
252
- && ((_k = _this.variants[0]) === null || _k === void 0 ? void 0 : _k.minimumItemsQuantity) > 0 ? (_l = _this.variants[0]) === null || _l === void 0 ? void 0 : _l.minimumItemsQuantity : (((_m = _this.variants[0]) === null || _m === void 0 ? void 0 : _m.multipleQuantity) ? (_o = _this.variants[0]) === null || _o === void 0 ? void 0 : _o.multipleQuantity : 1);
251
+ asociated.maximumAmount = ((_h = _this.variants[0]) === null || _h === void 0 ? void 0 : _h.maximumAmount) || 0;
252
+ asociated.minimumAmount = ((_j = _this.variants[0]) === null || _j === void 0 ? void 0 : _j.minimumAmount) || 0;
253
+ asociated.maximumItemsQuantity = ((_k = _this.variants[0]) === null || _k === void 0 ? void 0 : _k.stock) > 0 && 'maximumItemsQuantity' in _this.variants[0] ? (_l = _this.variants[0]) === null || _l === void 0 ? void 0 : _l.maximumItemsQuantity : (_m = _this.variants[0]) === null || _m === void 0 ? void 0 : _m.stock;
254
+ asociated.minimumItemsQuantity = ((_o = _this.variants[0]) === null || _o === void 0 ? void 0 : _o.stock) > 0 && 'minimumItemsQuantity' in _this.variants[0]
255
+ && ((_p = _this.variants[0]) === null || _p === void 0 ? void 0 : _p.minimumItemsQuantity) > 0 ? (_q = _this.variants[0]) === null || _q === void 0 ? void 0 : _q.minimumItemsQuantity : (((_r = _this.variants[0]) === null || _r === void 0 ? void 0 : _r.multipleQuantity) ? (_s = _this.variants[0]) === null || _s === void 0 ? void 0 : _s.multipleQuantity : 1);
253
256
  asociated.finalConsumer = {
254
- finalConsumerPrice: (_p = _this.variants[0]) === null || _p === void 0 ? void 0 : _p.final_consumer_price,
255
- originalFinalConsumerPrice: (_q = _this.variants[0]) === null || _q === void 0 ? void 0 : _q.original_final_consumer_price,
257
+ finalConsumerPrice: (_t = _this.variants[0]) === null || _t === void 0 ? void 0 : _t.final_consumer_price,
258
+ originalFinalConsumerPrice: (_u = _this.variants[0]) === null || _u === void 0 ? void 0 : _u.original_final_consumer_price,
256
259
  };
257
260
  asociated.taxes = {
258
- taxIncluded: (_r = _this.variants[0]) === null || _r === void 0 ? void 0 : _r.taxIncluded,
259
- taxCategory: (_s = _this.variants[0]) === null || _s === void 0 ? void 0 : _s.taxCategory,
261
+ taxIncluded: (_v = _this.variants[0]) === null || _v === void 0 ? void 0 : _v.taxIncluded,
262
+ taxCategory: (_w = _this.variants[0]) === null || _w === void 0 ? void 0 : _w.taxCategory,
260
263
  };
261
- asociated.taxeAmount = ((_t = _this.variants[0]) === null || _t === void 0 ? void 0 : _t.taxes) || undefined;
262
- asociated.taxRate = ((_u = _this.variants[0]) === null || _u === void 0 ? void 0 : _u.taxRate) || undefined;
263
- asociated.priceWithoutTaxes = ((_v = _this.variants[0]) === null || _v === void 0 ? void 0 : _v.priceWithoutTaxes) || undefined;
264
+ // Segun version del backend
265
+ if ((_x = _this.variants[0]) === null || _x === void 0 ? void 0 : _x.taxLegendInfo) {
266
+ // Nuevo backend
267
+ asociated.priceWithoutTaxes = (_y = _this.variants[0]) === null || _y === void 0 ? void 0 : _y.taxLegendInfo.priceWithoutTaxes;
268
+ asociated.taxeAmount = (_z = _this.variants[0]) === null || _z === void 0 ? void 0 : _z.taxLegendInfo.taxes;
269
+ asociated.taxRate = (_0 = _this.variants[0]) === null || _0 === void 0 ? void 0 : _0.taxLegendInfo.taxRate;
270
+ }
271
+ else {
272
+ // Backend antiguo
273
+ asociated.priceWithoutTaxes = (_2 = (_1 = _this.variants[0]) === null || _1 === void 0 ? void 0 : _1.priceWithoutTaxes, (_2 !== null && _2 !== void 0 ? _2 : undefined));
274
+ asociated.taxeAmount = (_4 = (_3 = _this.variants[0]) === null || _3 === void 0 ? void 0 : _3.taxes, (_4 !== null && _4 !== void 0 ? _4 : undefined));
275
+ asociated.taxRate = (_6 = (_5 = _this.variants[0]) === null || _5 === void 0 ? void 0 : _5.taxRate, (_6 !== null && _6 !== void 0 ? _6 : undefined));
276
+ }
264
277
  _this.asociatedDataSubject.next(asociated);
265
278
  };
266
279
  /**
@@ -512,4 +525,4 @@ var ProductDetailService = /** @class */ (function () {
512
525
  return ProductDetailService;
513
526
  }());
514
527
  export { ProductDetailService };
515
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9wcm9kdWN0cy9wcm9kdWN0LWRldGFpbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUF5QixNQUFNLE1BQU0sQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd0RDtJQWNJLDhCQUNZLGVBQWdDLEVBQVUsV0FBd0IsRUFBVSxhQUEyQixFQUN2RyxTQUFvQixFQUFTLGdCQUFrQyxFQUFTLGVBQWdDO1FBRnBILGlCQUdDO1FBRlcsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUN2RyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQVMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFTLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQWQ1RyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFVLEVBQUUsQ0FBQyxDQUFDO1FB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QUMsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLENBQUE7YUFDTDtZQUNELGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLFVBQUEsRUFBRSxJQUFJLE9BQUEsS0FBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLGNBQU0sZ0JBQWdCLEdBQUksRUFBRSxDQUFDLEVBQXZELENBQXVELENBQUMsQ0FBQTtJQUNsRyxDQUFDO0lBR0Q7Ozs7Ozs7O09BUUc7SUFDSSxzREFBdUIsR0FBOUIsVUFBK0IsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLGdCQUFxQjtRQUFyQixpQ0FBQSxFQUFBLHFCQUFxQjtRQUUvRSxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUEsRUFBRTtZQUN6RSxPQUFBLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUM7UUFBNUQsQ0FBNEQsQ0FBQyxDQUFBO0lBQ3JFLENBQUM7O2dCQTViNEIsZUFBZTtnQkFBdUIsV0FBVztnQkFBeUIsWUFBWTtnQkFDNUYsU0FBUztnQkFBMkIsZ0JBQWdCO2dCQUEwQixlQUFlOztJQWhCM0csb0JBQW9CO1FBRGhDLFVBQVUsRUFBRTtPQUNBLG9CQUFvQixDQXlkaEM7SUFBRCwyQkFBQztDQUFBLEFBemRELElBeWRDO1NBemRZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgcGFydGl0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wcm9kdWN0JztcbmltcG9ydCB7IFByb2R1Y3RzU2VydmljZSB9IGZyb20gJy4vcHJvZHVjdHMuc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCBfIGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBQYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wYXJhbXNJbnRlcmZhY2VzL3BhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQnO1xuaW1wb3J0IHsgQ3VycmVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vY3VycmVuY3kuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQcm9kdWN0RGV0YWlsU2VydmljZSB7XG5cbiAgICBwcml2YXRlIHByb2R1Y3RTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQcm9kdWN0Pih7fSk7XG4gICAgcHJpdmF0ZSBvcHRpb25zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih7fSk7XG4gICAgcHJpdmF0ZSBhc29jaWF0ZWREYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih7IHByaWNlOiAnJywgc3RvY2s6IDAsIHBpY3R1cmU6ICcnIH0pO1xuXG4gICAgcHJpdmF0ZSB2YXJpYW50cyA9IFtdXG5cbiAgICBwdWJsaWMgcHJvZHVjdCQgPSB0aGlzLnByb2R1Y3RTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBvcHRpb25zJCA9IHRoaXMub3B0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGFzb2NpYXRlZERhdGEkID0gdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwcml2YXRlIGN1cnJlbnRUb3RhbEFtb3VudDogbnVtYmVyO1xuICAgIHByaXZhdGUgYmFsYW5jZUN1c3RvbWVyOiBhbnkgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcHJvZHVjdHNTZXJ2aWNlOiBQcm9kdWN0c1NlcnZpY2UsIHByaXZhdGUgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLCBwcml2YXRlIHRvYXN0clNlcnZpY2U6IFRvYXN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb25zdGFudHM6IENvbnN0YW50cywgcHVibGljIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsIHB1YmxpYyBjdXJyZW5jeVNlcnZpY2U6IEN1cnJlbmN5U2VydmljZSkge1xuICAgIH1cblxuICAgIC8qKlxuICAgICogQHBhcmFtIGNvZGUgSWRlbnRpZmljYWRvciBkZWwgcHJvZHVjdG9cbiAgICAqIEBwYXJhbSB2YXJpYW50IEluZGljYSBzaSBzZSBlc3TDoSBzb2xpY2l0YW5kbyB1biBwcm9kdWN0byBwb3Igc3UgY29kaWdvLCBvIHBvciBlbCBjb2RpZ28gY29ycmVzcG9uZGllbnRlIGEgdW5hIGRlIHN1cyB2YXJpYW50ZXNcbiAgICAqICBcbiAgICAqIENhcmdhIGVsIHByb2R1Y3RvIHNvbGljaXRhZG8gYXN5bmNyb25pY2FtZW50ZSBzaW4gcmVzcHVlc3RhIFxuICAgICovXG4gICAgbG9hZFByb2R1Y3QgPSAoY29kZSwgdmFyaWFudDogYm9vbGVhbiA9IGZhbHNlKSA9PlxuICAgICAgICB0aGlzLnByb2R1Y3RzU2VydmljZS5nZXRTcGVjaWZpY1Byb2R1Y3QoY29kZSwgdmFyaWFudCkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgIHJlcyA9PiB2YXJpYW50ID8gdGhpcy5pbml0aWFsaXplKHJlcywgY29kZSkgOiB0aGlzLmluaXRpYWxpemUocmVzKSxcbiAgICAgICAgICAgIGVyciA9PiB0aGlzLnByb2R1Y3RTdWJqZWN0Lm5leHQobnVsbClcbiAgICAgICAgKVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHByb2R1Y3RfaWQgSWRlbnRpZmljYWRvciBkZWwgcHJvZHVjdG9cbiAgICAgKiBAcGFyYW0gdmFyaWFudCBJbmRpY2Egc2kgc2UgZXN0w6Egc29saWNpdGFuZG8gdW4gcHJvZHVjdG8gcG9yIHN1IGNvZGlnbywgbyBwb3IgZWwgY29kaWdvIGNvcnJlc3BvbmRpZW50ZSBhIHVuYSBkZSBzdXMgdmFyaWFudGVzXG4gICAgICogQGFzeW5jXG4gICAgICogIFxuICAgICAqIEEgZGlmZXJlbmNpYSBkZWwgbWV0b2RvIGxvYWRQcm9kdWN0LCBlc3RlIHJldG9ybmEgdW4gdmFsb3IgY3VhbmRvIHRlcm1pbmEgXG4gICAgICovXG4gICAgZ2V0UHJvZHVjdCA9IGFzeW5jIChwcm9kdWN0X2lkLCB2YXJpYW50OiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMucHJvZHVjdHNTZXJ2aWNlLmdldFNwZWNpZmljUHJvZHVjdChwcm9kdWN0X2lkLCB2YXJpYW50KS50b1Byb21pc2UoKTtcbiAgICAgICAgaWYgKCFyZXN1bHQgfHwgcmVzdWx0LmVycm9yKSB0aGlzLnByb2R1Y3RTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIGVsc2UgdmFyaWFudCA/IHRoaXMuaW5pdGlhbGl6ZShyZXN1bHQsIHByb2R1Y3RfaWQpIDogdGhpcy5pbml0aWFsaXplKHJlc3VsdCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZSA9IChwcm9kdWN0LCB2YXJpYW50X2NvZGU/KSA9PiB7XG4gICAgICAgIHRoaXMucHJvZHVjdFN1YmplY3QubmV4dChwcm9kdWN0KTtcbiAgICAgICAgdGhpcy5vcHRpb25zU3ViamVjdC5uZXh0KHRoaXMuZ2V0T3B0aW9ucygpKVxuICAgICAgICB2YXJpYW50X2NvZGUgPyB0aGlzLnVwZGF0ZVZhcmlhbnRzKHZhcmlhbnRfY29kZSkgOiB0aGlzLnVwZGF0ZVZhcmlhbnRzKCk7XG4gICAgICAgIHRoaXMudmFyaWFudHMubGVuZ3RoICYmIHRoaXMuZ2VuZXJhdGVBc29jaWF0ZWREYXRhRnJvbVZhcmlhbnRzKCk7XG4gICAgICAgIHRoaXMuZmV0Y2hDYXJ0RGF0YSgpXG4gICAgICAgIC8vdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgndmlld19pdGVtJywgeyAuLi5wcm9kdWN0LCBjdXJyZW5jeTogdGhpcy5jb25zdGFudHMuY3VycmVuY3kuY29kZSB9KVxuICAgICAgICAvLyB2YXJpYW50X2NvZGUgJiYgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgndmlld19pdGVtJywgeyAuLi5wcm9kdWN0LCBjdXJyZW5jeTogdGhpcy5jb25zdGFudHMuY3VycmVuY3kuY29kZSB9KVxuICAgIH1cblxuICAgIHNldFByb2R1Y3QgPSAocHJvZHVjdCkgPT4gdGhpcy5pc1Byb2R1Y3RWYWxpZChwcm9kdWN0KSAmJiB0aGlzLmluaXRpYWxpemUocHJvZHVjdCk7XG5cbiAgICBpc1JlYWR5ID0gKCkgPT4gdGhpcy52YXJpYW50cy5sZW5ndGggPT0gMTtcblxuICAgIHNldE9wdGlvbiA9IChvcHRpb25fY29kZSwgb3B0aW9uX3ZhbHVlKSA9PiB7XG4gICAgICAgIGxldCBvcHRpb25zID0gdGhpcy5vcHRpb25zU3ViamVjdC52YWx1ZTtcbiAgICAgICAgbGV0IG9wdGlvbiA9IG9wdGlvbnMuZmluZChlbGVtZW50ID0+IGVsZW1lbnQuY29kZSA9PSBvcHRpb25fY29kZSkudmFsdWVzLmZpbmQodmFsdWUgPT4gdmFsdWUubmFtZSA9PSBvcHRpb25fdmFsdWUpO1xuICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSAhb3B0aW9uLnNlbGVjdGVkO1xuICAgICAgICBvcHRpb25zLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LmNvZGUgPT0gb3B0aW9uX2NvZGUpLnZhbHVlcy5mb3JFYWNoKFxuICAgICAgICAgICAgdmFsdWUgPT4geyBpZiAodmFsdWUubmFtZSAhPSBvcHRpb24ubmFtZSkgdmFsdWUuc2VsZWN0ZWQgPSBmYWxzZSB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMub3B0aW9uc1N1YmplY3QubmV4dChvcHRpb25zKTtcbiAgICAgICAgdGhpcy51cGRhdGVWYXJpYW50cygpO1xuICAgICAgICBpZiAodGhpcy52YXJpYW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyBIYWJpbGl0YXIgdG9kb3MgbG9zIGJvdG9uZXMgY29uIGxhIGNsYXNlICdhZGRDYXJ0QnV0dG9uJ1xuICAgICAgICAgICAgY29uc3Qgc3VibWl0QnV0dG9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5hZGRDYXJ0QnV0dG9uJyk7XG4gICAgICAgICAgICBzdWJtaXRCdXR0b25zLmZvckVhY2goYnV0dG9uID0+IHtcbiAgICAgICAgICAgICAgICAoYnV0dG9uIGFzIEhUTUxCdXR0b25FbGVtZW50KS5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlQXNvY2lhdGVkRGF0YUZyb21WYXJpYW50cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ3NlbGVjdGlvbi1ub3QtYXZhaWxhYmxlJyk7XG5cbiAgICAgICAgICAgIC8vIERlc2hhYmlsaXRhciB0b2RvcyBsb3MgYm90b25lcyBjb24gbGEgY2xhc2UgJ3N1Ym1pdC1idXR0b24nXG4gICAgICAgICAgICBjb25zdCBzdWJtaXRCdXR0b25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmFkZENhcnRCdXR0b24nKTtcbiAgICAgICAgICAgIHN1Ym1pdEJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4ge1xuICAgICAgICAgICAgICAgIChidXR0b24gYXMgSFRNTEJ1dHRvbkVsZW1lbnQpLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBjaGFuZ2VQaWN0dXJlID0gKHBpY3R1cmUpID0+IHtcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmFzb2NpYXRlZERhdGFTdWJqZWN0LnZhbHVlO1xuICAgICAgICBkYXRhLnBpY3R1cmUgPSBwaWN0dXJlO1xuICAgICAgICB0aGlzLmFzb2NpYXRlZERhdGFTdWJqZWN0Lm5leHQoZGF0YSk7XG4gICAgfVxuXG4gICAgaGFuZGxlRXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgICAgLy8gV2hhdGhldmVyIHdlIG5lZWQgdG8gZG8gd2l0aCBlcnJvclxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBhZ3JlZ2EvYWN0dWFsaXphIHVuIGl0ZW0gZW4gZWwgY2Fycml0byBcbiAgICAgKiBAcGFyYW0gcXVhbnRpdHkgY2FudGlkYWQgYSBhZ3JlZ2FyXG4gICAgICogQHBhcmFtIHZhcmlhbnRfY29kZSAqKihvcGNpb25hbCkqKiBjb2RpZ28gZGUgbGEgdmFyaWFudGUgc2VsZWNjaW9uYWRhIGRlbCBwcm9kdWN0by5cbiAgICAgKiBAcGFyYW0gY29tbWVudHMgKioob3BjaW9uYWwpKiogY29tZW50YXJpbyBwZXJzb25hbGl6YWRvIGRlbCBjbGllbnRlLlxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIGFkZFRvQ2FydChxdWFudGl0eSwgdmFyaWFudF9jb2RlPzogc3RyaW5nLCBjb21tZW50cz86IHN0cmluZykge1xuICAgICAgICBxdWFudGl0eSA9IHBhcnNlSW50KHF1YW50aXR5KTtcblxuICAgICAgICBpZiAoIXRoaXMudmFyaWFudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygnY2FudC1idXknKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwcm9kdWN0X3NlbGVjdGVkID0gXy5jbG9uZSh0aGlzLnByb2R1Y3RTdWJqZWN0LnZhbHVlKTtcbiAgICAgICAgbGV0IHZhcmlhbnQ6IGFueTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMudmFyaWFudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ25vLXZhcmlhbnRzJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC52YWx1ZS5zdG9jayA9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jaycpXG4gICAgICAgICAgICAgICAgICAgIDogdmFyaWFudCA9IHRoaXMudmFyaWFudHNbMF07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmICh2YXJpYW50X2NvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudCA9IHRoaXMudmFyaWFudHMuZmluZCh2YXJpYW50ID0+IHZhcmlhbnQuY29kZSA9PT0gdmFyaWFudF9jb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQuc3RvY2sgPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jaycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KCd2YXJpYW50cy1sZWZ0Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YXJpYW50KSByZXR1cm47XG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZVF1YW50aXR5KHF1YW50aXR5LCB2YXJpYW50LmNvZGUpKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcHJpY2VUb1ZhbGlkYXRlID0gcHJvZHVjdF9zZWxlY3RlZC5zYWxlcHJpY2VcbiAgICAgICAgICAgID8gcHJvZHVjdF9zZWxlY3RlZC5zYWxlcHJpY2UgKiBxdWFudGl0eVxuICAgICAgICAgICAgOiBwcm9kdWN0X3NlbGVjdGVkLnByaWNlICogcXVhbnRpdHk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlUHJpY2VBbmRDcmVkaXRzKHByaWNlVG9WYWxpZGF0ZSkpIHJldHVybjtcblxuICAgICAgICBjb25zdCBwcm9kdWN0ID0gdGhpcy5tYWtlQWZmb3JkYWJsZVByb2R1Y3QocHJvZHVjdF9zZWxlY3RlZCk7XG5cbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRUb0NhcnQocHJvZHVjdCwgcXVhbnRpdHksIHZhcmlhbnQuY29kZSwgY29tbWVudHMpO1xuICAgIH07XG5cblxuXG4gICAgYWRkVG9DYXJ0UHJvbWlzZSA9IGFzeW5jIChxdWFudGl0eSkgPT4ge1xuICAgICAgICBxdWFudGl0eSA9IHBhcnNlSW50KHF1YW50aXR5KTtcbiAgICAgICAgaWYgKCF0aGlzLnZhcmlhbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IHRydWUsIG1lc3NhZ2U6ICdjYW50LWJ1eScgfTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcHJvZHVjdF9zZWxlY3RlZCA9IF8uY2xvbmUodGhpcy5wcm9kdWN0U3ViamVjdC52YWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLnZhcmlhbnRzLmxlbmd0aCA+IDEgfHwgdGhpcy52YXJpYW50cy5sZW5ndGggPT0gMCB8fCB0aGlzLmFzb2NpYXRlZERhdGFTdWJqZWN0LnZhbHVlLnN0b2NrID09IDApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhcmlhbnRzLmxlbmd0aCA9PSAwKSByZXR1cm4geyBlcnJvcjogdHJ1ZSwgbWVzc2FnZTogJ25vLXZhcmlhbnRzJyB9O1xuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy52YXJpYW50cy5sZW5ndGggPiAxICYmIHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QudmFsdWUuc3RvY2sgPiAwKSByZXR1cm4geyBlcnJvcjogdHJ1ZSwgbWVzc2FnZTogJ3ZhcmlhbnRzLWxlZnQnIH07XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnZhcmlhbnRzLmxlbmd0aCAhPSAwICYmIHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QudmFsdWUuc3RvY2sgPT0gMCkgcmV0dXJuIHsgZXJyb3I6IHRydWUsIG1lc3NhZ2U6ICdvdXQtb2Ytc3RvY2snIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlUXVhbnRpdHkocXVhbnRpdHkpKSByZXR1cm47XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLmNhcnRTZXJ2aWNlLmFkZFRvQ2FydFByb21pc2UodGhpcy5tYWtlQWZmb3JkYWJsZVByb2R1Y3QocHJvZHVjdF9zZWxlY3RlZCksIHF1YW50aXR5LCB0aGlzLnZhcmlhbnRzWzBdLmNvZGUpO1xuICAgICAgICByZXR1cm4gKHJlc3VsdCAmJiAhKHJlc3VsdC5lcnJvcikpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGdldE9wdGlvbnMgPSAocHJvZHVjdF9yZWNlaXZlZD86IFByb2R1Y3QpID0+IHtcbiAgICAgICAgbGV0IHByb2R1Y3QgPSBwcm9kdWN0X3JlY2VpdmVkIHx8IHRoaXMucHJvZHVjdFN1YmplY3QudmFsdWU7XG4gICAgICAgIGxldCBvcHRpb25zID0gW107XG4gICAgICAgIHByb2R1Y3Qub3B0aW9ucy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgb3B0aW9ucy5wdXNoKHRoaXMudG9PcHRpb24oZWxlbWVudCkpO1xuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvT3B0aW9uID0gKHByZW9wdGlvbikgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogcHJlb3B0aW9uLmxhYmVsLFxuICAgICAgICAgICAgY29kZTogcHJlb3B0aW9uLmNvZGUsXG4gICAgICAgICAgICB0eXBlOiBwcmVvcHRpb24udHlwZSxcbiAgICAgICAgICAgIHZhbHVlczogcHJlb3B0aW9uLnZhbHVlcy5tYXAodmFsdWUgPT4gKHsgbmFtZTogdmFsdWUuY29kZSwgZGVzY3JpcHRpb246IHZhbHVlLm5hbWUsIGltYWdlOiB2YWx1ZS5pbWFnZSwgbW9iaWxlSW1hZ2U6IHZhbHVlLm1vYmlsZUltYWdlLCBzZWxlY3RlZDogZmFsc2UgfSkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1ha2VBZmZvcmRhYmxlUHJvZHVjdChwcm9kdWN0X3NlbGVjdGVkOiBQcm9kdWN0KSB7XG4gICAgICAgIHByb2R1Y3Rfc2VsZWN0ZWQucHJpY2UgPSBwYXJzZUZsb2F0KHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QudmFsdWUucHJpY2UpO1xuICAgICAgICBwcm9kdWN0X3NlbGVjdGVkLnNhbGVwcmljZSA9IHBhcnNlRmxvYXQodGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC52YWx1ZS5wcmljZSk7XG4gICAgICAgIHByb2R1Y3Rfc2VsZWN0ZWQub3B0aW9ucyA9IHt9O1xuICAgICAgICB0aGlzLnZhcmlhbnRzWzBdLm9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4gcHJvZHVjdF9zZWxlY3RlZC5vcHRpb25zID0geyAuLi5wcm9kdWN0X3NlbGVjdGVkLm9wdGlvbnMsIC4uLm9wdGlvbiB9KVxuICAgICAgICByZXR1cm4gcHJvZHVjdF9zZWxlY3RlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVZhcmlhbnRzID0gKGNvZGU/KSA9PiB7XG4gICAgICAgIGxldCB2YXJpYW50cyA9IHRoaXMucHJvZHVjdFN1YmplY3QudmFsdWUudmFyaWFudHM7XG4gICAgICAgIGlmICghY29kZSkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zU3ViamVjdC52YWx1ZS5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlcy5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50cyA9IHZhcmlhbnRzLmZpbHRlcih2YXJpYW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFyaWFudC5vcHRpb25zLnNvbWUodmFyaWFudF9vcHRpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG9wdGlvbi5jb2RlIGluIHZhcmlhbnRfb3B0aW9uICYmIHZhcmlhbnRfb3B0aW9uW29wdGlvbi5jb2RlXSA9PSB2YWx1ZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyaWFudHMgPSB2YXJpYW50cy5maWx0ZXIodmFyaWFudCA9PiB2YXJpYW50LmNvZGUgPT0gY29kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YXJpYW50cyA9IHZhcmlhbnRzO1xuICAgICAgICBjb2RlICYmIHRoaXMudXBkYXRlT3B0aW9ucygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlT3B0aW9ucyA9ICgpID0+IHtcbiAgICAgICAgbGV0IHsgb3B0aW9ucyB9ID0gdGhpcy52YXJpYW50cy5sZW5ndGggJiYgdGhpcy52YXJpYW50c1swXTtcbiAgICAgICAgb3B0aW9ucyAmJiBvcHRpb25zLmZvckVhY2gob3B0aW9uID0+IE9iamVjdC5rZXlzKG9wdGlvbikuZm9yRWFjaChrZXkgPT4gdGhpcy5zZXRPcHRpb24oa2V5LCBvcHRpb25ba2V5XSkpKVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVBc29jaWF0ZWREYXRhRnJvbVZhcmlhbnRzID0gKCkgPT4ge1xuICAgICAgICBsZXQgYXNvY2lhdGVkOiBhbnkgPSB7fTtcbiAgICAgICAgaWYgKHRoaXMuaXNSZWFkeSgpKSB7XG4gICAgICAgICAgICBhc29jaWF0ZWQuc3RvY2sgPSB0aGlzLnZhcmlhbnRzWzBdLnN0b2NrXG4gICAgICAgICAgICBhc29jaWF0ZWQucHJpY2UgPSB0aGlzLnZhcmlhbnRzWzBdLnByaWNlLnRvU3RyaW5nKClcbiAgICAgICAgICAgIGFzb2NpYXRlZC5zYWxlcHJpY2UgPSB0aGlzLnZhcmlhbnRzWzBdLnNhbGVwcmljZSAmJiB0aGlzLnZhcmlhbnRzWzBdLnNhbGVwcmljZS50b1N0cmluZygpIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGFzb2NpYXRlZC5kaXNjb3VudCA9IHRoaXMudmFyaWFudHNbMF0/LmRpc2NvdW50IHx8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGFzb2NpYXRlZC5wcm9wZXJ0aWVzID0gdGhpcy52YXJpYW50c1swXS5wcm9wZXJ0aWVzID8gdGhpcy5iZWF1dGlmeVByb3BlcnRpZXModGhpcy52YXJpYW50c1swXS5wcm9wZXJ0aWVzKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGFzb2NpYXRlZC51bmlxdWVFeHRlcm5hbENvZGUgPSB0aGlzLnZhcmlhbnRzWzBdPy51bmlxdWVFeHRlcm5hbENvZGUgfHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgYXNvY2lhdGVkLm11bHRpcGxlUXVhbnRpdHkgPSB0aGlzLnZhcmlhbnRzWzBdPy5tdWx0aXBsZVF1YW50aXR5IHx8IHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFzb2NpYXRlZC5wcmljZSA9IHRoaXMuY3JhdGVQcmljZSgpXG4gICAgICAgICAgICBhc29jaWF0ZWQuc2FsZXByaWNlID0gdGhpcy5jcmF0ZVNhbGVQcmljZSgpXG4gICAgICAgICAgICBhc29jaWF0ZWQuc3RvY2sgPSAodGhpcy52YXJpYW50cy5tYXAodmFyaWFudCA9PiB2YXJpYW50LnN0b2NrKSkucmVkdWNlKChhLCBiKSA9PiBhICsgYilcbiAgICAgICAgICAgIGFzb2NpYXRlZC5kaXNjb3VudCA9IHRoaXMuY3JhdGVEaXNjb3VudCgpXG4gICAgICAgIH1cblxuICAgICAgICAoJ2ltYWdlcycgaW4gdGhpcy52YXJpYW50c1swXSAmJiB0aGlzLnZhcmlhbnRzWzBdLmltYWdlcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgPyBhc29jaWF0ZWQucGljdHVyZSA9IHRoaXMudmFyaWFudHNbMF0uaW1hZ2VzWzBdXG4gICAgICAgICAgICA6IGFzb2NpYXRlZC5waWN0dXJlID0gKHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QudmFsdWUucGljdHVyZSB8fCB0aGlzLnByb2R1Y3RTdWJqZWN0LnZhbHVlLnBpY3R1cmVzZGVmYXVsdFswXSk7XG5cblxuICAgICAgICBhc29jaWF0ZWQubWF4aW11bUFtb3VudCA9IHRoaXMudmFyaWFudHNbMF0/Lm1heGltdW1BbW91bnQgfHwgMFxuICAgICAgICBhc29jaWF0ZWQubWluaW11bUFtb3VudCA9IHRoaXMudmFyaWFudHNbMF0/Lm1pbmltdW1BbW91bnQgfHwgMFxuXG4gICAgICAgIGFzb2NpYXRlZC5tYXhpbXVtSXRlbXNRdWFudGl0eSA9IHRoaXMudmFyaWFudHNbMF0/LnN0b2NrID4gMCAmJiAnbWF4aW11bUl0ZW1zUXVhbnRpdHknIGluIHRoaXMudmFyaWFudHNbMF0gPyB0aGlzLnZhcmlhbnRzWzBdPy5tYXhpbXVtSXRlbXNRdWFudGl0eSA6IHRoaXMudmFyaWFudHNbMF0/LnN0b2NrXG4gICAgICAgIGFzb2NpYXRlZC5taW5pbXVtSXRlbXNRdWFudGl0eSA9IHRoaXMudmFyaWFudHNbMF0/LnN0b2NrID4gMCAmJiAnbWluaW11bUl0ZW1zUXVhbnRpdHknIGluIHRoaXMudmFyaWFudHNbMF1cbiAgICAgICAgICAgICYmIHRoaXMudmFyaWFudHNbMF0/Lm1pbmltdW1JdGVtc1F1YW50aXR5ID4gMCA/IHRoaXMudmFyaWFudHNbMF0/Lm1pbmltdW1JdGVtc1F1YW50aXR5XG4gICAgICAgICAgICA6ICh0aGlzLnZhcmlhbnRzWzBdPy5tdWx0aXBsZVF1YW50aXR5ID8gdGhpcy52YXJpYW50c1swXT8ubXVsdGlwbGVRdWFudGl0eSA6IDEpXG5cbiAgICAgICAgYXNvY2lhdGVkLmZpbmFsQ29uc3VtZXIgPSB7XG4gICAgICAgICAgICBmaW5hbENvbnN1bWVyUHJpY2U6IHRoaXMudmFyaWFudHNbMF0/LmZpbmFsX2NvbnN1bWVyX3ByaWNlLFxuICAgICAgICAgICAgb3JpZ2luYWxGaW5hbENvbnN1bWVyUHJpY2U6IHRoaXMudmFyaWFudHNbMF0/Lm9yaWdpbmFsX2ZpbmFsX2NvbnN1bWVyX3ByaWNlLFxuICAgICAgICB9XG5cbiAgICAgICAgYXNvY2lhdGVkLnRheGVzID0ge1xuICAgICAgICAgICAgdGF4SW5jbHVkZWQ6IHRoaXMudmFyaWFudHNbMF0/LnRheEluY2x1ZGVkLFxuICAgICAgICAgICAgdGF4Q2F0ZWdvcnk6IHRoaXMudmFyaWFudHNbMF0/LnRheENhdGVnb3J5LFxuICAgICAgICB9XG4gICAgICAgIGFzb2NpYXRlZC50YXhlQW1vdW50ID0gdGhpcy52YXJpYW50c1swXT8udGF4ZXMgfHwgdW5kZWZpbmVkO1xuICAgICAgICBhc29jaWF0ZWQudGF4UmF0ZSA9IHRoaXMudmFyaWFudHNbMF0/LnRheFJhdGUgfHwgdW5kZWZpbmVkO1xuICAgICAgICBhc29jaWF0ZWQucHJpY2VXaXRob3V0VGF4ZXMgPSB0aGlzLnZhcmlhbnRzWzBdPy5wcmljZVdpdGhvdXRUYXhlcyB8fCB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC5uZXh0KGFzb2NpYXRlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlY2liZSBsYXMgcHJvcGllZGFkZXMgZGUgdW5hIHZhcmlhbnRlIHkgcG9yIGNhZGEgaXRlbSBhcm1hIHVuIG9iamV0byBjb24gXG4gICAgICogZWwgbmFtZT1jbGF2ZSB5IHZhbHVlPXZhbG9yIGRlIGVzZSBpdGVtLiAgXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgXG4gICAgICogQHJldHVybnMgVW4gYXJyZWdsbyBjb24gbGFzIHByb3BpZWRhZGVzIGRlIGxhIGZvcm1hIHsgbmFtZSA9IC4uLiAsIHZhbHVlID0gLi4ufVxuICAgICAqL1xuICAgIHByaXZhdGUgYmVhdXRpZnlQcm9wZXJ0aWVzID0gKHByb3BlcnRpZXMpID0+IHtcbiAgICAgICAgbGV0IGJlYXV0aWZ5RGF0YSA9IFtdXG4gICAgICAgIHByb3BlcnRpZXMuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBwcm9wKSB7XG4gICAgICAgICAgICAgICAgYmVhdXRpZnlEYXRhLnB1c2goeyBuYW1lOiBrZXksIHZhbHVlOiBwcm9wW2tleV0gfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBiZWF1dGlmeURhdGFcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyYXRlRGlzY291bnQgPSAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgYWxsX2Rpc2NvdW50ID0gJyc7XG4gICAgICAgICAgICB0aGlzLnZhcmlhbnRzLmZvckVhY2godmFyaWFudCA9PiB7XG4gICAgICAgICAgICAgICAgdmFyaWFudC5kaXNjb3VudCAmJiAoYWxsX2Rpc2NvdW50ID0gYWxsX2Rpc2NvdW50ICsgJywgJyArIHZhcmlhbnQuZGlzY291bnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoYWxsX2Rpc2NvdW50ID09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFsbF9kaXNjb3VudFxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmF0ZVByaWNlID0gKCkgPT4ge1xuICAgICAgICBsZXQgbWluX3ByaWNlID0gMDtcbiAgICAgICAgbGV0IG1heF9wcmljZSA9IDA7XG4gICAgICAgIGxldCBhbGxfcHJpY2VzID0gW107XG4gICAgICAgIHRoaXMudmFyaWFudHMuZm9yRWFjaCh2YXJpYW50ID0+IHtcbiAgICAgICAgICAgIGFsbF9wcmljZXMucHVzaCh2YXJpYW50LnByaWNlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG1pbl9wcmljZSA9IGFsbF9wcmljZXMucmVkdWNlKChhLCBiKSA9PiBNYXRoLm1pbihhLCBiKSk7XG4gICAgICAgIG1heF9wcmljZSA9IGFsbF9wcmljZXMucmVkdWNlKChhLCBiKSA9PiBNYXRoLm1heChhLCBiKSwgMCk7XG4gICAgICAgIHJldHVybiBtaW5fcHJpY2UgPT0gbWF4X3ByaWNlID8gbWF4X3ByaWNlLnRvU3RyaW5nKCkgOiBtaW5fcHJpY2UgKyAnIC0gJyArIG1heF9wcmljZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyYXRlU2FsZVByaWNlID0gKCkgPT4ge1xuICAgICAgICBsZXQgbWluX3ByaWNlID0gMDtcbiAgICAgICAgbGV0IG1heF9wcmljZSA9IDA7XG4gICAgICAgIGxldCBhbGxfcHJpY2VzID0gW107XG4gICAgICAgIHRoaXMudmFyaWFudHMuZm9yRWFjaCh2YXJpYW50ID0+IHtcbiAgICAgICAgICAgIHZhcmlhbnQuc2FsZXByaWNlICYmIGFsbF9wcmljZXMucHVzaCh2YXJpYW50LnNhbGVwcmljZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWFsbF9wcmljZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgbWluX3ByaWNlID0gYWxsX3ByaWNlcy5yZWR1Y2UoKGEsIGIpID0+IE1hdGgubWluKGEsIGIpKTtcbiAgICAgICAgbWF4X3ByaWNlID0gYWxsX3ByaWNlcy5yZWR1Y2UoKGEsIGIpID0+IE1hdGgubWF4KGEsIGIpLCAwKTtcbiAgICAgICAgcmV0dXJuIG1pbl9wcmljZSA9PSBtYXhfcHJpY2UgPyBtYXhfcHJpY2UudG9TdHJpbmcoKSA6IG1pbl9wcmljZSArICcgLSAnICsgbWF4X3ByaWNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5SYW5nZSA9IChxdWFudGl0eSwgbWluLCBtYXgpID0+ICgocXVhbnRpdHkgLSBtaW4pICogKHF1YW50aXR5IC0gbWF4KSA8PSAwKVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZVF1YW50aXR5ID0gKHF1YW50aXR5OiBudW1iZXIsIHZhcmlhbnRDb2RlPzogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvZGVUb0NoZWNrID0gdmFyaWFudENvZGUgfHwgdGhpcy52YXJpYW50c1swXS5jb2RlO1xuICAgICAgICBjb25zdCBhY3R1YWxRdWFudGl0eSA9IHRoaXMuY2FydFNlcnZpY2UuZ2V0Q291bnRGcm9tSXRlbUluQ2FydChjb2RlVG9DaGVjayk7XG4gICAgICAgIGNvbnN0IGFzb2NpYXRlZERhdGEgPSB0aGlzLmFzb2NpYXRlZERhdGFTdWJqZWN0LnZhbHVlO1xuICAgICAgICBjb25zdCB0b3RhbFF1YW50aXR5ID0gYWN0dWFsUXVhbnRpdHkgKyBxdWFudGl0eTtcblxuICAgICAgICBjb25zdCB2YXJpYW50ID0gdGhpcy52YXJpYW50cy5maW5kKHYgPT4gdi5jb2RlID09PSBjb2RlVG9DaGVjayk7XG4gICAgICAgIGNvbnN0IHN0b2NrID0gdmFyaWFudD8uc3RvY2sgPz8gMDtcblxuICAgICAgICBpZiAodG90YWxRdWFudGl0eSA+IHN0b2NrKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrLWFjdHVhbGx5Jyk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXNvY2lhdGVkRGF0YS5tYXhpbXVtSXRlbXNRdWFudGl0eSAmJiB0b3RhbFF1YW50aXR5ID4gYXNvY2lhdGVkRGF0YS5tYXhpbXVtSXRlbXNRdWFudGl0eSkge1xuICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ21heGltdW0taXRlbXMtcXVhbnRpdHknLCB7IHF1YW50aXR5OiBhc29jaWF0ZWREYXRhLm1heGltdW1JdGVtc1F1YW50aXR5IH0pO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFzb2NpYXRlZERhdGEubWluaW11bUl0ZW1zUXVhbnRpdHkgJiYgdG90YWxRdWFudGl0eSA8IGFzb2NpYXRlZERhdGEubWluaW11bUl0ZW1zUXVhbnRpdHkpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KCdtaW5pbXVtLWl0ZW1zLXF1YW50aXR5JywgeyBxdWFudGl0eTogYXNvY2lhdGVkRGF0YS5taW5pbXVtSXRlbXNRdWFudGl0eSB9KTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhc29jaWF0ZWREYXRhLm11bHRpcGxlUXVhbnRpdHkgJiYgYXNvY2lhdGVkRGF0YS5tdWx0aXBsZVF1YW50aXR5ID4gMCkge1xuICAgICAgICAgICAgaWYgKHRvdGFsUXVhbnRpdHkgJSBhc29jaWF0ZWREYXRhLm11bHRpcGxlUXVhbnRpdHkgIT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygnbXVzdC1iZS1tdWx0aXBsZScsIHsgcXVhbnRpdHk6IGFzb2NpYXRlZERhdGEubXVsdGlwbGVRdWFudGl0eSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlUHJpY2VBbmRDcmVkaXRzID0gKHByaWNlOiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgICAgICAgaWYgKHRoaXMuYmFsYW5jZUN1c3RvbWVyID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmJhbGFuY2VDdXN0b21lci5hbGxvd0FueVBheW1lbnRNZXRob2QpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYmFsYW5jZUN1c3RvbWVyLnJlbWFpbmluZ0NyZWRpdHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByaWNlID4gdGhpcy5iYWxhbmNlQ3VzdG9tZXIucmVtYWluaW5nQ3JlZGl0cykge1xuICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ25vdC1lbm91Z2gtY3JlZGl0cycpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuXG4gICAgcHJpdmF0ZSBmZXRjaENhcnREYXRhID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmdldFRvdGFsQW1vdW50KCkuc3Vic2NyaWJlKCh0b3RhbEFtb3VudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG90YWxBbW91bnQgPSB0b3RhbEFtb3VudDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5iYWxhbmNlQ3VzdG9tZXIkLnN1YnNjcmliZSgoYmFsYW5jZUN1c3RvbWVyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmJhbGFuY2VDdXN0b21lciA9IGJhbGFuY2VDdXN0b21lcjtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8vIEN1YW5kbyBoYXlhIG1vZGVsb3MgZGUgcmVzcHVlc3RhLCB2YWxpZGFtb3MgcXVlIG5vIHNlIGludGVudGUgY2FyZ2FyIHVuIHByb2R1Y3RvIGluY29tcGxldG9cbiAgICBwcml2YXRlIGlzUHJvZHVjdFZhbGlkID0gKHByb2R1Y3Q6IFByb2R1Y3QpID0+IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBBcnJheSBkZSBWYXJpYW50ZXMgeSBzdXMgdmFsb3Jlc1xuICAgICAqIFxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXRvcm5hIHVuYSBsaXN0YSBmaWx0cmFkYSBkZSBsYXMgdmFyaWFudGVzIHF1ZSBlc3RhbiBzZWxlY2Npb25hZGFzXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRWYXJpYW50c1NlbGVjdGVkKG9wdGlvbnM6IGFueSwgb3B0aW9uc0V4Y2VwdGlvbjogQXJyYXk8YW55Pik6IEFycmF5PE9iamVjdD4ge1xuXG4gICAgICAgIGxldCB2YXJpYW50c1NlbGVjdGVkID0gW107XG4gICAgICAgIG9wdGlvbnMuZm9yRWFjaCh2ID0+IHtcbiAgICAgICAgICAgIGlmICh2LnZhbHVlcyAmJiB2LnZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB2LnZhbHVlcy5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWwuc2VsZWN0ZWQgJiYgIW9wdGlvbnNFeGNlcHRpb24uZmluZChvcCA9PiBvcC50b1VwcGVyQ2FzZSgpID09IHYuY29kZS50b1VwcGVyQ2FzZSgpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudHNTZWxlY3RlZFt2LmNvZGVdID0gdmFsLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdmFyaWFudHNTZWxlY3RlZDtcblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBvcHRpb25zIEFycmF5IGRlIFZhcmlhbnRlcyB5IHN1cyB2YWxvcmVzXG4gICAgICogQHBhcmFtIHZhcmlhbnRzIFRvZGFzIGxhcyB2YXJpYW50ZXMgZGlzcG9uaWJsZXMgZGVsIHByb2R1Y3RvXG4gICAgICogXG4gICAgICogQGRlc2NyaXB0aW9uIHJldG9ybmEgdG9kYXMgbGFzIHZhcmlhbnRlcyBkaXNwb25pYmxlcyBhIHNlbGVjY2lvbiB5IHN1IHN0b2NrXG4gICAgICovXG4gICAgcHVibGljIGdldFZhcmlhbnRzQXZhaWxhYmxlKG9wdGlvbnM6IGFueSwgdmFyaWFudHM6IGFueSwgb3B0aW9uc0V4Y2VwdGlvbjogQXJyYXk8YW55Pik6IGFueSB7XG5cbiAgICAgICAgbGV0IHZhcmlhbnRzU2VsZWN0ZWQgPSB0aGlzLmdldFZhcmlhbnRzU2VsZWN0ZWQob3B0aW9ucywgb3B0aW9uc0V4Y2VwdGlvbik7XG5cbiAgICAgICAgbGV0IHZhcmlhbnRzQXZhaWxhYmxlID0gW107XG5cbiAgICAgICAgdmFyaWFudHMubWFwKHYgPT4ge1xuXG4gICAgICAgICAgICBsZXQgYXV4ID0ge307XG4gICAgICAgICAgICBpZiAodi5vcHRpb25zICYmIHYub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB2Lm9wdGlvbnMubWFwKG9wID0+IHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihhdXgsIG9wLCB7IHN0b2NrOiB2LnN0b2NrIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXJpYW50c0F2YWlsYWJsZS5wdXNoKGF1eCk7XG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiB2YXJpYW50c0F2YWlsYWJsZS5maWx0ZXIodmEgPT4gdGhpcy5jb25zdGFudHMuY29udGFpbnNBbGwoeyAuLi52YXJpYW50c1NlbGVjdGVkIH0sIHZhKSlcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBvcHRpb25zIEFycmF5IGRlIHZhcmlhbnRlcyB5IHN1cyB2YWxvcmVzXG4gICAgICogQHBhcmFtIGNvZGUgQ29kaWdvIGRlIGxhIHZhcmlhbnRlIGEgYnVzY2FyXG4gICAgICogQHBhcmFtIG5hbWUgbm9tYnJlIGRlIGxhIHZhcmlhbnRlIGEgYnVzY2FyXG4gICAgICogQHBhcmFtIHZhcmlhbnRzIHZhcmlhbnRlcyBkZWwgcHJvZHVjdG9cbiAgICAgKiBcbiAgICAgKiBAZGVzY3JpcHRpb24gYnVzY2EgZW4gbGEgbGlzdGEgZGUgdmFyaWFudGVzIGRpc3BvbmlibGVzIHNpIGhheSBkZSBlc2UgY29kaWdvLCBlc2Ugbm9tYnJlIHkgY29uIHN0b2NrIFxuICAgICAqL1xuICAgIHB1YmxpYyBleGlzdFZhcmlhbnRBbmRIYXNTdG9jayhvcHRpb25zLCBjb2RlLCBuYW1lLCB2YXJpYW50cywgb3B0aW9uc0V4Y2VwdGlvbiA9IFtdKTogYm9vbGVhbiB7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFyaWFudHNBdmFpbGFibGUob3B0aW9ucywgdmFyaWFudHMsIG9wdGlvbnNFeGNlcHRpb24pLmZpbmQodmEgPT5cbiAgICAgICAgICAgIHZhLmhhc093blByb3BlcnR5KGNvZGUpICYmIHZhW2NvZGVdID09PSBuYW1lICYmIHZhLnN0b2NrID4gMClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCBwcm9kdWN0byBlbCBjdWFsIHNlIHF1aWVyZSBkZXNkb2JsYXIgcG9yIHZhcmlhbnRlcyBwb3IgdW5hIG9wY2nDs24uXG4gICAgICogQHBhcmFtIHdpdGhPcHRpb24gJ3R5cGUnIHRpcG8gZGUgb3BjacOzbiwgY29kZTogY8OzZGlnbyBkZSBsYSBvcGNpw7NuLiAnZGVmYXVsdEZpcnN0T3B0aW9uJzogZW4gY2FzbyBkZSBxdWUgbm8gc2UgcHVlZGEgZGVzZG9ibGFyIHBvciBsYSBvcGNpw7NuIGluZGljYWRhIHNpIGVsIHZhbG9yIGVzIHZlcmRhZGVybyBzZSBpbnRlbnRhcmEgZGVzZG9ibGFyIHBvciBsYSBwcmltZXJhIG9wY2nDs24gYXNvY2lhZGEgYWwgcHJvZHVjdG8uXG4gICAgICogJ2NoZWNrSWZTdG9jayc6IGVuIGNhc28gZGUgcXVlIGVzdGEgdmFsb3Igc2VhIHZlcmRhZGVybyBzZSByZWFsaXphIHVuIGNvbnRyb2wgZGUgcXVlIGxhIHZhcmlhbnRlcyBjdWVudGVuIGNvbiBzdG9jayBwYXJhIHNlciB1biBwcm9kdWN0byBkZXNkb2JsYWRvIHBvciBsYSB2YXJpYW50ZSwgc2kgZWwgdmFsb3IgZXMgZmFsc28gbm8gc2UgcmVhbGl6YSBkaWNobyBjb250cm9sIHkgZWwgcHJvZHVjdG8gc2UgZGVzZG9ibGFyYSBjb24gc3RvY2sgZW4gMC5cbiAgICAgKiBAcmV0dXJucyBhcnJlZ2xvIGNvbiBlbCBwcm9kdWN0byBkZXNkb2JsYWRvIHBvciBsYSB2YXJpYW50ZSBzb2xpY2l0YWRhLlxuICAgICAqIChvcGNpw7NuIHBvciBkZWZlY3RvIHF1ZSBzZSBpbnRlbnRhIGhhY2VyIGVsIGRlc2RvYmxhbWllbnRvICdjb2xvcicsIG8gYmllbiBzaSBlbiBsZSBwYXLDoW1ldHJvIHdpdGhPcHRpb24gZWwgYXRyaWJ1dG8gJ2RlZmF1bHRGaXJzdE9wdGlvbicgZXMgdmVyZGFkZXJvIHNlIGRlc2RvYmxhIHBvciBsYSBwcmltZXJhIG9wY2nDs24gYXNvY2lhZGEgYWwgcHJvZHVjdG8gKSBcbiAgICAgKi9cbiAgICBnZXRQcm9kdWN0V2l0aFVuaXF1ZVZhcmlhbnQgPSAocHJvZHVjdCwgd2l0aE9wdGlvbj86IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvZHVjdHNTZXJ2aWNlLmdldFByb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQoW3Byb2R1Y3RdLCB3aXRoT3B0aW9uKVxuICAgIH1cblxufSJdfQ==
528
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9wcm9kdWN0cy9wcm9kdWN0LWRldGFpbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUF5QixNQUFNLE1BQU0sQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd0RDtJQWNJLDhCQUNZLGVBQWdDLEVBQVUsV0FBd0IsRUFBVSxhQUEyQixFQUN2RyxTQUFvQixFQUFTLGdCQUFrQyxFQUFTLGVBQWdDO1FBRnBILGlCQUdDO1FBRlcsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUN2RyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQVMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFTLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQWQ1RyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFVLEVBQUUsQ0FBQyxDQUFDO1FB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cUJBQXFCO1FBRS9FLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQSxFQUFFO1lBQ3pFLE9BQUEsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQztRQUE1RCxDQUE0RCxDQUFDLENBQUE7SUFDckUsQ0FBQzs7Z0JBeGM0QixlQUFlO2dCQUF1QixXQUFXO2dCQUF5QixZQUFZO2dCQUM1RixTQUFTO2dCQUEyQixnQkFBZ0I7Z0JBQTBCLGVBQWU7O0lBaEIzRyxvQkFBb0I7UUFEaEMsVUFBVSxFQUFFO09BQ0Esb0JBQW9CLENBcWVoQztJQUFELDJCQUFDO0NBQUEsQUFyZUQsSUFxZUM7U0FyZVksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBwYXJ0aXRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Byb2R1Y3QnO1xuaW1wb3J0IHsgUHJvZHVjdHNTZXJ2aWNlIH0gZnJvbSAnLi9wcm9kdWN0cy5zZXJ2aWNlJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IF8gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BhcmFtc0ludGVyZmFjZXMvcGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCc7XG5pbXBvcnQgeyBDdXJyZW5jeVNlcnZpY2UgfSBmcm9tICcuLi9jdXJyZW5jeS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFByb2R1Y3REZXRhaWxTZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgcHJvZHVjdFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3Q+KHt9KTtcbiAgICBwcml2YXRlIG9wdGlvbnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHt9KTtcbiAgICBwcml2YXRlIGFzb2NpYXRlZERhdGFTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHsgcHJpY2U6ICcnLCBzdG9jazogMCwgcGljdHVyZTogJycgfSk7XG5cbiAgICBwcml2YXRlIHZhcmlhbnRzID0gW11cblxuICAgIHB1YmxpYyBwcm9kdWN0JCA9IHRoaXMucHJvZHVjdFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIG9wdGlvbnMkID0gdGhpcy5vcHRpb25zU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgYXNvY2lhdGVkRGF0YSQgPSB0aGlzLmFzb2NpYXRlZERhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHByaXZhdGUgY3VycmVudFRvdGFsQW1vdW50OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBiYWxhbmNlQ3VzdG9tZXI6IGFueSA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBwcm9kdWN0c1NlcnZpY2U6IFByb2R1Y3RzU2VydmljZSwgcHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsIHByaXZhdGUgdG9hc3RyU2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnN0YW50czogQ29uc3RhbnRzLCBwdWJsaWMgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSwgcHVibGljIGN1cnJlbmN5U2VydmljZTogQ3VycmVuY3lTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBAcGFyYW0gY29kZSBJZGVudGlmaWNhZG9yIGRlbCBwcm9kdWN0b1xuICAgICogQHBhcmFtIHZhcmlhbnQgSW5kaWNhIHNpIHNlIGVzdMOhIHNvbGljaXRhbmRvIHVuIHByb2R1Y3RvIHBvciBzdSBjb2RpZ28sIG8gcG9yIGVsIGNvZGlnbyBjb3JyZXNwb25kaWVudGUgYSB1bmEgZGUgc3VzIHZhcmlhbnRlc1xuICAgICogIFxuICAgICogQ2FyZ2EgZWwgcHJvZHVjdG8gc29saWNpdGFkbyBhc3luY3JvbmljYW1lbnRlIHNpbiByZXNwdWVzdGEgXG4gICAgKi9cbiAgICBsb2FkUHJvZHVjdCA9IChjb2RlLCB2YXJpYW50OiBib29sZWFuID0gZmFsc2UpID0+XG4gICAgICAgIHRoaXMucHJvZHVjdHNTZXJ2aWNlLmdldFNwZWNpZmljUHJvZHVjdChjb2RlLCB2YXJpYW50KS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgcmVzID0+IHZhcmlhbnQgPyB0aGlzLmluaXRpYWxpemUocmVzLCBjb2RlKSA6IHRoaXMuaW5pdGlhbGl6ZShyZXMpLFxuICAgICAgICAgICAgZXJyID0+IHRoaXMucHJvZHVjdFN1YmplY3QubmV4dChudWxsKVxuICAgICAgICApXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcHJvZHVjdF9pZCBJZGVudGlmaWNhZG9yIGRlbCBwcm9kdWN0b1xuICAgICAqIEBwYXJhbSB2YXJpYW50IEluZGljYSBzaSBzZSBlc3TDoSBzb2xpY2l0YW5kbyB1biBwcm9kdWN0byBwb3Igc3UgY29kaWdvLCBvIHBvciBlbCBjb2RpZ28gY29ycmVzcG9uZGllbnRlIGEgdW5hIGRlIHN1cyB2YXJpYW50ZXNcbiAgICAgKiBAYXN5bmNcbiAgICAgKiAgXG4gICAgICogQSBkaWZlcmVuY2lhIGRlbCBtZXRvZG8gbG9hZFByb2R1Y3QsIGVzdGUgcmV0b3JuYSB1biB2YWxvciBjdWFuZG8gdGVybWluYSBcbiAgICAgKi9cbiAgICBnZXRQcm9kdWN0ID0gYXN5bmMgKHByb2R1Y3RfaWQsIHZhcmlhbnQ6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9kdWN0c1NlcnZpY2UuZ2V0U3BlY2lmaWNQcm9kdWN0KHByb2R1Y3RfaWQsIHZhcmlhbnQpLnRvUHJvbWlzZSgpO1xuICAgICAgICBpZiAoIXJlc3VsdCB8fCByZXN1bHQuZXJyb3IpIHRoaXMucHJvZHVjdFN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgZWxzZSB2YXJpYW50ID8gdGhpcy5pbml0aWFsaXplKHJlc3VsdCwgcHJvZHVjdF9pZCkgOiB0aGlzLmluaXRpYWxpemUocmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplID0gKHByb2R1Y3QsIHZhcmlhbnRfY29kZT8pID0+IHtcbiAgICAgICAgdGhpcy5wcm9kdWN0U3ViamVjdC5uZXh0KHByb2R1Y3QpO1xuICAgICAgICB0aGlzLm9wdGlvbnNTdWJqZWN0Lm5leHQodGhpcy5nZXRPcHRpb25zKCkpXG4gICAgICAgIHZhcmlhbnRfY29kZSA/IHRoaXMudXBkYXRlVmFyaWFudHModmFyaWFudF9jb2RlKSA6IHRoaXMudXBkYXRlVmFyaWFudHMoKTtcbiAgICAgICAgdGhpcy52YXJpYW50cy5sZW5ndGggJiYgdGhpcy5nZW5lcmF0ZUFzb2NpYXRlZERhdGFGcm9tVmFyaWFudHMoKTtcbiAgICAgICAgdGhpcy5mZXRjaENhcnREYXRhKClcbiAgICAgICAgLy90aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCd2aWV3X2l0ZW0nLCB7IC4uLnByb2R1Y3QsIGN1cnJlbmN5OiB0aGlzLmNvbnN0YW50cy5jdXJyZW5jeS5jb2RlIH0pXG4gICAgICAgIC8vIHZhcmlhbnRfY29kZSAmJiB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCd2aWV3X2l0ZW0nLCB7IC4uLnByb2R1Y3QsIGN1cnJlbmN5OiB0aGlzLmNvbnN0YW50cy5jdXJyZW5jeS5jb2RlIH0pXG4gICAgfVxuXG4gICAgc2V0UHJvZHVjdCA9IChwcm9kdWN0KSA9PiB0aGlzLmlzUHJvZHVjdFZhbGlkKHByb2R1Y3QpICYmIHRoaXMuaW5pdGlhbGl6ZShwcm9kdWN0KTtcblxuICAgIGlzUmVhZHkgPSAoKSA9PiB0aGlzLnZhcmlhbnRzLmxlbmd0aCA9PSAxO1xuXG4gICAgc2V0T3B0aW9uID0gKG9wdGlvbl9jb2RlLCBvcHRpb25fdmFsdWUpID0+IHtcbiAgICAgICAgbGV0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnNTdWJqZWN0LnZhbHVlO1xuICAgICAgICBsZXQgb3B0aW9uID0gb3B0aW9ucy5maW5kKGVsZW1lbnQgPT4gZWxlbWVudC5jb2RlID09IG9wdGlvbl9jb2RlKS52YWx1ZXMuZmluZCh2YWx1ZSA9PiB2YWx1ZS5uYW1lID09IG9wdGlvbl92YWx1ZSk7XG4gICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9ICFvcHRpb24uc2VsZWN0ZWQ7XG4gICAgICAgIG9wdGlvbnMuZmluZChlbGVtZW50ID0+IGVsZW1lbnQuY29kZSA9PSBvcHRpb25fY29kZSkudmFsdWVzLmZvckVhY2goXG4gICAgICAgICAgICB2YWx1ZSA9PiB7IGlmICh2YWx1ZS5uYW1lICE9IG9wdGlvbi5uYW1lKSB2YWx1ZS5zZWxlY3RlZCA9IGZhbHNlIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5vcHRpb25zU3ViamVjdC5uZXh0KG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhcmlhbnRzKCk7XG4gICAgICAgIGlmICh0aGlzLnZhcmlhbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIEhhYmlsaXRhciB0b2RvcyBsb3MgYm90b25lcyBjb24gbGEgY2xhc2UgJ2FkZENhcnRCdXR0b24nXG4gICAgICAgICAgICBjb25zdCBzdWJtaXRCdXR0b25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmFkZENhcnRCdXR0b24nKTtcbiAgICAgICAgICAgIHN1Ym1pdEJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4ge1xuICAgICAgICAgICAgICAgIChidXR0b24gYXMgSFRNTEJ1dHRvbkVsZW1lbnQpLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVBc29jaWF0ZWREYXRhRnJvbVZhcmlhbnRzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygnc2VsZWN0aW9uLW5vdC1hdmFpbGFibGUnKTtcblxuICAgICAgICAgICAgLy8gRGVzaGFiaWxpdGFyIHRvZG9zIGxvcyBib3RvbmVzIGNvbiBsYSBjbGFzZSAnc3VibWl0LWJ1dHRvbidcbiAgICAgICAgICAgIGNvbnN0IHN1Ym1pdEJ1dHRvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYWRkQ2FydEJ1dHRvbicpO1xuICAgICAgICAgICAgc3VibWl0QnV0dG9ucy5mb3JFYWNoKGJ1dHRvbiA9PiB7XG4gICAgICAgICAgICAgICAgKGJ1dHRvbiBhcyBIVE1MQnV0dG9uRWxlbWVudCkuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGNoYW5nZVBpY3R1cmUgPSAocGljdHVyZSkgPT4ge1xuICAgICAgICBsZXQgZGF0YSA9IHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QudmFsdWU7XG4gICAgICAgIGRhdGEucGljdHVyZSA9IHBpY3R1cmU7XG4gICAgICAgIHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QubmV4dChkYXRhKTtcbiAgICB9XG5cbiAgICBoYW5kbGVFcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICAvLyBXaGF0aGV2ZXIgd2UgbmVlZCB0byBkbyB3aXRoIGVycm9yXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGFncmVnYS9hY3R1YWxpemEgdW4gaXRlbSBlbiBlbCBjYXJyaXRvIFxuICAgICAqIEBwYXJhbSBxdWFudGl0eSBjYW50aWRhZCBhIGFncmVnYXJcbiAgICAgKiBAcGFyYW0gdmFyaWFudF9jb2RlICoqKG9wY2lvbmFsKSoqIGNvZGlnbyBkZSBsYSB2YXJpYW50ZSBzZWxlY2Npb25hZGEgZGVsIHByb2R1Y3RvLlxuICAgICAqIEBwYXJhbSBjb21tZW50cyAqKihvcGNpb25hbCkqKiBjb21lbnRhcmlvIHBlcnNvbmFsaXphZG8gZGVsIGNsaWVudGUuXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgYWRkVG9DYXJ0KHF1YW50aXR5LCB2YXJpYW50X2NvZGU/OiBzdHJpbmcsIGNvbW1lbnRzPzogc3RyaW5nKSB7XG4gICAgICAgIHF1YW50aXR5ID0gcGFyc2VJbnQocXVhbnRpdHkpO1xuXG4gICAgICAgIGlmICghdGhpcy52YXJpYW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KCdjYW50LWJ1eScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHByb2R1Y3Rfc2VsZWN0ZWQgPSBfLmNsb25lKHRoaXMucHJvZHVjdFN1YmplY3QudmFsdWUpO1xuICAgICAgICBsZXQgdmFyaWFudDogYW55O1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy52YXJpYW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygnbm8tdmFyaWFudHMnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICB0aGlzLmFzb2NpYXRlZERhdGFTdWJqZWN0LnZhbHVlLnN0b2NrID09IDBcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrJylcbiAgICAgICAgICAgICAgICAgICAgOiB2YXJpYW50ID0gdGhpcy52YXJpYW50c1swXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKHZhcmlhbnRfY29kZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXJpYW50ID0gdGhpcy52YXJpYW50cy5maW5kKHZhcmlhbnQgPT4gdmFyaWFudC5jb2RlID09PSB2YXJpYW50X2NvZGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFudC5zdG9jayA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ3ZhcmlhbnRzLWxlZnQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhcmlhbnQpIHJldHVybjtcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlUXVhbnRpdHkocXVhbnRpdHksIHZhcmlhbnQuY29kZSkpIHJldHVybjtcblxuICAgICAgICBjb25zdCBwcmljZVRvVmFsaWRhdGUgPSBwcm9kdWN0X3NlbGVjdGVkLnNhbGVwcmljZVxuICAgICAgICAgICAgPyBwcm9kdWN0X3NlbGVjdGVkLnNhbGVwcmljZSAqIHF1YW50aXR5XG4gICAgICAgICAgICA6IHByb2R1Y3Rfc2VsZWN0ZWQucHJpY2UgKiBxdWFudGl0eTtcblxuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVQcmljZUFuZENyZWRpdHMocHJpY2VUb1ZhbGlkYXRlKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHByb2R1Y3QgPSB0aGlzLm1ha2VBZmZvcmRhYmxlUHJvZHVjdChwcm9kdWN0X3NlbGVjdGVkKTtcblxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZFRvQ2FydChwcm9kdWN0LCBxdWFudGl0eSwgdmFyaWFudC5jb2RlLCBjb21tZW50cyk7XG4gICAgfTtcblxuXG5cbiAgICBhZGRUb0NhcnRQcm9taXNlID0gYXN5bmMgKHF1YW50aXR5KSA9PiB7XG4gICAgICAgIHF1YW50aXR5ID0gcGFyc2VJbnQocXVhbnRpdHkpO1xuICAgICAgICBpZiAoIXRoaXMudmFyaWFudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4geyBlcnJvcjogdHJ1ZSwgbWVzc2FnZTogJ2NhbnQtYnV5JyB9O1xuICAgICAgICB9XG4gICAgICAgIGxldCBwcm9kdWN0X3NlbGVjdGVkID0gXy5jbG9uZSh0aGlzLnByb2R1Y3RTdWJqZWN0LnZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMudmFyaWFudHMubGVuZ3RoID4gMSB8fCB0aGlzLnZhcmlhbnRzLmxlbmd0aCA9PSAwIHx8IHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QudmFsdWUuc3RvY2sgPT0gMCkge1xuICAgICAgICAgICAgaWYgKHRoaXMudmFyaWFudHMubGVuZ3RoID09IDApIHJldHVybiB7IGVycm9yOiB0cnVlLCBtZXNzYWdlOiAnbm8tdmFyaWFudHMnIH07XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnZhcmlhbnRzLmxlbmd0aCA+IDEgJiYgdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC52YWx1ZS5zdG9jayA+IDApIHJldHVybiB7IGVycm9yOiB0cnVlLCBtZXNzYWdlOiAndmFyaWFudHMtbGVmdCcgfTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudmFyaWFudHMubGVuZ3RoICE9IDAgJiYgdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC52YWx1ZS5zdG9jayA9PSAwKSByZXR1cm4geyBlcnJvcjogdHJ1ZSwgbWVzc2FnZTogJ291dC1vZi1zdG9jaycgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVRdWFudGl0eShxdWFudGl0eSkpIHJldHVybjtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY2FydFNlcnZpY2UuYWRkVG9DYXJ0UHJvbWlzZSh0aGlzLm1ha2VBZmZvcmRhYmxlUHJvZHVjdChwcm9kdWN0X3NlbGVjdGVkKSwgcXVhbnRpdHksIHRoaXMudmFyaWFudHNbMF0uY29kZSk7XG4gICAgICAgIHJldHVybiAocmVzdWx0ICYmICEocmVzdWx0LmVycm9yKSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgZ2V0T3B0aW9ucyA9IChwcm9kdWN0X3JlY2VpdmVkPzogUHJvZHVjdCkgPT4ge1xuICAgICAgICBsZXQgcHJvZHVjdCA9IHByb2R1Y3RfcmVjZWl2ZWQgfHwgdGhpcy5wcm9kdWN0U3ViamVjdC52YWx1ZTtcbiAgICAgICAgbGV0IG9wdGlvbnMgPSBbXTtcbiAgICAgICAgcHJvZHVjdC5vcHRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBvcHRpb25zLnB1c2godGhpcy50b09wdGlvbihlbGVtZW50KSk7XG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9PcHRpb24gPSAocHJlb3B0aW9uKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBwcmVvcHRpb24ubGFiZWwsXG4gICAgICAgICAgICBjb2RlOiBwcmVvcHRpb24uY29kZSxcbiAgICAgICAgICAgIHR5cGU6IHByZW9wdGlvbi50eXBlLFxuICAgICAgICAgICAgdmFsdWVzOiBwcmVvcHRpb24udmFsdWVzLm1hcCh2YWx1ZSA9PiAoeyBuYW1lOiB2YWx1ZS5jb2RlLCBkZXNjcmlwdGlvbjogdmFsdWUubmFtZSwgaW1hZ2U6IHZhbHVlLmltYWdlLCBtb2JpbGVJbWFnZTogdmFsdWUubW9iaWxlSW1hZ2UsIHNlbGVjdGVkOiBmYWxzZSB9KSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbWFrZUFmZm9yZGFibGVQcm9kdWN0KHByb2R1Y3Rfc2VsZWN0ZWQ6IFByb2R1Y3QpIHtcbiAgICAgICAgcHJvZHVjdF9zZWxlY3RlZC5wcmljZSA9IHBhcnNlRmxvYXQodGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC52YWx1ZS5wcmljZSk7XG4gICAgICAgIHByb2R1Y3Rfc2VsZWN0ZWQuc2FsZXByaWNlID0gcGFyc2VGbG9hdCh0aGlzLmFzb2NpYXRlZERhdGFTdWJqZWN0LnZhbHVlLnByaWNlKTtcbiAgICAgICAgcHJvZHVjdF9zZWxlY3RlZC5vcHRpb25zID0ge307XG4gICAgICAgIHRoaXMudmFyaWFudHNbMF0ub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiBwcm9kdWN0X3NlbGVjdGVkLm9wdGlvbnMgPSB7IC4uLnByb2R1Y3Rfc2VsZWN0ZWQub3B0aW9ucywgLi4ub3B0aW9uIH0pXG4gICAgICAgIHJldHVybiBwcm9kdWN0X3NlbGVjdGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVmFyaWFudHMgPSAoY29kZT8pID0+IHtcbiAgICAgICAgbGV0IHZhcmlhbnRzID0gdGhpcy5wcm9kdWN0U3ViamVjdC52YWx1ZS52YXJpYW50cztcbiAgICAgICAgaWYgKCFjb2RlKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnNTdWJqZWN0LnZhbHVlLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWVzLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRzID0gdmFyaWFudHMuZmlsdGVyKHZhcmlhbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YXJpYW50Lm9wdGlvbnMuc29tZSh2YXJpYW50X29wdGlvbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAob3B0aW9uLmNvZGUgaW4gdmFyaWFudF9vcHRpb24gJiYgdmFyaWFudF9vcHRpb25bb3B0aW9uLmNvZGVdID09IHZhbHVlLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXJpYW50cyA9IHZhcmlhbnRzLmZpbHRlcih2YXJpYW50ID0+IHZhcmlhbnQuY29kZSA9PSBjb2RlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhcmlhbnRzID0gdmFyaWFudHM7XG4gICAgICAgIGNvZGUgJiYgdGhpcy51cGRhdGVPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVPcHRpb25zID0gKCkgPT4ge1xuICAgICAgICBsZXQgeyBvcHRpb25zIH0gPSB0aGlzLnZhcmlhbnRzLmxlbmd0aCAmJiB0aGlzLnZhcmlhbnRzWzBdO1xuICAgICAgICBvcHRpb25zICYmIG9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4gT2JqZWN0LmtleXMob3B0aW9uKS5mb3JFYWNoKGtleSA9PiB0aGlzLnNldE9wdGlvbihrZXksIG9wdGlvbltrZXldKSkpXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUFzb2NpYXRlZERhdGFGcm9tVmFyaWFudHMgPSAoKSA9PiB7XG4gICAgICAgIGxldCBhc29jaWF0ZWQ6IGFueSA9IHt9O1xuICAgICAgICBpZiAodGhpcy5pc1JlYWR5KCkpIHtcbiAgICAgICAgICAgIGFzb2NpYXRlZC5zdG9jayA9IHRoaXMudmFyaWFudHNbMF0uc3RvY2tcbiAgICAgICAgICAgIC8vIFByZWNpbzogc2kgdmllbmUgdGF4TGVnZW5kSW5mbyB1c2Ftb3Mgc3UgcHJpY2UsIHNpIG5vIGVsIHYucHJpY2VcbiAgICAgICAgICAgIGNvbnN0IHJhd1ByaWNlID0gdGhpcy52YXJpYW50c1swXS50YXhMZWdlbmRJbmZvPy5wcmljZSA/PyB0aGlzLnZhcmlhbnRzWzBdLnByaWNlO1xuICAgICAgICAgICAgYXNvY2lhdGVkLnByaWNlID0gcmF3UHJpY2UudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIGNvbnN0IHJhd1NhbGVQcmljZSA9IHRoaXMudmFyaWFudHNbMF0udGF4TGVnZW5kSW5mbz8uc2FsZXByaWNlID8/IHRoaXMudmFyaWFudHNbMF0uc2FsZXByaWNlO1xuICAgICAgICAgICAgYXNvY2lhdGVkLnNhbGVwcmljZSA9IHJhd1NhbGVQcmljZSA/IHJhd1NhbGVQcmljZS50b1N0cmluZygpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgYXNvY2lhdGVkLmRpc2NvdW50ID0gdGhpcy52YXJpYW50c1swXT8uZGlzY291bnQgfHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgYXNvY2lhdGVkLnByb3BlcnRpZXMgPSB0aGlzLnZhcmlhbnRzWzBdLnByb3BlcnRpZXMgPyB0aGlzLmJlYXV0aWZ5UHJvcGVydGllcyh0aGlzLnZhcmlhbnRzWzBdLnByb3BlcnRpZXMpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgYXNvY2lhdGVkLnVuaXF1ZUV4dGVybmFsQ29kZSA9IHRoaXMudmFyaWFudHNbMF0/LnVuaXF1ZUV4dGVybmFsQ29kZSB8fCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBhc29jaWF0ZWQubXVsdGlwbGVRdWFudGl0eSA9IHRoaXMudmFyaWFudHNbMF0/Lm11bHRpcGxlUXVhbnRpdHkgfHwgdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXNvY2lhdGVkLnByaWNlID0gdGhpcy5jcmF0ZVByaWNlKClcbiAgICAgICAgICAgIGFzb2NpYXRlZC5zYWxlcHJpY2UgPSB0aGlzLmNyYXRlU2FsZVByaWNlKClcbiAgICAgICAgICAgIGFzb2NpYXRlZC5zdG9jayA9ICh0aGlzLnZhcmlhbnRzLm1hcCh2YXJpYW50ID0+IHZhcmlhbnQuc3RvY2spKS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiKVxuICAgICAgICAgICAgYXNvY2lhdGVkLmRpc2NvdW50ID0gdGhpcy5jcmF0ZURpc2NvdW50KClcbiAgICAgICAgfVxuXG4gICAgICAgICgnaW1hZ2VzJyBpbiB0aGlzLnZhcmlhbnRzWzBdICYmIHRoaXMudmFyaWFudHNbMF0uaW1hZ2VzLmxlbmd0aCA+IDApXG4gICAgICAgICAgICA/IGFzb2NpYXRlZC5waWN0dXJlID0gdGhpcy52YXJpYW50c1swXS5pbWFnZXNbMF1cbiAgICAgICAgICAgIDogYXNvY2lhdGVkLnBpY3R1cmUgPSAodGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC52YWx1ZS5waWN0dXJlIHx8IHRoaXMucHJvZHVjdFN1YmplY3QudmFsdWUucGljdHVyZXNkZWZhdWx0WzBdKTtcblxuXG4gICAgICAgIGFzb2NpYXRlZC5tYXhpbXVtQW1vdW50ID0gdGhpcy52YXJpYW50c1swXT8ubWF4aW11bUFtb3VudCB8fCAwXG4gICAgICAgIGFzb2NpYXRlZC5taW5pbXVtQW1vdW50ID0gdGhpcy52YXJpYW50c1swXT8ubWluaW11bUFtb3VudCB8fCAwXG5cbiAgICAgICAgYXNvY2lhdGVkLm1heGltdW1JdGVtc1F1YW50aXR5ID0gdGhpcy52YXJpYW50c1swXT8uc3RvY2sgPiAwICYmICdtYXhpbXVtSXRlbXNRdWFudGl0eScgaW4gdGhpcy52YXJpYW50c1swXSA/IHRoaXMudmFyaWFudHNbMF0/Lm1heGltdW1JdGVtc1F1YW50aXR5IDogdGhpcy52YXJpYW50c1swXT8uc3RvY2tcbiAgICAgICAgYXNvY2lhdGVkLm1pbmltdW1JdGVtc1F1YW50aXR5ID0gdGhpcy52YXJpYW50c1swXT8uc3RvY2sgPiAwICYmICdtaW5pbXVtSXRlbXNRdWFudGl0eScgaW4gdGhpcy52YXJpYW50c1swXVxuICAgICAgICAgICAgJiYgdGhpcy52YXJpYW50c1swXT8ubWluaW11bUl0ZW1zUXVhbnRpdHkgPiAwID8gdGhpcy52YXJpYW50c1swXT8ubWluaW11bUl0ZW1zUXVhbnRpdHlcbiAgICAgICAgICAgIDogKHRoaXMudmFyaWFudHNbMF0/Lm11bHRpcGxlUXVhbnRpdHkgPyB0aGlzLnZhcmlhbnRzWzBdPy5tdWx0aXBsZVF1YW50aXR5IDogMSlcblxuICAgICAgICBhc29jaWF0ZWQuZmluYWxDb25zdW1lciA9IHtcbiAgICAgICAgICAgIGZpbmFsQ29uc3VtZXJQcmljZTogdGhpcy52YXJpYW50c1swXT8uZmluYWxfY29uc3VtZXJfcHJpY2UsXG4gICAgICAgICAgICBvcmlnaW5hbEZpbmFsQ29uc3VtZXJQcmljZTogdGhpcy52YXJpYW50c1swXT8ub3JpZ2luYWxfZmluYWxfY29uc3VtZXJfcHJpY2UsXG4gICAgICAgIH1cblxuICAgICAgICBhc29jaWF0ZWQudGF4ZXMgPSB7XG4gICAgICAgICAgICB0YXhJbmNsdWRlZDogdGhpcy52YXJpYW50c1swXT8udGF4SW5jbHVkZWQsXG4gICAgICAgICAgICB0YXhDYXRlZ29yeTogdGhpcy52YXJpYW50c1swXT8udGF4Q2F0ZWdvcnksXG4gICAgICAgIH1cbiAgICAgICAgLy8gU2VndW4gdmVyc2lvbiBkZWwgYmFja2VuZFxuICAgICAgICBpZiAodGhpcy52YXJpYW50c1swXT8udGF4TGVnZW5kSW5mbykge1xuICAgICAgICAgICAgLy8gTnVldm8gYmFja2VuZFxuICAgICAgICAgICAgYXNvY2lhdGVkLnByaWNlV2l0aG91dFRheGVzID0gdGhpcy52YXJpYW50c1swXT8udGF4TGVnZW5kSW5mby5wcmljZVdpdGhvdXRUYXhlcztcbiAgICAgICAgICAgIGFzb2NpYXRlZC50YXhlQW1vdW50ID0gdGhpcy52YXJpYW50c1swXT8udGF4TGVnZW5kSW5mby50YXhlcztcbiAgICAgICAgICAgIGFzb2NpYXRlZC50YXhSYXRlID0gdGhpcy52YXJpYW50c1swXT8udGF4TGVnZW5kSW5mby50YXhSYXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQmFja2VuZCBhbnRpZ3VvXG4gICAgICAgICAgICBhc29jaWF0ZWQucHJpY2VXaXRob3V0VGF4ZXMgPSB0aGlzLnZhcmlhbnRzWzBdPy5wcmljZVdpdGhvdXRUYXhlcyA/PyB1bmRlZmluZWQ7XG4gICAgICAgICAgICBhc29jaWF0ZWQudGF4ZUFtb3VudCA9IHRoaXMudmFyaWFudHNbMF0/LnRheGVzID8/IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGFzb2NpYXRlZC50YXhSYXRlID0gdGhpcy52YXJpYW50c1swXT8udGF4UmF0ZSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFzb2NpYXRlZERhdGFTdWJqZWN0Lm5leHQoYXNvY2lhdGVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVjaWJlIGxhcyBwcm9waWVkYWRlcyBkZSB1bmEgdmFyaWFudGUgeSBwb3IgY2FkYSBpdGVtIGFybWEgdW4gb2JqZXRvIGNvbiBcbiAgICAgKiBlbCBuYW1lPWNsYXZlIHkgdmFsdWU9dmFsb3IgZGUgZXNlIGl0ZW0uICBcbiAgICAgKiBAcGFyYW0gcHJvcGVydGllcyBcbiAgICAgKiBAcmV0dXJucyBVbiBhcnJlZ2xvIGNvbiBsYXMgcHJvcGllZGFkZXMgZGUgbGEgZm9ybWEgeyBuYW1lID0gLi4uICwgdmFsdWUgPSAuLi59XG4gICAgICovXG4gICAgcHJpdmF0ZSBiZWF1dGlmeVByb3BlcnRpZXMgPSAocHJvcGVydGllcykgPT4ge1xuICAgICAgICBsZXQgYmVhdXRpZnlEYXRhID0gW11cbiAgICAgICAgcHJvcGVydGllcy5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIHByb3ApIHtcbiAgICAgICAgICAgICAgICBiZWF1dGlmeURhdGEucHVzaCh7IG5hbWU6IGtleSwgdmFsdWU6IHByb3Bba2V5XSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGJlYXV0aWZ5RGF0YVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JhdGVEaXNjb3VudCA9ICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBhbGxfZGlzY291bnQgPSAnJztcbiAgICAgICAgICAgIHRoaXMudmFyaWFudHMuZm9yRWFjaCh2YXJpYW50ID0+IHtcbiAgICAgICAgICAgICAgICB2YXJpYW50LmRpc2NvdW50ICYmIChhbGxfZGlzY291bnQgPSBhbGxfZGlzY291bnQgKyAnLCAnICsgdmFyaWFudC5kaXNjb3VudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChhbGxfZGlzY291bnQgPT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWxsX2Rpc2NvdW50XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyYXRlUHJpY2UgPSAoKSA9PiB7XG4gICAgICAgIGxldCBtaW5fcHJpY2UgPSAwO1xuICAgICAgICBsZXQgbWF4X3ByaWNlID0gMDtcbiAgICAgICAgbGV0IGFsbF9wcmljZXMgPSBbXTtcbiAgICAgICAgdGhpcy52YXJpYW50cy5mb3JFYWNoKHZhcmlhbnQgPT4ge1xuICAgICAgICAgICAgYWxsX3ByaWNlcy5wdXNoKHZhcmlhbnQucHJpY2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgbWluX3ByaWNlID0gYWxsX3ByaWNlcy5yZWR1Y2UoKGEsIGIpID0+IE1hdGgubWluKGEsIGIpKTtcbiAgICAgICAgbWF4X3ByaWNlID0gYWxsX3ByaWNlcy5yZWR1Y2UoKGEsIGIpID0+IE1hdGgubWF4KGEsIGIpLCAwKTtcbiAgICAgICAgcmV0dXJuIG1pbl9wcmljZSA9PSBtYXhfcHJpY2UgPyBtYXhfcHJpY2UudG9TdHJpbmcoKSA6IG1pbl9wcmljZSArICcgLSAnICsgbWF4X3ByaWNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JhdGVTYWxlUHJpY2UgPSAoKSA9PiB7XG4gICAgICAgIGxldCBtaW5fcHJpY2UgPSAwO1xuICAgICAgICBsZXQgbWF4X3ByaWNlID0gMDtcbiAgICAgICAgbGV0IGFsbF9wcmljZXMgPSBbXTtcbiAgICAgICAgdGhpcy52YXJpYW50cy5mb3JFYWNoKHZhcmlhbnQgPT4ge1xuICAgICAgICAgICAgdmFyaWFudC5zYWxlcHJpY2UgJiYgYWxsX3ByaWNlcy5wdXNoKHZhcmlhbnQuc2FsZXByaWNlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghYWxsX3ByaWNlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBtaW5fcHJpY2UgPSBhbGxfcHJpY2VzLnJlZHVjZSgoYSwgYikgPT4gTWF0aC5taW4oYSwgYikpO1xuICAgICAgICBtYXhfcHJpY2UgPSBhbGxfcHJpY2VzLnJlZHVjZSgoYSwgYikgPT4gTWF0aC5tYXgoYSwgYiksIDApO1xuICAgICAgICByZXR1cm4gbWluX3ByaWNlID09IG1heF9wcmljZSA/IG1heF9wcmljZS50b1N0cmluZygpIDogbWluX3ByaWNlICsgJyAtICcgKyBtYXhfcHJpY2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpblJhbmdlID0gKHF1YW50aXR5LCBtaW4sIG1heCkgPT4gKChxdWFudGl0eSAtIG1pbikgKiAocXVhbnRpdHkgLSBtYXgpIDw9IDApXG5cbiAgICBwcml2YXRlIHZhbGlkYXRlUXVhbnRpdHkgPSAocXVhbnRpdHk6IG51bWJlciwgdmFyaWFudENvZGU/OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgY29kZVRvQ2hlY2sgPSB2YXJpYW50Q29kZSB8fCB0aGlzLnZhcmlhbnRzWzBdLmNvZGU7XG4gICAgICAgIGNvbnN0IGFjdHVhbFF1YW50aXR5ID0gdGhpcy5jYXJ0U2VydmljZS5nZXRDb3VudEZyb21JdGVtSW5DYXJ0KGNvZGVUb0NoZWNrKTtcbiAgICAgICAgY29uc3QgYXNvY2lhdGVkRGF0YSA9IHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QudmFsdWU7XG4gICAgICAgIGNvbnN0IHRvdGFsUXVhbnRpdHkgPSBhY3R1YWxRdWFudGl0eSArIHF1YW50aXR5O1xuXG4gICAgICAgIGNvbnN0IHZhcmlhbnQgPSB0aGlzLnZhcmlhbnRzLmZpbmQodiA9PiB2LmNvZGUgPT09IGNvZGVUb0NoZWNrKTtcbiAgICAgICAgY29uc3Qgc3RvY2sgPSB2YXJpYW50Py5zdG9jayA/PyAwO1xuXG4gICAgICAgIGlmICh0b3RhbFF1YW50aXR5ID4gc3RvY2spIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2stYWN0dWFsbHknKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhc29jaWF0ZWREYXRhLm1heGltdW1JdGVtc1F1YW50aXR5ICYmIHRvdGFsUXVhbnRpdHkgPiBhc29jaWF0ZWREYXRhLm1heGltdW1JdGVtc1F1YW50aXR5KSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygnbWF4aW11bS1pdGVtcy1xdWFudGl0eScsIHsgcXVhbnRpdHk6IGFzb2NpYXRlZERhdGEubWF4aW11bUl0ZW1zUXVhbnRpdHkgfSk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXNvY2lhdGVkRGF0YS5taW5pbXVtSXRlbXNRdWFudGl0eSAmJiB0b3RhbFF1YW50aXR5IDwgYXNvY2lhdGVkRGF0YS5taW5pbXVtSXRlbXNRdWFudGl0eSkge1xuICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ21pbmltdW0taXRlbXMtcXVhbnRpdHknLCB7IHF1YW50aXR5OiBhc29jaWF0ZWREYXRhLm1pbmltdW1JdGVtc1F1YW50aXR5IH0pO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFzb2NpYXRlZERhdGEubXVsdGlwbGVRdWFudGl0eSAmJiBhc29jaWF0ZWREYXRhLm11bHRpcGxlUXVhbnRpdHkgPiAwKSB7XG4gICAgICAgICAgICBpZiAodG90YWxRdWFudGl0eSAlIGFzb2NpYXRlZERhdGEubXVsdGlwbGVRdWFudGl0eSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KCdtdXN0LWJlLW11bHRpcGxlJywgeyBxdWFudGl0eTogYXNvY2lhdGVkRGF0YS5tdWx0aXBsZVF1YW50aXR5IH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVQcmljZUFuZENyZWRpdHMgPSAocHJpY2U6IG51bWJlcik6IGJvb2xlYW4gPT4ge1xuICAgICAgICBpZiAodGhpcy5iYWxhbmNlQ3VzdG9tZXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYmFsYW5jZUN1c3RvbWVyLmFsbG93QW55UGF5bWVudE1ldGhvZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5iYWxhbmNlQ3VzdG9tZXIucmVtYWluaW5nQ3JlZGl0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJpY2UgPiB0aGlzLmJhbGFuY2VDdXN0b21lci5yZW1haW5pbmdDcmVkaXRzKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygnbm90LWVub3VnaC1jcmVkaXRzJyk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG5cbiAgICBwcml2YXRlIGZldGNoQ2FydERhdGEgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UuZ2V0VG90YWxBbW91bnQoKS5zdWJzY3JpYmUoKHRvdGFsQW1vdW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb3RhbEFtb3VudCA9IHRvdGFsQW1vdW50O1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmJhbGFuY2VDdXN0b21lciQuc3Vic2NyaWJlKChiYWxhbmNlQ3VzdG9tZXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYmFsYW5jZUN1c3RvbWVyID0gYmFsYW5jZUN1c3RvbWVyO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gQ3VhbmRvIGhheWEgbW9kZWxvcyBkZSByZXNwdWVzdGEsIHZhbGlkYW1vcyBxdWUgbm8gc2UgaW50ZW50ZSBjYXJnYXIgdW4gcHJvZHVjdG8gaW5jb21wbGV0b1xuICAgIHByaXZhdGUgaXNQcm9kdWN0VmFsaWQgPSAocHJvZHVjdDogUHJvZHVjdCkgPT4gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBvcHRpb25zIEFycmF5IGRlIFZhcmlhbnRlcyB5IHN1cyB2YWxvcmVzXG4gICAgICogXG4gICAgICogQGRlc2NyaXB0aW9uIFJldG9ybmEgdW5hIGxpc3RhIGZpbHRyYWRhIGRlIGxhcyB2YXJpYW50ZXMgcXVlIGVzdGFuIHNlbGVjY2lvbmFkYXNcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFZhcmlhbnRzU2VsZWN0ZWQob3B0aW9uczogYW55LCBvcHRpb25zRXhjZXB0aW9uOiBBcnJheTxhbnk+KTogQXJyYXk8T2JqZWN0PiB7XG5cbiAgICAgICAgbGV0IHZhcmlhbnRzU2VsZWN0ZWQgPSBbXTtcbiAgICAgICAgb3B0aW9ucy5mb3JFYWNoKHYgPT4ge1xuICAgICAgICAgICAgaWYgKHYudmFsdWVzICYmIHYudmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHYudmFsdWVzLmZvckVhY2godmFsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC5zZWxlY3RlZCAmJiAhb3B0aW9uc0V4Y2VwdGlvbi5maW5kKG9wID0+IG9wLnRvVXBwZXJDYXNlKCkgPT0gdi5jb2RlLnRvVXBwZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50c1NlbGVjdGVkW3YuY29kZV0gPSB2YWwubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB2YXJpYW50c1NlbGVjdGVkO1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogXG4gICAgICogQHBhcmFtIG9wdGlvbnMgQXJyYXkgZGUgVmFyaWFudGVzIHkgc3VzIHZhbG9yZXNcbiAgICAgKiBAcGFyYW0gdmFyaWFudHMgVG9kYXMgbGFzIHZhcmlhbnRlcyBkaXNwb25pYmxlcyBkZWwgcHJvZHVjdG9cbiAgICAgKiBcbiAgICAgKiBAZGVzY3JpcHRpb24gcmV0b3JuYSB0b2RhcyBsYXMgdmFyaWFudGVzIGRpc3BvbmlibGVzIGEgc2VsZWNjaW9uIHkgc3Ugc3RvY2tcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VmFyaWFudHNBdmFpbGFibGUob3B0aW9uczogYW55LCB2YXJpYW50czogYW55LCBvcHRpb25zRXhjZXB0aW9uOiBBcnJheTxhbnk+KTogYW55IHtcblxuICAgICAgICBsZXQgdmFyaWFudHNTZWxlY3RlZCA9IHRoaXMuZ2V0VmFyaWFudHNTZWxlY3RlZChvcHRpb25zLCBvcHRpb25zRXhjZXB0aW9uKTtcblxuICAgICAgICBsZXQgdmFyaWFudHNBdmFpbGFibGUgPSBbXTtcblxuICAgICAgICB2YXJpYW50cy5tYXAodiA9PiB7XG5cbiAgICAgICAgICAgIGxldCBhdXggPSB7fTtcbiAgICAgICAgICAgIGlmICh2Lm9wdGlvbnMgJiYgdi5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHYub3B0aW9ucy5tYXAob3AgPT4ge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGF1eCwgb3AsIHsgc3RvY2s6IHYuc3RvY2sgfSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhcmlhbnRzQXZhaWxhYmxlLnB1c2goYXV4KTtcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIHZhcmlhbnRzQXZhaWxhYmxlLmZpbHRlcih2YSA9PiB0aGlzLmNvbnN0YW50cy5jb250YWluc0FsbCh7IC4uLnZhcmlhbnRzU2VsZWN0ZWQgfSwgdmEpKVxuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogXG4gICAgICogQHBhcmFtIG9wdGlvbnMgQXJyYXkgZGUgdmFyaWFudGVzIHkgc3VzIHZhbG9yZXNcbiAgICAgKiBAcGFyYW0gY29kZSBDb2RpZ28gZGUgbGEgdmFyaWFudGUgYSBidXNjYXJcbiAgICAgKiBAcGFyYW0gbmFtZSBub21icmUgZGUgbGEgdmFyaWFudGUgYSBidXNjYXJcbiAgICAgKiBAcGFyYW0gdmFyaWFudHMgdmFyaWFudGVzIGRlbCBwcm9kdWN0b1xuICAgICAqIFxuICAgICAqIEBkZXNjcmlwdGlvbiBidXNjYSBlbiBsYSBsaXN0YSBkZSB2YXJpYW50ZXMgZGlzcG9uaWJsZXMgc2kgaGF5IGRlIGVzZSBjb2RpZ28sIGVzZSBub21icmUgeSBjb24gc3RvY2sgXG4gICAgICovXG4gICAgcHVibGljIGV4aXN0VmFyaWFudEFuZEhhc1N0b2NrKG9wdGlvbnMsIGNvZGUsIG5hbWUsIHZhcmlhbnRzLCBvcHRpb25zRXhjZXB0aW9uID0gW10pOiBib29sZWFuIHtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYXJpYW50c0F2YWlsYWJsZShvcHRpb25zLCB2YXJpYW50cywgb3B0aW9uc0V4Y2VwdGlvbikuZmluZCh2YSA9PlxuICAgICAgICAgICAgdmEuaGFzT3duUHJvcGVydHkoY29kZSkgJiYgdmFbY29kZV0gPT09IG5hbWUgJiYgdmEuc3RvY2sgPiAwKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwcm9kdWN0IHByb2R1Y3RvIGVsIGN1YWwgc2UgcXVpZXJlIGRlc2RvYmxhciBwb3IgdmFyaWFudGVzIHBvciB1bmEgb3BjacOzbi5cbiAgICAgKiBAcGFyYW0gd2l0aE9wdGlvbiAndHlwZScgdGlwbyBkZSBvcGNpw7NuLCBjb2RlOiBjw7NkaWdvIGRlIGxhIG9wY2nDs24uICdkZWZhdWx0Rmlyc3RPcHRpb24nOiBlbiBjYXNvIGRlIHF1ZSBubyBzZSBwdWVkYSBkZXNkb2JsYXIgcG9yIGxhIG9wY2nDs24gaW5kaWNhZGEgc2kgZWwgdmFsb3IgZXMgdmVyZGFkZXJvIHNlIGludGVudGFyYSBkZXNkb2JsYXIgcG9yIGxhIHByaW1lcmEgb3BjacOzbiBhc29jaWFkYSBhbCBwcm9kdWN0by5cbiAgICAgKiAnY2hlY2tJZlN0b2NrJzogZW4gY2FzbyBkZSBxdWUgZXN0YSB2YWxvciBzZWEgdmVyZGFkZXJvIHNlIHJlYWxpemEgdW4gY29udHJvbCBkZSBxdWUgbGEgdmFyaWFudGVzIGN1ZW50ZW4gY29uIHN0b2NrIHBhcmEgc2VyIHVuIHByb2R1Y3RvIGRlc2RvYmxhZG8gcG9yIGxhIHZhcmlhbnRlLCBzaSBlbCB2YWxvciBlcyBmYWxzbyBubyBzZSByZWFsaXphIGRpY2hvIGNvbnRyb2wgeSBlbCBwcm9kdWN0byBzZSBkZXNkb2JsYXJhIGNvbiBzdG9jayBlbiAwLlxuICAgICAqIEByZXR1cm5zIGFycmVnbG8gY29uIGVsIHByb2R1Y3RvIGRlc2RvYmxhZG8gcG9yIGxhIHZhcmlhbnRlIHNvbGljaXRhZGEuXG4gICAgICogKG9wY2nDs24gcG9yIGRlZmVjdG8gcXVlIHNlIGludGVudGEgaGFjZXIgZWwgZGVzZG9ibGFtaWVudG8gJ2NvbG9yJywgbyBiaWVuIHNpIGVuIGxlIHBhcsOhbWV0cm8gd2l0aE9wdGlvbiBlbCBhdHJpYnV0byAnZGVmYXVsdEZpcnN0T3B0aW9uJyBlcyB2ZXJkYWRlcm8gc2UgZGVzZG9ibGEgcG9yIGxhIHByaW1lcmEgb3BjacOzbiBhc29jaWFkYSBhbCBwcm9kdWN0byApIFxuICAgICAqL1xuICAgIGdldFByb2R1Y3RXaXRoVW5pcXVlVmFyaWFudCA9IChwcm9kdWN0LCB3aXRoT3B0aW9uPzogUGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9kdWN0c1NlcnZpY2UuZ2V0UHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudChbcHJvZHVjdF0sIHdpdGhPcHRpb24pXG4gICAgfVxuXG59Il19