@ieeesa-npm/groups 0.15.11 → 0.15.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/assets/constants.json +27 -5
- package/esm2022/lib/assets/country-calling-codes.mjs +83 -0
- package/esm2022/lib/assets/form-validations.mjs +7 -2
- package/esm2022/lib/components/add-user-roster/add-user-roster.component.mjs +160 -3
- package/esm2022/lib/components/edit-user-roles/edit-user-roles.component.mjs +102 -4
- package/esm2022/lib/components/roster-import/roster-import.component.mjs +31 -3
- package/esm2022/lib/components/view-roster/view-roster.component.mjs +13 -4
- package/esm2022/lib/models/add-new-user.model.mjs +1 -1
- package/esm2022/lib/models/add-or-edit-user-group.model.mjs +1 -1
- package/esm2022/lib/models/group-user-info.model.mjs +1 -1
- package/esm2022/lib/models/required-profile-fields.model.mjs +2 -0
- package/esm2022/lib/models/table-column-schema-user-group.model.mjs +3 -1
- package/esm2022/lib/models/user-info.model.mjs +1 -1
- package/esm2022/lib/models/user.model.mjs +1 -1
- package/esm2022/lib/services/groups.service.mjs +58 -7
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ieeesa-npm-groups.mjs +473 -22
- package/fesm2022/ieeesa-npm-groups.mjs.map +1 -1
- package/lib/assets/country-calling-codes.d.ts +14 -0
- package/lib/assets/form-validations.d.ts +3 -0
- package/lib/components/add-user-roster/add-user-roster.component.d.ts +18 -0
- package/lib/components/create-group/create-group.component.d.ts +7 -2
- package/lib/components/edit-user-roles/edit-user-roles.component.d.ts +19 -0
- package/lib/components/roster-import/roster-import.component.d.ts +8 -0
- package/lib/models/add-new-user.model.d.ts +3 -0
- package/lib/models/add-or-edit-user-group.model.d.ts +3 -0
- package/lib/models/group-user-info.model.d.ts +3 -0
- package/lib/models/required-profile-fields.model.d.ts +20 -0
- package/lib/models/table-column-schema-user-group.model.d.ts +3 -1
- package/lib/models/user-info.model.d.ts +3 -0
- package/lib/models/user.model.d.ts +6 -0
- package/lib/services/groups.service.d.ts +29 -4
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -8,6 +8,7 @@ import { FormStatus, AlertType } from '@ieeesa-npm/models';
|
|
|
8
8
|
import { HttpErrorResponse } from '@angular/common/http';
|
|
9
9
|
import { GroupRosterType } from '../../models/roster-type.model';
|
|
10
10
|
import { GroupsValidationPatterns, representingOrgRequiredValidator, skipWhenArray, } from '../../assets/form-validations';
|
|
11
|
+
import { DEFAULT_COUNTRY_CALLING_CODE } from '../../assets/country-calling-codes';
|
|
11
12
|
import { OrgMultiSelectComponent } from '../org-multi-select/org-multi-select.component';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
import * as i1 from "../../services/groups.service";
|
|
@@ -55,7 +56,10 @@ export class EditUserRolesComponent {
|
|
|
55
56
|
this.organizations = [];
|
|
56
57
|
this.hasClassification = false;
|
|
57
58
|
this.representingOrganizations = [];
|
|
59
|
+
this.countryCallingCodes = [];
|
|
58
60
|
this.orgSearchValue = '';
|
|
61
|
+
// Tenant-configured optional profile fields (e.g. 'phone', 'address') to show on the edit-user form.
|
|
62
|
+
this.requiredProfileFields = [];
|
|
59
63
|
/**
|
|
60
64
|
* True when the org field holds an uncommitted, invalid free-text token. Used
|
|
61
65
|
* to keep Save disabled even when a valid chip already exists.
|
|
@@ -71,6 +75,7 @@ export class EditUserRolesComponent {
|
|
|
71
75
|
*/
|
|
72
76
|
ngOnInit() {
|
|
73
77
|
this.selectedUserInfo = this.groupsService?.getSelectedUserInfo();
|
|
78
|
+
this.countryCallingCodes = this.groupsService?.getCountryCallingCodes();
|
|
74
79
|
this.groupsService.representingOrganizations.forEach((user) => {
|
|
75
80
|
if (this.selectedUserInfo.userId === user.userId &&
|
|
76
81
|
user.organizations?.length) {
|
|
@@ -112,7 +117,9 @@ export class EditUserRolesComponent {
|
|
|
112
117
|
this.getClassifications();
|
|
113
118
|
this.getMemberTypes();
|
|
114
119
|
}
|
|
115
|
-
|
|
120
|
+
// Build the form only once the required-profile-fields response is known,
|
|
121
|
+
// so the phone/address fields aren't shown then yanked away.
|
|
122
|
+
this.getRequiredProfileFields();
|
|
116
123
|
}
|
|
117
124
|
}
|
|
118
125
|
/**
|
|
@@ -147,6 +154,61 @@ export class EditUserRolesComponent {
|
|
|
147
154
|
ariaMultiline: false,
|
|
148
155
|
isResize: true,
|
|
149
156
|
},
|
|
157
|
+
// Phone (combined country code + number), shown only when the
|
|
158
|
+
// tenant's required-profile-fields config requests it. Prefilled
|
|
159
|
+
// from the selected user; read-only with a pencil toggle when a
|
|
160
|
+
// value exists, else editable directly.
|
|
161
|
+
...(this.requiredProfileFields.includes('phone')
|
|
162
|
+
? [
|
|
163
|
+
{
|
|
164
|
+
type: FormControlType.PHONE,
|
|
165
|
+
label: this.addUserRosterTexts?.label?.phoneNumber + '*',
|
|
166
|
+
controlName: 'phone',
|
|
167
|
+
dropdownOptions: this.countryCallingCodes,
|
|
168
|
+
value: {
|
|
169
|
+
countryCode: this.selectedUserInfo?.phoneCountryCode ??
|
|
170
|
+
DEFAULT_COUNTRY_CALLING_CODE,
|
|
171
|
+
phoneNumber: this.selectedUserInfo?.phoneNumber ?? '',
|
|
172
|
+
},
|
|
173
|
+
isEditToggle: !!this.selectedUserInfo?.phoneNumber,
|
|
174
|
+
validation: [Validators.required],
|
|
175
|
+
maxLength: GroupsValidationPatterns.phoneNumberMaxLength,
|
|
176
|
+
requiredErrorMessage: this.addUserRosterTexts?.message?.error?.required,
|
|
177
|
+
supportMessage: this.addUserRosterTexts?.supportText?.phoneNumber,
|
|
178
|
+
ariaLabel: this.addUserRosterTexts?.label?.ariaLabel?.phoneNumber,
|
|
179
|
+
ariaDescribedById: this.addUserRosterTexts?.label?.ariaDescribedById
|
|
180
|
+
?.phoneNumber,
|
|
181
|
+
},
|
|
182
|
+
]
|
|
183
|
+
: []),
|
|
184
|
+
// Address, shown only when the tenant's required-profile-fields
|
|
185
|
+
// config requests it. Prefilled from the selected user; read-only
|
|
186
|
+
// with a pencil toggle when a value exists, else editable directly.
|
|
187
|
+
...(this.requiredProfileFields.includes('address')
|
|
188
|
+
? [
|
|
189
|
+
{
|
|
190
|
+
type: FormControlType.TEXT_AREA,
|
|
191
|
+
label: this.addUserRosterTexts?.label?.address + '*',
|
|
192
|
+
controlName: 'address',
|
|
193
|
+
value: this.selectedUserInfo?.address ?? '',
|
|
194
|
+
isEditToggle: !!this.selectedUserInfo?.address,
|
|
195
|
+
validation: [
|
|
196
|
+
Validators.required,
|
|
197
|
+
Validators.maxLength(GroupsValidationPatterns.addressMaxLength),
|
|
198
|
+
],
|
|
199
|
+
maxLength: GroupsValidationPatterns.addressMaxLength,
|
|
200
|
+
requiredErrorMessage: this.addUserRosterTexts?.message?.error?.required,
|
|
201
|
+
maxErrorMessage: this.addUserRosterTexts?.message?.error?.limit
|
|
202
|
+
?.addressMaxChars,
|
|
203
|
+
supportMessage: this.addUserRosterTexts?.supportText?.address,
|
|
204
|
+
isResize: false,
|
|
205
|
+
ariaMultiline: true,
|
|
206
|
+
ariaLabel: this.addUserRosterTexts?.label?.ariaLabel?.address,
|
|
207
|
+
ariaDescribedById: this.addUserRosterTexts?.label?.ariaDescribedById
|
|
208
|
+
?.address,
|
|
209
|
+
},
|
|
210
|
+
]
|
|
211
|
+
: []),
|
|
150
212
|
{
|
|
151
213
|
type: FormControlType.CHECKBOX,
|
|
152
214
|
label: this.groupRosterType === GroupRosterType.INDIVIDUAL
|
|
@@ -350,8 +412,33 @@ export class EditUserRolesComponent {
|
|
|
350
412
|
groupId: this.groupsService?.selectedGroupInfo?.groupId,
|
|
351
413
|
},
|
|
352
414
|
};
|
|
415
|
+
// Optional contact fields — apply to both roster types.
|
|
416
|
+
this.appendContactDetailsToPayload(payload, formData);
|
|
353
417
|
return payload;
|
|
354
418
|
}
|
|
419
|
+
/**
|
|
420
|
+
* Appends the optional contact fields (phone country code, phone number and
|
|
421
|
+
* address) to the payload. Reads from the combined PHONE control value
|
|
422
|
+
* ({ countryCode, phoneNumber }) and the address control. Sends the country
|
|
423
|
+
* code only when a number is present; omits empty values.
|
|
424
|
+
* @param {(AddOrEditUserPayload | AddOrEditUserIndividualRosterPayload)} payload
|
|
425
|
+
* @param {*} formData
|
|
426
|
+
* @memberof EditUserRolesComponent
|
|
427
|
+
*/
|
|
428
|
+
appendContactDetailsToPayload(payload,
|
|
429
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
430
|
+
formData) {
|
|
431
|
+
const phoneNumber = formData?.phone?.phoneNumber?.trim();
|
|
432
|
+
const phoneCountryCode = formData?.phone?.countryCode;
|
|
433
|
+
const address = formData?.address?.trim();
|
|
434
|
+
if (phoneNumber) {
|
|
435
|
+
payload.payload.phoneNumber = phoneNumber;
|
|
436
|
+
if (phoneCountryCode)
|
|
437
|
+
payload.payload.phoneCountryCode = phoneCountryCode;
|
|
438
|
+
}
|
|
439
|
+
if (address)
|
|
440
|
+
payload.payload.address = address;
|
|
441
|
+
}
|
|
355
442
|
/**
|
|
356
443
|
* Emits form cancel event.
|
|
357
444
|
* @memberof EditUserRolesComponent
|
|
@@ -424,6 +511,17 @@ export class EditUserRolesComponent {
|
|
|
424
511
|
this.isSubmitButtonDisabled = true;
|
|
425
512
|
}
|
|
426
513
|
}
|
|
514
|
+
/**
|
|
515
|
+
* Gets the tenant's required profile fields so the edit-user form only shows
|
|
516
|
+
* the phone/address fields the tenant has configured as required. Builds the
|
|
517
|
+
* form once resolved (or immediately if the appId isn't available).
|
|
518
|
+
* @memberof EditUserRolesComponent
|
|
519
|
+
*/
|
|
520
|
+
getRequiredProfileFields() {
|
|
521
|
+
this.requiredProfileFields =
|
|
522
|
+
this.groupsService.getRequiredProfileFields() ?? [];
|
|
523
|
+
this.editUserRolesFormGroup();
|
|
524
|
+
}
|
|
427
525
|
/**
|
|
428
526
|
* Gets the classifications from master data.
|
|
429
527
|
* @memberof EditUserRolesComponent
|
|
@@ -565,11 +663,11 @@ export class EditUserRolesComponent {
|
|
|
565
663
|
this.destroy$.unsubscribe();
|
|
566
664
|
}
|
|
567
665
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditUserRolesComponent, deps: [{ token: i1.GroupsService }, { token: i2.GlobalErrorHandlerService }, { token: i2.AlertsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
568
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EditUserRolesComponent, isStandalone: true, selector: "ieeesa-edit-user-roles", outputs: { submitFormResponse: "submitFormResponse", formCancel: "formCancel" }, viewQueries: [{ propertyName: "dynamicFormComponent", first: true, predicate: DynamicFormComponent, descendants: true }], ngImport: i0, template: "<ieeesa-dynamic-form\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [isSubmitButtonDisabled]=\"isSubmitButtonDisabled\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"editUserRoleFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onEditUserRoleFormSubmit($event)\"\r\n (formLeftButtonClicked)=\"onEditUserRoleCancelled()\"\r\n (formCheckboxSelection)=\"onUserRoleSelection($event)\"\r\n (formGroupsReference)=\"getFormGroupReference($event)\"\r\n (formChange)=\"onEditUserRoleFormChange($event)\"\r\n>\r\n <!--\r\n Representing Organization (INDIVIDUAL rosters only). Projected into the\r\n dynamic form's [component] slot so it renders after the other fields but\r\n BEFORE the Save/Cancel action buttons. Uses the custom multi-select field so\r\n multiple orgs can be picked from an open dropdown without the Material\r\n autocomplete closing or clearing the typed text. Prefilled with the user's\r\n existing organizations and synced to the reactive `representingOrg` control\r\n via getSelectedOrganizations().\r\n -->\r\n <ieeesa-org-multi-select\r\n component\r\n *ngIf=\"isIndividualRoster\"\r\n class=\"ieeesa-edit-user-roles__org\"\r\n [label]=\"addUserRosterTexts?.label?.representingOrganization + '*'\"\r\n [ariaLabel]=\"addUserRosterTexts?.label?.ariaLabel?.representingOrganization\"\r\n [supportMessage]=\"addUserRosterTexts?.supportText?.representingOrganization\"\r\n [options]=\"organizations\"\r\n [selectedOptions]=\"representingOrganizations\"\r\n (search)=\"getOrganizations($event)\"\r\n (selectionChange)=\"getSelectedOrganizations($event)\"\r\n (invalidFreeText)=\"onOrgInvalidFreeText($event)\"\r\n ></ieeesa-org-multi-select>\r\n</ieeesa-dynamic-form>\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-modal-dialog.ieeesa-edit-user-roles .mat-mdc-form-field-subscript-wrapper{display:none}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .mat-mdc-dialog-content{padding:0 1em .75em!important}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field .mat-mdc-form-field{width:43%}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-autocomplete .mat-mdc-form-field,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field .mat-mdc-form-field{display:flex}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__actions{flex-direction:row-reverse;gap:1.5em;padding:3em 1em .75em .8em}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field{margin-bottom:0}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay{background:#fff;padding:0;border:0}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix{min-height:2.375em;padding-top:.0625em;padding-bottom:.375em}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after{border:0}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name .mat-mdc-text-field-wrapper{border:unset!important}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-checkbox-field .mat-mdc-list{margin-left:-.625em}@media (max-width: 767px){.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form .ieeesa-select-field .mat-mdc-form-field{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DynamicFormComponent, selector: "ieeesa-dynamic-form", inputs: ["formGroups", "submitResponse", "searchResponse", "fileUploadStatus", "colWidth", "isLegendVisible", "rightButtonLabel", "leftButtonLabel", "isSubmitButtonDisabled", "isLeftButtonDisabled", "isLeftButtonNeeded", "isRightButtonNeeded", "actionButtonAlign", "projectedContentAfterControlName", "fileDownloadAndDeleteConfig"], outputs: ["formSubmit", "formChange", "formInput", "formLeftButtonClicked", "formSearchApply", "formGroupsReference", "dropdownChange", "formCheckboxSelection", "formDateSelected", "formSelectSearch", "formControlChange", "formAutoCompleteSearch", "formAutoCompleteClearSearchValue", "autoCompleteOptionSelected", "formAfterContentInit", "formSelectedDateRange", "addFormGroup", "formTimeSelected", "supportTextLinkClick", "formSlideToggleChange", "formFileUpload", "dropdownOpenedChange", "formColorPickerChange", "formRadioOptionSelected", "ctaButtonClick", "formMultiSelectAutoCompleteSearch", "formMultiSelectAutoCompleteClearSearchValue", "multiSelectAutoCompleteOptionsSelected", "formRichTextEditorContentChange"], exportAs: ["dynamicForm"] }, { kind: "component", type: OrgMultiSelectComponent, selector: "ieeesa-org-multi-select", inputs: ["label", "placeholder", "supportMessage", "ariaLabel", "options", "selectedOptions", "required", "removeIconURL", "clearAllIconURL"], outputs: ["search", "selectionChange", "fieldBlur", "invalidFreeText"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
666
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EditUserRolesComponent, isStandalone: true, selector: "ieeesa-edit-user-roles", outputs: { submitFormResponse: "submitFormResponse", formCancel: "formCancel" }, viewQueries: [{ propertyName: "dynamicFormComponent", first: true, predicate: DynamicFormComponent, descendants: true }], ngImport: i0, template: "<ieeesa-dynamic-form\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [isSubmitButtonDisabled]=\"isSubmitButtonDisabled\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"editUserRoleFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onEditUserRoleFormSubmit($event)\"\r\n (formLeftButtonClicked)=\"onEditUserRoleCancelled()\"\r\n (formCheckboxSelection)=\"onUserRoleSelection($event)\"\r\n (formGroupsReference)=\"getFormGroupReference($event)\"\r\n (formChange)=\"onEditUserRoleFormChange($event)\"\r\n>\r\n <!--\r\n Representing Organization (INDIVIDUAL rosters only). Projected into the\r\n dynamic form's [component] slot so it renders after the other fields but\r\n BEFORE the Save/Cancel action buttons. Uses the custom multi-select field so\r\n multiple orgs can be picked from an open dropdown without the Material\r\n autocomplete closing or clearing the typed text. Prefilled with the user's\r\n existing organizations and synced to the reactive `representingOrg` control\r\n via getSelectedOrganizations().\r\n -->\r\n <ieeesa-org-multi-select\r\n component\r\n *ngIf=\"isIndividualRoster\"\r\n class=\"ieeesa-edit-user-roles__org\"\r\n [label]=\"addUserRosterTexts?.label?.representingOrganization + '*'\"\r\n [ariaLabel]=\"addUserRosterTexts?.label?.ariaLabel?.representingOrganization\"\r\n [supportMessage]=\"addUserRosterTexts?.supportText?.representingOrganization\"\r\n [options]=\"organizations\"\r\n [selectedOptions]=\"representingOrganizations\"\r\n (search)=\"getOrganizations($event)\"\r\n (selectionChange)=\"getSelectedOrganizations($event)\"\r\n (invalidFreeText)=\"onOrgInvalidFreeText($event)\"\r\n ></ieeesa-org-multi-select>\r\n</ieeesa-dynamic-form>\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-modal-dialog.ieeesa-edit-user-roles .mat-mdc-form-field-subscript-wrapper{display:none}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .mat-mdc-dialog-content{padding:0 1em .75em!important}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field .mat-mdc-form-field{width:43%}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-autocomplete .mat-mdc-form-field,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field .mat-mdc-form-field{display:flex}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__actions{flex-direction:row-reverse;gap:1.5em;padding:3em 1em .75em .8em}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-text-area-field .mat-mdc-form-field{width:100%}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-text-area-field .address{height:96px!important;min-height:96px!important;max-height:96px!important;overflow-y:auto!important}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field{margin-bottom:0}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay{background:#fff;padding:0;border:0}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix{min-height:2.375em;padding-top:.0625em;padding-bottom:.375em}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after{border:0}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name .mat-mdc-text-field-wrapper{border:unset!important}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-checkbox-field .mat-mdc-list{margin-left:-.625em}@media (max-width: 767px){.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form .ieeesa-select-field .mat-mdc-form-field{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DynamicFormComponent, selector: "ieeesa-dynamic-form", inputs: ["formGroups", "submitResponse", "searchResponse", "fileUploadStatus", "colWidth", "isLegendVisible", "rightButtonLabel", "leftButtonLabel", "isSubmitButtonDisabled", "isLeftButtonDisabled", "isLeftButtonNeeded", "isRightButtonNeeded", "actionButtonAlign", "projectedContentAfterControlName", "fileDownloadAndDeleteConfig"], outputs: ["formSubmit", "formChange", "formInput", "formLeftButtonClicked", "formSearchApply", "formGroupsReference", "dropdownChange", "formCheckboxSelection", "formDateSelected", "formSelectSearch", "formControlChange", "formAutoCompleteSearch", "formAutoCompleteClearSearchValue", "autoCompleteOptionSelected", "formAfterContentInit", "formSelectedDateRange", "addFormGroup", "formTimeSelected", "supportTextLinkClick", "formSlideToggleChange", "formFileUpload", "dropdownOpenedChange", "formColorPickerChange", "formRadioOptionSelected", "ctaButtonClick", "formMultiSelectAutoCompleteSearch", "formMultiSelectAutoCompleteClearSearchValue", "multiSelectAutoCompleteOptionsSelected", "formRichTextEditorContentChange"], exportAs: ["dynamicForm"] }, { kind: "component", type: OrgMultiSelectComponent, selector: "ieeesa-org-multi-select", inputs: ["label", "placeholder", "supportMessage", "ariaLabel", "options", "selectedOptions", "required", "removeIconURL", "clearAllIconURL"], outputs: ["search", "selectionChange", "fieldBlur", "invalidFreeText"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
569
667
|
}
|
|
570
668
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditUserRolesComponent, decorators: [{
|
|
571
669
|
type: Component,
|
|
572
|
-
args: [{ selector: 'ieeesa-edit-user-roles', standalone: true, imports: [CommonModule, DynamicFormComponent, OrgMultiSelectComponent], encapsulation: ViewEncapsulation.None, template: "<ieeesa-dynamic-form\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [isSubmitButtonDisabled]=\"isSubmitButtonDisabled\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"editUserRoleFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onEditUserRoleFormSubmit($event)\"\r\n (formLeftButtonClicked)=\"onEditUserRoleCancelled()\"\r\n (formCheckboxSelection)=\"onUserRoleSelection($event)\"\r\n (formGroupsReference)=\"getFormGroupReference($event)\"\r\n (formChange)=\"onEditUserRoleFormChange($event)\"\r\n>\r\n <!--\r\n Representing Organization (INDIVIDUAL rosters only). Projected into the\r\n dynamic form's [component] slot so it renders after the other fields but\r\n BEFORE the Save/Cancel action buttons. Uses the custom multi-select field so\r\n multiple orgs can be picked from an open dropdown without the Material\r\n autocomplete closing or clearing the typed text. Prefilled with the user's\r\n existing organizations and synced to the reactive `representingOrg` control\r\n via getSelectedOrganizations().\r\n -->\r\n <ieeesa-org-multi-select\r\n component\r\n *ngIf=\"isIndividualRoster\"\r\n class=\"ieeesa-edit-user-roles__org\"\r\n [label]=\"addUserRosterTexts?.label?.representingOrganization + '*'\"\r\n [ariaLabel]=\"addUserRosterTexts?.label?.ariaLabel?.representingOrganization\"\r\n [supportMessage]=\"addUserRosterTexts?.supportText?.representingOrganization\"\r\n [options]=\"organizations\"\r\n [selectedOptions]=\"representingOrganizations\"\r\n (search)=\"getOrganizations($event)\"\r\n (selectionChange)=\"getSelectedOrganizations($event)\"\r\n (invalidFreeText)=\"onOrgInvalidFreeText($event)\"\r\n ></ieeesa-org-multi-select>\r\n</ieeesa-dynamic-form>\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-modal-dialog.ieeesa-edit-user-roles .mat-mdc-form-field-subscript-wrapper{display:none}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .mat-mdc-dialog-content{padding:0 1em .75em!important}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field .mat-mdc-form-field{width:43%}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-autocomplete .mat-mdc-form-field,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field .mat-mdc-form-field{display:flex}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__actions{flex-direction:row-reverse;gap:1.5em;padding:3em 1em .75em .8em}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field{margin-bottom:0}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay{background:#fff;padding:0;border:0}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix{min-height:2.375em;padding-top:.0625em;padding-bottom:.375em}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after{border:0}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name .mat-mdc-text-field-wrapper{border:unset!important}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-checkbox-field .mat-mdc-list{margin-left:-.625em}@media (max-width: 767px){.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form .ieeesa-select-field .mat-mdc-form-field{width:100%}}\n"] }]
|
|
670
|
+
args: [{ selector: 'ieeesa-edit-user-roles', standalone: true, imports: [CommonModule, DynamicFormComponent, OrgMultiSelectComponent], encapsulation: ViewEncapsulation.None, template: "<ieeesa-dynamic-form\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [isSubmitButtonDisabled]=\"isSubmitButtonDisabled\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"editUserRoleFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onEditUserRoleFormSubmit($event)\"\r\n (formLeftButtonClicked)=\"onEditUserRoleCancelled()\"\r\n (formCheckboxSelection)=\"onUserRoleSelection($event)\"\r\n (formGroupsReference)=\"getFormGroupReference($event)\"\r\n (formChange)=\"onEditUserRoleFormChange($event)\"\r\n>\r\n <!--\r\n Representing Organization (INDIVIDUAL rosters only). Projected into the\r\n dynamic form's [component] slot so it renders after the other fields but\r\n BEFORE the Save/Cancel action buttons. Uses the custom multi-select field so\r\n multiple orgs can be picked from an open dropdown without the Material\r\n autocomplete closing or clearing the typed text. Prefilled with the user's\r\n existing organizations and synced to the reactive `representingOrg` control\r\n via getSelectedOrganizations().\r\n -->\r\n <ieeesa-org-multi-select\r\n component\r\n *ngIf=\"isIndividualRoster\"\r\n class=\"ieeesa-edit-user-roles__org\"\r\n [label]=\"addUserRosterTexts?.label?.representingOrganization + '*'\"\r\n [ariaLabel]=\"addUserRosterTexts?.label?.ariaLabel?.representingOrganization\"\r\n [supportMessage]=\"addUserRosterTexts?.supportText?.representingOrganization\"\r\n [options]=\"organizations\"\r\n [selectedOptions]=\"representingOrganizations\"\r\n (search)=\"getOrganizations($event)\"\r\n (selectionChange)=\"getSelectedOrganizations($event)\"\r\n (invalidFreeText)=\"onOrgInvalidFreeText($event)\"\r\n ></ieeesa-org-multi-select>\r\n</ieeesa-dynamic-form>\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-modal-dialog.ieeesa-edit-user-roles .mat-mdc-form-field-subscript-wrapper{display:none}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .mat-mdc-dialog-content{padding:0 1em .75em!important}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field .mat-mdc-form-field{width:43%}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-autocomplete .mat-mdc-form-field,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-select-field .mat-mdc-form-field{display:flex}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form__actions{flex-direction:row-reverse;gap:1.5em;padding:3em 1em .75em .8em}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-text-area-field .mat-mdc-form-field{width:100%}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-text-area-field .address{height:96px!important;min-height:96px!important;max-height:96px!important;overflow-y:auto!important}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field{margin-bottom:0}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay{background:#fff;padding:0;border:0}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mat-mdc-form-field-focus-overlay .mat-mdc-form-field-infix{min-height:2.375em;padding-top:.0625em;padding-bottom:.375em}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:before,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name.ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mat-mdc-form-field .mdc-line-ripple:after{border:0}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .email .mat-mdc-text-field-wrapper,.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .full-name .mat-mdc-text-field-wrapper{border:unset!important}.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-checkbox-field .mat-mdc-list{margin-left:-.625em}@media (max-width: 767px){.ieeesa-modal-dialog.ieeesa-edit-user-roles .ieeesa-modal .ieeesa-dynamic-form .ieeesa-select-field .mat-mdc-form-field{width:100%}}\n"] }]
|
|
573
671
|
}], ctorParameters: function () { return [{ type: i1.GroupsService }, { type: i2.GlobalErrorHandlerService }, { type: i2.AlertsService }]; }, propDecorators: { dynamicFormComponent: [{
|
|
574
672
|
type: ViewChild,
|
|
575
673
|
args: [DynamicFormComponent]
|
|
@@ -578,4 +676,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
578
676
|
}], formCancel: [{
|
|
579
677
|
type: Output
|
|
580
678
|
}] } });
|
|
581
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC11c2VyLXJvbGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvZWRpdC11c2VyLXJvbGVzL2VkaXQtdXNlci1yb2xlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2VkaXQtdXNlci1yb2xlcy9lZGl0LXVzZXItcm9sZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBR1osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFDTCxTQUFTLEVBSVQsZUFBZSxFQUlmLG9CQUFvQixHQUNyQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sS0FBSyxXQUFXLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFhLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBV3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLGdDQUFnQyxFQUNoQyxhQUFhLEdBQ2QsTUFBTSwrQkFBK0IsQ0FBQztBQUt2QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7Ozs7QUFF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bUI7UUFDakIsSUFBSSxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsd0JBQXdCLENBQzNCLGlCQUFpQixFQUNqQixnQ0FBZ0MsRUFDaEMsRUFBRSxDQUNILENBQUM7WUFDRixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7K0dBbnBCVSxzQkFBc0I7bUdBQXRCLHNCQUFzQix5TkF1Q3RCLG9CQUFvQixnREN2R2pDLGsyREFzQ0EsKzhZRHFCWSxZQUFZLG1JQUFFLG9CQUFvQiwwbkNBQUUsdUJBQXVCOzs0RkFLMUQsc0JBQXNCO2tCQVJsQyxTQUFTOytCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLENBQUMsaUJBR3ZELGlCQUFpQixDQUFDLElBQUk7d0tBeUNKLG9CQUFvQjtzQkFBcEQsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ3JCLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgR3JvdXBzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyb3Vwcy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBBbGlnblR5cGUsXHJcbiAgQXV0b0NvbXBsZXRlT3B0aW9uLFxyXG4gIENoZWNrYm94T3B0aW9uLFxyXG4gIEZpZWxkQ29uZmlnLFxyXG4gIEZvcm1Db250cm9sVHlwZSxcclxuICBGb3JtR3JpZCxcclxuICBGb3JtTW9kZWwsXHJcbiAgU2VsZWN0T3B0aW9uLFxyXG4gIER5bmFtaWNGb3JtQ29tcG9uZW50LFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCAqIGFzIHNjcmVlblRleHRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgR3JvdXBVc2VySW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC11c2VyLWluZm8ubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRm9ybVN0YXR1cywgQWxlcnRUeXBlIH0gZnJvbSAnQGllZWVzYS1ucG0vbW9kZWxzJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQWxlcnRzU2VydmljZSxcclxuICBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQge1xyXG4gIEFkZE9yRWRpdFVzZXJJbmRpdmlkdWFsUm9zdGVyUGF5bG9hZCxcclxuICBBZGRPckVkaXRVc2VyUGF5bG9hZCxcclxuICBSZXByZXNlbnRpbmdPcmdhbml6YXRpb24sXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL2FkZC1vci1lZGl0LXVzZXItZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cFR5cGVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyb3VwLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBSb3N0ZXJUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Jvc3Rlci10eXBlLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMsXHJcbiAgcmVwcmVzZW50aW5nT3JnUmVxdWlyZWRWYWxpZGF0b3IsXHJcbiAgc2tpcFdoZW5BcnJheSxcclxufSBmcm9tICcuLi8uLi9hc3NldHMvZm9ybS12YWxpZGF0aW9ucyc7XHJcbmltcG9ydCB7XHJcbiAgT3JnYW5pemF0aW9uLFxyXG4gIE9yZ2FuaXphdGlvblJlcXVlc3RQYXlsb2FkLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9vcmdhbml6YXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBPcmdNdWx0aVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL29yZy1tdWx0aS1zZWxlY3Qvb3JnLW11bHRpLXNlbGVjdC5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudCBpbXBsZW1lbnRzIHRoZSB2aWV3IGFuZCBmdW5jdGlvbmFsaXRpZXMgdG8gZWRpdCBncm91cCB1c2VycyB0byByb3N0ZXIuXHJcbiAqIEBjbGFzcyBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkRlc3Ryb3l9XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2llZWVzYS1lZGl0LXVzZXItcm9sZXMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHluYW1pY0Zvcm1Db21wb25lbnQsIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdC11c2VyLXJvbGVzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9lZGl0LXVzZXItcm9sZXMuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdFVzZXJSb2xlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IHNjcmVlblRleHRzO1xyXG4gIGFkZFVzZXJSb3N0ZXJUZXh0cyA9IHRoaXMuY29uc3RhbnRzPy5hZGRVc2VyUm9zdGVyO1xyXG4gIGxlZnRCdXR0b25MYWJlbCA9IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8ubGVmdEJ1dHRvbkxhYmVsO1xyXG4gIHJpZ2h0QnV0dG9uTGFiZWwgPSB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LnNhdmVCdXR0b25MYWJlbDtcclxuICBpc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgY29sV2lkdGg6IEZvcm1HcmlkID0geyB4czogMTIsIHhsOiAxMiwgc206IDEyLCBtZDogMTIsIGxnOiAxMiB9O1xyXG4gIGVkaXRVc2VyUm9sZUZvcm1Hcm91cCE6IEZvcm1Nb2RlbDtcclxuICBlZGl0VXNlclJvbGVGb3JtR3JvdXBSZWYhOiBGb3JtR3JvdXA7XHJcbiAgdXNlclJvbGVzITogQ2hlY2tib3hPcHRpb25bXTtcclxuICBzZWxlY3RlZFVzZXJSb2xlSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHNlbGVjdGVkVXNlckluZm8hOiBHcm91cFVzZXJJbmZvO1xyXG4gIGFjdGlvbkJ1dHRvbkFsaWduID0gQWxpZ25UeXBlLkxFRlQ7XHJcbiAgY2xhc3NpZmljYXRpb25zOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xyXG4gIG1lbWJlclR5cGVzOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xyXG4gIG9yZ2FuaXphdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgZ3JvdXBUeXBlcyE6IEdyb3VwVHlwZUNvbmZpZ3VyYXRpb25bXTtcclxuICBoYXNDbGFzc2lmaWNhdGlvbiA9IGZhbHNlO1xyXG4gIGdyb3VwUm9zdGVyVHlwZSE6IEdyb3VwUm9zdGVyVHlwZTtcclxuICByZXByZXNlbnRpbmdPcmdhbml6YXRpb25zOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xyXG4gIG9yZ1NlYXJjaFZhbHVlID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRydWUgd2hlbiB0aGUgc2VsZWN0ZWQgZ3JvdXAncyByb3N0ZXIgdHlwZSBpcyBJTkRJVklEVUFMICh0aGUgb25seSByb3N0ZXJcclxuICAgKiB0eXBlIHRoYXQgc2hvd3MgdGhlIFJlcHJlc2VudGluZyBPcmdhbml6YXRpb24gZmllbGQpLlxyXG4gICAqIEByZWFkb25seVxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IGlzSW5kaXZpZHVhbFJvc3RlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdyb3VwUm9zdGVyVHlwZSA9PT0gR3JvdXBSb3N0ZXJUeXBlLklORElWSURVQUw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcnVlIHdoZW4gdGhlIG9yZyBmaWVsZCBob2xkcyBhbiB1bmNvbW1pdHRlZCwgaW52YWxpZCBmcmVlLXRleHQgdG9rZW4uIFVzZWRcclxuICAgKiB0byBrZWVwIFNhdmUgZGlzYWJsZWQgZXZlbiB3aGVuIGEgdmFsaWQgY2hpcCBhbHJlYWR5IGV4aXN0cy5cclxuICAgKi9cclxuICBoYXNJbnZhbGlkT3JnRnJlZVRleHQgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKER5bmFtaWNGb3JtQ29tcG9uZW50KSBkeW5hbWljRm9ybUNvbXBvbmVudCE6IER5bmFtaWNGb3JtQ29tcG9uZW50O1xyXG4gIEBPdXRwdXQoKSBzdWJtaXRGb3JtUmVzcG9uc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZvcm1DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ3JvdXBzU2VydmljZTogR3JvdXBzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2U6IEdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBhbGVydFNlcnZpY2U6IEFsZXJ0c1NlcnZpY2UgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHRoZSBlZGl0IHVzZXIgcm9sZSByZXF1aXJlZCBpbmZvcm1hdGlvbiBhbmQgZm9ybSBncm91cCBhcnJheS5cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJJbmZvID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRTZWxlY3RlZFVzZXJJbmZvKCk7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2UucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucy5mb3JFYWNoKFxyXG4gICAgICAodXNlcjogUmVwcmVzZW50aW5nT3JnYW5pemF0aW9uKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJJbmZvLnVzZXJJZCA9PT0gdXNlci51c2VySWQgJiZcclxuICAgICAgICAgIHVzZXIub3JnYW5pemF0aW9ucz8ubGVuZ3RoXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB1c2VyLm9yZ2FuaXphdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBPcmdhbml6YXRpb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zPy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogb3B0aW9uLm9yZ0lkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5vcmdOYW1lLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcclxuICAgIHRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucz8ubGVuZ3RoXHJcbiAgICAgID8gKHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlKVxyXG4gICAgICA6ICh0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkVXNlclJvbGVOYW1lcyA9IHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8ucm9sZVxyXG4gICAgICA/LnNwbGl0KCcsJylcclxuICAgICAgLm1hcCgocm9sZSkgPT4gcm9sZT8udHJpbSgpKTtcclxuICAgIHRoaXMudXNlclJvbGVzID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRHcm91cFR5cGVVc2VyUm9sZXMoKTtcclxuICAgIHRoaXMudXNlclJvbGVzPy5mb3JFYWNoKChyb2xlKSA9PiB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFVzZXJSb2xlTmFtZXM/LmluY2x1ZGVzKHJvbGU/Lm5hbWUgYXMgc3RyaW5nKSkge1xyXG4gICAgICAgIHJvbGUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlSWRzPy5wdXNoKHJvbGU/LmlkIGFzIHN0cmluZyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgZ3JvdXBUeXBlID0gdGhpcy5ncm91cHNTZXJ2aWNlLmdldEJ1c2luZXNzUnVsZU9mU2VsZWN0ZWRHcm91cCgpO1xyXG4gICAgdGhpcy5oYXNDbGFzc2lmaWNhdGlvbiA9IGdyb3VwVHlwZT8uaGFzQ2xhc3NpZmljYXRpb24gPz8gZmFsc2U7XHJcbiAgICB0aGlzLmdyb3VwUm9zdGVyVHlwZSA9IGdyb3VwVHlwZT8ucm9zdGVyVHlwZSBhcyBHcm91cFJvc3RlclR5cGU7XHJcbiAgICBpZiAoIXRoaXMuZ3JvdXBSb3N0ZXJUeXBlKVxyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZSh7XHJcbiAgICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgICBtZXNzYWdlOiB0aGlzLmNvbnN0YW50cz8uZXJyb3JzPy5FUjEwMDEsXHJcbiAgICAgICAgYWxlcnRUeXBlOiBBbGVydFR5cGUuRVJST1IsXHJcbiAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZ3JvdXBSb3N0ZXJUeXBlID09PSBHcm91cFJvc3RlclR5cGU/LklORElWSURVQUwpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNDbGFzc2lmaWNhdGlvbikgdGhpcy5nZXRDbGFzc2lmaWNhdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmdldE1lbWJlclR5cGVzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lZGl0VXNlclJvbGVzRm9ybUdyb3VwKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHRoZSBlZGl0IHVzZXIgcm9sZSBmb3JtIGdyb3VwIGFycmF5LlxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZWRpdFVzZXJSb2xlc0Zvcm1Hcm91cCgpIHtcclxuICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwID0ge1xyXG4gICAgICBmb3JtR3JvdXA6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6ICcnLFxyXG4gICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZT8uVEVYVF9BUkVBLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmVtYWlsICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnZW1haWwnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkVXNlckluZm8/LmVtYWlsLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmVtYWlsLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZW1haWwsXHJcbiAgICAgICAgICAgICAgaXNSZWFkb25seTogdHJ1ZSxcclxuICAgICAgICAgICAgICBhcmlhTXVsdGlsaW5lOiBmYWxzZSxcclxuICAgICAgICAgICAgICBpc1Jlc2l6ZTogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5URVhUX0FSRUEsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uZnVsbE5hbWUgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdmdWxsTmFtZScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8ubmFtZSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5mdWxsTmFtZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmZ1bGxOYW1lLFxyXG4gICAgICAgICAgICAgIGlzUmVhZG9ubHk6IHRydWUsXHJcbiAgICAgICAgICAgICAgYXJpYU11bHRpbGluZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgaXNSZXNpemU6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuQ0hFQ0tCT1gsXHJcbiAgICAgICAgICAgICAgbGFiZWw6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwUm9zdGVyVHlwZSA9PT0gR3JvdXBSb3N0ZXJUeXBlLklORElWSURVQUxcclxuICAgICAgICAgICAgICAgICAgPyB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LnJvbGVcclxuICAgICAgICAgICAgICAgICAgOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LnJvbGUgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdyb2xlcycsXHJcbiAgICAgICAgICAgICAgY2hlY2tib3hPcHRpb25zOiB0aGlzLnVzZXJSb2xlcyxcclxuICAgICAgICAgICAgICBtaW5TZWxlY3Rpb25SZXF1aXJlZDogMSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5yb2xlLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8ucm9sZSxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBSb3N0ZXJUeXBlID09PSBHcm91cFJvc3RlclR5cGUuSU5ESVZJRFVBTFxyXG4gICAgICAgICAgICAgICAgICA/IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5zdXBwb3J0VGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgPy5yb2xlRm9ySW5kaXZpZHVhbFJvc3RlclxyXG4gICAgICAgICAgICAgICAgICA6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5zdXBwb3J0VGV4dD8ucm9sZSxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjpcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBSb3N0ZXJUeXBlID09PSBHcm91cFJvc3RlclR5cGUuSU5ESVZJRFVBTFxyXG4gICAgICAgICAgICAgICAgICA/IFtdXHJcbiAgICAgICAgICAgICAgICAgIDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLmdyb3VwUm9zdGVyVHlwZSA9PT0gR3JvdXBSb3N0ZXJUeXBlPy5JTkRJVklEVUFMKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRWRpdFVzZXJSb2xlRm9ybUdyb3VwKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzIGNsYXNzaWZpY2F0aW9uLCBNZW1iZXIgVHlwZSBhbmQgUmVwcmVzZW50aW5nIE9yZ2FuaXphdGlvbiBmb3JtIGNvbnRyb2xzIHdoaWxlIGVkaXRpbmcgbmV3IHVzZXIgdG8gYW4gaW5kaXZpZHVhbCBncm91cCByb3N0ZXIuXHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICB1cGRhdGVFZGl0VXNlclJvbGVGb3JtR3JvdXAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oYXNDbGFzc2lmaWNhdGlvbilcclxuICAgICAgdGhpcy51cGRhdGVFZGl0VXNlclJvbGVGb3JtQ29udHJvbHMoXHJcbiAgICAgICAgdGhpcy5lZGl0VXNlclJvbGVGb3JtR3JvdXA/LmZvcm1Hcm91cFswXT8uY29udHJvbHM/Lmxlbmd0aCAtIDEsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlNFTEVDVCxcclxuICAgICAgICAgIGxhYmVsOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmNsYXNzaWZpY2F0aW9uICsgJyonLFxyXG4gICAgICAgICAgY29udHJvbE5hbWU6ICdjbGFzc2lmaWNhdGlvbicsXHJcbiAgICAgICAgICBkcm9wZG93bk9wdGlvbnM6IHRoaXMuY2xhc3NpZmljYXRpb25zLFxyXG4gICAgICAgICAgdmFsdWU6IHRoaXMuY2xhc3NpZmljYXRpb25zPy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbj8ubmFtZSA9PT0gdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy5jbGFzc2lmaWNhdGlvblxyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8uc3VwcG9ydFRleHQ/LmNsYXNzaWZpY2F0aW9uLFxyXG4gICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5jbGFzc2lmaWNhdGlvbixcclxuICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5jbGFzc2lmaWNhdGlvbixcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB0aGlzLnVwZGF0ZUVkaXRVc2VyUm9sZUZvcm1Db250cm9scyhcclxuICAgICAgdGhpcy5lZGl0VXNlclJvbGVGb3JtR3JvdXA/LmZvcm1Hcm91cFswXT8uY29udHJvbHM/Lmxlbmd0aCAtIDEsXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuU0VMRUNULFxyXG4gICAgICAgIGxhYmVsOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/Lm1lbWJlclR5cGUgKyAnKicsXHJcbiAgICAgICAgY29udHJvbE5hbWU6ICdtZW1iZXJUeXBlJyxcclxuICAgICAgICBkcm9wZG93bk9wdGlvbnM6IHRoaXMubWVtYmVyVHlwZXMsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMubWVtYmVyVHlwZXM/LmZpbHRlcihcclxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbj8ubmFtZSA9PT0gdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy5tZW1iZXJTdGF0dXNcclxuICAgICAgICApWzBdLFxyXG4gICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBwbGFjZWhvbGRlcjogJycsXHJcbiAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5zdXBwb3J0VGV4dD8ubWVtYmVyVHlwZSxcclxuICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICBhcmlhTGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5tZW1iZXJUeXBlLFxyXG4gICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8ubWVtYmVyVHlwZSxcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIC8vIFRoZSBcIlJlcHJlc2VudGluZyBPcmdhbml6YXRpb25cIiBmaWVsZCBpcyByZW5kZXJlZCBieSB0aGUgY3VzdG9tXHJcbiAgICAvLyBPcmdNdWx0aVNlbGVjdENvbXBvbmVudCBpbiB0aGUgdGVtcGxhdGUgKG5vdCBieSB0aGUgZHluYW1pYyBmb3JtKS4gVGhlXHJcbiAgICAvLyByZWFjdGl2ZSBgcmVwcmVzZW50aW5nT3JnYCBjb250cm9sIGlzIHJlZ2lzdGVyZWQgb24gdGhlIGNhcHR1cmVkIGZvcm1cclxuICAgIC8vIGdyb3VwIHJlZiBpbiByZWdpc3RlclJlcHJlc2VudGluZ09yZ0NvbnRyb2woKSBzbyBhbGwgZXhpc3Rpbmcgc3VibWl0L1xyXG4gICAgLy8gU2F2ZS1idXR0b24gbG9naWMgKHdoaWNoIHJlYWRzIGZvcm0uZ2V0KCdyZXByZXNlbnRpbmdPcmcnKSkga2VlcHMgd29ya2luZy5cclxuICAgIC8vIEl0cyB2YWx1ZSBzdGF5cyBpbiBzeW5jIHZpYSBnZXRTZWxlY3RlZE9yZ2FuaXphdGlvbnMoKS5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgc2VsZWN0ZWQgb3JnYW5pemF0aW9ucy5cclxuICAgKiBAcGFyYW0ge0F1dG9Db21wbGV0ZU9wdGlvbltdfSBzZWxlY3RlZE9yZ1xyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0U2VsZWN0ZWRPcmdhbml6YXRpb25zKHNlbGVjdGVkT3JnOiBBdXRvQ29tcGxldGVPcHRpb25bXSk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zID0gc2VsZWN0ZWRPcmc7XHJcbiAgICAvLyBLZWVwIHRoZSByZWFjdGl2ZSBjb250cm9sJ3MgdmFsdWUgaW4gc3luYyB3aXRoIHRoZSBzZWxlY3Rpb24gc28gdGhlXHJcbiAgICAvLyByZXF1aXJlZCB2YWxpZGF0b3IgYW5kIHN1Ym1pdC9TYXZlLWJ1dHRvbiBsb2dpYyBzdGF5IGFjY3VyYXRlLlxyXG4gICAgdGhpcy5lZGl0VXNlclJvbGVGb3JtR3JvdXBSZWZcclxuICAgICAgPy5nZXQoJ3JlcHJlc2VudGluZ09yZycpXHJcbiAgICAgID8uc2V0VmFsdWUoc2VsZWN0ZWRPcmc/Lmxlbmd0aCA/IHNlbGVjdGVkT3JnIDogJycpO1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xyXG4gICAgdGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zLmxlbmd0aCAmJiAhdGhpcy5oYXNJbnZhbGlkT3JnRnJlZVRleHRcclxuICAgICAgPyAodGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2UpXHJcbiAgICAgIDogKHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyB0aGUgb3JnIGZpZWxkJ3MgaW52YWxpZC1mcmVlLXRleHQgc3RhdGUuIERpc2FibGVzIFNhdmUgd2hpbGUgYW5cclxuICAgKiB1bmNvbW1pdHRlZCBpbnZhbGlkIHRva2VuIHJlbWFpbnM7IHJlLWV2YWx1YXRlcyB3aGVuIGl0IGNsZWFycy5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzSW52YWxpZCAtd2hldGhlciBhbiB1bmNvbW1pdHRlZCBpbnZhbGlkIHRva2VuIGlzIHByZXNlbnQuXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBvbk9yZ0ludmFsaWRGcmVlVGV4dChpc0ludmFsaWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaGFzSW52YWxpZE9yZ0ZyZWVUZXh0ID0gaXNJbnZhbGlkO1xyXG4gICAgaWYgKGlzSW52YWxpZCkge1xyXG4gICAgICB0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gUmVjb21wdXRlIGZyb20gdGhlIHNlbGVjdGlvbiB3aGVuIHRoZSBpbnZhbGlkIHRva2VuIGNsZWFycy5cclxuICAgICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gIXRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucy5sZW5ndGg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgdGhlIGVkaXQgdXNlciBmb3JtIGdyb3VwIGNvbnRyb2xzIGJ5IGFkZGluZyBmaWVsZENvbmZpZyBhdCByZXF1aXJlZCBpbmRleC5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhQb3NpdGlvblxyXG4gICAqIEBwYXJhbSB7RmllbGRDb25maWd9IGZpZWxkQ29uZmlnXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICB1cGRhdGVFZGl0VXNlclJvbGVGb3JtQ29udHJvbHMoXHJcbiAgICBpbmRleFBvc2l0aW9uOiBudW1iZXIsXHJcbiAgICBmaWVsZENvbmZpZzogRmllbGRDb25maWdcclxuICApOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwLmZvcm1Hcm91cFswXS5jb250cm9scy5zcGxpY2UoXHJcbiAgICAgIGluZGV4UG9zaXRpb24sXHJcbiAgICAgIDAsXHJcbiAgICAgIGZpZWxkQ29uZmlnXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyB1c2VyIHJvbGUgc2VsZWN0aW9uIGFuZCBzYXZlIGJ1dHRvbiBlbmFibGUgZGlzYWJsZSBpbiBlZGl0IHVzZXIgcm9sZXMgZm9ybS5cclxuICAgKiBAcGFyYW0ge0NoZWNrYm94T3B0aW9ufSBldmVudFxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Vc2VyUm9sZVNlbGVjdGlvbihldmVudDogQ2hlY2tib3hPcHRpb24pOiB2b2lkIHtcclxuICAgIGlmIChldmVudD8uY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVXNlclJvbGVJZHM/LnB1c2goZXZlbnQ/LmlkIGFzIHN0cmluZyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVXNlclJvbGVJZHMgPSB0aGlzLnNlbGVjdGVkVXNlclJvbGVJZHM/LmZpbHRlcihcclxuICAgICAgICAoaWQpID0+IGlkICE9PSBldmVudD8uaWRcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmdyb3VwUm9zdGVyVHlwZSA9PT0gR3JvdXBSb3N0ZXJUeXBlLlNZU1RFTV9VU0VSKSB7XHJcbiAgICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRoaXMuZ3JvdXBzU2VydmljZS5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkKFxyXG4gICAgICAgIHRoaXMuZ3JvdXBSb3N0ZXJUeXBlLFxyXG4gICAgICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmPy5zdGF0dXMsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlSWRzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgcm9sZXMgYW5kIGRldGFpbHMgb2YgdXNlciBvbiBmb3JtIHN1Ym1pc3Npb24uXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25FZGl0VXNlclJvbGVGb3JtU3VibWl0KGZvcm06IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICBmb3JtWzBdPy5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAvLyBCbG9jayBzdWJtaXQgaWYgYW4gdW5jb21taXR0ZWQsIGludmFsaWQgZnJlZS10ZXh0IHRva2VuIHJlbWFpbnMgaW4gdGhlXHJcbiAgICAvLyBvcmcgZmllbGQgZXZlbiB3aGVuIG90aGVyIGNvbnRyb2xzIC8gc2VsZWN0ZWQgY2hpcHMgYXJlIHZhbGlkLlxyXG4gICAgaWYgKHRoaXMuaGFzSW52YWxpZE9yZ0ZyZWVUZXh0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGlzQWxsT3RoZXJDb250cm9sc1ZhbGlkID0gT2JqZWN0LmtleXMoZm9ybVswXS5jb250cm9scylcclxuICAgICAgLmZpbHRlcigoY29udHJvbE5hbWUpID0+IGNvbnRyb2xOYW1lICE9PSAncmVwcmVzZW50aW5nT3JnJylcclxuICAgICAgLmV2ZXJ5KFxyXG4gICAgICAgIChjb250cm9sTmFtZSkgPT4gZm9ybVswXS5nZXQoY29udHJvbE5hbWUpPy5zdGF0dXMgPT09IEZvcm1TdGF0dXM/LlZBTElEXHJcbiAgICAgICk7XHJcbiAgICBpZiAoXHJcbiAgICAgIChmb3JtWzBdLmdldCgncmVwcmVzZW50aW5nT3JnJyk/LnN0YXR1cyA9PT0gRm9ybVN0YXR1cz8uSU5WQUxJRCAmJlxyXG4gICAgICAgIGlzQWxsT3RoZXJDb250cm9sc1ZhbGlkICYmXHJcbiAgICAgICAgdGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zLmxlbmd0aCA+IDApIHx8XHJcbiAgICAgIGZvcm1bMF0uc3RhdHVzID09PSBGb3JtU3RhdHVzPy5WQUxJRFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAgIC5lZGl0R3JvdXBzVXNlclJvbGUodGhpcy5nZXRFZGl0VXNlclJvbGVQYXlsb2FkKGZvcm1bMF0/LmdldFJhd1ZhbHVlKCkpKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcz8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zdWJtaXRGb3JtUmVzcG9uc2U/LmVtaXQocmVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgZWRpdCB1c2VyIHBheWxvYWQgZnJvbSB0aGUgZm9ybSBkYXRhIGRlcGVuZHMgb24gdGhlIEdyb3VwUm9zdGVyVHlwZSBhbmQgcmV0dXJucy5cclxuICAgKiBAcGFyYW0geyp9IGZvcm1EYXRhXHJcbiAgICogQHJldHVybiB7KEFkZE9yRWRpdFVzZXJQYXlsb2FkIHwgQWRkT3JFZGl0VXNlckluZGl2aWR1YWxSb3N0ZXJQYXlsb2FkKX1cclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEVkaXRVc2VyUm9sZVBheWxvYWQoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgZm9ybURhdGE6IGFueVxyXG4gICk6IEFkZE9yRWRpdFVzZXJQYXlsb2FkIHwgQWRkT3JFZGl0VXNlckluZGl2aWR1YWxSb3N0ZXJQYXlsb2FkIHtcclxuICAgIGxldCBwYXlsb2FkOiBBZGRPckVkaXRVc2VyUGF5bG9hZCB8IEFkZE9yRWRpdFVzZXJJbmRpdmlkdWFsUm9zdGVyUGF5bG9hZDtcclxuICAgIGlmICh0aGlzLmdyb3VwUm9zdGVyVHlwZSA9PT0gR3JvdXBSb3N0ZXJUeXBlPy5JTkRJVklEVUFMKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZE9wdGlvbnMgPSB0aGlzLnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnMubWFwKChvcHRpb24pID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgb3JnSWQ6IG9wdGlvbi5pZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgICBvcmdOYW1lOiBvcHRpb24ubmFtZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICB1c2VySWQ6IHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8udXNlcklkLFxyXG4gICAgICAgICAgZW1haWw6IHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8uZW1haWwsXHJcbiAgICAgICAgICByb2xlczogdGhpcy5zZWxlY3RlZFVzZXJSb2xlSWRzLFxyXG4gICAgICAgICAgZ3JvdXBJZDogdGhpcy5ncm91cHNTZXJ2aWNlLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cElkIGFzIHN0cmluZyxcclxuICAgICAgICAgIG9yZ2FuaXphdGlvbnM6IGZvcm1hdHRlZE9wdGlvbnMsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgICAgaWYgKHRoaXMuaGFzQ2xhc3NpZmljYXRpb24pXHJcbiAgICAgICAgcGF5bG9hZC5wYXlsb2FkLmNsYXNzaWZpY2F0aW9uID0ge1xyXG4gICAgICAgICAgY2xhc3NpZmljYXRpb25JZDogZm9ybURhdGE/LmNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgID8gZm9ybURhdGE/LmNsYXNzaWZpY2F0aW9uPy5pZFxyXG4gICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZm9ybURhdGE/Lm1lbWJlclR5cGUgJiZcclxuICAgICAgICAhcGF5bG9hZC5wYXlsb2FkLnJvbGVzPy5pbmNsdWRlcyhmb3JtRGF0YT8ubWVtYmVyVHlwZT8uaWQpXHJcbiAgICAgIClcclxuICAgICAgICBwYXlsb2FkLnBheWxvYWQucm9sZXM/LnB1c2goZm9ybURhdGE/Lm1lbWJlclR5cGU/LmlkKTtcclxuICAgIH0gZWxzZVxyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICAgIGVtYWlsOiB0aGlzLnNlbGVjdGVkVXNlckluZm8/LmVtYWlsLFxyXG4gICAgICAgICAgdXNlcklkOiB0aGlzLnNlbGVjdGVkVXNlckluZm8/LnVzZXJJZCxcclxuICAgICAgICAgIHJvbGVzOiB0aGlzLnNlbGVjdGVkVXNlclJvbGVJZHMsXHJcbiAgICAgICAgICBncm91cElkOiB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cElkIGFzIHN0cmluZyxcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgcmV0dXJuIHBheWxvYWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyBmb3JtIGNhbmNlbCBldmVudC5cclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRWRpdFVzZXJSb2xlQ2FuY2VsbGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtQ2FuY2VsPy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgZm9ybSByZWZlcmVuY2UuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0Rm9ybUdyb3VwUmVmZXJlbmNlKGZvcm06IEZvcm1Hcm91cFtdKSB7XHJcbiAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZiA9IGZvcm1bMF07XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRVc2VySW5mbz8uY2FuRGVsZXRlKSB7XHJcbiAgICAgICh0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZj8uY29udHJvbHNbJ3JvbGVzJ10gYXMgRm9ybUFycmF5KVxyXG4gICAgICAgID8uYXQoMClcclxuICAgICAgICA/LmRpc2FibGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVnaXN0ZXJSZXByZXNlbnRpbmdPcmdDb250cm9sKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWdpc3RlcnMgdGhlIGByZXByZXNlbnRpbmdPcmdgIHJlYWN0aXZlIGNvbnRyb2wgb24gdGhlIGR5bmFtaWMgZm9ybSdzXHJcbiAgICogRm9ybUdyb3VwIGZvciBJTkRJVklEVUFMIHJvc3RlcnMuIFRoZSBmaWVsZCBpdHNlbGYgaXMgcmVuZGVyZWQgYnkgdGhlIGN1c3RvbVxyXG4gICAqIE9yZ011bHRpU2VsZWN0Q29tcG9uZW50IChub3QgdGhlIGR5bmFtaWMgZm9ybSksIGJ1dCBrZWVwaW5nIHRoaXMgY29udHJvbCBvblxyXG4gICAqIHRoZSBzYW1lIEZvcm1Hcm91cCDigJQgd2l0aCB0aGUgb3JpZ2luYWwgdmFsaWRhdG9ycyDigJQgbWVhbnMgYWxsIGV4aXN0aW5nXHJcbiAgICogc3VibWl0L1NhdmUtYnV0dG9uIGxvZ2ljIHRoYXQgcmVhZHMgYGZvcm0uZ2V0KCdyZXByZXNlbnRpbmdPcmcnKWAga2VlcHNcclxuICAgKiB3b3JraW5nIHVuY2hhbmdlZC4gSXRzIHZhbHVlIGlzIHRoZSBzZWxlY3RlZC1vcmdhbml6YXRpb25zIGFycmF5LCBrZXB0IGluXHJcbiAgICogc3luYyBieSBnZXRTZWxlY3RlZE9yZ2FuaXphdGlvbnMoKS4gUHJlZmlsbGVkIHdpdGggdGhlIHVzZXIncyBleGlzdGluZ1xyXG4gICAqIG9yZ2FuaXphdGlvbnMgb24gZWRpdC5cclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHJlZ2lzdGVyUmVwcmVzZW50aW5nT3JnQ29udHJvbCgpOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5ncm91cFJvc3RlclR5cGUgIT09IEdyb3VwUm9zdGVyVHlwZS5JTkRJVklEVUFMIHx8XHJcbiAgICAgICF0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZiB8fFxyXG4gICAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZi5jb250YWlucygncmVwcmVzZW50aW5nT3JnJylcclxuICAgICkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZi5hZGRDb250cm9sKFxyXG4gICAgICAncmVwcmVzZW50aW5nT3JnJyxcclxuICAgICAgbmV3IEZvcm1Db250cm9sKFxyXG4gICAgICAgIHRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucz8ubGVuZ3RoXHJcbiAgICAgICAgICA/IHRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uc1xyXG4gICAgICAgICAgOiAnJyxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB1cGRhdGVPbjogJ2JsdXInLFxyXG4gICAgICAgICAgdmFsaWRhdG9yczogW1xyXG4gICAgICAgICAgICByZXByZXNlbnRpbmdPcmdSZXF1aXJlZFZhbGlkYXRvcigpLFxyXG4gICAgICAgICAgICBza2lwV2hlbkFycmF5KFxyXG4gICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKFxyXG4gICAgICAgICAgICAgICAgR3JvdXBzVmFsaWRhdGlvblBhdHRlcm5zLnJlcHJlc2VudGluZ09yZ05hbWVNYXhMZW5ndGhcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHNraXBXaGVuQXJyYXkoXHJcbiAgICAgICAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoXHJcbiAgICAgICAgICAgICAgICBHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMucmVwcmVzZW50aW5nT3JnTmFtZU1pbkxlbmd0aFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgc2tpcFdoZW5BcnJheShcclxuICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXHJcbiAgICAgICAgICAgICAgICBHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGVkaXQgdXNlciByb2xlIGZvcm0gY2hhbmdlIGV2ZW50LlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1cclxuICAgKiBAbWVtYmVyb2YgZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmXHJcbiAgICovXHJcbiAgb25FZGl0VXNlclJvbGVGb3JtQ2hhbmdlKGZvcm06IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZiA9IGZvcm1bMF07XHJcbiAgICB0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0aGlzLmdyb3Vwc1NlcnZpY2UuaXNTdWJtaXRCdXR0b25EaXNhYmxlZChcclxuICAgICAgdGhpcy5ncm91cFJvc3RlclR5cGUsXHJcbiAgICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmPy5zdGF0dXMsXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VyUm9sZUlkc1xyXG4gICAgKTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zLmxlbmd0aCAmJlxyXG4gICAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZi5jb250cm9sc1sncmVwcmVzZW50aW5nT3JnJ10uc3RhdHVzID09PVxyXG4gICAgICAgIEZvcm1TdGF0dXMuSU5WQUxJRFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICAvLyBBbiB1bmNvbW1pdHRlZCwgaW52YWxpZCBmcmVlLXRleHQgdG9rZW4gaW4gdGhlIG9yZyBmaWVsZCBtdXN0IGJsb2NrIHN1Ym1pdFxyXG4gICAgLy8gcmVnYXJkbGVzcyBvZiBhbnkgdmFsaWQgY2hpcHMgYWxyZWFkeSBzZWxlY3RlZC5cclxuICAgIGlmICh0aGlzLmhhc0ludmFsaWRPcmdGcmVlVGV4dCkge1xyXG4gICAgICB0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgY2xhc3NpZmljYXRpb25zIGZyb20gbWFzdGVyIGRhdGEuXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRDbGFzc2lmaWNhdGlvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmdldENsYXNzaWZpY2F0aW9ucygpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXNwb25zZT8uYm9keT8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xhc3NpZmljYXRpb25zPy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogb3B0aW9uLmNsYXNzaWZpY2F0aW9uSWQsXHJcbiAgICAgICAgICAgICAgbmFtZTogb3B0aW9uLmNsYXNzaWZpY2F0aW9uRGVzYyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICAgICAnY2xhc3NpZmljYXRpb24nLFxyXG4gICAgICAgICAgICAnZHJvcGRvd25PcHRpb25zJyxcclxuICAgICAgICAgICAgdGhpcy5jbGFzc2lmaWNhdGlvbnMsXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8uY2xhc3NpZmljYXRpb25cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgbWVtYmVyIHR5cGVzIGZyb20gbWFzdGVyIGRhdGEuXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRNZW1iZXJUeXBlcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IG1lbWJlclR5cGVzID0gdGhpcy5ncm91cHNTZXJ2aWNlLmdldE1lbWJlclR5cGVzKCk7XHJcbiAgICBtZW1iZXJUeXBlcz8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XHJcbiAgICAgIHRoaXMubWVtYmVyVHlwZXM/LnB1c2goe1xyXG4gICAgICAgIGlkOiBvcHRpb24ucm9sZUlkLFxyXG4gICAgICAgIG5hbWU6IG9wdGlvbi5yb2xlTmFtZSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAnbWVtYmVyVHlwZScsXHJcbiAgICAgICdkcm9wZG93bk9wdGlvbnMnLFxyXG4gICAgICB0aGlzLm1lbWJlclR5cGVzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkVXNlckluZm8/Lm1lbWJlclN0YXR1c1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHJlcHJlc2VudGluZyBPcmdhbml6YXRpb25zLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcmdOYW1lXHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRPcmdhbml6YXRpb25zKG9yZ05hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5vcmdTZWFyY2hWYWx1ZSA9IG9yZ05hbWU7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbnMgPSBbXTtcclxuICAgIG9yZ05hbWUgPSBvcmdOYW1lPy50cmltU3RhcnQoKTtcclxuICAgIHRoaXMudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAncmVwcmVzZW50aW5nT3JnJyxcclxuICAgICAgJ211bHRpU2VsZWN0QXV0b0NvbXBsZXRlT3B0aW9ucycsXHJcbiAgICAgIFtdLFxyXG4gICAgICAnJ1xyXG4gICAgKTtcclxuICAgIGlmICghb3JnTmFtZSkgcmV0dXJuO1xyXG4gICAgY29uc3Qgb3JnUmVxdWVzdFBheWxvYWQ6IE9yZ2FuaXphdGlvblJlcXVlc3RQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7IG9yZ05hbWU6IG9yZ05hbWUgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmdldE9yZ2FuaXphdGlvbnMob3JnUmVxdWVzdFBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBvcmdzOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xyXG4gICAgICAgICAgcmVzcG9uc2U/LmJvZHk/LmZvckVhY2goKG9wdGlvbikgPT4ge1xyXG4gICAgICAgICAgICBvcmdzLnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBvcHRpb24ub3JnSWQsXHJcbiAgICAgICAgICAgICAgbmFtZTogb3B0aW9uLm9yZ05hbWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICAvLyBBc3NpZ24gYSBuZXcgYXJyYXkgcmVmZXJlbmNlIHNvIHRoZSBjdXN0b20gT3JnTXVsdGlTZWxlY3RDb21wb25lbnQnc1xyXG4gICAgICAgICAgLy8gW29wdGlvbnNdIHNldHRlciBydW5zIGFuZCBvcGVucyB0aGUgcmVzdWx0cyBkcm9wZG93bi4gRnJlZS10ZXh0XHJcbiAgICAgICAgICAvLyBtaW4vbWF4L3BhdHRlcm4gdmFsaWRhdGlvbiBpcyBoYW5kbGVkIGluc2lkZSB0aGF0IGNvbXBvbmVudC5cclxuICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9ucyA9IG9yZ3M7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHRoZSBkcm9wZG93biBvcHRpb25zIG9mIENsYXNzaWZpY2F0aW9uLCBNZW1iZXIgVHlwZSBhbmQgUmVwcmVzZW50aW5nIE9yZ2FuaXphdGlvbiBmb3JtIGZpZWxkcy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybUNvbnRyb2xOYW1lXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZvcm1Db250cm9sSW5wdXRQcm9wZXJ0eVxyXG4gICAqIEBwYXJhbSB7U2VsZWN0T3B0aW9uW119IG9wdGlvbnNcclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgIGZvcm1Db250cm9sTmFtZTogc3RyaW5nLFxyXG4gICAgZm9ybUNvbnRyb2xJbnB1dFByb3BlcnR5OiBzdHJpbmcsXHJcbiAgICBvcHRpb25zOiBTZWxlY3RPcHRpb25bXSxcclxuICAgIHNlbGVjdGVkT3B0aW9uPzogc3RyaW5nXHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCBmb3JtRmllbGRzID0gdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudD8uZm9ybUZpZWxkcz8udG9BcnJheSgpO1xyXG4gICAgZm9ybUZpZWxkcz8uZm9yRWFjaCgoZm9ybUZpZWxkKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNlYXJjaGVkT3JnTmFtZSA9IG9wdGlvbnM/LmZpbHRlcigob3B0aW9uKSA9PlxyXG4gICAgICAgIHNlbGVjdGVkT3B0aW9uPy5pbmNsdWRlcyhvcHRpb24/Lm5hbWUpXHJcbiAgICAgIClbMF07XHJcbiAgICAgIGlmIChcclxuICAgICAgICBmb3JtRmllbGQ/LmNvbXBvbmVudD8uaW5zdGFuY2U/LmNvbmZpZz8uY29udHJvbE5hbWUgPT09XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWUgJiZcclxuICAgICAgICBmb3JtRmllbGQ/LmNvbXBvbmVudD8uaW5zdGFuY2U/Lltmb3JtQ29udHJvbElucHV0UHJvcGVydHldXHJcbiAgICAgIClcclxuICAgICAgICBmb3JtRmllbGQuY29tcG9uZW50Lmluc3RhbmNlW2Zvcm1Db250cm9sSW5wdXRQcm9wZXJ0eV0gPSBvcHRpb25zO1xyXG4gICAgICBpZiAoc2VsZWN0ZWRPcHRpb24gJiYgc2VhcmNoZWRPcmdOYW1lKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0VXNlclJvbGVGb3JtR3JvdXBSZWZcclxuICAgICAgICAgIC5nZXQoZm9ybUNvbnRyb2xOYW1lKVxyXG4gICAgICAgICAgPy5zZXRWYWx1ZShzZWFyY2hlZE9yZ05hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhcHR1cmVzIHRoZSBzZXJ2ZXIgc2lkZSBlcnJvcnMgYW5kIGhhbmRsZXMgaXQgYmFzZWQgb24gdGhlIGN1c3RvbSBvciBIdHRwIGVycm9ycy5cclxuICAgKiBAcGFyYW0ge0h0dHBFcnJvclJlc3BvbnNlfSBlcnJvclxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBoYW5kbGVFcnJvcnMoZXJyb3I6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZXJyb3JDb2RlcyA9IGVycm9yPy5lcnJvcj8uYm9keT8uZXJyb3JDb2RlcztcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGVycm9yQ29kZXMpICYmICFlcnJvcj8uZXJyb3I/LnN0YXR1cykge1xyXG4gICAgICBpZiAoZXJyb3JDb2Rlc1swXSAhPT0gJzMwMDQnKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5wYXJzZUVycm9yTWVzc2FnZShlcnJvckNvZGVzKTtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZSh7XHJcbiAgICAgICAgICBzdGF0dXM6ICdjdXN0b20nLFxyXG4gICAgICAgICAgbWVzc2FnZTogZXJyb3JNZXNzYWdlLFxyXG4gICAgICAgICAgYWxlcnRUeXBlOiBBbGVydFR5cGUuRVJST1IsXHJcbiAgICAgICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yICYmIGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgdGhpcy5nbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlPy5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIERpc2FibGVzIGZvcm0gc3VibWl0IGJ1dHRvbiB3aGVuIG9yZyBuYW1lIGxlbmd0aCBpcyBsZXNzIHRoYW4gbWluQ2hhclRvU2VhcmNoIGFuZCBncmVhdGVyIHRoYW4gemVyby5cclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGRpc2FibGVTdWJtaXRCdXR0b24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAncmVwcmVzZW50aW5nT3JnJyxcclxuICAgICAgICAnbXVsdGlTZWxlY3RBdXRvQ29tcGxldGVPcHRpb25zJyxcclxuICAgICAgICBbXVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmdPbkRlc3Ryb3kgcGVyZm9ybXMgbmVjZXNzYXJ5IGNsZWFudXAgdGFza3MsIHN1Y2ggYXMgdW5zdWJzY3JpYmluZyBmcm9tIHN1YnNjcmlwdGlvbiB3aGVuIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgZGVzdHJveWVkLlxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxpZWVlc2EtZHluYW1pYy1mb3JtXHJcbiAgW2xlZnRCdXR0b25MYWJlbF09XCJsZWZ0QnV0dG9uTGFiZWxcIlxyXG4gIFtyaWdodEJ1dHRvbkxhYmVsXT1cInJpZ2h0QnV0dG9uTGFiZWxcIlxyXG4gIFtpc0xlZ2VuZFZpc2libGVdPVwiZmFsc2VcIlxyXG4gIFtpc1N1Ym1pdEJ1dHRvbkRpc2FibGVkXT1cImlzU3VibWl0QnV0dG9uRGlzYWJsZWRcIlxyXG4gIFtjb2xXaWR0aF09XCJjb2xXaWR0aFwiXHJcbiAgW2FjdGlvbkJ1dHRvbkFsaWduXT1cImFjdGlvbkJ1dHRvbkFsaWduXCJcclxuICBbZm9ybUdyb3Vwc109XCJlZGl0VXNlclJvbGVGb3JtR3JvdXBcIlxyXG4gIFtpc0xlZnRCdXR0b25OZWVkZWRdPVwidHJ1ZVwiXHJcbiAgKGZvcm1TdWJtaXQpPVwib25FZGl0VXNlclJvbGVGb3JtU3VibWl0KCRldmVudClcIlxyXG4gIChmb3JtTGVmdEJ1dHRvbkNsaWNrZWQpPVwib25FZGl0VXNlclJvbGVDYW5jZWxsZWQoKVwiXHJcbiAgKGZvcm1DaGVja2JveFNlbGVjdGlvbik9XCJvblVzZXJSb2xlU2VsZWN0aW9uKCRldmVudClcIlxyXG4gIChmb3JtR3JvdXBzUmVmZXJlbmNlKT1cImdldEZvcm1Hcm91cFJlZmVyZW5jZSgkZXZlbnQpXCJcclxuICAoZm9ybUNoYW5nZSk9XCJvbkVkaXRVc2VyUm9sZUZvcm1DaGFuZ2UoJGV2ZW50KVwiXHJcbj5cclxuICA8IS0tXHJcbiAgICBSZXByZXNlbnRpbmcgT3JnYW5pemF0aW9uIChJTkRJVklEVUFMIHJvc3RlcnMgb25seSkuIFByb2plY3RlZCBpbnRvIHRoZVxyXG4gICAgZHluYW1pYyBmb3JtJ3MgW2NvbXBvbmVudF0gc2xvdCBzbyBpdCByZW5kZXJzIGFmdGVyIHRoZSBvdGhlciBmaWVsZHMgYnV0XHJcbiAgICBCRUZPUkUgdGhlIFNhdmUvQ2FuY2VsIGFjdGlvbiBidXR0b25zLiBVc2VzIHRoZSBjdXN0b20gbXVsdGktc2VsZWN0IGZpZWxkIHNvXHJcbiAgICBtdWx0aXBsZSBvcmdzIGNhbiBiZSBwaWNrZWQgZnJvbSBhbiBvcGVuIGRyb3Bkb3duIHdpdGhvdXQgdGhlIE1hdGVyaWFsXHJcbiAgICBhdXRvY29tcGxldGUgY2xvc2luZyBvciBjbGVhcmluZyB0aGUgdHlwZWQgdGV4dC4gUHJlZmlsbGVkIHdpdGggdGhlIHVzZXInc1xyXG4gICAgZXhpc3Rpbmcgb3JnYW5pemF0aW9ucyBhbmQgc3luY2VkIHRvIHRoZSByZWFjdGl2ZSBgcmVwcmVzZW50aW5nT3JnYCBjb250cm9sXHJcbiAgICB2aWEgZ2V0U2VsZWN0ZWRPcmdhbml6YXRpb25zKCkuXHJcbiAgLS0+XHJcbiAgPGllZWVzYS1vcmctbXVsdGktc2VsZWN0XHJcbiAgICBjb21wb25lbnRcclxuICAgICpuZ0lmPVwiaXNJbmRpdmlkdWFsUm9zdGVyXCJcclxuICAgIGNsYXNzPVwiaWVlZXNhLWVkaXQtdXNlci1yb2xlc19fb3JnXCJcclxuICAgIFtsYWJlbF09XCJhZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb24gKyAnKidcIlxyXG4gICAgW2FyaWFMYWJlbF09XCJhZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LnJlcHJlc2VudGluZ09yZ2FuaXphdGlvblwiXHJcbiAgICBbc3VwcG9ydE1lc3NhZ2VdPVwiYWRkVXNlclJvc3RlclRleHRzPy5zdXBwb3J0VGV4dD8ucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uXCJcclxuICAgIFtvcHRpb25zXT1cIm9yZ2FuaXphdGlvbnNcIlxyXG4gICAgW3NlbGVjdGVkT3B0aW9uc109XCJyZXByZXNlbnRpbmdPcmdhbml6YXRpb25zXCJcclxuICAgIChzZWFyY2gpPVwiZ2V0T3JnYW5pemF0aW9ucygkZXZlbnQpXCJcclxuICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiZ2V0U2VsZWN0ZWRPcmdhbml6YXRpb25zKCRldmVudClcIlxyXG4gICAgKGludmFsaWRGcmVlVGV4dCk9XCJvbk9yZ0ludmFsaWRGcmVlVGV4dCgkZXZlbnQpXCJcclxuICA+PC9pZWVlc2Etb3JnLW11bHRpLXNlbGVjdD5cclxuPC9pZWVlc2EtZHluYW1pYy1mb3JtPlxyXG4iXX0=
|
|
679
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC11c2VyLXJvbGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvZWRpdC11c2VyLXJvbGVzL2VkaXQtdXNlci1yb2xlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2VkaXQtdXNlci1yb2xlcy9lZGl0LXVzZXItcm9sZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBR1osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFDTCxTQUFTLEVBSVQsZUFBZSxFQUlmLG9CQUFvQixHQUNyQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sS0FBSyxXQUFXLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFhLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBV3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLGdDQUFnQyxFQUNoQyxhQUFhLEdBQ2QsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUtsRixP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QXdCLENBQzNCLGlCQUFpQixFQUNqQixnQ0FBZ0MsRUFDaEMsRUFBRSxDQUNILENBQUM7WUFDRixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7K0dBaHdCVSxzQkFBc0I7bUdBQXRCLHNCQUFzQix5TkEwQ3RCLG9CQUFvQixnREMzR2pDLGsyREFzQ0EsK3ZaRHNCWSxZQUFZLG1JQUFFLG9CQUFvQiwwbkNBQUUsdUJBQXVCOzs0RkFLMUQsc0JBQXNCO2tCQVJsQyxTQUFTOytCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLENBQUMsaUJBR3ZELGlCQUFpQixDQUFDLElBQUk7d0tBNENKLG9CQUFvQjtzQkFBcEQsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ3JCLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgR3JvdXBzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyb3Vwcy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBBbGlnblR5cGUsXHJcbiAgQXV0b0NvbXBsZXRlT3B0aW9uLFxyXG4gIENoZWNrYm94T3B0aW9uLFxyXG4gIEZpZWxkQ29uZmlnLFxyXG4gIEZvcm1Db250cm9sVHlwZSxcclxuICBGb3JtR3JpZCxcclxuICBGb3JtTW9kZWwsXHJcbiAgU2VsZWN0T3B0aW9uLFxyXG4gIER5bmFtaWNGb3JtQ29tcG9uZW50LFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCAqIGFzIHNjcmVlblRleHRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgR3JvdXBVc2VySW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC11c2VyLWluZm8ubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRm9ybVN0YXR1cywgQWxlcnRUeXBlIH0gZnJvbSAnQGllZWVzYS1ucG0vbW9kZWxzJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQWxlcnRzU2VydmljZSxcclxuICBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQge1xyXG4gIEFkZE9yRWRpdFVzZXJJbmRpdmlkdWFsUm9zdGVyUGF5bG9hZCxcclxuICBBZGRPckVkaXRVc2VyUGF5bG9hZCxcclxuICBSZXByZXNlbnRpbmdPcmdhbml6YXRpb24sXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL2FkZC1vci1lZGl0LXVzZXItZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cFR5cGVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyb3VwLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBSb3N0ZXJUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Jvc3Rlci10eXBlLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMsXHJcbiAgcmVwcmVzZW50aW5nT3JnUmVxdWlyZWRWYWxpZGF0b3IsXHJcbiAgc2tpcFdoZW5BcnJheSxcclxufSBmcm9tICcuLi8uLi9hc3NldHMvZm9ybS12YWxpZGF0aW9ucyc7XHJcbmltcG9ydCB7IERFRkFVTFRfQ09VTlRSWV9DQUxMSU5HX0NPREUgfSBmcm9tICcuLi8uLi9hc3NldHMvY291bnRyeS1jYWxsaW5nLWNvZGVzJztcclxuaW1wb3J0IHtcclxuICBPcmdhbml6YXRpb24sXHJcbiAgT3JnYW5pemF0aW9uUmVxdWVzdFBheWxvYWQsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL29yZ2FuaXphdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE9yZ011bHRpU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vb3JnLW11bHRpLXNlbGVjdC9vcmctbXVsdGktc2VsZWN0LmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50IGltcGxlbWVudHMgdGhlIHZpZXcgYW5kIGZ1bmN0aW9uYWxpdGllcyB0byBlZGl0IGdyb3VwIHVzZXJzIHRvIHJvc3Rlci5cclxuICogQGNsYXNzIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICogQGltcGxlbWVudHMge09uSW5pdH1cclxuICogQGltcGxlbWVudHMge09uRGVzdHJveX1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWVkaXQtdXNlci1yb2xlcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEeW5hbWljRm9ybUNvbXBvbmVudCwgT3JnTXVsdGlTZWxlY3RDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0LXVzZXItcm9sZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VkaXQtdXNlci1yb2xlcy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0VXNlclJvbGVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gc2NyZWVuVGV4dHM7XHJcbiAgYWRkVXNlclJvc3RlclRleHRzID0gdGhpcy5jb25zdGFudHM/LmFkZFVzZXJSb3N0ZXI7XHJcbiAgbGVmdEJ1dHRvbkxhYmVsID0gdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5sZWZ0QnV0dG9uTGFiZWw7XHJcbiAgcmlnaHRCdXR0b25MYWJlbCA9IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uc2F2ZUJ1dHRvbkxhYmVsO1xyXG4gIGlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICBjb2xXaWR0aDogRm9ybUdyaWQgPSB7IHhzOiAxMiwgeGw6IDEyLCBzbTogMTIsIG1kOiAxMiwgbGc6IDEyIH07XHJcbiAgZWRpdFVzZXJSb2xlRm9ybUdyb3VwITogRm9ybU1vZGVsO1xyXG4gIGVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZiE6IEZvcm1Hcm91cDtcclxuICB1c2VyUm9sZXMhOiBDaGVja2JveE9wdGlvbltdO1xyXG4gIHNlbGVjdGVkVXNlclJvbGVJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgc2VsZWN0ZWRVc2VySW5mbyE6IEdyb3VwVXNlckluZm87XHJcbiAgYWN0aW9uQnV0dG9uQWxpZ24gPSBBbGlnblR5cGUuTEVGVDtcclxuICBjbGFzc2lmaWNhdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgbWVtYmVyVHlwZXM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgb3JnYW5pemF0aW9uczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICBncm91cFR5cGVzITogR3JvdXBUeXBlQ29uZmlndXJhdGlvbltdO1xyXG4gIGhhc0NsYXNzaWZpY2F0aW9uID0gZmFsc2U7XHJcbiAgZ3JvdXBSb3N0ZXJUeXBlITogR3JvdXBSb3N0ZXJUeXBlO1xyXG4gIHJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgY291bnRyeUNhbGxpbmdDb2RlczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICBvcmdTZWFyY2hWYWx1ZSA9ICcnO1xyXG4gIC8vIFRlbmFudC1jb25maWd1cmVkIG9wdGlvbmFsIHByb2ZpbGUgZmllbGRzIChlLmcuICdwaG9uZScsICdhZGRyZXNzJykgdG8gc2hvdyBvbiB0aGUgZWRpdC11c2VyIGZvcm0uXHJcbiAgcmVxdWlyZWRQcm9maWxlRmllbGRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiBUcnVlIHdoZW4gdGhlIHNlbGVjdGVkIGdyb3VwJ3Mgcm9zdGVyIHR5cGUgaXMgSU5ESVZJRFVBTCAodGhlIG9ubHkgcm9zdGVyXHJcbiAgICogdHlwZSB0aGF0IHNob3dzIHRoZSBSZXByZXNlbnRpbmcgT3JnYW5pemF0aW9uIGZpZWxkKS5cclxuICAgKiBAcmVhZG9ubHlcclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBpc0luZGl2aWR1YWxSb3N0ZXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5ncm91cFJvc3RlclR5cGUgPT09IEdyb3VwUm9zdGVyVHlwZS5JTkRJVklEVUFMO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJ1ZSB3aGVuIHRoZSBvcmcgZmllbGQgaG9sZHMgYW4gdW5jb21taXR0ZWQsIGludmFsaWQgZnJlZS10ZXh0IHRva2VuLiBVc2VkXHJcbiAgICogdG8ga2VlcCBTYXZlIGRpc2FibGVkIGV2ZW4gd2hlbiBhIHZhbGlkIGNoaXAgYWxyZWFkeSBleGlzdHMuXHJcbiAgICovXHJcbiAgaGFzSW52YWxpZE9yZ0ZyZWVUZXh0ID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZChEeW5hbWljRm9ybUNvbXBvbmVudCkgZHluYW1pY0Zvcm1Db21wb25lbnQhOiBEeW5hbWljRm9ybUNvbXBvbmVudDtcclxuICBAT3V0cHV0KCkgc3VibWl0Rm9ybVJlc3BvbnNlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmb3JtQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGdyb3Vwc1NlcnZpY2U6IEdyb3Vwc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBnbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlOiBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgYWxlcnRTZXJ2aWNlOiBBbGVydHNTZXJ2aWNlIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvblxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgZWRpdCB1c2VyIHJvbGUgcmVxdWlyZWQgaW5mb3JtYXRpb24gYW5kIGZvcm0gZ3JvdXAgYXJyYXkuXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRVc2VySW5mbyA9IHRoaXMuZ3JvdXBzU2VydmljZT8uZ2V0U2VsZWN0ZWRVc2VySW5mbygpO1xyXG4gICAgdGhpcy5jb3VudHJ5Q2FsbGluZ0NvZGVzID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRDb3VudHJ5Q2FsbGluZ0NvZGVzKCk7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2UucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucy5mb3JFYWNoKFxyXG4gICAgICAodXNlcjogUmVwcmVzZW50aW5nT3JnYW5pemF0aW9uKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJJbmZvLnVzZXJJZCA9PT0gdXNlci51c2VySWQgJiZcclxuICAgICAgICAgIHVzZXIub3JnYW5pemF0aW9ucz8ubGVuZ3RoXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB1c2VyLm9yZ2FuaXphdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBPcmdhbml6YXRpb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zPy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogb3B0aW9uLm9yZ0lkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5vcmdOYW1lLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcclxuICAgIHRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucz8ubGVuZ3RoXHJcbiAgICAgID8gKHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlKVxyXG4gICAgICA6ICh0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkVXNlclJvbGVOYW1lcyA9IHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8ucm9sZVxyXG4gICAgICA/LnNwbGl0KCcsJylcclxuICAgICAgLm1hcCgocm9sZSkgPT4gcm9sZT8udHJpbSgpKTtcclxuICAgIHRoaXMudXNlclJvbGVzID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRHcm91cFR5cGVVc2VyUm9sZXMoKTtcclxuICAgIHRoaXMudXNlclJvbGVzPy5mb3JFYWNoKChyb2xlKSA9PiB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFVzZXJSb2xlTmFtZXM/LmluY2x1ZGVzKHJvbGU/Lm5hbWUgYXMgc3RyaW5nKSkge1xyXG4gICAgICAgIHJvbGUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlSWRzPy5wdXNoKHJvbGU/LmlkIGFzIHN0cmluZyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgZ3JvdXBUeXBlID0gdGhpcy5ncm91cHNTZXJ2aWNlLmdldEJ1c2luZXNzUnVsZU9mU2VsZWN0ZWRHcm91cCgpO1xyXG4gICAgdGhpcy5oYXNDbGFzc2lmaWNhdGlvbiA9IGdyb3VwVHlwZT8uaGFzQ2xhc3NpZmljYXRpb24gPz8gZmFsc2U7XHJcbiAgICB0aGlzLmdyb3VwUm9zdGVyVHlwZSA9IGdyb3VwVHlwZT8ucm9zdGVyVHlwZSBhcyBHcm91cFJvc3RlclR5cGU7XHJcbiAgICBpZiAoIXRoaXMuZ3JvdXBSb3N0ZXJUeXBlKVxyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZSh7XHJcbiAgICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgICBtZXNzYWdlOiB0aGlzLmNvbnN0YW50cz8uZXJyb3JzPy5FUjEwMDEsXHJcbiAgICAgICAgYWxlcnRUeXBlOiBBbGVydFR5cGUuRVJST1IsXHJcbiAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZ3JvdXBSb3N0ZXJUeXBlID09PSBHcm91cFJvc3RlclR5cGU/LklORElWSURVQUwpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNDbGFzc2lmaWNhdGlvbikgdGhpcy5nZXRDbGFzc2lmaWNhdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmdldE1lbWJlclR5cGVzKCk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gQnVpbGQgdGhlIGZvcm0gb25seSBvbmNlIHRoZSByZXF1aXJlZC1wcm9maWxlLWZpZWxkcyByZXNwb25zZSBpcyBrbm93bixcclxuICAgICAgLy8gc28gdGhlIHBob25lL2FkZHJlc3MgZmllbGRzIGFyZW4ndCBzaG93biB0aGVuIHlhbmtlZCBhd2F5LlxyXG4gICAgICB0aGlzLmdldFJlcXVpcmVkUHJvZmlsZUZpZWxkcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgZWRpdCB1c2VyIHJvbGUgZm9ybSBncm91cCBhcnJheS5cclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGVkaXRVc2VyUm9sZXNGb3JtR3JvdXAoKSB7XHJcbiAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cCA9IHtcclxuICAgICAgZm9ybUdyb3VwOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVnZW5kOiAnJyxcclxuICAgICAgICAgIGNvbnRyb2xzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGU/LlRFWFRfQVJFQSxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5lbWFpbCArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2VtYWlsJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy5lbWFpbCxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5lbWFpbCxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmVtYWlsLFxyXG4gICAgICAgICAgICAgIGlzUmVhZG9ubHk6IHRydWUsXHJcbiAgICAgICAgICAgICAgYXJpYU11bHRpbGluZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgaXNSZXNpemU6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuVEVYVF9BUkVBLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmZ1bGxOYW1lICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnZnVsbE5hbWUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkVXNlckluZm8/Lm5hbWUsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uZnVsbE5hbWUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5mdWxsTmFtZSxcclxuICAgICAgICAgICAgICBpc1JlYWRvbmx5OiB0cnVlLFxyXG4gICAgICAgICAgICAgIGFyaWFNdWx0aWxpbmU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGlzUmVzaXplOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyBQaG9uZSAoY29tYmluZWQgY291bnRyeSBjb2RlICsgbnVtYmVyKSwgc2hvd24gb25seSB3aGVuIHRoZVxyXG4gICAgICAgICAgICAvLyB0ZW5hbnQncyByZXF1aXJlZC1wcm9maWxlLWZpZWxkcyBjb25maWcgcmVxdWVzdHMgaXQuIFByZWZpbGxlZFxyXG4gICAgICAgICAgICAvLyBmcm9tIHRoZSBzZWxlY3RlZCB1c2VyOyByZWFkLW9ubHkgd2l0aCBhIHBlbmNpbCB0b2dnbGUgd2hlbiBhXHJcbiAgICAgICAgICAgIC8vIHZhbHVlIGV4aXN0cywgZWxzZSBlZGl0YWJsZSBkaXJlY3RseS5cclxuICAgICAgICAgICAgLi4uKHRoaXMucmVxdWlyZWRQcm9maWxlRmllbGRzLmluY2x1ZGVzKCdwaG9uZScpXHJcbiAgICAgICAgICAgICAgPyBbXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuUEhPTkUsXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8ucGhvbmVOdW1iZXIgKyAnKicsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdwaG9uZScsXHJcbiAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25PcHRpb25zOiB0aGlzLmNvdW50cnlDYWxsaW5nQ29kZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlDb2RlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVXNlckluZm8/LnBob25lQ291bnRyeUNvZGUgPz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgREVGQVVMVF9DT1VOVFJZX0NBTExJTkdfQ09ERSxcclxuICAgICAgICAgICAgICAgICAgICAgIHBob25lTnVtYmVyOiB0aGlzLnNlbGVjdGVkVXNlckluZm8/LnBob25lTnVtYmVyID8/ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaXNFZGl0VG9nZ2xlOiAhIXRoaXMuc2VsZWN0ZWRVc2VySW5mbz8ucGhvbmVOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgICAgICAgIG1heExlbmd0aDogR3JvdXBzVmFsaWRhdGlvblBhdHRlcm5zLnBob25lTnVtYmVyTWF4TGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTpcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5zdXBwb3J0VGV4dD8ucGhvbmVOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LnBob25lTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/LnBob25lTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgIDogW10pLFxyXG4gICAgICAgICAgICAvLyBBZGRyZXNzLCBzaG93biBvbmx5IHdoZW4gdGhlIHRlbmFudCdzIHJlcXVpcmVkLXByb2ZpbGUtZmllbGRzXHJcbiAgICAgICAgICAgIC8vIGNvbmZpZyByZXF1ZXN0cyBpdC4gUHJlZmlsbGVkIGZyb20gdGhlIHNlbGVjdGVkIHVzZXI7IHJlYWQtb25seVxyXG4gICAgICAgICAgICAvLyB3aXRoIGEgcGVuY2lsIHRvZ2dsZSB3aGVuIGEgdmFsdWUgZXhpc3RzLCBlbHNlIGVkaXRhYmxlIGRpcmVjdGx5LlxyXG4gICAgICAgICAgICAuLi4odGhpcy5yZXF1aXJlZFByb2ZpbGVGaWVsZHMuaW5jbHVkZXMoJ2FkZHJlc3MnKVxyXG4gICAgICAgICAgICAgID8gW1xyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlRFWFRfQVJFQSxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hZGRyZXNzICsgJyonLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnYWRkcmVzcycsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8uYWRkcmVzcyA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICBpc0VkaXRUb2dnbGU6ICEhdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy5hZGRyZXNzLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aChcclxuICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXBzVmFsaWRhdGlvblBhdHRlcm5zLmFkZHJlc3NNYXhMZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgICBtYXhMZW5ndGg6IEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucy5hZGRyZXNzTWF4TGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgICAgICBtYXhFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8uYWRkcmVzc01heENoYXJzLFxyXG4gICAgICAgICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8uc3VwcG9ydFRleHQ/LmFkZHJlc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgaXNSZXNpemU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWFNdWx0aWxpbmU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uYWRkcmVzcyxcclxuICAgICAgICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPy5hZGRyZXNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgIDogW10pLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLkNIRUNLQk9YLFxyXG4gICAgICAgICAgICAgIGxhYmVsOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cFJvc3RlclR5cGUgPT09IEdyb3VwUm9zdGVyVHlwZS5JTkRJVklEVUFMXHJcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5yb2xlXHJcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5yb2xlICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAncm9sZXMnLFxyXG4gICAgICAgICAgICAgIGNoZWNrYm94T3B0aW9uczogdGhpcy51c2VyUm9sZXMsXHJcbiAgICAgICAgICAgICAgbWluU2VsZWN0aW9uUmVxdWlyZWQ6IDEsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8ucm9sZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LnJvbGUsXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwUm9zdGVyVHlwZSA9PT0gR3JvdXBSb3N0ZXJUeXBlLklORElWSURVQUxcclxuICAgICAgICAgICAgICAgICAgPyB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8uc3VwcG9ydFRleHRcclxuICAgICAgICAgICAgICAgICAgICAgID8ucm9sZUZvckluZGl2aWR1YWxSb3N0ZXJcclxuICAgICAgICAgICAgICAgICAgOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8uc3VwcG9ydFRleHQ/LnJvbGUsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwUm9zdGVyVHlwZSA9PT0gR3JvdXBSb3N0ZXJUeXBlLklORElWSURVQUxcclxuICAgICAgICAgICAgICAgICAgPyBbXVxyXG4gICAgICAgICAgICAgICAgICA6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5ncm91cFJvc3RlclR5cGUgPT09IEdyb3VwUm9zdGVyVHlwZT8uSU5ESVZJRFVBTCkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUVkaXRVc2VyUm9sZUZvcm1Hcm91cCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBjbGFzc2lmaWNhdGlvbiwgTWVtYmVyIFR5cGUgYW5kIFJlcHJlc2VudGluZyBPcmdhbml6YXRpb24gZm9ybSBjb250cm9scyB3aGlsZSBlZGl0aW5nIG5ldyB1c2VyIHRvIGFuIGluZGl2aWR1YWwgZ3JvdXAgcm9zdGVyLlxyXG4gICAqIEBtZW1iZXJvZiBBZGRVc2VyUm9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdXBkYXRlRWRpdFVzZXJSb2xlRm9ybUdyb3VwKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGFzQ2xhc3NpZmljYXRpb24pXHJcbiAgICAgIHRoaXMudXBkYXRlRWRpdFVzZXJSb2xlRm9ybUNvbnRyb2xzKFxyXG4gICAgICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwPy5mb3JtR3JvdXBbMF0/LmNvbnRyb2xzPy5sZW5ndGggLSAxLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgICBsYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5jbGFzc2lmaWNhdGlvbiArICcqJyxcclxuICAgICAgICAgIGNvbnRyb2xOYW1lOiAnY2xhc3NpZmljYXRpb24nLFxyXG4gICAgICAgICAgZHJvcGRvd25PcHRpb25zOiB0aGlzLmNsYXNzaWZpY2F0aW9ucyxcclxuICAgICAgICAgIHZhbHVlOiB0aGlzLmNsYXNzaWZpY2F0aW9ucz8uZmlsdGVyKFxyXG4gICAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24/Lm5hbWUgPT09IHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8uY2xhc3NpZmljYXRpb25cclxuICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXHJcbiAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LnN1cHBvcnRUZXh0Py5jbGFzc2lmaWNhdGlvbixcclxuICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uY2xhc3NpZmljYXRpb24sXHJcbiAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uY2xhc3NpZmljYXRpb24sXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgdGhpcy51cGRhdGVFZGl0VXNlclJvbGVGb3JtQ29udHJvbHMoXHJcbiAgICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwPy5mb3JtR3JvdXBbMF0/LmNvbnRyb2xzPy5sZW5ndGggLSAxLFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlNFTEVDVCxcclxuICAgICAgICBsYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5tZW1iZXJUeXBlICsgJyonLFxyXG4gICAgICAgIGNvbnRyb2xOYW1lOiAnbWVtYmVyVHlwZScsXHJcbiAgICAgICAgZHJvcGRvd25PcHRpb25zOiB0aGlzLm1lbWJlclR5cGVzLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLm1lbWJlclR5cGVzPy5maWx0ZXIoXHJcbiAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24/Lm5hbWUgPT09IHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8ubWVtYmVyU3RhdHVzXHJcbiAgICAgICAgKVswXSxcclxuICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8uc3VwcG9ydFRleHQ/Lm1lbWJlclR5cGUsXHJcbiAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8ubWVtYmVyVHlwZSxcclxuICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/Lm1lbWJlclR5cGUsXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICAvLyBUaGUgXCJSZXByZXNlbnRpbmcgT3JnYW5pemF0aW9uXCIgZmllbGQgaXMgcmVuZGVyZWQgYnkgdGhlIGN1c3RvbVxyXG4gICAgLy8gT3JnTXVsdGlTZWxlY3RDb21wb25lbnQgaW4gdGhlIHRlbXBsYXRlIChub3QgYnkgdGhlIGR5bmFtaWMgZm9ybSkuIFRoZVxyXG4gICAgLy8gcmVhY3RpdmUgYHJlcHJlc2VudGluZ09yZ2AgY29udHJvbCBpcyByZWdpc3RlcmVkIG9uIHRoZSBjYXB0dXJlZCBmb3JtXHJcbiAgICAvLyBncm91cCByZWYgaW4gcmVnaXN0ZXJSZXByZXNlbnRpbmdPcmdDb250cm9sKCkgc28gYWxsIGV4aXN0aW5nIHN1Ym1pdC9cclxuICAgIC8vIFNhdmUtYnV0dG9uIGxvZ2ljICh3aGljaCByZWFkcyBmb3JtLmdldCgncmVwcmVzZW50aW5nT3JnJykpIGtlZXBzIHdvcmtpbmcuXHJcbiAgICAvLyBJdHMgdmFsdWUgc3RheXMgaW4gc3luYyB2aWEgZ2V0U2VsZWN0ZWRPcmdhbml6YXRpb25zKCkuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHNlbGVjdGVkIG9yZ2FuaXphdGlvbnMuXHJcbiAgICogQHBhcmFtIHtBdXRvQ29tcGxldGVPcHRpb25bXX0gc2VsZWN0ZWRPcmdcclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldFNlbGVjdGVkT3JnYW5pemF0aW9ucyhzZWxlY3RlZE9yZzogQXV0b0NvbXBsZXRlT3B0aW9uW10pOiB2b2lkIHtcclxuICAgIHRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucyA9IHNlbGVjdGVkT3JnO1xyXG4gICAgLy8gS2VlcCB0aGUgcmVhY3RpdmUgY29udHJvbCdzIHZhbHVlIGluIHN5bmMgd2l0aCB0aGUgc2VsZWN0aW9uIHNvIHRoZVxyXG4gICAgLy8gcmVxdWlyZWQgdmFsaWRhdG9yIGFuZCBzdWJtaXQvU2F2ZS1idXR0b24gbG9naWMgc3RheSBhY2N1cmF0ZS5cclxuICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmXHJcbiAgICAgID8uZ2V0KCdyZXByZXNlbnRpbmdPcmcnKVxyXG4gICAgICA/LnNldFZhbHVlKHNlbGVjdGVkT3JnPy5sZW5ndGggPyBzZWxlY3RlZE9yZyA6ICcnKTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcclxuICAgIHRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucy5sZW5ndGggJiYgIXRoaXMuaGFzSW52YWxpZE9yZ0ZyZWVUZXh0XHJcbiAgICAgID8gKHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlKVxyXG4gICAgICA6ICh0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIG9yZyBmaWVsZCdzIGludmFsaWQtZnJlZS10ZXh0IHN0YXRlLiBEaXNhYmxlcyBTYXZlIHdoaWxlIGFuXHJcbiAgICogdW5jb21taXR0ZWQgaW52YWxpZCB0b2tlbiByZW1haW5zOyByZS1ldmFsdWF0ZXMgd2hlbiBpdCBjbGVhcnMuXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpc0ludmFsaWQgLXdoZXRoZXIgYW4gdW5jb21taXR0ZWQgaW52YWxpZCB0b2tlbiBpcyBwcmVzZW50LlxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25PcmdJbnZhbGlkRnJlZVRleHQoaXNJbnZhbGlkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmhhc0ludmFsaWRPcmdGcmVlVGV4dCA9IGlzSW52YWxpZDtcclxuICAgIGlmIChpc0ludmFsaWQpIHtcclxuICAgICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFJlY29tcHV0ZSBmcm9tIHRoZSBzZWxlY3Rpb24gd2hlbiB0aGUgaW52YWxpZCB0b2tlbiBjbGVhcnMuXHJcbiAgICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9ICF0aGlzLnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnMubGVuZ3RoO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBlZGl0IHVzZXIgZm9ybSBncm91cCBjb250cm9scyBieSBhZGRpbmcgZmllbGRDb25maWcgYXQgcmVxdWlyZWQgaW5kZXguXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4UG9zaXRpb25cclxuICAgKiBAcGFyYW0ge0ZpZWxkQ29uZmlnfSBmaWVsZENvbmZpZ1xyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdXBkYXRlRWRpdFVzZXJSb2xlRm9ybUNvbnRyb2xzKFxyXG4gICAgaW5kZXhQb3NpdGlvbjogbnVtYmVyLFxyXG4gICAgZmllbGRDb25maWc6IEZpZWxkQ29uZmlnXHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cC5mb3JtR3JvdXBbMF0uY29udHJvbHMuc3BsaWNlKFxyXG4gICAgICBpbmRleFBvc2l0aW9uLFxyXG4gICAgICAwLFxyXG4gICAgICBmaWVsZENvbmZpZ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdXNlciByb2xlIHNlbGVjdGlvbiBhbmQgc2F2ZSBidXR0b24gZW5hYmxlIGRpc2FibGUgaW4gZWRpdCB1c2VyIHJvbGVzIGZvcm0uXHJcbiAgICogQHBhcmFtIHtDaGVja2JveE9wdGlvbn0gZXZlbnRcclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uVXNlclJvbGVTZWxlY3Rpb24oZXZlbnQ6IENoZWNrYm94T3B0aW9uKTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQ/LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlSWRzPy5wdXNoKGV2ZW50Py5pZCBhcyBzdHJpbmcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlSWRzID0gdGhpcy5zZWxlY3RlZFVzZXJSb2xlSWRzPy5maWx0ZXIoXHJcbiAgICAgICAgKGlkKSA9PiBpZCAhPT0gZXZlbnQ/LmlkXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ncm91cFJvc3RlclR5cGUgPT09IEdyb3VwUm9zdGVyVHlwZS5TWVNURU1fVVNFUikge1xyXG4gICAgICB0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0aGlzLmdyb3Vwc1NlcnZpY2UuaXNTdWJtaXRCdXR0b25EaXNhYmxlZChcclxuICAgICAgICB0aGlzLmdyb3VwUm9zdGVyVHlwZSxcclxuICAgICAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZj8uc3RhdHVzLFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRVc2VyUm9sZUlkc1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHJvbGVzIGFuZCBkZXRhaWxzIG9mIHVzZXIgb24gZm9ybSBzdWJtaXNzaW9uLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1cclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRWRpdFVzZXJSb2xlRm9ybVN1Ym1pdChmb3JtOiBGb3JtR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgZm9ybVswXT8ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgLy8gQmxvY2sgc3VibWl0IGlmIGFuIHVuY29tbWl0dGVkLCBpbnZhbGlkIGZyZWUtdGV4dCB0b2tlbiByZW1haW5zIGluIHRoZVxyXG4gICAgLy8gb3JnIGZpZWxkIGV2ZW4gd2hlbiBvdGhlciBjb250cm9scyAvIHNlbGVjdGVkIGNoaXBzIGFyZSB2YWxpZC5cclxuICAgIGlmICh0aGlzLmhhc0ludmFsaWRPcmdGcmVlVGV4dCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpc0FsbE90aGVyQ29udHJvbHNWYWxpZCA9IE9iamVjdC5rZXlzKGZvcm1bMF0uY29udHJvbHMpXHJcbiAgICAgIC5maWx0ZXIoKGNvbnRyb2xOYW1lKSA9PiBjb250cm9sTmFtZSAhPT0gJ3JlcHJlc2VudGluZ09yZycpXHJcbiAgICAgIC5ldmVyeShcclxuICAgICAgICAoY29udHJvbE5hbWUpID0+IGZvcm1bMF0uZ2V0KGNvbnRyb2xOYW1lKT8uc3RhdHVzID09PSBGb3JtU3RhdHVzPy5WQUxJRFxyXG4gICAgICApO1xyXG4gICAgaWYgKFxyXG4gICAgICAoZm9ybVswXS5nZXQoJ3JlcHJlc2VudGluZ09yZycpPy5zdGF0dXMgPT09IEZvcm1TdGF0dXM/LklOVkFMSUQgJiZcclxuICAgICAgICBpc0FsbE90aGVyQ29udHJvbHNWYWxpZCAmJlxyXG4gICAgICAgIHRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucy5sZW5ndGggPiAwKSB8fFxyXG4gICAgICBmb3JtWzBdLnN0YXR1cyA9PT0gRm9ybVN0YXR1cz8uVkFMSURcclxuICAgICkge1xyXG4gICAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgICAuZWRpdEdyb3Vwc1VzZXJSb2xlKHRoaXMuZ2V0RWRpdFVzZXJSb2xlUGF5bG9hZChmb3JtWzBdPy5nZXRSYXdWYWx1ZSgpKSlcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICAgIHRoaXMuc3VibWl0Rm9ybVJlc3BvbnNlPy5lbWl0KHJlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RzIGVkaXQgdXNlciBwYXlsb2FkIGZyb20gdGhlIGZvcm0gZGF0YSBkZXBlbmRzIG9uIHRoZSBHcm91cFJvc3RlclR5cGUgYW5kIHJldHVybnMuXHJcbiAgICogQHBhcmFtIHsqfSBmb3JtRGF0YVxyXG4gICAqIEByZXR1cm4geyhBZGRPckVkaXRVc2VyUGF5bG9hZCB8IEFkZE9yRWRpdFVzZXJJbmRpdmlkdWFsUm9zdGVyUGF5bG9hZCl9XHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRFZGl0VXNlclJvbGVQYXlsb2FkKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgIGZvcm1EYXRhOiBhbnlcclxuICApOiBBZGRPckVkaXRVc2VyUGF5bG9hZCB8IEFkZE9yRWRpdFVzZXJJbmRpdmlkdWFsUm9zdGVyUGF5bG9hZCB7XHJcbiAgICBsZXQgcGF5bG9hZDogQWRkT3JFZGl0VXNlclBheWxvYWQgfCBBZGRPckVkaXRVc2VySW5kaXZpZHVhbFJvc3RlclBheWxvYWQ7XHJcbiAgICBpZiAodGhpcy5ncm91cFJvc3RlclR5cGUgPT09IEdyb3VwUm9zdGVyVHlwZT8uSU5ESVZJRFVBTCkge1xyXG4gICAgICBjb25zdCBmb3JtYXR0ZWRPcHRpb25zID0gdGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zLm1hcCgob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIG9yZ0lkOiBvcHRpb24uaWQgYXMgc3RyaW5nLFxyXG4gICAgICAgICAgb3JnTmFtZTogb3B0aW9uLm5hbWUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgdXNlcklkOiB0aGlzLnNlbGVjdGVkVXNlckluZm8/LnVzZXJJZCxcclxuICAgICAgICAgIGVtYWlsOiB0aGlzLnNlbGVjdGVkVXNlckluZm8/LmVtYWlsLFxyXG4gICAgICAgICAgcm9sZXM6IHRoaXMuc2VsZWN0ZWRVc2VyUm9sZUlkcyxcclxuICAgICAgICAgIGdyb3VwSWQ6IHRoaXMuZ3JvdXBzU2VydmljZS5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBJZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgICBvcmdhbml6YXRpb25zOiBmb3JtYXR0ZWRPcHRpb25zLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIGlmICh0aGlzLmhhc0NsYXNzaWZpY2F0aW9uKVxyXG4gICAgICAgIHBheWxvYWQucGF5bG9hZC5jbGFzc2lmaWNhdGlvbiA9IHtcclxuICAgICAgICAgIGNsYXNzaWZpY2F0aW9uSWQ6IGZvcm1EYXRhPy5jbGFzc2lmaWNhdGlvblxyXG4gICAgICAgICAgICA/IGZvcm1EYXRhPy5jbGFzc2lmaWNhdGlvbj8uaWRcclxuICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIGZvcm1EYXRhPy5tZW1iZXJUeXBlICYmXHJcbiAgICAgICAgIXBheWxvYWQucGF5bG9hZC5yb2xlcz8uaW5jbHVkZXMoZm9ybURhdGE/Lm1lbWJlclR5cGU/LmlkKVxyXG4gICAgICApXHJcbiAgICAgICAgcGF5bG9hZC5wYXlsb2FkLnJvbGVzPy5wdXNoKGZvcm1EYXRhPy5tZW1iZXJUeXBlPy5pZCk7XHJcbiAgICB9IGVsc2VcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICBlbWFpbDogdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy5lbWFpbCxcclxuICAgICAgICAgIHVzZXJJZDogdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy51c2VySWQsXHJcbiAgICAgICAgICByb2xlczogdGhpcy5zZWxlY3RlZFVzZXJSb2xlSWRzLFxyXG4gICAgICAgICAgZ3JvdXBJZDogdGhpcy5ncm91cHNTZXJ2aWNlPy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBJZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIC8vIE9wdGlvbmFsIGNvbnRhY3QgZmllbGRzIOKAlCBhcHBseSB0byBib3RoIHJvc3RlciB0eXBlcy5cclxuICAgIHRoaXMuYXBwZW5kQ29udGFjdERldGFpbHNUb1BheWxvYWQocGF5bG9hZCwgZm9ybURhdGEpO1xyXG4gICAgcmV0dXJuIHBheWxvYWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBlbmRzIHRoZSBvcHRpb25hbCBjb250YWN0IGZpZWxkcyAocGhvbmUgY291bnRyeSBjb2RlLCBwaG9uZSBudW1iZXIgYW5kXHJcbiAgICogYWRkcmVzcykgdG8gdGhlIHBheWxvYWQuIFJlYWRzIGZyb20gdGhlIGNvbWJpbmVkIFBIT05FIGNvbnRyb2wgdmFsdWVcclxuICAgKiAoeyBjb3VudHJ5Q29kZSwgcGhvbmVOdW1iZXIgfSkgYW5kIHRoZSBhZGRyZXNzIGNvbnRyb2wuIFNlbmRzIHRoZSBjb3VudHJ5XHJcbiAgICogY29kZSBvbmx5IHdoZW4gYSBudW1iZXIgaXMgcHJlc2VudDsgb21pdHMgZW1wdHkgdmFsdWVzLlxyXG4gICAqIEBwYXJhbSB7KEFkZE9yRWRpdFVzZXJQYXlsb2FkIHwgQWRkT3JFZGl0VXNlckluZGl2aWR1YWxSb3N0ZXJQYXlsb2FkKX0gcGF5bG9hZFxyXG4gICAqIEBwYXJhbSB7Kn0gZm9ybURhdGFcclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGFwcGVuZENvbnRhY3REZXRhaWxzVG9QYXlsb2FkKFxyXG4gICAgcGF5bG9hZDogQWRkT3JFZGl0VXNlclBheWxvYWQgfCBBZGRPckVkaXRVc2VySW5kaXZpZHVhbFJvc3RlclBheWxvYWQsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgZm9ybURhdGE6IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgcGhvbmVOdW1iZXIgPSBmb3JtRGF0YT8ucGhvbmU/LnBob25lTnVtYmVyPy50cmltKCk7XHJcbiAgICBjb25zdCBwaG9uZUNvdW50cnlDb2RlID0gZm9ybURhdGE/LnBob25lPy5jb3VudHJ5Q29kZTtcclxuICAgIGNvbnN0IGFkZHJlc3MgPSBmb3JtRGF0YT8uYWRkcmVzcz8udHJpbSgpO1xyXG4gICAgaWYgKHBob25lTnVtYmVyKSB7XHJcbiAgICAgIHBheWxvYWQucGF5bG9hZC5waG9uZU51bWJlciA9IHBob25lTnVtYmVyO1xyXG4gICAgICBpZiAocGhvbmVDb3VudHJ5Q29kZSkgcGF5bG9hZC5wYXlsb2FkLnBob25lQ291bnRyeUNvZGUgPSBwaG9uZUNvdW50cnlDb2RlO1xyXG4gICAgfVxyXG4gICAgaWYgKGFkZHJlc3MpIHBheWxvYWQucGF5bG9hZC5hZGRyZXNzID0gYWRkcmVzcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGZvcm0gY2FuY2VsIGV2ZW50LlxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25FZGl0VXNlclJvbGVDYW5jZWxsZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1DYW5jZWw/LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBmb3JtIHJlZmVyZW5jZS5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRGb3JtR3JvdXBSZWZlcmVuY2UoZm9ybTogRm9ybUdyb3VwW10pIHtcclxuICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmID0gZm9ybVswXTtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy5jYW5EZWxldGUpIHtcclxuICAgICAgKHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmPy5jb250cm9sc1sncm9sZXMnXSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgICAgPy5hdCgwKVxyXG4gICAgICAgID8uZGlzYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWdpc3RlclJlcHJlc2VudGluZ09yZ0NvbnRyb2woKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdGVycyB0aGUgYHJlcHJlc2VudGluZ09yZ2AgcmVhY3RpdmUgY29udHJvbCBvbiB0aGUgZHluYW1pYyBmb3JtJ3NcclxuICAgKiBGb3JtR3JvdXAgZm9yIElORElWSURVQUwgcm9zdGVycy4gVGhlIGZpZWxkIGl0c2VsZiBpcyByZW5kZXJlZCBieSB0aGUgY3VzdG9tXHJcbiAgICogT3JnTXVsdGlTZWxlY3RDb21wb25lbnQgKG5vdCB0aGUgZHluYW1pYyBmb3JtKSwgYnV0IGtlZXBpbmcgdGhpcyBjb250cm9sIG9uXHJcbiAgICogdGhlIHNhbWUgRm9ybUdyb3VwIOKAlCB3aXRoIHRoZSBvcmlnaW5hbCB2YWxpZGF0b3JzIOKAlCBtZWFucyBhbGwgZXhpc3RpbmdcclxuICAgKiBzdWJtaXQvU2F2ZS1idXR0b24gbG9naWMgdGhhdCByZWFkcyBgZm9ybS5nZXQoJ3JlcHJlc2VudGluZ09yZycpYCBrZWVwc1xyXG4gICAqIHdvcmtpbmcgdW5jaGFuZ2VkLiBJdHMgdmFsdWUgaXMgdGhlIHNlbGVjdGVkLW9yZ2FuaXphdGlvbnMgYXJyYXksIGtlcHQgaW5cclxuICAgKiBzeW5jIGJ5IGdldFNlbGVjdGVkT3JnYW5pemF0aW9ucygpLiBQcmVmaWxsZWQgd2l0aCB0aGUgdXNlcidzIGV4aXN0aW5nXHJcbiAgICogb3JnYW5pemF0aW9ucyBvbiBlZGl0LlxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcmVnaXN0ZXJSZXByZXNlbnRpbmdPcmdDb250cm9sKCk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmdyb3VwUm9zdGVyVHlwZSAhPT0gR3JvdXBSb3N0ZXJUeXBlLklORElWSURVQUwgfHxcclxuICAgICAgIXRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmIHx8XHJcbiAgICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmLmNvbnRhaW5zKCdyZXByZXNlbnRpbmdPcmcnKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmLmFkZENvbnRyb2woXHJcbiAgICAgICdyZXByZXNlbnRpbmdPcmcnLFxyXG4gICAgICBuZXcgRm9ybUNvbnRyb2woXHJcbiAgICAgICAgdGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zPy5sZW5ndGhcclxuICAgICAgICAgID8gdGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zXHJcbiAgICAgICAgICA6ICcnLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVwZGF0ZU9uOiAnYmx1cicsXHJcbiAgICAgICAgICB2YWxpZGF0b3JzOiBbXHJcbiAgICAgICAgICAgIHJlcHJlc2VudGluZ09yZ1JlcXVpcmVkVmFsaWRhdG9yKCksXHJcbiAgICAgICAgICAgIHNraXBXaGVuQXJyYXkoXHJcbiAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoXHJcbiAgICAgICAgICAgICAgICBHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMucmVwcmVzZW50aW5nT3JnTmFtZU1heExlbmd0aFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgc2tpcFdoZW5BcnJheShcclxuICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aChcclxuICAgICAgICAgICAgICAgIEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucy5yZXByZXNlbnRpbmdPcmdOYW1lTWluTGVuZ3RoXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBza2lwV2hlbkFycmF5KFxyXG4gICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcclxuICAgICAgICAgICAgICAgIEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25cclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgZWRpdCB1c2VyIHJvbGUgZm9ybSBjaGFuZ2UgZXZlbnQuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEBtZW1iZXJvZiBlZGl0VXNlclJvbGVGb3JtR3JvdXBSZWZcclxuICAgKi9cclxuICBvbkVkaXRVc2VyUm9sZUZvcm1DaGFuZ2UoZm9ybTogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmID0gZm9ybVswXTtcclxuICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRoaXMuZ3JvdXBzU2VydmljZS5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkKFxyXG4gICAgICB0aGlzLmdyb3VwUm9zdGVyVHlwZSxcclxuICAgICAgdGhpcy5lZGl0VXNlclJvbGVGb3JtR3JvdXBSZWY/LnN0YXR1cyxcclxuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlSWRzXHJcbiAgICApO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnMubGVuZ3RoICYmXHJcbiAgICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmLmNvbnRyb2xzWydyZXByZXNlbnRpbmdPcmcnXS5zdGF0dXMgPT09XHJcbiAgICAgICAgRm9ybVN0YXR1cy5JTlZBTElEXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIC8vIEFuIHVuY29tbWl0dGVkLCBpbnZhbGlkIGZyZWUtdGV4dCB0b2tlbiBpbiB0aGUgb3JnIGZpZWxkIG11c3QgYmxvY2sgc3VibWl0XHJcbiAgICAvLyByZWdhcmRsZXNzIG9mIGFueSB2YWxpZCBjaGlwcyBhbHJlYWR5IHNlbGVjdGVkLlxyXG4gICAgaWYgKHRoaXMuaGFzSW52YWxpZE9yZ0ZyZWVUZXh0KSB7XHJcbiAgICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSB0ZW5hbnQncyByZXF1aXJlZCBwcm9maWxlIGZpZWxkcyBzbyB0aGUgZWRpdC11c2VyIGZvcm0gb25seSBzaG93c1xyXG4gICAqIHRoZSBwaG9uZS9hZGRyZXNzIGZpZWxkcyB0aGUgdGVuYW50IGhhcyBjb25maWd1cmVkIGFzIHJlcXVpcmVkLiBCdWlsZHMgdGhlXHJcbiAgICogZm9ybSBvbmNlIHJlc29sdmVkIChvciBpbW1lZGlhdGVseSBpZiB0aGUgYXBwSWQgaXNuJ3QgYXZhaWxhYmxlKS5cclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldFJlcXVpcmVkUHJvZmlsZUZpZWxkcygpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWlyZWRQcm9maWxlRmllbGRzID1cclxuICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLmdldFJlcXVpcmVkUHJvZmlsZUZpZWxkcygpID8/IFtdO1xyXG4gICAgdGhpcy5lZGl0VXNlclJvbGVzRm9ybUdyb3VwKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBjbGFzc2lmaWNhdGlvbnMgZnJvbSBtYXN0ZXIgZGF0YS5cclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldENsYXNzaWZpY2F0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuZ2V0Q2xhc3NpZmljYXRpb25zKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJlc3BvbnNlPy5ib2R5Py5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jbGFzc2lmaWNhdGlvbnM/LnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBvcHRpb24uY2xhc3NpZmljYXRpb25JZCxcclxuICAgICAgICAgICAgICBuYW1lOiBvcHRpb24uY2xhc3NpZmljYXRpb25EZXNjLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAgICdjbGFzc2lmaWNhdGlvbicsXHJcbiAgICAgICAgICAgICdkcm9wZG93bk9wdGlvbnMnLFxyXG4gICAgICAgICAgICB0aGlzLmNsYXNzaWZpY2F0aW9ucyxcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy5jbGFzc2lmaWNhdGlvblxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBtZW1iZXIgdHlwZXMgZnJvbSBtYXN0ZXIgZGF0YS5cclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldE1lbWJlclR5cGVzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbWVtYmVyVHlwZXMgPSB0aGlzLmdyb3Vwc1NlcnZpY2UuZ2V0TWVtYmVyVHlwZXMoKTtcclxuICAgIG1lbWJlclR5cGVzPy5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgdGhpcy5tZW1iZXJUeXBlcz8ucHVzaCh7XHJcbiAgICAgICAgaWQ6IG9wdGlvbi5yb2xlSWQsXHJcbiAgICAgICAgbmFtZTogb3B0aW9uLnJvbGVOYW1lLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICdtZW1iZXJUeXBlJyxcclxuICAgICAgJ2Ryb3Bkb3duT3B0aW9ucycsXHJcbiAgICAgIHRoaXMubWVtYmVyVHlwZXMsXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8ubWVtYmVyU3RhdHVzXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgcmVwcmVzZW50aW5nIE9yZ2FuaXphdGlvbnMuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9yZ05hbWVcclxuICAgKiBAbWVtYmVyb2YgQWRkVXNlclJvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldE9yZ2FuaXphdGlvbnMob3JnTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLm9yZ1NlYXJjaFZhbHVlID0gb3JnTmFtZTtcclxuICAgIHRoaXMub3JnYW5pemF0aW9ucyA9IFtdO1xyXG4gICAgb3JnTmFtZSA9IG9yZ05hbWU/LnRyaW1TdGFydCgpO1xyXG4gICAgdGhpcy51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICdyZXByZXNlbnRpbmdPcmcnLFxyXG4gICAgICAnbXVsdGlTZWxlY3RBdXRvQ29tcGxldGVPcHRpb25zJyxcclxuICAgICAgW10sXHJcbiAgICAgICcnXHJcbiAgICApO1xyXG4gICAgaWYgKCFvcmdOYW1lKSByZXR1cm47XHJcbiAgICBjb25zdCBvcmdSZXF1ZXN0UGF5bG9hZDogT3JnYW5pemF0aW9uUmVxdWVzdFBheWxvYWQgPSB7XHJcbiAgICAgIHBheWxvYWQ6IHsgb3JnTmFtZTogb3JnTmFtZSB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuZ2V0T3JnYW5pemF0aW9ucyhvcmdSZXF1ZXN0UGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG9yZ3M6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgICAgICAgICByZXNwb25zZT8uYm9keT8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIG9yZ3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgaWQ6IG9wdGlvbi5vcmdJZCxcclxuICAgICAgICAgICAgICBuYW1lOiBvcHRpb24ub3JnTmFtZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8vIEFzc2lnbiBhIG5ldyBhcnJheSByZWZlcmVuY2Ugc28gdGhlIGN1c3RvbSBPcmdNdWx0aVNlbGVjdENvbXBvbmVudCdzXHJcbiAgICAgICAgICAvLyBbb3B0aW9uc10gc2V0dGVyIHJ1bnMgYW5kIG9wZW5zIHRoZSByZXN1bHRzIGRyb3Bkb3duLiBGcmVlLXRleHRcclxuICAgICAgICAgIC8vIG1pbi9tYXgvcGF0dGVybiB2YWxpZGF0aW9uIGlzIGhhbmRsZWQgaW5zaWRlIHRoYXQgY29tcG9uZW50LlxyXG4gICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25zID0gb3JncztcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgdGhlIGRyb3Bkb3duIG9wdGlvbnMgb2YgQ2xhc3NpZmljYXRpb24sIE1lbWJlciBUeXBlIGFuZCBSZXByZXNlbnRpbmcgT3JnYW5pemF0aW9uIGZvcm0gZmllbGRzLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtQ29udHJvbE5hbWVcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybUNvbnRyb2xJbnB1dFByb3BlcnR5XHJcbiAgICogQHBhcmFtIHtTZWxlY3RPcHRpb25bXX0gb3B0aW9uc1xyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsXHJcbiAgICBmb3JtQ29udHJvbElucHV0UHJvcGVydHk6IHN0cmluZyxcclxuICAgIG9wdGlvbnM6IFNlbGVjdE9wdGlvbltdLFxyXG4gICAgc2VsZWN0ZWRPcHRpb24/OiBzdHJpbmdcclxuICApOiB2b2lkIHtcclxuICAgIGNvbnN0IGZvcm1GaWVsZHMgPSB0aGlzLmR5bmFtaWNGb3JtQ29tcG9uZW50Py5mb3JtRmllbGRzPy50b0FycmF5KCk7XHJcbiAgICBmb3JtRmllbGRzPy5mb3JFYWNoKChmb3JtRmllbGQpID0+IHtcclxuICAgICAgY29uc3Qgc2VhcmNoZWRPcmdOYW1lID0gb3B0aW9ucz8uZmlsdGVyKChvcHRpb24pID0+XHJcbiAgICAgICAgc2VsZWN0ZWRPcHRpb24/LmluY2x1ZGVzKG9wdGlvbj8ubmFtZSlcclxuICAgICAgKVswXTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGZvcm1GaWVsZD8uY29tcG9uZW50Py5pbnN0YW5jZT8uY29uZmlnPy5jb250cm9sTmFtZSA9PT1cclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZSAmJlxyXG4gICAgICAgIGZvcm1GaWVsZD8uY29tcG9uZW50Py5pbnN0YW5jZT8uW2Zvcm1Db250cm9sSW5wdXRQcm9wZXJ0eV1cclxuICAgICAgKVxyXG4gICAgICAgIGZvcm1GaWVsZC5jb21wb25lbnQuaW5zdGFuY2VbZm9ybUNvbnRyb2xJbnB1dFByb3BlcnR5XSA9IG9wdGlvbnM7XHJcbiAgICAgIGlmIChzZWxlY3RlZE9wdGlvbiAmJiBzZWFyY2hlZE9yZ05hbWUpIHtcclxuICAgICAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZlxyXG4gICAgICAgICAgLmdldChmb3JtQ29udHJvbE5hbWUpXHJcbiAgICAgICAgICA/LnNldFZhbHVlKHNlYXJjaGVkT3JnTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FwdHVyZXMgdGhlIHNlcnZlciBzaWRlIGVycm9ycyBhbmQgaGFuZGxlcyBpdCBiYXNlZCBvbiB0aGUgY3VzdG9tIG9yIEh0dHAgZXJyb3JzLlxyXG4gICAqIEBwYXJhbSB7SHR0cEVycm9yUmVzcG9uc2V9IGVycm9yXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGhhbmRsZUVycm9ycyhlcnJvcjogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBlcnJvckNvZGVzID0gZXJyb3I/LmVycm9yPy5ib2R5Py5lcnJvckNvZGVzO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyb3JDb2RlcykgJiYgIWVycm9yPy5lcnJvcj8uc3RhdHVzKSB7XHJcbiAgICAgIGlmIChlcnJvckNvZGVzWzBdICE9PSAnMzAwNCcpIHtcclxuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSB0aGlzLmdyb3Vwc1NlcnZpY2U/LnBhcnNlRXJyb3JNZXNzYWdlKGVycm9yQ29kZXMpO1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dNZXNzYWdlKHtcclxuICAgICAgICAgIHN0YXR1czogJ2N1c3RvbScsXHJcbiAgICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2UsXHJcbiAgICAgICAgICBhbGVydFR5cGU6IEFsZXJ0VHlwZS5FUlJPUixcclxuICAgICAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoZXJyb3IgJiYgZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICB0aGlzLmdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2U/LmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogRGlzYWJsZXMgZm9ybSBzdWJtaXQgYnV0dG9uIHdoZW4gb3JnIG5hbWUgbGVuZ3RoIGlzIGxlc3MgdGhhbiBtaW5DaGFyVG9TZWFyY2ggYW5kIGdyZWF0ZXIgdGhhbiB6ZXJvLlxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZGlzYWJsZVN1Ym1pdEJ1dHRvbigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICdyZXByZXNlbnRpbmdPcmcnLFxyXG4gICAgICAgICdtdWx0aVNlbGVjdEF1dG9Db21wbGV0ZU9wdGlvbnMnLFxyXG4gICAgICAgIFtdXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOZ09uRGVzdHJveSBwZXJmb3JtcyBuZWNlc3NhcnkgY2xlYW51cCB0YXNrcywgc3VjaCBhcyB1bnN1YnNjcmliaW5nIGZyb20gc3Vic2NyaXB0aW9uIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBiZWluZyBkZXN0cm95ZWQuXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGllZWVzYS1keW5hbWljLWZvcm1cclxuICBbbGVmdEJ1dHRvbkxhYmVsXT1cImxlZnRCdXR0b25MYWJlbFwiXHJcbiAgW3JpZ2h0QnV0dG9uTGFiZWxdPVwicmlnaHRCdXR0b25MYWJlbFwiXHJcbiAgW2lzTGVnZW5kVmlzaWJsZV09XCJmYWxzZVwiXHJcbiAgW2lzU3VibWl0QnV0dG9uRGlzYWJsZWRdPVwiaXNTdWJtaXRCdXR0b25EaXNhYmxlZFwiXHJcbiAgW2NvbFdpZHRoXT1cImNvbFdpZHRoXCJcclxuICBbYWN0aW9uQnV0dG9uQWxpZ25dPVwiYWN0aW9uQnV0dG9uQWxpZ25cIlxyXG4gIFtmb3JtR3JvdXBzXT1cImVkaXRVc2VyUm9sZUZvcm1Hcm91cFwiXHJcbiAgW2lzTGVmdEJ1dHRvbk5lZWRlZF09XCJ0cnVlXCJcclxuICAoZm9ybVN1Ym1pdCk9XCJvbkVkaXRVc2VyUm9sZUZvcm1TdWJtaXQoJGV2ZW50KVwiXHJcbiAgKGZvcm1MZWZ0QnV0dG9uQ2xpY2tlZCk9XCJvbkVkaXRVc2VyUm9sZUNhbmNlbGxlZCgpXCJcclxuICAoZm9ybUNoZWNrYm94U2VsZWN0aW9uKT1cIm9uVXNlclJvbGVTZWxlY3Rpb24oJGV2ZW50KVwiXHJcbiAgKGZvcm1Hcm91cHNSZWZlcmVuY2UpPVwiZ2V0Rm9ybUdyb3VwUmVmZXJlbmNlKCRldmVudClcIlxyXG4gIChmb3JtQ2hhbmdlKT1cIm9uRWRpdFVzZXJSb2xlRm9ybUNoYW5nZSgkZXZlbnQpXCJcclxuPlxyXG4gIDwhLS1cclxuICAgIFJlcHJlc2VudGluZyBPcmdhbml6YXRpb24gKElORElWSURVQUwgcm9zdGVycyBvbmx5KS4gUHJvamVjdGVkIGludG8gdGhlXHJcbiAgICBkeW5hbWljIGZvcm0ncyBbY29tcG9uZW50XSBzbG90IHNvIGl0IHJlbmRlcnMgYWZ0ZXIgdGhlIG90aGVyIGZpZWxkcyBidXRcclxuICAgIEJFRk9SRSB0aGUgU2F2ZS9DYW5jZWwgYWN0aW9uIGJ1dHRvbnMuIFVzZXMgdGhlIGN1c3RvbSBtdWx0aS1zZWxlY3QgZmllbGQgc29cclxuICAgIG11bHRpcGxlIG9yZ3MgY2FuIGJlIHBpY2tlZCBmcm9tIGFuIG9wZW4gZHJvcGRvd24gd2l0aG91dCB0aGUgTWF0ZXJpYWxcclxuICAgIGF1dG9jb21wbGV0ZSBjbG9zaW5nIG9yIGNsZWFyaW5nIHRoZSB0eXBlZCB0ZXh0LiBQcmVmaWxsZWQgd2l0aCB0aGUgdXNlcidzXHJcbiAgICBleGlzdGluZyBvcmdhbml6YXRpb25zIGFuZCBzeW5jZWQgdG8gdGhlIHJlYWN0aXZlIGByZXByZXNlbnRpbmdPcmdgIGNvbnRyb2xcclxuICAgIHZpYSBnZXRTZWxlY3RlZE9yZ2FuaXphdGlvbnMoKS5cclxuICAtLT5cclxuICA8aWVlZXNhLW9yZy1tdWx0aS1zZWxlY3RcclxuICAgIGNvbXBvbmVudFxyXG4gICAgKm5nSWY9XCJpc0luZGl2aWR1YWxSb3N0ZXJcIlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZWRpdC11c2VyLXJvbGVzX19vcmdcIlxyXG4gICAgW2xhYmVsXT1cImFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbiArICcqJ1wiXHJcbiAgICBbYXJpYUxhYmVsXT1cImFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8ucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uXCJcclxuICAgIFtzdXBwb3J0TWVzc2FnZV09XCJhZGRVc2VyUm9zdGVyVGV4dHM/LnN1cHBvcnRUZXh0Py5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25cIlxyXG4gICAgW29wdGlvbnNdPVwib3JnYW5pemF0aW9uc1wiXHJcbiAgICBbc2VsZWN0ZWRPcHRpb25zXT1cInJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnNcIlxyXG4gICAgKHNlYXJjaCk9XCJnZXRPcmdhbml6YXRpb25zKCRldmVudClcIlxyXG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJnZXRTZWxlY3RlZE9yZ2FuaXphdGlvbnMoJGV2ZW50KVwiXHJcbiAgICAoaW52YWxpZEZyZWVUZXh0KT1cIm9uT3JnSW52YWxpZEZyZWVUZXh0KCRldmVudClcIlxyXG4gID48L2llZWVzYS1vcmctbXVsdGktc2VsZWN0PlxyXG48L2llZWVzYS1keW5hbWljLWZvcm0+XHJcbiJdfQ==
|