@energycap/components 0.39.25-ECAP-26539-Item-Picker-Select-All.20240916-1615 → 0.39.25-ECAP-26539-Item-Picker-Select-All.20240917-0832
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.
@@ -137,6 +137,7 @@ export class ItemPickerComponent {
|
|
137
137
|
});
|
138
138
|
this.selectedItems = Array.from(this.selectionContext.selectedItemsMap.values());
|
139
139
|
this.selectionContext.isSelectingAllItems = false;
|
140
|
+
this.updateAvailableCheckboxText();
|
140
141
|
}
|
141
142
|
/**
|
142
143
|
* Called when the remove item button is clicked for a selected item
|
@@ -155,6 +156,7 @@ export class ItemPickerComponent {
|
|
155
156
|
this.selectionContext.selectedItemsMap.delete(removeItem.id);
|
156
157
|
this.selectedItems = Array.from(this.selectionContext.selectedItemsMap.values());
|
157
158
|
}
|
159
|
+
this.updateAvailableCheckboxText();
|
158
160
|
}
|
159
161
|
/**
|
160
162
|
* Click handler for the select all items button
|
@@ -220,7 +222,10 @@ export class ItemPickerComponent {
|
|
220
222
|
});
|
221
223
|
}
|
222
224
|
updateAvailableCheckboxText() {
|
223
|
-
if (
|
225
|
+
if (this.selectionContext.isSelectingAllItems) {
|
226
|
+
this.availableCheckboxText = this.translateService.instant('AllItemPickerItemsSelected_SC', { count: this.totalItemsBeforePaging, itemName: this.itemName });
|
227
|
+
}
|
228
|
+
else {
|
224
229
|
const checkedCount = this.selectionContext.rowCheckboxes.controls.map(c => c.value).filter(v => v).length;
|
225
230
|
if (checkedCount > 0) {
|
226
231
|
this.availableCheckboxText = this.translateService.instant('CountSelected_TC', { count: checkedCount });
|
@@ -229,9 +234,6 @@ export class ItemPickerComponent {
|
|
229
234
|
this.availableCheckboxText = '';
|
230
235
|
}
|
231
236
|
}
|
232
|
-
else {
|
233
|
-
this.availableCheckboxText = this.translateService.instant('AllItemPickerItemsSelected_SC', { count: this.totalItemsBeforePaging, itemName: this.itemName });
|
234
|
-
}
|
235
237
|
}
|
236
238
|
/**
|
237
239
|
* Watch to be told if changes to the map were made outside of the component and if so update
|
@@ -315,4 +317,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
315
317
|
type: ViewChild,
|
316
318
|
args: ['defaultSelectedItemTemplate', { static: true }]
|
317
319
|
}] } });
|
318
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2l0ZW0tcGlja2VyL2l0ZW0tcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9pdGVtLXBpY2tlci9pdGVtLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNkMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZHLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl6RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMvRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbURBQW1ELENBQUM7Ozs7Ozs7Ozs7QUFlM0UsQ0FBQztBQUVGLE1BQU0sT0FBTywyQkFBK0IsU0FBUSx5QkFBeUI7SUFBN0U7O1FBQ0UscUZBQXFGO1FBQzlFLHFCQUFnQixHQUErQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWhFOzs7V0FHRztRQUNJLDRCQUF1QixHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTlEOztXQUVHO1FBQ2Esb0NBQStCLEdBQVksSUFBSSxDQUFDO1FBRWhFOzs7V0FHRztRQUNJLHdCQUFtQixHQUFZLEtBQUssQ0FBQztJQUM5QyxDQUFDO0NBQUE7QUFPRCxNQUFNLE9BQU8sbUJBQW1CO0lBc0c5QixZQUNVLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBckc1Qyx3R0FBd0c7UUFDeEYsT0FBRSxHQUFZLEVBQUUsQ0FB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SSxDQUFDLDBCQUEwQixDQUFDO1NBQ3pFO2FBQU07WUFDTCxJQUFJLENBQUMsZ0NBQWdDLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDO1NBQzFFO0lBQ0gsQ0FBQzs7Z0hBL1RVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDJqQ0NwRGhDLDZvUkEyS2M7MkZEdkhELG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxnQkFBZ0I7dUdBT1YsRUFBRTtzQkFBakIsS0FBSztnQkFHVSxjQUFjO3NCQUE3QixLQUFLO2dCQUdVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBR1UsUUFBUTtzQkFBdkIsS0FBSztnQkFHVSxTQUFTO3NCQUF4QixLQUFLO2dCQUdVLDZCQUE2QjtzQkFBNUMsS0FBSztnQkFHVSwyQkFBMkI7c0JBQTFDLEtBQUs7Z0JBR1UsMEJBQTBCO3NCQUF6QyxLQUFLO2dCQUdVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBR1UsUUFBUTtzQkFBdkIsS0FBSztnQkFHVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBS1UsYUFBYTtzQkFBNUIsS0FBSztnQkFNVSxzQkFBc0I7c0JBQXJDLEtBQUs7Z0JBS1Usb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUdVLHFCQUFxQjtzQkFBcEMsS0FBSztnQkEyQ2lFLDhCQUE4QjtzQkFBcEcsU0FBUzt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ1EsNEJBQTRCO3NCQUFoRyxTQUFTO3VCQUFDLDhCQUE4QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDUywyQkFBMkI7c0JBQTlGLFNBQVM7dUJBQUMsNkJBQTZCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgVGFibGVTZWFyY2hSZXN1bHRzIH0gZnJvbSAnLi4vLi4vZGlzcGxheS90YWJsZS9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhZ2luZ0luZm8gfSBmcm9tICcuLi8uLi9kaXNwbGF5L3RhYmxlL3RhYmxlLXBhZ2luYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVTZWxlY3RhYmxlUm93Q29udGV4dCB9IGZyb20gJy4uLy4uL2Rpc3BsYXkvdGFibGUvdGFibGUtc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uLy4uL2Rpc3BsYXkvdmlldy1vdmVybGF5L3ZpZXctb3ZlcmxheS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJy4uL21lbnUvbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBpY2tlckl0ZW08VFZhbHVlID0gYW55LCBTSXRlbXMgPSBhbnk+IGV4dGVuZHMgTWVudUl0ZW0ge1xyXG4gIGlkOiBzdHJpbmc7XHJcblxyXG4gIC8qKiBXaGVuIHNldCB0byB0cnVlIHRoZSBhdmFpbGFibGUgaXRlbSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHNlbGVjdGVkIGxpc3QgKi9cclxuICBkZWZhdWx0U2VsZWN0ZWQ/OiBib29sZWFuO1xyXG5cclxuICAvKiogV2hlbiBzZXQgdG8gdHJ1ZSwgdGhlIGl0ZW0gd2lsbCBub3QgYmUgYWxsb3dlZCB0byBiZSByZW1vdmVkIGZyb20gdGhlIHNlbGVjdGVkIGxpc3QgKi9cclxuICBwcmV2ZW50UmVtb3ZlPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqIFJlZGVmaW5pbmcgdG8gZ2V0IHRoZSB0eXBpbmcgKi9cclxuICB2YWx1ZTogVFZhbHVlO1xyXG59O1xyXG5cclxuZXhwb3J0IGNsYXNzIEl0ZW1QaWNrZXJTZWxlY3RhYmxlQ29udGV4dDxUPiBleHRlbmRzIFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQge1xyXG4gIC8qKiBpZC92YWx1ZSBtYXAgb2YgdGhlIHNlbGVjdGVkIGl0ZW1zLiBVc2VkIGZvciBrZWVwaW5nIHRyYWNrIG9mIHdoYXQgaXMgc2VsZWN0ZWQgKi9cclxuICBwdWJsaWMgc2VsZWN0ZWRJdGVtc01hcDogTWFwPHN0cmluZywgUGlja2VySXRlbTxUPj4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEdpdmVzIGEgd2F5IHRvIHRlbGwgdGhlIHBpY2tlciBjb21wb25lbnQgdGhhdCB0aGUgbWFwIHdhcyBtb2RpZmllZCBleHRlcm5hbGx5IGFuZCB0byB1cGRhdGVcclxuICAgKiB0aGUgYXZhaWxhYmxlL3NlbGVjdGVkIGxpc3RzXHJcbiAgICovXHJcbiAgcHVibGljIHNlbGVjdGVkSXRlbXNNYXBDaGFuZ2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQWR2YW5jZWRSb3dDbGlja0JlaGF2aW9yIGlzIGRpc2FibGVkIGZvciBJdGVtUGlja2VyLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBkaXNhYmxlQWR2YW5jZWRSb3dDbGlja0JlaGF2aW9yOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqIFdoZW4gdHJ1ZSB0aGUgdXNlciBoYXMgb3B0ZWQgdG8gc2VsZWN0IGFsbCBpdGVtcyBhY3Jvc3MgYWxsIHBhZ2VzLiBEdWUgdG8gYXBpIHBhZ2luYXRpb25cclxuICAgKiAgd2UgZG9uJ3QgaGF2ZSBhbGwgb2YgdGhlIGl0ZW1zIGxvY2FsbHksIHNvIHRoZSBob3N0IHdpbGwgbmVlZCB0byB0ZWxsIHRoZSBBUEkgdG8gb3BlcmF0ZSBvbiBhbGxcclxuICAgKiAgdmlhIGFwaSBmaWx0ZXJzIG9yIG90aGVyIG1lYW5zLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBpc1NlbGVjdGluZ0FsbEl0ZW1zOiBib29sZWFuID0gZmFsc2U7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtaXRlbS1waWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pdGVtLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaXRlbS1waWNrZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSXRlbVBpY2tlckNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG5cclxuICAvKiogSWRlbnRpZmllciBmb3IgdGhlIGNvbXBvbmVudC4gVGhpcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBiZWdpbm5pbmcgb2YgYWxsIGludGVybmFsIGFjdGlvbiBlbGVtZW50cyAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpZD86IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogVGl0bGUgZGlzcGxheWVkIGFib3ZlIHRoZSBhdmFpbGFibGUgaXRlbXMgdGFibGUgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgYXZhaWxhYmxlVGl0bGU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogVGl0bGUgZGlzcGxheWVkIGFib3ZlIHRoZSBzZWxlY3RlZCBpdGVtcyBsaXN0ICovXHJcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkVGl0bGU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogVGhlIHR5cGUgb2YgaXRlbSBiZWluZyBzZWxlY3RlZC4gRXguIE1ldGVycywgQWRkcmVzc2VzICovXHJcbiAgQElucHV0KCkgcHVibGljIGl0ZW1OYW1lOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqIEZvcm0gZ3JvdXAgdGhhdCBpcyBnaXZlbiB0byB0aGUgaW50ZXJuYWwgU2VhcmNoYWJsZSBUYWJsZSAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtTW9kZWw/OiBVbnR5cGVkRm9ybUdyb3VwO1xyXG5cclxuICAvKiogVGVtcGxhdGUgZm9yIHdoZW4gYSBjdXN0b20gaGVhZGVyIGlzIG5lZWRlZCBmb3IgdGhlIGF2YWlsYWJsZSBpdGVtcyB0YWJsZSAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21BdmFpbGFibGVIZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8qKiBUZW1wbGF0ZSBmb3Igd2hlbiBhIGN1c3RvbSBhdmFpbGFibGUgaXRlbSBpcyBuZWVkZWQuIERlZmF1bHQgdGVtcGxhdGUgaXMgYSBsYWJlbCBvbmx5ICovXHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUF2YWlsYWJsZUl0ZW1UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8qKiBUZW1wbGF0ZSBmb3Igd2hlbiBhIGN1c3RvbSBzZWxlY3RlZCBpdGVtIGlzIG5lZWRlZC4gRGVmYXVsdCB0ZW1wbGF0ZSBpcyBhIGxhYmVsIG9ubHkgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tU2VsZWN0ZWRJdGVtVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKiogVXNlZCBieSB0aGUgaW50ZXJuYWwgU2VhcmNoYWJsZSBUYWJsZSB0byBrbm93IHdoZW4gdGhlIHBhZ2UgaXMgcmVhZHkgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgcmVhZHk/OiBPYnNlcnZhYmxlPHZvaWQ+O1xyXG5cclxuICAvKiogVXNlZCBieSBTZWFyY2hhYmxlIFRhYmxlIHRvIHJldHJpZXZlIHRoZSBhdmFpbGFibGUgaXRlbXMgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZ2V0SXRlbXM/OiAoc2VhcmNoPzogc3RyaW5nLCBwYWdlQ2hhbmdlSW5mbz86IFBhZ2luZ0luZm8pID0+IE9ic2VydmFibGU8VGFibGVTZWFyY2hSZXN1bHRzPjtcclxuXHJcbiAgLyoqIFVzZWQgdG8gbWFpbnRhaW4gdGhlIGF2YWlsYWJsZSBpdGVtcyBjaGVja2JveCBzZWxlY3Rpb24gYXMgd2VsbCBhcyB0aGUgc2VsZWN0ZWQgaXRlbXMgbGlzdCAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3Rpb25Db250ZXh0ITogSXRlbVBpY2tlclNlbGVjdGFibGVDb250ZXh0PFQ+O1xyXG5cclxuICAvKiogVXNlZCBieSB0aGUgaW50ZXJuYWwgU2VhcmNoYWJsZSBUYWJsZSB3aGVuIHRoZXJlIGlzIG5vIGF2YWlsYWJsZSBpdGVtcyB0byBjaG9vc2UgZnJvbSBiYXNlZCBvbiB0aGUgZ2V0SXRlbXMgcmVzdWx0cy4gRG8gbm90IHN1cHBseVxyXG4gICAqICB0byBpbmhlcml0IHRoZSBkZWZhdWx0IG1lc3NhZ2UuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIG5vRGF0YU1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBVc2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IG5vIHNlbGVjdGVkIGl0ZW1zIG1lc3NhZ2UuIElmIHByb3ZpZGVkIHRoaXMgd2lsbCBiZSB1c2VkLCBvdGhlcndpc2UgdGhlIGRlZmF1bHQgbWVzc2FnZSB3aXRoIHRoZSBpdGVtIG5hbWVcclxuICAgKiBpbnRlcnBvbGF0aW9uIHdpbGwgYmUgdXNlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgbm9TZWxlY3RlZEl0ZW1zTWVzc2FnZT86IHN0cmluZztcclxuXHJcbiAgLyoqIFVzZWQgdG8gZW5hYmxlIHNlbGVjdCBhbGwgaXRlbXMgYWNyb3NzIHBhZ2VzLiBXaGVuIHRydWUgdGhlIGJ1dHRvbiB0byBzZWxlY3QgYWxsIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSBpbiB0aGUgYXZhaWxhYmxlIGl0ZW1zIGhlYWRlciB3aGVuXHJcbiAgICogIHRoZSBoZWFkZXIgY2hlY2tib3ggaXMgY2hlY2tlZCBhbmQgdGhlcmUgYXJlIG11bHRpcGxlIHBhZ2VzIG9mIHJlc3VsdHNcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZW5hYmxlU2VsZWN0QWxsSXRlbXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFVzZWQgdG8gZGlzcGxheSBhIG1lc3NhZ2UgaW4gdGhlIHNlbGVjdGVkIGl0ZW1zIHRhYmxlIHdoZW4gdGhlIHNlbGVjdCBhbGwgaXRlbXMgYnV0dG9uIGlzIGNsaWNrZWQgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0QWxsSXRlbXNNZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqIExpc3Qgb2YgYXZhaWxhYmxlIGl0ZW1zIHRvIHBpY2sgZnJvbSAqL1xyXG4gIHB1YmxpYyBhdmFpbGFibGVJdGVtczogUGlja2VySXRlbVtdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdGVkIGl0ZW1zIGFycmF5LiBDcmVhdGVkIGZyb20gdGhlIHNlbGVjdGVkIGl0ZW1zIG1hcC4gQmluZGluZyB0byB0aGVcclxuICAgKiBtYXAgaXRlcmF0ZSB2YWx1ZXMgY2F1c2VkIGFuZ3VsYXIgXCJleHByZXNzaW9uIGNoYW5nZWRcIiBlcnJvcnMgc28gYWZ0ZXIgYSBtYXBcclxuICAgKiB1cGRhdGUgdGhpcyBnZXRzIHNldCB0byB0aGUgdmFsdWVzXHJcbiAgICovXHJcbiAgcHVibGljIHNlbGVjdGVkSXRlbXM6IFBpY2tlckl0ZW1bXSA9IFtdO1xyXG5cclxuICAvKiogVHJ1ZSBpZiB0aGVyZSBhcmUgc2VsZWN0ZWQgaXRlbXMgYW5kIGF0IGxlYXN0IG9uZSBjYW4gYmUgcmVtb3ZlZCAqL1xyXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zQ2xlYXJhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBUcmFjayBieSB1c2VkIGZvciB0aGUgc2VhcmNoYWJsZSB0YWJsZSByb3dzICovXHJcbiAgcHVibGljIHRyYWNrQnlJbmRleCA9IChpbmRleDogbnVtYmVyKSA9PiBpbmRleDtcclxuXHJcbiAgcHVibGljIHRhYmxlU3RhdHVzOiBPdmVybGF5ID0gbmV3IE92ZXJsYXkoJ3BlbmRpbmcnKTtcclxuXHJcbiAgLyoqIFRleHQgdG8gZGlzcGxheSBuZXh0IHRvIHRoZSBjaGVja2JveCBpbiB0aGUgYXZhaWxhYmxlIGl0ZW1zIGhlYWRlci4gVXNlZCB0byBkaXNsYXkgaG93IG1hbnkgaXRlbXMgYXJlXHJcbiAgICogIHNlbGVjdGVkIHdoZW4gc2VsZWN0IGFsbCBpdGVtcyBpcyBlbmFibGVkXHJcbiAgICovXHJcbiAgcHVibGljIGF2YWlsYWJsZUNoZWNrYm94VGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBXaGVuIHNldCB0byB0cnVlIHRoZSBzZWxlY3QgYWxsIGl0ZW1zIGJ1dHRvbiB3aWxsIHNob3cgaW4gdGhlIGF2YWlsYWJsZSBpdGVtcyBoZWFkZXIuIFRoaXMgaXNcclxuICAgKiAgc2hvd24gd2hlbiB0aGUgdXNlciBoYXMgZW5hYmxlZCBzZWxlY3QgYWxsIGZvciB0aGUgaXRlbSBwaWNrZXIgYW5kIHRoZSB1c2VyIHNlbGVjdHMgdGhlIGhlYWRlciBjaGVja2JveFxyXG4gICAqICB3aXRoIG1vcmUgdGhhbiBvbmUgcGFnZSBvZiByZXN1bHRzLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzaG93U2VsZWN0QWxsSXRlbXNCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgcmV0dXJuZWQgZnJvbSB0aGUgYXBpIGFjcm9zcyBhbGwgcGFnZXMgKi9cclxuICBwdWJsaWMgdG90YWxJdGVtc0JlZm9yZVBhZ2luZz86IG51bWJlciA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRlbXBsYXRlIHVzZWQgdG8gZGlzcGxheSB0aGUgYXZhaWxhYmxlIGFuZCBzZWxlY3RlZCBpdGVtcyBhcyB3ZWxsIGFzIHRoZSBhdmFpbGFibGUgaXRlbSBoZWFkZXIuXHJcbiAgICogVGhpcyB3aWxsIGJlIHNldCB0byB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSBpZiBhIGN1c3RvbSBpcyBub3QgcHJvdmlkZWRcclxuICAgKi9cclxuICBwdWJsaWMgaW50ZXJuYWxpemVkQXZhaWxhYmxlSGVhZGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHB1YmxpYyBpbnRlcm5hbGl6ZWRBdmFpbGFibGVJdGVtVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHB1YmxpYyBpbnRlcm5hbGl6ZWRTZWxlY3RlZEl0ZW1UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8qKiBEZWZhdWx0IHRlbXBsYXRlcyB1c2VkIGlmIGEgY3VzdG9tIHRlbXBsYXRlIGlzIG5vdCBwcm92aWRlZCAqL1xyXG4gIEBWaWV3Q2hpbGQoJ2RlZmF1bHRBdmFpbGFibGVIZWFkZXJUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgZGVmYXVsdEF2YWlsYWJsZUhlYWRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdkZWZhdWx0QXZhaWxhYmxlSXRlbVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBkZWZhdWx0QXZhaWxhYmxlSXRlbVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdkZWZhdWx0U2VsZWN0ZWRJdGVtVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGRlZmF1bHRTZWxlY3RlZEl0ZW1UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8qKiBVc2VkIHRvIHNodXQgZG93biBvdXIgc3Vic2NyaXB0aW9ucyB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkICovXHJcbiAgcHJpdmF0ZSBkZXN0cm95ZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0dXBSb3dDaGVja2JveGVzV2F0Y2hlcigpO1xyXG4gICAgdGhpcy5zZXR1cFNlbGVjdGVkSXRlbXNDaGFuZ2VkV2F0Y2hlcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2F0Y2ggZm9yIGNoYW5nZXMgYW5kIHJlYWN0IGlmIHRoZSBjdXN0b20gaXRlbSB0ZW1wbGF0ZSB2YWx1ZSBjaGFuZ2VzXHJcbiAgICovXHJcbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRJbnRlcm5hbGl6ZWRUZW1wbGF0ZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveWVkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxsZWQgYnkgdGhlIHNlYXJjaGFibGUgdGFibGUgd2hlbiBhIG5ldyBzZXQgb2YgaXRlbXMgYXJlIHJldHVybmVkIGZyb20gdGhlIGdldEl0ZW1zIGNhbGwuXHJcbiAgICogSWYgYW55IG9mIHRoZSBpdGVtcyBoYXZlIGBwcmV2ZW50UmVtb3ZlYCBzZXQsIHRoZWlyIGluZGljZXMgYXJlIGFkZGVkIHRvIHRoZSBjb250ZXh0LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBvbkl0ZW1zQ2hhbmdlKHJlc3VsdHM6IFRhYmxlU2VhcmNoUmVzdWx0cykge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uQ29udGV4dC5pc1NlbGVjdGluZ0FsbEl0ZW1zKSB7XHJcbiAgICAgIHRoaXMub25DbGVhclNlbGVjdGlvbkNsaWNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG5ld05vbkRlcGVuZGVudENoZWNrYm94ZXM6IG51bWJlcltdID0gW107XHJcblxyXG4gICAgKDxQaWNrZXJJdGVtW10+cmVzdWx0cy5pdGVtcykuZm9yRWFjaCgoaXRlbSwgaW5kZXgpICA9PiB7XHJcbiAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhbnkgb2YgdGhlIGl0ZW1zIGFyZSBtYXJrZWQgdG8gYmUgc2VsZWN0ZWQgYnkgZGVmYXVsdCBhbmQgaWYgc29cclxuICAgICAgLy8gYWRkIHRoZW0gdG8gdGhlIG1hcC5cclxuICAgICAgaWYgKGl0ZW0uZGVmYXVsdFNlbGVjdGVkICYmICF0aGlzLnNlbGVjdGlvbkNvbnRleHQ/LnNlbGVjdGVkSXRlbXNNYXAuaGFzKGl0ZW0uaWQpKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0Py5zZWxlY3RlZEl0ZW1zTWFwLnNldChpdGVtLmlkLCBpdGVtKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGFueSBvZiB0aGUgaXRlbXMgYXJlIG1hcmtlZCB0byBwcmV2ZW50IFJlbW92YWwsIGFuZCBpZiBzb1xyXG4gICAgICAvLyBhZGQgdGhlbSB0byB0aGUgbm9uLWRlcGVuZGVudCBjaGVja2JveGVzIGFycmF5LiAgVGhpcyB3aWxsIHByZXZlbnQgdGhlIG1hc3RlclxyXG4gICAgICAvLyBjaGVja2JveCBmcm9tIHRvZ2dsaW5nIHRoZW0uXHJcbiAgICAgIGlmIChpdGVtLnByZXZlbnRSZW1vdmUpIHtcclxuICAgICAgICBuZXdOb25EZXBlbmRlbnRDaGVja2JveGVzLnB1c2goaW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbkNvbnRleHQubm9uRGVwZW5kZW50Q2hlY2tib3hlcyA9IG5ld05vbkRlcGVuZGVudENoZWNrYm94ZXM7XHJcblxyXG4gICAgLy8gV2hlbiB0aGUgdXNlciBmaWx0ZXJzIHRoZSBsaXN0IHdlIHNob3VsZCByZXNldCB0aGUgc2VsZWN0IGFsbCBpdGVtc1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0LmlzU2VsZWN0aW5nQWxsSXRlbXMgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmF2YWlsYWJsZUl0ZW1zID0gKDxQaWNrZXJJdGVtW10+cmVzdWx0cy5pdGVtcyk7XHJcbiAgICB0aGlzLnRvdGFsSXRlbXNCZWZvcmVQYWdpbmcgPSByZXN1bHRzLnRvdGFsSXRlbXNCZWZvcmVQYWdpbmc7XHJcblxyXG4gICAgdGhpcy51cGRhdGVBdmFpbGFibGVDaGVja2JveFRleHQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGxlZCB3aGVuIHRoZSBjbGVhciBzZWxlY3Rpb24gbGluayBidXR0b24gaXMgY2xpY2tlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBvbkNsZWFyU2VsZWN0aW9uQ2xpY2soKSB7XHJcbiAgICB0aGlzLmNsZWFyU2VsZWN0ZWRJdGVtc01hcCgpO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0aW9uQ29udGV4dC5yb3dDaGVja2JveGVzLmNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmF2YWlsYWJsZUl0ZW1zW2luZGV4XS5wcmV2ZW50UmVtb3ZlKSB7XHJcbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShmYWxzZSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGlvbkNvbnRleHQuc2VsZWN0ZWRJdGVtc01hcC52YWx1ZXMoKSk7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkNvbnRleHQuaXNTZWxlY3RpbmdBbGxJdGVtcyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHJlbW92ZSBpdGVtIGJ1dHRvbiBpcyBjbGlja2VkIGZvciBhIHNlbGVjdGVkIGl0ZW1cclxuICAgKiBAcGFyYW0gcmVtb3ZlSXRlbVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZW1vdmVTZWxlY3RlZEl0ZW0ocmVtb3ZlSXRlbTogUGlja2VySXRlbSk6IHZvaWQge1xyXG4gICAgbGV0IGZvdW5kSW5kZXggPSB0aGlzLmF2YWlsYWJsZUl0ZW1zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaWQgPT09IHJlbW92ZUl0ZW0uaWQpO1xyXG4gICAgaWYgKGZvdW5kSW5kZXggPiAtMSkge1xyXG4gICAgICAvLyBVcGRhdGUgdGhlIHJvdyBjaGVja2JveCBzaW5jZSB0aGUgaXRlbSBleGlzdHMgaW4gdGhlIHBhZ2UgYmVpbmcgdmlld2VkXHJcbiAgICAgIC8vIFRoZSB2YWx1ZSBjaGFuZ2UgaGFuZGxlciBmb3Igcm93IGNoZWNrYm94ZXMgd2lsbCB1cGRhdGUgdGhlIG1hcC9zZWxlY3RlZCBpdGVtc1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbkNvbnRleHQucm93Q2hlY2tib3hlcy5hdChmb3VuZEluZGV4KS5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBUaGUgaXRlbSBiZWluZyByZW1vdmVkIGlzIG5vdCBvbiB0aGUgY3VycmVudCBwYWdlIHNvIGp1c3QgdXBkYXRlIHRoZVxyXG4gICAgICAvLyBtYXAvc2VsZWN0ZWQgaXRlbXNcclxuICAgICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0LnNlbGVjdGVkSXRlbXNNYXAuZGVsZXRlKHJlbW92ZUl0ZW0uaWQpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0aW9uQ29udGV4dC5zZWxlY3RlZEl0ZW1zTWFwLnZhbHVlcygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFxyXG4gIC8qKiBcclxuICAgKiBDbGljayBoYW5kbGVyIGZvciB0aGUgc2VsZWN0IGFsbCBpdGVtcyBidXR0b25cclxuICAgKi9cclxuICBwdWJsaWMgc2VsZWN0QWxsSXRlbXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFyU2VsZWN0ZWRJdGVtc01hcCgpO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0aW9uQ29udGV4dC5pc1NlbGVjdGluZ0FsbEl0ZW1zID0gdHJ1ZTtcclxuICAgIHRoaXMuc2hvd1NlbGVjdEFsbEl0ZW1zQnV0dG9uID0gZmFsc2U7XHJcbiAgICB0aGlzLnVwZGF0ZUF2YWlsYWJsZUNoZWNrYm94VGV4dCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSB0aGUgc2VsZWN0ZWQgaXRlbXMgbWFwLiBUaGlzIHdhcyBzcGxpdCBmcm9tIHRoZSBvbkNsZWFyU2VsZWN0aW9uQ2xpY2sgZnVuY3Rpb24gdG8gYWxsb3dcclxuICAgKiBzZWxlY3RBbGxJdGVtcyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gYnV0IGtlZXAgdGhlIHJvdyBjaGVja2JveCB2YWx1ZXMgaW4gcGxhY2UuIFRoaXMgd2FzIG5lZWRlZCBiZWNhdXNlIHdoZW4geW91IGFyZVxyXG4gICAqIHNlbGVjdGluZyBhbGwgaXRlbXMgYWNyb3NzIGFsbCBwYWdlcyB3ZSB3YW50IHRoZSBjdXJyZW50IHBhZ2Ugb2YgaXRlbXMgdG8gcmVtYWluIGNoZWNrZWQuXHJcbiAgICogXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbGVhclNlbGVjdGVkSXRlbXNNYXAoKTogdm9pZCB7XHJcbiAgICAvLyBSZW1vdmUgcmVtb3ZhYmxlIGl0ZW1zIGZyb20gbWFwXHJcbiAgICAvLyBUaGlzIGlzIHNhZmUuICBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU5NDAyMTYvZXM2LWlzLWl0LWRhbmdlcm91cy10by1kZWxldGUtZWxlbWVudHMtZnJvbS1zZXQtbWFwLWR1cmluZy1zZXQtbWFwLWl0ZXJhdGlvblxyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIHRoaXMuc2VsZWN0aW9uQ29udGV4dC5zZWxlY3RlZEl0ZW1zTWFwKSB7XHJcbiAgICAgIGlmICghdmFsLnByZXZlbnRSZW1vdmUpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbnRleHQuc2VsZWN0ZWRJdGVtc01hcC5kZWxldGUoa2V5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2F0Y2ggZm9yIGNoYW5nZXMgdG8gdGhlIHJvdyBjaGVja2JveGVzIGZvcm0gYXJyYXkgYW5kIHVwZGF0ZSB0aGUgc2VsZWN0ZWQgaXRlbXNcclxuICAgKiBsaXN0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXR1cFJvd0NoZWNrYm94ZXNXYXRjaGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0Py5yb3dDaGVja2JveGVzLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAvLyBEZWJvdW5jZSAxMCBpcyBzaW1wbHkgdG8gbm90IHNwYW0gdGhlIGNoYW5nZSBoYW5kbGVyIG9uIGxvYWQvcGFnZSBjaGFuZ2VcclxuICAgICAgLy8gT3RoZXJ3aXNlIHRoaXMgd2lsbCBnZXQgY2FsbGVkIGV2ZXJ5IHRpbWUgYSBuZXcgcm93IGlzIGFkZGVkIHRvIHRoZSB0YWJsZVxyXG4gICAgICBkZWJvdW5jZVRpbWUoMTApLFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpXHJcbiAgICApLnN1YnNjcmliZSgocm93VmFsdWVzOiBib29sZWFuW10pID0+IHtcclxuICAgICAgcm93VmFsdWVzLmZvckVhY2goKHNlbGVjdGVkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGxldCBhdmFpbGFibGVJdGVtID0gdGhpcy5hdmFpbGFibGVJdGVtc1tpbmRleF07XHJcblxyXG4gICAgICAgIGlmICghc2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Db250ZXh0Py5zZWxlY3RlZEl0ZW1zTWFwLmhhcyhhdmFpbGFibGVJdGVtLmlkKSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0Py5zZWxlY3RlZEl0ZW1zTWFwLmRlbGV0ZShhdmFpbGFibGVJdGVtLmlkKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkICYmICF0aGlzLnNlbGVjdGlvbkNvbnRleHQ/LnNlbGVjdGVkSXRlbXNNYXAuaGFzKGF2YWlsYWJsZUl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbnRleHQ/LnNlbGVjdGVkSXRlbXNNYXAuc2V0KGF2YWlsYWJsZUl0ZW0uaWQsIGF2YWlsYWJsZUl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0aW9uQ29udGV4dD8uc2VsZWN0ZWRJdGVtc01hcC52YWx1ZXMoKSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NsZWFyYWJsZSA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5zb21lKGkgPT4gIWkucHJldmVudFJlbW92ZSk7XHJcbiAgICAgIHRoaXMudXBkYXRlQXZhaWxhYmxlQ2hlY2tib3hUZXh0KCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbkNvbnRleHQuc2VsZWN0QWxsQ2hlY2tib3gudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDEwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSkuc3Vic2NyaWJlKChjaGVja2VkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmVuYWJsZVNlbGVjdEFsbEl0ZW1zKSB7XHJcbiAgICAgICAgY29uc3Qgb25lUGFnZU9mRGF0YSA9IHRoaXMuYXZhaWxhYmxlSXRlbXMubGVuZ3RoID09PSB0aGlzLnRvdGFsSXRlbXNCZWZvcmVQYWdpbmc7XHJcblxyXG4gICAgICAgIGlmIChjaGVja2VkICYmICFvbmVQYWdlT2ZEYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dTZWxlY3RBbGxJdGVtc0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICghY2hlY2tlZCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uQ29udGV4dC5pc1NlbGVjdGluZ0FsbEl0ZW1zKSB7XHJcbiAgICAgICAgICAgIC8vIFdlIHdlcmUgc2VsZWN0aW5nIGFsbCBpdGVtcywgY2xlYXIgdGhlIHNlbGVjdGlvbiB0byBhbGxvdyB0aGUgdXNlciB0byBzdGFydCBvdmVyXHJcbiAgICAgICAgICAgIHRoaXMub25DbGVhclNlbGVjdGlvbkNsaWNrKCk7XHJcbiAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICB0aGlzLnNob3dTZWxlY3RBbGxJdGVtc0J1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0LmlzU2VsZWN0aW5nQWxsSXRlbXMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVBdmFpbGFibGVDaGVja2JveFRleHQoKSB7XHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3Rpb25Db250ZXh0LmlzU2VsZWN0aW5nQWxsSXRlbXMpIHtcclxuICAgICAgICBjb25zdCBjaGVja2VkQ291bnQgPSB0aGlzLnNlbGVjdGlvbkNvbnRleHQucm93Q2hlY2tib3hlcy5jb250cm9scy5tYXAoYyA9PiBjLnZhbHVlKS5maWx0ZXIodiA9PiB2KS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKGNoZWNrZWRDb3VudCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuYXZhaWxhYmxlQ2hlY2tib3hUZXh0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0NvdW50U2VsZWN0ZWRfVEMnLCB7IGNvdW50OiBjaGVja2VkQ291bnQgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYXZhaWxhYmxlQ2hlY2tib3hUZXh0ID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYXZhaWxhYmxlQ2hlY2tib3hUZXh0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0FsbEl0ZW1QaWNrZXJJdGVtc1NlbGVjdGVkX1NDJywgeyBjb3VudDogdGhpcy50b3RhbEl0ZW1zQmVmb3JlUGFnaW5nLCBpdGVtTmFtZTogdGhpcy5pdGVtTmFtZSB9KTtcclxuICAgICAgfVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXYXRjaCB0byBiZSB0b2xkIGlmIGNoYW5nZXMgdG8gdGhlIG1hcCB3ZXJlIG1hZGUgb3V0c2lkZSBvZiB0aGUgY29tcG9uZW50IGFuZCBpZiBzbyB1cGRhdGVcclxuICAgKiB0aGUgYXJyYXkgZGlzcGxheWVkIGluIHRoZSBzZWxlY3RlZCBsaXN0IGFuZCBzZWxlY3QgY2hlY2tib3hlcyBmb3IgdmlzaWJsZSBhdmFpbGFibGUgaXRlbXNcclxuICAgKi9cclxuICBwcml2YXRlIHNldHVwU2VsZWN0ZWRJdGVtc0NoYW5nZWRXYXRjaGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0LnNlbGVjdGVkSXRlbXNNYXBDaGFuZ2VkLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcclxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uQ29udGV4dCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3Rpb25Db250ZXh0Py5zZWxlY3RlZEl0ZW1zTWFwLnZhbHVlcygpKTtcclxuXHJcbiAgICAgICAgdGhpcy5hdmFpbGFibGVJdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uQ29udGV4dC5zZWxlY3RlZEl0ZW1zTWFwLmhhcyhpdGVtLmlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbnRleHQucm93Q2hlY2tib3hlcy5hdChpbmRleCkuc2V0VmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRJbnRlcm5hbGl6ZWRUZW1wbGF0ZXMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21BdmFpbGFibGVIZWFkZXJUZW1wbGF0ZSkge1xyXG4gICAgICB0aGlzLmludGVybmFsaXplZEF2YWlsYWJsZUhlYWRlclRlbXBsYXRlID0gdGhpcy5jdXN0b21BdmFpbGFibGVIZWFkZXJUZW1wbGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWxpemVkQXZhaWxhYmxlSGVhZGVyVGVtcGxhdGUgPSB0aGlzLmRlZmF1bHRBdmFpbGFibGVIZWFkZXJUZW1wbGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jdXN0b21BdmFpbGFibGVJdGVtVGVtcGxhdGUpIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbGl6ZWRBdmFpbGFibGVJdGVtVGVtcGxhdGUgPSB0aGlzLmN1c3RvbUF2YWlsYWJsZUl0ZW1UZW1wbGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWxpemVkQXZhaWxhYmxlSXRlbVRlbXBsYXRlID0gdGhpcy5kZWZhdWx0QXZhaWxhYmxlSXRlbVRlbXBsYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmN1c3RvbVNlbGVjdGVkSXRlbVRlbXBsYXRlKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWxpemVkU2VsZWN0ZWRJdGVtVGVtcGxhdGUgPSB0aGlzLmN1c3RvbVNlbGVjdGVkSXRlbVRlbXBsYXRlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbGl6ZWRTZWxlY3RlZEl0ZW1UZW1wbGF0ZSA9IHRoaXMuZGVmYXVsdFNlbGVjdGVkSXRlbVRlbXBsYXRlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGVjT3ZlcmxheVxyXG4gICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3JvdyBjYXJkXCJcclxuICAgICBbc3RhdHVzXT1cInRhYmxlU3RhdHVzPy5zdGF0dXNcIlxyXG4gICAgIFttZXNzYWdlXT1cInRhYmxlU3RhdHVzPy5tZXNzYWdlXCJcclxuICAgICBbZGlzcGxheUFzTWFza109XCJ0cnVlXCI+XHJcbiAgICA8ZWMtc2VhcmNoYWJsZS10YWJsZSBpZD1cInt7aWR9fV9zZWFyY2hhYmxlVGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4LWdyb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbGxQYXJlbnRIZWlnaHRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZUhlYWRlcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlU2VhcmNoQ29udHJvbF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtyZW1vdmVDYXJkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cIjUwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtvYmplY3RUeXBlXT1cIml0ZW1OYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtTW9kZWxdPVwiZm9ybU1vZGVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkeV09XCJyZWFkeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0SXRlbXNdPVwiZ2V0SXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbm9EYXRhTWVzc2FnZV09XCJub0RhdGFNZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25Db250ZXh0XT1cInNlbGVjdGlvbkNvbnRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXR1c109XCJ0YWJsZVN0YXR1c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbXNDaGFuZ2UpPVwib25JdGVtc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLWVjLXNlYXJjaGFibGUtdGFibGUtZmxleC1wcm9wZXJ0aWVzXT1cIihhdmFpbGFibGVJdGVtcy5sZW5ndGggfHwgdGFibGVTdGF0dXMuc3RhdHVzID09PSAncGVuZGluZycgfHwgdGFibGVTdGF0dXMuc3RhdHVzID09PSAnZXJyb3InICkgPyAnMSAxIGF1dG8nIDogJzAgMSBhdXRvJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1lYy1zZWFyY2hhYmxlLXRhYmxlLWhlaWdodC1jYXB0aW9uLWZvb3Rlcl09XCInY2FsYygyLjVyZW0gKyAxcHgpJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVMYXlvdXRGaXhlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgPGhlYWRlciAqbmdJZj1cImN1c3RvbUF2YWlsYWJsZUhlYWRlclRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZC1oZWFkZXIgZmxleC1zaHJpbmtcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDNyZW07XCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGVcIj57e2F2YWlsYWJsZVRpdGxlIHwgdHJhbnNsYXRlfX08L2gzPlxyXG4gICAgICAgIDwvaGVhZGVyPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyIGVjVGFibGVTZWxlY3RhYmxlUm93XHJcbiAgICAgICAgICAgICAgICBbc2VsZWN0aW9uQ29udGV4dF09XCJzZWxlY3Rpb25Db250ZXh0XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLWJvdHRvbS0wXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW50ZXJuYWxpemVkQXZhaWxhYmxlSGVhZGVyVGVtcGxhdGU7XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuXHJcbiAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGF2YWlsYWJsZUl0ZW1zOyBpbmRleCBhcyByb3dJbmRleDsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8dHIgZWNUYWJsZVNlbGVjdGFibGVSb3dcclxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0aW9uQ29udGV4dF09XCJzZWxlY3Rpb25Db250ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbcm93SW5kZXhdPVwicm93SW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0NoZWNrYm94RGlzYWJsZWRdPVwiaXRlbS5wcmV2ZW50UmVtb3ZlIHx8IHNlbGVjdGlvbkNvbnRleHQuaXNTZWxlY3RpbmdBbGxJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lzU2VsZWN0ZWRdPVwic2VsZWN0aW9uQ29udGV4dD8uc2VsZWN0ZWRJdGVtc01hcC5oYXMoaXRlbS5pZCkgfHwgc2VsZWN0aW9uQ29udGV4dC5pc1NlbGVjdGluZ0FsbEl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1lYy10YWJsZS1zZWxlY3RhYmxlLXJvdy12ZXJ0aWNhbC1hbGlnbi1jaGVja2JveC10ZF09XCInbWlkZGxlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnRlcm5hbGl6ZWRBdmFpbGFibGVJdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGl0ZW19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3Rib2R5PlxyXG4gICAgPC9lYy1zZWFyY2hhYmxlLXRhYmxlPlxyXG5cclxuICAgIDxzZWN0aW9uIGlkPVwie3tpZH19X3NlbGVjdGVkSXRlbXNcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZC1pdGVtcyBmbGV4LWdyb3cgZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGlvbkNvbnRleHQuaXNTZWxlY3RpbmdBbGxJdGVtc1wiXHJcbiAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWdyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgYm9yZGVyLWJvdHRvbSBweC0yXCJcclxuICAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogM3JlbTtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1oZWFkaW5nLTIgZm9udC1jb2xvci1wcmltYXJ5IGZsZXgtZ3JvdyB0ZXh0LXRydW5jYXRlXCI+e3tzZWxlY3RlZFRpdGxlIHxcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzZWxlY3RlZEl0ZW1zQ2xlYXJhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWNMaW5rQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3tpZH19X2NsZWFyU2VsZWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwbC0yIG1sLWF1dG8gZm9udC1zaXplLWJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGVhclNlbGVjdGlvbkNsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU+Q2xlYXJTZWxlY3Rpb25fVEM8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1hdXRvIHRleHQtaGVhZGluZy0yXCJcclxuICAgICAgICAgICAgICAgICAgW2lubmVySHRtbF09XCJzZWxlY3RBbGxJdGVtc01lc3NhZ2UgfCB0cmFuc2xhdGVcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGVjLXRhYmxlICpuZ0lmPVwiIXNlbGVjdGlvbkNvbnRleHQuaXNTZWxlY3RpbmdBbGxJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgIFtzY3JvbGxhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3cgaXMtZml4ZWRcIj5cclxuICAgICAgICAgICAgPGNvbGdyb3VwPlxyXG4gICAgICAgICAgICAgICAgPGNvbD5cclxuICAgICAgICAgICAgICAgIDxjb2wgc3R5bGU9XCJ3aWR0aDogMnJlbTtcIj5cclxuICAgICAgICAgICAgPC9jb2xncm91cD5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyIHN0eWxlPVwiaGVpZ2h0OiAzcmVtO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBjb2xzcGFuPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC0yIGJvcmRlci1ib3R0b20tMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWhlYWRpbmctMiBmb250LWNvbG9yLXByaW1hcnkgZmxleC1ncm93IHRleHQtdHJ1bmNhdGVcIj57e3NlbGVjdGVkVGl0bGUgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNlbGVjdGVkSXRlbXNDbGVhcmFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY0xpbmtCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7e2lkfX1fY2xlYXJTZWxlY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBsLTIgbWwtYXV0byBmb250LXNpemUtYmFzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsZWFyU2VsZWN0aW9uQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5DbGVhclNlbGVjdGlvbl9UQzwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuXHJcbiAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZEl0ZW1zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZEl0ZW1zOyBsYXN0IGFzIGlzTGFzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0ZWRfcm93X3t7aXRlbS5pZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1ib3R0b21dPVwiIWlzTGFzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnRlcm5hbGl6ZWRTZWxlY3RlZEl0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWN0aW9ucy1jb2wgdGV4dC1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWMtYnV0dG9uIGlkPVwie3tpZH19X3JlbW92ZVNlbGVjdGVkX3t7aXRlbS5pZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXRlbS5wcmV2ZW50UmVtb3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZWMtaWNvbiBpY29uLWNhbmNlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cInJlbW92ZVNlbGVjdGVkSXRlbShpdGVtKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lYy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiIXNlbGVjdGVkSXRlbXMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIW5vU2VsZWN0ZWRJdGVtc01lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xzcGFuPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC0yIG5vLWRhdGEtbWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cIntpdGVtTmFtZTogaXRlbU5hbWUgfCB0cmFuc2xhdGV9XCI+SXRlbVBpY2tlck5vSXRlbXNTZWxlY3RlZF9TQzwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwibm9TZWxlY3RlZEl0ZW1zTWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHNwYW49XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLTIgbm8tZGF0YS1tZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPnt7bm9TZWxlY3RlZEl0ZW1zTWVzc2FnZX19PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC9lYy10YWJsZT5cclxuXHJcbiAgICAgICAgPGZvb3RlciBpZD1cInNlbGVjdGVkSXRlbXNGb290ZXJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZEl0ZW1zLmxlbmd0aCAmJiAhc2VsZWN0aW9uQ29udGV4dC5pc1NlbGVjdGluZ0FsbEl0ZW1zXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtc2hyaW5rIHB4LTIgYm9yZGVyLXRvcCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMi41cmVtICsgMXB4KTtcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC1hdXRvIHRleHQtY2FwdGlvbi0xIGZvbnQtY29sb3ItaGludFwiPlxyXG4gICAgICAgICAgICAgICAge3tzZWxlY3RlZEl0ZW1zLmxlbmd0aH19IHt7aXRlbU5hbWUgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9mb290ZXI+XHJcbiAgICA8L3NlY3Rpb24+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0QXZhaWxhYmxlSGVhZGVyVGVtcGxhdGU+XHJcbiAgICA8IS0tIDx0aCAqbmdJZj1cIiFlbmFibGVTZWxlY3RBbGxJdGVtc1wiIGNsYXNzPVwidGV4dC1oZWFkaW5nLTIgZm9udC1jb2xvci1wcmltYXJ5IGJvcmRlci1ib3R0b20tMFwiPnt7YXZhaWxhYmxlVGl0bGUgfCB0cmFuc2xhdGV9fTwvdGg+IC0tPlxyXG5cclxuICAgIDx0aCBjbGFzcz1cInRleHQtaGVhZGluZy0yIGZvbnQtY29sb3ItcHJpbWFyeSBib3JkZXItYm90dG9tLTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBcIj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhYXZhaWxhYmxlQ2hlY2tib3hUZXh0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3thdmFpbGFibGVUaXRsZSB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImF2YWlsYWJsZUNoZWNrYm94VGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0ZWRDb3VudFwiPnt7YXZhaWxhYmxlQ2hlY2tib3hUZXh0fX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93U2VsZWN0QWxsSXRlbXNCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGVjTGlua0J1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsSXRlbXNCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBbGxJdGVtcygpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLTJcIj5cclxuICAgICAgICAgICAgICAgIHt7ICgnU2VsZWN0QWxsSXRlbVBpY2tlckl0ZW1zX1RDJykgfCB0cmFuc2xhdGU6eyBjb3VudDogdG90YWxJdGVtc0JlZm9yZVBhZ2luZywgaXRlbU5hbWU6IGl0ZW1OYW1lIH0gfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L3RoPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0QXZhaWxhYmxlSXRlbVRlbXBsYXRlXHJcbiAgICAgICAgICAgICBsZXQtaXRlbT5cclxuICAgIDx0ZD57e2l0ZW0ubGFiZWx9fTwvdGQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRTZWxlY3RlZEl0ZW1UZW1wbGF0ZVxyXG4gICAgICAgICAgICAgbGV0LWl0ZW0+XHJcbiAgICB7e2l0ZW0ubGFiZWx9fVxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
320
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2l0ZW0tcGlja2VyL2l0ZW0tcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9pdGVtLXBpY2tlci9pdGVtLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNkMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZHLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl6RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMvRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbURBQW1ELENBQUM7Ozs7Ozs7Ozs7QUFlM0UsQ0FBQztBQUVGLE1BQU0sT0FBTywyQkFBK0IsU0FBUSx5QkFBeUI7SUFBN0U7O1FBQ0UscUZBQXFGO1FBQzlFLHFCQUFnQixHQUErQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWhFOzs7V0FHRztRQUNJLDRCQUF1QixHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTlEOztXQUVHO1FBQ2Esb0NBQStCLEdBQVksSUFBSSxDQUFDO1FBRWhFOzs7V0FHRztRQUNJLHdCQUFtQixHQUFZLEtBQUssQ0FBQztJQUM5QyxDQUFDO0NBQUE7QUFPRCxNQUFNLE9BQU8sbUJBQW1CO0lBc0c5QixZQUNVLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBckc1Qyx3R0FBd0c7UUFDeEYsT0FBRSxHQUFZLEVBQUUsQ0FB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RUQsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQztTQUN6RTthQUFNO1lBQ0wsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQztTQUMxRTtJQUNILENBQUM7O2dIQWhVVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiwyakNDcERoQyw2b1JBMktjOzJGRHZIRCxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZ0JBQWdCO3VHQU9WLEVBQUU7c0JBQWpCLEtBQUs7Z0JBR1UsY0FBYztzQkFBN0IsS0FBSztnQkFHVSxhQUFhO3NCQUE1QixLQUFLO2dCQUdVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBR1UsU0FBUztzQkFBeEIsS0FBSztnQkFHVSw2QkFBNkI7c0JBQTVDLEtBQUs7Z0JBR1UsMkJBQTJCO3NCQUExQyxLQUFLO2dCQUdVLDBCQUEwQjtzQkFBekMsS0FBSztnQkFHVSxLQUFLO3NCQUFwQixLQUFLO2dCQUdVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBR1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUtVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBTVUsc0JBQXNCO3NCQUFyQyxLQUFLO2dCQUtVLG9CQUFvQjtzQkFBbkMsS0FBSztnQkFHVSxxQkFBcUI7c0JBQXBDLEtBQUs7Z0JBMkNpRSw4QkFBOEI7c0JBQXBHLFNBQVM7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNRLDRCQUE0QjtzQkFBaEcsU0FBUzt1QkFBQyw4QkFBOEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ1MsMkJBQTJCO3NCQUE5RixTQUFTO3VCQUFDLDZCQUE2QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IFRhYmxlU2VhcmNoUmVzdWx0cyB9IGZyb20gJy4uLy4uL2Rpc3BsYXkvdGFibGUvc2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYWdpbmdJbmZvIH0gZnJvbSAnLi4vLi4vZGlzcGxheS90YWJsZS90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQgfSBmcm9tICcuLi8uLi9kaXNwbGF5L3RhYmxlL3RhYmxlLXNlbGVjdGFibGUtcm93LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi8uLi9kaXNwbGF5L3ZpZXctb3ZlcmxheS92aWV3LW92ZXJsYXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICcuLi9tZW51L21lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQaWNrZXJJdGVtPFRWYWx1ZSA9IGFueSwgU0l0ZW1zID0gYW55PiBleHRlbmRzIE1lbnVJdGVtIHtcclxuICBpZDogc3RyaW5nO1xyXG5cclxuICAvKiogV2hlbiBzZXQgdG8gdHJ1ZSB0aGUgYXZhaWxhYmxlIGl0ZW0gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBzZWxlY3RlZCBsaXN0ICovXHJcbiAgZGVmYXVsdFNlbGVjdGVkPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqIFdoZW4gc2V0IHRvIHRydWUsIHRoZSBpdGVtIHdpbGwgbm90IGJlIGFsbG93ZWQgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZWxlY3RlZCBsaXN0ICovXHJcbiAgcHJldmVudFJlbW92ZT86IGJvb2xlYW47XHJcblxyXG4gIC8qKiBSZWRlZmluaW5nIHRvIGdldCB0aGUgdHlwaW5nICovXHJcbiAgdmFsdWU6IFRWYWx1ZTtcclxufTtcclxuXHJcbmV4cG9ydCBjbGFzcyBJdGVtUGlja2VyU2VsZWN0YWJsZUNvbnRleHQ8VD4gZXh0ZW5kcyBUYWJsZVNlbGVjdGFibGVSb3dDb250ZXh0IHtcclxuICAvKiogaWQvdmFsdWUgbWFwIG9mIHRoZSBzZWxlY3RlZCBpdGVtcy4gVXNlZCBmb3Iga2VlcGluZyB0cmFjayBvZiB3aGF0IGlzIHNlbGVjdGVkICovXHJcbiAgcHVibGljIHNlbGVjdGVkSXRlbXNNYXA6IE1hcDxzdHJpbmcsIFBpY2tlckl0ZW08VD4+ID0gbmV3IE1hcCgpO1xyXG5cclxuICAvKipcclxuICAgKiBHaXZlcyBhIHdheSB0byB0ZWxsIHRoZSBwaWNrZXIgY29tcG9uZW50IHRoYXQgdGhlIG1hcCB3YXMgbW9kaWZpZWQgZXh0ZXJuYWxseSBhbmQgdG8gdXBkYXRlXHJcbiAgICogdGhlIGF2YWlsYWJsZS9zZWxlY3RlZCBsaXN0c1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zTWFwQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkdmFuY2VkUm93Q2xpY2tCZWhhdmlvciBpcyBkaXNhYmxlZCBmb3IgSXRlbVBpY2tlci5cclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZUFkdmFuY2VkUm93Q2xpY2tCZWhhdmlvcjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKiBXaGVuIHRydWUgdGhlIHVzZXIgaGFzIG9wdGVkIHRvIHNlbGVjdCBhbGwgaXRlbXMgYWNyb3NzIGFsbCBwYWdlcy4gRHVlIHRvIGFwaSBwYWdpbmF0aW9uXHJcbiAgICogIHdlIGRvbid0IGhhdmUgYWxsIG9mIHRoZSBpdGVtcyBsb2NhbGx5LCBzbyB0aGUgaG9zdCB3aWxsIG5lZWQgdG8gdGVsbCB0aGUgQVBJIHRvIG9wZXJhdGUgb24gYWxsXHJcbiAgICogIHZpYSBhcGkgZmlsdGVycyBvciBvdGhlciBtZWFucy5cclxuICAgKi9cclxuICBwdWJsaWMgaXNTZWxlY3RpbmdBbGxJdGVtczogYm9vbGVhbiA9IGZhbHNlO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLWl0ZW0tcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaXRlbS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2l0ZW0tcGlja2VyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEl0ZW1QaWNrZXJDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgLyoqIElkZW50aWZpZXIgZm9yIHRoZSBjb21wb25lbnQuIFRoaXMgd2lsbCBiZSBhZGRlZCB0byB0aGUgYmVnaW5uaW5nIG9mIGFsbCBpbnRlcm5hbCBhY3Rpb24gZWxlbWVudHMgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaWQ/OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqIFRpdGxlIGRpc3BsYXllZCBhYm92ZSB0aGUgYXZhaWxhYmxlIGl0ZW1zIHRhYmxlICovXHJcbiAgQElucHV0KCkgcHVibGljIGF2YWlsYWJsZVRpdGxlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqIFRpdGxlIGRpc3BsYXllZCBhYm92ZSB0aGUgc2VsZWN0ZWQgaXRlbXMgbGlzdCAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZFRpdGxlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqIFRoZSB0eXBlIG9mIGl0ZW0gYmVpbmcgc2VsZWN0ZWQuIEV4LiBNZXRlcnMsIEFkZHJlc3NlcyAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpdGVtTmFtZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBGb3JtIGdyb3VwIHRoYXQgaXMgZ2l2ZW4gdG8gdGhlIGludGVybmFsIFNlYXJjaGFibGUgVGFibGUgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZm9ybU1vZGVsPzogVW50eXBlZEZvcm1Hcm91cDtcclxuXHJcbiAgLyoqIFRlbXBsYXRlIGZvciB3aGVuIGEgY3VzdG9tIGhlYWRlciBpcyBuZWVkZWQgZm9yIHRoZSBhdmFpbGFibGUgaXRlbXMgdGFibGUgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQXZhaWxhYmxlSGVhZGVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKiogVGVtcGxhdGUgZm9yIHdoZW4gYSBjdXN0b20gYXZhaWxhYmxlIGl0ZW0gaXMgbmVlZGVkLiBEZWZhdWx0IHRlbXBsYXRlIGlzIGEgbGFiZWwgb25seSAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21BdmFpbGFibGVJdGVtVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKiogVGVtcGxhdGUgZm9yIHdoZW4gYSBjdXN0b20gc2VsZWN0ZWQgaXRlbSBpcyBuZWVkZWQuIERlZmF1bHQgdGVtcGxhdGUgaXMgYSBsYWJlbCBvbmx5ICovXHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbVNlbGVjdGVkSXRlbVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLyoqIFVzZWQgYnkgdGhlIGludGVybmFsIFNlYXJjaGFibGUgVGFibGUgdG8ga25vdyB3aGVuIHRoZSBwYWdlIGlzIHJlYWR5ICovXHJcbiAgQElucHV0KCkgcHVibGljIHJlYWR5PzogT2JzZXJ2YWJsZTx2b2lkPjtcclxuXHJcbiAgLyoqIFVzZWQgYnkgU2VhcmNoYWJsZSBUYWJsZSB0byByZXRyaWV2ZSB0aGUgYXZhaWxhYmxlIGl0ZW1zICovXHJcbiAgQElucHV0KCkgcHVibGljIGdldEl0ZW1zPzogKHNlYXJjaD86IHN0cmluZywgcGFnZUNoYW5nZUluZm8/OiBQYWdpbmdJbmZvKSA9PiBPYnNlcnZhYmxlPFRhYmxlU2VhcmNoUmVzdWx0cz47XHJcblxyXG4gIC8qKiBVc2VkIHRvIG1haW50YWluIHRoZSBhdmFpbGFibGUgaXRlbXMgY2hlY2tib3ggc2VsZWN0aW9uIGFzIHdlbGwgYXMgdGhlIHNlbGVjdGVkIGl0ZW1zIGxpc3QgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0aW9uQ29udGV4dCE6IEl0ZW1QaWNrZXJTZWxlY3RhYmxlQ29udGV4dDxUPjtcclxuXHJcbiAgLyoqIFVzZWQgYnkgdGhlIGludGVybmFsIFNlYXJjaGFibGUgVGFibGUgd2hlbiB0aGVyZSBpcyBubyBhdmFpbGFibGUgaXRlbXMgdG8gY2hvb3NlIGZyb20gYmFzZWQgb24gdGhlIGdldEl0ZW1zIHJlc3VsdHMuIERvIG5vdCBzdXBwbHlcclxuICAgKiAgdG8gaW5oZXJpdCB0aGUgZGVmYXVsdCBtZXNzYWdlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBub0RhdGFNZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBubyBzZWxlY3RlZCBpdGVtcyBtZXNzYWdlLiBJZiBwcm92aWRlZCB0aGlzIHdpbGwgYmUgdXNlZCwgb3RoZXJ3aXNlIHRoZSBkZWZhdWx0IG1lc3NhZ2Ugd2l0aCB0aGUgaXRlbSBuYW1lXHJcbiAgICogaW50ZXJwb2xhdGlvbiB3aWxsIGJlIHVzZWQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIG5vU2VsZWN0ZWRJdGVtc01lc3NhZ2U/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBVc2VkIHRvIGVuYWJsZSBzZWxlY3QgYWxsIGl0ZW1zIGFjcm9zcyBwYWdlcy4gV2hlbiB0cnVlIHRoZSBidXR0b24gdG8gc2VsZWN0IGFsbCBpdGVtcyB3aWxsIGJlIHZpc2libGUgaW4gdGhlIGF2YWlsYWJsZSBpdGVtcyBoZWFkZXIgd2hlblxyXG4gICAqICB0aGUgaGVhZGVyIGNoZWNrYm94IGlzIGNoZWNrZWQgYW5kIHRoZXJlIGFyZSBtdWx0aXBsZSBwYWdlcyBvZiByZXN1bHRzXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGVuYWJsZVNlbGVjdEFsbEl0ZW1zOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBVc2VkIHRvIGRpc3BsYXkgYSBtZXNzYWdlIGluIHRoZSBzZWxlY3RlZCBpdGVtcyB0YWJsZSB3aGVuIHRoZSBzZWxlY3QgYWxsIGl0ZW1zIGJ1dHRvbiBpcyBjbGlja2VkICovXHJcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdEFsbEl0ZW1zTWVzc2FnZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBMaXN0IG9mIGF2YWlsYWJsZSBpdGVtcyB0byBwaWNrIGZyb20gKi9cclxuICBwdWJsaWMgYXZhaWxhYmxlSXRlbXM6IFBpY2tlckl0ZW1bXSA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3RlZCBpdGVtcyBhcnJheS4gQ3JlYXRlZCBmcm9tIHRoZSBzZWxlY3RlZCBpdGVtcyBtYXAuIEJpbmRpbmcgdG8gdGhlXHJcbiAgICogbWFwIGl0ZXJhdGUgdmFsdWVzIGNhdXNlZCBhbmd1bGFyIFwiZXhwcmVzc2lvbiBjaGFuZ2VkXCIgZXJyb3JzIHNvIGFmdGVyIGEgbWFwXHJcbiAgICogdXBkYXRlIHRoaXMgZ2V0cyBzZXQgdG8gdGhlIHZhbHVlc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zOiBQaWNrZXJJdGVtW10gPSBbXTtcclxuXHJcbiAgLyoqIFRydWUgaWYgdGhlcmUgYXJlIHNlbGVjdGVkIGl0ZW1zIGFuZCBhdCBsZWFzdCBvbmUgY2FuIGJlIHJlbW92ZWQgKi9cclxuICBwdWJsaWMgc2VsZWN0ZWRJdGVtc0NsZWFyYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogVHJhY2sgYnkgdXNlZCBmb3IgdGhlIHNlYXJjaGFibGUgdGFibGUgcm93cyAqL1xyXG4gIHB1YmxpYyB0cmFja0J5SW5kZXggPSAoaW5kZXg6IG51bWJlcikgPT4gaW5kZXg7XHJcblxyXG4gIHB1YmxpYyB0YWJsZVN0YXR1czogT3ZlcmxheSA9IG5ldyBPdmVybGF5KCdwZW5kaW5nJyk7XHJcblxyXG4gIC8qKiBUZXh0IHRvIGRpc3BsYXkgbmV4dCB0byB0aGUgY2hlY2tib3ggaW4gdGhlIGF2YWlsYWJsZSBpdGVtcyBoZWFkZXIuIFVzZWQgdG8gZGlzbGF5IGhvdyBtYW55IGl0ZW1zIGFyZVxyXG4gICAqICBzZWxlY3RlZCB3aGVuIHNlbGVjdCBhbGwgaXRlbXMgaXMgZW5hYmxlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBhdmFpbGFibGVDaGVja2JveFRleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogV2hlbiBzZXQgdG8gdHJ1ZSB0aGUgc2VsZWN0IGFsbCBpdGVtcyBidXR0b24gd2lsbCBzaG93IGluIHRoZSBhdmFpbGFibGUgaXRlbXMgaGVhZGVyLiBUaGlzIGlzXHJcbiAgICogIHNob3duIHdoZW4gdGhlIHVzZXIgaGFzIGVuYWJsZWQgc2VsZWN0IGFsbCBmb3IgdGhlIGl0ZW0gcGlja2VyIGFuZCB0aGUgdXNlciBzZWxlY3RzIHRoZSBoZWFkZXIgY2hlY2tib3hcclxuICAgKiAgd2l0aCBtb3JlIHRoYW4gb25lIHBhZ2Ugb2YgcmVzdWx0cy5cclxuICAgKi9cclxuICBwdWJsaWMgc2hvd1NlbGVjdEFsbEl0ZW1zQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBUaGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIHJldHVybmVkIGZyb20gdGhlIGFwaSBhY3Jvc3MgYWxsIHBhZ2VzICovXHJcbiAgcHVibGljIHRvdGFsSXRlbXNCZWZvcmVQYWdpbmc/OiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBUZW1wbGF0ZSB1c2VkIHRvIGRpc3BsYXkgdGhlIGF2YWlsYWJsZSBhbmQgc2VsZWN0ZWQgaXRlbXMgYXMgd2VsbCBhcyB0aGUgYXZhaWxhYmxlIGl0ZW0gaGVhZGVyLlxyXG4gICAqIFRoaXMgd2lsbCBiZSBzZXQgdG8gdGhlIGRlZmF1bHQgdGVtcGxhdGUgaWYgYSBjdXN0b20gaXMgbm90IHByb3ZpZGVkXHJcbiAgICovXHJcbiAgcHVibGljIGludGVybmFsaXplZEF2YWlsYWJsZUhlYWRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBwdWJsaWMgaW50ZXJuYWxpemVkQXZhaWxhYmxlSXRlbVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBwdWJsaWMgaW50ZXJuYWxpemVkU2VsZWN0ZWRJdGVtVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKiogRGVmYXVsdCB0ZW1wbGF0ZXMgdXNlZCBpZiBhIGN1c3RvbSB0ZW1wbGF0ZSBpcyBub3QgcHJvdmlkZWQgKi9cclxuICBAVmlld0NoaWxkKCdkZWZhdWx0QXZhaWxhYmxlSGVhZGVyVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGRlZmF1bHRBdmFpbGFibGVIZWFkZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnZGVmYXVsdEF2YWlsYWJsZUl0ZW1UZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgZGVmYXVsdEF2YWlsYWJsZUl0ZW1UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnZGVmYXVsdFNlbGVjdGVkSXRlbVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBkZWZhdWx0U2VsZWN0ZWRJdGVtVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKiogVXNlZCB0byBzaHV0IGRvd24gb3VyIHN1YnNjcmlwdGlvbnMgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZCAqL1xyXG4gIHByaXZhdGUgZGVzdHJveWVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldHVwUm93Q2hlY2tib3hlc1dhdGNoZXIoKTtcclxuICAgIHRoaXMuc2V0dXBTZWxlY3RlZEl0ZW1zQ2hhbmdlZFdhdGNoZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdhdGNoIGZvciBjaGFuZ2VzIGFuZCByZWFjdCBpZiB0aGUgY3VzdG9tIGl0ZW0gdGVtcGxhdGUgdmFsdWUgY2hhbmdlc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0SW50ZXJuYWxpemVkVGVtcGxhdGVzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsbGVkIGJ5IHRoZSBzZWFyY2hhYmxlIHRhYmxlIHdoZW4gYSBuZXcgc2V0IG9mIGl0ZW1zIGFyZSByZXR1cm5lZCBmcm9tIHRoZSBnZXRJdGVtcyBjYWxsLlxyXG4gICAqIElmIGFueSBvZiB0aGUgaXRlbXMgaGF2ZSBgcHJldmVudFJlbW92ZWAgc2V0LCB0aGVpciBpbmRpY2VzIGFyZSBhZGRlZCB0byB0aGUgY29udGV4dC5cclxuICAgKi9cclxuICBwdWJsaWMgb25JdGVtc0NoYW5nZShyZXN1bHRzOiBUYWJsZVNlYXJjaFJlc3VsdHMpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbkNvbnRleHQuaXNTZWxlY3RpbmdBbGxJdGVtcykge1xyXG4gICAgICB0aGlzLm9uQ2xlYXJTZWxlY3Rpb25DbGljaygpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBuZXdOb25EZXBlbmRlbnRDaGVja2JveGVzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICAgICg8UGlja2VySXRlbVtdPnJlc3VsdHMuaXRlbXMpLmZvckVhY2goKGl0ZW0sIGluZGV4KSAgPT4ge1xyXG4gICAgICAvLyBDaGVjayB0byBzZWUgaWYgYW55IG9mIHRoZSBpdGVtcyBhcmUgbWFya2VkIHRvIGJlIHNlbGVjdGVkIGJ5IGRlZmF1bHQgYW5kIGlmIHNvXHJcbiAgICAgIC8vIGFkZCB0aGVtIHRvIHRoZSBtYXAuXHJcbiAgICAgIGlmIChpdGVtLmRlZmF1bHRTZWxlY3RlZCAmJiAhdGhpcy5zZWxlY3Rpb25Db250ZXh0Py5zZWxlY3RlZEl0ZW1zTWFwLmhhcyhpdGVtLmlkKSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ29udGV4dD8uc2VsZWN0ZWRJdGVtc01hcC5zZXQoaXRlbS5pZCwgaXRlbSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiBhbnkgb2YgdGhlIGl0ZW1zIGFyZSBtYXJrZWQgdG8gcHJldmVudCBSZW1vdmFsLCBhbmQgaWYgc29cclxuICAgICAgLy8gYWRkIHRoZW0gdG8gdGhlIG5vbi1kZXBlbmRlbnQgY2hlY2tib3hlcyBhcnJheS4gIFRoaXMgd2lsbCBwcmV2ZW50IHRoZSBtYXN0ZXJcclxuICAgICAgLy8gY2hlY2tib3ggZnJvbSB0b2dnbGluZyB0aGVtLlxyXG4gICAgICBpZiAoaXRlbS5wcmV2ZW50UmVtb3ZlKSB7XHJcbiAgICAgICAgbmV3Tm9uRGVwZW5kZW50Q2hlY2tib3hlcy5wdXNoKGluZGV4KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0Lm5vbkRlcGVuZGVudENoZWNrYm94ZXMgPSBuZXdOb25EZXBlbmRlbnRDaGVja2JveGVzO1xyXG5cclxuICAgIC8vIFdoZW4gdGhlIHVzZXIgZmlsdGVycyB0aGUgbGlzdCB3ZSBzaG91bGQgcmVzZXQgdGhlIHNlbGVjdCBhbGwgaXRlbXNcclxuICAgIHRoaXMuc2VsZWN0aW9uQ29udGV4dC5pc1NlbGVjdGluZ0FsbEl0ZW1zID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5hdmFpbGFibGVJdGVtcyA9ICg8UGlja2VySXRlbVtdPnJlc3VsdHMuaXRlbXMpO1xyXG4gICAgdGhpcy50b3RhbEl0ZW1zQmVmb3JlUGFnaW5nID0gcmVzdWx0cy50b3RhbEl0ZW1zQmVmb3JlUGFnaW5nO1xyXG5cclxuICAgIHRoaXMudXBkYXRlQXZhaWxhYmxlQ2hlY2tib3hUZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxsZWQgd2hlbiB0aGUgY2xlYXIgc2VsZWN0aW9uIGxpbmsgYnV0dG9uIGlzIGNsaWNrZWRcclxuICAgKi9cclxuICBwdWJsaWMgb25DbGVhclNlbGVjdGlvbkNsaWNrKCkge1xyXG4gICAgdGhpcy5jbGVhclNlbGVjdGVkSXRlbXNNYXAoKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbkNvbnRleHQucm93Q2hlY2tib3hlcy5jb250cm9scy5mb3JFYWNoKChjb250cm9sLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5hdmFpbGFibGVJdGVtc1tpbmRleF0ucHJldmVudFJlbW92ZSkge1xyXG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZmFsc2UpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3Rpb25Db250ZXh0LnNlbGVjdGVkSXRlbXNNYXAudmFsdWVzKCkpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0LmlzU2VsZWN0aW5nQWxsSXRlbXMgPSBmYWxzZTtcclxuICAgIHRoaXMudXBkYXRlQXZhaWxhYmxlQ2hlY2tib3hUZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcmVtb3ZlIGl0ZW0gYnV0dG9uIGlzIGNsaWNrZWQgZm9yIGEgc2VsZWN0ZWQgaXRlbVxyXG4gICAqIEBwYXJhbSByZW1vdmVJdGVtXHJcbiAgICovXHJcbiAgcHVibGljIHJlbW92ZVNlbGVjdGVkSXRlbShyZW1vdmVJdGVtOiBQaWNrZXJJdGVtKTogdm9pZCB7XHJcbiAgICBsZXQgZm91bmRJbmRleCA9IHRoaXMuYXZhaWxhYmxlSXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0gcmVtb3ZlSXRlbS5pZCk7XHJcbiAgICBpZiAoZm91bmRJbmRleCA+IC0xKSB7XHJcbiAgICAgIC8vIFVwZGF0ZSB0aGUgcm93IGNoZWNrYm94IHNpbmNlIHRoZSBpdGVtIGV4aXN0cyBpbiB0aGUgcGFnZSBiZWluZyB2aWV3ZWRcclxuICAgICAgLy8gVGhlIHZhbHVlIGNoYW5nZSBoYW5kbGVyIGZvciByb3cgY2hlY2tib3hlcyB3aWxsIHVwZGF0ZSB0aGUgbWFwL3NlbGVjdGVkIGl0ZW1zXHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ29udGV4dC5yb3dDaGVja2JveGVzLmF0KGZvdW5kSW5kZXgpLnNldFZhbHVlKGZhbHNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFRoZSBpdGVtIGJlaW5nIHJlbW92ZWQgaXMgbm90IG9uIHRoZSBjdXJyZW50IHBhZ2Ugc28ganVzdCB1cGRhdGUgdGhlXHJcbiAgICAgIC8vIG1hcC9zZWxlY3RlZCBpdGVtc1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbkNvbnRleHQuc2VsZWN0ZWRJdGVtc01hcC5kZWxldGUocmVtb3ZlSXRlbS5pZCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3Rpb25Db250ZXh0LnNlbGVjdGVkSXRlbXNNYXAudmFsdWVzKCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVBdmFpbGFibGVDaGVja2JveFRleHQoKTtcclxuICB9XHJcblxyXG4gIFxyXG4gIC8qKiBcclxuICAgKiBDbGljayBoYW5kbGVyIGZvciB0aGUgc2VsZWN0IGFsbCBpdGVtcyBidXR0b25cclxuICAgKi9cclxuICBwdWJsaWMgc2VsZWN0QWxsSXRlbXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFyU2VsZWN0ZWRJdGVtc01hcCgpO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0aW9uQ29udGV4dC5pc1NlbGVjdGluZ0FsbEl0ZW1zID0gdHJ1ZTtcclxuICAgIHRoaXMuc2hvd1NlbGVjdEFsbEl0ZW1zQnV0dG9uID0gZmFsc2U7XHJcbiAgICB0aGlzLnVwZGF0ZUF2YWlsYWJsZUNoZWNrYm94VGV4dCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSB0aGUgc2VsZWN0ZWQgaXRlbXMgbWFwLiBUaGlzIHdhcyBzcGxpdCBmcm9tIHRoZSBvbkNsZWFyU2VsZWN0aW9uQ2xpY2sgZnVuY3Rpb24gdG8gYWxsb3dcclxuICAgKiBzZWxlY3RBbGxJdGVtcyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gYnV0IGtlZXAgdGhlIHJvdyBjaGVja2JveCB2YWx1ZXMgaW4gcGxhY2UuIFRoaXMgd2FzIG5lZWRlZCBiZWNhdXNlIHdoZW4geW91IGFyZVxyXG4gICAqIHNlbGVjdGluZyBhbGwgaXRlbXMgYWNyb3NzIGFsbCBwYWdlcyB3ZSB3YW50IHRoZSBjdXJyZW50IHBhZ2Ugb2YgaXRlbXMgdG8gcmVtYWluIGNoZWNrZWQuXHJcbiAgICogXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbGVhclNlbGVjdGVkSXRlbXNNYXAoKTogdm9pZCB7XHJcbiAgICAvLyBSZW1vdmUgcmVtb3ZhYmxlIGl0ZW1zIGZyb20gbWFwXHJcbiAgICAvLyBUaGlzIGlzIHNhZmUuICBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU5NDAyMTYvZXM2LWlzLWl0LWRhbmdlcm91cy10by1kZWxldGUtZWxlbWVudHMtZnJvbS1zZXQtbWFwLWR1cmluZy1zZXQtbWFwLWl0ZXJhdGlvblxyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIHRoaXMuc2VsZWN0aW9uQ29udGV4dC5zZWxlY3RlZEl0ZW1zTWFwKSB7XHJcbiAgICAgIGlmICghdmFsLnByZXZlbnRSZW1vdmUpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbnRleHQuc2VsZWN0ZWRJdGVtc01hcC5kZWxldGUoa2V5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2F0Y2ggZm9yIGNoYW5nZXMgdG8gdGhlIHJvdyBjaGVja2JveGVzIGZvcm0gYXJyYXkgYW5kIHVwZGF0ZSB0aGUgc2VsZWN0ZWQgaXRlbXNcclxuICAgKiBsaXN0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXR1cFJvd0NoZWNrYm94ZXNXYXRjaGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0Py5yb3dDaGVja2JveGVzLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAvLyBEZWJvdW5jZSAxMCBpcyBzaW1wbHkgdG8gbm90IHNwYW0gdGhlIGNoYW5nZSBoYW5kbGVyIG9uIGxvYWQvcGFnZSBjaGFuZ2VcclxuICAgICAgLy8gT3RoZXJ3aXNlIHRoaXMgd2lsbCBnZXQgY2FsbGVkIGV2ZXJ5IHRpbWUgYSBuZXcgcm93IGlzIGFkZGVkIHRvIHRoZSB0YWJsZVxyXG4gICAgICBkZWJvdW5jZVRpbWUoMTApLFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpXHJcbiAgICApLnN1YnNjcmliZSgocm93VmFsdWVzOiBib29sZWFuW10pID0+IHtcclxuICAgICAgcm93VmFsdWVzLmZvckVhY2goKHNlbGVjdGVkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGxldCBhdmFpbGFibGVJdGVtID0gdGhpcy5hdmFpbGFibGVJdGVtc1tpbmRleF07XHJcblxyXG4gICAgICAgIGlmICghc2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Db250ZXh0Py5zZWxlY3RlZEl0ZW1zTWFwLmhhcyhhdmFpbGFibGVJdGVtLmlkKSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0Py5zZWxlY3RlZEl0ZW1zTWFwLmRlbGV0ZShhdmFpbGFibGVJdGVtLmlkKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkICYmICF0aGlzLnNlbGVjdGlvbkNvbnRleHQ/LnNlbGVjdGVkSXRlbXNNYXAuaGFzKGF2YWlsYWJsZUl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbnRleHQ/LnNlbGVjdGVkSXRlbXNNYXAuc2V0KGF2YWlsYWJsZUl0ZW0uaWQsIGF2YWlsYWJsZUl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0aW9uQ29udGV4dD8uc2VsZWN0ZWRJdGVtc01hcC52YWx1ZXMoKSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NsZWFyYWJsZSA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5zb21lKGkgPT4gIWkucHJldmVudFJlbW92ZSk7XHJcbiAgICAgIHRoaXMudXBkYXRlQXZhaWxhYmxlQ2hlY2tib3hUZXh0KCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbkNvbnRleHQuc2VsZWN0QWxsQ2hlY2tib3gudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDEwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSkuc3Vic2NyaWJlKChjaGVja2VkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmVuYWJsZVNlbGVjdEFsbEl0ZW1zKSB7XHJcbiAgICAgICAgY29uc3Qgb25lUGFnZU9mRGF0YSA9IHRoaXMuYXZhaWxhYmxlSXRlbXMubGVuZ3RoID09PSB0aGlzLnRvdGFsSXRlbXNCZWZvcmVQYWdpbmc7XHJcblxyXG4gICAgICAgIGlmIChjaGVja2VkICYmICFvbmVQYWdlT2ZEYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dTZWxlY3RBbGxJdGVtc0J1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICghY2hlY2tlZCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uQ29udGV4dC5pc1NlbGVjdGluZ0FsbEl0ZW1zKSB7XHJcbiAgICAgICAgICAgIC8vIFdlIHdlcmUgc2VsZWN0aW5nIGFsbCBpdGVtcywgY2xlYXIgdGhlIHNlbGVjdGlvbiB0byBhbGxvdyB0aGUgdXNlciB0byBzdGFydCBvdmVyXHJcbiAgICAgICAgICAgIHRoaXMub25DbGVhclNlbGVjdGlvbkNsaWNrKCk7XHJcbiAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICB0aGlzLnNob3dTZWxlY3RBbGxJdGVtc0J1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0LmlzU2VsZWN0aW5nQWxsSXRlbXMgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVBdmFpbGFibGVDaGVja2JveFRleHQoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Db250ZXh0LmlzU2VsZWN0aW5nQWxsSXRlbXMpIHtcclxuICAgICAgdGhpcy5hdmFpbGFibGVDaGVja2JveFRleHQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQWxsSXRlbVBpY2tlckl0ZW1zU2VsZWN0ZWRfU0MnLCB7IGNvdW50OiB0aGlzLnRvdGFsSXRlbXNCZWZvcmVQYWdpbmcsIGl0ZW1OYW1lOiB0aGlzLml0ZW1OYW1lIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgY2hlY2tlZENvdW50ID0gdGhpcy5zZWxlY3Rpb25Db250ZXh0LnJvd0NoZWNrYm94ZXMuY29udHJvbHMubWFwKGMgPT4gYy52YWx1ZSkuZmlsdGVyKHYgPT4gdikubGVuZ3RoO1xyXG4gICAgICBpZiAoY2hlY2tlZENvdW50ID4gMCkge1xyXG4gICAgICAgIHRoaXMuYXZhaWxhYmxlQ2hlY2tib3hUZXh0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0NvdW50U2VsZWN0ZWRfVEMnLCB7IGNvdW50OiBjaGVja2VkQ291bnQgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hdmFpbGFibGVDaGVja2JveFRleHQgPSAnJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2F0Y2ggdG8gYmUgdG9sZCBpZiBjaGFuZ2VzIHRvIHRoZSBtYXAgd2VyZSBtYWRlIG91dHNpZGUgb2YgdGhlIGNvbXBvbmVudCBhbmQgaWYgc28gdXBkYXRlXHJcbiAgICogdGhlIGFycmF5IGRpc3BsYXllZCBpbiB0aGUgc2VsZWN0ZWQgbGlzdCBhbmQgc2VsZWN0IGNoZWNrYm94ZXMgZm9yIHZpc2libGUgYXZhaWxhYmxlIGl0ZW1zXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXR1cFNlbGVjdGVkSXRlbXNDaGFuZ2VkV2F0Y2hlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uQ29udGV4dC5zZWxlY3RlZEl0ZW1zTWFwQ2hhbmdlZC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpXHJcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkNvbnRleHQpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0aW9uQ29udGV4dD8uc2VsZWN0ZWRJdGVtc01hcC52YWx1ZXMoKSk7XHJcblxyXG4gICAgICAgIHRoaXMuYXZhaWxhYmxlSXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkNvbnRleHQuc2VsZWN0ZWRJdGVtc01hcC5oYXMoaXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0LnJvd0NoZWNrYm94ZXMuYXQoaW5kZXgpLnNldFZhbHVlKHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SW50ZXJuYWxpemVkVGVtcGxhdGVzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY3VzdG9tQXZhaWxhYmxlSGVhZGVyVGVtcGxhdGUpIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbGl6ZWRBdmFpbGFibGVIZWFkZXJUZW1wbGF0ZSA9IHRoaXMuY3VzdG9tQXZhaWxhYmxlSGVhZGVyVGVtcGxhdGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmludGVybmFsaXplZEF2YWlsYWJsZUhlYWRlclRlbXBsYXRlID0gdGhpcy5kZWZhdWx0QXZhaWxhYmxlSGVhZGVyVGVtcGxhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY3VzdG9tQXZhaWxhYmxlSXRlbVRlbXBsYXRlKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWxpemVkQXZhaWxhYmxlSXRlbVRlbXBsYXRlID0gdGhpcy5jdXN0b21BdmFpbGFibGVJdGVtVGVtcGxhdGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmludGVybmFsaXplZEF2YWlsYWJsZUl0ZW1UZW1wbGF0ZSA9IHRoaXMuZGVmYXVsdEF2YWlsYWJsZUl0ZW1UZW1wbGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jdXN0b21TZWxlY3RlZEl0ZW1UZW1wbGF0ZSkge1xyXG4gICAgICB0aGlzLmludGVybmFsaXplZFNlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGhpcy5jdXN0b21TZWxlY3RlZEl0ZW1UZW1wbGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWxpemVkU2VsZWN0ZWRJdGVtVGVtcGxhdGUgPSB0aGlzLmRlZmF1bHRTZWxlY3RlZEl0ZW1UZW1wbGF0ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBlY092ZXJsYXlcclxuICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3cgY2FyZFwiXHJcbiAgICAgW3N0YXR1c109XCJ0YWJsZVN0YXR1cz8uc3RhdHVzXCJcclxuICAgICBbbWVzc2FnZV09XCJ0YWJsZVN0YXR1cz8ubWVzc2FnZVwiXHJcbiAgICAgW2Rpc3BsYXlBc01hc2tdPVwidHJ1ZVwiPlxyXG4gICAgPGVjLXNlYXJjaGFibGUtdGFibGUgaWQ9XCJ7e2lkfX1fc2VhcmNoYWJsZVRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleC1ncm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWxsUGFyZW50SGVpZ2h0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVIZWFkZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVNlYXJjaENvbnRyb2xdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcmVtb3ZlQ2FyZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCI1MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbb2JqZWN0VHlwZV09XCJpdGVtTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybU1vZGVsXT1cImZvcm1Nb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZHldPVwicmVhZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2dldEl0ZW1zXT1cImdldEl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW25vRGF0YU1lc3NhZ2VdPVwibm9EYXRhTWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0aW9uQ29udGV4dF09XCJzZWxlY3Rpb25Db250ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwidGFibGVTdGF0dXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW1zQ2hhbmdlKT1cIm9uSXRlbXNDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1lYy1zZWFyY2hhYmxlLXRhYmxlLWZsZXgtcHJvcGVydGllc109XCIoYXZhaWxhYmxlSXRlbXMubGVuZ3RoIHx8IHRhYmxlU3RhdHVzLnN0YXR1cyA9PT0gJ3BlbmRpbmcnIHx8IHRhYmxlU3RhdHVzLnN0YXR1cyA9PT0gJ2Vycm9yJyApID8gJzEgMSBhdXRvJyA6ICcwIDEgYXV0bydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tZWMtc2VhcmNoYWJsZS10YWJsZS1oZWlnaHQtY2FwdGlvbi1mb290ZXJdPVwiJ2NhbGMoMi41cmVtICsgMXB4KSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmxlTGF5b3V0Rml4ZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxoZWFkZXIgKm5nSWY9XCJjdXN0b21BdmFpbGFibGVIZWFkZXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtaGVhZGVyIGZsZXgtc2hyaW5rXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzcmVtO1wiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlXCI+e3thdmFpbGFibGVUaXRsZSB8IHRyYW5zbGF0ZX19PC9oMz5cclxuICAgICAgICA8L2hlYWRlcj5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciBlY1RhYmxlU2VsZWN0YWJsZVJvd1xyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGlvbkNvbnRleHRdPVwic2VsZWN0aW9uQ29udGV4dFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJvcmRlci1ib3R0b20tMFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImludGVybmFsaXplZEF2YWlsYWJsZUhlYWRlclRlbXBsYXRlO1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGhlYWQ+XHJcblxyXG4gICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhdmFpbGFibGVJdGVtczsgaW5kZXggYXMgcm93SW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPHRyIGVjVGFibGVTZWxlY3RhYmxlUm93XHJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGlvbkNvbnRleHRdPVwic2VsZWN0aW9uQ29udGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Jvd0luZGV4XT1cInJvd0luZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICBbaXNDaGVja2JveERpc2FibGVkXT1cIml0ZW0ucHJldmVudFJlbW92ZSB8fCBzZWxlY3Rpb25Db250ZXh0LmlzU2VsZWN0aW5nQWxsSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc1NlbGVjdGVkXT1cInNlbGVjdGlvbkNvbnRleHQ/LnNlbGVjdGVkSXRlbXNNYXAuaGFzKGl0ZW0uaWQpIHx8IHNlbGVjdGlvbkNvbnRleHQuaXNTZWxlY3RpbmdBbGxJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tZWMtdGFibGUtc2VsZWN0YWJsZS1yb3ctdmVydGljYWwtYWxpZ24tY2hlY2tib3gtdGRdPVwiJ21pZGRsZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW50ZXJuYWxpemVkQXZhaWxhYmxlSXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBpdGVtfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgIDwvZWMtc2VhcmNoYWJsZS10YWJsZT5cclxuXHJcbiAgICA8c2VjdGlvbiBpZD1cInt7aWR9fV9zZWxlY3RlZEl0ZW1zXCJcclxuICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQtaXRlbXMgZmxleC1ncm93IGQtZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3Rpb25Db250ZXh0LmlzU2VsZWN0aW5nQWxsSXRlbXNcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmxleC1ncm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGJvcmRlci1ib3R0b20gcHgtMlwiXHJcbiAgICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDNyZW07XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtaGVhZGluZy0yIGZvbnQtY29sb3ItcHJpbWFyeSBmbGV4LWdyb3cgdGV4dC10cnVuY2F0ZVwiPnt7c2VsZWN0ZWRUaXRsZSB8XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2VsZWN0ZWRJdGVtc0NsZWFyYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVjTGlua0J1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7aWR9fV9jbGVhclNlbGVjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGwtMiBtbC1hdXRvIGZvbnQtc2l6ZS1iYXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXJTZWxlY3Rpb25DbGljaygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPkNsZWFyU2VsZWN0aW9uX1RDPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tYXV0byB0ZXh0LWhlYWRpbmctMlwiXHJcbiAgICAgICAgICAgICAgICAgIFtpbm5lckh0bWxdPVwic2VsZWN0QWxsSXRlbXNNZXNzYWdlIHwgdHJhbnNsYXRlXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxlYy10YWJsZSAqbmdJZj1cIiFzZWxlY3Rpb25Db250ZXh0LmlzU2VsZWN0aW5nQWxsSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93IGlzLWZpeGVkXCI+XHJcbiAgICAgICAgICAgIDxjb2xncm91cD5cclxuICAgICAgICAgICAgICAgIDxjb2w+XHJcbiAgICAgICAgICAgICAgICA8Y29sIHN0eWxlPVwid2lkdGg6IDJyZW07XCI+XHJcbiAgICAgICAgICAgIDwvY29sZ3JvdXA+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0ciBzdHlsZT1cImhlaWdodDogM3JlbTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY29sc3Bhbj1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtMiBib3JkZXItYm90dG9tLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1oZWFkaW5nLTIgZm9udC1jb2xvci1wcmltYXJ5IGZsZXgtZ3JvdyB0ZXh0LXRydW5jYXRlXCI+e3tzZWxlY3RlZFRpdGxlIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzZWxlY3RlZEl0ZW1zQ2xlYXJhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNMaW5rQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3tpZH19X2NsZWFyU2VsZWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwbC0yIG1sLWF1dG8gZm9udC1zaXplLWJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGVhclNlbGVjdGlvbkNsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU+Q2xlYXJTZWxlY3Rpb25fVEM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcblxyXG4gICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtczsgbGFzdCBhcyBpc0xhc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInNlbGVjdGVkX3Jvd197e2l0ZW0uaWR9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItYm90dG9tXT1cIiFpc0xhc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW50ZXJuYWxpemVkU2VsZWN0ZWRJdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGl0ZW19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFjdGlvbnMtY29sIHRleHQtcmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVjLWJ1dHRvbiBpZD1cInt7aWR9fV9yZW1vdmVTZWxlY3RlZF97e2l0ZW0uaWR9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0ucHJldmVudFJlbW92ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJpY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImVjLWljb24gaWNvbi1jYW5jZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJyZW1vdmVTZWxlY3RlZEl0ZW0oaXRlbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZWMtYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cIiFzZWxlY3RlZEl0ZW1zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFub1NlbGVjdGVkSXRlbXNNZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sc3Bhbj1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtMiBuby1kYXRhLW1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7aXRlbU5hbWU6IGl0ZW1OYW1lIHwgdHJhbnNsYXRlfVwiPkl0ZW1QaWNrZXJOb0l0ZW1zU2VsZWN0ZWRfU0M8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIm5vU2VsZWN0ZWRJdGVtc01lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xzcGFuPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC0yIG5vLWRhdGEtbWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT57e25vU2VsZWN0ZWRJdGVtc01lc3NhZ2V9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvZWMtdGFibGU+XHJcblxyXG4gICAgICAgIDxmb290ZXIgaWQ9XCJzZWxlY3RlZEl0ZW1zRm9vdGVyXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggJiYgIXNlbGVjdGlvbkNvbnRleHQuaXNTZWxlY3RpbmdBbGxJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXNocmluayBweC0yIGJvcmRlci10b3AgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDIuNXJlbSArIDFweCk7XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtYXV0byB0ZXh0LWNhcHRpb24tMSBmb250LWNvbG9yLWhpbnRcIj5cclxuICAgICAgICAgICAgICAgIHt7c2VsZWN0ZWRJdGVtcy5sZW5ndGh9fSB7e2l0ZW1OYW1lIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZm9vdGVyPlxyXG4gICAgPC9zZWN0aW9uPlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEF2YWlsYWJsZUhlYWRlclRlbXBsYXRlPlxyXG4gICAgPCEtLSA8dGggKm5nSWY9XCIhZW5hYmxlU2VsZWN0QWxsSXRlbXNcIiBjbGFzcz1cInRleHQtaGVhZGluZy0yIGZvbnQtY29sb3ItcHJpbWFyeSBib3JkZXItYm90dG9tLTBcIj57e2F2YWlsYWJsZVRpdGxlIHwgdHJhbnNsYXRlfX08L3RoPiAtLT5cclxuXHJcbiAgICA8dGggY2xhc3M9XCJ0ZXh0LWhlYWRpbmctMiBmb250LWNvbG9yLXByaW1hcnkgYm9yZGVyLWJvdHRvbS0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgXCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWF2YWlsYWJsZUNoZWNrYm94VGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPnt7YXZhaWxhYmxlVGl0bGUgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJhdmFpbGFibGVDaGVja2JveFRleHRcIlxyXG4gICAgICAgICAgICAgICAgICBpZD1cInNlbGVjdGVkQ291bnRcIj57e2F2YWlsYWJsZUNoZWNrYm94VGV4dH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd1NlbGVjdEFsbEl0ZW1zQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBlY0xpbmtCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICBpZD1cInNlbGVjdEFsbEl0ZW1zQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QWxsSXRlbXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbC0yXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAoJ1NlbGVjdEFsbEl0ZW1QaWNrZXJJdGVtc19UQycpIHwgdHJhbnNsYXRlOnsgY291bnQ6IHRvdGFsSXRlbXNCZWZvcmVQYWdpbmcsIGl0ZW1OYW1lOiBpdGVtTmFtZSB9IH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC90aD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEF2YWlsYWJsZUl0ZW1UZW1wbGF0ZVxyXG4gICAgICAgICAgICAgbGV0LWl0ZW0+XHJcbiAgICA8dGQ+e3tpdGVtLmxhYmVsfX08L3RkPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0U2VsZWN0ZWRJdGVtVGVtcGxhdGVcclxuICAgICAgICAgICAgIGxldC1pdGVtPlxyXG4gICAge3tpdGVtLmxhYmVsfX1cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
@@ -9275,6 +9275,7 @@ class ItemPickerComponent {
|
|
9275
9275
|
});
|
9276
9276
|
this.selectedItems = Array.from(this.selectionContext.selectedItemsMap.values());
|
9277
9277
|
this.selectionContext.isSelectingAllItems = false;
|
9278
|
+
this.updateAvailableCheckboxText();
|
9278
9279
|
}
|
9279
9280
|
/**
|
9280
9281
|
* Called when the remove item button is clicked for a selected item
|
@@ -9293,6 +9294,7 @@ class ItemPickerComponent {
|
|
9293
9294
|
this.selectionContext.selectedItemsMap.delete(removeItem.id);
|
9294
9295
|
this.selectedItems = Array.from(this.selectionContext.selectedItemsMap.values());
|
9295
9296
|
}
|
9297
|
+
this.updateAvailableCheckboxText();
|
9296
9298
|
}
|
9297
9299
|
/**
|
9298
9300
|
* Click handler for the select all items button
|
@@ -9361,7 +9363,10 @@ class ItemPickerComponent {
|
|
9361
9363
|
});
|
9362
9364
|
}
|
9363
9365
|
updateAvailableCheckboxText() {
|
9364
|
-
if (
|
9366
|
+
if (this.selectionContext.isSelectingAllItems) {
|
9367
|
+
this.availableCheckboxText = this.translateService.instant('AllItemPickerItemsSelected_SC', { count: this.totalItemsBeforePaging, itemName: this.itemName });
|
9368
|
+
}
|
9369
|
+
else {
|
9365
9370
|
const checkedCount = this.selectionContext.rowCheckboxes.controls.map(c => c.value).filter(v => v).length;
|
9366
9371
|
if (checkedCount > 0) {
|
9367
9372
|
this.availableCheckboxText = this.translateService.instant('CountSelected_TC', { count: checkedCount });
|
@@ -9370,9 +9375,6 @@ class ItemPickerComponent {
|
|
9370
9375
|
this.availableCheckboxText = '';
|
9371
9376
|
}
|
9372
9377
|
}
|
9373
|
-
else {
|
9374
|
-
this.availableCheckboxText = this.translateService.instant('AllItemPickerItemsSelected_SC', { count: this.totalItemsBeforePaging, itemName: this.itemName });
|
9375
|
-
}
|
9376
9378
|
}
|
9377
9379
|
/**
|
9378
9380
|
* Watch to be told if changes to the map were made outside of the component and if so update
|