valtech-components 2.0.879 → 2.0.880

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.
@@ -141,6 +141,17 @@ export const PATTERN_PALETTES = {
141
141
  rose: ['#12010a', '#2e0420', '#6b0a48', '#b01870', '#e040a0', '#f080c8', '#f8bce4', '#fde0f3'],
142
142
  gold: ['#100800', '#2a1a00', '#5c3800', '#9e6000', '#d4920a', '#f0bc40', '#f8da8c', '#fdf0cc'],
143
143
  mono: ['#080808', '#1a1a1a', '#303030', '#484848', '#707070', '#9e9e9e', '#cecece', '#f0f0f0'],
144
+ // ── Paletas brand Valtech ──────────────────────────────────────────────────
145
+ // deep teal → bright cyan
146
+ teal: ['#011a16', '#022e28', '#045042', '#077a64', '#0aa88c', '#2ecfb0', '#7aead8', '#c0f7ef'],
147
+ // navy profundo → azul cielo
148
+ ocean: ['#010c18', '#021a30', '#043060', '#0a5090', '#1478c0', '#3a9fdd', '#85ccee', '#c8e9f8'],
149
+ // violeta ultrabrillante (más vívido que purple, más eléctrico)
150
+ violet: ['#0d0025', '#1e0050', '#400090', '#6600cc', '#8c2af2', '#b06af8', '#d4a8fc', '#ecd8fe'],
151
+ // crepúsculo purple-blue (dusk — mezcla atmosférica)
152
+ dusk: ['#08051e', '#130a40', '#221880', '#3828b4', '#5548d8', '#8080e8', '#b4b4f4', '#ddddfb'],
153
+ // gris-azul corporativo frío (slate — tech neutral)
154
+ slate: ['#060c14', '#0e1e30', '#1c3550', '#2c5070', '#4278a0', '#6aa0c8', '#a4c6e4', '#d4e8f6'],
144
155
  };
145
156
  export const PATTERN_STYLE_CONFIGS = {
146
157
  branded: { chev: 0.58, stroke: 0.1, circle: 0.04, shape: 0.06, solid: 0.18, num: 0.0 },
@@ -209,6 +220,7 @@ export function generateRandomTile(palette, chevronDensity = 0.55, rng = Math.ra
209
220
  }
210
221
  return { motif: key, bg: palette[bgIdx], fg: palette[fgIdx] };
211
222
  }
223
+ const ROTATIONS = [0, 90, 180, 270];
212
224
  /** Genera matriz completa de tiles. */
213
225
  export function generatePatternTiles(cfg) {
214
226
  const { cols, rows, seed, palette } = cfg;
@@ -217,7 +229,11 @@ export function generatePatternTiles(cfg) {
217
229
  const r = mulberry32(seed);
218
230
  const tiles = [];
219
231
  for (let i = 0; i < cols * rows; i++) {
220
- tiles.push(generateRandomTile(palette, chevronDensity, r, densityConfig));
232
+ const tile = generateRandomTile(palette, chevronDensity, r, densityConfig);
233
+ if (cfg.tileRotation) {
234
+ tile.rot = ROTATIONS[Math.floor(r() * 4)];
235
+ }
236
+ tiles.push(tile);
221
237
  }
222
238
  return tiles;
223
239
  }
@@ -234,8 +250,9 @@ export function renderPatternSvgInner(tiles, cols, baseColor) {
234
250
  const r = Math.floor(i / cols);
235
251
  const t = tiles[i];
236
252
  const shape = PATTERN_MOTIFS[t.motif](t.fg);
237
- inner += `<g transform="translate(${c * 100} ${r * 100})"><rect width="100" height="100" fill="${t.bg}"/>${shape}</g>`;
253
+ const shapeEl = t.rot ? `<g transform="rotate(${t.rot} 50 50)">${shape}</g>` : shape;
254
+ inner += `<g transform="translate(${c * 100} ${r * 100})"><rect width="100" height="100" fill="${t.bg}"/>${shapeEl}</g>`;
238
255
  }
239
256
  return inner;
240
257
  }
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW90aWZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2F0b21zL3BhdHRlcm4vbW90aWZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBNkNILE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVMsRUFBRSxJQUFZLFdBQVcsRUFBRSxFQUFFLENBQ3ZELFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyw4REFBOEQsQ0FBQztBQUVqRyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQW9EO0lBQzdFLCtEQUErRDtJQUMvRCxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ2pFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDakUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUNqRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ2pFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxTQUFTLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLElBQUk7SUFDckYsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtJQUNyRixTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxzRUFBc0UsQ0FBQyxLQUFLO0lBQzVGLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFFQUFx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QWEsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxLQUFvQixFQUNwQixJQUFZLEVBQ1osU0FBaUI7SUFFakIsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNyQixJQUFJLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsV0FBVyxTQUFTLEtBQUssQ0FBQztJQUNyRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBRSxDQUFDO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLEtBQUssSUFBSSwyQkFBMkIsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRywyQ0FBMkMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQztJQUN6SCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWYWx0ZWNoIFBhdHRlcm4gU3lzdGVtIOKAlCBtb3RpZnMgKyBwYWxldHRlcy5cbiAqXG4gKiBQdXJlIGRhdGEgKyBoZWxwZXJzLCBzaW4gZGVwZW5kZW5jaWFzIEFuZ3VsYXIuIFJldXNhYmxlIGRlc2RlIE5vZGUvc2NyaXB0c1xuICogKGUuZy4sIGdlbmVyYXRlIHN0YXRpYyB0aHVtYm5haWxzKSBvIGRlc2RlIGVsIGNvbXBvbmVudGUgYHZhbC1wYXR0ZXJuYC5cbiAqXG4gKiBPcmlnaW5hbCBzcGVjOiBgYXNzZXRzL1ZhbHRlY2ggUGF0dGVybiBTeXN0ZW0uaHRtbGAgKHNpbmdsZS1wYWdlIGRlbW8pLlxuICogQ2FkYSBtb3RpZiBlcyBmdW5jacOzbiBgKGZpbGw6IHN0cmluZykgPT4gc3RyaW5nYCBxdWUgZGV2dWVsdmUgU1ZHIGlubmVyXG4gKiBtYXJrdXAuIFRpbGUgZXMgMTAweDEwMCB1bmlkYWRlczsgZWwgbW90aWYgc2UgcmVuZGVyaXphIGRlbnRybyBkZSB1biBgPGdcbiAqIHRyYW5zZm9ybT1cInRyYW5zbGF0ZShjb2wqMTAwIHJvdyoxMDApXCI+YCBjb24gdW4gYDxyZWN0IHdpZHRoPTEwMCBoZWlnaHQ9MTAwXG4gKiBmaWxsPWJnLz5gIGRlIGZvbmRvLlxuICovXG5cbmV4cG9ydCB0eXBlIFBhdHRlcm5Nb3RpZktleSA9XG4gIHwgJ2NoZXYtcidcbiAgfCAnY2hldi1sJ1xuICB8ICdjaGV2LWQnXG4gIHwgJ2NoZXYtdSdcbiAgfCAndHJpLXRsJ1xuICB8ICd0cmktdHInXG4gIHwgJ3RyaS1ibCdcbiAgfCAndHJpLWJyJ1xuICB8ICdzb2xpZCdcbiAgfCAnZGlhbW9uZCdcbiAgfCAnc21hbGwtcidcbiAgfCAnc21hbGwtbCdcbiAgfCAnYXJyb3ctcidcbiAgfCAnYXJyb3ctbCdcbiAgfCAnaG91c2UtZCdcbiAgfCAnaGFsZi1sJ1xuICB8ICdoYWxmLXQnXG4gIC8vIOKUgOKUgCBOdWV2b3MgbW90aWZzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICB8ICdjaXJjbGUnXG4gIHwgJ2NpcmNsZS1zbSdcbiAgfCAnZG90J1xuICB8ICdjcm9zcydcbiAgfCAneC1tYXJrJ1xuICB8ICdzbGFzaC1yJ1xuICB8ICdzbGFzaC1sJ1xuICB8ICdjb3JuZXItdGwnXG4gIHwgJ2Nvcm5lci10cidcbiAgfCAnY29ybmVyLWJsJ1xuICB8ICdjb3JuZXItYnInXG4gIC8vIOKUgOKUgCBMb2dvIHN5bWJvbHMgKyBuw7ptZXJvcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgfCAndW5kZXJzY29yZSdcbiAgfCAnbnVtLTAnXG4gIHwgJ251bS0xJ1xuICB8ICdudW0tMidcbiAgfCAnbnVtLTMnXG4gIHwgJ251bS00J1xuICB8ICdudW0tNSdcbiAgfCAnbnVtLTYnXG4gIHwgJ251bS03J1xuICB8ICdudW0tOCdcbiAgfCAnbnVtLTknO1xuXG5jb25zdCBDSEVWX1NUUk9LRSA9IDE4O1xuY29uc3QgQ0hFVl9TTUFMTF9TVFJPS0UgPSAxMjtcbmNvbnN0IGNoZXZTdHlsZSA9IChmOiBzdHJpbmcsIHc6IG51bWJlciA9IENIRVZfU1RST0tFKSA9PlxuICBgc3Ryb2tlPVwiJHtmfVwiIHN0cm9rZS13aWR0aD1cIiR7d31cIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBmaWxsPVwibm9uZVwiYDtcblxuZXhwb3J0IGNvbnN0IFBBVFRFUk5fTU9USUZTOiBSZWNvcmQ8UGF0dGVybk1vdGlmS2V5LCAoZmc6IHN0cmluZykgPT4gc3RyaW5nPiA9IHtcbiAgLy8g4pSA4pSAIENoZXZyb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAnY2hldi1yJzogZiA9PiBgPHBhdGggZD1cIk0yMiAxOCBMNzIgNTAgTDIyIDgyXCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnY2hldi1sJzogZiA9PiBgPHBhdGggZD1cIk03OCAxOCBMMjggNTAgTDc4IDgyXCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnY2hldi1kJzogZiA9PiBgPHBhdGggZD1cIk0xOCAyMiBMNTAgNzIgTDgyIDIyXCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnY2hldi11JzogZiA9PiBgPHBhdGggZD1cIk0xOCA3OCBMNTAgMjggTDgyIDc4XCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnc21hbGwtcic6IGYgPT4gYDxwYXRoIGQ9XCJNMzggMzIgTDYyIDUwIEwzOCA2OFwiICR7Y2hldlN0eWxlKGYsIENIRVZfU01BTExfU1RST0tFKX0vPmAsXG4gICdzbWFsbC1sJzogZiA9PiBgPHBhdGggZD1cIk02MiAzMiBMMzggNTAgTDYyIDY4XCIgJHtjaGV2U3R5bGUoZiwgQ0hFVl9TTUFMTF9TVFJPS0UpfS8+YCxcbiAgJ2Fycm93LXInOiBmID0+IGA8cGF0aCBkPVwiTTEwIDQyIEw2MCA0MiBMNjAgMjggTDkyIDUwIEw2MCA3MiBMNjAgNTggTDEwIDU4IFpcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnYXJyb3ctbCc6IGYgPT4gYDxwYXRoIGQ9XCJNOTAgNDIgTDQwIDQyIEw0MCAyOCBMOCA1MCBMNDAgNzIgTDQwIDU4IEw5MCA1OCBaXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgLy8g4pSA4pSAIFN0cm9rZXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIGNyb3NzOiBmID0+IGA8cGF0aCBkPVwiTTUwIDEyIEw1MCA4OCBNMTIgNTAgTDg4IDUwXCIgJHtjaGV2U3R5bGUoZiwgMTYpfS8+YCxcbiAgJ3gtbWFyayc6IGYgPT4gYDxwYXRoIGQ9XCJNMTggMTggTDgyIDgyIE04MiAxOCBMMTggODJcIiAke2NoZXZTdHlsZShmLCAxNil9Lz5gLFxuICAnc2xhc2gtcic6IGYgPT5cbiAgICBgPGxpbmUgeDE9XCIxOFwiIHkxPVwiODJcIiB4Mj1cIjgyXCIgeTI9XCIxOFwiIHN0cm9rZT1cIiR7Zn1cIiBzdHJva2Utd2lkdGg9XCIxNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+YCxcbiAgJ3NsYXNoLWwnOiBmID0+XG4gICAgYDxsaW5lIHgxPVwiMThcIiB5MT1cIjE4XCIgeDI9XCI4MlwiIHkyPVwiODJcIiBzdHJva2U9XCIke2Z9XCIgc3Ryb2tlLXdpZHRoPVwiMTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPmAsXG4gIC8vIOKUgOKUgCBGaWxsZWQgc2hhcGVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICBjaXJjbGU6IGYgPT4gYDxjaXJjbGUgY3g9XCI1MFwiIGN5PVwiNTBcIiByPVwiNDBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnY2lyY2xlLXNtJzogZiA9PiBgPGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCIyNFwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gIGRvdDogZiA9PiBgPGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCIxMlwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gIGRpYW1vbmQ6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjUwLDEyIDg4LDUwIDUwLDg4IDEyLDUwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgc29saWQ6ICgpID0+IGBgLFxuICAvLyDilIDilIAgVHJpYW5nbGVzICYgaGFsdmVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAndHJpLXRsJzogZiA9PiBgPHBvbHlnb24gcG9pbnRzPVwiMCwwIDEwMCwwIDAsMTAwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ3RyaS10cic6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjAsMCAxMDAsMCAxMDAsMTAwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ3RyaS1ibCc6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjAsMCAxMDAsMTAwIDAsMTAwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ3RyaS1icic6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjEwMCwwIDEwMCwxMDAgMCwxMDBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnaGFsZi1sJzogZiA9PiBgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNTBcIiBoZWlnaHQ9XCIxMDBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnaGFsZi10JzogZiA9PiBgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMTAwXCIgaGVpZ2h0PVwiNTBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnaG91c2UtZCc6IGYgPT5cbiAgICBgPHBvbHlnb24gcG9pbnRzPVwiNTAsMjAgODgsNTAgMTIsNTBcIiBmaWxsPVwiJHtmfVwiLz48cmVjdCB4PVwiMjhcIiB5PVwiNTBcIiB3aWR0aD1cIjQ0XCIgaGVpZ2h0PVwiMzJcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAvLyDilIDilIAgQ29ybmVyIGFyY3Mg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICdjb3JuZXItdGwnOiBmID0+IGA8cGF0aCBkPVwiTSAwIDAgTCAxMDAgMCBBIDEwMCAxMDAgMCAwIDEgMCAxMDAgWlwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gICdjb3JuZXItdHInOiBmID0+IGA8cGF0aCBkPVwiTSAxMDAgMCBMIDAgMCBBIDEwMCAxMDAgMCAwIDAgMTAwIDEwMCBaXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ2Nvcm5lci1ibCc6IGYgPT4gYDxwYXRoIGQ9XCJNIDAgMTAwIEwgMTAwIDEwMCBBIDEwMCAxMDAgMCAwIDAgMCAwIFpcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnY29ybmVyLWJyJzogZiA9PiBgPHBhdGggZD1cIk0gMTAwIDEwMCBMIDAgMTAwIEEgMTAwIDEwMCAwIDAgMSAxMDAgMCBaXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgLy8g4pSA4pSAIExvZ28gc3ltYm9sIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICB1bmRlcnNjb3JlOiBmID0+IGA8cmVjdCB4PVwiMTRcIiB5PVwiNzJcIiB3aWR0aD1cIjcyXCIgaGVpZ2h0PVwiMTRcIiByeD1cIjVcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAvLyDilIDilIAgTsO6bWVyb3Mg4oCUIG1vbm9zcGFjZSBib2xkLCBiYXNlbGluZSBjZW50cmFkYSBlbiB0aWxlIDEwMHgxMDAg4pSA4pSAXG4gICdudW0tMCc6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjA8L3RleHQ+YCxcbiAgJ251bS0xJzogZiA9PlxuICAgIGA8dGV4dCB4PVwiNTBcIiB5PVwiNzZcIiBmb250LXNpemU9XCI2OFwiIGZvbnQtd2VpZ2h0PVwiODAwXCIgZm9udC1mYW1pbHk9XCJ1aS1tb25vc3BhY2UsJ0NvdXJpZXIgTmV3Jyxtb25vc3BhY2VcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGZpbGw9XCIke2Z9XCI+MTwvdGV4dD5gLFxuICAnbnVtLTInOiBmID0+XG4gICAgYDx0ZXh0IHg9XCI1MFwiIHk9XCI3NlwiIGZvbnQtc2l6ZT1cIjY4XCIgZm9udC13ZWlnaHQ9XCI4MDBcIiBmb250LWZhbWlseT1cInVpLW1vbm9zcGFjZSwnQ291cmllciBOZXcnLG1vbm9zcGFjZVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgZmlsbD1cIiR7Zn1cIj4yPC90ZXh0PmAsXG4gICdudW0tMyc6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjM8L3RleHQ+YCxcbiAgJ251bS00JzogZiA9PlxuICAgIGA8dGV4dCB4PVwiNTBcIiB5PVwiNzZcIiBmb250LXNpemU9XCI2OFwiIGZvbnQtd2VpZ2h0PVwiODAwXCIgZm9udC1mYW1pbHk9XCJ1aS1tb25vc3BhY2UsJ0NvdXJpZXIgTmV3Jyxtb25vc3BhY2VcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGZpbGw9XCIke2Z9XCI+NDwvdGV4dD5gLFxuICAnbnVtLTUnOiBmID0+XG4gICAgYDx0ZXh0IHg9XCI1MFwiIHk9XCI3NlwiIGZvbnQtc2l6ZT1cIjY4XCIgZm9udC13ZWlnaHQ9XCI4MDBcIiBmb250LWZhbWlseT1cInVpLW1vbm9zcGFjZSwnQ291cmllciBOZXcnLG1vbm9zcGFjZVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgZmlsbD1cIiR7Zn1cIj41PC90ZXh0PmAsXG4gICdudW0tNic6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjY8L3RleHQ+YCxcbiAgJ251bS03JzogZiA9PlxuICAgIGA8dGV4dCB4PVwiNTBcIiB5PVwiNzZcIiBmb250LXNpemU9XCI2OFwiIGZvbnQtd2VpZ2h0PVwiODAwXCIgZm9udC1mYW1pbHk9XCJ1aS1tb25vc3BhY2UsJ0NvdXJpZXIgTmV3Jyxtb25vc3BhY2VcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGZpbGw9XCIke2Z9XCI+NzwvdGV4dD5gLFxuICAnbnVtLTgnOiBmID0+XG4gICAgYDx0ZXh0IHg9XCI1MFwiIHk9XCI3NlwiIGZvbnQtc2l6ZT1cIjY4XCIgZm9udC13ZWlnaHQ9XCI4MDBcIiBmb250LWZhbWlseT1cInVpLW1vbm9zcGFjZSwnQ291cmllciBOZXcnLG1vbm9zcGFjZVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgZmlsbD1cIiR7Zn1cIj44PC90ZXh0PmAsXG4gICdudW0tOSc6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjk8L3RleHQ+YCxcbn07XG5cbmV4cG9ydCBjb25zdCBNT1RJRl9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IE9iamVjdC5rZXlzKFBBVFRFUk5fTU9USUZTKSBhcyBQYXR0ZXJuTW90aWZLZXlbXTtcblxuLy8g4pSA4pSAIEZhbWlsaWFzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKiogQ2hldnJvbiBmYW1pbHkg4oCUIG9yaWVudGFjaW9uZXMgKyB2YXJpYW50ZXMgcGVxdWXDsWFzLiAqL1xuZXhwb3J0IGNvbnN0IENIRVZfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbXG4gICdjaGV2LXInLFxuICAnY2hldi1sJyxcbiAgJ2NoZXYtZCcsXG4gICdjaGV2LXUnLFxuICAnc21hbGwtcicsXG4gICdzbWFsbC1sJyxcbiAgJ2Fycm93LXInLFxuICAnYXJyb3ctbCcsXG5dO1xuXG4vKiogU3Ryb2tlIGZhbWlseSDigJQgbMOtbmVhcywgY3J1Y2VzIHkgZWwgZ3Vpw7NuIGJham8gZGVsIGxvZ28gYD5fYC4gKi9cbmV4cG9ydCBjb25zdCBTVFJPS0VfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbXG4gICdjcm9zcycsXG4gICd4LW1hcmsnLFxuICAnc2xhc2gtcicsXG4gICdzbGFzaC1sJyxcbiAgJ3VuZGVyc2NvcmUnLFxuXTtcblxuLyoqIE51bWVyaWMgZmFtaWx5IOKAlCBkw61naXRvcyAwLTkgZW4gbW9ub3NwYWNlIGJvbGQuICovXG5leHBvcnQgY29uc3QgTlVNX0tFWVM6IFBhdHRlcm5Nb3RpZktleVtdID0gW1xuICAnbnVtLTAnLFxuICAnbnVtLTEnLFxuICAnbnVtLTInLFxuICAnbnVtLTMnLFxuICAnbnVtLTQnLFxuICAnbnVtLTUnLFxuICAnbnVtLTYnLFxuICAnbnVtLTcnLFxuICAnbnVtLTgnLFxuICAnbnVtLTknLFxuXTtcblxuLyoqIENpcmNsZSAvIGRvdCBmYW1pbHkg4oCUIGZvcm1hcyBjdXJ2YXMgY2VudHJhZGFzLiAqL1xuZXhwb3J0IGNvbnN0IENJUkNMRV9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IFsnY2lyY2xlJywgJ2NpcmNsZS1zbScsICdkb3QnXTtcblxuLyoqIERpYW1vbmQgc29sbyDigJQgZm9ybWEgZ2VvbcOpdHJpY2EgYW5ndWxhciBjZW50cmFkYS4gKi9cbmV4cG9ydCBjb25zdCBTSEFQRV9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IFsnZGlhbW9uZCddO1xuXG4vKiogVHJpYW5nbGUgLyBoYWxmLWZpbGwgZmFtaWx5LiAqL1xuZXhwb3J0IGNvbnN0IFRSSV9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IFtcbiAgJ3RyaS10bCcsXG4gICd0cmktdHInLFxuICAndHJpLWJsJyxcbiAgJ3RyaS1icicsXG4gICdoYWxmLWwnLFxuICAnaGFsZi10JyxcbiAgJ2hvdXNlLWQnLFxuXTtcblxuLyoqIENvcm5lciBhcmMgZmFtaWx5IOKAlCBtZXpjbGEgc3VhdmUgY29uIHRyaWFuZ2xlcy4gKi9cbmV4cG9ydCBjb25zdCBDT1JORVJfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbJ2Nvcm5lci10bCcsICdjb3JuZXItdHInLCAnY29ybmVyLWJsJywgJ2Nvcm5lci1iciddO1xuXG4vKiogTm8tZm9yZWdyb3VuZCB0aWxlcyDigJQgc29sbyByZWN0IGRlIGZvbmRvLiAqL1xuZXhwb3J0IGNvbnN0IFNPTElEX0tFWVM6IFBhdHRlcm5Nb3RpZktleVtdID0gWydzb2xpZCddO1xuXG4vLyDilIDilIAgUGFsZXRhcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqIEJ1aWx0LWluIHBhbGV0dGVzIOKAlCA4IGNvbG9yZXMgZGFyayDihpIgbGlnaHQuICovXG5leHBvcnQgdHlwZSBQYXR0ZXJuUGFsZXR0ZUtleSA9XG4gIHwgJ3B1cnBsZSdcbiAgfCAnaW5rJ1xuICB8ICdsYXZlbmRlcidcbiAgfCAnbWlkbmlnaHQnXG4gIHwgJ2VtYmVyJ1xuICB8ICdmb3Jlc3QnXG4gIHwgJ3Jvc2UnXG4gIHwgJ2dvbGQnXG4gIHwgJ21vbm8nO1xuXG5leHBvcnQgY29uc3QgUEFUVEVSTl9QQUxFVFRFUzogUmVjb3JkPFBhdHRlcm5QYWxldHRlS2V5LCBzdHJpbmdbXT4gPSB7XG4gIHB1cnBsZTogWycjMGUwNDIwJywgJyMyYTExNTgnLCAnIzRhMWQ5NicsICcjNzAyNmRmJywgJyM5MTU2ZTgnLCAnI2I0OGVlYScsICcjZDljM2Y1JywgJyNlYmRjZmQnXSxcbiAgaW5rOiBbJyMwMDAwMDAnLCAnIzBhMGYxYycsICcjMWEyMjM1JywgJyMyZDNhNTUnLCAnIzRhNTg3OCcsICcjN2Q4YWE1JywgJyNiOGMxZDQnLCAnI2U0ZThmMCddLFxuICBsYXZlbmRlcjogW1xuICAgICcjMWEwZTNhJyxcbiAgICAnIzJlMTc1NScsXG4gICAgJyM1YTNhYTAnLFxuICAgICcjN2U1ZGM2JyxcbiAgICAnI2ExOGJkOScsXG4gICAgJyNjNGE4ZjAnLFxuICAgICcjZGNjZWY1JyxcbiAgICAnI2YwZTZmYycsXG4gIF0sXG4gIG1pZG5pZ2h0OiBbXG4gICAgJyMwMjA4MTQnLFxuICAgICcjMDcxNDI4JyxcbiAgICAnIzBkMjI0OCcsXG4gICAgJyMxYTNhNmUnLFxuICAgICcjMjY1NmE4JyxcbiAgICAnIzRkODJkNCcsXG4gICAgJyM4YWI0ZWInLFxuICAgICcjYzVkOWY1JyxcbiAgXSxcbiAgZW1iZXI6IFsnIzEyMDIwMCcsICcjMmUwODAwJywgJyM2YjFhMDAnLCAnI2I4MzIwMCcsICcjZTg1YTEwJywgJyNmNTkwNDInLCAnI2Y5YzQ4YScsICcjZmRlOGNjJ10sXG4gIGZvcmVzdDogWycjMDEwYTA0JywgJyMwNTIwMTAnLCAnIzBhNDAyMCcsICcjMGY2NjM1JywgJyMxOGEwNTgnLCAnIzNlY2U4MCcsICcjODZlOGI0JywgJyNjNGY1ZGMnXSxcbiAgcm9zZTogWycjMTIwMTBhJywgJyMyZTA0MjAnLCAnIzZiMGE0OCcsICcjYjAxODcwJywgJyNlMDQwYTAnLCAnI2YwODBjOCcsICcjZjhiY2U0JywgJyNmZGUwZjMnXSxcbiAgZ29sZDogWycjMTAwODAwJywgJyMyYTFhMDAnLCAnIzVjMzgwMCcsICcjOWU2MDAwJywgJyNkNDkyMGEnLCAnI2YwYmM0MCcsICcjZjhkYThjJywgJyNmZGYwY2MnXSxcbiAgbW9ubzogWycjMDgwODA4JywgJyMxYTFhMWEnLCAnIzMwMzAzMCcsICcjNDg0ODQ4JywgJyM3MDcwNzAnLCAnIzllOWU5ZScsICcjY2VjZWNlJywgJyNmMGYwZjAnXSxcbn07XG5cbi8vIOKUgOKUgCBQcmVzZXRzIGRlIGVzdGlsbyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBQcmVzZXQgZGUgY29tcG9zaWNpw7NuIGRlbCBwYXRyw7NuLiBDb250cm9sYSBxdcOpIGZhbWlsaWFzIHByZWRvbWluYW4uXG4gKlxuICogLSBgYnJhbmRlZGAgICDihpIgQ2hldnJvbnMgZG9taW5hbnRlcyAoaWRlbnRpZGFkIFZhbHRlY2ggYD5fYCkuIERlZmF1bHQuXG4gKiAtIGBnZW9tZXRyaWNgIOKGkiBUcmnDoW5ndWxvcywgZXNxdWluYXMgeSBjw61yY3Vsb3MuIE3DoXMgYXJxdWl0ZWN0w7NuaWNvLlxuICogLSBgbWluaW1hbGAgICDihpIgRXNwYWNpb3Mgc8OzbGlkb3MgY29uIHRyYXpvcyBzdXRpbGVzLiBMaW1waW8sIGNvcnBvcmF0aXZvLlxuICogLSBgZGVuc2VgICAgICDihpIgTWV6Y2xhIHJpY2EgZGUgdG9kYXMgbGFzIGZhbWlsaWFzLiBNw6F4aW1hIHRleHR1cmEuXG4gKiAtIGBjb2RlYCAgICAgIOKGkiBOw7ptZXJvcywgdW5kZXJzY29yZSB5IGNoZXZyb25zLiBMb29rIGRlIHRlcm1pbmFsLlxuICovXG5leHBvcnQgdHlwZSBQYXR0ZXJuU3R5bGVLZXkgPSAnYnJhbmRlZCcgfCAnZ2VvbWV0cmljJyB8ICdtaW5pbWFsJyB8ICdkZW5zZScgfCAnY29kZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybkRlbnNpdHlDb25maWcge1xuICAvKiogUHJvYmFiaWxpZGFkIGRlIGNoZXZyb24gZmFtaWx5LiAqL1xuICBjaGV2OiBudW1iZXI7XG4gIC8qKiBQcm9iYWJpbGlkYWQgZGUgc3Ryb2tlIGZhbWlseSAoY3Jvc3MsIHgsIHNsYXNoLCB1bmRlcnNjb3JlKS4gKi9cbiAgc3Ryb2tlOiBudW1iZXI7XG4gIC8qKiBQcm9iYWJpbGlkYWQgZGUgY8OtcmN1bG9zLiAqL1xuICBjaXJjbGU6IG51bWJlcjtcbiAgLyoqIFByb2JhYmlsaWRhZCBkZSBkaWFtb25kLiAqL1xuICBzaGFwZTogbnVtYmVyO1xuICAvKiogUHJvYmFiaWxpZGFkIGRlIHNvbGlkIChlc3BhY2lvIHZhY8OtbykuICovXG4gIHNvbGlkOiBudW1iZXI7XG4gIC8qKiBQcm9iYWJpbGlkYWQgZGUgbnVtZXJpYyBmYW1pbHkgKDAtOSkuIERlZmF1bHQ6IDAuICovXG4gIG51bT86IG51bWJlcjtcbiAgLyoqIFJlc3RvIOKGkiB0cmlhbmdsZXMgKyBjb3JuZXJzLiAqL1xufVxuXG5leHBvcnQgY29uc3QgUEFUVEVSTl9TVFlMRV9DT05GSUdTOiBSZWNvcmQ8UGF0dGVyblN0eWxlS2V5LCBQYXR0ZXJuRGVuc2l0eUNvbmZpZz4gPSB7XG4gIGJyYW5kZWQ6IHsgY2hldjogMC41OCwgc3Ryb2tlOiAwLjEsIGNpcmNsZTogMC4wNCwgc2hhcGU6IDAuMDYsIHNvbGlkOiAwLjE4LCBudW06IDAuMCB9LFxuICBnZW9tZXRyaWM6IHsgY2hldjogMC4xNSwgc3Ryb2tlOiAwLjA1LCBjaXJjbGU6IDAuMTgsIHNoYXBlOiAwLjE0LCBzb2xpZDogMC4xLCBudW06IDAuMCB9LFxuICBtaW5pbWFsOiB7IGNoZXY6IDAuMjUsIHN0cm9rZTogMC4xLCBjaXJjbGU6IDAuMTIsIHNoYXBlOiAwLjA0LCBzb2xpZDogMC4zOCwgbnVtOiAwLjAgfSxcbiAgZGVuc2U6IHsgY2hldjogMC40LCBzdHJva2U6IDAuMTQsIGNpcmNsZTogMC4xMiwgc2hhcGU6IDAuMSwgc29saWQ6IDAuMDgsIG51bTogMC4wMiB9LFxuICBjb2RlOiB7IGNoZXY6IDAuMzUsIHN0cm9rZTogMC4xOCwgY2lyY2xlOiAwLjAyLCBzaGFwZTogMC4wMiwgc29saWQ6IDAuMTIsIG51bTogMC4yIH0sXG59O1xuXG4vLyDilIDilIAgUk5HIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIE11bGJlcnJ5MzIgc2VlZGVkIFJORyDigJQgZGV2dWVsdmUgZnVuY2nDs24gYCgpPT5bMCwxKWAuXG4gKiBEZXRlcm1pbmlzdGljOiBtaXNtbyBzZWVkIOKGkiBtaXNtYSBzZWN1ZW5jaWEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtdWxiZXJyeTMyKHNlZWQ6IG51bWJlcik6ICgpID0+IG51bWJlciB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgc2VlZCA9IChzZWVkICsgMHg2ZDJiNzlmNSkgPj4+IDA7XG4gICAgbGV0IHQgPSBzZWVkO1xuICAgIHQgPSBNYXRoLmltdWwodCBeICh0ID4+PiAxNSksIHQgfCAxKTtcbiAgICB0IF49IHQgKyBNYXRoLmltdWwodCBeICh0ID4+PiA3KSwgdCB8IDYxKTtcbiAgICByZXR1cm4gKCh0IF4gKHQgPj4+IDE0KSkgPj4+IDApIC8gNDI5NDk2NzI5NjtcbiAgfTtcbn1cblxuLy8g4pSA4pSAIEdlbmVyYWNpw7NuIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5HZW5Db25maWcge1xuICBjb2xzOiBudW1iZXI7XG4gIHJvd3M6IG51bWJlcjtcbiAgc2VlZDogbnVtYmVyO1xuICBwYWxldHRlOiBzdHJpbmdbXTtcbiAgY2hldnJvbkRlbnNpdHk/OiBudW1iZXI7XG4gIHN0eWxlPzogUGF0dGVyblN0eWxlS2V5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5UaWxlIHtcbiAgbW90aWY6IFBhdHRlcm5Nb3RpZktleTtcbiAgYmc6IHN0cmluZztcbiAgZmc6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gcGlja0Zyb208VD4oYXJyOiBUW10sIHJuZzogKCkgPT4gbnVtYmVyKTogVCB7XG4gIHJldHVybiBhcnJbTWF0aC5mbG9vcihybmcoKSAqIGFyci5sZW5ndGgpXSE7XG59XG5cbi8qKlxuICogR2VuZXJhIFVOIHRpbGUgcmVzcGV0YW5kbyBkZW5zaWRhZGVzIGRlIGZhbWlsaWEgKyBjb250cmFzdGUgZGUgcGFsZXR0ZS5cbiAqIEFjZXB0YSB1biBjb25maWcgb3BjaW9uYWwgZGUgZGVuc2lkYWRlcyAoZGUgUGF0dGVyblN0eWxlS2V5IG8gY2hldnJvbkRlbnNpdHkgbGVnYWN5KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUmFuZG9tVGlsZShcbiAgcGFsZXR0ZTogc3RyaW5nW10sXG4gIGNoZXZyb25EZW5zaXR5ID0gMC41NSxcbiAgcm5nOiAoKSA9PiBudW1iZXIgPSBNYXRoLnJhbmRvbSxcbiAgZGVuc2l0eUNvbmZpZz86IFBhdHRlcm5EZW5zaXR5Q29uZmlnXG4pOiBQYXR0ZXJuVGlsZSB7XG4gIGNvbnN0IGNmZyA9IGRlbnNpdHlDb25maWcgPz8ge1xuICAgIGNoZXY6IGNoZXZyb25EZW5zaXR5LFxuICAgIHN0cm9rZTogMC4wOCxcbiAgICBjaXJjbGU6IDAuMDUsXG4gICAgc2hhcGU6IDAuMDcsXG4gICAgc29saWQ6IDAuMixcbiAgfTtcblxuICBjb25zdCByb2xsID0gcm5nKCk7XG4gIGxldCBrZXk6IFBhdHRlcm5Nb3RpZktleTtcblxuICBjb25zdCB0MSA9IGNmZy5jaGV2O1xuICBjb25zdCB0MiA9IHQxICsgY2ZnLnN0cm9rZTtcbiAgY29uc3QgdDMgPSB0MiArIGNmZy5jaXJjbGU7XG4gIGNvbnN0IHQ0ID0gdDMgKyBjZmcuc2hhcGU7XG4gIGNvbnN0IHQ1ID0gdDQgKyBjZmcuc29saWQ7XG4gIGNvbnN0IHQ2ID0gdDUgKyAoY2ZnLm51bSA/PyAwKTtcblxuICBpZiAocm9sbCA8IHQxKSBrZXkgPSBwaWNrRnJvbShDSEVWX0tFWVMsIHJuZyk7XG4gIGVsc2UgaWYgKHJvbGwgPCB0Mikga2V5ID0gcGlja0Zyb20oU1RST0tFX0tFWVMsIHJuZyk7XG4gIGVsc2UgaWYgKHJvbGwgPCB0Mykga2V5ID0gcGlja0Zyb20oQ0lSQ0xFX0tFWVMsIHJuZyk7XG4gIGVsc2UgaWYgKHJvbGwgPCB0NCkga2V5ID0gcGlja0Zyb20oU0hBUEVfS0VZUywgcm5nKTtcbiAgZWxzZSBpZiAocm9sbCA8IHQ1KSBrZXkgPSBwaWNrRnJvbShTT0xJRF9LRVlTLCBybmcpO1xuICBlbHNlIGlmIChyb2xsIDwgdDYpIGtleSA9IHBpY2tGcm9tKE5VTV9LRVlTLCBybmcpO1xuICBlbHNlIGtleSA9IHBpY2tGcm9tKFsuLi5UUklfS0VZUywgLi4uQ09STkVSX0tFWVNdLCBybmcpO1xuXG4gIGNvbnN0IGJnSWR4ID0gTWF0aC5mbG9vcihybmcoKSAqIHBhbGV0dGUubGVuZ3RoKTtcbiAgbGV0IGZnSWR4ID0gTWF0aC5mbG9vcihybmcoKSAqIHBhbGV0dGUubGVuZ3RoKTtcbiAgbGV0IHRyaWVzID0gMDtcbiAgd2hpbGUgKE1hdGguYWJzKGZnSWR4IC0gYmdJZHgpIDwgMyAmJiB0cmllcyA8IDYpIHtcbiAgICBmZ0lkeCA9IE1hdGguZmxvb3Iocm5nKCkgKiBwYWxldHRlLmxlbmd0aCk7XG4gICAgdHJpZXMrKztcbiAgfVxuICByZXR1cm4geyBtb3RpZjoga2V5LCBiZzogcGFsZXR0ZVtiZ0lkeF0hLCBmZzogcGFsZXR0ZVtmZ0lkeF0hIH07XG59XG5cbi8qKiBHZW5lcmEgbWF0cml6IGNvbXBsZXRhIGRlIHRpbGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUGF0dGVyblRpbGVzKGNmZzogUGF0dGVybkdlbkNvbmZpZyk6IFBhdHRlcm5UaWxlW10ge1xuICBjb25zdCB7IGNvbHMsIHJvd3MsIHNlZWQsIHBhbGV0dGUgfSA9IGNmZztcbiAgY29uc3QgY2hldnJvbkRlbnNpdHkgPSBjZmcuY2hldnJvbkRlbnNpdHkgPz8gMC41NTtcbiAgY29uc3QgZGVuc2l0eUNvbmZpZyA9IGNmZy5zdHlsZSA/IFBBVFRFUk5fU1RZTEVfQ09ORklHU1tjZmcuc3R5bGVdIDogdW5kZWZpbmVkO1xuICBjb25zdCByID0gbXVsYmVycnkzMihzZWVkKTtcbiAgY29uc3QgdGlsZXM6IFBhdHRlcm5UaWxlW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2xzICogcm93czsgaSsrKSB7XG4gICAgdGlsZXMucHVzaChnZW5lcmF0ZVJhbmRvbVRpbGUocGFsZXR0ZSwgY2hldnJvbkRlbnNpdHksIHIsIGRlbnNpdHlDb25maWcpKTtcbiAgfVxuICByZXR1cm4gdGlsZXM7XG59XG5cbi8qKlxuICogUmVuZGVyaXphIGVsIGlubmVyIFNWRyAoc2luIGVsIGA8c3ZnPmAgcm9vdCkgcGFyYSB1bmEgbWF0cml6IGRlIHRpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyUGF0dGVyblN2Z0lubmVyKFxuICB0aWxlczogUGF0dGVyblRpbGVbXSxcbiAgY29sczogbnVtYmVyLFxuICBiYXNlQ29sb3I6IHN0cmluZ1xuKTogc3RyaW5nIHtcbiAgY29uc3QgVyA9IGNvbHMgKiAxMDA7XG4gIGNvbnN0IHJvd3MgPSBNYXRoLmNlaWwodGlsZXMubGVuZ3RoIC8gY29scyk7XG4gIGNvbnN0IEggPSByb3dzICogMTAwO1xuICBsZXQgaW5uZXIgPSBgPHJlY3Qgd2lkdGg9XCIke1d9XCIgaGVpZ2h0PVwiJHtIfVwiIGZpbGw9XCIke2Jhc2VDb2xvcn1cIi8+YDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGMgPSBpICUgY29scztcbiAgICBjb25zdCByID0gTWF0aC5mbG9vcihpIC8gY29scyk7XG4gICAgY29uc3QgdCA9IHRpbGVzW2ldITtcbiAgICBjb25zdCBzaGFwZSA9IFBBVFRFUk5fTU9USUZTW3QubW90aWZdKHQuZmcpO1xuICAgIGlubmVyICs9IGA8ZyB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoJHtjICogMTAwfSAke3IgKiAxMDB9KVwiPjxyZWN0IHdpZHRoPVwiMTAwXCIgaGVpZ2h0PVwiMTAwXCIgZmlsbD1cIiR7dC5iZ31cIi8+JHtzaGFwZX08L2c+YDtcbiAgfVxuICByZXR1cm4gaW5uZXI7XG59XG4iXX0=
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW90aWZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2F0b21zL3BhdHRlcm4vbW90aWZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBNkNILE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVMsRUFBRSxJQUFZLFdBQVcsRUFBRSxFQUFFLENBQ3ZELFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyw4REFBOEQsQ0FBQztBQUVqRyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQW9EO0lBQzdFLCtEQUErRDtJQUMvRCxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ2pFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDakUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUNqRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQ0FBa0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ2pFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxTQUFTLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLElBQUk7SUFDckYsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtJQUNyRixTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxzRUFBc0UsQ0FBQyxLQUFLO0lBQzVGLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFFQUFx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QUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7SUFDeEYsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7SUFDdEYsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7SUFDcEYsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7Q0FDckYsQ0FBQztBQUVGLGdGQUFnRjtBQUVoRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQVk7SUFDckMsT0FBTztRQUNMLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2IsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMxQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDL0MsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQXNCRCxTQUFTLFFBQVEsQ0FBSSxHQUFRLEVBQUUsR0FBaUI7SUFDOUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUUsQ0FBQztBQUM5QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxPQUFpQixFQUNqQixjQUFjLEdBQUcsSUFBSSxFQUNyQixNQUFvQixJQUFJLENBQUMsTUFBTSxFQUMvQixhQUFvQztJQUVwQyxNQUFNLEdBQUcsR0FBRyxhQUFhLElBQUk7UUFDM0IsSUFBSSxFQUFFLGNBQWM7UUFDcEIsTUFBTSxFQUFFLElBQUk7UUFDWixNQUFNLEVBQUUsSUFBSTtRQUNaLEtBQUssRUFBRSxJQUFJO1FBQ1gsS0FBSyxFQUFFLEdBQUc7S0FDWCxDQUFDO0lBRUYsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDbkIsSUFBSSxHQUFvQixDQUFDO0lBRXpCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDcEIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDM0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDM0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDMUIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDMUIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUUvQixJQUFJLElBQUksR0FBRyxFQUFFO1FBQUUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDekMsSUFBSSxJQUFJLEdBQUcsRUFBRTtRQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ2hELElBQUksSUFBSSxHQUFHLEVBQUU7UUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNoRCxJQUFJLElBQUksR0FBRyxFQUFFO1FBQUUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDL0MsSUFBSSxJQUFJLEdBQUcsRUFBRTtRQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQy9DLElBQUksSUFBSSxHQUFHLEVBQUU7UUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQzs7UUFDN0MsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLEdBQUcsV0FBVyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFeEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0MsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hELEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQyxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsT0FB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b3RpZnMgKyBwYWxldHRlcy5cbiAqXG4gKiBQdXJlIGRhdGEgKyBoZWxwZXJzLCBzaW4gZGVwZW5kZW5jaWFzIEFuZ3VsYXIuIFJldXNhYmxlIGRlc2RlIE5vZGUvc2NyaXB0c1xuICogKGUuZy4sIGdlbmVyYXRlIHN0YXRpYyB0aHVtYm5haWxzKSBvIGRlc2RlIGVsIGNvbXBvbmVudGUgYHZhbC1wYXR0ZXJuYC5cbiAqXG4gKiBPcmlnaW5hbCBzcGVjOiBgYXNzZXRzL1ZhbHRlY2ggUGF0dGVybiBTeXN0ZW0uaHRtbGAgKHNpbmdsZS1wYWdlIGRlbW8pLlxuICogQ2FkYSBtb3RpZiBlcyBmdW5jacOzbiBgKGZpbGw6IHN0cmluZykgPT4gc3RyaW5nYCBxdWUgZGV2dWVsdmUgU1ZHIGlubmVyXG4gKiBtYXJrdXAuIFRpbGUgZXMgMTAweDEwMCB1bmlkYWRlczsgZWwgbW90aWYgc2UgcmVuZGVyaXphIGRlbnRybyBkZSB1biBgPGdcbiAqIHRyYW5zZm9ybT1cInRyYW5zbGF0ZShjb2wqMTAwIHJvdyoxMDApXCI+YCBjb24gdW4gYDxyZWN0IHdpZHRoPTEwMCBoZWlnaHQ9MTAwXG4gKiBmaWxsPWJnLz5gIGRlIGZvbmRvLlxuICovXG5cbmV4cG9ydCB0eXBlIFBhdHRlcm5Nb3RpZktleSA9XG4gIHwgJ2NoZXYtcidcbiAgfCAnY2hldi1sJ1xuICB8ICdjaGV2LWQnXG4gIHwgJ2NoZXYtdSdcbiAgfCAndHJpLXRsJ1xuICB8ICd0cmktdHInXG4gIHwgJ3RyaS1ibCdcbiAgfCAndHJpLWJyJ1xuICB8ICdzb2xpZCdcbiAgfCAnZGlhbW9uZCdcbiAgfCAnc21hbGwtcidcbiAgfCAnc21hbGwtbCdcbiAgfCAnYXJyb3ctcidcbiAgfCAnYXJyb3ctbCdcbiAgfCAnaG91c2UtZCdcbiAgfCAnaGFsZi1sJ1xuICB8ICdoYWxmLXQnXG4gIC8vIOKUgOKUgCBOdWV2b3MgbW90aWZzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICB8ICdjaXJjbGUnXG4gIHwgJ2NpcmNsZS1zbSdcbiAgfCAnZG90J1xuICB8ICdjcm9zcydcbiAgfCAneC1tYXJrJ1xuICB8ICdzbGFzaC1yJ1xuICB8ICdzbGFzaC1sJ1xuICB8ICdjb3JuZXItdGwnXG4gIHwgJ2Nvcm5lci10cidcbiAgfCAnY29ybmVyLWJsJ1xuICB8ICdjb3JuZXItYnInXG4gIC8vIOKUgOKUgCBMb2dvIHN5bWJvbHMgKyBuw7ptZXJvcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgfCAndW5kZXJzY29yZSdcbiAgfCAnbnVtLTAnXG4gIHwgJ251bS0xJ1xuICB8ICdudW0tMidcbiAgfCAnbnVtLTMnXG4gIHwgJ251bS00J1xuICB8ICdudW0tNSdcbiAgfCAnbnVtLTYnXG4gIHwgJ251bS03J1xuICB8ICdudW0tOCdcbiAgfCAnbnVtLTknO1xuXG5jb25zdCBDSEVWX1NUUk9LRSA9IDE4O1xuY29uc3QgQ0hFVl9TTUFMTF9TVFJPS0UgPSAxMjtcbmNvbnN0IGNoZXZTdHlsZSA9IChmOiBzdHJpbmcsIHc6IG51bWJlciA9IENIRVZfU1RST0tFKSA9PlxuICBgc3Ryb2tlPVwiJHtmfVwiIHN0cm9rZS13aWR0aD1cIiR7d31cIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBmaWxsPVwibm9uZVwiYDtcblxuZXhwb3J0IGNvbnN0IFBBVFRFUk5fTU9USUZTOiBSZWNvcmQ8UGF0dGVybk1vdGlmS2V5LCAoZmc6IHN0cmluZykgPT4gc3RyaW5nPiA9IHtcbiAgLy8g4pSA4pSAIENoZXZyb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAnY2hldi1yJzogZiA9PiBgPHBhdGggZD1cIk0yMiAxOCBMNzIgNTAgTDIyIDgyXCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnY2hldi1sJzogZiA9PiBgPHBhdGggZD1cIk03OCAxOCBMMjggNTAgTDc4IDgyXCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnY2hldi1kJzogZiA9PiBgPHBhdGggZD1cIk0xOCAyMiBMNTAgNzIgTDgyIDIyXCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnY2hldi11JzogZiA9PiBgPHBhdGggZD1cIk0xOCA3OCBMNTAgMjggTDgyIDc4XCIgJHtjaGV2U3R5bGUoZil9Lz5gLFxuICAnc21hbGwtcic6IGYgPT4gYDxwYXRoIGQ9XCJNMzggMzIgTDYyIDUwIEwzOCA2OFwiICR7Y2hldlN0eWxlKGYsIENIRVZfU01BTExfU1RST0tFKX0vPmAsXG4gICdzbWFsbC1sJzogZiA9PiBgPHBhdGggZD1cIk02MiAzMiBMMzggNTAgTDYyIDY4XCIgJHtjaGV2U3R5bGUoZiwgQ0hFVl9TTUFMTF9TVFJPS0UpfS8+YCxcbiAgJ2Fycm93LXInOiBmID0+IGA8cGF0aCBkPVwiTTEwIDQyIEw2MCA0MiBMNjAgMjggTDkyIDUwIEw2MCA3MiBMNjAgNTggTDEwIDU4IFpcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnYXJyb3ctbCc6IGYgPT4gYDxwYXRoIGQ9XCJNOTAgNDIgTDQwIDQyIEw0MCAyOCBMOCA1MCBMNDAgNzIgTDQwIDU4IEw5MCA1OCBaXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgLy8g4pSA4pSAIFN0cm9rZXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIGNyb3NzOiBmID0+IGA8cGF0aCBkPVwiTTUwIDEyIEw1MCA4OCBNMTIgNTAgTDg4IDUwXCIgJHtjaGV2U3R5bGUoZiwgMTYpfS8+YCxcbiAgJ3gtbWFyayc6IGYgPT4gYDxwYXRoIGQ9XCJNMTggMTggTDgyIDgyIE04MiAxOCBMMTggODJcIiAke2NoZXZTdHlsZShmLCAxNil9Lz5gLFxuICAnc2xhc2gtcic6IGYgPT5cbiAgICBgPGxpbmUgeDE9XCIxOFwiIHkxPVwiODJcIiB4Mj1cIjgyXCIgeTI9XCIxOFwiIHN0cm9rZT1cIiR7Zn1cIiBzdHJva2Utd2lkdGg9XCIxNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+YCxcbiAgJ3NsYXNoLWwnOiBmID0+XG4gICAgYDxsaW5lIHgxPVwiMThcIiB5MT1cIjE4XCIgeDI9XCI4MlwiIHkyPVwiODJcIiBzdHJva2U9XCIke2Z9XCIgc3Ryb2tlLXdpZHRoPVwiMTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPmAsXG4gIC8vIOKUgOKUgCBGaWxsZWQgc2hhcGVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICBjaXJjbGU6IGYgPT4gYDxjaXJjbGUgY3g9XCI1MFwiIGN5PVwiNTBcIiByPVwiNDBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnY2lyY2xlLXNtJzogZiA9PiBgPGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCIyNFwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gIGRvdDogZiA9PiBgPGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCIxMlwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gIGRpYW1vbmQ6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjUwLDEyIDg4LDUwIDUwLDg4IDEyLDUwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgc29saWQ6ICgpID0+IGBgLFxuICAvLyDilIDilIAgVHJpYW5nbGVzICYgaGFsdmVzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAndHJpLXRsJzogZiA9PiBgPHBvbHlnb24gcG9pbnRzPVwiMCwwIDEwMCwwIDAsMTAwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ3RyaS10cic6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjAsMCAxMDAsMCAxMDAsMTAwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ3RyaS1ibCc6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjAsMCAxMDAsMTAwIDAsMTAwXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ3RyaS1icic6IGYgPT4gYDxwb2x5Z29uIHBvaW50cz1cIjEwMCwwIDEwMCwxMDAgMCwxMDBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnaGFsZi1sJzogZiA9PiBgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNTBcIiBoZWlnaHQ9XCIxMDBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnaGFsZi10JzogZiA9PiBgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMTAwXCIgaGVpZ2h0PVwiNTBcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnaG91c2UtZCc6IGYgPT5cbiAgICBgPHBvbHlnb24gcG9pbnRzPVwiNTAsMjAgODgsNTAgMTIsNTBcIiBmaWxsPVwiJHtmfVwiLz48cmVjdCB4PVwiMjhcIiB5PVwiNTBcIiB3aWR0aD1cIjQ0XCIgaGVpZ2h0PVwiMzJcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAvLyDilIDilIAgQ29ybmVyIGFyY3Mg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICdjb3JuZXItdGwnOiBmID0+IGA8cGF0aCBkPVwiTSAwIDAgTCAxMDAgMCBBIDEwMCAxMDAgMCAwIDEgMCAxMDAgWlwiIGZpbGw9XCIke2Z9XCIvPmAsXG4gICdjb3JuZXItdHInOiBmID0+IGA8cGF0aCBkPVwiTSAxMDAgMCBMIDAgMCBBIDEwMCAxMDAgMCAwIDAgMTAwIDEwMCBaXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgJ2Nvcm5lci1ibCc6IGYgPT4gYDxwYXRoIGQ9XCJNIDAgMTAwIEwgMTAwIDEwMCBBIDEwMCAxMDAgMCAwIDAgMCAwIFpcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAnY29ybmVyLWJyJzogZiA9PiBgPHBhdGggZD1cIk0gMTAwIDEwMCBMIDAgMTAwIEEgMTAwIDEwMCAwIDAgMSAxMDAgMCBaXCIgZmlsbD1cIiR7Zn1cIi8+YCxcbiAgLy8g4pSA4pSAIExvZ28gc3ltYm9sIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICB1bmRlcnNjb3JlOiBmID0+IGA8cmVjdCB4PVwiMTRcIiB5PVwiNzJcIiB3aWR0aD1cIjcyXCIgaGVpZ2h0PVwiMTRcIiByeD1cIjVcIiBmaWxsPVwiJHtmfVwiLz5gLFxuICAvLyDilIDilIAgTsO6bWVyb3Mg4oCUIG1vbm9zcGFjZSBib2xkLCBiYXNlbGluZSBjZW50cmFkYSBlbiB0aWxlIDEwMHgxMDAg4pSA4pSAXG4gICdudW0tMCc6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjA8L3RleHQ+YCxcbiAgJ251bS0xJzogZiA9PlxuICAgIGA8dGV4dCB4PVwiNTBcIiB5PVwiNzZcIiBmb250LXNpemU9XCI2OFwiIGZvbnQtd2VpZ2h0PVwiODAwXCIgZm9udC1mYW1pbHk9XCJ1aS1tb25vc3BhY2UsJ0NvdXJpZXIgTmV3Jyxtb25vc3BhY2VcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGZpbGw9XCIke2Z9XCI+MTwvdGV4dD5gLFxuICAnbnVtLTInOiBmID0+XG4gICAgYDx0ZXh0IHg9XCI1MFwiIHk9XCI3NlwiIGZvbnQtc2l6ZT1cIjY4XCIgZm9udC13ZWlnaHQ9XCI4MDBcIiBmb250LWZhbWlseT1cInVpLW1vbm9zcGFjZSwnQ291cmllciBOZXcnLG1vbm9zcGFjZVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgZmlsbD1cIiR7Zn1cIj4yPC90ZXh0PmAsXG4gICdudW0tMyc6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjM8L3RleHQ+YCxcbiAgJ251bS00JzogZiA9PlxuICAgIGA8dGV4dCB4PVwiNTBcIiB5PVwiNzZcIiBmb250LXNpemU9XCI2OFwiIGZvbnQtd2VpZ2h0PVwiODAwXCIgZm9udC1mYW1pbHk9XCJ1aS1tb25vc3BhY2UsJ0NvdXJpZXIgTmV3Jyxtb25vc3BhY2VcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGZpbGw9XCIke2Z9XCI+NDwvdGV4dD5gLFxuICAnbnVtLTUnOiBmID0+XG4gICAgYDx0ZXh0IHg9XCI1MFwiIHk9XCI3NlwiIGZvbnQtc2l6ZT1cIjY4XCIgZm9udC13ZWlnaHQ9XCI4MDBcIiBmb250LWZhbWlseT1cInVpLW1vbm9zcGFjZSwnQ291cmllciBOZXcnLG1vbm9zcGFjZVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgZmlsbD1cIiR7Zn1cIj41PC90ZXh0PmAsXG4gICdudW0tNic6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjY8L3RleHQ+YCxcbiAgJ251bS03JzogZiA9PlxuICAgIGA8dGV4dCB4PVwiNTBcIiB5PVwiNzZcIiBmb250LXNpemU9XCI2OFwiIGZvbnQtd2VpZ2h0PVwiODAwXCIgZm9udC1mYW1pbHk9XCJ1aS1tb25vc3BhY2UsJ0NvdXJpZXIgTmV3Jyxtb25vc3BhY2VcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGZpbGw9XCIke2Z9XCI+NzwvdGV4dD5gLFxuICAnbnVtLTgnOiBmID0+XG4gICAgYDx0ZXh0IHg9XCI1MFwiIHk9XCI3NlwiIGZvbnQtc2l6ZT1cIjY4XCIgZm9udC13ZWlnaHQ9XCI4MDBcIiBmb250LWZhbWlseT1cInVpLW1vbm9zcGFjZSwnQ291cmllciBOZXcnLG1vbm9zcGFjZVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgZmlsbD1cIiR7Zn1cIj44PC90ZXh0PmAsXG4gICdudW0tOSc6IGYgPT5cbiAgICBgPHRleHQgeD1cIjUwXCIgeT1cIjc2XCIgZm9udC1zaXplPVwiNjhcIiBmb250LXdlaWdodD1cIjgwMFwiIGZvbnQtZmFtaWx5PVwidWktbW9ub3NwYWNlLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiBmaWxsPVwiJHtmfVwiPjk8L3RleHQ+YCxcbn07XG5cbmV4cG9ydCBjb25zdCBNT1RJRl9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IE9iamVjdC5rZXlzKFBBVFRFUk5fTU9USUZTKSBhcyBQYXR0ZXJuTW90aWZLZXlbXTtcblxuLy8g4pSA4pSAIEZhbWlsaWFzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKiogQ2hldnJvbiBmYW1pbHkg4oCUIG9yaWVudGFjaW9uZXMgKyB2YXJpYW50ZXMgcGVxdWXDsWFzLiAqL1xuZXhwb3J0IGNvbnN0IENIRVZfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbXG4gICdjaGV2LXInLFxuICAnY2hldi1sJyxcbiAgJ2NoZXYtZCcsXG4gICdjaGV2LXUnLFxuICAnc21hbGwtcicsXG4gICdzbWFsbC1sJyxcbiAgJ2Fycm93LXInLFxuICAnYXJyb3ctbCcsXG5dO1xuXG4vKiogU3Ryb2tlIGZhbWlseSDigJQgbMOtbmVhcywgY3J1Y2VzIHkgZWwgZ3Vpw7NuIGJham8gZGVsIGxvZ28gYD5fYC4gKi9cbmV4cG9ydCBjb25zdCBTVFJPS0VfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbXG4gICdjcm9zcycsXG4gICd4LW1hcmsnLFxuICAnc2xhc2gtcicsXG4gICdzbGFzaC1sJyxcbiAgJ3VuZGVyc2NvcmUnLFxuXTtcblxuLyoqIE51bWVyaWMgZmFtaWx5IOKAlCBkw61naXRvcyAwLTkgZW4gbW9ub3NwYWNlIGJvbGQuICovXG5leHBvcnQgY29uc3QgTlVNX0tFWVM6IFBhdHRlcm5Nb3RpZktleVtdID0gW1xuICAnbnVtLTAnLFxuICAnbnVtLTEnLFxuICAnbnVtLTInLFxuICAnbnVtLTMnLFxuICAnbnVtLTQnLFxuICAnbnVtLTUnLFxuICAnbnVtLTYnLFxuICAnbnVtLTcnLFxuICAnbnVtLTgnLFxuICAnbnVtLTknLFxuXTtcblxuLyoqIENpcmNsZSAvIGRvdCBmYW1pbHkg4oCUIGZvcm1hcyBjdXJ2YXMgY2VudHJhZGFzLiAqL1xuZXhwb3J0IGNvbnN0IENJUkNMRV9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IFsnY2lyY2xlJywgJ2NpcmNsZS1zbScsICdkb3QnXTtcblxuLyoqIERpYW1vbmQgc29sbyDigJQgZm9ybWEgZ2VvbcOpdHJpY2EgYW5ndWxhciBjZW50cmFkYS4gKi9cbmV4cG9ydCBjb25zdCBTSEFQRV9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IFsnZGlhbW9uZCddO1xuXG4vKiogVHJpYW5nbGUgLyBoYWxmLWZpbGwgZmFtaWx5LiAqL1xuZXhwb3J0IGNvbnN0IFRSSV9LRVlTOiBQYXR0ZXJuTW90aWZLZXlbXSA9IFtcbiAgJ3RyaS10bCcsXG4gICd0cmktdHInLFxuICAndHJpLWJsJyxcbiAgJ3RyaS1icicsXG4gICdoYWxmLWwnLFxuICAnaGFsZi10JyxcbiAgJ2hvdXNlLWQnLFxuXTtcblxuLyoqIENvcm5lciBhcmMgZmFtaWx5IOKAlCBtZXpjbGEgc3VhdmUgY29uIHRyaWFuZ2xlcy4gKi9cbmV4cG9ydCBjb25zdCBDT1JORVJfS0VZUzogUGF0dGVybk1vdGlmS2V5W10gPSBbJ2Nvcm5lci10bCcsICdjb3JuZXItdHInLCAnY29ybmVyLWJsJywgJ2Nvcm5lci1iciddO1xuXG4vKiogTm8tZm9yZWdyb3VuZCB0aWxlcyDigJQgc29sbyByZWN0IGRlIGZvbmRvLiAqL1xuZXhwb3J0IGNvbnN0IFNPTElEX0tFWVM6IFBhdHRlcm5Nb3RpZktleVtdID0gWydzb2xpZCddO1xuXG4vLyDilIDilIAgUGFsZXRhcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqIEJ1aWx0LWluIHBhbGV0dGVzIOKAlCA4IGNvbG9yZXMgZGFyayDihpIgbGlnaHQuICovXG5leHBvcnQgdHlwZSBQYXR0ZXJuUGFsZXR0ZUtleSA9XG4gIHwgJ3B1cnBsZSdcbiAgfCAnaW5rJ1xuICB8ICdsYXZlbmRlcidcbiAgfCAnbWlkbmlnaHQnXG4gIHwgJ2VtYmVyJ1xuICB8ICdmb3Jlc3QnXG4gIHwgJ3Jvc2UnXG4gIHwgJ2dvbGQnXG4gIHwgJ21vbm8nXG4gIC8vIOKUgOKUgCBQYWxldGFzIFZhbHRlY2ggYnJhbmQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIHwgJ3RlYWwnXG4gIHwgJ29jZWFuJ1xuICB8ICd2aW9sZXQnXG4gIHwgJ2R1c2snXG4gIHwgJ3NsYXRlJztcblxuZXhwb3J0IGNvbnN0IFBBVFRFUk5fUEFMRVRURVM6IFJlY29yZDxQYXR0ZXJuUGFsZXR0ZUtleSwgc3RyaW5nW10+ID0ge1xuICBwdXJwbGU6IFsnIzBlMDQyMCcsICcjMmExMTU4JywgJyM0YTFkOTYnLCAnIzcwMjZkZicsICcjOTE1NmU4JywgJyNiNDhlZWEnLCAnI2Q5YzNmNScsICcjZWJkY2ZkJ10sXG4gIGluazogWycjMDAwMDAwJywgJyMwYTBmMWMnLCAnIzFhMjIzNScsICcjMmQzYTU1JywgJyM0YTU4NzgnLCAnIzdkOGFhNScsICcjYjhjMWQ0JywgJyNlNGU4ZjAnXSxcbiAgbGF2ZW5kZXI6IFtcbiAgICAnIzFhMGUzYScsXG4gICAgJyMyZTE3NTUnLFxuICAgICcjNWEzYWEwJyxcbiAgICAnIzdlNWRjNicsXG4gICAgJyNhMThiZDknLFxuICAgICcjYzRhOGYwJyxcbiAgICAnI2RjY2VmNScsXG4gICAgJyNmMGU2ZmMnLFxuICBdLFxuICBtaWRuaWdodDogW1xuICAgICcjMDIwODE0JyxcbiAgICAnIzA3MTQyOCcsXG4gICAgJyMwZDIyNDgnLFxuICAgICcjMWEzYTZlJyxcbiAgICAnIzI2NTZhOCcsXG4gICAgJyM0ZDgyZDQnLFxuICAgICcjOGFiNGViJyxcbiAgICAnI2M1ZDlmNScsXG4gIF0sXG4gIGVtYmVyOiBbJyMxMjAyMDAnLCAnIzJlMDgwMCcsICcjNmIxYTAwJywgJyNiODMyMDAnLCAnI2U4NWExMCcsICcjZjU5MDQyJywgJyNmOWM0OGEnLCAnI2ZkZThjYyddLFxuICBmb3Jlc3Q6IFsnIzAxMGEwNCcsICcjMDUyMDEwJywgJyMwYTQwMjAnLCAnIzBmNjYzNScsICcjMThhMDU4JywgJyMzZWNlODAnLCAnIzg2ZThiNCcsICcjYzRmNWRjJ10sXG4gIHJvc2U6IFsnIzEyMDEwYScsICcjMmUwNDIwJywgJyM2YjBhNDgnLCAnI2IwMTg3MCcsICcjZTA0MGEwJywgJyNmMDgwYzgnLCAnI2Y4YmNlNCcsICcjZmRlMGYzJ10sXG4gIGdvbGQ6IFsnIzEwMDgwMCcsICcjMmExYTAwJywgJyM1YzM4MDAnLCAnIzllNjAwMCcsICcjZDQ5MjBhJywgJyNmMGJjNDAnLCAnI2Y4ZGE4YycsICcjZmRmMGNjJ10sXG4gIG1vbm86IFsnIzA4MDgwOCcsICcjMWExYTFhJywgJyMzMDMwMzAnLCAnIzQ4NDg0OCcsICcjNzA3MDcwJywgJyM5ZTllOWUnLCAnI2NlY2VjZScsICcjZjBmMGYwJ10sXG4gIC8vIOKUgOKUgCBQYWxldGFzIGJyYW5kIFZhbHRlY2gg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIC8vIGRlZXAgdGVhbCDihpIgYnJpZ2h0IGN5YW5cbiAgdGVhbDogWycjMDExYTE2JywgJyMwMjJlMjgnLCAnIzA0NTA0MicsICcjMDc3YTY0JywgJyMwYWE4OGMnLCAnIzJlY2ZiMCcsICcjN2FlYWQ4JywgJyNjMGY3ZWYnXSxcbiAgLy8gbmF2eSBwcm9mdW5kbyDihpIgYXp1bCBjaWVsb1xuICBvY2VhbjogWycjMDEwYzE4JywgJyMwMjFhMzAnLCAnIzA0MzA2MCcsICcjMGE1MDkwJywgJyMxNDc4YzAnLCAnIzNhOWZkZCcsICcjODVjY2VlJywgJyNjOGU5ZjgnXSxcbiAgLy8gdmlvbGV0YSB1bHRyYWJyaWxsYW50ZSAobcOhcyB2w612aWRvIHF1ZSBwdXJwbGUsIG3DoXMgZWzDqWN0cmljbylcbiAgdmlvbGV0OiBbJyMwZDAwMjUnLCAnIzFlMDA1MCcsICcjNDAwMDkwJywgJyM2NjAwY2MnLCAnIzhjMmFmMicsICcjYjA2YWY4JywgJyNkNGE4ZmMnLCAnI2VjZDhmZSddLFxuICAvLyBjcmVww7pzY3VsbyBwdXJwbGUtYmx1ZSAoZHVzayDigJQgbWV6Y2xhIGF0bW9zZsOpcmljYSlcbiAgZHVzazogWycjMDgwNTFlJywgJyMxMzBhNDAnLCAnIzIyMTg4MCcsICcjMzgyOGI0JywgJyM1NTQ4ZDgnLCAnIzgwODBlOCcsICcjYjRiNGY0JywgJyNkZGRkZmInXSxcbiAgLy8gZ3Jpcy1henVsIGNvcnBvcmF0aXZvIGZyw61vIChzbGF0ZSDigJQgdGVjaCBuZXV0cmFsKVxuICBzbGF0ZTogWycjMDYwYzE0JywgJyMwZTFlMzAnLCAnIzFjMzU1MCcsICcjMmM1MDcwJywgJyM0Mjc4YTAnLCAnIzZhYTBjOCcsICcjYTRjNmU0JywgJyNkNGU4ZjYnXSxcbn07XG5cbi8vIOKUgOKUgCBQcmVzZXRzIGRlIGVzdGlsbyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBQcmVzZXQgZGUgY29tcG9zaWNpw7NuIGRlbCBwYXRyw7NuLiBDb250cm9sYSBxdcOpIGZhbWlsaWFzIHByZWRvbWluYW4uXG4gKlxuICogLSBgYnJhbmRlZGAgICDihpIgQ2hldnJvbnMgZG9taW5hbnRlcyAoaWRlbnRpZGFkIFZhbHRlY2ggYD5fYCkuIERlZmF1bHQuXG4gKiAtIGBnZW9tZXRyaWNgIOKGkiBUcmnDoW5ndWxvcywgZXNxdWluYXMgeSBjw61yY3Vsb3MuIE3DoXMgYXJxdWl0ZWN0w7NuaWNvLlxuICogLSBgbWluaW1hbGAgICDihpIgRXNwYWNpb3Mgc8OzbGlkb3MgY29uIHRyYXpvcyBzdXRpbGVzLiBMaW1waW8sIGNvcnBvcmF0aXZvLlxuICogLSBgZGVuc2VgICAgICDihpIgTWV6Y2xhIHJpY2EgZGUgdG9kYXMgbGFzIGZhbWlsaWFzLiBNw6F4aW1hIHRleHR1cmEuXG4gKiAtIGBjb2RlYCAgICAgIOKGkiBOw7ptZXJvcywgdW5kZXJzY29yZSB5IGNoZXZyb25zLiBMb29rIGRlIHRlcm1pbmFsLlxuICovXG5leHBvcnQgdHlwZSBQYXR0ZXJuU3R5bGVLZXkgPSAnYnJhbmRlZCcgfCAnZ2VvbWV0cmljJyB8ICdtaW5pbWFsJyB8ICdkZW5zZScgfCAnY29kZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybkRlbnNpdHlDb25maWcge1xuICAvKiogUHJvYmFiaWxpZGFkIGRlIGNoZXZyb24gZmFtaWx5LiAqL1xuICBjaGV2OiBudW1iZXI7XG4gIC8qKiBQcm9iYWJpbGlkYWQgZGUgc3Ryb2tlIGZhbWlseSAoY3Jvc3MsIHgsIHNsYXNoLCB1bmRlcnNjb3JlKS4gKi9cbiAgc3Ryb2tlOiBudW1iZXI7XG4gIC8qKiBQcm9iYWJpbGlkYWQgZGUgY8OtcmN1bG9zLiAqL1xuICBjaXJjbGU6IG51bWJlcjtcbiAgLyoqIFByb2JhYmlsaWRhZCBkZSBkaWFtb25kLiAqL1xuICBzaGFwZTogbnVtYmVyO1xuICAvKiogUHJvYmFiaWxpZGFkIGRlIHNvbGlkIChlc3BhY2lvIHZhY8OtbykuICovXG4gIHNvbGlkOiBudW1iZXI7XG4gIC8qKiBQcm9iYWJpbGlkYWQgZGUgbnVtZXJpYyBmYW1pbHkgKDAtOSkuIERlZmF1bHQ6IDAuICovXG4gIG51bT86IG51bWJlcjtcbiAgLyoqIFJlc3RvIOKGkiB0cmlhbmdsZXMgKyBjb3JuZXJzLiAqL1xufVxuXG5leHBvcnQgY29uc3QgUEFUVEVSTl9TVFlMRV9DT05GSUdTOiBSZWNvcmQ8UGF0dGVyblN0eWxlS2V5LCBQYXR0ZXJuRGVuc2l0eUNvbmZpZz4gPSB7XG4gIGJyYW5kZWQ6IHsgY2hldjogMC41OCwgc3Ryb2tlOiAwLjEsIGNpcmNsZTogMC4wNCwgc2hhcGU6IDAuMDYsIHNvbGlkOiAwLjE4LCBudW06IDAuMCB9LFxuICBnZW9tZXRyaWM6IHsgY2hldjogMC4xNSwgc3Ryb2tlOiAwLjA1LCBjaXJjbGU6IDAuMTgsIHNoYXBlOiAwLjE0LCBzb2xpZDogMC4xLCBudW06IDAuMCB9LFxuICBtaW5pbWFsOiB7IGNoZXY6IDAuMjUsIHN0cm9rZTogMC4xLCBjaXJjbGU6IDAuMTIsIHNoYXBlOiAwLjA0LCBzb2xpZDogMC4zOCwgbnVtOiAwLjAgfSxcbiAgZGVuc2U6IHsgY2hldjogMC40LCBzdHJva2U6IDAuMTQsIGNpcmNsZTogMC4xMiwgc2hhcGU6IDAuMSwgc29saWQ6IDAuMDgsIG51bTogMC4wMiB9LFxuICBjb2RlOiB7IGNoZXY6IDAuMzUsIHN0cm9rZTogMC4xOCwgY2lyY2xlOiAwLjAyLCBzaGFwZTogMC4wMiwgc29saWQ6IDAuMTIsIG51bTogMC4yIH0sXG59O1xuXG4vLyDilIDilIAgUk5HIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIE11bGJlcnJ5MzIgc2VlZGVkIFJORyDigJQgZGV2dWVsdmUgZnVuY2nDs24gYCgpPT5bMCwxKWAuXG4gKiBEZXRlcm1pbmlzdGljOiBtaXNtbyBzZWVkIOKGkiBtaXNtYSBzZWN1ZW5jaWEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtdWxiZXJyeTMyKHNlZWQ6IG51bWJlcik6ICgpID0+IG51bWJlciB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgc2VlZCA9IChzZWVkICsgMHg2ZDJiNzlmNSkgPj4+IDA7XG4gICAgbGV0IHQgPSBzZWVkO1xuICAgIHQgPSBNYXRoLmltdWwodCBeICh0ID4+PiAxNSksIHQgfCAxKTtcbiAgICB0IF49IHQgKyBNYXRoLmltdWwodCBeICh0ID4+PiA3KSwgdCB8IDYxKTtcbiAgICByZXR1cm4gKCh0IF4gKHQgPj4+IDE0KSkgPj4+IDApIC8gNDI5NDk2NzI5NjtcbiAgfTtcbn1cblxuLy8g4pSA4pSAIEdlbmVyYWNpw7NuIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5HZW5Db25maWcge1xuICBjb2xzOiBudW1iZXI7XG4gIHJvd3M6IG51bWJlcjtcbiAgc2VlZDogbnVtYmVyO1xuICBwYWxldHRlOiBzdHJpbmdbXTtcbiAgY2hldnJvbkRlbnNpdHk/OiBudW1iZXI7XG4gIHN0eWxlPzogUGF0dGVyblN0eWxlS2V5O1xuICAvKiogU2kgdHJ1ZSwgY2FkYSB0aWxlIHJlY2liZSB1bmEgcm90YWNpw7NuIGFsZWF0b3JpYSBbMC85MC8xODAvMjcwwrBdLiAqL1xuICB0aWxlUm90YXRpb24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5UaWxlIHtcbiAgbW90aWY6IFBhdHRlcm5Nb3RpZktleTtcbiAgYmc6IHN0cmluZztcbiAgZmc6IHN0cmluZztcbiAgcm90PzogMCB8IDkwIHwgMTgwIHwgMjcwO1xufVxuXG5mdW5jdGlvbiBwaWNrRnJvbTxUPihhcnI6IFRbXSwgcm5nOiAoKSA9PiBudW1iZXIpOiBUIHtcbiAgcmV0dXJuIGFycltNYXRoLmZsb29yKHJuZygpICogYXJyLmxlbmd0aCldITtcbn1cblxuLyoqXG4gKiBHZW5lcmEgVU4gdGlsZSByZXNwZXRhbmRvIGRlbnNpZGFkZXMgZGUgZmFtaWxpYSArIGNvbnRyYXN0ZSBkZSBwYWxldHRlLlxuICogQWNlcHRhIHVuIGNvbmZpZyBvcGNpb25hbCBkZSBkZW5zaWRhZGVzIChkZSBQYXR0ZXJuU3R5bGVLZXkgbyBjaGV2cm9uRGVuc2l0eSBsZWdhY3kpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb21UaWxlKFxuICBwYWxldHRlOiBzdHJpbmdbXSxcbiAgY2hldnJvbkRlbnNpdHkgPSAwLjU1LFxuICBybmc6ICgpID0+IG51bWJlciA9IE1hdGgucmFuZG9tLFxuICBkZW5zaXR5Q29uZmlnPzogUGF0dGVybkRlbnNpdHlDb25maWdcbik6IFBhdHRlcm5UaWxlIHtcbiAgY29uc3QgY2ZnID0gZGVuc2l0eUNvbmZpZyA/PyB7XG4gICAgY2hldjogY2hldnJvbkRlbnNpdHksXG4gICAgc3Ryb2tlOiAwLjA4LFxuICAgIGNpcmNsZTogMC4wNSxcbiAgICBzaGFwZTogMC4wNyxcbiAgICBzb2xpZDogMC4yLFxuICB9O1xuXG4gIGNvbnN0IHJvbGwgPSBybmcoKTtcbiAgbGV0IGtleTogUGF0dGVybk1vdGlmS2V5O1xuXG4gIGNvbnN0IHQxID0gY2ZnLmNoZXY7XG4gIGNvbnN0IHQyID0gdDEgKyBjZmcuc3Ryb2tlO1xuICBjb25zdCB0MyA9IHQyICsgY2ZnLmNpcmNsZTtcbiAgY29uc3QgdDQgPSB0MyArIGNmZy5zaGFwZTtcbiAgY29uc3QgdDUgPSB0NCArIGNmZy5zb2xpZDtcbiAgY29uc3QgdDYgPSB0NSArIChjZmcubnVtID8/IDApO1xuXG4gIGlmIChyb2xsIDwgdDEpIGtleSA9IHBpY2tGcm9tKENIRVZfS0VZUywgcm5nKTtcbiAgZWxzZSBpZiAocm9sbCA8IHQyKSBrZXkgPSBwaWNrRnJvbShTVFJPS0VfS0VZUywgcm5nKTtcbiAgZWxzZSBpZiAocm9sbCA8IHQzKSBrZXkgPSBwaWNrRnJvbShDSVJDTEVfS0VZUywgcm5nKTtcbiAgZWxzZSBpZiAocm9sbCA8IHQ0KSBrZXkgPSBwaWNrRnJvbShTSEFQRV9LRVlTLCBybmcpO1xuICBlbHNlIGlmIChyb2xsIDwgdDUpIGtleSA9IHBpY2tGcm9tKFNPTElEX0tFWVMsIHJuZyk7XG4gIGVsc2UgaWYgKHJvbGwgPCB0Nikga2V5ID0gcGlja0Zyb20oTlVNX0tFWVMsIHJuZyk7XG4gIGVsc2Uga2V5ID0gcGlja0Zyb20oWy4uLlRSSV9LRVlTLCAuLi5DT1JORVJfS0VZU10sIHJuZyk7XG5cbiAgY29uc3QgYmdJZHggPSBNYXRoLmZsb29yKHJuZygpICogcGFsZXR0ZS5sZW5ndGgpO1xuICBsZXQgZmdJZHggPSBNYXRoLmZsb29yKHJuZygpICogcGFsZXR0ZS5sZW5ndGgpO1xuICBsZXQgdHJpZXMgPSAwO1xuICB3aGlsZSAoTWF0aC5hYnMoZmdJZHggLSBiZ0lkeCkgPCAzICYmIHRyaWVzIDwgNikge1xuICAgIGZnSWR4ID0gTWF0aC5mbG9vcihybmcoKSAqIHBhbGV0dGUubGVuZ3RoKTtcbiAgICB0cmllcysrO1xuICB9XG4gIHJldHVybiB7IG1vdGlmOiBrZXksIGJnOiBwYWxldHRlW2JnSWR4XSEsIGZnOiBwYWxldHRlW2ZnSWR4XSEgfTtcbn1cblxuY29uc3QgUk9UQVRJT05TOiBBcnJheTwwIHwgOTAgfCAxODAgfCAyNzA+ID0gWzAsIDkwLCAxODAsIDI3MF07XG5cbi8qKiBHZW5lcmEgbWF0cml6IGNvbXBsZXRhIGRlIHRpbGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUGF0dGVyblRpbGVzKGNmZzogUGF0dGVybkdlbkNvbmZpZyk6IFBhdHRlcm5UaWxlW10ge1xuICBjb25zdCB7IGNvbHMsIHJvd3MsIHNlZWQsIHBhbGV0dGUgfSA9IGNmZztcbiAgY29uc3QgY2hldnJvbkRlbnNpdHkgPSBjZmcuY2hldnJvbkRlbnNpdHkgPz8gMC41NTtcbiAgY29uc3QgZGVuc2l0eUNvbmZpZyA9IGNmZy5zdHlsZSA/IFBBVFRFUk5fU1RZTEVfQ09ORklHU1tjZmcuc3R5bGVdIDogdW5kZWZpbmVkO1xuICBjb25zdCByID0gbXVsYmVycnkzMihzZWVkKTtcbiAgY29uc3QgdGlsZXM6IFBhdHRlcm5UaWxlW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2xzICogcm93czsgaSsrKSB7XG4gICAgY29uc3QgdGlsZSA9IGdlbmVyYXRlUmFuZG9tVGlsZShwYWxldHRlLCBjaGV2cm9uRGVuc2l0eSwgciwgZGVuc2l0eUNvbmZpZyk7XG4gICAgaWYgKGNmZy50aWxlUm90YXRpb24pIHtcbiAgICAgIHRpbGUucm90ID0gUk9UQVRJT05TW01hdGguZmxvb3IocigpICogNCldO1xuICAgIH1cbiAgICB0aWxlcy5wdXNoKHRpbGUpO1xuICB9XG4gIHJldHVybiB0aWxlcztcbn1cblxuLyoqXG4gKiBSZW5kZXJpemEgZWwgaW5uZXIgU1ZHIChzaW4gZWwgYDxzdmc+YCByb290KSBwYXJhIHVuYSBtYXRyaXogZGUgdGlsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJQYXR0ZXJuU3ZnSW5uZXIoXG4gIHRpbGVzOiBQYXR0ZXJuVGlsZVtdLFxuICBjb2xzOiBudW1iZXIsXG4gIGJhc2VDb2xvcjogc3RyaW5nXG4pOiBzdHJpbmcge1xuICBjb25zdCBXID0gY29scyAqIDEwMDtcbiAgY29uc3Qgcm93cyA9IE1hdGguY2VpbCh0aWxlcy5sZW5ndGggLyBjb2xzKTtcbiAgY29uc3QgSCA9IHJvd3MgKiAxMDA7XG4gIGxldCBpbm5lciA9IGA8cmVjdCB3aWR0aD1cIiR7V31cIiBoZWlnaHQ9XCIke0h9XCIgZmlsbD1cIiR7YmFzZUNvbG9yfVwiLz5gO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgYyA9IGkgJSBjb2xzO1xuICAgIGNvbnN0IHIgPSBNYXRoLmZsb29yKGkgLyBjb2xzKTtcbiAgICBjb25zdCB0ID0gdGlsZXNbaV0hO1xuICAgIGNvbnN0IHNoYXBlID0gUEFUVEVSTl9NT1RJRlNbdC5tb3RpZl0odC5mZyk7XG4gICAgY29uc3Qgc2hhcGVFbCA9IHQucm90ID8gYDxnIHRyYW5zZm9ybT1cInJvdGF0ZSgke3Qucm90fSA1MCA1MClcIj4ke3NoYXBlfTwvZz5gIDogc2hhcGU7XG4gICAgaW5uZXIgKz0gYDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgke2MgKiAxMDB9ICR7ciAqIDEwMH0pXCI+PHJlY3Qgd2lkdGg9XCIxMDBcIiBoZWlnaHQ9XCIxMDBcIiBmaWxsPVwiJHt0LmJnfVwiLz4ke3NoYXBlRWx9PC9nPmA7XG4gIH1cbiAgcmV0dXJuIGlubmVyO1xufVxuIl19
@@ -60,6 +60,8 @@ export class PatternComponent {
60
60
  }
61
61
  if (value.animated !== undefined)
62
62
  this.animated.set(!!value.animated);
63
+ if (value.tileRotation !== undefined)
64
+ this.tileRotation.set(!!value.tileRotation);
63
65
  }
64
66
  constructor() {
65
67
  this.sanitizer = inject(DomSanitizer);
@@ -73,6 +75,7 @@ export class PatternComponent {
73
75
  this.animated = signal(false);
74
76
  this.reshuffleInterval = signal(8000);
75
77
  this.tilesPerTick = signal(0);
78
+ this.tileRotation = signal(false);
76
79
  /**
77
80
  * Tiles signal — mutable. Se regenera completa cuando cambia seed/cols/rows/
78
81
  * palette/density. En modo animated, tiles individuales se sobrescriben sin
@@ -105,7 +108,8 @@ export class PatternComponent {
105
108
  const palette = this.paletteRef();
106
109
  const density = this.chevronDensity();
107
110
  const style = this.patternStyle();
108
- this.tiles.set(generatePatternTiles({ cols, rows, seed, palette, chevronDensity: density, style }));
111
+ const tileRotation = this.tileRotation();
112
+ this.tiles.set(generatePatternTiles({ cols, rows, seed, palette, chevronDensity: density, style, tileRotation }));
109
113
  }, { allowSignalWrites: true });
110
114
  // Modo animated: cada `reshuffleInterval` ms regenera el grid completo
111
115
  // con un seed nuevo. Visualmente: el patrón cambia de vez en cuando.
@@ -149,9 +153,14 @@ export class PatternComponent {
149
153
  const density = this.chevronDensity();
150
154
  const style = this.patternStyle();
151
155
  const densityConfig = style ? PATTERN_STYLE_CONFIGS[style] : undefined;
156
+ const rotate = this.tileRotation();
157
+ const ROTS = [0, 90, 180, 270];
152
158
  for (let n = 0; n < count; n++) {
153
159
  const idx = Math.floor(Math.random() * next.length);
154
- next[idx] = generateRandomTile(palette, density, Math.random, densityConfig);
160
+ const tile = generateRandomTile(palette, density, Math.random, densityConfig);
161
+ if (rotate)
162
+ tile.rot = ROTS[Math.floor(Math.random() * 4)];
163
+ next[idx] = tile;
155
164
  }
156
165
  this.tiles.set(next);
157
166
  }
@@ -178,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
178
187
  }], ctorParameters: () => [], propDecorators: { props: [{
179
188
  type: Input
180
189
  }] } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcGF0dGVybi9wYXR0ZXJuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUtyQixxQkFBcUIsR0FDdEIsTUFBTSxVQUFVLENBQUM7O0FBR2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFvQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQWdCM0IsSUFBYSxLQUFLLENBQUMsS0FBa0M7UUFDbkQsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ25CLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckUsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRSxJQUFJLEtBQUssQ0FBQyxjQUFjLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsY0FBYyxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEYsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLGlCQUFpQixLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBd0JEO1FBM0RRLGNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFeEIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQixTQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLFNBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBVyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixpQkFBWSxHQUFHLE1BQU0sQ0FBOEIsU0FBUyxDQUFDLENBQUM7UUFDOUQsbUJBQWMsR0FBRyxNQUFNLENBQW1CLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELGFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBMEIxQzs7OztXQUlHO1FBQ2MsVUFBSyxHQUFHLE1BQU0sQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFFbkQsNkRBQTZEO1FBQ3BELFlBQU8sR0FBRyxRQUFRLENBQVcsR0FBRyxFQUFFO1lBQ3pDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sS0FBSyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUM7WUFDckUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNyRixzRUFBc0U7WUFDdEUsMkVBQTJFO1lBQzNFLG9FQUFvRTtZQUNwRSxvQkFBb0I7WUFDcEIsTUFBTSxHQUFHLEdBQUcsZ0RBQWdELElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsMEJBQTBCLE1BQU0sa0ZBQWtGLEtBQUssUUFBUSxDQUFDO1lBQ3BOLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztRQUdELHdFQUF3RTtRQUN4RSx3RUFBd0U7UUFDeEUsK0NBQStDO1FBQy9DLDBFQUEwRTtRQUMxRSw2REFBNkQ7UUFDN0QsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM1QixDQUFDO1FBRUYsdUVBQXVFO1FBQ3ZFLHFFQUFxRTtRQUNyRSx3RUFBd0U7UUFDeEUsMEVBQTBFO1FBQzFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNqQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BDLElBQUksSUFBSSxDQUFDLEtBQUs7Z0JBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztZQUN2QixJQUFJLENBQUMsVUFBVTtnQkFBRSxPQUFPO1lBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtnQkFDNUIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbEMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO1lBQ0gsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2IsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDYixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDZixhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssaUJBQWlCLENBQUMsS0FBYTtRQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUMxQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQyxNQUFNLGFBQWEsR0FBcUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3pHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMvQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUMvRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sY0FBYyxDQUFDLENBQStCO1FBQ3BELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JCLDJFQUEyRTtZQUMzRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUNyRCxDQUFDO1FBQ0QsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7SUFDeEQsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDOytHQTNJVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQixtR0EvQmpCLDJEQUEyRCxvU0FEM0QsWUFBWTs7NEZBZ0NYLGdCQUFnQjtrQkFuQzVCLFNBQVM7K0JBQ0UsYUFBYSxjQUNYLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiLDJEQUEyRDt3REErQ3hELEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBJbnB1dCwgT25EZXN0cm95LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgZ2VuZXJhdGVQYXR0ZXJuVGlsZXMsXG4gIGdlbmVyYXRlUmFuZG9tVGlsZSxcbiAgUEFUVEVSTl9QQUxFVFRFUyxcbiAgUEFUVEVSTl9TVFlMRV9DT05GSUdTLFxuICBQYXR0ZXJuRGVuc2l0eUNvbmZpZyxcbiAgUGF0dGVyblBhbGV0dGVLZXksXG4gIFBhdHRlcm5TdHlsZUtleSxcbiAgUGF0dGVyblRpbGUsXG4gIHJlbmRlclBhdHRlcm5TdmdJbm5lcixcbn0gZnJvbSAnLi9tb3RpZnMnO1xuaW1wb3J0IHsgUGF0dGVybk1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogYHZhbC1wYXR0ZXJuYFxuICpcbiAqIENvbXBvbmVudGUgZGUgZm9uZG8gZ2VvbcOpdHJpY28gaW5zcGlyYWRvIGVuIGVsIHNpc3RlbWEgVmFsdGVjaC4gUmVuZGVyaXphIHVuXG4gKiBncmlkIGRlIHRpbGVzIDEwMMOXMTAwIGNvbiBtb3RpZnMgKGNoZXZyb25zLCB0cmlhbmdsZXMsIGRpYW1vbmRzLCBhcnJvd3MpIGVuXG4gKiB1biBTVkcgaW5saW5lLiBEZXRlcm1pbmlzdGEgdsOtYSBgc2VlZGAgbyBhbmltYWRvIHbDrWEgYHJlc2h1ZmZsZWAuXG4gKlxuICogQ2VybyBkZXBlbmRlbmNpYXMgZXh0ZXJuYXMg4oCUIHRvZG8gU1ZHLlxuICpcbiAqIEBleGFtcGxlIENvbW8gZm9uZG8gZGUgY2FyZCAoQ1NTIGFic29sdXRlKTpcbiAqIGBgYHNjc3NcbiAqIC5jYXJkIHsgcG9zaXRpb246IHJlbGF0aXZlOyBvdmVyZmxvdzogaGlkZGVuOyB9XG4gKiAuY2FyZCB2YWwtcGF0dGVybiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgaW5zZXQ6IDA7IHotaW5kZXg6IDA7IG9wYWNpdHk6IDAuNDsgfVxuICogLmNhcmQgLmNvbnRlbnQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDE7IH1cbiAqIGBgYFxuICpcbiAqIGBgYGh0bWxcbiAqIDxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gKiAgIDx2YWwtcGF0dGVybiBbcHJvcHNdPVwieyBwYWxldHRlOiAncHVycGxlJywgY29sczogNiwgcm93czogMywgc2VlZDogNDIgfVwiIC8+XG4gKiAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+VHUgY29udGVuaWRvIGFxdcOtPC9kaXY+XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIENvbW8gYmFja2dyb3VuZCBhbmltYWRvIChoZXJvL2xvZ2luKTpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcGF0dGVybiBbcHJvcHNdPVwieyBwYWxldHRlOiAnbGF2ZW5kZXInLCBjb2xzOiAxNiwgcm93czogOCwgYW5pbWF0ZWQ6IHRydWUgfVwiIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXBhdHRlcm4nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGAgPGRpdiBjbGFzcz1cInZhbC1wYXR0ZXJuXCIgW2lubmVySFRNTF09XCJzdmdIdG1sKClcIj48L2Rpdj4gYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIH1cblxuICAgICAgLnZhbC1wYXR0ZXJuIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC42cyBlYXNlLWluLW91dDtcbiAgICAgIH1cblxuICAgICAgLyogU3BlY2lmaWNpdHkgMCwyLDAg4oCUIGJlYXRzIFVBIGRlZmF1bHRzIHBhcmEgU1ZHLiBXaWR0aC9oZWlnaHQgZnVlcnphblxuICAgICAgICogZmlsbCBkZWwgY29udGFpbmVyLiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwic2xpY2VcIiBlbiBlbCB2aWV3Qm94IGhhY2UgZWxcbiAgICAgICAqIGNyb3AvY292ZXIuIFNpbiBlc3RvLCBlbCBTVkcgY2FlIGEgc3UgaW50cmluc2ljIGFzcGVjdCByYXRpbyBkZWxcbiAgICAgICAqIHZpZXdCb3ggeSBkZWphIGZyYW5qYXMgY3VhbmRvIGVsIGNvbnRhaW5lciBubyBtYXRjaGVhIChlai4gbW9iaWxlXG4gICAgICAgKiBjb24gY29scy9yb3dzIHdpZGUtYXNwZWN0KS4gKi9cbiAgICAgIC52YWwtcGF0dGVybiBzdmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQYXR0ZXJuQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbHMgPSBzaWduYWwoMTIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvd3MgPSBzaWduYWwoNCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VlZCA9IHNpZ25hbCh0aGlzLnJhbmRvbVNlZWQoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFsZXR0ZVJlZiA9IHNpZ25hbDxzdHJpbmdbXT4oUEFUVEVSTl9QQUxFVFRFUy5wdXJwbGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoZXZyb25EZW5zaXR5ID0gc2lnbmFsKDAuNTUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBhdHRlcm5TdHlsZSA9IHNpZ25hbDxQYXR0ZXJuU3R5bGVLZXkgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlc2VydmVBc3BlY3QgPSBzaWduYWw8J3NsaWNlJyB8ICdtZWV0Jz4oJ3NsaWNlJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYW5pbWF0ZWQgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc2h1ZmZsZUludGVydmFsID0gc2lnbmFsKDgwMDApO1xuICBwcml2YXRlIHJlYWRvbmx5IHRpbGVzUGVyVGljayA9IHNpZ25hbCgwKTtcblxuICBwcml2YXRlIHRpbWVyPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuXG4gIEBJbnB1dCgpIHNldCBwcm9wcyh2YWx1ZTogUGF0dGVybk1ldGFkYXRhIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuICAgIGlmICh2YWx1ZS5jb2xzICE9PSB1bmRlZmluZWQpIHRoaXMuY29scy5zZXQoTWF0aC5tYXgoMSwgdmFsdWUuY29scykpO1xuICAgIGlmICh2YWx1ZS5yb3dzICE9PSB1bmRlZmluZWQpIHRoaXMucm93cy5zZXQoTWF0aC5tYXgoMSwgdmFsdWUucm93cykpO1xuICAgIGlmICh2YWx1ZS5zZWVkICE9PSB1bmRlZmluZWQpIHRoaXMuc2VlZC5zZXQodmFsdWUuc2VlZCk7XG4gICAgaWYgKHZhbHVlLnN0eWxlICE9PSB1bmRlZmluZWQpIHRoaXMucGF0dGVyblN0eWxlLnNldCh2YWx1ZS5zdHlsZSk7XG4gICAgaWYgKHZhbHVlLmNoZXZyb25EZW5zaXR5ICE9PSB1bmRlZmluZWQgJiYgdmFsdWUuc3R5bGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jaGV2cm9uRGVuc2l0eS5zZXQoTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgdmFsdWUuY2hldnJvbkRlbnNpdHkpKSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5wcmVzZXJ2ZUFzcGVjdCAhPT0gdW5kZWZpbmVkKSB0aGlzLnByZXNlcnZlQXNwZWN0LnNldCh2YWx1ZS5wcmVzZXJ2ZUFzcGVjdCk7XG4gICAgaWYgKHZhbHVlLnBhbGV0dGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5wYWxldHRlUmVmLnNldCh0aGlzLnJlc29sdmVQYWxldHRlKHZhbHVlLnBhbGV0dGUpKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnJlc2h1ZmZsZUludGVydmFsICE9PSB1bmRlZmluZWQgJiYgdmFsdWUucmVzaHVmZmxlSW50ZXJ2YWwgPiAwKSB7XG4gICAgICB0aGlzLnJlc2h1ZmZsZUludGVydmFsLnNldCh2YWx1ZS5yZXNodWZmbGVJbnRlcnZhbCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS50aWxlc1BlclRpY2sgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS50aWxlc1BlclRpY2sgPj0gMCkge1xuICAgICAgdGhpcy50aWxlc1BlclRpY2suc2V0KE1hdGguZmxvb3IodmFsdWUudGlsZXNQZXJUaWNrKSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5hbmltYXRlZCAhPT0gdW5kZWZpbmVkKSB0aGlzLmFuaW1hdGVkLnNldCghIXZhbHVlLmFuaW1hdGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaWxlcyBzaWduYWwg4oCUIG11dGFibGUuIFNlIHJlZ2VuZXJhIGNvbXBsZXRhIGN1YW5kbyBjYW1iaWEgc2VlZC9jb2xzL3Jvd3MvXG4gICAqIHBhbGV0dGUvZGVuc2l0eS4gRW4gbW9kbyBhbmltYXRlZCwgdGlsZXMgaW5kaXZpZHVhbGVzIHNlIHNvYnJlc2NyaWJlbiBzaW5cbiAgICogdG9jYXIgZWwgcmVzdG8gKGVmZWN0byBzdGFnZ2VyZWQpLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSB0aWxlcyA9IHNpZ25hbDxQYXR0ZXJuVGlsZVtdPihbXSk7XG5cbiAgLyoqIFNWRyBjb21wbGV0byBjb21vIHN0cmluZyBzYW5pdGl6ZWQgcGFyYSBgW2lubmVySFRNTF1gLiAqL1xuICByZWFkb25seSBzdmdIdG1sID0gY29tcHV0ZWQ8U2FmZUh0bWw+KCgpID0+IHtcbiAgICBjb25zdCBjb2xzID0gdGhpcy5jb2xzKCk7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMucm93cygpO1xuICAgIGNvbnN0IHBhbGV0dGUgPSB0aGlzLnBhbGV0dGVSZWYoKTtcbiAgICBjb25zdCBpbm5lciA9IHJlbmRlclBhdHRlcm5TdmdJbm5lcih0aGlzLnRpbGVzKCksIGNvbHMsIHBhbGV0dGVbMF0hKTtcbiAgICBjb25zdCBhc3BlY3QgPSB0aGlzLnByZXNlcnZlQXNwZWN0KCkgPT09ICdtZWV0JyA/ICd4TWlkWU1pZCBtZWV0JyA6ICd4TWlkWU1pZCBzbGljZSc7XG4gICAgLy8gd2lkdGgvaGVpZ2h0PVwiMTAwJVwiIGNvbW8gQVRSSUJVVE9TIChubyBzb2xvIENTUykg4oCUIGFsZ3Vub3MgYnJvd3NlcnNcbiAgICAvLyAoU2FmYXJpL2lPUykgaWdub3JhbiBDU1MgaGVpZ2h0IGVuIFNWRyBzaW4gYXRyaWJ1dG9zIHkgY2FlbiBhbCBpbnRyaW5zaWNcbiAgICAvLyBhc3BlY3QgZGVsIHZpZXdCb3gsIGRlamFuZG8gZnJhbmphcyB2YWPDrWFzIGN1YW5kbyBlbCBjb250YWluZXIgbm9cbiAgICAvLyBtYXRjaGVhIGVsIHJhdGlvLlxuICAgIGNvbnN0IHN2ZyA9IGA8c3ZnIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiB2aWV3Qm94PVwiMCAwICR7Y29scyAqIDEwMH0gJHtyb3dzICogMTAwfVwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCIke2FzcGVjdH1cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3R5bGU9XCJkaXNwbGF5OmJsb2NrO1wiPiR7aW5uZXJ9PC9zdmc+YDtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoc3ZnKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gUmVnZW5lcmEgZ3JpZCBjb21wbGV0YSBjdWFuZG8gY2FtYmlhbiBwcm9wcyBlc3RydWN0dXJhbGVzIChjb2xzL3Jvd3MvXG4gICAgLy8gcGFsZXR0ZS9kZW5zaXR5L3NlZWQpLiBFbCBzZWVkIHNvbG8gY2FtYmlhIGV4cGzDrWNpdGFtZW50ZSB2aWEgcHJvcHMgb1xuICAgIC8vIG1vdW50IGluaWNpYWwg4oCUIE5PIHNlIG11dGEgZW4gbW9kbyBhbmltYXRlZC5cbiAgICAvLyBgYWxsb3dTaWduYWxXcml0ZXM6IHRydWVgIHJlcXVlcmlkbyBlbiBBbmd1bGFyIDE4OiBlc2NyaWJpbW9zIGEgYHRpbGVzYFxuICAgIC8vIHNpZ25hbCBkZW50cm8gZGVsIGVmZmVjdCAoY29uc3VtaWRvIHBvciBzdmdIdG1sIGNvbXB1dGVkKS5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHMgPSB0aGlzLmNvbHMoKTtcbiAgICAgICAgY29uc3Qgcm93cyA9IHRoaXMucm93cygpO1xuICAgICAgICBjb25zdCBzZWVkID0gdGhpcy5zZWVkKCk7XG4gICAgICAgIGNvbnN0IHBhbGV0dGUgPSB0aGlzLnBhbGV0dGVSZWYoKTtcbiAgICAgICAgY29uc3QgZGVuc2l0eSA9IHRoaXMuY2hldnJvbkRlbnNpdHkoKTtcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB0aGlzLnBhdHRlcm5TdHlsZSgpO1xuICAgICAgICB0aGlzLnRpbGVzLnNldChnZW5lcmF0ZVBhdHRlcm5UaWxlcyh7IGNvbHMsIHJvd3MsIHNlZWQsIHBhbGV0dGUsIGNoZXZyb25EZW5zaXR5OiBkZW5zaXR5LCBzdHlsZSB9KSk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIC8vIE1vZG8gYW5pbWF0ZWQ6IGNhZGEgYHJlc2h1ZmZsZUludGVydmFsYCBtcyByZWdlbmVyYSBlbCBncmlkIGNvbXBsZXRvXG4gICAgLy8gY29uIHVuIHNlZWQgbnVldm8uIFZpc3VhbG1lbnRlOiBlbCBwYXRyw7NuIGNhbWJpYSBkZSB2ZXogZW4gY3VhbmRvLlxuICAgIC8vIFNpIGB0aWxlc1BlclRpY2sgPiAwYCB5IDwgdG90YWwgdGlsZXMsIGhhY2Ugc3RhZ2dlcmVkIChyZWVtcGxhemEgc29sb1xuICAgIC8vIE4gdGlsZXMgZW4gdmV6IGRlIHRvZGEgbGEgZ3JpZCkuIERlZmF1bHQgdGlsZXNQZXJUaWNrPTAg4oaSIHJlc2VlZCB0b3RhbC5cbiAgICBlZmZlY3Qob25DbGVhbnVwID0+IHtcbiAgICAgIGNvbnN0IGlzQW5pbWF0ZWQgPSB0aGlzLmFuaW1hdGVkKCk7XG4gICAgICBjb25zdCBpbnRlcnZhbCA9IHRoaXMucmVzaHVmZmxlSW50ZXJ2YWwoKTtcbiAgICAgIGNvbnN0IHBlclRpY2sgPSB0aGlzLnRpbGVzUGVyVGljaygpO1xuICAgICAgaWYgKHRoaXMudGltZXIpIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICB0aGlzLnRpbWVyID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKCFpc0FuaW1hdGVkKSByZXR1cm47XG4gICAgICB0aGlzLnRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBpZiAocGVyVGljayA+IDApIHtcbiAgICAgICAgICB0aGlzLm11dGF0ZVJhbmRvbVRpbGVzKHBlclRpY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VlZC5zZXQodGhpcy5yYW5kb21TZWVkKCkpO1xuICAgICAgICB9XG4gICAgICB9LCBpbnRlcnZhbCk7XG4gICAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICAgICAgdGhpcy50aW1lciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVlbXBsYXphIGBjb3VudGAgdGlsZXMgcmFuZG9tIGRlbCBncmlkIGFjdHVhbCBjb24gdGlsZXMgbnVldm9zIGdlbmVyYWRvcy5cbiAgICogVXNhZG8gcGFyYSBzdGFnZ2VyZWQgcmVzaHVmZmxlIChvcHQtaW4gdmlhIGB0aWxlc1BlclRpY2sgPiAwYCkuXG4gICAqL1xuICBwcml2YXRlIG11dGF0ZVJhbmRvbVRpbGVzKGNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy50aWxlcygpO1xuICAgIGlmIChjdXJyZW50Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IG5leHQgPSBbLi4uY3VycmVudF07XG4gICAgY29uc3QgcGFsZXR0ZSA9IHRoaXMucGFsZXR0ZVJlZigpO1xuICAgIGNvbnN0IGRlbnNpdHkgPSB0aGlzLmNoZXZyb25EZW5zaXR5KCk7XG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLnBhdHRlcm5TdHlsZSgpO1xuICAgIGNvbnN0IGRlbnNpdHlDb25maWc6IFBhdHRlcm5EZW5zaXR5Q29uZmlnIHwgdW5kZWZpbmVkID0gc3R5bGUgPyBQQVRURVJOX1NUWUxFX0NPTkZJR1Nbc3R5bGVdIDogdW5kZWZpbmVkO1xuICAgIGZvciAobGV0IG4gPSAwOyBuIDwgY291bnQ7IG4rKykge1xuICAgICAgY29uc3QgaWR4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbmV4dC5sZW5ndGgpO1xuICAgICAgbmV4dFtpZHhdID0gZ2VuZXJhdGVSYW5kb21UaWxlKHBhbGV0dGUsIGRlbnNpdHksIE1hdGgucmFuZG9tLCBkZW5zaXR5Q29uZmlnKTtcbiAgICB9XG4gICAgdGhpcy50aWxlcy5zZXQobmV4dCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aW1lcikgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVBhbGV0dGUocDogUGF0dGVyblBhbGV0dGVLZXkgfCBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwKSkge1xuICAgICAgLy8gQWNlcHRhIGFycmF5cyBkZSBjdWFscXVpZXIgbG9uZ2l0dWQg4omlMjsgdGlsZSBjb250cmFzdCBsb2dpYyB1c2Egw61uZGljZXMuXG4gICAgICByZXR1cm4gcC5sZW5ndGggPj0gMiA/IHAgOiBQQVRURVJOX1BBTEVUVEVTLnB1cnBsZTtcbiAgICB9XG4gICAgcmV0dXJuIFBBVFRFUk5fUEFMRVRURVNbcF0gPz8gUEFUVEVSTl9QQUxFVFRFUy5wdXJwbGU7XG4gIH1cblxuICBwcml2YXRlIHJhbmRvbVNlZWQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMV8wMDBfMDAwKTtcbiAgfVxufVxuIl19
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcGF0dGVybi9wYXR0ZXJuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUtyQixxQkFBcUIsR0FDdEIsTUFBTSxVQUFVLENBQUM7O0FBR2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFvQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQWlCM0IsSUFBYSxLQUFLLENBQUMsS0FBa0M7UUFDbkQsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ25CLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckUsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLElB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IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIElucHV0LCBPbkRlc3Ryb3ksIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBnZW5lcmF0ZVBhdHRlcm5UaWxlcyxcbiAgZ2VuZXJhdGVSYW5kb21UaWxlLFxuICBQQVRURVJOX1BBTEVUVEVTLFxuICBQQVRURVJOX1NUWUxFX0NPTkZJR1MsXG4gIFBhdHRlcm5EZW5zaXR5Q29uZmlnLFxuICBQYXR0ZXJuUGFsZXR0ZUtleSxcbiAgUGF0dGVyblN0eWxlS2V5LFxuICBQYXR0ZXJuVGlsZSxcbiAgcmVuZGVyUGF0dGVyblN2Z0lubmVyLFxufSBmcm9tICcuL21vdGlmcyc7XG5pbXBvcnQgeyBQYXR0ZXJuTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBgdmFsLXBhdHRlcm5gXG4gKlxuICogQ29tcG9uZW50ZSBkZSBmb25kbyBnZW9tw6l0cmljbyBpbnNwaXJhZG8gZW4gZWwgc2lzdGVtYSBWYWx0ZWNoLiBSZW5kZXJpemEgdW5cbiAqIGdyaWQgZGUgdGlsZXMgMTAww5cxMDAgY29uIG1vdGlmcyAoY2hldnJvbnMsIHRyaWFuZ2xlcywgZGlhbW9uZHMsIGFycm93cykgZW5cbiAqIHVuIFNWRyBpbmxpbmUuIERldGVybWluaXN0YSB2w61hIGBzZWVkYCBvIGFuaW1hZG8gdsOtYSBgcmVzaHVmZmxlYC5cbiAqXG4gKiBDZXJvIGRlcGVuZGVuY2lhcyBleHRlcm5hcyDigJQgdG9kbyBTVkcuXG4gKlxuICogQGV4YW1wbGUgQ29tbyBmb25kbyBkZSBjYXJkIChDU1MgYWJzb2x1dGUpOlxuICogYGBgc2Nzc1xuICogLmNhcmQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IG92ZXJmbG93OiBoaWRkZW47IH1cbiAqIC5jYXJkIHZhbC1wYXR0ZXJuIHsgcG9zaXRpb246IGFic29sdXRlOyBpbnNldDogMDsgei1pbmRleDogMDsgb3BhY2l0eTogMC40OyB9XG4gKiAuY2FyZCAuY29udGVudCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogMTsgfVxuICogYGBgXG4gKlxuICogYGBgaHRtbFxuICogPGRpdiBjbGFzcz1cImNhcmRcIj5cbiAqICAgPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdwdXJwbGUnLCBjb2xzOiA2LCByb3dzOiAzLCBzZWVkOiA0MiB9XCIgLz5cbiAqICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5UdSBjb250ZW5pZG8gYXF1w608L2Rpdj5cbiAqIDwvZGl2PlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQ29tbyBiYWNrZ3JvdW5kIGFuaW1hZG8gKGhlcm8vbG9naW4pOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdsYXZlbmRlcicsIGNvbHM6IDE2LCByb3dzOiA4LCBhbmltYXRlZDogdHJ1ZSB9XCIgLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcGF0dGVybicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYCA8ZGl2IGNsYXNzPVwidmFsLXBhdHRlcm5cIiBbaW5uZXJIVE1MXT1cInN2Z0h0bWwoKVwiPjwvZGl2PiBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBsaW5lLWhlaWdodDogMDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuXG4gICAgICAudmFsLXBhdHRlcm4ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjZzIGVhc2UtaW4tb3V0O1xuICAgICAgfVxuXG4gICAgICAvKiBTcGVjaWZpY2l0eSAwLDIsMCDigJQgYmVhdHMgVUEgZGVmYXVsdHMgcGFyYSBTVkcuIFdpZHRoL2hlaWdodCBmdWVyemFuXG4gICAgICAgKiBmaWxsIGRlbCBjb250YWluZXIuIHByZXNlcnZlQXNwZWN0UmF0aW89XCJzbGljZVwiIGVuIGVsIHZpZXdCb3ggaGFjZSBlbFxuICAgICAgICogY3JvcC9jb3Zlci4gU2luIGVzdG8sIGVsIFNWRyBjYWUgYSBzdSBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvIGRlbFxuICAgICAgICogdmlld0JveCB5IGRlamEgZnJhbmphcyBjdWFuZG8gZWwgY29udGFpbmVyIG5vIG1hdGNoZWEgKGVqLiBtb2JpbGVcbiAgICAgICAqIGNvbiBjb2xzL3Jvd3Mgd2lkZS1hc3BlY3QpLiAqL1xuICAgICAgLnZhbC1wYXR0ZXJuIHN2ZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFBhdHRlcm5Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29scyA9IHNpZ25hbCgxMik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm93cyA9IHNpZ25hbCg0KTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWVkID0gc2lnbmFsKHRoaXMucmFuZG9tU2VlZCgpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYWxldHRlUmVmID0gc2lnbmFsPHN0cmluZ1tdPihQQVRURVJOX1BBTEVUVEVTLnB1cnBsZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hldnJvbkRlbnNpdHkgPSBzaWduYWwoMC41NSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGF0dGVyblN0eWxlID0gc2lnbmFsPFBhdHRlcm5TdHlsZUtleSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwcmVzZXJ2ZUFzcGVjdCA9IHNpZ25hbDwnc2xpY2UnIHwgJ21lZXQnPignc2xpY2UnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhbmltYXRlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzaHVmZmxlSW50ZXJ2YWwgPSBzaWduYWwoODAwMCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGlsZXNQZXJUaWNrID0gc2lnbmFsKDApO1xuICBwcml2YXRlIHJlYWRvbmx5IHRpbGVSb3RhdGlvbiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJpdmF0ZSB0aW1lcj86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcblxuICBASW5wdXQoKSBzZXQgcHJvcHModmFsdWU6IFBhdHRlcm5NZXRhZGF0YSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghdmFsdWUpIHJldHVybjtcbiAgICBpZiAodmFsdWUuY29scyAhPT0gdW5kZWZpbmVkKSB0aGlzLmNvbHMuc2V0KE1hdGgubWF4KDEsIHZhbHVlLmNvbHMpKTtcbiAgICBpZiAodmFsdWUucm93cyAhPT0gdW5kZWZpbmVkKSB0aGlzLnJvd3Muc2V0KE1hdGgubWF4KDEsIHZhbHVlLnJvd3MpKTtcbiAgICBpZiAodmFsdWUuc2VlZCAhPT0gdW5kZWZpbmVkKSB0aGlzLnNlZWQuc2V0KHZhbHVlLnNlZWQpO1xuICAgIGlmICh2YWx1ZS5zdHlsZSAhPT0gdW5kZWZpbmVkKSB0aGlzLnBhdHRlcm5TdHlsZS5zZXQodmFsdWUuc3R5bGUpO1xuICAgIGlmICh2YWx1ZS5jaGV2cm9uRGVuc2l0eSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnN0eWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2hldnJvbkRlbnNpdHkuc2V0KE1hdGgubWluKDEsIE1hdGgubWF4KDAsIHZhbHVlLmNoZXZyb25EZW5zaXR5KSkpO1xuICAgIH1cbiAgICBpZiAodmFsdWUucHJlc2VydmVBc3BlY3QgIT09IHVuZGVmaW5lZCkgdGhpcy5wcmVzZXJ2ZUFzcGVjdC5zZXQodmFsdWUucHJlc2VydmVBc3BlY3QpO1xuICAgIGlmICh2YWx1ZS5wYWxldHRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucGFsZXR0ZVJlZi5zZXQodGhpcy5yZXNvbHZlUGFsZXR0ZSh2YWx1ZS5wYWxldHRlKSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5yZXNodWZmbGVJbnRlcnZhbCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnJlc2h1ZmZsZUludGVydmFsID4gMCkge1xuICAgICAgdGhpcy5yZXNodWZmbGVJbnRlcnZhbC5zZXQodmFsdWUucmVzaHVmZmxlSW50ZXJ2YWwpO1xuICAgIH1cbiAgICBpZiAodmFsdWUudGlsZXNQZXJUaWNrICE9PSB1bmRlZmluZWQgJiYgdmFsdWUudGlsZXNQZXJUaWNrID49IDApIHtcbiAgICAgIHRoaXMudGlsZXNQZXJUaWNrLnNldChNYXRoLmZsb29yKHZhbHVlLnRpbGVzUGVyVGljaykpO1xuICAgIH1cbiAgICBpZiAodmFsdWUuYW5pbWF0ZWQgIT09IHVuZGVmaW5lZCkgdGhpcy5hbmltYXRlZC5zZXQoISF2YWx1ZS5hbmltYXRlZCk7XG4gICAgaWYgKHZhbHVlLnRpbGVSb3RhdGlvbiAhPT0gdW5kZWZpbmVkKSB0aGlzLnRpbGVSb3RhdGlvbi5zZXQoISF2YWx1ZS50aWxlUm90YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRpbGVzIHNpZ25hbCDigJQgbXV0YWJsZS4gU2UgcmVnZW5lcmEgY29tcGxldGEgY3VhbmRvIGNhbWJpYSBzZWVkL2NvbHMvcm93cy9cbiAgICogcGFsZXR0ZS9kZW5zaXR5LiBFbiBtb2RvIGFuaW1hdGVkLCB0aWxlcyBpbmRpdmlkdWFsZXMgc2Ugc29icmVzY3JpYmVuIHNpblxuICAgKiB0b2NhciBlbCByZXN0byAoZWZlY3RvIHN0YWdnZXJlZCkuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHRpbGVzID0gc2lnbmFsPFBhdHRlcm5UaWxlW10+KFtdKTtcblxuICAvKiogU1ZHIGNvbXBsZXRvIGNvbW8gc3RyaW5nIHNhbml0aXplZCBwYXJhIGBbaW5uZXJIVE1MXWAuICovXG4gIHJlYWRvbmx5IHN2Z0h0bWwgPSBjb21wdXRlZDxTYWZlSHRtbD4oKCkgPT4ge1xuICAgIGNvbnN0IGNvbHMgPSB0aGlzLmNvbHMoKTtcbiAgICBjb25zdCByb3dzID0gdGhpcy5yb3dzKCk7XG4gICAgY29uc3QgcGFsZXR0ZSA9IHRoaXMucGFsZXR0ZVJlZigpO1xuICAgIGNvbnN0IGlubmVyID0gcmVuZGVyUGF0dGVyblN2Z0lubmVyKHRoaXMudGlsZXMoKSwgY29scywgcGFsZXR0ZVswXSEpO1xuICAgIGNvbnN0IGFzcGVjdCA9IHRoaXMucHJlc2VydmVBc3BlY3QoKSA9PT0gJ21lZXQnID8gJ3hNaWRZTWlkIG1lZXQnIDogJ3hNaWRZTWlkIHNsaWNlJztcbiAgICAvLyB3aWR0aC9oZWlnaHQ9XCIxMDAlXCIgY29tbyBBVFJJQlVUT1MgKG5vIHNvbG8gQ1NTKSDigJQgYWxndW5vcyBicm93c2Vyc1xuICAgIC8vIChTYWZhcmkvaU9TKSBpZ25vcmFuIENTUyBoZWlnaHQgZW4gU1ZHIHNpbiBhdHJpYnV0b3MgeSBjYWVuIGFsIGludHJpbnNpY1xuICAgIC8vIGFzcGVjdCBkZWwgdmlld0JveCwgZGVqYW5kbyBmcmFuamFzIHZhY8OtYXMgY3VhbmRvIGVsIGNvbnRhaW5lciBub1xuICAgIC8vIG1hdGNoZWEgZWwgcmF0aW8uXG4gICAgY29uc3Qgc3ZnID0gYDxzdmcgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIHZpZXdCb3g9XCIwIDAgJHtjb2xzICogMTAwfSAke3Jvd3MgKiAxMDB9XCIgcHJlc2VydmVBc3BlY3RSYXRpbz1cIiR7YXNwZWN0fVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBzdHlsZT1cImRpc3BsYXk6YmxvY2s7XCI+JHtpbm5lcn08L3N2Zz5gO1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChzdmcpO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBSZWdlbmVyYSBncmlkIGNvbXBsZXRhIGN1YW5kbyBjYW1iaWFuIHByb3BzIGVzdHJ1Y3R1cmFsZXMgKGNvbHMvcm93cy9cbiAgICAvLyBwYWxldHRlL2RlbnNpdHkvc2VlZCkuIEVsIHNlZWQgc29sbyBjYW1iaWEgZXhwbMOtY2l0YW1lbnRlIHZpYSBwcm9wcyBvXG4gICAgLy8gbW91bnQgaW5pY2lhbCDigJQgTk8gc2UgbXV0YSBlbiBtb2RvIGFuaW1hdGVkLlxuICAgIC8vIGBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZWAgcmVxdWVyaWRvIGVuIEFuZ3VsYXIgMTg6IGVzY3JpYmltb3MgYSBgdGlsZXNgXG4gICAgLy8gc2lnbmFsIGRlbnRybyBkZWwgZWZmZWN0IChjb25zdW1pZG8gcG9yIHN2Z0h0bWwgY29tcHV0ZWQpLlxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgY29scyA9IHRoaXMuY29scygpO1xuICAgICAgICBjb25zdCByb3dzID0gdGhpcy5yb3dzKCk7XG4gICAgICAgIGNvbnN0IHNlZWQgPSB0aGlzLnNlZWQoKTtcbiAgICAgICAgY29uc3QgcGFsZXR0ZSA9IHRoaXMucGFsZXR0ZVJlZigpO1xuICAgICAgICBjb25zdCBkZW5zaXR5ID0gdGhpcy5jaGV2cm9uRGVuc2l0eSgpO1xuICAgICAgICBjb25zdCBzdHlsZSA9IHRoaXMucGF0dGVyblN0eWxlKCk7XG4gICAgICAgIGNvbnN0IHRpbGVSb3RhdGlvbiA9IHRoaXMudGlsZVJvdGF0aW9uKCk7XG4gICAgICAgIHRoaXMudGlsZXMuc2V0KFxuICAgICAgICAgIGdlbmVyYXRlUGF0dGVyblRpbGVzKHsgY29scywgcm93cywgc2VlZCwgcGFsZXR0ZSwgY2hldnJvbkRlbnNpdHk6IGRlbnNpdHksIHN0eWxlLCB0aWxlUm90YXRpb24gfSlcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgLy8gTW9kbyBhbmltYXRlZDogY2FkYSBgcmVzaHVmZmxlSW50ZXJ2YWxgIG1zIHJlZ2VuZXJhIGVsIGdyaWQgY29tcGxldG9cbiAgICAvLyBjb24gdW4gc2VlZCBudWV2by4gVmlzdWFsbWVudGU6IGVsIHBhdHLDs24gY2FtYmlhIGRlIHZleiBlbiBjdWFuZG8uXG4gICAgLy8gU2kgYHRpbGVzUGVyVGljayA+IDBgIHkgPCB0b3RhbCB0aWxlcywgaGFjZSBzdGFnZ2VyZWQgKHJlZW1wbGF6YSBzb2xvXG4gICAgLy8gTiB0aWxlcyBlbiB2ZXogZGUgdG9kYSBsYSBncmlkKS4gRGVmYXVsdCB0aWxlc1BlclRpY2s9MCDihpIgcmVzZWVkIHRvdGFsLlxuICAgIGVmZmVjdChvbkNsZWFudXAgPT4ge1xuICAgICAgY29uc3QgaXNBbmltYXRlZCA9IHRoaXMuYW5pbWF0ZWQoKTtcbiAgICAgIGNvbnN0IGludGVydmFsID0gdGhpcy5yZXNodWZmbGVJbnRlcnZhbCgpO1xuICAgICAgY29uc3QgcGVyVGljayA9IHRoaXMudGlsZXNQZXJUaWNrKCk7XG4gICAgICBpZiAodGhpcy50aW1lcikgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICAgIHRoaXMudGltZXIgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAoIWlzQW5pbWF0ZWQpIHJldHVybjtcbiAgICAgIHRoaXMudGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmIChwZXJUaWNrID4gMCkge1xuICAgICAgICAgIHRoaXMubXV0YXRlUmFuZG9tVGlsZXMocGVyVGljayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWVkLnNldCh0aGlzLnJhbmRvbVNlZWQoKSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGludGVydmFsKTtcbiAgICAgIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICAgICAgICB0aGlzLnRpbWVyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWVtcGxhemEgYGNvdW50YCB0aWxlcyByYW5kb20gZGVsIGdyaWQgYWN0dWFsIGNvbiB0aWxlcyBudWV2b3MgZ2VuZXJhZG9zLlxuICAgKiBVc2FkbyBwYXJhIHN0YWdnZXJlZCByZXNodWZmbGUgKG9wdC1pbiB2aWEgYHRpbGVzUGVyVGljayA+IDBgKS5cbiAgICovXG4gIHByaXZhdGUgbXV0YXRlUmFuZG9tVGlsZXMoY291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnRpbGVzKCk7XG4gICAgaWYgKGN1cnJlbnQubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgbmV4dCA9IFsuLi5jdXJyZW50XTtcbiAgICBjb25zdCBwYWxldHRlID0gdGhpcy5wYWxldHRlUmVmKCk7XG4gICAgY29uc3QgZGVuc2l0eSA9IHRoaXMuY2hldnJvbkRlbnNpdHkoKTtcbiAgICBjb25zdCBzdHlsZSA9IHRoaXMucGF0dGVyblN0eWxlKCk7XG4gICAgY29uc3QgZGVuc2l0eUNvbmZpZzogUGF0dGVybkRlbnNpdHlDb25maWcgfCB1bmRlZmluZWQgPSBzdHlsZSA/IFBBVFRFUk5fU1RZTEVfQ09ORklHU1tzdHlsZV0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgcm90YXRlID0gdGhpcy50aWxlUm90YXRpb24oKTtcbiAgICBjb25zdCBST1RTOiBBcnJheTwwIHwgOTAgfCAxODAgfCAyNzA+ID0gWzAsIDkwLCAxODAsIDI3MF07XG4gICAgZm9yIChsZXQgbiA9IDA7IG4gPCBjb3VudDsgbisrKSB7XG4gICAgICBjb25zdCBpZHggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBuZXh0Lmxlbmd0aCk7XG4gICAgICBjb25zdCB0aWxlID0gZ2VuZXJhdGVSYW5kb21UaWxlKHBhbGV0dGUsIGRlbnNpdHksIE1hdGgucmFuZG9tLCBkZW5zaXR5Q29uZmlnKTtcbiAgICAgIGlmIChyb3RhdGUpIHRpbGUucm90ID0gUk9UU1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA0KV07XG4gICAgICBuZXh0W2lkeF0gPSB0aWxlO1xuICAgIH1cbiAgICB0aGlzLnRpbGVzLnNldChuZXh0KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVyKSBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlUGFsZXR0ZShwOiBQYXR0ZXJuUGFsZXR0ZUtleSB8IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHApKSB7XG4gICAgICAvLyBBY2VwdGEgYXJyYXlzIGRlIGN1YWxxdWllciBsb25naXR1ZCDiiaUyOyB0aWxlIGNvbnRyYXN0IGxvZ2ljIHVzYSDDrW5kaWNlcy5cbiAgICAgIHJldHVybiBwLmxlbmd0aCA+PSAyID8gcCA6IFBBVFRFUk5fUEFMRVRURVMucHVycGxlO1xuICAgIH1cbiAgICByZXR1cm4gUEFUVEVSTl9QQUxFVFRFU1twXSA/PyBQQVRURVJOX1BBTEVUVEVTLnB1cnBsZTtcbiAgfVxuXG4gIHByaXZhdGUgcmFuZG9tU2VlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxXzAwMF8wMDApO1xuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcGF0dGVybi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0dGVyblBhbGV0dGVLZXksIFBhdHRlcm5TdHlsZUtleSB9IGZyb20gJy4vbW90aWZzJztcblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBkZWwgY29tcG9uZW50ZSBgdmFsLXBhdHRlcm5gLlxuICpcbiAqIEBleGFtcGxlIFN0YXRpYyAoc2VlZCBmaWpvLCByZXByb2R1Y2libGUpOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdwdXJwbGUnLCBjb2xzOiAxMiwgcm93czogNCwgc2VlZDogNDIgfVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBBbmltYXRlZCB3aG9sZS1ncmlkIHJlc2h1ZmZsZSAoY2FkYSAxMHMpOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdtaWRuaWdodCcsIGNvbHM6IDE0LCByb3dzOiA1LCBhbmltYXRlZDogdHJ1ZSwgcmVzaHVmZmxlSW50ZXJ2YWw6IDEwMDAwIH1cIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQW5pbWF0ZWQgc3RhZ2dlcmVkICgyIHRpbGVzIGNhZGEgODAwbXMg4oCUIHN1dGlsKTpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcGF0dGVybiBbcHJvcHNdPVwieyBhbmltYXRlZDogdHJ1ZSwgcmVzaHVmZmxlSW50ZXJ2YWw6IDgwMCwgdGlsZXNQZXJUaWNrOiAyIH1cIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgUHJlc2V0IGdlb23DqXRyaWNvIGNvbiBwYWxldGEgZW1iZXI6XG4gKiBgYGBodG1sXG4gKiA8dmFsLXBhdHRlcm4gW3Byb3BzXT1cInsgcGFsZXR0ZTogJ2VtYmVyJywgc3R5bGU6ICdnZW9tZXRyaWMnLCBjb2xzOiAxMCwgcm93czogNCB9XCIgLz5cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5NZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBQYWxldHRlIGJ1aWx0LWluIG8gYXJyYXkgY3VzdG9tIGRlIDggY29sb3JlcyBkYXJrIOKGkiBsaWdodC5cbiAgICogQnVpbHQtaW5zOiBgJ3B1cnBsZScgfCAnaW5rJyB8ICdsYXZlbmRlcicgfCAnbWlkbmlnaHQnIHwgJ2VtYmVyJyB8ICdmb3Jlc3QnIHwgJ3Jvc2UnIHwgJ2dvbGQnIHwgJ21vbm8nYC5cbiAgICogRGVmYXVsdDogYCdwdXJwbGUnYC5cbiAgICovXG4gIHBhbGV0dGU/OiBQYXR0ZXJuUGFsZXR0ZUtleSB8IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBQcmVzZXQgZGUgY29tcG9zaWNpw7NuIGRlIGZhbWlsaWFzIGRlIG1vdGlmcy5cbiAgICogLSBgYnJhbmRlZGAgICDihpIgQ2hldnJvbnMgZG9taW5hbnRlcyAoaWRlbnRpZGFkIFZhbHRlY2gpLiBEZWZhdWx0LlxuICAgKiAtIGBnZW9tZXRyaWNgIOKGkiBUcmnDoW5ndWxvcywgZXNxdWluYXMgcmVkb25kZWFkYXMgeSBjw61yY3Vsb3MuXG4gICAqIC0gYG1pbmltYWxgICAg4oaSIE1heW9yw61hIHPDs2xpZG8gY29uIHRyYXpvcyBzdXRpbGVzLiBMb29rIGNvcnBvcmF0aXZvIGxpbXBpby5cbiAgICogLSBgZGVuc2VgICAgICDihpIgTWV6Y2xhIHJpY2EgZGUgdG9kYXMgbGFzIGZhbWlsaWFzLiBNw6F4aW1hIHRleHR1cmEuXG4gICAqIC0gYGNvZGVgICAgICAg4oaSIE7Dum1lcm9zLCB1bmRlcnNjb3JlIGBfYCB5IGNoZXZyb25zLiBMb29rIGRlIHRlcm1pbmFsL2PDs2RpZ28uXG4gICAqXG4gICAqIEN1YW5kbyBzZSB1c2EgYHN0eWxlYCwgc29icmVlc2NyaWJlIGBjaGV2cm9uRGVuc2l0eWAuXG4gICAqL1xuICBzdHlsZT86IFBhdHRlcm5TdHlsZUtleTtcblxuICAvKiogQ29sdW1uYXMgZGVsIGdyaWQuIERlZmF1bHQ6IDEyLiAqL1xuICBjb2xzPzogbnVtYmVyO1xuXG4gIC8qKiBGaWxhcyBkZWwgZ3JpZC4gRGVmYXVsdDogNC4gKi9cbiAgcm93cz86IG51bWJlcjtcblxuICAvKipcbiAgICogU2VlZCBwYXJhIE11bGJlcnJ5MzIg4oCUIGRldGVybWluYSBlbCBwYXRyw7NuLiBTaSBubyBzZSBwYXNhLCBnZW5lcmEgdW5vIHJhbmRvbVxuICAgKiBhbCBtb3VudCB5IHF1ZWRhIGZpam8gKGEgbWVub3MgcXVlIGBhbmltYXRlZDogdHJ1ZWApLlxuICAgKi9cbiAgc2VlZD86IG51bWJlcjtcblxuICAvKipcbiAgICogRGVuc2lkYWQgZGUgY2hldnJvbnMgKDAuLjEpLiBJZ25vcmFkbyBzaSBzZSBwYXNhIGBzdHlsZWAuXG4gICAqIERlZmF1bHQ6IGAwLjU1YC5cbiAgICovXG4gIGNoZXZyb25EZW5zaXR5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTaSBgdHJ1ZWAsIGVsIHBhdHLDs24gYW5pbWEgdGlsZXMgcGVyacOzZGljYW1lbnRlLlxuICAgKiBDb24gYHRpbGVzUGVyVGljazogMGAgKGRlZmF1bHQpOiByZXNlZWQgY29tcGxldG8gZGUgbGEgZ3JpZC5cbiAgICogQ29uIGB0aWxlc1BlclRpY2sgPiAwYDogcmVzaHVmZmxlIHBhcmNpYWwgKHN0YWdnZXJlZCDigJQgbcOhcyBzdXRpbCkuXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAuXG4gICAqL1xuICBhbmltYXRlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIG1zIGVudHJlIHVwZGF0ZXMgKG1vZG8gYW5pbWF0ZWQpLlxuICAgKiBEZWZhdWx0OiBgODAwMGAuXG4gICAqL1xuICByZXNodWZmbGVJbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogQ3XDoW50b3MgdGlsZXMgY2FtYmlhciBwb3IgdGljayAobW9kbyBhbmltYXRlZCkuXG4gICAqIGAwYCDihpIgcmVzZWVkIGdyaWQgY29tcGxldGEuIGAxLU5gIOKGkiBzdGFnZ2VyZWQgc3V0aWwuXG4gICAqIERlZmF1bHQ6IGAwYC5cbiAgICovXG4gIHRpbGVzUGVyVGljaz86IG51bWJlcjtcblxuICAvKipcbiAgICogYHNsaWNlYCAoZGVmYXVsdCkg4oCUIGN1YnJlIHRvZG8gZWwgY29udGVuZWRvciBjb24gY3JvcCBzaSBuZWNlc2FyaW8uXG4gICAqIGBtZWV0YCDigJQgZml0IGNvbXBsZXRvIHNpbiBjcm9wLlxuICAgKi9cbiAgcHJlc2VydmVBc3BlY3Q/OiAnc2xpY2UnIHwgJ21lZXQnO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcGF0dGVybi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0dGVyblBhbGV0dGVLZXksIFBhdHRlcm5TdHlsZUtleSB9IGZyb20gJy4vbW90aWZzJztcblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBkZWwgY29tcG9uZW50ZSBgdmFsLXBhdHRlcm5gLlxuICpcbiAqIEBleGFtcGxlIFN0YXRpYyAoc2VlZCBmaWpvLCByZXByb2R1Y2libGUpOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdwdXJwbGUnLCBjb2xzOiAxMiwgcm93czogNCwgc2VlZDogNDIgfVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBBbmltYXRlZCB3aG9sZS1ncmlkIHJlc2h1ZmZsZSAoY2FkYSAxMHMpOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdtaWRuaWdodCcsIGNvbHM6IDE0LCByb3dzOiA1LCBhbmltYXRlZDogdHJ1ZSwgcmVzaHVmZmxlSW50ZXJ2YWw6IDEwMDAwIH1cIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQW5pbWF0ZWQgc3RhZ2dlcmVkICgyIHRpbGVzIGNhZGEgODAwbXMg4oCUIHN1dGlsKTpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcGF0dGVybiBbcHJvcHNdPVwieyBhbmltYXRlZDogdHJ1ZSwgcmVzaHVmZmxlSW50ZXJ2YWw6IDgwMCwgdGlsZXNQZXJUaWNrOiAyIH1cIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgUHJlc2V0IGdlb23DqXRyaWNvIGNvbiBwYWxldGEgZW1iZXI6XG4gKiBgYGBodG1sXG4gKiA8dmFsLXBhdHRlcm4gW3Byb3BzXT1cInsgcGFsZXR0ZTogJ2VtYmVyJywgc3R5bGU6ICdnZW9tZXRyaWMnLCBjb2xzOiAxMCwgcm93czogNCB9XCIgLz5cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5NZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBQYWxldHRlIGJ1aWx0LWluIG8gYXJyYXkgY3VzdG9tIGRlIDggY29sb3JlcyBkYXJrIOKGkiBsaWdodC5cbiAgICogQnVpbHQtaW5zOiBgJ3B1cnBsZScgfCAnaW5rJyB8ICdsYXZlbmRlcicgfCAnbWlkbmlnaHQnIHwgJ2VtYmVyJyB8ICdmb3Jlc3QnIHwgJ3Jvc2UnIHwgJ2dvbGQnIHwgJ21vbm8nXG4gICAqICAgfCAndGVhbCcgfCAnb2NlYW4nIHwgJ3Zpb2xldCcgfCAnZHVzaycgfCAnc2xhdGUnYC5cbiAgICogRGVmYXVsdDogYCdwdXJwbGUnYC5cbiAgICovXG4gIHBhbGV0dGU/OiBQYXR0ZXJuUGFsZXR0ZUtleSB8IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBQcmVzZXQgZGUgY29tcG9zaWNpw7NuIGRlIGZhbWlsaWFzIGRlIG1vdGlmcy5cbiAgICogLSBgYnJhbmRlZGAgICDihpIgQ2hldnJvbnMgZG9taW5hbnRlcyAoaWRlbnRpZGFkIFZhbHRlY2gpLiBEZWZhdWx0LlxuICAgKiAtIGBnZW9tZXRyaWNgIOKGkiBUcmnDoW5ndWxvcywgZXNxdWluYXMgcmVkb25kZWFkYXMgeSBjw61yY3Vsb3MuXG4gICAqIC0gYG1pbmltYWxgICAg4oaSIE1heW9yw61hIHPDs2xpZG8gY29uIHRyYXpvcyBzdXRpbGVzLiBMb29rIGNvcnBvcmF0aXZvIGxpbXBpby5cbiAgICogLSBgZGVuc2VgICAgICDihpIgTWV6Y2xhIHJpY2EgZGUgdG9kYXMgbGFzIGZhbWlsaWFzLiBNw6F4aW1hIHRleHR1cmEuXG4gICAqIC0gYGNvZGVgICAgICAg4oaSIE7Dum1lcm9zLCB1bmRlcnNjb3JlIGBfYCB5IGNoZXZyb25zLiBMb29rIGRlIHRlcm1pbmFsL2PDs2RpZ28uXG4gICAqXG4gICAqIEN1YW5kbyBzZSB1c2EgYHN0eWxlYCwgc29icmVlc2NyaWJlIGBjaGV2cm9uRGVuc2l0eWAuXG4gICAqL1xuICBzdHlsZT86IFBhdHRlcm5TdHlsZUtleTtcblxuICAvKiogQ29sdW1uYXMgZGVsIGdyaWQuIERlZmF1bHQ6IDEyLiAqL1xuICBjb2xzPzogbnVtYmVyO1xuXG4gIC8qKiBGaWxhcyBkZWwgZ3JpZC4gRGVmYXVsdDogNC4gKi9cbiAgcm93cz86IG51bWJlcjtcblxuICAvKipcbiAgICogU2VlZCBwYXJhIE11bGJlcnJ5MzIg4oCUIGRldGVybWluYSBlbCBwYXRyw7NuLiBTaSBubyBzZSBwYXNhLCBnZW5lcmEgdW5vIHJhbmRvbVxuICAgKiBhbCBtb3VudCB5IHF1ZWRhIGZpam8gKGEgbWVub3MgcXVlIGBhbmltYXRlZDogdHJ1ZWApLlxuICAgKi9cbiAgc2VlZD86IG51bWJlcjtcblxuICAvKipcbiAgICogRGVuc2lkYWQgZGUgY2hldnJvbnMgKDAuLjEpLiBJZ25vcmFkbyBzaSBzZSBwYXNhIGBzdHlsZWAuXG4gICAqIERlZmF1bHQ6IGAwLjU1YC5cbiAgICovXG4gIGNoZXZyb25EZW5zaXR5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTaSBgdHJ1ZWAsIGVsIHBhdHLDs24gYW5pbWEgdGlsZXMgcGVyacOzZGljYW1lbnRlLlxuICAgKiBDb24gYHRpbGVzUGVyVGljazogMGAgKGRlZmF1bHQpOiByZXNlZWQgY29tcGxldG8gZGUgbGEgZ3JpZC5cbiAgICogQ29uIGB0aWxlc1BlclRpY2sgPiAwYDogcmVzaHVmZmxlIHBhcmNpYWwgKHN0YWdnZXJlZCDigJQgbcOhcyBzdXRpbCkuXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAuXG4gICAqL1xuICBhbmltYXRlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIG1zIGVudHJlIHVwZGF0ZXMgKG1vZG8gYW5pbWF0ZWQpLlxuICAgKiBEZWZhdWx0OiBgODAwMGAuXG4gICAqL1xuICByZXNodWZmbGVJbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogQ3XDoW50b3MgdGlsZXMgY2FtYmlhciBwb3IgdGljayAobW9kbyBhbmltYXRlZCkuXG4gICAqIGAwYCDihpIgcmVzZWVkIGdyaWQgY29tcGxldGEuIGAxLU5gIOKGkiBzdGFnZ2VyZWQgc3V0aWwuXG4gICAqIERlZmF1bHQ6IGAwYC5cbiAgICovXG4gIHRpbGVzUGVyVGljaz86IG51bWJlcjtcblxuICAvKipcbiAgICogYHNsaWNlYCAoZGVmYXVsdCkg4oCUIGN1YnJlIHRvZG8gZWwgY29udGVuZWRvciBjb24gY3JvcCBzaSBuZWNlc2FyaW8uXG4gICAqIGBtZWV0YCDigJQgZml0IGNvbXBsZXRvIHNpbiBjcm9wLlxuICAgKi9cbiAgcHJlc2VydmVBc3BlY3Q/OiAnc2xpY2UnIHwgJ21lZXQnO1xuXG4gIC8qKlxuICAgKiBTaSBgdHJ1ZWAsIGNhZGEgdGlsZSByZWNpYmUgdW5hIHJvdGFjacOzbiBhbGVhdG9yaWEgZGUgMC85MC8xODAvMjcwwrAuXG4gICAqIE11bHRpcGxpY2EgbGEgdmFyaWVkYWQgdmlzdWFsIHNpbiBhw7FhZGlyIG51ZXZvcyBtb3RpZnMuXG4gICAqIMOadGlsIGNvbiBgc3R5bGU6ICdnZW9tZXRyaWMnYCBvIGAnZGVuc2UnYC4gRGVmYXVsdDogYGZhbHNlYC5cbiAgICovXG4gIHRpbGVSb3RhdGlvbj86IGJvb2xlYW47XG59XG4iXX0=
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '2.0.879';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC44NzknO1xuIl19
5
+ export const VERSION = '2.0.880';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC44ODAnO1xuIl19
@@ -53,7 +53,7 @@ import 'prismjs/components/prism-json';
53
53
  * Current version of valtech-components.
54
54
  * This is automatically updated during the publish process.
55
55
  */
56
- const VERSION = '2.0.879';
56
+ const VERSION = '2.0.880';
57
57
 
58
58
  /**
59
59
  * Servicio para gestionar presets de componentes.
@@ -6169,6 +6169,17 @@ const PATTERN_PALETTES = {
6169
6169
  rose: ['#12010a', '#2e0420', '#6b0a48', '#b01870', '#e040a0', '#f080c8', '#f8bce4', '#fde0f3'],
6170
6170
  gold: ['#100800', '#2a1a00', '#5c3800', '#9e6000', '#d4920a', '#f0bc40', '#f8da8c', '#fdf0cc'],
6171
6171
  mono: ['#080808', '#1a1a1a', '#303030', '#484848', '#707070', '#9e9e9e', '#cecece', '#f0f0f0'],
6172
+ // ── Paletas brand Valtech ──────────────────────────────────────────────────
6173
+ // deep teal → bright cyan
6174
+ teal: ['#011a16', '#022e28', '#045042', '#077a64', '#0aa88c', '#2ecfb0', '#7aead8', '#c0f7ef'],
6175
+ // navy profundo → azul cielo
6176
+ ocean: ['#010c18', '#021a30', '#043060', '#0a5090', '#1478c0', '#3a9fdd', '#85ccee', '#c8e9f8'],
6177
+ // violeta ultrabrillante (más vívido que purple, más eléctrico)
6178
+ violet: ['#0d0025', '#1e0050', '#400090', '#6600cc', '#8c2af2', '#b06af8', '#d4a8fc', '#ecd8fe'],
6179
+ // crepúsculo purple-blue (dusk — mezcla atmosférica)
6180
+ dusk: ['#08051e', '#130a40', '#221880', '#3828b4', '#5548d8', '#8080e8', '#b4b4f4', '#ddddfb'],
6181
+ // gris-azul corporativo frío (slate — tech neutral)
6182
+ slate: ['#060c14', '#0e1e30', '#1c3550', '#2c5070', '#4278a0', '#6aa0c8', '#a4c6e4', '#d4e8f6'],
6172
6183
  };
6173
6184
  const PATTERN_STYLE_CONFIGS = {
6174
6185
  branded: { chev: 0.58, stroke: 0.1, circle: 0.04, shape: 0.06, solid: 0.18, num: 0.0 },
@@ -6237,6 +6248,7 @@ function generateRandomTile(palette, chevronDensity = 0.55, rng = Math.random, d
6237
6248
  }
6238
6249
  return { motif: key, bg: palette[bgIdx], fg: palette[fgIdx] };
6239
6250
  }
6251
+ const ROTATIONS = [0, 90, 180, 270];
6240
6252
  /** Genera matriz completa de tiles. */
6241
6253
  function generatePatternTiles(cfg) {
6242
6254
  const { cols, rows, seed, palette } = cfg;
@@ -6245,7 +6257,11 @@ function generatePatternTiles(cfg) {
6245
6257
  const r = mulberry32(seed);
6246
6258
  const tiles = [];
6247
6259
  for (let i = 0; i < cols * rows; i++) {
6248
- tiles.push(generateRandomTile(palette, chevronDensity, r, densityConfig));
6260
+ const tile = generateRandomTile(palette, chevronDensity, r, densityConfig);
6261
+ if (cfg.tileRotation) {
6262
+ tile.rot = ROTATIONS[Math.floor(r() * 4)];
6263
+ }
6264
+ tiles.push(tile);
6249
6265
  }
6250
6266
  return tiles;
6251
6267
  }
@@ -6262,7 +6278,8 @@ function renderPatternSvgInner(tiles, cols, baseColor) {
6262
6278
  const r = Math.floor(i / cols);
6263
6279
  const t = tiles[i];
6264
6280
  const shape = PATTERN_MOTIFS[t.motif](t.fg);
6265
- inner += `<g transform="translate(${c * 100} ${r * 100})"><rect width="100" height="100" fill="${t.bg}"/>${shape}</g>`;
6281
+ const shapeEl = t.rot ? `<g transform="rotate(${t.rot} 50 50)">${shape}</g>` : shape;
6282
+ inner += `<g transform="translate(${c * 100} ${r * 100})"><rect width="100" height="100" fill="${t.bg}"/>${shapeEl}</g>`;
6266
6283
  }
6267
6284
  return inner;
6268
6285
  }
@@ -6323,6 +6340,8 @@ class PatternComponent {
6323
6340
  }
6324
6341
  if (value.animated !== undefined)
6325
6342
  this.animated.set(!!value.animated);
6343
+ if (value.tileRotation !== undefined)
6344
+ this.tileRotation.set(!!value.tileRotation);
6326
6345
  }
6327
6346
  constructor() {
6328
6347
  this.sanitizer = inject(DomSanitizer);
@@ -6336,6 +6355,7 @@ class PatternComponent {
6336
6355
  this.animated = signal(false);
6337
6356
  this.reshuffleInterval = signal(8000);
6338
6357
  this.tilesPerTick = signal(0);
6358
+ this.tileRotation = signal(false);
6339
6359
  /**
6340
6360
  * Tiles signal — mutable. Se regenera completa cuando cambia seed/cols/rows/
6341
6361
  * palette/density. En modo animated, tiles individuales se sobrescriben sin
@@ -6368,7 +6388,8 @@ class PatternComponent {
6368
6388
  const palette = this.paletteRef();
6369
6389
  const density = this.chevronDensity();
6370
6390
  const style = this.patternStyle();
6371
- this.tiles.set(generatePatternTiles({ cols, rows, seed, palette, chevronDensity: density, style }));
6391
+ const tileRotation = this.tileRotation();
6392
+ this.tiles.set(generatePatternTiles({ cols, rows, seed, palette, chevronDensity: density, style, tileRotation }));
6372
6393
  }, { allowSignalWrites: true });
6373
6394
  // Modo animated: cada `reshuffleInterval` ms regenera el grid completo
6374
6395
  // con un seed nuevo. Visualmente: el patrón cambia de vez en cuando.
@@ -6412,9 +6433,14 @@ class PatternComponent {
6412
6433
  const density = this.chevronDensity();
6413
6434
  const style = this.patternStyle();
6414
6435
  const densityConfig = style ? PATTERN_STYLE_CONFIGS[style] : undefined;
6436
+ const rotate = this.tileRotation();
6437
+ const ROTS = [0, 90, 180, 270];
6415
6438
  for (let n = 0; n < count; n++) {
6416
6439
  const idx = Math.floor(Math.random() * next.length);
6417
- next[idx] = generateRandomTile(palette, density, Math.random, densityConfig);
6440
+ const tile = generateRandomTile(palette, density, Math.random, densityConfig);
6441
+ if (rotate)
6442
+ tile.rot = ROTS[Math.floor(Math.random() * 4)];
6443
+ next[idx] = tile;
6418
6444
  }
6419
6445
  this.tiles.set(next);
6420
6446
  }