valtech-components 4.0.79 → 4.0.82

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,29 +1,65 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { Component, EventEmitter, Input, Output, inject, signal } from '@angular/core';
3
3
  import { Validators } from '@angular/forms';
4
- import { IonButton, IonIcon } from '@ionic/angular/standalone';
5
- import { addIcons } from 'ionicons';
6
- import { checkmarkCircleOutline, closeCircleOutline } from 'ionicons/icons';
4
+ import { IonButton } from '@ionic/angular/standalone';
7
5
  import { FeedbackService, DEFAULT_FEEDBACK_TYPE_OPTIONS } from '../../../services/feedback';
8
6
  import { I18nService } from '../../../services/i18n';
7
+ import { ToastService } from '../../../services/toast.service';
8
+ import { ValtechErrorService } from '../../../services/errors';
9
9
  import { ComponentStates, InputType } from '../../types';
10
10
  import { FormComponent } from '../../organisms/form/form.component';
11
11
  import { AttachmentUploaderComponent } from '../../organisms/attachment-uploader/attachment-uploader.component';
12
+ import { DisplayComponent } from '../../atoms/display/display.component';
13
+ import { TitleComponent } from '../../atoms/title/title.component';
12
14
  import * as i0 from "@angular/core";
13
15
  import * as i1 from "@angular/common";
16
+ const FEEDBACK_FORM_I18N = {
17
+ es: {
18
+ formTitle: 'Enviar feedback',
19
+ formSubtitle: 'Cuéntanos qué piensas. Bugs, sugerencias y mejoras.',
20
+ feedbackType: 'Tipo',
21
+ title: 'Título',
22
+ titlePlaceholder: 'Resumen corto (5–120 caracteres)',
23
+ titleValidation: 'El título debe tener entre 5 y 120 caracteres',
24
+ description: 'Descripción',
25
+ descriptionPlaceholder: 'Describe el problema o sugerencia en detalle...',
26
+ descriptionHint: 'Capturamos automáticamente tu navegador, SO y URL actual.',
27
+ descriptionValidation: 'La descripción debe tener entre 10 y 2000 caracteres',
28
+ submit: 'Enviar',
29
+ feedbackSuccess: '¡Gracias por tu feedback!',
30
+ feedbackError: 'No se pudo enviar el feedback. Inténtalo de nuevo.',
31
+ },
32
+ en: {
33
+ formTitle: 'Send feedback',
34
+ formSubtitle: 'Tell us what you think. Bugs, suggestions and improvements.',
35
+ feedbackType: 'Type',
36
+ title: 'Title',
37
+ titlePlaceholder: 'Short summary (5–120 chars)',
38
+ titleValidation: 'Title must be between 5 and 120 characters',
39
+ description: 'Description',
40
+ descriptionPlaceholder: 'Describe the problem or suggestion in detail...',
41
+ descriptionHint: 'We automatically capture your browser, OS and current URL.',
42
+ descriptionValidation: 'Description must be between 10 and 2000 characters',
43
+ submit: 'Send',
44
+ feedbackSuccess: 'Thanks for your feedback!',
45
+ feedbackError: 'Could not send feedback. Please try again.',
46
+ },
47
+ };
14
48
  export class FeedbackFormComponent {
15
49
  constructor() {
16
50
  this.props = {};
17
51
  this.onSubmit = new EventEmitter();
18
52
  this.onCancel = new EventEmitter();
53
+ this.onError = new EventEmitter();
19
54
  this.i18n = inject(I18nService);
20
55
  this.feedbackService = inject(FeedbackService);
56
+ this.toast = inject(ToastService);
57
+ this.errors = inject(ValtechErrorService);
21
58
  this.typeOptions = DEFAULT_FEEDBACK_TYPE_OPTIONS;
22
59
  this.isSubmitting = signal(false);
23
- this.isSuccess = signal(false);
24
- this.error = signal(null);
60
+ this.uploadFn = (file) => this.feedbackService.uploadAttachment(file);
25
61
  this.currentAttachments = [];
26
- addIcons({ checkmarkCircleOutline, closeCircleOutline });
62
+ this.i18n.registerDefaults('FeedbackForm', FEEDBACK_FORM_I18N);
27
63
  }
28
64
  ngOnInit() {
29
65
  if (this.props.enabledTypes?.length) {
@@ -46,7 +82,7 @@ export class FeedbackFormComponent {
46
82
  fields.push({
47
83
  token: 'feedback-type',
48
84
  name: 'type',
49
- label: this.i18n.t('feedbackType'),
85
+ label: this.tt('feedbackType'),
50
86
  hint: '',
51
87
  placeholder: '',
52
88
  type: InputType.SELECT,
@@ -61,32 +97,32 @@ export class FeedbackFormComponent {
61
97
  fields.push({
62
98
  token: 'feedback-title',
63
99
  name: 'title',
64
- label: this.props.titleLabel ?? this.i18n.t('title'),
100
+ label: this.props.titleLabel ?? this.tt('title'),
65
101
  hint: '',
66
- placeholder: this.props.titlePlaceholder ?? this.i18n.t('titlePlaceholder'),
102
+ placeholder: this.props.titlePlaceholder ?? this.tt('titlePlaceholder'),
67
103
  type: InputType.TEXT,
68
104
  order: 2,
69
- validators: [Validators.required, Validators.minLength(5), Validators.maxLength(200)],
105
+ validators: [Validators.required, Validators.minLength(5), Validators.maxLength(120)],
70
106
  errors: {
71
- required: this.i18n.t('titleValidation'),
72
- minlength: this.i18n.t('titleValidation'),
73
- maxlength: this.i18n.t('titleValidation'),
107
+ required: this.tt('titleValidation'),
108
+ minlength: this.tt('titleValidation'),
109
+ maxlength: this.tt('titleValidation'),
74
110
  },
75
111
  state: ComponentStates.ENABLED,
76
112
  }, {
77
113
  token: 'feedback-description',
78
114
  name: 'description',
79
- label: this.props.descriptionLabel ?? this.i18n.t('description'),
80
- hint: '',
81
- placeholder: this.props.descriptionPlaceholder ?? this.i18n.t('descriptionPlaceholder'),
115
+ label: this.props.descriptionLabel ?? this.tt('description'),
116
+ hint: this.tt('descriptionHint'),
117
+ placeholder: this.props.descriptionPlaceholder ?? this.tt('descriptionPlaceholder'),
82
118
  type: InputType.TEXTAREA,
83
119
  order: 3,
84
120
  range: { min: 10, max: 2000 },
85
121
  validators: [Validators.required, Validators.minLength(10), Validators.maxLength(2000)],
86
122
  errors: {
87
- required: this.i18n.t('descriptionValidation'),
88
- minlength: this.i18n.t('descriptionValidation'),
89
- maxlength: this.i18n.t('descriptionValidation'),
123
+ required: this.tt('descriptionValidation'),
124
+ minlength: this.tt('descriptionValidation'),
125
+ maxlength: this.tt('descriptionValidation'),
90
126
  },
91
127
  state: ComponentStates.ENABLED,
92
128
  });
@@ -97,7 +133,7 @@ export class FeedbackFormComponent {
97
133
  type: 'submit',
98
134
  color: 'dark',
99
135
  shape: 'round',
100
- text: this.props.submitButtonText ?? this.i18n.t('submit'),
136
+ text: this.props.submitButtonText ?? this.tt('submit'),
101
137
  state: ComponentStates.ENABLED,
102
138
  expand: 'block',
103
139
  },
@@ -110,8 +146,6 @@ export class FeedbackFormComponent {
110
146
  if (this.currentAttachments.some(a => a.status === 'uploading'))
111
147
  return;
112
148
  this.isSubmitting.set(true);
113
- this.error.set(null);
114
- this.isSuccess.set(false);
115
149
  this.formProps.state = ComponentStates.WORKING;
116
150
  this.formProps.actions.state = ComponentStates.WORKING;
117
151
  try {
@@ -120,11 +154,21 @@ export class FeedbackFormComponent {
120
154
  const description = submitted.fields['description'];
121
155
  const attachmentUrls = this.currentAttachments.filter(a => a.status === 'ready').map(a => a.url);
122
156
  const response = await this.feedbackService.createAsync(type, title, description, attachmentUrls, this.props.contentRef);
123
- this.isSuccess.set(true);
157
+ this.toast.show({
158
+ message: this.props.successMessage ?? this.tt('feedbackSuccess'),
159
+ duration: 2500,
160
+ color: 'dark',
161
+ position: 'top',
162
+ });
124
163
  this.onSubmit.emit({ response, type, title, attachmentUrls });
125
164
  }
126
165
  catch (err) {
127
- this.error.set(err.error?.message || err.message || this.i18n.t('feedbackError'));
166
+ this.errors.handle(err, {
167
+ context: 'feedback-form.submit',
168
+ fallbackKey: 'feedbackError',
169
+ i18nNamespace: 'FeedbackForm',
170
+ });
171
+ this.onError.emit(err);
128
172
  }
129
173
  finally {
130
174
  this.isSubmitting.set(false);
@@ -138,36 +182,27 @@ export class FeedbackFormComponent {
138
182
  onCancelClick() {
139
183
  this.onCancel.emit();
140
184
  }
185
+ tt(key) {
186
+ return this.i18n.t(key, 'FeedbackForm');
187
+ }
141
188
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FeedbackFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FeedbackFormComponent, isStandalone: true, selector: "val-feedback-form", inputs: { props: "props" }, outputs: { onSubmit: "onSubmit", onCancel: "onCancel" }, ngImport: i0, template: `
189
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FeedbackFormComponent, isStandalone: true, selector: "val-feedback-form", inputs: { props: "props" }, outputs: { onSubmit: "onSubmit", onCancel: "onCancel", onError: "onError" }, ngImport: i0, template: `
143
190
  <div class="feedback-form-wrapper" [class.compact]="props.compact" [ngClass]="props.cssClass">
144
191
  @if (props.showTitle) {
145
192
  <div class="form-header">
146
- <h2 class="form-title">{{ props.pageTitle || i18n.t('formTitle') }}</h2>
147
- <p class="form-subtitle">{{ props.pageSubtitle || i18n.t('formSubtitle') }}</p>
193
+ <val-display [props]="{ size: 'small', color: 'dark', content: props.pageTitle || tt('formTitle') }" />
194
+ <val-title
195
+ [props]="{ size: 'large', color: 'dark', bold: false, content: props.pageSubtitle || tt('formSubtitle') }"
196
+ />
148
197
  </div>
149
198
  }
150
199
  <val-form [props]="formProps" (onSubmit)="handleFormSubmit($event)">
151
200
  @if (props.showAttachments !== false) {
152
201
  <val-attachment-uploader
153
- [props]="{ maxFiles: 5 }"
202
+ [props]="{ maxFiles: 5, uploadFn: uploadFn }"
154
203
  (attachmentsChange)="onAttachmentsChange($event)"
155
204
  ></val-attachment-uploader>
156
205
  }
157
-
158
- @if (error()) {
159
- <div class="feedback-alert error">
160
- <ion-icon name="close-circle-outline" aria-hidden="true"></ion-icon>
161
- <span>{{ error() }}</span>
162
- </div>
163
- }
164
-
165
- @if (isSuccess()) {
166
- <div class="feedback-alert success">
167
- <ion-icon name="checkmark-circle-outline" aria-hidden="true"></ion-icon>
168
- <span>{{ props.successMessage || i18n.t('feedbackSuccess') }}</span>
169
- </div>
170
- }
171
206
  </val-form>
172
207
 
173
208
  @if (props.cancelButtonText) {
@@ -176,39 +211,27 @@ export class FeedbackFormComponent {
176
211
  </ion-button>
177
212
  }
178
213
  </div>
179
- `, isInline: true, styles: [".feedback-form-wrapper{display:flex;flex-direction:column;gap:8px;&.compact{gap:4px}}.form-header{margin-bottom:8px}.form-title{font-size:1.5rem;font-weight:700;margin:0 0 4px;color:var(--ion-text-color)}.form-subtitle{font-size:1rem;font-weight:700;margin:0;color:var(--ion-text-color)}.feedback-alert{display:flex;align-items:center;gap:8px;padding:12px 16px;border-radius:8px;margin-top:8px;&.error{background-color:var(--ion-color-danger-tint);color:var(--ion-color-danger-shade)}&.success{background-color:var(--ion-color-success-tint);color:var(--ion-color-success-shade)}ion-icon{font-size:20px}}.cancel-button{margin-top:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: AttachmentUploaderComponent, selector: "val-attachment-uploader", inputs: ["props"], outputs: ["attachmentsChange"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
214
+ `, isInline: true, styles: [".feedback-form-wrapper{display:flex;flex-direction:column;gap:8px;&.compact{gap:4px}}.form-header{margin-bottom:8px}.cancel-button{margin-top:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: AttachmentUploaderComponent, selector: "val-attachment-uploader", inputs: ["props"], outputs: ["attachmentsChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }] }); }
180
215
  }
181
216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FeedbackFormComponent, decorators: [{
182
217
  type: Component,
183
- args: [{ selector: 'val-feedback-form', standalone: true, imports: [CommonModule, FormComponent, AttachmentUploaderComponent, IonButton, IonIcon], template: `
218
+ args: [{ selector: 'val-feedback-form', standalone: true, imports: [CommonModule, FormComponent, AttachmentUploaderComponent, DisplayComponent, TitleComponent, IonButton], template: `
184
219
  <div class="feedback-form-wrapper" [class.compact]="props.compact" [ngClass]="props.cssClass">
185
220
  @if (props.showTitle) {
186
221
  <div class="form-header">
187
- <h2 class="form-title">{{ props.pageTitle || i18n.t('formTitle') }}</h2>
188
- <p class="form-subtitle">{{ props.pageSubtitle || i18n.t('formSubtitle') }}</p>
222
+ <val-display [props]="{ size: 'small', color: 'dark', content: props.pageTitle || tt('formTitle') }" />
223
+ <val-title
224
+ [props]="{ size: 'large', color: 'dark', bold: false, content: props.pageSubtitle || tt('formSubtitle') }"
225
+ />
189
226
  </div>
190
227
  }
191
228
  <val-form [props]="formProps" (onSubmit)="handleFormSubmit($event)">
192
229
  @if (props.showAttachments !== false) {
193
230
  <val-attachment-uploader
194
- [props]="{ maxFiles: 5 }"
231
+ [props]="{ maxFiles: 5, uploadFn: uploadFn }"
195
232
  (attachmentsChange)="onAttachmentsChange($event)"
196
233
  ></val-attachment-uploader>
197
234
  }
198
-
199
- @if (error()) {
200
- <div class="feedback-alert error">
201
- <ion-icon name="close-circle-outline" aria-hidden="true"></ion-icon>
202
- <span>{{ error() }}</span>
203
- </div>
204
- }
205
-
206
- @if (isSuccess()) {
207
- <div class="feedback-alert success">
208
- <ion-icon name="checkmark-circle-outline" aria-hidden="true"></ion-icon>
209
- <span>{{ props.successMessage || i18n.t('feedbackSuccess') }}</span>
210
- </div>
211
- }
212
235
  </val-form>
213
236
 
214
237
  @if (props.cancelButtonText) {
@@ -217,12 +240,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
217
240
  </ion-button>
218
241
  }
219
242
  </div>
220
- `, styles: [".feedback-form-wrapper{display:flex;flex-direction:column;gap:8px;&.compact{gap:4px}}.form-header{margin-bottom:8px}.form-title{font-size:1.5rem;font-weight:700;margin:0 0 4px;color:var(--ion-text-color)}.form-subtitle{font-size:1rem;font-weight:700;margin:0;color:var(--ion-text-color)}.feedback-alert{display:flex;align-items:center;gap:8px;padding:12px 16px;border-radius:8px;margin-top:8px;&.error{background-color:var(--ion-color-danger-tint);color:var(--ion-color-danger-shade)}&.success{background-color:var(--ion-color-success-tint);color:var(--ion-color-success-shade)}ion-icon{font-size:20px}}.cancel-button{margin-top:8px}\n"] }]
243
+ `, styles: [".feedback-form-wrapper{display:flex;flex-direction:column;gap:8px;&.compact{gap:4px}}.form-header{margin-bottom:8px}.cancel-button{margin-top:8px}\n"] }]
221
244
  }], ctorParameters: () => [], propDecorators: { props: [{
222
245
  type: Input
223
246
  }], onSubmit: [{
224
247
  type: Output
225
248
  }], onCancel: [{
226
249
  type: Output
250
+ }], onError: [{
251
+ type: Output
227
252
  }] } });
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZGJhY2stZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2ZlZWRiYWNrLWZvcm0vZmVlZGJhY2stZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVFLE9BQU8sRUFBRSxlQUFlLEVBQWdCLDZCQUE2QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQXdELFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUVBQW1FLENBQUM7OztBQXlHaEgsTUFBTSxPQUFPLHFCQUFxQjtJQWtCaEM7UUFqQlMsVUFBSyxHQUF5QixFQUFFLENBQUM7UUFFaEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ25ELGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXBDLFNB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SUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUM7WUFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUM7UUFDekQsQ0FBQztJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUF1QjtRQUN6QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDOytHQXZKVSxxQkFBcUI7bUdBQXJCLHFCQUFxQixrS0FqR3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNULG9zQkF0Q1MsWUFBWSw2SEFBRSxhQUFhLDhIQUFFLDJCQUEyQix1SEFBRSxTQUFTLG9QQUFFLE9BQU87OzRGQWtHM0UscUJBQXFCO2tCQXJHakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSwyQkFBMkIsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFlBQzdFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNUO3dEQTZEUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGNoZWNrbWFya0NpcmNsZU91dGxpbmUsIGNsb3NlQ2lyY2xlT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgRmVlZGJhY2tTZXJ2aWNlLCBGZWVkYmFja1R5cGUsIERFRkFVTFRfRkVFREJBQ0tfVFlQRV9PUFRJT05TIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmVlZGJhY2snO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlcywgRm9ybU1ldGFkYXRhLCBGb3JtU3VibWl0LCBJbnB1dE1ldGFkYXRhLCBJbnB1dE9wdGlvbiwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9mb3JtL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEF0dGFjaG1lbnRVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9hdHRhY2htZW50LXVwbG9hZGVyL2F0dGFjaG1lbnQtdXBsb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEF0dGFjaG1lbnRJdGVtIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL2F0dGFjaG1lbnQtdXBsb2FkZXIvdHlwZXMnO1xuaW1wb3J0IHsgRmVlZGJhY2tGb3JtTWV0YWRhdGEsIEZlZWRiYWNrU3VibWl0RXZlbnQgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWZlZWRiYWNrLWZvcm0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3JtQ29tcG9uZW50LCBBdHRhY2htZW50VXBsb2FkZXJDb21wb25lbnQsIElvbkJ1dHRvbiwgSW9uSWNvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImZlZWRiYWNrLWZvcm0td3JhcHBlclwiIFtjbGFzcy5jb21wYWN0XT1cInByb3BzLmNvbXBhY3RcIiBbbmdDbGFzc109XCJwcm9wcy5jc3NDbGFzc1wiPlxuICAgICAgQGlmIChwcm9wcy5zaG93VGl0bGUpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0taGVhZGVyXCI+XG4gICAgICAgICAgPGgyIGNsYXNzPVwiZm9ybS10aXRsZVwiPnt7IHByb3BzLnBhZ2VUaXRsZSB8fCBpMThuLnQoJ2Zvcm1UaXRsZScpIH19PC9oMj5cbiAgICAgICAgICA8cCBjbGFzcz1cImZvcm0tc3VidGl0bGVcIj57eyBwcm9wcy5wYWdlU3VidGl0bGUgfHwgaTE4bi50KCdmb3JtU3VidGl0bGUnKSB9fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cImZvcm1Qcm9wc1wiIChvblN1Ym1pdCk9XCJoYW5kbGVGb3JtU3VibWl0KCRldmVudClcIj5cbiAgICAgICAgQGlmIChwcm9wcy5zaG93QXR0YWNobWVudHMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgPHZhbC1hdHRhY2htZW50LXVwbG9hZGVyXG4gICAgICAgICAgICBbcHJvcHNdPVwieyBtYXhGaWxlczogNSB9XCJcbiAgICAgICAgICAgIChhdHRhY2htZW50c0NoYW5nZSk9XCJvbkF0dGFjaG1lbnRzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgID48L3ZhbC1hdHRhY2htZW50LXVwbG9hZGVyPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChlcnJvcigpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZlZWRiYWNrLWFsZXJ0IGVycm9yXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLWNpcmNsZS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDxzcGFuPnt7IGVycm9yKCkgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKGlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZlZWRiYWNrLWFsZXJ0IHN1Y2Nlc3NcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrLWNpcmNsZS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDxzcGFuPnt7IHByb3BzLnN1Y2Nlc3NNZXNzYWdlIHx8IGkxOG4udCgnZmVlZGJhY2tTdWNjZXNzJykgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvdmFsLWZvcm0+XG5cbiAgICAgIEBpZiAocHJvcHMuY2FuY2VsQnV0dG9uVGV4dCkge1xuICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiIGNvbG9yPVwibWVkaXVtXCIgZXhwYW5kPVwiYmxvY2tcIiBjbGFzcz1cImNhbmNlbC1idXR0b25cIiAoY2xpY2spPVwib25DYW5jZWxDbGljaygpXCI+XG4gICAgICAgICAge3sgcHJvcHMuY2FuY2VsQnV0dG9uVGV4dCB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5mZWVkYmFjay1mb3JtLXdyYXBwZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcblxuICAgICAgICAmLmNvbXBhY3Qge1xuICAgICAgICAgIGdhcDogNHB4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5mb3JtLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgIH1cblxuICAgICAgLmZvcm0tdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgbWFyZ2luOiAwIDAgNHB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IpO1xuICAgICAgfVxuXG4gICAgICAuZm9ybS1zdWJ0aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IpO1xuICAgICAgfVxuXG4gICAgICAuZmVlZGJhY2stYWxlcnQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDhweDtcblxuICAgICAgICAmLmVycm9yIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXRpbnQpO1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXNoYWRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuc3VjY2VzcyB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtdGludCk7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXNoYWRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlvbi1pY29uIHtcbiAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNhbmNlbC1idXR0b24ge1xuICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmVlZGJhY2tGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcHJvcHM6IEZlZWRiYWNrRm9ybU1ldGFkYXRhID0ge307XG5cbiAgQE91dHB1dCgpIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxGZWVkYmFja1N1Ym1pdEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJvdGVjdGVkIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIGZlZWRiYWNrU2VydmljZSA9IGluamVjdChGZWVkYmFja1NlcnZpY2UpO1xuXG4gIGZvcm1Qcm9wcyE6IEZvcm1NZXRhZGF0YTtcbiAgdHlwZU9wdGlvbnMgPSBERUZBVUxUX0ZFRURCQUNLX1RZUEVfT1BUSU9OUztcblxuICBpc1N1Ym1pdHRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBpc1N1Y2Nlc3MgPSBzaWduYWwoZmFsc2UpO1xuICBlcnJvciA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIGN1cnJlbnRBdHRhY2htZW50czogQXR0YWNobWVudEl0ZW1bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFkZEljb25zKHsgY2hlY2ttYXJrQ2lyY2xlT3V0bGluZSwgY2xvc2VDaXJjbGVPdXRsaW5lIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMuZW5hYmxlZFR5cGVzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudHlwZU9wdGlvbnMgPSB0aGlzLnR5cGVPcHRpb25zLmZpbHRlcihvcHQgPT4gdGhpcy5wcm9wcy5lbmFibGVkVHlwZXMhLmluY2x1ZGVzKG9wdC52YWx1ZSkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy50eXBlT3B0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnR5cGVPcHRpb25zID0gdGhpcy5wcm9wcy50eXBlT3B0aW9ucztcbiAgICB9XG4gICAgdGhpcy5mb3JtUHJvcHMgPSB0aGlzLmJ1aWxkRm9ybVByb3BzKCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRm9ybVByb3BzKCk6IEZvcm1NZXRhZGF0YSB7XG4gICAgY29uc3QgZmllbGRzOiBJbnB1dE1ldGFkYXRhW10gPSBbXTtcblxuICAgIGlmICh0aGlzLnByb3BzLnNob3dUeXBlU2VsZWN0b3IgIT09IGZhbHNlKSB7XG4gICAgICBjb25zdCBvcHRpb25zOiBJbnB1dE9wdGlvbltdID0gdGhpcy50eXBlT3B0aW9ucy5tYXAoKG9wdCwgaSkgPT4gKHtcbiAgICAgICAgaWQ6IG9wdC52YWx1ZSxcbiAgICAgICAgbmFtZTogb3B0LmxhYmVsLFxuICAgICAgICBvcmRlcjogaSxcbiAgICAgICAgc2VsZWN0ZWQ6IG9wdC52YWx1ZSA9PT0gKHRoaXMucHJvcHMuZGVmYXVsdFR5cGUgPz8gJ2ZlZWRiYWNrJyksXG4gICAgICB9KSk7XG4gICAgICBmaWVsZHMucHVzaCh7XG4gICAgICAgIHRva2VuOiAnZmVlZGJhY2stdHlwZScsXG4gICAgICAgIG5hbWU6ICd0eXBlJyxcbiAgICAgICAgbGFiZWw6IHRoaXMuaTE4bi50KCdmZWVkYmFja1R5cGUnKSxcbiAgICAgICAgaGludDogJycsXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICAgICAgdHlwZTogSW5wdXRUeXBlLlNFTEVDVCxcbiAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgdmFsdWU6IHRoaXMucHJvcHMuZGVmYXVsdFR5cGUgPz8gJ2ZlZWRiYWNrJyxcbiAgICAgICAgZXJyb3JzOiB7fSxcbiAgICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZmllbGRzLnB1c2goXG4gICAgICB7XG4gICAgICAgIHRva2VuOiAnZmVlZGJhY2stdGl0bGUnLFxuICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICBsYWJlbDogdGhpcy5wcm9wcy50aXRsZUxhYmVsID8/IHRoaXMuaTE4bi50KCd0aXRsZScpLFxuICAgICAgICBoaW50OiAnJyxcbiAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMucHJvcHMudGl0bGVQbGFjZWhvbGRlciA/PyB0aGlzLmkxOG4udCgndGl0bGVQbGFjZWhvbGRlcicpLFxuICAgICAgICB0eXBlOiBJbnB1dFR5cGUuVEVYVCxcbiAgICAgICAgb3JkZXI6IDIsXG4gICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjAwKV0sXG4gICAgICAgIGVycm9yczoge1xuICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLmkxOG4udCgndGl0bGVWYWxpZGF0aW9uJyksXG4gICAgICAgICAgbWlubGVuZ3RoOiB0aGlzLmkxOG4udCgndGl0bGVWYWxpZGF0aW9uJyksXG4gICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLmkxOG4udCgndGl0bGVWYWxpZGF0aW9uJyksXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRva2VuOiAnZmVlZGJhY2stZGVzY3JpcHRpb24nLFxuICAgICAgICBuYW1lOiAnZGVzY3JpcHRpb24nLFxuICAgICAgICBsYWJlbDogdGhpcy5wcm9wcy5kZXNjcmlwdGlvbkxhYmVsID8/IHRoaXMuaTE4bi50KCdkZXNjcmlwdGlvbicpLFxuICAgICAgICBoaW50OiAnJyxcbiAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMucHJvcHMuZGVzY3JpcHRpb25QbGFjZWhvbGRlciA/PyB0aGlzLmkxOG4udCgnZGVzY3JpcHRpb25QbGFjZWhvbGRlcicpLFxuICAgICAgICB0eXBlOiBJbnB1dFR5cGUuVEVYVEFSRUEsXG4gICAgICAgIG9yZGVyOiAzLFxuICAgICAgICByYW5nZTogeyBtaW46IDEwLCBtYXg6IDIwMDAgfSxcbiAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjAwMCldLFxuICAgICAgICBlcnJvcnM6IHtcbiAgICAgICAgICByZXF1aXJlZDogdGhpcy5pMThuLnQoJ2Rlc2NyaXB0aW9uVmFsaWRhdGlvbicpLFxuICAgICAgICAgIG1pbmxlbmd0aDogdGhpcy5pMThuLnQoJ2Rlc2NyaXB0aW9uVmFsaWRhdGlvbicpLFxuICAgICAgICAgIG1heGxlbmd0aDogdGhpcy5pMThuLnQoJ2Rlc2NyaXB0aW9uVmFsaWRhdGlvbicpLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnJyxcbiAgICAgIHNlY3Rpb25zOiBbeyBuYW1lOiAnJywgb3JkZXI6IDAsIGZpZWxkcyB9XSxcbiAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgdHlwZTogJ3N1Ym1pdCcsXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICB0ZXh0OiB0aGlzLnByb3BzLnN1Ym1pdEJ1dHRvblRleHQgPz8gdGhpcy5pMThuLnQoJ3N1Ym1pdCcpLFxuICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgIGV4cGFuZDogJ2Jsb2NrJyxcbiAgICAgIH0sXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZUZvcm1TdWJtaXQoc3VibWl0dGVkOiBGb3JtU3VibWl0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNTdWJtaXR0aW5nKCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5jdXJyZW50QXR0YWNobWVudHMuc29tZShhID0+IGEuc3RhdHVzID09PSAndXBsb2FkaW5nJykpIHJldHVybjtcblxuICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmVycm9yLnNldChudWxsKTtcbiAgICB0aGlzLmlzU3VjY2Vzcy5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZm9ybVByb3BzLnN0YXRlID0gQ29tcG9uZW50U3RhdGVzLldPUktJTkc7XG4gICAgdGhpcy5mb3JtUHJvcHMuYWN0aW9ucy5zdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHR5cGUgPSAoc3VibWl0dGVkLmZpZWxkc1sndHlwZSddIGFzIEZlZWRiYWNrVHlwZSkgPz8gdGhpcy5wcm9wcy5kZWZhdWx0VHlwZSA/PyAnZmVlZGJhY2snO1xuICAgICAgY29uc3QgdGl0bGUgPSBzdWJtaXR0ZWQuZmllbGRzWyd0aXRsZSddIGFzIHN0cmluZztcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gc3VibWl0dGVkLmZpZWxkc1snZGVzY3JpcHRpb24nXSBhcyBzdHJpbmc7XG4gICAgICBjb25zdCBhdHRhY2htZW50VXJscyA9IHRoaXMuY3VycmVudEF0dGFjaG1lbnRzLmZpbHRlcihhID0+IGEuc3RhdHVzID09PSAncmVhZHknKS5tYXAoYSA9PiBhLnVybCEpO1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmVlZGJhY2tTZXJ2aWNlLmNyZWF0ZUFzeW5jKFxuICAgICAgICB0eXBlLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgIGF0dGFjaG1lbnRVcmxzLFxuICAgICAgICB0aGlzLnByb3BzLmNvbnRlbnRSZWZcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuaXNTdWNjZXNzLnNldCh0cnVlKTtcblxuICAgICAgdGhpcy5vblN1Ym1pdC5lbWl0KHsgcmVzcG9uc2UsIHR5cGUsIHRpdGxlLCBhdHRhY2htZW50VXJscyB9KTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgdGhpcy5lcnJvci5zZXQoZXJyLmVycm9yPy5tZXNzYWdlIHx8IGVyci5tZXNzYWdlIHx8IHRoaXMuaTE4bi50KCdmZWVkYmFja0Vycm9yJykpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzU3VibWl0dGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5mb3JtUHJvcHMuc3RhdGUgPSBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRDtcbiAgICAgIHRoaXMuZm9ybVByb3BzLmFjdGlvbnMuc3RhdGUgPSBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRDtcbiAgICB9XG4gIH1cblxuICBvbkF0dGFjaG1lbnRzQ2hhbmdlKGl0ZW1zOiBBdHRhY2htZW50SXRlbVtdKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50QXR0YWNobWVudHMgPSBpdGVtcztcbiAgfVxuXG4gIG9uQ2FuY2VsQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XG4gIH1cbn1cbiJdfQ==
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZGJhY2stZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2ZlZWRiYWNrLWZvcm0vZmVlZGJhY2stZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQWdCLDZCQUE2QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUF3RCxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBRWhILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7O0FBR25FLE1BQU0sa0JBQWtCLEdBQUc7SUFDekIsRUFBRSxFQUFFO1FBQ0YsU0FBUyxFQUFFLGlCQUFpQjtRQUM1QixZQUFZ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Z3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uQnV0dG9uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5cbmltcG9ydCB7IEZlZWRiYWNrU2VydmljZSwgRmVlZGJhY2tUeXBlLCBERUZBVUxUX0ZFRURCQUNLX1RZUEVfT1BUSU9OUyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZlZWRiYWNrJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbHRlY2hFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGVzLCBGb3JtTWV0YWRhdGEsIEZvcm1TdWJtaXQsIElucHV0TWV0YWRhdGEsIElucHV0T3B0aW9uLCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXR0YWNobWVudFVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL2F0dGFjaG1lbnQtdXBsb2FkZXIvYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXR0YWNobWVudEl0ZW0gfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvYXR0YWNobWVudC11cGxvYWRlci90eXBlcyc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGZWVkYmFja0Zvcm1NZXRhZGF0YSwgRmVlZGJhY2tTdWJtaXRFdmVudCB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGRUVEQkFDS19GT1JNX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgZm9ybVRpdGxlOiAnRW52aWFyIGZlZWRiYWNrJyxcbiAgICBmb3JtU3VidGl0bGU6ICdDdcOpbnRhbm9zIHF1w6kgcGllbnNhcy4gQnVncywgc3VnZXJlbmNpYXMgeSBtZWpvcmFzLicsXG4gICAgZmVlZGJhY2tUeXBlOiAnVGlwbycsXG4gICAgdGl0bGU6ICdUw610dWxvJyxcbiAgICB0aXRsZVBsYWNlaG9sZGVyOiAnUmVzdW1lbiBjb3J0byAoNeKAkzEyMCBjYXJhY3RlcmVzKScsXG4gICAgdGl0bGVWYWxpZGF0aW9uOiAnRWwgdMOtdHVsbyBkZWJlIHRlbmVyIGVudHJlIDUgeSAxMjAgY2FyYWN0ZXJlcycsXG4gICAgZGVzY3JpcHRpb246ICdEZXNjcmlwY2nDs24nLFxuICAgIGRlc2NyaXB0aW9uUGxhY2Vob2xkZXI6ICdEZXNjcmliZSBlbCBwcm9ibGVtYSBvIHN1Z2VyZW5jaWEgZW4gZGV0YWxsZS4uLicsXG4gICAgZGVzY3JpcHRpb25IaW50OiAnQ2FwdHVyYW1vcyBhdXRvbcOhdGljYW1lbnRlIHR1IG5hdmVnYWRvciwgU08geSBVUkwgYWN0dWFsLicsXG4gICAgZGVzY3JpcHRpb25WYWxpZGF0aW9uOiAnTGEgZGVzY3JpcGNpw7NuIGRlYmUgdGVuZXIgZW50cmUgMTAgeSAyMDAwIGNhcmFjdGVyZXMnLFxuICAgIHN1Ym1pdDogJ0VudmlhcicsXG4gICAgZmVlZGJhY2tTdWNjZXNzOiAnwqFHcmFjaWFzIHBvciB0dSBmZWVkYmFjayEnLFxuICAgIGZlZWRiYWNrRXJyb3I6ICdObyBzZSBwdWRvIGVudmlhciBlbCBmZWVkYmFjay4gSW50w6ludGFsbyBkZSBudWV2by4nLFxuICB9LFxuICBlbjoge1xuICAgIGZvcm1UaXRsZTogJ1NlbmQgZmVlZGJhY2snLFxuICAgIGZvcm1TdWJ0aXRsZTogJ1RlbGwgdXMgd2hhdCB5b3UgdGhpbmsuIEJ1Z3MsIHN1Z2dlc3Rpb25zIGFuZCBpbXByb3ZlbWVudHMuJyxcbiAgICBmZWVkYmFja1R5cGU6ICdUeXBlJyxcbiAgICB0aXRsZTogJ1RpdGxlJyxcbiAgICB0aXRsZVBsYWNlaG9sZGVyOiAnU2hvcnQgc3VtbWFyeSAoNeKAkzEyMCBjaGFycyknLFxuICAgIHRpdGxlVmFsaWRhdGlvbjogJ1RpdGxlIG11c3QgYmUgYmV0d2VlbiA1IGFuZCAxMjAgY2hhcmFjdGVycycsXG4gICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbicsXG4gICAgZGVzY3JpcHRpb25QbGFjZWhvbGRlcjogJ0Rlc2NyaWJlIHRoZSBwcm9ibGVtIG9yIHN1Z2dlc3Rpb24gaW4gZGV0YWlsLi4uJyxcbiAgICBkZXNjcmlwdGlvbkhpbnQ6ICdXZSBhdXRvbWF0aWNhbGx5IGNhcHR1cmUgeW91ciBicm93c2VyLCBPUyBhbmQgY3VycmVudCBVUkwuJyxcbiAgICBkZXNjcmlwdGlvblZhbGlkYXRpb246ICdEZXNjcmlwdGlvbiBtdXN0IGJlIGJldHdlZW4gMTAgYW5kIDIwMDAgY2hhcmFjdGVycycsXG4gICAgc3VibWl0OiAnU2VuZCcsXG4gICAgZmVlZGJhY2tTdWNjZXNzOiAnVGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrIScsXG4gICAgZmVlZGJhY2tFcnJvcjogJ0NvdWxkIG5vdCBzZW5kIGZlZWRiYWNrLiBQbGVhc2UgdHJ5IGFnYWluLicsXG4gIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZmVlZGJhY2stZm9ybScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1Db21wb25lbnQsIEF0dGFjaG1lbnRVcGxvYWRlckNvbXBvbmVudCwgRGlzcGxheUNvbXBvbmVudCwgVGl0bGVDb21wb25lbnQsIElvbkJ1dHRvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImZlZWRiYWNrLWZvcm0td3JhcHBlclwiIFtjbGFzcy5jb21wYWN0XT1cInByb3BzLmNvbXBhY3RcIiBbbmdDbGFzc109XCJwcm9wcy5jc3NDbGFzc1wiPlxuICAgICAgQGlmIChwcm9wcy5zaG93VGl0bGUpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0taGVhZGVyXCI+XG4gICAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGNvbnRlbnQ6IHByb3BzLnBhZ2VUaXRsZSB8fCB0dCgnZm9ybVRpdGxlJykgfVwiIC8+XG4gICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgW3Byb3BzXT1cInsgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICdkYXJrJywgYm9sZDogZmFsc2UsIGNvbnRlbnQ6IHByb3BzLnBhZ2VTdWJ0aXRsZSB8fCB0dCgnZm9ybVN1YnRpdGxlJykgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cImZvcm1Qcm9wc1wiIChvblN1Ym1pdCk9XCJoYW5kbGVGb3JtU3VibWl0KCRldmVudClcIj5cbiAgICAgICAgQGlmIChwcm9wcy5zaG93QXR0YWNobWVudHMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgPHZhbC1hdHRhY2htZW50LXVwbG9hZGVyXG4gICAgICAgICAgICBbcHJvcHNdPVwieyBtYXhGaWxlczogNSwgdXBsb2FkRm46IHVwbG9hZEZuIH1cIlxuICAgICAgICAgICAgKGF0dGFjaG1lbnRzQ2hhbmdlKT1cIm9uQXR0YWNobWVudHNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvdmFsLWF0dGFjaG1lbnQtdXBsb2FkZXI+XG4gICAgICAgIH1cbiAgICAgIDwvdmFsLWZvcm0+XG5cbiAgICAgIEBpZiAocHJvcHMuY2FuY2VsQnV0dG9uVGV4dCkge1xuICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiIGNvbG9yPVwibWVkaXVtXCIgZXhwYW5kPVwiYmxvY2tcIiBjbGFzcz1cImNhbmNlbC1idXR0b25cIiAoY2xpY2spPVwib25DYW5jZWxDbGljaygpXCI+XG4gICAgICAgICAge3sgcHJvcHMuY2FuY2VsQnV0dG9uVGV4dCB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5mZWVkYmFjay1mb3JtLXdyYXBwZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcblxuICAgICAgICAmLmNvbXBhY3Qge1xuICAgICAgICAgIGdhcDogNHB4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5mb3JtLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgIH1cblxuICAgICAgLmNhbmNlbC1idXR0b24ge1xuICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmVlZGJhY2tGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcHJvcHM6IEZlZWRiYWNrRm9ybU1ldGFkYXRhID0ge307XG5cbiAgQE91dHB1dCgpIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxGZWVkYmFja1N1Ym1pdEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBvbkVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xuXG4gIHByb3RlY3RlZCBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmZWVkYmFja1NlcnZpY2UgPSBpbmplY3QoRmVlZGJhY2tTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcblxuICBmb3JtUHJvcHMhOiBGb3JtTWV0YWRhdGE7XG4gIHR5cGVPcHRpb25zID0gREVGQVVMVF9GRUVEQkFDS19UWVBFX09QVElPTlM7XG5cbiAgaXNTdWJtaXR0aW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSB1cGxvYWRGbiA9IChmaWxlOiBGaWxlKSA9PiB0aGlzLmZlZWRiYWNrU2VydmljZS51cGxvYWRBdHRhY2htZW50KGZpbGUpO1xuXG4gIHByaXZhdGUgY3VycmVudEF0dGFjaG1lbnRzOiBBdHRhY2htZW50SXRlbVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ0ZlZWRiYWNrRm9ybScsIEZFRURCQUNLX0ZPUk1fSTE4Tik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5lbmFibGVkVHlwZXM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy50eXBlT3B0aW9ucyA9IHRoaXMudHlwZU9wdGlvbnMuZmlsdGVyKG9wdCA9PiB0aGlzLnByb3BzLmVuYWJsZWRUeXBlcyEuaW5jbHVkZXMob3B0LnZhbHVlKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLnR5cGVPcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudHlwZU9wdGlvbnMgPSB0aGlzLnByb3BzLnR5cGVPcHRpb25zO1xuICAgIH1cbiAgICB0aGlzLmZvcm1Qcm9wcyA9IHRoaXMuYnVpbGRGb3JtUHJvcHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGb3JtUHJvcHMoKTogRm9ybU1ldGFkYXRhIHtcbiAgICBjb25zdCBmaWVsZHM6IElucHV0TWV0YWRhdGFbXSA9IFtdO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd1R5cGVTZWxlY3RvciAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnM6IElucHV0T3B0aW9uW10gPSB0aGlzLnR5cGVPcHRpb25zLm1hcCgob3B0LCBpKSA9PiAoe1xuICAgICAgICBpZDogb3B0LnZhbHVlLFxuICAgICAgICBuYW1lOiBvcHQubGFiZWwsXG4gICAgICAgIG9yZGVyOiBpLFxuICAgICAgICBzZWxlY3RlZDogb3B0LnZhbHVlID09PSAodGhpcy5wcm9wcy5kZWZhdWx0VHlwZSA/PyAnZmVlZGJhY2snKSxcbiAgICAgIH0pKTtcbiAgICAgIGZpZWxkcy5wdXNoKHtcbiAgICAgICAgdG9rZW46ICdmZWVkYmFjay10eXBlJyxcbiAgICAgICAgbmFtZTogJ3R5cGUnLFxuICAgICAgICBsYWJlbDogdGhpcy50dCgnZmVlZGJhY2tUeXBlJyksXG4gICAgICAgIGhpbnQ6ICcnLFxuICAgICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgICAgIHR5cGU6IElucHV0VHlwZS5TRUxFQ1QsXG4gICAgICAgIG9yZGVyOiAxLFxuICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIHZhbHVlOiB0aGlzLnByb3BzLmRlZmF1bHRUeXBlID8/ICdmZWVkYmFjaycsXG4gICAgICAgIGVycm9yczoge30sXG4gICAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZpZWxkcy5wdXNoKFxuICAgICAge1xuICAgICAgICB0b2tlbjogJ2ZlZWRiYWNrLXRpdGxlJyxcbiAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgbGFiZWw6IHRoaXMucHJvcHMudGl0bGVMYWJlbCA/PyB0aGlzLnR0KCd0aXRsZScpLFxuICAgICAgICBoaW50OiAnJyxcbiAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMucHJvcHMudGl0bGVQbGFjZWhvbGRlciA/PyB0aGlzLnR0KCd0aXRsZVBsYWNlaG9sZGVyJyksXG4gICAgICAgIHR5cGU6IElucHV0VHlwZS5URVhULFxuICAgICAgICBvcmRlcjogMixcbiAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMjApXSxcbiAgICAgICAgZXJyb3JzOiB7XG4gICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudHQoJ3RpdGxlVmFsaWRhdGlvbicpLFxuICAgICAgICAgIG1pbmxlbmd0aDogdGhpcy50dCgndGl0bGVWYWxpZGF0aW9uJyksXG4gICAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnR0KCd0aXRsZVZhbGlkYXRpb24nKSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdG9rZW46ICdmZWVkYmFjay1kZXNjcmlwdGlvbicsXG4gICAgICAgIG5hbWU6ICdkZXNjcmlwdGlvbicsXG4gICAgICAgIGxhYmVsOiB0aGlzLnByb3BzLmRlc2NyaXB0aW9uTGFiZWwgPz8gdGhpcy50dCgnZGVzY3JpcHRpb24nKSxcbiAgICAgICAgaGludDogdGhpcy50dCgnZGVzY3JpcHRpb25IaW50JyksXG4gICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnByb3BzLmRlc2NyaXB0aW9uUGxhY2Vob2xkZXIgPz8gdGhpcy50dCgnZGVzY3JpcHRpb25QbGFjZWhvbGRlcicpLFxuICAgICAgICB0eXBlOiBJbnB1dFR5cGUuVEVYVEFSRUEsXG4gICAgICAgIG9yZGVyOiAzLFxuICAgICAgICByYW5nZTogeyBtaW46IDEwLCBtYXg6IDIwMDAgfSxcbiAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjAwMCldLFxuICAgICAgICBlcnJvcnM6IHtcbiAgICAgICAgICByZXF1aXJlZDogdGhpcy50dCgnZGVzY3JpcHRpb25WYWxpZGF0aW9uJyksXG4gICAgICAgICAgbWlubGVuZ3RoOiB0aGlzLnR0KCdkZXNjcmlwdGlvblZhbGlkYXRpb24nKSxcbiAgICAgICAgICBtYXhsZW5ndGg6IHRoaXMudHQoJ2Rlc2NyaXB0aW9uVmFsaWRhdGlvbicpLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnJyxcbiAgICAgIHNlY3Rpb25zOiBbeyBuYW1lOiAnJywgb3JkZXI6IDAsIGZpZWxkcyB9XSxcbiAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgdHlwZTogJ3N1Ym1pdCcsXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICB0ZXh0OiB0aGlzLnByb3BzLnN1Ym1pdEJ1dHRvblRleHQgPz8gdGhpcy50dCgnc3VibWl0JyksXG4gICAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgICAgZXhwYW5kOiAnYmxvY2snLFxuICAgICAgfSxcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlRm9ybVN1Ym1pdChzdWJtaXR0ZWQ6IEZvcm1TdWJtaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc1N1Ym1pdHRpbmcoKSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmN1cnJlbnRBdHRhY2htZW50cy5zb21lKGEgPT4gYS5zdGF0dXMgPT09ICd1cGxvYWRpbmcnKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuZm9ybVByb3BzLnN0YXRlID0gQ29tcG9uZW50U3RhdGVzLldPUktJTkc7XG4gICAgdGhpcy5mb3JtUHJvcHMuYWN0aW9ucy5zdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHR5cGUgPSAoc3VibWl0dGVkLmZpZWxkc1sndHlwZSddIGFzIEZlZWRiYWNrVHlwZSkgPz8gdGhpcy5wcm9wcy5kZWZhdWx0VHlwZSA/PyAnZmVlZGJhY2snO1xuICAgICAgY29uc3QgdGl0bGUgPSBzdWJtaXR0ZWQuZmllbGRzWyd0aXRsZSddIGFzIHN0cmluZztcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gc3VibWl0dGVkLmZpZWxkc1snZGVzY3JpcHRpb24nXSBhcyBzdHJpbmc7XG4gICAgICBjb25zdCBhdHRhY2htZW50VXJscyA9IHRoaXMuY3VycmVudEF0dGFjaG1lbnRzLmZpbHRlcihhID0+IGEuc3RhdHVzID09PSAncmVhZHknKS5tYXAoYSA9PiBhLnVybCEpO1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmVlZGJhY2tTZXJ2aWNlLmNyZWF0ZUFzeW5jKFxuICAgICAgICB0eXBlLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgIGF0dGFjaG1lbnRVcmxzLFxuICAgICAgICB0aGlzLnByb3BzLmNvbnRlbnRSZWZcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMucHJvcHMuc3VjY2Vzc01lc3NhZ2UgPz8gdGhpcy50dCgnZmVlZGJhY2tTdWNjZXNzJyksXG4gICAgICAgIGR1cmF0aW9uOiAyNTAwLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5vblN1Ym1pdC5lbWl0KHsgcmVzcG9uc2UsIHR5cGUsIHRpdGxlLCBhdHRhY2htZW50VXJscyB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ2ZlZWRiYWNrLWZvcm0uc3VibWl0JyxcbiAgICAgICAgZmFsbGJhY2tLZXk6ICdmZWVkYmFja0Vycm9yJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogJ0ZlZWRiYWNrRm9ybScsXG4gICAgICB9KTtcbiAgICAgIHRoaXMub25FcnJvci5lbWl0KGVycik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmZvcm1Qcm9wcy5zdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5FTkFCTEVEO1xuICAgICAgdGhpcy5mb3JtUHJvcHMuYWN0aW9ucy5zdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5FTkFCTEVEO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNobWVudHNDaGFuZ2UoaXRlbXM6IEF0dGFjaG1lbnRJdGVtW10pOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRBdHRhY2htZW50cyA9IGl0ZW1zO1xuICB9XG5cbiAgb25DYW5jZWxDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIHR0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnRmVlZGJhY2tGb3JtJyk7XG4gIH1cbn1cbiJdfQ==
@@ -72,7 +72,7 @@ export class CompanyFooterComponent {
72
72
  </ion-row>
73
73
  </ion-grid>
74
74
  </footer>
75
- `, isInline: true, styles: [":host{display:block}.withPadding{padding:16px}.withBackground{background-color:#ece5f6}:host-context(body.dark) .withBackground,:host-context(html.ion-palette-dark) .withBackground,:host-context([data-theme=\"dark\"]) .withBackground{background-color:#0e0420}.withRoundedTop{border-radius:var(--val-footer-top-radius, 24px) var(--val-footer-top-radius, 24px) 0 0;overflow:hidden}.borderless{border-top:none!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: RightsFooterComponent, selector: "val-rights-footer", inputs: ["props"] }, { kind: "component", type: FooterLinksComponent, selector: "val-footer-links", inputs: ["props"], outputs: ["logoClick"] }] }); }
75
+ `, isInline: true, styles: [":host{display:block}.withPadding{padding:16px}.withBackground{background-color:#f5f0fb}:host-context(body.dark) .withBackground,:host-context(html.ion-palette-dark) .withBackground,:host-context([data-theme=\"dark\"]) .withBackground{background-color:#0e0420}.withRoundedTop{border-radius:var(--val-footer-top-radius, 24px) var(--val-footer-top-radius, 24px) 0 0;overflow:hidden}.borderless{border-top:none!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: RightsFooterComponent, selector: "val-rights-footer", inputs: ["props"] }, { kind: "component", type: FooterLinksComponent, selector: "val-footer-links", inputs: ["props"], outputs: ["logoClick"] }] }); }
76
76
  }
77
77
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyFooterComponent, decorators: [{
78
78
  type: Component,
@@ -94,6 +94,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
94
94
  </ion-row>
95
95
  </ion-grid>
96
96
  </footer>
97
- `, styles: [":host{display:block}.withPadding{padding:16px}.withBackground{background-color:#ece5f6}:host-context(body.dark) .withBackground,:host-context(html.ion-palette-dark) .withBackground,:host-context([data-theme=\"dark\"]) .withBackground{background-color:#0e0420}.withRoundedTop{border-radius:var(--val-footer-top-radius, 24px) var(--val-footer-top-radius, 24px) 0 0;overflow:hidden}.borderless{border-top:none!important}\n"] }]
97
+ `, styles: [":host{display:block}.withPadding{padding:16px}.withBackground{background-color:#f5f0fb}:host-context(body.dark) .withBackground,:host-context(html.ion-palette-dark) .withBackground,:host-context([data-theme=\"dark\"]) .withBackground{background-color:#0e0420}.withRoundedTop{border-radius:var(--val-footer-top-radius, 24px) var(--val-footer-top-radius, 24px) 0 0;overflow:hidden}.borderless{border-top:none!important}\n"] }]
98
98
  }] });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9jb21wYW55LWZvb3Rlci9jb21wYW55LWZvb3Rlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMzRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQzs7QUFHMUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQXFESCxNQUFNLE9BQU8sc0JBQXNCO0lBcERuQztRQXFERTs7O1dBR0c7UUFDTSxVQUFLLEdBQUcsS0FBSyxDQUF3QjtZQUM1QyxLQUFLLEVBQUU7Z0JBQ0wsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7Z0JBQ25ELFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2FBQ3JEO1NBQ0YsQ0FBQyxDQUFDO1FBRUgseUNBQXlDO1FBQ3pDLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDN0Qsd0JBQW1CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNuRSxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRCxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELHdCQUFtQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2pFLG9CQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN6RixtQkFBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLFVBQVUsQ0FBQztZQUNuQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ2xDLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDSCxvQkFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDO0tBQ3BFOytHQXpCWSxzQkFBc0I7bUdBQXRCLHNCQUFzQixrTkFoRHZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQsNGVBbkJTLFlBQVksK0JBQUUsT0FBTyx3RUFBRSxNQUFNLG9EQUFFLE1BQU0sa1RBQUUscUJBQXFCLGlGQUFFLG9CQUFvQjs7NEZBaURqRixzQkFBc0I7a0JBcERsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLENBQUMsWUFDbkY7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQ29sLCBJb25HcmlkLCBJb25Sb3cgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEZvb3RlckxpbmtzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2Zvb3Rlci1saW5rcy9mb290ZXItbGlua3MuY29tcG9uZW50JztcbmltcG9ydCB7IFJpZ2h0c0Zvb3RlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3JpZ2h0cy1mb290ZXIvcmlnaHRzLWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcGFueUZvb3Rlck1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogdmFsLWNvbXBhbnktZm9vdGVyXG4gKlxuICogQSBjb21wbGV0ZSBmb290ZXIgY29tcG9uZW50IGNvbWJpbmluZyBmb290ZXIgbGlua3MgKHdpdGggbG9nbyBhbmQgc29jaWFsIGljb25zKVxuICogYW5kIGEgcmlnaHRzL2NvcHlyaWdodCBmb290ZXIuIENvbmZpZ3VyYWJsZSBwYWRkaW5nIGFuZCBiYWNrZ3JvdW5kIG9wdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtY29tcGFueS1mb290ZXJcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBsaW5rczoge1xuICogICAgICAgbGVmdExpbmtzOiB7IHRpdGxlOiAnQ29tcGFueScsIHNpemU6ICdtZWRpdW0nLCBsaW5rczogWy4uLl0gfSxcbiAqICAgICAgIHJpZ2h0TGlua3M6IHsgdGl0bGU6ICdTdXBwb3J0Jywgc2l6ZTogJ21lZGl1bScsIGxpbmtzOiBbLi4uXSB9LFxuICogICAgICAgbG9nbzogJy9hc3NldHMvbG9nby5wbmcnLFxuICogICAgICAgc29jaWFsTGlua3M6IFsuLi5dXG4gKiAgICAgfSxcbiAqICAgICByaWdodHM6IHsgY29tcGFueU5hbWU6ICdBY21lIEluYycgfSxcbiAqICAgICB3aXRoUGFkZGluZzogdHJ1ZVxuICogICB9XCJcbiAqID48L3ZhbC1jb21wYW55LWZvb3Rlcj5cbiAqXG4gKiBAaW5wdXQgcHJvcHMgLSBGb290ZXIgY29uZmlndXJhdGlvblxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY29tcGFueS1mb290ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25HcmlkLCBJb25Sb3csIElvbkNvbCwgUmlnaHRzRm9vdGVyQ29tcG9uZW50LCBGb290ZXJMaW5rc0NvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGZvb3RlclxuICAgICAgW2NsYXNzLndpdGhQYWRkaW5nXT1cInByb3BzV2l0aFBhZGRpbmcoKVwiXG4gICAgICBbY2xhc3Mud2l0aEJhY2tncm91bmRdPVwicHJvcHNXaXRoQmFja2dyb3VuZCgpXCJcbiAgICAgIFtjbGFzcy53aXRoUm91bmRlZFRvcF09XCJwcm9wc1dpdGhSb3VuZGVkVG9wKClcIlxuICAgICAgW2NsYXNzLmJvcmRlcmxlc3NdPVwicHJvcHNCb3JkZXJsZXNzKClcIlxuICAgICAgW3N0eWxlLi0tdmFsLWZvb3Rlci10b3AtcmFkaXVzXT1cInByb3BzVG9wUmFkaXVzKClcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwicHJvcHNCYWNrZ3JvdW5kKClcIlxuICAgID5cbiAgICAgIDxpb24tZ3JpZD5cbiAgICAgICAgPHZhbC1mb290ZXItbGlua3MgW3Byb3BzXT1cInByb3BzTGlua3MoKVwiIC8+XG4gICAgICAgIDxpb24tcm93PlxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiPlxuICAgICAgICAgICAgPHZhbC1yaWdodHMtZm9vdGVyIFtwcm9wc109XCJwcm9wc1JpZ2h0cygpXCIgLz5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgIDwvaW9uLXJvdz5cbiAgICAgIDwvaW9uLWdyaWQ+XG4gICAgPC9mb290ZXI+XG4gIGAsXG4gIHN0eWxlczogYFxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC53aXRoUGFkZGluZyB7XG4gICAgICBwYWRkaW5nOiAxNnB4O1xuICAgIH1cblxuICAgIC53aXRoQmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlNWY2O1xuICAgIH1cblxuICAgIDpob3N0LWNvbnRleHQoYm9keS5kYXJrKSAud2l0aEJhY2tncm91bmQsXG4gICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC53aXRoQmFja2dyb3VuZCxcbiAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC53aXRoQmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGUwNDIwO1xuICAgIH1cblxuICAgIC53aXRoUm91bmRlZFRvcCB7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS12YWwtZm9vdGVyLXRvcC1yYWRpdXMsIDI0cHgpIHZhcigtLXZhbC1mb290ZXItdG9wLXJhZGl1cywgMjRweCkgMCAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG5cbiAgICAuYm9yZGVybGVzcyB7XG4gICAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBDb21wYW55Rm9vdGVyQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEZvb3RlciBjb25maWd1cmF0aW9uLlxuICAgKiBTaWduYWwtYmFzZWQgaW5wdXQgZm9yIGZ1bGwgcmVhY3Rpdml0eSB3aXRoIGNvbXB1dGVkKCkuXG4gICAqL1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0PENvbXBhbnlGb290ZXJNZXRhZGF0YT4oe1xuICAgIGxpbmtzOiB7XG4gICAgICBsZWZ0TGlua3M6IHsgdGl0bGU6ICcnLCBzaXplOiAnbWVkaXVtJywgbGlua3M6IFtdIH0sXG4gICAgICByaWdodExpbmtzOiB7IHRpdGxlOiAnJywgc2l6ZTogJ21lZGl1bScsIGxpbmtzOiBbXSB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIENvbXB1dGVkIGhlbHBlcnMgZm9yIHRlbXBsYXRlIGJpbmRpbmdzXG4gIHByb3BzV2l0aFBhZGRpbmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCk/LndpdGhQYWRkaW5nKTtcbiAgcHJvcHNXaXRoQmFja2dyb3VuZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvcHMoKT8ud2l0aEJhY2tncm91bmQpO1xuICBwcm9wc0xpbmtzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpPy5saW5rcyk7XG4gIHByb3BzUmlnaHRzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpPy5yaWdodHMgfHwge30pO1xuICBwcm9wc1dpdGhSb3VuZGVkVG9wID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLnByb3BzKCk/LnJvdW5kZWRUb3ApO1xuICBwcm9wc0JvcmRlcmxlc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCk/LmJvcmRlcmxlc3MgfHwgISF0aGlzLnByb3BzKCk/LnJvdW5kZWRUb3ApO1xuICBwcm9wc1RvcFJhZGl1cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2ID0gdGhpcy5wcm9wcygpPy5yb3VuZGVkVG9wO1xuICAgIGlmICghdiB8fCB2ID09PSB0cnVlKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdjtcbiAgfSk7XG4gIHByb3BzQmFja2dyb3VuZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvcHMoKT8uYmFja2dyb3VuZCA/PyBudWxsKTtcbn1cbiJdfQ==
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9jb21wYW55LWZvb3Rlci9jb21wYW55LWZvb3Rlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMzRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQzs7QUFHMUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQXFESCxNQUFNLE9BQU8sc0JBQXNCO0lBcERuQztRQXFERTs7O1dBR0c7UUFDTSxVQUFLLEdBQUcsS0FBSyxDQUF3QjtZQUM1QyxLQUFLLEVBQUU7Z0JBQ0wsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7Z0JBQ25ELFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2FBQ3JEO1NBQ0YsQ0FBQyxDQUFDO1FBRUgseUNBQXlDO1FBQ3pDLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDN0Qsd0JBQW1CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNuRSxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRCxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELHdCQUFtQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2pFLG9CQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN6RixtQkFBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLFVBQVUsQ0FBQztZQUNuQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ2xDLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDSCxvQkFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDO0tBQ3BFOytHQXpCWSxzQkFBc0I7bUdBQXRCLHNCQUFzQixrTkFoRHZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQsNGVBbkJTLFlBQVksK0JBQUUsT0FBTyx3RUFBRSxNQUFNLG9EQUFFLE1BQU0sa1RBQUUscUJBQXFCLGlGQUFFLG9CQUFvQjs7NEZBaURqRixzQkFBc0I7a0JBcERsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLENBQUMsWUFDbkY7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQ29sLCBJb25HcmlkLCBJb25Sb3cgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEZvb3RlckxpbmtzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2Zvb3Rlci1saW5rcy9mb290ZXItbGlua3MuY29tcG9uZW50JztcbmltcG9ydCB7IFJpZ2h0c0Zvb3RlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3JpZ2h0cy1mb290ZXIvcmlnaHRzLWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcGFueUZvb3Rlck1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogdmFsLWNvbXBhbnktZm9vdGVyXG4gKlxuICogQSBjb21wbGV0ZSBmb290ZXIgY29tcG9uZW50IGNvbWJpbmluZyBmb290ZXIgbGlua3MgKHdpdGggbG9nbyBhbmQgc29jaWFsIGljb25zKVxuICogYW5kIGEgcmlnaHRzL2NvcHlyaWdodCBmb290ZXIuIENvbmZpZ3VyYWJsZSBwYWRkaW5nIGFuZCBiYWNrZ3JvdW5kIG9wdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtY29tcGFueS1mb290ZXJcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBsaW5rczoge1xuICogICAgICAgbGVmdExpbmtzOiB7IHRpdGxlOiAnQ29tcGFueScsIHNpemU6ICdtZWRpdW0nLCBsaW5rczogWy4uLl0gfSxcbiAqICAgICAgIHJpZ2h0TGlua3M6IHsgdGl0bGU6ICdTdXBwb3J0Jywgc2l6ZTogJ21lZGl1bScsIGxpbmtzOiBbLi4uXSB9LFxuICogICAgICAgbG9nbzogJy9hc3NldHMvbG9nby5wbmcnLFxuICogICAgICAgc29jaWFsTGlua3M6IFsuLi5dXG4gKiAgICAgfSxcbiAqICAgICByaWdodHM6IHsgY29tcGFueU5hbWU6ICdBY21lIEluYycgfSxcbiAqICAgICB3aXRoUGFkZGluZzogdHJ1ZVxuICogICB9XCJcbiAqID48L3ZhbC1jb21wYW55LWZvb3Rlcj5cbiAqXG4gKiBAaW5wdXQgcHJvcHMgLSBGb290ZXIgY29uZmlndXJhdGlvblxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY29tcGFueS1mb290ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25HcmlkLCBJb25Sb3csIElvbkNvbCwgUmlnaHRzRm9vdGVyQ29tcG9uZW50LCBGb290ZXJMaW5rc0NvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGZvb3RlclxuICAgICAgW2NsYXNzLndpdGhQYWRkaW5nXT1cInByb3BzV2l0aFBhZGRpbmcoKVwiXG4gICAgICBbY2xhc3Mud2l0aEJhY2tncm91bmRdPVwicHJvcHNXaXRoQmFja2dyb3VuZCgpXCJcbiAgICAgIFtjbGFzcy53aXRoUm91bmRlZFRvcF09XCJwcm9wc1dpdGhSb3VuZGVkVG9wKClcIlxuICAgICAgW2NsYXNzLmJvcmRlcmxlc3NdPVwicHJvcHNCb3JkZXJsZXNzKClcIlxuICAgICAgW3N0eWxlLi0tdmFsLWZvb3Rlci10b3AtcmFkaXVzXT1cInByb3BzVG9wUmFkaXVzKClcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwicHJvcHNCYWNrZ3JvdW5kKClcIlxuICAgID5cbiAgICAgIDxpb24tZ3JpZD5cbiAgICAgICAgPHZhbC1mb290ZXItbGlua3MgW3Byb3BzXT1cInByb3BzTGlua3MoKVwiIC8+XG4gICAgICAgIDxpb24tcm93PlxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiPlxuICAgICAgICAgICAgPHZhbC1yaWdodHMtZm9vdGVyIFtwcm9wc109XCJwcm9wc1JpZ2h0cygpXCIgLz5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgIDwvaW9uLXJvdz5cbiAgICAgIDwvaW9uLWdyaWQ+XG4gICAgPC9mb290ZXI+XG4gIGAsXG4gIHN0eWxlczogYFxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC53aXRoUGFkZGluZyB7XG4gICAgICBwYWRkaW5nOiAxNnB4O1xuICAgIH1cblxuICAgIC53aXRoQmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmMGZiO1xuICAgIH1cblxuICAgIDpob3N0LWNvbnRleHQoYm9keS5kYXJrKSAud2l0aEJhY2tncm91bmQsXG4gICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC53aXRoQmFja2dyb3VuZCxcbiAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC53aXRoQmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGUwNDIwO1xuICAgIH1cblxuICAgIC53aXRoUm91bmRlZFRvcCB7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS12YWwtZm9vdGVyLXRvcC1yYWRpdXMsIDI0cHgpIHZhcigtLXZhbC1mb290ZXItdG9wLXJhZGl1cywgMjRweCkgMCAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG5cbiAgICAuYm9yZGVybGVzcyB7XG4gICAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBDb21wYW55Rm9vdGVyQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEZvb3RlciBjb25maWd1cmF0aW9uLlxuICAgKiBTaWduYWwtYmFzZWQgaW5wdXQgZm9yIGZ1bGwgcmVhY3Rpdml0eSB3aXRoIGNvbXB1dGVkKCkuXG4gICAqL1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0PENvbXBhbnlGb290ZXJNZXRhZGF0YT4oe1xuICAgIGxpbmtzOiB7XG4gICAgICBsZWZ0TGlua3M6IHsgdGl0bGU6ICcnLCBzaXplOiAnbWVkaXVtJywgbGlua3M6IFtdIH0sXG4gICAgICByaWdodExpbmtzOiB7IHRpdGxlOiAnJywgc2l6ZTogJ21lZGl1bScsIGxpbmtzOiBbXSB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIENvbXB1dGVkIGhlbHBlcnMgZm9yIHRlbXBsYXRlIGJpbmRpbmdzXG4gIHByb3BzV2l0aFBhZGRpbmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCk/LndpdGhQYWRkaW5nKTtcbiAgcHJvcHNXaXRoQmFja2dyb3VuZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvcHMoKT8ud2l0aEJhY2tncm91bmQpO1xuICBwcm9wc0xpbmtzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpPy5saW5rcyk7XG4gIHByb3BzUmlnaHRzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpPy5yaWdodHMgfHwge30pO1xuICBwcm9wc1dpdGhSb3VuZGVkVG9wID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLnByb3BzKCk/LnJvdW5kZWRUb3ApO1xuICBwcm9wc0JvcmRlcmxlc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCk/LmJvcmRlcmxlc3MgfHwgISF0aGlzLnByb3BzKCk/LnJvdW5kZWRUb3ApO1xuICBwcm9wc1RvcFJhZGl1cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2ID0gdGhpcy5wcm9wcygpPy5yb3VuZGVkVG9wO1xuICAgIGlmICghdiB8fCB2ID09PSB0cnVlKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdjtcbiAgfSk7XG4gIHByb3BzQmFja2dyb3VuZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvcHMoKT8uYmFja2dyb3VuZCA/PyBudWxsKTtcbn1cbiJdfQ==