@ieeesa-npm/groups 0.15.13 → 0.15.15

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,25 +1,51 @@
1
- import { Component, Optional, ViewEncapsulation } from '@angular/core';
1
+ import { Component, Inject, Optional, ViewEncapsulation, } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
+ import { MAT_DIALOG_DATA, } from '@angular/material/dialog';
4
+ import { Subject, takeUntil } from 'rxjs';
5
+ import { DragDropModule, moveItemInArray, } from '@angular/cdk/drag-drop';
3
6
  import { RadioComponent, SlideToggleComponent, } from '@ieeesa-npm/presentation';
7
+ import { AlertType } from '@ieeesa-npm/utility';
8
+ import { InterestMode, MEMBER_LEVEL_ROLE_TYPE, QuestionFieldType, } from '../../models/custom-question.model';
9
+ import { CustomQuestionEditorComponent } from '../custom-question-editor/custom-question-editor.component';
10
+ import { InterestFormPreviewComponent } from '../interest-form-preview/interest-form-preview.component';
4
11
  import * as constants from '../../assets/constants.json';
5
12
  import * as i0 from "@angular/core";
6
13
  import * as i1 from "@angular/material/dialog";
7
- import * as i2 from "@angular/common";
14
+ import * as i2 from "../../services/interest-form.service";
15
+ import * as i3 from "../../services/groups.service";
16
+ import * as i4 from "@ieeesa-npm/utility";
17
+ import * as i5 from "@angular/common";
18
+ import * as i6 from "@angular/cdk/drag-drop";
8
19
  /**
9
20
  * "Interest Form" tab content of the Roster Interests dialog (SP3M-317). The
10
- * group admin configures the interest form here: enable/disable the form, view
11
- * the locked standard questions, choose the default membership level and manage
12
- * custom questions. Interactive controls reuse the shared presentation
13
- * components (slide toggle, radio). Persistence via a mocked service and the
14
- * custom-question builder will be added in subsequent increments.
21
+ * group admin enables/disables the form, views locked standard questions,
22
+ * chooses the default membership level and manages custom questions
23
+ * (add / edit / reorder / remove), persisted to the groups backend via
24
+ * InterestFormService. Each question is saved individually (create/update) and
25
+ * the enable mode + default level are saved via the interest-config endpoint.
15
26
  * @export
16
27
  * @class InterestFormComponent
17
28
  */
18
29
  export class InterestFormComponent {
19
30
  constructor(
20
31
  // eslint-disable-next-line no-unused-vars
21
- dialogRef) {
32
+ dialogRef,
33
+ // eslint-disable-next-line no-unused-vars
34
+ group,
35
+ // eslint-disable-next-line no-unused-vars
36
+ interestFormService,
37
+ // eslint-disable-next-line no-unused-vars
38
+ groupsService,
39
+ // eslint-disable-next-line no-unused-vars
40
+ alertService,
41
+ // eslint-disable-next-line no-unused-vars
42
+ dialog) {
22
43
  this.dialogRef = dialogRef;
44
+ this.group = group;
45
+ this.interestFormService = interestFormService;
46
+ this.groupsService = groupsService;
47
+ this.alertService = alertService;
48
+ this.dialog = dialog;
23
49
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
50
  this.constants = constants;
25
51
  this.interestFormTexts = this.constants?.rosterInterests?.interestForm;
@@ -32,22 +58,35 @@ export class InterestFormComponent {
32
58
  this.defaultMembershipDescription = this.interestFormTexts?.defaultMembershipDescription;
33
59
  this.customQuestionsTitle = this.interestFormTexts?.customQuestionsTitle;
34
60
  this.addQuestionLabel = this.interestFormTexts?.addQuestionLabel;
61
+ this.requiredTag = this.interestFormTexts?.requiredTag;
35
62
  this.standardTag = this.interestFormTexts?.standardTag;
63
+ this.newQuestionLabel = this.interestFormTexts?.newQuestionLabel;
64
+ this.editQuestionAriaLabel = this.interestFormTexts?.editQuestionAriaLabel;
65
+ this.deleteQuestionAriaLabel = this.interestFormTexts?.deleteQuestionAriaLabel;
66
+ this.noLevelsMessage = this.interestFormTexts?.noLevelsMessage;
67
+ this.typeLabels = this.interestFormTexts?.questionEditor?.types;
36
68
  this.cancelLabel = this.constants?.rosterInterests?.footer?.cancel;
37
69
  this.previewLabel = this.constants?.rosterInterests?.footer?.preview;
38
70
  this.standardQuestions = [];
39
71
  this.membershipLevels = [];
40
- // Controls whether the lower sections (standard questions, default membership
41
- // level, custom questions) are shown. When the interest form is disabled only
42
- // the toggle section is visible.
43
- this.isFormEnabled = true;
72
+ // Defaults to disabled (OFF). The real state is driven by the API response in
73
+ // loadConfig; when no config has been saved yet the backend returns DISABLED,
74
+ // so the first-time view correctly shows the toggle OFF.
75
+ this.isFormEnabled = false;
76
+ this.selectedLevelId = null;
77
+ this.levels = [];
78
+ this.customQuestions = [];
79
+ this.editingQuestionId = null;
80
+ this.isEditingNewQuestion = false;
81
+ this.destroy$ = new Subject();
44
82
  }
45
83
  /**
46
- * Initializes the toggle, locked standard questions and default membership
47
- * level options from constants.
84
+ * Initializes static UI options and loads the group's interest config and
85
+ * custom questions from the backend.
48
86
  * @memberof InterestFormComponent
49
87
  */
50
88
  ngOnInit() {
89
+ this.interestFormService.setApiBaseUrl(this.groupsService?.apiBaseUrl);
51
90
  this.enableFormToggle = {
52
91
  id: 1,
53
92
  label: '',
@@ -59,20 +98,348 @@ export class InterestFormComponent {
59
98
  label,
60
99
  tag: this.standardTag,
61
100
  }));
62
- this.membershipLevels = (this.interestFormTexts?.membershipLevels ?? []).map((label, index) => ({
63
- id: index + 1,
64
- label,
65
- checked: index === 0,
101
+ if (this.group?.groupId) {
102
+ this.loadMembershipLevels();
103
+ this.loadQuestions();
104
+ }
105
+ }
106
+ /**
107
+ * Loads the real membership levels for the group's group type and then the
108
+ * saved interest configuration (so the saved default level can be
109
+ * preselected).
110
+ * @memberof InterestFormComponent
111
+ */
112
+ loadMembershipLevels() {
113
+ const appId = this.groupsService?.getUserInfo()?.appId;
114
+ if (!appId) {
115
+ this.loadConfig();
116
+ return;
117
+ }
118
+ this.interestFormService
119
+ .getRoles(appId)
120
+ .pipe(takeUntil(this.destroy$))
121
+ .subscribe({
122
+ next: (response) => {
123
+ // Member levels are the roles whose roleTypeName is "Member Level".
124
+ this.levels = (response?.body ?? []).filter((role) => role.roleTypeName === MEMBER_LEVEL_ROLE_TYPE);
125
+ this.loadConfig();
126
+ },
127
+ error: (error) => {
128
+ this.handleError(error);
129
+ this.loadConfig();
130
+ },
131
+ });
132
+ }
133
+ /**
134
+ * Loads the group's interest configuration (mode + default level) and syncs
135
+ * the toggle and the default-level radio selection.
136
+ * @memberof InterestFormComponent
137
+ */
138
+ loadConfig() {
139
+ this.interestFormService
140
+ .getInterestConfig(this.group.groupId)
141
+ .pipe(takeUntil(this.destroy$))
142
+ .subscribe({
143
+ next: (response) => {
144
+ const config = response?.body;
145
+ this.isFormEnabled = config?.interestMode === InterestMode.FORM;
146
+ this.enableFormToggle = {
147
+ ...this.enableFormToggle,
148
+ checked: this.isFormEnabled,
149
+ };
150
+ // Preselect the saved default level, else the first member level.
151
+ this.selectedLevelId =
152
+ config?.defaultLevelId ?? this.levels[0]?.roleId ?? null;
153
+ this.buildMembershipLevelOptions();
154
+ },
155
+ error: (error) => this.handleError(error),
156
+ });
157
+ }
158
+ /**
159
+ * Builds the radio options from the real membership levels, marking the
160
+ * currently selected level as checked.
161
+ * @memberof InterestFormComponent
162
+ */
163
+ buildMembershipLevelOptions() {
164
+ this.membershipLevels = this.levels.map((level) => ({
165
+ id: level.roleId,
166
+ label: level.roleName,
167
+ checked: level.roleId === this.selectedLevelId,
66
168
  }));
67
169
  }
68
170
  /**
69
- * Updates the form-enabled state when the toggle changes so the dependent
70
- * sections show or hide accordingly.
171
+ * Loads the group's custom questions.
172
+ * @memberof InterestFormComponent
173
+ */
174
+ loadQuestions() {
175
+ this.interestFormService
176
+ .getQuestions(this.group.groupId)
177
+ .pipe(takeUntil(this.destroy$))
178
+ .subscribe({
179
+ next: (response) => {
180
+ this.customQuestions = response?.body ?? [];
181
+ },
182
+ error: (error) => this.handleError(error),
183
+ });
184
+ }
185
+ /**
186
+ * Updates the form-enabled state and persists the new interest mode.
71
187
  * @param {SlideToggleOption} toggle
72
188
  * @memberof InterestFormComponent
73
189
  */
74
190
  onEnableFormToggle(toggle) {
75
191
  this.isFormEnabled = toggle?.checked;
192
+ if (!this.isFormEnabled) {
193
+ // Disabling always persists immediately (no level needed).
194
+ this.saveConfig();
195
+ return;
196
+ }
197
+ // Enabling requires a default level (backend rejects FORM without one). If
198
+ // none is selected yet, auto-select the level flagged default, else the
199
+ // first available level, so the toggle persists immediately.
200
+ if (!this.selectedLevelId) {
201
+ this.selectedLevelId = this.levels[0]?.roleId ?? null;
202
+ this.buildMembershipLevelOptions();
203
+ }
204
+ if (this.selectedLevelId) {
205
+ this.saveConfig();
206
+ }
207
+ else {
208
+ // No membership levels configured for this group type: cannot enable.
209
+ this.alertService?.showMessage({
210
+ status: 'custom',
211
+ message: this.interestFormTexts?.noLevelsMessage,
212
+ alertType: AlertType?.ERROR,
213
+ isCloseNeeded: true,
214
+ });
215
+ }
216
+ }
217
+ /**
218
+ * Persists the interest config. The default level is only sent for the
219
+ * enabled (FORM) mode; DISABLED clears it. Enabling without a selected level
220
+ * is skipped so an invalid request is never sent.
221
+ * @memberof InterestFormComponent
222
+ */
223
+ saveConfig() {
224
+ if (!this.group?.groupId)
225
+ return;
226
+ if (this.isFormEnabled && !this.selectedLevelId)
227
+ return;
228
+ this.interestFormService
229
+ .saveInterestConfig({
230
+ groupId: this.group.groupId,
231
+ interestMode: this.isFormEnabled
232
+ ? InterestMode.FORM
233
+ : InterestMode.DISABLED,
234
+ defaultLevelId: this.isFormEnabled ? this.selectedLevelId : null,
235
+ })
236
+ .pipe(takeUntil(this.destroy$))
237
+ .subscribe({
238
+ error: (error) => this.handleError(error),
239
+ });
240
+ }
241
+ /**
242
+ * Records the selected default membership level and persists the config when
243
+ * the form is enabled.
244
+ * @param {RadioOption} option
245
+ * @memberof InterestFormComponent
246
+ */
247
+ onMembershipLevelChange(option) {
248
+ this.selectedLevelId = String(option?.id);
249
+ if (this.isFormEnabled) {
250
+ this.saveConfig();
251
+ }
252
+ }
253
+ /**
254
+ * Adds a new blank question and opens its editor. Only one editor is open at
255
+ * a time.
256
+ * @memberof InterestFormComponent
257
+ */
258
+ onAddQuestion() {
259
+ if (this.editingQuestionId)
260
+ return;
261
+ const tempId = `new-${Date.now()}`;
262
+ const newQuestion = {
263
+ questionId: tempId,
264
+ groupId: this.group?.groupId,
265
+ questionLabel: '',
266
+ fieldType: null,
267
+ isRequired: true,
268
+ placeholder: '',
269
+ helpText: '',
270
+ options: undefined,
271
+ viewOrder: this.customQuestions.length,
272
+ };
273
+ this.customQuestions = [...this.customQuestions, newQuestion];
274
+ this.editingQuestionId = tempId;
275
+ this.isEditingNewQuestion = true;
276
+ }
277
+ /**
278
+ * Opens the editor for an existing question.
279
+ * @param {CustomQuestion} question
280
+ * @memberof InterestFormComponent
281
+ */
282
+ onEditQuestion(question) {
283
+ if (this.editingQuestionId)
284
+ return;
285
+ this.editingQuestionId = question.questionId ?? null;
286
+ this.isEditingNewQuestion = false;
287
+ }
288
+ /**
289
+ * Creates or updates the question on the backend and refreshes the list.
290
+ * @param {CustomQuestion} question
291
+ * @memberof InterestFormComponent
292
+ */
293
+ onSaveQuestion(question) {
294
+ if (this.isEditingNewQuestion) {
295
+ const payload = { ...question };
296
+ // Remove the temporary client id so the backend generates one.
297
+ delete payload.questionId;
298
+ this.interestFormService
299
+ .createQuestion(payload)
300
+ .pipe(takeUntil(this.destroy$))
301
+ .subscribe({
302
+ next: () => this.afterQuestionSaved(),
303
+ error: (error) => this.handleError(error),
304
+ });
305
+ }
306
+ else {
307
+ this.interestFormService
308
+ .updateQuestion(question)
309
+ .pipe(takeUntil(this.destroy$))
310
+ .subscribe({
311
+ next: () => this.afterQuestionSaved(),
312
+ error: (error) => this.handleError(error),
313
+ });
314
+ }
315
+ }
316
+ /**
317
+ * Closes the editor and reloads the questions after a successful save.
318
+ * @memberof InterestFormComponent
319
+ */
320
+ afterQuestionSaved() {
321
+ this.editingQuestionId = null;
322
+ this.isEditingNewQuestion = false;
323
+ this.loadQuestions();
324
+ }
325
+ /**
326
+ * Closes the editor. A newly added question is removed on cancel; an existing
327
+ * question keeps its previous values.
328
+ * @param {string} questionId
329
+ * @memberof InterestFormComponent
330
+ */
331
+ onCancelQuestion(questionId) {
332
+ if (this.isEditingNewQuestion) {
333
+ this.customQuestions = this.customQuestions.filter((question) => question.questionId !== questionId);
334
+ }
335
+ this.editingQuestionId = null;
336
+ this.isEditingNewQuestion = false;
337
+ }
338
+ /**
339
+ * Removes a question on the backend and refreshes the list.
340
+ * @param {string} questionId
341
+ * @memberof InterestFormComponent
342
+ */
343
+ onDeleteQuestion(questionId) {
344
+ if (!questionId)
345
+ return;
346
+ // A not-yet-saved question only exists client-side.
347
+ if (questionId.startsWith('new-')) {
348
+ this.onCancelQuestion(questionId);
349
+ return;
350
+ }
351
+ this.interestFormService
352
+ .removeQuestion(questionId)
353
+ .pipe(takeUntil(this.destroy$))
354
+ .subscribe({
355
+ next: () => {
356
+ if (this.editingQuestionId === questionId) {
357
+ this.editingQuestionId = null;
358
+ this.isEditingNewQuestion = false;
359
+ }
360
+ this.loadQuestions();
361
+ },
362
+ error: (error) => this.handleError(error),
363
+ });
364
+ }
365
+ /**
366
+ * Reorders questions on drag-drop and persists the new order.
367
+ * @param {CdkDragDrop<CustomQuestion[]>} event
368
+ * @memberof InterestFormComponent
369
+ */
370
+ onReorderQuestions(event) {
371
+ const reordered = [...this.customQuestions];
372
+ moveItemInArray(reordered, event.previousIndex, event.currentIndex);
373
+ this.customQuestions = reordered.map((question, index) => ({
374
+ ...question,
375
+ viewOrder: index,
376
+ }));
377
+ this.interestFormService
378
+ .reorderQuestions(this.customQuestions.map((question) => ({
379
+ questionId: question.questionId,
380
+ viewOrder: question.viewOrder,
381
+ })))
382
+ .pipe(takeUntil(this.destroy$))
383
+ .subscribe({
384
+ error: (error) => this.handleError(error),
385
+ });
386
+ }
387
+ /**
388
+ * Returns the display label for a question's field type.
389
+ * @param {(QuestionFieldType | null)} type
390
+ * @return {string}
391
+ * @memberof InterestFormComponent
392
+ */
393
+ getTypeLabel(type) {
394
+ switch (type) {
395
+ case QuestionFieldType.TEXT:
396
+ return this.typeLabels?.text;
397
+ case QuestionFieldType.TEXTAREA:
398
+ return this.typeLabels?.textArea;
399
+ case QuestionFieldType.SELECT:
400
+ return this.typeLabels?.dropdown;
401
+ case QuestionFieldType.CHECKBOX:
402
+ return this.typeLabels?.checkbox;
403
+ case QuestionFieldType.RADIO:
404
+ return this.typeLabels?.radio;
405
+ case QuestionFieldType.DATE:
406
+ return this.typeLabels?.date;
407
+ default:
408
+ return '';
409
+ }
410
+ }
411
+ /**
412
+ * Shows an error alert for a failed interest-form operation.
413
+ * @param {*} error
414
+ * @memberof InterestFormComponent
415
+ */
416
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
417
+ handleError(error) {
418
+ this.alertService?.showMessage({
419
+ status: 'custom',
420
+ message: error?.error?.message ?? error?.message,
421
+ alertType: AlertType?.ERROR,
422
+ isCloseNeeded: true,
423
+ });
424
+ }
425
+ /**
426
+ * Opens the interest form in read-only preview mode (SP3M-317 R6.7), reusing
427
+ * the shared express-interest dialog. Shows the admin's current custom
428
+ * questions as an end user would see them; no submit, Cancel only.
429
+ * @memberof InterestFormComponent
430
+ */
431
+ onPreview() {
432
+ this.dialog?.open(InterestFormPreviewComponent, {
433
+ width: '720px',
434
+ maxWidth: '92vw',
435
+ maxHeight: '90vh',
436
+ panelClass: ['ieeesa-modal-dialog', 'ieeesa-interest-form-preview'],
437
+ ariaModal: true,
438
+ data: {
439
+ groupName: this.group?.groupName ?? '',
440
+ customQuestions: this.customQuestions,
441
+ },
442
+ });
76
443
  }
77
444
  /**
78
445
  * Closes the Roster Interests dialog (Cancel action).
@@ -82,8 +449,7 @@ export class InterestFormComponent {
82
449
  this.dialogRef?.close();
83
450
  }
84
451
  /**
85
- * Returns the unique identifier for a standard question row for ngFor
86
- * tracking.
452
+ * ngFor tracking for standard question rows.
87
453
  * @param {number} index
88
454
  * @param {StandardQuestionRow} question
89
455
  * @return {number}
@@ -92,13 +458,34 @@ export class InterestFormComponent {
92
458
  trackByFn(index, question) {
93
459
  return question.id;
94
460
  }
95
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InterestFormComponent, deps: [{ token: i1.MatDialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
96
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InterestFormComponent, isStandalone: true, selector: "ieeesa-interest-form", ngImport: i0, template: "<div class=\"ieeesa-interest-form\">\r\n <div class=\"ieeesa-interest-form__notice ieeesa-body-sm-14\" role=\"note\">\r\n <svg\r\n class=\"ieeesa-interest-form__notice-icon\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M12 2L1 21h22L12 2zm0 4.5L19.5 19.5h-15L12 6.5zM11 10v5h2v-5h-2zm0 6v2h2v-2h-2z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n <span>{{ changesNotice }}</span>\r\n </div>\r\n\r\n <section class=\"ieeesa-interest-form__section\">\r\n <div\r\n class=\"ieeesa-interest-form__row d-flex justify-content-between align-items-start\"\r\n >\r\n <div>\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ sectionTitle }}\r\n </h2>\r\n <p class=\"ieeesa-interest-form__section-desc ieeesa-body-sm-14 m-0\">\r\n {{ sectionDescription }}\r\n </p>\r\n </div>\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"enableFormToggle\"\r\n (slideToggleChange)=\"onEnableFormToggle($event)\"\r\n ></ieeesa-slide-toggle>\r\n </div>\r\n </section>\r\n\r\n <section *ngIf=\"isFormEnabled\" class=\"ieeesa-interest-form__section\">\r\n <div\r\n class=\"ieeesa-interest-form__section-heading d-flex align-items-center gap-2\"\r\n >\r\n <svg\r\n class=\"ieeesa-interest-form__lock\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M12 2a5 5 0 0 0-5 5v3H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2h-1V7a5 5 0 0 0-5-5zm-3 5a3 3 0 0 1 6 0v3H9V7zm-3 5h12v8H6v-8z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ standardQuestionsTitle }}\r\n </h2>\r\n <span class=\"ieeesa-interest-form__hint ieeesa-body-sm-14\">{{\r\n standardQuestionsHint\r\n }}</span>\r\n </div>\r\n <ul class=\"ieeesa-interest-form__standard-list\">\r\n <li\r\n *ngFor=\"let question of standardQuestions; trackBy: trackByFn\"\r\n class=\"ieeesa-interest-form__standard-row d-flex justify-content-between align-items-center\"\r\n >\r\n <span class=\"ieeesa-interest-form__standard-label ieeesa-body-sm-14\">{{\r\n question.label\r\n }}</span>\r\n <span class=\"ieeesa-interest-form__standard-tag ieeesa-body-sm-14\">{{\r\n question.tag\r\n }}</span>\r\n </li>\r\n </ul>\r\n </section>\r\n\r\n <section *ngIf=\"isFormEnabled\" class=\"ieeesa-interest-form__section\">\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ defaultMembershipTitle }}\r\n </h2>\r\n <p class=\"ieeesa-interest-form__section-desc ieeesa-body-sm-14\">\r\n {{ defaultMembershipDescription }}\r\n </p>\r\n <ieeesa-radio\r\n formControlName=\"defaultMembershipLevel\"\r\n [radioGroup]=\"membershipLevels\"\r\n ></ieeesa-radio>\r\n </section>\r\n\r\n <section\r\n *ngIf=\"isFormEnabled\"\r\n class=\"ieeesa-interest-form__section ieeesa-interest-form__section--custom d-flex justify-content-between align-items-center\"\r\n >\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ customQuestionsTitle }}\r\n </h2>\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__add-question ieeesa-body-sm-14\"\r\n [attr.aria-label]=\"addQuestionLabel\"\r\n >\r\n {{ addQuestionLabel }}\r\n </button>\r\n </section>\r\n\r\n <div class=\"ieeesa-interest-form__footer d-flex justify-content-start gap-3\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__cancel\"\r\n (click)=\"onCancel()\"\r\n [attr.aria-label]=\"cancelLabel\"\r\n >\r\n {{ cancelLabel }}\r\n </button>\r\n <button\r\n *ngIf=\"isFormEnabled\"\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__preview\"\r\n [attr.aria-label]=\"previewLabel\"\r\n >\r\n {{ previewLabel }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-interest-form .ieeesa-interest-form__notice{display:flex;align-items:center;gap:8px;background-color:#fdf6e3;border:1px solid #f0d98c;border-radius:4px;padding:10px 14px;margin-top:16px;margin-bottom:16px;color:#333436}.ieeesa-interest-form__notice-icon{color:#e0a800;flex-shrink:0}.ieeesa-interest-form__section{padding:16px;border:1px solid #d7d6d6;border-radius:4px;margin-bottom:16px}.ieeesa-interest-form__section--custom{margin-bottom:0}.ieeesa-interest-form__section-heading{margin-bottom:12px}.ieeesa-interest-form .ieeesa-interest-form__section-title{color:#1c1d1e}.ieeesa-interest-form .ieeesa-interest-form__section-desc{margin:4px 0 0;color:#777a7e}.ieeesa-interest-form .ieeesa-interest-form__hint{display:inline-flex;align-items:center;padding:2px 8px;border-radius:12px;background-color:#f0f5f9;color:#9ba0a6;font-weight:400}.ieeesa-interest-form__lock{color:#1c1d1e;flex-shrink:0}.ieeesa-interest-form__standard-list{list-style:none;margin:0;padding:0;border:1px solid #d7d6d6;border-radius:4px}.ieeesa-interest-form__standard-row{padding:12px 16px}.ieeesa-interest-form__standard-row:not(:last-child){border-bottom:1px solid #d7d6d6}.ieeesa-interest-form .ieeesa-interest-form__standard-label,.ieeesa-interest-form .ieeesa-interest-form__standard-tag{color:#9ba0a6}.ieeesa-interest-form .ieeesa-interest-form__add-question{background-color:#00629b;color:#fff;border:none;border-radius:4px;padding:8px 16px;cursor:pointer}.ieeesa-interest-form__footer{margin-top:24px}.ieeesa-interest-form .ieeesa-interest-form__cancel{background:none;border:1px solid #00629b;color:#00629b;font-weight:600;border-radius:4px;padding:8px 20px;cursor:pointer}.ieeesa-interest-form .ieeesa-interest-form__preview{background-color:#00629b;color:#fff;border:none;border-radius:4px;padding:8px 20px;cursor:pointer}.ieeesa-interest-form .mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__track:before,.ieeesa-interest-form .mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__track:after{border-color:#a7a8aa!important;background:#a7a8aa!important}.ieeesa-interest-form .mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle .mdc-switch__shadow{border-color:#a7a8aa!important;background:#fff!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SlideToggleComponent, selector: "ieeesa-slide-toggle", inputs: ["formControlName", "slideToggle", "isDisabled", "canShowIcon"], outputs: ["slideToggleChange"] }, { kind: "component", type: RadioComponent, selector: "ieeesa-radio", inputs: ["formControlName", "radioGroup", "isDisabled"], outputs: ["selectedRadioOption"] }], encapsulation: i0.ViewEncapsulation.None }); }
461
+ /**
462
+ * ngFor tracking for custom questions.
463
+ * @param {number} index
464
+ * @param {CustomQuestion} question
465
+ * @return {string}
466
+ * @memberof InterestFormComponent
467
+ */
468
+ trackByQuestionId(index, question) {
469
+ return question.questionId;
470
+ }
471
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InterestFormComponent, deps: [{ token: i1.MatDialogRef, optional: true }, { token: MAT_DIALOG_DATA, optional: true }, { token: i2.InterestFormService }, { token: i3.GroupsService }, { token: i4.AlertsService }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
472
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InterestFormComponent, isStandalone: true, selector: "ieeesa-interest-form", ngImport: i0, template: "<div class=\"ieeesa-interest-form\">\r\n <div class=\"ieeesa-interest-form__notice ieeesa-body-sm-14\" role=\"note\">\r\n <svg\r\n class=\"ieeesa-interest-form__notice-icon\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M12 2L1 21h22L12 2zm0 4.5L19.5 19.5h-15L12 6.5zM11 10v5h2v-5h-2zm0 6v2h2v-2h-2z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n <span>{{ changesNotice }}</span>\r\n </div>\r\n\r\n <section class=\"ieeesa-interest-form__section\">\r\n <div\r\n class=\"ieeesa-interest-form__row d-flex justify-content-between align-items-start\"\r\n >\r\n <div>\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ sectionTitle }}\r\n </h2>\r\n <p class=\"ieeesa-interest-form__section-desc ieeesa-body-sm-14 m-0\">\r\n {{ sectionDescription }}\r\n </p>\r\n </div>\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"enableFormToggle\"\r\n (slideToggleChange)=\"onEnableFormToggle($event)\"\r\n ></ieeesa-slide-toggle>\r\n </div>\r\n </section>\r\n\r\n <section *ngIf=\"isFormEnabled\" class=\"ieeesa-interest-form__section\">\r\n <div\r\n class=\"ieeesa-interest-form__section-heading d-flex align-items-center gap-2\"\r\n >\r\n <svg\r\n class=\"ieeesa-interest-form__lock\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M12 2a5 5 0 0 0-5 5v3H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2h-1V7a5 5 0 0 0-5-5zm-3 5a3 3 0 0 1 6 0v3H9V7zm-3 5h12v8H6v-8z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ standardQuestionsTitle }}\r\n </h2>\r\n <span class=\"ieeesa-interest-form__hint ieeesa-body-sm-14\">{{\r\n standardQuestionsHint\r\n }}</span>\r\n </div>\r\n <ul class=\"ieeesa-interest-form__standard-list\">\r\n <li\r\n *ngFor=\"let question of standardQuestions; trackBy: trackByFn\"\r\n class=\"ieeesa-interest-form__standard-row d-flex justify-content-between align-items-center\"\r\n >\r\n <span class=\"ieeesa-interest-form__standard-label ieeesa-body-sm-14\">{{\r\n question.label\r\n }}</span>\r\n <span class=\"ieeesa-interest-form__standard-tag ieeesa-body-sm-14\">{{\r\n question.tag\r\n }}</span>\r\n </li>\r\n </ul>\r\n </section>\r\n\r\n <section *ngIf=\"isFormEnabled\" class=\"ieeesa-interest-form__section\">\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ defaultMembershipTitle }}\r\n </h2>\r\n <p class=\"ieeesa-interest-form__section-desc ieeesa-body-sm-14\">\r\n {{ defaultMembershipDescription }}\r\n </p>\r\n <ieeesa-radio\r\n *ngIf=\"membershipLevels.length > 0\"\r\n formControlName=\"defaultMembershipLevel\"\r\n [radioGroup]=\"membershipLevels\"\r\n (selectedRadioOption)=\"onMembershipLevelChange($event)\"\r\n ></ieeesa-radio>\r\n <p\r\n *ngIf=\"membershipLevels.length === 0\"\r\n class=\"ieeesa-interest-form__section-desc ieeesa-body-sm-14\"\r\n >\r\n {{ noLevelsMessage }}\r\n </p>\r\n </section>\r\n\r\n <section *ngIf=\"isFormEnabled\" class=\"ieeesa-interest-form__section\">\r\n <div\r\n class=\"ieeesa-interest-form__custom-header d-flex justify-content-between align-items-center\"\r\n >\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ customQuestionsTitle }}\r\n </h2>\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__add-question ieeesa-body-sm-14\"\r\n [disabled]=\"editingQuestionId\"\r\n (click)=\"onAddQuestion()\"\r\n [attr.aria-label]=\"addQuestionLabel\"\r\n >\r\n {{ addQuestionLabel }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n cdkDropList\r\n class=\"ieeesa-interest-form__question-list\"\r\n (cdkDropListDropped)=\"onReorderQuestions($event)\"\r\n >\r\n <div\r\n *ngFor=\"let question of customQuestions; trackBy: trackByQuestionId\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"editingQuestionId\"\r\n class=\"ieeesa-interest-form__question\"\r\n [class.ieeesa-interest-form__question--editing]=\"\r\n editingQuestionId === question.questionId\r\n \"\r\n >\r\n <div\r\n class=\"ieeesa-interest-form__question-row d-flex align-items-center justify-content-between gap-2\"\r\n [class.ieeesa-interest-form__question-row--editing]=\"\r\n editingQuestionId === question.questionId\r\n \"\r\n >\r\n <div class=\"d-flex align-items-center gap-2 ieeesa-interest-form__question-main\">\r\n <span\r\n class=\"ieeesa-interest-form__drag-handle\"\r\n cdkDragHandle\r\n aria-hidden=\"true\"\r\n >\r\n <svg width=\"12\" height=\"16\" viewBox=\"0 0 12 16\" fill=\"none\">\r\n <circle cx=\"3\" cy=\"2\" r=\"1.5\" fill=\"currentColor\"/>\r\n <circle cx=\"9\" cy=\"2\" r=\"1.5\" fill=\"currentColor\"/>\r\n <circle cx=\"3\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\r\n <circle cx=\"9\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\r\n <circle cx=\"3\" cy=\"14\" r=\"1.5\" fill=\"currentColor\"/>\r\n <circle cx=\"9\" cy=\"14\" r=\"1.5\" fill=\"currentColor\"/>\r\n </svg>\r\n </span>\r\n <span class=\"ieeesa-interest-form__question-label ieeesa-body-sm-14\">\r\n {{ question.questionLabel || newQuestionLabel }}\r\n </span>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <span\r\n *ngIf=\"question.fieldType\"\r\n class=\"ieeesa-interest-form__chip ieeesa-interest-form__chip--type ieeesa-body-sm-14\"\r\n >\r\n {{ getTypeLabel(question.fieldType) }}\r\n </span>\r\n <span\r\n *ngIf=\"question.isRequired\"\r\n class=\"ieeesa-interest-form__chip ieeesa-interest-form__chip--required ieeesa-body-sm-14\"\r\n >\r\n {{ requiredTag }}\r\n </span>\r\n <button\r\n *ngIf=\"editingQuestionId !== question.questionId\"\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__icon-btn\"\r\n (click)=\"onEditQuestion(question)\"\r\n [attr.aria-label]=\"editQuestionAriaLabel\"\r\n >\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.06.59l1.35 1.35c.79.78.79 2.05 0 2.83L4.18 18H0v-4.18L10.4 3.41 13.23.59c.78-.78 2.05-.78 2.83 0zM2 16l1.41.06L13.23 6.23l-1.41-1.41L2 14.64V16z\" fill=\"currentColor\"/>\r\n </svg>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__icon-btn ieeesa-interest-form__icon-btn--delete\"\r\n (click)=\"onDeleteQuestion(question.questionId)\"\r\n [attr.aria-label]=\"deleteQuestionAriaLabel\"\r\n >\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15 3V4H20V6H19V19C19 20.1 18.1 21 17 21H7C5.9 21 5 20.1 5 19V6H4V4H9V3H15ZM7 19H17V6H7V19ZM9 8H11V17H9V8ZM15 8H13V17H15V8Z\" fill=\"currentColor\"/>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <ieeesa-custom-question-editor\r\n *ngIf=\"editingQuestionId === question.questionId\"\r\n [question]=\"question\"\r\n (save)=\"onSaveQuestion($event)\"\r\n (cancel)=\"onCancelQuestion(question.questionId)\"\r\n ></ieeesa-custom-question-editor>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <div class=\"ieeesa-interest-form__footer d-flex justify-content-start gap-3\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__cancel\"\r\n (click)=\"onCancel()\"\r\n [attr.aria-label]=\"cancelLabel\"\r\n >\r\n {{ cancelLabel }}\r\n </button>\r\n <button\r\n *ngIf=\"isFormEnabled\"\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__preview\"\r\n (click)=\"onPreview()\"\r\n [attr.aria-label]=\"previewLabel\"\r\n >\r\n {{ previewLabel }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-interest-form .ieeesa-interest-form__notice{display:flex;align-items:center;gap:8px;background-color:#fdf6e3;border:1px solid #f0d98c;border-radius:4px;padding:10px 14px;margin-top:16px;margin-bottom:16px;color:#333436}.ieeesa-interest-form__notice-icon{color:#e0a800;flex-shrink:0}.ieeesa-interest-form__section{padding:16px;border:1px solid #d7d6d6;border-radius:4px;margin-bottom:16px}.ieeesa-interest-form__section--custom{margin-bottom:0}.ieeesa-interest-form__section-heading{margin-bottom:12px}.ieeesa-interest-form .ieeesa-interest-form__section-title{color:#1c1d1e}.ieeesa-interest-form .ieeesa-interest-form__section-desc{margin:4px 0 0;color:#777a7e}.ieeesa-interest-form .ieeesa-interest-form__hint{display:inline-flex;align-items:center;padding:2px 8px;border-radius:12px;background-color:#f0f5f9;color:#9ba0a6;font-weight:400}.ieeesa-interest-form__lock{color:#1c1d1e;flex-shrink:0}.ieeesa-interest-form__standard-list{list-style:none;margin:0;padding:0;border:1px solid #d7d6d6;border-radius:4px}.ieeesa-interest-form__standard-row{padding:12px 16px}.ieeesa-interest-form__standard-row:not(:last-child){border-bottom:1px solid #d7d6d6}.ieeesa-interest-form .ieeesa-interest-form__standard-label,.ieeesa-interest-form .ieeesa-interest-form__standard-tag{color:#9ba0a6}.ieeesa-interest-form__custom-header{margin-bottom:12px}.ieeesa-interest-form .ieeesa-interest-form__add-question{background-color:#00629b;color:#fff;border:none;border-radius:4px;padding:8px 16px;cursor:pointer}.ieeesa-interest-form .ieeesa-interest-form__add-question:disabled{background-color:#c0c7cd;color:#fff;cursor:not-allowed}.ieeesa-interest-form__question{border:1px solid #d7d6d6;border-radius:4px;margin-bottom:12px;overflow:hidden}.ieeesa-interest-form__question:last-child{margin-bottom:0}.ieeesa-interest-form__question--editing{border:2px solid #00629b}.ieeesa-interest-form .cdk-drag-preview,.ieeesa-interest-form .cdk-drag-placeholder{border:1px solid #d7d6d6!important;border-radius:4px;background:#fff}.ieeesa-interest-form__question-row{padding:12px 16px}.ieeesa-interest-form__question-row--editing{background-color:#eaf3f9;border-bottom:1px solid #d7d6d6}.ieeesa-interest-form__drag-handle{cursor:grab;color:#777a7e;display:flex;align-items:center}.ieeesa-interest-form ieeesa-custom-question-editor{display:block;padding:16px}.ieeesa-interest-form .ieeesa-interest-form__question-label{font-weight:600;color:#1c1d1e}.ieeesa-interest-form .ieeesa-interest-form__chip{display:inline-flex;align-items:center;padding:2px 10px;border-radius:12px}.ieeesa-interest-form .ieeesa-interest-form__chip--type{background-color:#f0f5f9;color:#777a7e}.ieeesa-interest-form .ieeesa-interest-form__chip--required{background-color:#b3261e14;color:#b3261e}.ieeesa-interest-form__icon-btn{background:none;border:none;cursor:pointer;color:#00629b;padding:0}.ieeesa-interest-form__icon-btn--delete{color:#b3261e}.ieeesa-interest-form__footer{margin-top:24px}.ieeesa-interest-form .ieeesa-interest-form__cancel{background:none;border:1px solid #00629b;color:#00629b;font-weight:600;border-radius:4px;padding:8px 20px;cursor:pointer}.ieeesa-interest-form .ieeesa-interest-form__preview{background-color:#00629b;color:#fff;border:none;border-radius:4px;padding:8px 20px;cursor:pointer}.ieeesa-interest-form .mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__track:before,.ieeesa-interest-form .mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__track:after{border-color:#a7a8aa!important;background:#a7a8aa!important}.ieeesa-interest-form .mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle .mdc-switch__shadow{border-color:#a7a8aa!important;background:#fff!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: SlideToggleComponent, selector: "ieeesa-slide-toggle", inputs: ["formControlName", "slideToggle", "isDisabled", "canShowIcon"], outputs: ["slideToggleChange"] }, { kind: "component", type: RadioComponent, selector: "ieeesa-radio", inputs: ["formControlName", "radioGroup", "isDisabled"], outputs: ["selectedRadioOption"] }, { kind: "component", type: CustomQuestionEditorComponent, selector: "ieeesa-custom-question-editor", inputs: ["question"], outputs: ["save", "cancel"] }], encapsulation: i0.ViewEncapsulation.None }); }
97
473
  }
98
474
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InterestFormComponent, decorators: [{
99
475
  type: Component,
100
- args: [{ selector: 'ieeesa-interest-form', standalone: true, imports: [CommonModule, SlideToggleComponent, RadioComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"ieeesa-interest-form\">\r\n <div class=\"ieeesa-interest-form__notice ieeesa-body-sm-14\" role=\"note\">\r\n <svg\r\n class=\"ieeesa-interest-form__notice-icon\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M12 2L1 21h22L12 2zm0 4.5L19.5 19.5h-15L12 6.5zM11 10v5h2v-5h-2zm0 6v2h2v-2h-2z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n <span>{{ changesNotice }}</span>\r\n </div>\r\n\r\n <section class=\"ieeesa-interest-form__section\">\r\n <div\r\n class=\"ieeesa-interest-form__row d-flex justify-content-between align-items-start\"\r\n >\r\n <div>\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ sectionTitle }}\r\n </h2>\r\n <p class=\"ieeesa-interest-form__section-desc ieeesa-body-sm-14 m-0\">\r\n {{ sectionDescription }}\r\n </p>\r\n </div>\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"enableFormToggle\"\r\n (slideToggleChange)=\"onEnableFormToggle($event)\"\r\n ></ieeesa-slide-toggle>\r\n </div>\r\n </section>\r\n\r\n <section *ngIf=\"isFormEnabled\" class=\"ieeesa-interest-form__section\">\r\n <div\r\n class=\"ieeesa-interest-form__section-heading d-flex align-items-center gap-2\"\r\n >\r\n <svg\r\n class=\"ieeesa-interest-form__lock\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M12 2a5 5 0 0 0-5 5v3H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2h-1V7a5 5 0 0 0-5-5zm-3 5a3 3 0 0 1 6 0v3H9V7zm-3 5h12v8H6v-8z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ standardQuestionsTitle }}\r\n </h2>\r\n <span class=\"ieeesa-interest-form__hint ieeesa-body-sm-14\">{{\r\n standardQuestionsHint\r\n }}</span>\r\n </div>\r\n <ul class=\"ieeesa-interest-form__standard-list\">\r\n <li\r\n *ngFor=\"let question of standardQuestions; trackBy: trackByFn\"\r\n class=\"ieeesa-interest-form__standard-row d-flex justify-content-between align-items-center\"\r\n >\r\n <span class=\"ieeesa-interest-form__standard-label ieeesa-body-sm-14\">{{\r\n question.label\r\n }}</span>\r\n <span class=\"ieeesa-interest-form__standard-tag ieeesa-body-sm-14\">{{\r\n question.tag\r\n }}</span>\r\n </li>\r\n </ul>\r\n </section>\r\n\r\n <section *ngIf=\"isFormEnabled\" class=\"ieeesa-interest-form__section\">\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ defaultMembershipTitle }}\r\n </h2>\r\n <p class=\"ieeesa-interest-form__section-desc ieeesa-body-sm-14\">\r\n {{ defaultMembershipDescription }}\r\n </p>\r\n <ieeesa-radio\r\n formControlName=\"defaultMembershipLevel\"\r\n [radioGroup]=\"membershipLevels\"\r\n ></ieeesa-radio>\r\n </section>\r\n\r\n <section\r\n *ngIf=\"isFormEnabled\"\r\n class=\"ieeesa-interest-form__section ieeesa-interest-form__section--custom d-flex justify-content-between align-items-center\"\r\n >\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ customQuestionsTitle }}\r\n </h2>\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__add-question ieeesa-body-sm-14\"\r\n [attr.aria-label]=\"addQuestionLabel\"\r\n >\r\n {{ addQuestionLabel }}\r\n </button>\r\n </section>\r\n\r\n <div class=\"ieeesa-interest-form__footer d-flex justify-content-start gap-3\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__cancel\"\r\n (click)=\"onCancel()\"\r\n [attr.aria-label]=\"cancelLabel\"\r\n >\r\n {{ cancelLabel }}\r\n </button>\r\n <button\r\n *ngIf=\"isFormEnabled\"\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__preview\"\r\n [attr.aria-label]=\"previewLabel\"\r\n >\r\n {{ previewLabel }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-interest-form .ieeesa-interest-form__notice{display:flex;align-items:center;gap:8px;background-color:#fdf6e3;border:1px solid #f0d98c;border-radius:4px;padding:10px 14px;margin-top:16px;margin-bottom:16px;color:#333436}.ieeesa-interest-form__notice-icon{color:#e0a800;flex-shrink:0}.ieeesa-interest-form__section{padding:16px;border:1px solid #d7d6d6;border-radius:4px;margin-bottom:16px}.ieeesa-interest-form__section--custom{margin-bottom:0}.ieeesa-interest-form__section-heading{margin-bottom:12px}.ieeesa-interest-form .ieeesa-interest-form__section-title{color:#1c1d1e}.ieeesa-interest-form .ieeesa-interest-form__section-desc{margin:4px 0 0;color:#777a7e}.ieeesa-interest-form .ieeesa-interest-form__hint{display:inline-flex;align-items:center;padding:2px 8px;border-radius:12px;background-color:#f0f5f9;color:#9ba0a6;font-weight:400}.ieeesa-interest-form__lock{color:#1c1d1e;flex-shrink:0}.ieeesa-interest-form__standard-list{list-style:none;margin:0;padding:0;border:1px solid #d7d6d6;border-radius:4px}.ieeesa-interest-form__standard-row{padding:12px 16px}.ieeesa-interest-form__standard-row:not(:last-child){border-bottom:1px solid #d7d6d6}.ieeesa-interest-form .ieeesa-interest-form__standard-label,.ieeesa-interest-form .ieeesa-interest-form__standard-tag{color:#9ba0a6}.ieeesa-interest-form .ieeesa-interest-form__add-question{background-color:#00629b;color:#fff;border:none;border-radius:4px;padding:8px 16px;cursor:pointer}.ieeesa-interest-form__footer{margin-top:24px}.ieeesa-interest-form .ieeesa-interest-form__cancel{background:none;border:1px solid #00629b;color:#00629b;font-weight:600;border-radius:4px;padding:8px 20px;cursor:pointer}.ieeesa-interest-form .ieeesa-interest-form__preview{background-color:#00629b;color:#fff;border:none;border-radius:4px;padding:8px 20px;cursor:pointer}.ieeesa-interest-form .mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__track:before,.ieeesa-interest-form .mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__track:after{border-color:#a7a8aa!important;background:#a7a8aa!important}.ieeesa-interest-form .mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle .mdc-switch__shadow{border-color:#a7a8aa!important;background:#fff!important}\n"] }]
476
+ args: [{ selector: 'ieeesa-interest-form', standalone: true, imports: [
477
+ CommonModule,
478
+ DragDropModule,
479
+ SlideToggleComponent,
480
+ RadioComponent,
481
+ CustomQuestionEditorComponent,
482
+ ], encapsulation: ViewEncapsulation.None, template: "<div class=\"ieeesa-interest-form\">\r\n <div class=\"ieeesa-interest-form__notice ieeesa-body-sm-14\" role=\"note\">\r\n <svg\r\n class=\"ieeesa-interest-form__notice-icon\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M12 2L1 21h22L12 2zm0 4.5L19.5 19.5h-15L12 6.5zM11 10v5h2v-5h-2zm0 6v2h2v-2h-2z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n <span>{{ changesNotice }}</span>\r\n </div>\r\n\r\n <section class=\"ieeesa-interest-form__section\">\r\n <div\r\n class=\"ieeesa-interest-form__row d-flex justify-content-between align-items-start\"\r\n >\r\n <div>\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ sectionTitle }}\r\n </h2>\r\n <p class=\"ieeesa-interest-form__section-desc ieeesa-body-sm-14 m-0\">\r\n {{ sectionDescription }}\r\n </p>\r\n </div>\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"enableFormToggle\"\r\n (slideToggleChange)=\"onEnableFormToggle($event)\"\r\n ></ieeesa-slide-toggle>\r\n </div>\r\n </section>\r\n\r\n <section *ngIf=\"isFormEnabled\" class=\"ieeesa-interest-form__section\">\r\n <div\r\n class=\"ieeesa-interest-form__section-heading d-flex align-items-center gap-2\"\r\n >\r\n <svg\r\n class=\"ieeesa-interest-form__lock\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M12 2a5 5 0 0 0-5 5v3H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2h-1V7a5 5 0 0 0-5-5zm-3 5a3 3 0 0 1 6 0v3H9V7zm-3 5h12v8H6v-8z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ standardQuestionsTitle }}\r\n </h2>\r\n <span class=\"ieeesa-interest-form__hint ieeesa-body-sm-14\">{{\r\n standardQuestionsHint\r\n }}</span>\r\n </div>\r\n <ul class=\"ieeesa-interest-form__standard-list\">\r\n <li\r\n *ngFor=\"let question of standardQuestions; trackBy: trackByFn\"\r\n class=\"ieeesa-interest-form__standard-row d-flex justify-content-between align-items-center\"\r\n >\r\n <span class=\"ieeesa-interest-form__standard-label ieeesa-body-sm-14\">{{\r\n question.label\r\n }}</span>\r\n <span class=\"ieeesa-interest-form__standard-tag ieeesa-body-sm-14\">{{\r\n question.tag\r\n }}</span>\r\n </li>\r\n </ul>\r\n </section>\r\n\r\n <section *ngIf=\"isFormEnabled\" class=\"ieeesa-interest-form__section\">\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ defaultMembershipTitle }}\r\n </h2>\r\n <p class=\"ieeesa-interest-form__section-desc ieeesa-body-sm-14\">\r\n {{ defaultMembershipDescription }}\r\n </p>\r\n <ieeesa-radio\r\n *ngIf=\"membershipLevels.length > 0\"\r\n formControlName=\"defaultMembershipLevel\"\r\n [radioGroup]=\"membershipLevels\"\r\n (selectedRadioOption)=\"onMembershipLevelChange($event)\"\r\n ></ieeesa-radio>\r\n <p\r\n *ngIf=\"membershipLevels.length === 0\"\r\n class=\"ieeesa-interest-form__section-desc ieeesa-body-sm-14\"\r\n >\r\n {{ noLevelsMessage }}\r\n </p>\r\n </section>\r\n\r\n <section *ngIf=\"isFormEnabled\" class=\"ieeesa-interest-form__section\">\r\n <div\r\n class=\"ieeesa-interest-form__custom-header d-flex justify-content-between align-items-center\"\r\n >\r\n <h2 class=\"ieeesa-interest-form__section-title ieeesa-body-lg-bold-16 m-0\">\r\n {{ customQuestionsTitle }}\r\n </h2>\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__add-question ieeesa-body-sm-14\"\r\n [disabled]=\"editingQuestionId\"\r\n (click)=\"onAddQuestion()\"\r\n [attr.aria-label]=\"addQuestionLabel\"\r\n >\r\n {{ addQuestionLabel }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n cdkDropList\r\n class=\"ieeesa-interest-form__question-list\"\r\n (cdkDropListDropped)=\"onReorderQuestions($event)\"\r\n >\r\n <div\r\n *ngFor=\"let question of customQuestions; trackBy: trackByQuestionId\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"editingQuestionId\"\r\n class=\"ieeesa-interest-form__question\"\r\n [class.ieeesa-interest-form__question--editing]=\"\r\n editingQuestionId === question.questionId\r\n \"\r\n >\r\n <div\r\n class=\"ieeesa-interest-form__question-row d-flex align-items-center justify-content-between gap-2\"\r\n [class.ieeesa-interest-form__question-row--editing]=\"\r\n editingQuestionId === question.questionId\r\n \"\r\n >\r\n <div class=\"d-flex align-items-center gap-2 ieeesa-interest-form__question-main\">\r\n <span\r\n class=\"ieeesa-interest-form__drag-handle\"\r\n cdkDragHandle\r\n aria-hidden=\"true\"\r\n >\r\n <svg width=\"12\" height=\"16\" viewBox=\"0 0 12 16\" fill=\"none\">\r\n <circle cx=\"3\" cy=\"2\" r=\"1.5\" fill=\"currentColor\"/>\r\n <circle cx=\"9\" cy=\"2\" r=\"1.5\" fill=\"currentColor\"/>\r\n <circle cx=\"3\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\r\n <circle cx=\"9\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\r\n <circle cx=\"3\" cy=\"14\" r=\"1.5\" fill=\"currentColor\"/>\r\n <circle cx=\"9\" cy=\"14\" r=\"1.5\" fill=\"currentColor\"/>\r\n </svg>\r\n </span>\r\n <span class=\"ieeesa-interest-form__question-label ieeesa-body-sm-14\">\r\n {{ question.questionLabel || newQuestionLabel }}\r\n </span>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <span\r\n *ngIf=\"question.fieldType\"\r\n class=\"ieeesa-interest-form__chip ieeesa-interest-form__chip--type ieeesa-body-sm-14\"\r\n >\r\n {{ getTypeLabel(question.fieldType) }}\r\n </span>\r\n <span\r\n *ngIf=\"question.isRequired\"\r\n class=\"ieeesa-interest-form__chip ieeesa-interest-form__chip--required ieeesa-body-sm-14\"\r\n >\r\n {{ requiredTag }}\r\n </span>\r\n <button\r\n *ngIf=\"editingQuestionId !== question.questionId\"\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__icon-btn\"\r\n (click)=\"onEditQuestion(question)\"\r\n [attr.aria-label]=\"editQuestionAriaLabel\"\r\n >\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.06.59l1.35 1.35c.79.78.79 2.05 0 2.83L4.18 18H0v-4.18L10.4 3.41 13.23.59c.78-.78 2.05-.78 2.83 0zM2 16l1.41.06L13.23 6.23l-1.41-1.41L2 14.64V16z\" fill=\"currentColor\"/>\r\n </svg>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__icon-btn ieeesa-interest-form__icon-btn--delete\"\r\n (click)=\"onDeleteQuestion(question.questionId)\"\r\n [attr.aria-label]=\"deleteQuestionAriaLabel\"\r\n >\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15 3V4H20V6H19V19C19 20.1 18.1 21 17 21H7C5.9 21 5 20.1 5 19V6H4V4H9V3H15ZM7 19H17V6H7V19ZM9 8H11V17H9V8ZM15 8H13V17H15V8Z\" fill=\"currentColor\"/>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <ieeesa-custom-question-editor\r\n *ngIf=\"editingQuestionId === question.questionId\"\r\n [question]=\"question\"\r\n (save)=\"onSaveQuestion($event)\"\r\n (cancel)=\"onCancelQuestion(question.questionId)\"\r\n ></ieeesa-custom-question-editor>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <div class=\"ieeesa-interest-form__footer d-flex justify-content-start gap-3\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__cancel\"\r\n (click)=\"onCancel()\"\r\n [attr.aria-label]=\"cancelLabel\"\r\n >\r\n {{ cancelLabel }}\r\n </button>\r\n <button\r\n *ngIf=\"isFormEnabled\"\r\n type=\"button\"\r\n class=\"ieeesa-interest-form__preview\"\r\n (click)=\"onPreview()\"\r\n [attr.aria-label]=\"previewLabel\"\r\n >\r\n {{ previewLabel }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-interest-form .ieeesa-interest-form__notice{display:flex;align-items:center;gap:8px;background-color:#fdf6e3;border:1px solid #f0d98c;border-radius:4px;padding:10px 14px;margin-top:16px;margin-bottom:16px;color:#333436}.ieeesa-interest-form__notice-icon{color:#e0a800;flex-shrink:0}.ieeesa-interest-form__section{padding:16px;border:1px solid #d7d6d6;border-radius:4px;margin-bottom:16px}.ieeesa-interest-form__section--custom{margin-bottom:0}.ieeesa-interest-form__section-heading{margin-bottom:12px}.ieeesa-interest-form .ieeesa-interest-form__section-title{color:#1c1d1e}.ieeesa-interest-form .ieeesa-interest-form__section-desc{margin:4px 0 0;color:#777a7e}.ieeesa-interest-form .ieeesa-interest-form__hint{display:inline-flex;align-items:center;padding:2px 8px;border-radius:12px;background-color:#f0f5f9;color:#9ba0a6;font-weight:400}.ieeesa-interest-form__lock{color:#1c1d1e;flex-shrink:0}.ieeesa-interest-form__standard-list{list-style:none;margin:0;padding:0;border:1px solid #d7d6d6;border-radius:4px}.ieeesa-interest-form__standard-row{padding:12px 16px}.ieeesa-interest-form__standard-row:not(:last-child){border-bottom:1px solid #d7d6d6}.ieeesa-interest-form .ieeesa-interest-form__standard-label,.ieeesa-interest-form .ieeesa-interest-form__standard-tag{color:#9ba0a6}.ieeesa-interest-form__custom-header{margin-bottom:12px}.ieeesa-interest-form .ieeesa-interest-form__add-question{background-color:#00629b;color:#fff;border:none;border-radius:4px;padding:8px 16px;cursor:pointer}.ieeesa-interest-form .ieeesa-interest-form__add-question:disabled{background-color:#c0c7cd;color:#fff;cursor:not-allowed}.ieeesa-interest-form__question{border:1px solid #d7d6d6;border-radius:4px;margin-bottom:12px;overflow:hidden}.ieeesa-interest-form__question:last-child{margin-bottom:0}.ieeesa-interest-form__question--editing{border:2px solid #00629b}.ieeesa-interest-form .cdk-drag-preview,.ieeesa-interest-form .cdk-drag-placeholder{border:1px solid #d7d6d6!important;border-radius:4px;background:#fff}.ieeesa-interest-form__question-row{padding:12px 16px}.ieeesa-interest-form__question-row--editing{background-color:#eaf3f9;border-bottom:1px solid #d7d6d6}.ieeesa-interest-form__drag-handle{cursor:grab;color:#777a7e;display:flex;align-items:center}.ieeesa-interest-form ieeesa-custom-question-editor{display:block;padding:16px}.ieeesa-interest-form .ieeesa-interest-form__question-label{font-weight:600;color:#1c1d1e}.ieeesa-interest-form .ieeesa-interest-form__chip{display:inline-flex;align-items:center;padding:2px 10px;border-radius:12px}.ieeesa-interest-form .ieeesa-interest-form__chip--type{background-color:#f0f5f9;color:#777a7e}.ieeesa-interest-form .ieeesa-interest-form__chip--required{background-color:#b3261e14;color:#b3261e}.ieeesa-interest-form__icon-btn{background:none;border:none;cursor:pointer;color:#00629b;padding:0}.ieeesa-interest-form__icon-btn--delete{color:#b3261e}.ieeesa-interest-form__footer{margin-top:24px}.ieeesa-interest-form .ieeesa-interest-form__cancel{background:none;border:1px solid #00629b;color:#00629b;font-weight:600;border-radius:4px;padding:8px 20px;cursor:pointer}.ieeesa-interest-form .ieeesa-interest-form__preview{background-color:#00629b;color:#fff;border:none;border-radius:4px;padding:8px 20px;cursor:pointer}.ieeesa-interest-form .mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__track:before,.ieeesa-interest-form .mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__track:after{border-color:#a7a8aa!important;background:#a7a8aa!important}.ieeesa-interest-form .mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle .mdc-switch__shadow{border-color:#a7a8aa!important;background:#fff!important}\n"] }]
101
483
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef, decorators: [{
102
484
  type: Optional
103
- }] }]; } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJlc3QtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2ludGVyZXN0LWZvcm0vaW50ZXJlc3QtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2ludGVyZXN0LWZvcm0vaW50ZXJlc3QtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUNMLGNBQWMsRUFFZCxvQkFBb0IsR0FFckIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEtBQUssU0FBUyxNQUFNLDZCQUE2QixDQUFDOzs7O0FBYXpEOzs7Ozs7Ozs7R0FTRztBQVNILE1BQU0sT0FBTyxxQkFBcUI7SUEwQmhDO0lBQ0UsMENBQTBDO0lBQ3RCLFNBQWdDO1FBQWhDLGNBQVMsR0FBVCxTQUFTLENBQXVCO1FBM0J0RCw4REFBOEQ7UUFDOUQsY0FBUyxHQUFRLFNBQVMsQ0FBQztRQUMzQixzQkFBaUIsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLENBQUM7UUFDbEUsa0JBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDO1FBQ3RELGlCQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFlBQVksQ0FBQztRQUNwRCx1QkFBa0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUM7UUFDaEUsMkJBQXNCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLHNCQUFzQixDQUFDO1FBQ3hFLDBCQUFxQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxxQkFBcUIsQ0FBQztRQUN0RSwyQkFBc0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsc0JBQXNCLENBQUM7UUFDeEUsaUNBQTRCLEdBQzFCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSw0QkFBNEIsQ0FBQztRQUN2RCx5QkFBb0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsb0JBQW9CLENBQUM7UUFDcEUscUJBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDO1FBQzVELGdCQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQztRQUNsRCxnQkFBVyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7UUFDOUQsaUJBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDO1FBR2hFLHNCQUFpQixHQUEwQixFQUFFLENBQUM7UUFDOUMscUJBQWdCLEdBQWtCLEVBQUUsQ0FBQztRQUNyQyw4RUFBOEU7UUFDOUUsOEVBQThFO1FBQzlFLGlDQUFpQztRQUNqQyxrQkFBYSxHQUFHLElBQUksQ0FBQztJQUtsQixDQUFDO0lBRUo7Ozs7T0FJRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDdEIsRUFBRSxFQUFFLENBQUM7WUFDTCxLQUFLLEVBQUUsRUFBRTtZQUNULE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYTtZQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDN0IsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUN2QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLElBQUksRUFBRSxDQUNoRCxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQWEsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkMsRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDO1lBQ2IsS0FBSztZQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVztTQUN0QixDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUN0QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLElBQUksRUFBRSxDQUMvQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQWEsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkMsRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDO1lBQ2IsS0FBSztZQUNMLE9BQU8sRUFBRSxLQUFLLEtBQUssQ0FBQztTQUNyQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGtCQUFrQixDQUFDLE1BQXlCO1FBQzFDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxFQUFFLE9BQU8sQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxTQUFTLENBQUMsS0FBYSxFQUFFLFFBQTZCO1FBQ3BELE9BQU8sUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUNyQixDQUFDOytHQXZGVSxxQkFBcUI7bUdBQXJCLHFCQUFxQixnRkN4Q2xDLDh2SUE0SEEsaytWRHpGWSxZQUFZLGdRQUFFLG9CQUFvQix5S0FBRSxjQUFjOzs0RkFLakQscUJBQXFCO2tCQVJqQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxDQUFDLGlCQUc5QyxpQkFBaUIsQ0FBQyxJQUFJOzswQkE4QmxDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3B0aW9uYWwsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7XHJcbiAgUmFkaW9Db21wb25lbnQsXHJcbiAgUmFkaW9PcHRpb24sXHJcbiAgU2xpZGVUb2dnbGVDb21wb25lbnQsXHJcbiAgU2xpZGVUb2dnbGVPcHRpb24sXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcblxyXG4vKipcclxuICogU3RhbmRhcmQgKGxvY2tlZCkgcXVlc3Rpb24gcm93IHNob3duIGluIHRoZSBJbnRlcmVzdCBGb3JtIHRhYi5cclxuICogQGV4cG9ydFxyXG4gKiBAaW50ZXJmYWNlIFN0YW5kYXJkUXVlc3Rpb25Sb3dcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RhbmRhcmRRdWVzdGlvblJvdyB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHRhZzogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogXCJJbnRlcmVzdCBGb3JtXCIgdGFiIGNvbnRlbnQgb2YgdGhlIFJvc3RlciBJbnRlcmVzdHMgZGlhbG9nIChTUDNNLTMxNykuIFRoZVxyXG4gKiBncm91cCBhZG1pbiBjb25maWd1cmVzIHRoZSBpbnRlcmVzdCBmb3JtIGhlcmU6IGVuYWJsZS9kaXNhYmxlIHRoZSBmb3JtLCB2aWV3XHJcbiAqIHRoZSBsb2NrZWQgc3RhbmRhcmQgcXVlc3Rpb25zLCBjaG9vc2UgdGhlIGRlZmF1bHQgbWVtYmVyc2hpcCBsZXZlbCBhbmQgbWFuYWdlXHJcbiAqIGN1c3RvbSBxdWVzdGlvbnMuIEludGVyYWN0aXZlIGNvbnRyb2xzIHJldXNlIHRoZSBzaGFyZWQgcHJlc2VudGF0aW9uXHJcbiAqIGNvbXBvbmVudHMgKHNsaWRlIHRvZ2dsZSwgcmFkaW8pLiBQZXJzaXN0ZW5jZSB2aWEgYSBtb2NrZWQgc2VydmljZSBhbmQgdGhlXHJcbiAqIGN1c3RvbS1xdWVzdGlvbiBidWlsZGVyIHdpbGwgYmUgYWRkZWQgaW4gc3Vic2VxdWVudCBpbmNyZW1lbnRzLlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBJbnRlcmVzdEZvcm1Db21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWludGVyZXN0LWZvcm0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2xpZGVUb2dnbGVDb21wb25lbnQsIFJhZGlvQ29tcG9uZW50XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW50ZXJlc3QtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW50ZXJlc3QtZm9ybS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnRlcmVzdEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBjb25zdGFudHM7XHJcbiAgaW50ZXJlc3RGb3JtVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8ucm9zdGVySW50ZXJlc3RzPy5pbnRlcmVzdEZvcm07XHJcbiAgY2hhbmdlc05vdGljZSA9IHRoaXMuaW50ZXJlc3RGb3JtVGV4dHM/LmNoYW5nZXNOb3RpY2U7XHJcbiAgc2VjdGlvblRpdGxlID0gdGhpcy5pbnRlcmVzdEZvcm1UZXh0cz8uc2VjdGlvblRpdGxlO1xyXG4gIHNlY3Rpb25EZXNjcmlwdGlvbiA9IHRoaXMuaW50ZXJlc3RGb3JtVGV4dHM/LnNlY3Rpb25EZXNjcmlwdGlvbjtcclxuICBzdGFuZGFyZFF1ZXN0aW9uc1RpdGxlID0gdGhpcy5pbnRlcmVzdEZvcm1UZXh0cz8uc3RhbmRhcmRRdWVzdGlvbnNUaXRsZTtcclxuICBzdGFuZGFyZFF1ZXN0aW9uc0hpbnQgPSB0aGlzLmludGVyZXN0Rm9ybVRleHRzPy5zdGFuZGFyZFF1ZXN0aW9uc0hpbnQ7XHJcbiAgZGVmYXVsdE1lbWJlcnNoaXBUaXRsZSA9IHRoaXMuaW50ZXJlc3RGb3JtVGV4dHM/LmRlZmF1bHRNZW1iZXJzaGlwVGl0bGU7XHJcbiAgZGVmYXVsdE1lbWJlcnNoaXBEZXNjcmlwdGlvbiA9XHJcbiAgICB0aGlzLmludGVyZXN0Rm9ybVRleHRzPy5kZWZhdWx0TWVtYmVyc2hpcERlc2NyaXB0aW9uO1xyXG4gIGN1c3RvbVF1ZXN0aW9uc1RpdGxlID0gdGhpcy5pbnRlcmVzdEZvcm1UZXh0cz8uY3VzdG9tUXVlc3Rpb25zVGl0bGU7XHJcbiAgYWRkUXVlc3Rpb25MYWJlbCA9IHRoaXMuaW50ZXJlc3RGb3JtVGV4dHM/LmFkZFF1ZXN0aW9uTGFiZWw7XHJcbiAgc3RhbmRhcmRUYWcgPSB0aGlzLmludGVyZXN0Rm9ybVRleHRzPy5zdGFuZGFyZFRhZztcclxuICBjYW5jZWxMYWJlbCA9IHRoaXMuY29uc3RhbnRzPy5yb3N0ZXJJbnRlcmVzdHM/LmZvb3Rlcj8uY2FuY2VsO1xyXG4gIHByZXZpZXdMYWJlbCA9IHRoaXMuY29uc3RhbnRzPy5yb3N0ZXJJbnRlcmVzdHM/LmZvb3Rlcj8ucHJldmlldztcclxuXHJcbiAgZW5hYmxlRm9ybVRvZ2dsZSE6IFNsaWRlVG9nZ2xlT3B0aW9uO1xyXG4gIHN0YW5kYXJkUXVlc3Rpb25zOiBTdGFuZGFyZFF1ZXN0aW9uUm93W10gPSBbXTtcclxuICBtZW1iZXJzaGlwTGV2ZWxzOiBSYWRpb09wdGlvbltdID0gW107XHJcbiAgLy8gQ29udHJvbHMgd2hldGhlciB0aGUgbG93ZXIgc2VjdGlvbnMgKHN0YW5kYXJkIHF1ZXN0aW9ucywgZGVmYXVsdCBtZW1iZXJzaGlwXHJcbiAgLy8gbGV2ZWwsIGN1c3RvbSBxdWVzdGlvbnMpIGFyZSBzaG93bi4gV2hlbiB0aGUgaW50ZXJlc3QgZm9ybSBpcyBkaXNhYmxlZCBvbmx5XHJcbiAgLy8gdGhlIHRvZ2dsZSBzZWN0aW9uIGlzIHZpc2libGUuXHJcbiAgaXNGb3JtRW5hYmxlZCA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPHVua25vd24+XHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgdG9nZ2xlLCBsb2NrZWQgc3RhbmRhcmQgcXVlc3Rpb25zIGFuZCBkZWZhdWx0IG1lbWJlcnNoaXBcclxuICAgKiBsZXZlbCBvcHRpb25zIGZyb20gY29uc3RhbnRzLlxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdEZvcm1Db21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZW5hYmxlRm9ybVRvZ2dsZSA9IHtcclxuICAgICAgaWQ6IDEsXHJcbiAgICAgIGxhYmVsOiAnJyxcclxuICAgICAgY2hlY2tlZDogdGhpcy5pc0Zvcm1FbmFibGVkLFxyXG4gICAgICBhcmlhTGFiZWw6IHRoaXMuc2VjdGlvblRpdGxlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuc3RhbmRhcmRRdWVzdGlvbnMgPSAoXHJcbiAgICAgIHRoaXMuaW50ZXJlc3RGb3JtVGV4dHM/LnN0YW5kYXJkUXVlc3Rpb25zID8/IFtdXHJcbiAgICApLm1hcCgobGFiZWw6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4gKHtcclxuICAgICAgaWQ6IGluZGV4ICsgMSxcclxuICAgICAgbGFiZWwsXHJcbiAgICAgIHRhZzogdGhpcy5zdGFuZGFyZFRhZyxcclxuICAgIH0pKTtcclxuICAgIHRoaXMubWVtYmVyc2hpcExldmVscyA9IChcclxuICAgICAgdGhpcy5pbnRlcmVzdEZvcm1UZXh0cz8ubWVtYmVyc2hpcExldmVscyA/PyBbXVxyXG4gICAgKS5tYXAoKGxhYmVsOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+ICh7XHJcbiAgICAgIGlkOiBpbmRleCArIDEsXHJcbiAgICAgIGxhYmVsLFxyXG4gICAgICBjaGVja2VkOiBpbmRleCA9PT0gMCxcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgdGhlIGZvcm0tZW5hYmxlZCBzdGF0ZSB3aGVuIHRoZSB0b2dnbGUgY2hhbmdlcyBzbyB0aGUgZGVwZW5kZW50XHJcbiAgICogc2VjdGlvbnMgc2hvdyBvciBoaWRlIGFjY29yZGluZ2x5LlxyXG4gICAqIEBwYXJhbSB7U2xpZGVUb2dnbGVPcHRpb259IHRvZ2dsZVxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdEZvcm1Db21wb25lbnRcclxuICAgKi9cclxuICBvbkVuYWJsZUZvcm1Ub2dnbGUodG9nZ2xlOiBTbGlkZVRvZ2dsZU9wdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Zvcm1FbmFibGVkID0gdG9nZ2xlPy5jaGVja2VkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2VzIHRoZSBSb3N0ZXIgSW50ZXJlc3RzIGRpYWxvZyAoQ2FuY2VsIGFjdGlvbikuXHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0Rm9ybUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBzdGFuZGFyZCBxdWVzdGlvbiByb3cgZm9yIG5nRm9yXHJcbiAgICogdHJhY2tpbmcuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XHJcbiAgICogQHBhcmFtIHtTdGFuZGFyZFF1ZXN0aW9uUm93fSBxdWVzdGlvblxyXG4gICAqIEByZXR1cm4ge251bWJlcn1cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIHF1ZXN0aW9uOiBTdGFuZGFyZFF1ZXN0aW9uUm93KTogbnVtYmVyIHtcclxuICAgIHJldHVybiBxdWVzdGlvbi5pZDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtXCI+XHJcbiAgPGRpdiBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19ub3RpY2UgaWVlZXNhLWJvZHktc20tMTRcIiByb2xlPVwibm90ZVwiPlxyXG4gICAgPHN2Z1xyXG4gICAgICBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19ub3RpY2UtaWNvblwiXHJcbiAgICAgIHdpZHRoPVwiMTZcIlxyXG4gICAgICBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICA+XHJcbiAgICAgIDxwYXRoXHJcbiAgICAgICAgZD1cIk0xMiAyTDEgMjFoMjJMMTIgMnptMCA0LjVMMTkuNSAxOS41aC0xNUwxMiA2LjV6TTExIDEwdjVoMnYtNWgtMnptMCA2djJoMnYtMmgtMnpcIlxyXG4gICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxyXG4gICAgICAvPlxyXG4gICAgPC9zdmc+XHJcbiAgICA8c3Bhbj57eyBjaGFuZ2VzTm90aWNlIH19PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8c2VjdGlvbiBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19zZWN0aW9uXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX3JvdyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtc3RhcnRcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxoMiBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19zZWN0aW9uLXRpdGxlIGllZWVzYS1ib2R5LWxnLWJvbGQtMTYgbS0wXCI+XHJcbiAgICAgICAgICB7eyBzZWN0aW9uVGl0bGUgfX1cclxuICAgICAgICA8L2gyPlxyXG4gICAgICAgIDxwIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX3NlY3Rpb24tZGVzYyBpZWVlc2EtYm9keS1zbS0xNCBtLTBcIj5cclxuICAgICAgICAgIHt7IHNlY3Rpb25EZXNjcmlwdGlvbiB9fVxyXG4gICAgICAgIDwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxpZWVlc2Etc2xpZGUtdG9nZ2xlXHJcbiAgICAgICAgW3NsaWRlVG9nZ2xlXT1cImVuYWJsZUZvcm1Ub2dnbGVcIlxyXG4gICAgICAgIChzbGlkZVRvZ2dsZUNoYW5nZSk9XCJvbkVuYWJsZUZvcm1Ub2dnbGUoJGV2ZW50KVwiXHJcbiAgICAgID48L2llZWVzYS1zbGlkZS10b2dnbGU+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NlY3Rpb24+XHJcblxyXG4gIDxzZWN0aW9uICpuZ0lmPVwiaXNGb3JtRW5hYmxlZFwiIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX3NlY3Rpb25cIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fc2VjdGlvbi1oZWFkaW5nIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIlxyXG4gICAgPlxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fbG9ja1wiXHJcbiAgICAgICAgd2lkdGg9XCIxNlwiXHJcbiAgICAgICAgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGQ9XCJNMTIgMmE1IDUgMCAwIDAtNSA1djNINmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0ydi04YTIgMiAwIDAgMC0yLTJoLTFWN2E1IDUgMCAwIDAtNS01em0tMyA1YTMgMyAwIDAgMSA2IDB2M0g5Vjd6bS0zIDVoMTJ2OEg2di04elwiXHJcbiAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgICAgPGgyIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX3NlY3Rpb24tdGl0bGUgaWVlZXNhLWJvZHktbGctYm9sZC0xNiBtLTBcIj5cclxuICAgICAgICB7eyBzdGFuZGFyZFF1ZXN0aW9uc1RpdGxlIH19XHJcbiAgICAgIDwvaDI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX2hpbnQgaWVlZXNhLWJvZHktc20tMTRcIj57e1xyXG4gICAgICAgIHN0YW5kYXJkUXVlc3Rpb25zSGludFxyXG4gICAgICB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHVsIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX3N0YW5kYXJkLWxpc3RcIj5cclxuICAgICAgPGxpXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIHN0YW5kYXJkUXVlc3Rpb25zOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX3N0YW5kYXJkLXJvdyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX3N0YW5kYXJkLWxhYmVsIGllZWVzYS1ib2R5LXNtLTE0XCI+e3tcclxuICAgICAgICAgIHF1ZXN0aW9uLmxhYmVsXHJcbiAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fc3RhbmRhcmQtdGFnIGllZWVzYS1ib2R5LXNtLTE0XCI+e3tcclxuICAgICAgICAgIHF1ZXN0aW9uLnRhZ1xyXG4gICAgICAgIH19PC9zcGFuPlxyXG4gICAgICA8L2xpPlxyXG4gICAgPC91bD5cclxuICA8L3NlY3Rpb24+XHJcblxyXG4gIDxzZWN0aW9uICpuZ0lmPVwiaXNGb3JtRW5hYmxlZFwiIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX3NlY3Rpb25cIj5cclxuICAgIDxoMiBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19zZWN0aW9uLXRpdGxlIGllZWVzYS1ib2R5LWxnLWJvbGQtMTYgbS0wXCI+XHJcbiAgICAgIHt7IGRlZmF1bHRNZW1iZXJzaGlwVGl0bGUgfX1cclxuICAgIDwvaDI+XHJcbiAgICA8cCBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19zZWN0aW9uLWRlc2MgaWVlZXNhLWJvZHktc20tMTRcIj5cclxuICAgICAge3sgZGVmYXVsdE1lbWJlcnNoaXBEZXNjcmlwdGlvbiB9fVxyXG4gICAgPC9wPlxyXG4gICAgPGllZWVzYS1yYWRpb1xyXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWZhdWx0TWVtYmVyc2hpcExldmVsXCJcclxuICAgICAgW3JhZGlvR3JvdXBdPVwibWVtYmVyc2hpcExldmVsc1wiXHJcbiAgICA+PC9pZWVlc2EtcmFkaW8+XHJcbiAgPC9zZWN0aW9uPlxyXG5cclxuICA8c2VjdGlvblxyXG4gICAgKm5nSWY9XCJpc0Zvcm1FbmFibGVkXCJcclxuICAgIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX3NlY3Rpb24gaWVlZXNhLWludGVyZXN0LWZvcm1fX3NlY3Rpb24tLWN1c3RvbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICA+XHJcbiAgICA8aDIgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fc2VjdGlvbi10aXRsZSBpZWVlc2EtYm9keS1sZy1ib2xkLTE2IG0tMFwiPlxyXG4gICAgICB7eyBjdXN0b21RdWVzdGlvbnNUaXRsZSB9fVxyXG4gICAgPC9oMj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX2FkZC1xdWVzdGlvbiBpZWVlc2EtYm9keS1zbS0xNFwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWRkUXVlc3Rpb25MYWJlbFwiXHJcbiAgICA+XHJcbiAgICAgIHt7IGFkZFF1ZXN0aW9uTGFiZWwgfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvc2VjdGlvbj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19mb290ZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBnYXAtM1wiPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fY2FuY2VsXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNhbmNlbExhYmVsXCJcclxuICAgID5cclxuICAgICAge3sgY2FuY2VsTGFiZWwgfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAqbmdJZj1cImlzRm9ybUVuYWJsZWRcIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fcHJldmlld1wiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJldmlld0xhYmVsXCJcclxuICAgID5cclxuICAgICAge3sgcHJldmlld0xhYmVsIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
485
+ }] }, { type: undefined, decorators: [{
486
+ type: Optional
487
+ }, {
488
+ type: Inject,
489
+ args: [MAT_DIALOG_DATA]
490
+ }] }, { type: i2.InterestFormService }, { type: i3.GroupsService }, { type: i4.AlertsService }, { type: i1.MatDialog }]; } });
491
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJlc3QtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2ludGVyZXN0LWZvcm0vaW50ZXJlc3QtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2ludGVyZXN0LWZvcm0vaW50ZXJlc3QtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFFTixRQUFRLEVBQ1IsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsZUFBZSxHQUdoQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFFTCxjQUFjLEVBQ2QsZUFBZSxHQUNoQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCxjQUFjLEVBRWQsb0JBQW9CLEdBRXJCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBR0wsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixpQkFBaUIsR0FDbEIsTUFBTSxvQ0FBb0MsQ0FBQztBQUk1QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN4RyxPQUFPLEtBQUssU0FBUyxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7OztBQWF6RDs7Ozs7Ozs7O0dBU0c7QUFlSCxNQUFNLE9BQU8scUJB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O0lBQ3JCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxpQkFBaUIsQ0FBQyxLQUFhLEVBQUUsUUFBd0I7UUFDdkQsT0FBTyxRQUFRLENBQUMsVUFBb0IsQ0FBQztJQUN2QyxDQUFDOytHQTljVSxxQkFBcUIsOERBMkNWLGVBQWU7bUdBM0MxQixxQkFBcUIsZ0ZDM0VsQyx3eVJBNk5BLG81WUQ1SkksWUFBWSwrUEFDWixjQUFjLDZqQ0FDZCxvQkFBb0IseUtBQ3BCLGNBQWMsb0pBQ2QsNkJBQTZCOzs0RkFNcEIscUJBQXFCO2tCQWRqQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLG9CQUFvQjt3QkFDcEIsY0FBYzt3QkFDZCw2QkFBNkI7cUJBQzlCLGlCQUdjLGlCQUFpQixDQUFDLElBQUk7OzBCQTJDbEMsUUFBUTs7MEJBRVIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5qZWN0LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBNQVRfRElBTE9HX0RBVEEsXHJcbiAgTWF0RGlhbG9nLFxyXG4gIE1hdERpYWxvZ1JlZixcclxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBDZGtEcmFnRHJvcCxcclxuICBEcmFnRHJvcE1vZHVsZSxcclxuICBtb3ZlSXRlbUluQXJyYXksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7XHJcbiAgUmFkaW9Db21wb25lbnQsXHJcbiAgUmFkaW9PcHRpb24sXHJcbiAgU2xpZGVUb2dnbGVDb21wb25lbnQsXHJcbiAgU2xpZGVUb2dnbGVPcHRpb24sXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0IHsgQWxlcnRUeXBlLCBBbGVydHNTZXJ2aWNlIH0gZnJvbSAnQGllZWVzYS1ucG0vdXRpbGl0eSc7XHJcbmltcG9ydCB7XHJcbiAgQ3VzdG9tUXVlc3Rpb24sXHJcbiAgR3JvdXBSb2xlLFxyXG4gIEludGVyZXN0TW9kZSxcclxuICBNRU1CRVJfTEVWRUxfUk9MRV9UWVBFLFxyXG4gIFF1ZXN0aW9uRmllbGRUeXBlLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9jdXN0b20tcXVlc3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cEluZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JvdXAtaW5mby5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3Vwc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncm91cHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEludGVyZXN0Rm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbnRlcmVzdC1mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXN0b21RdWVzdGlvbkVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uL2N1c3RvbS1xdWVzdGlvbi1lZGl0b3IvY3VzdG9tLXF1ZXN0aW9uLWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnRlcmVzdEZvcm1QcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vaW50ZXJlc3QtZm9ybS1wcmV2aWV3L2ludGVyZXN0LWZvcm0tcHJldmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgKiBhcyBjb25zdGFudHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuXHJcbi8qKlxyXG4gKiBTdGFuZGFyZCAobG9ja2VkKSBxdWVzdGlvbiByb3cgc2hvd24gaW4gdGhlIEludGVyZXN0IEZvcm0gdGFiLlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBpbnRlcmZhY2UgU3RhbmRhcmRRdWVzdGlvblJvd1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFyZFF1ZXN0aW9uUm93IHtcclxuICBpZDogbnVtYmVyO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgdGFnOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBcIkludGVyZXN0IEZvcm1cIiB0YWIgY29udGVudCBvZiB0aGUgUm9zdGVyIEludGVyZXN0cyBkaWFsb2cgKFNQM00tMzE3KS4gVGhlXHJcbiAqIGdyb3VwIGFkbWluIGVuYWJsZXMvZGlzYWJsZXMgdGhlIGZvcm0sIHZpZXdzIGxvY2tlZCBzdGFuZGFyZCBxdWVzdGlvbnMsXHJcbiAqIGNob29zZXMgdGhlIGRlZmF1bHQgbWVtYmVyc2hpcCBsZXZlbCBhbmQgbWFuYWdlcyBjdXN0b20gcXVlc3Rpb25zXHJcbiAqIChhZGQgLyBlZGl0IC8gcmVvcmRlciAvIHJlbW92ZSksIHBlcnNpc3RlZCB0byB0aGUgZ3JvdXBzIGJhY2tlbmQgdmlhXHJcbiAqIEludGVyZXN0Rm9ybVNlcnZpY2UuIEVhY2ggcXVlc3Rpb24gaXMgc2F2ZWQgaW5kaXZpZHVhbGx5IChjcmVhdGUvdXBkYXRlKSBhbmRcclxuICogdGhlIGVuYWJsZSBtb2RlICsgZGVmYXVsdCBsZXZlbCBhcmUgc2F2ZWQgdmlhIHRoZSBpbnRlcmVzdC1jb25maWcgZW5kcG9pbnQuXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIEludGVyZXN0Rm9ybUNvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtaW50ZXJlc3QtZm9ybScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBEcmFnRHJvcE1vZHVsZSxcclxuICAgIFNsaWRlVG9nZ2xlQ29tcG9uZW50LFxyXG4gICAgUmFkaW9Db21wb25lbnQsXHJcbiAgICBDdXN0b21RdWVzdGlvbkVkaXRvckNvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnRlcmVzdC1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnRlcmVzdC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEludGVyZXN0Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IGNvbnN0YW50cztcclxuICBpbnRlcmVzdEZvcm1UZXh0cyA9IHRoaXMuY29uc3RhbnRzPy5yb3N0ZXJJbnRlcmVzdHM/LmludGVyZXN0Rm9ybTtcclxuICBjaGFuZ2VzTm90aWNlID0gdGhpcy5pbnRlcmVzdEZvcm1UZXh0cz8uY2hhbmdlc05vdGljZTtcclxuICBzZWN0aW9uVGl0bGUgPSB0aGlzLmludGVyZXN0Rm9ybVRleHRzPy5zZWN0aW9uVGl0bGU7XHJcbiAgc2VjdGlvbkRlc2NyaXB0aW9uID0gdGhpcy5pbnRlcmVzdEZvcm1UZXh0cz8uc2VjdGlvbkRlc2NyaXB0aW9uO1xyXG4gIHN0YW5kYXJkUXVlc3Rpb25zVGl0bGUgPSB0aGlzLmludGVyZXN0Rm9ybVRleHRzPy5zdGFuZGFyZFF1ZXN0aW9uc1RpdGxlO1xyXG4gIHN0YW5kYXJkUXVlc3Rpb25zSGludCA9IHRoaXMuaW50ZXJlc3RGb3JtVGV4dHM/LnN0YW5kYXJkUXVlc3Rpb25zSGludDtcclxuICBkZWZhdWx0TWVtYmVyc2hpcFRpdGxlID0gdGhpcy5pbnRlcmVzdEZvcm1UZXh0cz8uZGVmYXVsdE1lbWJlcnNoaXBUaXRsZTtcclxuICBkZWZhdWx0TWVtYmVyc2hpcERlc2NyaXB0aW9uID1cclxuICAgIHRoaXMuaW50ZXJlc3RGb3JtVGV4dHM/LmRlZmF1bHRNZW1iZXJzaGlwRGVzY3JpcHRpb247XHJcbiAgY3VzdG9tUXVlc3Rpb25zVGl0bGUgPSB0aGlzLmludGVyZXN0Rm9ybVRleHRzPy5jdXN0b21RdWVzdGlvbnNUaXRsZTtcclxuICBhZGRRdWVzdGlvbkxhYmVsID0gdGhpcy5pbnRlcmVzdEZvcm1UZXh0cz8uYWRkUXVlc3Rpb25MYWJlbDtcclxuICByZXF1aXJlZFRhZyA9IHRoaXMuaW50ZXJlc3RGb3JtVGV4dHM/LnJlcXVpcmVkVGFnO1xyXG4gIHN0YW5kYXJkVGFnID0gdGhpcy5pbnRlcmVzdEZvcm1UZXh0cz8uc3RhbmRhcmRUYWc7XHJcbiAgbmV3UXVlc3Rpb25MYWJlbCA9IHRoaXMuaW50ZXJlc3RGb3JtVGV4dHM/Lm5ld1F1ZXN0aW9uTGFiZWw7XHJcbiAgZWRpdFF1ZXN0aW9uQXJpYUxhYmVsID0gdGhpcy5pbnRlcmVzdEZvcm1UZXh0cz8uZWRpdFF1ZXN0aW9uQXJpYUxhYmVsO1xyXG4gIGRlbGV0ZVF1ZXN0aW9uQXJpYUxhYmVsID0gdGhpcy5pbnRlcmVzdEZvcm1UZXh0cz8uZGVsZXRlUXVlc3Rpb25BcmlhTGFiZWw7XHJcbiAgbm9MZXZlbHNNZXNzYWdlID0gdGhpcy5pbnRlcmVzdEZvcm1UZXh0cz8ubm9MZXZlbHNNZXNzYWdlO1xyXG4gIHR5cGVMYWJlbHMgPSB0aGlzLmludGVyZXN0Rm9ybVRleHRzPy5xdWVzdGlvbkVkaXRvcj8udHlwZXM7XHJcbiAgY2FuY2VsTGFiZWwgPSB0aGlzLmNvbnN0YW50cz8ucm9zdGVySW50ZXJlc3RzPy5mb290ZXI/LmNhbmNlbDtcclxuICBwcmV2aWV3TGFiZWwgPSB0aGlzLmNvbnN0YW50cz8ucm9zdGVySW50ZXJlc3RzPy5mb290ZXI/LnByZXZpZXc7XHJcblxyXG4gIGVuYWJsZUZvcm1Ub2dnbGUhOiBTbGlkZVRvZ2dsZU9wdGlvbjtcclxuICBzdGFuZGFyZFF1ZXN0aW9uczogU3RhbmRhcmRRdWVzdGlvblJvd1tdID0gW107XHJcbiAgbWVtYmVyc2hpcExldmVsczogUmFkaW9PcHRpb25bXSA9IFtdO1xyXG4gIC8vIERlZmF1bHRzIHRvIGRpc2FibGVkIChPRkYpLiBUaGUgcmVhbCBzdGF0ZSBpcyBkcml2ZW4gYnkgdGhlIEFQSSByZXNwb25zZSBpblxyXG4gIC8vIGxvYWRDb25maWc7IHdoZW4gbm8gY29uZmlnIGhhcyBiZWVuIHNhdmVkIHlldCB0aGUgYmFja2VuZCByZXR1cm5zIERJU0FCTEVELFxyXG4gIC8vIHNvIHRoZSBmaXJzdC10aW1lIHZpZXcgY29ycmVjdGx5IHNob3dzIHRoZSB0b2dnbGUgT0ZGLlxyXG4gIGlzRm9ybUVuYWJsZWQgPSBmYWxzZTtcclxuICBzZWxlY3RlZExldmVsSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGxldmVsczogR3JvdXBSb2xlW10gPSBbXTtcclxuXHJcbiAgY3VzdG9tUXVlc3Rpb25zOiBDdXN0b21RdWVzdGlvbltdID0gW107XHJcbiAgZWRpdGluZ1F1ZXN0aW9uSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgaXNFZGl0aW5nTmV3UXVlc3Rpb24gPSBmYWxzZTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8dW5rbm93bj4sXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZ3JvdXA6IEdyb3VwSW5mbyxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBpbnRlcmVzdEZvcm1TZXJ2aWNlOiBJbnRlcmVzdEZvcm1TZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGdyb3Vwc1NlcnZpY2U6IEdyb3Vwc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyBzdGF0aWMgVUkgb3B0aW9ucyBhbmQgbG9hZHMgdGhlIGdyb3VwJ3MgaW50ZXJlc3QgY29uZmlnIGFuZFxyXG4gICAqIGN1c3RvbSBxdWVzdGlvbnMgZnJvbSB0aGUgYmFja2VuZC5cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmludGVyZXN0Rm9ybVNlcnZpY2Uuc2V0QXBpQmFzZVVybCh0aGlzLmdyb3Vwc1NlcnZpY2U/LmFwaUJhc2VVcmwpO1xyXG4gICAgdGhpcy5lbmFibGVGb3JtVG9nZ2xlID0ge1xyXG4gICAgICBpZDogMSxcclxuICAgICAgbGFiZWw6ICcnLFxyXG4gICAgICBjaGVja2VkOiB0aGlzLmlzRm9ybUVuYWJsZWQsXHJcbiAgICAgIGFyaWFMYWJlbDogdGhpcy5zZWN0aW9uVGl0bGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zdGFuZGFyZFF1ZXN0aW9ucyA9IChcclxuICAgICAgdGhpcy5pbnRlcmVzdEZvcm1UZXh0cz8uc3RhbmRhcmRRdWVzdGlvbnMgPz8gW11cclxuICAgICkubWFwKChsYWJlbDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiAoe1xyXG4gICAgICBpZDogaW5kZXggKyAxLFxyXG4gICAgICBsYWJlbCxcclxuICAgICAgdGFnOiB0aGlzLnN0YW5kYXJkVGFnLFxyXG4gICAgfSkpO1xyXG4gICAgaWYgKHRoaXMuZ3JvdXA/Lmdyb3VwSWQpIHtcclxuICAgICAgdGhpcy5sb2FkTWVtYmVyc2hpcExldmVscygpO1xyXG4gICAgICB0aGlzLmxvYWRRdWVzdGlvbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWRzIHRoZSByZWFsIG1lbWJlcnNoaXAgbGV2ZWxzIGZvciB0aGUgZ3JvdXAncyBncm91cCB0eXBlIGFuZCB0aGVuIHRoZVxyXG4gICAqIHNhdmVkIGludGVyZXN0IGNvbmZpZ3VyYXRpb24gKHNvIHRoZSBzYXZlZCBkZWZhdWx0IGxldmVsIGNhbiBiZVxyXG4gICAqIHByZXNlbGVjdGVkKS5cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbG9hZE1lbWJlcnNoaXBMZXZlbHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBhcHBJZCA9IHRoaXMuZ3JvdXBzU2VydmljZT8uZ2V0VXNlckluZm8oKT8uYXBwSWQ7XHJcbiAgICBpZiAoIWFwcElkKSB7XHJcbiAgICAgIHRoaXMubG9hZENvbmZpZygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmludGVyZXN0Rm9ybVNlcnZpY2VcclxuICAgICAgLmdldFJvbGVzKGFwcElkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgLy8gTWVtYmVyIGxldmVscyBhcmUgdGhlIHJvbGVzIHdob3NlIHJvbGVUeXBlTmFtZSBpcyBcIk1lbWJlciBMZXZlbFwiLlxyXG4gICAgICAgICAgdGhpcy5sZXZlbHMgPSAocmVzcG9uc2U/LmJvZHkgPz8gW10pLmZpbHRlcihcclxuICAgICAgICAgICAgKHJvbGUpID0+IHJvbGUucm9sZVR5cGVOYW1lID09PSBNRU1CRVJfTEVWRUxfUk9MRV9UWVBFXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5sb2FkQ29uZmlnKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgICAgICAgIHRoaXMubG9hZENvbmZpZygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZHMgdGhlIGdyb3VwJ3MgaW50ZXJlc3QgY29uZmlndXJhdGlvbiAobW9kZSArIGRlZmF1bHQgbGV2ZWwpIGFuZCBzeW5jc1xyXG4gICAqIHRoZSB0b2dnbGUgYW5kIHRoZSBkZWZhdWx0LWxldmVsIHJhZGlvIHNlbGVjdGlvbi5cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbG9hZENvbmZpZygpOiB2b2lkIHtcclxuICAgIHRoaXMuaW50ZXJlc3RGb3JtU2VydmljZVxyXG4gICAgICAuZ2V0SW50ZXJlc3RDb25maWcodGhpcy5ncm91cC5ncm91cElkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY29uZmlnID0gcmVzcG9uc2U/LmJvZHk7XHJcbiAgICAgICAgICB0aGlzLmlzRm9ybUVuYWJsZWQgPSBjb25maWc/LmludGVyZXN0TW9kZSA9PT0gSW50ZXJlc3RNb2RlLkZPUk07XHJcbiAgICAgICAgICB0aGlzLmVuYWJsZUZvcm1Ub2dnbGUgPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZW5hYmxlRm9ybVRvZ2dsZSxcclxuICAgICAgICAgICAgY2hlY2tlZDogdGhpcy5pc0Zvcm1FbmFibGVkLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIC8vIFByZXNlbGVjdCB0aGUgc2F2ZWQgZGVmYXVsdCBsZXZlbCwgZWxzZSB0aGUgZmlyc3QgbWVtYmVyIGxldmVsLlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZExldmVsSWQgPVxyXG4gICAgICAgICAgICBjb25maWc/LmRlZmF1bHRMZXZlbElkID8/IHRoaXMubGV2ZWxzWzBdPy5yb2xlSWQgPz8gbnVsbDtcclxuICAgICAgICAgIHRoaXMuYnVpbGRNZW1iZXJzaGlwTGV2ZWxPcHRpb25zKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCdWlsZHMgdGhlIHJhZGlvIG9wdGlvbnMgZnJvbSB0aGUgcmVhbCBtZW1iZXJzaGlwIGxldmVscywgbWFya2luZyB0aGVcclxuICAgKiBjdXJyZW50bHkgc2VsZWN0ZWQgbGV2ZWwgYXMgY2hlY2tlZC5cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtQ29tcG9uZW50XHJcbiAgICovXHJcbiAgYnVpbGRNZW1iZXJzaGlwTGV2ZWxPcHRpb25zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5tZW1iZXJzaGlwTGV2ZWxzID0gdGhpcy5sZXZlbHMubWFwKChsZXZlbCkgPT4gKHtcclxuICAgICAgaWQ6IGxldmVsLnJvbGVJZCxcclxuICAgICAgbGFiZWw6IGxldmVsLnJvbGVOYW1lLFxyXG4gICAgICBjaGVja2VkOiBsZXZlbC5yb2xlSWQgPT09IHRoaXMuc2VsZWN0ZWRMZXZlbElkLFxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZHMgdGhlIGdyb3VwJ3MgY3VzdG9tIHF1ZXN0aW9ucy5cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbG9hZFF1ZXN0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuaW50ZXJlc3RGb3JtU2VydmljZVxyXG4gICAgICAuZ2V0UXVlc3Rpb25zKHRoaXMuZ3JvdXAuZ3JvdXBJZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuY3VzdG9tUXVlc3Rpb25zID0gcmVzcG9uc2U/LmJvZHkgPz8gW107XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBmb3JtLWVuYWJsZWQgc3RhdGUgYW5kIHBlcnNpc3RzIHRoZSBuZXcgaW50ZXJlc3QgbW9kZS5cclxuICAgKiBAcGFyYW0ge1NsaWRlVG9nZ2xlT3B0aW9ufSB0b2dnbGVcclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25FbmFibGVGb3JtVG9nZ2xlKHRvZ2dsZTogU2xpZGVUb2dnbGVPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNGb3JtRW5hYmxlZCA9IHRvZ2dsZT8uY2hlY2tlZDtcclxuICAgIGlmICghdGhpcy5pc0Zvcm1FbmFibGVkKSB7XHJcbiAgICAgIC8vIERpc2FibGluZyBhbHdheXMgcGVyc2lzdHMgaW1tZWRpYXRlbHkgKG5vIGxldmVsIG5lZWRlZCkuXHJcbiAgICAgIHRoaXMuc2F2ZUNvbmZpZygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBFbmFibGluZyByZXF1aXJlcyBhIGRlZmF1bHQgbGV2ZWwgKGJhY2tlbmQgcmVqZWN0cyBGT1JNIHdpdGhvdXQgb25lKS4gSWZcclxuICAgIC8vIG5vbmUgaXMgc2VsZWN0ZWQgeWV0LCBhdXRvLXNlbGVjdCB0aGUgbGV2ZWwgZmxhZ2dlZCBkZWZhdWx0LCBlbHNlIHRoZVxyXG4gICAgLy8gZmlyc3QgYXZhaWxhYmxlIGxldmVsLCBzbyB0aGUgdG9nZ2xlIHBlcnNpc3RzIGltbWVkaWF0ZWx5LlxyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkTGV2ZWxJZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTGV2ZWxJZCA9IHRoaXMubGV2ZWxzWzBdPy5yb2xlSWQgPz8gbnVsbDtcclxuICAgICAgdGhpcy5idWlsZE1lbWJlcnNoaXBMZXZlbE9wdGlvbnMoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTGV2ZWxJZCkge1xyXG4gICAgICB0aGlzLnNhdmVDb25maWcoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIE5vIG1lbWJlcnNoaXAgbGV2ZWxzIGNvbmZpZ3VyZWQgZm9yIHRoaXMgZ3JvdXAgdHlwZTogY2Fubm90IGVuYWJsZS5cclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgICBzdGF0dXM6ICdjdXN0b20nLFxyXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMuaW50ZXJlc3RGb3JtVGV4dHM/Lm5vTGV2ZWxzTWVzc2FnZSxcclxuICAgICAgICBhbGVydFR5cGU6IEFsZXJ0VHlwZT8uRVJST1IsXHJcbiAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJzaXN0cyB0aGUgaW50ZXJlc3QgY29uZmlnLiBUaGUgZGVmYXVsdCBsZXZlbCBpcyBvbmx5IHNlbnQgZm9yIHRoZVxyXG4gICAqIGVuYWJsZWQgKEZPUk0pIG1vZGU7IERJU0FCTEVEIGNsZWFycyBpdC4gRW5hYmxpbmcgd2l0aG91dCBhIHNlbGVjdGVkIGxldmVsXHJcbiAgICogaXMgc2tpcHBlZCBzbyBhbiBpbnZhbGlkIHJlcXVlc3QgaXMgbmV2ZXIgc2VudC5cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2F2ZUNvbmZpZygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5ncm91cD8uZ3JvdXBJZCkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuaXNGb3JtRW5hYmxlZCAmJiAhdGhpcy5zZWxlY3RlZExldmVsSWQpIHJldHVybjtcclxuICAgIHRoaXMuaW50ZXJlc3RGb3JtU2VydmljZVxyXG4gICAgICAuc2F2ZUludGVyZXN0Q29uZmlnKHtcclxuICAgICAgICBncm91cElkOiB0aGlzLmdyb3VwLmdyb3VwSWQsXHJcbiAgICAgICAgaW50ZXJlc3RNb2RlOiB0aGlzLmlzRm9ybUVuYWJsZWRcclxuICAgICAgICAgID8gSW50ZXJlc3RNb2RlLkZPUk1cclxuICAgICAgICAgIDogSW50ZXJlc3RNb2RlLkRJU0FCTEVELFxyXG4gICAgICAgIGRlZmF1bHRMZXZlbElkOiB0aGlzLmlzRm9ybUVuYWJsZWQgPyB0aGlzLnNlbGVjdGVkTGV2ZWxJZCA6IG51bGwsXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvciksXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVjb3JkcyB0aGUgc2VsZWN0ZWQgZGVmYXVsdCBtZW1iZXJzaGlwIGxldmVsIGFuZCBwZXJzaXN0cyB0aGUgY29uZmlnIHdoZW5cclxuICAgKiB0aGUgZm9ybSBpcyBlbmFibGVkLlxyXG4gICAqIEBwYXJhbSB7UmFkaW9PcHRpb259IG9wdGlvblxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdEZvcm1Db21wb25lbnRcclxuICAgKi9cclxuICBvbk1lbWJlcnNoaXBMZXZlbENoYW5nZShvcHRpb246IFJhZGlvT3B0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkTGV2ZWxJZCA9IFN0cmluZyhvcHRpb24/LmlkKTtcclxuICAgIGlmICh0aGlzLmlzRm9ybUVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5zYXZlQ29uZmlnKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzIGEgbmV3IGJsYW5rIHF1ZXN0aW9uIGFuZCBvcGVucyBpdHMgZWRpdG9yLiBPbmx5IG9uZSBlZGl0b3IgaXMgb3BlbiBhdFxyXG4gICAqIGEgdGltZS5cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25BZGRRdWVzdGlvbigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmVkaXRpbmdRdWVzdGlvbklkKSByZXR1cm47XHJcbiAgICBjb25zdCB0ZW1wSWQgPSBgbmV3LSR7RGF0ZS5ub3coKX1gO1xyXG4gICAgY29uc3QgbmV3UXVlc3Rpb246IEN1c3RvbVF1ZXN0aW9uID0ge1xyXG4gICAgICBxdWVzdGlvbklkOiB0ZW1wSWQsXHJcbiAgICAgIGdyb3VwSWQ6IHRoaXMuZ3JvdXA/Lmdyb3VwSWQsXHJcbiAgICAgIHF1ZXN0aW9uTGFiZWw6ICcnLFxyXG4gICAgICBmaWVsZFR5cGU6IG51bGwsXHJcbiAgICAgIGlzUmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgICAgaGVscFRleHQ6ICcnLFxyXG4gICAgICBvcHRpb25zOiB1bmRlZmluZWQsXHJcbiAgICAgIHZpZXdPcmRlcjogdGhpcy5jdXN0b21RdWVzdGlvbnMubGVuZ3RoLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3VzdG9tUXVlc3Rpb25zID0gWy4uLnRoaXMuY3VzdG9tUXVlc3Rpb25zLCBuZXdRdWVzdGlvbl07XHJcbiAgICB0aGlzLmVkaXRpbmdRdWVzdGlvbklkID0gdGVtcElkO1xyXG4gICAgdGhpcy5pc0VkaXRpbmdOZXdRdWVzdGlvbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVucyB0aGUgZWRpdG9yIGZvciBhbiBleGlzdGluZyBxdWVzdGlvbi5cclxuICAgKiBAcGFyYW0ge0N1c3RvbVF1ZXN0aW9ufSBxdWVzdGlvblxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdEZvcm1Db21wb25lbnRcclxuICAgKi9cclxuICBvbkVkaXRRdWVzdGlvbihxdWVzdGlvbjogQ3VzdG9tUXVlc3Rpb24pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmVkaXRpbmdRdWVzdGlvbklkKSByZXR1cm47XHJcbiAgICB0aGlzLmVkaXRpbmdRdWVzdGlvbklkID0gcXVlc3Rpb24ucXVlc3Rpb25JZCA/PyBudWxsO1xyXG4gICAgdGhpcy5pc0VkaXRpbmdOZXdRdWVzdGlvbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBvciB1cGRhdGVzIHRoZSBxdWVzdGlvbiBvbiB0aGUgYmFja2VuZCBhbmQgcmVmcmVzaGVzIHRoZSBsaXN0LlxyXG4gICAqIEBwYXJhbSB7Q3VzdG9tUXVlc3Rpb259IHF1ZXN0aW9uXHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0Rm9ybUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uU2F2ZVF1ZXN0aW9uKHF1ZXN0aW9uOiBDdXN0b21RdWVzdGlvbik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNFZGl0aW5nTmV3UXVlc3Rpb24pIHtcclxuICAgICAgY29uc3QgcGF5bG9hZDogQ3VzdG9tUXVlc3Rpb24gPSB7IC4uLnF1ZXN0aW9uIH07XHJcbiAgICAgIC8vIFJlbW92ZSB0aGUgdGVtcG9yYXJ5IGNsaWVudCBpZCBzbyB0aGUgYmFja2VuZCBnZW5lcmF0ZXMgb25lLlxyXG4gICAgICBkZWxldGUgcGF5bG9hZC5xdWVzdGlvbklkO1xyXG4gICAgICB0aGlzLmludGVyZXN0Rm9ybVNlcnZpY2VcclxuICAgICAgICAuY3JlYXRlUXVlc3Rpb24ocGF5bG9hZClcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKSA9PiB0aGlzLmFmdGVyUXVlc3Rpb25TYXZlZCgpLFxyXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvciksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmludGVyZXN0Rm9ybVNlcnZpY2VcclxuICAgICAgICAudXBkYXRlUXVlc3Rpb24ocXVlc3Rpb24pXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKCkgPT4gdGhpcy5hZnRlclF1ZXN0aW9uU2F2ZWQoKSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2VzIHRoZSBlZGl0b3IgYW5kIHJlbG9hZHMgdGhlIHF1ZXN0aW9ucyBhZnRlciBhIHN1Y2Nlc3NmdWwgc2F2ZS5cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZnRlclF1ZXN0aW9uU2F2ZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRpbmdRdWVzdGlvbklkID0gbnVsbDtcclxuICAgIHRoaXMuaXNFZGl0aW5nTmV3UXVlc3Rpb24gPSBmYWxzZTtcclxuICAgIHRoaXMubG9hZFF1ZXN0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2VzIHRoZSBlZGl0b3IuIEEgbmV3bHkgYWRkZWQgcXVlc3Rpb24gaXMgcmVtb3ZlZCBvbiBjYW5jZWw7IGFuIGV4aXN0aW5nXHJcbiAgICogcXVlc3Rpb24ga2VlcHMgaXRzIHByZXZpb3VzIHZhbHVlcy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gcXVlc3Rpb25JZFxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdEZvcm1Db21wb25lbnRcclxuICAgKi9cclxuICBvbkNhbmNlbFF1ZXN0aW9uKHF1ZXN0aW9uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNFZGl0aW5nTmV3UXVlc3Rpb24pIHtcclxuICAgICAgdGhpcy5jdXN0b21RdWVzdGlvbnMgPSB0aGlzLmN1c3RvbVF1ZXN0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgKHF1ZXN0aW9uKSA9PiBxdWVzdGlvbi5xdWVzdGlvbklkICE9PSBxdWVzdGlvbklkXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmVkaXRpbmdRdWVzdGlvbklkID0gbnVsbDtcclxuICAgIHRoaXMuaXNFZGl0aW5nTmV3UXVlc3Rpb24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgYSBxdWVzdGlvbiBvbiB0aGUgYmFja2VuZCBhbmQgcmVmcmVzaGVzIHRoZSBsaXN0LlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBxdWVzdGlvbklkXHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0Rm9ybUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRGVsZXRlUXVlc3Rpb24ocXVlc3Rpb25JZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICBpZiAoIXF1ZXN0aW9uSWQpIHJldHVybjtcclxuICAgIC8vIEEgbm90LXlldC1zYXZlZCBxdWVzdGlvbiBvbmx5IGV4aXN0cyBjbGllbnQtc2lkZS5cclxuICAgIGlmIChxdWVzdGlvbklkLnN0YXJ0c1dpdGgoJ25ldy0nKSkge1xyXG4gICAgICB0aGlzLm9uQ2FuY2VsUXVlc3Rpb24ocXVlc3Rpb25JZCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuaW50ZXJlc3RGb3JtU2VydmljZVxyXG4gICAgICAucmVtb3ZlUXVlc3Rpb24ocXVlc3Rpb25JZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5lZGl0aW5nUXVlc3Rpb25JZCA9PT0gcXVlc3Rpb25JZCkge1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRpbmdRdWVzdGlvbklkID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5pc0VkaXRpbmdOZXdRdWVzdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2FkUXVlc3Rpb25zKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW9yZGVycyBxdWVzdGlvbnMgb24gZHJhZy1kcm9wIGFuZCBwZXJzaXN0cyB0aGUgbmV3IG9yZGVyLlxyXG4gICAqIEBwYXJhbSB7Q2RrRHJhZ0Ryb3A8Q3VzdG9tUXVlc3Rpb25bXT59IGV2ZW50XHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0Rm9ybUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uUmVvcmRlclF1ZXN0aW9ucyhldmVudDogQ2RrRHJhZ0Ryb3A8Q3VzdG9tUXVlc3Rpb25bXT4pOiB2b2lkIHtcclxuICAgIGNvbnN0IHJlb3JkZXJlZCA9IFsuLi50aGlzLmN1c3RvbVF1ZXN0aW9uc107XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkocmVvcmRlcmVkLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgdGhpcy5jdXN0b21RdWVzdGlvbnMgPSByZW9yZGVyZWQubWFwKChxdWVzdGlvbiwgaW5kZXgpID0+ICh7XHJcbiAgICAgIC4uLnF1ZXN0aW9uLFxyXG4gICAgICB2aWV3T3JkZXI6IGluZGV4LFxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5pbnRlcmVzdEZvcm1TZXJ2aWNlXHJcbiAgICAgIC5yZW9yZGVyUXVlc3Rpb25zKFxyXG4gICAgICAgIHRoaXMuY3VzdG9tUXVlc3Rpb25zLm1hcCgocXVlc3Rpb24pID0+ICh7XHJcbiAgICAgICAgICBxdWVzdGlvbklkOiBxdWVzdGlvbi5xdWVzdGlvbklkIGFzIHN0cmluZyxcclxuICAgICAgICAgIHZpZXdPcmRlcjogcXVlc3Rpb24udmlld09yZGVyLFxyXG4gICAgICAgIH0pKVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvciksXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgZGlzcGxheSBsYWJlbCBmb3IgYSBxdWVzdGlvbidzIGZpZWxkIHR5cGUuXHJcbiAgICogQHBhcmFtIHsoUXVlc3Rpb25GaWVsZFR5cGUgfCBudWxsKX0gdHlwZVxyXG4gICAqIEByZXR1cm4ge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RGb3JtQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0VHlwZUxhYmVsKHR5cGU6IFF1ZXN0aW9uRmllbGRUeXBlIHwgbnVsbCk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSBRdWVzdGlvbkZpZWxkVHlwZS5URVhUOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnR5cGVMYWJlbHM/LnRleHQ7XHJcbiAgICAgIGNhc2UgUXVlc3Rpb25GaWVsZFR5cGUuVEVYVEFSRUE6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZUxhYmVscz8udGV4dEFyZWE7XHJcbiAgICAgIGNhc2UgUXVlc3Rpb25GaWVsZFR5cGUuU0VMRUNUOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnR5cGVMYWJlbHM/LmRyb3Bkb3duO1xyXG4gICAgICBjYXNlIFF1ZXN0aW9uRmllbGRUeXBlLkNIRUNLQk9YOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnR5cGVMYWJlbHM/LmNoZWNrYm94O1xyXG4gICAgICBjYXNlIFF1ZXN0aW9uRmllbGRUeXBlLlJBRElPOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnR5cGVMYWJlbHM/LnJhZGlvO1xyXG4gICAgICBjYXNlIFF1ZXN0aW9uRmllbGRUeXBlLkRBVEU6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZUxhYmVscz8uZGF0ZTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93cyBhbiBlcnJvciBhbGVydCBmb3IgYSBmYWlsZWQgaW50ZXJlc3QtZm9ybSBvcGVyYXRpb24uXHJcbiAgICogQHBhcmFtIHsqfSBlcnJvclxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdEZvcm1Db21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlPy5zaG93TWVzc2FnZSh7XHJcbiAgICAgIHN0YXR1czogJ2N1c3RvbScsXHJcbiAgICAgIG1lc3NhZ2U6IGVycm9yPy5lcnJvcj8ubWVzc2FnZSA/PyBlcnJvcj8ubWVzc2FnZSxcclxuICAgICAgYWxlcnRUeXBlOiBBbGVydFR5cGU/LkVSUk9SLFxyXG4gICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVucyB0aGUgaW50ZXJlc3QgZm9ybSBpbiByZWFkLW9ubHkgcHJldmlldyBtb2RlIChTUDNNLTMxNyBSNi43KSwgcmV1c2luZ1xyXG4gICAqIHRoZSBzaGFyZWQgZXhwcmVzcy1pbnRlcmVzdCBkaWFsb2cuIFNob3dzIHRoZSBhZG1pbidzIGN1cnJlbnQgY3VzdG9tXHJcbiAgICogcXVlc3Rpb25zIGFzIGFuIGVuZCB1c2VyIHdvdWxkIHNlZSB0aGVtOyBubyBzdWJtaXQsIENhbmNlbCBvbmx5LlxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdEZvcm1Db21wb25lbnRcclxuICAgKi9cclxuICBvblByZXZpZXcoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZz8ub3BlbihJbnRlcmVzdEZvcm1QcmV2aWV3Q29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNzIwcHgnLFxyXG4gICAgICBtYXhXaWR0aDogJzkydncnLFxyXG4gICAgICBtYXhIZWlnaHQ6ICc5MHZoJyxcclxuICAgICAgcGFuZWxDbGFzczogWydpZWVlc2EtbW9kYWwtZGlhbG9nJywgJ2llZWVzYS1pbnRlcmVzdC1mb3JtLXByZXZpZXcnXSxcclxuICAgICAgYXJpYU1vZGFsOiB0cnVlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZ3JvdXBOYW1lOiB0aGlzLmdyb3VwPy5ncm91cE5hbWUgPz8gJycsXHJcbiAgICAgICAgY3VzdG9tUXVlc3Rpb25zOiB0aGlzLmN1c3RvbVF1ZXN0aW9ucyxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2VzIHRoZSBSb3N0ZXIgSW50ZXJlc3RzIGRpYWxvZyAoQ2FuY2VsIGFjdGlvbikuXHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0Rm9ybUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBuZ0ZvciB0cmFja2luZyBmb3Igc3RhbmRhcmQgcXVlc3Rpb24gcm93cy5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcclxuICAgKiBAcGFyYW0ge1N0YW5kYXJkUXVlc3Rpb25Sb3d9IHF1ZXN0aW9uXHJcbiAgICogQHJldHVybiB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdEZvcm1Db21wb25lbnRcclxuICAgKi9cclxuICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgcXVlc3Rpb246IFN0YW5kYXJkUXVlc3Rpb25Sb3cpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHF1ZXN0aW9uLmlkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogbmdGb3IgdHJhY2tpbmcgZm9yIGN1c3RvbSBxdWVzdGlvbnMuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XHJcbiAgICogQHBhcmFtIHtDdXN0b21RdWVzdGlvbn0gcXVlc3Rpb25cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0Rm9ybUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHRyYWNrQnlRdWVzdGlvbklkKGluZGV4OiBudW1iZXIsIHF1ZXN0aW9uOiBDdXN0b21RdWVzdGlvbik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gcXVlc3Rpb24ucXVlc3Rpb25JZCBhcyBzdHJpbmc7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fbm90aWNlIGllZWVzYS1ib2R5LXNtLTE0XCIgcm9sZT1cIm5vdGVcIj5cclxuICAgIDxzdmdcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fbm90aWNlLWljb25cIlxyXG4gICAgICB3aWR0aD1cIjE2XCJcclxuICAgICAgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgPlxyXG4gICAgICA8cGF0aFxyXG4gICAgICAgIGQ9XCJNMTIgMkwxIDIxaDIyTDEyIDJ6bTAgNC41TDE5LjUgMTkuNWgtMTVMMTIgNi41ek0xMSAxMHY1aDJ2LTVoLTJ6bTAgNnYyaDJ2LTJoLTJ6XCJcclxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgLz5cclxuICAgIDwvc3ZnPlxyXG4gICAgPHNwYW4+e3sgY2hhbmdlc05vdGljZSB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fc2VjdGlvblwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19yb3cgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLXN0YXJ0XCJcclxuICAgID5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8aDIgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fc2VjdGlvbi10aXRsZSBpZWVlc2EtYm9keS1sZy1ib2xkLTE2IG0tMFwiPlxyXG4gICAgICAgICAge3sgc2VjdGlvblRpdGxlIH19XHJcbiAgICAgICAgPC9oMj5cclxuICAgICAgICA8cCBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19zZWN0aW9uLWRlc2MgaWVlZXNhLWJvZHktc20tMTQgbS0wXCI+XHJcbiAgICAgICAgICB7eyBzZWN0aW9uRGVzY3JpcHRpb24gfX1cclxuICAgICAgICA8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8aWVlZXNhLXNsaWRlLXRvZ2dsZVxyXG4gICAgICAgIFtzbGlkZVRvZ2dsZV09XCJlbmFibGVGb3JtVG9nZ2xlXCJcclxuICAgICAgICAoc2xpZGVUb2dnbGVDaGFuZ2UpPVwib25FbmFibGVGb3JtVG9nZ2xlKCRldmVudClcIlxyXG4gICAgICA+PC9pZWVlc2Etc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9zZWN0aW9uPlxyXG5cclxuICA8c2VjdGlvbiAqbmdJZj1cImlzRm9ybUVuYWJsZWRcIiBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19zZWN0aW9uXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX3NlY3Rpb24taGVhZGluZyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCJcclxuICAgID5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX2xvY2tcIlxyXG4gICAgICAgIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgIGhlaWdodD1cIjE2XCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTEyIDJhNSA1IDAgMCAwLTUgNXYzSDZhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMnYtOGEyIDIgMCAwIDAtMi0yaC0xVjdhNSA1IDAgMCAwLTUtNXptLTMgNWEzIDMgMCAwIDEgNiAwdjNIOVY3em0tMyA1aDEydjhINnYtOHpcIlxyXG4gICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICAgIDxoMiBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19zZWN0aW9uLXRpdGxlIGllZWVzYS1ib2R5LWxnLWJvbGQtMTYgbS0wXCI+XHJcbiAgICAgICAge3sgc3RhbmRhcmRRdWVzdGlvbnNUaXRsZSB9fVxyXG4gICAgICA8L2gyPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19oaW50IGllZWVzYS1ib2R5LXNtLTE0XCI+e3tcclxuICAgICAgICBzdGFuZGFyZFF1ZXN0aW9uc0hpbnRcclxuICAgICAgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDx1bCBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19zdGFuZGFyZC1saXN0XCI+XHJcbiAgICAgIDxsaVxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBzdGFuZGFyZFF1ZXN0aW9uczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19zdGFuZGFyZC1yb3cgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19zdGFuZGFyZC1sYWJlbCBpZWVlc2EtYm9keS1zbS0xNFwiPnt7XHJcbiAgICAgICAgICBxdWVzdGlvbi5sYWJlbFxyXG4gICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX3N0YW5kYXJkLXRhZyBpZWVlc2EtYm9keS1zbS0xNFwiPnt7XHJcbiAgICAgICAgICBxdWVzdGlvbi50YWdcclxuICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcbiAgPC9zZWN0aW9uPlxyXG5cclxuICA8c2VjdGlvbiAqbmdJZj1cImlzRm9ybUVuYWJsZWRcIiBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19zZWN0aW9uXCI+XHJcbiAgICA8aDIgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fc2VjdGlvbi10aXRsZSBpZWVlc2EtYm9keS1sZy1ib2xkLTE2IG0tMFwiPlxyXG4gICAgICB7eyBkZWZhdWx0TWVtYmVyc2hpcFRpdGxlIH19XHJcbiAgICA8L2gyPlxyXG4gICAgPHAgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fc2VjdGlvbi1kZXNjIGllZWVzYS1ib2R5LXNtLTE0XCI+XHJcbiAgICAgIHt7IGRlZmF1bHRNZW1iZXJzaGlwRGVzY3JpcHRpb24gfX1cclxuICAgIDwvcD5cclxuICAgIDxpZWVlc2EtcmFkaW9cclxuICAgICAgKm5nSWY9XCJtZW1iZXJzaGlwTGV2ZWxzLmxlbmd0aCA+IDBcIlxyXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWZhdWx0TWVtYmVyc2hpcExldmVsXCJcclxuICAgICAgW3JhZGlvR3JvdXBdPVwibWVtYmVyc2hpcExldmVsc1wiXHJcbiAgICAgIChzZWxlY3RlZFJhZGlvT3B0aW9uKT1cIm9uTWVtYmVyc2hpcExldmVsQ2hhbmdlKCRldmVudClcIlxyXG4gICAgPjwvaWVlZXNhLXJhZGlvPlxyXG4gICAgPHBcclxuICAgICAgKm5nSWY9XCJtZW1iZXJzaGlwTGV2ZWxzLmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX3NlY3Rpb24tZGVzYyBpZWVlc2EtYm9keS1zbS0xNFwiXHJcbiAgICA+XHJcbiAgICAgIHt7IG5vTGV2ZWxzTWVzc2FnZSB9fVxyXG4gICAgPC9wPlxyXG4gIDwvc2VjdGlvbj5cclxuXHJcbiAgPHNlY3Rpb24gKm5nSWY9XCJpc0Zvcm1FbmFibGVkXCIgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fc2VjdGlvblwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19jdXN0b20taGVhZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgPlxyXG4gICAgICA8aDIgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fc2VjdGlvbi10aXRsZSBpZWVlc2EtYm9keS1sZy1ib2xkLTE2IG0tMFwiPlxyXG4gICAgICAgIHt7IGN1c3RvbVF1ZXN0aW9uc1RpdGxlIH19XHJcbiAgICAgIDwvaDI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19hZGQtcXVlc3Rpb24gaWVlZXNhLWJvZHktc20tMTRcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJlZGl0aW5nUXVlc3Rpb25JZFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uQWRkUXVlc3Rpb24oKVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhZGRRdWVzdGlvbkxhYmVsXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IGFkZFF1ZXN0aW9uTGFiZWwgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX3F1ZXN0aW9uLWxpc3RcIlxyXG4gICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uUmVvcmRlclF1ZXN0aW9ucygkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBjdXN0b21RdWVzdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlRdWVzdGlvbklkXCJcclxuICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJlZGl0aW5nUXVlc3Rpb25JZFwiXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fcXVlc3Rpb25cIlxyXG4gICAgICAgIFtjbGFzcy5pZWVlc2EtaW50ZXJlc3QtZm9ybV9fcXVlc3Rpb24tLWVkaXRpbmddPVwiXHJcbiAgICAgICAgICBlZGl0aW5nUXVlc3Rpb25JZCA9PT0gcXVlc3Rpb24ucXVlc3Rpb25JZFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19xdWVzdGlvbi1yb3cgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMlwiXHJcbiAgICAgICAgICBbY2xhc3MuaWVlZXNhLWludGVyZXN0LWZvcm1fX3F1ZXN0aW9uLXJvdy0tZWRpdGluZ109XCJcclxuICAgICAgICAgICAgZWRpdGluZ1F1ZXN0aW9uSWQgPT09IHF1ZXN0aW9uLnF1ZXN0aW9uSWRcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgaWVlZXNhLWludGVyZXN0LWZvcm1fX3F1ZXN0aW9uLW1haW5cIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19kcmFnLWhhbmRsZVwiXHJcbiAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxyXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTIgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjNcIiBjeT1cIjJcIiByPVwiMS41XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz5cclxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCIyXCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiM1wiIGN5PVwiOFwiIHI9XCIxLjVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjhcIiByPVwiMS41XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz5cclxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIzXCIgY3k9XCIxNFwiIHI9XCIxLjVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjE0XCIgcj1cIjEuNVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fcXVlc3Rpb24tbGFiZWwgaWVlZXNhLWJvZHktc20tMTRcIj5cclxuICAgICAgICAgICAgICB7eyBxdWVzdGlvbi5xdWVzdGlvbkxhYmVsIHx8IG5ld1F1ZXN0aW9uTGFiZWwgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uZmllbGRUeXBlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1mb3JtX19jaGlwIGllZWVzYS1pbnRlcmVzdC1mb3JtX19jaGlwLS10eXBlIGllZWVzYS1ib2R5LXNtLTE0XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IGdldFR5cGVMYWJlbChxdWVzdGlvbi5maWVsZFR5cGUpIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlzUmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX2NoaXAgaWVlZXNhLWludGVyZXN0LWZvcm1fX2NoaXAtLXJlcXVpcmVkIGllZWVzYS1ib2R5LXNtLTE0XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IHJlcXVpcmVkVGFnIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZWRpdGluZ1F1ZXN0aW9uSWQgIT09IHF1ZXN0aW9uLnF1ZXN0aW9uSWRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX2ljb24tYnRuXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25FZGl0UXVlc3Rpb24ocXVlc3Rpb24pXCJcclxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImVkaXRRdWVzdGlvbkFyaWFMYWJlbFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE2LjA2LjU5bDEuMzUgMS4zNWMuNzkuNzguNzkgMi4wNSAwIDIuODNMNC4xOCAxOEgwdi00LjE4TDEwLjQgMy40MSAxMy4yMy41OWMuNzgtLjc4IDIuMDUtLjc4IDIuODMgMHpNMiAxNmwxLjQxLjA2TDEzLjIzIDYuMjNsLTEuNDEtMS40MUwyIDE0LjY0VjE2elwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9faWNvbi1idG4gaWVlZXNhLWludGVyZXN0LWZvcm1fX2ljb24tYnRuLS1kZWxldGVcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZVF1ZXN0aW9uKHF1ZXN0aW9uLnF1ZXN0aW9uSWQpXCJcclxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImRlbGV0ZVF1ZXN0aW9uQXJpYUxhYmVsXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTUgM1Y0SDIwVjZIMTlWMTlDMTkgMjAuMSAxOC4xIDIxIDE3IDIxSDdDNS45IDIxIDUgMjAuMSA1IDE5VjZINFY0SDlWM0gxNVpNNyAxOUgxN1Y2SDdWMTlaTTkgOEgxMVYxN0g5VjhaTTE1IDhIMTNWMTdIMTVWOFpcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8aWVlZXNhLWN1c3RvbS1xdWVzdGlvbi1lZGl0b3JcclxuICAgICAgICAgICpuZ0lmPVwiZWRpdGluZ1F1ZXN0aW9uSWQgPT09IHF1ZXN0aW9uLnF1ZXN0aW9uSWRcIlxyXG4gICAgICAgICAgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcclxuICAgICAgICAgIChzYXZlKT1cIm9uU2F2ZVF1ZXN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgKGNhbmNlbCk9XCJvbkNhbmNlbFF1ZXN0aW9uKHF1ZXN0aW9uLnF1ZXN0aW9uSWQpXCJcclxuICAgICAgICA+PC9pZWVlc2EtY3VzdG9tLXF1ZXN0aW9uLWVkaXRvcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NlY3Rpb24+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtZm9ybV9fZm9vdGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgZ2FwLTNcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX2NhbmNlbFwiXHJcbiAgICAgIChjbGljayk9XCJvbkNhbmNlbCgpXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjYW5jZWxMYWJlbFwiXHJcbiAgICA+XHJcbiAgICAgIHt7IGNhbmNlbExhYmVsIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nSWY9XCJpc0Zvcm1FbmFibGVkXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LWZvcm1fX3ByZXZpZXdcIlxyXG4gICAgICAoY2xpY2spPVwib25QcmV2aWV3KClcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByZXZpZXdMYWJlbFwiXHJcbiAgICA+XHJcbiAgICAgIHt7IHByZXZpZXdMYWJlbCB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=