valtech-components 2.0.536 → 2.0.538

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.
@@ -1,5 +1,6 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { Component, inject, Input, Output, EventEmitter } from '@angular/core';
3
+ import { I18nService } from '../../../services/i18n';
3
4
  import { DEFAULT_COUNTDOWN_LABELS, } from './types';
4
5
  import * as i0 from "@angular/core";
5
6
  /**
@@ -48,6 +49,7 @@ export class CountdownComponent {
48
49
  constructor() {
49
50
  this.complete = new EventEmitter();
50
51
  this.tick = new EventEmitter();
52
+ this.i18n = inject(I18nService);
51
53
  this.time = {
52
54
  days: 0,
53
55
  hours: 0,
@@ -180,7 +182,7 @@ export class CountdownComponent {
180
182
  return labels[unit] || unit;
181
183
  }
182
184
  getExpiredMessage() {
183
- return this.props.expiredMessage || 'Tiempo agotado';
185
+ return this.props.expiredMessage || this.i18n.t('timeExpired');
184
186
  }
185
187
  getColor() {
186
188
  if (this.props.color) {
@@ -335,4 +337,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
335
337
  }], tick: [{
336
338
  type: Output
337
339
  }] } });
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9jb3VudGRvd24vY291bnRkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUtMLHdCQUF3QixHQUN6QixNQUFNLFNBQVMsQ0FBQzs7QUE0RWpCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlDRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFwSC9CO1FBdUhZLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUN0RCxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFFeEQsU0FBSSxHQUFrQjtZQUNwQixJQUFJLEVBQUUsQ0FBQztZQUNQLEtBQUssRUFBRSxDQUFDO1lBQ1IsT0FBTyxFQUFFLENBQUM7WUFDVixPQUFPLEVBQUUsQ0FBQztZQUNWLFlBQVksRUFBRSxDQUFDO1lBQ2YsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQztRQUVGLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFVixlQUFVLEdBQVEsSUFBSSxDQUFDO0tBa0poQztJQWhKQyxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFD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TUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvdW50ZG93bk1ldGFkYXRhLFxuICBDb3VudGRvd25UaW1lLFxuICBDb3VudGRvd25Db21wbGV0ZUV2ZW50LFxuICBDb3VudGRvd25UaWNrRXZlbnQsXG4gIERFRkFVTFRfQ09VTlRET1dOX0xBQkVMUyxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jb3VudGRvd24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNvdW50ZG93bi1jb250YWluZXJcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCJcbiAgICAgIFtjbGFzcy5leHBpcmVkXT1cImlzRXhwaXJlZFwiXG4gICAgICBbY2xhc3MuZm9ybWF0LWZ1bGxdPVwicHJvcHMuZm9ybWF0ID09PSAnZnVsbCcgfHwgIXByb3BzLmZvcm1hdFwiXG4gICAgICBbY2xhc3MuZm9ybWF0LWNvbXBhY3RdPVwicHJvcHMuZm9ybWF0ID09PSAnY29tcGFjdCdcIlxuICAgICAgW2NsYXNzLmZvcm1hdC1taW5pbWFsXT1cInByb3BzLmZvcm1hdCA9PT0gJ21pbmltYWwnXCJcbiAgICAgIFtjbGFzcy5mb3JtYXQtZGlnaXRhbF09XCJwcm9wcy5mb3JtYXQgPT09ICdkaWdpdGFsJ1wiXG4gICAgICBbY2xhc3Muc2l6ZS1zbWFsbF09XCJwcm9wcy5zaXplID09PSAnc21hbGwnXCJcbiAgICAgIFtjbGFzcy5zaXplLW1lZGl1bV09XCJwcm9wcy5zaXplID09PSAnbWVkaXVtJyB8fCAhcHJvcHMuc2l6ZVwiXG4gICAgICBbY2xhc3Muc2l6ZS1sYXJnZV09XCJwcm9wcy5zaXplID09PSAnbGFyZ2UnXCJcbiAgICAgIFtzdHlsZS4tLWNvdW50ZG93bi1jb2xvcl09XCJnZXRDb2xvcigpXCJcbiAgICA+XG4gICAgICBAaWYgKGlzRXhwaXJlZCAmJiBwcm9wcy5zaG93RXhwaXJlZE1lc3NhZ2UgIT09IGZhbHNlKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJleHBpcmVkLW1lc3NhZ2VcIj5cbiAgICAgICAgICB7eyBnZXRFeHBpcmVkTWVzc2FnZSgpIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSBpZiAoIWlzRXhwaXJlZCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRkb3duLXVuaXRzXCI+XG4gICAgICAgICAgQGlmIChzaG91bGRTaG93RGF5cygpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRkb3duLXVuaXRcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGRvd24tdmFsdWVcIj57eyBmb3JtYXROdW1iZXIodGltZS5kYXlzKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93TGFiZWxzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRkb3duLWxhYmVsXCI+e3sgZ2V0TGFiZWwoJ2RheXMnLCB0aW1lLmRheXMpIH19PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1NlcGFyYXRvcnMgIT09IGZhbHNlICYmIHNob3VsZFNob3dIb3VycygpKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRkb3duLXNlcGFyYXRvclwiPnt7IHByb3BzLnNlcGFyYXRvciB8fCAnOicgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChzaG91bGRTaG93SG91cnMoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50ZG93bi11bml0XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRkb3duLXZhbHVlXCI+e3sgZm9ybWF0TnVtYmVyKHRpbWUuaG91cnMpIH19PC9zcGFuPlxuICAgICAgICAgICAgICBAaWYgKHByb3BzLnNob3dMYWJlbHMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGRvd24tbGFiZWxcIj57eyBnZXRMYWJlbCgnaG91cnMnLCB0aW1lLmhvdXJzKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKHByb3BzLnNob3dTZXBhcmF0b3JzICE9PSBmYWxzZSAmJiBzaG91bGRTaG93TWludXRlcygpKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRkb3duLXNlcGFyYXRvclwiPnt7IHByb3BzLnNlcGFyYXRvciB8fCAnOicgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChzaG91bGRTaG93TWludXRlcygpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRkb3duLXVuaXRcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGRvd24tdmFsdWVcIj57eyBmb3JtYXROdW1iZXIodGltZS5taW51dGVzKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93TGFiZWxzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRkb3duLWxhYmVsXCI+e3sgZ2V0TGFiZWwoJ21pbnV0ZXMnLCB0aW1lLm1pbnV0ZXMpIH19PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1NlcGFyYXRvcnMgIT09IGZhbHNlICYmIHNob3VsZFNob3dTZWNvbmRzKCkpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGRvd24tc2VwYXJhdG9yXCI+e3sgcHJvcHMuc2VwYXJhdG9yIHx8ICc6JyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHNob3VsZFNob3dTZWNvbmRzKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudGRvd24tdW5pdFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZG93bi12YWx1ZVwiPnt7IGZvcm1hdE51bWJlcih0aW1lLnNlY29uZHMpIH19PC9zcGFuPlxuICAgICAgICAgICAgICBAaWYgKHByb3BzLnNob3dMYWJlbHMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGRvd24tbGFiZWxcIj57eyBnZXRMYWJlbCgnc2Vjb25kcycsIHRpbWUuc2Vjb25kcykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2NvdW50ZG93bi5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWNvdW50ZG93blxuICpcbiAqIEEgY291bnRkb3duIHRpbWVyIGNvbXBvbmVudCB0aGF0IGNvdW50cyBkb3duIHRvIGEgdGFyZ2V0IGRhdGUuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYGh0bWxcbiAqIDx2YWwtY291bnRkb3duXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgdGFyZ2V0RGF0ZTogJzIwMjQtMTItMzFUMjM6NTk6NTknLFxuICogICAgIGZvcm1hdDogJ2Z1bGwnXG4gKiAgIH1cIlxuICogICAoY29tcGxldGUpPVwib25Db3VudGRvd25Db21wbGV0ZSgpXCJcbiAqID48L3ZhbC1jb3VudGRvd24+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBDb21wYWN0IGZvcm1hdFxuICogYGBgaHRtbFxuICogPHZhbC1jb3VudGRvd25cbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0YXJnZXREYXRlOiByYWZmbGVFbmREYXRlLFxuICogICAgIGZvcm1hdDogJ2NvbXBhY3QnLFxuICogICAgIHNob3dEYXlzOiB0cnVlLFxuICogICAgIHNob3dTZWNvbmRzOiBmYWxzZSxcbiAqICAgICBjb2xvcjogJ2RhbmdlcicsXG4gKiAgICAgZXhwaXJlZE1lc3NhZ2U6ICfCoVNvcnRlbyBmaW5hbGl6YWRvISdcbiAqICAgfVwiXG4gKiA+PC92YWwtY291bnRkb3duPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgRGlnaXRhbCBjbG9jayBzdHlsZVxuICogYGBgaHRtbFxuICogPHZhbC1jb3VudGRvd25cbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0YXJnZXREYXRlOiBkZWFkbGluZSxcbiAqICAgICBmb3JtYXQ6ICdkaWdpdGFsJyxcbiAqICAgICBzaG93TGFiZWxzOiBmYWxzZSxcbiAqICAgICBzaXplOiAnbGFyZ2UnXG4gKiAgIH1cIlxuICogPjwvdmFsLWNvdW50ZG93bj5cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgQ291bnRkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwcm9wczogQ291bnRkb3duTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpIGNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxDb3VudGRvd25Db21wbGV0ZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgdGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q291bnRkb3duVGlja0V2ZW50PigpO1xuXG4gIHRpbWU6IENvdW50ZG93blRpbWUgPSB7XG4gICAgZGF5czogMCxcbiAgICBob3VyczogMCxcbiAgICBtaW51dGVzOiAwLFxuICAgIHNlY29uZHM6IDAsXG4gICAgdG90YWxTZWNvbmRzOiAwLFxuICAgIGlzRXhwaXJlZDogZmFsc2UsXG4gIH07XG5cbiAgaXNFeHBpcmVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBpbnRlcnZhbElkOiBhbnkgPSBudWxsO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLmF1dG9TdGFydCAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3AoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCB0aGUgY291bnRkb3duIHRpbWVyLlxuICAgKi9cbiAgc3RhcnQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVUaW1lKCk7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSB0aGlzLnByb3BzLnVwZGF0ZUludGVydmFsIHx8IDEwMDA7XG4gICAgdGhpcy5pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy51cGRhdGVUaW1lKCksIGludGVydmFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHRoZSBjb3VudGRvd24gdGltZXIuXG4gICAqL1xuICBzdG9wKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmludGVydmFsSWQpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKTtcbiAgICAgIHRoaXMuaW50ZXJ2YWxJZCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IGFuZCByZXN0YXJ0IHRoZSBjb3VudGRvd24uXG4gICAqL1xuICByZXN0YXJ0KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcCgpO1xuICAgIHRoaXMuaXNFeHBpcmVkID0gZmFsc2U7XG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUaW1lKCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuZ2V0VGFyZ2V0RGF0ZSgpO1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZGlmZiA9IHRhcmdldC5nZXRUaW1lKCkgLSBub3cuZ2V0VGltZSgpO1xuXG4gICAgaWYgKGRpZmYgPD0gMCkge1xuICAgICAgdGhpcy50aW1lID0ge1xuICAgICAgICBkYXlzOiAwLFxuICAgICAgICBob3VyczogMCxcbiAgICAgICAgbWludXRlczogMCxcbiAgICAgICAgc2Vjb25kczogMCxcbiAgICAgICAgdG90YWxTZWNvbmRzOiAwLFxuICAgICAgICBpc0V4cGlyZWQ6IHRydWUsXG4gICAgICB9O1xuICAgICAgdGhpcy5pc0V4cGlyZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICB0aGlzLmNvbXBsZXRlLmVtaXQoe1xuICAgICAgICB0YXJnZXREYXRlOiB0YXJnZXQsXG4gICAgICAgIGNvbXBsZXRlZEF0OiBub3csXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0b3RhbFNlY29uZHMgPSBNYXRoLmZsb29yKGRpZmYgLyAxMDAwKTtcbiAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcih0b3RhbFNlY29uZHMgLyA4NjQwMCk7XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKCh0b3RhbFNlY29uZHMgJSA4NjQwMCkgLyAzNjAwKTtcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcigodG90YWxTZWNvbmRzICUgMzYwMCkgLyA2MCk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRvdGFsU2Vjb25kcyAlIDYwO1xuXG4gICAgdGhpcy50aW1lID0ge1xuICAgICAgZGF5cyxcbiAgICAgIGhvdXJzLFxuICAgICAgbWludXRlcyxcbiAgICAgIHNlY29uZHMsXG4gICAgICB0b3RhbFNlY29uZHMsXG4gICAgICBpc0V4cGlyZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICB0aGlzLnRpY2suZW1pdCh7IHRpbWU6IHRoaXMudGltZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFyZ2V0RGF0ZSgpOiBEYXRlIHtcbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzLnByb3BzLnRhcmdldERhdGU7XG4gICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHRhcmdldCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGF0ZSh0YXJnZXQpO1xuICB9XG5cbiAgc2hvdWxkU2hvd0RheXMoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd0RheXMgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd0RheXMgPT09IHRydWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEF1dG86IHNob3cgaWYgbW9yZSB0aGFuIDAgZGF5cyBvciBmb3JtYXQgaXMgZnVsbFxuICAgIHJldHVybiB0aGlzLnRpbWUuZGF5cyA+IDAgfHwgdGhpcy5wcm9wcy5mb3JtYXQgPT09ICdmdWxsJztcbiAgfVxuXG4gIHNob3VsZFNob3dIb3VycygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93SG91cnMgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzaG91bGRTaG93TWludXRlcygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93TWludXRlcyA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHNob3VsZFNob3dTZWNvbmRzKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnByb3BzLnNob3dTZWNvbmRzID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0aGlzLnByb3BzLmZvcm1hdCA9PT0gJ21pbmltYWwnKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMucGFkTnVtYmVycyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKS5wYWRTdGFydCgyLCAnMCcpO1xuICB9XG5cbiAgZ2V0TGFiZWwodW5pdDogJ2RheXMnIHwgJ2hvdXJzJyB8ICdtaW51dGVzJyB8ICdzZWNvbmRzJywgdmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgbGFiZWxzID0gdGhpcy5wcm9wcy5sYWJlbHMgfHwgREVGQVVMVF9DT1VOVERPV05fTEFCRUxTO1xuICAgIGNvbnN0IGlzU2luZ3VsYXIgPSB2YWx1ZSA9PT0gMTtcblxuICAgIC8vIEdldCBzaW5ndWxhciBvciBwbHVyYWwgZm9ybVxuICAgIGNvbnN0IHNpbmd1bGFyS2V5ID0gdW5pdC5zbGljZSgwLCAtMSkgYXMgJ2RheScgfCAnaG91cicgfCAnbWludXRlJyB8ICdzZWNvbmQnO1xuXG4gICAgaWYgKGlzU2luZ3VsYXIgJiYgbGFiZWxzW3Npbmd1bGFyS2V5XSkge1xuICAgICAgcmV0dXJuIGxhYmVsc1tzaW5ndWxhcktleV0hO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbHNbdW5pdF0gfHwgdW5pdDtcbiAgfVxuXG4gIGdldEV4cGlyZWRNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZXhwaXJlZE1lc3NhZ2UgfHwgJ1RpZW1wbyBhZ290YWRvJztcbiAgfVxuXG4gIGdldENvbG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMuY29sb3IpIHtcbiAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7dGhpcy5wcm9wcy5jb2xvcn0pYDtcbiAgICB9XG4gICAgcmV0dXJuICd2YXIoLS1pb24tY29sb3ItcHJpbWFyeSknO1xuICB9XG59XG4iXX0=
340
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9jb3VudGRvd24vY291bnRkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBS0wsd0JBQXdCLEdBQ3pCLE1BQU0sU0FBUyxDQUFDOztBQTRFakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQXBIL0I7UUF1SFksYUFBUSxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBQ3RELFNBQUksR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUVoRCxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5DLFNBQUksR0FBa0I7WUFDcEIsSUFBSSxFQUFFLENBQUM7WUFDUCxLQUFLLEVBQUUsQ0FBQztZQUNSLE9BQU8sRUFBRSxDQUFDO1lBQ1YsT0FBTyxFQUFFLENBQUM7WUFDVixZQUFZLEVBQUUsQ0FBQztZQUNmLFNBQVMsRUFBRSxLQUFLO1NBQ2pCLENBQUM7UUFFRixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRVYsZUFBVSxHQUFRLElBQUksQ0FBQztLQWtKaEM7SUFoSkMsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQztJ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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUVUOzhCQThDUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQge1xuICBDb3VudGRvd25NZXRhZGF0YSxcbiAgQ291bnRkb3duVGltZSxcbiAgQ291bnRkb3duQ29tcGxldGVFdmVudCxcbiAgQ291bnRkb3duVGlja0V2ZW50LFxuICBERUZBVUxUX0NPVU5URE9XTl9MQUJFTFMsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY291bnRkb3duJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjb3VudGRvd24tY29udGFpbmVyXCJcbiAgICAgIFtjbGFzc109XCJwcm9wcy5jc3NDbGFzc1wiXG4gICAgICBbY2xhc3MuZXhwaXJlZF09XCJpc0V4cGlyZWRcIlxuICAgICAgW2NsYXNzLmZvcm1hdC1mdWxsXT1cInByb3BzLmZvcm1hdCA9PT0gJ2Z1bGwnIHx8ICFwcm9wcy5mb3JtYXRcIlxuICAgICAgW2NsYXNzLmZvcm1hdC1jb21wYWN0XT1cInByb3BzLmZvcm1hdCA9PT0gJ2NvbXBhY3QnXCJcbiAgICAgIFtjbGFzcy5mb3JtYXQtbWluaW1hbF09XCJwcm9wcy5mb3JtYXQgPT09ICdtaW5pbWFsJ1wiXG4gICAgICBbY2xhc3MuZm9ybWF0LWRpZ2l0YWxdPVwicHJvcHMuZm9ybWF0ID09PSAnZGlnaXRhbCdcIlxuICAgICAgW2NsYXNzLnNpemUtc21hbGxdPVwicHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gICAgICBbY2xhc3Muc2l6ZS1tZWRpdW1dPVwicHJvcHMuc2l6ZSA9PT0gJ21lZGl1bScgfHwgIXByb3BzLnNpemVcIlxuICAgICAgW2NsYXNzLnNpemUtbGFyZ2VdPVwicHJvcHMuc2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gICAgICBbc3R5bGUuLS1jb3VudGRvd24tY29sb3JdPVwiZ2V0Q29sb3IoKVwiXG4gICAgPlxuICAgICAgQGlmIChpc0V4cGlyZWQgJiYgcHJvcHMuc2hvd0V4cGlyZWRNZXNzYWdlICE9PSBmYWxzZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhwaXJlZC1tZXNzYWdlXCI+XG4gICAgICAgICAge3sgZ2V0RXhwaXJlZE1lc3NhZ2UoKSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2UgaWYgKCFpc0V4cGlyZWQpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50ZG93bi11bml0c1wiPlxuICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd0RheXMoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50ZG93bi11bml0XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRkb3duLXZhbHVlXCI+e3sgZm9ybWF0TnVtYmVyKHRpbWUuZGF5cykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd0xhYmVscyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZG93bi1sYWJlbFwiPnt7IGdldExhYmVsKCdkYXlzJywgdGltZS5kYXlzKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKHByb3BzLnNob3dTZXBhcmF0b3JzICE9PSBmYWxzZSAmJiBzaG91bGRTaG93SG91cnMoKSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZG93bi1zZXBhcmF0b3JcIj57eyBwcm9wcy5zZXBhcmF0b3IgfHwgJzonIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd0hvdXJzKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudGRvd24tdW5pdFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZG93bi12YWx1ZVwiPnt7IGZvcm1hdE51bWJlcih0aW1lLmhvdXJzKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93TGFiZWxzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRkb3duLWxhYmVsXCI+e3sgZ2V0TGFiZWwoJ2hvdXJzJywgdGltZS5ob3VycykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93U2VwYXJhdG9ycyAhPT0gZmFsc2UgJiYgc2hvdWxkU2hvd01pbnV0ZXMoKSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZG93bi1zZXBhcmF0b3JcIj57eyBwcm9wcy5zZXBhcmF0b3IgfHwgJzonIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd01pbnV0ZXMoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50ZG93bi11bml0XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRkb3duLXZhbHVlXCI+e3sgZm9ybWF0TnVtYmVyKHRpbWUubWludXRlcykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd0xhYmVscyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZG93bi1sYWJlbFwiPnt7IGdldExhYmVsKCdtaW51dGVzJywgdGltZS5taW51dGVzKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKHByb3BzLnNob3dTZXBhcmF0b3JzICE9PSBmYWxzZSAmJiBzaG91bGRTaG93U2Vjb25kcygpKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRkb3duLXNlcGFyYXRvclwiPnt7IHByb3BzLnNlcGFyYXRvciB8fCAnOicgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChzaG91bGRTaG93U2Vjb25kcygpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRkb3duLXVuaXRcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGRvd24tdmFsdWVcIj57eyBmb3JtYXROdW1iZXIodGltZS5zZWNvbmRzKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93TGFiZWxzICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRkb3duLWxhYmVsXCI+e3sgZ2V0TGFiZWwoJ3NlY29uZHMnLCB0aW1lLnNlY29uZHMpIH19PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9jb3VudGRvd24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1jb3VudGRvd25cbiAqXG4gKiBBIGNvdW50ZG93biB0aW1lciBjb21wb25lbnQgdGhhdCBjb3VudHMgZG93biB0byBhIHRhcmdldCBkYXRlLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWNvdW50ZG93blxuICogICBbcHJvcHNdPVwie1xuICogICAgIHRhcmdldERhdGU6ICcyMDI0LTEyLTMxVDIzOjU5OjU5JyxcbiAqICAgICBmb3JtYXQ6ICdmdWxsJ1xuICogICB9XCJcbiAqICAgKGNvbXBsZXRlKT1cIm9uQ291bnRkb3duQ29tcGxldGUoKVwiXG4gKiA+PC92YWwtY291bnRkb3duPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQ29tcGFjdCBmb3JtYXRcbiAqIGBgYGh0bWxcbiAqIDx2YWwtY291bnRkb3duXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgdGFyZ2V0RGF0ZTogcmFmZmxlRW5kRGF0ZSxcbiAqICAgICBmb3JtYXQ6ICdjb21wYWN0JyxcbiAqICAgICBzaG93RGF5czogdHJ1ZSxcbiAqICAgICBzaG93U2Vjb25kczogZmFsc2UsXG4gKiAgICAgY29sb3I6ICdkYW5nZXInLFxuICogICAgIGV4cGlyZWRNZXNzYWdlOiAnwqFTb3J0ZW8gZmluYWxpemFkbyEnXG4gKiAgIH1cIlxuICogPjwvdmFsLWNvdW50ZG93bj5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIERpZ2l0YWwgY2xvY2sgc3R5bGVcbiAqIGBgYGh0bWxcbiAqIDx2YWwtY291bnRkb3duXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgdGFyZ2V0RGF0ZTogZGVhZGxpbmUsXG4gKiAgICAgZm9ybWF0OiAnZGlnaXRhbCcsXG4gKiAgICAgc2hvd0xhYmVsczogZmFsc2UsXG4gKiAgICAgc2l6ZTogJ2xhcmdlJ1xuICogICB9XCJcbiAqID48L3ZhbC1jb3VudGRvd24+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIENvdW50ZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHJvcHM6IENvdW50ZG93bk1ldGFkYXRhO1xuXG4gIEBPdXRwdXQoKSBjb21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q291bnRkb3duQ29tcGxldGVFdmVudD4oKTtcbiAgQE91dHB1dCgpIHRpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENvdW50ZG93blRpY2tFdmVudD4oKTtcblxuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIHRpbWU6IENvdW50ZG93blRpbWUgPSB7XG4gICAgZGF5czogMCxcbiAgICBob3VyczogMCxcbiAgICBtaW51dGVzOiAwLFxuICAgIHNlY29uZHM6IDAsXG4gICAgdG90YWxTZWNvbmRzOiAwLFxuICAgIGlzRXhwaXJlZDogZmFsc2UsXG4gIH07XG5cbiAgaXNFeHBpcmVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBpbnRlcnZhbElkOiBhbnkgPSBudWxsO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLmF1dG9TdGFydCAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3AoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCB0aGUgY291bnRkb3duIHRpbWVyLlxuICAgKi9cbiAgc3RhcnQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVUaW1lKCk7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSB0aGlzLnByb3BzLnVwZGF0ZUludGVydmFsIHx8IDEwMDA7XG4gICAgdGhpcy5pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy51cGRhdGVUaW1lKCksIGludGVydmFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHRoZSBjb3VudGRvd24gdGltZXIuXG4gICAqL1xuICBzdG9wKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmludGVydmFsSWQpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKTtcbiAgICAgIHRoaXMuaW50ZXJ2YWxJZCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IGFuZCByZXN0YXJ0IHRoZSBjb3VudGRvd24uXG4gICAqL1xuICByZXN0YXJ0KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcCgpO1xuICAgIHRoaXMuaXNFeHBpcmVkID0gZmFsc2U7XG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUaW1lKCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuZ2V0VGFyZ2V0RGF0ZSgpO1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZGlmZiA9IHRhcmdldC5nZXRUaW1lKCkgLSBub3cuZ2V0VGltZSgpO1xuXG4gICAgaWYgKGRpZmYgPD0gMCkge1xuICAgICAgdGhpcy50aW1lID0ge1xuICAgICAgICBkYXlzOiAwLFxuICAgICAgICBob3VyczogMCxcbiAgICAgICAgbWludXRlczogMCxcbiAgICAgICAgc2Vjb25kczogMCxcbiAgICAgICAgdG90YWxTZWNvbmRzOiAwLFxuICAgICAgICBpc0V4cGlyZWQ6IHRydWUsXG4gICAgICB9O1xuICAgICAgdGhpcy5pc0V4cGlyZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICB0aGlzLmNvbXBsZXRlLmVtaXQoe1xuICAgICAgICB0YXJnZXREYXRlOiB0YXJnZXQsXG4gICAgICAgIGNvbXBsZXRlZEF0OiBub3csXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0b3RhbFNlY29uZHMgPSBNYXRoLmZsb29yKGRpZmYgLyAxMDAwKTtcbiAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcih0b3RhbFNlY29uZHMgLyA4NjQwMCk7XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKCh0b3RhbFNlY29uZHMgJSA4NjQwMCkgLyAzNjAwKTtcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcigodG90YWxTZWNvbmRzICUgMzYwMCkgLyA2MCk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRvdGFsU2Vjb25kcyAlIDYwO1xuXG4gICAgdGhpcy50aW1lID0ge1xuICAgICAgZGF5cyxcbiAgICAgIGhvdXJzLFxuICAgICAgbWludXRlcyxcbiAgICAgIHNlY29uZHMsXG4gICAgICB0b3RhbFNlY29uZHMsXG4gICAgICBpc0V4cGlyZWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICB0aGlzLnRpY2suZW1pdCh7IHRpbWU6IHRoaXMudGltZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFyZ2V0RGF0ZSgpOiBEYXRlIHtcbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzLnByb3BzLnRhcmdldERhdGU7XG4gICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHRhcmdldCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGF0ZSh0YXJnZXQpO1xuICB9XG5cbiAgc2hvdWxkU2hvd0RheXMoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd0RheXMgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd0RheXMgPT09IHRydWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEF1dG86IHNob3cgaWYgbW9yZSB0aGFuIDAgZGF5cyBvciBmb3JtYXQgaXMgZnVsbFxuICAgIHJldHVybiB0aGlzLnRpbWUuZGF5cyA+IDAgfHwgdGhpcy5wcm9wcy5mb3JtYXQgPT09ICdmdWxsJztcbiAgfVxuXG4gIHNob3VsZFNob3dIb3VycygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93SG91cnMgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzaG91bGRTaG93TWludXRlcygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93TWludXRlcyA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHNob3VsZFNob3dTZWNvbmRzKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnByb3BzLnNob3dTZWNvbmRzID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0aGlzLnByb3BzLmZvcm1hdCA9PT0gJ21pbmltYWwnKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMucGFkTnVtYmVycyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKS5wYWRTdGFydCgyLCAnMCcpO1xuICB9XG5cbiAgZ2V0TGFiZWwodW5pdDogJ2RheXMnIHwgJ2hvdXJzJyB8ICdtaW51dGVzJyB8ICdzZWNvbmRzJywgdmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgbGFiZWxzID0gdGhpcy5wcm9wcy5sYWJlbHMgfHwgREVGQVVMVF9DT1VOVERPV05fTEFCRUxTO1xuICAgIGNvbnN0IGlzU2luZ3VsYXIgPSB2YWx1ZSA9PT0gMTtcblxuICAgIC8vIEdldCBzaW5ndWxhciBvciBwbHVyYWwgZm9ybVxuICAgIGNvbnN0IHNpbmd1bGFyS2V5ID0gdW5pdC5zbGljZSgwLCAtMSkgYXMgJ2RheScgfCAnaG91cicgfCAnbWludXRlJyB8ICdzZWNvbmQnO1xuXG4gICAgaWYgKGlzU2luZ3VsYXIgJiYgbGFiZWxzW3Npbmd1bGFyS2V5XSkge1xuICAgICAgcmV0dXJuIGxhYmVsc1tzaW5ndWxhcktleV0hO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbHNbdW5pdF0gfHwgdW5pdDtcbiAgfVxuXG4gIGdldEV4cGlyZWRNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZXhwaXJlZE1lc3NhZ2UgfHwgdGhpcy5pMThuLnQoJ3RpbWVFeHBpcmVkJyk7XG4gIH1cblxuICBnZXRDb2xvcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLmNvbG9yKSB7XG4gICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke3RoaXMucHJvcHMuY29sb3J9KWA7XG4gICAgfVxuICAgIHJldHVybiAndmFyKC0taW9uLWNvbG9yLXByaW1hcnkpJztcbiAgfVxufVxuIl19
@@ -1,5 +1,6 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, Input } from '@angular/core';
2
+ import { Component, inject, Input } from '@angular/core';
3
+ import { I18nService } from '../../../services/i18n';
3
4
  import { TextComponent } from '../../atoms/text/text.component';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/common";
@@ -14,7 +15,9 @@ import * as i1 from "@angular/common";
14
15
  * @input props: InputMetadata - Configuration for the input (form control, errors, etc.)
15
16
  */
16
17
  export class HintComponent {
17
- constructor() { }
18
+ constructor() {
19
+ this.i18n = inject(I18nService);
20
+ }
18
21
  ngOnInit() { }
19
22
  get shouldShowErrors() {
20
23
  if (this.props.control) {
@@ -39,8 +42,8 @@ export class HintComponent {
39
42
  }
40
43
  else if (this.props.fromControl && this.props.toControl) {
41
44
  // NUMBER_FROM_TO field - check both controls
42
- const fromLabel = this.props.fromLabel || 'Inicial';
43
- const toLabel = this.props.toLabel || 'Final';
45
+ const fromLabel = this.props.fromLabel || this.i18n.t('from');
46
+ const toLabel = this.props.toLabel || this.i18n.t('to');
44
47
  if (this.props.fromControl.hasError(e)) {
45
48
  errors.push(`${fromLabel}: ${this.props.errors[e]}`);
46
49
  }
@@ -84,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
84
87
  }], ctorParameters: () => [], propDecorators: { props: [{
85
88
  type: Input
86
89
  }] } });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2hpbnQvaGludC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBc0JoRTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQVN4QixnQkFBZSxDQUFDO0lBRWhCLFFBQVEsS0FBSSxDQUFDO0lBRWIsSUFBSSxnQkFBZ0I7UUFDbEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLG1DQUFtQztZQUNuQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzFELDhDQUE4QztZQUM5QyxNQUFNLFdBQVcsR0FDZixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckcsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9HLE9BQU8sV0FBVyxJQUFJLFNBQVMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFO1lBQ3JCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELGVBQWU7Z0JBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMxRCw2Q0FBNkM7Z0JBQzdDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQztnQkFDcEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDO2dCQUU5QyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN2QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdkQsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDckQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7K0dBbERVLGFBQWE7bUdBQWIsYUFBYSxnR0F6QmQ7Ozs7Ozs7Ozs7OztHQVlULGt0RkFiUyxZQUFZLGdRQUFFLGFBQWE7OzRGQTBCMUIsYUFBYTtrQkE3QnpCLFNBQVM7K0JBQ0UsVUFBVSxjQUNSLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsWUFDNUI7Ozs7Ozs7Ozs7OztHQVlUO3dEQW9CUSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtaGludCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRleHRDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJoaW50LWNvbnRhaW5lclwiICpuZ0lmPVwic2hvdWxkU2hvd0Vycm9yc1wiPlxuICAgICAgPHZhbC10ZXh0XG4gICAgICAgICpuZ0Zvcj1cImxldCBlIG9mIEVycm9yc1wiXG4gICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgY29udGVudDogZSxcbiAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgfVwiXG4gICAgICA+PC92YWwtdGV4dD5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vaGludC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWhpbnRcbiAqXG4gKiBEaXNwbGF5cyB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzIGZvciBhIGZvcm0gaW5wdXQsIHVzaW5nIEFuZ3VsYXIgZm9ybXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtaGludCBbcHJvcHNdPVwieyBjb250cm9sOiBteUNvbnRyb2wsIGVycm9yczogeyByZXF1aXJlZDogJ1JlcXVpcmVkIGZpZWxkJyB9IH1cIj48L3ZhbC1oaW50PlxuICpcbiAqIEBpbnB1dCBwcm9wczogSW5wdXRNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBpbnB1dCAoZm9ybSBjb250cm9sLCBlcnJvcnMsIGV0Yy4pXG4gKi9cbmV4cG9ydCBjbGFzcyBIaW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIElucHV0IGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAdHlwZSB7SW5wdXRNZXRhZGF0YX1cbiAgICogQHByb3BlcnR5IGNvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtQ29udHJvbCBmb3IgdGhlIGlucHV0LlxuICAgKiBAcHJvcGVydHkgZXJyb3JzIC0gVGhlIGVycm9yIG1lc3NhZ2VzIG1hcHBpbmcuXG4gICAqL1xuICBASW5wdXQoKSBwcm9wczogSW5wdXRNZXRhZGF0YTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIGdldCBzaG91bGRTaG93RXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnByb3BzLmNvbnRyb2wpIHtcbiAgICAgIC8vIE5vcm1hbCBmaWVsZCB3aXRoIHNpbmdsZSBjb250cm9sXG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jb250cm9sLmludmFsaWQgJiYgKHRoaXMucHJvcHMuY29udHJvbC50b3VjaGVkIHx8IHRoaXMucHJvcHMuY29udHJvbC5kaXJ0eSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLmZyb21Db250cm9sICYmIHRoaXMucHJvcHMudG9Db250cm9sKSB7XG4gICAgICAvLyBOVU1CRVJfRlJPTV9UTyBmaWVsZCB3aXRoIHNlcGFyYXRlIGNvbnRyb2xzXG4gICAgICBjb25zdCBmcm9tSW52YWxpZCA9XG4gICAgICAgIHRoaXMucHJvcHMuZnJvbUNvbnRyb2wuaW52YWxpZCAmJiAodGhpcy5wcm9wcy5mcm9tQ29udHJvbC50b3VjaGVkIHx8IHRoaXMucHJvcHMuZnJvbUNvbnRyb2wuZGlydHkpO1xuICAgICAgY29uc3QgdG9JbnZhbGlkID0gdGhpcy5wcm9wcy50b0NvbnRyb2wuaW52YWxpZCAmJiAodGhpcy5wcm9wcy50b0NvbnRyb2wudG91Y2hlZCB8fCB0aGlzLnByb3BzLnRvQ29udHJvbC5kaXJ0eSk7XG4gICAgICByZXR1cm4gZnJvbUludmFsaWQgfHwgdG9JbnZhbGlkO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgRXJyb3JzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5wcm9wcy5lcnJvcnMgfHwge30pO1xuICAgIGNvbnN0IGVycm9ycyA9IFtdO1xuXG4gICAga2V5cy5tYXAoKGU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMuY29udHJvbCAmJiB0aGlzLnByb3BzLmNvbnRyb2wuaGFzRXJyb3IoZSkpIHtcbiAgICAgICAgLy8gTm9ybWFsIGZpZWxkXG4gICAgICAgIGVycm9ycy5wdXNoKHRoaXMucHJvcHMuZXJyb3JzW2VdKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5mcm9tQ29udHJvbCAmJiB0aGlzLnByb3BzLnRvQ29udHJvbCkge1xuICAgICAgICAvLyBOVU1CRVJfRlJPTV9UTyBmaWVsZCAtIGNoZWNrIGJvdGggY29udHJvbHNcbiAgICAgICAgY29uc3QgZnJvbUxhYmVsID0gdGhpcy5wcm9wcy5mcm9tTGFiZWwgfHwgJ0luaWNpYWwnO1xuICAgICAgICBjb25zdCB0b0xhYmVsID0gdGhpcy5wcm9wcy50b0xhYmVsIHx8ICdGaW5hbCc7XG5cbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZnJvbUNvbnRyb2wuaGFzRXJyb3IoZSkpIHtcbiAgICAgICAgICBlcnJvcnMucHVzaChgJHtmcm9tTGFiZWx9OiAke3RoaXMucHJvcHMuZXJyb3JzW2VdfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnRvQ29udHJvbC5oYXNFcnJvcihlKSkge1xuICAgICAgICAgIGVycm9ycy5wdXNoKGAke3RvTGFiZWx9OiAke3RoaXMucHJvcHMuZXJyb3JzW2VdfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG59XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2hpbnQvaGludC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFzQmhFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBV3hCO1FBRlEsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVwQixDQUFDO0lBRWhCLFFBQVEsS0FBSSxDQUFDO0lBRWIsSUFBSSxnQkFBZ0I7UUFDbEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLG1DQUFtQztZQUNuQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzFELDhDQUE4QztZQUM5QyxNQUFNLFdBQVcsR0FDZixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckcsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9HLE9BQU8sV0FBVyxJQUFJLFNBQVMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFO1lBQ3JCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELGVBQWU7Z0JBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMxRCw2Q0FBNkM7Z0JBQzdDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFeEQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDdkMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZELENBQUM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDckMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3JELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOytHQXBEVSxhQUFhO21HQUFiLGFBQWEsZ0dBekJkOzs7Ozs7Ozs7Ozs7R0FZVCxrdEZBYlMsWUFBWSxnUUFBRSxhQUFhOzs0RkEwQjFCLGFBQWE7a0JBN0J6QixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQzVCOzs7Ozs7Ozs7Ozs7R0FZVDt3REFvQlEsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWhpbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUZXh0Q29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiaGludC1jb250YWluZXJcIiAqbmdJZj1cInNob3VsZFNob3dFcnJvcnNcIj5cbiAgICAgIDx2YWwtdGV4dFxuICAgICAgICAqbmdGb3I9XCJsZXQgZSBvZiBFcnJvcnNcIlxuICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgIGNvbnRlbnQ6IGUsXG4gICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgIH1cIlxuICAgICAgPjwvdmFsLXRleHQ+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2hpbnQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1oaW50XG4gKlxuICogRGlzcGxheXMgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcyBmb3IgYSBmb3JtIGlucHV0LCB1c2luZyBBbmd1bGFyIGZvcm1zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLWhpbnQgW3Byb3BzXT1cInsgY29udHJvbDogbXlDb250cm9sLCBlcnJvcnM6IHsgcmVxdWlyZWQ6ICdSZXF1aXJlZCBmaWVsZCcgfSB9XCI+PC92YWwtaGludD5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IElucHV0TWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgaW5wdXQgKGZvcm0gY29udHJvbCwgZXJyb3JzLCBldGMuKVxuICovXG5leHBvcnQgY2xhc3MgSGludENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBJbnB1dCBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICogQHR5cGUge0lucHV0TWV0YWRhdGF9XG4gICAqIEBwcm9wZXJ0eSBjb250cm9sIC0gVGhlIEFuZ3VsYXIgRm9ybUNvbnRyb2wgZm9yIHRoZSBpbnB1dC5cbiAgICogQHByb3BlcnR5IGVycm9ycyAtIFRoZSBlcnJvciBtZXNzYWdlcyBtYXBwaW5nLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IElucHV0TWV0YWRhdGE7XG5cbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIGdldCBzaG91bGRTaG93RXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnByb3BzLmNvbnRyb2wpIHtcbiAgICAgIC8vIE5vcm1hbCBmaWVsZCB3aXRoIHNpbmdsZSBjb250cm9sXG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jb250cm9sLmludmFsaWQgJiYgKHRoaXMucHJvcHMuY29udHJvbC50b3VjaGVkIHx8IHRoaXMucHJvcHMuY29udHJvbC5kaXJ0eSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLmZyb21Db250cm9sICYmIHRoaXMucHJvcHMudG9Db250cm9sKSB7XG4gICAgICAvLyBOVU1CRVJfRlJPTV9UTyBmaWVsZCB3aXRoIHNlcGFyYXRlIGNvbnRyb2xzXG4gICAgICBjb25zdCBmcm9tSW52YWxpZCA9XG4gICAgICAgIHRoaXMucHJvcHMuZnJvbUNvbnRyb2wuaW52YWxpZCAmJiAodGhpcy5wcm9wcy5mcm9tQ29udHJvbC50b3VjaGVkIHx8IHRoaXMucHJvcHMuZnJvbUNvbnRyb2wuZGlydHkpO1xuICAgICAgY29uc3QgdG9JbnZhbGlkID0gdGhpcy5wcm9wcy50b0NvbnRyb2wuaW52YWxpZCAmJiAodGhpcy5wcm9wcy50b0NvbnRyb2wudG91Y2hlZCB8fCB0aGlzLnByb3BzLnRvQ29udHJvbC5kaXJ0eSk7XG4gICAgICByZXR1cm4gZnJvbUludmFsaWQgfHwgdG9JbnZhbGlkO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgRXJyb3JzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5wcm9wcy5lcnJvcnMgfHwge30pO1xuICAgIGNvbnN0IGVycm9ycyA9IFtdO1xuXG4gICAga2V5cy5tYXAoKGU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMuY29udHJvbCAmJiB0aGlzLnByb3BzLmNvbnRyb2wuaGFzRXJyb3IoZSkpIHtcbiAgICAgICAgLy8gTm9ybWFsIGZpZWxkXG4gICAgICAgIGVycm9ycy5wdXNoKHRoaXMucHJvcHMuZXJyb3JzW2VdKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5mcm9tQ29udHJvbCAmJiB0aGlzLnByb3BzLnRvQ29udHJvbCkge1xuICAgICAgICAvLyBOVU1CRVJfRlJPTV9UTyBmaWVsZCAtIGNoZWNrIGJvdGggY29udHJvbHNcbiAgICAgICAgY29uc3QgZnJvbUxhYmVsID0gdGhpcy5wcm9wcy5mcm9tTGFiZWwgfHwgdGhpcy5pMThuLnQoJ2Zyb20nKTtcbiAgICAgICAgY29uc3QgdG9MYWJlbCA9IHRoaXMucHJvcHMudG9MYWJlbCB8fCB0aGlzLmkxOG4udCgndG8nKTtcblxuICAgICAgICBpZiAodGhpcy5wcm9wcy5mcm9tQ29udHJvbC5oYXNFcnJvcihlKSkge1xuICAgICAgICAgIGVycm9ycy5wdXNoKGAke2Zyb21MYWJlbH06ICR7dGhpcy5wcm9wcy5lcnJvcnNbZV19YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJvcHMudG9Db250cm9sLmhhc0Vycm9yKGUpKSB7XG4gICAgICAgICAgZXJyb3JzLnB1c2goYCR7dG9MYWJlbH06ICR7dGhpcy5wcm9wcy5lcnJvcnNbZV19YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +1,7 @@
1
- import { Component, Input } from '@angular/core';
1
+ import { Component, inject, Input } from '@angular/core';
2
2
  import { ReactiveFormsModule } from '@angular/forms';
3
3
  import { IonInput, IonLabel } from '@ionic/angular/standalone';
4
+ import { I18nService } from '../../../services/i18n';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/forms";
6
7
  /**
@@ -14,7 +15,17 @@ import * as i1 from "@angular/forms";
14
15
  * @input props: NumberFromToMetadata - Configuration for the number range input.
15
16
  */
16
17
  export class NumberFromToComponent {
17
- constructor() { }
18
+ /** Get from label with i18n fallback */
19
+ getFromLabel() {
20
+ return this.props.fromLabel || this.i18n.t('from');
21
+ }
22
+ /** Get to label with i18n fallback */
23
+ getToLabel() {
24
+ return this.props.toLabel || this.i18n.t('to');
25
+ }
26
+ constructor() {
27
+ this.i18n = inject(I18nService);
28
+ }
18
29
  ngOnInit() {
19
30
  // Apply default values if configured
20
31
  if (this.props?.withDefault || this.props?.value) {
@@ -75,7 +86,7 @@ export class NumberFromToComponent {
75
86
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NumberFromToComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
76
87
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: NumberFromToComponent, isStandalone: true, selector: "val-number-from-to", inputs: { props: "props" }, ngImport: i0, template: `
77
88
  <div class="number-from-to-container">
78
- <ion-label position="stacked">{{ props.fromLabel || 'Inicial' }}</ion-label>
89
+ <ion-label position="stacked">{{ getFromLabel() }}</ion-label>
79
90
  <ion-input
80
91
  [formControl]="fromControl"
81
92
  type="number"
@@ -86,7 +97,7 @@ export class NumberFromToComponent {
86
97
  >
87
98
  </ion-input>
88
99
 
89
- <ion-label position="stacked">{{ props.toLabel || 'Final' }}</ion-label>
100
+ <ion-label position="stacked">{{ getToLabel() }}</ion-label>
90
101
  <ion-input
91
102
  [formControl]="toControl"
92
103
  type="number"
@@ -103,7 +114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
103
114
  type: Component,
104
115
  args: [{ selector: 'val-number-from-to', standalone: true, imports: [ReactiveFormsModule, IonInput, IonLabel], template: `
105
116
  <div class="number-from-to-container">
106
- <ion-label position="stacked">{{ props.fromLabel || 'Inicial' }}</ion-label>
117
+ <ion-label position="stacked">{{ getFromLabel() }}</ion-label>
107
118
  <ion-input
108
119
  [formControl]="fromControl"
109
120
  type="number"
@@ -114,7 +125,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
114
125
  >
115
126
  </ion-input>
116
127
 
117
- <ion-label position="stacked">{{ props.toLabel || 'Final' }}</ion-label>
128
+ <ion-label position="stacked">{{ getToLabel() }}</ion-label>
118
129
  <ion-input
119
130
  [formControl]="toControl"
120
131
  type="number"
@@ -129,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
129
140
  }], ctorParameters: () => [], propDecorators: { props: [{
130
141
  type: Input
131
142
  }] } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZyb20tdG8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9udW1iZXItZnJvbS10by9udW1iZXItZnJvbS10by5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFlLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBa0MvRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8scUJBQXFCO0lBU2hDLGdCQUFlLENBQUM7SUFFaEIsUUFBUTtRQUNOLHFDQUFxQztRQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDaEQsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDMUIsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLElBQUksWUFBWSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDeEUsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHFEQUFxRDtnQkFDckQsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLGNBQWMsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixrQ0FBa0M7UUFDbEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzNGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsdUJBQXVCO1FBQ3ZCLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMvQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsNENBQTRDO1FBQzVDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDO1lBQ0gsaURBQWlEO1lBQ2pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsK0JBQStCO1lBQy9CLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUM5QixDQUFDOytHQXpFVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiwwR0FyQ3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3QlQseUVBekJTLG1CQUFtQiwwVEFBRSxRQUFRLDhlQUFFLFFBQVE7OzRGQXNDdEMscUJBQXFCO2tCQXpDakMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxZQUN4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JUO3dEQW9CUSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uSW5wdXQsIElvbkxhYmVsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBOdW1iZXJGcm9tVG9NZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbnVtYmVyLWZyb20tdG8nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uSW5wdXQsIElvbkxhYmVsXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwibnVtYmVyLWZyb20tdG8tY29udGFpbmVyXCI+XG4gICAgICA8aW9uLWxhYmVsIHBvc2l0aW9uPVwic3RhY2tlZFwiPnt7IHByb3BzLmZyb21MYWJlbCB8fCAnSW5pY2lhbCcgfX08L2lvbi1sYWJlbD5cbiAgICAgIDxpb24taW5wdXRcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZyb21Db250cm9sXCJcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wcy5mcm9tUGxhY2Vob2xkZXIgfHwgcHJvcHMucGxhY2Vob2xkZXJcIlxuICAgICAgICBbbWluXT1cInByb3BzLm1pblwiXG4gICAgICAgIFttYXhdPVwicHJvcHMubWF4XCJcbiAgICAgICAgW3N0ZXBdPVwicHJvcHMuc3RlcFwiXG4gICAgICA+XG4gICAgICA8L2lvbi1pbnB1dD5cblxuICAgICAgPGlvbi1sYWJlbCBwb3NpdGlvbj1cInN0YWNrZWRcIj57eyBwcm9wcy50b0xhYmVsIHx8ICdGaW5hbCcgfX08L2lvbi1sYWJlbD5cbiAgICAgIDxpb24taW5wdXRcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInRvQ29udHJvbFwiXG4gICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcHMudG9QbGFjZWhvbGRlciB8fCBwcm9wcy5wbGFjZWhvbGRlclwiXG4gICAgICAgIFttaW5dPVwicHJvcHMubWluXCJcbiAgICAgICAgW21heF09XCJwcm9wcy5tYXhcIlxuICAgICAgICBbc3RlcF09XCJwcm9wcy5zdGVwXCJcbiAgICAgID5cbiAgICAgIDwvaW9uLWlucHV0PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9udW1iZXItZnJvbS10by5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLW51bWJlci1mcm9tLXRvXG4gKlxuICogQSBkdWFsIG51bWJlciBpbnB1dCBmb3Igc3BlY2lmeWluZyBhIHJhbmdlIChmcm9tL3RvIHZhbHVlcyksIGludGVncmF0ZWQgd2l0aCBBbmd1bGFyIGZvcm1zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLW51bWJlci1mcm9tLXRvIFtwcm9wc109XCJ7IGZyb21Db250cm9sOiBmcm9tQ3RybCwgdG9Db250cm9sOiB0b0N0cmwsIG1pbjogMCwgbWF4OiAxMDAgfVwiPjwvdmFsLW51bWJlci1mcm9tLXRvPlxuICpcbiAqIEBpbnB1dCBwcm9wczogTnVtYmVyRnJvbVRvTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgbnVtYmVyIHJhbmdlIGlucHV0LlxuICovXG5leHBvcnQgY2xhc3MgTnVtYmVyRnJvbVRvQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIElucHV0IGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAdHlwZSB7TnVtYmVyRnJvbVRvTWV0YWRhdGF9XG4gICAqIEBwcm9wZXJ0eSBmcm9tQ29udHJvbCAtIFRoZSBBbmd1bGFyIEZvcm1Db250cm9sIGZvciB0aGUgXCJmcm9tXCIgdmFsdWUuXG4gICAqIEBwcm9wZXJ0eSB0b0NvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtQ29udHJvbCBmb3IgdGhlIFwidG9cIiB2YWx1ZS5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBOdW1iZXJGcm9tVG9NZXRhZGF0YTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gQXBwbHkgZGVmYXVsdCB2YWx1ZXMgaWYgY29uZmlndXJlZFxuICAgIGlmICh0aGlzLnByb3BzPy53aXRoRGVmYXVsdCB8fCB0aGlzLnByb3BzPy52YWx1ZSkge1xuICAgICAgdGhpcy5hcHBseURlZmF1bHRWYWx1ZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RGVmYXVsdFZhbHVlcygpIHtcbiAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB0aGlzLnJlc29sdmVEZWZhdWx0VmFsdWUoKTtcbiAgICBpZiAoZGVmYXVsdFZhbHVlICE9PSBudWxsKSB7XG4gICAgICBpZiAodHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gJ29iamVjdCcgJiYgZGVmYXVsdFZhbHVlLmZyb20gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmZyb21Db250cm9sPy5zZXRWYWx1ZShkZWZhdWx0VmFsdWUuZnJvbSk7XG4gICAgICAgIHRoaXMudG9Db250cm9sPy5zZXRWYWx1ZShkZWZhdWx0VmFsdWUudG8pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2kgZXMgdW4gdmFsb3Igc2ltcGxlLCBhcGxpY2FybG8gYSBhbWJvcyBjb250cm9sZXNcbiAgICAgICAgdGhpcy5mcm9tQ29udHJvbD8uc2V0VmFsdWUoZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgdGhpcy50b0NvbnRyb2w/LnNldFZhbHVlKGRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmZyb21Db250cm9sPy5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgdGhpcy50b0NvbnRyb2w/Lm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB0aGlzLmZyb21Db250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB0aGlzLnRvQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZURlZmF1bHRWYWx1ZSgpOiBhbnkge1xuICAgIC8vIEV4cGxpY2l0IHZhbHVlIHRha2VzIHByZWNlZGVuY2VcbiAgICBpZiAodGhpcy5wcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMucHJvcHMudmFsdWUgIT09IG51bGwgJiYgdGhpcy5wcm9wcy52YWx1ZSAhPT0gJycpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlVmFsdWUodGhpcy5wcm9wcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gTm8gZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAgaWYgKCF0aGlzLnByb3BzLndpdGhEZWZhdWx0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBDdXN0b20gZGVmYXVsdCB2YWx1ZVxuICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy53aXRoRGVmYXVsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlVmFsdWUodGhpcy5wcm9wcy53aXRoRGVmYXVsdCk7XG4gICAgfVxuXG4gICAgLy8gQXV0byBkZWZhdWx0IHZhbHVlICh3aXRoRGVmYXVsdCA9PT0gdHJ1ZSlcbiAgICByZXR1cm4geyBmcm9tOiAwLCB0bzogMCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICAvLyBUcnkgdG8gcGFyc2UgYXMgSlNPTiBmaXJzdCAoZm9yIG9iamVjdCB2YWx1ZXMpXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBJZiBub3QgSlNPTiwgdHJlYXQgYXMgbnVtYmVyXG4gICAgICBjb25zdCBudW1WYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpIHx8IDA7XG4gICAgICByZXR1cm4geyBmcm9tOiBudW1WYWx1ZSwgdG86IG51bVZhbHVlIH07XG4gICAgfVxuICB9XG5cbiAgZ2V0IGZyb21Db250cm9sKCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5mcm9tQ29udHJvbDtcbiAgfVxuXG4gIGdldCB0b0NvbnRyb2woKTogRm9ybUNvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnRvQ29udHJvbDtcbiAgfVxufVxuIl19
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZyb20tdG8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9udW1iZXItZnJvbS10by9udW1iZXItZnJvbS10by5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFrQ3JEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFXaEMsd0NBQXdDO0lBQ3hDLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEO1FBWlEsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQVlwQixDQUFDO0lBRWhCLFFBQVE7UUFDTixxQ0FBcUM7UUFDckMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ2hELElBQUksWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzFCLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixxREFBcUQ7Z0JBQ3JELElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsa0NBQWtDO1FBQ2xDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMzRixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0MsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELDRDQUE0QztRQUM1QyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQztZQUNILGlEQUFpRDtZQUNqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLCtCQUErQjtZQUMvQixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDOUIsQ0FBQzsrR0FyRlUscUJBQXFCO21HQUFyQixxQkFBcUIsMEdBckN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JULHlFQXpCUyxtQkFBbUIsMFRBQUUsUUFBUSw4ZUFBRSxRQUFROzs0RkFzQ3RDLHFCQUFxQjtrQkF6Q2pDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsWUFDeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCVDt3REFvQlEsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uSW5wdXQsIElvbkxhYmVsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgTnVtYmVyRnJvbVRvTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW51bWJlci1mcm9tLXRvJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGUsIElvbklucHV0LCBJb25MYWJlbF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cIm51bWJlci1mcm9tLXRvLWNvbnRhaW5lclwiPlxuICAgICAgPGlvbi1sYWJlbCBwb3NpdGlvbj1cInN0YWNrZWRcIj57eyBnZXRGcm9tTGFiZWwoKSB9fTwvaW9uLWxhYmVsPlxuICAgICAgPGlvbi1pbnB1dFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZnJvbUNvbnRyb2xcIlxuICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInByb3BzLmZyb21QbGFjZWhvbGRlciB8fCBwcm9wcy5wbGFjZWhvbGRlclwiXG4gICAgICAgIFttaW5dPVwicHJvcHMubWluXCJcbiAgICAgICAgW21heF09XCJwcm9wcy5tYXhcIlxuICAgICAgICBbc3RlcF09XCJwcm9wcy5zdGVwXCJcbiAgICAgID5cbiAgICAgIDwvaW9uLWlucHV0PlxuXG4gICAgICA8aW9uLWxhYmVsIHBvc2l0aW9uPVwic3RhY2tlZFwiPnt7IGdldFRvTGFiZWwoKSB9fTwvaW9uLWxhYmVsPlxuICAgICAgPGlvbi1pbnB1dFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwidG9Db250cm9sXCJcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wcy50b1BsYWNlaG9sZGVyIHx8IHByb3BzLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgW21pbl09XCJwcm9wcy5taW5cIlxuICAgICAgICBbbWF4XT1cInByb3BzLm1heFwiXG4gICAgICAgIFtzdGVwXT1cInByb3BzLnN0ZXBcIlxuICAgICAgPlxuICAgICAgPC9pb24taW5wdXQ+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL251bWJlci1mcm9tLXRvLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtbnVtYmVyLWZyb20tdG9cbiAqXG4gKiBBIGR1YWwgbnVtYmVyIGlucHV0IGZvciBzcGVjaWZ5aW5nIGEgcmFuZ2UgKGZyb20vdG8gdmFsdWVzKSwgaW50ZWdyYXRlZCB3aXRoIEFuZ3VsYXIgZm9ybXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtbnVtYmVyLWZyb20tdG8gW3Byb3BzXT1cInsgZnJvbUNvbnRyb2w6IGZyb21DdHJsLCB0b0NvbnRyb2w6IHRvQ3RybCwgbWluOiAwLCBtYXg6IDEwMCB9XCI+PC92YWwtbnVtYmVyLWZyb20tdG8+XG4gKlxuICogQGlucHV0IHByb3BzOiBOdW1iZXJGcm9tVG9NZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBudW1iZXIgcmFuZ2UgaW5wdXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBOdW1iZXJGcm9tVG9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogSW5wdXQgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEB0eXBlIHtOdW1iZXJGcm9tVG9NZXRhZGF0YX1cbiAgICogQHByb3BlcnR5IGZyb21Db250cm9sIC0gVGhlIEFuZ3VsYXIgRm9ybUNvbnRyb2wgZm9yIHRoZSBcImZyb21cIiB2YWx1ZS5cbiAgICogQHByb3BlcnR5IHRvQ29udHJvbCAtIFRoZSBBbmd1bGFyIEZvcm1Db250cm9sIGZvciB0aGUgXCJ0b1wiIHZhbHVlLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IE51bWJlckZyb21Ub01ldGFkYXRhO1xuXG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgLyoqIEdldCBmcm9tIGxhYmVsIHdpdGggaTE4biBmYWxsYmFjayAqL1xuICBnZXRGcm9tTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5mcm9tTGFiZWwgfHwgdGhpcy5pMThuLnQoJ2Zyb20nKTtcbiAgfVxuXG4gIC8qKiBHZXQgdG8gbGFiZWwgd2l0aCBpMThuIGZhbGxiYWNrICovXG4gIGdldFRvTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy50b0xhYmVsIHx8IHRoaXMuaTE4bi50KCd0bycpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIEFwcGx5IGRlZmF1bHQgdmFsdWVzIGlmIGNvbmZpZ3VyZWRcbiAgICBpZiAodGhpcy5wcm9wcz8ud2l0aERlZmF1bHQgfHwgdGhpcy5wcm9wcz8udmFsdWUpIHtcbiAgICAgIHRoaXMuYXBwbHlEZWZhdWx0VmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseURlZmF1bHRWYWx1ZXMoKSB7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gdGhpcy5yZXNvbHZlRGVmYXVsdFZhbHVlKCk7XG4gICAgaWYgKGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgaWYgKHR5cGVvZiBkZWZhdWx0VmFsdWUgPT09ICdvYmplY3QnICYmIGRlZmF1bHRWYWx1ZS5mcm9tICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5mcm9tQ29udHJvbD8uc2V0VmFsdWUoZGVmYXVsdFZhbHVlLmZyb20pO1xuICAgICAgICB0aGlzLnRvQ29udHJvbD8uc2V0VmFsdWUoZGVmYXVsdFZhbHVlLnRvKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNpIGVzIHVuIHZhbG9yIHNpbXBsZSwgYXBsaWNhcmxvIGEgYW1ib3MgY29udHJvbGVzXG4gICAgICAgIHRoaXMuZnJvbUNvbnRyb2w/LnNldFZhbHVlKGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIHRoaXMudG9Db250cm9sPy5zZXRWYWx1ZShkZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5mcm9tQ29udHJvbD8ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIHRoaXMudG9Db250cm9sPy5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgdGhpcy5mcm9tQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgdGhpcy50b0NvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVEZWZhdWx0VmFsdWUoKTogYW55IHtcbiAgICAvLyBFeHBsaWNpdCB2YWx1ZSB0YWtlcyBwcmVjZWRlbmNlXG4gICAgaWYgKHRoaXMucHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnByb3BzLnZhbHVlICE9PSBudWxsICYmIHRoaXMucHJvcHMudmFsdWUgIT09ICcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZVZhbHVlKHRoaXMucHJvcHMudmFsdWUpO1xuICAgIH1cblxuICAgIC8vIE5vIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgIGlmICghdGhpcy5wcm9wcy53aXRoRGVmYXVsdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gQ3VzdG9tIGRlZmF1bHQgdmFsdWVcbiAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMud2l0aERlZmF1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZVZhbHVlKHRoaXMucHJvcHMud2l0aERlZmF1bHQpO1xuICAgIH1cblxuICAgIC8vIEF1dG8gZGVmYXVsdCB2YWx1ZSAod2l0aERlZmF1bHQgPT09IHRydWUpXG4gICAgcmV0dXJuIHsgZnJvbTogMCwgdG86IDAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VWYWx1ZSh2YWx1ZTogc3RyaW5nKTogYW55IHtcbiAgICB0cnkge1xuICAgICAgLy8gVHJ5IHRvIHBhcnNlIGFzIEpTT04gZmlyc3QgKGZvciBvYmplY3QgdmFsdWVzKVxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gSWYgbm90IEpTT04sIHRyZWF0IGFzIG51bWJlclxuICAgICAgY29uc3QgbnVtVmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKSB8fCAwO1xuICAgICAgcmV0dXJuIHsgZnJvbTogbnVtVmFsdWUsIHRvOiBudW1WYWx1ZSB9O1xuICAgIH1cbiAgfVxuXG4gIGdldCBmcm9tQ29udHJvbCgpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZnJvbUNvbnRyb2w7XG4gIH1cblxuICBnZXQgdG9Db250cm9sKCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy50b0NvbnRyb2w7XG4gIH1cbn1cbiJdfQ==
@@ -1,9 +1,10 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { Component, inject, Input, Output, EventEmitter } from '@angular/core';
3
3
  import { ReactiveFormsModule } from '@angular/forms';
4
4
  import { IonButton, IonIcon, IonInput } from '@ionic/angular/standalone';
5
5
  import { addIcons } from 'ionicons';
6
6
  import { addOutline, removeOutline } from 'ionicons/icons';
7
+ import { I18nService } from '../../../services/i18n';
7
8
  import { ComponentStates } from '../../types';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "@angular/forms";
@@ -64,8 +65,17 @@ export class NumberStepperComponent {
64
65
  constructor() {
65
66
  this.valueChange = new EventEmitter();
66
67
  this.states = ComponentStates;
68
+ this.i18n = inject(I18nService);
67
69
  this.valueSubscription = null;
68
70
  }
71
+ /** Get decrement button aria-label with i18n fallback */
72
+ getDecrementLabel() {
73
+ return this.props.decrementLabel || this.i18n.t('decrease');
74
+ }
75
+ /** Get increment button aria-label with i18n fallback */
76
+ getIncrementLabel() {
77
+ return this.props.incrementLabel || this.i18n.t('increase');
78
+ }
69
79
  ngOnInit() {
70
80
  // Ensure initial value is within bounds
71
81
  this.clampValue();
@@ -206,7 +216,7 @@ export class NumberStepperComponent {
206
216
  [shape]="props.buttonShape || 'round'"
207
217
  [disabled]="isAtMin || props.state === states.DISABLED"
208
218
  (click)="decrement()"
209
- [attr.aria-label]="props.decrementLabel || 'Disminuir'"
219
+ [attr.aria-label]="getDecrementLabel()"
210
220
  >
211
221
  <ion-icon slot="icon-only" name="remove-outline"></ion-icon>
212
222
  </ion-button>
@@ -239,7 +249,7 @@ export class NumberStepperComponent {
239
249
  [shape]="props.buttonShape || 'round'"
240
250
  [disabled]="isAtMax || props.state === states.DISABLED"
241
251
  (click)="increment()"
242
- [attr.aria-label]="props.incrementLabel || 'Aumentar'"
252
+ [attr.aria-label]="getIncrementLabel()"
243
253
  >
244
254
  <ion-icon slot="icon-only" name="add-outline"></ion-icon>
245
255
  </ion-button>
@@ -306,7 +316,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
306
316
  [shape]="props.buttonShape || 'round'"
307
317
  [disabled]="isAtMin || props.state === states.DISABLED"
308
318
  (click)="decrement()"
309
- [attr.aria-label]="props.decrementLabel || 'Disminuir'"
319
+ [attr.aria-label]="getDecrementLabel()"
310
320
  >
311
321
  <ion-icon slot="icon-only" name="remove-outline"></ion-icon>
312
322
  </ion-button>
@@ -339,7 +349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
339
349
  [shape]="props.buttonShape || 'round'"
340
350
  [disabled]="isAtMax || props.state === states.DISABLED"
341
351
  (click)="increment()"
342
- [attr.aria-label]="props.incrementLabel || 'Aumentar'"
352
+ [attr.aria-label]="getIncrementLabel()"
343
353
  >
344
354
  <ion-icon slot="icon-only" name="add-outline"></ion-icon>
345
355
  </ion-button>
@@ -366,4 +376,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
366
376
  }], valueChange: [{
367
377
  type: Output
368
378
  }] } });
369
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9udW1iZXItc3RlcHBlci9udW1iZXItc3RlcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFHOUMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7QUF5R3hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtREc7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBM0puQztRQThKWSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO1FBRXJFLFdBQU0sR0FBRyxlQUFlLENBQUM7UUFFakIsc0JBQWlCLEdBQXdCLElBQUksQ0FBQztLQW1IdkQ7SUFqSEMsUUFBUTtRQUNOLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEIsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0RSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLFNBQVM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksT0FBTztRQUNULElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssU0FBUztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQy9DLE9BQU8sSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDbEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYTtRQUNwQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3hDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkMsSUFBSSxZQUFZLEtBQUssYUFBYSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sVUFBVTtRQUNoQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDNUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxJQUFJLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsS0FBYTtRQUN6QixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDNUQsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM1RCxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBYSxFQUFFLGFBQXFCO1FBQ3JELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3BCLEtBQUs7WUFDTCxhQUFhO1lBQ2IsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDM0UsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTztTQUNwQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDNUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1FBQ3RDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWM7UUFDeEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLElBQUksR0FBRyxDQUFDO1FBQ2hELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFO1lBQy9DLHFCQUFxQixFQUFFLENBQUM7WUFDeEIscUJBQXFCLEVBQUUsQ0FBQztTQUN6QixDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLE9BQU8sbUJBQW1CLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUM7UUFDaEQsQ0FBQztRQUNELE9BQU8sMEJBQTBCLENBQUM7SUFDcEMsQ0FBQzsrR0F6SFUsc0JBQXNCO21HQUF0QixzQkFBc0IsbUpBdkp2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0dULDY3RkFqR1MsWUFBWSw4QkFBRSxtQkFBbUIsMFRBQUUsU0FBUyxvUEFBRSxPQUFPLDJKQUFFLFFBQVE7OzRGQXdKOUQsc0JBQXNCO2tCQTNKbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQ2hFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnR1Q7OEJBd0RRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uSW5wdXQgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBhZGRPdXRsaW5lLCByZW1vdmVPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgTnVtYmVyU3RlcHBlck1ldGFkYXRhLCBOdW1iZXJTdGVwcGVyQ2hhbmdlRXZlbnQgfSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyBhZGRPdXRsaW5lLCByZW1vdmVPdXRsaW5lIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbnVtYmVyLXN0ZXBwZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBJb25CdXR0b24sIElvbkljb24sIElvbklucHV0XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm51bWJlci1zdGVwcGVyLWNvbnRhaW5lclwiXG4gICAgICBbY2xhc3NdPVwicHJvcHMuY3NzQ2xhc3NcIlxuICAgICAgW2NsYXNzLnNpemUtc21hbGxdPVwicHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gICAgICBbY2xhc3Muc2l6ZS1tZWRpdW1dPVwicHJvcHMuc2l6ZSA9PT0gJ21lZGl1bScgfHwgIXByb3BzLnNpemVcIlxuICAgICAgW2NsYXNzLnNpemUtbGFyZ2VdPVwicHJvcHMuc2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gICAgICBbY2xhc3MubGF5b3V0LXZlcnRpY2FsXT1cInByb3BzLmxheW91dCA9PT0gJ3ZlcnRpY2FsJ1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICBbc3R5bGUuLS1zdGVwcGVyLWNvbG9yXT1cImdldENvbG9yKClcIlxuICAgID5cbiAgICAgIEBpZiAocHJvcHMubGFiZWwpIHtcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwic3RlcHBlci1sYWJlbFwiPnt7IGdldExhYmVsKCkgfX08L2xhYmVsPlxuICAgICAgfVxuXG4gICAgICA8IS0tIFByZXNldCBidXR0b25zIC0tPlxuICAgICAgQGlmIChwcm9wcy5zaG93UHJlc2V0cyAmJiBwcm9wcy5wcmVzZXRzPy5sZW5ndGgpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXNldC1idXR0b25zXCI+XG4gICAgICAgICAgQGZvciAocHJlc2V0IG9mIHByb3BzLnByZXNldHM7IHRyYWNrIHByZXNldC52YWx1ZSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwcmVzZXQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50VmFsdWUgPT09IHByZXNldC52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wb3B1bGFyXT1cInByZXNldC5wb3B1bGFyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFZhbHVlKHByZXNldC52YWx1ZSlcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHByZXNldC5sYWJlbCB8fCBwcmVzZXQudmFsdWUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gU3RlcHBlciBjb250cm9scyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWNvbnRyb2xzXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzdGVwcGVyLWJ1dHRvbiBkZWNyZW1lbnRcIlxuICAgICAgICAgIFtjb2xvcl09XCJwcm9wcy5jb2xvciB8fCAncHJpbWFyeSdcIlxuICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICBbc2hhcGVdPVwicHJvcHMuYnV0dG9uU2hhcGUgfHwgJ3JvdW5kJ1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzQXRNaW4gfHwgcHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICAgICAgKGNsaWNrKT1cImRlY3JlbWVudCgpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb3BzLmRlY3JlbWVudExhYmVsIHx8ICdEaXNtaW51aXInXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cInJlbW92ZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZS1kaXNwbGF5XCI+XG4gICAgICAgICAgQGlmIChwcm9wcy5zaG93SW5wdXQgIT09IGZhbHNlICYmIHByb3BzLmVkaXRhYmxlSW5wdXQpIHtcbiAgICAgICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJwcm9wcy5jb250cm9sXCJcbiAgICAgICAgICAgICAgW21pbl09XCJwcm9wcy5taW5cIlxuICAgICAgICAgICAgICBbbWF4XT1cInByb3BzLm1heFwiXG4gICAgICAgICAgICAgIFtzdGVwXT1cInByb3BzLnN0ZXAgfHwgMVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9wcy5zdGF0ZSA9PT0gc3RhdGVzLkRJU0FCTEVEXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZS1pbnB1dFwiXG4gICAgICAgICAgICAgIChpb25CbHVyKT1cIm9uSW5wdXRCbHVyKClcIlxuICAgICAgICAgICAgPjwvaW9uLWlucHV0PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZS10ZXh0XCI+e3sgY3VycmVudFZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAocHJvcHMudW5pdExhYmVsKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXQtbGFiZWxcIj57eyBnZXRVbml0TGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzdGVwcGVyLWJ1dHRvbiBpbmNyZW1lbnRcIlxuICAgICAgICAgIFtjb2xvcl09XCJwcm9wcy5jb2xvciB8fCAncHJpbWFyeSdcIlxuICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICBbc2hhcGVdPVwicHJvcHMuYnV0dG9uU2hhcGUgfHwgJ3JvdW5kJ1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzQXRNYXggfHwgcHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICAgICAgKGNsaWNrKT1cImluY3JlbWVudCgpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb3BzLmluY3JlbWVudExhYmVsIHx8ICdBdW1lbnRhcidcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiYWRkLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQcmljZSBkaXNwbGF5IC0tPlxuICAgICAgQGlmIChwcm9wcy5zaG93VG90YWwgJiYgcHJvcHMudW5pdFByaWNlKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1kaXNwbGF5XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmljZS1jYWxjdWxhdGlvblwiPlxuICAgICAgICAgICAge3sgY3VycmVudFZhbHVlIH19IMOXIHt7IGZvcm1hdFByaWNlKHByb3BzLnVuaXRQcmljZSkgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmljZS1lcXVhbHNcIj49PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJpY2UtdG90YWxcIj57eyBmb3JtYXRQcmljZSh0b3RhbFByaWNlKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIEBpZiAocHJvcHMuaGludCkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItaGludFwiPnt7IHByb3BzLmhpbnQgfX08L3NwYW4+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL251bWJlci1zdGVwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtbnVtYmVyLXN0ZXBwZXJcbiAqXG4gKiBBIG51bWJlciBpbnB1dCB3aXRoIGluY3JlbWVudC9kZWNyZW1lbnQgYnV0dG9ucywgaWRlYWwgZm9yIHF1YW50aXR5IHNlbGVjdGlvbi5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgaHRtbFxuICogPHZhbC1udW1iZXItc3RlcHBlclxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbnRyb2w6IHF1YW50aXR5Q29udHJvbCxcbiAqICAgICBtaW46IDEsXG4gKiAgICAgbWF4OiAxMDBcbiAqICAgfVwiXG4gKiA+PC92YWwtbnVtYmVyLXN0ZXBwZXI+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHByaWNpbmdcbiAqIGBgYGh0bWxcbiAqIDx2YWwtbnVtYmVyLXN0ZXBwZXJcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb250cm9sOiB0aWNrZXRDb250cm9sLFxuICogICAgIG1pbjogMSxcbiAqICAgICBtYXg6IDUwLFxuICogICAgIHVuaXRQcmljZTogMTAsXG4gKiAgICAgY3VycmVuY3k6ICdNWE4nLFxuICogICAgIGN1cnJlbmN5U3ltYm9sOiAnJCcsXG4gKiAgICAgc2hvd1RvdGFsOiB0cnVlLFxuICogICAgIHVuaXRMYWJlbDogJ2JvbGV0b3MnLFxuICogICAgIHVuaXRMYWJlbFNpbmd1bGFyOiAnYm9sZXRvJ1xuICogICB9XCJcbiAqICAgKHZhbHVlQ2hhbmdlKT1cIm9uUXVhbnRpdHlDaGFuZ2UoJGV2ZW50KVwiXG4gKiA+PC92YWwtbnVtYmVyLXN0ZXBwZXI+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHByZXNldHNcbiAqIGBgYGh0bWxcbiAqIDx2YWwtbnVtYmVyLXN0ZXBwZXJcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb250cm9sOiB0aWNrZXRDb250cm9sLFxuICogICAgIG1pbjogMSxcbiAqICAgICBtYXg6IDEwMCxcbiAqICAgICBzaG93UHJlc2V0czogdHJ1ZSxcbiAqICAgICBwcmVzZXRzOiBbXG4gKiAgICAgICB7IHZhbHVlOiAxIH0sXG4gKiAgICAgICB7IHZhbHVlOiA1LCBwb3B1bGFyOiB0cnVlIH0sXG4gKiAgICAgICB7IHZhbHVlOiAxMCB9LFxuICogICAgICAgeyB2YWx1ZTogMjUgfVxuICogICAgIF1cbiAqICAgfVwiXG4gKiA+PC92YWwtbnVtYmVyLXN0ZXBwZXI+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIE51bWJlclN0ZXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHByb3BzOiBOdW1iZXJTdGVwcGVyTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxOdW1iZXJTdGVwcGVyQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgc3RhdGVzID0gQ29tcG9uZW50U3RhdGVzO1xuXG4gIHByaXZhdGUgdmFsdWVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEVuc3VyZSBpbml0aWFsIHZhbHVlIGlzIHdpdGhpbiBib3VuZHNcbiAgICB0aGlzLmNsYW1wVmFsdWUoKTtcblxuICAgIC8vIFN1YnNjcmliZSB0byB2YWx1ZSBjaGFuZ2VzXG4gICAgdGhpcy52YWx1ZVN1YnNjcmlwdGlvbiA9IHRoaXMucHJvcHMuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xhbXBWYWx1ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50VmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jb250cm9sLnZhbHVlID8/IHRoaXMucHJvcHMubWluID8/IDA7XG4gIH1cblxuICBnZXQgaXNBdE1pbigpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5wcm9wcy5taW4gPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRWYWx1ZSA8PSB0aGlzLnByb3BzLm1pbjtcbiAgfVxuXG4gIGdldCBpc0F0TWF4KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnByb3BzLm1heCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFZhbHVlID49IHRoaXMucHJvcHMubWF4O1xuICB9XG5cbiAgZ2V0IHRvdGFsUHJpY2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VmFsdWUgKiAodGhpcy5wcm9wcy51bml0UHJpY2UgfHwgMCk7XG4gIH1cblxuICBpbmNyZW1lbnQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcCA9IHRoaXMucHJvcHMuc3RlcCB8fCAxO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5jdXJyZW50VmFsdWUgKyBzdGVwO1xuICAgIHRoaXMuc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9XG5cbiAgZGVjcmVtZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXAgPSB0aGlzLnByb3BzLnN0ZXAgfHwgMTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuY3VycmVudFZhbHVlIC0gc3RlcDtcbiAgICB0aGlzLnNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gdGhpcy5jdXJyZW50VmFsdWU7XG4gICAgY29uc3QgY2xhbXBlZFZhbHVlID0gdGhpcy5jbGFtcCh2YWx1ZSk7XG5cbiAgICBpZiAoY2xhbXBlZFZhbHVlICE9PSBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLnByb3BzLmNvbnRyb2wuc2V0VmFsdWUoY2xhbXBlZFZhbHVlKTtcbiAgICAgIHRoaXMuZW1pdENoYW5nZShjbGFtcGVkVmFsdWUsIHByZXZpb3VzVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXRCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuY2xhbXBWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGFtcFZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRWYWwgPSB0aGlzLnByb3BzLmNvbnRyb2wudmFsdWU7XG4gICAgY29uc3QgY2xhbXBlZFZhbCA9IHRoaXMuY2xhbXAoY3VycmVudFZhbCk7XG4gICAgaWYgKGN1cnJlbnRWYWwgIT09IGNsYW1wZWRWYWwpIHtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC5zZXRWYWx1ZShjbGFtcGVkVmFsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsYW1wKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCByZXN1bHQgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5wcm9wcy5taW4gIT09IHVuZGVmaW5lZCAmJiByZXN1bHQgPCB0aGlzLnByb3BzLm1pbikge1xuICAgICAgcmVzdWx0ID0gdGhpcy5wcm9wcy5taW47XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLm1heCAhPT0gdW5kZWZpbmVkICYmIHJlc3VsdCA+IHRoaXMucHJvcHMubWF4KSB7XG4gICAgICByZXN1bHQgPSB0aGlzLnByb3BzLm1heDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdENoYW5nZSh2YWx1ZTogbnVtYmVyLCBwcmV2aW91c1ZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoe1xuICAgICAgdmFsdWUsXG4gICAgICBwcmV2aW91c1ZhbHVlLFxuICAgICAgdG90YWxQcmljZTogdGhpcy5wcm9wcy51bml0UHJpY2UgPyB2YWx1ZSAqIHRoaXMucHJvcHMudW5pdFByaWNlIDogdW5kZWZpbmVkLFxuICAgICAgYXRNaW46IHRoaXMuaXNBdE1pbixcbiAgICAgIGF0TWF4OiB0aGlzLmlzQXRNYXgsXG4gICAgfSk7XG4gIH1cblxuICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmxhYmVsIHx8ICcnO1xuICB9XG5cbiAgZ2V0VW5pdExhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY3VycmVudFZhbHVlID09PSAxICYmIHRoaXMucHJvcHMudW5pdExhYmVsU2luZ3VsYXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLnVuaXRMYWJlbFNpbmd1bGFyO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9wcy51bml0TGFiZWwgfHwgJyc7XG4gIH1cblxuICBmb3JtYXRQcmljZShhbW91bnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc3ltYm9sID0gdGhpcy5wcm9wcy5jdXJyZW5jeVN5bWJvbCB8fCAnJCc7XG4gICAgY29uc3QgZm9ybWF0dGVkID0gYW1vdW50LnRvTG9jYWxlU3RyaW5nKCdlcy1NWCcsIHtcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICB9KTtcbiAgICByZXR1cm4gYCR7c3ltYm9sfSR7Zm9ybWF0dGVkfWA7XG4gIH1cblxuICBnZXRDb2xvcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLmNvbG9yKSB7XG4gICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke3RoaXMucHJvcHMuY29sb3J9KWA7XG4gICAgfVxuICAgIHJldHVybiAndmFyKC0taW9uLWNvbG9yLXByaW1hcnkpJztcbiAgfVxufVxuIl19
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9udW1iZXItc3RlcHBlci9udW1iZXItc3RlcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQUc5QyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztBQXlHeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1ERztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUEzSm5DO1FBOEpZLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFFckUsV0FBTSxHQUFHLGVBQWUsQ0FBQztRQUVqQixTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLHNCQUFpQixHQUF3QixJQUFJLENBQUM7S0E2SHZEO0lBM0hDLHlE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RSxPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQ2hFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnR1Q7OEJBd0RRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25JY29uLCBJb25JbnB1dCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGFkZE91dGxpbmUsIHJlbW92ZU91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgTnVtYmVyU3RlcHBlck1ldGFkYXRhLCBOdW1iZXJTdGVwcGVyQ2hhbmdlRXZlbnQgfSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyBhZGRPdXRsaW5lLCByZW1vdmVPdXRsaW5lIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbnVtYmVyLXN0ZXBwZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBJb25CdXR0b24sIElvbkljb24sIElvbklucHV0XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm51bWJlci1zdGVwcGVyLWNvbnRhaW5lclwiXG4gICAgICBbY2xhc3NdPVwicHJvcHMuY3NzQ2xhc3NcIlxuICAgICAgW2NsYXNzLnNpemUtc21hbGxdPVwicHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gICAgICBbY2xhc3Muc2l6ZS1tZWRpdW1dPVwicHJvcHMuc2l6ZSA9PT0gJ21lZGl1bScgfHwgIXByb3BzLnNpemVcIlxuICAgICAgW2NsYXNzLnNpemUtbGFyZ2VdPVwicHJvcHMuc2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gICAgICBbY2xhc3MubGF5b3V0LXZlcnRpY2FsXT1cInByb3BzLmxheW91dCA9PT0gJ3ZlcnRpY2FsJ1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICBbc3R5bGUuLS1zdGVwcGVyLWNvbG9yXT1cImdldENvbG9yKClcIlxuICAgID5cbiAgICAgIEBpZiAocHJvcHMubGFiZWwpIHtcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwic3RlcHBlci1sYWJlbFwiPnt7IGdldExhYmVsKCkgfX08L2xhYmVsPlxuICAgICAgfVxuXG4gICAgICA8IS0tIFByZXNldCBidXR0b25zIC0tPlxuICAgICAgQGlmIChwcm9wcy5zaG93UHJlc2V0cyAmJiBwcm9wcy5wcmVzZXRzPy5sZW5ndGgpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXNldC1idXR0b25zXCI+XG4gICAgICAgICAgQGZvciAocHJlc2V0IG9mIHByb3BzLnByZXNldHM7IHRyYWNrIHByZXNldC52YWx1ZSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwcmVzZXQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50VmFsdWUgPT09IHByZXNldC52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wb3B1bGFyXT1cInByZXNldC5wb3B1bGFyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFZhbHVlKHByZXNldC52YWx1ZSlcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHByZXNldC5sYWJlbCB8fCBwcmVzZXQudmFsdWUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gU3RlcHBlciBjb250cm9scyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWNvbnRyb2xzXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzdGVwcGVyLWJ1dHRvbiBkZWNyZW1lbnRcIlxuICAgICAgICAgIFtjb2xvcl09XCJwcm9wcy5jb2xvciB8fCAncHJpbWFyeSdcIlxuICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICBbc2hhcGVdPVwicHJvcHMuYnV0dG9uU2hhcGUgfHwgJ3JvdW5kJ1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzQXRNaW4gfHwgcHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICAgICAgKGNsaWNrKT1cImRlY3JlbWVudCgpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldERlY3JlbWVudExhYmVsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwicmVtb3ZlLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlLWRpc3BsYXlcIj5cbiAgICAgICAgICBAaWYgKHByb3BzLnNob3dJbnB1dCAhPT0gZmFsc2UgJiYgcHJvcHMuZWRpdGFibGVJbnB1dCkge1xuICAgICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInByb3BzLmNvbnRyb2xcIlxuICAgICAgICAgICAgICBbbWluXT1cInByb3BzLm1pblwiXG4gICAgICAgICAgICAgIFttYXhdPVwicHJvcHMubWF4XCJcbiAgICAgICAgICAgICAgW3N0ZXBdPVwicHJvcHMuc3RlcCB8fCAxXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByb3BzLnN0YXRlID09PSBzdGF0ZXMuRElTQUJMRURcIlxuICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlLWlucHV0XCJcbiAgICAgICAgICAgICAgKGlvbkJsdXIpPVwib25JbnB1dEJsdXIoKVwiXG4gICAgICAgICAgICA+PC9pb24taW5wdXQ+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlLXRleHRcIj57eyBjdXJyZW50VmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChwcm9wcy51bml0TGFiZWwpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdC1sYWJlbFwiPnt7IGdldFVuaXRMYWJlbCgpIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBjbGFzcz1cInN0ZXBwZXItYnV0dG9uIGluY3JlbWVudFwiXG4gICAgICAgICAgW2NvbG9yXT1cInByb3BzLmNvbG9yIHx8ICdwcmltYXJ5J1wiXG4gICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgIFtzaGFwZV09XCJwcm9wcy5idXR0b25TaGFwZSB8fCAncm91bmQnXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNBdE1heCB8fCBwcm9wcy5zdGF0ZSA9PT0gc3RhdGVzLkRJU0FCTEVEXCJcbiAgICAgICAgICAoY2xpY2spPVwiaW5jcmVtZW50KClcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0SW5jcmVtZW50TGFiZWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJhZGQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFByaWNlIGRpc3BsYXkgLS0+XG4gICAgICBAaWYgKHByb3BzLnNob3dUb3RhbCAmJiBwcm9wcy51bml0UHJpY2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLWRpc3BsYXlcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInByaWNlLWNhbGN1bGF0aW9uXCI+XG4gICAgICAgICAgICB7eyBjdXJyZW50VmFsdWUgfX0gw5cge3sgZm9ybWF0UHJpY2UocHJvcHMudW5pdFByaWNlKSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInByaWNlLWVxdWFsc1wiPj08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmljZS10b3RhbFwiPnt7IGZvcm1hdFByaWNlKHRvdGFsUHJpY2UpIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmIChwcm9wcy5oaW50KSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlci1oaW50XCI+e3sgcHJvcHMuaGludCB9fTwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vbnVtYmVyLXN0ZXBwZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1udW1iZXItc3RlcHBlclxuICpcbiAqIEEgbnVtYmVyIGlucHV0IHdpdGggaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLCBpZGVhbCBmb3IgcXVhbnRpdHkgc2VsZWN0aW9uLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGBodG1sXG4gKiA8dmFsLW51bWJlci1zdGVwcGVyXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgY29udHJvbDogcXVhbnRpdHlDb250cm9sLFxuICogICAgIG1pbjogMSxcbiAqICAgICBtYXg6IDEwMFxuICogICB9XCJcbiAqID48L3ZhbC1udW1iZXItc3RlcHBlcj5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFdpdGggcHJpY2luZ1xuICogYGBgaHRtbFxuICogPHZhbC1udW1iZXItc3RlcHBlclxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbnRyb2w6IHRpY2tldENvbnRyb2wsXG4gKiAgICAgbWluOiAxLFxuICogICAgIG1heDogNTAsXG4gKiAgICAgdW5pdFByaWNlOiAxMCxcbiAqICAgICBjdXJyZW5jeTogJ01YTicsXG4gKiAgICAgY3VycmVuY3lTeW1ib2w6ICckJyxcbiAqICAgICBzaG93VG90YWw6IHRydWUsXG4gKiAgICAgdW5pdExhYmVsOiAnYm9sZXRvcycsXG4gKiAgICAgdW5pdExhYmVsU2luZ3VsYXI6ICdib2xldG8nXG4gKiAgIH1cIlxuICogICAodmFsdWVDaGFuZ2UpPVwib25RdWFudGl0eUNoYW5nZSgkZXZlbnQpXCJcbiAqID48L3ZhbC1udW1iZXItc3RlcHBlcj5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFdpdGggcHJlc2V0c1xuICogYGBgaHRtbFxuICogPHZhbC1udW1iZXItc3RlcHBlclxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbnRyb2w6IHRpY2tldENvbnRyb2wsXG4gKiAgICAgbWluOiAxLFxuICogICAgIG1heDogMTAwLFxuICogICAgIHNob3dQcmVzZXRzOiB0cnVlLFxuICogICAgIHByZXNldHM6IFtcbiAqICAgICAgIHsgdmFsdWU6IDEgfSxcbiAqICAgICAgIHsgdmFsdWU6IDUsIHBvcHVsYXI6IHRydWUgfSxcbiAqICAgICAgIHsgdmFsdWU6IDEwIH0sXG4gKiAgICAgICB7IHZhbHVlOiAyNSB9XG4gKiAgICAgXVxuICogICB9XCJcbiAqID48L3ZhbC1udW1iZXItc3RlcHBlcj5cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgTnVtYmVyU3RlcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHJvcHM6IE51bWJlclN0ZXBwZXJNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE51bWJlclN0ZXBwZXJDaGFuZ2VFdmVudD4oKTtcblxuICBzdGF0ZXMgPSBDb21wb25lbnRTdGF0ZXM7XG5cbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB2YWx1ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIEdldCBkZWNyZW1lbnQgYnV0dG9uIGFyaWEtbGFiZWwgd2l0aCBpMThuIGZhbGxiYWNrICovXG4gIGdldERlY3JlbWVudExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZGVjcmVtZW50TGFiZWwgfHwgdGhpcy5pMThuLnQoJ2RlY3JlYXNlJyk7XG4gIH1cblxuICAvKiogR2V0IGluY3JlbWVudCBidXR0b24gYXJpYS1sYWJlbCB3aXRoIGkxOG4gZmFsbGJhY2sgKi9cbiAgZ2V0SW5jcmVtZW50TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5pbmNyZW1lbnRMYWJlbCB8fCB0aGlzLmkxOG4udCgnaW5jcmVhc2UnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEVuc3VyZSBpbml0aWFsIHZhbHVlIGlzIHdpdGhpbiBib3VuZHNcbiAgICB0aGlzLmNsYW1wVmFsdWUoKTtcblxuICAgIC8vIFN1YnNjcmliZSB0byB2YWx1ZSBjaGFuZ2VzXG4gICAgdGhpcy52YWx1ZVN1YnNjcmlwdGlvbiA9IHRoaXMucHJvcHMuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xhbXBWYWx1ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50VmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jb250cm9sLnZhbHVlID8/IHRoaXMucHJvcHMubWluID8/IDA7XG4gIH1cblxuICBnZXQgaXNBdE1pbigpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5wcm9wcy5taW4gPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRWYWx1ZSA8PSB0aGlzLnByb3BzLm1pbjtcbiAgfVxuXG4gIGdldCBpc0F0TWF4KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnByb3BzLm1heCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFZhbHVlID49IHRoaXMucHJvcHMubWF4O1xuICB9XG5cbiAgZ2V0IHRvdGFsUHJpY2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VmFsdWUgKiAodGhpcy5wcm9wcy51bml0UHJpY2UgfHwgMCk7XG4gIH1cblxuICBpbmNyZW1lbnQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcCA9IHRoaXMucHJvcHMuc3RlcCB8fCAxO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5jdXJyZW50VmFsdWUgKyBzdGVwO1xuICAgIHRoaXMuc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9XG5cbiAgZGVjcmVtZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXAgPSB0aGlzLnByb3BzLnN0ZXAgfHwgMTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuY3VycmVudFZhbHVlIC0gc3RlcDtcbiAgICB0aGlzLnNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gdGhpcy5jdXJyZW50VmFsdWU7XG4gICAgY29uc3QgY2xhbXBlZFZhbHVlID0gdGhpcy5jbGFtcCh2YWx1ZSk7XG5cbiAgICBpZiAoY2xhbXBlZFZhbHVlICE9PSBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLnByb3BzLmNvbnRyb2wuc2V0VmFsdWUoY2xhbXBlZFZhbHVlKTtcbiAgICAgIHRoaXMuZW1pdENoYW5nZShjbGFtcGVkVmFsdWUsIHByZXZpb3VzVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXRCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuY2xhbXBWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGFtcFZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRWYWwgPSB0aGlzLnByb3BzLmNvbnRyb2wudmFsdWU7XG4gICAgY29uc3QgY2xhbXBlZFZhbCA9IHRoaXMuY2xhbXAoY3VycmVudFZhbCk7XG4gICAgaWYgKGN1cnJlbnRWYWwgIT09IGNsYW1wZWRWYWwpIHtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC5zZXRWYWx1ZShjbGFtcGVkVmFsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsYW1wKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCByZXN1bHQgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5wcm9wcy5taW4gIT09IHVuZGVmaW5lZCAmJiByZXN1bHQgPCB0aGlzLnByb3BzLm1pbikge1xuICAgICAgcmVzdWx0ID0gdGhpcy5wcm9wcy5taW47XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLm1heCAhPT0gdW5kZWZpbmVkICYmIHJlc3VsdCA+IHRoaXMucHJvcHMubWF4KSB7XG4gICAgICByZXN1bHQgPSB0aGlzLnByb3BzLm1heDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdENoYW5nZSh2YWx1ZTogbnVtYmVyLCBwcmV2aW91c1ZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoe1xuICAgICAgdmFsdWUsXG4gICAgICBwcmV2aW91c1ZhbHVlLFxuICAgICAgdG90YWxQcmljZTogdGhpcy5wcm9wcy51bml0UHJpY2UgPyB2YWx1ZSAqIHRoaXMucHJvcHMudW5pdFByaWNlIDogdW5kZWZpbmVkLFxuICAgICAgYXRNaW46IHRoaXMuaXNBdE1pbixcbiAgICAgIGF0TWF4OiB0aGlzLmlzQXRNYXgsXG4gICAgfSk7XG4gIH1cblxuICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmxhYmVsIHx8ICcnO1xuICB9XG5cbiAgZ2V0VW5pdExhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY3VycmVudFZhbHVlID09PSAxICYmIHRoaXMucHJvcHMudW5pdExhYmVsU2luZ3VsYXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLnVuaXRMYWJlbFNpbmd1bGFyO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9wcy51bml0TGFiZWwgfHwgJyc7XG4gIH1cblxuICBmb3JtYXRQcmljZShhbW91bnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc3ltYm9sID0gdGhpcy5wcm9wcy5jdXJyZW5jeVN5bWJvbCB8fCAnJCc7XG4gICAgY29uc3QgZm9ybWF0dGVkID0gYW1vdW50LnRvTG9jYWxlU3RyaW5nKCdlcy1NWCcsIHtcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICB9KTtcbiAgICByZXR1cm4gYCR7c3ltYm9sfSR7Zm9ybWF0dGVkfWA7XG4gIH1cblxuICBnZXRDb2xvcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLmNvbG9yKSB7XG4gICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke3RoaXMucHJvcHMuY29sb3J9KWA7XG4gICAgfVxuICAgIHJldHVybiAndmFyKC0taW9uLWNvbG9yLXByaW1hcnkpJztcbiAgfVxufVxuIl19
@@ -41,8 +41,9 @@ export class DocsTocComponent {
41
41
  // Reactive state
42
42
  this.activeId = signal('');
43
43
  this.flatItems = signal([]);
44
- this.observer = null;
45
44
  this.headingElements = [];
45
+ this.scrollHandler = null;
46
+ this.rafId = null;
46
47
  }
47
48
  ngOnInit() {
48
49
  this.updateFlatItems();
@@ -132,34 +133,57 @@ export class DocsTocComponent {
132
133
  .filter((el) => el !== null);
133
134
  if (this.headingElements.length === 0)
134
135
  return;
135
- const offsetTop = this.props.offsetTop ?? 100;
136
- // Use IntersectionObserver for scroll spy
136
+ // Set initial active item
137
+ this.updateActiveHeading();
138
+ // Use scroll event with requestAnimationFrame for performance
137
139
  this.ngZone.runOutsideAngular(() => {
138
- this.observer = new IntersectionObserver(entries => {
139
- // Find the first visible heading
140
- const visibleEntries = entries
141
- .filter(entry => entry.isIntersecting)
142
- .sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);
143
- if (visibleEntries.length > 0) {
144
- const activeEntry = visibleEntries[0];
145
- this.ngZone.run(() => {
146
- this.activeId.set(activeEntry.target.id);
147
- this.sectionChange.emit(activeEntry.target.id);
148
- });
140
+ this.scrollHandler = () => {
141
+ if (this.rafId) {
142
+ cancelAnimationFrame(this.rafId);
149
143
  }
150
- }, {
151
- rootMargin: `-${offsetTop}px 0px -70% 0px`,
152
- threshold: 0,
153
- });
154
- this.headingElements.forEach(el => {
155
- this.observer?.observe(el);
156
- });
144
+ this.rafId = requestAnimationFrame(() => {
145
+ this.updateActiveHeading();
146
+ });
147
+ };
148
+ window.addEventListener('scroll', this.scrollHandler, { passive: true });
157
149
  });
158
150
  }
151
+ updateActiveHeading() {
152
+ const offsetTop = this.props.offsetTop ?? 100;
153
+ const scrollY = window.scrollY;
154
+ // Find the heading that is currently at or above the offset point
155
+ let activeHeading = null;
156
+ for (const heading of this.headingElements) {
157
+ const rect = heading.getBoundingClientRect();
158
+ const headingTop = rect.top + scrollY;
159
+ // If heading is at or above the trigger point (scrollY + offset)
160
+ if (headingTop <= scrollY + offsetTop + 10) {
161
+ activeHeading = heading;
162
+ }
163
+ else {
164
+ // Headings are in order, so we can stop once we find one below
165
+ break;
166
+ }
167
+ }
168
+ // If no heading is above the trigger point, use the first one
169
+ if (!activeHeading && this.headingElements.length > 0) {
170
+ activeHeading = this.headingElements[0];
171
+ }
172
+ if (activeHeading && activeHeading.id !== this.activeId()) {
173
+ this.ngZone.run(() => {
174
+ this.activeId.set(activeHeading.id);
175
+ this.sectionChange.emit(activeHeading.id);
176
+ });
177
+ }
178
+ }
159
179
  destroyScrollSpy() {
160
- if (this.observer) {
161
- this.observer.disconnect();
162
- this.observer = null;
180
+ if (this.scrollHandler) {
181
+ window.removeEventListener('scroll', this.scrollHandler);
182
+ this.scrollHandler = null;
183
+ }
184
+ if (this.rafId) {
185
+ cancelAnimationFrame(this.rafId);
186
+ this.rafId = null;
163
187
  }
164
188
  this.headingElements = [];
165
189
  }
@@ -252,4 +276,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
252
276
  }], sectionChange: [{
253
277
  type: Output
254
278
  }] } });
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy10b2MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9kb2NzLXRvYy9kb2NzLXRvYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBT1osTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDOztBQUd2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRztBQXVDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBWTNCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWHpCLFVBQUssR0FBb0IsRUFBRSxDQUFDO1FBRTNCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVyRCxpQkFBaUI7UUFDUCxhQUFRLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLGNBQVMsR0FBRyxNQUFNLENBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBRXhDLGFBQVEsR0FBZ0MsSUFBSSxDQUFDO1FBQzdDLG9CQUFlLEdBQWtCLEVBQUUsQ0FBQztJQUVQLENBQUM7SUFFdEMsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsZUFBZTtRQUNiLCtCQUErQjtRQUMvQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxX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bic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgTmdab25lLFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvY3NUb2NNZXRhZGF0YSwgRG9jc1RvY0l0ZW0gfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtZG9jcy10b2NcbiAqXG4gKiBBIHRhYmxlIG9mIGNvbnRlbnRzIGNvbXBvbmVudCB3aXRoIHNjcm9sbCBzcHkgZnVuY3Rpb25hbGl0eS5cbiAqIEF1dG9tYXRpY2FsbHkgaGlnaGxpZ2h0cyB0aGUgY3VycmVudCBzZWN0aW9uIGJhc2VkIG9uIHNjcm9sbCBwb3NpdGlvbi5cbiAqXG4gKiBAZXhhbXBsZSBNYW51YWwgaXRlbXNcbiAqIGBgYGh0bWxcbiAqIDx2YWwtZG9jcy10b2NcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0aXRsZTogJ09uIHRoaXMgcGFnZScsXG4gKiAgICAgaXRlbXM6IFtcbiAqICAgICAgIHsgaWQ6ICdvdmVydmlldycsIGxhYmVsOiAnT3ZlcnZpZXcnLCBsZXZlbDogMSB9LFxuICogICAgICAgeyBpZDogJ2luc3RhbGxhdGlvbicsIGxhYmVsOiAnSW5zdGFsbGF0aW9uJywgbGV2ZWw6IDEgfSxcbiAqICAgICAgIHsgaWQ6ICducG0nLCBsYWJlbDogJ1VzaW5nIG5wbScsIGxldmVsOiAyIH0sXG4gKiAgICAgICB7IGlkOiAneWFybicsIGxhYmVsOiAnVXNpbmcgeWFybicsIGxldmVsOiAyIH1cbiAqICAgICBdXG4gKiAgIH1cIlxuICogPjwvdmFsLWRvY3MtdG9jPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQXV0by1nZW5lcmF0ZWQgZnJvbSBoZWFkaW5nc1xuICogYGBgaHRtbFxuICogPHZhbC1kb2NzLXRvY1xuICogICBbcHJvcHNdPVwie1xuICogICAgIGF1dG9HZW5lcmF0ZTogdHJ1ZSxcbiAqICAgICBjb250YWluZXJTZWxlY3RvcjogJy5hcnRpY2xlLWNvbnRlbnQnLFxuICogICAgIGhlYWRpbmdMZXZlbHM6IFsyLCAzXVxuICogICB9XCJcbiAqID48L3ZhbC1kb2NzLXRvYz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZG9jcy10b2MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmF2XG4gICAgICBjbGFzcz1cImRvY3MtdG9jXCJcbiAgICAgIFtjbGFzc109XCJwcm9wcy5jc3NDbGFzc1wiXG4gICAgICByb2xlPVwibmF2aWdhdGlvblwiXG4gICAgICBhcmlhLWxhYmVsPVwiVGFibGUgb2YgY29udGVudHNcIlxuICAgID5cbiAgICAgIEBpZiAoIXByb3BzLmhpZGVUaXRsZSkge1xuICAgICAgICA8aDQgY2xhc3M9XCJkb2NzLXRvY19fdGl0bGVcIj57eyBwcm9wcy50aXRsZSB8fCAnQ29udGVudHMnIH19PC9oND5cbiAgICAgIH1cblxuICAgICAgPHVsIGNsYXNzPVwiZG9jcy10b2NfX2xpc3RcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBmbGF0SXRlbXMoKTsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgY2xhc3M9XCJkb2NzLXRvY19faXRlbVwiXG4gICAgICAgICAgICBbY2xhc3MuZG9jcy10b2NfX2l0ZW0tLWxldmVsLTFdPVwiaXRlbS5sZXZlbCA9PT0gMVwiXG4gICAgICAgICAgICBbY2xhc3MuZG9jcy10b2NfX2l0ZW0tLWxldmVsLTJdPVwiaXRlbS5sZXZlbCA9PT0gMlwiXG4gICAgICAgICAgICBbY2xhc3MuZG9jcy10b2NfX2l0ZW0tLWxldmVsLTNdPVwiaXRlbS5sZXZlbCA9PT0gM1wiXG4gICAgICAgICAgICBbY2xhc3MuZG9jcy10b2NfX2l0ZW0tLWFjdGl2ZV09XCJhY3RpdmVJZCgpID09PSBpdGVtLmlkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBjbGFzcz1cImRvY3MtdG9jX19saW5rXCJcbiAgICAgICAgICAgICAgW2hyZWZdPVwiJyMnICsgaXRlbS5pZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzY3JvbGxUb1NlY3Rpb24oJGV2ZW50LCBpdGVtLmlkKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICB9XG4gICAgICA8L3VsPlxuICAgIDwvbmF2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9kb2NzLXRvYy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEb2NzVG9jQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHByb3BzOiBEb2NzVG9jTWV0YWRhdGEgPSB7fTtcblxuICBAT3V0cHV0KCkgc2VjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8vIFJlYWN0aXZlIHN0YXRlXG4gIHByb3RlY3RlZCBhY3RpdmVJZCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgcHJvdGVjdGVkIGZsYXRJdGVtcyA9IHNpZ25hbDxEb2NzVG9jSXRlbVtdPihbXSk7XG5cbiAgcHJpdmF0ZSBvYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBoZWFkaW5nRWxlbWVudHM6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlRmxhdEl0ZW1zKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gRGVsYXkgdG8gZW5zdXJlIERPTSBpcyByZWFkeVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0dlbmVyYXRlKSB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVUb2NGcm9tSGVhZGluZ3MoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0dXBTY3JvbGxTcHkoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZsYXRJdGVtcygpO1xuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0dlbmVyYXRlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5nZW5lcmF0ZVRvY0Zyb21IZWFkaW5ncygpLCAxMDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveVNjcm9sbFNweSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGbGF0SXRlbXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMuaXRlbXMpIHtcbiAgICAgIHRoaXMuZmxhdEl0ZW1zLnNldCh0aGlzLmZsYXR0ZW5JdGVtcyh0aGlzLnByb3BzLml0ZW1zKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmbGF0dGVuSXRlbXMoaXRlbXM6IERvY3NUb2NJdGVtW10pOiBEb2NzVG9jSXRlbVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IERvY3NUb2NJdGVtW10gPSBbXTtcbiAgICBjb25zdCBmbGF0dGVuID0gKGl0ZW1MaXN0OiBEb2NzVG9jSXRlbVtdKSA9PiB7XG4gICAgICBpdGVtTGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgIGZsYXR0ZW4oaXRlbS5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgZmxhdHRlbihpdGVtcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVUb2NGcm9tSGVhZGluZ3MoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSB0aGlzLnByb3BzLmNvbnRhaW5lclNlbGVjdG9yIHx8ICcuZG9jcy1sYXlvdXRfX2NvbnRlbnQnO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuXG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIGNvbnNvbGUud2FybihgW2RvY3MtdG9jXSBDb250YWluZXIgbm90IGZvdW5kOiAke3NlbGVjdG9yfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxldmVscyA9IHRoaXMucHJvcHMuaGVhZGluZ0xldmVscyB8fCBbMiwgM107XG4gICAgY29uc3QgaGVhZGluZ1NlbGVjdG9yID0gbGV2ZWxzLm1hcChsID0+IGBoJHtsfWApLmpvaW4oJywgJyk7XG4gICAgY29uc3QgaGVhZGluZ3MgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChoZWFkaW5nU2VsZWN0b3IpO1xuXG4gICAgY29uc3QgaXRlbXM6IERvY3NUb2NJdGVtW10gPSBbXTtcbiAgICBoZWFkaW5ncy5mb3JFYWNoKChoZWFkaW5nOiBFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGhlYWRpbmcgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAvLyBHZW5lcmF0ZSBJRCBpZiBub3QgcHJlc2VudFxuICAgICAgaWYgKCFlbC5pZCkge1xuICAgICAgICBlbC5pZCA9IHRoaXMuZ2VuZXJhdGVJZChlbC50ZXh0Q29udGVudCB8fCAnJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxldmVsID0gcGFyc2VJbnQoZWwudGFnTmFtZVsxXSwgMTApO1xuICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgIGlkOiBlbC5pZCxcbiAgICAgICAgbGFiZWw6IGVsLnRleHRDb250ZW50Py50cmltKCkgfHwgJycsXG4gICAgICAgIGxldmVsOiBsZXZlbCAtIDEsIC8vIGgyID0gbGV2ZWwgMSwgaDMgPSBsZXZlbCAyXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuZmxhdEl0ZW1zLnNldChpdGVtcyk7XG4gICAgLy8gUmUtc2V0dXAgc2Nyb2xsIHNweSB3aXRoIG5ldyBpdGVtc1xuICAgIHRoaXMuc2V0dXBTY3JvbGxTcHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVJZCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0ZXh0XG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnRyaW0oKVxuICAgICAgLnJlcGxhY2UoL1teXFx3XFxzLV0vZywgJycpXG4gICAgICAucmVwbGFjZSgvXFxzKy9nLCAnLScpXG4gICAgICAuc3Vic3RyaW5nKDAsIDUwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBTY3JvbGxTcHkoKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95U2Nyb2xsU3B5KCk7XG5cbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZmxhdEl0ZW1zKCk7XG4gICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gQ29sbGVjdCBoZWFkaW5nIGVsZW1lbnRzXG4gICAgdGhpcy5oZWFkaW5nRWxlbWVudHMgPSBpdGVtc1xuICAgICAgLm1hcChpdGVtID0+IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGl0ZW0uaWQpKVxuICAgICAgLmZpbHRlcigoZWwpOiBlbCBpcyBIVE1MRWxlbWVudCA9PiBlbCAhPT0gbnVsbCk7XG5cbiAgICBpZiAodGhpcy5oZWFkaW5nRWxlbWVudHMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBvZmZzZXRUb3AgPSB0aGlzLnByb3BzLm9mZnNldFRvcCA/PyAxMDA7XG5cbiAgICAvLyBVc2UgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgZm9yIHNjcm9sbCBzcHlcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLm9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgICBlbnRyaWVzID0+IHtcbiAgICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCB2aXNpYmxlIGhlYWRpbmdcbiAgICAgICAgICBjb25zdCB2aXNpYmxlRW50cmllcyA9IGVudHJpZXNcbiAgICAgICAgICAgIC5maWx0ZXIoZW50cnkgPT4gZW50cnkuaXNJbnRlcnNlY3RpbmcpXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5ib3VuZGluZ0NsaWVudFJlY3QudG9wIC0gYi5ib3VuZGluZ0NsaWVudFJlY3QudG9wKTtcblxuICAgICAgICAgIGlmICh2aXNpYmxlRW50cmllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVFbnRyeSA9IHZpc2libGVFbnRyaWVzWzBdO1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJZC5zZXQoYWN0aXZlRW50cnkudGFyZ2V0LmlkKTtcbiAgICAgICAgICAgICAgdGhpcy5zZWN0aW9uQ2hhbmdlLmVtaXQoYWN0aXZlRW50cnkudGFyZ2V0LmlkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHJvb3RNYXJnaW46IGAtJHtvZmZzZXRUb3B9cHggMHB4IC03MCUgMHB4YCxcbiAgICAgICAgICB0aHJlc2hvbGQ6IDAsXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuaGVhZGluZ0VsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xuICAgICAgICB0aGlzLm9ic2VydmVyPy5vYnNlcnZlKGVsKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95U2Nyb2xsU3B5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9ic2VydmVyKSB7XG4gICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMub2JzZXJ2ZXIgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmhlYWRpbmdFbGVtZW50cyA9IFtdO1xuICB9XG5cbiAgc2Nyb2xsVG9TZWN0aW9uKGV2ZW50OiBFdmVudCwgaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgb2Zmc2V0VG9wID0gdGhpcy5wcm9wcy5vZmZzZXRUb3AgPz8gMTAwO1xuXG4gICAgY29uc3QgdG9wID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cuc2Nyb2xsWSAtIG9mZnNldFRvcDtcblxuICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICB0b3AsXG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgYWN0aXZlIGltbWVkaWF0ZWx5IGZvciBiZXR0ZXIgVVhcbiAgICB0aGlzLmFjdGl2ZUlkLnNldChpZCk7XG5cbiAgICAvLyBVcGRhdGUgVVJMIGhhc2ggd2l0aG91dCBqdW1waW5nXG4gICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgJycsIGAjJHtpZH1gKTtcbiAgfVxufVxuIl19
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy10b2MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9kb2NzLXRvYy9kb2NzLXRvYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBT1osTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOztBQUd2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRztBQXVDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBYTNCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWnpCLFVBQUssR0FBb0IsRUFBRSxDQUFDO1FBRTNCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVyRCxpQkFBaUI7UUFDUCxhQUFRLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLGNBQVMsR0FBRyxNQUFNLENBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBRXhDLG9CQUFlLEdBQWtCLEVBQUUsQ0FBQztRQUNwQyxrQkFBYSxHQUF3QixJQUFJLENBQUM7UUFDMUMsVUFBSyxHQUFrQixJQUFJLENBQUM7SUFFQyxDQUFDO0lBRXRDLFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGVBQWU7UUFDYiwrQkFBK0I7UUFDL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDakMsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixDQUFDLEVBQUUsR0FB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QUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFFN0UsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUNkLEdBQUc7WUFDSCxRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDLENBQUM7UUFFSCwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdEIsa0NBQWtDO1FBQ2xDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQzsrR0F6TVUsZ0JBQWdCO21HQUFoQixnQkFBZ0Isc0tBbENqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVCxpZ0RBaENTLFlBQVk7OzRGQW1DWCxnQkFBZ0I7a0JBdEM1QixTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVDsyRUFJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgTmdab25lLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9jc1RvY01ldGFkYXRhLCBEb2NzVG9jSXRlbSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIHZhbC1kb2NzLXRvY1xuICpcbiAqIEEgdGFibGUgb2YgY29udGVudHMgY29tcG9uZW50IHdpdGggc2Nyb2xsIHNweSBmdW5jdGlvbmFsaXR5LlxuICogQXV0b21hdGljYWxseSBoaWdobGlnaHRzIHRoZSBjdXJyZW50IHNlY3Rpb24gYmFzZWQgb24gc2Nyb2xsIHBvc2l0aW9uLlxuICpcbiAqIEBleGFtcGxlIE1hbnVhbCBpdGVtc1xuICogYGBgaHRtbFxuICogPHZhbC1kb2NzLXRvY1xuICogICBbcHJvcHNdPVwie1xuICogICAgIHRpdGxlOiAnT24gdGhpcyBwYWdlJyxcbiAqICAgICBpdGVtczogW1xuICogICAgICAgeyBpZDogJ292ZXJ2aWV3JywgbGFiZWw6ICdPdmVydmlldycsIGxldmVsOiAxIH0sXG4gKiAgICAgICB7IGlkOiAnaW5zdGFsbGF0aW9uJywgbGFiZWw6ICdJbnN0YWxsYXRpb24nLCBsZXZlbDogMSB9LFxuICogICAgICAgeyBpZDogJ25wbScsIGxhYmVsOiAnVXNpbmcgbnBtJywgbGV2ZWw6IDIgfSxcbiAqICAgICAgIHsgaWQ6ICd5YXJuJywgbGFiZWw6ICdVc2luZyB5YXJuJywgbGV2ZWw6IDIgfVxuICogICAgIF1cbiAqICAgfVwiXG4gKiA+PC92YWwtZG9jcy10b2M+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBBdXRvLWdlbmVyYXRlZCBmcm9tIGhlYWRpbmdzXG4gKiBgYGBodG1sXG4gKiA8dmFsLWRvY3MtdG9jXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgYXV0b0dlbmVyYXRlOiB0cnVlLFxuICogICAgIGNvbnRhaW5lclNlbGVjdG9yOiAnLmFydGljbGUtY29udGVudCcsXG4gKiAgICAgaGVhZGluZ0xldmVsczogWzIsIDNdXG4gKiAgIH1cIlxuICogPjwvdmFsLWRvY3MtdG9jPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kb2NzLXRvYycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuYXZcbiAgICAgIGNsYXNzPVwiZG9jcy10b2NcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCJcbiAgICAgIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJUYWJsZSBvZiBjb250ZW50c1wiXG4gICAgPlxuICAgICAgQGlmICghcHJvcHMuaGlkZVRpdGxlKSB7XG4gICAgICAgIDxoNCBjbGFzcz1cImRvY3MtdG9jX190aXRsZVwiPnt7IHByb3BzLnRpdGxlIHx8ICdDb250ZW50cycgfX08L2g0PlxuICAgICAgfVxuXG4gICAgICA8dWwgY2xhc3M9XCJkb2NzLXRvY19fbGlzdFwiPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGZsYXRJdGVtcygpOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgICAgPGxpXG4gICAgICAgICAgICBjbGFzcz1cImRvY3MtdG9jX19pdGVtXCJcbiAgICAgICAgICAgIFtjbGFzcy5kb2NzLXRvY19faXRlbS0tbGV2ZWwtMV09XCJpdGVtLmxldmVsID09PSAxXCJcbiAgICAgICAgICAgIFtjbGFzcy5kb2NzLXRvY19faXRlbS0tbGV2ZWwtMl09XCJpdGVtLmxldmVsID09PSAyXCJcbiAgICAgICAgICAgIFtjbGFzcy5kb2NzLXRvY19faXRlbS0tbGV2ZWwtM109XCJpdGVtLmxldmVsID09PSAzXCJcbiAgICAgICAgICAgIFtjbGFzcy5kb2NzLXRvY19faXRlbS0tYWN0aXZlXT1cImFjdGl2ZUlkKCkgPT09IGl0ZW0uaWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGNsYXNzPVwiZG9jcy10b2NfX2xpbmtcIlxuICAgICAgICAgICAgICBbaHJlZl09XCInIycgKyBpdGVtLmlkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNjcm9sbFRvU2VjdGlvbigkZXZlbnQsIGl0ZW0uaWQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICAgIDwvdWw+XG4gICAgPC9uYXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2RvY3MtdG9jLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERvY3NUb2NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgcHJvcHM6IERvY3NUb2NNZXRhZGF0YSA9IHt9O1xuXG4gIEBPdXRwdXQoKSBzZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLy8gUmVhY3RpdmUgc3RhdGVcbiAgcHJvdGVjdGVkIGFjdGl2ZUlkID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcm90ZWN0ZWQgZmxhdEl0ZW1zID0gc2lnbmFsPERvY3NUb2NJdGVtW10+KFtdKTtcblxuICBwcml2YXRlIGhlYWRpbmdFbGVtZW50czogSFRNTEVsZW1lbnRbXSA9IFtdO1xuICBwcml2YXRlIHNjcm9sbEhhbmRsZXI6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlRmxhdEl0ZW1zKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gRGVsYXkgdG8gZW5zdXJlIERPTSBpcyByZWFkeVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0dlbmVyYXRlKSB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVUb2NGcm9tSGVhZGluZ3MoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0dXBTY3JvbGxTcHkoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZsYXRJdGVtcygpO1xuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0dlbmVyYXRlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5nZW5lcmF0ZVRvY0Zyb21IZWFkaW5ncygpLCAxMDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveVNjcm9sbFNweSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGbGF0SXRlbXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMuaXRlbXMpIHtcbiAgICAgIHRoaXMuZmxhdEl0ZW1zLnNldCh0aGlzLmZsYXR0ZW5JdGVtcyh0aGlzLnByb3BzLml0ZW1zKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmbGF0dGVuSXRlbXMoaXRlbXM6IERvY3NUb2NJdGVtW10pOiBEb2NzVG9jSXRlbVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IERvY3NUb2NJdGVtW10gPSBbXTtcbiAgICBjb25zdCBmbGF0dGVuID0gKGl0ZW1MaXN0OiBEb2NzVG9jSXRlbVtdKSA9PiB7XG4gICAgICBpdGVtTGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgIGZsYXR0ZW4oaXRlbS5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgZmxhdHRlbihpdGVtcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVUb2NGcm9tSGVhZGluZ3MoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSB0aGlzLnByb3BzLmNvbnRhaW5lclNlbGVjdG9yIHx8ICcuZG9jcy1sYXlvdXRfX2NvbnRlbnQnO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuXG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIGNvbnNvbGUud2FybihgW2RvY3MtdG9jXSBDb250YWluZXIgbm90IGZvdW5kOiAke3NlbGVjdG9yfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxldmVscyA9IHRoaXMucHJvcHMuaGVhZGluZ0xldmVscyB8fCBbMiwgM107XG4gICAgY29uc3QgaGVhZGluZ1NlbGVjdG9yID0gbGV2ZWxzLm1hcChsID0+IGBoJHtsfWApLmpvaW4oJywgJyk7XG4gICAgY29uc3QgaGVhZGluZ3MgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChoZWFkaW5nU2VsZWN0b3IpO1xuXG4gICAgY29uc3QgaXRlbXM6IERvY3NUb2NJdGVtW10gPSBbXTtcbiAgICBoZWFkaW5ncy5mb3JFYWNoKChoZWFkaW5nOiBFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGhlYWRpbmcgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAvLyBHZW5lcmF0ZSBJRCBpZiBub3QgcHJlc2VudFxuICAgICAgaWYgKCFlbC5pZCkge1xuICAgICAgICBlbC5pZCA9IHRoaXMuZ2VuZXJhdGVJZChlbC50ZXh0Q29udGVudCB8fCAnJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxldmVsID0gcGFyc2VJbnQoZWwudGFnTmFtZVsxXSwgMTApO1xuICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgIGlkOiBlbC5pZCxcbiAgICAgICAgbGFiZWw6IGVsLnRleHRDb250ZW50Py50cmltKCkgfHwgJycsXG4gICAgICAgIGxldmVsOiBsZXZlbCAtIDEsIC8vIGgyID0gbGV2ZWwgMSwgaDMgPSBsZXZlbCAyXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuZmxhdEl0ZW1zLnNldChpdGVtcyk7XG4gICAgLy8gUmUtc2V0dXAgc2Nyb2xsIHNweSB3aXRoIG5ldyBpdGVtc1xuICAgIHRoaXMuc2V0dXBTY3JvbGxTcHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVJZCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0ZXh0XG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnRyaW0oKVxuICAgICAgLnJlcGxhY2UoL1teXFx3XFxzLV0vZywgJycpXG4gICAgICAucmVwbGFjZSgvXFxzKy9nLCAnLScpXG4gICAgICAuc3Vic3RyaW5nKDAsIDUwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBTY3JvbGxTcHkoKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95U2Nyb2xsU3B5KCk7XG5cbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZmxhdEl0ZW1zKCk7XG4gICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gQ29sbGVjdCBoZWFkaW5nIGVsZW1lbnRzXG4gICAgdGhpcy5oZWFkaW5nRWxlbWVudHMgPSBpdGVtc1xuICAgICAgLm1hcChpdGVtID0+IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGl0ZW0uaWQpKVxuICAgICAgLmZpbHRlcigoZWwpOiBlbCBpcyBIVE1MRWxlbWVudCA9PiBlbCAhPT0gbnVsbCk7XG5cbiAgICBpZiAodGhpcy5oZWFkaW5nRWxlbWVudHMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBTZXQgaW5pdGlhbCBhY3RpdmUgaXRlbVxuICAgIHRoaXMudXBkYXRlQWN0aXZlSGVhZGluZygpO1xuXG4gICAgLy8gVXNlIHNjcm9sbCBldmVudCB3aXRoIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmb3IgcGVyZm9ybWFuY2VcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnJhZklkKSB7XG4gICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5yYWZJZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVIZWFkaW5nKCk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsSGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBY3RpdmVIZWFkaW5nKCk6IHZvaWQge1xuICAgIGNvbnN0IG9mZnNldFRvcCA9IHRoaXMucHJvcHMub2Zmc2V0VG9wID8/IDEwMDtcbiAgICBjb25zdCBzY3JvbGxZID0gd2luZG93LnNjcm9sbFk7XG5cbiAgICAvLyBGaW5kIHRoZSBoZWFkaW5nIHRoYXQgaXMgY3VycmVudGx5IGF0IG9yIGFib3ZlIHRoZSBvZmZzZXQgcG9pbnRcbiAgICBsZXQgYWN0aXZlSGVhZGluZzogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGZvciAoY29uc3QgaGVhZGluZyBvZiB0aGlzLmhlYWRpbmdFbGVtZW50cykge1xuICAgICAgY29uc3QgcmVjdCA9IGhlYWRpbmcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBoZWFkaW5nVG9wID0gcmVjdC50b3AgKyBzY3JvbGxZO1xuXG4gICAgICAvLyBJZiBoZWFkaW5nIGlzIGF0IG9yIGFib3ZlIHRoZSB0cmlnZ2VyIHBvaW50IChzY3JvbGxZICsgb2Zmc2V0KVxuICAgICAgaWYgKGhlYWRpbmdUb3AgPD0gc2Nyb2xsWSArIG9mZnNldFRvcCArIDEwKSB7XG4gICAgICAgIGFjdGl2ZUhlYWRpbmcgPSBoZWFkaW5nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSGVhZGluZ3MgYXJlIGluIG9yZGVyLCBzbyB3ZSBjYW4gc3RvcCBvbmNlIHdlIGZpbmQgb25lIGJlbG93XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIG5vIGhlYWRpbmcgaXMgYWJvdmUgdGhlIHRyaWdnZXIgcG9pbnQsIHVzZSB0aGUgZmlyc3Qgb25lXG4gICAgaWYgKCFhY3RpdmVIZWFkaW5nICYmIHRoaXMuaGVhZGluZ0VsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGFjdGl2ZUhlYWRpbmcgPSB0aGlzLmhlYWRpbmdFbGVtZW50c1swXTtcbiAgICB9XG5cbiAgICBpZiAoYWN0aXZlSGVhZGluZyAmJiBhY3RpdmVIZWFkaW5nLmlkICE9PSB0aGlzLmFjdGl2ZUlkKCkpIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZlSWQuc2V0KGFjdGl2ZUhlYWRpbmchLmlkKTtcbiAgICAgICAgdGhpcy5zZWN0aW9uQ2hhbmdlLmVtaXQoYWN0aXZlSGVhZGluZyEuaWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95U2Nyb2xsU3B5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNjcm9sbEhhbmRsZXIpO1xuICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRoaXMucmFmSWQpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMucmFmSWQpO1xuICAgICAgdGhpcy5yYWZJZCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuaGVhZGluZ0VsZW1lbnRzID0gW107XG4gIH1cblxuICBzY3JvbGxUb1NlY3Rpb24oZXZlbnQ6IEV2ZW50LCBpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm47XG5cbiAgICBjb25zdCBvZmZzZXRUb3AgPSB0aGlzLnByb3BzLm9mZnNldFRvcCA/PyAxMDA7XG5cbiAgICBjb25zdCB0b3AgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5zY3JvbGxZIC0gb2Zmc2V0VG9wO1xuXG4gICAgd2luZG93LnNjcm9sbFRvKHtcbiAgICAgIHRvcCxcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICB9KTtcblxuICAgIC8vIFVwZGF0ZSBhY3RpdmUgaW1tZWRpYXRlbHkgZm9yIGJldHRlciBVWFxuICAgIHRoaXMuYWN0aXZlSWQuc2V0KGlkKTtcblxuICAgIC8vIFVwZGF0ZSBVUkwgaGFzaCB3aXRob3V0IGp1bXBpbmdcbiAgICBoaXN0b3J5LnB1c2hTdGF0ZShudWxsLCAnJywgYCMke2lkfWApO1xuICB9XG59XG4iXX0=