valtech-components 4.0.166 → 4.0.168

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,14 +1,15 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  const CANVAS_WIDTH = 560;
4
- const HEADER_H = 160;
5
- const QR_ZONE_H = 380;
6
- const FOOTER_H = 240;
7
- const CANVAS_HEIGHT = HEADER_H + QR_ZONE_H + FOOTER_H;
8
- const QR_SIZE = 280;
4
+ const HEADER_H = 210;
5
+ const QR_ZONE_H = 340;
6
+ const PERF_H = 28;
7
+ const FOOTER_H = 220;
8
+ const CANVAS_HEIGHT = HEADER_H + QR_ZONE_H + PERF_H + FOOTER_H;
9
+ const QR_SIZE = 260;
9
10
  const DEFAULT_BRAND_COLOR = '#9b1fde';
10
11
  const DEFAULT_BRAND_COLOR_TO = '#c93075';
11
- const FONT_STACK = 'Khula, Arial, sans-serif';
12
+ const FONT_STACK = '"Plus Jakarta Sans", Khula, Arial, sans-serif';
12
13
  export class TicketCardImageService {
13
14
  async generate(config) {
14
15
  const width = config.width ?? CANVAS_WIDTH;
@@ -26,6 +27,7 @@ export class TicketCardImageService {
26
27
  }
27
28
  await this.drawHeader(ctx, config, width);
28
29
  await this.drawQrZone(ctx, config, width);
30
+ this.drawPerforated(ctx, config, width);
29
31
  this.drawFooter(ctx, config, width);
30
32
  if (canvas instanceof OffscreenCanvas) {
31
33
  return canvas.convertToBlob({ type: 'image/png' });
@@ -79,31 +81,41 @@ export class TicketCardImageService {
79
81
  grad.addColorStop(1, colorTo);
80
82
  ctx.fillStyle = grad;
81
83
  ctx.fillRect(0, 0, width, HEADER_H);
82
- const logoH = 44;
83
- const logoPad = 28;
84
- let textY = HEADER_H / 2;
84
+ const logoH = 48;
85
+ const logoPadTop = 28;
86
+ let cursorY = logoPadTop;
85
87
  if (config.logoUrl) {
86
88
  try {
87
89
  const logoImg = await this.loadImage(config.logoUrl);
88
90
  const ratio = logoImg.width / logoImg.height;
89
91
  const logoW = logoH * ratio;
90
- const logoX = logoPad;
91
- const logoY = (HEADER_H - logoH) / 2;
92
- ctx.drawImage(logoImg, logoX, logoY, logoW, logoH);
93
- if (config.brandName) {
94
- textY = logoY + logoH + 14;
95
- }
92
+ const logoX = (width - logoW) / 2;
93
+ ctx.drawImage(logoImg, logoX, cursorY, logoW, logoH);
94
+ cursorY += logoH + 14;
96
95
  }
97
96
  catch {
98
- // logo failed — render brand name centered as fallback
97
+ // logo failed — continue without it
99
98
  }
100
99
  }
101
100
  if (config.brandName) {
102
101
  ctx.fillStyle = '#ffffff';
103
- ctx.font = `bold 1.75rem ${FONT_STACK}`;
102
+ ctx.font = `bold 1.625rem ${FONT_STACK}`;
103
+ ctx.textAlign = 'center';
104
+ ctx.textBaseline = 'top';
105
+ ctx.fillText(config.brandName, width / 2, cursorY, width - 48);
106
+ cursorY += 32;
107
+ }
108
+ const metaParts = [];
109
+ if (config.eventDate)
110
+ metaParts.push(config.eventDate);
111
+ if (config.eventLocation)
112
+ metaParts.push(config.eventLocation);
113
+ if (metaParts.length > 0) {
114
+ ctx.fillStyle = 'rgba(255,255,255,0.78)';
115
+ ctx.font = `0.875rem ${FONT_STACK}`;
104
116
  ctx.textAlign = 'center';
105
- ctx.textBaseline = 'middle';
106
- ctx.fillText(config.brandName, width / 2, textY, width - logoPad * 2);
117
+ ctx.textBaseline = 'top';
118
+ ctx.fillText(metaParts.join(' · '), width / 2, cursorY, width - 48);
107
119
  }
108
120
  }
109
121
  async drawQrZone(ctx, config, width) {
@@ -111,7 +123,7 @@ export class TicketCardImageService {
111
123
  ctx.fillStyle = '#ffffff';
112
124
  ctx.fillRect(0, zoneTop, width, QR_ZONE_H);
113
125
  const qrX = (width - QR_SIZE) / 2;
114
- const qrY = zoneTop + (QR_ZONE_H - QR_SIZE - 28) / 2;
126
+ const qrY = zoneTop + (QR_ZONE_H - QR_SIZE - 40) / 2;
115
127
  try {
116
128
  const qrImg = await this.loadImage(config.qrDataUrl);
117
129
  ctx.drawImage(qrImg, qrX, qrY, QR_SIZE, QR_SIZE);
@@ -120,42 +132,106 @@ export class TicketCardImageService {
120
132
  ctx.strokeStyle = '#e0e0e0';
121
133
  ctx.strokeRect(qrX, qrY, QR_SIZE, QR_SIZE);
122
134
  }
123
- ctx.fillStyle = '#2f2a36';
124
- ctx.font = `0.9375rem ${FONT_STACK}`;
135
+ const hint = config.scanHint ?? 'Muestra este QR en la puerta para canjear tu entrada.';
136
+ ctx.fillStyle = '#6b6675';
137
+ ctx.font = `0.875rem ${FONT_STACK}`;
125
138
  ctx.textAlign = 'center';
126
139
  ctx.textBaseline = 'top';
127
- ctx.fillText('Escanea para verificar', width / 2, qrY + QR_SIZE + 12);
140
+ const hintY = qrY + QR_SIZE + 14;
141
+ this.fillWrappedText(ctx, hint, width / 2, hintY, width - 80, 22);
142
+ }
143
+ drawPerforated(ctx, config, width) {
144
+ const y = HEADER_H + QR_ZONE_H;
145
+ const notchR = PERF_H / 2;
146
+ const colorFrom = config.brandColor ?? DEFAULT_BRAND_COLOR;
147
+ ctx.fillStyle = '#ffffff';
148
+ ctx.fillRect(0, y, width, PERF_H);
149
+ // Left notch (semicircle cut from edge)
150
+ ctx.fillStyle = '#f8f8f8';
151
+ ctx.beginPath();
152
+ ctx.arc(-1, y + notchR, notchR + 1, -Math.PI / 2, Math.PI / 2);
153
+ ctx.fill();
154
+ // Right notch
155
+ ctx.beginPath();
156
+ ctx.arc(width + 1, y + notchR, notchR + 1, Math.PI / 2, -Math.PI / 2);
157
+ ctx.fill();
158
+ // Dashed line in middle
159
+ ctx.setLineDash([8, 6]);
160
+ ctx.strokeStyle = colorFrom + '55';
161
+ ctx.lineWidth = 1.5;
162
+ ctx.beginPath();
163
+ ctx.moveTo(notchR * 2 + 8, y + notchR);
164
+ ctx.lineTo(width - notchR * 2 - 8, y + notchR);
165
+ ctx.stroke();
166
+ ctx.setLineDash([]);
128
167
  }
129
168
  drawFooter(ctx, config, width) {
130
- const footerTop = HEADER_H + QR_ZONE_H;
169
+ const footerTop = HEADER_H + QR_ZONE_H + PERF_H;
170
+ const colorFrom = config.brandColor ?? DEFAULT_BRAND_COLOR;
131
171
  ctx.fillStyle = '#ffffff';
132
172
  ctx.fillRect(0, footerTop, width, FOOTER_H);
133
- const colorFrom = config.brandColor ?? DEFAULT_BRAND_COLOR;
134
- ctx.fillStyle = colorFrom;
135
- ctx.fillRect(0, footerTop, width, 3);
136
- let contentY = footerTop + 40;
173
+ let contentY = footerTop + 32;
137
174
  if (config.folio !== undefined && config.folio !== null && config.folio !== '') {
138
- const label = config.folioLabel ?? 'Entrada';
139
- const folioText = `${label} #${config.folio}`;
140
- ctx.fillStyle = '#1a0b2e';
141
- ctx.font = `bold 3rem ${FONT_STACK}`;
175
+ const label = (config.folioLabel ?? 'Cartón').toUpperCase();
176
+ // Label small brand color, letter-spaced
177
+ ctx.fillStyle = colorFrom;
178
+ ctx.font = `600 0.8125rem ${FONT_STACK}`;
142
179
  ctx.textAlign = 'center';
143
180
  ctx.textBaseline = 'top';
144
- ctx.fillText(folioText, width / 2, contentY, width - 40);
145
- contentY += 56;
181
+ this.fillLetterSpaced(ctx, label, width / 2, contentY, 3);
182
+ contentY += 24;
183
+ // Folio number — large, bold, brand color
184
+ ctx.fillStyle = colorFrom;
185
+ ctx.font = `800 3.5rem ${FONT_STACK}`;
186
+ ctx.textAlign = 'center';
187
+ ctx.textBaseline = 'top';
188
+ ctx.fillText(`#${config.folio}`, width / 2, contentY, width - 40);
189
+ contentY += 68;
146
190
  }
147
191
  if (config.buyerName) {
148
- ctx.fillStyle = '#2f2a36';
149
- ctx.font = `1.25rem ${FONT_STACK}`;
192
+ ctx.fillStyle = '#6b6675';
193
+ ctx.font = `0.9375rem ${FONT_STACK}`;
150
194
  ctx.textAlign = 'center';
151
195
  ctx.textBaseline = 'top';
152
196
  ctx.fillText(config.buyerName, width / 2, contentY, width - 40);
153
197
  }
154
- ctx.fillStyle = '#6b6675';
155
- ctx.font = `0.75rem ${FONT_STACK}`;
156
- ctx.textAlign = 'right';
198
+ // Copyright
199
+ ctx.fillStyle = '#b0a8bc';
200
+ ctx.font = `0.6875rem ${FONT_STACK}`;
201
+ ctx.textAlign = 'center';
157
202
  ctx.textBaseline = 'bottom';
158
- ctx.fillText('Valtech', width - 16, footerTop + FOOTER_H - 12);
203
+ ctx.fillText('© 2026 Valtech. Todos los derechos reservados.', width / 2, footerTop + FOOTER_H - 14);
204
+ }
205
+ fillWrappedText(ctx, text, x, y, maxWidth, lineHeight) {
206
+ const words = text.split(' ');
207
+ let line = '';
208
+ let curY = y;
209
+ for (const word of words) {
210
+ const test = line ? `${line} ${word}` : word;
211
+ if (ctx.measureText(test).width > maxWidth && line) {
212
+ ctx.fillText(line, x, curY);
213
+ line = word;
214
+ curY += lineHeight;
215
+ }
216
+ else {
217
+ line = test;
218
+ }
219
+ }
220
+ if (line)
221
+ ctx.fillText(line, x, curY);
222
+ }
223
+ fillLetterSpaced(ctx, text, cx, y, spacing) {
224
+ // Measure total width with spacing and center
225
+ const chars = text.split('');
226
+ const charWidths = chars.map(c => ctx.measureText(c).width);
227
+ const totalW = charWidths.reduce((s, w) => s + w, 0) + spacing * (chars.length - 1);
228
+ let x = cx - totalW / 2;
229
+ ctx.textAlign = 'left';
230
+ for (let i = 0; i < chars.length; i++) {
231
+ ctx.fillText(chars[i], x, y);
232
+ x += charWidths[i] + spacing;
233
+ }
234
+ ctx.textAlign = 'center';
159
235
  }
160
236
  loadImage(src) {
161
237
  return new Promise((resolve, reject) => {
@@ -172,4 +248,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
172
248
  type: Injectable,
173
249
  args: [{ providedIn: 'root' }]
174
250
  }] });
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWNhcmQtaW1hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvdGlja2V0LWNhcmQtaW1hZ2UvdGlja2V0LWNhcmQtaW1hZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUM7QUFDekIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDO0FBQ3JCLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQztBQUN0QixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDckIsTUFBTSxhQUFhLEdBQUcsUUFBUSxHQUFHLFNBQVMsR0FBRyxRQUFRLENBQUM7QUFDdEQsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDO0FBRXBCLE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0FBQ3RDLE1BQU0sc0JBQXNCLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE1BQU0sVUFBVSxHQUFHLDBCQUEwQixDQUFDO0FBRzlDLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUE2QjtRQUMxQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQztRQUUzQyxJQUFJLE1BQTJDLENBQUM7UUFDaEQsSUFBSSxHQUFpRSxDQUFDO1FBRXRFLElBQUksT0FBTyxlQUFlLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDM0MsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNuRCxHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQXNDLENBQUM7UUFDckUsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FB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QUMsU0FBUyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsU0FBUyxHQUFHLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sU0FBUyxDQUFDLEdBQVc7UUFDM0IsT0FBTyxJQUFJLE9BQU8sQ0FBbUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDdkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN4QixHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FoTVUsc0JBQXNCO21IQUF0QixzQkFBc0IsY0FEVCxNQUFNOzs0RkFDbkIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRpY2tldENhcmRJbWFnZUNvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBDQU5WQVNfV0lEVEggPSA1NjA7XG5jb25zdCBIRUFERVJfSCA9IDE2MDtcbmNvbnN0IFFSX1pPTkVfSCA9IDM4MDtcbmNvbnN0IEZPT1RFUl9IID0gMjQwO1xuY29uc3QgQ0FOVkFTX0hFSUdIVCA9IEhFQURFUl9IICsgUVJfWk9ORV9IICsgRk9PVEVSX0g7XG5jb25zdCBRUl9TSVpFID0gMjgwO1xuXG5jb25zdCBERUZBVUxUX0JSQU5EX0NPTE9SID0gJyM5YjFmZGUnO1xuY29uc3QgREVGQVVMVF9CUkFORF9DT0xPUl9UTyA9ICcjYzkzMDc1JztcbmNvbnN0IEZPTlRfU1RBQ0sgPSAnS2h1bGEsIEFyaWFsLCBzYW5zLXNlcmlmJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUaWNrZXRDYXJkSW1hZ2VTZXJ2aWNlIHtcbiAgYXN5bmMgZ2VuZXJhdGUoY29uZmlnOiBUaWNrZXRDYXJkSW1hZ2VDb25maWcpOiBQcm9taXNlPEJsb2I+IHtcbiAgICBjb25zdCB3aWR0aCA9IGNvbmZpZy53aWR0aCA/PyBDQU5WQVNfV0lEVEg7XG5cbiAgICBsZXQgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IE9mZnNjcmVlbkNhbnZhcztcbiAgICBsZXQgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG5cbiAgICBpZiAodHlwZW9mIE9mZnNjcmVlbkNhbnZhcyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNhbnZhcyA9IG5ldyBPZmZzY3JlZW5DYW52YXMod2lkdGgsIENBTlZBU19IRUlHSFQpO1xuICAgICAgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJykgYXMgT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgIChjYW52YXMgYXMgSFRNTENhbnZhc0VsZW1lbnQpLndpZHRoID0gd2lkdGg7XG4gICAgICAoY2FudmFzIGFzIEhUTUxDYW52YXNFbGVtZW50KS5oZWlnaHQgPSBDQU5WQVNfSEVJR0hUO1xuICAgICAgY3R4ID0gKGNhbnZhcyBhcyBIVE1MQ2FudmFzRWxlbWVudCkuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5kcmF3SGVhZGVyKGN0eCwgY29uZmlnLCB3aWR0aCk7XG4gICAgYXdhaXQgdGhpcy5kcmF3UXJab25lKGN0eCwgY29uZmlnLCB3aWR0aCk7XG4gICAgdGhpcy5kcmF3Rm9vdGVyKGN0eCwgY29uZmlnLCB3aWR0aCk7XG5cbiAgICBpZiAoY2FudmFzIGluc3RhbmNlb2YgT2Zmc2NyZWVuQ2FudmFzKSB7XG4gICAgICByZXR1cm4gY2FudmFzLmNvbnZlcnRUb0Jsb2IoeyB0eXBlOiAnaW1hZ2UvcG5nJyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8QmxvYj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgKGNhbnZhcyBhcyBIVE1MQ2FudmFzRWxlbWVudCkudG9CbG9iKGJsb2IgPT4ge1xuICAgICAgICBpZiAoYmxvYikge1xuICAgICAgICAgIHJlc29sdmUoYmxvYik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignQ2FudmFzIHRvQmxvYiByZXR1cm5lZCBudWxsJykpO1xuICAgICAgICB9XG4gICAgICB9LCAnaW1hZ2UvcG5nJyk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzaGFyZShjb25maWc6IFRpY2tldENhcmRJbWFnZUNvbmZpZywgc2hhcmVUaXRsZT86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghbmF2aWdhdG9yLnNoYXJlIHx8ICFuYXZpZ2F0b3IuY2FuU2hhcmUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgYmxvYjogQmxvYjtcbiAgICB0cnkge1xuICAgICAgYmxvYiA9IGF3YWl0IHRoaXMuZ2VuZXJhdGUoY29uZmlnKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlbmFtZSA9ICdlbnRyYWRhLnBuZyc7XG4gICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgZmlsZW5hbWUsIHsgdHlwZTogJ2ltYWdlL3BuZycgfSk7XG5cbiAgICBpZiAoIW5hdmlnYXRvci5jYW5TaGFyZSh7IGZpbGVzOiBbZmlsZV0gfSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLnNoYXJlKHtcbiAgICAgICAgdGl0bGU6IHNoYXJlVGl0bGUgPz8gY29uZmlnLmJyYW5kTmFtZSA/PyAnRW50cmFkYScsXG4gICAgICAgIGZpbGVzOiBbZmlsZV0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIERPTUV4Y2VwdGlvbiAmJiBlcnIubmFtZSA9PT0gJ0Fib3J0RXJyb3InKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRyYXdIZWFkZXIoXG4gICAgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gICAgY29uZmlnOiBUaWNrZXRDYXJkSW1hZ2VDb25maWcsXG4gICAgd2lkdGg6IG51bWJlclxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjb2xvckZyb20gPSBjb25maWcuYnJhbmRDb2xvciA/PyBERUZBVUxUX0JSQU5EX0NPTE9SO1xuICAgIGNvbnN0IGNvbG9yVG8gPVxuICAgICAgY29uZmlnLmJyYW5kQ29sb3JUbyA/PyAoY29uZmlnLmJyYW5kQ29sb3IgPyBjb25maWcuYnJhbmRDb2xvciA6IERFRkFVTFRfQlJBTkRfQ09MT1JfVE8pO1xuXG4gICAgY29uc3QgZ3JhZCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCB3aWR0aCwgSEVBREVSX0gpO1xuICAgIGdyYWQuYWRkQ29sb3JTdG9wKDAsIGNvbG9yRnJvbSk7XG4gICAgZ3JhZC5hZGRDb2xvclN0b3AoMSwgY29sb3JUbyk7XG5cbiAgICBjdHguZmlsbFN0eWxlID0gZ3JhZDtcbiAgICBjdHguZmlsbFJlY3QoMCwgMCwgd2lkdGgsIEhFQURFUl9IKTtcblxuICAgIGNvbnN0IGxvZ29IID0gNDQ7XG4gICAgY29uc3QgbG9nb1BhZCA9IDI4O1xuICAgIGxldCB0ZXh0WSA9IEhFQURFUl9IIC8gMjtcblxuICAgIGlmIChjb25maWcubG9nb1VybCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbG9nb0ltZyA9IGF3YWl0IHRoaXMubG9hZEltYWdlKGNvbmZpZy5sb2dvVXJsKTtcbiAgICAgICAgY29uc3QgcmF0aW8gPSBsb2dvSW1nLndpZHRoIC8gbG9nb0ltZy5oZWlnaHQ7XG4gICAgICAgIGNvbnN0IGxvZ29XID0gbG9nb0ggKiByYXRpbztcbiAgICAgICAgY29uc3QgbG9nb1ggPSBsb2dvUGFkO1xuICAgICAgICBjb25zdCBsb2dvWSA9IChIRUFERVJfSCAtIGxvZ29IKSAvIDI7XG4gICAgICAgIGN0eC5kcmF3SW1hZ2UobG9nb0ltZywgbG9nb1gsIGxvZ29ZLCBsb2dvVywgbG9nb0gpO1xuXG4gICAgICAgIGlmIChjb25maWcuYnJhbmROYW1lKSB7XG4gICAgICAgICAgdGV4dFkgPSBsb2dvWSArIGxvZ29IICsgMTQ7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBsb2dvIGZhaWxlZCDigJQgcmVuZGVyIGJyYW5kIG5hbWUgY2VudGVyZWQgYXMgZmFsbGJhY2tcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmJyYW5kTmFtZSkge1xuICAgICAgY3R4LmZpbGxTdHlsZSA9ICcjZmZmZmZmJztcbiAgICAgIGN0eC5mb250ID0gYGJvbGQgMS43NXJlbSAke0ZPTlRfU1RBQ0t9YDtcbiAgICAgIGN0eC50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICAgIGN0eC50ZXh0QmFzZWxpbmUgPSAnbWlkZGxlJztcbiAgICAgIGN0eC5maWxsVGV4dChjb25maWcuYnJhbmROYW1lLCB3aWR0aCAvIDIsIHRleHRZLCB3aWR0aCAtIGxvZ29QYWQgKiAyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRyYXdRclpvbmUoXG4gICAgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gICAgY29uZmlnOiBUaWNrZXRDYXJkSW1hZ2VDb25maWcsXG4gICAgd2lkdGg6IG51bWJlclxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB6b25lVG9wID0gSEVBREVSX0g7XG5cbiAgICBjdHguZmlsbFN0eWxlID0gJyNmZmZmZmYnO1xuICAgIGN0eC5maWxsUmVjdCgwLCB6b25lVG9wLCB3aWR0aCwgUVJfWk9ORV9IKTtcblxuICAgIGNvbnN0IHFyWCA9ICh3aWR0aCAtIFFSX1NJWkUpIC8gMjtcbiAgICBjb25zdCBxclkgPSB6b25lVG9wICsgKFFSX1pPTkVfSCAtIFFSX1NJWkUgLSAyOCkgLyAyO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHFySW1nID0gYXdhaXQgdGhpcy5sb2FkSW1hZ2UoY29uZmlnLnFyRGF0YVVybCk7XG4gICAgICBjdHguZHJhd0ltYWdlKHFySW1nLCBxclgsIHFyWSwgUVJfU0laRSwgUVJfU0laRSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBjdHguc3Ryb2tlU3R5bGUgPSAnI2UwZTBlMCc7XG4gICAgICBjdHguc3Ryb2tlUmVjdChxclgsIHFyWSwgUVJfU0laRSwgUVJfU0laRSk7XG4gICAgfVxuXG4gICAgY3R4LmZpbGxTdHlsZSA9ICcjMmYyYTM2JztcbiAgICBjdHguZm9udCA9IGAwLjkzNzVyZW0gJHtGT05UX1NUQUNLfWA7XG4gICAgY3R4LnRleHRBbGlnbiA9ICdjZW50ZXInO1xuICAgIGN0eC50ZXh0QmFzZWxpbmUgPSAndG9wJztcbiAgICBjdHguZmlsbFRleHQoJ0VzY2FuZWEgcGFyYSB2ZXJpZmljYXInLCB3aWR0aCAvIDIsIHFyWSArIFFSX1NJWkUgKyAxMik7XG4gIH1cblxuICBwcml2YXRlIGRyYXdGb290ZXIoXG4gICAgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gICAgY29uZmlnOiBUaWNrZXRDYXJkSW1hZ2VDb25maWcsXG4gICAgd2lkdGg6IG51bWJlclxuICApOiB2b2lkIHtcbiAgICBjb25zdCBmb290ZXJUb3AgPSBIRUFERVJfSCArIFFSX1pPTkVfSDtcblxuICAgIGN0eC5maWxsU3R5bGUgPSAnI2ZmZmZmZic7XG4gICAgY3R4LmZpbGxSZWN0KDAsIGZvb3RlclRvcCwgd2lkdGgsIEZPT1RFUl9IKTtcblxuICAgIGNvbnN0IGNvbG9yRnJvbSA9IGNvbmZpZy5icmFuZENvbG9yID8/IERFRkFVTFRfQlJBTkRfQ09MT1I7XG4gICAgY3R4LmZpbGxTdHlsZSA9IGNvbG9yRnJvbTtcbiAgICBjdHguZmlsbFJlY3QoMCwgZm9vdGVyVG9wLCB3aWR0aCwgMyk7XG5cbiAgICBsZXQgY29udGVudFkgPSBmb290ZXJUb3AgKyA0MDtcblxuICAgIGlmIChjb25maWcuZm9saW8gIT09IHVuZGVmaW5lZCAmJiBjb25maWcuZm9saW8gIT09IG51bGwgJiYgY29uZmlnLmZvbGlvICE9PSAnJykge1xuICAgICAgY29uc3QgbGFiZWwgPSBjb25maWcuZm9saW9MYWJlbCA/PyAnRW50cmFkYSc7XG4gICAgICBjb25zdCBmb2xpb1RleHQgPSBgJHtsYWJlbH0gIyR7Y29uZmlnLmZvbGlvfWA7XG4gICAgICBjdHguZmlsbFN0eWxlID0gJyMxYTBiMmUnO1xuICAgICAgY3R4LmZvbnQgPSBgYm9sZCAzcmVtICR7Rk9OVF9TVEFDS31gO1xuICAgICAgY3R4LnRleHRBbGlnbiA9ICdjZW50ZXInO1xuICAgICAgY3R4LnRleHRCYXNlbGluZSA9ICd0b3AnO1xuICAgICAgY3R4LmZpbGxUZXh0KGZvbGlvVGV4dCwgd2lkdGggLyAyLCBjb250ZW50WSwgd2lkdGggLSA0MCk7XG4gICAgICBjb250ZW50WSArPSA1NjtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmJ1eWVyTmFtZSkge1xuICAgICAgY3R4LmZpbGxTdHlsZSA9ICcjMmYyYTM2JztcbiAgICAgIGN0eC5mb250ID0gYDEuMjVyZW0gJHtGT05UX1NUQUNLfWA7XG4gICAgICBjdHgudGV4dEFsaWduID0gJ2NlbnRlcic7XG4gICAgICBjdHgudGV4dEJhc2VsaW5lID0gJ3RvcCc7XG4gICAgICBjdHguZmlsbFRleHQoY29uZmlnLmJ1eWVyTmFtZSwgd2lkdGggLyAyLCBjb250ZW50WSwgd2lkdGggLSA0MCk7XG4gICAgfVxuXG4gICAgY3R4LmZpbGxTdHlsZSA9ICcjNmI2Njc1JztcbiAgICBjdHguZm9udCA9IGAwLjc1cmVtICR7Rk9OVF9TVEFDS31gO1xuICAgIGN0eC50ZXh0QWxpZ24gPSAncmlnaHQnO1xuICAgIGN0eC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbiAgICBjdHguZmlsbFRleHQoJ1ZhbHRlY2gnLCB3aWR0aCAtIDE2LCBmb290ZXJUb3AgKyBGT09URVJfSCAtIDEyKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEltYWdlKHNyYzogc3RyaW5nKTogUHJvbWlzZTxIVE1MSW1hZ2VFbGVtZW50PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEhUTUxJbWFnZUVsZW1lbnQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoaW1nKTtcbiAgICAgIGltZy5vbmVycm9yID0gKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgRmFpbGVkIHRvIGxvYWQgaW1hZ2U6ICR7c3JjfWApKTtcbiAgICAgIGltZy5zcmMgPSBzcmM7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWNhcmQtaW1hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvdGlja2V0LWNhcmQtaW1hZ2UvdGlja2V0LWNhcmQtaW1hZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUM7QUFDekIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDO0FBQ3JCLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQztBQUN0QixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDbEIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDO0FBQ3JCLE1BQU0sYUFBYSxHQUFHLFFBQVEsR0FBRyxTQUFTLEdBQUcsTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUMvRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFFcEIsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUM7QUFDdEMsTUFBTSxzQkFBc0IsR0FBRyxTQUFTLENBQUM7QUFDekMsTUFBTSxVQUFVLEdBQUcsK0NBQStDLENBQUM7QUFHbkUsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQTZCO1FBQzFDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDO1FBRTNDLElBQUksTUFBMkMsQ0FBQztRQUNoRCxJQUFJLEdBQWlFLENBQUM7UUFFdEUsSUFBSSxPQUFPLGVBQWUsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUMzQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ25ELEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBc0MsQ0FBQztRQUNyRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1B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O1FBQzNCLE9BQU8sSUFBSSxPQUFPLENBQW1CLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3ZELE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDeEIsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN0RSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBblNVLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRFQsTUFBTTs7NEZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaWNrZXRDYXJkSW1hZ2VDb25maWcgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgQ0FOVkFTX1dJRFRIID0gNTYwO1xuY29uc3QgSEVBREVSX0ggPSAyMTA7XG5jb25zdCBRUl9aT05FX0ggPSAzNDA7XG5jb25zdCBQRVJGX0ggPSAyODtcbmNvbnN0IEZPT1RFUl9IID0gMjIwO1xuY29uc3QgQ0FOVkFTX0hFSUdIVCA9IEhFQURFUl9IICsgUVJfWk9ORV9IICsgUEVSRl9IICsgRk9PVEVSX0g7XG5jb25zdCBRUl9TSVpFID0gMjYwO1xuXG5jb25zdCBERUZBVUxUX0JSQU5EX0NPTE9SID0gJyM5YjFmZGUnO1xuY29uc3QgREVGQVVMVF9CUkFORF9DT0xPUl9UTyA9ICcjYzkzMDc1JztcbmNvbnN0IEZPTlRfU1RBQ0sgPSAnXCJQbHVzIEpha2FydGEgU2Fuc1wiLCBLaHVsYSwgQXJpYWwsIHNhbnMtc2VyaWYnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRpY2tldENhcmRJbWFnZVNlcnZpY2Uge1xuICBhc3luYyBnZW5lcmF0ZShjb25maWc6IFRpY2tldENhcmRJbWFnZUNvbmZpZyk6IFByb21pc2U8QmxvYj4ge1xuICAgIGNvbnN0IHdpZHRoID0gY29uZmlnLndpZHRoID8/IENBTlZBU19XSURUSDtcblxuICAgIGxldCBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgT2Zmc2NyZWVuQ2FudmFzO1xuICAgIGxldCBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcblxuICAgIGlmICh0eXBlb2YgT2Zmc2NyZWVuQ2FudmFzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY2FudmFzID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgQ0FOVkFTX0hFSUdIVCk7XG4gICAgICBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgKGNhbnZhcyBhcyBIVE1MQ2FudmFzRWxlbWVudCkud2lkdGggPSB3aWR0aDtcbiAgICAgIChjYW52YXMgYXMgSFRNTENhbnZhc0VsZW1lbnQpLmhlaWdodCA9IENBTlZBU19IRUlHSFQ7XG4gICAgICBjdHggPSAoY2FudmFzIGFzIEhUTUxDYW52YXNFbGVtZW50KS5nZXRDb250ZXh0KCcyZCcpIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmRyYXdIZWFkZXIoY3R4LCBjb25maWcsIHdpZHRoKTtcbiAgICBhd2FpdCB0aGlzLmRyYXdRclpvbmUoY3R4LCBjb25maWcsIHdpZHRoKTtcbiAgICB0aGlzLmRyYXdQZXJmb3JhdGVkKGN0eCwgY29uZmlnLCB3aWR0aCk7XG4gICAgdGhpcy5kcmF3Rm9vdGVyKGN0eCwgY29uZmlnLCB3aWR0aCk7XG5cbiAgICBpZiAoY2FudmFzIGluc3RhbmNlb2YgT2Zmc2NyZWVuQ2FudmFzKSB7XG4gICAgICByZXR1cm4gY2FudmFzLmNvbnZlcnRUb0Jsb2IoeyB0eXBlOiAnaW1hZ2UvcG5nJyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8QmxvYj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgKGNhbnZhcyBhcyBIVE1MQ2FudmFzRWxlbWVudCkudG9CbG9iKGJsb2IgPT4ge1xuICAgICAgICBpZiAoYmxvYikge1xuICAgICAgICAgIHJlc29sdmUoYmxvYik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignQ2FudmFzIHRvQmxvYiByZXR1cm5lZCBudWxsJykpO1xuICAgICAgICB9XG4gICAgICB9LCAnaW1hZ2UvcG5nJyk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzaGFyZShjb25maWc6IFRpY2tldENhcmRJbWFnZUNvbmZpZywgc2hhcmVUaXRsZT86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghbmF2aWdhdG9yLnNoYXJlIHx8ICFuYXZpZ2F0b3IuY2FuU2hhcmUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgYmxvYjogQmxvYjtcbiAgICB0cnkge1xuICAgICAgYmxvYiA9IGF3YWl0IHRoaXMuZ2VuZXJhdGUoY29uZmlnKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlbmFtZSA9ICdlbnRyYWRhLnBuZyc7XG4gICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgZmlsZW5hbWUsIHsgdHlwZTogJ2ltYWdlL3BuZycgfSk7XG5cbiAgICBpZiAoIW5hdmlnYXRvci5jYW5TaGFyZSh7IGZpbGVzOiBbZmlsZV0gfSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLnNoYXJlKHtcbiAgICAgICAgdGl0bGU6IHNoYXJlVGl0bGUgPz8gY29uZmlnLmJyYW5kTmFtZSA/PyAnRW50cmFkYScsXG4gICAgICAgIGZpbGVzOiBbZmlsZV0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIERPTUV4Y2VwdGlvbiAmJiBlcnIubmFtZSA9PT0gJ0Fib3J0RXJyb3InKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRyYXdIZWFkZXIoXG4gICAgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gICAgY29uZmlnOiBUaWNrZXRDYXJkSW1hZ2VDb25maWcsXG4gICAgd2lkdGg6IG51bWJlclxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjb2xvckZyb20gPSBjb25maWcuYnJhbmRDb2xvciA/PyBERUZBVUxUX0JSQU5EX0NPTE9SO1xuICAgIGNvbnN0IGNvbG9yVG8gPVxuICAgICAgY29uZmlnLmJyYW5kQ29sb3JUbyA/PyAoY29uZmlnLmJyYW5kQ29sb3IgPyBjb25maWcuYnJhbmRDb2xvciA6IERFRkFVTFRfQlJBTkRfQ09MT1JfVE8pO1xuXG4gICAgY29uc3QgZ3JhZCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCB3aWR0aCwgSEVBREVSX0gpO1xuICAgIGdyYWQuYWRkQ29sb3JTdG9wKDAsIGNvbG9yRnJvbSk7XG4gICAgZ3JhZC5hZGRDb2xvclN0b3AoMSwgY29sb3JUbyk7XG4gICAgY3R4LmZpbGxTdHlsZSA9IGdyYWQ7XG4gICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBIRUFERVJfSCk7XG5cbiAgICBjb25zdCBsb2dvSCA9IDQ4O1xuICAgIGNvbnN0IGxvZ29QYWRUb3AgPSAyODtcbiAgICBsZXQgY3Vyc29yWSA9IGxvZ29QYWRUb3A7XG5cbiAgICBpZiAoY29uZmlnLmxvZ29VcmwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGxvZ29JbWcgPSBhd2FpdCB0aGlzLmxvYWRJbWFnZShjb25maWcubG9nb1VybCk7XG4gICAgICAgIGNvbnN0IHJhdGlvID0gbG9nb0ltZy53aWR0aCAvIGxvZ29JbWcuaGVpZ2h0O1xuICAgICAgICBjb25zdCBsb2dvVyA9IGxvZ29IICogcmF0aW87XG4gICAgICAgIGNvbnN0IGxvZ29YID0gKHdpZHRoIC0gbG9nb1cpIC8gMjtcbiAgICAgICAgY3R4LmRyYXdJbWFnZShsb2dvSW1nLCBsb2dvWCwgY3Vyc29yWSwgbG9nb1csIGxvZ29IKTtcbiAgICAgICAgY3Vyc29yWSArPSBsb2dvSCArIDE0O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGxvZ28gZmFpbGVkIOKAlCBjb250aW51ZSB3aXRob3V0IGl0XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5icmFuZE5hbWUpIHtcbiAgICAgIGN0eC5maWxsU3R5bGUgPSAnI2ZmZmZmZic7XG4gICAgICBjdHguZm9udCA9IGBib2xkIDEuNjI1cmVtICR7Rk9OVF9TVEFDS31gO1xuICAgICAgY3R4LnRleHRBbGlnbiA9ICdjZW50ZXInO1xuICAgICAgY3R4LnRleHRCYXNlbGluZSA9ICd0b3AnO1xuICAgICAgY3R4LmZpbGxUZXh0KGNvbmZpZy5icmFuZE5hbWUsIHdpZHRoIC8gMiwgY3Vyc29yWSwgd2lkdGggLSA0OCk7XG4gICAgICBjdXJzb3JZICs9IDMyO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGFQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAoY29uZmlnLmV2ZW50RGF0ZSkgbWV0YVBhcnRzLnB1c2goY29uZmlnLmV2ZW50RGF0ZSk7XG4gICAgaWYgKGNvbmZpZy5ldmVudExvY2F0aW9uKSBtZXRhUGFydHMucHVzaChjb25maWcuZXZlbnRMb2NhdGlvbik7XG4gICAgaWYgKG1ldGFQYXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYmEoMjU1LDI1NSwyNTUsMC43OCknO1xuICAgICAgY3R4LmZvbnQgPSBgMC44NzVyZW0gJHtGT05UX1NUQUNLfWA7XG4gICAgICBjdHgudGV4dEFsaWduID0gJ2NlbnRlcic7XG4gICAgICBjdHgudGV4dEJhc2VsaW5lID0gJ3RvcCc7XG4gICAgICBjdHguZmlsbFRleHQobWV0YVBhcnRzLmpvaW4oJyAgwrcgICcpLCB3aWR0aCAvIDIsIGN1cnNvclksIHdpZHRoIC0gNDgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZHJhd1FyWm9uZShcbiAgICBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgICBjb25maWc6IFRpY2tldENhcmRJbWFnZUNvbmZpZyxcbiAgICB3aWR0aDogbnVtYmVyXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHpvbmVUb3AgPSBIRUFERVJfSDtcblxuICAgIGN0eC5maWxsU3R5bGUgPSAnI2ZmZmZmZic7XG4gICAgY3R4LmZpbGxSZWN0KDAsIHpvbmVUb3AsIHdpZHRoLCBRUl9aT05FX0gpO1xuXG4gICAgY29uc3QgcXJYID0gKHdpZHRoIC0gUVJfU0laRSkgLyAyO1xuICAgIGNvbnN0IHFyWSA9IHpvbmVUb3AgKyAoUVJfWk9ORV9IIC0gUVJfU0laRSAtIDQwKSAvIDI7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcXJJbWcgPSBhd2FpdCB0aGlzLmxvYWRJbWFnZShjb25maWcucXJEYXRhVXJsKTtcbiAgICAgIGN0eC5kcmF3SW1hZ2UocXJJbWcsIHFyWCwgcXJZLCBRUl9TSVpFLCBRUl9TSVpFKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICcjZTBlMGUwJztcbiAgICAgIGN0eC5zdHJva2VSZWN0KHFyWCwgcXJZLCBRUl9TSVpFLCBRUl9TSVpFKTtcbiAgICB9XG5cbiAgICBjb25zdCBoaW50ID0gY29uZmlnLnNjYW5IaW50ID8/ICdNdWVzdHJhIGVzdGUgUVIgZW4gbGEgcHVlcnRhIHBhcmEgY2FuamVhciB0dSBlbnRyYWRhLic7XG4gICAgY3R4LmZpbGxTdHlsZSA9ICcjNmI2Njc1JztcbiAgICBjdHguZm9udCA9IGAwLjg3NXJlbSAke0ZPTlRfU1RBQ0t9YDtcbiAgICBjdHgudGV4dEFsaWduID0gJ2NlbnRlcic7XG4gICAgY3R4LnRleHRCYXNlbGluZSA9ICd0b3AnO1xuICAgIGNvbnN0IGhpbnRZID0gcXJZICsgUVJfU0laRSArIDE0O1xuICAgIHRoaXMuZmlsbFdyYXBwZWRUZXh0KGN0eCwgaGludCwgd2lkdGggLyAyLCBoaW50WSwgd2lkdGggLSA4MCwgMjIpO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3UGVyZm9yYXRlZChcbiAgICBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgICBjb25maWc6IFRpY2tldENhcmRJbWFnZUNvbmZpZyxcbiAgICB3aWR0aDogbnVtYmVyXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHkgPSBIRUFERVJfSCArIFFSX1pPTkVfSDtcbiAgICBjb25zdCBub3RjaFIgPSBQRVJGX0ggLyAyO1xuICAgIGNvbnN0IGNvbG9yRnJvbSA9IGNvbmZpZy5icmFuZENvbG9yID8/IERFRkFVTFRfQlJBTkRfQ09MT1I7XG5cbiAgICBjdHguZmlsbFN0eWxlID0gJyNmZmZmZmYnO1xuICAgIGN0eC5maWxsUmVjdCgwLCB5LCB3aWR0aCwgUEVSRl9IKTtcblxuICAgIC8vIExlZnQgbm90Y2ggKHNlbWljaXJjbGUgY3V0IGZyb20gZWRnZSlcbiAgICBjdHguZmlsbFN0eWxlID0gJyNmOGY4ZjgnO1xuICAgIGN0eC5iZWdpblBhdGgoKTtcbiAgICBjdHguYXJjKC0xLCB5ICsgbm90Y2hSLCBub3RjaFIgKyAxLCAtTWF0aC5QSSAvIDIsIE1hdGguUEkgLyAyKTtcbiAgICBjdHguZmlsbCgpO1xuXG4gICAgLy8gUmlnaHQgbm90Y2hcbiAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgY3R4LmFyYyh3aWR0aCArIDEsIHkgKyBub3RjaFIsIG5vdGNoUiArIDEsIE1hdGguUEkgLyAyLCAtTWF0aC5QSSAvIDIpO1xuICAgIGN0eC5maWxsKCk7XG5cbiAgICAvLyBEYXNoZWQgbGluZSBpbiBtaWRkbGVcbiAgICBjdHguc2V0TGluZURhc2goWzgsIDZdKTtcbiAgICBjdHguc3Ryb2tlU3R5bGUgPSBjb2xvckZyb20gKyAnNTUnO1xuICAgIGN0eC5saW5lV2lkdGggPSAxLjU7XG4gICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgIGN0eC5tb3ZlVG8obm90Y2hSICogMiArIDgsIHkgKyBub3RjaFIpO1xuICAgIGN0eC5saW5lVG8od2lkdGggLSBub3RjaFIgKiAyIC0gOCwgeSArIG5vdGNoUik7XG4gICAgY3R4LnN0cm9rZSgpO1xuICAgIGN0eC5zZXRMaW5lRGFzaChbXSk7XG4gIH1cblxuICBwcml2YXRlIGRyYXdGb290ZXIoXG4gICAgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gICAgY29uZmlnOiBUaWNrZXRDYXJkSW1hZ2VDb25maWcsXG4gICAgd2lkdGg6IG51bWJlclxuICApOiB2b2lkIHtcbiAgICBjb25zdCBmb290ZXJUb3AgPSBIRUFERVJfSCArIFFSX1pPTkVfSCArIFBFUkZfSDtcbiAgICBjb25zdCBjb2xvckZyb20gPSBjb25maWcuYnJhbmRDb2xvciA/PyBERUZBVUxUX0JSQU5EX0NPTE9SO1xuXG4gICAgY3R4LmZpbGxTdHlsZSA9ICcjZmZmZmZmJztcbiAgICBjdHguZmlsbFJlY3QoMCwgZm9vdGVyVG9wLCB3aWR0aCwgRk9PVEVSX0gpO1xuXG4gICAgbGV0IGNvbnRlbnRZID0gZm9vdGVyVG9wICsgMzI7XG5cbiAgICBpZiAoY29uZmlnLmZvbGlvICE9PSB1bmRlZmluZWQgJiYgY29uZmlnLmZvbGlvICE9PSBudWxsICYmIGNvbmZpZy5mb2xpbyAhPT0gJycpIHtcbiAgICAgIGNvbnN0IGxhYmVsID0gKGNvbmZpZy5mb2xpb0xhYmVsID8/ICdDYXJ0w7NuJykudG9VcHBlckNhc2UoKTtcblxuICAgICAgLy8gTGFiZWwgc21hbGwg4oCUIGJyYW5kIGNvbG9yLCBsZXR0ZXItc3BhY2VkXG4gICAgICBjdHguZmlsbFN0eWxlID0gY29sb3JGcm9tO1xuICAgICAgY3R4LmZvbnQgPSBgNjAwIDAuODEyNXJlbSAke0ZPTlRfU1RBQ0t9YDtcbiAgICAgIGN0eC50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICAgIGN0eC50ZXh0QmFzZWxpbmUgPSAndG9wJztcbiAgICAgIHRoaXMuZmlsbExldHRlclNwYWNlZChjdHgsIGxhYmVsLCB3aWR0aCAvIDIsIGNvbnRlbnRZLCAzKTtcbiAgICAgIGNvbnRlbnRZICs9IDI0O1xuXG4gICAgICAvLyBGb2xpbyBudW1iZXIg4oCUIGxhcmdlLCBib2xkLCBicmFuZCBjb2xvclxuICAgICAgY3R4LmZpbGxTdHlsZSA9IGNvbG9yRnJvbTtcbiAgICAgIGN0eC5mb250ID0gYDgwMCAzLjVyZW0gJHtGT05UX1NUQUNLfWA7XG4gICAgICBjdHgudGV4dEFsaWduID0gJ2NlbnRlcic7XG4gICAgICBjdHgudGV4dEJhc2VsaW5lID0gJ3RvcCc7XG4gICAgICBjdHguZmlsbFRleHQoYCMke2NvbmZpZy5mb2xpb31gLCB3aWR0aCAvIDIsIGNvbnRlbnRZLCB3aWR0aCAtIDQwKTtcbiAgICAgIGNvbnRlbnRZICs9IDY4O1xuICAgIH1cblxuICAgIGlmIChjb25maWcuYnV5ZXJOYW1lKSB7XG4gICAgICBjdHguZmlsbFN0eWxlID0gJyM2YjY2NzUnO1xuICAgICAgY3R4LmZvbnQgPSBgMC45Mzc1cmVtICR7Rk9OVF9TVEFDS31gO1xuICAgICAgY3R4LnRleHRBbGlnbiA9ICdjZW50ZXInO1xuICAgICAgY3R4LnRleHRCYXNlbGluZSA9ICd0b3AnO1xuICAgICAgY3R4LmZpbGxUZXh0KGNvbmZpZy5idXllck5hbWUsIHdpZHRoIC8gMiwgY29udGVudFksIHdpZHRoIC0gNDApO1xuICAgIH1cblxuICAgIC8vIENvcHlyaWdodFxuICAgIGN0eC5maWxsU3R5bGUgPSAnI2IwYThiYyc7XG4gICAgY3R4LmZvbnQgPSBgMC42ODc1cmVtICR7Rk9OVF9TVEFDS31gO1xuICAgIGN0eC50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICBjdHgudGV4dEJhc2VsaW5lID0gJ2JvdHRvbSc7XG4gICAgY3R4LmZpbGxUZXh0KFxuICAgICAgJ8KpIDIwMjYgVmFsdGVjaC4gVG9kb3MgbG9zIGRlcmVjaG9zIHJlc2VydmFkb3MuJyxcbiAgICAgIHdpZHRoIC8gMixcbiAgICAgIGZvb3RlclRvcCArIEZPT1RFUl9IIC0gMTRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsV3JhcHBlZFRleHQoXG4gICAgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXIsXG4gICAgbWF4V2lkdGg6IG51bWJlcixcbiAgICBsaW5lSGVpZ2h0OiBudW1iZXJcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgd29yZHMgPSB0ZXh0LnNwbGl0KCcgJyk7XG4gICAgbGV0IGxpbmUgPSAnJztcbiAgICBsZXQgY3VyWSA9IHk7XG4gICAgZm9yIChjb25zdCB3b3JkIG9mIHdvcmRzKSB7XG4gICAgICBjb25zdCB0ZXN0ID0gbGluZSA/IGAke2xpbmV9ICR7d29yZH1gIDogd29yZDtcbiAgICAgIGlmIChjdHgubWVhc3VyZVRleHQodGVzdCkud2lkdGggPiBtYXhXaWR0aCAmJiBsaW5lKSB7XG4gICAgICAgIGN0eC5maWxsVGV4dChsaW5lLCB4LCBjdXJZKTtcbiAgICAgICAgbGluZSA9IHdvcmQ7XG4gICAgICAgIGN1clkgKz0gbGluZUhlaWdodDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpbmUgPSB0ZXN0O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobGluZSkgY3R4LmZpbGxUZXh0KGxpbmUsIHgsIGN1clkpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsTGV0dGVyU3BhY2VkKFxuICAgIGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHwgT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICBjeDogbnVtYmVyLFxuICAgIHk6IG51bWJlcixcbiAgICBzcGFjaW5nOiBudW1iZXJcbiAgKTogdm9pZCB7XG4gICAgLy8gTWVhc3VyZSB0b3RhbCB3aWR0aCB3aXRoIHNwYWNpbmcgYW5kIGNlbnRlclxuICAgIGNvbnN0IGNoYXJzID0gdGV4dC5zcGxpdCgnJyk7XG4gICAgY29uc3QgY2hhcldpZHRocyA9IGNoYXJzLm1hcChjID0+IGN0eC5tZWFzdXJlVGV4dChjKS53aWR0aCk7XG4gICAgY29uc3QgdG90YWxXID0gY2hhcldpZHRocy5yZWR1Y2UoKHMsIHcpID0+IHMgKyB3LCAwKSArIHNwYWNpbmcgKiAoY2hhcnMubGVuZ3RoIC0gMSk7XG4gICAgbGV0IHggPSBjeCAtIHRvdGFsVyAvIDI7XG4gICAgY3R4LnRleHRBbGlnbiA9ICdsZWZ0JztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjdHguZmlsbFRleHQoY2hhcnNbaV0sIHgsIHkpO1xuICAgICAgeCArPSBjaGFyV2lkdGhzW2ldICsgc3BhY2luZztcbiAgICB9XG4gICAgY3R4LnRleHRBbGlnbiA9ICdjZW50ZXInO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkSW1hZ2Uoc3JjOiBzdHJpbmcpOiBQcm9taXNlPEhUTUxJbWFnZUVsZW1lbnQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8SFRNTEltYWdlRWxlbWVudD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICBpbWcub25sb2FkID0gKCkgPT4gcmVzb2x2ZShpbWcpO1xuICAgICAgaW1nLm9uZXJyb3IgPSAoKSA9PiByZWplY3QobmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCBpbWFnZTogJHtzcmN9YCkpO1xuICAgICAgaW1nLnNyYyA9IHNyYztcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3RpY2tldC1jYXJkLWltYWdlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRpY2tldENhcmRJbWFnZUNvbmZpZyB7XG4gIC8qKiBRUiBjb2RlIGFzIGRhdGFVcmwgKFBORy9iYXNlNjQpICovXG4gIHFyRGF0YVVybDogc3RyaW5nO1xuICAvKiogTG9nbyB0byBzaG93IGluIHRoZSBoZWFkZXIuIFVSTCBvciBkYXRhVXJsLiBPcHRpb25hbC4gKi9cbiAgbG9nb1VybD86IHN0cmluZztcbiAgLyoqIEhlYWRlciBiYWNrZ3JvdW5kIGNvbG9yIChDU1MgY29sb3IpLiBEZWZhdWx0OiBiaW5nbyBncmFkaWVudCAnIzliMWZkZScgLT4gJyNjOTMwNzUnLiAqL1xuICBicmFuZENvbG9yPzogc3RyaW5nO1xuICAvKiogU2Vjb25kIGNvbG9yIGZvciBncmFkaWVudC4gSWYgYWJzZW50LCB1c2Ugc29saWQgYnJhbmRDb2xvci4gKi9cbiAgYnJhbmRDb2xvclRvPzogc3RyaW5nO1xuICAvKiogQnJhbmQvZXZlbnQgbmFtZSBzaG93biBpbiBoZWFkZXIuICovXG4gIGJyYW5kTmFtZT86IHN0cmluZztcbiAgLyoqIEZvbGlvIG51bWJlciBvciBzdHJpbmcuICovXG4gIGZvbGlvPzogbnVtYmVyIHwgc3RyaW5nO1xuICAvKiogTGFiZWwgZm9yIGZvbGlvLiBEZWZhdWx0OiBcIkVudHJhZGFcIi4gKi9cbiAgZm9saW9MYWJlbD86IHN0cmluZztcbiAgLyoqIEJ1eWVyIG5hbWUuIE9wdGlvbmFsLiAqL1xuICBidXllck5hbWU/OiBzdHJpbmc7XG4gIC8qKiBDYW52YXMgd2lkdGggKGRlZmF1bHQgNTYwKS4gKi9cbiAgd2lkdGg/OiBudW1iZXI7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3RpY2tldC1jYXJkLWltYWdlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRpY2tldENhcmRJbWFnZUNvbmZpZyB7XG4gIC8qKiBRUiBjb2RlIGFzIGRhdGFVcmwgKFBORy9iYXNlNjQpICovXG4gIHFyRGF0YVVybDogc3RyaW5nO1xuICAvKiogTG9nbyB0byBzaG93IGluIHRoZSBoZWFkZXIuIFVSTCBvciBkYXRhVXJsLiBPcHRpb25hbC4gKi9cbiAgbG9nb1VybD86IHN0cmluZztcbiAgLyoqIEhlYWRlciBiYWNrZ3JvdW5kIGNvbG9yIChDU1MgY29sb3IpLiBEZWZhdWx0OiBiaW5nbyBncmFkaWVudCAnIzliMWZkZScgLT4gJyNjOTMwNzUnLiAqL1xuICBicmFuZENvbG9yPzogc3RyaW5nO1xuICAvKiogU2Vjb25kIGNvbG9yIGZvciBncmFkaWVudC4gSWYgYWJzZW50LCB1c2Ugc29saWQgYnJhbmRDb2xvci4gKi9cbiAgYnJhbmRDb2xvclRvPzogc3RyaW5nO1xuICAvKiogQnJhbmQvZXZlbnQgbmFtZSBzaG93biBpbiBoZWFkZXIuICovXG4gIGJyYW5kTmFtZT86IHN0cmluZztcbiAgLyoqIEZvbGlvIG51bWJlciBvciBzdHJpbmcuICovXG4gIGZvbGlvPzogbnVtYmVyIHwgc3RyaW5nO1xuICAvKiogTGFiZWwgZm9yIGZvbGlvLiBEZWZhdWx0OiBcIkVudHJhZGFcIi4gKi9cbiAgZm9saW9MYWJlbD86IHN0cmluZztcbiAgLyoqIEJ1eWVyIG5hbWUuIE9wdGlvbmFsLiAqL1xuICBidXllck5hbWU/OiBzdHJpbmc7XG4gIC8qKiBDYW52YXMgd2lkdGggKGRlZmF1bHQgNTYwKS4gKi9cbiAgd2lkdGg/OiBudW1iZXI7XG4gIC8qKiBFdmVudCBkYXRlIHN0cmluZyB0byBzaG93IGluIGhlYWRlciAoYWxyZWFkeSBmb3JtYXR0ZWQgZm9yIGRpc3BsYXksIGUuZy4gXCJtYXJ0ZXMsIDI0IGRlIGp1bmlvXCIpLiAqL1xuICBldmVudERhdGU/OiBzdHJpbmc7XG4gIC8qKiBFdmVudCBsb2NhdGlvbiB0byBzaG93IGluIGhlYWRlci4gKi9cbiAgZXZlbnRMb2NhdGlvbj86IHN0cmluZztcbiAgLyoqIEhpbnQgdGV4dCBiZWxvdyB0aGUgUVIgY29kZS4gRGVmYXVsdDogXCJNdWVzdHJhIGVzdGUgUVIgZW4gbGEgcHVlcnRhIHBhcmEgY2FuamVhciB0dSBlbnRyYWRhLlwiICovXG4gIHNjYW5IaW50Pzogc3RyaW5nO1xufVxuIl19
@@ -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 = '4.0.166';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xNjYnO1xuIl19
5
+ export const VERSION = '4.0.168';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xNjgnO1xuIl19