@smart-solutions-tech/smart-angular-calendar 0.0.13 → 0.0.14

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.
@@ -228,11 +228,12 @@ export class SmartCalendarComponent {
228
228
  this.weekStartDate.setDate(date.getDate() + diffToStart);
229
229
  this.weekEndDate = new Date(this.weekStartDate);
230
230
  this.weekEndDate.setDate(this.weekStartDate.getDate() + 6);
231
- // Filter events for the week
231
+ // Filter events for the week, including multi-day events that overlap any part of the week
232
232
  this.weekEvents = this.events.filter(event => {
233
233
  const eventStart = new Date(event.start);
234
234
  const eventEnd = event.end ? new Date(event.end) : eventStart;
235
- return (eventStart <= this.weekEndDate) && (eventEnd >= this.weekStartDate);
235
+ // Un evento se incluye si cualquier parte de él cae dentro de la semana
236
+ return eventStart <= this.weekEndDate && eventEnd >= this.weekStartDate;
236
237
  });
237
238
  if (emitChange) {
238
239
  const oldMonth = this.currentMonth;
@@ -283,4 +284,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
283
284
  type: HostListener,
284
285
  args: ['document:click', ['$event']]
285
286
  }] } });
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYW5ndWxhci1jYWxlbmRhci9zcmMvbGliL2NvbXBvbmVudHMvc21hcnQtY2FsZW5kYXIvc21hcnQtY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYW5ndWxhci1jYWxlbmRhci9zcmMvbGliL2NvbXBvbmVudHMvc21hcnQtY2FsZW5kYXIvc21hcnQtY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBUW5JLE1BQU0sT0FBTyxzQkFBc0I7SUEyQ2pDO1FBekNTLFNBQUksR0FBNkIsT0FBTyxDQUFDO1FBRXpDLFlBQU8sR0FBd0IsUUFBUSxDQUFDO1FBRXhDLGlCQUFZLEdBQW9DO1lBQ3ZELElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtZQUM5QixLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDO1NBQ2pDLENBQUM7UUFFTyxXQUFNLEdBQW9CLEVBQUUsQ0FBQztRQUU1QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUdwQyxDQUFDO1FBRUssZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXZDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQWN6RCxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFFbEMsaUJBQVksR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2hDLHVCQUFrQixHQUFvQixFQUFFLENBQUM7UUFFekMsa0JBQWEsR0FBUyxJQUFJLElB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SyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJO2dCQUN4RixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztvQkFDcEIsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZO29CQUMzQixRQUFRO2lCQUNULENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUF5QjtRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNwQixJQUFJLE9BQU8sS0FBSyxLQUFLLEVBQUU7WUFDckIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7U0FDOUI7YUFBTSxJQUFJLE9BQU8sS0FBSyxNQUFNLEVBQUU7WUFDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMxQztJQUNILENBQUM7O21IQTNUVSxzQkFBc0I7dUdBQXRCLHNCQUFzQix1YkNSbkMsc29LQXFGTTsyRkQ3RU8sc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLGdCQUFnQjswRUFNakIsSUFBSTtzQkFBWixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcsVUFBVTtzQkFBbkIsTUFBTTtnQkFFK0Msb0JBQW9CO3NCQUF6RSxTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHcEQsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbGVuZGFyRXZlbnQgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NtYXJ0LWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWNhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTbWFydENhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBtb2RlOiAnbW9udGgnIHwgJ3dlZWsnIHwgJ2RheScgPSAnbW9udGgnO1xuXG4gIEBJbnB1dCgpIHN0YXJ0QXQ6ICdtb25kYXknIHwgJ3N1bmRheScgPSAnc3VuZGF5JztcblxuICBASW5wdXQoKSBjdXJyZW50TW9udGg6IHsgeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyIH0gPSB7XG4gICAgeWVhcjogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLFxuICAgIG1vbnRoOiBuZXcgRGF0ZSgpLmdldE1vbnRoKCkgKyAxXG4gIH07XG5cbiAgQElucHV0KCkgZXZlbnRzOiBDYWxlbmRhckV2ZW50W10gPSBbXTtcblxuICBAT3V0cHV0KCkgbW9udGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBuZXdNb250aDogeyB5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIgfSxcbiAgICBvbGRNb250aDogeyB5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIgfVxuICB9PigpO1xuXG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICBAT3V0cHV0KCkgZXZlbnRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FsZW5kYXJFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKCdkYXRlU2VsZWN0b3JEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBkYXRlU2VsZWN0b3JEcm9wZG93biE6IEVsZW1lbnRSZWY7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuc2hvd0RhdGVTZWxlY3RvcikgcmV0dXJuO1xuICAgIGNvbnN0IGRyb3Bkb3duID0gdGhpcy5kYXRlU2VsZWN0b3JEcm9wZG93bj8ubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYnRuLWRhdGUtc2VsZWN0b3InKTtcbiAgICBpZiAoZHJvcGRvd24gJiYgIWRyb3Bkb3duLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiYgYnV0dG9uICYmICFidXR0b24uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICB0aGlzLnNob3dEYXRlU2VsZWN0b3IgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzaG93RGF0ZVNlbGVjdG9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgc2VsZWN0ZWREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgc2VsZWN0ZWREYXRlRXZlbnRzOiBDYWxlbmRhckV2ZW50W10gPSBbXTtcblxuICB3ZWVrU3RhcnREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgd2Vla0VuZERhdGU6IERhdGUgPSBuZXcgRGF0ZSh0aGlzLndlZWtTdGFydERhdGUuZ2V0VGltZSgpICsgNiAqIDI0ICogNjAgKiA2MCAqIDEwMDApO1xuICB3ZWVrRXZlbnRzOiBDYWxlbmRhckV2ZW50W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0RGF0ZShuZXcgRGF0ZSgpKTtcbiAgfVxuXG4gIHRvZ2dsZURhdGVTZWxlY3RvcigpIHtcbiAgICB0aGlzLnNob3dEYXRlU2VsZWN0b3IgPSAhdGhpcy5zaG93RGF0ZVNlbGVjdG9yO1xuICB9XG5cbiAgb25Nb250aFNlbGVjdGVkKG5ld01vbnRoOiB7IHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciB9KSB7XG4gICAgY29uc3Qgb2xkTW9udGggPSB7IC4uLnRoaXMuY3VycmVudE1vbnRoIH07XG4gICAgdGhpcy5jdXJyZW50TW9udGggPSBuZXdNb250aDtcblxuICAgIHRoaXMuc2VsZWN0RGF0ZShuZXcgRGF0ZSh0aGlzLmN1cnJlbnRNb250aC55ZWFyLCB0aGlzLmN1cnJlbnRNb250aC5tb250aCAtIDEsIDEpKTtcblxuICAgIHRoaXMubW9udGhDaGFuZ2UuZW1pdCh7XG4gICAgICBuZXdNb250aDogdGhpcy5jdXJyZW50TW9udGgsXG4gICAgICBvbGRNb250aFxuICAgIH0pO1xuXG4gICAgdGhpcy5zaG93RGF0ZVNlbGVjdG9yID0gZmFsc2U7XG4gIH1cblxuICBvbkV2ZW50Q2xpY2soZXZlbnQ6IENhbGVuZGFyRXZlbnQpIHtcbiAgICB0aGlzLmV2ZW50Q2xpY2suZW1pdChldmVudCk7XG4gIH1cblxuICBuZXh0TW9udGgoKSB7XG4gICAgY29uc3Qgb2xkTW9udGggPSB7IC4uLnRoaXMuY3VycmVudE1vbnRoIH07XG5cbiAgICBpZiAodGhpcy5jdXJyZW50TW9udGgubW9udGggPT09IDEyKSB7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aCA9IHtcbiAgICAgICAgeWVhcjogdGhpcy5jdXJyZW50TW9udGgueWVhciArIDEsXG4gICAgICAgIG1vbnRoOiAxXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aCA9IHtcbiAgICAgICAgeWVhcjogdGhpcy5jdXJyZW50TW9udGgueWVhcixcbiAgICAgICAgbW9udGg6IHRoaXMuY3VycmVudE1vbnRoLm1vbnRoICsgMVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdERhdGUobmV3IERhdGUodGhpcy5jdXJyZW50TW9udGgueWVhciwgdGhpcy5jdXJyZW50TW9udGgubW9udGggLSAxLCAxKSk7XG5cbiAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQoe1xuICAgICAgbmV3TW9udGg6IHRoaXMuY3VycmVudE1vbnRoLFxuICAgICAgb2xkTW9udGhcbiAgICB9KTtcbiAgfVxuXG4gIHByZXZNb250aCgpIHtcbiAgICBjb25zdCBvbGRNb250aCA9IHsgLi4udGhpcy5jdXJyZW50TW9udGggfTtcbiAgICBpZiAodGhpcy5jdXJyZW50TW9udGgubW9udGggPT09IDEpIHtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0ge1xuICAgICAgICB5ZWFyOiB0aGlzLmN1cnJlbnRNb250aC55ZWFyIC0gMSxcbiAgICAgICAgbW9udGg6IDEyXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRNb250aCA9IHtcbiAgICAgICAgeWVhcjogdGhpcy5jdXJyZW50TW9udGgueWVhcixcbiAgICAgICAgbW9udGg6IHRoaXMuY3VycmVudE1vbnRoLm1vbnRoIC0gMVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdERhdGUobmV3IERhdGUodGhpcy5jdXJyZW50TW9udGgueWVhciwgdGhpcy5jdXJyZW50TW9udGgubW9udGggLSAxLCAxKSk7XG5cbiAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQoe1xuICAgICAgbmV3TW9udGg6IHRoaXMuY3VycmVudE1vbnRoLFxuICAgICAgb2xkTW9udGhcbiAgICB9KTtcbiAgfVxuXG4gIG5leHREYXkoKSB7XG4gICAgY29uc3Qgb2xkTW9udGggPSB7IC4uLnRoaXMuY3VycmVudE1vbnRoIH07XG5cbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgIG5ld0RhdGUuc2V0RGF0ZShuZXdEYXRlLmdldERhdGUoKSArIDEpO1xuXG4gICAgdGhpcy5zZWxlY3REYXRlKG5ld0RhdGUpO1xuXG4gICAgdGhpcy5jdXJyZW50TW9udGggPSB7XG4gICAgICB5ZWFyOiBuZXdEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBtb250aDogbmV3RGF0ZS5nZXRNb250aCgpICsgMVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5jdXJyZW50TW9udGgubW9udGggIT09IG9sZE1vbnRoLm1vbnRoIHx8IHRoaXMuY3VycmVudE1vbnRoLnllYXIgIT09IG9sZE1vbnRoLnllYXIpXG4gICAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQoe1xuICAgICAgICBuZXdNb250aDogdGhpcy5jdXJyZW50TW9udGgsXG4gICAgICAgIG9sZE1vbnRoXG4gICAgICB9KTtcbiAgfVxuXG4gIHByZXZEYXkoKSB7XG4gICAgY29uc3Qgb2xkTW9udGggPSB7IC4uLnRoaXMuY3VycmVudE1vbnRoIH07XG5cbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgIG5ld0RhdGUuc2V0RGF0ZShuZXdEYXRlLmdldERhdGUoKSAtIDEpO1xuXG4gICAgdGhpcy5zZWxlY3REYXRlKG5ld0RhdGUpO1xuXG4gICAgdGhpcy5jdXJyZW50TW9udGggPSB7XG4gICAgICB5ZWFyOiBuZXdEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBtb250aDogbmV3RGF0ZS5nZXRNb250aCgpICsgMVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5jdXJyZW50TW9udGgubW9udGggIT09IG9sZE1vbnRoLm1vbnRoIHx8IHRoaXMuY3VycmVudE1vbnRoLnllYXIgIT09IG9sZE1vbnRoLnllYXIpXG4gICAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQoe1xuICAgICAgICBuZXdNb250aDogdGhpcy5jdXJyZW50TW9udGgsXG4gICAgICAgIG9sZE1vbnRoXG4gICAgICB9KTtcbiAgfVxuXG4gIG5leHRXZWVrKCkge1xuICAgIGNvbnN0IG9sZE1vbnRoID0geyAuLi50aGlzLmN1cnJlbnRNb250aCB9O1xuXG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKHRoaXMud2Vla1N0YXJ0RGF0ZSk7XG4gICAgbmV3RGF0ZS5zZXREYXRlKG5ld0RhdGUuZ2V0RGF0ZSgpICsgNyk7XG4gICAgdGhpcy5zZWxlY3RXZWVrQnlEYXRlKG5ld0RhdGUpO1xuXG4gICAgdGhpcy5jdXJyZW50TW9udGggPSB7XG4gICAgICB5ZWFyOiBuZXdEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBtb250aDogbmV3RGF0ZS5nZXRNb250aCgpICsgMVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5jdXJyZW50TW9udGgubW9udGggIT09IG9sZE1vbnRoLm1vbnRoIHx8IHRoaXMuY3VycmVudE1vbnRoLnllYXIgIT09IG9sZE1vbnRoLnllYXIpXG4gICAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQoe1xuICAgICAgICBuZXdNb250aDogdGhpcy5jdXJyZW50TW9udGgsXG4gICAgICAgIG9sZE1vbnRoXG4gICAgICB9KTtcbiAgfVxuXG4gIHByZXZXZWVrKCkge1xuICAgIGNvbnN0IG9sZE1vbnRoID0geyAuLi50aGlzLmN1cnJlbnRNb250aCB9O1xuXG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKHRoaXMud2Vla1N0YXJ0RGF0ZSk7XG4gICAgbmV3RGF0ZS5zZXREYXRlKG5ld0RhdGUuZ2V0RGF0ZSgpIC0gNyk7XG4gICAgdGhpcy5zZWxlY3RXZWVrQnlEYXRlKG5ld0RhdGUpO1xuXG4gICAgdGhpcy5jdXJyZW50TW9udGggPSB7XG4gICAgICB5ZWFyOiBuZXdEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBtb250aDogbmV3RGF0ZS5nZXRNb250aCgpICsgMVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5jdXJyZW50TW9udGgubW9udGggIT09IG9sZE1vbnRoLm1vbnRoIHx8IHRoaXMuY3VycmVudE1vbnRoLnllYXIgIT09IG9sZE1vbnRoLnllYXIpXG4gICAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQoe1xuICAgICAgICBuZXdNb250aDogdGhpcy5jdXJyZW50TW9udGgsXG4gICAgICAgIG9sZE1vbnRoXG4gICAgICB9KTtcbiAgfVxuXG4gIG9uTmV4dCgpIHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnbW9udGgnKVxuICAgICAgdGhpcy5uZXh0TW9udGgoKTtcbiAgICBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICd3ZWVrJylcbiAgICAgIHRoaXMubmV4dFdlZWsoKTtcbiAgICBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICdkYXknKVxuICAgICAgdGhpcy5uZXh0RGF5KCk7XG4gIH1cblxuICBvblByZXYoKSB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ21vbnRoJylcbiAgICAgIHRoaXMucHJldk1vbnRoKCk7XG4gICAgZWxzZSBpZiAodGhpcy5tb2RlID09PSAnd2VlaycpXG4gICAgICB0aGlzLnByZXZXZWVrKCk7XG4gICAgZWxzZSBpZiAodGhpcy5tb2RlID09PSAnZGF5JylcbiAgICAgIHRoaXMucHJldkRheSgpO1xuICB9XG5cbiAgZ29Ub1RvZGF5KCkge1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBvbGRNb250aCA9IHsgLi4udGhpcy5jdXJyZW50TW9udGggfTtcblxuICAgIHRoaXMuY3VycmVudE1vbnRoID0ge1xuICAgICAgeWVhcjogdG9kYXkuZ2V0RnVsbFllYXIoKSxcbiAgICAgIG1vbnRoOiB0b2RheS5nZXRNb250aCgpICsgMVxuICAgIH07XG5cbiAgICB0aGlzLnNlbGVjdERhdGUodG9kYXkpO1xuICAgIHRoaXMuc2VsZWN0V2Vla0J5RGF0ZSh0b2RheSwgZmFsc2UpO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudE1vbnRoLm1vbnRoICE9PSBvbGRNb250aC5tb250aCB8fCB0aGlzLmN1cnJlbnRNb250aC55ZWFyICE9PSBvbGRNb250aC55ZWFyKVxuICAgICAgdGhpcy5tb250aENoYW5nZS5lbWl0KHtcbiAgICAgICAgbmV3TW9udGg6IHRoaXMuY3VycmVudE1vbnRoLFxuICAgICAgICBvbGRNb250aFxuICAgICAgfSk7XG4gIH1cblxuICBzZXRTZWxlY3RlZERhdGVFdmVudHMoKSB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGVFdmVudHMgPSB0aGlzLmV2ZW50cy5maWx0ZXIoZXZlbnQgPT4ge1xuICAgICAgY29uc3QgZXZlbnREYXRlID0gbmV3IERhdGUoZXZlbnQuc3RhcnQpO1xuXG4gICAgICAvLyByZXR1cm4gZXZlbnRzIHRoYXQgc3RhcnRzLCBlbmRzIG9yIHNwYW5zIHRoZSBzZWxlY3RlZCBkYXRlXG4gICAgICByZXR1cm4gKGV2ZW50RGF0ZS5nZXREYXRlKCkgPT09IHRoaXMuc2VsZWN0ZWREYXRlLmdldERhdGUoKSAmJlxuICAgICAgICBldmVudERhdGUuZ2V0TW9udGgoKSA9PT0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKSAmJlxuICAgICAgICBldmVudERhdGUuZ2V0RnVsbFllYXIoKSA9PT0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSkgfHxcbiAgICAgICAgKGV2ZW50LmVuZCAmJlxuICAgICAgICAgIGV2ZW50LmVuZC5nZXREYXRlKCkgPT09IHRoaXMuc2VsZWN0ZWREYXRlLmdldERhdGUoKSAmJlxuICAgICAgICAgIGV2ZW50LmVuZC5nZXRNb250aCgpID09PSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpICYmXG4gICAgICAgICAgZXZlbnQuZW5kLmdldEZ1bGxZZWFyKCkgPT09IHRoaXMuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCkpIHx8XG4gICAgICAgIChldmVudC5zdGFydCA8IHRoaXMuc2VsZWN0ZWREYXRlICYmIGV2ZW50LmVuZCAmJiBldmVudC5lbmQgPiB0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBzZWxlY3REYXRlKGRhdGU6IERhdGUpIHtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRhdGU7XG5cbiAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZUV2ZW50cygpO1xuXG4gICAgY29uc3Qgb2xkTW9udGggPSB0aGlzLmN1cnJlbnRNb250aDtcblxuICAgIHRoaXMuY3VycmVudE1vbnRoID0ge1xuICAgICAgeWVhcjogZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgbW9udGg6IGRhdGUuZ2V0TW9udGgoKSArIDFcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuY3VycmVudE1vbnRoLm1vbnRoICE9PSBvbGRNb250aC5tb250aCB8fCB0aGlzLmN1cnJlbnRNb250aC55ZWFyICE9PSBvbGRNb250aC55ZWFyKVxuICAgICAgdGhpcy5tb250aENoYW5nZS5lbWl0KHtcbiAgICAgICAgbmV3TW9udGg6IHRoaXMuY3VycmVudE1vbnRoLFxuICAgICAgICBvbGRNb250aFxuICAgICAgfSk7XG5cbiAgICB0aGlzLmRhdGVDaGFuZ2VkLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xuICB9XG5cbiAgc2VsZWN0V2Vla0J5RGF0ZShkYXRlOiBEYXRlLCBlbWl0Q2hhbmdlOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIC8vIENhbGN1bGF0ZSB0aGUgc3RhcnQgZGF0ZSBvZiB0aGUgd2VlayBiYXNlZCBvbiBzdGFydEF0XG4gICAgY29uc3QgZGF5T2ZXZWVrID0gZGF0ZS5nZXREYXkoKTsgLy8gMCAoU3VuKSB0byA2IChTYXQpXG4gICAgbGV0IGRpZmZUb1N0YXJ0OiBudW1iZXI7XG5cbiAgICBpZiAodGhpcy5zdGFydEF0ID09PSAnbW9uZGF5Jykge1xuICAgICAgZGlmZlRvU3RhcnQgPSAoZGF5T2ZXZWVrID09PSAwKSA/IC02IDogMSAtIGRheU9mV2VlazsgLy8gSWYgU3VuZGF5LCBnbyBiYWNrIDYgZGF5c1xuICAgIH0gZWxzZSB7XG4gICAgICBkaWZmVG9TdGFydCA9IC1kYXlPZldlZWs7IC8vIFN1bmRheSBzdGFydFxuICAgIH1cblxuICAgIHRoaXMud2Vla1N0YXJ0RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIHRoaXMud2Vla1N0YXJ0RGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgZGlmZlRvU3RhcnQpO1xuXG4gICAgdGhpcy53ZWVrRW5kRGF0ZSA9IG5ldyBEYXRlKHRoaXMud2Vla1N0YXJ0RGF0ZSk7XG4gICAgdGhpcy53ZWVrRW5kRGF0ZS5zZXREYXRlKHRoaXMud2Vla1N0YXJ0RGF0ZS5nZXREYXRlKCkgKyA2KTtcblxuICAgIC8vIEZpbHRlciBldmVudHMgZm9yIHRoZSB3ZWVrXG4gICAgdGhpcy53ZWVrRXZlbnRzID0gdGhpcy5ldmVudHMuZmlsdGVyKGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50U3RhcnQgPSBuZXcgRGF0ZShldmVudC5zdGFydCk7XG4gICAgICBjb25zdCBldmVudEVuZCA9IGV2ZW50LmVuZCA/IG5ldyBEYXRlKGV2ZW50LmVuZCkgOiBldmVudFN0YXJ0O1xuICAgICAgcmV0dXJuIChldmVudFN0YXJ0IDw9IHRoaXMud2Vla0VuZERhdGUpICYmIChldmVudEVuZCA+PSB0aGlzLndlZWtTdGFydERhdGUpO1xuICAgIH0pO1xuXG4gICAgaWYgKGVtaXRDaGFuZ2UpIHtcbiAgICAgIGNvbnN0IG9sZE1vbnRoID0gdGhpcy5jdXJyZW50TW9udGg7XG5cbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0ge1xuICAgICAgICB5ZWFyOiB0aGlzLndlZWtTdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgbW9udGg6IHRoaXMud2Vla1N0YXJ0RGF0ZS5nZXRNb250aCgpICsgMVxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuY3VycmVudE1vbnRoLm1vbnRoICE9PSBvbGRNb250aC5tb250aCB8fCB0aGlzLmN1cnJlbnRNb250aC55ZWFyICE9PSBvbGRNb250aC55ZWFyKVxuICAgICAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgIG5ld01vbnRoOiB0aGlzLmN1cnJlbnRNb250aCxcbiAgICAgICAgICBvbGRNb250aFxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRNb2RlKG5ld01vZGU6IHR5cGVvZiB0aGlzLm1vZGUpIHtcbiAgICB0aGlzLm1vZGUgPSBuZXdNb2RlO1xuICAgIGlmIChuZXdNb2RlID09PSAnZGF5Jykge1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZERhdGVFdmVudHMoKTtcbiAgICB9IGVsc2UgaWYgKG5ld01vZGUgPT09ICd3ZWVrJykge1xuICAgICAgdGhpcy5zZWxlY3RXZWVrQnlEYXRlKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInNtYXJ0LWNhbGVuZGFyLWNvbXBvbmVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1jb250cm9sc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1wcmV2XCIgKGNsaWNrKT1cIm9uUHJldigpXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01NjAtMjQwIDMyMC00ODBsMjQwLTI0MCA1NiA1Ni0xODQgMTg0IDE4NCAxODQtNTYgNTZaXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXRvZGF5XCIgKGNsaWNrKT1cImdvVG9Ub2RheSgpXCI+e3sndG9kYXknIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1uZXh0XCIgKGNsaWNrKT1cIm9uTmV4dCgpXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01MDQtNDgwIDMyMC02NjRsNTYtNTYgMjQwIDI0MC0yNDAgMjQwLTU2LTU2IDE4NC0xODRaXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtc2VsZWN0b3ItY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWRhdGUtc2VsZWN0b3JcIiAoY2xpY2spPVwidG9nZ2xlRGF0ZVNlbGVjdG9yKClcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1vZGUgPT09ICdtb250aCdcIj57eyBjdXJyZW50TW9udGgubW9udGggfCB0cmFuc2xhdGVNb250aH19IC0ge3sgY3VycmVudE1vbnRoLnllYXIgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtb2RlID09PSAnd2VlaydcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgd2Vla1N0YXJ0RGF0ZS50b0RhdGVTdHJpbmcoKSB9fSAtIHt7IHdlZWtFbmREYXRlLnRvRGF0ZVN0cmluZygpIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibW9kZSA9PT0gJ2RheSdcIj57eyBzZWxlY3RlZERhdGUudG9EYXRlU3RyaW5nKCkgfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyNHB4XCIgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCIgd2lkdGg9XCIyNHB4XCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQ4MC0zNjAgMjgwLTU2MGg0MDBMNDgwLTM2MFpcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXNlbGVjdG9yLWRyb3Bkb3duXCIgKm5nSWY9XCJzaG93RGF0ZVNlbGVjdG9yXCIgI2RhdGVTZWxlY3RvckRyb3Bkb3duPlxuICAgICAgICAgICAgICAgIDxsaWItbW9udGgtc2VsZWN0b3IgW3NlbGVjdGVkTW9udGhdPVwiY3VycmVudE1vbnRoXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vbnRoU2VsZWN0ZWQpPVwib25Nb250aFNlbGVjdGVkKCRldmVudClcIj48L2xpYi1tb250aC1zZWxlY3Rvcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZpZXctc2VsZWN0b3JcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tdmlld1wiIFtuZ0NsYXNzXT1cInthY3RpdmU6IG1vZGUgPT09ICdtb250aCd9XCIgKGNsaWNrKT1cInNldE1vZGUoJ21vbnRoJylcIj5cbiAgICAgICAgICAgICAgICA8IS0tIG1vbnRoIHZpZXcgLS0+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjAwLTgwcS0zMyAwLTU2LjUtMjMuNVQxMjAtMTYwdi01NjBxMC0zMyAyMy41LTU2LjVUMjAwLTgwMGg0MHYtODBoODB2ODBoMzIwdi04MGg4MHY4MGg0MHEzMyAwIDU2LjUgMjMuNVQ4NDAtNzIwdjU2MHEwIDMzLTIzLjUgNTYuNVQ3NjAtODBIMjAwWm0wLTgwaDU2MHYtNDAwSDIwMHY0MDBabTAtNDgwaDU2MHYtODBIMjAwdjgwWm0wIDB2LTgwIDgwWm0yODAgMjQwcS0xNyAwLTI4LjUtMTEuNVQ0NDAtNDQwcTAtMTcgMTEuNS0yOC41VDQ4MC00ODBxMTcgMCAyOC41IDExLjVUNTIwLTQ0MHEwIDE3LTExLjUgMjguNVQ0ODAtNDAwWm0tMTYwIDBxLTE3IDAtMjguNS0xMS41VDI4MC00NDBxMC0xNyAxMS41LTI4LjVUMzIwLTQ4MHExNyAwIDI4LjUgMTEuNVQzNjAtNDQwcTAgMTctMTEuNSAyOC41VDMyMC00MDBabTMyMCAwcS0xNyAwLTI4LjUtMTEuNVQ2MDAtNDQwcTAtMTcgMTEuNS0yOC41VDY0MC00ODBxMTcgMCAyOC41IDExLjVUNjgwLTQ0MHEwIDE3LTExLjUgMjguNVQ2NDAtNDAwWk00ODAtMjQwcS0xNyAwLTI4LjUtMTEuNVQ0NDAtMjgwcTAtMTcgMTEuNS0yOC41VDQ4MC0zMjBxMTcgMCAyOC41IDExLjVUNTIwLTI4MHEwIDE3LTExLjUgMjguNVQ0ODAtMjQwWm0tMTYwIDBxLTE3IDAtMjguNS0xMS41VDI4MC0yODBxMC0xNyAxMS41LTI4LjVUMzIwLTMyMHExNyAwIDI4LjUgMTEuNVQzNjAtMjgwcTAgMTctMTEuNSAyOC41VDMyMC0yNDBabTMyMCAwcS0xNyAwLTI4LjUtMTEuNVQ2MDAtMjgwcTAtMTcgMTEuNS0yOC41VDY0MC0zMjBxMTcgMCAyOC41IDExLjVUNjgwLTI4MHEwIDE3LTExLjUgMjguNVQ2NDAtMjQwWlwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi12aWV3XCIgW25nQ2xhc3NdPVwie2FjdGl2ZTogbW9kZSA9PT0gJ3dlZWsnfVwiIChjbGljayk9XCJzZXRNb2RlKCd3ZWVrJylcIj5cbiAgICAgICAgICAgICAgICA8IS0tIHdlZWsgdmlldyAtLT5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyNHB4XCIgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCIgd2lkdGg9XCIyNHB4XCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNjAtMTYwcS0zMyAwLTU2LjUtMjMuNVQ4MC0yNDB2LTQ4MHEwLTMzIDIzLjUtNTYuNVQxNjAtODAwaDY0MHEzMyAwIDU2LjUgMjMuNVQ4ODAtNzIwdjQ4MHEwIDMzLTIzLjUgNTYuNVQ4MDAtMTYwSDE2MFptMzYwLTgwaDEwMHYtNDgwSDUyMHY0ODBabS0xODAgMGgxMDB2LTQ4MEgzNDB2NDgwWm0tMTgwIDBoMTAwdi00ODBIMTYwdjQ4MFptNTQwIDBoMTAwdi00ODBINzAwdjQ4MFpcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tdmlld1wiIFtuZ0NsYXNzXT1cInthY3RpdmU6IG1vZGUgPT09ICdkYXknfVwiIChjbGljayk9XCJzZXRNb2RlKCdkYXknKVwiPlxuICAgICAgICAgICAgICAgIDwhLS0gZGF5IHZpZXcgLS0+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIwLTE2MHYtODBoNzIwdjgwSDEyMFptMC01NjB2LTgwaDcyMHY4MEgxMjBabTgwIDQwMHEtMzMgMC01Ni41LTIzLjVUMTIwLTQwMHYtMTYwcTAtMzMgMjMuNS01Ni41VDIwMC02NDBoNTYwcTMzIDAgNTYuNSAyMy41VDg0MC01NjB2MTYwcTAgMzMtMjMuNSA1Ni41VDc2MC0zMjBIMjAwWm0wLTgwaDU2MHYtMTYwSDIwMHYxNjBabTAtMTYwdjE2MC0xNjBaXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ2aWV3LWNvbnRhaW5lclwiPlxuICAgICAgICA8bGliLWNhbGVuZGFyIFtldmVudHNdPVwiZXZlbnRzXCIgW2N1cnJlbnRNb250aF09XCJjdXJyZW50TW9udGhcIiAqbmdJZj1cIm1vZGUgPT09ICdtb250aCdcIiBbc3RhcnRBdF09XCJzdGFydEF0XCJcbiAgICAgICAgICAgIChldmVudENsaWNrKT1cIm9uRXZlbnRDbGljaygkZXZlbnQpXCI+PC9saWItY2FsZW5kYXI+XG5cbiAgICAgICAgPGxpYi13ZWVrICpuZ0lmPVwibW9kZSA9PT0gJ3dlZWsnXCIgW3N0YXJ0QXRdPVwic3RhcnRBdFwiIFtzdGFydERhdGVdPVwid2Vla1N0YXJ0RGF0ZVwiIFtldmVudHNdPVwid2Vla0V2ZW50c1wiXG4gICAgICAgICAgICAoZXZlbnRDbGljayk9XCJvbkV2ZW50Q2xpY2soJGV2ZW50KVwiPjwvbGliLXdlZWs+XG5cbiAgICAgICAgPGxpYi1kYXkgKm5nSWY9XCJtb2RlID09PSAnZGF5J1wiIFtkYXRlXT1cInNlbGVjdGVkRGF0ZVwiIFtldmVudHNdPVwic2VsZWN0ZWREYXRlRXZlbnRzXCJcbiAgICAgICAgICAgIChldmVudENsaWNrKT1cIm9uRXZlbnRDbGljaygkZXZlbnQpXCI+PC9saWItZGF5PlxuICAgIDwvZGl2PlxuXG48L2Rpdj4iXX0=
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYW5ndWxhci1jYWxlbmRhci9zcmMvbGliL2NvbXBvbmVudHMvc21hcnQtY2FsZW5kYXIvc21hcnQtY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYW5ndWxhci1jYWxlbmRhci9zcmMvbGliL2NvbXBvbmVudHMvc21hcnQtY2FsZW5kYXIvc21hcnQtY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBUW5JLE1BQU0sT0FBTyxzQkFBc0I7SUEyQ2pDO1FBekNTLFNBQUksR0FBNkIsT0FBTyxDQUFDO1FBRXpDLFlBQU8sR0FBd0IsUUFBUSxDQUFDO1FBRXhDLGlCQUFZLEdBQW9DO1lBQ3ZELElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtZQUM5QixLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDO1NBQ2pDLENBQUM7UUFFTyxXQUFNLEdBQW9CLEVBQUUsQ0FBQztRQUU1QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUdwQyxDQUFDO1FBRUssZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXZDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQWN6RCxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFFbEMsaUJBQVksR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2hDLHVCQUFrQixHQUFvQixFQUFFLENBQUM7UUFFekMsa0JBQWEsR0FBUyxJQUFJLElB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SUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUk7Z0JBQ3hGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO29CQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVk7b0JBQzNCLFFBQVE7aUJBQ1QsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQXlCO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ3BCLElBQUksT0FBTyxLQUFLLEtBQUssRUFBRTtZQUNyQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUM5QjthQUFNLElBQUksT0FBTyxLQUFLLE1BQU0sRUFBRTtZQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQzs7bUhBNVRVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLHViQ1JuQyxzb0tBcUZNOzJGRDdFTyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsZ0JBQWdCOzBFQU1qQixJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csTUFBTTtzQkFBZCxLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csV0FBVztzQkFBcEIsTUFBTTtnQkFFRyxVQUFVO3NCQUFuQixNQUFNO2dCQUUrQyxvQkFBb0I7c0JBQXpFLFNBQVM7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdwRCxlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJFdmVudCB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc21hcnQtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1jYWxlbmRhci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0Q2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIG1vZGU6ICdtb250aCcgfCAnd2VlaycgfCAnZGF5JyA9ICdtb250aCc7XG5cbiAgQElucHV0KCkgc3RhcnRBdDogJ21vbmRheScgfCAnc3VuZGF5JyA9ICdzdW5kYXknO1xuXG4gIEBJbnB1dCgpIGN1cnJlbnRNb250aDogeyB5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIgfSA9IHtcbiAgICB5ZWFyOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksXG4gICAgbW9udGg6IG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDFcbiAgfTtcblxuICBASW5wdXQoKSBldmVudHM6IENhbGVuZGFyRXZlbnRbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKSBtb250aENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIG5ld01vbnRoOiB7IHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciB9LFxuICAgIG9sZE1vbnRoOiB7IHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciB9XG4gIH0+KCk7XG5cbiAgQE91dHB1dCgpIGRhdGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIEBPdXRwdXQoKSBldmVudENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDYWxlbmRhckV2ZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2RhdGVTZWxlY3RvckRyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRhdGVTZWxlY3RvckRyb3Bkb3duITogRWxlbWVudFJlZjtcblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5zaG93RGF0ZVNlbGVjdG9yKSByZXR1cm47XG4gICAgY29uc3QgZHJvcGRvd24gPSB0aGlzLmRhdGVTZWxlY3RvckRyb3Bkb3duPy5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5idG4tZGF0ZS1zZWxlY3RvcicpO1xuICAgIGlmIChkcm9wZG93biAmJiAhZHJvcGRvd24uY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiBidXR0b24gJiYgIWJ1dHRvbi5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgIHRoaXMuc2hvd0RhdGVTZWxlY3RvciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHNob3dEYXRlU2VsZWN0b3I6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBzZWxlY3RlZERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBzZWxlY3RlZERhdGVFdmVudHM6IENhbGVuZGFyRXZlbnRbXSA9IFtdO1xuXG4gIHdlZWtTdGFydERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICB3ZWVrRW5kRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKHRoaXMud2Vla1N0YXJ0RGF0ZS5nZXRUaW1lKCkgKyA2ICogMjQgKiA2MCAqIDYwICogMTAwMCk7XG4gIHdlZWtFdmVudHM6IENhbGVuZGFyRXZlbnRbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3REYXRlKG5ldyBEYXRlKCkpO1xuICB9XG5cbiAgdG9nZ2xlRGF0ZVNlbGVjdG9yKCkge1xuICAgIHRoaXMuc2hvd0RhdGVTZWxlY3RvciA9ICF0aGlzLnNob3dEYXRlU2VsZWN0b3I7XG4gIH1cblxuICBvbk1vbnRoU2VsZWN0ZWQobmV3TW9udGg6IHsgeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyIH0pIHtcbiAgICBjb25zdCBvbGRNb250aCA9IHsgLi4udGhpcy5jdXJyZW50TW9udGggfTtcbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IG5ld01vbnRoO1xuXG4gICAgdGhpcy5zZWxlY3REYXRlKG5ldyBEYXRlKHRoaXMuY3VycmVudE1vbnRoLnllYXIsIHRoaXMuY3VycmVudE1vbnRoLm1vbnRoIC0gMSwgMSkpO1xuXG4gICAgdGhpcy5tb250aENoYW5nZS5lbWl0KHtcbiAgICAgIG5ld01vbnRoOiB0aGlzLmN1cnJlbnRNb250aCxcbiAgICAgIG9sZE1vbnRoXG4gICAgfSk7XG5cbiAgICB0aGlzLnNob3dEYXRlU2VsZWN0b3IgPSBmYWxzZTtcbiAgfVxuXG4gIG9uRXZlbnRDbGljayhldmVudDogQ2FsZW5kYXJFdmVudCkge1xuICAgIHRoaXMuZXZlbnRDbGljay5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG5leHRNb250aCgpIHtcbiAgICBjb25zdCBvbGRNb250aCA9IHsgLi4udGhpcy5jdXJyZW50TW9udGggfTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aC5tb250aCA9PT0gMTIpIHtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0ge1xuICAgICAgICB5ZWFyOiB0aGlzLmN1cnJlbnRNb250aC55ZWFyICsgMSxcbiAgICAgICAgbW9udGg6IDFcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0ge1xuICAgICAgICB5ZWFyOiB0aGlzLmN1cnJlbnRNb250aC55ZWFyLFxuICAgICAgICBtb250aDogdGhpcy5jdXJyZW50TW9udGgubW9udGggKyAxXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0RGF0ZShuZXcgRGF0ZSh0aGlzLmN1cnJlbnRNb250aC55ZWFyLCB0aGlzLmN1cnJlbnRNb250aC5tb250aCAtIDEsIDEpKTtcblxuICAgIHRoaXMubW9udGhDaGFuZ2UuZW1pdCh7XG4gICAgICBuZXdNb250aDogdGhpcy5jdXJyZW50TW9udGgsXG4gICAgICBvbGRNb250aFxuICAgIH0pO1xuICB9XG5cbiAgcHJldk1vbnRoKCkge1xuICAgIGNvbnN0IG9sZE1vbnRoID0geyAuLi50aGlzLmN1cnJlbnRNb250aCB9O1xuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aC5tb250aCA9PT0gMSkge1xuICAgICAgdGhpcy5jdXJyZW50TW9udGggPSB7XG4gICAgICAgIHllYXI6IHRoaXMuY3VycmVudE1vbnRoLnllYXIgLSAxLFxuICAgICAgICBtb250aDogMTJcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0ge1xuICAgICAgICB5ZWFyOiB0aGlzLmN1cnJlbnRNb250aC55ZWFyLFxuICAgICAgICBtb250aDogdGhpcy5jdXJyZW50TW9udGgubW9udGggLSAxXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0RGF0ZShuZXcgRGF0ZSh0aGlzLmN1cnJlbnRNb250aC55ZWFyLCB0aGlzLmN1cnJlbnRNb250aC5tb250aCAtIDEsIDEpKTtcblxuICAgIHRoaXMubW9udGhDaGFuZ2UuZW1pdCh7XG4gICAgICBuZXdNb250aDogdGhpcy5jdXJyZW50TW9udGgsXG4gICAgICBvbGRNb250aFxuICAgIH0pO1xuICB9XG5cbiAgbmV4dERheSgpIHtcbiAgICBjb25zdCBvbGRNb250aCA9IHsgLi4udGhpcy5jdXJyZW50TW9udGggfTtcblxuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgbmV3RGF0ZS5zZXREYXRlKG5ld0RhdGUuZ2V0RGF0ZSgpICsgMSk7XG5cbiAgICB0aGlzLnNlbGVjdERhdGUobmV3RGF0ZSk7XG5cbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IHtcbiAgICAgIHllYXI6IG5ld0RhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIG1vbnRoOiBuZXdEYXRlLmdldE1vbnRoKCkgKyAxXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aC5tb250aCAhPT0gb2xkTW9udGgubW9udGggfHwgdGhpcy5jdXJyZW50TW9udGgueWVhciAhPT0gb2xkTW9udGgueWVhcilcbiAgICAgIHRoaXMubW9udGhDaGFuZ2UuZW1pdCh7XG4gICAgICAgIG5ld01vbnRoOiB0aGlzLmN1cnJlbnRNb250aCxcbiAgICAgICAgb2xkTW9udGhcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJldkRheSgpIHtcbiAgICBjb25zdCBvbGRNb250aCA9IHsgLi4udGhpcy5jdXJyZW50TW9udGggfTtcblxuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgbmV3RGF0ZS5zZXREYXRlKG5ld0RhdGUuZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgICB0aGlzLnNlbGVjdERhdGUobmV3RGF0ZSk7XG5cbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IHtcbiAgICAgIHllYXI6IG5ld0RhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIG1vbnRoOiBuZXdEYXRlLmdldE1vbnRoKCkgKyAxXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aC5tb250aCAhPT0gb2xkTW9udGgubW9udGggfHwgdGhpcy5jdXJyZW50TW9udGgueWVhciAhPT0gb2xkTW9udGgueWVhcilcbiAgICAgIHRoaXMubW9udGhDaGFuZ2UuZW1pdCh7XG4gICAgICAgIG5ld01vbnRoOiB0aGlzLmN1cnJlbnRNb250aCxcbiAgICAgICAgb2xkTW9udGhcbiAgICAgIH0pO1xuICB9XG5cbiAgbmV4dFdlZWsoKSB7XG4gICAgY29uc3Qgb2xkTW9udGggPSB7IC4uLnRoaXMuY3VycmVudE1vbnRoIH07XG5cbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUodGhpcy53ZWVrU3RhcnREYXRlKTtcbiAgICBuZXdEYXRlLnNldERhdGUobmV3RGF0ZS5nZXREYXRlKCkgKyA3KTtcbiAgICB0aGlzLnNlbGVjdFdlZWtCeURhdGUobmV3RGF0ZSk7XG5cbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IHtcbiAgICAgIHllYXI6IG5ld0RhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIG1vbnRoOiBuZXdEYXRlLmdldE1vbnRoKCkgKyAxXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aC5tb250aCAhPT0gb2xkTW9udGgubW9udGggfHwgdGhpcy5jdXJyZW50TW9udGgueWVhciAhPT0gb2xkTW9udGgueWVhcilcbiAgICAgIHRoaXMubW9udGhDaGFuZ2UuZW1pdCh7XG4gICAgICAgIG5ld01vbnRoOiB0aGlzLmN1cnJlbnRNb250aCxcbiAgICAgICAgb2xkTW9udGhcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJldldlZWsoKSB7XG4gICAgY29uc3Qgb2xkTW9udGggPSB7IC4uLnRoaXMuY3VycmVudE1vbnRoIH07XG5cbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUodGhpcy53ZWVrU3RhcnREYXRlKTtcbiAgICBuZXdEYXRlLnNldERhdGUobmV3RGF0ZS5nZXREYXRlKCkgLSA3KTtcbiAgICB0aGlzLnNlbGVjdFdlZWtCeURhdGUobmV3RGF0ZSk7XG5cbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IHtcbiAgICAgIHllYXI6IG5ld0RhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIG1vbnRoOiBuZXdEYXRlLmdldE1vbnRoKCkgKyAxXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aC5tb250aCAhPT0gb2xkTW9udGgubW9udGggfHwgdGhpcy5jdXJyZW50TW9udGgueWVhciAhPT0gb2xkTW9udGgueWVhcilcbiAgICAgIHRoaXMubW9udGhDaGFuZ2UuZW1pdCh7XG4gICAgICAgIG5ld01vbnRoOiB0aGlzLmN1cnJlbnRNb250aCxcbiAgICAgICAgb2xkTW9udGhcbiAgICAgIH0pO1xuICB9XG5cbiAgb25OZXh0KCkge1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdtb250aCcpXG4gICAgICB0aGlzLm5leHRNb250aCgpO1xuICAgIGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ3dlZWsnKVxuICAgICAgdGhpcy5uZXh0V2VlaygpO1xuICAgIGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ2RheScpXG4gICAgICB0aGlzLm5leHREYXkoKTtcbiAgfVxuXG4gIG9uUHJldigpIHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnbW9udGgnKVxuICAgICAgdGhpcy5wcmV2TW9udGgoKTtcbiAgICBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICd3ZWVrJylcbiAgICAgIHRoaXMucHJldldlZWsoKTtcbiAgICBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICdkYXknKVxuICAgICAgdGhpcy5wcmV2RGF5KCk7XG4gIH1cblxuICBnb1RvVG9kYXkoKSB7XG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IG9sZE1vbnRoID0geyAuLi50aGlzLmN1cnJlbnRNb250aCB9O1xuXG4gICAgdGhpcy5jdXJyZW50TW9udGggPSB7XG4gICAgICB5ZWFyOiB0b2RheS5nZXRGdWxsWWVhcigpLFxuICAgICAgbW9udGg6IHRvZGF5LmdldE1vbnRoKCkgKyAxXG4gICAgfTtcblxuICAgIHRoaXMuc2VsZWN0RGF0ZSh0b2RheSk7XG4gICAgdGhpcy5zZWxlY3RXZWVrQnlEYXRlKHRvZGF5LCBmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5jdXJyZW50TW9udGgubW9udGggIT09IG9sZE1vbnRoLm1vbnRoIHx8IHRoaXMuY3VycmVudE1vbnRoLnllYXIgIT09IG9sZE1vbnRoLnllYXIpXG4gICAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQoe1xuICAgICAgICBuZXdNb250aDogdGhpcy5jdXJyZW50TW9udGgsXG4gICAgICAgIG9sZE1vbnRoXG4gICAgICB9KTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkRGF0ZUV2ZW50cygpIHtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZUV2ZW50cyA9IHRoaXMuZXZlbnRzLmZpbHRlcihldmVudCA9PiB7XG4gICAgICBjb25zdCBldmVudERhdGUgPSBuZXcgRGF0ZShldmVudC5zdGFydCk7XG5cbiAgICAgIC8vIHJldHVybiBldmVudHMgdGhhdCBzdGFydHMsIGVuZHMgb3Igc3BhbnMgdGhlIHNlbGVjdGVkIGRhdGVcbiAgICAgIHJldHVybiAoZXZlbnREYXRlLmdldERhdGUoKSA9PT0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RGF0ZSgpICYmXG4gICAgICAgIGV2ZW50RGF0ZS5nZXRNb250aCgpID09PSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpICYmXG4gICAgICAgIGV2ZW50RGF0ZS5nZXRGdWxsWWVhcigpID09PSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpKSB8fFxuICAgICAgICAoZXZlbnQuZW5kICYmXG4gICAgICAgICAgZXZlbnQuZW5kLmdldERhdGUoKSA9PT0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RGF0ZSgpICYmXG4gICAgICAgICAgZXZlbnQuZW5kLmdldE1vbnRoKCkgPT09IHRoaXMuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCkgJiZcbiAgICAgICAgICBldmVudC5lbmQuZ2V0RnVsbFllYXIoKSA9PT0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSkgfHxcbiAgICAgICAgKGV2ZW50LnN0YXJ0IDwgdGhpcy5zZWxlY3RlZERhdGUgJiYgZXZlbnQuZW5kICYmIGV2ZW50LmVuZCA+IHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNlbGVjdERhdGUoZGF0ZTogRGF0ZSkge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZGF0ZTtcblxuICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlRXZlbnRzKCk7XG5cbiAgICBjb25zdCBvbGRNb250aCA9IHRoaXMuY3VycmVudE1vbnRoO1xuXG4gICAgdGhpcy5jdXJyZW50TW9udGggPSB7XG4gICAgICB5ZWFyOiBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBtb250aDogZGF0ZS5nZXRNb250aCgpICsgMVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5jdXJyZW50TW9udGgubW9udGggIT09IG9sZE1vbnRoLm1vbnRoIHx8IHRoaXMuY3VycmVudE1vbnRoLnllYXIgIT09IG9sZE1vbnRoLnllYXIpXG4gICAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQoe1xuICAgICAgICBuZXdNb250aDogdGhpcy5jdXJyZW50TW9udGgsXG4gICAgICAgIG9sZE1vbnRoXG4gICAgICB9KTtcblxuICAgIHRoaXMuZGF0ZUNoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gIH1cblxuICBzZWxlY3RXZWVrQnlEYXRlKGRhdGU6IERhdGUsIGVtaXRDaGFuZ2U6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBzdGFydCBkYXRlIG9mIHRoZSB3ZWVrIGJhc2VkIG9uIHN0YXJ0QXRcbiAgICBjb25zdCBkYXlPZldlZWsgPSBkYXRlLmdldERheSgpOyAvLyAwIChTdW4pIHRvIDYgKFNhdClcbiAgICBsZXQgZGlmZlRvU3RhcnQ6IG51bWJlcjtcblxuICAgIGlmICh0aGlzLnN0YXJ0QXQgPT09ICdtb25kYXknKSB7XG4gICAgICBkaWZmVG9TdGFydCA9IChkYXlPZldlZWsgPT09IDApID8gLTYgOiAxIC0gZGF5T2ZXZWVrOyAvLyBJZiBTdW5kYXksIGdvIGJhY2sgNiBkYXlzXG4gICAgfSBlbHNlIHtcbiAgICAgIGRpZmZUb1N0YXJ0ID0gLWRheU9mV2VlazsgLy8gU3VuZGF5IHN0YXJ0XG4gICAgfVxuXG4gICAgdGhpcy53ZWVrU3RhcnREYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgdGhpcy53ZWVrU3RhcnREYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBkaWZmVG9TdGFydCk7XG5cbiAgICB0aGlzLndlZWtFbmREYXRlID0gbmV3IERhdGUodGhpcy53ZWVrU3RhcnREYXRlKTtcbiAgICB0aGlzLndlZWtFbmREYXRlLnNldERhdGUodGhpcy53ZWVrU3RhcnREYXRlLmdldERhdGUoKSArIDYpO1xuXG4gICAgLy8gRmlsdGVyIGV2ZW50cyBmb3IgdGhlIHdlZWssIGluY2x1ZGluZyBtdWx0aS1kYXkgZXZlbnRzIHRoYXQgb3ZlcmxhcCBhbnkgcGFydCBvZiB0aGUgd2Vla1xuICAgIHRoaXMud2Vla0V2ZW50cyA9IHRoaXMuZXZlbnRzLmZpbHRlcihldmVudCA9PiB7XG4gICAgICBjb25zdCBldmVudFN0YXJ0ID0gbmV3IERhdGUoZXZlbnQuc3RhcnQpO1xuICAgICAgY29uc3QgZXZlbnRFbmQgPSBldmVudC5lbmQgPyBuZXcgRGF0ZShldmVudC5lbmQpIDogZXZlbnRTdGFydDtcbiAgICAgIC8vIFVuIGV2ZW50byBzZSBpbmNsdXllIHNpIGN1YWxxdWllciBwYXJ0ZSBkZSDDqWwgY2FlIGRlbnRybyBkZSBsYSBzZW1hbmFcbiAgICAgIHJldHVybiBldmVudFN0YXJ0IDw9IHRoaXMud2Vla0VuZERhdGUgJiYgZXZlbnRFbmQgPj0gdGhpcy53ZWVrU3RhcnREYXRlO1xuICAgIH0pO1xuXG4gICAgaWYgKGVtaXRDaGFuZ2UpIHtcbiAgICAgIGNvbnN0IG9sZE1vbnRoID0gdGhpcy5jdXJyZW50TW9udGg7XG5cbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0ge1xuICAgICAgICB5ZWFyOiB0aGlzLndlZWtTdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgbW9udGg6IHRoaXMud2Vla1N0YXJ0RGF0ZS5nZXRNb250aCgpICsgMVxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuY3VycmVudE1vbnRoLm1vbnRoICE9PSBvbGRNb250aC5tb250aCB8fCB0aGlzLmN1cnJlbnRNb250aC55ZWFyICE9PSBvbGRNb250aC55ZWFyKVxuICAgICAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgIG5ld01vbnRoOiB0aGlzLmN1cnJlbnRNb250aCxcbiAgICAgICAgICBvbGRNb250aFxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRNb2RlKG5ld01vZGU6IHR5cGVvZiB0aGlzLm1vZGUpIHtcbiAgICB0aGlzLm1vZGUgPSBuZXdNb2RlO1xuICAgIGlmIChuZXdNb2RlID09PSAnZGF5Jykge1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZERhdGVFdmVudHMoKTtcbiAgICB9IGVsc2UgaWYgKG5ld01vZGUgPT09ICd3ZWVrJykge1xuICAgICAgdGhpcy5zZWxlY3RXZWVrQnlEYXRlKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInNtYXJ0LWNhbGVuZGFyLWNvbXBvbmVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1jb250cm9sc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1wcmV2XCIgKGNsaWNrKT1cIm9uUHJldigpXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01NjAtMjQwIDMyMC00ODBsMjQwLTI0MCA1NiA1Ni0xODQgMTg0IDE4NCAxODQtNTYgNTZaXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXRvZGF5XCIgKGNsaWNrKT1cImdvVG9Ub2RheSgpXCI+e3sndG9kYXknIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1uZXh0XCIgKGNsaWNrKT1cIm9uTmV4dCgpXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01MDQtNDgwIDMyMC02NjRsNTYtNTYgMjQwIDI0MC0yNDAgMjQwLTU2LTU2IDE4NC0xODRaXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtc2VsZWN0b3ItY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWRhdGUtc2VsZWN0b3JcIiAoY2xpY2spPVwidG9nZ2xlRGF0ZVNlbGVjdG9yKClcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1vZGUgPT09ICdtb250aCdcIj57eyBjdXJyZW50TW9udGgubW9udGggfCB0cmFuc2xhdGVNb250aH19IC0ge3sgY3VycmVudE1vbnRoLnllYXIgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtb2RlID09PSAnd2VlaydcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgd2Vla1N0YXJ0RGF0ZS50b0RhdGVTdHJpbmcoKSB9fSAtIHt7IHdlZWtFbmREYXRlLnRvRGF0ZVN0cmluZygpIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibW9kZSA9PT0gJ2RheSdcIj57eyBzZWxlY3RlZERhdGUudG9EYXRlU3RyaW5nKCkgfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyNHB4XCIgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCIgd2lkdGg9XCIyNHB4XCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQ4MC0zNjAgMjgwLTU2MGg0MDBMNDgwLTM2MFpcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXNlbGVjdG9yLWRyb3Bkb3duXCIgKm5nSWY9XCJzaG93RGF0ZVNlbGVjdG9yXCIgI2RhdGVTZWxlY3RvckRyb3Bkb3duPlxuICAgICAgICAgICAgICAgIDxsaWItbW9udGgtc2VsZWN0b3IgW3NlbGVjdGVkTW9udGhdPVwiY3VycmVudE1vbnRoXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vbnRoU2VsZWN0ZWQpPVwib25Nb250aFNlbGVjdGVkKCRldmVudClcIj48L2xpYi1tb250aC1zZWxlY3Rvcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZpZXctc2VsZWN0b3JcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tdmlld1wiIFtuZ0NsYXNzXT1cInthY3RpdmU6IG1vZGUgPT09ICdtb250aCd9XCIgKGNsaWNrKT1cInNldE1vZGUoJ21vbnRoJylcIj5cbiAgICAgICAgICAgICAgICA8IS0tIG1vbnRoIHZpZXcgLS0+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjAwLTgwcS0zMyAwLTU2LjUtMjMuNVQxMjAtMTYwdi01NjBxMC0zMyAyMy41LTU2LjVUMjAwLTgwMGg0MHYtODBoODB2ODBoMzIwdi04MGg4MHY4MGg0MHEzMyAwIDU2LjUgMjMuNVQ4NDAtNzIwdjU2MHEwIDMzLTIzLjUgNTYuNVQ3NjAtODBIMjAwWm0wLTgwaDU2MHYtNDAwSDIwMHY0MDBabTAtNDgwaDU2MHYtODBIMjAwdjgwWm0wIDB2LTgwIDgwWm0yODAgMjQwcS0xNyAwLTI4LjUtMTEuNVQ0NDAtNDQwcTAtMTcgMTEuNS0yOC41VDQ4MC00ODBxMTcgMCAyOC41IDExLjVUNTIwLTQ0MHEwIDE3LTExLjUgMjguNVQ0ODAtNDAwWm0tMTYwIDBxLTE3IDAtMjguNS0xMS41VDI4MC00NDBxMC0xNyAxMS41LTI4LjVUMzIwLTQ4MHExNyAwIDI4LjUgMTEuNVQzNjAtNDQwcTAgMTctMTEuNSAyOC41VDMyMC00MDBabTMyMCAwcS0xNyAwLTI4LjUtMTEuNVQ2MDAtNDQwcTAtMTcgMTEuNS0yOC41VDY0MC00ODBxMTcgMCAyOC41IDExLjVUNjgwLTQ0MHEwIDE3LTExLjUgMjguNVQ2NDAtNDAwWk00ODAtMjQwcS0xNyAwLTI4LjUtMTEuNVQ0NDAtMjgwcTAtMTcgMTEuNS0yOC41VDQ4MC0zMjBxMTcgMCAyOC41IDExLjVUNTIwLTI4MHEwIDE3LTExLjUgMjguNVQ0ODAtMjQwWm0tMTYwIDBxLTE3IDAtMjguNS0xMS41VDI4MC0yODBxMC0xNyAxMS41LTI4LjVUMzIwLTMyMHExNyAwIDI4LjUgMTEuNVQzNjAtMjgwcTAgMTctMTEuNSAyOC41VDMyMC0yNDBabTMyMCAwcS0xNyAwLTI4LjUtMTEuNVQ2MDAtMjgwcTAtMTcgMTEuNS0yOC41VDY0MC0zMjBxMTcgMCAyOC41IDExLjVUNjgwLTI4MHEwIDE3LTExLjUgMjguNVQ2NDAtMjQwWlwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi12aWV3XCIgW25nQ2xhc3NdPVwie2FjdGl2ZTogbW9kZSA9PT0gJ3dlZWsnfVwiIChjbGljayk9XCJzZXRNb2RlKCd3ZWVrJylcIj5cbiAgICAgICAgICAgICAgICA8IS0tIHdlZWsgdmlldyAtLT5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyNHB4XCIgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCIgd2lkdGg9XCIyNHB4XCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNjAtMTYwcS0zMyAwLTU2LjUtMjMuNVQ4MC0yNDB2LTQ4MHEwLTMzIDIzLjUtNTYuNVQxNjAtODAwaDY0MHEzMyAwIDU2LjUgMjMuNVQ4ODAtNzIwdjQ4MHEwIDMzLTIzLjUgNTYuNVQ4MDAtMTYwSDE2MFptMzYwLTgwaDEwMHYtNDgwSDUyMHY0ODBabS0xODAgMGgxMDB2LTQ4MEgzNDB2NDgwWm0tMTgwIDBoMTAwdi00ODBIMTYwdjQ4MFptNTQwIDBoMTAwdi00ODBINzAwdjQ4MFpcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tdmlld1wiIFtuZ0NsYXNzXT1cInthY3RpdmU6IG1vZGUgPT09ICdkYXknfVwiIChjbGljayk9XCJzZXRNb2RlKCdkYXknKVwiPlxuICAgICAgICAgICAgICAgIDwhLS0gZGF5IHZpZXcgLS0+XG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIwLTE2MHYtODBoNzIwdjgwSDEyMFptMC01NjB2LTgwaDcyMHY4MEgxMjBabTgwIDQwMHEtMzMgMC01Ni41LTIzLjVUMTIwLTQwMHYtMTYwcTAtMzMgMjMuNS01Ni41VDIwMC02NDBoNTYwcTMzIDAgNTYuNSAyMy41VDg0MC01NjB2MTYwcTAgMzMtMjMuNSA1Ni41VDc2MC0zMjBIMjAwWm0wLTgwaDU2MHYtMTYwSDIwMHYxNjBabTAtMTYwdjE2MC0xNjBaXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ2aWV3LWNvbnRhaW5lclwiPlxuICAgICAgICA8bGliLWNhbGVuZGFyIFtldmVudHNdPVwiZXZlbnRzXCIgW2N1cnJlbnRNb250aF09XCJjdXJyZW50TW9udGhcIiAqbmdJZj1cIm1vZGUgPT09ICdtb250aCdcIiBbc3RhcnRBdF09XCJzdGFydEF0XCJcbiAgICAgICAgICAgIChldmVudENsaWNrKT1cIm9uRXZlbnRDbGljaygkZXZlbnQpXCI+PC9saWItY2FsZW5kYXI+XG5cbiAgICAgICAgPGxpYi13ZWVrICpuZ0lmPVwibW9kZSA9PT0gJ3dlZWsnXCIgW3N0YXJ0QXRdPVwic3RhcnRBdFwiIFtzdGFydERhdGVdPVwid2Vla1N0YXJ0RGF0ZVwiIFtldmVudHNdPVwid2Vla0V2ZW50c1wiXG4gICAgICAgICAgICAoZXZlbnRDbGljayk9XCJvbkV2ZW50Q2xpY2soJGV2ZW50KVwiPjwvbGliLXdlZWs+XG5cbiAgICAgICAgPGxpYi1kYXkgKm5nSWY9XCJtb2RlID09PSAnZGF5J1wiIFtkYXRlXT1cInNlbGVjdGVkRGF0ZVwiIFtldmVudHNdPVwic2VsZWN0ZWREYXRlRXZlbnRzXCJcbiAgICAgICAgICAgIChldmVudENsaWNrKT1cIm9uRXZlbnRDbGljaygkZXZlbnQpXCI+PC9saWItZGF5PlxuICAgIDwvZGl2PlxuXG48L2Rpdj4iXX0=
@@ -64,22 +64,28 @@ export class WeekComponent {
64
64
  this.events.forEach(event => this.addEvent(event));
65
65
  }
66
66
  addEvent(event) {
67
- const index = this.weekDayCols.findIndex(col => col.date.getFullYear() === event.start.getFullYear() &&
68
- col.date.getMonth() === event.start.getMonth() &&
69
- col.date.getDate() === event.start.getDate());
70
- if (index === -1)
71
- return;
72
- const eventCols = this.weekDayCols[index].eventCols;
73
- if (event.allDay) {
74
- this.weekDayCols[index].allDayEvents.push(event);
75
- }
76
- else {
77
- const colIndex = this.findAvalailableColumn(event, index);
78
- if (colIndex === eventCols.length) {
79
- eventCols.push({ events: [event] });
80
- }
81
- else {
82
- eventCols[colIndex].events.push(event);
67
+ // Mostrar eventos en todos los días que abarquen
68
+ // Normalizar fechas a solo año, mes y día para comparar correctamente
69
+ const normalize = (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate());
70
+ const eventStart = normalize(event.start);
71
+ const eventEnd = event.end ? normalize(event.end) : eventStart;
72
+ for (let i = 0; i < this.weekDayCols.length; i++) {
73
+ const colDate = normalize(this.weekDayCols[i].date);
74
+ // Si el día está dentro del rango del evento (incluyendo el día de fin)
75
+ if (colDate >= eventStart && colDate <= eventEnd) {
76
+ if (event.allDay) {
77
+ this.weekDayCols[i].allDayEvents.push(event);
78
+ }
79
+ else {
80
+ const colIndex = this.findAvalailableColumn(event, i);
81
+ const eventCols = this.weekDayCols[i].eventCols;
82
+ if (colIndex === eventCols.length) {
83
+ eventCols.push({ events: [event] });
84
+ }
85
+ else {
86
+ eventCols[colIndex].events.push(event);
87
+ }
88
+ }
83
89
  }
84
90
  }
85
91
  }
@@ -136,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
136
142
  }], eventClick: [{
137
143
  type: Output
138
144
  }] } });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vlay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1hbmd1bGFyLWNhbGVuZGFyL3NyYy9saWIvY29tcG9uZW50cy93ZWVrL3dlZWsuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYW5ndWxhci1jYWxlbmRhci9zcmMvbGliL2NvbXBvbmVudHMvd2Vlay93ZWVrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUXpHLE1BQU0sT0FBTyxhQUFhO0lBK0J4QjtRQTdCUyxZQUFPLEdBQXdCLFFBQVEsQ0FBQztRQUV4QyxXQUFNLEdBQW9CLEVBQUUsQ0FBQztRQUc1QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFFekQsYUFBUSxHQUFjO1lBQ3BCLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtTQUNmLENBQUM7UUFFRixlQUFVLEdBQWEsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRS9ELGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBRWxCLGdCQUFXLEdBTUwsRUFBRSxDQUFDO1FBcUZELGFBQVEsR0FBRyxL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QUU7WUFDL0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDcEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2QyxDQUFDOzswR0FwSlUsYUFBYTs4RkFBYixhQUFhLHNMQ1IxQiw2akVBaURNOzJGRHpDTyxhQUFhO2tCQUx6QixTQUFTOytCQUNFLFVBQVU7MEVBTVgsT0FBTztzQkFBZixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbGVuZGFyRXZlbnQsIFdlZWtEYXkgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi13ZWVrJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dlZWsuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93ZWVrLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgV2Vla0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBzdGFydEF0OiAnbW9uZGF5JyB8ICdzdW5kYXknID0gJ3N1bmRheSc7XG5cbiAgQElucHV0KCkgZXZlbnRzOiBDYWxlbmRhckV2ZW50W10gPSBbXTtcbiAgQElucHV0KCkgc3RhcnREYXRlITogRGF0ZTtcblxuICBAT3V0cHV0KCkgZXZlbnRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FsZW5kYXJFdmVudD4oKTtcblxuICB3ZWVrRGF5czogV2Vla0RheVtdID0gW1xuICAgIHsgdGFnOiAnc3VuJyB9LFxuICAgIHsgdGFnOiAnbW9uJyB9LFxuICAgIHsgdGFnOiAndHVlJyB9LFxuICAgIHsgdGFnOiAnd2VkJyB9LFxuICAgIHsgdGFnOiAndGh1JyB9LFxuICAgIHsgdGFnOiAnZnJpJyB9LFxuICAgIHsgdGFnOiAnc2F0JyB9LFxuICBdO1xuXG4gIGhvdXJCbG9ja3M6IG51bWJlcltdID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMjQgfSwgKF8sIGkpID0+IGkpO1xuXG4gIGFsbERheUhlaWdodCA9IDYwO1xuXG4gIHdlZWtEYXlDb2xzOiB7XG4gICAgZGF0ZTogRGF0ZTtcbiAgICBldmVudENvbHM6IHtcbiAgICAgIGV2ZW50czogQ2FsZW5kYXJFdmVudFtdO1xuICAgIH1bXTtcbiAgICBhbGxEYXlFdmVudHM6IENhbGVuZGFyRXZlbnRbXTtcbiAgfVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGFydEF0ID09PSAnbW9uZGF5Jykge1xuICAgICAgdGhpcy53ZWVrRGF5cyA9IFtcbiAgICAgICAgeyB0YWc6ICdtb24nIH0sXG4gICAgICAgIHsgdGFnOiAndHVlJyB9LFxuICAgICAgICB7IHRhZzogJ3dlZCcgfSxcbiAgICAgICAgeyB0YWc6ICd0aHUnIH0sXG4gICAgICAgIHsgdGFnOiAnZnJpJyB9LFxuICAgICAgICB7IHRhZzogJ3NhdCcgfSxcbiAgICAgICAgeyB0YWc6ICdzdW4nIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdFdlZWtEYXlDb2xzKCk7XG4gIH1cblxuICBpbml0V2Vla0RheUNvbHMoKSB7XG4gICAgdGhpcy53ZWVrRGF5Q29scyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKHRoaXMuc3RhcnREYXRlLmdldFRpbWUoKSArIGkgKiAyNCAqIDYwICogNjAgKiAxMDAwKTtcbiAgICAgIHRoaXMud2Vla0RheUNvbHMucHVzaCh7XG4gICAgICAgIGRhdGU6IGN1cnJlbnREYXRlLFxuICAgICAgICBldmVudENvbHM6IFtdLFxuICAgICAgICBhbGxEYXlFdmVudHM6IFtdXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmV2ZW50cy5mb3JFYWNoKGV2ZW50ID0+IHRoaXMuYWRkRXZlbnQoZXZlbnQpKTtcbiAgfVxuXG4gIGFkZEV2ZW50KGV2ZW50OiBDYWxlbmRhckV2ZW50KSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLndlZWtEYXlDb2xzLmZpbmRJbmRleChjb2wgPT5cbiAgICAgIGNvbC5kYXRlLmdldEZ1bGxZZWFyKCkgPT09IGV2ZW50LnN0YXJ0LmdldEZ1bGxZZWFyKCkgJiZcbiAgICAgIGNvbC5kYXRlLmdldE1vbnRoKCkgPT09IGV2ZW50LnN0YXJ0LmdldE1vbnRoKCkgJiZcbiAgICAgIGNvbC5kYXRlLmdldERhdGUoKSA9PT0gZXZlbnQuc3RhcnQuZ2V0RGF0ZSgpXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybjtcblxuICAgIGNvbnN0IGV2ZW50Q29scyA9IHRoaXMud2Vla0RheUNvbHNbaW5kZXhdLmV2ZW50Q29scztcblxuICAgIGlmIChldmVudC5hbGxEYXkpIHtcbiAgICAgIHRoaXMud2Vla0RheUNvbHNbaW5kZXhdLmFsbERheUV2ZW50cy5wdXNoKGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29sSW5kZXggPSB0aGlzLmZpbmRBdmFsYWlsYWJsZUNvbHVtbihldmVudCwgaW5kZXgpO1xuXG4gICAgICBpZiAoY29sSW5kZXggPT09IGV2ZW50Q29scy5sZW5ndGgpIHtcbiAgICAgICAgZXZlbnRDb2xzLnB1c2goeyBldmVudHM6IFtldmVudF0gfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudENvbHNbY29sSW5kZXhdLmV2ZW50cy5wdXNoKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmaW5kQXZhbGFpbGFibGVDb2x1bW4oZXZlbnQ6IENhbGVuZGFyRXZlbnQsIGRheUluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGV2ZW50Q29scyA9IHRoaXMud2Vla0RheUNvbHNbZGF5SW5kZXhdLmV2ZW50Q29scztcblxuICAgIGZvciAobGV0IGNvbEluZGV4ID0gMDsgY29sSW5kZXggPCBldmVudENvbHMubGVuZ3RoOyBjb2xJbmRleCsrKSB7XG4gICAgICBjb25zdCBjb2wgPSBldmVudENvbHNbY29sSW5kZXhdO1xuXG4gICAgICAvLyBjb25mbGljdCBpZiBldmVudCBvdmVybGFwcyB3aXRoIGFueSBleGlzdGluZyBldmVudCBpbiB0aGUgY29sdW1uXG4gICAgICBjb25zdCBoYXNDb25mbGljdCA9IGNvbC5ldmVudHMuc29tZShleGlzdGluZ0V2ZW50ID0+IHtcbiAgICAgICAgY29uc3Qgc3RhcnRzRHVyaW5nRXhpc3RpbmcgPSBldmVudC5zdGFydCA8IGV4aXN0aW5nRXZlbnQuZW5kISAmJiBldmVudC5zdGFydCA+PSBleGlzdGluZ0V2ZW50LnN0YXJ0O1xuICAgICAgICBjb25zdCBlbmRzRHVyaW5nRXhpc3RpbmcgPSBldmVudC5lbmQhID4gZXhpc3RpbmdFdmVudC5zdGFydCAmJiBldmVudC5lbmQhIDw9IGV4aXN0aW5nRXZlbnQuZW5kITtcbiAgICAgICAgY29uc3Qgc3BhbnNFeGlzdGluZyA9IGV2ZW50LnN0YXJ0IDw9IGV4aXN0aW5nRXZlbnQuc3RhcnQgJiYgZXZlbnQuZW5kISA+PSBleGlzdGluZ0V2ZW50LmVuZCE7XG4gICAgICAgIHJldHVybiBzdGFydHNEdXJpbmdFeGlzdGluZyB8fCBlbmRzRHVyaW5nRXhpc3RpbmcgfHwgc3BhbnNFeGlzdGluZztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWhhc0NvbmZsaWN0KSB7XG4gICAgICAgIHJldHVybiBjb2xJbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGV2ZW50Q29scy5sZW5ndGg7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2V2ZW50cyddIHx8IGNoYW5nZXNbJ3N0YXJ0RGF0ZSddKSB7XG4gICAgICB0aGlzLmluaXRXZWVrRGF5Q29scygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzaXppbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzdGFydFkgPSAwO1xuICBwcml2YXRlIHN0YXJ0SGVpZ2h0ID0gMDtcblxuICBvblJlc2l6ZU1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXppbmcgPSB0cnVlO1xuICAgIHRoaXMuc3RhcnRZID0gZXZlbnQuY2xpZW50WTtcbiAgICB0aGlzLnN0YXJ0SGVpZ2h0ID0gdGhpcy5hbGxEYXlIZWlnaHQ7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vblJlc2l6ZU1vdXNlTW92ZSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25SZXNpemVNb3VzZVVwKTtcbiAgfVxuXG4gIG9uUmVzaXplTW91c2VNb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKCF0aGlzLnJlc2l6aW5nKSByZXR1cm47XG4gICAgY29uc3QgZGVsdGEgPSBldmVudC5jbGllbnRZIC0gdGhpcy5zdGFydFk7XG4gICAgY29uc3QgbmV3SGVpZ2h0ID0gdGhpcy5zdGFydEhlaWdodCArIGRlbHRhO1xuICAgIHRoaXMuYWxsRGF5SGVpZ2h0ID0gTWF0aC5tYXgoNjAsIG5ld0hlaWdodCk7IC8vIG3DrW5pbW8gODBweFxuICB9O1xuXG4gIG9uUmVzaXplTW91c2VVcCA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLnJlc2l6aW5nID0gZmFsc2U7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vblJlc2l6ZU1vdXNlTW92ZSk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25SZXNpemVNb3VzZVVwKTtcbiAgfTtcblxuICBvbkV2ZW50Q2xpY2soZXZlbnQ6IENhbGVuZGFyRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50Q2xpY2suZW1pdChldmVudCk7XG4gIH1cblxuICBpc1RvZGF5KGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gdG9kYXkuZ2V0RnVsbFllYXIoKSAmJlxuICAgICAgZGF0ZS5nZXRNb250aCgpID09PSB0b2RheS5nZXRNb250aCgpICYmXG4gICAgICBkYXRlLmdldERhdGUoKSA9PT0gdG9kYXkuZ2V0RGF0ZSgpO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3ZWVrLXZpZXctY29tcG9uZW50XCI+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJhbGwtZGF5LWV2ZW50c1wiIFtzdHlsZS5oZWlnaHQucHhdPVwiYWxsRGF5SGVpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIHt7J2FsbERheUV2ZW50cycgfCB0cmFuc2xhdGV9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5cy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudHMtY29udGFpbmVyXCIgKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrRGF5Q29sczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLWRheVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNUb2RheShkYXkuZGF0ZSl9XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHdlZWtEYXlzW2ldLnRhZyB8IHRyYW5zbGF0ZSB8IHNsaWNlOjA6MyB9fSB7e2RheS5kYXRlIHwgZGF0ZTonZGQnfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxsaWItY2FsZW5kYXItZXZlbnQgKm5nRm9yPVwibGV0IGV2ZW50IG9mIGRheS5hbGxEYXlFdmVudHNcIiBbZXZlbnRdPVwiZXZlbnRcIlxuICAgICAgICAgICAgICAgICAgICAoZXZlbnRDbGljayk9XCJvbkV2ZW50Q2xpY2soJGV2ZW50KVwiPjwvbGliLWNhbGVuZGFyLWV2ZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJyZXNpemUtZGl2aWRlclwiIChtb3VzZWRvd24pPVwib25SZXNpemVNb3VzZURvd24oJGV2ZW50KVwiPjwvZGl2PlxuXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJkdXJhdGlvbi1ldmVudHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhvdXItYmxvY2tzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG91ci1ibG9ja1wiICpuZ0Zvcj1cImxldCBob3VyIG9mIGhvdXJCbG9ja3NcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBob3VyIH19OjAwPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJldmVudHMtd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtYmxvY2tzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1ibG9ja1wiICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla0RheUNvbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtYmxvY2tcIiAqbmdGb3I9XCJsZXQgaG91ciBvZiBob3VyQmxvY2tzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1ibG9jay1taWRkbGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50cy1jb250YWluZXJcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtEYXlDb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmdyaWRUZW1wbGF0ZUNvbHVtbnNdPVwiJ3JlcGVhdCgnICsgZGF5LmV2ZW50Q29scy5sZW5ndGggKyAnLCAxZnIpJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtY29sdW1uXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBkYXkuZXZlbnRDb2xzXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZHVyYXRpb24tZXZlbnQgKm5nRm9yPVwibGV0IGV2ZW50IG9mIGNvbC5ldmVudHNcIiBbZXZlbnRdPVwiZXZlbnRcIiBbZGF0ZV09XCJkYXkuZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50Q2xpY2spPVwib25FdmVudENsaWNrKCRldmVudClcIj48L2xpYi1kdXJhdGlvbi1ldmVudD5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG48L2Rpdj4iXX0=
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vlay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1hbmd1bGFyLWNhbGVuZGFyL3NyYy9saWIvY29tcG9uZW50cy93ZWVrL3dlZWsuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYW5ndWxhci1jYWxlbmRhci9zcmMvbGliL2NvbXBvbmVudHMvd2Vlay93ZWVrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUXpHLE1BQU0sT0FBTyxhQUFhO0lBK0J4QjtRQTdCUyxZQUFPLEdBQXdCLFFBQVEsQ0FBQztRQUV4QyxXQUFNLEdBQW9CLEVBQUUsQ0FBQztRQUc1QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFFekQsYUFBUSxHQUFjO1lBQ3BCLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtTQUNmLENBQUM7UUFFRixlQUFVLEdBQWEsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRS9ELGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBRWxCLGdCQUFXLEdBTUwsRUFBRSxDQUFDO1FBdUZELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUNYLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBVXhCLHNCQUFpQixHQUFHLENBQUMsS0FBaUIsRUFBUSxFQUFFO1lBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFBRSxPQUFPO1lBQzNCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMxQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUMzQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYztRQUM3RCxDQUFDLENBQUM7UUFFRixvQkFBZSxHQUFHLEdBQVMsRUFBRTtZQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixRQUFRLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xFLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQztJQTVHYyxDQUFDO0lBRWpCLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUc7Z0JBQ2QsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO2dCQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtnQkFDZCxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7Z0JBQ2QsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO2dCQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtnQkFDZCxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7Z0JBQ2QsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO2FBQ2YsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQixNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDcEIsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLFNBQVMsRUFBRSxFQUFFO2dCQUNiLFlBQVksRUFBRSxFQUFFO2FBQ2pCLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFvQjtRQUMzQixpREFBaUQ7UUFDakQsc0VBQXNFO1FBQ3RFLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBRS9ELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNoRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwRCx3RUFBd0U7WUFDeEUsSUFBSSxPQUFPLElBQUksVUFBVSxJQUFJLE9BQU8sSUFBSSxRQUFRLEVBQUU7Z0JBQ2hELElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtvQkFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM5QztxQkFBTTtvQkFDTCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUN0RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztvQkFDaEQsSUFBSSxRQUFRLEtBQUssU0FBUyxDQUFDLE1BQU0sRUFBRTt3QkFDakMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDckM7eUJBQU07d0JBQ0wsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQ3hDO2lCQUNGO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFvQixFQUFFLFFBQWdCO1FBQzFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRXZELEtBQUssSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQzlELE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVoQyxtRUFBbUU7WUFDbkUsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ2xELE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsR0FBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQztnQkFDcEcsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsR0FBSSxHQUFHLGFBQWEsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUksSUFBSSxhQUFhLENBQUMsR0FBSSxDQUFDO2dCQUNoRyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUksSUFBSSxhQUFhLENBQUMsR0FBSSxDQUFDO2dCQUM3RixPQUFPLG9CQUFvQixJQUFJLGtCQUFrQixJQUFJLGFBQWEsQ0FBQztZQUNyRSxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2hCLE9BQU8sUUFBUSxDQUFDO2FBQ2pCO1NBQ0Y7UUFDRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQU1ELGlCQUFpQixDQUFDLEtBQWlCO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDckMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvRCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBZUQsWUFBWSxDQUFDLEtBQW9CO1FBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBVTtRQUNoQixNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDL0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDcEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2QyxDQUFDOzswR0F0SlUsYUFBYTs4RkFBYixhQUFhLHNMQ1IxQiw2akVBaURNOzJGRHpDTyxhQUFhO2tCQUx6QixTQUFTOytCQUNFLFVBQVU7MEVBTVgsT0FBTztzQkFBZixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbGVuZGFyRXZlbnQsIFdlZWtEYXkgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi13ZWVrJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dlZWsuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93ZWVrLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgV2Vla0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBzdGFydEF0OiAnbW9uZGF5JyB8ICdzdW5kYXknID0gJ3N1bmRheSc7XG5cbiAgQElucHV0KCkgZXZlbnRzOiBDYWxlbmRhckV2ZW50W10gPSBbXTtcbiAgQElucHV0KCkgc3RhcnREYXRlITogRGF0ZTtcblxuICBAT3V0cHV0KCkgZXZlbnRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FsZW5kYXJFdmVudD4oKTtcblxuICB3ZWVrRGF5czogV2Vla0RheVtdID0gW1xuICAgIHsgdGFnOiAnc3VuJyB9LFxuICAgIHsgdGFnOiAnbW9uJyB9LFxuICAgIHsgdGFnOiAndHVlJyB9LFxuICAgIHsgdGFnOiAnd2VkJyB9LFxuICAgIHsgdGFnOiAndGh1JyB9LFxuICAgIHsgdGFnOiAnZnJpJyB9LFxuICAgIHsgdGFnOiAnc2F0JyB9LFxuICBdO1xuXG4gIGhvdXJCbG9ja3M6IG51bWJlcltdID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMjQgfSwgKF8sIGkpID0+IGkpO1xuXG4gIGFsbERheUhlaWdodCA9IDYwO1xuXG4gIHdlZWtEYXlDb2xzOiB7XG4gICAgZGF0ZTogRGF0ZTtcbiAgICBldmVudENvbHM6IHtcbiAgICAgIGV2ZW50czogQ2FsZW5kYXJFdmVudFtdO1xuICAgIH1bXTtcbiAgICBhbGxEYXlFdmVudHM6IENhbGVuZGFyRXZlbnRbXTtcbiAgfVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGFydEF0ID09PSAnbW9uZGF5Jykge1xuICAgICAgdGhpcy53ZWVrRGF5cyA9IFtcbiAgICAgICAgeyB0YWc6ICdtb24nIH0sXG4gICAgICAgIHsgdGFnOiAndHVlJyB9LFxuICAgICAgICB7IHRhZzogJ3dlZCcgfSxcbiAgICAgICAgeyB0YWc6ICd0aHUnIH0sXG4gICAgICAgIHsgdGFnOiAnZnJpJyB9LFxuICAgICAgICB7IHRhZzogJ3NhdCcgfSxcbiAgICAgICAgeyB0YWc6ICdzdW4nIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdFdlZWtEYXlDb2xzKCk7XG4gIH1cblxuICBpbml0V2Vla0RheUNvbHMoKSB7XG4gICAgdGhpcy53ZWVrRGF5Q29scyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKHRoaXMuc3RhcnREYXRlLmdldFRpbWUoKSArIGkgKiAyNCAqIDYwICogNjAgKiAxMDAwKTtcbiAgICAgIHRoaXMud2Vla0RheUNvbHMucHVzaCh7XG4gICAgICAgIGRhdGU6IGN1cnJlbnREYXRlLFxuICAgICAgICBldmVudENvbHM6IFtdLFxuICAgICAgICBhbGxEYXlFdmVudHM6IFtdXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmV2ZW50cy5mb3JFYWNoKGV2ZW50ID0+IHRoaXMuYWRkRXZlbnQoZXZlbnQpKTtcbiAgfVxuXG4gIGFkZEV2ZW50KGV2ZW50OiBDYWxlbmRhckV2ZW50KSB7XG4gICAgLy8gTW9zdHJhciBldmVudG9zIGVuIHRvZG9zIGxvcyBkw61hcyBxdWUgYWJhcnF1ZW5cbiAgICAvLyBOb3JtYWxpemFyIGZlY2hhcyBhIHNvbG8gYcOxbywgbWVzIHkgZMOtYSBwYXJhIGNvbXBhcmFyIGNvcnJlY3RhbWVudGVcbiAgICBjb25zdCBub3JtYWxpemUgPSAoZDogRGF0ZSkgPT4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTtcbiAgICBjb25zdCBldmVudFN0YXJ0ID0gbm9ybWFsaXplKGV2ZW50LnN0YXJ0KTtcbiAgICBjb25zdCBldmVudEVuZCA9IGV2ZW50LmVuZCA/IG5vcm1hbGl6ZShldmVudC5lbmQpIDogZXZlbnRTdGFydDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy53ZWVrRGF5Q29scy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY29sRGF0ZSA9IG5vcm1hbGl6ZSh0aGlzLndlZWtEYXlDb2xzW2ldLmRhdGUpO1xuICAgICAgLy8gU2kgZWwgZMOtYSBlc3TDoSBkZW50cm8gZGVsIHJhbmdvIGRlbCBldmVudG8gKGluY2x1eWVuZG8gZWwgZMOtYSBkZSBmaW4pXG4gICAgICBpZiAoY29sRGF0ZSA+PSBldmVudFN0YXJ0ICYmIGNvbERhdGUgPD0gZXZlbnRFbmQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmFsbERheSkge1xuICAgICAgICAgIHRoaXMud2Vla0RheUNvbHNbaV0uYWxsRGF5RXZlbnRzLnB1c2goZXZlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGNvbEluZGV4ID0gdGhpcy5maW5kQXZhbGFpbGFibGVDb2x1bW4oZXZlbnQsIGkpO1xuICAgICAgICAgIGNvbnN0IGV2ZW50Q29scyA9IHRoaXMud2Vla0RheUNvbHNbaV0uZXZlbnRDb2xzO1xuICAgICAgICAgIGlmIChjb2xJbmRleCA9PT0gZXZlbnRDb2xzLmxlbmd0aCkge1xuICAgICAgICAgICAgZXZlbnRDb2xzLnB1c2goeyBldmVudHM6IFtldmVudF0gfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV2ZW50Q29sc1tjb2xJbmRleF0uZXZlbnRzLnB1c2goZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZpbmRBdmFsYWlsYWJsZUNvbHVtbihldmVudDogQ2FsZW5kYXJFdmVudCwgZGF5SW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgZXZlbnRDb2xzID0gdGhpcy53ZWVrRGF5Q29sc1tkYXlJbmRleF0uZXZlbnRDb2xzO1xuXG4gICAgZm9yIChsZXQgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IGV2ZW50Q29scy5sZW5ndGg7IGNvbEluZGV4KyspIHtcbiAgICAgIGNvbnN0IGNvbCA9IGV2ZW50Q29sc1tjb2xJbmRleF07XG5cbiAgICAgIC8vIGNvbmZsaWN0IGlmIGV2ZW50IG92ZXJsYXBzIHdpdGggYW55IGV4aXN0aW5nIGV2ZW50IGluIHRoZSBjb2x1bW5cbiAgICAgIGNvbnN0IGhhc0NvbmZsaWN0ID0gY29sLmV2ZW50cy5zb21lKGV4aXN0aW5nRXZlbnQgPT4ge1xuICAgICAgICBjb25zdCBzdGFydHNEdXJpbmdFeGlzdGluZyA9IGV2ZW50LnN0YXJ0IDwgZXhpc3RpbmdFdmVudC5lbmQhICYmIGV2ZW50LnN0YXJ0ID49IGV4aXN0aW5nRXZlbnQuc3RhcnQ7XG4gICAgICAgIGNvbnN0IGVuZHNEdXJpbmdFeGlzdGluZyA9IGV2ZW50LmVuZCEgPiBleGlzdGluZ0V2ZW50LnN0YXJ0ICYmIGV2ZW50LmVuZCEgPD0gZXhpc3RpbmdFdmVudC5lbmQhO1xuICAgICAgICBjb25zdCBzcGFuc0V4aXN0aW5nID0gZXZlbnQuc3RhcnQgPD0gZXhpc3RpbmdFdmVudC5zdGFydCAmJiBldmVudC5lbmQhID49IGV4aXN0aW5nRXZlbnQuZW5kITtcbiAgICAgICAgcmV0dXJuIHN0YXJ0c0R1cmluZ0V4aXN0aW5nIHx8IGVuZHNEdXJpbmdFeGlzdGluZyB8fCBzcGFuc0V4aXN0aW5nO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghaGFzQ29uZmxpY3QpIHtcbiAgICAgICAgcmV0dXJuIGNvbEluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXZlbnRDb2xzLmxlbmd0aDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZXZlbnRzJ10gfHwgY2hhbmdlc1snc3RhcnREYXRlJ10pIHtcbiAgICAgIHRoaXMuaW5pdFdlZWtEYXlDb2xzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNpemluZyA9IGZhbHNlO1xuICBwcml2YXRlIHN0YXJ0WSA9IDA7XG4gIHByaXZhdGUgc3RhcnRIZWlnaHQgPSAwO1xuXG4gIG9uUmVzaXplTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5yZXNpemluZyA9IHRydWU7XG4gICAgdGhpcy5zdGFydFkgPSBldmVudC5jbGllbnRZO1xuICAgIHRoaXMuc3RhcnRIZWlnaHQgPSB0aGlzLmFsbERheUhlaWdodDtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uUmVzaXplTW91c2VNb3ZlKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vblJlc2l6ZU1vdXNlVXApO1xuICB9XG5cbiAgb25SZXNpemVNb3VzZU1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkID0+IHtcbiAgICBpZiAoIXRoaXMucmVzaXppbmcpIHJldHVybjtcbiAgICBjb25zdCBkZWx0YSA9IGV2ZW50LmNsaWVudFkgLSB0aGlzLnN0YXJ0WTtcbiAgICBjb25zdCBuZXdIZWlnaHQgPSB0aGlzLnN0YXJ0SGVpZ2h0ICsgZGVsdGE7XG4gICAgdGhpcy5hbGxEYXlIZWlnaHQgPSBNYXRoLm1heCg2MCwgbmV3SGVpZ2h0KTsgLy8gbcOtbmltbyA4MHB4XG4gIH07XG5cbiAgb25SZXNpemVNb3VzZVVwID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMucmVzaXppbmcgPSBmYWxzZTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uUmVzaXplTW91c2VNb3ZlKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vblJlc2l6ZU1vdXNlVXApO1xuICB9O1xuXG4gIG9uRXZlbnRDbGljayhldmVudDogQ2FsZW5kYXJFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnRDbGljay5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGlzVG9kYXkoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpID09PSB0b2RheS5nZXRGdWxsWWVhcigpICYmXG4gICAgICBkYXRlLmdldE1vbnRoKCkgPT09IHRvZGF5LmdldE1vbnRoKCkgJiZcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpID09PSB0b2RheS5nZXREYXRlKCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cIndlZWstdmlldy1jb21wb25lbnRcIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImFsbC1kYXktZXZlbnRzXCIgW3N0eWxlLmhlaWdodC5weF09XCJhbGxEYXlIZWlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgICAge3snYWxsRGF5RXZlbnRzJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXlzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50cy1jb250YWluZXJcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtEYXlDb2xzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWstZGF5XCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc1RvZGF5KGRheS5kYXRlKX1cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgd2Vla0RheXNbaV0udGFnIHwgdHJhbnNsYXRlIHwgc2xpY2U6MDozIH19IHt7ZGF5LmRhdGUgfCBkYXRlOidkZCd9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGxpYi1jYWxlbmRhci1ldmVudCAqbmdGb3I9XCJsZXQgZXZlbnQgb2YgZGF5LmFsbERheUV2ZW50c1wiIFtldmVudF09XCJldmVudFwiXG4gICAgICAgICAgICAgICAgICAgIChldmVudENsaWNrKT1cIm9uRXZlbnRDbGljaygkZXZlbnQpXCI+PC9saWItY2FsZW5kYXItZXZlbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPGRpdiBjbGFzcz1cInJlc2l6ZS1kaXZpZGVyXCIgKG1vdXNlZG93bik9XCJvblJlc2l6ZU1vdXNlRG93bigkZXZlbnQpXCI+PC9kaXY+XG5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImR1cmF0aW9uLWV2ZW50c1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaG91ci1ibG9ja3NcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3VyLWJsb2NrXCIgKm5nRm9yPVwibGV0IGhvdXIgb2YgaG91ckJsb2Nrc1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGhvdXIgfX06MDA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50cy13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1ibG9ja3NcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5LWJsb2NrXCIgKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrRGF5Q29sc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1ibG9ja1wiICpuZ0Zvcj1cImxldCBob3VyIG9mIGhvdXJCbG9ja3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWJsb2NrLW1pZGRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5cy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnRzLWNvbnRhaW5lclwiICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla0RheUNvbHNcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZ3JpZFRlbXBsYXRlQ29sdW1uc109XCIncmVwZWF0KCcgKyBkYXkuZXZlbnRDb2xzLmxlbmd0aCArICcsIDFmciknXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1jb2x1bW5cIiAqbmdGb3I9XCJsZXQgY29sIG9mIGRheS5ldmVudENvbHNcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1kdXJhdGlvbi1ldmVudCAqbmdGb3I9XCJsZXQgZXZlbnQgb2YgY29sLmV2ZW50c1wiIFtldmVudF09XCJldmVudFwiIFtkYXRlXT1cImRheS5kYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnRDbGljayk9XCJvbkV2ZW50Q2xpY2soJGV2ZW50KVwiPjwvbGliLWR1cmF0aW9uLWV2ZW50PlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PiJdfQ==
@@ -653,22 +653,28 @@ class WeekComponent {
653
653
  this.events.forEach(event => this.addEvent(event));
654
654
  }
655
655
  addEvent(event) {
656
- const index = this.weekDayCols.findIndex(col => col.date.getFullYear() === event.start.getFullYear() &&
657
- col.date.getMonth() === event.start.getMonth() &&
658
- col.date.getDate() === event.start.getDate());
659
- if (index === -1)
660
- return;
661
- const eventCols = this.weekDayCols[index].eventCols;
662
- if (event.allDay) {
663
- this.weekDayCols[index].allDayEvents.push(event);
664
- }
665
- else {
666
- const colIndex = this.findAvalailableColumn(event, index);
667
- if (colIndex === eventCols.length) {
668
- eventCols.push({ events: [event] });
669
- }
670
- else {
671
- eventCols[colIndex].events.push(event);
656
+ // Mostrar eventos en todos los días que abarquen
657
+ // Normalizar fechas a solo año, mes y día para comparar correctamente
658
+ const normalize = (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate());
659
+ const eventStart = normalize(event.start);
660
+ const eventEnd = event.end ? normalize(event.end) : eventStart;
661
+ for (let i = 0; i < this.weekDayCols.length; i++) {
662
+ const colDate = normalize(this.weekDayCols[i].date);
663
+ // Si el día está dentro del rango del evento (incluyendo el día de fin)
664
+ if (colDate >= eventStart && colDate <= eventEnd) {
665
+ if (event.allDay) {
666
+ this.weekDayCols[i].allDayEvents.push(event);
667
+ }
668
+ else {
669
+ const colIndex = this.findAvalailableColumn(event, i);
670
+ const eventCols = this.weekDayCols[i].eventCols;
671
+ if (colIndex === eventCols.length) {
672
+ eventCols.push({ events: [event] });
673
+ }
674
+ else {
675
+ eventCols[colIndex].events.push(event);
676
+ }
677
+ }
672
678
  }
673
679
  }
674
680
  }
@@ -948,11 +954,12 @@ class SmartCalendarComponent {
948
954
  this.weekStartDate.setDate(date.getDate() + diffToStart);
949
955
  this.weekEndDate = new Date(this.weekStartDate);
950
956
  this.weekEndDate.setDate(this.weekStartDate.getDate() + 6);
951
- // Filter events for the week
957
+ // Filter events for the week, including multi-day events that overlap any part of the week
952
958
  this.weekEvents = this.events.filter(event => {
953
959
  const eventStart = new Date(event.start);
954
960
  const eventEnd = event.end ? new Date(event.end) : eventStart;
955
- return (eventStart <= this.weekEndDate) && (eventEnd >= this.weekStartDate);
961
+ // Un evento se incluye si cualquier parte de él cae dentro de la semana
962
+ return eventStart <= this.weekEndDate && eventEnd >= this.weekStartDate;
956
963
  });
957
964
  if (emitChange) {
958
965
  const oldMonth = this.currentMonth;