@bnsights/bbsf-controls 1.0.173 → 1.0.174
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/README.md +2 -9
- package/esm2022/lib/Shared/Models/AutocompleteOptions.mjs +1 -16
- package/esm2022/lib/Shared/Models/ControlOptionsBase.mjs +1 -5
- package/esm2022/lib/Shared/Models/DatePickerOptions.mjs +1 -17
- package/esm2022/lib/Shared/Models/DropdownOptions.mjs +1 -23
- package/esm2022/lib/Shared/Models/MultiLingualTextBoxOptions.mjs +1 -4
- package/esm2022/lib/Shared/Models/MultilingualControlOptionsBase.mjs +1 -6
- package/esm2022/lib/Shared/Models/PhoneOptions.mjs +1 -4
- package/esm2022/lib/Shared/Models/RadioButtonOptions.mjs +1 -4
- package/esm2022/lib/Shared/Models/TagsInputOptions.mjs +1 -16
- package/esm2022/lib/Shared/Models/TextAreaOptions.mjs +1 -4
- package/esm2022/lib/Shared/Models/TextBoxOptions.mjs +1 -4
- package/esm2022/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +4 -8
- package/esm2022/lib/controls/DateTimePicker/DateTimePicker.component.mjs +9 -20
- package/esm2022/lib/controls/DropdownList/DropdownList.component.mjs +14 -47
- package/esm2022/lib/controls/FileUplaod/FileUplaod.component.mjs +1 -18
- package/esm2022/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +21 -29
- package/esm2022/lib/controls/TagsInput/TagsInput.component.mjs +1 -1
- package/fesm2022/bnsights-bbsf-controls.mjs +44 -208
- package/fesm2022/bnsights-bbsf-controls.mjs.map +1 -1
- package/lib/Shared/Models/AutocompleteOptions.d.ts +0 -1
- package/lib/Shared/Models/ControlOptionsBase.d.ts +3 -4
- package/lib/Shared/Models/DatePickerOptions.d.ts +0 -1
- package/lib/Shared/Models/DropdownOptions.d.ts +0 -1
- package/lib/Shared/Models/MultiLingualTextBoxOptions.d.ts +0 -1
- package/lib/Shared/Models/MultilingualControlOptionsBase.d.ts +0 -2
- package/lib/Shared/Models/PhoneOptions.d.ts +0 -1
- package/lib/Shared/Models/RadioButtonOptions.d.ts +0 -1
- package/lib/Shared/Models/TagsInputOptions.d.ts +0 -1
- package/lib/Shared/Models/TextAreaOptions.d.ts +0 -1
- package/lib/Shared/Models/TextBoxOptions.d.ts +0 -1
- package/lib/controls/DropdownList/DropdownList.component.d.ts +2 -4
- package/package.json +2 -2
|
@@ -81,18 +81,10 @@ export class DateInputComponent {
|
|
|
81
81
|
}
|
|
82
82
|
//#region events
|
|
83
83
|
ngOnInit() {
|
|
84
|
-
this.textDir = this.options.forceDirection
|
|
85
|
-
|
|
86
|
-
? 'rtl'
|
|
87
|
-
: 'ltr'
|
|
88
|
-
: localStorage.getItem('language') == 'ar'
|
|
89
|
-
? 'rtl'
|
|
90
|
-
: 'ltr';
|
|
91
|
-
this.startView = (this.options.startView == StartView.MultiYear
|
|
92
|
-
? 'multi-year'
|
|
93
|
-
: StartView[this.options.startView].toLowerCase());
|
|
84
|
+
this.textDir = this.options.forceDirection ? (this.options.forceDirection == ForceDirection.Arabic ? 'rtl' : 'ltr') : (localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr');
|
|
85
|
+
this.startView = (this.options.startView == StartView.MultiYear ? 'multi-year' : StartView[this.options.startView].toLowerCase());
|
|
94
86
|
// Update the DateTimeAdapter Language with the current thread langauge
|
|
95
|
-
this.dateTimeAdapter.setLocale(this.utilityService.getCurrentLanguage() ==
|
|
87
|
+
this.dateTimeAdapter.setLocale(this.utilityService.getCurrentLanguage() == "ar" ? "ar" : "en-UK");
|
|
96
88
|
this.controlValidationService.isCreatedBefor = false;
|
|
97
89
|
this.group.addControl(this.options.name, new FormControl(''));
|
|
98
90
|
this.datePickerFormControl = this.group.controls[this.options.name];
|
|
@@ -106,7 +98,7 @@ export class DateInputComponent {
|
|
|
106
98
|
}
|
|
107
99
|
if (this.options.isRequired)
|
|
108
100
|
this.validationRules.push(Validators.required);
|
|
109
|
-
if (this.options.labelKey != null && this.options.labelKey !=
|
|
101
|
+
if (this.options.labelKey != null && this.options.labelKey != "")
|
|
110
102
|
this.options.labelValue = this.utilityService.getResourceValue(this.options.labelKey);
|
|
111
103
|
if (this.options.isDisabled)
|
|
112
104
|
this.datePickerFormControl.disable();
|
|
@@ -156,9 +148,8 @@ export class DateInputComponent {
|
|
|
156
148
|
}
|
|
157
149
|
}
|
|
158
150
|
onDateSelect(item) {
|
|
159
|
-
if (!item)
|
|
151
|
+
if (!item)
|
|
160
152
|
return;
|
|
161
|
-
}
|
|
162
153
|
let dateValue = new Date(item.value);
|
|
163
154
|
// var tzOffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds
|
|
164
155
|
if (this.options.selectMode == SelectMode.Range) {
|
|
@@ -174,9 +165,7 @@ export class DateInputComponent {
|
|
|
174
165
|
this.datePickerFormControl.setValue(dateValue);
|
|
175
166
|
this.onChangeService.ChangeValue(this.options.name);
|
|
176
167
|
let originalValue = dateValue;
|
|
177
|
-
if (this.options.patchFunction &&
|
|
178
|
-
this.options.patchPath &&
|
|
179
|
-
this.group.get(this.options.name).valid) {
|
|
168
|
+
if (this.options.patchFunction && this.options.patchPath && this.group.get(this.options.name).valid) {
|
|
180
169
|
this.controlUtility.patchControlValue(originalValue, this.options.patchFunction, this.options.patchPath);
|
|
181
170
|
}
|
|
182
171
|
//Use this line to enable two way binding.
|
|
@@ -186,11 +175,11 @@ export class DateInputComponent {
|
|
|
186
175
|
subscribeDateChanges() {
|
|
187
176
|
const startDateChanges = this.comparedControl.valueChanges;
|
|
188
177
|
const endDateChanges = this.group.get(this.options.name).valueChanges;
|
|
189
|
-
startDateChanges.subscribe(
|
|
178
|
+
startDateChanges.subscribe(start => {
|
|
190
179
|
this.comparedControl.addValidators(this.checkIfStartDateBeForEndDate);
|
|
191
180
|
this.comparedControl.updateValueAndValidity();
|
|
192
181
|
});
|
|
193
|
-
endDateChanges.subscribe(
|
|
182
|
+
endDateChanges.subscribe(end => {
|
|
194
183
|
this.datePickerFormControl.addValidators(this.checkIfEndDateAfterStartDate);
|
|
195
184
|
this.datePickerFormControl.updateValueAndValidity();
|
|
196
185
|
});
|
|
@@ -230,4 +219,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
230
219
|
}], onChange: [{
|
|
231
220
|
type: Output
|
|
232
221
|
}] } });
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZVRpbWVQaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL0RhdGVUaW1lUGlja2VyL0RhdGVUaW1lUGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9EYXRlVGltZVBpY2tlci9EYXRlVGltZVBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBb0UsTUFBTSxnQkFBZ0IsQ0FBQztBQUczSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEVBQWlDLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXhHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbkUsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7Ozs7Ozs7O0FBYTVCLE1BQU0sT0FBTyxrQkFBa0I7YUFDdEIsMkJBQXNCLEdBQUcsSUFBSSxBQUFQLENBQVE7SUFFckMsWUFDVSxlQUE2QyxFQUM3QyxjQUE4QixFQUNsQixnQkFBa0MsRUFDL0Msb0JBQXdDLEVBQ3ZDLGNBQThCLEVBQzlCLHdCQUFrRCxFQUNsRCxlQUFxQztRQU5yQyxvQkFB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QWMsQ0FBQyxHQUFXO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRCxDQUFDOytHQWxOVSxrQkFBa0I7bUdBQWxCLGtCQUFrQix1TEFQbEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsUUFBUSxFQUFFLFdBQVc7YUFDdEI7U0FDRiwwQkN6QkgsMC9HQTBEQTs7NEZEL0JhLGtCQUFrQjtrQkFWOUIsU0FBUzsrQkFDRSxxQkFBcUIsYUFFcEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFFBQVEsRUFBRSxXQUFXO3lCQUN0QjtxQkFDRjs7MEJBUUUsUUFBUTs0S0FTRixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXBEaXJlY3RpdmUsIENvbnRyb2xDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9EYXRlUGlja2VyT3B0aW9ucyc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgUGlja2VyVHlwZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9QaWNrZXJUeXBlJztcclxuaW1wb3J0IHsgU3RhcnRWaWV3IH0gZnJvbSAnLi4vLi4vU2hhcmVkL0VudW1zL1N0YXJ0Vmlldyc7XHJcbmltcG9ydCB7IFNlbGVjdE1vZGUgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvU2VsZWN0TW9kZSc7XHJcbmltcG9ydCB7IE9uUGFnaW5nRmlsdGVyc0NoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvT25QYWdpbmdGaWx0ZXJzQ2hhbmdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgRGF0ZVRpbWVBZGFwdGVyLCBEYXRlVmlld1R5cGUsIE93bERhdGVUaW1lSW50bCB9IGZyb20gJ0BkYW5pZWxtb25jYWRhL2FuZ3VsYXItZGF0ZXRpbWUtcGlja2VyJztcclxuaW1wb3J0ICogYXMgZGF0ZVRpbWVDbGFzcyBmcm9tICdAZGFuaWVsbW9uY2FkYS9hbmd1bGFyLWRhdGV0aW1lLXBpY2tlcic7XHJcbmltcG9ydCB7IERlZmF1bHRJbnRsIH0gZnJvbSAnLi4vLi4vU2hhcmVkL2RlZmF1bHRfaW50bCc7XHJcbmltcG9ydCB7IEZvcmNlRGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vU2hhcmVkL0VudW1zL0ZvcmNlRGlyZWN0aW9uJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdCQlNGLURhdGVUaW1lUGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vRGF0ZVRpbWVQaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBPd2xEYXRlVGltZUludGwsXHJcbiAgICAgIHVzZUNsYXNzOiBEZWZhdWx0SW50bFxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJTdGF0aWMgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgb25DaGFuZ2VTZXJ2aWNlOiBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHksXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICBwdWJsaWMgRGF0ZUlucHV0Q29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuICAgIHByaXZhdGUgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb250cm9sVmFsaWRhdGlvblNlcnZpY2U6IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0ZVRpbWVBZGFwdGVyOiBEYXRlVGltZUFkYXB0ZXI8YW55PlxyXG4gICkge1xyXG4gICAgRGF0ZUlucHV0Q29tcG9uZW50LmNvbnRyb2xDb250YWluZXJTdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IERhdGVQaWNrZXJPcHRpb25zO1xyXG4gIEBJbnB1dCgpIERyb3Bkb3duVGVtcGxhdGVWYXJpYWJsZTogYW55O1xyXG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgZGF0ZVBpY2tlckZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIHZhbGlkYXRpb25SdWxlc0FzeW5jID0gW107XHJcbiAgY29tcGFyZWRDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBudWxsO1xyXG4gIGRhdGVFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRleHREaXI6IERpcmVjdGlvbjtcclxuICBzdGFydFZpZXc6IERhdGVWaWV3VHlwZTtcclxuXHJcbiAgLy8jcmVnaW9uIGV2ZW50c1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50ZXh0RGlyID0gdGhpcy5vcHRpb25zLmZvcmNlRGlyZWN0aW9uXHJcbiAgICAgID8gdGhpcy5vcHRpb25zLmZvcmNlRGlyZWN0aW9uID09IEZvcmNlRGlyZWN0aW9uLkFyYWJpY1xyXG4gICAgICAgID8gJ3J0bCdcclxuICAgICAgICA6ICdsdHInXHJcbiAgICAgIDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgPT0gJ2FyJ1xyXG4gICAgICAgID8gJ3J0bCdcclxuICAgICAgICA6ICdsdHInO1xyXG4gICAgdGhpcy5zdGFydFZpZXcgPSAoXHJcbiAgICAgIHRoaXMub3B0aW9ucy5zdGFydFZpZXcgPT0gU3RhcnRWaWV3Lk11bHRpWWVhclxyXG4gICAgICAgID8gJ211bHRpLXllYXInXHJcbiAgICAgICAgOiAoU3RhcnRWaWV3W3RoaXMub3B0aW9ucy5zdGFydFZpZXddIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKVxyXG4gICAgKSBhcyBEYXRlVmlld1R5cGU7XHJcblxyXG4gICAgLy8gVXBkYXRlIHRoZSBEYXRlVGltZUFkYXB0ZXIgTGFuZ3VhZ2Ugd2l0aCB0aGUgY3VycmVudCB0aHJlYWQgbGFuZ2F1Z2VcclxuICAgIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLnNldExvY2FsZShcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKSA9PSAnYXInID8gJ2FyJyA6ICdlbi1VSydcclxuICAgICk7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlO1xyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5uYW1lLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlckZvcm1Db250cm9sID0gdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLm9wdGlvbnMubmFtZV07XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMudmFsdWUpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBWYWxpZGF0aW9ucyA9IHRoaXMub3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgVmFsaWRhdGlvbnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgVmFsaWRhdGlvbiA9IFZhbGlkYXRpb25zW2luZGV4XTtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRpb24uZnVuY3Rpb25Cb2R5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCkgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9ICcnKVxyXG4gICAgICB0aGlzLm9wdGlvbnMubGFiZWxWYWx1ZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMubGFiZWxLZXkpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXNEaXNhYmxlZCkgdGhpcy5kYXRlUGlja2VyRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuc3RhcnRDb250cm9sVG9Db21wYXJlV2l0aCkge1xyXG4gICAgICBpZiAodGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLnN0YXJ0Q29udHJvbFRvQ29tcGFyZVdpdGgpKSB7XHJcbiAgICAgICAgdGhpcy5jb21wYXJlZENvbnRyb2wgPSB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuc3RhcnRDb250cm9sVG9Db21wYXJlV2l0aCk7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVEYXRlQ2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRlUGlja2VyRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXNBc3luYyk7XHJcbiAgICB0aGlzLkRhdGVJbnB1dENvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5ncm91cC5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2V0QXR0cmlidXRlRm9yQ29udHJvbCh0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLnJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfTtcclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuICAgIGlmICh0aGlzLm1hcmtBbGxBc1RvdWNoZWQgJiYgdGhpcy5ncm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBjb3B5SW5wdXRNZXNzYWdlKGlucHV0RWxlbWVudCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Db3B5SW5wdXRNZXNzYWdlKGlucHV0RWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RNb2RlKHR5cGU6IG51bWJlcikge1xyXG4gICAgbGV0IFZhbHVlID0gU2VsZWN0TW9kZVt0eXBlXSBhcyBzdHJpbmc7XHJcbiAgICByZXR1cm4gVmFsdWUudG9Mb3dlckNhc2UoKSBhcyBkYXRlVGltZUNsYXNzLlNlbGVjdE1vZGU7XHJcbiAgfVxyXG5cclxuICBnZXRQaWNrZXJUeXBlKHR5cGU6IG51bWJlcikge1xyXG4gICAgbGV0IFZhbHVlID0gUGlja2VyVHlwZVt0eXBlXSBhcyBzdHJpbmc7XHJcbiAgICByZXR1cm4gVmFsdWUudG9Mb3dlckNhc2UoKSBhcyBkYXRlVGltZUNsYXNzLlBpY2tlclR5cGU7XHJcbiAgfVxyXG5cclxuICBnZXRTdGFydFZpZXcodHlwZTogbnVtYmVyKSB7XHJcbiAgICBpZiAodHlwZSA9PSAzKSByZXR1cm4gJ211bHRpLXllYXInO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IFZhbHVlID0gKFN0YXJ0Vmlld1t0eXBlXSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHJldHVybiBWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGF0ZVNlbGVjdChpdGVtOiBhbnkpIHtcclxuICAgIGlmICghaXRlbSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGRhdGVWYWx1ZTogYW55ID0gbmV3IERhdGUoaXRlbS52YWx1ZSk7XHJcblxyXG4gICAgLy8gdmFyIHR6T2Zmc2V0ID0gKG5ldyBEYXRlKCkpLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMDsgLy9vZmZzZXQgaW4gbWlsbGlzZWNvbmRzXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNlbGVjdE1vZGUgPT0gU2VsZWN0TW9kZS5SYW5nZSkge1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbS52YWx1ZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAvLyBpdGVtLnZhbHVlW2luZGV4XSA9IG5ldyBEYXRlKGl0ZW0udmFsdWVbaW5kZXhdIC0gdHpPZmZzZXQpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgLTEpO1xyXG4gICAgICAgIGl0ZW0udmFsdWVbaW5kZXhdID0gbW9tZW50KGl0ZW0udmFsdWVbaW5kZXhdKS5mb3JtYXQoJ1lZWVktTU0tRERUSEg6bW06c3MuU1NTJyk7XHJcbiAgICAgIH1cclxuICAgICAgZGF0ZVZhbHVlID0gaXRlbS52YWx1ZTtcclxuICAgIH0gZWxzZSBkYXRlVmFsdWUgPSBtb21lbnQoaXRlbS52YWx1ZSkuZm9ybWF0KCdZWVlZLU1NLUREVEhIOm1tOnNzLlNTUycpO1xyXG5cclxuICAgIC8vIERhdGVWYWx1ZSA9IG5ldyBEYXRlKGl0ZW0udmFsdWUgLSB0ek9mZnNldCkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAtMSk7XHJcblxyXG4gICAgdGhpcy5kYXRlUGlja2VyRm9ybUNvbnRyb2wuc2V0VmFsdWUoZGF0ZVZhbHVlKTtcclxuICAgIHRoaXMub25DaGFuZ2VTZXJ2aWNlLkNoYW5nZVZhbHVlKHRoaXMub3B0aW9ucy5uYW1lKTtcclxuICAgIGxldCBvcmlnaW5hbFZhbHVlID0gZGF0ZVZhbHVlO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLm9wdGlvbnMucGF0Y2hGdW5jdGlvbiAmJlxyXG4gICAgICB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoICYmXHJcbiAgICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5uYW1lKS52YWxpZFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUoXHJcbiAgICAgICAgb3JpZ2luYWxWYWx1ZSxcclxuICAgICAgICB0aGlzLm9wdGlvbnMucGF0Y2hGdW5jdGlvbixcclxuICAgICAgICB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvL1VzZSB0aGlzIGxpbmUgdG8gZW5hYmxlIHR3byB3YXkgYmluZGluZy5cclxuICAgIHRoaXMub3B0aW9ucy52YWx1ZSA9IG9yaWdpbmFsVmFsdWU7XHJcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQob3JpZ2luYWxWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBzdWJzY3JpYmVEYXRlQ2hhbmdlcygpIHtcclxuICAgIGNvbnN0IHN0YXJ0RGF0ZUNoYW5nZXMgPSB0aGlzLmNvbXBhcmVkQ29udHJvbC52YWx1ZUNoYW5nZXM7XHJcbiAgICBjb25zdCBlbmREYXRlQ2hhbmdlcyA9IHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5uYW1lKS52YWx1ZUNoYW5nZXM7XHJcbiAgICBzdGFydERhdGVDaGFuZ2VzLnN1YnNjcmliZSgoc3RhcnQpID0+IHtcclxuICAgICAgdGhpcy5jb21wYXJlZENvbnRyb2wuYWRkVmFsaWRhdG9ycyh0aGlzLmNoZWNrSWZTdGFydERhdGVCZUZvckVuZERhdGUpO1xyXG4gICAgICB0aGlzLmNvbXBhcmVkQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9KTtcclxuICAgIGVuZERhdGVDaGFuZ2VzLnN1YnNjcmliZSgoZW5kKSA9PiB7XHJcbiAgICAgIHRoaXMuZGF0ZVBpY2tlckZvcm1Db250cm9sLmFkZFZhbGlkYXRvcnModGhpcy5jaGVja0lmRW5kRGF0ZUFmdGVyU3RhcnREYXRlKTtcclxuICAgICAgdGhpcy5kYXRlUGlja2VyRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGVja0lmRW5kRGF0ZUFmdGVyU3RhcnREYXRlID0gKCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLmNvbXBhcmVkQ29udHJvbC52YWx1ZSB8fCAhdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLm5hbWUpLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKG5ldyBEYXRlKHRoaXMuY29tcGFyZWRDb250cm9sLnZhbHVlKSA8IG5ldyBEYXRlKHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5uYW1lKS52YWx1ZSkpIHtcclxuICAgICAgdGhpcy5jb21wYXJlZENvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29tcGFyZWRDb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgcmV0dXJuIHsgSW52YWxpZEVuZERhdGU6IHRydWUgfTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBjaGVja0lmU3RhcnREYXRlQmVGb3JFbmREYXRlID0gKCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLmNvbXBhcmVkQ29udHJvbC52YWx1ZSB8fCAhdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLm5hbWUpLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKG5ldyBEYXRlKHRoaXMuY29tcGFyZWRDb250cm9sLnZhbHVlKSA8IG5ldyBEYXRlKHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5uYW1lKS52YWx1ZSkpIHtcclxuICAgICAgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLm5hbWUpLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMubmFtZSkuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICByZXR1cm4geyBJbnZhbGlkU3RhcnREYXRlOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY2hlY2tJc1BpY2tlckluRmlsdGVyKCkge1xyXG4gICAgaWYgKHRoaXMuRHJvcGRvd25UZW1wbGF0ZVZhcmlhYmxlKSB0aGlzLkRyb3Bkb3duVGVtcGxhdGVWYXJpYWJsZS50b2dnbGUoKTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBoZWxwZXJzXHJcblxyXG4gIHRyYW5zbGF0ZUJ5S2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoa2V5KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkucmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKFxyXG4gICAgICB0aGlzLmRhdGVQaWNrZXJGb3JtQ29udHJvbCxcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMsXHJcbiAgICAgIHRoaXMub3B0aW9uc1xyXG4gICAgKTtcclxuICB9O1xyXG4gIGFkZFJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkUmVxdWlyZWRWYWxpZGF0aW9uKFxyXG4gICAgICB0aGlzLmRhdGVQaWNrZXJGb3JtQ29udHJvbCxcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMsXHJcbiAgICAgIHRoaXMub3B0aW9uc1xyXG4gICAgKTtcclxuICB9O1xyXG4gIHJlbW92ZUN1c3RvbVZhbGlkYXRpb24gPSAoY3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5yZW1vdmVDdXN0b21WYWxpZGF0aW9uKFxyXG4gICAgICB0aGlzLmRhdGVQaWNrZXJGb3JtQ29udHJvbCxcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMsXHJcbiAgICAgIGN1c3RvbVZhbGlkYXRpb25cclxuICAgICk7XHJcbiAgfTtcclxuICBhZGRDdXN0b21WYWxpZGF0aW9uID0gKGN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkQ3VzdG9tVmFsaWRhdGlvbihcclxuICAgICAgdGhpcy5kYXRlUGlja2VyRm9ybUNvbnRyb2wsXHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLFxyXG4gICAgICBjdXN0b21WYWxpZGF0aW9uXHJcbiAgICApO1xyXG4gIH07XHJcbiAgaXNWYWxpZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuaXNWYWxpZCh0aGlzLmRhdGVQaWNrZXJGb3JtQ29udHJvbCk7XHJcbiAgfTtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuXHJcblxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgYmJzZi1jb250cm9sIGJic2YtZGF0ZXRpbWUtcGlja2VyXCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxyXG4gIDxkaXYgW25nQ2xhc3NdPVwiKG9wdGlvbnMudmlld1R5cGU9PTEpPydiYnNmLXZlcnRpY2FsJzonYmJzZi1ob3Jpem9udGFsJ1wiPlxyXG4gICAgPCEtLWxhYmVsLS0+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCIhb3B0aW9ucy5oaWRlTGFiZWxcIiBjbGFzcz1cImJic2YtbGFiZWxcclxuICAgICAge3tvcHRpb25zLmxhYmVsRXh0cmFDbGFzc2VzfX1cIj5cclxuICAgICAge3tvcHRpb25zLmxhYmVsVmFsdWV9fVxyXG4gICAgICA8IS0tQXN0ZXJpc2stLT5cclxuICAgICAgPHNwYW4gKm5nSWY9XCIoKG9wdGlvbnMuc2hvd0FzdGVyaXNrJiZvcHRpb25zLmlzUmVxdWlyZWQpfHwob3B0aW9ucy5pc1JlcXVpcmVkKSkmJiFvcHRpb25zLmlzUmVhZG9ubHlcIlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1kYW5nZXJcIiBhcmlhLXJlcXVpcmVkPVwidHJ1ZVwiPio8L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFvcHRpb25zLmlzUmVhZG9ubHlcIiBjbGFzcz1cImJic2YtaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgIDwhLS1pbnB1dC0tPlxyXG4gICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW3JlYWRvbmx5XT1cInRydWVcIiAoZGF0ZVRpbWVDaGFuZ2UpPVwib25EYXRlU2VsZWN0KCRldmVudClcIiBbZGlyXT1cInRleHREaXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBibnNpZ2h0cy1jb250cm9sXHJcbiAgICAgICAge3tvcHRpb25zLmV4dHJhQ2xhc3Nlc319IFwiIFtuZ0NsYXNzXT1cIihvcHRpb25zLnZpZXdUeXBlPT0xKT8nJzonY29sLW1kLTknXCIgYXJpYS1kZXNjcmliZWRieT1cImVtYWlsLWVycm9yXCJcclxuICAgICAgICBhcmlhLWludmFsaWQ9XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwie3tvcHRpb25zLm5hbWV9fVwiIFtvd2xEYXRlVGltZV09XCJkdDFcIiBbb3dsRGF0ZVRpbWVUcmlnZ2VyXT1cImR0MVwiXHJcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiZGF0ZVBpY2tlckZvcm1Db250cm9sLmludmFsaWQgJiZcclxuICAgICAgICBkYXRlUGlja2VyRm9ybUNvbnRyb2wudG91Y2hlZFwiIFttaW5dPVwib3B0aW9ucy5zdGFydERhdGVcIiBbbWF4XT1cIm9wdGlvbnMuZW5kRGF0ZVwiXHJcbiAgICAgICAgW2hvdXIxMlRpbWVyXT1cIm9wdGlvbnMuaG91cjEyVGltZXJcIiBbc2VsZWN0TW9kZV09XCJnZXRTZWxlY3RNb2RlKG9wdGlvbnMuc2VsZWN0TW9kZSlcIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3tvcHRpb25zLnBsYWNlaG9sZGVyfX1cIiBpZD1cInt7b3B0aW9ucy5uYW1lfX1cIiAjRGF0ZWlucHV0PlxyXG5cclxuICAgICAgPG93bC1kYXRlLXRpbWUgW3BpY2tlclR5cGVdPVwiZ2V0UGlja2VyVHlwZShvcHRpb25zLnBpY2tlclR5cGUpXCIgKGFmdGVyUGlja2VyQ2xvc2VkKT1cImNoZWNrSXNQaWNrZXJJbkZpbHRlcigpXCJcclxuICAgICAgICBbc3RhcnRWaWV3XT1cInN0YXJ0Vmlld1wiIFtmaXJzdERheU9mV2Vla109XCJvcHRpb25zLmZpcnN0RGF5T2ZXZWVrXCIgW2hvdXIxMlRpbWVyXT1cIm9wdGlvbnMuaG91cjEyVGltZXJcIlxyXG4gICAgICAgICNkdDE+PC9vd2wtZGF0ZS10aW1lPlxyXG4gICAgICA8IS0taWNvbi0tPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImNvcHktY2xpcGJvYXJkXCIgW293bERhdGVUaW1lVHJpZ2dlcl09XCJkdDFcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uXCI+XHJcbiAgICAgICAgICA8c3ZnIGlkPVwiR3JvdXBfMzU2XCIgZGF0YS1uYW1lPVwiR3JvdXAgMzU2XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxNVwiIHZpZXdCb3g9XCIwXHJcbiAgICAgICAgICAgIDAgNDggNDhcIj5cclxuICAgICAgICAgICAgPHBhdGggaWQ9XCJQYXRoXzY3MzdcIiBkYXRhLW5hbWU9XCJQYXRoIDY3MzdcIiBkPVwiTTExLjU4MywxYTEsMSwwLDAsMC0yLDBWNS43aDJaXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8cGF0aCBpZD1cIlBhdGhfNjczOFwiIGRhdGEtbmFtZT1cIlBhdGggNjczOFwiIGQ9XCJNMzguNDE3LDFhMSwxLDAsMCwwLTIsMFY1LjdoMlpcIj48L3BhdGg+XHJcbiAgICAgICAgICAgIDxwYXRoIGlkPVwiUGF0aF82NzM5XCIgZGF0YS1uYW1lPVwiUGF0aCA2NzM5XCJcclxuICAgICAgICAgICAgICBkPVwiTTAsNDMuMTQ2QzAsNDUuODIyLDEuODI2LDQ4LDQuMDcsNDhINDMuOTI4QzQ2LjE3NCw0OCw0OCw0NS44MjIsNDgsNDMuMTQ2VjE3LjEyMUgwWlwiIGZpbGw9XCIjZDVkNWQ1XCI+XHJcbiAgICAgICAgICAgIDwvcGF0aD5cclxuICAgICAgICAgICAgPHBhdGggaWQ9XCJQYXRoXzY3NDBcIiBkYXRhLW5hbWU9XCJQYXRoIDY3NDBcIlxyXG4gICAgICAgICAgICAgIGQ9XCJNNDMuOTI5LDUuN0gzOC40MTd2NS41MTJhMSwxLDAsMSwxLTIsMFY1LjdIMTEuNTgzdjUuNTEyYTEsMSwwLDEsMS0yLDBWNS43SDQuMDdDMS44MjYsNS43LDAsNy44NzcsMCwxMC41NTV2NC41NjZINDhWMTAuNTU1QzQ4LDcuODc3LDQ2LjE3NCw1LjcsNDMuOTI5LDUuN1pcIlxyXG4gICAgICAgICAgICAgIGZpbGw9XCIjNTk1OTU5XCI+PC9wYXRoPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gcmVhZG9ubHkgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwib3B0aW9ucy5pc1JlYWRvbmx5XCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmlld1wiPnt7b3B0aW9ucy52YWx1ZSA/IChvcHRpb25zLnZhbHVlfGRhdGU6J01NTSBkLCB5LCBoOm1tIGEnKSA6XHJcbiAgICAgICAgdHJhbnNsYXRlQnlLZXkoJ05BJyl9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJzdWJ0ZXh0LWNvbnRhaW5lclwiICpuZ0lmPVwiIW9wdGlvbnMuaXNSZWFkb25seVwiPlxyXG4gICAgPCEtLSBsYWJlbERlc2NyaXB0aW9uLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYmJzZi1jb250cm9sLWRlc2NcIiAqbmdJZj1cIm9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiE9bnVsbFwiPnt7b3B0aW9ucy5sYWJlbERlc2NyaXB0aW9ufX08L2Rpdj5cclxuICAgIDwhLS0gcmVxdWlyZWRUZXh0LS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYmJzZi12YWxpZGF0aW9uXCIgKm5nSWY9XCIoZGF0ZVBpY2tlckZvcm1Db250cm9sLmludmFsaWQgJiZcclxuICAgICAgZGF0ZVBpY2tlckZvcm1Db250cm9sLnRvdWNoZWQpXCI+XHJcbiAgICAgIHt7Z2V0RXJyb3JWYWxpZGF0aW9uKGRhdGVQaWNrZXJGb3JtQ29udHJvbC5lcnJvcnN8a2V5dmFsdWUpfX1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCIoZ3JvdXAudmFsaWQmJmdyb3VwLmRpcnR5JiZncm91cC50b3VjaGVkXHJcbiAgICApfHwoZ3JvdXAudW50b3VjaGVkJiZncm91cC5pbnZhbGlkJiZncm91cC5kaXJ0eSkgXCI+e3tyZXNldEVycm9yKCl9fTwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZVRpbWVQaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL0RhdGVUaW1lUGlja2VyL0RhdGVUaW1lUGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9EYXRlVGltZVBpY2tlci9EYXRlVGltZVBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBb0UsTUFBTSxnQkFBZ0IsQ0FBQztBQUczSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEVBQWlDLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXhHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbkUsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7Ozs7Ozs7O0FBYTVCLE1BQU0sT0FBTyxrQkFBa0I7YUFDdEIsMkJBQXNCLEdBQUcsSUFBSSxBQUFQLENBQVE7SUFFckMsWUFBb0IsZUFBNkMsRUFBVSxjQUE4QixFQUFzQixnQkFBa0MsRUFBUyxvQkFBd0MsRUFBVSxjQUE4QixFQUFVLHdCQUFrRCxFQUFVLGVBQXFDO1FBQWpWLG9CQUFlLEdB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LENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7K0dBak1VLGtCQUFrQjttR0FBbEIsa0JBQWtCLHVMQVBsQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixRQUFRLEVBQUUsV0FBVzthQUN0QjtTQUNGLDBCQ3pCSCwwL0dBMERBOzs0RkQvQmEsa0JBQWtCO2tCQVY5QixTQUFTOytCQUNFLHFCQUFxQixhQUVwQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsUUFBUSxFQUFFLFdBQVc7eUJBQ3RCO3FCQUNGOzswQkFLMkcsUUFBUTs0S0FJM0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBDb250cm9sQ29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyT3B0aW9ucyB9IGZyb20gJy4uLy4uL1NoYXJlZC9Nb2RlbHMvRGF0ZVBpY2tlck9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IFBpY2tlclR5cGUgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvUGlja2VyVHlwZSc7XHJcbmltcG9ydCB7IFN0YXJ0VmlldyB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9TdGFydFZpZXcnO1xyXG5pbXBvcnQgeyBTZWxlY3RNb2RlIH0gZnJvbSAnLi4vLi4vU2hhcmVkL0VudW1zL1NlbGVjdE1vZGUnO1xyXG5pbXBvcnQgeyBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL09uUGFnaW5nRmlsdGVyc0NoYW5nZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IERhdGVUaW1lQWRhcHRlciwgRGF0ZVZpZXdUeXBlLCBPd2xEYXRlVGltZUludGwgfSBmcm9tICdAZGFuaWVsbW9uY2FkYS9hbmd1bGFyLWRhdGV0aW1lLXBpY2tlcic7XHJcbmltcG9ydCAqIGFzIGRhdGVUaW1lQ2xhc3MgZnJvbSAnQGRhbmllbG1vbmNhZGEvYW5ndWxhci1kYXRldGltZS1waWNrZXInO1xyXG5pbXBvcnQgeyBEZWZhdWx0SW50bCB9IGZyb20gJy4uLy4uL1NoYXJlZC9kZWZhdWx0X2ludGwnO1xyXG5pbXBvcnQgeyBGb3JjZURpcmVjdGlvbiB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9Gb3JjZURpcmVjdGlvbic7XHJcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnQkJTRi1EYXRlVGltZVBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL0RhdGVUaW1lUGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogT3dsRGF0ZVRpbWVJbnRsLFxyXG4gICAgICB1c2VDbGFzczogRGVmYXVsdEludGxcclxuICAgIH1cclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lclN0YXRpYyA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb25DaGFuZ2VTZXJ2aWNlOiBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlLCBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLCBwdWJsaWMgRGF0ZUlucHV0Q29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSwgcHJpdmF0ZSB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIHByaXZhdGUgZGF0ZVRpbWVBZGFwdGVyOiBEYXRlVGltZUFkYXB0ZXI8YW55Pikge1xyXG4gICAgRGF0ZUlucHV0Q29tcG9uZW50LmNvbnRyb2xDb250YWluZXJTdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IERhdGVQaWNrZXJPcHRpb25zO1xyXG4gIEBJbnB1dCgpIERyb3Bkb3duVGVtcGxhdGVWYXJpYWJsZTogYW55O1xyXG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgZGF0ZVBpY2tlckZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIHZhbGlkYXRpb25SdWxlc0FzeW5jID0gW107XHJcbiAgY29tcGFyZWRDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBudWxsO1xyXG4gIGRhdGVFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRleHREaXI6IERpcmVjdGlvbjtcclxuICBzdGFydFZpZXc6IERhdGVWaWV3VHlwZTtcclxuXHJcbiAgLy8jcmVnaW9uIGV2ZW50c1xyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIHRoaXMudGV4dERpciA9IHRoaXMub3B0aW9ucy5mb3JjZURpcmVjdGlvbiA/ICh0aGlzLm9wdGlvbnMuZm9yY2VEaXJlY3Rpb24gPT0gRm9yY2VEaXJlY3Rpb24uQXJhYmljID8gJ3J0bCcgOiAnbHRyJykgOiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgPT0gJ2FyJyA/ICdydGwnIDogJ2x0cicpO1xyXG4gICAgdGhpcy5zdGFydFZpZXcgPSAodGhpcy5vcHRpb25zLnN0YXJ0VmlldyA9PSBTdGFydFZpZXcuTXVsdGlZZWFyID8gJ211bHRpLXllYXInIDogKFN0YXJ0Vmlld1t0aGlzLm9wdGlvbnMuc3RhcnRWaWV3XSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkpIGFzIERhdGVWaWV3VHlwZTtcclxuXHJcbiAgICAvLyBVcGRhdGUgdGhlIERhdGVUaW1lQWRhcHRlciBMYW5ndWFnZSB3aXRoIHRoZSBjdXJyZW50IHRocmVhZCBsYW5nYXVnZVxyXG4gICAgdGhpcy5kYXRlVGltZUFkYXB0ZXIuc2V0TG9jYWxlKHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCkgPT0gXCJhclwiID8gXCJhclwiIDogXCJlbi1VS1wiKTtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2U7XHJcbiAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLm5hbWUsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyRm9ybUNvbnRyb2wgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMub3B0aW9ucy5uYW1lXTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLmN1c3RvbVZhbGlkYXRpb247XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkKVxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMubGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMubGFiZWxLZXkgIT0gXCJcIilcclxuICAgICAgdGhpcy5vcHRpb25zLmxhYmVsVmFsdWUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLmxhYmVsS2V5KTtcclxuXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5pc0Rpc2FibGVkKVxyXG4gICAgICB0aGlzLmRhdGVQaWNrZXJGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zdGFydENvbnRyb2xUb0NvbXBhcmVXaXRoKSB7XHJcbiAgICAgIGlmICh0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuc3RhcnRDb250cm9sVG9Db21wYXJlV2l0aCkpIHtcclxuICAgICAgICB0aGlzLmNvbXBhcmVkQ29udHJvbCA9IHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5zdGFydENvbnRyb2xUb0NvbXBhcmVXaXRoKTtcclxuICAgICAgICB0aGlzLnN1YnNjcmliZURhdGVDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGVQaWNrZXJGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlckZvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlc0FzeW5jKTtcclxuICAgIHRoaXMuRGF0ZUlucHV0Q29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2V0QXR0cmlidXRlRm9yQ29udHJvbCh0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH07XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JMaXN0KSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsQXNUb3VjaGVkICYmIHRoaXMuZ3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dHbG9iYWxFcnJvcigpO1xyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldEVycm9yVmFsaWRhdGlvbk1hc3NhZ2UoRXJyb3JMaXN0LCB0aGlzLmdyb3VwLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgY29weUlucHV0TWVzc2FnZShpbnB1dEVsZW1lbnQpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQ29weUlucHV0TWVzc2FnZShpbnB1dEVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0TW9kZSh0eXBlOiBudW1iZXIpIHtcclxuICAgIGxldCBWYWx1ZSA9IChTZWxlY3RNb2RlW3R5cGVdIGFzIHN0cmluZyk7XHJcbiAgICByZXR1cm4gVmFsdWUudG9Mb3dlckNhc2UoKSBhcyBkYXRlVGltZUNsYXNzLlNlbGVjdE1vZGU7XHJcbiAgfVxyXG5cclxuICBnZXRQaWNrZXJUeXBlKHR5cGU6IG51bWJlcikge1xyXG4gICAgbGV0IFZhbHVlID0gKFBpY2tlclR5cGVbdHlwZV0gYXMgc3RyaW5nKTtcclxuICAgIHJldHVybiBWYWx1ZS50b0xvd2VyQ2FzZSgpIGFzIGRhdGVUaW1lQ2xhc3MuUGlja2VyVHlwZTtcclxuICB9XHJcblxyXG4gIGdldFN0YXJ0Vmlldyh0eXBlOiBudW1iZXIpIHtcclxuICAgIGlmICh0eXBlID09IDMpXHJcbiAgICAgIHJldHVybiAnbXVsdGkteWVhcic7XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgVmFsdWUgPSAoU3RhcnRWaWV3W3R5cGVdIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKTtcclxuICAgICAgcmV0dXJuIFZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25EYXRlU2VsZWN0KGl0ZW06IGFueSkge1xyXG4gICAgaWYgKCFpdGVtKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgbGV0IGRhdGVWYWx1ZTogYW55ID0gbmV3IERhdGUoaXRlbS52YWx1ZSk7XHJcblxyXG4gICAgLy8gdmFyIHR6T2Zmc2V0ID0gKG5ldyBEYXRlKCkpLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMDsgLy9vZmZzZXQgaW4gbWlsbGlzZWNvbmRzXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNlbGVjdE1vZGUgPT0gU2VsZWN0TW9kZS5SYW5nZSkge1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbS52YWx1ZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAvLyBpdGVtLnZhbHVlW2luZGV4XSA9IG5ldyBEYXRlKGl0ZW0udmFsdWVbaW5kZXhdIC0gdHpPZmZzZXQpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgLTEpO1xyXG4gICAgICAgIGl0ZW0udmFsdWVbaW5kZXhdID0gbW9tZW50KGl0ZW0udmFsdWVbaW5kZXhdKS5mb3JtYXQoJ1lZWVktTU0tRERUSEg6bW06c3MuU1NTJyk7XHJcbiAgICAgIH1cclxuICAgICAgZGF0ZVZhbHVlID0gaXRlbS52YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgZGF0ZVZhbHVlID0gbW9tZW50KGl0ZW0udmFsdWUpLmZvcm1hdCgnWVlZWS1NTS1ERFRISDptbTpzcy5TU1MnKTtcclxuXHJcbiAgICAvLyBEYXRlVmFsdWUgPSBuZXcgRGF0ZShpdGVtLnZhbHVlIC0gdHpPZmZzZXQpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgLTEpO1xyXG5cclxuICAgIHRoaXMuZGF0ZVBpY2tlckZvcm1Db250cm9sLnNldFZhbHVlKGRhdGVWYWx1ZSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlU2VydmljZS5DaGFuZ2VWYWx1ZSh0aGlzLm9wdGlvbnMubmFtZSk7XHJcbiAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IGRhdGVWYWx1ZTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMucGF0Y2hGdW5jdGlvbiAmJiB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoICYmIHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5uYW1lKS52YWxpZCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKG9yaWdpbmFsVmFsdWUsIHRoaXMub3B0aW9ucy5wYXRjaEZ1bmN0aW9uLCB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoKTtcclxuICAgIH1cclxuICAgIC8vVXNlIHRoaXMgbGluZSB0byBlbmFibGUgdHdvIHdheSBiaW5kaW5nLlxyXG4gICAgdGhpcy5vcHRpb25zLnZhbHVlID0gb3JpZ2luYWxWYWx1ZTtcclxuICAgIHRoaXMub25DaGFuZ2UuZW1pdChvcmlnaW5hbFZhbHVlKTtcclxuICB9XHJcblxyXG4gIHN1YnNjcmliZURhdGVDaGFuZ2VzKCkge1xyXG4gICAgY29uc3Qgc3RhcnREYXRlQ2hhbmdlcyA9IHRoaXMuY29tcGFyZWRDb250cm9sLnZhbHVlQ2hhbmdlcztcclxuICAgIGNvbnN0IGVuZERhdGVDaGFuZ2VzID0gdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLm5hbWUpLnZhbHVlQ2hhbmdlcztcclxuICAgIHN0YXJ0RGF0ZUNoYW5nZXMuc3Vic2NyaWJlKHN0YXJ0ID0+IHtcclxuICAgICAgdGhpcy5jb21wYXJlZENvbnRyb2wuYWRkVmFsaWRhdG9ycyh0aGlzLmNoZWNrSWZTdGFydERhdGVCZUZvckVuZERhdGUpO1xyXG4gICAgICB0aGlzLmNvbXBhcmVkQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9KTtcclxuICAgIGVuZERhdGVDaGFuZ2VzLnN1YnNjcmliZShlbmQgPT4ge1xyXG4gICAgICB0aGlzLmRhdGVQaWNrZXJGb3JtQ29udHJvbC5hZGRWYWxpZGF0b3JzKHRoaXMuY2hlY2tJZkVuZERhdGVBZnRlclN0YXJ0RGF0ZSk7XHJcbiAgICAgIHRoaXMuZGF0ZVBpY2tlckZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJZkVuZERhdGVBZnRlclN0YXJ0RGF0ZSA9ICgpID0+IHtcclxuICAgIGlmICghdGhpcy5jb21wYXJlZENvbnRyb2wudmFsdWUgfHwgIXRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5uYW1lKS52YWx1ZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGlmIChuZXcgRGF0ZSh0aGlzLmNvbXBhcmVkQ29udHJvbC52YWx1ZSkgPCBuZXcgRGF0ZSh0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMubmFtZSkudmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuY29tcGFyZWRDb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5jb21wYXJlZENvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICByZXR1cm4geyBJbnZhbGlkRW5kRGF0ZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNoZWNrSWZTdGFydERhdGVCZUZvckVuZERhdGUgPSAoKSA9PiB7XHJcbiAgICBpZiAoIXRoaXMuY29tcGFyZWRDb250cm9sLnZhbHVlIHx8ICF0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMubmFtZSkudmFsdWUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAobmV3IERhdGUodGhpcy5jb21wYXJlZENvbnRyb2wudmFsdWUpIDwgbmV3IERhdGUodGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLm5hbWUpLnZhbHVlKSkge1xyXG4gICAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMubmFtZSkuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMubmFtZSkuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICByZXR1cm4geyBJbnZhbGlkU3RhcnREYXRlOiB0cnVlIH07XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY2hlY2tJc1BpY2tlckluRmlsdGVyKCkge1xyXG4gICAgaWYgKHRoaXMuRHJvcGRvd25UZW1wbGF0ZVZhcmlhYmxlKVxyXG4gICAgICB0aGlzLkRyb3Bkb3duVGVtcGxhdGVWYXJpYWJsZS50b2dnbGUoKTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBoZWxwZXJzXHJcblxyXG4gIHRyYW5zbGF0ZUJ5S2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoa2V5KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkucmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuZGF0ZVBpY2tlckZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKTtcclxuICB9O1xyXG4gIGFkZFJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuZGF0ZVBpY2tlckZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKTtcclxuICB9O1xyXG4gIHJlbW92ZUN1c3RvbVZhbGlkYXRpb24gPSAoY3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5yZW1vdmVDdXN0b21WYWxpZGF0aW9uKHRoaXMuZGF0ZVBpY2tlckZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgY3VzdG9tVmFsaWRhdGlvbik7XHJcbiAgfTtcclxuICBhZGRDdXN0b21WYWxpZGF0aW9uID0gKGN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkQ3VzdG9tVmFsaWRhdGlvbih0aGlzLmRhdGVQaWNrZXJGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIGN1c3RvbVZhbGlkYXRpb24pO1xyXG4gIH07XHJcbiAgaXNWYWxpZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuaXNWYWxpZCh0aGlzLmRhdGVQaWNrZXJGb3JtQ29udHJvbCk7XHJcbiAgfTtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG59XHJcblxyXG5cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGJic2YtY29udHJvbCBiYnNmLWRhdGV0aW1lLXBpY2tlclwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cIihvcHRpb25zLnZpZXdUeXBlPT0xKT8nYmJzZi12ZXJ0aWNhbCc6J2Jic2YtaG9yaXpvbnRhbCdcIj5cclxuICAgIDwhLS1sYWJlbC0tPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwiIW9wdGlvbnMuaGlkZUxhYmVsXCIgY2xhc3M9XCJiYnNmLWxhYmVsXHJcbiAgICAgIHt7b3B0aW9ucy5sYWJlbEV4dHJhQ2xhc3Nlc319XCI+XHJcbiAgICAgIHt7b3B0aW9ucy5sYWJlbFZhbHVlfX1cclxuICAgICAgPCEtLUFzdGVyaXNrLS0+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiKChvcHRpb25zLnNob3dBc3RlcmlzayYmb3B0aW9ucy5pc1JlcXVpcmVkKXx8KG9wdGlvbnMuaXNSZXF1aXJlZCkpJiYhb3B0aW9ucy5pc1JlYWRvbmx5XCJcclxuICAgICAgICBjbGFzcz1cInRleHQtZGFuZ2VyXCIgYXJpYS1yZXF1aXJlZD1cInRydWVcIj4qPC9zcGFuPlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDxkaXYgKm5nSWY9XCIhb3B0aW9ucy5pc1JlYWRvbmx5XCIgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICA8IS0taW5wdXQtLT5cclxuICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtyZWFkb25seV09XCJ0cnVlXCIgKGRhdGVUaW1lQ2hhbmdlKT1cIm9uRGF0ZVNlbGVjdCgkZXZlbnQpXCIgW2Rpcl09XCJ0ZXh0RGlyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYm5zaWdodHMtY29udHJvbFxyXG4gICAgICAgIHt7b3B0aW9ucy5leHRyYUNsYXNzZXN9fSBcIiBbbmdDbGFzc109XCIob3B0aW9ucy52aWV3VHlwZT09MSk/Jyc6J2NvbC1tZC05J1wiIGFyaWEtZGVzY3JpYmVkYnk9XCJlbWFpbC1lcnJvclwiXHJcbiAgICAgICAgYXJpYS1pbnZhbGlkPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cInt7b3B0aW9ucy5uYW1lfX1cIiBbb3dsRGF0ZVRpbWVdPVwiZHQxXCIgW293bERhdGVUaW1lVHJpZ2dlcl09XCJkdDFcIlxyXG4gICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImRhdGVQaWNrZXJGb3JtQ29udHJvbC5pbnZhbGlkICYmXHJcbiAgICAgICAgZGF0ZVBpY2tlckZvcm1Db250cm9sLnRvdWNoZWRcIiBbbWluXT1cIm9wdGlvbnMuc3RhcnREYXRlXCIgW21heF09XCJvcHRpb25zLmVuZERhdGVcIlxyXG4gICAgICAgIFtob3VyMTJUaW1lcl09XCJvcHRpb25zLmhvdXIxMlRpbWVyXCIgW3NlbGVjdE1vZGVdPVwiZ2V0U2VsZWN0TW9kZShvcHRpb25zLnNlbGVjdE1vZGUpXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7b3B0aW9ucy5wbGFjZWhvbGRlcn19XCIgaWQ9XCJ7e29wdGlvbnMubmFtZX19XCIgI0RhdGVpbnB1dD5cclxuXHJcbiAgICAgIDxvd2wtZGF0ZS10aW1lIFtwaWNrZXJUeXBlXT1cImdldFBpY2tlclR5cGUob3B0aW9ucy5waWNrZXJUeXBlKVwiIChhZnRlclBpY2tlckNsb3NlZCk9XCJjaGVja0lzUGlja2VySW5GaWx0ZXIoKVwiXHJcbiAgICAgICAgW3N0YXJ0Vmlld109XCJzdGFydFZpZXdcIiBbZmlyc3REYXlPZldlZWtdPVwib3B0aW9ucy5maXJzdERheU9mV2Vla1wiIFtob3VyMTJUaW1lcl09XCJvcHRpb25zLmhvdXIxMlRpbWVyXCJcclxuICAgICAgICAjZHQxPjwvb3dsLWRhdGUtdGltZT5cclxuICAgICAgPCEtLWljb24tLT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJjb3B5LWNsaXBib2FyZFwiIFtvd2xEYXRlVGltZVRyaWdnZXJdPVwiZHQxXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvblwiPlxyXG4gICAgICAgICAgPHN2ZyBpZD1cIkdyb3VwXzM1NlwiIGRhdGEtbmFtZT1cIkdyb3VwIDM1NlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTVcIiB2aWV3Qm94PVwiMFxyXG4gICAgICAgICAgICAwIDQ4IDQ4XCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGlkPVwiUGF0aF82NzM3XCIgZGF0YS1uYW1lPVwiUGF0aCA2NzM3XCIgZD1cIk0xMS41ODMsMWExLDEsMCwwLDAtMiwwVjUuN2gyWlwiPjwvcGF0aD5cclxuICAgICAgICAgICAgPHBhdGggaWQ9XCJQYXRoXzY3MzhcIiBkYXRhLW5hbWU9XCJQYXRoIDY3MzhcIiBkPVwiTTM4LjQxNywxYTEsMSwwLDAsMC0yLDBWNS43aDJaXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8cGF0aCBpZD1cIlBhdGhfNjczOVwiIGRhdGEtbmFtZT1cIlBhdGggNjczOVwiXHJcbiAgICAgICAgICAgICAgZD1cIk0wLDQzLjE0NkMwLDQ1LjgyMiwxLjgyNiw0OCw0LjA3LDQ4SDQzLjkyOEM0Ni4xNzQsNDgsNDgsNDUuODIyLDQ4LDQzLjE0NlYxNy4xMjFIMFpcIiBmaWxsPVwiI2Q1ZDVkNVwiPlxyXG4gICAgICAgICAgICA8L3BhdGg+XHJcbiAgICAgICAgICAgIDxwYXRoIGlkPVwiUGF0aF82NzQwXCIgZGF0YS1uYW1lPVwiUGF0aCA2NzQwXCJcclxuICAgICAgICAgICAgICBkPVwiTTQzLjkyOSw1LjdIMzguNDE3djUuNTEyYTEsMSwwLDEsMS0yLDBWNS43SDExLjU4M3Y1LjUxMmExLDEsMCwxLDEtMiwwVjUuN0g0LjA3QzEuODI2LDUuNywwLDcuODc3LDAsMTAuNTU1djQuNTY2SDQ4VjEwLjU1NUM0OCw3Ljg3Nyw0Ni4xNzQsNS43LDQzLjkyOSw1LjdaXCJcclxuICAgICAgICAgICAgICBmaWxsPVwiIzU5NTk1OVwiPjwvcGF0aD5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIHJlYWRvbmx5IC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIm9wdGlvbnMuaXNSZWFkb25seVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZpZXdcIj57e29wdGlvbnMudmFsdWUgPyAob3B0aW9ucy52YWx1ZXxkYXRlOidNTU0gZCwgeSwgaDptbSBhJykgOlxyXG4gICAgICAgIHRyYW5zbGF0ZUJ5S2V5KCdOQScpfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwic3VidGV4dC1jb250YWluZXJcIiAqbmdJZj1cIiFvcHRpb25zLmlzUmVhZG9ubHlcIj5cclxuICAgIDwhLS0gbGFiZWxEZXNjcmlwdGlvbi0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImJic2YtY29udHJvbC1kZXNjXCIgKm5nSWY9XCJvcHRpb25zLmxhYmVsRGVzY3JpcHRpb24hPW51bGxcIj57e29wdGlvbnMubGFiZWxEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICA8IS0tIHJlcXVpcmVkVGV4dC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImJic2YtdmFsaWRhdGlvblwiICpuZ0lmPVwiKGRhdGVQaWNrZXJGb3JtQ29udHJvbC5pbnZhbGlkICYmXHJcbiAgICAgIGRhdGVQaWNrZXJGb3JtQ29udHJvbC50b3VjaGVkKVwiPlxyXG4gICAgICB7e2dldEVycm9yVmFsaWRhdGlvbihkYXRlUGlja2VyRm9ybUNvbnRyb2wuZXJyb3JzfGtleXZhbHVlKX19XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiKGdyb3VwLnZhbGlkJiZncm91cC5kaXJ0eSYmZ3JvdXAudG91Y2hlZFxyXG4gICAgKXx8KGdyb3VwLnVudG91Y2hlZCYmZ3JvdXAuaW52YWxpZCYmZ3JvdXAuZGlydHkpIFwiPnt7cmVzZXRFcnJvcigpfX08L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -68,7 +68,7 @@ export class DropdownListComponent {
|
|
|
68
68
|
this.SelectedList = this.options.selectedItems;
|
|
69
69
|
this.dropdownSettings = {
|
|
70
70
|
singleSelection: this.options.singleSelection,
|
|
71
|
-
text:
|
|
71
|
+
text: "Select",
|
|
72
72
|
selectAllText: 'Select All',
|
|
73
73
|
unSelectAllText: 'UnSelect All',
|
|
74
74
|
enableSearchFilter: this.options.allowSearchFilter,
|
|
@@ -81,8 +81,8 @@ export class DropdownListComponent {
|
|
|
81
81
|
showSelectedItemsAtTop: true,
|
|
82
82
|
limitSelection: this.options.limitSelection,
|
|
83
83
|
searchPlaceholderText: this.options.placeholder,
|
|
84
|
-
labelKey:
|
|
85
|
-
primaryKey:
|
|
84
|
+
labelKey: "value",
|
|
85
|
+
primaryKey: "key"
|
|
86
86
|
};
|
|
87
87
|
this.group.addControl(this.options.name, new FormControl(''));
|
|
88
88
|
this.dropdownListFormControl = this.group.controls[this.options.name]; // new FormControl('',validationRules);
|
|
@@ -98,7 +98,7 @@ export class DropdownListComponent {
|
|
|
98
98
|
if (this.options.isRequired) {
|
|
99
99
|
this.validationRules.push(Validators.required);
|
|
100
100
|
}
|
|
101
|
-
if (this.options.labelKey != null && this.options.labelKey !=
|
|
101
|
+
if (this.options.labelKey != null && this.options.labelKey != "")
|
|
102
102
|
this.options.labelValue = this.utilityService.getResourceValue(this.options.labelKey);
|
|
103
103
|
this.dropdownListFormControl.setValidators(this.validationRules);
|
|
104
104
|
this.dropdownListFormControl.setAsyncValidators(this.validationRulesasync);
|
|
@@ -109,14 +109,6 @@ export class DropdownListComponent {
|
|
|
109
109
|
this.group.markAllAsTouched();
|
|
110
110
|
this.markAllAsTouched = true;
|
|
111
111
|
});
|
|
112
|
-
// Initialize previous selectedItems for change detection
|
|
113
|
-
this.previousSelectedItems = this.options.selectedItems;
|
|
114
|
-
}
|
|
115
|
-
ngDoCheck() {
|
|
116
|
-
// Check if selectedItems has changed
|
|
117
|
-
if (this.options && this.options.selectedItems !== this.previousSelectedItems) {
|
|
118
|
-
this.previousSelectedItems = this.options.selectedItems;
|
|
119
|
-
}
|
|
120
112
|
}
|
|
121
113
|
ngAfterViewInit() {
|
|
122
114
|
this.controlUtility.setAttributeForControl(this.options);
|
|
@@ -133,23 +125,10 @@ export class DropdownListComponent {
|
|
|
133
125
|
}
|
|
134
126
|
getSelectedItemValue() {
|
|
135
127
|
if (this.options.selectedItems) {
|
|
136
|
-
if (this.options.singleSelection)
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
: this.options.selectedItems;
|
|
141
|
-
const foundItem = this.options.dataSource.find((item) => item[this.options.itemTempletkey] == selectedItem);
|
|
142
|
-
return foundItem ? foundItem[this.options.itemTempletvalue] : '';
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
// Handle multiple selection - ensure selectedItems is treated as array
|
|
146
|
-
const itemsArray = Array.isArray(this.options.selectedItems)
|
|
147
|
-
? this.options.selectedItems
|
|
148
|
-
: [this.options.selectedItems];
|
|
149
|
-
return this.options.dataSource
|
|
150
|
-
.filter((item) => itemsArray.includes(item[this.options.itemTempletkey]))
|
|
151
|
-
.map((item) => item[this.options.itemTempletvalue]);
|
|
152
|
-
}
|
|
128
|
+
if (this.options.singleSelection)
|
|
129
|
+
return this.options.dataSource.filter(item => item[this.options.itemTempletkey] == this.options.selectedItems)[0][this.options.itemTempletvalue];
|
|
130
|
+
else
|
|
131
|
+
return this.options.dataSource.filter(item => this.options.selectedItems.includes(item[this.options.itemTempletkey])).map(item => item[this.options.itemTempletvalue]);
|
|
153
132
|
}
|
|
154
133
|
else
|
|
155
134
|
return this.utilityService.getResourceValue('NA');
|
|
@@ -157,18 +136,14 @@ export class DropdownListComponent {
|
|
|
157
136
|
onItemSelect() {
|
|
158
137
|
this.onChangeService.ChangeValue(this.options.name);
|
|
159
138
|
let originalValue = this.options.selectedItems;
|
|
160
|
-
if (this.options.patchFunction &&
|
|
161
|
-
this.options.patchPath &&
|
|
162
|
-
this.group.get(this.options.name).valid) {
|
|
139
|
+
if (this.options.patchFunction && this.options.patchPath && this.group.get(this.options.name).valid) {
|
|
163
140
|
this.controlUtility.patchControlValue(originalValue, this.options.patchFunction, this.options.patchPath);
|
|
164
141
|
}
|
|
165
142
|
this.onChange.emit(originalValue);
|
|
166
143
|
//console.log(this.dropdownListFormControl.value)
|
|
167
144
|
}
|
|
168
145
|
Clear() {
|
|
169
|
-
//
|
|
170
|
-
this.selectedItems = [];
|
|
171
|
-
this.options.selectedItems = null;
|
|
146
|
+
//console.log("Clear")
|
|
172
147
|
this.dropdownListFormControl.setValue(this.selectedItems);
|
|
173
148
|
this.onChangeService.ChangeValue(this.options.name);
|
|
174
149
|
this.onChange.emit();
|
|
@@ -184,29 +159,21 @@ export class DropdownListComponent {
|
|
|
184
159
|
this.dropdownListFormControl.setValue(this.selectedItems);
|
|
185
160
|
}
|
|
186
161
|
onDeselect(items) {
|
|
187
|
-
// If no items are selected after deselect, clear options.selectedItems
|
|
188
|
-
if (this.selectedItems.length == 0) {
|
|
189
|
-
this.options.selectedItems = null;
|
|
190
|
-
}
|
|
191
162
|
this.dropdownListFormControl.setValue(this.selectedItems);
|
|
192
|
-
if (this.selectedItems.length == 0 && this.options.isRequired == true) {
|
|
163
|
+
if ((this.selectedItems.length == 0) && this.options.isRequired == true) {
|
|
193
164
|
this.dropdownListFormControl.markAsTouched();
|
|
194
165
|
this.dropdownListFormControl.invalid;
|
|
195
166
|
}
|
|
196
167
|
}
|
|
197
168
|
onDeselectAll(items) {
|
|
198
|
-
// Clear the selected items when all are deselected
|
|
199
|
-
this.selectedItems = [];
|
|
200
|
-
this.options.selectedItems = null;
|
|
201
169
|
this.dropdownListFormControl.setValue(this.selectedItems);
|
|
202
|
-
if (this.selectedItems.length == 0 && this.options.isRequired == true) {
|
|
170
|
+
if ((this.selectedItems.length == 0) && this.options.isRequired == true) {
|
|
203
171
|
this.dropdownListFormControl.markAsTouched();
|
|
204
172
|
this.dropdownListFormControl.invalid;
|
|
205
173
|
}
|
|
206
174
|
}
|
|
207
175
|
onDropDownClose() {
|
|
208
|
-
if ((this.selectedItems == undefined || this.selectedItems.length == 0) &&
|
|
209
|
-
this.options.isRequired == true) {
|
|
176
|
+
if ((this.selectedItems == undefined || this.selectedItems.length == 0) && this.options.isRequired == true) {
|
|
210
177
|
this.dropdownListFormControl.markAsTouched();
|
|
211
178
|
this.dropdownListFormControl.invalid;
|
|
212
179
|
}
|
|
@@ -230,4 +197,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
230
197
|
}], onClear: [{
|
|
231
198
|
type: Output
|
|
232
199
|
}] } });
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcGRvd25MaXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Ecm9wZG93bkxpc3QvRHJvcGRvd25MaXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Ecm9wZG93bkxpc3QvRHJvcGRvd25MaXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFXLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFvRSxNQUFNLGdCQUFnQixDQUFDO0FBTzNILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7OztBQU9uRSxNQUFNLE9BQU8scUJBQXFCO2FBQ3pCLDJCQUFzQixHQUFHLElBQUksQUFBUCxDQUFRO0lBQ3JDLDRDQUE0QztJQUM1QyxZQUNVLGVBQTZDLEVBQzdDLGNBQThCLEVBQ2xCLGdCQUFrQyxFQUMvQyx1QkFBMkMsRUFDM0MsY0FBOEIsRUFDN0Isd0JBQWtELEVBQ2xELGNBQThCO1FBTjlCLG9CQUFlLEdBQWYsZUFBZSxDQUE4QjtRQUM3QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUMvQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQW9CO1FBQzNDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM3Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVN4QyxxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFdEIsaUJBQVksR0FBVSxF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QUFJLElBQUksRUFDL0I7WUFDQSxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQztTQUN0QztJQUNILENBQUM7K0dBdE5VLHFCQUFxQjttR0FBckIscUJBQXFCLHNOQ2ZsQyw2NUlBd0VNOzs0RkR6RE8scUJBQXFCO2tCQUxqQyxTQUFTOytCQUVFLG1CQUFtQjs7MEJBUzFCLFFBQVE7MktBUUYsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBTUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIERvQ2hlY2sgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXBEaXJlY3RpdmUsIENvbnRyb2xDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9Ecm9wZG93bk9wdGlvbnMnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkxpc3RJdGVtIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9Ecm9wZG93bkxpc3RJdGVtJztcclxuaW1wb3J0IHsgT25QYWdpbmdGaWx0ZXJzQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9PblBhZ2luZ0ZpbHRlcnNDaGFuZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXR0aW5ncyB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9HbG9iYWxTZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9yY2VEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvRm9yY2VEaXJlY3Rpb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ0JCU0YtRHJvcGRvd25MaXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vRHJvcGRvd25MaXN0LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrIHtcclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgb25DaGFuZ2VTZXJ2aWNlOiBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHksXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICBwdWJsaWMgZHJvcGRvd25MaXN0Q29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuICAgIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxTZXR0aW5nczogR2xvYmFsU2V0dGluZ3NcclxuICApIHtcclxuICAgIERyb3Bkb3duTGlzdENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gIH1cclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBASW5wdXQoKSBEcm9wZG93blRlbXBsYXRlVmFyaWFibGU6IGFueTtcclxuXHJcbiAgZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBkcm9wZG93blNldHRpbmdzID0ge307XHJcbiAgc2VsZWN0ZWRJdGVtczogRHJvcGRvd25MaXN0SXRlbVtdO1xyXG4gIFNlbGVjdGVkTGlzdDogYW55W10gPSBbXTtcclxuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbnRyb2xDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgdmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuICB0ZXh0RGlyO1xyXG4gIEZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb247XHJcblxyXG4gIC8vIFRyYWNrIHByZXZpb3VzIHNlbGVjdGVkSXRlbXMgZm9yIGNoYW5nZSBkZXRlY3Rpb25cclxuICBwcml2YXRlIHByZXZpb3VzU2VsZWN0ZWRJdGVtczogYW55O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VEaXJlY3Rpb24pXHJcbiAgICAgIHRoaXMudGV4dERpciA9IHRoaXMub3B0aW9ucy5mb3JjZURpcmVjdGlvbiA9PSAyID8gJ3J0bCcgOiAnbHRyJztcclxuICAgIGVsc2UgdGhpcy50ZXh0RGlyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgPT0gJ2FyJyA/ICdydGwnIDogJ2x0cic7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlO1xyXG4gICAgdGhpcy5TZWxlY3RlZExpc3QgPSB0aGlzLm9wdGlvbnMuc2VsZWN0ZWRJdGVtcztcclxuICAgIHRoaXMuZHJvcGRvd25TZXR0aW5ncyA9IHtcclxuICAgICAgc2luZ2xlU2VsZWN0aW9uOiB0aGlzLm9wdGlvbnMuc2luZ2xlU2VsZWN0aW9uLFxyXG4gICAgICB0ZXh0OiAnU2VsZWN0JyxcclxuICAgICAgc2VsZWN0QWxsVGV4dDogJ1NlbGVjdCBBbGwnLFxyXG4gICAgICB1blNlbGVjdEFsbFRleHQ6ICdVblNlbGVjdCBBbGwnLFxyXG4gICAgICBlbmFibGVTZWFyY2hGaWx0ZXI6IHRoaXMub3B0aW9ucy5hbGxvd1NlYXJjaEZpbHRlcixcclxuICAgICAgY2xhc3NlczogdGhpcy5vcHRpb25zLmNsYXNzZXMsXHJcbiAgICAgIGRpc2FibGVkOiB0aGlzLm9wdGlvbnMuaXNEaXNhYmxlZCxcclxuICAgICAgc2hvd0NoZWNrYm94OiB0aGlzLm9wdGlvbnMuc2hvd0NoZWNrYm94LFxyXG4gICAgICBlbmFibGVDaGVja0FsbDogdGhpcy5vcHRpb25zLmVuYWJsZUNoZWNrQWxsLFxyXG4gICAgICBpdGVtc1Nob3dMaW1pdDogdGhpcy5vcHRpb25zLml0ZW1zU2hvd0xpbWl0LFxyXG4gICAgICBhbGxvd1NlYXJjaEZpbHRlcjogdGhpcy5vcHRpb25zLmFsbG93U2VhcmNoRmlsdGVyLFxyXG4gICAgICBzaG93U2VsZWN0ZWRJdGVtc0F0VG9wOiB0cnVlLFxyXG4gICAgICBsaW1pdFNlbGVjdGlvbjogdGhpcy5vcHRpb25zLmxpbWl0U2VsZWN0aW9uLFxyXG4gICAgICBzZWFyY2hQbGFjZWhvbGRlclRleHQ6IHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlcixcclxuICAgICAgbGFiZWxLZXk6ICd2YWx1ZScsXHJcbiAgICAgIHByaW1hcnlLZXk6ICdrZXknXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMubmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sID0gdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLm9wdGlvbnMubmFtZV07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy52aWV3VHlwZSkgdGhpcy5vcHRpb25zLnZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy52aWV3VHlwZTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZhbGlkYXRpb24ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgVmFsaWRhdGlvbnMgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbjtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmlzUmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMubGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMubGFiZWxLZXkgIT0gJycpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5sYWJlbFZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5sYWJlbEtleSk7XHJcblxyXG4gICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZHJvcGRvd25MaXN0Q29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEluaXRpYWxpemUgcHJldmlvdXMgc2VsZWN0ZWRJdGVtcyBmb3IgY2hhbmdlIGRldGVjdGlvblxyXG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGVkSXRlbXMgPSB0aGlzLm9wdGlvbnMuc2VsZWN0ZWRJdGVtcztcclxuICB9XHJcblxyXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcclxuICAgIC8vIENoZWNrIGlmIHNlbGVjdGVkSXRlbXMgaGFzIGNoYW5nZWRcclxuICAgIGlmICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLnNlbGVjdGVkSXRlbXMgIT09IHRoaXMucHJldmlvdXNTZWxlY3RlZEl0ZW1zKSB7XHJcbiAgICAgIHRoaXMucHJldmlvdXNTZWxlY3RlZEl0ZW1zID0gdGhpcy5vcHRpb25zLnNlbGVjdGVkSXRlbXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNldEF0dHJpYnV0ZUZvckNvbnRyb2wodGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH07XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JMaXN0KSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsQXNUb3VjaGVkICYmIHRoaXMuZ3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dHbG9iYWxFcnJvcigpO1xyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldEVycm9yVmFsaWRhdGlvbk1hc3NhZ2UoRXJyb3JMaXN0LCB0aGlzLmdyb3VwLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRJdGVtVmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnNlbGVjdGVkSXRlbXMpIHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaW5nbGVTZWxlY3Rpb24pIHtcclxuICAgICAgICAvLyBIYW5kbGUgc2luZ2xlIHNlbGVjdGlvbiAtIHNlbGVjdGVkSXRlbXMgY291bGQgYmUgYSBzdHJpbmcgb3IgYXJyYXkgd2l0aCBvbmUgaXRlbVxyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zLnNlbGVjdGVkSXRlbXMpXHJcbiAgICAgICAgICA/IHRoaXMub3B0aW9ucy5zZWxlY3RlZEl0ZW1zWzBdXHJcbiAgICAgICAgICA6IHRoaXMub3B0aW9ucy5zZWxlY3RlZEl0ZW1zO1xyXG4gICAgICAgIGNvbnN0IGZvdW5kSXRlbSA9IHRoaXMub3B0aW9ucy5kYXRhU291cmNlLmZpbmQoXHJcbiAgICAgICAgICAoaXRlbSkgPT4gaXRlbVt0aGlzLm9wdGlvbnMuaXRlbVRlbXBsZXRrZXldID09IHNlbGVjdGVkSXRlbVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZvdW5kSXRlbSA/IGZvdW5kSXRlbVt0aGlzLm9wdGlvbnMuaXRlbVRlbXBsZXR2YWx1ZV0gOiAnJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBIYW5kbGUgbXVsdGlwbGUgc2VsZWN0aW9uIC0gZW5zdXJlIHNlbGVjdGVkSXRlbXMgaXMgdHJlYXRlZCBhcyBhcnJheVxyXG4gICAgICAgIGNvbnN0IGl0ZW1zQXJyYXkgPSBBcnJheS5pc0FycmF5KHRoaXMub3B0aW9ucy5zZWxlY3RlZEl0ZW1zKVxyXG4gICAgICAgICAgPyB0aGlzLm9wdGlvbnMuc2VsZWN0ZWRJdGVtc1xyXG4gICAgICAgICAgOiBbdGhpcy5vcHRpb25zLnNlbGVjdGVkSXRlbXNdO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbXNBcnJheS5pbmNsdWRlcyhpdGVtW3RoaXMub3B0aW9ucy5pdGVtVGVtcGxldGtleV0pKVxyXG4gICAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbVt0aGlzLm9wdGlvbnMuaXRlbVRlbXBsZXR2YWx1ZV0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgcmV0dXJuIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnTkEnKTtcclxuICB9XHJcblxyXG4gIG9uSXRlbVNlbGVjdCgpIHtcclxuICAgIHRoaXMub25DaGFuZ2VTZXJ2aWNlLkNoYW5nZVZhbHVlKHRoaXMub3B0aW9ucy5uYW1lKTtcclxuICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdGhpcy5vcHRpb25zLnNlbGVjdGVkSXRlbXM7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMub3B0aW9ucy5wYXRjaEZ1bmN0aW9uICYmXHJcbiAgICAgIHRoaXMub3B0aW9ucy5wYXRjaFBhdGggJiZcclxuICAgICAgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLm5hbWUpLnZhbGlkXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXRjaENvbnRyb2xWYWx1ZShcclxuICAgICAgICBvcmlnaW5hbFZhbHVlLFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wYXRjaEZ1bmN0aW9uLFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wYXRjaFBhdGhcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMub25DaGFuZ2UuZW1pdChvcmlnaW5hbFZhbHVlKTtcclxuXHJcbiAgICAvL2NvbnNvbGUubG9nKHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wudmFsdWUpXHJcbiAgfVxyXG5cclxuICBDbGVhcigpIHtcclxuICAgIC8vIENsZWFyIHRoZSBzZWxlY3RlZCBpdGVtc1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgICB0aGlzLm9wdGlvbnMuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlU2VydmljZS5DaGFuZ2VWYWx1ZSh0aGlzLm9wdGlvbnMubmFtZSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoKTtcclxuICAgIGlmICh0aGlzLkRyb3Bkb3duVGVtcGxhdGVWYXJpYWJsZSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLkRyb3Bkb3duVGVtcGxhdGVWYXJpYWJsZS50b2dnbGUoKTtcclxuICAgICAgICB0aGlzLkRyb3Bkb3duVGVtcGxhdGVWYXJpYWJsZS5vcGVuKCk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgb25TZWxlY3RBbGwoaXRlbXMpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGl0ZW1zO1xyXG4gICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG5cclxuICB9XHJcbiAgb25EZXNlbGVjdChpdGVtcykge1xyXG4gICAgLy8gSWYgbm8gaXRlbXMgYXJlIHNlbGVjdGVkIGFmdGVyIGRlc2VsZWN0LCBjbGVhciBvcHRpb25zLnNlbGVjdGVkSXRlbXNcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCAmJiB0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLmludmFsaWQ7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBvbkRlc2VsZWN0QWxsKGl0ZW1zKSB7XHJcbiAgICAvLyBDbGVhciB0aGUgc2VsZWN0ZWQgaXRlbXMgd2hlbiBhbGwgYXJlIGRlc2VsZWN0ZWRcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5vcHRpb25zLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCAmJiB0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLmludmFsaWQ7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25Ecm9wRG93bkNsb3NlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICAodGhpcy5zZWxlY3RlZEl0ZW1zID09IHVuZGVmaW5lZCB8fCB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDApICYmXHJcbiAgICAgIHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkID09IHRydWVcclxuICAgICkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5pbnZhbGlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICByZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbihcclxuICAgICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbCxcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMsXHJcbiAgICAgIHRoaXMub3B0aW9uc1xyXG4gICAgKTtcclxuICB9O1xyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIGFkZFJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkUmVxdWlyZWRWYWxpZGF0aW9uKFxyXG4gICAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLFxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcyxcclxuICAgICAgdGhpcy5vcHRpb25zXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgcmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChjdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnJlbW92ZUN1c3RvbVZhbGlkYXRpb24oXHJcbiAgICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wsXHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLFxyXG4gICAgICBjdXN0b21WYWxpZGF0aW9uXHJcbiAgICApO1xyXG4gIH07XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBhZGRDdXN0b21WYWxpZGF0aW9uID0gKGN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkQ3VzdG9tVmFsaWRhdGlvbihcclxuICAgICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbCxcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMsXHJcbiAgICAgIGN1c3RvbVZhbGlkYXRpb25cclxuICAgICk7XHJcbiAgfTtcclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIGlzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmlzVmFsaWQodGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbCk7XHJcbiAgfTtcclxuXHJcbiAgLy9VcGRhdGUgaXRlbXMgKGRhdGEgc291cmNlKSBvZiBkcm9wIGRvd25cclxuICB1cGRhdGVEYXRhU291cmNlID0gKGRhdGFTb3VyY2U6IERyb3Bkb3duTGlzdEl0ZW1bXSkgPT4ge1xyXG4gICAgdGhpcy5vcHRpb25zLmRhdGFTb3VyY2UgPSBkYXRhU291cmNlO1xyXG4gIH07XHJcblxyXG5cclxufVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGJic2YtY29udHJvbCBiYnNmLWRyb3Bkb3duXCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxyXG4gIDxkaXYgW25nQ2xhc3NdPVwiKG9wdGlvbnMudmlld1R5cGU9PTEpPydiYnNmLXZlcnRpY2FsJzonYmJzZi1ob3Jpem9udGFsJ1wiPlxyXG4gICAgPCEtLWxhYmVsLS0+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCIhb3B0aW9ucy5oaWRlTGFiZWxcIiBjbGFzcz1cImJic2YtbGFiZWwge3tvcHRpb25zLmxhYmVsRXh0cmFDbGFzc2VzfX1cIj5cclxuICAgICAge3tvcHRpb25zLmxhYmVsVmFsdWV9fVxyXG4gICAgICA8IS0tQXN0ZXJpc2stLT5cclxuICAgICAgPHNwYW4gKm5nSWY9XCIoKG9wdGlvbnMuc2hvd0FzdGVyaXNrJiZvcHRpb25zLmlzUmVxdWlyZWQpfHwob3B0aW9ucy5pc1JlcXVpcmVkKSkmJiFvcHRpb25zLmlzUmVhZG9ubHlcIlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1kYW5nZXJcIiBhcmlhLXJlcXVpcmVkPVwidHJ1ZVwiPio8L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYmJzZi1pbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgPCEtLWlucHV0IGVuYWJsZWQgYm9vdHN0cmFwIHNlbGVjdC0tPlxyXG4gICAgICA8bmctc2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgKm5nSWY9XCJvcHRpb25zLmRpc2FibGVCb290c3RyYXBTZWxlY3Q9PWZhbHNlJiYhb3B0aW9ucy5pc1JlYWRvbmx5XCJcclxuICAgICAgICBbYXR0ci5kaXJdPVwib3B0aW9ucy5mb3JjZURpcmVjdGlvbj09Mj8ncnRsJzonYXV0bydcIiBbYmluZFZhbHVlXT1cIm9wdGlvbnMuaXRlbVRlbXBsZXRrZXlcIiBncm91cEJ5PVwiZ3JvdXBcIlxyXG4gICAgICAgIFtiaW5kTGFiZWxdPVwib3B0aW9ucy5pdGVtVGVtcGxldHZhbHVlXCIgW2l0ZW1zXT1cIm9wdGlvbnMuZGF0YVNvdXJjZVwiIFtub3RGb3VuZFRleHRdPVwib3B0aW9ucy5ub3RGb3VuZFRleHRcIlxyXG4gICAgICAgIFttYXhTZWxlY3RlZEl0ZW1zXT1cIm9wdGlvbnMubGltaXRTZWxlY3Rpb25cIiBbc2VhcmNoYWJsZV09XCJvcHRpb25zLmFsbG93U2VhcmNoRmlsdGVyXCJcclxuICAgICAgICBbbXVsdGlwbGVdPVwiIW9wdGlvbnMuc2luZ2xlU2VsZWN0aW9uXCIgW3JlYWRvbmx5XT1cIm9wdGlvbnMuaXNEaXNhYmxlZFwiIFtjbGVhcmFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e29wdGlvbnMucGxhY2Vob2xkZXJ9fVwiIGlkPVwie3tvcHRpb25zLm5hbWV9fVwiIFtzZWxlY3RhYmxlR3JvdXBdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3NlbGVjdGFibGVHcm91cEFzTW9kZWxdPVwiZmFsc2VcIiBmb3JtQ29udHJvbE5hbWU9XCJ7e29wdGlvbnMubmFtZX19XCIgWyhuZ01vZGVsKV09XCJvcHRpb25zLnNlbGVjdGVkSXRlbXNcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwib25JdGVtU2VsZWN0KClcIiAoY2xlYXIpPVwiQ2xlYXIoKVwiXHJcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuaW52YWxpZCAmJiBkcm9wZG93bkxpc3RGb3JtQ29udHJvbC50b3VjaGVkXCJcclxuICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJvcHRpb25zLnNpbmdsZVNlbGVjdGlvbiAgPyB0cnVlIDogZmFsc2VcIj5cclxuICAgICAgICA8IS0tTm8gY2hlY2tib3gsIEN1c3RvbWl6ZSBpdGVtIHRlbXBsYXRlLS0+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiIW9wdGlvbnMuc2hvd0NoZWNrYm94XCIgbmctb3B0aW9uLXRtcCBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtaXRlbSQ9XCJpdGVtJFwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJiYnNmLWxhYmVsXCIgdGl0bGU9XCJ7e2l0ZW0uZGlzYWJsZWQgPyBvcHRpb25zLmRpc2FibGVkSXRlbXNUb29sdGlwVmFsdWUgOiAnJ319XCJcclxuICAgICAgICAgICAgaWQ9e3tpdGVtLmtleX19Pnt7aXRlbS52YWx1ZX19PC9sYWJlbD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwhLS1jaGVja2JveCwgQ3VzdG9taXplIGl0ZW0gdGVtcGxhdGUtLT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJvcHRpb25zLnNob3dDaGVja2JveFwiIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWl0ZW0kPVwiaXRlbSRcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIiBiYnNmLWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJiYnNmLWNoZWNrYm94LWlucHV0XCIgaWQ9XCJpdGVtLXt7aW5kZXh9fVwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIgW25nTW9kZWxdPVwiaXRlbSQuc2VsZWN0ZWRcIiAvPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdWJ0ZXh0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmJzZi1sYWJlbFwiIGlkPXt7aXRlbS5rZXl9fT57e2l0ZW0udmFsdWV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8IS0tSGFzIGdyb3VwLCBDdXN0b21pemUgZ3JvdXAgdGVtcGxhdGUtLT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJvcHRpb25zLmhhc0dyb3VwXCIgbmctb3B0Z3JvdXAtdG1wIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pdGVtJD1cIml0ZW0kXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJiYnNmLWxhYmVsIGJic2YtZ3JvdXAtbGFiZWxcIj57e2l0ZW0uZ3JvdXB9fTwvbGFiZWw+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgIDwvbmctc2VsZWN0PlxyXG5cclxuICAgICAgPCEtLWlucHV0IGRpc2FibGVkIGJvb3RzdHJhcCBzZWxlY3QtLT5cclxuICAgICAgPHNlbGVjdCAqbmdJZj1cIm9wdGlvbnMuZGlzYWJsZUJvb3RzdHJhcFNlbGVjdCYmIW9wdGlvbnMuaXNSZWFkb25seVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICBbYXR0ci5kaXJdPVwib3B0aW9ucy5mb3JjZURpcmVjdGlvbj09Mj8ncnRsJzonYXV0bydcIiAoY2hhbmdlKT1cIm9uSXRlbVNlbGVjdCgpXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cIm9wdGlvbnMuc2VsZWN0ZWRJdGVtc1wiIFtkaXNhYmxlZF09XCJvcHRpb25zLmlzRGlzYWJsZWRcIiBmb3JtQ29udHJvbE5hbWU9XCJ7e29wdGlvbnMubmFtZX19XCI+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiIGRpc2FibGVkPi0te3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwic2VsZWN0XCIpfX0tLTwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9ucy5kYXRhU291cmNlXCIgdmFsdWU9XCJ7e2l0ZW0ua2V5fX1cIiBbbmdWYWx1ZV09XCJpdGVtLmtleVwiPlxyXG4gICAgICAgICAge3tpdGVtLnZhbHVlfX1cclxuICAgICAgICA8L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDwhLS0gcmVhZG9ubHkgLS0+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJvcHRpb25zLmlzUmVhZG9ubHlcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZpZXdcIj57e2dldFNlbGVjdGVkSXRlbVZhbHVlKCl9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0ZXh0LWNvbnRhaW5lclwiICpuZ0lmPVwiIW9wdGlvbnMuaXNSZWFkb25seVwiPlxyXG4gICAgICAgIDwhLS0gTGFiZWxEZXNjcmlwdGlvbi0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWNvbnRyb2wtZGVzY1wiICpuZ0lmPVwib3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIT1udWxsXCI+e3tvcHRpb25zLmxhYmVsRGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgICAgIDwhLS0gcmVxdWlyZWRUZXh0LS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJic2YtdmFsaWRhdGlvblwiICpuZ0lmPVwiKGRyb3Bkb3duTGlzdEZvcm1Db250cm9sLmludmFsaWQgJiYgZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wudG91Y2hlZClcIj5cclxuICAgICAgICAgIHt7Z2V0RXJyb3JWYWxpZGF0aW9uKGRyb3Bkb3duTGlzdEZvcm1Db250cm9sLmVycm9yc3xrZXl2YWx1ZSl9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cIihncm91cC52YWxpZCYmZ3JvdXAuZGlydHkmJmdyb3VwLnRvdWNoZWQgKXx8KGdyb3VwLnVudG91Y2hlZCYmZ3JvdXAuaW52YWxpZCYmZ3JvdXAuZGlydHkpIFwiPlxyXG4gICAgICAgIHt7cmVzZXRFcnJvcigpfX08L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcGRvd25MaXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Ecm9wZG93bkxpc3QvRHJvcGRvd25MaXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Ecm9wZG93bkxpc3QvRHJvcGRvd25MaXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFvRSxNQUFNLGdCQUFnQixDQUFDO0FBTzNILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7OztBQU9uRSxNQUFNLE9BQU8scUJBQXFCO2FBQ3pCLDJCQUFzQixHQUFHLElBQUksQUFBUCxDQUFRO0lBQ3JDLDRDQUE0QztJQUM1QyxZQUFvQixlQUE2QyxFQUFVLGNBQThCLEVBQXNCLGdCQUFrQyxFQUFTLHVCQUEyQyxFQUM1TSxjQUE4QixFQUFVLHdCQUFrRCxFQUN6RixjQUE4QjtRQUZwQixvQkFBZSxHQUFmLGVBQWUsQ0FBOEI7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFTLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBb0I7UUFDNU0sbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUN6RixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFReEMscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRXRCLGlCQUFZLEdBQVUsRUFBRSxD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dUJBQXVCLENBQUMsT0FBTyxDQUFDO1NBRXRDO0lBQ0gsQ0FBQzsrR0E1S1UscUJBQXFCO21HQUFyQixxQkFBcUIsc05DZmxDLDY1SUF3RU07OzRGRHpETyxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBRUUsbUJBQW1COzswQkFNK0UsUUFBUTsyS0FLM0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBTUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXBEaXJlY3RpdmUsIENvbnRyb2xDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9Ecm9wZG93bk9wdGlvbnMnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkxpc3RJdGVtIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9Ecm9wZG93bkxpc3RJdGVtJztcclxuaW1wb3J0IHsgT25QYWdpbmdGaWx0ZXJzQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9PblBhZ2luZ0ZpbHRlcnNDaGFuZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXR0aW5ncyB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9HbG9iYWxTZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9yY2VEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvRm9yY2VEaXJlY3Rpb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ0JCU0YtRHJvcGRvd25MaXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vRHJvcGRvd25MaXN0LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9uQ2hhbmdlU2VydmljZTogT25QYWdpbmdGaWx0ZXJzQ2hhbmdlU2VydmljZSwgcHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHksIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lciwgcHVibGljIGRyb3Bkb3duTGlzdENvbnRyb2xIb3N0OiBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcbiAgICBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxTZXR0aW5nczogR2xvYmFsU2V0dGluZ3MpIHtcclxuICAgIERyb3Bkb3duTGlzdENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gIH1cclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBASW5wdXQoKSBEcm9wZG93blRlbXBsYXRlVmFyaWFibGU6IGFueTtcclxuXHJcbiAgZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBkcm9wZG93blNldHRpbmdzID0ge307XHJcbiAgc2VsZWN0ZWRJdGVtczogRHJvcGRvd25MaXN0SXRlbVtdO1xyXG4gIFNlbGVjdGVkTGlzdDogYW55W10gPSBbXTtcclxuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbnRyb2xDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgdmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuICB0ZXh0RGlyO1xyXG4gIEZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb247XHJcblxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZm9yY2VEaXJlY3Rpb24pXHJcbiAgICAgIHRoaXMudGV4dERpciA9IHRoaXMub3B0aW9ucy5mb3JjZURpcmVjdGlvbiA9PSAyID8gJ3J0bCcgOiAnbHRyJztcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy50ZXh0RGlyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgPT0gJ2FyJyA/ICdydGwnIDogJ2x0cic7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlO1xyXG4gICAgdGhpcy5TZWxlY3RlZExpc3QgPSB0aGlzLm9wdGlvbnMuc2VsZWN0ZWRJdGVtcztcclxuICAgIHRoaXMuZHJvcGRvd25TZXR0aW5ncyA9IHtcclxuICAgICAgc2luZ2xlU2VsZWN0aW9uOiB0aGlzLm9wdGlvbnMuc2luZ2xlU2VsZWN0aW9uLFxyXG4gICAgICB0ZXh0OiBcIlNlbGVjdFwiLFxyXG4gICAgICBzZWxlY3RBbGxUZXh0OiAnU2VsZWN0IEFsbCcsXHJcbiAgICAgIHVuU2VsZWN0QWxsVGV4dDogJ1VuU2VsZWN0IEFsbCcsXHJcbiAgICAgIGVuYWJsZVNlYXJjaEZpbHRlcjogdGhpcy5vcHRpb25zLmFsbG93U2VhcmNoRmlsdGVyLFxyXG4gICAgICBjbGFzc2VzOiB0aGlzLm9wdGlvbnMuY2xhc3NlcyxcclxuICAgICAgZGlzYWJsZWQ6IHRoaXMub3B0aW9ucy5pc0Rpc2FibGVkLFxyXG4gICAgICBzaG93Q2hlY2tib3g6IHRoaXMub3B0aW9ucy5zaG93Q2hlY2tib3gsXHJcbiAgICAgIGVuYWJsZUNoZWNrQWxsOiB0aGlzLm9wdGlvbnMuZW5hYmxlQ2hlY2tBbGwsXHJcbiAgICAgIGl0ZW1zU2hvd0xpbWl0OiB0aGlzLm9wdGlvbnMuaXRlbXNTaG93TGltaXQsXHJcbiAgICAgIGFsbG93U2VhcmNoRmlsdGVyOiB0aGlzLm9wdGlvbnMuYWxsb3dTZWFyY2hGaWx0ZXIsXHJcbiAgICAgIHNob3dTZWxlY3RlZEl0ZW1zQXRUb3A6IHRydWUsXHJcbiAgICAgIGxpbWl0U2VsZWN0aW9uOiB0aGlzLm9wdGlvbnMubGltaXRTZWxlY3Rpb24sXHJcbiAgICAgIHNlYXJjaFBsYWNlaG9sZGVyVGV4dDogdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyLFxyXG4gICAgICBsYWJlbEtleTogXCJ2YWx1ZVwiLFxyXG4gICAgICBwcmltYXJ5S2V5OiBcImtleVwiXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMubmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sID0gdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLm9wdGlvbnMubmFtZV07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuXHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMudmlld1R5cGUpXHJcbiAgICAgIHRoaXMub3B0aW9ucy52aWV3VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3Mudmlld1R5cGU7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLmN1c3RvbVZhbGlkYXRpb247XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5sYWJlbEtleSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5sYWJlbEtleSAhPSBcIlwiKVxyXG4gICAgICB0aGlzLm9wdGlvbnMubGFiZWxWYWx1ZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMubGFiZWxLZXkpO1xyXG5cclxuICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRyb3Bkb3duTGlzdENvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5ncm91cC5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zZXRBdHRyaWJ1dGVGb3JDb250cm9sKHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLnJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfTtcclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuICAgIGlmICh0aGlzLm1hcmtBbGxBc1RvdWNoZWQgJiYgdGhpcy5ncm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZEl0ZW1WYWx1ZSgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2VsZWN0ZWRJdGVtcykge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnNpbmdsZVNlbGVjdGlvbilcclxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmRhdGFTb3VyY2UuZmlsdGVyKGl0ZW0gPT4gaXRlbVt0aGlzLm9wdGlvbnMuaXRlbVRlbXBsZXRrZXldID09IHRoaXMub3B0aW9ucy5zZWxlY3RlZEl0ZW1zKVswXVt0aGlzLm9wdGlvbnMuaXRlbVRlbXBsZXR2YWx1ZV07XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmRhdGFTb3VyY2UuZmlsdGVyKGl0ZW0gPT4gdGhpcy5vcHRpb25zLnNlbGVjdGVkSXRlbXMuaW5jbHVkZXMoaXRlbVt0aGlzLm9wdGlvbnMuaXRlbVRlbXBsZXRrZXldKSkubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLm9wdGlvbnMuaXRlbVRlbXBsZXR2YWx1ZV0pO1xyXG4gICAgfSBlbHNlXHJcbiAgICAgIHJldHVybiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ05BJyk7XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1TZWxlY3QoKSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlU2VydmljZS5DaGFuZ2VWYWx1ZSh0aGlzLm9wdGlvbnMubmFtZSk7XHJcbiAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IHRoaXMub3B0aW9ucy5zZWxlY3RlZEl0ZW1zO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5wYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5wYXRjaFBhdGggJiYgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLm5hbWUpLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSwgdGhpcy5vcHRpb25zLnBhdGNoRnVuY3Rpb24sIHRoaXMub3B0aW9ucy5wYXRjaFBhdGgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KG9yaWdpbmFsVmFsdWUpO1xyXG4gICAgLy9jb25zb2xlLmxvZyh0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLnZhbHVlKVxyXG4gIH1cclxuXHJcbiAgQ2xlYXIoKSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKFwiQ2xlYXJcIilcclxuICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIHRoaXMub25DaGFuZ2VTZXJ2aWNlLkNoYW5nZVZhbHVlKHRoaXMub3B0aW9ucy5uYW1lKTtcclxuICAgIHRoaXMub25DaGFuZ2UuZW1pdCgpO1xyXG4gICAgaWYgKHRoaXMuRHJvcGRvd25UZW1wbGF0ZVZhcmlhYmxlKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuRHJvcGRvd25UZW1wbGF0ZVZhcmlhYmxlLnRvZ2dsZSgpO1xyXG4gICAgICAgIHRoaXMuRHJvcGRvd25UZW1wbGF0ZVZhcmlhYmxlLm9wZW4oKTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uU2VsZWN0QWxsKGl0ZW1zKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBpdGVtcztcclxuICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICB9XHJcbiAgb25EZXNlbGVjdChpdGVtcykge1xyXG4gICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gICAgaWYgKCh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDApICYmIHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuaW52YWxpZDtcclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBvbkRlc2VsZWN0QWxsKGl0ZW1zKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICBpZiAoKHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCkgJiYgdGhpcy5vcHRpb25zLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5pbnZhbGlkO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRHJvcERvd25DbG9zZSgpIHtcclxuICAgIGlmICgodGhpcy5zZWxlY3RlZEl0ZW1zID09IHVuZGVmaW5lZCB8fCB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDApICYmIHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgdGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuaW52YWxpZDtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIHJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkucmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH07XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgYWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5hZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5kcm9wZG93bkxpc3RGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucyk7XHJcbiAgfTtcclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICByZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKGN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkucmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgY3VzdG9tVmFsaWRhdGlvbik7XHJcbiAgfTtcclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIGFkZEN1c3RvbVZhbGlkYXRpb24gPSAoY3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5hZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBjdXN0b21WYWxpZGF0aW9uKTtcclxuICB9O1xyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgaXNWYWxpZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuaXNWYWxpZCh0aGlzLmRyb3Bkb3duTGlzdEZvcm1Db250cm9sKTtcclxuICB9O1xyXG5cclxuICAvL1VwZGF0ZSBpdGVtcyAoZGF0YSBzb3VyY2UpIG9mIGRyb3AgZG93blxyXG4gIHVwZGF0ZURhdGFTb3VyY2UgPSAoZGF0YVNvdXJjZTogRHJvcGRvd25MaXN0SXRlbVtdKSA9PiB7XHJcbiAgICB0aGlzLm9wdGlvbnMuZGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XHJcbiAgfTtcclxuXHJcblxyXG59XHJcblxyXG5cclxuXHJcblxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgYmJzZi1jb250cm9sIGJic2YtZHJvcGRvd25cIiBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XHJcbiAgPGRpdiBbbmdDbGFzc109XCIob3B0aW9ucy52aWV3VHlwZT09MSk/J2Jic2YtdmVydGljYWwnOidiYnNmLWhvcml6b250YWwnXCI+XHJcbiAgICA8IS0tbGFiZWwtLT5cclxuICAgIDxsYWJlbCAqbmdJZj1cIiFvcHRpb25zLmhpZGVMYWJlbFwiIGNsYXNzPVwiYmJzZi1sYWJlbCB7e29wdGlvbnMubGFiZWxFeHRyYUNsYXNzZXN9fVwiPlxyXG4gICAgICB7e29wdGlvbnMubGFiZWxWYWx1ZX19XHJcbiAgICAgIDwhLS1Bc3Rlcmlzay0tPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cIigob3B0aW9ucy5zaG93QXN0ZXJpc2smJm9wdGlvbnMuaXNSZXF1aXJlZCl8fChvcHRpb25zLmlzUmVxdWlyZWQpKSYmIW9wdGlvbnMuaXNSZWFkb25seVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiIGFyaWEtcmVxdWlyZWQ9XCJ0cnVlXCI+Kjwvc3Bhbj5cclxuICAgIDwvbGFiZWw+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICA8IS0taW5wdXQgZW5hYmxlZCBib290c3RyYXAgc2VsZWN0LS0+XHJcbiAgICAgIDxuZy1zZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAqbmdJZj1cIm9wdGlvbnMuZGlzYWJsZUJvb3RzdHJhcFNlbGVjdD09ZmFsc2UmJiFvcHRpb25zLmlzUmVhZG9ubHlcIlxyXG4gICAgICAgIFthdHRyLmRpcl09XCJvcHRpb25zLmZvcmNlRGlyZWN0aW9uPT0yPydydGwnOidhdXRvJ1wiIFtiaW5kVmFsdWVdPVwib3B0aW9ucy5pdGVtVGVtcGxldGtleVwiIGdyb3VwQnk9XCJncm91cFwiXHJcbiAgICAgICAgW2JpbmRMYWJlbF09XCJvcHRpb25zLml0ZW1UZW1wbGV0dmFsdWVcIiBbaXRlbXNdPVwib3B0aW9ucy5kYXRhU291cmNlXCIgW25vdEZvdW5kVGV4dF09XCJvcHRpb25zLm5vdEZvdW5kVGV4dFwiXHJcbiAgICAgICAgW21heFNlbGVjdGVkSXRlbXNdPVwib3B0aW9ucy5saW1pdFNlbGVjdGlvblwiIFtzZWFyY2hhYmxlXT1cIm9wdGlvbnMuYWxsb3dTZWFyY2hGaWx0ZXJcIlxyXG4gICAgICAgIFttdWx0aXBsZV09XCIhb3B0aW9ucy5zaW5nbGVTZWxlY3Rpb25cIiBbcmVhZG9ubHldPVwib3B0aW9ucy5pc0Rpc2FibGVkXCIgW2NsZWFyYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7b3B0aW9ucy5wbGFjZWhvbGRlcn19XCIgaWQ9XCJ7e29wdGlvbnMubmFtZX19XCIgW3NlbGVjdGFibGVHcm91cF09XCJ0cnVlXCJcclxuICAgICAgICBbc2VsZWN0YWJsZUdyb3VwQXNNb2RlbF09XCJmYWxzZVwiIGZvcm1Db250cm9sTmFtZT1cInt7b3B0aW9ucy5uYW1lfX1cIiBbKG5nTW9kZWwpXT1cIm9wdGlvbnMuc2VsZWN0ZWRJdGVtc1wiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkl0ZW1TZWxlY3QoKVwiIChjbGVhcik9XCJDbGVhcigpXCJcclxuICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJkcm9wZG93bkxpc3RGb3JtQ29udHJvbC5pbnZhbGlkICYmIGRyb3Bkb3duTGlzdEZvcm1Db250cm9sLnRvdWNoZWRcIlxyXG4gICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cIm9wdGlvbnMuc2luZ2xlU2VsZWN0aW9uICA/IHRydWUgOiBmYWxzZVwiPlxyXG4gICAgICAgIDwhLS1ObyBjaGVja2JveCwgQ3VzdG9taXplIGl0ZW0gdGVtcGxhdGUtLT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCIhb3B0aW9ucy5zaG93Q2hlY2tib3hcIiBuZy1vcHRpb24tdG1wIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pdGVtJD1cIml0ZW0kXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJic2YtbGFiZWxcIiB0aXRsZT1cInt7aXRlbS5kaXNhYmxlZCA/IG9wdGlvbnMuZGlzYWJsZWRJdGVtc1Rvb2x0aXBWYWx1ZSA6ICcnfX1cIlxyXG4gICAgICAgICAgICBpZD17e2l0ZW0ua2V5fX0+e3tpdGVtLnZhbHVlfX08L2xhYmVsPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPCEtLWNoZWNrYm94LCBDdXN0b21pemUgaXRlbSB0ZW1wbGF0ZS0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIm9wdGlvbnMuc2hvd0NoZWNrYm94XCIgbmctb3B0aW9uLXRtcCBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtaXRlbSQ9XCJpdGVtJFwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGJic2YtY2hlY2tib3hcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJic2YtaW5wdXQtY29udGFpbmVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJic2YtY2hlY2tib3gtaW5wdXRcIiBpZD1cIml0ZW0te3tpbmRleH19XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIiBbbmdNb2RlbF09XCJpdGVtJC5zZWxlY3RlZFwiIC8+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN1YnRleHQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJiYnNmLWxhYmVsXCIgaWQ9e3tpdGVtLmtleX19Pnt7aXRlbS52YWx1ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwhLS1IYXMgZ3JvdXAsIEN1c3RvbWl6ZSBncm91cCB0ZW1wbGF0ZS0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIm9wdGlvbnMuaGFzR3JvdXBcIiBuZy1vcHRncm91cC10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWl0ZW0kPVwiaXRlbSRcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJic2YtbGFiZWwgYmJzZi1ncm91cC1sYWJlbFwiPnt7aXRlbS5ncm91cH19PC9sYWJlbD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPC9uZy1zZWxlY3Q+XHJcblxyXG4gICAgICA8IS0taW5wdXQgZGlzYWJsZWQgYm9vdHN0cmFwIHNlbGVjdC0tPlxyXG4gICAgICA8c2VsZWN0ICpuZ0lmPVwib3B0aW9ucy5kaXNhYmxlQm9vdHN0cmFwU2VsZWN0JiYhb3B0aW9ucy5pc1JlYWRvbmx5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgIFthdHRyLmRpcl09XCJvcHRpb25zLmZvcmNlRGlyZWN0aW9uPT0yPydydGwnOidhdXRvJ1wiIChjaGFuZ2UpPVwib25JdGVtU2VsZWN0KClcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwib3B0aW9ucy5zZWxlY3RlZEl0ZW1zXCIgW2Rpc2FibGVkXT1cIm9wdGlvbnMuaXNEaXNhYmxlZFwiIGZvcm1Db250cm9sTmFtZT1cInt7b3B0aW9ucy5uYW1lfX1cIj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgZGlzYWJsZWQ+LS17e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJzZWxlY3RcIil9fS0tPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zLmRhdGFTb3VyY2VcIiB2YWx1ZT1cInt7aXRlbS5rZXl9fVwiIFtuZ1ZhbHVlXT1cIml0ZW0ua2V5XCI+XHJcbiAgICAgICAgICB7e2l0ZW0udmFsdWV9fVxyXG4gICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgICAgPCEtLSByZWFkb25seSAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvbnMuaXNSZWFkb25seVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmlld1wiPnt7Z2V0U2VsZWN0ZWRJdGVtVmFsdWUoKX19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN1YnRleHQtY29udGFpbmVyXCIgKm5nSWY9XCIhb3B0aW9ucy5pc1JlYWRvbmx5XCI+XHJcbiAgICAgICAgPCEtLSBMYWJlbERlc2NyaXB0aW9uLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJic2YtY29udHJvbC1kZXNjXCIgKm5nSWY9XCJvcHRpb25zLmxhYmVsRGVzY3JpcHRpb24hPW51bGxcIj57e29wdGlvbnMubGFiZWxEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgICAgPCEtLSByZXF1aXJlZFRleHQtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmJzZi12YWxpZGF0aW9uXCIgKm5nSWY9XCIoZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuaW52YWxpZCAmJiBkcm9wZG93bkxpc3RGb3JtQ29udHJvbC50b3VjaGVkKVwiPlxyXG4gICAgICAgICAge3tnZXRFcnJvclZhbGlkYXRpb24oZHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuZXJyb3JzfGtleXZhbHVlKX19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiKGdyb3VwLnZhbGlkJiZncm91cC5kaXJ0eSYmZ3JvdXAudG91Y2hlZCApfHwoZ3JvdXAudW50b3VjaGVkJiZncm91cC5pbnZhbGlkJiZncm91cC5kaXJ0eSkgXCI+XHJcbiAgICAgICAge3tyZXNldEVycm9yKCl9fTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|