valtech-components 4.0.943 → 4.0.945
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.
- package/esm2022/lib/components/atoms/avatar/avatar.component.mjs +3 -3
- package/esm2022/lib/components/atoms/box/box.component.mjs +3 -3
- package/esm2022/lib/components/atoms/button/button.component.mjs +15 -5
- package/esm2022/lib/components/atoms/container/container.component.mjs +2 -2
- package/esm2022/lib/components/atoms/display/display.component.mjs +3 -3
- package/esm2022/lib/components/atoms/divider/divider.component.mjs +3 -3
- package/esm2022/lib/components/atoms/href/href.component.mjs +3 -3
- package/esm2022/lib/components/atoms/icon/icon.component.mjs +3 -3
- package/esm2022/lib/components/atoms/image/image.component.mjs +3 -3
- package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +3 -3
- package/esm2022/lib/components/atoms/qr-code/qr-code.component.mjs +3 -3
- package/esm2022/lib/components/atoms/text/text.component.mjs +3 -3
- package/esm2022/lib/components/atoms/title/title.component.mjs +3 -3
- package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +3 -3
- package/esm2022/lib/components/molecules/button-group/button-group.component.mjs +3 -3
- package/esm2022/lib/components/molecules/card/card.component.mjs +3 -3
- package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +3 -3
- package/esm2022/lib/components/molecules/code-display/code-display.component.mjs +3 -3
- package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +3 -3
- package/esm2022/lib/components/molecules/comment/comment.component.mjs +3 -3
- package/esm2022/lib/components/molecules/content-loader/content-loader.component.mjs +3 -3
- package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +3 -3
- package/esm2022/lib/components/molecules/hint/hint.component.mjs +3 -3
- package/esm2022/lib/components/molecules/layered-card/layered-card.component.mjs +3 -3
- package/esm2022/lib/components/molecules/link/link.component.mjs +3 -3
- package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +3 -3
- package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +3 -3
- package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/pill/pill.component.mjs +3 -3
- package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +3 -3
- package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +3 -3
- package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +3 -3
- package/esm2022/lib/components/molecules/rating/rating.component.mjs +3 -3
- package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +3 -3
- package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +3 -3
- package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/title-block/title-block.component.mjs +3 -3
- package/esm2022/lib/components/organisms/about-view/about-view.component.mjs +209 -195
- package/esm2022/lib/components/organisms/account-view/account-view.component.mjs +315 -309
- package/esm2022/lib/components/organisms/api-keys-view/api-keys-view.component.mjs +105 -99
- package/esm2022/lib/components/organisms/article/article.component.mjs +3 -3
- package/esm2022/lib/components/organisms/banner/banner.component.mjs +3 -3
- package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +3 -3
- package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +3 -3
- package/esm2022/lib/components/organisms/form/form.component.mjs +3 -3
- package/esm2022/lib/components/organisms/header/header.component.mjs +3 -3
- package/esm2022/lib/components/organisms/item-list/item-list.component.mjs +3 -3
- package/esm2022/lib/components/organisms/no-content/no-content.component.mjs +3 -3
- package/esm2022/lib/components/organisms/notification-preferences-view/notification-preferences-view.component.mjs +217 -204
- package/esm2022/lib/components/organisms/notifications-view/notifications-view.component.mjs +277 -271
- package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +497 -483
- package/esm2022/lib/components/organisms/permissions-view/permissions-view.component.mjs +269 -263
- package/esm2022/lib/components/organisms/preferences-view/preferences-view.component.mjs +136 -137
- package/esm2022/lib/components/organisms/profile-view/profile-content.component.mjs +111 -105
- package/esm2022/lib/components/organisms/security-view/security-view.component.mjs +241 -235
- package/esm2022/lib/components/organisms/settings-hub/settings-hub.component.mjs +53 -48
- package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +3 -3
- package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +3 -3
- package/esm2022/lib/components/templates/simple/simple.component.mjs +3 -3
- package/esm2022/lib/components/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +2524 -2444
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/button/button.component.d.ts +6 -0
- package/lib/components/organisms/article/article.component.d.ts +1 -1
- package/lib/components/types.d.ts +12 -2
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/lib/components/styles/variables.scss +5 -0
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { Component, computed, inject, Input, signal } from '@angular/core';
|
|
3
3
|
import { ActivatedRoute } from '@angular/router';
|
|
4
|
+
import { ContainerComponent } from '../../atoms/container/container.component';
|
|
4
5
|
import { DisplayComponent } from '../../atoms/display/display.component';
|
|
5
6
|
import { TextComponent } from '../../atoms/text/text.component';
|
|
6
7
|
import { TitleComponent } from '../../atoms/title/title.component';
|
|
7
|
-
import { PickerV2Component
|
|
8
|
+
import { PickerV2Component } from '../../molecules/picker-v2/picker-v2.component';
|
|
8
9
|
import { I18nService } from '../../../services/i18n';
|
|
9
10
|
import { NavigationService } from '../../../services/navigation/navigation.service';
|
|
10
11
|
import { PreferencesService } from '../../../services/preferences/preferences.service';
|
|
@@ -146,189 +147,187 @@ export class PreferencesViewComponent {
|
|
|
146
147
|
}
|
|
147
148
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PreferencesViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
148
149
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PreferencesViewComponent, isStandalone: true, selector: "val-preferences-view", inputs: { config: "config" }, ngImport: i0, template: `
|
|
149
|
-
<
|
|
150
|
-
<
|
|
151
|
-
<
|
|
152
|
-
|
|
153
|
-
[props]="{
|
|
154
|
-
size: 'large',
|
|
155
|
-
color: 'dark',
|
|
156
|
-
bold: false,
|
|
157
|
-
content: pageDescription(),
|
|
158
|
-
}"
|
|
159
|
-
/>
|
|
160
|
-
</header>
|
|
161
|
-
|
|
162
|
-
@if (resolvedConfig().showTheme) {
|
|
163
|
-
<section class="settings-section">
|
|
150
|
+
<val-container [props]="{ size: 'md', padding: 'none' }">
|
|
151
|
+
<div class="page">
|
|
152
|
+
<header class="page-header">
|
|
153
|
+
<val-display [props]="{ size: 'small', color: 'dark', content: pageTitle() }" />
|
|
164
154
|
<val-title
|
|
165
155
|
[props]="{
|
|
166
|
-
size: '
|
|
156
|
+
size: 'large',
|
|
167
157
|
color: 'dark',
|
|
168
|
-
bold:
|
|
169
|
-
content:
|
|
158
|
+
bold: false,
|
|
159
|
+
content: pageDescription(),
|
|
170
160
|
}"
|
|
171
161
|
/>
|
|
172
|
-
|
|
173
|
-
|
|
162
|
+
</header>
|
|
163
|
+
|
|
164
|
+
@if (resolvedConfig().showTheme) {
|
|
165
|
+
<section class="settings-section">
|
|
166
|
+
<val-title
|
|
174
167
|
[props]="{
|
|
175
168
|
size: 'medium',
|
|
176
169
|
color: 'dark',
|
|
177
|
-
bold:
|
|
178
|
-
content:
|
|
170
|
+
bold: true,
|
|
171
|
+
content: themeTitle(),
|
|
179
172
|
}"
|
|
180
173
|
/>
|
|
181
|
-
<
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
174
|
+
<div class="section-body">
|
|
175
|
+
<val-text
|
|
176
|
+
[props]="{
|
|
177
|
+
size: 'medium',
|
|
178
|
+
color: 'dark',
|
|
179
|
+
bold: false,
|
|
180
|
+
content: themeHint(),
|
|
181
|
+
}"
|
|
182
|
+
/>
|
|
183
|
+
<val-picker-v2 [props]="themePickerProps()" (selectionChange)="onThemeChange($event)" />
|
|
184
|
+
</div>
|
|
185
|
+
</section>
|
|
186
|
+
}
|
|
185
187
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
[props]="{
|
|
190
|
-
size: 'medium',
|
|
191
|
-
color: 'dark',
|
|
192
|
-
bold: true,
|
|
193
|
-
content: langTitle(),
|
|
194
|
-
}"
|
|
195
|
-
/>
|
|
196
|
-
<div class="section-body">
|
|
197
|
-
<val-text
|
|
188
|
+
@if (resolvedConfig().showLanguage) {
|
|
189
|
+
<section class="settings-section">
|
|
190
|
+
<val-title
|
|
198
191
|
[props]="{
|
|
199
192
|
size: 'medium',
|
|
200
193
|
color: 'dark',
|
|
201
|
-
bold:
|
|
202
|
-
content:
|
|
194
|
+
bold: true,
|
|
195
|
+
content: langTitle(),
|
|
203
196
|
}"
|
|
204
197
|
/>
|
|
205
|
-
<
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
198
|
+
<div class="section-body">
|
|
199
|
+
<val-text
|
|
200
|
+
[props]="{
|
|
201
|
+
size: 'medium',
|
|
202
|
+
color: 'dark',
|
|
203
|
+
bold: false,
|
|
204
|
+
content: langHint(),
|
|
205
|
+
}"
|
|
206
|
+
/>
|
|
207
|
+
<val-picker-v2 [props]="languagePickerProps()" (selectionChange)="onLanguageChange($event)" />
|
|
208
|
+
</div>
|
|
209
|
+
</section>
|
|
210
|
+
}
|
|
209
211
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
[props]="{
|
|
214
|
-
size: 'medium',
|
|
215
|
-
color: 'dark',
|
|
216
|
-
bold: true,
|
|
217
|
-
content: fontSizeTitle(),
|
|
218
|
-
}"
|
|
219
|
-
/>
|
|
220
|
-
<div class="section-body">
|
|
221
|
-
<val-text
|
|
212
|
+
@if (resolvedConfig().showFontSize) {
|
|
213
|
+
<section class="settings-section">
|
|
214
|
+
<val-title
|
|
222
215
|
[props]="{
|
|
223
216
|
size: 'medium',
|
|
224
217
|
color: 'dark',
|
|
225
|
-
bold:
|
|
226
|
-
content:
|
|
218
|
+
bold: true,
|
|
219
|
+
content: fontSizeTitle(),
|
|
227
220
|
}"
|
|
228
221
|
/>
|
|
229
|
-
<
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
222
|
+
<div class="section-body">
|
|
223
|
+
<val-text
|
|
224
|
+
[props]="{
|
|
225
|
+
size: 'medium',
|
|
226
|
+
color: 'dark',
|
|
227
|
+
bold: false,
|
|
228
|
+
content: fontSizeHint(),
|
|
229
|
+
}"
|
|
230
|
+
/>
|
|
231
|
+
<val-picker-v2 [props]="fontSizePickerProps()" (selectionChange)="onFontSizeChange($event)" />
|
|
232
|
+
</div>
|
|
233
|
+
</section>
|
|
234
|
+
}
|
|
235
|
+
</div>
|
|
236
|
+
</val-container>
|
|
237
|
+
`, isInline: true, styles: [".page,.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.section-body{display:flex;flex-direction:column;gap:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: PickerV2Component, selector: "val-picker-v2", inputs: ["props"], outputs: ["selectionChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ContainerComponent, selector: "val-container", inputs: ["props"] }] }); }
|
|
235
238
|
}
|
|
236
239
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PreferencesViewComponent, decorators: [{
|
|
237
240
|
type: Component,
|
|
238
|
-
args: [{ selector: 'val-preferences-view', standalone: true, imports: [
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
TextComponent,
|
|
244
|
-
], template: `
|
|
245
|
-
<div class="page">
|
|
246
|
-
<header class="page-header">
|
|
247
|
-
<val-display [props]="{ size: 'small', color: 'dark', content: pageTitle() }" />
|
|
248
|
-
<val-title
|
|
249
|
-
[props]="{
|
|
250
|
-
size: 'large',
|
|
251
|
-
color: 'dark',
|
|
252
|
-
bold: false,
|
|
253
|
-
content: pageDescription(),
|
|
254
|
-
}"
|
|
255
|
-
/>
|
|
256
|
-
</header>
|
|
257
|
-
|
|
258
|
-
@if (resolvedConfig().showTheme) {
|
|
259
|
-
<section class="settings-section">
|
|
241
|
+
args: [{ selector: 'val-preferences-view', standalone: true, imports: [CommonModule, PickerV2Component, DisplayComponent, TitleComponent, TextComponent, ContainerComponent], template: `
|
|
242
|
+
<val-container [props]="{ size: 'md', padding: 'none' }">
|
|
243
|
+
<div class="page">
|
|
244
|
+
<header class="page-header">
|
|
245
|
+
<val-display [props]="{ size: 'small', color: 'dark', content: pageTitle() }" />
|
|
260
246
|
<val-title
|
|
261
247
|
[props]="{
|
|
262
|
-
size: '
|
|
248
|
+
size: 'large',
|
|
263
249
|
color: 'dark',
|
|
264
|
-
bold:
|
|
265
|
-
content:
|
|
250
|
+
bold: false,
|
|
251
|
+
content: pageDescription(),
|
|
266
252
|
}"
|
|
267
253
|
/>
|
|
268
|
-
|
|
269
|
-
|
|
254
|
+
</header>
|
|
255
|
+
|
|
256
|
+
@if (resolvedConfig().showTheme) {
|
|
257
|
+
<section class="settings-section">
|
|
258
|
+
<val-title
|
|
270
259
|
[props]="{
|
|
271
260
|
size: 'medium',
|
|
272
261
|
color: 'dark',
|
|
273
|
-
bold:
|
|
274
|
-
content:
|
|
262
|
+
bold: true,
|
|
263
|
+
content: themeTitle(),
|
|
275
264
|
}"
|
|
276
265
|
/>
|
|
277
|
-
<
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
266
|
+
<div class="section-body">
|
|
267
|
+
<val-text
|
|
268
|
+
[props]="{
|
|
269
|
+
size: 'medium',
|
|
270
|
+
color: 'dark',
|
|
271
|
+
bold: false,
|
|
272
|
+
content: themeHint(),
|
|
273
|
+
}"
|
|
274
|
+
/>
|
|
275
|
+
<val-picker-v2 [props]="themePickerProps()" (selectionChange)="onThemeChange($event)" />
|
|
276
|
+
</div>
|
|
277
|
+
</section>
|
|
278
|
+
}
|
|
281
279
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
[props]="{
|
|
286
|
-
size: 'medium',
|
|
287
|
-
color: 'dark',
|
|
288
|
-
bold: true,
|
|
289
|
-
content: langTitle(),
|
|
290
|
-
}"
|
|
291
|
-
/>
|
|
292
|
-
<div class="section-body">
|
|
293
|
-
<val-text
|
|
280
|
+
@if (resolvedConfig().showLanguage) {
|
|
281
|
+
<section class="settings-section">
|
|
282
|
+
<val-title
|
|
294
283
|
[props]="{
|
|
295
284
|
size: 'medium',
|
|
296
285
|
color: 'dark',
|
|
297
|
-
bold:
|
|
298
|
-
content:
|
|
286
|
+
bold: true,
|
|
287
|
+
content: langTitle(),
|
|
299
288
|
}"
|
|
300
289
|
/>
|
|
301
|
-
<
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
290
|
+
<div class="section-body">
|
|
291
|
+
<val-text
|
|
292
|
+
[props]="{
|
|
293
|
+
size: 'medium',
|
|
294
|
+
color: 'dark',
|
|
295
|
+
bold: false,
|
|
296
|
+
content: langHint(),
|
|
297
|
+
}"
|
|
298
|
+
/>
|
|
299
|
+
<val-picker-v2 [props]="languagePickerProps()" (selectionChange)="onLanguageChange($event)" />
|
|
300
|
+
</div>
|
|
301
|
+
</section>
|
|
302
|
+
}
|
|
305
303
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
[props]="{
|
|
310
|
-
size: 'medium',
|
|
311
|
-
color: 'dark',
|
|
312
|
-
bold: true,
|
|
313
|
-
content: fontSizeTitle(),
|
|
314
|
-
}"
|
|
315
|
-
/>
|
|
316
|
-
<div class="section-body">
|
|
317
|
-
<val-text
|
|
304
|
+
@if (resolvedConfig().showFontSize) {
|
|
305
|
+
<section class="settings-section">
|
|
306
|
+
<val-title
|
|
318
307
|
[props]="{
|
|
319
308
|
size: 'medium',
|
|
320
309
|
color: 'dark',
|
|
321
|
-
bold:
|
|
322
|
-
content:
|
|
310
|
+
bold: true,
|
|
311
|
+
content: fontSizeTitle(),
|
|
323
312
|
}"
|
|
324
313
|
/>
|
|
325
|
-
<
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
314
|
+
<div class="section-body">
|
|
315
|
+
<val-text
|
|
316
|
+
[props]="{
|
|
317
|
+
size: 'medium',
|
|
318
|
+
color: 'dark',
|
|
319
|
+
bold: false,
|
|
320
|
+
content: fontSizeHint(),
|
|
321
|
+
}"
|
|
322
|
+
/>
|
|
323
|
+
<val-picker-v2 [props]="fontSizePickerProps()" (selectionChange)="onFontSizeChange($event)" />
|
|
324
|
+
</div>
|
|
325
|
+
</section>
|
|
326
|
+
}
|
|
327
|
+
</div>
|
|
328
|
+
</val-container>
|
|
329
|
+
`, styles: [".page,.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.section-body{display:flex;flex-direction:column;gap:10px}\n"] }]
|
|
331
330
|
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
332
331
|
type: Input
|
|
333
332
|
}] } });
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3ByZWZlcmVuY2VzLXZpZXcvcHJlZmVyZW5jZXMtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCxpQkFBaUIsR0FFbEIsTUFBTSwrQ0FBK0MsQ0FBQztBQUV2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDcEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFNdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFHckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRWhFLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBQUM7QUFDN0MsTUFBTSxpQkFBaUIsR0FBMEIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFOUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUF1SEgsTUFBTSxPQUFPLHdC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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNGVDt3REFrQ1EsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBQaWNrZXJWMkNvbXBvbmVudCxcbiAgUGlja2VyVjJNZXRhZGF0YSxcbn0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3BpY2tlci12Mi9waWNrZXItdjIuY29tcG9uZW50JztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlZmVyZW5jZXMvcHJlZmVyZW5jZXMuc2VydmljZSc7XG5pbXBvcnQge1xuICBQcmVmZXJlbmNlc0ZvbnRTaXplLFxuICBQcmVmZXJlbmNlc0xhbmd1YWdlLFxuICBQcmVmZXJlbmNlc1RoZW1lLFxufSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcmVmZXJlbmNlcy9wcmVmZXJlbmNlcy50eXBlcyc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5cbmltcG9ydCB7IFByZWZlcmVuY2VzVmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgUFJFRkVSRU5DRVNfVklFV19JMThOIH0gZnJvbSAnLi9wcmVmZXJlbmNlcy12aWV3LmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5HZW5lcmFsJztcbmNvbnN0IERFRkFVTFRfTEFOR1VBR0VTOiBQcmVmZXJlbmNlc0xhbmd1YWdlW10gPSBbJ2VzJywgJ2VuJ107XG5cbi8qKlxuICogYHZhbC1wcmVmZXJlbmNlcy12aWV3YCDigJQgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIFVJIGNyb3NzLWFwcCAodGVtYSArXG4gKiBpZGlvbWEpIGZ1bGwtZmVhdHVyZSBhdXRvY29udGVuaWRhIChvcmdhbmlzbSkuIFByb21vdmlkYSBkZXNkZSBgc2hvd2Nhc2VgXG4gKiBiYWpvIGVsIHByb2Nlc28gZGUgQURSLTAyMS5cbiAqXG4gKiBCYWNrZW5kIGludGVncmF0aW9uIDEwMCUgZW4gYFByZWZlcmVuY2VzU2VydmljZWA6XG4gKiAgLSBSZWFkOiBsaXN0ZW5lciBGaXJlc3RvcmUgcmVhY3Rpdm8gKGBwcmVmcy50aGVtZSgpYCAvIGBwcmVmcy5sYW5ndWFnZSgpYCkuXG4gKiAgLSBXcml0ZTogYFBVVCAvdjIvYXV0aC9wcmVmZXJlbmNlc2AgKGBwcmVmcy5zZXRUaGVtZWAgLyBgcHJlZnMuc2V0TGFuZ3VhZ2VgKS5cbiAqICAgIEVsIGNsaWVudGUgTlVOQ0EgZXNjcmliZSBGaXJlc3RvcmUgZGlyZWN0by5cbiAqXG4gKiBOTyByZW5kZXJpemEgaW9uLWNvbnRlbnQg4oCUIHZpdmUgZGVudHJvIGRlIHZhbC1wYWdlLXdyYXBwZXIuXG4gKlxuICogQXV0by1yZWdpc3RyYSBzdXMgZGVmYXVsdHMgaTE4biAoZXMvZW4pIGVuIGVsIGNvbnN0cnVjdG9yIHNpIGVsIGNvbnN1bWVyIG5vXG4gKiBwcm92ZXnDsyBlbCBuYW1lc3BhY2UgY29uZmlndXJhZG8gKGRlZmF1bHQgYFNldHRpbmdzLkdlbmVyYWxgKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXByZWZlcmVuY2VzLXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFBpY2tlclYyQ29tcG9uZW50LFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicGFnZVwiPlxuICAgICAgPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4gICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnLCBjb250ZW50OiBwYWdlVGl0bGUoKSB9XCIgLz5cbiAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgY29udGVudDogcGFnZURlc2NyaXB0aW9uKCksXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dUaGVtZSkge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNldHRpbmdzLXNlY3Rpb25cIj5cbiAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgY29udGVudDogdGhlbWVUaXRsZSgpLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1ib2R5XCI+XG4gICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRoZW1lSGludCgpLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8dmFsLXBpY2tlci12MiBbcHJvcHNdPVwidGhlbWVQaWNrZXJQcm9wcygpXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblRoZW1lQ2hhbmdlKCRldmVudClcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93TGFuZ3VhZ2UpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IGxhbmdUaXRsZSgpLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1ib2R5XCI+XG4gICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGxhbmdIaW50KCksXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDx2YWwtcGlja2VyLXYyIFtwcm9wc109XCJsYW5ndWFnZVBpY2tlclByb3BzKClcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uTGFuZ3VhZ2VDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dGb250U2l6ZSkge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNldHRpbmdzLXNlY3Rpb25cIj5cbiAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgY29udGVudDogZm9udFNpemVUaXRsZSgpLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1ib2R5XCI+XG4gICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGZvbnRTaXplSGludCgpLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8dmFsLXBpY2tlci12MiBbcHJvcHNdPVwiZm9udFNpemVQaWNrZXJQcm9wcygpXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkZvbnRTaXplQ2hhbmdlKCRldmVudClcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5wYWdlIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwO1xuICAgICAgICBtYXgtd2lkdGg6IDcyMHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIH1cbiAgICAgIC5zZXR0aW5ncy1zZWN0aW9uIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwO1xuICAgICAgfVxuICAgICAgLnNldHRpbmdzLXNlY3Rpb24gKyAuc2V0dGluZ3Mtc2VjdGlvbiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS12YWwtYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgIH1cbiAgICAgIC5zZWN0aW9uLWJvZHkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJlZmVyZW5jZXNWaWV3Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcHJlZnMgPSBpbmplY3QoUHJlZmVyZW5jZXNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlcnJvcnMgPSBpbmplY3QoVmFsdGVjaEVycm9yU2VydmljZSk7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgLyoqXG4gICAqIENvbmZpZyB2w61hIEBJbnB1dCAob2JqZWN0LWZpcnN0KS4gU2kgbm8gc2UgcGFzYSwgc2UgY2FlIGFsIHJvdXRlIGRhdGFcbiAgICogYHByZWZlcmVuY2VzQ29uZmlnYCAocG9ibGFkbyBwb3IgYHByb3ZpZGVWYWx0ZWNoUHJlZmVyZW5jZXNSb3V0ZXNgKS5cbiAgICogYHJlc29sdmVkQ29uZmlnYCBtZXJnZWEgY29uIGxvcyBkZWZhdWx0cy5cbiAgICovXG4gIEBJbnB1dCgpIGNvbmZpZz86IFByZWZlcmVuY2VzVmlld0NvbmZpZztcblxuICAvKiogQ29uZmlnIG1lcmdlYWRhIGNvbiBkZWZhdWx0cy4gQElucHV0IGdhbmEgc29icmUgcm91dGUgZGF0YS4gKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZWRDb25maWcgPSBjb21wdXRlZDxcbiAgICBSZXF1aXJlZDxPbWl0PFByZWZlcmVuY2VzVmlld0NvbmZpZywgJ29uVGhlbWVDaGFuZ2VkJyB8ICdvbkxhbmd1YWdlQ2hhbmdlZCcgfCAnb25Gb250U2l6ZUNoYW5nZWQnPj4gJlxuICAgICAgUGljazxQcmVmZXJlbmNlc1ZpZXdDb25maWcsICdvblRoZW1lQ2hhbmdlZCcgfCAnb25MYW5ndWFnZUNoYW5nZWQnIHwgJ29uRm9udFNpemVDaGFuZ2VkJz5cbiAgPigoKSA9PiB7XG4gICAgY29uc3QgZnJvbVJvdXRlID0gKHRoaXMucm91dGU/LnNuYXBzaG90LmRhdGFbJ3ByZWZlcmVuY2VzQ29uZmlnJ10gPz8ge30pIGFzIFByZWZlcmVuY2VzVmlld0NvbmZpZztcbiAgICBjb25zdCBtZXJnZWQ6IFByZWZlcmVuY2VzVmlld0NvbmZpZyA9IHsgLi4uZnJvbVJvdXRlLCAuLi4odGhpcy5jb25maWcgPz8ge30pIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3dUaGVtZTogbWVyZ2VkLnNob3dUaGVtZSA/PyB0cnVlLFxuICAgICAgc2hvd0xhbmd1YWdlOiBtZXJnZWQuc2hvd0xhbmd1YWdlID8/IHRydWUsXG4gICAgICBzaG93Rm9udFNpemU6IG1lcmdlZC5zaG93Rm9udFNpemUgPz8gdHJ1ZSxcbiAgICAgIHN1cHBvcnRlZExhbmd1YWdlczogbWVyZ2VkLnN1cHBvcnRlZExhbmd1YWdlcyA/PyBERUZBVUxUX0xBTkdVQUdFUyxcbiAgICAgIGkxOG5OYW1lc3BhY2U6IG1lcmdlZC5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICAgb25UaGVtZUNoYW5nZWQ6IG1lcmdlZC5vblRoZW1lQ2hhbmdlZCxcbiAgICAgIG9uTGFuZ3VhZ2VDaGFuZ2VkOiBtZXJnZWQub25MYW5ndWFnZUNoYW5nZWQsXG4gICAgICBvbkZvbnRTaXplQ2hhbmdlZDogbWVyZ2VkLm9uRm9udFNpemVDaGFuZ2VkLFxuICAgIH07XG4gIH0pO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biByZXN1ZWx0byAoY2FwdHVyYWRvIHBhcmEgbGxhbWFkYXMgbm8tcmVhY3RpdmFzKS4gKi9cbiAgcHJpdmF0ZSBnZXQgbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmkxOG5OYW1lc3BhY2U7XG4gIH1cblxuICByZWFkb25seSBzYXZpbmcgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHJlYWRvbmx5IHBhZ2VUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudCgncGFnZVRpdGxlJykpO1xuICByZWFkb25seSBwYWdlRGVzY3JpcHRpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLnQoJ3BhZ2VEZXNjcmlwdGlvbicpKTtcbiAgcmVhZG9ubHkgdGhlbWVUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudCgndGhlbWVUaXRsZScpKTtcbiAgcmVhZG9ubHkgdGhlbWVIaW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50KCd0aGVtZUhpbnQnKSk7XG4gIHJlYWRvbmx5IGxhbmdUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudCgnbGFuZ3VhZ2VUaXRsZScpKTtcbiAgcmVhZG9ubHkgbGFuZ0hpbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnQoJ2xhbmd1YWdlSGludCcpKTtcbiAgcmVhZG9ubHkgZm9udFNpemVUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudCgnZm9udFNpemVUaXRsZScpKTtcbiAgcmVhZG9ubHkgZm9udFNpemVIaW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50KCdmb250U2l6ZUhpbnQnKSk7XG4gIHJlYWRvbmx5IHRoZW1lUGlja2VyUHJvcHMgPSBjb21wdXRlZDxQaWNrZXJWMk1ldGFkYXRhPigoKSA9PiAoe1xuICAgIHNlbGVjdGVkVmFsdWU6IHRoaXMucHJlZnMudGhlbWUoKSxcbiAgICBkaXNhYmxlZDogdGhpcy5zYXZpbmcoKSxcbiAgICBhcmlhTGFiZWw6IHRoaXMudGhlbWVUaXRsZSgpLFxuICAgIG9wdGlvbnM6IFtcbiAgICAgIHsgdmFsdWU6ICdsaWdodCcsIGxhYmVsOiB0aGlzLnQoJ3RoZW1lTGlnaHQnKSB9LFxuICAgICAgeyB2YWx1ZTogJ2RhcmsnLCBsYWJlbDogdGhpcy50KCd0aGVtZURhcmsnKSB9LFxuICAgICAgeyB2YWx1ZTogJ2F1dG8nLCBsYWJlbDogdGhpcy50KCd0aGVtZUF1dG8nKSB9LFxuICAgIF0sXG4gIH0pKTtcblxuICByZWFkb25seSBsYW5ndWFnZVBpY2tlclByb3BzID0gY29tcHV0ZWQ8UGlja2VyVjJNZXRhZGF0YT4oKCkgPT4gKHtcbiAgICBzZWxlY3RlZFZhbHVlOiB0aGlzLnByZWZzLmxhbmd1YWdlKCksXG4gICAgZGlzYWJsZWQ6IHRoaXMuc2F2aW5nKCksXG4gICAgYXJpYUxhYmVsOiB0aGlzLmxhbmdUaXRsZSgpLFxuICAgIG9wdGlvbnM6IHRoaXMucmVzb2x2ZWRDb25maWcoKS5zdXBwb3J0ZWRMYW5ndWFnZXMubWFwKGxhbmcgPT4gKHtcbiAgICAgIHZhbHVlOiBsYW5nLFxuICAgICAgbGFiZWw6IHRoaXMubGFuZ3VhZ2VOYW1lKGxhbmcpLFxuICAgIH0pKSxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IGZvbnRTaXplUGlja2VyUHJvcHMgPSBjb21wdXRlZDxQaWNrZXJWMk1ldGFkYXRhPigoKSA9PiAoe1xuICAgIHNlbGVjdGVkVmFsdWU6IHRoaXMucHJlZnMuZm9udFNpemUoKSxcbiAgICBkaXNhYmxlZDogdGhpcy5zYXZpbmcoKSxcbiAgICBhcmlhTGFiZWw6IHRoaXMuZm9udFNpemVUaXRsZSgpLFxuICAgIG9wdGlvbnM6IFtcbiAgICAgIHsgdmFsdWU6ICdzbWFsbCcsIGxhYmVsOiB0aGlzLnQoJ2ZvbnRTaXplU21hbGwnKSB9LFxuICAgICAgeyB2YWx1ZTogJ21lZGl1bScsIGxhYmVsOiB0aGlzLnQoJ2ZvbnRTaXplTWVkaXVtJykgfSxcbiAgICAgIHsgdmFsdWU6ICdsYXJnZScsIGxhYmVsOiB0aGlzLnQoJ2ZvbnRTaXplTGFyZ2UnKSB9LFxuICAgIF0sXG4gIH0pKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBBdXRvLXJlZ2lzdHJvIGkxOG4g4oCUIHJlc3BldGEgb3ZlcnJpZGUgZGVsIGNvbnN1bWVyLiBFbCBuYW1lc3BhY2UgcHVlZGVcbiAgICAvLyB2ZW5pciBkZSBASW5wdXQuY29uZmlnIG8gZGVsIHJvdXRlIGRhdGE7IGxvIHJlc29sdmVtb3MgYWPDoS5cbiAgICBjb25zdCBucyA9IHRoaXMubnM7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMobnMsIFBSRUZFUkVOQ0VTX1ZJRVdfSTE4Tik7XG5cbiAgICB0aGlzLm5hdi5zZXRCYWNrSGVhZGVyKCdwYWdlVGl0bGUnLCBucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uVGhlbWVDaGFuZ2UodmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdiA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWVbMF0gOiB2YWx1ZTtcbiAgICBpZiAodGhpcy5zYXZpbmcoKSB8fCB2ID09PSB0aGlzLnByZWZzLnRoZW1lKCkpIHJldHVybjtcbiAgICBjb25zdCB0aGVtZSA9IHYgYXMgUHJlZmVyZW5jZXNUaGVtZTtcbiAgICBhd2FpdCB0aGlzLmRpc3BhdGNoKFxuICAgICAgKCkgPT4gdGhpcy5wcmVmcy5zZXRUaGVtZSh0aGVtZSksXG4gICAgICAoKSA9PiB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25UaGVtZUNoYW5nZWQ/Lih0aGVtZSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgb25Gb250U2l6ZUNoYW5nZSh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZVswXSA6IHZhbHVlO1xuICAgIGNvbnN0IGZvbnRTaXplID0gdiBhcyBQcmVmZXJlbmNlc0ZvbnRTaXplO1xuICAgIGlmICh0aGlzLnNhdmluZygpIHx8IHYgPT09IHRoaXMucHJlZnMuZm9udFNpemUoKSkgcmV0dXJuO1xuICAgIGF3YWl0IHRoaXMuZGlzcGF0Y2goXG4gICAgICAoKSA9PiB0aGlzLnByZWZzLnNldEZvbnRTaXplKGZvbnRTaXplKSxcbiAgICAgICgpID0+IHRoaXMucmVzb2x2ZWRDb25maWcoKS5vbkZvbnRTaXplQ2hhbmdlZD8uKGZvbnRTaXplKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBvbkxhbmd1YWdlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsYW5nID0gdmFsdWUgYXMgUHJlZmVyZW5jZXNMYW5ndWFnZTtcbiAgICBpZiAoIXRoaXMucmVzb2x2ZWRDb25maWcoKS5zdXBwb3J0ZWRMYW5ndWFnZXMuaW5jbHVkZXMobGFuZykpIHJldHVybjtcbiAgICBpZiAodGhpcy5zYXZpbmcoKSB8fCB2YWx1ZSA9PT0gdGhpcy5wcmVmcy5sYW5ndWFnZSgpKSByZXR1cm47XG4gICAgYXdhaXQgdGhpcy5kaXNwYXRjaChcbiAgICAgICgpID0+IHRoaXMucHJlZnMuc2V0TGFuZ3VhZ2UobGFuZyksXG4gICAgICAoKSA9PiB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25MYW5ndWFnZUNoYW5nZWQ/LihsYW5nKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRpc3BhdGNoKGZuOiAoKSA9PiBQcm9taXNlPHVua25vd24+LCBvblN1Y2Nlc3M/OiAoKSA9PiB2b2lkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zYXZpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmbigpO1xuICAgICAgb25TdWNjZXNzPy4oKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ3NldHRpbmdzLnByZWZlcmVuY2VzLnNhdmUnLFxuICAgICAgICBmYWxsYmFja0tleTogJ3NhdmVFcnJvcicsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zYXZpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKiogTGVlIGRlbCBuYW1lc3BhY2UgY29uZmlndXJhZG8uICovXG4gIHByb3RlY3RlZCB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKTtcbiAgfVxuXG4gIHByaXZhdGUgbGFuZ3VhZ2VOYW1lKGxhbmc6IFByZWZlcmVuY2VzTGFuZ3VhZ2UpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYGxhbmd1YWdlXyR7bGFuZ31gKTtcbiAgfVxufVxuIl19
|
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3ByZWZlcmVuY2VzLXZpZXcvcHJlZmVyZW5jZXMtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSwrQ0FBK0MsQ0FBQztBQUVwRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDcEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFNdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFHckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRWhFLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBQUM7QUFDN0MsTUFBTSxpQkFBaUIsR0FBMEIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENB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QkFBa0IsQ0FBQyxZQUNyRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdGVDt3REFrQ1EsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9jb250YWluZXIvY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaWNrZXJWMkNvbXBvbmVudCwgUGlja2VyVjJNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9waWNrZXItdjIvcGlja2VyLXYyLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZWZlcmVuY2VzL3ByZWZlcmVuY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgUHJlZmVyZW5jZXNGb250U2l6ZSxcbiAgUHJlZmVyZW5jZXNMYW5ndWFnZSxcbiAgUHJlZmVyZW5jZXNUaGVtZSxcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlZmVyZW5jZXMvcHJlZmVyZW5jZXMudHlwZXMnO1xuaW1wb3J0IHsgVmFsdGVjaEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy92YWx0ZWNoLWVycm9yLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBQcmVmZXJlbmNlc1ZpZXdDb25maWcgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFBSRUZFUkVOQ0VTX1ZJRVdfSTE4TiB9IGZyb20gJy4vcHJlZmVyZW5jZXMtdmlldy5pMThuJztcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuR2VuZXJhbCc7XG5jb25zdCBERUZBVUxUX0xBTkdVQUdFUzogUHJlZmVyZW5jZXNMYW5ndWFnZVtdID0gWydlcycsICdlbiddO1xuXG4vKipcbiAqIGB2YWwtcHJlZmVyZW5jZXMtdmlld2Ag4oCUIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBVSSBjcm9zcy1hcHAgKHRlbWEgK1xuICogaWRpb21hKSBmdWxsLWZlYXR1cmUgYXV0b2NvbnRlbmlkYSAob3JnYW5pc20pLiBQcm9tb3ZpZGEgZGVzZGUgYHNob3djYXNlYFxuICogYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuXG4gKlxuICogQmFja2VuZCBpbnRlZ3JhdGlvbiAxMDAlIGVuIGBQcmVmZXJlbmNlc1NlcnZpY2VgOlxuICogIC0gUmVhZDogbGlzdGVuZXIgRmlyZXN0b3JlIHJlYWN0aXZvIChgcHJlZnMudGhlbWUoKWAgLyBgcHJlZnMubGFuZ3VhZ2UoKWApLlxuICogIC0gV3JpdGU6IGBQVVQgL3YyL2F1dGgvcHJlZmVyZW5jZXNgIChgcHJlZnMuc2V0VGhlbWVgIC8gYHByZWZzLnNldExhbmd1YWdlYCkuXG4gKiAgICBFbCBjbGllbnRlIE5VTkNBIGVzY3JpYmUgRmlyZXN0b3JlIGRpcmVjdG8uXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLlxuICpcbiAqIEF1dG8tcmVnaXN0cmEgc3VzIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbiBlbCBjb25zdHJ1Y3RvciBzaSBlbCBjb25zdW1lciBub1xuICogcHJvdmV5w7MgZWwgbmFtZXNwYWNlIGNvbmZpZ3VyYWRvIChkZWZhdWx0IGBTZXR0aW5ncy5HZW5lcmFsYCkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1wcmVmZXJlbmNlcy12aWV3JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUGlja2VyVjJDb21wb25lbnQsIERpc3BsYXlDb21wb25lbnQsIFRpdGxlQ29tcG9uZW50LCBUZXh0Q29tcG9uZW50LCBDb250YWluZXJDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDx2YWwtY29udGFpbmVyIFtwcm9wc109XCJ7IHNpemU6ICdtZCcsIHBhZGRpbmc6ICdub25lJyB9XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGFnZVwiPlxuICAgICAgICA8aGVhZGVyIGNsYXNzPVwicGFnZS1oZWFkZXJcIj5cbiAgICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInsgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdkYXJrJywgY29udGVudDogcGFnZVRpdGxlKCkgfVwiIC8+XG4gICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHBhZ2VEZXNjcmlwdGlvbigpLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dUaGVtZSkge1xuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2V0dGluZ3Mtc2VjdGlvblwiPlxuICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0aGVtZVRpdGxlKCksXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWJvZHlcIj5cbiAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgY29udGVudDogdGhlbWVIaW50KCksXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDx2YWwtcGlja2VyLXYyIFtwcm9wc109XCJ0aGVtZVBpY2tlclByb3BzKClcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uVGhlbWVDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd0xhbmd1YWdlKSB7XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGxhbmdUaXRsZSgpLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1ib2R5XCI+XG4gICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGxhbmdIaW50KCksXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDx2YWwtcGlja2VyLXYyIFtwcm9wc109XCJsYW5ndWFnZVBpY2tlclByb3BzKClcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uTGFuZ3VhZ2VDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd0ZvbnRTaXplKSB7XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGZvbnRTaXplVGl0bGUoKSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tYm9keVwiPlxuICAgICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICBjb250ZW50OiBmb250U2l6ZUhpbnQoKSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHZhbC1waWNrZXItdjIgW3Byb3BzXT1cImZvbnRTaXplUGlja2VyUHJvcHMoKVwiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25Gb250U2l6ZUNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC92YWwtY29udGFpbmVyPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAvKiBBbmNobyB5IGNyZWNpbWllbnRvIGNvbiBlbCByYWlsIGNvbGFwc2FkbyBsb3MgZGEgdmFsLWNvbnRhaW5lciAoc2l6ZVxuICAgICAgICAgJ21kJyksIG5vIENTUyBsb2NhbDogdmVyIGNvbnRhaW5lci5jb21wb25lbnQuc2Nzcy4gKi9cbiAgICAgIC5wYWdlIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwO1xuICAgICAgfVxuICAgICAgLnNldHRpbmdzLXNlY3Rpb24ge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICB9XG4gICAgICAuc2V0dGluZ3Mtc2VjdGlvbiArIC5zZXR0aW5ncy1zZWN0aW9uIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgfVxuICAgICAgLnNlY3Rpb24tYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQcmVmZXJlbmNlc1ZpZXdDb21wb25lbnQge1xuICBwcml2YXRlIG5hdiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG4gIHByb3RlY3RlZCBwcmVmcyA9IGluamVjdChQcmVmZXJlbmNlc1NlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAvKipcbiAgICogQ29uZmlnIHbDrWEgQElucHV0IChvYmplY3QtZmlyc3QpLiBTaSBubyBzZSBwYXNhLCBzZSBjYWUgYWwgcm91dGUgZGF0YVxuICAgKiBgcHJlZmVyZW5jZXNDb25maWdgIChwb2JsYWRvIHBvciBgcHJvdmlkZVZhbHRlY2hQcmVmZXJlbmNlc1JvdXRlc2ApLlxuICAgKiBgcmVzb2x2ZWRDb25maWdgIG1lcmdlYSBjb24gbG9zIGRlZmF1bHRzLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnPzogUHJlZmVyZW5jZXNWaWV3Q29uZmlnO1xuXG4gIC8qKiBDb25maWcgbWVyZ2VhZGEgY29uIGRlZmF1bHRzLiBASW5wdXQgZ2FuYSBzb2JyZSByb3V0ZSBkYXRhLiAqL1xuICByZWFkb25seSByZXNvbHZlZENvbmZpZyA9IGNvbXB1dGVkPFxuICAgIFJlcXVpcmVkPE9taXQ8UHJlZmVyZW5jZXNWaWV3Q29uZmlnLCAnb25UaGVtZUNoYW5nZWQnIHwgJ29uTGFuZ3VhZ2VDaGFuZ2VkJyB8ICdvbkZvbnRTaXplQ2hhbmdlZCc+PiAmXG4gICAgICBQaWNrPFByZWZlcmVuY2VzVmlld0NvbmZpZywgJ29uVGhlbWVDaGFuZ2VkJyB8ICdvbkxhbmd1YWdlQ2hhbmdlZCcgfCAnb25Gb250U2l6ZUNoYW5nZWQnPlxuICA+KCgpID0+IHtcbiAgICBjb25zdCBmcm9tUm91dGUgPSAodGhpcy5yb3V0ZT8uc25hcHNob3QuZGF0YVsncHJlZmVyZW5jZXNDb25maWcnXSA/PyB7fSkgYXMgUHJlZmVyZW5jZXNWaWV3Q29uZmlnO1xuICAgIGNvbnN0IG1lcmdlZDogUHJlZmVyZW5jZXNWaWV3Q29uZmlnID0geyAuLi5mcm9tUm91dGUsIC4uLih0aGlzLmNvbmZpZyA/PyB7fSkgfTtcbiAgICByZXR1cm4ge1xuICAgICAgc2hvd1RoZW1lOiBtZXJnZWQuc2hvd1RoZW1lID8/IHRydWUsXG4gICAgICBzaG93TGFuZ3VhZ2U6IG1lcmdlZC5zaG93TGFuZ3VhZ2UgPz8gdHJ1ZSxcbiAgICAgIHNob3dGb250U2l6ZTogbWVyZ2VkLnNob3dGb250U2l6ZSA/PyB0cnVlLFxuICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzOiBtZXJnZWQuc3VwcG9ydGVkTGFuZ3VhZ2VzID8/IERFRkFVTFRfTEFOR1VBR0VTLFxuICAgICAgaTE4bk5hbWVzcGFjZTogbWVyZ2VkLmkxOG5OYW1lc3BhY2UgPz8gREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgICBvblRoZW1lQ2hhbmdlZDogbWVyZ2VkLm9uVGhlbWVDaGFuZ2VkLFxuICAgICAgb25MYW5ndWFnZUNoYW5nZWQ6IG1lcmdlZC5vbkxhbmd1YWdlQ2hhbmdlZCxcbiAgICAgIG9uRm9udFNpemVDaGFuZ2VkOiBtZXJnZWQub25Gb250U2l6ZUNoYW5nZWQsXG4gICAgfTtcbiAgfSk7XG5cbiAgLyoqIE5hbWVzcGFjZSBpMThuIHJlc3VlbHRvIChjYXB0dXJhZG8gcGFyYSBsbGFtYWRhcyBuby1yZWFjdGl2YXMpLiAqL1xuICBwcml2YXRlIGdldCBucygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuaTE4bk5hbWVzcGFjZTtcbiAgfVxuXG4gIHJlYWRvbmx5IHNhdmluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcmVhZG9ubHkgcGFnZVRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50KCdwYWdlVGl0bGUnKSk7XG4gIHJlYWRvbmx5IHBhZ2VEZXNjcmlwdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMudCgncGFnZURlc2NyaXB0aW9uJykpO1xuICByZWFkb25seSB0aGVtZVRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50KCd0aGVtZVRpdGxlJykpO1xuICByZWFkb25seSB0aGVtZUhpbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnQoJ3RoZW1lSGludCcpKTtcbiAgcmVhZG9ubHkgbGFuZ1RpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50KCdsYW5ndWFnZVRpdGxlJykpO1xuICByZWFkb25seSBsYW5nSGludCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudCgnbGFuZ3VhZ2VIaW50JykpO1xuICByZWFkb25seSBmb250U2l6ZVRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50KCdmb250U2l6ZVRpdGxlJykpO1xuICByZWFkb25seSBmb250U2l6ZUhpbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnQoJ2ZvbnRTaXplSGludCcpKTtcbiAgcmVhZG9ubHkgdGhlbWVQaWNrZXJQcm9wcyA9IGNvbXB1dGVkPFBpY2tlclYyTWV0YWRhdGE+KCgpID0+ICh7XG4gICAgc2VsZWN0ZWRWYWx1ZTogdGhpcy5wcmVmcy50aGVtZSgpLFxuICAgIGRpc2FibGVkOiB0aGlzLnNhdmluZygpLFxuICAgIGFyaWFMYWJlbDogdGhpcy50aGVtZVRpdGxlKCksXG4gICAgb3B0aW9uczogW1xuICAgICAgeyB2YWx1ZTogJ2xpZ2h0JywgbGFiZWw6IHRoaXMudCgndGhlbWVMaWdodCcpIH0sXG4gICAgICB7IHZhbHVlOiAnZGFyaycsIGxhYmVsOiB0aGlzLnQoJ3RoZW1lRGFyaycpIH0sXG4gICAgICB7IHZhbHVlOiAnYXV0bycsIGxhYmVsOiB0aGlzLnQoJ3RoZW1lQXV0bycpIH0sXG4gICAgXSxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IGxhbmd1YWdlUGlja2VyUHJvcHMgPSBjb21wdXRlZDxQaWNrZXJWMk1ldGFkYXRhPigoKSA9PiAoe1xuICAgIHNlbGVjdGVkVmFsdWU6IHRoaXMucHJlZnMubGFuZ3VhZ2UoKSxcbiAgICBkaXNhYmxlZDogdGhpcy5zYXZpbmcoKSxcbiAgICBhcmlhTGFiZWw6IHRoaXMubGFuZ1RpdGxlKCksXG4gICAgb3B0aW9uczogdGhpcy5yZXNvbHZlZENvbmZpZygpLnN1cHBvcnRlZExhbmd1YWdlcy5tYXAobGFuZyA9PiAoe1xuICAgICAgdmFsdWU6IGxhbmcsXG4gICAgICBsYWJlbDogdGhpcy5sYW5ndWFnZU5hbWUobGFuZyksXG4gICAgfSkpLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgZm9udFNpemVQaWNrZXJQcm9wcyA9IGNvbXB1dGVkPFBpY2tlclYyTWV0YWRhdGE+KCgpID0+ICh7XG4gICAgc2VsZWN0ZWRWYWx1ZTogdGhpcy5wcmVmcy5mb250U2l6ZSgpLFxuICAgIGRpc2FibGVkOiB0aGlzLnNhdmluZygpLFxuICAgIGFyaWFMYWJlbDogdGhpcy5mb250U2l6ZVRpdGxlKCksXG4gICAgb3B0aW9uczogW1xuICAgICAgeyB2YWx1ZTogJ3NtYWxsJywgbGFiZWw6IHRoaXMudCgnZm9udFNpemVTbWFsbCcpIH0sXG4gICAgICB7IHZhbHVlOiAnbWVkaXVtJywgbGFiZWw6IHRoaXMudCgnZm9udFNpemVNZWRpdW0nKSB9LFxuICAgICAgeyB2YWx1ZTogJ2xhcmdlJywgbGFiZWw6IHRoaXMudCgnZm9udFNpemVMYXJnZScpIH0sXG4gICAgXSxcbiAgfSkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIEF1dG8tcmVnaXN0cm8gaTE4biDigJQgcmVzcGV0YSBvdmVycmlkZSBkZWwgY29uc3VtZXIuIEVsIG5hbWVzcGFjZSBwdWVkZVxuICAgIC8vIHZlbmlyIGRlIEBJbnB1dC5jb25maWcgbyBkZWwgcm91dGUgZGF0YTsgbG8gcmVzb2x2ZW1vcyBhY8OhLlxuICAgIGNvbnN0IG5zID0gdGhpcy5ucztcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cyhucywgUFJFRkVSRU5DRVNfVklFV19JMThOKTtcblxuICAgIHRoaXMubmF2LnNldEJhY2tIZWFkZXIoJ3BhZ2VUaXRsZScsIG5zLCB7IHdpdGhNZW51OiB0cnVlIH0pO1xuICB9XG5cbiAgYXN5bmMgb25UaGVtZUNoYW5nZSh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZVswXSA6IHZhbHVlO1xuICAgIGlmICh0aGlzLnNhdmluZygpIHx8IHYgPT09IHRoaXMucHJlZnMudGhlbWUoKSkgcmV0dXJuO1xuICAgIGNvbnN0IHRoZW1lID0gdiBhcyBQcmVmZXJlbmNlc1RoZW1lO1xuICAgIGF3YWl0IHRoaXMuZGlzcGF0Y2goXG4gICAgICAoKSA9PiB0aGlzLnByZWZzLnNldFRoZW1lKHRoZW1lKSxcbiAgICAgICgpID0+IHRoaXMucmVzb2x2ZWRDb25maWcoKS5vblRoZW1lQ2hhbmdlZD8uKHRoZW1lKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBvbkZvbnRTaXplQ2hhbmdlKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHYgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlWzBdIDogdmFsdWU7XG4gICAgY29uc3QgZm9udFNpemUgPSB2IGFzIFByZWZlcmVuY2VzRm9udFNpemU7XG4gICAgaWYgKHRoaXMuc2F2aW5nKCkgfHwgdiA9PT0gdGhpcy5wcmVmcy5mb250U2l6ZSgpKSByZXR1cm47XG4gICAgYXdhaXQgdGhpcy5kaXNwYXRjaChcbiAgICAgICgpID0+IHRoaXMucHJlZnMuc2V0Rm9udFNpemUoZm9udFNpemUpLFxuICAgICAgKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLm9uRm9udFNpemVDaGFuZ2VkPy4oZm9udFNpemUpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIG9uTGFuZ3VhZ2VDaGFuZ2UodmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGxhbmcgPSB2YWx1ZSBhcyBQcmVmZXJlbmNlc0xhbmd1YWdlO1xuICAgIGlmICghdGhpcy5yZXNvbHZlZENvbmZpZygpLnN1cHBvcnRlZExhbmd1YWdlcy5pbmNsdWRlcyhsYW5nKSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLnNhdmluZygpIHx8IHZhbHVlID09PSB0aGlzLnByZWZzLmxhbmd1YWdlKCkpIHJldHVybjtcbiAgICBhd2FpdCB0aGlzLmRpc3BhdGNoKFxuICAgICAgKCkgPT4gdGhpcy5wcmVmcy5zZXRMYW5ndWFnZShsYW5nKSxcbiAgICAgICgpID0+IHRoaXMucmVzb2x2ZWRDb25maWcoKS5vbkxhbmd1YWdlQ2hhbmdlZD8uKGxhbmcpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGlzcGF0Y2goZm46ICgpID0+IFByb21pc2U8dW5rbm93bj4sIG9uU3VjY2Vzcz86ICgpID0+IHZvaWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNhdmluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZuKCk7XG4gICAgICBvblN1Y2Nlc3M/LigpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnc2V0dGluZ3MucHJlZmVyZW5jZXMuc2F2ZScsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAnc2F2ZUVycm9yJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5ucyxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnNhdmluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBMZWUgZGVsIG5hbWVzcGFjZSBjb25maWd1cmFkby4gKi9cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIHRoaXMubnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBsYW5ndWFnZU5hbWUobGFuZzogUHJlZmVyZW5jZXNMYW5ndWFnZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChgbGFuZ3VhZ2VfJHtsYW5nfWApO1xuICB9XG59XG4iXX0=
|