@skyux/lookup 4.17.2 → 4.17.7
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/CHANGELOG.md +20 -0
- package/bundles/skyux-lookup.umd.js +29 -15
- package/bundles/skyux-lookup.umd.js.map +1 -1
- package/bundles/skyux-lookup.umd.min.js +1 -1
- package/bundles/skyux-lookup.umd.min.js.map +1 -1
- package/esm2015/modules/autocomplete/autocomplete.component.js +6 -2
- package/esm2015/modules/country-field/country-field.component.js +3 -3
- package/esm2015/modules/lookup/lookup-show-more-modal.component.js +1 -1
- package/esm2015/modules/lookup/lookup.component.js +22 -12
- package/esm5/modules/autocomplete/autocomplete.component.js +6 -2
- package/esm5/modules/country-field/country-field.component.js +3 -3
- package/esm5/modules/lookup/lookup-show-more-modal.component.js +1 -1
- package/esm5/modules/lookup/lookup.component.js +22 -12
- package/fesm2015/skyux-lookup.js +29 -15
- package/fesm2015/skyux-lookup.js.map +1 -1
- package/fesm5/skyux-lookup.js +29 -15
- package/fesm5/skyux-lookup.js.map +1 -1
- package/modules/autocomplete/autocomplete.component.d.ts +4 -0
- package/modules/lookup/lookup.component.d.ts +4 -0
- package/package.json +1 -1
- package/skyux-lookup.metadata.json +1 -1
|
@@ -488,7 +488,8 @@ var SkyAutocompleteComponent = /** @class */ (function () {
|
|
|
488
488
|
if (!this.overlay) {
|
|
489
489
|
var overlay = this.overlayService.create({
|
|
490
490
|
enableClose: false,
|
|
491
|
-
enablePointerEvents: true
|
|
491
|
+
enablePointerEvents: true,
|
|
492
|
+
wrapperClass: this.wrapperClass
|
|
492
493
|
});
|
|
493
494
|
overlay.attachTemplate(this.resultsTemplateRef);
|
|
494
495
|
this.overlay = overlay;
|
|
@@ -646,6 +647,9 @@ var SkyAutocompleteComponent = /** @class */ (function () {
|
|
|
646
647
|
__decorate([
|
|
647
648
|
Input()
|
|
648
649
|
], SkyAutocompleteComponent.prototype, "messageStream", null);
|
|
650
|
+
__decorate([
|
|
651
|
+
Input()
|
|
652
|
+
], SkyAutocompleteComponent.prototype, "wrapperClass", void 0);
|
|
649
653
|
__decorate([
|
|
650
654
|
Input()
|
|
651
655
|
], SkyAutocompleteComponent.prototype, "propertiesToSearch", null);
|
|
@@ -710,4 +714,4 @@ var SkyAutocompleteComponent = /** @class */ (function () {
|
|
|
710
714
|
return SkyAutocompleteComponent;
|
|
711
715
|
}());
|
|
712
716
|
export { SkyAutocompleteComponent };
|
|
713
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9sb29rdXAvIiwic291cmNlcyI6WyJtb2R1bGVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNsQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFDTCxTQUFTLElBQUksbUJBQW1CLEVBQ2hDLE9BQU8sRUFFUixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxZQUFZLEVBQ1osU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFNeEIsT0FBTyxFQUNMLDBCQUEwQixFQUMzQixNQUFNLG1DQUFtQyxDQUFDO0FBa0IzQyxPQUFPLEVBQ0wsNkJBQTZCLEVBQzlCLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxFQUNMLG9DQUFvQyxFQUNyQyxNQUFNLHdDQUF3QyxDQUFDO0FBRWhELE9BQU8sRUFDTCw2QkFBNkIsRUFDOUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQVV4QyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFRakI7SUFxVkUsa0NBQ1UsY0FBaUMsRUFDakMsVUFBc0IsRUFDdEIsWUFBNkIsRUFDN0IsY0FBNkMsRUFDN0MsY0FBaUMsRUFDckIsZUFBd0M7UUFM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LENBQUM7d0VBQzJDO0lBSzdDO1FBSEMsU0FBUyxDQUFDLFlBQVksRUFBRTtZQUN2QixJQUFJLEVBQUUsVUFBVTtTQUNqQixDQUFDOzhEQU9EO0lBMVNVLHdCQUF3QjtRQU5wQyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLG8zR0FBNEM7WUFFNUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O1NBQ2hELENBQUM7UUE0VkcsV0FBQSxRQUFRLEVBQUUsQ0FBQTtPQTNWRix3QkFBd0IsQ0E4dUJwQztJQUFELCtCQUFDO0NBQUEsQUE5dUJELElBOHVCQztTQTl1Qlksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LFxuICBTa3lBZmZpeGVyLFxuICBTa3lBZmZpeFNlcnZpY2UsXG4gIFNreU92ZXJsYXlJbnN0YW5jZSxcbiAgU2t5T3ZlcmxheVNlcnZpY2Vcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlXG59IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gIGZyb21FdmVudCBhcyBvYnNlcnZhYmxlRnJvbUV2ZW50LFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb25cbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIGRlYm91bmNlVGltZSxcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgU2t5QXV0b2NvbXBsZXRlTWVzc2FnZVxufSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1tZXNzYWdlJztcblxuaW1wb3J0IHtcbiAgU2t5QXV0b2NvbXBsZXRlTWVzc2FnZVR5cGVcbn0gZnJvbSAnLi90eXBlcy9hdXRvY29tcGxldGUtbWVzc2FnZS10eXBlJztcblxuaW1wb3J0IHtcbiAgU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb25cbn0gZnJvbSAnLi90eXBlcy9hdXRvY29tcGxldGUtc2VhcmNoLWZ1bmN0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb25GaWx0ZXJcbn0gZnJvbSAnLi90eXBlcy9hdXRvY29tcGxldGUtc2VhcmNoLWZ1bmN0aW9uLWZpbHRlcic7XG5cbmltcG9ydCB7XG4gIFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZVxufSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWxlY3Rpb24tY2hhbmdlJztcblxuaW1wb3J0IHtcbiAgU2t5QXV0b2NvbXBsZXRlU2hvd01vcmVBcmdzXG59IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNob3ctbW9yZS1hcmdzJztcblxuaW1wb3J0IHtcbiAgU2t5QXV0b2NvbXBsZXRlQWRhcHRlclNlcnZpY2Vcbn0gZnJvbSAnLi9hdXRvY29tcGxldGUtYWRhcHRlci5zZXJ2aWNlJztcblxuaW1wb3J0IHtcbiAgc2t5QXV0b2NvbXBsZXRlRGVmYXVsdFNlYXJjaEZ1bmN0aW9uXG59IGZyb20gJy4vYXV0b2NvbXBsZXRlLWRlZmF1bHQtc2VhcmNoLWZ1bmN0aW9uJztcblxuaW1wb3J0IHtcbiAgU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmVcbn0gZnJvbSAnLi9hdXRvY29tcGxldGUtaW5wdXQuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuaW50ZXJmYWNlIFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdCB7XG4gIGVsZW1lbnRJZDogc3RyaW5nO1xuICBkYXRhOiBhbnk7XG59XG5cbmxldCB1bmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1hdXRvY29tcGxldGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNreUF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgLy8jcmVnaW9uIHB1YmxpY19hcGlcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBIVE1MIGVsZW1lbnQgSUQgKHdpdGhvdXQgdGhlIGxlYWRpbmcgYCNgKSBvZiB0aGUgZWxlbWVudCB0aGF0IGxhYmVsc1xuICAgKiB0aGUgYXV0b2NvbXBsZXRlIHRleHQgaW5wdXQuIFRoaXMgc2V0cyB0aGUgaW5wdXQncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBzdGF0aWMgZGF0YSBzb3VyY2UgZm9yIHRoZSBhdXRvY29tcGxldGUgY29tcG9uZW50IHRvIHNlYXJjaFxuICAgKiB3aGVuIHVzZXJzIGVudGVyIHRleHQuIEZvciBhIGR5bmFtaWMgZGF0YSBzb3VyY2Ugc3VjaCBhcyBhbiBhcnJheSB0aGF0XG4gICAqIGNoYW5nZXMgZHVlIHRvIHNlcnZlciBjYWxscywgdXNlIHRoZSBgc2VhcmNoYCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRhKHZhbHVlOiBhbnlbXSkge1xuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyBtYW55IG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBzZWFyY2hpbmcgd2hpbGUgdXNlcnNcbiAgICogZW50ZXIgdGV4dCBpbiB0aGUgYXV0b2NvbXBsZXRlIGZpZWxkLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRlYm91bmNlVGltZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fZGVib3VuY2VUaW1lID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlYm91bmNlVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9kZWJvdW5jZVRpbWUgfHwgMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gb2JqZWN0IHByb3BlcnR5IHRvIGRpc3BsYXkgaW4gdGhlIHRleHQgaW5wdXQgYWZ0ZXIgdXNlcnNcbiAgICogc2VsZWN0IGFuIGl0ZW0gaW4gdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqIEBkZWZhdWx0IG5hbWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGVzY3JpcHRvclByb3BlcnR5KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kZXNjcmlwdG9yUHJvcGVydHkgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVzY3JpcHRvclByb3BlcnR5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Rlc2NyaXB0b3JQcm9wZXJ0eSB8fCAnbmFtZSc7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc3BsYXkgYSBidXR0b24gaW4gdGhlIGRyb3Bkb3duIHRoYXQgb3BlbnMgYSBwaWNrZXIgd2hlcmUgdXNlcnMgY2FuIHZpZXcgYWxsIG9wdGlvbnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZW5hYmxlU2hvd01vcmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIG9ic2VydmFibGUgb2YgYFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VgIHRoYXQgY2FuIGNsb3NlIHRoZSBkcm9wZG93bi5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1lc3NhZ2VTdHJlYW0odmFsdWU6IFN1YmplY3Q8U2t5QXV0b2NvbXBsZXRlTWVzc2FnZT4pIHtcbiAgICB0aGlzLl9tZXNzYWdlU3RyZWFtID0gdmFsdWU7XG4gICAgdGhpcy5pbml0TWVzc2FnZVN0cmVhbSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBtZXNzYWdlU3RyZWFtKCk6IFN1YmplY3Q8U2t5QXV0b2NvbXBsZXRlTWVzc2FnZT4ge1xuICAgIHJldHVybiB0aGlzLl9tZXNzYWdlU3RyZWFtO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgb2JqZWN0IHByb3BlcnRpZXMgdG8gc2VhcmNoLlxuICAgKiBAZGVmYXVsdCBbJ25hbWUnXVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwcm9wZXJ0aWVzVG9TZWFyY2godmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fcHJvcGVydGllc1RvU2VhcmNoID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByb3BlcnRpZXNUb1NlYXJjaCgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRpZXNUb1NlYXJjaCB8fCBbJ25hbWUnXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBmdW5jdGlvbiB0byBkeW5hbWljYWxseSBtYW5hZ2UgdGhlIGRhdGEgc291cmNlIHdoZW4gdXNlcnNcbiAgICogY2hhbmdlIHRoZSB0ZXh0IGluIHRoZSBhdXRvY29tcGxldGUgZmllbGQuIFRoZSBzZWFyY2ggZnVuY3Rpb24gbXVzdCByZXR1cm5cbiAgICogYW4gYXJyYXkgb3IgYSBwcm9taXNlIG9mIGFuIGFycmF5LiBUaGUgYHNlYXJjaGAgcHJvcGVydHkgaXMgcGFydGljdWxhcmx5XG4gICAqIHVzZWZ1bCB3aGVuIHRoZSBkYXRhIHNvdXJjZSBkb2VzIG5vdCBsaXZlIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VhcmNoKHZhbHVlOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbikge1xuICAgIHRoaXMuX3NlYXJjaCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWFyY2goKTogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2ggfHwgc2t5QXV0b2NvbXBsZXRlRGVmYXVsdFNlYXJjaEZ1bmN0aW9uKHtcbiAgICAgIHByb3BlcnRpZXNUb1NlYXJjaDogdGhpcy5wcm9wZXJ0aWVzVG9TZWFyY2gsXG4gICAgICBzZWFyY2hGaWx0ZXJzOiB0aGlzLnNlYXJjaEZpbHRlcnNcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSB0ZW1wbGF0ZSB0byBmb3JtYXQgZWFjaCBzZWFyY2ggcmVzdWx0IGluIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKiBUaGUgYXV0b2NvbXBsZXRlIGNvbXBvbmVudCBpbmplY3RzIHNlYXJjaCByZXN1bHQgdmFsdWVzIGludG8gdGhlIHRlbXBsYXRlXG4gICAqIGFzIGBpdGVtYCB2YXJpYWJsZXMgdGhhdCByZWZlcmVuY2UgYWxsIG9mIHRoZSBvYmplY3QgcHJvcGVydGllcyBvZiB0aGUgc2VhcmNoIHJlc3VsdHMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlYXJjaFJlc3VsdFRlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5fc2VhcmNoUmVzdWx0VGVtcGxhdGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VhcmNoUmVzdWx0VGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFJlc3VsdFRlbXBsYXRlIHx8IHRoaXMuZGVmYXVsdFNlYXJjaFJlc3VsdFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IHVzZXJzIG11c3QgZW50ZXIgYmVmb3JlXG4gICAqIHRoZSBhdXRvY29tcGxldGUgY29tcG9uZW50IHNlYXJjaGVzIHRoZSBkYXRhIHNvdXJjZSBhbmQgZGlzcGxheXMgc2VhcmNoXG4gICAqIHJlc3VsdHMgaW4gdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnMgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLl9zZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnMgPiAwKVxuICAgICAgPyB0aGlzLl9zZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnMgOiAxO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBhcnJheSBvZiBmdW5jdGlvbnMgdG8gY2FsbCBhZ2FpbnN0IGVhY2ggc2VhcmNoIHJlc3VsdCBpbiBvcmRlclxuICAgKiB0byBmaWx0ZXIgdGhlIHNlYXJjaCByZXN1bHRzIHdoZW4gdXNpbmcgdGhlIGRlZmF1bHQgc2VhcmNoIGZ1bmN0aW9uLiBXaGVuXG4gICAqIHVzaW5nIHRoZSBgc2VhcmNoYCBwcm9wZXJ0eSB0byBzcGVjaWZ5IGEgY3VzdG9tIHNlYXJjaCBmdW5jdGlvbiwgeW91IG11c3RcbiAgICogbWFudWFsbHkgYXBwbHkgZmlsdGVycyBpbnNpZGUgdGhhdCBmdW5jdGlvbi4gVGhlIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGB0cnVlYFxuICAgKiBvciBgZmFsc2VgIGZvciBlYWNoIHJlc3VsdCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRvIGRpc3BsYXkgaXQgaW4gdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VhcmNoRmlsdGVyczogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb25GaWx0ZXJbXTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWFyY2ggcmVzdWx0cyB0byBkaXNwbGF5IGluIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgY29tcG9uZW50IGRpc3BsYXlzIGFsbCBtYXRjaGluZyByZXN1bHRzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWFyY2hSZXN1bHRzTGltaXQodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3NlYXJjaFJlc3VsdHNMaW1pdCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWFyY2hSZXN1bHRzTGltaXQoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5fc2VhcmNoUmVzdWx0c0xpbWl0KSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VhcmNoUmVzdWx0c0xpbWl0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5lbmFibGVTaG93TW9yZSA/IDUgOiB0aGlzLl9zZWFyY2hSZXN1bHRzTGltaXQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNwbGF5IGEgYnV0dG9uIHRoYXQgbGV0cyB1c2VycyBhZGQgb3B0aW9ucyB0byB0aGUgZGF0YSBzb3VyY2UuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0FkZEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHRleHQgdG8gZGlzcGxheSB3aGVuIG5vIHNlYXJjaCByZXN1bHRzIGFyZSBmb3VuZC5cbiAgICogQGRlZmF1bHQgTm8gbWF0Y2hlcyBmb3VuZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG5vUmVzdWx0c0ZvdW5kVGV4dDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgdGhlIGJ1dHRvbiB0byBhZGQgb3B0aW9ucyB0byB0aGUgZGF0YSBzb3VyY2UuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGFkZENsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgYnV0dG9uIHRvIHZpZXcgYWxsIG9wdGlvbnMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNob3dNb3JlQ2xpY2s6IEV2ZW50RW1pdHRlcjxTa3lBdXRvY29tcGxldGVTaG93TW9yZUFyZ3M+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCBpdGVtcyBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IHNlbGVjdGlvbkNoYW5nZSgpOiBFdmVudEVtaXR0ZXI8U2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkNoYW5nZTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiB0ZW1wbGF0ZV9wcm9wZXJ0aWVzXG5cbiAgcHVibGljIGdldCBzZWFyY2hSZXN1bHRzKCk6IFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdFtdIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoUmVzdWx0cyB8fCBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGlnaGxpZ2h0VGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9oaWdobGlnaHRUZXh0IHx8ICcnO1xuICB9XG5cbiAgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyByZXN1bHRzTGlzdElkOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlc3VsdHNXcmFwcGVySWQ6IHN0cmluZztcblxuICBwdWJsaWMgc2VhcmNoVGV4dDogc3RyaW5nO1xuXG4gIHB1YmxpYyBnZXQgc2hvd0FjdGlvbnNBcmVhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dBZGRCdXR0b24gfHwgdGhpcy5lbmFibGVTaG93TW9yZTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIEBWaWV3Q2hpbGQoJ2RlZmF1bHRTZWFyY2hSZXN1bHRUZW1wbGF0ZScsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IGZhbHNlXG4gIH0pXG4gIHByaXZhdGUgZGVmYXVsdFNlYXJjaFJlc3VsdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpXG4gIHByaXZhdGUgc2V0IGlucHV0RGlyZWN0aXZlKGRpcmVjdGl2ZTogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpIHtcbiAgICBpZiAodGhpcy5faW5wdXREaXJlY3RpdmUgIT09IGRpcmVjdGl2ZSkge1xuXG4gICAgICBpZiAoIWRpcmVjdGl2ZSkge1xuICAgICAgICB0aHJvdyBFcnJvcihbXG4gICAgICAgICAgJ1RoZSBTa3lBdXRvY29tcGxldGVDb21wb25lbnQgcmVxdWlyZXMgYSBDb250ZW50Q2hpbGQgaW5wdXQgb3InLFxuICAgICAgICAgICd0ZXh0YXJlYSBib3VuZCB3aXRoIHRoZSBTa3lBdXRvY29tcGxldGUgZGlyZWN0aXZlLiBGb3IgZXhhbXBsZTonLFxuICAgICAgICAgICdgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgc2t5QXV0b2NvbXBsZXRlPmAuJ1xuICAgICAgICBdLmpvaW4oJyAnKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFVuc3Vic2NyaWJlIGZyb20gb2xkIHN1YnNjcmlwdGlvbnMgb24gYW55IHByZXZpb3VzIGlucHV0IGRpcmVjdGl2ZVxuICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZVVuc3Vic2NyaWJlLm5leHQoKTtcblxuICAgICAgdGhpcy5faW5wdXREaXJlY3RpdmUgPSBkaXJlY3RpdmU7XG5cbiAgICAgIHRoaXMuX2lucHV0RGlyZWN0aXZlLmRpc3BsYXlXaXRoID0gdGhpcy5kZXNjcmlwdG9yUHJvcGVydHk7XG5cbiAgICAgIHRoaXMuX2lucHV0RGlyZWN0aXZlLnRleHRDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmlucHV0RGlyZWN0aXZlVW5zdWJzY3JpYmUpLFxuICAgICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLnNlYXJjaFRleHRDaGFuZ2VkKGNoYW5nZS52YWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9pbnB1dERpcmVjdGl2ZS5ibHVyXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmlucHV0RGlyZWN0aXZlVW5zdWJzY3JpYmUpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZS5vblRvdWNoZWQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2lucHV0RGlyZWN0aXZlLmZvY3VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmlucHV0RGlyZWN0aXZlVW5zdWJzY3JpYmUpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuc2hvd0FjdGlvbnNBcmVhKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaW5wdXREaXJlY3RpdmUoKTogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dERpcmVjdGl2ZTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3Jlc3VsdHNUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZlxuICB9KVxuICBwcml2YXRlIHJlc3VsdHNUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCdyZXN1bHRzUmVmJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWZcbiAgfSlcbiAgcHJpdmF0ZSBzZXQgcmVzdWx0c1JlZih2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fcmVzdWx0c1JlZiA9IHZhbHVlO1xuICAgICAgdGhpcy5kZXN0cm95QWZmaXhlcigpO1xuICAgICAgdGhpcy5jcmVhdGVBZmZpeGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcmVzdWx0c1JlZigpOiBFbGVtZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0c1JlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRleCB0aGF0IGluZGljYXRlcyB3aGljaCBkZXNjZW5kYW50IG9mIHRoZSBvdmVybGF5IGN1cnJlbnRseSBoYXMgZm9jdXMuXG4gICAqL1xuICBwcml2YXRlIGFjdGl2ZUVsZW1lbnRJbmRleDogbnVtYmVyID0gLTE7XG5cbiAgcHJpdmF0ZSBhZmZpeGVyOiBTa3lBZmZpeGVyO1xuXG4gIHByaXZhdGUgaW5wdXREaXJlY3RpdmVVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBtZXNzYWdlU3RyZWFtU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIG92ZXJsYXk6IFNreU92ZXJsYXlJbnN0YW5jZTtcblxuICAvKipcbiAgICogRWxlbWVudHMgd2l0aGluIHRoZSBhdXRvY29tcGxldGUgZHJvcGRvd24gdGhhdCBhcmUgZm9jdXNhYmxlLlxuICAgKiBUaGVzZSBhcmUgdHlwaWNhbGx5IHRoZSBzZWFyY2ggcmVzdWx0cyBhbmQgYWN0aW9uIGJ1dHRvbnMsIGJ1dCBjb3VsZCBhbHNvIGJlXG4gICAqIGVsZW1lbnRzIHByb3ZpZGVkIGluIHRoZSBjb25zdW1lcidzIG93biB0ZW1wbGF0ZS5cbiAgICovXG4gIHByaXZhdGUgb3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgcHJpdmF0ZSBfZGF0YTogYW55W107XG4gIHByaXZhdGUgX2RlYm91bmNlVGltZTogbnVtYmVyO1xuICBwcml2YXRlIF9kZXNjcmlwdG9yUHJvcGVydHk6IHN0cmluZztcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0VGV4dDogc3RyaW5nO1xuICBwcml2YXRlIF9pbnB1dERpcmVjdGl2ZTogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmU7XG4gIHByaXZhdGUgX21lc3NhZ2VTdHJlYW06IFN1YmplY3Q8U2t5QXV0b2NvbXBsZXRlTWVzc2FnZT47XG4gIHByaXZhdGUgX3Byb3BlcnRpZXNUb1NlYXJjaDogc3RyaW5nW107XG4gIHByaXZhdGUgX3Jlc3VsdHNSZWY6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgX3NlYXJjaDogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb247XG4gIHByaXZhdGUgX3NlYXJjaFJlc3VsdHM6IFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdFtdO1xuICBwcml2YXRlIF9zZWFyY2hSZXN1bHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHJpdmF0ZSBfc2VhcmNoUmVzdWx0c0xpbWl0OiBudW1iZXI7XG4gIHByaXZhdGUgX3NlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVyczogbnVtYmVyO1xuICBwcml2YXRlIF9zZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZSxcbiAgICBwcml2YXRlIGFkYXB0ZXJTZXJ2aWNlOiBTa3lBdXRvY29tcGxldGVBZGFwdGVyU2VydmljZSxcbiAgICBwcml2YXRlIG92ZXJsYXlTZXJ2aWNlOiBTa3lPdmVybGF5U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGlucHV0Qm94SG9zdFN2Yz86IFNreUlucHV0Qm94SG9zdFNlcnZpY2VcbiAgKSB7XG4gICAgY29uc3QgaWQgPSArK3VuaXF1ZUlkO1xuICAgIHRoaXMucmVzdWx0c0xpc3RJZCA9IGBza3ktYXV0b2NvbXBsZXRlLWxpc3QtJHtpZH1gO1xuICAgIHRoaXMucmVzdWx0c1dyYXBwZXJJZCA9IGBza3ktYXV0b2NvbXBsZXRlLXdyYXBwZXItJHtpZH1gO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaW5wdXREaXJlY3RpdmUpIHtcbiAgICAgIHRocm93IEVycm9yKFtcbiAgICAgICAgJ1RoZSBTa3lBdXRvY29tcGxldGVDb21wb25lbnQgcmVxdWlyZXMgYSBDb250ZW50Q2hpbGQgaW5wdXQgb3InLFxuICAgICAgICAndGV4dGFyZWEgYm91bmQgd2l0aCB0aGUgU2t5QXV0b2NvbXBsZXRlIGRpcmVjdGl2ZS4gRm9yIGV4YW1wbGU6JyxcbiAgICAgICAgJ2A8aW5wdXQgdHlwZT1cInRleHRcIiBza3lBdXRvY29tcGxldGU+YC4nXG4gICAgICBdLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZElucHV0RXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0RGlyZWN0aXZlVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuaW5wdXREaXJlY3RpdmVVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5kZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRCdXR0b25DbGlja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuYWRkQ2xpY2suZW1pdCgpO1xuICAgIHRoaXMuaW5wdXREaXJlY3RpdmUucmVzdG9yZUlucHV0VGV4dFZhbHVlVG9QcmV2aW91c1N0YXRlKCk7XG4gICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8qIFNhbml0eSBjaGVjayAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGV2ZW50LmtleSkge1xuICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5nZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgICBjb25zdCBhY3RpdmVFbGVtZW50SWQgPSBhY3RpdmVFbGVtZW50Py5pZDtcbiAgICAgIGNvbnN0IHRhcmdldElzU2VhcmNoUmVzdWx0ID0gdGhpcy5zZWFyY2hSZXN1bHRzLmZpbmQociA9PiByLmVsZW1lbnRJZCA9PT0gYWN0aXZlRWxlbWVudElkKTtcblxuICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0ICovXG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlICdlbnRlcic6XG5cbiAgICAgICAgICBpZiAodGFyZ2V0SXNTZWFyY2hSZXN1bHQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0U2VhcmNoUmVzdWx0QnlJZChhY3RpdmVFbGVtZW50SWQpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2hvd0FjdGlvbnNBcmVhKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNldFNlYXJjaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICBhY3RpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd0YWInOlxuICAgICAgICAgIGlmICh0YXJnZXRJc1NlYXJjaFJlc3VsdCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RTZWFyY2hSZXN1bHRCeUlkKGFjdGl2ZUVsZW1lbnRJZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXREaXJlY3RpdmUucmVzdG9yZUlucHV0VGV4dFZhbHVlVG9QcmV2aW91c1N0YXRlKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZXNjYXBlJzpcbiAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICBjYXNlICdkb3duJzpcbiAgICAgICAgICB0aGlzLnJlbW92ZUZvY3VzZWRDbGFzcygpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRWxlbWVudEluZGV4ID09PSB0aGlzLm92ZXJsYXlGb2N1c2FibGVFbGVtZW50cy5sZW5ndGggLSAxIHx8XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA9PT0gLTFcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRWxlbWVudEluZGV4ID0gMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPSB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCArIDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYWRkRm9jdXNlZENsYXNzKCk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2Fycm93dXAnOlxuICAgICAgICBjYXNlICd1cCc6XG4gICAgICAgICAgdGhpcy5yZW1vdmVGb2N1c2VkQ2xhc3MoKTtcbiAgICAgICAgICBpZiAodGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPD0gMCkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPSB0aGlzLm92ZXJsYXlGb2N1c2FibGVFbGVtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA9IHRoaXMuYWN0aXZlRWxlbWVudEluZGV4IC0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hZGRGb2N1c2VkQ2xhc3MoKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbW9yZUJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93TW9yZUNsaWNrLmVtaXQoeyBpbnB1dFZhbHVlOiB0aGlzLnNlYXJjaFRleHQgfSk7XG4gICAgdGhpcy5pbnB1dERpcmVjdGl2ZS5yZXN0b3JlSW5wdXRUZXh0VmFsdWVUb1ByZXZpb3VzU3RhdGUoKTtcbiAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlc3VsdE1vdXNlRG93bihpZDogc3RyaW5nLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0U2VhcmNoUmVzdWx0QnlJZChpZCk7XG5cbiAgICBpZiAoIXRoaXMuc2hvd0FjdGlvbnNBcmVhKSB7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNldFNlYXJjaCgpO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgb25SZXN1bHRNb3VzZU1vdmUoaWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChpZCAhPT0gdGhpcy5hY3RpdmVFbGVtZW50SW5kZXgpIHtcbiAgICAgIHRoaXMucmVtb3ZlRm9jdXNlZENsYXNzKCk7XG4gICAgICB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA9IGlkO1xuICAgICAgdGhpcy5hZGRGb2N1c2VkQ2xhc3MoKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzRWxlbWVudEZvY3VzZWQocmVmOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZWYgPT09IHRoaXMub3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzW3RoaXMuYWN0aXZlRWxlbWVudEluZGV4XTtcbiAgfVxuXG4gIHByaXZhdGUgc2VhcmNoVGV4dENoYW5nZWQoc2VhcmNoVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaXNFbXB0eSA9ICghc2VhcmNoVGV4dCB8fCAhc2VhcmNoVGV4dC50cmltKCkgfHwgc2VhcmNoVGV4dC5tYXRjaCgvXlxccyskLykpO1xuXG4gICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgIC8vIEVtaXQgc2VsZWN0aW9uQ2hhbmdlIGlmIHZhbHVlIGhhcyBiZWVuIGNsZWFyZWQuXG4gICAgICBpZiAodGhpcy5pbnB1dERpcmVjdGl2ZS52YWx1ZSkge1xuICAgICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICBzZWxlY3RlZEl0ZW06IHVuZGVmaW5lZFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLnNob3dBY3Rpb25zQXJlYSkge1xuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVzZXRTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTG9uZ0Vub3VnaCA9IChzZWFyY2hUZXh0Lmxlbmd0aCA+PSB0aGlzLnNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVycyk7XG4gICAgY29uc3QgaXNEaWZmZXJlbnQgPSAoc2VhcmNoVGV4dCAhPT0gdGhpcy5zZWFyY2hUZXh0KTtcblxuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQudHJpbSgpO1xuXG4gICAgaWYgKGlzTG9uZ0Vub3VnaCAmJiBpc0RpZmZlcmVudCkge1xuICAgICAgdGhpcy5wZXJmb3JtU2VhcmNoKCkudGhlbigocmVzdWx0czogYW55W10pID0+IHtcbiAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IHJlc3VsdHMubWFwKChyLCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0OiBTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHQgPSB7XG4gICAgICAgICAgICBlbGVtZW50SWQ6IGAke3RoaXMucmVzdWx0c0xpc3RJZH0taXRlbS0ke2l9YCxcbiAgICAgICAgICAgIGRhdGE6IHJcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodFRleHQgPSB0aGlzLnNlYXJjaFRleHQ7XG4gICAgICAgIHRoaXMucmVtb3ZlRm9jdXNlZENsYXNzKCk7XG4gICAgICAgIHRoaXMucmVtb3ZlQWN0aXZlRGVzY2VuZGFudCgpO1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hSZXN1bHRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPSAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgLy8gTGV0IHRoZSByZXN1bHRzIHBvcHVsYXRlIGluIHRoZSBET00gYmVmb3JlIHJlY2FsY3VsYXRpbmcgcGxhY2VtZW50LlxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hZmZpeGVyLnJlYWZmaXgoKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5pbml0T3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBlcmZvcm1TZWFyY2goKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlYXJjaCh0aGlzLnNlYXJjaFRleHQsIHRoaXMuZGF0YSk7XG5cbiAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RTZWFyY2hSZXN1bHRCeUlkKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlYXJjaFJlc3VsdHMuZmluZChyID0+IHIuZWxlbWVudElkID09PSBpZCkuZGF0YTtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSByZXN1bHRbdGhpcy5kZXNjcmlwdG9yUHJvcGVydHldO1xuICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZS52YWx1ZSA9IHJlc3VsdDtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICBzZWxlY3RlZEl0ZW06IHJlc3VsdFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRHJvcGRvd24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXkpIHtcbiAgICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICAgIGVuYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogdHJ1ZVxuICAgICAgfSk7XG5cbiAgICAgIG92ZXJsYXkuYXR0YWNoVGVtcGxhdGUodGhpcy5yZXN1bHRzVGVtcGxhdGVSZWYpO1xuXG4gICAgICB0aGlzLm92ZXJsYXkgPSBvdmVybGF5O1xuICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuaW5pdE92ZXJsYXlGb2N1c2FibGVFbGVtZW50cygpO1xuXG4gICAgICBvdmVybGF5LmJhY2tkcm9wQ2xpY2tcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSB0aGlzLmlucHV0RGlyZWN0aXZlLmlucHV0RWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZS5yZXN0b3JlSW5wdXRUZXh0VmFsdWVUb1ByZXZpb3VzU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRTZWFyY2goKTtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcbiAgICB0aGlzLnJlbW92ZUFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRBY3RpdmVEZXNjZW5kYW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLm92ZXJsYXlGb2N1c2FibGVFbGVtZW50c1t0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleF07XG4gICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5wdXREaXJlY3RpdmUuc2V0QWN0aXZlRGVzY2VuZGFudChhY3RpdmVFbGVtZW50LmlkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUFjdGl2ZURlc2NlbmRhbnQoKTogdm9pZCB7XG4gICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW51bGwta2V5d29yZCAqL1xuICAgIHRoaXMuaW5wdXREaXJlY3RpdmUuc2V0QWN0aXZlRGVzY2VuZGFudChudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRTZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IFtdO1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgIHRoaXMuX2hpZ2hsaWdodFRleHQgPSAnJztcbiAgICB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA9IC0xO1xuICAgIHRoaXMucmVtb3ZlQWN0aXZlRGVzY2VuZGFudCgpO1xuICAgIHRoaXMuaW5pdE92ZXJsYXlGb2N1c2FibGVFbGVtZW50cygpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGFkZElucHV0RXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChlbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlS2V5ZG93bihldmVudCk7XG4gICAgICB9KTtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgIHRoaXMuYWRhcHRlclNlcnZpY2Uuc2V0RHJvcGRvd25XaWR0aChcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgICAgIHRoaXMucmVzdWx0c1JlZixcbiAgICAgICAgICAgICEhdGhpcy5pbnB1dEJveEhvc3RTdmNcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveU92ZXJsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5jbG9zZSh0aGlzLm92ZXJsYXkpO1xuICAgICAgdGhpcy5vdmVybGF5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQWZmaXhlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWZmaXhlcikge1xuICAgICAgY29uc3QgYWZmaXhlciA9IHRoaXMuYWZmaXhTZXJ2aWNlLmNyZWF0ZUFmZml4ZXIodGhpcy5yZXN1bHRzUmVmKTtcblxuICAgICAgdGhpcy5hZGFwdGVyU2VydmljZS5zZXREcm9wZG93bldpZHRoKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAgIHRoaXMucmVzdWx0c1JlZixcbiAgICAgICAgISF0aGlzLmlucHV0Qm94SG9zdFN2Y1xuICAgICAgKTtcblxuICAgICAgYWZmaXhlci5hZmZpeFRvKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIGF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LlZpZXdwb3J0LFxuICAgICAgICBlbmFibGVBdXRvRml0OiB0cnVlLFxuICAgICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgICAgcGxhY2VtZW50OiAnYmVsb3cnLFxuICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiAnbGVmdCdcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmFmZml4ZXIgPSBhZmZpeGVyO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveUFmZml4ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWZmaXhlcikge1xuICAgICAgdGhpcy5hZmZpeGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuYWZmaXhlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRNZXNzYWdlU3RyZWFtKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh0aGlzLm1lc3NhZ2VTdHJlYW1TdWIpIHtcbiAgICAgIHRoaXMubWVzc2FnZVN0cmVhbVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1lc3NhZ2VTdHJlYW0pIHtcbiAgICAgIHRoaXMubWVzc2FnZVN0cmVhbVN1YiA9IHRoaXMubWVzc2FnZVN0cmVhbVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2U6IFNreUF1dG9jb21wbGV0ZU1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6c3dpdGNoLWRlZmF1bHQgKi9cbiAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZS5DbG9zZURyb3Bkb3duOlxuICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdE92ZXJsYXlGb2N1c2FibGVFbGVtZW50cygpOiB2b2lkIHtcbiAgICAvLyBXYWl0IGZvciBkcm9wZG93biBlbGVtZW50cyB0byByZW5kZXIuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICAgIHRoaXMub3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzID0gdGhpcy5hZGFwdGVyU2VydmljZS5nZXRPdmVybGF5Rm9jdXNhYmxlRWxlbWVudHModGhpcy5vdmVybGF5KTtcbiAgICAgICAgdGhpcy5vdmVybGF5Rm9jdXNhYmxlRWxlbWVudHMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgdGhpcy5hZGFwdGVyU2VydmljZS5zZXRUYWJJbmRleChlbCwgLTEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hZGRGb2N1c2VkQ2xhc3MoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWN0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzW3RoaXMuYWN0aXZlRWxlbWVudEluZGV4XTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRm9jdXNlZENsYXNzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLnJlbW92ZUNTU0NsYXNzKFxuICAgICAgICB0aGlzLm92ZXJsYXlGb2N1c2FibGVFbGVtZW50c1t0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleF0sXG4gICAgICAgICdza3ktYXV0b2NvbXBsZXRlLWRlc2NlbmRhbnQtZm9jdXMnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRm9jdXNlZENsYXNzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLmFkZENTU0NsYXNzKFxuICAgICAgICB0aGlzLm92ZXJsYXlGb2N1c2FibGVFbGVtZW50c1t0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleF0sXG4gICAgICAgICdza3ktYXV0b2NvbXBsZXRlLWRlc2NlbmRhbnQtZm9jdXMnXG4gICAgICApO1xuICAgICAgdGhpcy5zZXRBY3RpdmVEZXNjZW5kYW50KCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
717
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9sb29rdXAvIiwic291cmNlcyI6WyJtb2R1bGVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNsQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFDTCxTQUFTLElBQUksbUJBQW1CLEVBQ2hDLE9BQU8sRUFFUixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxZQUFZLEVBQ1osU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFNeEIsT0FBTyxFQUNMLDBCQUEwQixFQUMzQixNQUFNLG1DQUFtQyxDQUFDO0FBa0IzQyxPQUFPLEVBQ0wsNkJBQTZCLEVBQzlCLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxFQUNMLG9DQUFvQyxFQUNyQyxNQUFNLHdDQUF3QyxDQUFDO0FBRWhELE9BQU8sRUFDTCw2QkFBNkIsRUFDOUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQVV4QyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFRakI7SUEyVkUsa0NBQ1UsY0FBaUMsRUFDakMsVUFBc0IsRUFDdEIsWUFBNkIsRUFDN0IsY0FBNkMsRUFDN0MsY0FBaUMsRUFDckIsZUFBd0M7UUFM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M0M7SUFTRDtRQUhDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRTtZQUMvQixJQUFJLEVBQUUsV0FBVztTQUNsQixDQUFDO3dFQUMyQztJQUs3QztRQUhDLFNBQVMsQ0FBQyxZQUFZLEVBQUU7WUFDdkIsSUFBSSxFQUFFLFVBQVU7U0FDakIsQ0FBQzs4REFPRDtJQWhUVSx3QkFBd0I7UUFOcEMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixvM0dBQTRDO1lBRTVDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztTQUNoRCxDQUFDO1FBa1dHLFdBQUEsUUFBUSxFQUFFLENBQUE7T0FqV0Ysd0JBQXdCLENBcXZCcEM7SUFBRCwrQkFBQztDQUFBLEFBcnZCRCxJQXF2QkM7U0FydkJZLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhlcixcbiAgU2t5QWZmaXhTZXJ2aWNlLFxuICBTa3lPdmVybGF5SW5zdGFuY2UsXG4gIFNreU92ZXJsYXlTZXJ2aWNlXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5SW5wdXRCb3hIb3N0U2VydmljZVxufSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuXG5pbXBvcnQge1xuICBmcm9tRXZlbnQgYXMgb2JzZXJ2YWJsZUZyb21FdmVudCxcbiAgU3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIHRha2VVbnRpbFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIFNreUF1dG9jb21wbGV0ZU1lc3NhZ2Vcbn0gZnJvbSAnLi90eXBlcy9hdXRvY29tcGxldGUtbWVzc2FnZSc7XG5cbmltcG9ydCB7XG4gIFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VUeXBlXG59IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLW1lc3NhZ2UtdHlwZSc7XG5cbmltcG9ydCB7XG4gIFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uXG59IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1mdW5jdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uRmlsdGVyXG59IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlYXJjaC1mdW5jdGlvbi1maWx0ZXInO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVTZWxlY3Rpb25DaGFuZ2Vcbn0gZnJvbSAnLi90eXBlcy9hdXRvY29tcGxldGUtc2VsZWN0aW9uLWNoYW5nZSc7XG5cbmltcG9ydCB7XG4gIFNreUF1dG9jb21wbGV0ZVNob3dNb3JlQXJnc1xufSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1zaG93LW1vcmUtYXJncyc7XG5cbmltcG9ydCB7XG4gIFNreUF1dG9jb21wbGV0ZUFkYXB0ZXJTZXJ2aWNlXG59IGZyb20gJy4vYXV0b2NvbXBsZXRlLWFkYXB0ZXIuc2VydmljZSc7XG5cbmltcG9ydCB7XG4gIHNreUF1dG9jb21wbGV0ZURlZmF1bHRTZWFyY2hGdW5jdGlvblxufSBmcm9tICcuL2F1dG9jb21wbGV0ZS1kZWZhdWx0LXNlYXJjaC1mdW5jdGlvbic7XG5cbmltcG9ydCB7XG4gIFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlXG59IGZyb20gJy4vYXV0b2NvbXBsZXRlLWlucHV0LmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmludGVyZmFjZSBTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHQge1xuICBlbGVtZW50SWQ6IHN0cmluZztcbiAgZGF0YTogYW55O1xufVxuXG5sZXQgdW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBdXRvY29tcGxldGVDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gIC8vI3JlZ2lvbiBwdWJsaWNfYXBpXG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgSFRNTCBlbGVtZW50IElEICh3aXRob3V0IHRoZSBsZWFkaW5nIGAjYCkgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHNcbiAgICogdGhlIGF1dG9jb21wbGV0ZSB0ZXh0IGlucHV0LiBUaGlzIHNldHMgdGhlIGlucHV0J3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGEgc3RhdGljIGRhdGEgc291cmNlIGZvciB0aGUgYXV0b2NvbXBsZXRlIGNvbXBvbmVudCB0byBzZWFyY2hcbiAgICogd2hlbiB1c2VycyBlbnRlciB0ZXh0LiBGb3IgYSBkeW5hbWljIGRhdGEgc291cmNlIHN1Y2ggYXMgYW4gYXJyYXkgdGhhdFxuICAgKiBjaGFuZ2VzIGR1ZSB0byBzZXJ2ZXIgY2FsbHMsIHVzZSB0aGUgYHNlYXJjaGAgcHJvcGVydHkgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0YSh2YWx1ZTogYW55W10pIHtcbiAgICB0aGlzLl9kYXRhID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGEoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBob3cgbWFueSBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgc2VhcmNoaW5nIHdoaWxlIHVzZXJzXG4gICAqIGVudGVyIHRleHQgaW4gdGhlIGF1dG9jb21wbGV0ZSBmaWVsZC5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkZWJvdW5jZVRpbWUodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2RlYm91bmNlVGltZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkZWJvdW5jZVRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGVib3VuY2VUaW1lIHx8IDA7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIG9iamVjdCBwcm9wZXJ0eSB0byBkaXNwbGF5IGluIHRoZSB0ZXh0IGlucHV0IGFmdGVyIHVzZXJzXG4gICAqIHNlbGVjdCBhbiBpdGVtIGluIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKiBAZGVmYXVsdCBuYW1lXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRlc2NyaXB0b3JQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZGVzY3JpcHRvclByb3BlcnR5ID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlc2NyaXB0b3JQcm9wZXJ0eSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9kZXNjcmlwdG9yUHJvcGVydHkgfHwgJ25hbWUnO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNwbGF5IGEgYnV0dG9uIGluIHRoZSBkcm9wZG93biB0aGF0IG9wZW5zIGEgcGlja2VyIHdoZXJlIHVzZXJzIGNhbiB2aWV3IGFsbCBvcHRpb25zLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGVuYWJsZVNob3dNb3JlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBvYnNlcnZhYmxlIG9mIGBTa3lBdXRvY29tcGxldGVNZXNzYWdlYCB0aGF0IGNhbiBjbG9zZSB0aGUgZHJvcGRvd24uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtZXNzYWdlU3RyZWFtKHZhbHVlOiBTdWJqZWN0PFNreUF1dG9jb21wbGV0ZU1lc3NhZ2U+KSB7XG4gICAgdGhpcy5fbWVzc2FnZVN0cmVhbSA9IHZhbHVlO1xuICAgIHRoaXMuaW5pdE1lc3NhZ2VTdHJlYW0oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVzc2FnZVN0cmVhbSgpOiBTdWJqZWN0PFNreUF1dG9jb21wbGV0ZU1lc3NhZ2U+IHtcbiAgICByZXR1cm4gdGhpcy5fbWVzc2FnZVN0cmVhbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB3cmFwcGVyQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgb2JqZWN0IHByb3BlcnRpZXMgdG8gc2VhcmNoLlxuICAgKiBAZGVmYXVsdCBbJ25hbWUnXVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwcm9wZXJ0aWVzVG9TZWFyY2godmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fcHJvcGVydGllc1RvU2VhcmNoID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByb3BlcnRpZXNUb1NlYXJjaCgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRpZXNUb1NlYXJjaCB8fCBbJ25hbWUnXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBmdW5jdGlvbiB0byBkeW5hbWljYWxseSBtYW5hZ2UgdGhlIGRhdGEgc291cmNlIHdoZW4gdXNlcnNcbiAgICogY2hhbmdlIHRoZSB0ZXh0IGluIHRoZSBhdXRvY29tcGxldGUgZmllbGQuIFRoZSBzZWFyY2ggZnVuY3Rpb24gbXVzdCByZXR1cm5cbiAgICogYW4gYXJyYXkgb3IgYSBwcm9taXNlIG9mIGFuIGFycmF5LiBUaGUgYHNlYXJjaGAgcHJvcGVydHkgaXMgcGFydGljdWxhcmx5XG4gICAqIHVzZWZ1bCB3aGVuIHRoZSBkYXRhIHNvdXJjZSBkb2VzIG5vdCBsaXZlIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VhcmNoKHZhbHVlOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbikge1xuICAgIHRoaXMuX3NlYXJjaCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWFyY2goKTogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2ggfHwgc2t5QXV0b2NvbXBsZXRlRGVmYXVsdFNlYXJjaEZ1bmN0aW9uKHtcbiAgICAgIHByb3BlcnRpZXNUb1NlYXJjaDogdGhpcy5wcm9wZXJ0aWVzVG9TZWFyY2gsXG4gICAgICBzZWFyY2hGaWx0ZXJzOiB0aGlzLnNlYXJjaEZpbHRlcnNcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSB0ZW1wbGF0ZSB0byBmb3JtYXQgZWFjaCBzZWFyY2ggcmVzdWx0IGluIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKiBUaGUgYXV0b2NvbXBsZXRlIGNvbXBvbmVudCBpbmplY3RzIHNlYXJjaCByZXN1bHQgdmFsdWVzIGludG8gdGhlIHRlbXBsYXRlXG4gICAqIGFzIGBpdGVtYCB2YXJpYWJsZXMgdGhhdCByZWZlcmVuY2UgYWxsIG9mIHRoZSBvYmplY3QgcHJvcGVydGllcyBvZiB0aGUgc2VhcmNoIHJlc3VsdHMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlYXJjaFJlc3VsdFRlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5fc2VhcmNoUmVzdWx0VGVtcGxhdGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VhcmNoUmVzdWx0VGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFJlc3VsdFRlbXBsYXRlIHx8IHRoaXMuZGVmYXVsdFNlYXJjaFJlc3VsdFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IHVzZXJzIG11c3QgZW50ZXIgYmVmb3JlXG4gICAqIHRoZSBhdXRvY29tcGxldGUgY29tcG9uZW50IHNlYXJjaGVzIHRoZSBkYXRhIHNvdXJjZSBhbmQgZGlzcGxheXMgc2VhcmNoXG4gICAqIHJlc3VsdHMgaW4gdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnMgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLl9zZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnMgPiAwKVxuICAgICAgPyB0aGlzLl9zZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnMgOiAxO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBhcnJheSBvZiBmdW5jdGlvbnMgdG8gY2FsbCBhZ2FpbnN0IGVhY2ggc2VhcmNoIHJlc3VsdCBpbiBvcmRlclxuICAgKiB0byBmaWx0ZXIgdGhlIHNlYXJjaCByZXN1bHRzIHdoZW4gdXNpbmcgdGhlIGRlZmF1bHQgc2VhcmNoIGZ1bmN0aW9uLiBXaGVuXG4gICAqIHVzaW5nIHRoZSBgc2VhcmNoYCBwcm9wZXJ0eSB0byBzcGVjaWZ5IGEgY3VzdG9tIHNlYXJjaCBmdW5jdGlvbiwgeW91IG11c3RcbiAgICogbWFudWFsbHkgYXBwbHkgZmlsdGVycyBpbnNpZGUgdGhhdCBmdW5jdGlvbi4gVGhlIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGB0cnVlYFxuICAgKiBvciBgZmFsc2VgIGZvciBlYWNoIHJlc3VsdCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRvIGRpc3BsYXkgaXQgaW4gdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VhcmNoRmlsdGVyczogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb25GaWx0ZXJbXTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWFyY2ggcmVzdWx0cyB0byBkaXNwbGF5IGluIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgY29tcG9uZW50IGRpc3BsYXlzIGFsbCBtYXRjaGluZyByZXN1bHRzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWFyY2hSZXN1bHRzTGltaXQodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3NlYXJjaFJlc3VsdHNMaW1pdCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWFyY2hSZXN1bHRzTGltaXQoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5fc2VhcmNoUmVzdWx0c0xpbWl0KSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VhcmNoUmVzdWx0c0xpbWl0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5lbmFibGVTaG93TW9yZSA/IDUgOiB0aGlzLl9zZWFyY2hSZXN1bHRzTGltaXQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNwbGF5IGEgYnV0dG9uIHRoYXQgbGV0cyB1c2VycyBhZGQgb3B0aW9ucyB0byB0aGUgZGF0YSBzb3VyY2UuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0FkZEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHRleHQgdG8gZGlzcGxheSB3aGVuIG5vIHNlYXJjaCByZXN1bHRzIGFyZSBmb3VuZC5cbiAgICogQGRlZmF1bHQgTm8gbWF0Y2hlcyBmb3VuZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG5vUmVzdWx0c0ZvdW5kVGV4dDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgdGhlIGJ1dHRvbiB0byBhZGQgb3B0aW9ucyB0byB0aGUgZGF0YSBzb3VyY2UuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGFkZENsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgYnV0dG9uIHRvIHZpZXcgYWxsIG9wdGlvbnMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNob3dNb3JlQ2xpY2s6IEV2ZW50RW1pdHRlcjxTa3lBdXRvY29tcGxldGVTaG93TW9yZUFyZ3M+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCBpdGVtcyBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IHNlbGVjdGlvbkNoYW5nZSgpOiBFdmVudEVtaXR0ZXI8U2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkNoYW5nZTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiB0ZW1wbGF0ZV9wcm9wZXJ0aWVzXG5cbiAgcHVibGljIGdldCBzZWFyY2hSZXN1bHRzKCk6IFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdFtdIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoUmVzdWx0cyB8fCBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGlnaGxpZ2h0VGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9oaWdobGlnaHRUZXh0IHx8ICcnO1xuICB9XG5cbiAgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyByZXN1bHRzTGlzdElkOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlc3VsdHNXcmFwcGVySWQ6IHN0cmluZztcblxuICBwdWJsaWMgc2VhcmNoVGV4dDogc3RyaW5nO1xuXG4gIHB1YmxpYyBnZXQgc2hvd0FjdGlvbnNBcmVhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dBZGRCdXR0b24gfHwgdGhpcy5lbmFibGVTaG93TW9yZTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIEBWaWV3Q2hpbGQoJ2RlZmF1bHRTZWFyY2hSZXN1bHRUZW1wbGF0ZScsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IGZhbHNlXG4gIH0pXG4gIHByaXZhdGUgZGVmYXVsdFNlYXJjaFJlc3VsdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpXG4gIHByaXZhdGUgc2V0IGlucHV0RGlyZWN0aXZlKGRpcmVjdGl2ZTogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpIHtcbiAgICBpZiAodGhpcy5faW5wdXREaXJlY3RpdmUgIT09IGRpcmVjdGl2ZSkge1xuXG4gICAgICBpZiAoIWRpcmVjdGl2ZSkge1xuICAgICAgICB0aHJvdyBFcnJvcihbXG4gICAgICAgICAgJ1RoZSBTa3lBdXRvY29tcGxldGVDb21wb25lbnQgcmVxdWlyZXMgYSBDb250ZW50Q2hpbGQgaW5wdXQgb3InLFxuICAgICAgICAgICd0ZXh0YXJlYSBib3VuZCB3aXRoIHRoZSBTa3lBdXRvY29tcGxldGUgZGlyZWN0aXZlLiBGb3IgZXhhbXBsZTonLFxuICAgICAgICAgICdgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgc2t5QXV0b2NvbXBsZXRlPmAuJ1xuICAgICAgICBdLmpvaW4oJyAnKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFVuc3Vic2NyaWJlIGZyb20gb2xkIHN1YnNjcmlwdGlvbnMgb24gYW55IHByZXZpb3VzIGlucHV0IGRpcmVjdGl2ZVxuICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZVVuc3Vic2NyaWJlLm5leHQoKTtcblxuICAgICAgdGhpcy5faW5wdXREaXJlY3RpdmUgPSBkaXJlY3RpdmU7XG5cbiAgICAgIHRoaXMuX2lucHV0RGlyZWN0aXZlLmRpc3BsYXlXaXRoID0gdGhpcy5kZXNjcmlwdG9yUHJvcGVydHk7XG5cbiAgICAgIHRoaXMuX2lucHV0RGlyZWN0aXZlLnRleHRDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmlucHV0RGlyZWN0aXZlVW5zdWJzY3JpYmUpLFxuICAgICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLnNlYXJjaFRleHRDaGFuZ2VkKGNoYW5nZS52YWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9pbnB1dERpcmVjdGl2ZS5ibHVyXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmlucHV0RGlyZWN0aXZlVW5zdWJzY3JpYmUpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZS5vblRvdWNoZWQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2lucHV0RGlyZWN0aXZlLmZvY3VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmlucHV0RGlyZWN0aXZlVW5zdWJzY3JpYmUpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuc2hvd0FjdGlvbnNBcmVhKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaW5wdXREaXJlY3RpdmUoKTogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dERpcmVjdGl2ZTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3Jlc3VsdHNUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZlxuICB9KVxuICBwcml2YXRlIHJlc3VsdHNUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCdyZXN1bHRzUmVmJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWZcbiAgfSlcbiAgcHJpdmF0ZSBzZXQgcmVzdWx0c1JlZih2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fcmVzdWx0c1JlZiA9IHZhbHVlO1xuICAgICAgdGhpcy5kZXN0cm95QWZmaXhlcigpO1xuICAgICAgdGhpcy5jcmVhdGVBZmZpeGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcmVzdWx0c1JlZigpOiBFbGVtZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0c1JlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRleCB0aGF0IGluZGljYXRlcyB3aGljaCBkZXNjZW5kYW50IG9mIHRoZSBvdmVybGF5IGN1cnJlbnRseSBoYXMgZm9jdXMuXG4gICAqL1xuICBwcml2YXRlIGFjdGl2ZUVsZW1lbnRJbmRleDogbnVtYmVyID0gLTE7XG5cbiAgcHJpdmF0ZSBhZmZpeGVyOiBTa3lBZmZpeGVyO1xuXG4gIHByaXZhdGUgaW5wdXREaXJlY3RpdmVVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBtZXNzYWdlU3RyZWFtU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIG92ZXJsYXk6IFNreU92ZXJsYXlJbnN0YW5jZTtcblxuICAvKipcbiAgICogRWxlbWVudHMgd2l0aGluIHRoZSBhdXRvY29tcGxldGUgZHJvcGRvd24gdGhhdCBhcmUgZm9jdXNhYmxlLlxuICAgKiBUaGVzZSBhcmUgdHlwaWNhbGx5IHRoZSBzZWFyY2ggcmVzdWx0cyBhbmQgYWN0aW9uIGJ1dHRvbnMsIGJ1dCBjb3VsZCBhbHNvIGJlXG4gICAqIGVsZW1lbnRzIHByb3ZpZGVkIGluIHRoZSBjb25zdW1lcidzIG93biB0ZW1wbGF0ZS5cbiAgICovXG4gIHByaXZhdGUgb3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgcHJpdmF0ZSBfZGF0YTogYW55W107XG4gIHByaXZhdGUgX2RlYm91bmNlVGltZTogbnVtYmVyO1xuICBwcml2YXRlIF9kZXNjcmlwdG9yUHJvcGVydHk6IHN0cmluZztcbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0VGV4dDogc3RyaW5nO1xuICBwcml2YXRlIF9pbnB1dERpcmVjdGl2ZTogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmU7XG4gIHByaXZhdGUgX21lc3NhZ2VTdHJlYW06IFN1YmplY3Q8U2t5QXV0b2NvbXBsZXRlTWVzc2FnZT47XG4gIHByaXZhdGUgX3Byb3BlcnRpZXNUb1NlYXJjaDogc3RyaW5nW107XG4gIHByaXZhdGUgX3Jlc3VsdHNSZWY6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgX3NlYXJjaDogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb247XG4gIHByaXZhdGUgX3NlYXJjaFJlc3VsdHM6IFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdFtdO1xuICBwcml2YXRlIF9zZWFyY2hSZXN1bHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHJpdmF0ZSBfc2VhcmNoUmVzdWx0c0xpbWl0OiBudW1iZXI7XG4gIHByaXZhdGUgX3NlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVyczogbnVtYmVyO1xuICBwcml2YXRlIF9zZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZSxcbiAgICBwcml2YXRlIGFkYXB0ZXJTZXJ2aWNlOiBTa3lBdXRvY29tcGxldGVBZGFwdGVyU2VydmljZSxcbiAgICBwcml2YXRlIG92ZXJsYXlTZXJ2aWNlOiBTa3lPdmVybGF5U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGlucHV0Qm94SG9zdFN2Yz86IFNreUlucHV0Qm94SG9zdFNlcnZpY2VcbiAgKSB7XG4gICAgY29uc3QgaWQgPSArK3VuaXF1ZUlkO1xuICAgIHRoaXMucmVzdWx0c0xpc3RJZCA9IGBza3ktYXV0b2NvbXBsZXRlLWxpc3QtJHtpZH1gO1xuICAgIHRoaXMucmVzdWx0c1dyYXBwZXJJZCA9IGBza3ktYXV0b2NvbXBsZXRlLXdyYXBwZXItJHtpZH1gO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaW5wdXREaXJlY3RpdmUpIHtcbiAgICAgIHRocm93IEVycm9yKFtcbiAgICAgICAgJ1RoZSBTa3lBdXRvY29tcGxldGVDb21wb25lbnQgcmVxdWlyZXMgYSBDb250ZW50Q2hpbGQgaW5wdXQgb3InLFxuICAgICAgICAndGV4dGFyZWEgYm91bmQgd2l0aCB0aGUgU2t5QXV0b2NvbXBsZXRlIGRpcmVjdGl2ZS4gRm9yIGV4YW1wbGU6JyxcbiAgICAgICAgJ2A8aW5wdXQgdHlwZT1cInRleHRcIiBza3lBdXRvY29tcGxldGU+YC4nXG4gICAgICBdLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZElucHV0RXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0RGlyZWN0aXZlVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuaW5wdXREaXJlY3RpdmVVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5kZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRCdXR0b25DbGlja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuYWRkQ2xpY2suZW1pdCgpO1xuICAgIHRoaXMuaW5wdXREaXJlY3RpdmUucmVzdG9yZUlucHV0VGV4dFZhbHVlVG9QcmV2aW91c1N0YXRlKCk7XG4gICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8qIFNhbml0eSBjaGVjayAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGV2ZW50LmtleSkge1xuICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5nZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgICBjb25zdCBhY3RpdmVFbGVtZW50SWQgPSBhY3RpdmVFbGVtZW50Py5pZDtcbiAgICAgIGNvbnN0IHRhcmdldElzU2VhcmNoUmVzdWx0ID0gdGhpcy5zZWFyY2hSZXN1bHRzLmZpbmQociA9PiByLmVsZW1lbnRJZCA9PT0gYWN0aXZlRWxlbWVudElkKTtcblxuICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0ICovXG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlICdlbnRlcic6XG5cbiAgICAgICAgICBpZiAodGFyZ2V0SXNTZWFyY2hSZXN1bHQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0U2VhcmNoUmVzdWx0QnlJZChhY3RpdmVFbGVtZW50SWQpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2hvd0FjdGlvbnNBcmVhKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNldFNlYXJjaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICBhY3RpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd0YWInOlxuICAgICAgICAgIGlmICh0YXJnZXRJc1NlYXJjaFJlc3VsdCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RTZWFyY2hSZXN1bHRCeUlkKGFjdGl2ZUVsZW1lbnRJZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXREaXJlY3RpdmUucmVzdG9yZUlucHV0VGV4dFZhbHVlVG9QcmV2aW91c1N0YXRlKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZXNjYXBlJzpcbiAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICBjYXNlICdkb3duJzpcbiAgICAgICAgICB0aGlzLnJlbW92ZUZvY3VzZWRDbGFzcygpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRWxlbWVudEluZGV4ID09PSB0aGlzLm92ZXJsYXlGb2N1c2FibGVFbGVtZW50cy5sZW5ndGggLSAxIHx8XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA9PT0gLTFcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRWxlbWVudEluZGV4ID0gMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPSB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCArIDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYWRkRm9jdXNlZENsYXNzKCk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2Fycm93dXAnOlxuICAgICAgICBjYXNlICd1cCc6XG4gICAgICAgICAgdGhpcy5yZW1vdmVGb2N1c2VkQ2xhc3MoKTtcbiAgICAgICAgICBpZiAodGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPD0gMCkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPSB0aGlzLm92ZXJsYXlGb2N1c2FibGVFbGVtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA9IHRoaXMuYWN0aXZlRWxlbWVudEluZGV4IC0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hZGRGb2N1c2VkQ2xhc3MoKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbW9yZUJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93TW9yZUNsaWNrLmVtaXQoeyBpbnB1dFZhbHVlOiB0aGlzLnNlYXJjaFRleHQgfSk7XG4gICAgdGhpcy5pbnB1dERpcmVjdGl2ZS5yZXN0b3JlSW5wdXRUZXh0VmFsdWVUb1ByZXZpb3VzU3RhdGUoKTtcbiAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlc3VsdE1vdXNlRG93bihpZDogc3RyaW5nLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0U2VhcmNoUmVzdWx0QnlJZChpZCk7XG5cbiAgICBpZiAoIXRoaXMuc2hvd0FjdGlvbnNBcmVhKSB7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNldFNlYXJjaCgpO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgb25SZXN1bHRNb3VzZU1vdmUoaWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChpZCAhPT0gdGhpcy5hY3RpdmVFbGVtZW50SW5kZXgpIHtcbiAgICAgIHRoaXMucmVtb3ZlRm9jdXNlZENsYXNzKCk7XG4gICAgICB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA9IGlkO1xuICAgICAgdGhpcy5hZGRGb2N1c2VkQ2xhc3MoKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzRWxlbWVudEZvY3VzZWQocmVmOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZWYgPT09IHRoaXMub3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzW3RoaXMuYWN0aXZlRWxlbWVudEluZGV4XTtcbiAgfVxuXG4gIHByaXZhdGUgc2VhcmNoVGV4dENoYW5nZWQoc2VhcmNoVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaXNFbXB0eSA9ICghc2VhcmNoVGV4dCB8fCAhc2VhcmNoVGV4dC50cmltKCkgfHwgc2VhcmNoVGV4dC5tYXRjaCgvXlxccyskLykpO1xuXG4gICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgIC8vIEVtaXQgc2VsZWN0aW9uQ2hhbmdlIGlmIHZhbHVlIGhhcyBiZWVuIGNsZWFyZWQuXG4gICAgICBpZiAodGhpcy5pbnB1dERpcmVjdGl2ZS52YWx1ZSkge1xuICAgICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICBzZWxlY3RlZEl0ZW06IHVuZGVmaW5lZFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLnNob3dBY3Rpb25zQXJlYSkge1xuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVzZXRTZWFyY2goKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTG9uZ0Vub3VnaCA9IChzZWFyY2hUZXh0Lmxlbmd0aCA+PSB0aGlzLnNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVycyk7XG4gICAgY29uc3QgaXNEaWZmZXJlbnQgPSAoc2VhcmNoVGV4dCAhPT0gdGhpcy5zZWFyY2hUZXh0KTtcblxuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQudHJpbSgpO1xuXG4gICAgaWYgKGlzTG9uZ0Vub3VnaCAmJiBpc0RpZmZlcmVudCkge1xuICAgICAgdGhpcy5wZXJmb3JtU2VhcmNoKCkudGhlbigocmVzdWx0czogYW55W10pID0+IHtcbiAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IHJlc3VsdHMubWFwKChyLCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0OiBTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHQgPSB7XG4gICAgICAgICAgICBlbGVtZW50SWQ6IGAke3RoaXMucmVzdWx0c0xpc3RJZH0taXRlbS0ke2l9YCxcbiAgICAgICAgICAgIGRhdGE6IHJcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodFRleHQgPSB0aGlzLnNlYXJjaFRleHQ7XG4gICAgICAgIHRoaXMucmVtb3ZlRm9jdXNlZENsYXNzKCk7XG4gICAgICAgIHRoaXMucmVtb3ZlQWN0aXZlRGVzY2VuZGFudCgpO1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hSZXN1bHRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPSAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgLy8gTGV0IHRoZSByZXN1bHRzIHBvcHVsYXRlIGluIHRoZSBET00gYmVmb3JlIHJlY2FsY3VsYXRpbmcgcGxhY2VtZW50LlxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hZmZpeGVyLnJlYWZmaXgoKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5pbml0T3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBlcmZvcm1TZWFyY2goKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlYXJjaCh0aGlzLnNlYXJjaFRleHQsIHRoaXMuZGF0YSk7XG5cbiAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RTZWFyY2hSZXN1bHRCeUlkKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlYXJjaFJlc3VsdHMuZmluZChyID0+IHIuZWxlbWVudElkID09PSBpZCkuZGF0YTtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSByZXN1bHRbdGhpcy5kZXNjcmlwdG9yUHJvcGVydHldO1xuICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZS52YWx1ZSA9IHJlc3VsdDtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICBzZWxlY3RlZEl0ZW06IHJlc3VsdFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRHJvcGRvd24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXkpIHtcbiAgICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICAgIGVuYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogdHJ1ZSxcbiAgICAgICAgd3JhcHBlckNsYXNzOiB0aGlzLndyYXBwZXJDbGFzc1xuICAgICAgfSk7XG5cbiAgICAgIG92ZXJsYXkuYXR0YWNoVGVtcGxhdGUodGhpcy5yZXN1bHRzVGVtcGxhdGVSZWYpO1xuXG4gICAgICB0aGlzLm92ZXJsYXkgPSBvdmVybGF5O1xuICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuaW5pdE92ZXJsYXlGb2N1c2FibGVFbGVtZW50cygpO1xuXG4gICAgICBvdmVybGF5LmJhY2tkcm9wQ2xpY2tcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSB0aGlzLmlucHV0RGlyZWN0aXZlLmlucHV0RWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZS5yZXN0b3JlSW5wdXRUZXh0VmFsdWVUb1ByZXZpb3VzU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRTZWFyY2goKTtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuZGVzdHJveU92ZXJsYXkoKTtcbiAgICB0aGlzLnJlbW92ZUFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRBY3RpdmVEZXNjZW5kYW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLm92ZXJsYXlGb2N1c2FibGVFbGVtZW50c1t0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleF07XG4gICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5wdXREaXJlY3RpdmUuc2V0QWN0aXZlRGVzY2VuZGFudChhY3RpdmVFbGVtZW50LmlkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUFjdGl2ZURlc2NlbmRhbnQoKTogdm9pZCB7XG4gICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW51bGwta2V5d29yZCAqL1xuICAgIHRoaXMuaW5wdXREaXJlY3RpdmUuc2V0QWN0aXZlRGVzY2VuZGFudChudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRTZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IFtdO1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgIHRoaXMuX2hpZ2hsaWdodFRleHQgPSAnJztcbiAgICB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA9IC0xO1xuICAgIHRoaXMucmVtb3ZlQWN0aXZlRGVzY2VuZGFudCgpO1xuICAgIHRoaXMuaW5pdE92ZXJsYXlGb2N1c2FibGVFbGVtZW50cygpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGFkZElucHV0RXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChlbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlS2V5ZG93bihldmVudCk7XG4gICAgICB9KTtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgIHRoaXMuYWRhcHRlclNlcnZpY2Uuc2V0RHJvcGRvd25XaWR0aChcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgICAgIHRoaXMucmVzdWx0c1JlZixcbiAgICAgICAgICAgICEhdGhpcy5pbnB1dEJveEhvc3RTdmNcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveU92ZXJsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5jbG9zZSh0aGlzLm92ZXJsYXkpO1xuICAgICAgdGhpcy5vdmVybGF5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQWZmaXhlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWZmaXhlcikge1xuICAgICAgY29uc3QgYWZmaXhlciA9IHRoaXMuYWZmaXhTZXJ2aWNlLmNyZWF0ZUFmZml4ZXIodGhpcy5yZXN1bHRzUmVmKTtcblxuICAgICAgdGhpcy5hZGFwdGVyU2VydmljZS5zZXREcm9wZG93bldpZHRoKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAgIHRoaXMucmVzdWx0c1JlZixcbiAgICAgICAgISF0aGlzLmlucHV0Qm94SG9zdFN2Y1xuICAgICAgKTtcblxuICAgICAgYWZmaXhlci5hZmZpeFRvKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIGF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LlZpZXdwb3J0LFxuICAgICAgICBlbmFibGVBdXRvRml0OiB0cnVlLFxuICAgICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgICAgcGxhY2VtZW50OiAnYmVsb3cnLFxuICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiAnbGVmdCdcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmFmZml4ZXIgPSBhZmZpeGVyO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveUFmZml4ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWZmaXhlcikge1xuICAgICAgdGhpcy5hZmZpeGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuYWZmaXhlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRNZXNzYWdlU3RyZWFtKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh0aGlzLm1lc3NhZ2VTdHJlYW1TdWIpIHtcbiAgICAgIHRoaXMubWVzc2FnZVN0cmVhbVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1lc3NhZ2VTdHJlYW0pIHtcbiAgICAgIHRoaXMubWVzc2FnZVN0cmVhbVN1YiA9IHRoaXMubWVzc2FnZVN0cmVhbVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2U6IFNreUF1dG9jb21wbGV0ZU1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6c3dpdGNoLWRlZmF1bHQgKi9cbiAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZS5DbG9zZURyb3Bkb3duOlxuICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdE92ZXJsYXlGb2N1c2FibGVFbGVtZW50cygpOiB2b2lkIHtcbiAgICAvLyBXYWl0IGZvciBkcm9wZG93biBlbGVtZW50cyB0byByZW5kZXIuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICAgIHRoaXMub3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzID0gdGhpcy5hZGFwdGVyU2VydmljZS5nZXRPdmVybGF5Rm9jdXNhYmxlRWxlbWVudHModGhpcy5vdmVybGF5KTtcbiAgICAgICAgdGhpcy5vdmVybGF5Rm9jdXNhYmxlRWxlbWVudHMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgdGhpcy5hZGFwdGVyU2VydmljZS5zZXRUYWJJbmRleChlbCwgLTEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hZGRGb2N1c2VkQ2xhc3MoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWN0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzW3RoaXMuYWN0aXZlRWxlbWVudEluZGV4XTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRm9jdXNlZENsYXNzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLnJlbW92ZUNTU0NsYXNzKFxuICAgICAgICB0aGlzLm92ZXJsYXlGb2N1c2FibGVFbGVtZW50c1t0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleF0sXG4gICAgICAgICdza3ktYXV0b2NvbXBsZXRlLWRlc2NlbmRhbnQtZm9jdXMnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRm9jdXNlZENsYXNzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLmFkZENTU0NsYXNzKFxuICAgICAgICB0aGlzLm92ZXJsYXlGb2N1c2FibGVFbGVtZW50c1t0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleF0sXG4gICAgICAgICdza3ktYXV0b2NvbXBsZXRlLWRlc2NlbmRhbnQtZm9jdXMnXG4gICAgICApO1xuICAgICAgdGhpcy5zZXRBY3RpdmVEZXNjZW5kYW50KCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -197,8 +197,8 @@ var SkyCountryFieldComponent = /** @class */ (function () {
|
|
|
197
197
|
};
|
|
198
198
|
SkyCountryFieldComponent.prototype.ngAfterViewInit = function () {
|
|
199
199
|
var _this = this;
|
|
200
|
-
|
|
201
|
-
|
|
200
|
+
var _a;
|
|
201
|
+
(_a = this.themeSvc) === null || _a === void 0 ? void 0 : _a.settingsChange.subscribe(function (change) {
|
|
202
202
|
_this.currentTheme = change.currentSettings.theme.name;
|
|
203
203
|
_this.updateInputBox();
|
|
204
204
|
_this.changeDetector.markForCheck();
|
|
@@ -434,4 +434,4 @@ var SkyCountryFieldComponent = /** @class */ (function () {
|
|
|
434
434
|
return SkyCountryFieldComponent;
|
|
435
435
|
}());
|
|
436
436
|
export { SkyCountryFieldComponent };
|
|
437
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvbG9va3VwLyIsInNvdXJjZXMiOlsibW9kdWxlcy9jb3VudHJ5LWZpZWxkL2NvdW50cnktZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsYUFBYSxFQUNiLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxJQUFJLEVBQ0osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFHTCxXQUFXLEVBQ1gsU0FBUyxFQUNULE9BQU8sRUFDUCxhQUFhLEVBR2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsZUFBZSxFQUNoQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQ0wsZUFBZSxFQUNoQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLFNBQVMsRUFDVCxPQUFPLEVBQ1IsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wsU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFNeEIsT0FBTyxFQUNMLDZCQUE2QixFQUM5QixNQUFNLDhDQUE4QyxDQUFDO0FBTXRELHNEQUFzRDtBQUN0RCxJQUFNLDJCQUEyQixHQUFHO0lBQ2xDLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLHdCQUF3QixFQUF4QixDQUF3QixDQUFDO0lBQ3ZELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLGdCQUFnQjtBQUNoQixJQUFJ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QyxRQUFROztJQW5NWDtRQURDLEtBQUssRUFBRTsyRUFDNkI7SUFTckM7UUFEQyxLQUFLLEVBQUU7a0VBVVA7SUFVRDtRQURDLEtBQUssRUFBRTs0REFXUDtJQVdEO1FBREMsS0FBSyxFQUFFOzZFQUNnQztJQU94QztRQURDLEtBQUssRUFBRTtvRUFLUDtJQVdEO1FBREMsS0FBSyxFQUFFO3dFQVNQO0lBVUQ7UUFEQyxNQUFNLEVBQUU7MkVBQ3VHO0lBV2hIO1FBREMsU0FBUyxDQUFDLDZCQUE2QixDQUFDO3dGQUNnQztJQTJEekU7UUFKQyxTQUFTLENBQUMsa0JBQWtCLEVBQUU7WUFDN0IsSUFBSSxFQUFFLFdBQVc7WUFDakIsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDO3NFQUN5QztJQU0zQztRQUpDLFNBQVMsQ0FBQyx1QkFBdUIsRUFBRTtZQUNsQyxJQUFJLEVBQUUsV0FBVztZQUNqQixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7MkVBQzhDO0lBNUtyQyx3QkFBd0I7UUFUcEMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLG1CQUFtQjtZQUM3Qiw2OEVBQTZDO1lBRTdDLFNBQVMsRUFBRTtnQkFDVCwyQkFBMkI7YUFDNUI7WUFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7U0FDaEQsQ0FBQztRQTBNRyxXQUFBLFFBQVEsRUFBRSxDQUFBO1FBQ1YsV0FBQSxRQUFRLEVBQUUsQ0FBQTtPQTFNRix3QkFBd0IsQ0FnZHBDO0lBQUQsK0JBQUM7Q0FBQSxBQWhkRCxJQWdkQztTQWhkWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZSxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgTmdDb250cm9sLFxuICBOZ01vZGVsLFxuICBOR19WQUxJREFUT1JTLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3Jcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1xuICBTa3lBcHBXaW5kb3dSZWZcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lUaGVtZVNlcnZpY2Vcbn0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHtcbiAgU2t5SW5wdXRCb3hIb3N0U2VydmljZVxufSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuXG5pbXBvcnQgJ2ludGwtdGVsLWlucHV0JztcblxuaW1wb3J0IHtcbiAgZnJvbUV2ZW50LFxuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVTZWxlY3Rpb25DaGFuZ2Vcbn0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWxlY3Rpb24tY2hhbmdlJztcblxuaW1wb3J0IHtcbiAgU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmVcbn0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1pbnB1dC5kaXJlY3RpdmUnO1xuXG5pbXBvcnQge1xuICBTa3lDb3VudHJ5RmllbGRDb3VudHJ5XG59IGZyb20gJy4vdHlwZXMvY291bnRyeSc7XG5cbi8vIHRzbGludDpkaXNhYmxlOm5vLWZvcndhcmQtcmVmIG5vLXVzZS1iZWZvcmUtZGVjbGFyZVxuY29uc3QgU0tZX0NPVU5UUllfRklFTERfVkFMSURBVE9SID0ge1xuICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lDb3VudHJ5RmllbGRDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuLy8gdHNsaW50OmVuYWJsZVxubGV0IHVuaXF1ZUlkOiBudW1iZXIgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktY291bnRyeS1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3VudHJ5LWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY291bnRyeS1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBTS1lfQ09VTlRSWV9GSUVMRF9WQUxJREFUT1JcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2t5Q291bnRyeUZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSwgT25Jbml0LCBWYWxpZGF0b3Ige1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHZhbHVlIGZvciB0aGUgYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIG9uIHRoZSBmb3JtIGlucHV0LlxuICAgKiBAZGVmYXVsdCAnb2ZmJ1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGF1dG9jb21wbGV0ZUF0dHJpYnV0ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIFtJbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uIEFscGhhIDJdKGh0dHBzOi8vd3d3Lm5hdGlvbnNvbmxpbmUub3JnL29uZXdvcmxkL2NvdW50cnlfY29kZV9saXN0Lmh0bSlcbiAgICogY291bnRyeSBjb2RlIGZvciB0aGUgZGVmYXVsdCBjb3VudHJ5LlxuICAgKiBXaGVuIHNlYXJjaCByZXN1bHRzIGluY2x1ZGUgdGhlIGRlZmF1bHQgY291bnRyeSwgaXQgYXBwZWFycyBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0LlxuICAgKiBAZGVmYXVsdCB1c1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkZWZhdWx0Q291bnRyeSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl9kZWZhdWx0Q291bnRyeSkge1xuICAgICAgdGhpcy5fZGVmYXVsdENvdW50cnkgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICB0aGlzLmRlZmF1bHRDb3VudHJ5RGF0YSA9IHRoaXMuY291bnRyaWVzXG4gICAgICAgIC5maW5kKGNvdW50cnkgPT4gY291bnRyeS5pc28yID09PSB0aGlzLl9kZWZhdWx0Q291bnRyeSk7XG5cbiAgICAgIHRoaXMuc29ydENvdW50cmllc1dpdGhTZWxlY3RlZEFuZERlZmF1bHQodGhpcy5zZWxlY3RlZENvdW50cnkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVmYXVsdENvdW50cnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdENvdW50cnk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgY291bnRyeSBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgIGlmICghaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVycygpO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBoaWRlIHRoZSBmbGFnIGluIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpZGVTZWxlY3RlZENvdW50cnlGbGFnOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBpbmNsdWRlIHBob25lIGluZm9ybWF0aW9uIGluIHRoZSBzZWxlY3RlZCBjb3VudHJ5IGFuZCBjb3VudHJ5IGRyb3Bkb3duLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbmNsdWRlUGhvbmVJbmZvKGluY2x1ZGVQaG9uZUluZm86IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbmNsdWRlUGhvbmVJbmZvID0gaW5jbHVkZVBob25lSW5mbztcblxuICAgIHRoaXMuc2V0dXBDb3VudHJpZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5jbHVkZVBob25lSW5mbygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5jbHVkZVBob25lSW5mbztcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIFtJbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uIEFscGhhIDJdKGh0dHBzOi8vd3d3Lm5hdGlvbnNvbmxpbmUub3JnL29uZXdvcmxkL2NvdW50cnlfY29kZV9saXN0Lmh0bSlcbiAgICogY291bnRyeSBjb2RlcyBmb3IgdGhlIGNvdW50cmllcyB0aGF0IHVzZXJzIGNhbiBzZWxlY3QuIEJ5IGRlZmF1bHQsIGFsbCBjb3VudHJpZXMgYXJlIGF2YWlsYWJsZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3VwcG9ydGVkQ291bnRyeUlTT3ModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgLy8gRW5zdXJlIGFsbCB2YWx1ZXMgYXJlIHRoZSBzYW1lIGNhc2UuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLm1hcCh2ID0+IHYudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3VwcG9ydGVkQ291bnRyeUlTT3MgPSB2YWx1ZTtcbiAgICB0aGlzLnNldHVwQ291bnRyaWVzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN1cHBvcnRlZENvdW50cnlJU09zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fc3VwcG9ydGVkQ291bnRyeUlTT3M7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgc2VsZWN0ZWQgY291bnRyeSBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZENvdW50cnlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxTa3lDb3VudHJ5RmllbGRDb3VudHJ5PiA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5Q291bnRyeUZpZWxkQ291bnRyeT4oKTtcblxuICBwdWJsaWMgY291bnRyaWVzOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5W107XG5cbiAgcHVibGljIGNvdW50cnlTZWFyY2hGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG5cbiAgcHVibGljIGlzSW5wdXRGb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVyczogbnVtYmVyID0gMjtcblxuICBAVmlld0NoaWxkKFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKVxuICBwdWJsaWMgY291bnRyeVNlYXJjaEF1dG9jb21wbGV0ZURpcmVjdGl2ZTogU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmU7XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZENvdW50cnkobmV3Q291bnRyeTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSkge1xuICAgIGlmICghdGhpcy5jb3VudHJpZXNBcmVFcXVhbCh0aGlzLnNlbGVjdGVkQ291bnRyeSwgbmV3Q291bnRyeSkpIHtcblxuICAgICAgaWYgKG5ld0NvdW50cnkgJiYgbmV3Q291bnRyeS5pc28yKSB7XG4gICAgICAgIGxldCBpc29Db3VudHJ5ID0gdGhpcy5jb3VudHJpZXMuZmluZChjb3VudHJ5ID0+IGNvdW50cnkuaXNvMiA9PT0gbmV3Q291bnRyeS5pc28yKTtcblxuICAgICAgICBpZiAoaXNvQ291bnRyeSkge1xuICAgICAgICAgIG5ld0NvdW50cnkgPSBpc29Db3VudHJ5O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3NlbGVjdGVkQ291bnRyeSA9IG5ld0NvdW50cnk7XG5cbiAgICAgIHRoaXMuc29ydENvdW50cmllc1dpdGhTZWxlY3RlZEFuZERlZmF1bHQobmV3Q291bnRyeSk7XG5cbiAgICAgIHRoaXMuaW50ZXJuYWxGb3JtQ2hhbmdlID0gdHJ1ZTtcbiAgICAgIHRoaXMuY291bnRyeVNlYXJjaEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRDb3VudHJ5KTtcblxuICAgICAgaWYgKCF0aGlzLmlzSW5pdGlhbENoYW5nZSkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKG5ld0NvdW50cnkpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5Q2hhbmdlLmVtaXQobmV3Q291bnRyeSk7XG4gICAgICB9XG5cbiAgICAgIC8vIERvIG5vdCBtYXJrIHRoZSBmaWVsZCBhcyBcImRpcnR5XCJcbiAgICAgIC8vIGlmIHRoZSBmaWVsZCBoYXMgYmVlbiBpbml0aWFsaXplZCB3aXRoIGEgdmFsdWUuXG4gICAgICBpZiAodGhpcy5pc0luaXRpYWxDaGFuZ2UgJiYgdGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuY29udHJvbCkge1xuICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaXNJbml0aWFsQ2hhbmdlID0gZmFsc2U7XG5cbiAgICAgIC8qKlxuICAgICAgICogVGhlIHNlY29uZCBwb3J0aW9uIG9mIHRoaXMgaWYgc3RhdGVtZW50IGlzIGNvbXBsZXguIFRoZSBjb250cm9sIHR5cGUgY2hlY2sgZW5zdXJlcyB0aGF0XG4gICAgICAgKiB3ZSBvbmx5IHdhdGNoIGZvciB0aGUgaW5pdGlhbCB0aW1lIHRocm91Z2ggdGhpcyBmdW5jdGlvbiBvbiByZWFjdGl2ZSBmb3Jtcy4gSG93ZXZlcixcbiAgICAgICAqIHRlbXBsYXRlIGZvcm1zIHdpbGwgc2VuZCB0aHJvdWdoIGBudWxsYCBhbmQgdGhlbiBgdW5kZWZpbmVkYCBvbiBlbXB0eSBpbml0aWFsaXphdGlvblxuICAgICAgICogc28gd2UgaGF2ZSB0byBjaGVjayBmb3Igd2hlbiB0aGUgbm9uLW51bGwgcGFzcyB0aHJvdWdoIGhhcHBlbnMuXG4gICAgICAgKi9cbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNJbml0aWFsQ2hhbmdlICYmXG4gICAgICAoISh0aGlzLm5nQ29udHJvbCBpbnN0YW5jZW9mIE5nTW9kZWwpIHx8IG5ld0NvdW50cnkgIT09IG51bGwpKSB7XG4gICAgICB0aGlzLmlzSW5pdGlhbENoYW5nZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRDb3VudHJ5KCk6IFNreUNvdW50cnlGaWVsZENvdW50cnkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZENvdW50cnk7XG4gIH1cblxuICBwdWJsaWMgY3VycmVudFRoZW1lOiBzdHJpbmcgPSAnZGVmYXVsdCc7XG5cbiAgcHVibGljIGlucHV0SWQ6IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdpbnB1dFRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZVxuICB9KVxuICBwcml2YXRlIGlucHV0VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoSWNvblRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZVxuICB9KVxuICBwcml2YXRlIHNlYXJjaEljb25UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcml2YXRlIGRlZmF1bHRDb3VudHJ5RGF0YTogU2t5Q291bnRyeUZpZWxkQ291bnRyeTtcblxuICBwcml2YXRlIGlkbGU6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBpbnRlcm5hbEZvcm1DaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIGlzSW5pdGlhbENoYW5nZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgcHJpdmF0ZSBuZ0NvbnRyb2w6IE5nQ29udHJvbDtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgX2RlZmF1bHRDb3VudHJ5OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9pbmNsdWRlUGhvbmVJbmZvOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRDb3VudHJ5OiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5O1xuXG4gIHByaXZhdGUgX3N1cHBvcnRlZENvdW50cnlJU09zOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGlucHV0Qm94SG9zdFN2Yz86IFNreUlucHV0Qm94SG9zdFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNldHVwQ291bnRyaWVzKCk7XG5cbiAgICB0aGlzLmNvdW50cnlTZWFyY2hGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuZ3VsYXIgbGlmZWN5Y2xlIGhvb2sgZm9yIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsaXplZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUlucHV0Qm94KCk7XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLW51bGwta2V5d29yZFxuICAgIHRoaXMubmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQ8TmdDb250cm9sPihOZ0NvbnRyb2wgYXMgdW5rbm93biBhcyBUeXBlPE5nQ29udHJvbD4sIG51bGwpO1xuXG4gICAgdGhpcy5pbnB1dElkID0gYHNreS1jb3VudHJ5LWZpZWxkLWlucHV0LSR7dW5pcXVlSWQrK31gO1xuXG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgaW5pdGlhbCBjaGFuZ2UgYm9vbGVhbiBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZvcm0gaXMgc2V0dGluZyB0aGUgdmFsdWUuIFdoZW4gbm8gZm9ybVxuICAgICAgICogaXMgcHJlc2VudCB3ZSBkb24ndCB3YW50IHRvIGlnbm9yZSB0aGUgZmlyc3QgY2hhbmdlLlxuICAgICAgICovXG4gICAgICB0aGlzLmlzSW5pdGlhbENoYW5nZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kZWZhdWx0Q291bnRyeSkge1xuICAgICAgdGhpcy5kZWZhdWx0Q291bnRyeSA9ICd1cyc7XG4gICAgfVxuXG4gICAgdGhpcy5jb3VudHJ5U2VhcmNoRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUobmV3VmFsdWUgPT4ge1xuICAgICAgICBpZiAobmV3VmFsdWUgJiYgIXRoaXMuaW50ZXJuYWxGb3JtQ2hhbmdlKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGhlbWVTdmMuc2V0dGluZ3NDaGFuZ2VcbiAgICAgIC5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50VGhlbWUgPSBjaGFuZ2UuY3VycmVudFNldHRpbmdzLnRoZW1lLm5hbWU7XG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXRCb3goKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuZ3VsYXIgbGlmZWN5Y2xlIGhvb2sgZm9yIHdoZW4gdGhlIGNvbXBvZW5udCBpcyBkZXN0cnVjdGVkLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbXBvbmVudCdzIHRvdWNoZWQgdmFsdWUgd2hlbiB0aGUgYXV0b2NvbXBsZXRlIGlzIGJsdXJyZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgb25BdXRvY29tcGxldGVCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY291bnRyeSB0byB2YWxpZGF0ZSBhZ2FpbnN0IGJhc2VkIG9uIHRoZSBjb3VudHkncyBpc28yIGNvZGUuXG4gICAqIEBwYXJhbSBuZXdDb3VudHJ5IFRoZSBJbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uJ3MgdHdvLWxldHRlciBjb2RlXG4gICAqIGZvciB0aGUgZGVmYXVsdCBjb3VudHJ5LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBvbkNvdW50cnlTZWxlY3RlZChuZXdDb3VudHJ5OiBTa3lBdXRvY29tcGxldGVTZWxlY3Rpb25DaGFuZ2UpOiB2b2lkIHtcbiAgICBpZiAobmV3Q291bnRyeS5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLmNvdW50cmllcy5maW5kKGNvdW50cnlJbmZvID0+IGNvdW50cnlJbmZvLmlzbzIgPT09XG4gICAgICAgIG5ld0NvdW50cnkuc2VsZWN0ZWRJdGVtLmlzbzIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQW5ndWxhciBhdXRvbWF0aWNhbGx5IGNvbnN0cnVjdHMgdGhlc2UgbWV0aG9kcy5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcHVibGljIG9uQ2hhbmdlOiBGdW5jdGlvbiA9ICh2YWx1ZTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSkgPT4geyB9O1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHB1YmxpYyBvblRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBBbGxvd3MgQW5ndWxhciB0byBkaXNhYmxlIHRoZSBpbnB1dC5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWUpIHtcbiAgICAgIGlmICgodGhpcy5zdXBwb3J0ZWRDb3VudHJ5SVNPcyAmJlxuICAgICAgICB0aGlzLnN1cHBvcnRlZENvdW50cnlJU09zLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgdGhpcy5zdXBwb3J0ZWRDb3VudHJ5SVNPcy5pbmRleE9mKGNvbnRyb2wudmFsdWUuaXNvMikgPCAwKSB8fFxuICAgICAgICAhdGhpcy5jb3VudHJpZXMuZmluZChjb3VudHJ5ID0+IGNvdW50cnkuaXNvMiA9PT0gY29udHJvbC52YWx1ZS5pc28yKSkge1xuICAgICAgICByZXR1cm4geyB1bnN1cHBvcnRlZENvdW50cnk6IHRydWUgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IFNreUNvdW50cnlGaWVsZENvdW50cnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gdmFsdWU7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgIHRoaXMuaWRsZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBjb25zdCBkb2N1bWVudE9iaiA9IHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudDtcblxuICAgIGZyb21FdmVudChkb2N1bWVudE9iaiwgJ21vdXNlZG93bicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5pZGxlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuaXNJbnB1dEZvY3VzZWQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgZnJvbUV2ZW50KGRvY3VtZW50T2JqLCAnZm9jdXNpbicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5pZGxlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuaXNJbnB1dEZvY3VzZWQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb3VudHJpZXNBcmVFcXVhbChjb3VudHJ5MTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSwgY291bnRyeTI6IFNreUNvdW50cnlGaWVsZENvdW50cnkpOiBib29sZWFuIHtcbiAgICBpZiAoY291bnRyeTEgJiYgY291bnRyeTIpIHtcbiAgICAgIHJldHVybiBjb3VudHJ5MS5pc28yID09PSBjb3VudHJ5Mi5pc28yO1xuICAgIH1cblxuICAgIC8vIE5PVEU6IFdlIGFyZSBkb2luZyB0aGlzIGluICB0aGlzIHdheSBiZWNhdXNlIHRlbXBsYXRlIGZvcm1zIHdpbGwgc2VuZCB0aHJvdWdoIGBudWxsYFxuICAgIC8vIGFuZCB0aGVuIGB1bmRlZmluZWRgIG9uIGVtcHR5IGluaXRpYWxpemF0aW9uLiBUaGVzZSBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgYnV0IHdpbGxcbiAgICAvLyBub3QgcGFzcyBhIHN0YW5kYXJkIHRyaXBsZSBlcXVhbHMgY2hlY2suXG4gICAgcmV0dXJuICFjb3VudHJ5MSAmJiAhY291bnRyeTI7XG4gIH1cblxuICBwcml2YXRlIGNvdW50cmllc0VxdWFsKGE6IFNreUNvdW50cnlGaWVsZENvdW50cnksIGI6IFNreUNvdW50cnlGaWVsZENvdW50cnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYS5pc28yID09PSBiLmlzbzIgJiYgYS5uYW1lID09PSBiLm5hbWU7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuaWRsZS5uZXh0KCk7XG4gICAgdGhpcy5pZGxlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQ291bnRyaWVzKCk6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIFRoZSBqc29uIGZ1bmN0aW9ucyBoZXJlIGVuc3VyZXMgdGhhdCB3ZSBnZXQgYSBjb3B5IG9mIHRoZSBhcnJheSBhbmQgbm90IHRoZSBnbG9iYWwgb3JpZ2luYWwuXG4gICAgICogVGhpcyBlbnN1cmVzIHRoYXQgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBjb21wb25lbnQgZG9uJ3Qgb3ZlcndyaXRlIHRoZSBvcmlnaW5hbCBkYXRhLlxuICAgICAqXG4gICAgICogV2UgbXVzdCB0eXBlIHRoZSB3aW5kb3cgb2JqZWN0IGFzIGFueSBoZXJlIGFzIHRoZSBpbnRsLXRlbC1pbnB1dCBsaWJyYXJ5IGFkZHMgaXRzIG9iamVjdFxuICAgICAqIHRvIHRoZSBtYWluIHdpbmRvdyBvYmplY3QuXG4gICAgICovXG4gICAgdGhpcy5jb3VudHJpZXMgPSBKU09OXG4gICAgICAucGFyc2UoSlNPTi5zdHJpbmdpZnkoKHdpbmRvdyBhcyBhbnkpXG4gICAgICAgIC5pbnRsVGVsSW5wdXRHbG9iYWxzXG4gICAgICAgIC5nZXRDb3VudHJ5RGF0YSgpKSk7XG5cbiAgICAvLyBJZ25vcmluZyBjb3ZlcmFnZSBoZXJlIGFzIHRoaXMgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuXG4gICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICBpZiAoIXRoaXMuaW5jbHVkZVBob25lSW5mbyAmJiAhdGhpcy5oaWRlU2VsZWN0ZWRDb3VudHJ5RmxhZykge1xuICAgICAgaWYgKFxuICAgICAgICAoPEhUTUxFbGVtZW50PnRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50KVxuICAgICAgICAgID8uY2xhc3NMaXN0XG4gICAgICAgICAgPy5jb250YWlucygnc2t5LXBob25lLWZpZWxkLWNvdW50cnktc2VhcmNoJylcbiAgICAgICkge1xuICAgICAgICB0aGlzLmluY2x1ZGVQaG9uZUluZm8gPSB0cnVlO1xuICAgICAgICB0aGlzLmhpZGVTZWxlY3RlZENvdW50cnlGbGFnID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICghdGhpcy5pbmNsdWRlUGhvbmVJbmZvKSB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBsaWJyYXJ5IHdlIGdldCB0aGUgY291bnRyeSBkYXRhIGZyb20gaW5jbHVkZXMgZXh0cmEgcGhvbmUgcHJvcGVydGllcy5cbiAgICAgICAqIFdlIHdhbnQgdG8gcmVtb3ZlIHRoZXNlIHVubGVzcyB3ZSBhcmUgaW4gYSBwaG9uZSBmaWVsZFxuICAgICAgICovXG4gICAgICB0aGlzLmNvdW50cmllcy5mb3JFYWNoKChjb3VudHJ5OiBhbnkpID0+IHtcbiAgICAgICAgZGVsZXRlIGNvdW50cnkuZGlhbENvZGU7XG4gICAgICAgIGRlbGV0ZSBjb3VudHJ5LmFyZWFDb2RlcztcbiAgICAgICAgZGVsZXRlIGNvdW50cnkucHJpb3JpdHk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNvcnRDb3VudHJpZXNXaXRoU2VsZWN0ZWRBbmREZWZhdWx0KHRoaXMuc2VsZWN0ZWRDb3VudHJ5KTtcblxuICAgIGlmICh0aGlzLnN1cHBvcnRlZENvdW50cnlJU09zICYmIHRoaXMuc3VwcG9ydGVkQ291bnRyeUlTT3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jb3VudHJpZXMgPSB0aGlzLmNvdW50cmllcy5maWx0ZXIoKGNvdW50cnk6IFNreUNvdW50cnlGaWVsZENvdW50cnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VwcG9ydGVkQ291bnRyeUlTT3MuaW5kZXhPZihjb3VudHJ5LmlzbzIpID49IDA7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNvcnRDb3VudHJpZXNXaXRoU2VsZWN0ZWRBbmREZWZhdWx0KHNlbGVjdGVkQ291bnRyeTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSk6IHZvaWQge1xuICAgIGxldCBzZWxlY3RlZENvdW50cnlJbmRleDogbnVtYmVyO1xuICAgIGxldCBzZWxlY3RlZENvdW50cnlEYXRhOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5O1xuXG4gICAgbGV0IHNvcnRlZE5ld0NvdW50cmllcyA9IHRoaXMuY291bnRyaWVzXG4gICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBpZiAoKCh0aGlzLmRlZmF1bHRDb3VudHJ5RGF0YSAmJiB0aGlzLmNvdW50cmllc0VxdWFsKGEsIHRoaXMuZGVmYXVsdENvdW50cnlEYXRhKSkgfHxcbiAgICAgICAgICBhLm5hbWUgPCBiLm5hbWUpICYmICghdGhpcy5kZWZhdWx0Q291bnRyeURhdGEgfHwgIXRoaXMuY291bnRyaWVzRXF1YWwodGhpcy5kZWZhdWx0Q291bnRyeURhdGEsIGIpKSkge1xuICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBpZiAoc2VsZWN0ZWRDb3VudHJ5KSB7XG4gICAgICAvLyBOb3RlOiBXZSBhcmUgbG9va2luZyB1cCB0aGlzIGRhdGEgaGVyZSB0byBlbnN1cmUgd2UgYXJlIHVzaW5nIHRoZSBvZmZpY2FsIGRhdGEgZnJvbSB0aGVcbiAgICAgIC8vIGxpYnJhcnkgYW5kIG5vdCB0aGUgZGF0YSBwcm92aWRlZCBieSB0aGUgdXNlciBvbiBpbml0aWFsaXphdGlvbiBvZiB0aGUgY29tcG9uZW50XG4gICAgICBzZWxlY3RlZENvdW50cnlEYXRhID0gdGhpcy5jb3VudHJpZXNcbiAgICAgICAgLmZpbmQoY291bnRyeSA9PiBjb3VudHJ5LmlzbzIgPT09IHNlbGVjdGVkQ291bnRyeS5pc28yLnRvTG9jYWxlTG93ZXJDYXNlKCkpO1xuICAgICAgc2VsZWN0ZWRDb3VudHJ5SW5kZXggPSB0aGlzLmNvdW50cmllc1xuICAgICAgICAuaW5kZXhPZihzZWxlY3RlZENvdW50cnlEYXRhKTtcblxuICAgICAgaWYgKHNlbGVjdGVkQ291bnRyeUluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5jb3VudHJpZXMuc3BsaWNlKHNlbGVjdGVkQ291bnRyeUluZGV4LCAxKTtcbiAgICAgICAgc29ydGVkTmV3Q291bnRyaWVzLnNwbGljZSgwLCAwLCBzZWxlY3RlZENvdW50cnlEYXRhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvdW50cmllcyA9IHNvcnRlZE5ld0NvdW50cmllcztcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSW5wdXRCb3goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXRCb3hIb3N0U3ZjKSB7XG4gICAgICB0aGlzLmlucHV0Qm94SG9zdFN2Yy5wb3B1bGF0ZShcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0VGVtcGxhdGU6IHRoaXMuaW5wdXRUZW1wbGF0ZVJlZixcbiAgICAgICAgICBpY29uc0luc2V0VGVtcGxhdGU6IHRoaXMuY3VycmVudFRoZW1lID09PSAnbW9kZXJuJyA/IHRoaXMuc2VhcmNoSWNvblRlbXBsYXRlUmVmIDogdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
437
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvbG9va3VwLyIsInNvdXJjZXMiOlsibW9kdWxlcy9jb3VudHJ5LWZpZWxkL2NvdW50cnktZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsYUFBYSxFQUNiLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxJQUFJLEVBQ0osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFHTCxXQUFXLEVBQ1gsU0FBUyxFQUNULE9BQU8sRUFDUCxhQUFhLEVBR2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsZUFBZSxFQUNoQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQ0wsZUFBZSxFQUNoQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLFNBQVMsRUFDVCxPQUFPLEVBQ1IsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wsU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFNeEIsT0FBTyxFQUNMLDZCQUE2QixFQUM5QixNQUFNLDhDQUE4QyxDQUFDO0FBTXRELHNEQUFzRDtBQUN0RCxJQUFNLDJCQUEyQixHQUFHO0lBQ2xDLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLHdCQUF3QixFQUF4QixDQUF3QixDQUFDO0lBQ3ZELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLGdCQUFnQjtBQUNoQixJQUFJ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QTdDLFFBQVE7O0lBbk1YO1FBREMsS0FBSyxFQUFFOzJFQUM2QjtJQVNyQztRQURDLEtBQUssRUFBRTtrRUFVUDtJQVVEO1FBREMsS0FBSyxFQUFFOzREQVdQO0lBV0Q7UUFEQyxLQUFLLEVBQUU7NkVBQ2dDO0lBT3hDO1FBREMsS0FBSyxFQUFFO29FQUtQO0lBV0Q7UUFEQyxLQUFLLEVBQUU7d0VBU1A7SUFVRDtRQURDLE1BQU0sRUFBRTsyRUFDdUc7SUFXaEg7UUFEQyxTQUFTLENBQUMsNkJBQTZCLENBQUM7d0ZBQ2dDO0lBMkR6RTtRQUpDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRTtZQUM3QixJQUFJLEVBQUUsV0FBVztZQUNqQixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7c0VBQ3lDO0lBTTNDO1FBSkMsU0FBUyxDQUFDLHVCQUF1QixFQUFFO1lBQ2xDLElBQUksRUFBRSxXQUFXO1lBQ2pCLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQzsyRUFDOEM7SUE1S3JDLHdCQUF3QjtRQVRwQyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLDY4RUFBNkM7WUFFN0MsU0FBUyxFQUFFO2dCQUNULDJCQUEyQjthQUM1QjtZQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztTQUNoRCxDQUFDO1FBME1HLFdBQUEsUUFBUSxFQUFFLENBQUE7UUFDVixXQUFBLFFBQVEsRUFBRSxDQUFBO09BMU1GLHdCQUF3QixDQWdkcEM7SUFBRCwrQkFBQztDQUFBLEFBaGRELElBZ2RDO1NBaGRZLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sLFxuICBOZ0NvbnRyb2wsXG4gIE5nTW9kZWwsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gIFNreUFwcFdpbmRvd1JlZlxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreVRoZW1lU2VydmljZVxufSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQge1xuICBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlXG59IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5cbmltcG9ydCAnaW50bC10ZWwtaW5wdXQnO1xuXG5pbXBvcnQge1xuICBmcm9tRXZlbnQsXG4gIFN1YmplY3Rcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIHRha2VVbnRpbFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZVxufSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLXNlbGVjdGlvbi1jaGFuZ2UnO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZVxufSBmcm9tICcuLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLWlucHV0LmRpcmVjdGl2ZSc7XG5cbmltcG9ydCB7XG4gIFNreUNvdW50cnlGaWVsZENvdW50cnlcbn0gZnJvbSAnLi90eXBlcy9jb3VudHJ5JztcblxuLy8gdHNsaW50OmRpc2FibGU6bm8tZm9yd2FyZC1yZWYgbm8tdXNlLWJlZm9yZS1kZWNsYXJlXG5jb25zdCBTS1lfQ09VTlRSWV9GSUVMRF9WQUxJREFUT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNreUNvdW50cnlGaWVsZENvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlXG59O1xuXG4vLyB0c2xpbnQ6ZW5hYmxlXG5sZXQgdW5pcXVlSWQ6IG51bWJlciA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1jb3VudHJ5LWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvdW50cnktZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb3VudHJ5LWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIFNLWV9DT1VOVFJZX0ZJRUxEX1ZBTElEQVRPUlxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTa3lDb3VudHJ5RmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkluaXQsIFZhbGlkYXRvciB7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdmFsdWUgZm9yIHRoZSBgYXV0b2NvbXBsZXRlYCBhdHRyaWJ1dGUgb24gdGhlIGZvcm0gaW5wdXQuXG4gICAqIEBkZWZhdWx0ICdvZmYnXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b2NvbXBsZXRlQXR0cmlidXRlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgW0ludGVybmF0aW9uYWwgT3JnYW5pemF0aW9uIGZvciBTdGFuZGFyZGl6YXRpb24gQWxwaGEgMl0oaHR0cHM6Ly93d3cubmF0aW9uc29ubGluZS5vcmcvb25ld29ybGQvY291bnRyeV9jb2RlX2xpc3QuaHRtKVxuICAgKiBjb3VudHJ5IGNvZGUgZm9yIHRoZSBkZWZhdWx0IGNvdW50cnkuXG4gICAqIFdoZW4gc2VhcmNoIHJlc3VsdHMgaW5jbHVkZSB0aGUgZGVmYXVsdCBjb3VudHJ5LCBpdCBhcHBlYXJzIGF0IHRoZSB0b3Agb2YgdGhlIGxpc3QuXG4gICAqIEBkZWZhdWx0IHVzXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRlZmF1bHRDb3VudHJ5KHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX2RlZmF1bHRDb3VudHJ5KSB7XG4gICAgICB0aGlzLl9kZWZhdWx0Q291bnRyeSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIHRoaXMuZGVmYXVsdENvdW50cnlEYXRhID0gdGhpcy5jb3VudHJpZXNcbiAgICAgICAgLmZpbmQoY291bnRyeSA9PiBjb3VudHJ5LmlzbzIgPT09IHRoaXMuX2RlZmF1bHRDb3VudHJ5KTtcblxuICAgICAgdGhpcy5zb3J0Q291bnRyaWVzV2l0aFNlbGVjdGVkQW5kRGVmYXVsdCh0aGlzLnNlbGVjdGVkQ291bnRyeSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkZWZhdWx0Q291bnRyeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0Q291bnRyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNhYmxlIHRoZSBjb3VudHJ5IGZpZWxkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZChpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVycygpO1xuXG4gICAgaWYgKCFpc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGhpZGUgdGhlIGZsYWcgaW4gdGhlIGlucHV0IGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGlkZVNlbGVjdGVkQ291bnRyeUZsYWc6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGluY2x1ZGUgcGhvbmUgaW5mb3JtYXRpb24gaW4gdGhlIHNlbGVjdGVkIGNvdW50cnkgYW5kIGNvdW50cnkgZHJvcGRvd24uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGluY2x1ZGVQaG9uZUluZm8oaW5jbHVkZVBob25lSW5mbzogYm9vbGVhbikge1xuICAgIHRoaXMuX2luY2x1ZGVQaG9uZUluZm8gPSBpbmNsdWRlUGhvbmVJbmZvO1xuXG4gICAgdGhpcy5zZXR1cENvdW50cmllcygpO1xuICB9XG5cbiAgcHVibGljIGdldCBpbmNsdWRlUGhvbmVJbmZvKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbmNsdWRlUGhvbmVJbmZvO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgW0ludGVybmF0aW9uYWwgT3JnYW5pemF0aW9uIGZvciBTdGFuZGFyZGl6YXRpb24gQWxwaGEgMl0oaHR0cHM6Ly93d3cubmF0aW9uc29ubGluZS5vcmcvb25ld29ybGQvY291bnRyeV9jb2RlX2xpc3QuaHRtKVxuICAgKiBjb3VudHJ5IGNvZGVzIGZvciB0aGUgY291bnRyaWVzIHRoYXQgdXNlcnMgY2FuIHNlbGVjdC4gQnkgZGVmYXVsdCwgYWxsIGNvdW50cmllcyBhcmUgYXZhaWxhYmxlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzdXBwb3J0ZWRDb3VudHJ5SVNPcyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICAvLyBFbnN1cmUgYWxsIHZhbHVlcyBhcmUgdGhlIHNhbWUgY2FzZS5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUubWFwKHYgPT4gdi50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdXBwb3J0ZWRDb3VudHJ5SVNPcyA9IHZhbHVlO1xuICAgIHRoaXMuc2V0dXBDb3VudHJpZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3VwcG9ydGVkQ291bnRyeUlTT3MoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9zdXBwb3J0ZWRDb3VudHJ5SVNPcztcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBzZWxlY3RlZCBjb3VudHJ5IGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkQ291bnRyeUNoYW5nZTogRXZlbnRFbWl0dGVyPFNreUNvdW50cnlGaWVsZENvdW50cnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lDb3VudHJ5RmllbGRDb3VudHJ5PigpO1xuXG4gIHB1YmxpYyBjb3VudHJpZXM6IFNreUNvdW50cnlGaWVsZENvdW50cnlbXTtcblxuICBwdWJsaWMgY291bnRyeVNlYXJjaEZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcblxuICBwdWJsaWMgaXNJbnB1dEZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzOiBudW1iZXIgPSAyO1xuXG4gIEBWaWV3Q2hpbGQoU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpXG4gIHB1YmxpYyBjb3VudHJ5U2VhcmNoQXV0b2NvbXBsZXRlRGlyZWN0aXZlOiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZTtcblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkQ291bnRyeShuZXdDb3VudHJ5OiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5KSB7XG4gICAgaWYgKCF0aGlzLmNvdW50cmllc0FyZUVxdWFsKHRoaXMuc2VsZWN0ZWRDb3VudHJ5LCBuZXdDb3VudHJ5KSkge1xuXG4gICAgICBpZiAobmV3Q291bnRyeSAmJiBuZXdDb3VudHJ5LmlzbzIpIHtcbiAgICAgICAgbGV0IGlzb0NvdW50cnkgPSB0aGlzLmNvdW50cmllcy5maW5kKGNvdW50cnkgPT4gY291bnRyeS5pc28yID09PSBuZXdDb3VudHJ5LmlzbzIpO1xuXG4gICAgICAgIGlmIChpc29Db3VudHJ5KSB7XG4gICAgICAgICAgbmV3Q291bnRyeSA9IGlzb0NvdW50cnk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5fc2VsZWN0ZWRDb3VudHJ5ID0gbmV3Q291bnRyeTtcblxuICAgICAgdGhpcy5zb3J0Q291bnRyaWVzV2l0aFNlbGVjdGVkQW5kRGVmYXVsdChuZXdDb3VudHJ5KTtcblxuICAgICAgdGhpcy5pbnRlcm5hbEZvcm1DaGFuZ2UgPSB0cnVlO1xuICAgICAgdGhpcy5jb3VudHJ5U2VhcmNoRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZENvdW50cnkpO1xuXG4gICAgICBpZiAoIXRoaXMuaXNJbml0aWFsQ2hhbmdlKSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UobmV3Q291bnRyeSk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnlDaGFuZ2UuZW1pdChuZXdDb3VudHJ5KTtcbiAgICAgIH1cblxuICAgICAgLy8gRG8gbm90IG1hcmsgdGhlIGZpZWxkIGFzIFwiZGlydHlcIlxuICAgICAgLy8gaWYgdGhlIGZpZWxkIGhhcyBiZWVuIGluaXRpYWxpemVkIHdpdGggYSB2YWx1ZS5cbiAgICAgIGlmICh0aGlzLmlzSW5pdGlhbENoYW5nZSAmJiB0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5jb250cm9sKSB7XG4gICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pc0luaXRpYWxDaGFuZ2UgPSBmYWxzZTtcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgc2Vjb25kIHBvcnRpb24gb2YgdGhpcyBpZiBzdGF0ZW1lbnQgaXMgY29tcGxleC4gVGhlIGNvbnRyb2wgdHlwZSBjaGVjayBlbnN1cmVzIHRoYXRcbiAgICAgICAqIHdlIG9ubHkgd2F0Y2ggZm9yIHRoZSBpbml0aWFsIHRpbWUgdGhyb3VnaCB0aGlzIGZ1bmN0aW9uIG9uIHJlYWN0aXZlIGZvcm1zLiBIb3dldmVyLFxuICAgICAgICogdGVtcGxhdGUgZm9ybXMgd2lsbCBzZW5kIHRocm91Z2ggYG51bGxgIGFuZCB0aGVuIGB1bmRlZmluZWRgIG9uIGVtcHR5IGluaXRpYWxpemF0aW9uXG4gICAgICAgKiBzbyB3ZSBoYXZlIHRvIGNoZWNrIGZvciB3aGVuIHRoZSBub24tbnVsbCBwYXNzIHRocm91Z2ggaGFwcGVucy5cbiAgICAgICAqL1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0luaXRpYWxDaGFuZ2UgJiZcbiAgICAgICghKHRoaXMubmdDb250cm9sIGluc3RhbmNlb2YgTmdNb2RlbCkgfHwgbmV3Q291bnRyeSAhPT0gbnVsbCkpIHtcbiAgICAgIHRoaXMuaXNJbml0aWFsQ2hhbmdlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZENvdW50cnkoKTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkQ291bnRyeTtcbiAgfVxuXG4gIHB1YmxpYyBjdXJyZW50VGhlbWU6IHN0cmluZyA9ICdkZWZhdWx0JztcblxuICBwdWJsaWMgaW5wdXRJZDogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlXG4gIH0pXG4gIHByaXZhdGUgaW5wdXRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hJY29uVGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlXG4gIH0pXG4gIHByaXZhdGUgc2VhcmNoSWNvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHByaXZhdGUgZGVmYXVsdENvdW50cnlEYXRhOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5O1xuXG4gIHByaXZhdGUgaWRsZTogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIGludGVybmFsRm9ybUNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgaXNJbml0aWFsQ2hhbmdlOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sO1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBfZGVmYXVsdENvdW50cnk6IHN0cmluZztcblxuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2luY2x1ZGVQaG9uZUluZm86IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9zZWxlY3RlZENvdW50cnk6IFNreUNvdW50cnlGaWVsZENvdW50cnk7XG5cbiAgcHJpdmF0ZSBfc3VwcG9ydGVkQ291bnRyeUlTT3M6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB3aW5kb3dSZWY6IFNreUFwcFdpbmRvd1JlZixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgaW5wdXRCb3hIb3N0U3ZjPzogU2t5SW5wdXRCb3hIb3N0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc2V0dXBDb3VudHJpZXMoKTtcblxuICAgIHRoaXMuY291bnRyeVNlYXJjaEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIH1cblxuICAvKipcbiAgICogQW5ndWxhciBsaWZlY3ljbGUgaG9vayBmb3Igd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxpemVkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlSW5wdXRCb3goKTtcblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tbnVsbC1rZXl3b3JkXG4gICAgdGhpcy5uZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldDxOZ0NvbnRyb2w+KE5nQ29udHJvbCBhcyB1bmtub3duIGFzIFR5cGU8TmdDb250cm9sPiwgbnVsbCk7XG5cbiAgICB0aGlzLmlucHV0SWQgPSBgc2t5LWNvdW50cnktZmllbGQtaW5wdXQtJHt1bmlxdWVJZCsrfWA7XG5cbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBpbml0aWFsIGNoYW5nZSBib29sZWFuIGlzIHRvIGRldGVybWluZSBpZiB0aGUgZm9ybSBpcyBzZXR0aW5nIHRoZSB2YWx1ZS4gV2hlbiBubyBmb3JtXG4gICAgICAgKiBpcyBwcmVzZW50IHdlIGRvbid0IHdhbnQgdG8gaWdub3JlIHRoZSBmaXJzdCBjaGFuZ2UuXG4gICAgICAgKi9cbiAgICAgIHRoaXMuaXNJbml0aWFsQ2hhbmdlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRlZmF1bHRDb3VudHJ5KSB7XG4gICAgICB0aGlzLmRlZmF1bHRDb3VudHJ5ID0gJ3VzJztcbiAgICB9XG5cbiAgICB0aGlzLmNvdW50cnlTZWFyY2hGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShuZXdWYWx1ZSA9PiB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSAmJiAhdGhpcy5pbnRlcm5hbEZvcm1DaGFuZ2UpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IG5ld1ZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVycygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy50aGVtZVN2Yz8uc2V0dGluZ3NDaGFuZ2VcbiAgICAgIC5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50VGhlbWUgPSBjaGFuZ2UuY3VycmVudFNldHRpbmdzLnRoZW1lLm5hbWU7XG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXRCb3goKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuZ3VsYXIgbGlmZWN5Y2xlIGhvb2sgZm9yIHdoZW4gdGhlIGNvbXBvZW5udCBpcyBkZXN0cnVjdGVkLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbXBvbmVudCdzIHRvdWNoZWQgdmFsdWUgd2hlbiB0aGUgYXV0b2NvbXBsZXRlIGlzIGJsdXJyZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgb25BdXRvY29tcGxldGVCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY291bnRyeSB0byB2YWxpZGF0ZSBhZ2FpbnN0IGJhc2VkIG9uIHRoZSBjb3VudHkncyBpc28yIGNvZGUuXG4gICAqIEBwYXJhbSBuZXdDb3VudHJ5IFRoZSBJbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uJ3MgdHdvLWxldHRlciBjb2RlXG4gICAqIGZvciB0aGUgZGVmYXVsdCBjb3VudHJ5LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBvbkNvdW50cnlTZWxlY3RlZChuZXdDb3VudHJ5OiBTa3lBdXRvY29tcGxldGVTZWxlY3Rpb25DaGFuZ2UpOiB2b2lkIHtcbiAgICBpZiAobmV3Q291bnRyeS5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLmNvdW50cmllcy5maW5kKGNvdW50cnlJbmZvID0+IGNvdW50cnlJbmZvLmlzbzIgPT09XG4gICAgICAgIG5ld0NvdW50cnkuc2VsZWN0ZWRJdGVtLmlzbzIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQW5ndWxhciBhdXRvbWF0aWNhbGx5IGNvbnN0cnVjdHMgdGhlc2UgbWV0aG9kcy5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcHVibGljIG9uQ2hhbmdlOiBGdW5jdGlvbiA9ICh2YWx1ZTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSkgPT4geyB9O1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHB1YmxpYyBvblRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBBbGxvd3MgQW5ndWxhciB0byBkaXNhYmxlIHRoZSBpbnB1dC5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWUpIHtcbiAgICAgIGlmICgodGhpcy5zdXBwb3J0ZWRDb3VudHJ5SVNPcyAmJlxuICAgICAgICB0aGlzLnN1cHBvcnRlZENvdW50cnlJU09zLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgdGhpcy5zdXBwb3J0ZWRDb3VudHJ5SVNPcy5pbmRleE9mKGNvbnRyb2wudmFsdWUuaXNvMikgPCAwKSB8fFxuICAgICAgICAhdGhpcy5jb3VudHJpZXMuZmluZChjb3VudHJ5ID0+IGNvdW50cnkuaXNvMiA9PT0gY29udHJvbC52YWx1ZS5pc28yKSkge1xuICAgICAgICByZXR1cm4geyB1bnN1cHBvcnRlZENvdW50cnk6IHRydWUgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IFNreUNvdW50cnlGaWVsZENvdW50cnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gdmFsdWU7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgIHRoaXMuaWRsZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBjb25zdCBkb2N1bWVudE9iaiA9IHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudDtcblxuICAgIGZyb21FdmVudChkb2N1bWVudE9iaiwgJ21vdXNlZG93bicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5pZGxlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuaXNJbnB1dEZvY3VzZWQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgZnJvbUV2ZW50KGRvY3VtZW50T2JqLCAnZm9jdXNpbicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5pZGxlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuaXNJbnB1dEZvY3VzZWQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb3VudHJpZXNBcmVFcXVhbChjb3VudHJ5MTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSwgY291bnRyeTI6IFNreUNvdW50cnlGaWVsZENvdW50cnkpOiBib29sZWFuIHtcbiAgICBpZiAoY291bnRyeTEgJiYgY291bnRyeTIpIHtcbiAgICAgIHJldHVybiBjb3VudHJ5MS5pc28yID09PSBjb3VudHJ5Mi5pc28yO1xuICAgIH1cblxuICAgIC8vIE5PVEU6IFdlIGFyZSBkb2luZyB0aGlzIGluICB0aGlzIHdheSBiZWNhdXNlIHRlbXBsYXRlIGZvcm1zIHdpbGwgc2VuZCB0aHJvdWdoIGBudWxsYFxuICAgIC8vIGFuZCB0aGVuIGB1bmRlZmluZWRgIG9uIGVtcHR5IGluaXRpYWxpemF0aW9uLiBUaGVzZSBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgYnV0IHdpbGxcbiAgICAvLyBub3QgcGFzcyBhIHN0YW5kYXJkIHRyaXBsZSBlcXVhbHMgY2hlY2suXG4gICAgcmV0dXJuICFjb3VudHJ5MSAmJiAhY291bnRyeTI7XG4gIH1cblxuICBwcml2YXRlIGNvdW50cmllc0VxdWFsKGE6IFNreUNvdW50cnlGaWVsZENvdW50cnksIGI6IFNreUNvdW50cnlGaWVsZENvdW50cnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYS5pc28yID09PSBiLmlzbzIgJiYgYS5uYW1lID09PSBiLm5hbWU7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuaWRsZS5uZXh0KCk7XG4gICAgdGhpcy5pZGxlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQ291bnRyaWVzKCk6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIFRoZSBqc29uIGZ1bmN0aW9ucyBoZXJlIGVuc3VyZXMgdGhhdCB3ZSBnZXQgYSBjb3B5IG9mIHRoZSBhcnJheSBhbmQgbm90IHRoZSBnbG9iYWwgb3JpZ2luYWwuXG4gICAgICogVGhpcyBlbnN1cmVzIHRoYXQgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBjb21wb25lbnQgZG9uJ3Qgb3ZlcndyaXRlIHRoZSBvcmlnaW5hbCBkYXRhLlxuICAgICAqXG4gICAgICogV2UgbXVzdCB0eXBlIHRoZSB3aW5kb3cgb2JqZWN0IGFzIGFueSBoZXJlIGFzIHRoZSBpbnRsLXRlbC1pbnB1dCBsaWJyYXJ5IGFkZHMgaXRzIG9iamVjdFxuICAgICAqIHRvIHRoZSBtYWluIHdpbmRvdyBvYmplY3QuXG4gICAgICovXG4gICAgdGhpcy5jb3VudHJpZXMgPSBKU09OXG4gICAgICAucGFyc2UoSlNPTi5zdHJpbmdpZnkoKHdpbmRvdyBhcyBhbnkpXG4gICAgICAgIC5pbnRsVGVsSW5wdXRHbG9iYWxzXG4gICAgICAgIC5nZXRDb3VudHJ5RGF0YSgpKSk7XG5cbiAgICAvLyBJZ25vcmluZyBjb3ZlcmFnZSBoZXJlIGFzIHRoaXMgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuXG4gICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICBpZiAoIXRoaXMuaW5jbHVkZVBob25lSW5mbyAmJiAhdGhpcy5oaWRlU2VsZWN0ZWRDb3VudHJ5RmxhZykge1xuICAgICAgaWYgKFxuICAgICAgICAoPEhUTUxFbGVtZW50PnRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50KVxuICAgICAgICAgID8uY2xhc3NMaXN0XG4gICAgICAgICAgPy5jb250YWlucygnc2t5LXBob25lLWZpZWxkLWNvdW50cnktc2VhcmNoJylcbiAgICAgICkge1xuICAgICAgICB0aGlzLmluY2x1ZGVQaG9uZUluZm8gPSB0cnVlO1xuICAgICAgICB0aGlzLmhpZGVTZWxlY3RlZENvdW50cnlGbGFnID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICghdGhpcy5pbmNsdWRlUGhvbmVJbmZvKSB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBsaWJyYXJ5IHdlIGdldCB0aGUgY291bnRyeSBkYXRhIGZyb20gaW5jbHVkZXMgZXh0cmEgcGhvbmUgcHJvcGVydGllcy5cbiAgICAgICAqIFdlIHdhbnQgdG8gcmVtb3ZlIHRoZXNlIHVubGVzcyB3ZSBhcmUgaW4gYSBwaG9uZSBmaWVsZFxuICAgICAgICovXG4gICAgICB0aGlzLmNvdW50cmllcy5mb3JFYWNoKChjb3VudHJ5OiBhbnkpID0+IHtcbiAgICAgICAgZGVsZXRlIGNvdW50cnkuZGlhbENvZGU7XG4gICAgICAgIGRlbGV0ZSBjb3VudHJ5LmFyZWFDb2RlcztcbiAgICAgICAgZGVsZXRlIGNvdW50cnkucHJpb3JpdHk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNvcnRDb3VudHJpZXNXaXRoU2VsZWN0ZWRBbmREZWZhdWx0KHRoaXMuc2VsZWN0ZWRDb3VudHJ5KTtcblxuICAgIGlmICh0aGlzLnN1cHBvcnRlZENvdW50cnlJU09zICYmIHRoaXMuc3VwcG9ydGVkQ291bnRyeUlTT3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jb3VudHJpZXMgPSB0aGlzLmNvdW50cmllcy5maWx0ZXIoKGNvdW50cnk6IFNreUNvdW50cnlGaWVsZENvdW50cnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VwcG9ydGVkQ291bnRyeUlTT3MuaW5kZXhPZihjb3VudHJ5LmlzbzIpID49IDA7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNvcnRDb3VudHJpZXNXaXRoU2VsZWN0ZWRBbmREZWZhdWx0KHNlbGVjdGVkQ291bnRyeTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSk6IHZvaWQge1xuICAgIGxldCBzZWxlY3RlZENvdW50cnlJbmRleDogbnVtYmVyO1xuICAgIGxldCBzZWxlY3RlZENvdW50cnlEYXRhOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5O1xuXG4gICAgbGV0IHNvcnRlZE5ld0NvdW50cmllcyA9IHRoaXMuY291bnRyaWVzXG4gICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBpZiAoKCh0aGlzLmRlZmF1bHRDb3VudHJ5RGF0YSAmJiB0aGlzLmNvdW50cmllc0VxdWFsKGEsIHRoaXMuZGVmYXVsdENvdW50cnlEYXRhKSkgfHxcbiAgICAgICAgICBhLm5hbWUgPCBiLm5hbWUpICYmICghdGhpcy5kZWZhdWx0Q291bnRyeURhdGEgfHwgIXRoaXMuY291bnRyaWVzRXF1YWwodGhpcy5kZWZhdWx0Q291bnRyeURhdGEsIGIpKSkge1xuICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBpZiAoc2VsZWN0ZWRDb3VudHJ5KSB7XG4gICAgICAvLyBOb3RlOiBXZSBhcmUgbG9va2luZyB1cCB0aGlzIGRhdGEgaGVyZSB0byBlbnN1cmUgd2UgYXJlIHVzaW5nIHRoZSBvZmZpY2FsIGRhdGEgZnJvbSB0aGVcbiAgICAgIC8vIGxpYnJhcnkgYW5kIG5vdCB0aGUgZGF0YSBwcm92aWRlZCBieSB0aGUgdXNlciBvbiBpbml0aWFsaXphdGlvbiBvZiB0aGUgY29tcG9uZW50XG4gICAgICBzZWxlY3RlZENvdW50cnlEYXRhID0gdGhpcy5jb3VudHJpZXNcbiAgICAgICAgLmZpbmQoY291bnRyeSA9PiBjb3VudHJ5LmlzbzIgPT09IHNlbGVjdGVkQ291bnRyeS5pc28yLnRvTG9jYWxlTG93ZXJDYXNlKCkpO1xuICAgICAgc2VsZWN0ZWRDb3VudHJ5SW5kZXggPSB0aGlzLmNvdW50cmllc1xuICAgICAgICAuaW5kZXhPZihzZWxlY3RlZENvdW50cnlEYXRhKTtcblxuICAgICAgaWYgKHNlbGVjdGVkQ291bnRyeUluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5jb3VudHJpZXMuc3BsaWNlKHNlbGVjdGVkQ291bnRyeUluZGV4LCAxKTtcbiAgICAgICAgc29ydGVkTmV3Q291bnRyaWVzLnNwbGljZSgwLCAwLCBzZWxlY3RlZENvdW50cnlEYXRhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvdW50cmllcyA9IHNvcnRlZE5ld0NvdW50cmllcztcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSW5wdXRCb3goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXRCb3hIb3N0U3ZjKSB7XG4gICAgICB0aGlzLmlucHV0Qm94SG9zdFN2Yy5wb3B1bGF0ZShcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0VGVtcGxhdGU6IHRoaXMuaW5wdXRUZW1wbGF0ZVJlZixcbiAgICAgICAgICBpY29uc0luc2V0VGVtcGxhdGU6IHRoaXMuY3VycmVudFRoZW1lID09PSAnbW9kZXJuJyA/IHRoaXMuc2VhcmNoSWNvblRlbXBsYXRlUmVmIDogdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -232,7 +232,7 @@ var SkyLookupShowMoreModalComponent = /** @class */ (function () {
|
|
|
232
232
|
selector: 'skyux-lookup-show-more-modal',
|
|
233
233
|
template: "<sky-modal>\n <sky-modal-header>\n <ng-container *ngIf=\"context.userConfig?.title; else defaultTitle\">\n {{context.userConfig.title}}\n </ng-container>\n </sky-modal-header>\n <sky-modal-content>\n <div\n [skyViewkeeper]=\"['.sky-lookup-show-more-modal-toolbar', '.sky-lookup-show-more-modal-muiltiselect-toolbar']\"\n >\n <sky-toolbar\n class=\"sky-lookup-show-more-modal-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <button *ngIf=\"context.showAddButton\"\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon *skyThemeIf=\"'modern'\"\n icon=\"add\"\n iconType=\"skyux\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"plus-circle\"\n ></sky-icon>\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n <sky-toolbar *ngIf=\"context.selectMode === 'multiple'\"\n class=\"sky-lookup-show-more-modal-muiltiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{'skyux_lookup_show_more_select_all_button_title' | skyLibResources}}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{'skyux_lookup_show_more_clear_all_button_title' | skyLibResources}}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDataState()\"\n >\n <sky-checkbox-label>\n {{'skyux_lookup_show_more_show_selected_option_title' | skyLibResources}}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div *ngIf=\"displayedItems.length===0\"\n class=\"sky-font-deemphasized sky-lookup-show-more-no-results\"\n >\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n <sky-repeater\n class=\"sky-lookup-show-more-repeater\"\n expandMode=\"none\"\n >\n <sky-repeater-item *ngFor=\"let item of displayedItems\"\n [selectable]=\"context.selectMode === 'multiple'\"\n [(isSelected)]=\"item.selected\"\n (click)=\"itemClick(item)\"\n (keyup.enter)=\"itemClick(item)\"\n (isSelectedChange)=\"onItemSelect($event, item)\"\n >\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"context.userConfig?.itemTemplate ? context.userConfig?.itemTemplate : defaultItemTemplate; context: { item: item.value }\">\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n <sky-infinite-scroll\n [enabled]=\"itemsHaveMore\"\n (scrollEnd)=\"addItems()\"\n >\n </sky-infinite-scroll>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n (click)=\"modalInstance.save(selectedItems)\"\n >\n {{ 'skyux_lookup_show_more_select' | skyLibResources}}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n type=\"button\"\n (click)=\"modalInstance.close()\"\n >\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n\n<ng-template\n let-item=\"item\"\n #defaultItemTemplate\n>\n {{ item[context.descriptorProperty] }}\n</ng-template>\n\n<ng-template #defaultTitle>\n <ng-container *ngIf=\"context.selectMode === 'single'\">\n {{ 'skyux_lookup_show_more_modal_title_single' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"context.selectMode === 'multiple'\">\n {{ 'skyux_lookup_show_more_modal_title_multiple' | skyLibResources }}\n </ng-container>\n</ng-template>\n",
|
|
234
234
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
235
|
-
styles: [".sky-lookup-show-more-no-results{padding:20px 0}.sky-theme-modern .sky-lookup-show-more-no-results
|
|
235
|
+
styles: [".sky-lookup-show-more-no-results{padding:20px 0}:host-context(.sky-theme-modern) .sky-lookup-show-more-no-results{padding:30px 0}.sky-theme-modern .sky-lookup-show-more-no-results{padding:30px 0}"]
|
|
236
236
|
})
|
|
237
237
|
], SkyLookupShowMoreModalComponent);
|
|
238
238
|
return SkyLookupShowMoreModalComponent;
|