ctt-babylon 0.19.47 → 0.19.48

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.
@@ -56,9 +56,8 @@ export class TopC2ImgTxtComponent {
56
56
  }
57
57
  }
58
58
  get reverseLayout() {
59
- const images = this._normalizedMultimedia?.imagenes ?? [];
60
- const first = this.getImageByOrder(1, images);
61
- const second = this.getImageByOrder(2, images);
59
+ // Usar el mismo par de imágenes que se muestran (consecutivas)
60
+ const [first, second] = this.getConsecutiveImages();
62
61
  if (!this.hasText(first) && this.hasText(second)) {
63
62
  return true;
64
63
  }
@@ -94,15 +93,38 @@ export class TopC2ImgTxtComponent {
94
93
  * Devuelve la imagen principal (izquierda en layout normal, derecha si reverseLayout=true).
95
94
  * El HTML siempre usa firstImage para la columna de contenido/texto.
96
95
  */
96
+ /**
97
+ * Encuentra el par de imágenes consecutivas más bajo (por ejemplo, 1-2, 2-3, etc.)
98
+ * Si no hay pares consecutivos, usa los dos primeros ordenados.
99
+ */
100
+ getConsecutiveImages() {
101
+ const images = this.orderedImages;
102
+ if (images.length < 2)
103
+ return [images[0], undefined];
104
+ // search the lowest consecutive pair (1-2, 2-3, etc.)
105
+ for (let i = 0; i < images.length - 1; i++) {
106
+ const orderA = images[i]?.order;
107
+ const orderB = images[i + 1]?.order;
108
+ const numA = typeof orderA === 'number' ? orderA : (orderA !== undefined ? parseInt(orderA, 10) : undefined);
109
+ const numB = typeof orderB === 'number' ? orderB : (orderB !== undefined ? parseInt(orderB, 10) : undefined);
110
+ if (typeof numA === 'number' && typeof numB === 'number' && numB - numA === 1) {
111
+ return [images[i], images[i + 1]];
112
+ }
113
+ }
114
+ // Si no hay pares consecutivos, usar los dos primeros
115
+ return [images[0], images[1]];
116
+ }
97
117
  get firstImage() {
98
- return this.reverseLayout ? this.orderedImages[1] : this.orderedImages[0];
118
+ const [imgA, imgB] = this.getConsecutiveImages();
119
+ return this.reverseLayout ? imgB : imgA;
99
120
  }
100
121
  /**
101
122
  * Devuelve la imagen secundaria (derecha en layout normal, izquierda si reverseLayout=true).
102
123
  * El HTML siempre usa secondImage para la columna de imagen secundaria.
103
124
  */
104
125
  get secondImage() {
105
- return this.reverseLayout ? this.orderedImages[0] : this.orderedImages[1];
126
+ const [imgA, imgB] = this.getConsecutiveImages();
127
+ return this.reverseLayout ? imgA : imgB;
106
128
  }
107
129
  get mediaImage() {
108
130
  const first = this.normalizedMultimedia?.imagenes?.[0];
@@ -157,4 +179,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
157
179
  }], texts: [{
158
180
  type: Input
159
181
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLWMyLWltZy10eHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZXJuYWwvY29yZS90b3AtYzItaW1nLXR4dC90b3AtYzItaW1nLXR4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL3RvcC1jMi1pbWctdHh0L3RvcC1jMi1pbWctdHh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQVFoRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7O0FBV25HLE1BQU0sT0FBTyxvQkFBb0I7SUFSakM7UUF1QmEsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUtSLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztLQStJcEQ7SUEvSkcsSUFDSSxVQUFVLENBQUMsS0FBMEQ7UUFDckUsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBVU8sMEJBQTBCO1FBQzlCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNiLElBQUks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QUMsQ0FBQztJQUM5QixDQUFDOytHQWxLUSxvQkFBb0I7bUdBQXBCLG9CQUFvQixxUUNyQmpDLHU0R0E2RUEsKytPRDdEYyxZQUFZLG1JQUFFLHdCQUF3Qjs7NEZBS3ZDLG9CQUFvQjtrQkFSaEMsU0FBUzsrQkFDSSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsd0JBQXdCLENBQUMsaUJBR2xDLGlCQUFpQixDQUFDLElBQUk7OEJBRzVCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUYsVUFBVTtzQkFEYixLQUFLO2dCQVNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzL2xpbmstdHlwZS9saW5rLXR5cGUuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gICAgQmFieWxvbkJ1dHRvbkksXG4gICAgQmFieWxvbkltYWdlSSxcbiAgICBCYWJ5bG9uTXVsdGltZWRpYUksXG4gICAgQmFieWxvblJvb21EZXRhaWxJLFxuICAgIEJhYnlsb25UZXh0SW5mb0ksXG59IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0T3JkZXJlZEltYWdlcywgZ2V0SW1hZ2VzQnlUYWdGcm9tTXVsdGltZWRpYSB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL211dGltZWRpYS51dGlscyc7XG5pbXBvcnQgeyBUb3BDMkltZ1R4dENvbnRlbnQgfSBmcm9tICcuL3RvcC1jMi1pbWctdHh0LmludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RvcC1jMi1pbWctdHh0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RvcC1jMi1pbWctdHh0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vdG9wLWMyLWltZy10eHQuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFRvcEMySW1nVHh0Q29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBpZGVudGlmaWVyPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX211bHRpbWVkaWE/OiBCYWJ5bG9uTXVsdGltZWRpYUkgfCBCYWJ5bG9uUm9vbURldGFpbEk7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtdWx0aW1lZGlhKHZhbHVlOiBCYWJ5bG9uTXVsdGltZWRpYUkgfCBCYWJ5bG9uUm9vbURldGFpbEkgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fbXVsdGltZWRpYSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZU5vcm1hbGl6ZWRNdWx0aW1lZGlhKCk7XG4gICAgfVxuXG4gICAgZ2V0IG11bHRpbWVkaWEoKTogQmFieWxvbk11bHRpbWVkaWFJIHwgQmFieWxvblJvb21EZXRhaWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX211bHRpbWVkaWE7XG4gICAgfVxuICAgIEBJbnB1dCgpIGJ1dHRvbnM/OiBCYWJ5bG9uQnV0dG9uSVtdO1xuICAgIEBJbnB1dCgpIGNvbnRlbnQ/OiBUb3BDMkltZ1R4dENvbnRlbnQ7XG4gICAgQElucHV0KCkgcmV2ZXJzZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGltYWdlT3JkZXI/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgQElucHV0KCkgdGV4dHM/OiBCYWJ5bG9uVGV4dEluZm9JO1xuXG4gICAgcHJpdmF0ZSBfbm9ybWFsaXplZE11bHRpbWVkaWE/OiBCYWJ5bG9uTXVsdGltZWRpYUkgfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbWFnZUVycm9ycyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSB1cGRhdGVOb3JtYWxpemVkTXVsdGltZWRpYSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbXVsdGltZWRpYSA9IHRoaXMuX211bHRpbWVkaWE7XG4gICAgICAgIGlmICghbXVsdGltZWRpYSkge1xuICAgICAgICAgICAgdGhpcy5fbm9ybWFsaXplZE11bHRpbWVkaWEgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgVEFHID0gJ1RvcEMySW1nVHh0JztcbiAgICAgICAgaWYgKHRoaXMuaXNSb29tRGV0YWlsKG11bHRpbWVkaWEpKSB7XG4gICAgICAgICAgICBsZXQgaW1hZ2VuZXMgPSAobXVsdGltZWRpYS5tdWx0aW1lZGlhPy5pbWFnZW5lcyA/PyBtdWx0aW1lZGlhLmltYWdlcyA/PyBbXSkgYXMgQmFieWxvbkltYWdlSVtdO1xuICAgICAgICAgICAgaW1hZ2VuZXMgPSBnZXRJbWFnZXNCeVRhZ0Zyb21NdWx0aW1lZGlhKHsgaW1hZ2VuZXMgfSwgVEFHKTtcbiAgICAgICAgICAgIGNvbnN0IFtmaXJzdCwgLi4ucmVzdF0gPSBpbWFnZW5lcztcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRJbWFnZTogQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCA9IGZpcnN0XG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uZmlyc3QsXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZpcnN0LnRpdGxlIHx8IG11bHRpbWVkaWEudGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0LmRlc2NyaXB0aW9uIHx8IG11bHRpbWVkaWEudGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy50ZXh0cyA9IG11bHRpbWVkaWEudGV4dHM7XG4gICAgICAgICAgICB0aGlzLl9ub3JtYWxpemVkTXVsdGltZWRpYSA9IHtcbiAgICAgICAgICAgICAgICBpbWFnZW5lczogY29udGVudEltYWdlID8gW2NvbnRlbnRJbWFnZSwgLi4ucmVzdF0gOiBpbWFnZW5lc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBTaSBubyBlcyBSb29tRGV0YWlsLCBOTyBmaWx0cmFtb3MgcG9yIHRhZywgc29sbyBkZXZvbHZlbW9zIGxhcyBpbcOhZ2VuZXMgdGFsIGN1YWxcbiAgICAgICAgaWYgKCdpbWFnZW5lcycgaW4gbXVsdGltZWRpYSAmJiBBcnJheS5pc0FycmF5KChtdWx0aW1lZGlhIGFzIGFueSkuaW1hZ2VuZXMpKSB7XG4gICAgICAgICAgICB0aGlzLl9ub3JtYWxpemVkTXVsdGltZWRpYSA9IHtcbiAgICAgICAgICAgICAgICAuLi5tdWx0aW1lZGlhLFxuICAgICAgICAgICAgICAgIGltYWdlbmVzOiAobXVsdGltZWRpYSBhcyBhbnkpLmltYWdlbmVzXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX25vcm1hbGl6ZWRNdWx0aW1lZGlhID0gbXVsdGltZWRpYTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ211bHRpbWVkaWEnXSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOb3JtYWxpemVkTXVsdGltZWRpYSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHJldmVyc2VMYXlvdXQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGltYWdlcyA9IHRoaXMuX25vcm1hbGl6ZWRNdWx0aW1lZGlhPy5pbWFnZW5lcyA/PyBbXTtcbiAgICAgICAgY29uc3QgZmlyc3QgPSB0aGlzLmdldEltYWdlQnlPcmRlcigxLCBpbWFnZXMpO1xuICAgICAgICBjb25zdCBzZWNvbmQgPSB0aGlzLmdldEltYWdlQnlPcmRlcigyLCBpbWFnZXMpO1xuICAgICAgICBpZiAoIXRoaXMuaGFzVGV4dChmaXJzdCkgJiYgdGhpcy5oYXNUZXh0KHNlY29uZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQ/LnJldmVyc2UgPz8gdGhpcy5yZXZlcnNlO1xuICAgIH1cblxuICAgIGdldCBjb250ZW50SW1hZ2UoKTogQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGltYWdlcyA9IHRoaXMubm9ybWFsaXplZE11bHRpbWVkaWE/LmltYWdlbmVzID8/IFtdO1xuICAgICAgICBjb25zdCBmaXJzdCA9IHRoaXMuZ2V0SW1hZ2VCeU9yZGVyKDEsIGltYWdlcyk7XG4gICAgICAgIGNvbnN0IHNlY29uZCA9IHRoaXMuZ2V0SW1hZ2VCeU9yZGVyKDIsIGltYWdlcyk7XG4gICAgICAgIGlmICh0aGlzLmhhc1RleHQoZmlyc3QpKSByZXR1cm4gZmlyc3Q7XG4gICAgICAgIGlmICh0aGlzLmhhc1RleHQoc2Vjb25kKSkgcmV0dXJuIHNlY29uZDtcbiAgICAgICAgcmV0dXJuIGZpcnN0ID8/IHNlY29uZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEltYWdlQnlPcmRlcihcbiAgICAgICAgb3JkZXI6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgaW1hZ2VzOiBCYWJ5bG9uSW1hZ2VJW11cbiAgICApOiBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKG9yZGVyID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBpbWFnZXNbMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGltYWdlcy5maW5kKChpbWcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGltZ09yZGVyID0gKGltZyBhcyBhbnkpLm9yZGVyO1xuICAgICAgICAgICAgcmV0dXJuIGltZ09yZGVyICE9IG51bGwgJiYgaW1nT3JkZXIudG9TdHJpbmcoKSA9PT0gb3JkZXIudG9TdHJpbmcoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV2dWVsdmUgbGFzIGltw6FnZW5lcyBmaWx0cmFkYXMgcG9yIHRhZyB5IG9yZGVuYWRhcyBwb3Igb3JkZXIgYXNjZW5kZW50ZS5cbiAgICAgKiBTZSB1c2EgY29tbyBiYXNlIHBhcmEgbW9zdHJhciBpbcOhZ2VuZXMgZW4gZWwgSFRNTCwgYXNlZ3VyYW5kbyBxdWUgc2llbXByZSBlc3TDqW4gZW4gZWwgb3JkZW4gY29ycmVjdG8uXG4gICAgICovXG4gICAgZ2V0IG9yZGVyZWRJbWFnZXMoKTogQmFieWxvbkltYWdlSVtdIHtcbiAgICAgICAgcmV0dXJuIGdldE9yZGVyZWRJbWFnZXModGhpcy5ub3JtYWxpemVkTXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gW10pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldnVlbHZlIGxhIGltYWdlbiBwcmluY2lwYWwgKGl6cXVpZXJkYSBlbiBsYXlvdXQgbm9ybWFsLCBkZXJlY2hhIHNpIHJldmVyc2VMYXlvdXQ9dHJ1ZSkuXG4gICAgICogRWwgSFRNTCBzaWVtcHJlIHVzYSBmaXJzdEltYWdlIHBhcmEgbGEgY29sdW1uYSBkZSBjb250ZW5pZG8vdGV4dG8uXG4gICAgICovXG4gICAgZ2V0IGZpcnN0SW1hZ2UoKTogQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLnJldmVyc2VMYXlvdXQgPyB0aGlzLm9yZGVyZWRJbWFnZXNbMV0gOiB0aGlzLm9yZGVyZWRJbWFnZXNbMF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV2dWVsdmUgbGEgaW1hZ2VuIHNlY3VuZGFyaWEgKGRlcmVjaGEgZW4gbGF5b3V0IG5vcm1hbCwgaXpxdWllcmRhIHNpIHJldmVyc2VMYXlvdXQ9dHJ1ZSkuXG4gICAgICogRWwgSFRNTCBzaWVtcHJlIHVzYSBzZWNvbmRJbWFnZSBwYXJhIGxhIGNvbHVtbmEgZGUgaW1hZ2VuIHNlY3VuZGFyaWEuXG4gICAgICovXG4gICAgZ2V0IHNlY29uZEltYWdlKCk6IEJhYnlsb25JbWFnZUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXZlcnNlTGF5b3V0ID8gdGhpcy5vcmRlcmVkSW1hZ2VzWzBdIDogdGhpcy5vcmRlcmVkSW1hZ2VzWzFdO1xuICAgIH1cblxuICAgIGdldCBtZWRpYUltYWdlKCk6IEJhYnlsb25JbWFnZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBmaXJzdCA9IHRoaXMubm9ybWFsaXplZE11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF07XG4gICAgICAgIGNvbnN0IHNlY29uZCA9IHRoaXMubm9ybWFsaXplZE11bHRpbWVkaWE/LmltYWdlbmVzPy5bMV07XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGVudEltYWdlID09PSBmaXJzdCkgcmV0dXJuIHNlY29uZCA/PyBmaXJzdDtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudEltYWdlID09PSBzZWNvbmQpIHJldHVybiBmaXJzdCA/PyBzZWNvbmQ7XG5cbiAgICAgICAgcmV0dXJuIHNlY29uZCA/PyBmaXJzdDtcbiAgICB9XG5cbiAgICBnZXQgY3RhQnV0dG9uKCk6IEJhYnlsb25CdXR0b25JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudEltYWdlPy5idXR0b25zPy5bMF0gPz8gdGhpcy5idXR0b25zPy5bMF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNUZXh0KGltYWdlPzogQmFieWxvbkltYWdlSSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEoXG4gICAgICAgICAgICBpbWFnZT8udGl0bGU/LnRyaW0oKSB8fFxuICAgICAgICAgICAgaW1hZ2U/LnN1YnRpdGxlPy50cmltKCkgfHxcbiAgICAgICAgICAgIGltYWdlPy5kZXNjcmlwdGlvbj8udHJpbSgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1Jvb21EZXRhaWwoXG4gICAgICAgIHZhbHVlOiBCYWJ5bG9uTXVsdGltZWRpYUkgfCBCYWJ5bG9uUm9vbURldGFpbElcbiAgICApOiB2YWx1ZSBpcyBCYWJ5bG9uUm9vbURldGFpbEkge1xuICAgICAgICByZXR1cm4gJ2ltYWdlcycgaW4gdmFsdWUgfHwgJ3RleHRzJyBpbiB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgbm9ybWFsaXplZE11bHRpbWVkaWEoKTogQmFieWxvbk11bHRpbWVkaWFJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vcm1hbGl6ZWRNdWx0aW1lZGlhO1xuICAgIH1cblxuICAgIGhhc0ltYWdlU3JjKGltYWdlPzogQmFieWxvbkltYWdlSSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISFpbWFnZT8uaW1nPy5zcmM/LnRyaW0oKTtcbiAgICB9XG5cbiAgICBoYXNJbWFnZUVycm9yKGtleTogJ2ZpcnN0JyB8ICdzZWNvbmQnKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmltYWdlRXJyb3JzLmhhcyhrZXkpO1xuICAgIH1cblxuICAgIG9uSW1hZ2VFcnJvcihrZXk6ICdmaXJzdCcgfCAnc2Vjb25kJyk6IHZvaWQge1xuICAgICAgICB0aGlzLmltYWdlRXJyb3JzLmFkZChrZXkpO1xuICAgIH1cbn1cbiIsIkBpZiAoZmlyc3RJbWFnZSB8fCBzZWNvbmRJbWFnZSkge1xuICAgIDxzZWN0aW9uXG4gICAgICAgIGNsYXNzPVwibWRsLXRvcGMyaW1ndGV4dFwiXG4gICAgICAgIFtjbGFzcy5yZXZlcnNlXT1cInJldmVyc2VMYXlvdXRcIlxuICAgICAgICBbYXR0ci5pZF09XCJpZGVudGlmaWVyXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb2x1bWxlZnRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZmlyc3RJbWFnZT8udGl0bGUgfHwgdGV4dHM/LnRpdGxlIHx8IHRleHRzPy5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXRpdHVsb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJmaXJzdEltYWdlPy50aXRsZSB8fCB0ZXh0cz8udGl0bGUgfHwgdGV4dHM/Lm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZmlyc3RJbWFnZT8uc3VidGl0bGUgfHwgdGV4dHM/LnN1YnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1zdWJ0aXR1bG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaXJzdEltYWdlPy5zdWJ0aXRsZSB8fCB0ZXh0cz8uc3VidGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWltYWdlXCIgKm5nSWY9XCJmaXJzdEltYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGhhc0ltYWdlU3JjKGZpcnN0SW1hZ2UpICYmICFoYXNJbWFnZUVycm9yKCdmaXJzdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImZpcnN0SW1hZ2U/LmltZz8uc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0SW1hZ2U/LmltZz8uYWx0ID8/IGZpcnN0SW1hZ2U/LmFsdCA/PyAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJvbkltYWdlRXJyb3IoJ2ZpcnN0JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1pbWFnZS1wbGFjZWhvbGRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChmaXJzdEltYWdlPy5kZXNjcmlwdGlvbiB8fCB0ZXh0cz8uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tdGV4dG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0SW1hZ2U/LmRlc2NyaXB0aW9uIHx8IHRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjdGFCdXR0b247IGFzIGJ0bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tYnV0dG9uRFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiYnRuPy51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJidG4/LmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YXJnZXRdPVwiYnRuPy50YXJnZXQgfHwgJ19zZWxmJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIucmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuPy50YXJnZXQgfHwgJ19zZWxmJykgPT09ICdfYmxhbmsnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdub29wZW5lciBub3JlZmVycmVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ0bj8ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGJ0bj8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb2x1bXJpZ2h0XCIgKm5nSWY9XCJzZWNvbmRJbWFnZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWltYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaGFzSW1hZ2VTcmMoc2Vjb25kSW1hZ2UpICYmICFoYXNJbWFnZUVycm9yKCdzZWNvbmQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwic2Vjb25kSW1hZ2U/LmltZz8uc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cInNlY29uZEltYWdlPy5pbWc/LmFsdCA/PyBzZWNvbmRJbWFnZT8uYWx0ID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKT1cIm9uSW1hZ2VFcnJvcignc2Vjb25kJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1pbWFnZS1wbGFjZWhvbGRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxufVxuIl19
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLWMyLWltZy10eHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZXJuYWwvY29yZS90b3AtYzItaW1nLXR4dC90b3AtYzItaW1nLXR4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL3RvcC1jMi1pbWctdHh0L3RvcC1jMi1pbWctdHh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQVFoRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7O0FBV25HLE1BQU0sT0FBTyxvQkFBb0I7SUFSakM7UUF1QmEsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUtSLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztLQXFLcEQ7SUFyTEcsSUFDSSxVQUFVLENBQUMsS0FBMEQ7UUFDckUsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBVU8sMEJBQTBCO1FBQzlCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNiLElBQUks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VyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQXhMUSxvQkFBb0I7bUdBQXBCLG9CQUFvQixxUUNyQmpDLHU0R0E2RUEsKytPRDdEYyxZQUFZLG1JQUFFLHdCQUF3Qjs7NEZBS3ZDLG9CQUFvQjtrQkFSaEMsU0FBUzsrQkFDSSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsd0JBQXdCLENBQUMsaUJBR2xDLGlCQUFpQixDQUFDLElBQUk7OEJBRzVCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUYsVUFBVTtzQkFEYixLQUFLO2dCQVNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzL2xpbmstdHlwZS9saW5rLXR5cGUuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gICAgQmFieWxvbkJ1dHRvbkksXG4gICAgQmFieWxvbkltYWdlSSxcbiAgICBCYWJ5bG9uTXVsdGltZWRpYUksXG4gICAgQmFieWxvblJvb21EZXRhaWxJLFxuICAgIEJhYnlsb25UZXh0SW5mb0ksXG59IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0T3JkZXJlZEltYWdlcywgZ2V0SW1hZ2VzQnlUYWdGcm9tTXVsdGltZWRpYSB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL211dGltZWRpYS51dGlscyc7XG5pbXBvcnQgeyBUb3BDMkltZ1R4dENvbnRlbnQgfSBmcm9tICcuL3RvcC1jMi1pbWctdHh0LmludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RvcC1jMi1pbWctdHh0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RvcC1jMi1pbWctdHh0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vdG9wLWMyLWltZy10eHQuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFRvcEMySW1nVHh0Q29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBpZGVudGlmaWVyPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX211bHRpbWVkaWE/OiBCYWJ5bG9uTXVsdGltZWRpYUkgfCBCYWJ5bG9uUm9vbURldGFpbEk7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtdWx0aW1lZGlhKHZhbHVlOiBCYWJ5bG9uTXVsdGltZWRpYUkgfCBCYWJ5bG9uUm9vbURldGFpbEkgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fbXVsdGltZWRpYSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZU5vcm1hbGl6ZWRNdWx0aW1lZGlhKCk7XG4gICAgfVxuXG4gICAgZ2V0IG11bHRpbWVkaWEoKTogQmFieWxvbk11bHRpbWVkaWFJIHwgQmFieWxvblJvb21EZXRhaWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX211bHRpbWVkaWE7XG4gICAgfVxuICAgIEBJbnB1dCgpIGJ1dHRvbnM/OiBCYWJ5bG9uQnV0dG9uSVtdO1xuICAgIEBJbnB1dCgpIGNvbnRlbnQ/OiBUb3BDMkltZ1R4dENvbnRlbnQ7XG4gICAgQElucHV0KCkgcmV2ZXJzZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGltYWdlT3JkZXI/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgQElucHV0KCkgdGV4dHM/OiBCYWJ5bG9uVGV4dEluZm9JO1xuXG4gICAgcHJpdmF0ZSBfbm9ybWFsaXplZE11bHRpbWVkaWE/OiBCYWJ5bG9uTXVsdGltZWRpYUkgfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbWFnZUVycm9ycyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSB1cGRhdGVOb3JtYWxpemVkTXVsdGltZWRpYSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbXVsdGltZWRpYSA9IHRoaXMuX211bHRpbWVkaWE7XG4gICAgICAgIGlmICghbXVsdGltZWRpYSkge1xuICAgICAgICAgICAgdGhpcy5fbm9ybWFsaXplZE11bHRpbWVkaWEgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgVEFHID0gJ1RvcEMySW1nVHh0JztcbiAgICAgICAgaWYgKHRoaXMuaXNSb29tRGV0YWlsKG11bHRpbWVkaWEpKSB7XG4gICAgICAgICAgICBsZXQgaW1hZ2VuZXMgPSAobXVsdGltZWRpYS5tdWx0aW1lZGlhPy5pbWFnZW5lcyA/PyBtdWx0aW1lZGlhLmltYWdlcyA/PyBbXSkgYXMgQmFieWxvbkltYWdlSVtdO1xuICAgICAgICAgICAgaW1hZ2VuZXMgPSBnZXRJbWFnZXNCeVRhZ0Zyb21NdWx0aW1lZGlhKHsgaW1hZ2VuZXMgfSwgVEFHKTtcbiAgICAgICAgICAgIGNvbnN0IFtmaXJzdCwgLi4ucmVzdF0gPSBpbWFnZW5lcztcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRJbWFnZTogQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCA9IGZpcnN0XG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uZmlyc3QsXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZpcnN0LnRpdGxlIHx8IG11bHRpbWVkaWEudGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0LmRlc2NyaXB0aW9uIHx8IG11bHRpbWVkaWEudGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy50ZXh0cyA9IG11bHRpbWVkaWEudGV4dHM7XG4gICAgICAgICAgICB0aGlzLl9ub3JtYWxpemVkTXVsdGltZWRpYSA9IHtcbiAgICAgICAgICAgICAgICBpbWFnZW5lczogY29udGVudEltYWdlID8gW2NvbnRlbnRJbWFnZSwgLi4ucmVzdF0gOiBpbWFnZW5lc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBTaSBubyBlcyBSb29tRGV0YWlsLCBOTyBmaWx0cmFtb3MgcG9yIHRhZywgc29sbyBkZXZvbHZlbW9zIGxhcyBpbcOhZ2VuZXMgdGFsIGN1YWxcbiAgICAgICAgaWYgKCdpbWFnZW5lcycgaW4gbXVsdGltZWRpYSAmJiBBcnJheS5pc0FycmF5KChtdWx0aW1lZGlhIGFzIGFueSkuaW1hZ2VuZXMpKSB7XG4gICAgICAgICAgICB0aGlzLl9ub3JtYWxpemVkTXVsdGltZWRpYSA9IHtcbiAgICAgICAgICAgICAgICAuLi5tdWx0aW1lZGlhLFxuICAgICAgICAgICAgICAgIGltYWdlbmVzOiAobXVsdGltZWRpYSBhcyBhbnkpLmltYWdlbmVzXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX25vcm1hbGl6ZWRNdWx0aW1lZGlhID0gbXVsdGltZWRpYTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ211bHRpbWVkaWEnXSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOb3JtYWxpemVkTXVsdGltZWRpYSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHJldmVyc2VMYXlvdXQoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIFVzYXIgZWwgbWlzbW8gcGFyIGRlIGltw6FnZW5lcyBxdWUgc2UgbXVlc3RyYW4gKGNvbnNlY3V0aXZhcylcbiAgICAgICAgY29uc3QgW2ZpcnN0LCBzZWNvbmRdID0gdGhpcy5nZXRDb25zZWN1dGl2ZUltYWdlcygpO1xuICAgICAgICBpZiAoIXRoaXMuaGFzVGV4dChmaXJzdCkgJiYgdGhpcy5oYXNUZXh0KHNlY29uZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQ/LnJldmVyc2UgPz8gdGhpcy5yZXZlcnNlO1xuICAgIH1cblxuICAgIGdldCBjb250ZW50SW1hZ2UoKTogQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGltYWdlcyA9IHRoaXMubm9ybWFsaXplZE11bHRpbWVkaWE/LmltYWdlbmVzID8/IFtdO1xuICAgICAgICBjb25zdCBmaXJzdCA9IHRoaXMuZ2V0SW1hZ2VCeU9yZGVyKDEsIGltYWdlcyk7XG4gICAgICAgIGNvbnN0IHNlY29uZCA9IHRoaXMuZ2V0SW1hZ2VCeU9yZGVyKDIsIGltYWdlcyk7XG4gICAgICAgIGlmICh0aGlzLmhhc1RleHQoZmlyc3QpKSByZXR1cm4gZmlyc3Q7XG4gICAgICAgIGlmICh0aGlzLmhhc1RleHQoc2Vjb25kKSkgcmV0dXJuIHNlY29uZDtcbiAgICAgICAgcmV0dXJuIGZpcnN0ID8/IHNlY29uZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEltYWdlQnlPcmRlcihcbiAgICAgICAgb3JkZXI6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgaW1hZ2VzOiBCYWJ5bG9uSW1hZ2VJW11cbiAgICApOiBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKG9yZGVyID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBpbWFnZXNbMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGltYWdlcy5maW5kKChpbWcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGltZ09yZGVyID0gKGltZyBhcyBhbnkpLm9yZGVyO1xuICAgICAgICAgICAgcmV0dXJuIGltZ09yZGVyICE9IG51bGwgJiYgaW1nT3JkZXIudG9TdHJpbmcoKSA9PT0gb3JkZXIudG9TdHJpbmcoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV2dWVsdmUgbGFzIGltw6FnZW5lcyBmaWx0cmFkYXMgcG9yIHRhZyB5IG9yZGVuYWRhcyBwb3Igb3JkZXIgYXNjZW5kZW50ZS5cbiAgICAgKiBTZSB1c2EgY29tbyBiYXNlIHBhcmEgbW9zdHJhciBpbcOhZ2VuZXMgZW4gZWwgSFRNTCwgYXNlZ3VyYW5kbyBxdWUgc2llbXByZSBlc3TDqW4gZW4gZWwgb3JkZW4gY29ycmVjdG8uXG4gICAgICovXG4gICAgZ2V0IG9yZGVyZWRJbWFnZXMoKTogQmFieWxvbkltYWdlSVtdIHtcbiAgICAgICAgcmV0dXJuIGdldE9yZGVyZWRJbWFnZXModGhpcy5ub3JtYWxpemVkTXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gW10pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldnVlbHZlIGxhIGltYWdlbiBwcmluY2lwYWwgKGl6cXVpZXJkYSBlbiBsYXlvdXQgbm9ybWFsLCBkZXJlY2hhIHNpIHJldmVyc2VMYXlvdXQ9dHJ1ZSkuXG4gICAgICogRWwgSFRNTCBzaWVtcHJlIHVzYSBmaXJzdEltYWdlIHBhcmEgbGEgY29sdW1uYSBkZSBjb250ZW5pZG8vdGV4dG8uXG4gICAgICovXG4gICAgLyoqXG4gICAgICogRW5jdWVudHJhIGVsIHBhciBkZSBpbcOhZ2VuZXMgY29uc2VjdXRpdmFzIG3DoXMgYmFqbyAocG9yIGVqZW1wbG8sIDEtMiwgMi0zLCBldGMuKVxuICAgICAqIFNpIG5vIGhheSBwYXJlcyBjb25zZWN1dGl2b3MsIHVzYSBsb3MgZG9zIHByaW1lcm9zIG9yZGVuYWRvcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldENvbnNlY3V0aXZlSW1hZ2VzKCk6IFtCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkLCBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkXSB7XG4gICAgICAgIGNvbnN0IGltYWdlcyA9IHRoaXMub3JkZXJlZEltYWdlcztcbiAgICAgICAgaWYgKGltYWdlcy5sZW5ndGggPCAyKSByZXR1cm4gW2ltYWdlc1swXSwgdW5kZWZpbmVkXTtcbiAgICAgICAgLy8gc2VhcmNoIHRoZSBsb3dlc3QgY29uc2VjdXRpdmUgcGFpciAoMS0yLCAyLTMsIGV0Yy4pXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW1hZ2VzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgb3JkZXJBID0gaW1hZ2VzW2ldPy5vcmRlcjtcbiAgICAgICAgICAgIGNvbnN0IG9yZGVyQiA9IGltYWdlc1tpICsgMV0/Lm9yZGVyO1xuICAgICAgICAgICAgY29uc3QgbnVtQSA9IHR5cGVvZiBvcmRlckEgPT09ICdudW1iZXInID8gb3JkZXJBIDogKG9yZGVyQSAhPT0gdW5kZWZpbmVkID8gcGFyc2VJbnQob3JkZXJBIGFzIGFueSwgMTApIDogdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIGNvbnN0IG51bUIgPSB0eXBlb2Ygb3JkZXJCID09PSAnbnVtYmVyJyA/IG9yZGVyQiA6IChvcmRlckIgIT09IHVuZGVmaW5lZCA/IHBhcnNlSW50KG9yZGVyQiBhcyBhbnksIDEwKSA6IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG51bUEgPT09ICdudW1iZXInICYmIHR5cGVvZiBudW1CID09PSAnbnVtYmVyJyAmJiBudW1CIC0gbnVtQSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbaW1hZ2VzW2ldLCBpbWFnZXNbaSArIDFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBTaSBubyBoYXkgcGFyZXMgY29uc2VjdXRpdm9zLCB1c2FyIGxvcyBkb3MgcHJpbWVyb3NcbiAgICAgICAgcmV0dXJuIFtpbWFnZXNbMF0sIGltYWdlc1sxXV07XG4gICAgfVxuXG4gICAgZ2V0IGZpcnN0SW1hZ2UoKTogQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IFtpbWdBLCBpbWdCXSA9IHRoaXMuZ2V0Q29uc2VjdXRpdmVJbWFnZXMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZUxheW91dCA/IGltZ0IgOiBpbWdBO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldnVlbHZlIGxhIGltYWdlbiBzZWN1bmRhcmlhIChkZXJlY2hhIGVuIGxheW91dCBub3JtYWwsIGl6cXVpZXJkYSBzaSByZXZlcnNlTGF5b3V0PXRydWUpLlxuICAgICAqIEVsIEhUTUwgc2llbXByZSB1c2Egc2Vjb25kSW1hZ2UgcGFyYSBsYSBjb2x1bW5hIGRlIGltYWdlbiBzZWN1bmRhcmlhLlxuICAgICAqL1xuICAgIGdldCBzZWNvbmRJbWFnZSgpOiBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgW2ltZ0EsIGltZ0JdID0gdGhpcy5nZXRDb25zZWN1dGl2ZUltYWdlcygpO1xuICAgICAgICByZXR1cm4gdGhpcy5yZXZlcnNlTGF5b3V0ID8gaW1nQSA6IGltZ0I7XG4gICAgfVxuXG4gICAgZ2V0IG1lZGlhSW1hZ2UoKTogQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5ub3JtYWxpemVkTXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXTtcbiAgICAgICAgY29uc3Qgc2Vjb25kID0gdGhpcy5ub3JtYWxpemVkTXVsdGltZWRpYT8uaW1hZ2VuZXM/LlsxXTtcblxuICAgICAgICBpZiAodGhpcy5jb250ZW50SW1hZ2UgPT09IGZpcnN0KSByZXR1cm4gc2Vjb25kID8/IGZpcnN0O1xuICAgICAgICBpZiAodGhpcy5jb250ZW50SW1hZ2UgPT09IHNlY29uZCkgcmV0dXJuIGZpcnN0ID8/IHNlY29uZDtcblxuICAgICAgICByZXR1cm4gc2Vjb25kID8/IGZpcnN0O1xuICAgIH1cblxuICAgIGdldCBjdGFCdXR0b24oKTogQmFieWxvbkJ1dHRvbkkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50SW1hZ2U/LmJ1dHRvbnM/LlswXSA/PyB0aGlzLmJ1dHRvbnM/LlswXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1RleHQoaW1hZ2U/OiBCYWJ5bG9uSW1hZ2VJKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIShcbiAgICAgICAgICAgIGltYWdlPy50aXRsZT8udHJpbSgpIHx8XG4gICAgICAgICAgICBpbWFnZT8uc3VidGl0bGU/LnRyaW0oKSB8fFxuICAgICAgICAgICAgaW1hZ2U/LmRlc2NyaXB0aW9uPy50cmltKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUm9vbURldGFpbChcbiAgICAgICAgdmFsdWU6IEJhYnlsb25NdWx0aW1lZGlhSSB8IEJhYnlsb25Sb29tRGV0YWlsSVxuICAgICk6IHZhbHVlIGlzIEJhYnlsb25Sb29tRGV0YWlsSSB7XG4gICAgICAgIHJldHVybiAnaW1hZ2VzJyBpbiB2YWx1ZSB8fCAndGV4dHMnIGluIHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBub3JtYWxpemVkTXVsdGltZWRpYSgpOiBCYWJ5bG9uTXVsdGltZWRpYUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9ybWFsaXplZE11bHRpbWVkaWE7XG4gICAgfVxuXG4gICAgaGFzSW1hZ2VTcmMoaW1hZ2U/OiBCYWJ5bG9uSW1hZ2VJKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIWltYWdlPy5pbWc/LnNyYz8udHJpbSgpO1xuICAgIH1cblxuICAgIGhhc0ltYWdlRXJyb3Ioa2V5OiAnZmlyc3QnIHwgJ3NlY29uZCcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW1hZ2VFcnJvcnMuaGFzKGtleSk7XG4gICAgfVxuXG4gICAgb25JbWFnZUVycm9yKGtleTogJ2ZpcnN0JyB8ICdzZWNvbmQnKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW1hZ2VFcnJvcnMuYWRkKGtleSk7XG4gICAgfVxufVxuIiwiQGlmIChmaXJzdEltYWdlIHx8IHNlY29uZEltYWdlKSB7XG4gICAgPHNlY3Rpb25cbiAgICAgICAgY2xhc3M9XCJtZGwtdG9wYzJpbWd0ZXh0XCJcbiAgICAgICAgW2NsYXNzLnJldmVyc2VdPVwicmV2ZXJzZUxheW91dFwiXG4gICAgICAgIFthdHRyLmlkXT1cImlkZW50aWZpZXJcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1kbC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWNvbHVtbGVmdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChmaXJzdEltYWdlPy50aXRsZSB8fCB0ZXh0cz8udGl0bGUgfHwgdGV4dHM/Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tdGl0dWxvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImZpcnN0SW1hZ2U/LnRpdGxlIHx8IHRleHRzPy50aXRsZSB8fCB0ZXh0cz8ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChmaXJzdEltYWdlPy5zdWJ0aXRsZSB8fCB0ZXh0cz8uc3VidGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXN1YnRpdHVsb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpcnN0SW1hZ2U/LnN1YnRpdGxlIHx8IHRleHRzPy5zdWJ0aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0taW1hZ2VcIiAqbmdJZj1cImZpcnN0SW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaGFzSW1hZ2VTcmMoZmlyc3RJbWFnZSkgJiYgIWhhc0ltYWdlRXJyb3IoJ2ZpcnN0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZmlyc3RJbWFnZT8uaW1nPy5zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RJbWFnZT8uaW1nPy5hbHQgPz8gZmlyc3RJbWFnZT8uYWx0ID8/ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKT1cIm9uSW1hZ2VFcnJvcignZmlyc3QnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWltYWdlLXBsYWNlaG9sZGVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGZpcnN0SW1hZ2U/LmRlc2NyaXB0aW9uIHx8IHRleHRzPy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS10ZXh0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RJbWFnZT8uZGVzY3JpcHRpb24gfHwgdGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGN0YUJ1dHRvbjsgYXMgYnRuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1idXR0b25EXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidG4/LnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImJ0bj8ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhcmdldF09XCJidG4/LnRhcmdldCB8fCAnX3NlbGYnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG4/LnRhcmdldCB8fCAnX3NlbGYnKSA9PT0gJ19ibGFuaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ25vb3BlbmVyIG5vcmVmZXJyZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnRuPy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYnRuPy5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWNvbHVtcmlnaHRcIiAqbmdJZj1cInNlY29uZEltYWdlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0taW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChoYXNJbWFnZVNyYyhzZWNvbmRJbWFnZSkgJiYgIWhhc0ltYWdlRXJyb3IoJ3NlY29uZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJzZWNvbmRJbWFnZT8uaW1nPy5zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwic2Vjb25kSW1hZ2U/LmltZz8uYWx0ID8/IHNlY29uZEltYWdlPy5hbHQgPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwib25JbWFnZUVycm9yKCdzZWNvbmQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWltYWdlLXBsYWNlaG9sZGVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG59XG4iXX0=
@@ -29869,9 +29869,8 @@ class TopC2ImgTxtComponent {
29869
29869
  }
29870
29870
  }
29871
29871
  get reverseLayout() {
29872
- const images = this._normalizedMultimedia?.imagenes ?? [];
29873
- const first = this.getImageByOrder(1, images);
29874
- const second = this.getImageByOrder(2, images);
29872
+ // Usar el mismo par de imágenes que se muestran (consecutivas)
29873
+ const [first, second] = this.getConsecutiveImages();
29875
29874
  if (!this.hasText(first) && this.hasText(second)) {
29876
29875
  return true;
29877
29876
  }
@@ -29907,15 +29906,38 @@ class TopC2ImgTxtComponent {
29907
29906
  * Devuelve la imagen principal (izquierda en layout normal, derecha si reverseLayout=true).
29908
29907
  * El HTML siempre usa firstImage para la columna de contenido/texto.
29909
29908
  */
29909
+ /**
29910
+ * Encuentra el par de imágenes consecutivas más bajo (por ejemplo, 1-2, 2-3, etc.)
29911
+ * Si no hay pares consecutivos, usa los dos primeros ordenados.
29912
+ */
29913
+ getConsecutiveImages() {
29914
+ const images = this.orderedImages;
29915
+ if (images.length < 2)
29916
+ return [images[0], undefined];
29917
+ // search the lowest consecutive pair (1-2, 2-3, etc.)
29918
+ for (let i = 0; i < images.length - 1; i++) {
29919
+ const orderA = images[i]?.order;
29920
+ const orderB = images[i + 1]?.order;
29921
+ const numA = typeof orderA === 'number' ? orderA : (orderA !== undefined ? parseInt(orderA, 10) : undefined);
29922
+ const numB = typeof orderB === 'number' ? orderB : (orderB !== undefined ? parseInt(orderB, 10) : undefined);
29923
+ if (typeof numA === 'number' && typeof numB === 'number' && numB - numA === 1) {
29924
+ return [images[i], images[i + 1]];
29925
+ }
29926
+ }
29927
+ // Si no hay pares consecutivos, usar los dos primeros
29928
+ return [images[0], images[1]];
29929
+ }
29910
29930
  get firstImage() {
29911
- return this.reverseLayout ? this.orderedImages[1] : this.orderedImages[0];
29931
+ const [imgA, imgB] = this.getConsecutiveImages();
29932
+ return this.reverseLayout ? imgB : imgA;
29912
29933
  }
29913
29934
  /**
29914
29935
  * Devuelve la imagen secundaria (derecha en layout normal, izquierda si reverseLayout=true).
29915
29936
  * El HTML siempre usa secondImage para la columna de imagen secundaria.
29916
29937
  */
29917
29938
  get secondImage() {
29918
- return this.reverseLayout ? this.orderedImages[0] : this.orderedImages[1];
29939
+ const [imgA, imgB] = this.getConsecutiveImages();
29940
+ return this.reverseLayout ? imgA : imgB;
29919
29941
  }
29920
29942
  get mediaImage() {
29921
29943
  const first = this.normalizedMultimedia?.imagenes?.[0];