@bpost/bp-address-auto-complete-by-component 1.0.25 → 1.0.29
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/VERSION.md +17 -0
- package/bpost-bp-address-auto-complete-by-component.metadata.json +1 -1
- package/bundles/bpost-bp-address-auto-complete-by-component.umd.js +56 -8
- package/bundles/bpost-bp-address-auto-complete-by-component.umd.js.map +1 -1
- package/bundles/bpost-bp-address-auto-complete-by-component.umd.min.js +1 -1
- package/bundles/bpost-bp-address-auto-complete-by-component.umd.min.js.map +1 -1
- package/esm2015/lib/lib-address-autocomplete-by-component.component.js +21 -6
- package/esm2015/lib/locality/locality.component.js +21 -3
- package/esm2015/lib/model/query-parameters.model.js +2 -2
- package/esm2015/lib/services/adress.service.js +2 -1
- package/esm2015/lib/services/http.service.js +15 -2
- package/esm2015/lib/utils/prefill-data.js +3 -1
- package/esm5/lib/lib-address-autocomplete-by-component.component.js +21 -6
- package/esm5/lib/locality/locality.component.js +21 -3
- package/esm5/lib/model/query-parameters.model.js +2 -2
- package/esm5/lib/services/adress.service.js +2 -1
- package/esm5/lib/services/http.service.js +16 -3
- package/esm5/lib/utils/prefill-data.js +3 -1
- package/fesm2015/bpost-bp-address-auto-complete-by-component.js +57 -9
- package/fesm2015/bpost-bp-address-auto-complete-by-component.js.map +1 -1
- package/fesm5/bpost-bp-address-auto-complete-by-component.js +58 -10
- package/fesm5/bpost-bp-address-auto-complete-by-component.js.map +1 -1
- package/lib/lib-address-autocomplete-by-component.component.d.ts +5 -1
- package/lib/model/query-parameters.model.d.ts +1 -1
- package/lib/services/adress.service.d.ts +1 -0
- package/lib/services/http.service.d.ts +4 -1
- package/lib/utils/prefill-data.d.ts +1 -0
- package/package.json +1 -1
|
@@ -477,11 +477,29 @@ var LocalityComponent = /** @class */ (function () {
|
|
|
477
477
|
var suggestionMunicipality = this.transformMunicipalityInLowercaseAndWithoutDiacritics(sugAddress.municipalityName);
|
|
478
478
|
if (suggestionLocality === this.prefillData.prefillMunicipalityName
|
|
479
479
|
|| suggestionMunicipality === this.prefillData.prefillMunicipalityName) {
|
|
480
|
+
if (this.prefillData.prefillMunicipalityAndLocalityPerfectMatchFound === true) {
|
|
481
|
+
if (this.showDebugMessageToConsole) {
|
|
482
|
+
console.log('LOCALITY - PREFILL - skipping suggestion:', suggestion);
|
|
483
|
+
}
|
|
484
|
+
if (this.showDebugMessageToConsole) {
|
|
485
|
+
console.log('LOCALITY - PREFILL - keeping suggestion:', this.prefillData.prefillMunicipalityPerfectMatchSuggestion);
|
|
486
|
+
}
|
|
487
|
+
return;
|
|
488
|
+
}
|
|
480
489
|
this.prefillData.prefillMunicipalityPerfectMatchFound = true;
|
|
481
490
|
this.prefillData.prefillMunicipalityPerfectMatchSuggestion = suggestion;
|
|
482
491
|
this.searchText = sugAddress.postalCode + ' ' + sugAddress.localityName;
|
|
483
|
-
|
|
484
|
-
|
|
492
|
+
this.prefillData.prefillMunicipalityAndLocalityPerfectMatchFound = (suggestionLocality === this.prefillData.prefillMunicipalityName
|
|
493
|
+
&& suggestionMunicipality === this.prefillData.prefillMunicipalityName) ? true : false;
|
|
494
|
+
if (this.prefillData.prefillMunicipalityAndLocalityPerfectMatchFound === true) {
|
|
495
|
+
if (this.showDebugMessageToConsole) {
|
|
496
|
+
console.log('LOCALITY - PREFILL - Perfect match - Municipality & location:', suggestion);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
else {
|
|
500
|
+
if (this.showDebugMessageToConsole) {
|
|
501
|
+
console.log('LOCALITY - PREFILL - Perfect match:', suggestion);
|
|
502
|
+
}
|
|
485
503
|
}
|
|
486
504
|
}
|
|
487
505
|
}
|
|
@@ -800,4 +818,4 @@ var LocalityComponent = /** @class */ (function () {
|
|
|
800
818
|
return LocalityComponent;
|
|
801
819
|
}());
|
|
802
820
|
export { LocalityComponent };
|
|
803
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpdHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGJwb3N0L2JwLWFkZHJlc3MtYXV0by1jb21wbGV0ZS1ieS1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvbG9jYWxpdHkvbG9jYWxpdHkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE2RSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0osT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFPeEQ7SUFrRUUsMkJBQ1UsY0FBOEIsRUFDOUIsYUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ2xDLGNBQThCO1FBSDlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG1CQUFj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QUU7OERBQXlEO0lBQ3hEO1FBQVQsTUFBTSxFQUFFO3FFQUFtRTtJQUVsRTtRQUFULE1BQU0sRUFBRTtrRUFBb0Y7SUFyQ2xGLGlCQUFpQjtRQUw3QixTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsYUFBYTtZQUN2Qix5ekVBQXdDOztTQUV6QyxDQUFDO09BQ1csaUJBQWlCLENBeXZCN0I7SUFBRCx3QkFBQztDQUFBLEFBenZCRCxJQXl2QkM7U0F6dkJZLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcywgQWZ0ZXJWaWV3Q2hlY2tlZCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VUeXBlIH0gZnJvbSAnLi4vZW51bS92YWxpZGF0aW9uLW1lc3NhZ2UtdHlwZS5lbnVtJztcbmltcG9ydCB7IEFERFJFU1NMRVZFTCB9IGZyb20gJy4uL2VudW0vYWRkcmVzcy1sZXZlbC5lbnVtJztcbmltcG9ydCB7IFF1ZXJ5UGFyYW1ldGVycyB9IGZyb20gJy4uL21vZGVsL3F1ZXJ5LXBhcmFtZXRlcnMubW9kZWwnO1xuaW1wb3J0IHsgQWRkcmVzc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hZHJlc3Muc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbG9jYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVW5pY29kZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91bmljb2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJy4uL3V0aWxzL2RvbWhhbmRsZXInO1xuaW1wb3J0IHsgU291cmNlVHlwZSB9IGZyb20gJy4uL2VudW0vc291cmNlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQcmVmaWxsRGF0YSB9IGZyb20gJy4uL3V0aWxzL3ByZWZpbGwtZGF0YSc7XG5pbXBvcnQgeyBQcmVmaWxsRXZlbnQgfSBmcm9tICcuLi91dGlscy9wcmVmbGxsLmV2ZW50JztcbmltcG9ydCB7IElucHV0TmFtZVR5cGUgfSBmcm9tICcuLi9lbnVtL2lucHV0LW5hbWUuZW51bSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JwLWxvY2FsaXR5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvY2FsaXR5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9jYWxpdHkuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBMb2NhbGl0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQge1xuXG4gIEBWaWV3Q2hpbGQoJ2xvY2FsaXR5U2VhcmNoSW5wdXQnLCB7c3RhdGljOiBmYWxzZX0gKSBsb2NhbGl0eVNlYXJjaElucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdsb2NhbGl0eUxpc3QnLCB7c3RhdGljOiBmYWxzZX0gKSBsb2NhbGl0eUxpc3Q6IEVsZW1lbnRSZWY7XG5cbiAgLy8gMjAyMC0wNi0xNVxuLyogICBASW5wdXQoKVxuICBvbkZvY3VzU2hvd1N1Z2dlc3Rpb25zQWZ0ZXJQcmVmaWxsID0gdHJ1ZTsgKi9cblxuICBASW5wdXQoKSBsYWJlbFJlc291cmNlS2V5ID0gJ2NvbW1vbi5sYWJlbC5wb3N0YWxDb2RlJztcbiAgQElucHV0KCkgbWVzc2FnZU9wdGlvbiA9ICdZJztcbiAgQElucHV0KCkgbWF4U3VnZ2VzaW9uQ291bnQgPSA1O1xuICBASW5wdXQoKSB2aXNpYmxlU3VnZ2VzdGlvbkNvdW50ID0gNTtcbiAgQElucHV0KCkgc29ydENyaXRlcmlhID0gJyc7XG4gIEBJbnB1dCgpIGJhc2VVcmw6IHN0cmluZztcbiAgQElucHV0KCkgaW5wdXRUZXh0OiBzdHJpbmc7XG4gIC8vIEBJbnB1dCgpIGFkZHJlc3NQYXJhbXM6IFByZWZpbGxlZFBhcmFtZXRlcnM7XG4gIEBJbnB1dCgpIHByZWZpbGxEYXRhOiBQcmVmaWxsRGF0YTtcbiAgQElucHV0KCkgc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSA9IHRydWU7XG5cbi8vIEB0cy1pZ25vcmVcbiAgQElucHV0KCkgc2V0IGlucHV0TGFuZyh2YWw6IHN0cmluZykge1xuICAgIHRoaXMubG9jYWxlU2VydmljZS5jaGFuZ2VMYW5nKHZhbCk7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZSh2YWwpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlZExhbmd1YWdlKCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBtZXNzYWdlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPHttZXNzYWdlVHlwZTogVmFsaWRhdGlvbk1lc3NhZ2VUeXBlLCB0cmFuc2xhdGVkTWVzc2FnZTogc3RyaW5nfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBhZGRyZXNzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBmb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGJsdXJFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSB0ZXh0Q2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xlYXJJbnB1dEV2ZW50RW1pdHRlcjogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpIHByZWZpbGxFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxQcmVmaWxsRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxQcmVmaWxsRXZlbnQ+KCk7XG5cbiAgLy8gaW5zdGFuY2UgcHJvcGVydGllc1xuICBhZGRyZXNzSXNWYWxpZGF0ZWQ6IGJvb2xlYW47XG4gIGJwVHlwZUFoZWFkOiBzdHJpbmc7XG4gIGNvbGxhcHNlRHJvcGRvd246IGJvb2xlYW47XG4gIGNvbnN1bWVkTnVtYmVyOiBudW1iZXI7XG4gIGVycm9yQ29kZTogYW55O1xuICBsYXN0U2VhcmNoVmFsdWU6IHN0cmluZztcbiAgbWluTGV2ZWw6IGFueTtcbiAgcGxhY2VIb2xkZXJUZXh0OiBzdHJpbmc7XG4gIHByZXZpb3VzSW5kZXg6IG51bWJlcjtcbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuICBzZWxlY3RlZEluZGV4OiBudW1iZXI7XG4gIHNlbGVjdGlvbkNoYW5nZWQ6IGJvb2xlYW47XG4gIHNlcXVlbmNlTnVtYmVyOiBudW1iZXI7XG4gIHNraXBOZXh0Qmx1cjogYm9vbGVhbjsgLy8gT25CbHVyIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBzdWdnZXN0aW9uL3ZhbGlkYXRvciBidXR0b25cbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHN1Z2dlc3Rpb25zOiBBcnJheTxhbnk+O1xuICBzdWdnZXN0aW9uVmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZztcbiAgc3VnZ2VzdGlvbnNXb3JkTGlzdDogYW55O1xuICB0eXBlQWhlYWRXb3JkOiBzdHJpbmc7XG4gIHZhbGlkYXRpb25NZXNzYWdlQ29kZSA9IG51bGw7XG4gIHZhbGlkYXRpb25NZXNzYWdlT3B0aW9ucyA9IG51bGw7XG4gIHdvcmRMaXN0OiBhbnk7XG5cbiAgcHJlZmlsbGluZyA9IGZhbHNlO1xuICBpc1ByZWZpbGxXaXRoTm9NYXRjaCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWRkcmVzc1NlcnZpY2U6IEFkZHJlc3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1bmljb2RlU2VydmljZTogVW5pY29kZVNlcnZpY2UsXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZFxuICB7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgLy8gaW5zdGFuY2UgcHJvcGVydGllc1xuICAgIHRoaXMuYWRkcmVzc0lzVmFsaWRhdGVkID0gZmFsc2U7XG4gICAgdGhpcy5zdWdnZXN0aW9uVmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcbiAgICB0aGlzLnN1Z2dlc3Rpb25zID0gW107XG4gICAgdGhpcy5wcmV2aW91c0luZGV4ID0gLTE7XG4gICAgdGhpcy5sYXN0U2VhcmNoVmFsdWUgPSAnJztcbiAgICB0aGlzLndvcmRMaXN0ID0gW107XG4gICAgdGhpcy5zdWdnZXN0aW9uc1dvcmRMaXN0ID0gW107XG4gICAgdGhpcy5icFR5cGVBaGVhZCA9ICcnO1xuICAgIHRoaXMucGxhY2VIb2xkZXJUZXh0ID0gJyc7XG4gICAgdGhpcy5za2lwTmV4dEJsdXIgPSBmYWxzZTsgLy8gT25CbHVyIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBzdWdnZXN0aW9uL3ZhbGlkYXRvciBidXR0b25cbiAgICB0aGlzLmVycm9yQ29kZSA9IG51bGw7XG4gICAgLy8gc2NvcGUgcHJvcGVydGllc1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xuICAgIC8vIHByb3BlcnRpZXNcbiAgICB0aGlzLnR5cGVBaGVhZFdvcmQgPSAnJztcbiAgICB0aGlzLmNvbGxhcHNlRHJvcGRvd24gPSBmYWxzZTtcbiAgICB0aGlzLnNlcXVlbmNlTnVtYmVyID0gMDtcbiAgICB0aGlzLmNvbnN1bWVkTnVtYmVyID0gMDtcbiAgICAvLyBpbml0aWFsaXphdGlvblxuICAgIHRoaXMuc2V0U2VhcmNoVGV4dCgnJyk7XG5cbiAgICB0aGlzLm9uQ2hhbmdlZExhbmd1YWdlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uQ2hhbmdlZCkge1xuICAgICAgY29uc3Qgb3ZlcmxheTogSFRNTERpdkVsZW1lbnQgPSB0aGlzLmxvY2FsaXR5TGlzdC5uYXRpdmVFbGVtZW50O1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpc3RJdGVtID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKG92ZXJsYXksICdsaS5hY3RpdmUnKTtcbiAgICAgICAgaWYgKGxpc3RJdGVtKSB7XG4gICAgICAgICAgRG9tSGFuZGxlci5zY3JvbGxJblZpZXcob3ZlcmxheSwgbGlzdEl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9LCAxKTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcykge1xuXG4gICAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgncHJlZmlsbERhdGEnKSAmJiAhY2hhbmdlcy5wcmVmaWxsRGF0YS5maXJzdENoYW5nZSkge1xuICAgICAgICB0aGlzLnByZWZpbGxpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSB0aGlzLmxvYWRQYXJhbXMoY2hhbmdlcy5wcmVmaWxsRGF0YS5jdXJyZW50VmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5zaG93RGVidWdNZXNzYWdlVG9Db25zb2xlKSB7IGNvbnNvbGUubG9nKCdsb2NhbGl0eTo6bmdPbkNoYW5nZXMgLSBsb2FkUGFyYW1lIHJlc3VsdDonLCB0aGlzLnNlYXJjaFRleHQpOyB9XG4gICAgICAgIHRoaXMuYnBUeXBlQWhlYWQgPSAnJztcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGV4dCAhPT0gJycgJiYgdGhpcy5taW5MZXZlbCA9PT0gQUREUkVTU0xFVkVMLkxPQ0FMSVRZKSB7XG4gICAgICAgICAgdGhpcy5jb2xsYXBzZURyb3Bkb3duID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnByZWZpbGxEYXRhLnByZWZpbGxNdW5pY2lwYWxpdHlOYW1lXG4gICAgICAgICAgICA9IHRoaXMudHJhbnNmb3JtTXVuaWNpcGFsaXR5SW5Mb3dlcmNhc2VBbmRXaXRob3V0RGlhY3JpdGljcyh0aGlzLnByZWZpbGxEYXRhLnBhcmFtZXRlcnMubXVuaWNpcGFsaXR5TmFtZSk7XG4gICAgICAgICAgdGhpcy5vbklucHV0Q2hhbmdlKC8qJ3ByZWZpbGxlZCcqLyBTb3VyY2VUeXBlLlNPVVJDRV9QUkVGSUxMRUQgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2lucHV0VGV4dCcpICYmICFjaGFuZ2VzLmlucHV0VGV4dC5maXJzdENoYW5nZSkge1xuICAgICAgICBpZiAodGhpcy5ub3RFcXVhbElnbm9yZUNhc2UodGhpcy5zZWFyY2hUZXh0LCBjaGFuZ2VzLmlucHV0VGV4dC5jdXJyZW50VmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5jbGVhcldpZGdldCgpO1xuICAgICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IGNoYW5nZXMuaW5wdXRUZXh0LmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLypcbiAgICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdiYXNlVXJsJykgJiYgIWNoYW5nZXMuYmFzZVVybC5maXJzdENoYW5nZSkge1xuICAgICAgICB0aGlzLmNsZWFyV2lkZ2V0KCk7XG4gICAgICAgIHRoaXMuY2xlYXJTZWxlY3RlZEFkZHJlc3MoKTtcbiAgICAgIH1cbiAgICAgICovXG4gICAgfVxuICB9XG5cbiAgdHJhbnNmb3JtTXVuaWNpcGFsaXR5SW5Mb3dlcmNhc2VBbmRXaXRob3V0RGlhY3JpdGljcyhtdW5pY2lwYWxpdHlOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQ6IHN0cmluZyA9IG51bGw7XG4gICAgaWYgKG11bmljaXBhbGl0eU5hbWUgIT09IG51bGwgJiYgbXVuaWNpcGFsaXR5TmFtZSAhPT0gdW5kZWZpbmVkIClcbiAgICB7XG4gICAgICByZXN1bHQgPSB0aGlzLnVuaWNvZGVTZXJ2aWNlLnJlbW92ZURpYWNyaXRpY3MobXVuaWNpcGFsaXR5TmFtZSk7XG4gICAgICByZXN1bHQgPSByZXN1bHQudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSkge2NvbnNvbGUubG9nKCdwcmVmaWxsIG11bmljaXBhbGl0eScsIHJlc3VsdCk7IH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGJ1aWxkSW5wdXRXb3JkTGlzdCgpIHtcbiAgICB0aGlzLndvcmRMaXN0ID0gdGhpcy5zZWFyY2hUZXh0LnNwbGl0KC9bXFxzLCBdKy8pO1xuICAgIC8vIGNvbnNvbGUubG9nKCdMaWJBdXRvY29tcGxldGVMb2NhbGl0eUNvbXBvbmVudDo6YnVpbGRJbnB1dFdvcmRMaXN0JywgdGhpcy53b3JkTGlzdCk7XG4gICAgaWYgKHRoaXMuc3VnZ2VzdGlvbnMgJiYgdGhpcy53b3JkTGlzdCkge1xuICAgICAgZm9yIChjb25zdCBzdWcgb2YgdGhpcy5zdWdnZXN0aW9ucykge1xuICAgICAgICBpZiAoIXN1ZyB8fCAhc3VnLmhhc093blByb3BlcnR5KCdzdHJpbmcnKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgdyBvZiB0aGlzLndvcmRMaXN0KSB7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLnN0YXJ0c1dpdGhJZ25vcmVEaWFjcml0aWNzKHN1Zy5zdHJpbmcgYXMgc3RyaW5nLCB3IGFzIHN0cmluZyk7XG4gICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHd3ID0gc3VnLnN0cmluZy5zdWJzdHIoc3RhcnQsIHcubGVuZ3RoKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdhZGRpbmcgd29yZDonICsgd3cpO1xuICAgICAgICAgICAgLy8gd3cgaXMgYSBjYW5kaWRhdGUgdG8gYmUgYWRkZWQgdG8gdGhlIHdvcmRsaXN0IGlmIG5vdCBhbHJlYWR5IHByZXNlbnQgaW4gaXRcbiAgICAgICAgICAgIGNvbnN0IHByZXNlbnQgPSB0aGlzLndvcmRMaXN0LmZpbmQoICh3MTogc3RyaW5nKSAgPT4gdzEudG9Mb3dlckNhc2UoKSA9PT0gd3cudG9Mb3dlckNhc2UoKSApO1xuICAgICAgICAgICAgaWYgKHByZXNlbnQgPT09IG51bGwgfHwgcHJlc2VudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHRoaXMud29yZExpc3QucHVzaCh3dyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RyaW5nU3RhcnRzV2l0aElnbm9yZURpYWNyaXRpY3ModmFsdWUsIHByZWZpeCkge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gICAgY29uc3QgX3ZhbHVlID0gdGhpcy51bmljb2RlU2VydmljZS5yZW1vdmVEaWFjcml0aWNzKCAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkgPyB2YWx1ZS50b0xvd2VyQ2FzZSgpIDogdmFsdWUgKTtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIGNvbnN0IF9wcmVmaXggPSB0aGlzLnVuaWNvZGVTZXJ2aWNlLnJlbW92ZURpYWNyaXRpY3MoIChwcmVmaXggIT09IG51bGwgJiYgcHJlZml4ICE9PSB1bmRlZmluZWQpID8gcHJlZml4LnRvTG93ZXJDYXNlKCkgOiBwcmVmaXgpO1xuICAgIGNvbnN0IHN0YXJ0ID0gX3ZhbHVlLnNsaWNlKDAsIF9wcmVmaXgubGVuZ3RoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoX3ByZWZpeCkgIT09IC0xO1xuICAgIHJldHVybiBzdGFydDtcbiAgfVxuXG4gIGJ1aWxkVHlwZUFoZWFkKHNvdXJjZTogU291cmNlVHlwZSkge1xuICAgIGlmIChzb3VyY2UgPT09IFNvdXJjZVR5cGUuU09VUkNFX1BSRUZJTExFRCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpZiAoIXRoaXMubWF5QWRkVHlwZUFoZWFkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VhcmNoVGV4dFdvcmRzID0gdGhpcy5zZWFyY2hUZXh0LnNwbGl0KC9bXFxzLCBdKy8pO1xuICAgIGNvbnN0IGxhc3RXb3JkID0gc2VhcmNoVGV4dFdvcmRzW3NlYXJjaFRleHRXb3Jkcy5sZW5ndGggLSAxXTtcblxuICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25zLnNvbWUoZnVuY3Rpb24oc3VnKSB7XG4gICAgICBpZiAoIXN1ZyB8fCAhc3VnLmhhc093blByb3BlcnR5KCdzdHJpbmcnKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3VnLnN0cmluZy5zcGxpdCgvW1xccy1dKy8pLnNvbWUoZnVuY3Rpb24od29yZCkge1xuICAgICAgICBpZiAodGhpcy5zdHJpbmdTdGFydHNXaXRoSWdub3JlRGlhY3JpdGljcyh3b3JkLCBsYXN0V29yZCkpIHtcbiAgICAgICAgICB0aGlzLnR5cGVBaGVhZFdvcmQgPSB3b3JkO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LmJpbmQodGhpcykpO1xuICAgIH0uYmluZCh0aGlzKSkpIHtcbiAgICAgIGNvbnN0IGFwcGVuZGl4ID0gdGhpcy50eXBlQWhlYWRXb3JkLnNsaWNlKGxhc3RXb3JkLmxlbmd0aCwgdGhpcy50eXBlQWhlYWRXb3JkLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIHRoaXMuYnBUeXBlQWhlYWQgPSB0aGlzLnNlYXJjaFRleHQgKyBhcHBlbmRpeDtcbiAgICB9XG4gIH1cblxuICBjbGVhckNvbm5lY3Rpb25FcnJvck1lc3NhZ2UoKSB7XG4gICAgaWYgKHRoaXMuZXJyb3JDb2RlKSB7XG4gICAgICAvKlxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0aGlzLmVycm9yQ29kZS8gKiwge3ZhbHVlOiAnd29ybGQnfSogLykuc3Vic2NyaWJlKChyZXM6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgICAgLy8gPT4gJ2hlbGxvIHdvcmxkJ1xuICAgICAgICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25WYWxpZGF0aW9uTWVzc2FnZSA9PT0gcmVzICkge1xuICAgICAgICAgICAgdGhpcy5jbGVhclN1Z2dlc3Rpb25WYWxpZGF0aW9uTWVzc2FnZSgpO1xuICAgICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgKi9cblxuICAgICAgY29uc3QgcmVzID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5lcnJvckNvZGUpO1xuICAgICAgaWYgKHRoaXMuc3VnZ2VzdGlvblZhbGlkYXRpb25NZXNzYWdlID09PSByZXMgKSB7XG4gICAgICAgIHRoaXMuY2xlYXJTdWdnZXN0aW9uVmFsaWRhdGlvbk1lc3NhZ2UoKTtcbiAgICAgIH1cbiAgICAgIC8qXG4gICAgICBpZiAodGhpcy5zdWdnZXN0aW9uVmFsaWRhdGlvbk1lc3NhZ2UgPT09IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSh0aGlzLmVycm9yQ29kZSkpIHtcbiAgICAgICAgdGhpcy5jbGVhclN1Z2dlc3Rpb25WYWxpZGF0aW9uTWVzc2FnZSgpO1xuICAgICAgfVxuICAgICAgKi9cbiAgICAgIHRoaXMuZXJyb3JDb2RlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBjbGVhclR5cGVBaGVhZCgpIHtcbiAgICB0aGlzLmJwVHlwZUFoZWFkID0gJyc7XG4gIH1cblxuICBlbWl0VHJhbnNsYXRlZFZhbGlkYXRpb25NZXNzYWdlKHZhbGlkYXRpb25NZXNzYWdlVHlwZTogVmFsaWRhdGlvbk1lc3NhZ2VUeXBlLCBvcHRpb25zPzogc3RyaW5nW10pIHtcbiAgICAvLyBNb21lbnRseSwgb3B0aW9ucyBhcmUgTk9UIHVzZWQ7IHNvIGRhdGEgdHlwZSBvZiB0aGVzZSBvcHRpb25zIHdpbGwgYmUgcmV2aWV3ZWQgb25jZSBuZWVkZWQuXG4gICAgaWYgKHZhbGlkYXRpb25NZXNzYWdlVHlwZSA9PT0gbnVsbCB8fCB2YWxpZGF0aW9uTWVzc2FnZVR5cGUgPT09IHVuZGVmaW5lZCApIHtcbiAgICAgIGNvbnNvbGUud2FybignVW5hYmxlIHRvIGVtaXQgdmFsaWRhdGlvbiBtZXNzYWdlIC0gbWVzc2FnZSBrZXkgaXMgaW52YWxpZCEnLCB2YWxpZGF0aW9uTWVzc2FnZVR5cGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAodmFsaWRhdGlvbk1lc3NhZ2VUeXBlKSB7XG5cbiAgICAgIGNhc2UgVmFsaWRhdGlvbk1lc3NhZ2VUeXBlLkFkZHJlc3NfTm90X0ZvdW5kOlxuICAgICAgY2FzZSBWYWxpZGF0aW9uTWVzc2FnZVR5cGUuQWRkcmVzc19WYWxpZGF0ZWQ6XG4gICAgICBjYXNlIFZhbGlkYXRpb25NZXNzYWdlVHlwZS5TZXJ2aWNlX1VuYXZhaWxhYmxlOiB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdjb21tb24ubWVzc2FnZS4nICsgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlKTtcbiAgICAgICAgICAvLyB0aGlzLm1lc3NhZ2VDaGFuZ2VkLmVtaXQobWVzc2FnZSk7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlQ2hhbmdlZC5lbWl0KHttZXNzYWdlVHlwZTogdmFsaWRhdGlvbk1lc3NhZ2VUeXBlLCB0cmFuc2xhdGVkTWVzc2FnZTogbWVzc2FnZX0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTphbGlnblxuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuYWJsZSB0byBlbWl0IHZhbGlkYXRpb24gbWVzc2FnZSAtIG1lc3NhZ2Uga2V5IE5PVCBzdXBwb3J0ZWQhJywgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6YWxpZ25cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gIH1cblxuICBnZW5lcmF0ZVBhcmFtZXRlcnMoKTogUXVlcnlQYXJhbWV0ZXJzIHtcbiAgICBjb25zdCBwYXJhbSA9IG5ldyBRdWVyeVBhcmFtZXRlcnMoe1xuICAgICAgaWQ6IHRoaXMuc2VxdWVuY2VOdW1iZXIsXG4gICAgICBxOiB0aGlzLnNlYXJjaFRleHQsXG4gICAgICBtYXhOdW1iZXJPZlN1Z2dlc3Rpb25zOiB0aGlzLm1heFN1Z2dlc2lvbkNvdW50XG4gICAgfSk7XG5cbiAgICBzd2l0Y2ggKHRoaXMuc29ydENyaXRlcmlhKSB7XG4gICAgICBjYXNlICdQJzpcbiAgICAgICAgcGFyYW0uc29ydEJ5UG9zdGFsQ29kZSh0cnVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0wnOlxuICAgICAgICBwYXJhbS5zb3J0QnlMb2NhbGl0eW5hbWUodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtO1xuICB9XG5cbiAgZ2V0VG9wU3VnZ2VzdGlvbnMoc291cmNlPzogU291cmNlVHlwZSkge1xuICAgIHRoaXMuc2VxdWVuY2VOdW1iZXIgKz0gMTtcbiAgICBjb25zdCBwYXJhbSA9IHRoaXMuZ2VuZXJhdGVQYXJhbWV0ZXJzKCk7XG4gICAgaWYgKHRoaXMuc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSkgeyBjb25zb2xlLmxvZygnTE9DQUxJVFkgY2FsbGluZyBzZXJ2aWNlIHBhcmFtcycsIHBhcmFtKTsgfVxuICAgIGlmICh0aGlzLnNlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5hZGRyZXNzU2VydmljZS5nZXRMb2NhbGl0eSh0aGlzLmJhc2VVcmwsIHBhcmFtKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5zaG93RGVidWdNZXNzYWdlVG9Db25zb2xlKSB7IGNvbnNvbGUubG9nKCdsb2NhbGl0eSBzdWdnZXN0aW9ucyByZWNlaXZlZDonLCByZXNwb25zZSk7IH1cbiAgICAgICAgICB0aGlzLmhhbmRsZUdldExvY2FsaXR5UmVzcG9uc2UocmVzcG9uc2UsIHNvdXJjZSk7XG4gICAgICAgICAgaWYgKHNvdXJjZSA9PT0gU291cmNlVHlwZS5TT1VSQ0VfUFJFRklMTEVEKVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMuaXNQcmVmaWxsV2l0aE5vTWF0Y2ggPSB0aGlzLnByZWZpbGxEYXRhLnByZWZpbGxNdW5pY2lwYWxpdHlQZXJmZWN0TWF0Y2hGb3VuZCA9PT0gdHJ1ZSA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucHJlZmlsbEFuYWx5emVEYXRhKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLmlzUHJlZmlsbFdpdGhOb01hdGNoID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICxcbiAgICAgICAgKCkgPT4gdGhpcy5oYW5kbGVHZXRMb2NhbGl0eUVycm9yKClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGV4dENvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICggdGhpcy5pc1ByZWZpbGxXaXRoTm9NYXRjaCA9PT0gdHJ1ZSApID8gJ29yYW5nZXJlZCcgOiAnJztcbiAgfVxuXG4gIGhhbmRsZUdldExvY2FsaXR5UmVzcG9uc2UoZGF0YTogYW55LCBzb3VyY2U/OiBTb3VyY2VUeXBlKSB7XG4gICAgaWYgKHRoaXMuc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSkgeyBjb25zb2xlLmxvZygnaGFuZGxlR2V0TG9jYWxpdHlSZXNwb25zZScsIGRhdGEpOyB9XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5yZXNwb25zZSAmJiBkYXRhLnJlc3BvbnNlLnNlcXVlbmNlTnVtYmVyICYmIGRhdGEucmVzcG9uc2Uuc2VxdWVuY2VOdW1iZXIgPj0gdGhpcy5jb25zdW1lZE51bWJlciAmJlxuICAgICAgZGF0YS5yZXNwb25zZS50b3BTdWdnZXN0aW9ucykge1xuICAgICAgdGhpcy5jb25zdW1lZE51bWJlciA9IGRhdGEucmVzcG9uc2Uuc2VxdWVuY2VOdW1iZXI7XG4gICAgICB0aGlzLmNsZWFyU3VnZ2VzdGlvbnMoKTtcbiAgICAgIHRoaXMucGFyc2VUb3BTdWdnZXN0aW9ucyhkYXRhLnJlc3BvbnNlLnRvcFN1Z2dlc3Rpb25zLCBzb3VyY2UpO1xuICAgICAgdGhpcy5idWlsZFR5cGVBaGVhZChzb3VyY2UpO1xuICAgICAgdGhpcy5jbGVhckNvbm5lY3Rpb25FcnJvck1lc3NhZ2UoKTtcbiAgICAgIHRoaXMuYnVpbGRJbnB1dFdvcmRMaXN0KCk7XG4gICAgfVxuICAgIHRoaXMuY29sbGFwc2VEcm9wZG93biA9ICh0aGlzLnByZWZpbGxpbmcgPT09IHRydWUgJiYgdGhpcy5wcmVmaWxsRGF0YSAhPT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICF0aGlzLnByZWZpbGxEYXRhLnBhcmFtZXRlcnMub25Gb2N1c1Nob3dTdWdnZXN0aW9uc0FmdGVyUHJlZmlsbCA6IGZhbHNlO1xuICB9XG5cbiAgaGFuZGxlR2V0TG9jYWxpdHlFcnJvcigpIHtcbiAgICB0aGlzLnNldENvbm5lY3Rpb25FcnJvck1lc3NhZ2UoKTtcbiAgfVxuXG4gIGlzQnJvd3NlcklFKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvbXNpZVxcc3x0cmlkZW50XFwvfGVkZ2VcXC8vaS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgfVxuXG4gIGlzRHJvcGRvd25DbGlja2VkKGV2KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXYuZXhwbGljaXRPcmlnaW5hbFRhcmdldCB8fCBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIHJldHVybiAodGFyZ2V0LmlkID09PSAnYnBhYWMtbG9jYWxpdHktZHJvcGRvd24nKTtcbiAgfVxuXG4gIGlzU3RyaW5nKHZhbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWwuY29uc3RydWN0b3IgPT09IFN0cmluZztcbiAgfVxuXG4gIGxvYWRQYXJhbXMocHJlZmlsbERhdGE6IFByZWZpbGxEYXRhKSB7XG4gICAgLy8gdGhpcy5jbGVhcldpZGdldCgpO1xuICAgIGxldCBjb25jYXRTdHIgPSAnJztcbiAgICBpZiAocHJlZmlsbERhdGEgIT09IG51bGwgJiYgcHJlZmlsbERhdGEucGFyYW1ldGVycyAhPT0gbnVsbClcbiAgICB7XG4gICAgICBpZiAocHJlZmlsbERhdGEucGFyYW1ldGVycy5oYXNPd25Qcm9wZXJ0eSgnbWluTGV2ZWwnKSkge1xuICAgICAgICB0aGlzLm1pbkxldmVsID0gcHJlZmlsbERhdGEucGFyYW1ldGVycy5taW5MZXZlbDtcbiAgICAgIH1cblxuICAgICAgLypcbiAgICAgIGlmIChwcmVmaWxsRGF0YS5wYXJhbWV0ZXJzLmhhc093blByb3BlcnR5KCd1bnN0cnVjdHVyZWRBZGRyZXNzJykgJiYgdGhpcy5pc1N0cmluZyhwcmVmaWxsRGF0YS5wYXJhbWV0ZXJzLnVuc3RydWN0dXJlZEFkZHJlc3MpKSB7XG4gICAgICAgIGNvbmNhdFN0ciA9IHByZWZpbGxEYXRhLnBhcmFtZXRlcnMudW5zdHJ1Y3R1cmVkQWRkcmVzcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcmVmaWxsRGF0YS5wYXJhbWV0ZXJzLmhhc093blByb3BlcnR5KCdwb3N0YWxDb2RlJykgJiYgdGhpcy5pc1N0cmluZyhwcmVmaWxsRGF0YS5wYXJhbWV0ZXJzLnBvc3RhbENvZGUpKSB7XG4gICAgICAgICAgY29uY2F0U3RyID0gcHJlZmlsbERhdGEucGFyYW1ldGVycy5wb3N0YWxDb2RlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmVmaWxsRGF0YS5wYXJhbWV0ZXJzLmhhc093blByb3BlcnR5KCdtdW5pY2lwYWxpdHlOYW1lJykgJiYgdGhpcy5pc1N0cmluZyhwcmVmaWxsRGF0YS5wYXJhbWV0ZXJzLm11bmljaXBhbGl0eU5hbWUpKSB7XG4gICAgICAgICAgY29uY2F0U3RyICs9ICcgJyArIHByZWZpbGxEYXRhLnBhcmFtZXRlcnMubXVuaWNpcGFsaXR5TmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgKi9cblxuICAgICAgaWYgKHByZWZpbGxEYXRhLnBhcmFtZXRlcnMuaGFzT3duUHJvcGVydHkoJ3Bvc3RhbENvZGUnKSAmJiB0aGlzLmlzU3RyaW5nKHByZWZpbGxEYXRhLnBhcmFtZXRlcnMucG9zdGFsQ29kZSkpIHtcbiAgICAgICAgY29uY2F0U3RyID0gcHJlZmlsbERhdGEucGFyYW1ldGVycy5wb3N0YWxDb2RlO1xuICAgICAgfVxuICAgICAgaWYgKHByZWZpbGxEYXRhLnBhcmFtZXRlcnMuaGFzT3duUHJvcGVydHkoJ211bmljaXBhbGl0eU5hbWUnKSAmJiB0aGlzLmlzU3RyaW5nKHByZWZpbGxEYXRhLnBhcmFtZXRlcnMubXVuaWNpcGFsaXR5TmFtZSkpIHtcbiAgICAgICAgY29uY2F0U3RyICs9ICcgJyArIHByZWZpbGxEYXRhLnBhcmFtZXRlcnMubXVuaWNpcGFsaXR5TmFtZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29uY2F0U3RyO1xuICB9XG5cbiAgbWF5U2hvd0NsZWFyQnV0dG9uKCkge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaFRleHQubGVuZ3RoID4gMDtcbiAgfVxuXG4gIG1heUFkZFR5cGVBaGVhZCgpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gKC9bXlxccywgXFxcXFxcL10kLykudGVzdCh0aGlzLnNlYXJjaFRleHQpO1xuICB9XG5cbiAgbm90RXF1YWxJZ25vcmVDYXNlKG9sZFZhbDogc3RyaW5nLCBuZXdWYWw6IHN0cmluZykge1xuICAgIHJldHVybiBvbGRWYWwudG9Mb3dlckNhc2UoKSAhPT0gbmV3VmFsLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBvbkJsdXIoZXYpIHtcbiAgICBpZiAodGhpcy5pc0Jyb3dzZXJJRSgpICYmIHRoaXMuaXNEcm9wZG93bkNsaWNrZWQoZXYpKSB7XG4gICAgICB0aGlzLmxvY2FsaXR5U2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5za2lwTmV4dEJsdXIpIHtcbiAgICAgIHRoaXMuc2tpcE5leHRCbHVyID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29sbGFwc2VEcm9wZG93biA9IHRydWU7XG4gICAgICB0aGlzLmJsdXJFdmVudC5lbWl0KEFERFJFU1NMRVZFTC5MT0NBTElUWSk7XG4gICAgfVxuICB9XG5cbiAgb25Gb2N1cygpIHtcbiAgICB0aGlzLmNvbGxhcHNlRHJvcGRvd24gPSBmYWxzZTtcbiAgICAvLyB0aGlzLmNvbGxhcHNlRHJvcGRvd24gPSAodGhpcy5wcmVmaWxsaW5nID09PSB0cnVlICYmIHRoaXMucHJlZmlsbERhdGEgIT09IG51bGwpXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgPyAhdGhpcy5wcmVmaWxsRGF0YS5wYXJhbWV0ZXJzLm9uRm9jdXNTaG93U3VnZ2VzdGlvbnNBZnRlclByZWZpbGwgOiBmYWxzZTtcbiAgICAvLyB0aGlzLnByZWZpbGxpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnNraXBOZXh0Qmx1ciA9IGZhbHNlO1xuICAgIHRoaXMuZm9jdXNFdmVudC5lbWl0KEFERFJFU1NMRVZFTC5MT0NBTElUWSk7XG4gIH1cblxuICBvbklucHV0Q2xpY2soKSB7XG4gICAgaWYgKHRoaXMuc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSkgeyBjb25zb2xlLmxvZygnbG9jYWxpdHkgY2xpY2snKTsgfVxuICB9XG5cbiAgb25JbnB1dENoYW5nZShzb3VyY2U/OiBTb3VyY2VUeXBlKSB7XG4gICAgdGhpcy5jb2xsYXBzZURyb3Bkb3duID0gZmFsc2U7XG4gICAgdGhpcy5yZXNldEFycm93U2VsZWN0ZWRJbmRleCgpO1xuICAgIGlmICghc291cmNlKSB7XG4gICAgICB0aGlzLnByZWZpbGxpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VkKCk7XG4gICAgfVxuICAgIHRoaXMuY2xlYXJTdWdnZXN0aW9uVmFsaWRhdGlvbk1lc3NhZ2UoKTtcbiAgICBpZiAodGhpcy5zZWFyY2hUZXh0ID09PSAnJykge1xuICAgICAgdGhpcy5zZXF1ZW5jZU51bWJlciArPSAxO1xuICAgICAgdGhpcy5jb25zdW1lZE51bWJlciA9IHRoaXMuc2VxdWVuY2VOdW1iZXI7XG4gICAgICB0aGlzLmNsZWFyU3VnZ2VzdGlvbnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nZXRUb3BTdWdnZXN0aW9ucyhzb3VyY2UpO1xuICAgIH1cbiAgICAvLyBjb25zb2xlLmxvZygnTGliQXV0b2NvbXBsZXRlTG9jYWxpdHlDb21wb25lbnQ6Om9uSW5wdXRDaGFuZ2UgLSBiZWZvcmUnLCB0aGlzLndvcmRMaXN0KTtcbiAgICB0aGlzLmJ1aWxkSW5wdXRXb3JkTGlzdCgpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdMaWJBdXRvY29tcGxldGVMb2NhbGl0eUNvbXBvbmVudDo6b25JbnB1dENoYW5nZSAtIGFmdGVyJywgdGhpcy53b3JkTGlzdCk7XG4gIH1cblxuICBwYXJzZVNpbmdsZVN1Z2dlc3Rpb24oc3VnZ2VzdGlvbjogYW55LCBzb3VyY2U6IFNvdXJjZVR5cGUpIHtcbiAgICBsZXQgc3VnZ2VzdGlvblRvQWRkOiBhbnk7XG4gICAgaWYgKHRoaXMubG9jYWxlU2VydmljZS5pc0xvY2FsZUZyZW5jaCgpICYmIHN1Z2dlc3Rpb24uaGFzT3duUHJvcGVydHkoJ2ZyZW5jaCcpKSB7XG4gICAgICBzdWdnZXN0aW9uVG9BZGQgPSBzdWdnZXN0aW9uLmZyZW5jaDtcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9jYWxlU2VydmljZS5pc0xvY2FsZUR1dGNoKCkgJiYgc3VnZ2VzdGlvbi5oYXNPd25Qcm9wZXJ0eSgnZHV0Y2gnKSkge1xuICAgICAgc3VnZ2VzdGlvblRvQWRkID0gc3VnZ2VzdGlvbi5kdXRjaDtcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9jYWxlU2VydmljZS5pc0xvY2FsZUdlcm1hbigpICYmIHN1Z2dlc3Rpb24uaGFzT3duUHJvcGVydHkoJ2dlcm1hbicpKSB7XG4gICAgICBzdWdnZXN0aW9uVG9BZGQgPSBzdWdnZXN0aW9uLmdlcm1hbjtcbiAgICB9IGVsc2UgaWYgKHN1Z2dlc3Rpb24uaGFzT3duUHJvcGVydHkoJ2FkZHJlc3MnKSkge1xuICAgICAgc3VnZ2VzdGlvblRvQWRkID0gc3VnZ2VzdGlvbi5hZGRyZXNzO1xuICAgIH1cbiAgICBpZiAoc3VnZ2VzdGlvblRvQWRkKSB7XG4gICAgICBpZiAoc3VnZ2VzdGlvbi5tZXNzYWdlcykge1xuICAgICAgICBzdWdnZXN0aW9uVG9BZGQubWVzc2FnZXMgPSBzdWdnZXN0aW9uLm1lc3NhZ2VzO1xuICAgICAgfVxuICAgICAgdGhpcy5zdWdnZXN0aW9ucy5wdXNoKHN1Z2dlc3Rpb25Ub0FkZCk7XG4gICAgICBpZiAodGhpcy5tZXNzYWdlT3B0aW9uID09PSAnWScgJiYgc3VnZ2VzdGlvblRvQWRkLmhhc093blByb3BlcnR5KCdtZXNzYWdlcycpKSB7XG4gICAgICAgIGZvciAoY29uc3QgbSBvZiBzdWdnZXN0aW9uVG9BZGQubWVzc2FnZXMpIHtcbiAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlTWVzc2FnZShtKTtcbiAgICAgICAgICBpZiAodHJhbnNsYXRlZE1lc3NhZ2UgIT09IG51bGwgKSB7XG4gICAgICAgICAgICBtLnRyYW5zbGF0ZWRNZXNzYWdlID0gdHJhbnNsYXRlZE1lc3NhZ2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc291cmNlID09PSBTb3VyY2VUeXBlLlNPVVJDRV9QUkVGSUxMRUQpXG4gICAgICB7XG4gICAgICAgIHN1Z2dlc3Rpb24uYWRkcmVzcyA9IHN1Z2dlc3Rpb25Ub0FkZDtcbiAgICAgICAgdGhpcy5wcmVmaWxsQ2hlY2tGb3JQZXJmZWN0TWF0Y2goc3VnZ2VzdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJlZmlsbENoZWNrRm9yUGVyZmVjdE1hdGNoKHN1Z2dlc3Rpb24pXG4gIHtcbiAgICBjb25zdCBzdWdBZGRyZXNzID0gc3VnZ2VzdGlvbi5hZGRyZXNzO1xuICAgIGlmICggLyohIHRoaXMucHJlZmlsbERhdGEucHJlZmlsbE11bmljaXBhbGl0eVBlcmZlY3RNYXRjaEZvdW5kICYmKi8gc3VnQWRkcmVzcy5wb3N0YWxDb2RlID09PSB0aGlzLnByZWZpbGxEYXRhLnBhcmFtZXRlcnMucG9zdGFsQ29kZSApXG4gICAge1xuICAgICAgaWYgKHRoaXMuc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSkge1xuICAgICAgICBjb25zb2xlLmxvZygnTE9DQUxJVFkgLSBQUkVGSUxMIC0gY2hlY2tpbmcgc3VnZ2VzdGlvbiBmb3IgcGVyZmVjdCBtYXRjaCcsIHRoaXMucHJlZmlsbERhdGEsIHN1Z2dlc3Rpb24pO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbkxvY2FsaXR5ID0gdGhpcy50cmFuc2Zvcm1NdW5pY2lwYWxpdHlJbkxvd2VyY2FzZUFuZFdpdGhvdXREaWFjcml0aWNzKHN1Z0FkZHJlc3MubG9jYWxpdHlOYW1lKTtcbiAgICAgIGNvbnN0IHN1Z2dlc3Rpb25NdW5pY2lwYWxpdHkgPSB0aGlzLnRyYW5zZm9ybU11bmljaXBhbGl0eUluTG93ZXJjYXNlQW5kV2l0aG91dERpYWNyaXRpY3Moc3VnQWRkcmVzcy5tdW5pY2lwYWxpdHlOYW1lKTtcbiAgICAgIGlmIChzdWdnZXN0aW9uTG9jYWxpdHkgPT09IHRoaXMucHJlZmlsbERhdGEucHJlZmlsbE11bmljaXBhbGl0eU5hbWVcbiAgICAgICAgICB8fCBzdWdnZXN0aW9uTXVuaWNpcGFsaXR5ID09PSB0aGlzLnByZWZpbGxEYXRhLnByZWZpbGxNdW5pY2lwYWxpdHlOYW1lKVxuICAgICAge1xuICAgICAgICB0aGlzLnByZWZpbGxEYXRhLnByZWZpbGxNdW5pY2lwYWxpdHlQZXJmZWN0TWF0Y2hGb3VuZCA9IHRydWU7XG4gICAgICAgIHRoaXMucHJlZmlsbERhdGEucHJlZmlsbE11bmljaXBhbGl0eVBlcmZlY3RNYXRjaFN1Z2dlc3Rpb24gPSBzdWdnZXN0aW9uO1xuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSBzdWdBZGRyZXNzLnBvc3RhbENvZGUgKyAnICcgKyBzdWdBZGRyZXNzLmxvY2FsaXR5TmFtZTtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSkgeyBjb25zb2xlLmxvZygnTE9DQUxJVFkgLSBQUkVGSUxMIC0gUGVyZmVjdCBtYXRjaDonLCBzdWdnZXN0aW9uKTsgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByZWZpbGxBbmFseXplRGF0YSgpXG4gIHtcblxuICAgIGlmICh0aGlzLnByZWZpbGxEYXRhLnByZWZpbGxNdW5pY2lwYWxpdHlQZXJmZWN0TWF0Y2hGb3VuZCA9PT0gdHJ1ZSlcbiAgICB7XG4gICAgICB0aGlzLmNvbGxhcHNlRHJvcGRvd24gPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLnByZWZpbGxFdmVudEVtaXR0ZXIuZW1pdCgvKnRoaXMucHJlZmlsbERhdGEqLyBuZXcgUHJlZmlsbEV2ZW50KEFERFJFU1NMRVZFTC5MT0NBTElUWSwgdGhpcy5wcmVmaWxsRGF0YSkgKTtcbiAgfVxuXG5cblxuICBwYXJzZVRvcFN1Z2dlc3Rpb25zKHRvcFN1Z2dlc3Rpb25zLCBzb3VyY2U6IFNvdXJjZVR5cGUpIHtcbiAgICBpZiAodGhpcy5zaG93RGVidWdNZXNzYWdlVG9Db25zb2xlKSB7IGNvbnNvbGUubG9nKCdsb2NhbGl0eSAtIHBhcnNlIHN1Z2dlc3Rpb25zJywgdG9wU3VnZ2VzdGlvbnMpOyB9XG4gICAgaWYgKHRvcFN1Z2dlc3Rpb25zLmNvbnN0cnVjdG9yID09PSBBcnJheSkge1xuICAgICAgLy8gdG9wU3VnZ2VzdGlvbnMuZm9yRWFjaCh0aGlzLnBhcnNlU2luZ2xlU3VnZ2VzdGlvbi5iaW5kKHRoaXMpKTtcbiAgICAgIGZvciAoY29uc3Qgc3VnIG9mIHRvcFN1Z2dlc3Rpb25zKVxuICAgICAge1xuICAgICAgICB0aGlzLnBhcnNlU2luZ2xlU3VnZ2VzdGlvbihzdWcsIHNvdXJjZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFyc2VTaW5nbGVTdWdnZXN0aW9uKHRvcFN1Z2dlc3Rpb25zLCBzb3VyY2UpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0QXJyb3dTZWxlY3RlZEluZGV4KCkge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xuICB9XG5cbiAgc3RhcnRzV2l0aElnbm9yZURpYWNyaXRpY3ModmFsdWU6IHN0cmluZywgcHJlZml4OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIC8vIGNvbnNvbGUubG9nKCdTZWFyY2hpbmcgZm9yIHByZWZpeCBcIicgKyBwcmVmaXggKyAnXCIgaW5zaWRlIHN1Z2dlc3Rpb246ICcgKyB2YWx1ZSk7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgICBjb25zdCBfdmFsdWUgPSB0aGlzLnVuaWNvZGVTZXJ2aWNlLnJlbW92ZURpYWNyaXRpY3MoICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSA/IHZhbHVlLnRvTG93ZXJDYXNlKCkgOiB2YWx1ZSApO1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gICAgY29uc3QgX3ByZWZpeCA9IHRoaXMudW5pY29kZVNlcnZpY2UucmVtb3ZlRGlhY3JpdGljcyggKHByZWZpeCAhPT0gbnVsbCAmJiBwcmVmaXggIT09IHVuZGVmaW5lZCkgPyBwcmVmaXgudG9Mb3dlckNhc2UoKSA6IHByZWZpeCk7XG4gICAgY29uc3Qgc3RhcnQgPSBfdmFsdWUuaW5kZXhPZihfcHJlZml4KTtcbiAgICAvLyBjb25zb2xlLmxvZygnc3RhcnRzV2l0aElnbm9yZURpYWNyaXRpY3M6ICcgKyBzdGFydCk7XG4gICAgcmV0dXJuIHN0YXJ0O1xuICB9XG5cbiAgdmFsdWVDaGFuZ2VkKCkge1xuICAgIHRoaXMudGV4dENoYW5nZUV2ZW50LmVtaXQodGhpcy5zZWFyY2hUZXh0KTtcbiAgfVxuXG4gIGNsZWFySW5wdXQoZm9jdXM/LCBlbWl0OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIHRoaXMuY2xlYXJTdWdnZXN0aW9ucygpO1xuICAgIHRoaXMuYnBUeXBlQWhlYWQgPSAnJztcbiAgICB0aGlzLnNldFNlYXJjaFRleHQoJycpO1xuICAgIHRoaXMucmVzZXRBcnJvd1NlbGVjdGVkSW5kZXgoKTtcbiAgICB0aGlzLnByZXZpb3VzSW5kZXggPSAtMTtcbiAgICB0aGlzLmxhc3RTZWFyY2hWYWx1ZSA9ICcnO1xuICAgIHRoaXMuY2xlYXJTdWdnZXN0aW9uVmFsaWRhdGlvbk1lc3NhZ2UoKTtcbiAgICB0aGlzLmNsZWFyU2VsZWN0ZWRBZGRyZXNzKCk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZWQoKTtcbiAgICB0aGlzLmNsZWFyQ29ubmVjdGlvbkVycm9yTWVzc2FnZSgpO1xuICAgIGlmIChmb2N1cyA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5sb2NhbGl0eVNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgaWYgKGVtaXQpIHtcbiAgICAgIHRoaXMuY2xlYXJJbnB1dEV2ZW50RW1pdHRlci5lbWl0KC8qJ0xPQ0FMSVRZJyovIElucHV0TmFtZVR5cGUuTE9DQUxJVFkpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VhcmNoVGV4dCgpIHtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgfVxuXG4gIGNsZWFyU2VsZWN0ZWRBZGRyZXNzKCkge1xuICAgIHRoaXMuYWRkcmVzc0NoYW5nZWQuZW1pdChudWxsKTtcbiAgICB0aGlzLmFkZHJlc3NJc1ZhbGlkYXRlZCA9IGZhbHNlO1xuICB9XG5cbiAgY2xlYXJTdWdnZXN0aW9uVmFsaWRhdGlvbk1lc3NhZ2UoKSB7XG4gICAgdGhpcy5hZGRyZXNzSXNWYWxpZGF0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnN1Z2dlc3Rpb25WYWxpZGF0aW9uTWVzc2FnZSA9ICcnO1xuICAgIC8vIHRoaXMubWVzc2FnZUNoYW5nZWQuZW1pdCh0aGlzLnN1Z2dlc3Rpb25WYWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgdGhpcy5tZXNzYWdlQ2hhbmdlZC5lbWl0KHttZXNzYWdlVHlwZTogbnVsbCwgdHJhbnNsYXRlZE1lc3NhZ2U6IHRoaXMuc3VnZ2VzdGlvblZhbGlkYXRpb25NZXNzYWdlfSk7XG4gICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZU9wdGlvbnMgPSBudWxsO1xuICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VDb2RlID0gbnVsbDtcbiAgfVxuXG4gIGNsZWFyU3VnZ2VzdGlvbnMoKSB7XG4gICAgdGhpcy53b3JkTGlzdCA9IFtdO1xuICAgIHRoaXMuc3VnZ2VzdGlvbnMgPSBbXTtcbiAgICB0aGlzLnN1Z2dlc3Rpb25zV29yZExpc3QgPSBbXTtcbiAgICAvLyBjb25zb2xlLmxvZygnTGliQXV0b2NvbXBsZXRlTG9jYWxpdHlDb21wb25lbnQ6OmNsZWFyU3VnZ2VzdGlvbnMnLCB0aGlzLndvcmRMaXN0KTtcbiAgICAvLyB0aGlzLnN1Z2dlc3Rpb25NZXNzYWdlcyA9ICBbXTtcbiAgfVxuXG4gIGNsaWNrU3VnZ2VzdGlvbihldmVudDogYW55LCBzdWdnZXN0aW9uOiBhbnkpIHtcbiAgICB0aGlzLmlzUHJlZmlsbFdpdGhOb01hdGNoID0gZmFsc2U7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmNsZWFyVHlwZUFoZWFkKCk7XG4gICAgdGhpcy5yZXNldEFycm93U2VsZWN0ZWRJbmRleCgpO1xuICAgIHRoaXMuc2V0U2VhcmNoVGV4dChzdWdnZXN0aW9uLnN0cmluZyk7XG4gICAgdGhpcy5jb2xsYXBzZURyb3Bkb3duID0gdHJ1ZTtcbiAgICAvLyBpZiAoc3VnZ2VzdGlvbi5oYXNPd25Qcm9wZXJ0eSgnaXNDb21wbGV0ZScpKSB7XG4gICAgLy8gICB0aGlzLnNob3dBZGRyZXNzSXNWYWxpZGF0ZWQoKTtcbiAgICAvLyB9XG4gICAgdGhpcy5hZGRyZXNzSXNWYWxpZGF0ZWQgPSB0cnVlO1xuICAgIHRoaXMuY2xlYXJTdWdnZXN0aW9ucygpO1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRBZGRyZXNzKHN1Z2dlc3Rpb24pO1xuICB9XG5cbiAgY2xlYXJXaWRnZXQoKSB7XG4gICAgdGhpcy5jbGVhclNlYXJjaFRleHQoKTtcbiAgICB0aGlzLmNsZWFyU3VnZ2VzdGlvbnMoKTtcbiAgICB0aGlzLmNsZWFyVHlwZUFoZWFkKCk7XG4gICAgdGhpcy5wcmVmaWxsRGF0YSA9IG51bGw7XG4gICAgdGhpcy5wcmVmaWxsaW5nID0gZmFsc2U7XG4gIH1cblxuICBjdXJzb3JJc09uU3VnZ2VzdGlvbkxpc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJbmRleCA+PSAwO1xuICB9XG5cbiAgb25DaGFuZ2VkTGFuZ3VhZ2UoKSB7XG4gICAgLy8gdGhpcy5wbGFjZUhvbGRlclRleHQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnbG9jYWxpdHkucGxhY2Vob2xkZXIuaW5wdXQtcGxhY2Vob2xkZXInKTtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdsb2NhbGl0eS5wbGFjZWhvbGRlci5pbnB1dC1wbGFjZWhvbGRlcicpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IHN0cmluZykgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnbmV3IHBsYWNlaG9sZGVyJywgcmVzKTtcbiAgICAgICAgLy8gPT4gJ2hlbGxvIHdvcmxkJ1xuICAgICAgICB0aGlzLnBsYWNlSG9sZGVyVGV4dCA9IHJlcztcbiAgICB9KTtcbiAgfVxuXG4gIGNoYW5nZVNlbGVjdGlvbigpIHtcbiAgICBpZiAodGhpcy5zdWdnZXN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG1vdmVBcnJvd1NlbGVjdGVkSW5kZXhEb3duKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggKyAxICE9PSB0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4Kys7XG4gICAgICB0aGlzLmNoYW5nZVNlbGVjdGlvbigpO1xuICAgICAgdGhpcy5zZXRTZWFyY2hUZXh0QmFzZWRPbkFycm93U2VsZWN0aW9uKHRoaXMuc2VsZWN0ZWRJbmRleCwgdGhpcy5zZWxlY3RlZEluZGV4IC0gMSk7XG4gICAgfVxuICB9XG5cbiAgbW92ZUFycm93U2VsZWN0ZWRJbmRleFVwKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggLSAxICE9PSAtMikge1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LS07XG4gICAgICB0aGlzLmNoYW5nZVNlbGVjdGlvbigpO1xuICAgICAgdGhpcy5zZXRTZWFyY2hUZXh0QmFzZWRPbkFycm93U2VsZWN0aW9uKHRoaXMuc2VsZWN0ZWRJbmRleCwgdGhpcy5zZWxlY3RlZEluZGV4ICsgMSk7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tLZXlEb3duKGV2ZW50KSB7XG4gICAgc3dpdGNoIChldmVudC53aGljaCkge1xuICAgICAgLy8gZG93biBrZXksIGluY3JlbWVudCBzZWxlY3RlZEluZGV4XG4gICAgICBjYXNlIDQwOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm1vdmVBcnJvd1NlbGVjdGVkSW5kZXhEb3duKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyB1cCBrZXksIGRlY3JlbWVudCBzZWxlY3RlZEluZGV4XG4gICAgICBjYXNlIDM4OlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm1vdmVBcnJvd1NlbGVjdGVkSW5kZXhVcCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIHJpZ2h0IGFycm93IGtleVxuICAgICAgY2FzZSAzOTpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMuY3Vyc29ySXNPblN1Z2dlc3Rpb25MaXN0KCkpIHtcbiAgICAgICAgICB0aGlzLmNsaWNrU3VnZ2VzdGlvbihldmVudCwgdGhpcy5zdWdnZXN0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy50eXBlQWhlYWRXb3JkICYmIHRoaXMudHlwZUFoZWFkSXNTaG93bigpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFNlYXJjaFRleHQodGhpcy5icFR5cGVBaGVhZCk7XG4gICAgICAgICAgICB0aGlzLnR5cGVBaGVhZFdvcmQgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyB0YWIga2V5XG4gICAgICBjYXNlIDk6XG4gICAgICAgIGlmICghdGhpcy5hZGRyZXNzSXNWYWxpZGF0ZWQpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0Rmlyc3RJbkxpc3RPZlN1Z2dlc2lvbnMoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSA0NjpcbiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICB0aGlzLmNsZWFyV2lkZ2V0KCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBlbnRlciBwcmVzc2VkXG4gICAgICBjYXNlIDEzOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAodGhpcy5jdXJzb3JJc09uU3VnZ2VzdGlvbkxpc3QoKSkge1xuICAgICAgICAgIHRoaXMuY2xpY2tTdWdnZXN0aW9uKGV2ZW50LCB0aGlzLnN1Z2dlc3Rpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmNsZWFyVHlwZUFoZWFkKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgfVxuICB9XG5cbiAgc2V0Q29ubmVjdGlvbkVycm9yTWVzc2FnZSgpIHtcbiAgICB0aGlzLmVycm9yQ29kZSA9IC8qJ3NlcnZpY2UtdW5hdmFpbGFibGUnKi8gVmFsaWRhdGlvbk1lc3NhZ2VUeXBlLlNlcnZpY2VfVW5hdmFpbGFibGU7XG4gICAgLy8gdGhpcy5zZXRWYWxpZGF0aW9uTWVzc2FnZSh0aGlzLmVycm9yQ29kZSk7XG4gICAgdGhpcy5lbWl0VHJhbnNsYXRlZFZhbGlkYXRpb25NZXNzYWdlKFZhbGlkYXRpb25NZXNzYWdlVHlwZS5TZXJ2aWNlX1VuYXZhaWxhYmxlKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkQWRkcmVzcyhzdWdnZXN0aW9uOiBhbnkpIHtcbiAgICB0aGlzLmFkZHJlc3NDaGFuZ2VkLmVtaXQoc3VnZ2VzdGlvbik7XG4gIH1cblxuICB0cmFuc2xhdGVNZXNzYWdlKG1lc3NhZ2UpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1lc3NhZ2VLZXkgPSBtZXNzYWdlLmtleTtcbiAgICBzd2l0Y2ggKG1lc3NhZ2VLZXkpIHtcbiAgICAgIGNhc2UgJ3N1YmwnOiB7XG4gICAgICAgIC8vIGFyZ3MgbGVuZ3RoIG11c3QgYmUgMiAhXG4gICAgICAgIGlmIChtZXNzYWdlLmFyZ3MgJiYgbWVzc2FnZS5hcmdzLmxlbmd0aCA9PT0gMiApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2xvY2FsaXR5LnN1Z2dlc3Rpb24ubWVzc2FnZS5zdWJsJywgeyBzdWI6IG1lc3NhZ2UuYXJnc1swXSwgcHJpbmNpcGFsOiBtZXNzYWdlLmFyZ3NbMV19KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmFsaWduXG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0eXBlQWhlYWRJc1Nob3duKCkge1xuICAgIHJldHVybiB0aGlzLmJwVHlwZUFoZWFkICYmIHRoaXMuYnBUeXBlQWhlYWQubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHNlbGVjdEZpcnN0SW5MaXN0T2ZTdWdnZXNpb25zKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7XG4gICAgdGhpcy5jaGFuZ2VTZWxlY3Rpb24oKTtcbiAgICB0aGlzLnNldFNlYXJjaFRleHRCYXNlZE9uQXJyb3dTZWxlY3Rpb24odGhpcy5zZWxlY3RlZEluZGV4LCB0aGlzLnNlbGVjdGVkSW5kZXggLSAxKTtcbiAgfVxuXG4gIHNldFNlYXJjaFRleHQodmFsdWUpIHtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSB2YWx1ZTtcbiAgfVxuXG4gIHNldFNlYXJjaFRleHRCYXNlZE9uQXJyb3dTZWxlY3Rpb24obmV3VmFsLCBvbGRWYWwpIHtcbiAgICBpZiAobmV3VmFsID09PSB1bmRlZmluZWQgfHwgdGhpcy5zdWdnZXN0aW9ucy5sZW5ndGggPD0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobmV3VmFsICE9PSAtMSkge1xuICAgICAgaWYgKG9sZFZhbCA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5sYXN0U2VhcmNoVmFsdWUgPSB0aGlzLnNlYXJjaFRleHQ7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFNlYXJjaFRleHQodGhpcy5zdWdnZXN0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdLnN0cmluZyk7XG4gICAgICB0aGlzLmNsZWFyVHlwZUFoZWFkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0U2VhcmNoVGV4dCh0aGlzLmxhc3RTZWFyY2hWYWx1ZSk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
821
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpdHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGJwb3N0L2JwLWFkZHJlc3MtYXV0by1jb21wbGV0ZS1ieS1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvbG9jYWxpdHkvbG9jYWxpdHkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE2RSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0osT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFPeEQ7SUFrRUUsMkJBQ1UsY0FBOEIsRUFDOUIsYUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ2xDLGNBQThCO1FBSDlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG1CQUFj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U2ltcGxlQ2hhbmdlcywgQWZ0ZXJWaWV3Q2hlY2tlZCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VUeXBlIH0gZnJvbSAnLi4vZW51bS92YWxpZGF0aW9uLW1lc3NhZ2UtdHlwZS5lbnVtJztcbmltcG9ydCB7IEFERFJFU1NMRVZFTCB9IGZyb20gJy4uL2VudW0vYWRkcmVzcy1sZXZlbC5lbnVtJztcbmltcG9ydCB7IFF1ZXJ5UGFyYW1ldGVycyB9IGZyb20gJy4uL21vZGVsL3F1ZXJ5LXBhcmFtZXRlcnMubW9kZWwnO1xuaW1wb3J0IHsgQWRkcmVzc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hZHJlc3Muc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbG9jYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVW5pY29kZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91bmljb2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJy4uL3V0aWxzL2RvbWhhbmRsZXInO1xuaW1wb3J0IHsgU291cmNlVHlwZSB9IGZyb20gJy4uL2VudW0vc291cmNlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQcmVmaWxsRGF0YSB9IGZyb20gJy4uL3V0aWxzL3ByZWZpbGwtZGF0YSc7XG5pbXBvcnQgeyBQcmVmaWxsRXZlbnQgfSBmcm9tICcuLi91dGlscy9wcmVmbGxsLmV2ZW50JztcbmltcG9ydCB7IElucHV0TmFtZVR5cGUgfSBmcm9tICcuLi9lbnVtL2lucHV0LW5hbWUuZW51bSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JwLWxvY2FsaXR5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvY2FsaXR5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9jYWxpdHkuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBMb2NhbGl0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQge1xuXG4gIEBWaWV3Q2hpbGQoJ2xvY2FsaXR5U2VhcmNoSW5wdXQnLCB7c3RhdGljOiBmYWxzZX0gKSBsb2NhbGl0eVNlYXJjaElucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdsb2NhbGl0eUxpc3QnLCB7c3RhdGljOiBmYWxzZX0gKSBsb2NhbGl0eUxpc3Q6IEVsZW1lbnRSZWY7XG5cbiAgLy8gMjAyMC0wNi0xNVxuLyogICBASW5wdXQoKVxuICBvbkZvY3VzU2hvd1N1Z2dlc3Rpb25zQWZ0ZXJQcmVmaWxsID0gdHJ1ZTsgKi9cblxuICBASW5wdXQoKSBsYWJlbFJlc291cmNlS2V5ID0gJ2NvbW1vbi5sYWJlbC5wb3N0YWxDb2RlJztcbiAgQElucHV0KCkgbWVzc2FnZU9wdGlvbiA9ICdZJztcbiAgQElucHV0KCkgbWF4U3VnZ2VzaW9uQ291bnQgPSA1O1xuICBASW5wdXQoKSB2aXNpYmxlU3VnZ2VzdGlvbkNvdW50ID0gNTtcbiAgQElucHV0KCkgc29ydENyaXRlcmlhID0gJyc7XG4gIEBJbnB1dCgpIGJhc2VVcmw6IHN0cmluZztcbiAgQElucHV0KCkgaW5wdXRUZXh0OiBzdHJpbmc7XG4gIC8vIEBJbnB1dCgpIGFkZHJlc3NQYXJhbXM6IFByZWZpbGxlZFBhcmFtZXRlcnM7XG4gIEBJbnB1dCgpIHByZWZpbGxEYXRhOiBQcmVmaWxsRGF0YTtcbiAgQElucHV0KCkgc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSA9IHRydWU7XG5cbi8vIEB0cy1pZ25vcmVcbiAgQElucHV0KCkgc2V0IGlucHV0TGFuZyh2YWw6IHN0cmluZykge1xuICAgIHRoaXMubG9jYWxlU2VydmljZS5jaGFuZ2VMYW5nKHZhbCk7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZSh2YWwpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlZExhbmd1YWdlKCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBtZXNzYWdlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPHttZXNzYWdlVHlwZTogVmFsaWRhdGlvbk1lc3NhZ2VUeXBlLCB0cmFuc2xhdGVkTWVzc2FnZTogc3RyaW5nfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBhZGRyZXNzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBmb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGJsdXJFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSB0ZXh0Q2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xlYXJJbnB1dEV2ZW50RW1pdHRlcjogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpIHByZWZpbGxFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxQcmVmaWxsRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxQcmVmaWxsRXZlbnQ+KCk7XG5cbiAgLy8gaW5zdGFuY2UgcHJvcGVydGllc1xuICBhZGRyZXNzSXNWYWxpZGF0ZWQ6IGJvb2xlYW47XG4gIGJwVHlwZUFoZWFkOiBzdHJpbmc7XG4gIGNvbGxhcHNlRHJvcGRvd246IGJvb2xlYW47XG4gIGNvbnN1bWVkTnVtYmVyOiBudW1iZXI7XG4gIGVycm9yQ29kZTogYW55O1xuICBsYXN0U2VhcmNoVmFsdWU6IHN0cmluZztcbiAgbWluTGV2ZWw6IGFueTtcbiAgcGxhY2VIb2xkZXJUZXh0OiBzdHJpbmc7XG4gIHByZXZpb3VzSW5kZXg6IG51bWJlcjtcbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuICBzZWxlY3RlZEluZGV4OiBudW1iZXI7XG4gIHNlbGVjdGlvbkNoYW5nZWQ6IGJvb2xlYW47XG4gIHNlcXVlbmNlTnVtYmVyOiBudW1iZXI7XG4gIHNraXBOZXh0Qmx1cjogYm9vbGVhbjsgLy8gT25CbHVyIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBzdWdnZXN0aW9uL3ZhbGlkYXRvciBidXR0b25cbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHN1Z2dlc3Rpb25zOiBBcnJheTxhbnk+O1xuICBzdWdnZXN0aW9uVmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZztcbiAgc3VnZ2VzdGlvbnNXb3JkTGlzdDogYW55O1xuICB0eXBlQWhlYWRXb3JkOiBzdHJpbmc7XG4gIHZhbGlkYXRpb25NZXNzYWdlQ29kZSA9IG51bGw7XG4gIHZhbGlkYXRpb25NZXNzYWdlT3B0aW9ucyA9IG51bGw7XG4gIHdvcmRMaXN0OiBhbnk7XG5cbiAgcHJlZmlsbGluZyA9IGZhbHNlO1xuICBpc1ByZWZpbGxXaXRoTm9NYXRjaCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWRkcmVzc1NlcnZpY2U6IEFkZHJlc3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1bmljb2RlU2VydmljZTogVW5pY29kZVNlcnZpY2UsXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZFxuICB7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgLy8gaW5zdGFuY2UgcHJvcGVydGllc1xuICAgIHRoaXMuYWRkcmVzc0lzVmFsaWRhdGVkID0gZmFsc2U7XG4gICAgdGhpcy5zdWdnZXN0aW9uVmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcbiAgICB0aGlzLnN1Z2dlc3Rpb25zID0gW107XG4gICAgdGhpcy5wcmV2aW91c0luZGV4ID0gLTE7XG4gICAgdGhpcy5sYXN0U2VhcmNoVmFsdWUgPSAnJztcbiAgICB0aGlzLndvcmRMaXN0ID0gW107XG4gICAgdGhpcy5zdWdnZXN0aW9uc1dvcmRMaXN0ID0gW107XG4gICAgdGhpcy5icFR5cGVBaGVhZCA9ICcnO1xuICAgIHRoaXMucGxhY2VIb2xkZXJUZXh0ID0gJyc7XG4gICAgdGhpcy5za2lwTmV4dEJsdXIgPSBmYWxzZTsgLy8gT25CbHVyIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBzdWdnZXN0aW9uL3ZhbGlkYXRvciBidXR0b25cbiAgICB0aGlzLmVycm9yQ29kZSA9IG51bGw7XG4gICAgLy8gc2NvcGUgcHJvcGVydGllc1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xuICAgIC8vIHByb3BlcnRpZXNcbiAgICB0aGlzLnR5cGVBaGVhZFdvcmQgPSAnJztcbiAgICB0aGlzLmNvbGxhcHNlRHJvcGRvd24gPSBmYWxzZTtcbiAgICB0aGlzLnNlcXVlbmNlTnVtYmVyID0gMDtcbiAgICB0aGlzLmNvbnN1bWVkTnVtYmVyID0gMDtcbiAgICAvLyBpbml0aWFsaXphdGlvblxuICAgIHRoaXMuc2V0U2VhcmNoVGV4dCgnJyk7XG5cbiAgICB0aGlzLm9uQ2hhbmdlZExhbmd1YWdlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uQ2hhbmdlZCkge1xuICAgICAgY29uc3Qgb3ZlcmxheTogSFRNTERpdkVsZW1lbnQgPSB0aGlzLmxvY2FsaXR5TGlzdC5uYXRpdmVFbGVtZW50O1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpc3RJdGVtID0gRG9tSGFuZGxlci5maW5kU2luZ2xlKG92ZXJsYXksICdsaS5hY3RpdmUnKTtcbiAgICAgICAgaWYgKGxpc3RJdGVtKSB7XG4gICAgICAgICAgRG9tSGFuZGxlci5zY3JvbGxJblZpZXcob3ZlcmxheSwgbGlzdEl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9LCAxKTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcykge1xuXG4gICAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgncHJlZmlsbERhdGEnKSAmJiAhY2hhbmdlcy5wcmVmaWxsRGF0YS5maXJzdENoYW5nZSkge1xuICAgICAgICB0aGlzLnByZWZpbGxpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSB0aGlzLmxvYWRQYXJhbXMoY2hhbmdlcy5wcmVmaWxsRGF0YS5jdXJyZW50VmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5zaG93RGVidWdNZXNzYWdlVG9Db25zb2xlKSB7IGNvbnNvbGUubG9nKCdsb2NhbGl0eTo6bmdPbkNoYW5nZXMgLSBsb2FkUGFyYW1lIHJlc3VsdDonLCB0aGlzLnNlYXJjaFRleHQpOyB9XG4gICAgICAgIHRoaXMuYnBUeXBlQWhlYWQgPSAnJztcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGV4dCAhPT0gJycgJiYgdGhpcy5taW5MZXZlbCA9PT0gQUREUkVTU0xFVkVMLkxPQ0FMSVRZKSB7XG4gICAgICAgICAgdGhpcy5jb2xsYXBzZURyb3Bkb3duID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnByZWZpbGxEYXRhLnByZWZpbGxNdW5pY2lwYWxpdHlOYW1lXG4gICAgICAgICAgICA9IHRoaXMudHJhbnNmb3JtTXVuaWNpcGFsaXR5SW5Mb3dlcmNhc2VBbmRXaXRob3V0RGlhY3JpdGljcyh0aGlzLnByZWZpbGxEYXRhLnBhcmFtZXRlcnMubXVuaWNpcGFsaXR5TmFtZSk7XG4gICAgICAgICAgdGhpcy5vbklucHV0Q2hhbmdlKC8qJ3ByZWZpbGxlZCcqLyBTb3VyY2VUeXBlLlNPVVJDRV9QUkVGSUxMRUQgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2lucHV0VGV4dCcpICYmICFjaGFuZ2VzLmlucHV0VGV4dC5maXJzdENoYW5nZSkge1xuICAgICAgICBpZiAodGhpcy5ub3RFcXVhbElnbm9yZUNhc2UodGhpcy5zZWFyY2hUZXh0LCBjaGFuZ2VzLmlucHV0VGV4dC5jdXJyZW50VmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5jbGVhcldpZGdldCgpO1xuICAgICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IGNoYW5nZXMuaW5wdXRUZXh0LmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLypcbiAgICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdiYXNlVXJsJykgJiYgIWNoYW5nZXMuYmFzZVVybC5maXJzdENoYW5nZSkge1xuICAgICAgICB0aGlzLmNsZWFyV2lkZ2V0KCk7XG4gICAgICAgIHRoaXMuY2xlYXJTZWxlY3RlZEFkZHJlc3MoKTtcbiAgICAgIH1cbiAgICAgICovXG4gICAgfVxuICB9XG5cbiAgdHJhbnNmb3JtTXVuaWNpcGFsaXR5SW5Mb3dlcmNhc2VBbmRXaXRob3V0RGlhY3JpdGljcyhtdW5pY2lwYWxpdHlOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQ6IHN0cmluZyA9IG51bGw7XG4gICAgaWYgKG11bmljaXBhbGl0eU5hbWUgIT09IG51bGwgJiYgbXVuaWNpcGFsaXR5TmFtZSAhPT0gdW5kZWZpbmVkIClcbiAgICB7XG4gICAgICByZXN1bHQgPSB0aGlzLnVuaWNvZGVTZXJ2aWNlLnJlbW92ZURpYWNyaXRpY3MobXVuaWNpcGFsaXR5TmFtZSk7XG4gICAgICByZXN1bHQgPSByZXN1bHQudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSkge2NvbnNvbGUubG9nKCdwcmVmaWxsIG11bmljaXBhbGl0eScsIHJlc3VsdCk7IH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGJ1aWxkSW5wdXRXb3JkTGlzdCgpIHtcbiAgICB0aGlzLndvcmRMaXN0ID0gdGhpcy5zZWFyY2hUZXh0LnNwbGl0KC9bXFxzLCBdKy8pO1xuICAgIC8vIGNvbnNvbGUubG9nKCdMaWJBdXRvY29tcGxldGVMb2NhbGl0eUNvbXBvbmVudDo6YnVpbGRJbnB1dFdvcmRMaXN0JywgdGhpcy53b3JkTGlzdCk7XG4gICAgaWYgKHRoaXMuc3VnZ2VzdGlvbnMgJiYgdGhpcy53b3JkTGlzdCkge1xuICAgICAgZm9yIChjb25zdCBzdWcgb2YgdGhpcy5zdWdnZXN0aW9ucykge1xuICAgICAgICBpZiAoIXN1ZyB8fCAhc3VnLmhhc093blByb3BlcnR5KCdzdHJpbmcnKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgdyBvZiB0aGlzLndvcmRMaXN0KSB7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLnN0YXJ0c1dpdGhJZ25vcmVEaWFjcml0aWNzKHN1Zy5zdHJpbmcgYXMgc3RyaW5nLCB3IGFzIHN0cmluZyk7XG4gICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHd3ID0gc3VnLnN0cmluZy5zdWJzdHIoc3RhcnQsIHcubGVuZ3RoKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdhZGRpbmcgd29yZDonICsgd3cpO1xuICAgICAgICAgICAgLy8gd3cgaXMgYSBjYW5kaWRhdGUgdG8gYmUgYWRkZWQgdG8gdGhlIHdvcmRsaXN0IGlmIG5vdCBhbHJlYWR5IHByZXNlbnQgaW4gaXRcbiAgICAgICAgICAgIGNvbnN0IHByZXNlbnQgPSB0aGlzLndvcmRMaXN0LmZpbmQoICh3MTogc3RyaW5nKSAgPT4gdzEudG9Mb3dlckNhc2UoKSA9PT0gd3cudG9Mb3dlckNhc2UoKSApO1xuICAgICAgICAgICAgaWYgKHByZXNlbnQgPT09IG51bGwgfHwgcHJlc2VudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHRoaXMud29yZExpc3QucHVzaCh3dyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RyaW5nU3RhcnRzV2l0aElnbm9yZURpYWNyaXRpY3ModmFsdWUsIHByZWZpeCkge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gICAgY29uc3QgX3ZhbHVlID0gdGhpcy51bmljb2RlU2VydmljZS5yZW1vdmVEaWFjcml0aWNzKCAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkgPyB2YWx1ZS50b0xvd2VyQ2FzZSgpIDogdmFsdWUgKTtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIGNvbnN0IF9wcmVmaXggPSB0aGlzLnVuaWNvZGVTZXJ2aWNlLnJlbW92ZURpYWNyaXRpY3MoIChwcmVmaXggIT09IG51bGwgJiYgcHJlZml4ICE9PSB1bmRlZmluZWQpID8gcHJlZml4LnRvTG93ZXJDYXNlKCkgOiBwcmVmaXgpO1xuICAgIGNvbnN0IHN0YXJ0ID0gX3ZhbHVlLnNsaWNlKDAsIF9wcmVmaXgubGVuZ3RoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoX3ByZWZpeCkgIT09IC0xO1xuICAgIHJldHVybiBzdGFydDtcbiAgfVxuXG4gIGJ1aWxkVHlwZUFoZWFkKHNvdXJjZTogU291cmNlVHlwZSkge1xuICAgIGlmIChzb3VyY2UgPT09IFNvdXJjZVR5cGUuU09VUkNFX1BSRUZJTExFRCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpZiAoIXRoaXMubWF5QWRkVHlwZUFoZWFkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VhcmNoVGV4dFdvcmRzID0gdGhpcy5zZWFyY2hUZXh0LnNwbGl0KC9bXFxzLCBdKy8pO1xuICAgIGNvbnN0IGxhc3RXb3JkID0gc2VhcmNoVGV4dFdvcmRzW3NlYXJjaFRleHRXb3Jkcy5sZW5ndGggLSAxXTtcblxuICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25zLnNvbWUoZnVuY3Rpb24oc3VnKSB7XG4gICAgICBpZiAoIXN1ZyB8fCAhc3VnLmhhc093blByb3BlcnR5KCdzdHJpbmcnKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3VnLnN0cmluZy5zcGxpdCgvW1xccy1dKy8pLnNvbWUoZnVuY3Rpb24od29yZCkge1xuICAgICAgICBpZiAodGhpcy5zdHJpbmdTdGFydHNXaXRoSWdub3JlRGlhY3JpdGljcyh3b3JkLCBsYXN0V29yZCkpIHtcbiAgICAgICAgICB0aGlzLnR5cGVBaGVhZFdvcmQgPSB3b3JkO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LmJpbmQodGhpcykpO1xuICAgIH0uYmluZCh0aGlzKSkpIHtcbiAgICAgIGNvbnN0IGFwcGVuZGl4ID0gdGhpcy50eXBlQWhlYWRXb3JkLnNsaWNlKGxhc3RXb3JkLmxlbmd0aCwgdGhpcy50eXBlQWhlYWRXb3JkLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIHRoaXMuYnBUeXBlQWhlYWQgPSB0aGlzLnNlYXJjaFRleHQgKyBhcHBlbmRpeDtcbiAgICB9XG4gIH1cblxuICBjbGVhckNvbm5lY3Rpb25FcnJvck1lc3NhZ2UoKSB7XG4gICAgaWYgKHRoaXMuZXJyb3JDb2RlKSB7XG4gICAgICAvKlxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0aGlzLmVycm9yQ29kZS8gKiwge3ZhbHVlOiAnd29ybGQnfSogLykuc3Vic2NyaWJlKChyZXM6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgICAgLy8gPT4gJ2hlbGxvIHdvcmxkJ1xuICAgICAgICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25WYWxpZGF0aW9uTWVzc2FnZSA9PT0gcmVzICkge1xuICAgICAgICAgICAgdGhpcy5jbGVhclN1Z2dlc3Rpb25WYWxpZGF0aW9uTWVzc2FnZSgpO1xuICAgICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgKi9cblxuICAgICAgY29uc3QgcmVzID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5lcnJvckNvZGUpO1xuICAgICAgaWYgKHRoaXMuc3VnZ2VzdGlvblZhbGlkYXRpb25NZXNzYWdlID09PSByZXMgKSB7XG4gICAgICAgIHRoaXMuY2xlYXJTdWdnZXN0aW9uVmFsaWRhdGlvbk1lc3NhZ2UoKTtcbiAgICAgIH1cbiAgICAgIC8qXG4gICAgICBpZiAodGhpcy5zdWdnZXN0aW9uVmFsaWRhdGlvbk1lc3NhZ2UgPT09IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSh0aGlzLmVycm9yQ29kZSkpIHtcbiAgICAgICAgdGhpcy5jbGVhclN1Z2dlc3Rpb25WYWxpZGF0aW9uTWVzc2FnZSgpO1xuICAgICAgfVxuICAgICAgKi9cbiAgICAgIHRoaXMuZXJyb3JDb2RlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBjbGVhclR5cGVBaGVhZCgpIHtcbiAgICB0aGlzLmJwVHlwZUFoZWFkID0gJyc7XG4gIH1cblxuICBlbWl0VHJhbnNsYXRlZFZhbGlkYXRpb25NZXNzYWdlKHZhbGlkYXRpb25NZXNzYWdlVHlwZTogVmFsaWRhdGlvbk1lc3NhZ2VUeXBlLCBvcHRpb25zPzogc3RyaW5nW10pIHtcbiAgICAvLyBNb21lbnRseSwgb3B0aW9ucyBhcmUgTk9UIHVzZWQ7IHNvIGRhdGEgdHlwZSBvZiB0aGVzZSBvcHRpb25zIHdpbGwgYmUgcmV2aWV3ZWQgb25jZSBuZWVkZWQuXG4gICAgaWYgKHZhbGlkYXRpb25NZXNzYWdlVHlwZSA9PT0gbnVsbCB8fCB2YWxpZGF0aW9uTWVzc2FnZVR5cGUgPT09IHVuZGVmaW5lZCApIHtcbiAgICAgIGNvbnNvbGUud2FybignVW5hYmxlIHRvIGVtaXQgdmFsaWRhdGlvbiBtZXNzYWdlIC0gbWVzc2FnZSBrZXkgaXMgaW52YWxpZCEnLCB2YWxpZGF0aW9uTWVzc2FnZVR5cGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAodmFsaWRhdGlvbk1lc3NhZ2VUeXBlKSB7XG5cbiAgICAgIGNhc2UgVmFsaWRhdGlvbk1lc3NhZ2VUeXBlLkFkZHJlc3NfTm90X0ZvdW5kOlxuICAgICAgY2FzZSBWYWxpZGF0aW9uTWVzc2FnZVR5cGUuQWRkcmVzc19WYWxpZGF0ZWQ6XG4gICAgICBjYXNlIFZhbGlkYXRpb25NZXNzYWdlVHlwZS5TZXJ2aWNlX1VuYXZhaWxhYmxlOiB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdjb21tb24ubWVzc2FnZS4nICsgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlKTtcbiAgICAgICAgICAvLyB0aGlzLm1lc3NhZ2VDaGFuZ2VkLmVtaXQobWVzc2FnZSk7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlQ2hhbmdlZC5lbWl0KHttZXNzYWdlVHlwZTogdmFsaWRhdGlvbk1lc3NhZ2VUeXBlLCB0cmFuc2xhdGVkTWVzc2FnZTogbWVzc2FnZX0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTphbGlnblxuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuYWJsZSB0byBlbWl0IHZhbGlkYXRpb24gbWVzc2FnZSAtIG1lc3NhZ2Uga2V5IE5PVCBzdXBwb3J0ZWQhJywgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6YWxpZ25cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gIH1cblxuICBnZW5lcmF0ZVBhcmFtZXRlcnMoKTogUXVlcnlQYXJhbWV0ZXJzIHtcbiAgICBjb25zdCBwYXJhbSA9IG5ldyBRdWVyeVBhcmFtZXRlcnMoe1xuICAgICAgaWQ6IHRoaXMuc2VxdWVuY2VOdW1iZXIsXG4gICAgICBxOiB0aGlzLnNlYXJjaFRleHQsXG4gICAgICBtYXhOdW1iZXJPZlN1Z2dlc3Rpb25zOiB0aGlzLm1heFN1Z2dlc2lvbkNvdW50XG4gICAgfSk7XG5cbiAgICBzd2l0Y2ggKHRoaXMuc29ydENyaXRlcmlhKSB7XG4gICAgICBjYXNlICdQJzpcbiAgICAgICAgcGFyYW0uc29ydEJ5UG9zdGFsQ29kZSh0cnVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0wnOlxuICAgICAgICBwYXJhbS5zb3J0QnlMb2NhbGl0eW5hbWUodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtO1xuICB9XG5cbiAgZ2V0VG9wU3VnZ2VzdGlvbnMoc291cmNlPzogU291cmNlVHlwZSkge1xuICAgIHRoaXMuc2VxdWVuY2VOdW1iZXIgKz0gMTtcbiAgICBjb25zdCBwYXJhbSA9IHRoaXMuZ2VuZXJhdGVQYXJhbWV0ZXJzKCk7XG4gICAgaWYgKHRoaXMuc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSkgeyBjb25zb2xlLmxvZygnTE9DQUxJVFkgY2FsbGluZyBzZXJ2aWNlIHBhcmFtcycsIHBhcmFtKTsgfVxuICAgIGlmICh0aGlzLnNlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5hZGRyZXNzU2VydmljZS5nZXRMb2NhbGl0eSh0aGlzLmJhc2VVcmwsIHBhcmFtKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5zaG93RGVidWdNZXNzYWdlVG9Db25zb2xlKSB7IGNvbnNvbGUubG9nKCdsb2NhbGl0eSBzdWdnZXN0aW9ucyByZWNlaXZlZDonLCByZXNwb25zZSk7IH1cbiAgICAgICAgICB0aGlzLmhhbmRsZUdldExvY2FsaXR5UmVzcG9uc2UocmVzcG9uc2UsIHNvdXJjZSk7XG4gICAgICAgICAgaWYgKHNvdXJjZSA9PT0gU291cmNlVHlwZS5TT1VSQ0VfUFJFRklMTEVEKVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMuaXNQcmVmaWxsV2l0aE5vTWF0Y2ggPSB0aGlzLnByZWZpbGxEYXRhLnByZWZpbGxNdW5pY2lwYWxpdHlQZXJmZWN0TWF0Y2hGb3VuZCA9PT0gdHJ1ZSA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucHJlZmlsbEFuYWx5emVEYXRhKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLmlzUHJlZmlsbFdpdGhOb01hdGNoID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICxcbiAgICAgICAgKCkgPT4gdGhpcy5oYW5kbGVHZXRMb2NhbGl0eUVycm9yKClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGV4dENvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICggdGhpcy5pc1ByZWZpbGxXaXRoTm9NYXRjaCA9PT0gdHJ1ZSApID8gJ29yYW5nZXJlZCcgOiAnJztcbiAgfVxuXG4gIGhhbmRsZUdldExvY2FsaXR5UmVzcG9uc2UoZGF0YTogYW55LCBzb3VyY2U/OiBTb3VyY2VUeXBlKSB7XG4gICAgaWYgKHRoaXMuc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSkgeyBjb25zb2xlLmxvZygnaGFuZGxlR2V0TG9jYWxpdHlSZXNwb25zZScsIGRhdGEpOyB9XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5yZXNwb25zZSAmJiBkYXRhLnJlc3BvbnNlLnNlcXVlbmNlTnVtYmVyICYmIGRhdGEucmVzcG9uc2Uuc2VxdWVuY2VOdW1iZXIgPj0gdGhpcy5jb25zdW1lZE51bWJlciAmJlxuICAgICAgZGF0YS5yZXNwb25zZS50b3BTdWdnZXN0aW9ucykge1xuICAgICAgdGhpcy5jb25zdW1lZE51bWJlciA9IGRhdGEucmVzcG9uc2Uuc2VxdWVuY2VOdW1iZXI7XG4gICAgICB0aGlzLmNsZWFyU3VnZ2VzdGlvbnMoKTtcbiAgICAgIHRoaXMucGFyc2VUb3BTdWdnZXN0aW9ucyhkYXRhLnJlc3BvbnNlLnRvcFN1Z2dlc3Rpb25zLCBzb3VyY2UpO1xuICAgICAgdGhpcy5idWlsZFR5cGVBaGVhZChzb3VyY2UpO1xuICAgICAgdGhpcy5jbGVhckNvbm5lY3Rpb25FcnJvck1lc3NhZ2UoKTtcbiAgICAgIHRoaXMuYnVpbGRJbnB1dFdvcmRMaXN0KCk7XG4gICAgfVxuICAgIHRoaXMuY29sbGFwc2VEcm9wZG93biA9ICh0aGlzLnByZWZpbGxpbmcgPT09IHRydWUgJiYgdGhpcy5wcmVmaWxsRGF0YSAhPT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICF0aGlzLnByZWZpbGxEYXRhLnBhcmFtZXRlcnMub25Gb2N1c1Nob3dTdWdnZXN0aW9uc0FmdGVyUHJlZmlsbCA6IGZhbHNlO1xuICB9XG5cbiAgaGFuZGxlR2V0TG9jYWxpdHlFcnJvcigpIHtcbiAgICB0aGlzLnNldENvbm5lY3Rpb25FcnJvck1lc3NhZ2UoKTtcbiAgfVxuXG4gIGlzQnJvd3NlcklFKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvbXNpZVxcc3x0cmlkZW50XFwvfGVkZ2VcXC8vaS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgfVxuXG4gIGlzRHJvcGRvd25DbGlja2VkKGV2KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXYuZXhwbGljaXRPcmlnaW5hbFRhcmdldCB8fCBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIHJldHVybiAodGFyZ2V0LmlkID09PSAnYnBhYWMtbG9jYWxpdHktZHJvcGRvd24nKTtcbiAgfVxuXG4gIGlzU3RyaW5nKHZhbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWwuY29uc3RydWN0b3IgPT09IFN0cmluZztcbiAgfVxuXG4gIGxvYWRQYXJhbXMocHJlZmlsbERhdGE6IFByZWZpbGxEYXRhKSB7XG4gICAgLy8gdGhpcy5jbGVhcldpZGdldCgpO1xuICAgIGxldCBjb25jYXRTdHIgPSAnJztcbiAgICBpZiAocHJlZmlsbERhdGEgIT09IG51bGwgJiYgcHJlZmlsbERhdGEucGFyYW1ldGVycyAhPT0gbnVsbClcbiAgICB7XG4gICAgICBpZiAocHJlZmlsbERhdGEucGFyYW1ldGVycy5oYXNPd25Qcm9wZXJ0eSgnbWluTGV2ZWwnKSkge1xuICAgICAgICB0aGlzLm1pbkxldmVsID0gcHJlZmlsbERhdGEucGFyYW1ldGVycy5taW5MZXZlbDtcbiAgICAgIH1cblxuICAgICAgLypcbiAgICAgIGlmIChwcmVmaWxsRGF0YS5wYXJhbWV0ZXJzLmhhc093blByb3BlcnR5KCd1bnN0cnVjdHVyZWRBZGRyZXNzJykgJiYgdGhpcy5pc1N0cmluZyhwcmVmaWxsRGF0YS5wYXJhbWV0ZXJzLnVuc3RydWN0dXJlZEFkZHJlc3MpKSB7XG4gICAgICAgIGNvbmNhdFN0ciA9IHByZWZpbGxEYXRhLnBhcmFtZXRlcnMudW5zdHJ1Y3R1cmVkQWRkcmVzcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcmVmaWxsRGF0YS5wYXJhbWV0ZXJzLmhhc093blByb3BlcnR5KCdwb3N0YWxDb2RlJykgJiYgdGhpcy5pc1N0cmluZyhwcmVmaWxsRGF0YS5wYXJhbWV0ZXJzLnBvc3RhbENvZGUpKSB7XG4gICAgICAgICAgY29uY2F0U3RyID0gcHJlZmlsbERhdGEucGFyYW1ldGVycy5wb3N0YWxDb2RlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmVmaWxsRGF0YS5wYXJhbWV0ZXJzLmhhc093blByb3BlcnR5KCdtdW5pY2lwYWxpdHlOYW1lJykgJiYgdGhpcy5pc1N0cmluZyhwcmVmaWxsRGF0YS5wYXJhbWV0ZXJzLm11bmljaXBhbGl0eU5hbWUpKSB7XG4gICAgICAgICAgY29uY2F0U3RyICs9ICcgJyArIHByZWZpbGxEYXRhLnBhcmFtZXRlcnMubXVuaWNpcGFsaXR5TmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgKi9cblxuICAgICAgaWYgKHByZWZpbGxEYXRhLnBhcmFtZXRlcnMuaGFzT3duUHJvcGVydHkoJ3Bvc3RhbENvZGUnKSAmJiB0aGlzLmlzU3RyaW5nKHByZWZpbGxEYXRhLnBhcmFtZXRlcnMucG9zdGFsQ29kZSkpIHtcbiAgICAgICAgY29uY2F0U3RyID0gcHJlZmlsbERhdGEucGFyYW1ldGVycy5wb3N0YWxDb2RlO1xuICAgICAgfVxuICAgICAgaWYgKHByZWZpbGxEYXRhLnBhcmFtZXRlcnMuaGFzT3duUHJvcGVydHkoJ211bmljaXBhbGl0eU5hbWUnKSAmJiB0aGlzLmlzU3RyaW5nKHByZWZpbGxEYXRhLnBhcmFtZXRlcnMubXVuaWNpcGFsaXR5TmFtZSkpIHtcbiAgICAgICAgY29uY2F0U3RyICs9ICcgJyArIHByZWZpbGxEYXRhLnBhcmFtZXRlcnMubXVuaWNpcGFsaXR5TmFtZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29uY2F0U3RyO1xuICB9XG5cbiAgbWF5U2hvd0NsZWFyQnV0dG9uKCkge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaFRleHQubGVuZ3RoID4gMDtcbiAgfVxuXG4gIG1heUFkZFR5cGVBaGVhZCgpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gKC9bXlxccywgXFxcXFxcL10kLykudGVzdCh0aGlzLnNlYXJjaFRleHQpO1xuICB9XG5cbiAgbm90RXF1YWxJZ25vcmVDYXNlKG9sZFZhbDogc3RyaW5nLCBuZXdWYWw6IHN0cmluZykge1xuICAgIHJldHVybiBvbGRWYWwudG9Mb3dlckNhc2UoKSAhPT0gbmV3VmFsLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBvbkJsdXIoZXYpIHtcbiAgICBpZiAodGhpcy5pc0Jyb3dzZXJJRSgpICYmIHRoaXMuaXNEcm9wZG93bkNsaWNrZWQoZXYpKSB7XG4gICAgICB0aGlzLmxvY2FsaXR5U2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5za2lwTmV4dEJsdXIpIHtcbiAgICAgIHRoaXMuc2tpcE5leHRCbHVyID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29sbGFwc2VEcm9wZG93biA9IHRydWU7XG4gICAgICB0aGlzLmJsdXJFdmVudC5lbWl0KEFERFJFU1NMRVZFTC5MT0NBTElUWSk7XG4gICAgfVxuICB9XG5cbiAgb25Gb2N1cygpIHtcbiAgICB0aGlzLmNvbGxhcHNlRHJvcGRvd24gPSBmYWxzZTtcbiAgICAvLyB0aGlzLmNvbGxhcHNlRHJvcGRvd24gPSAodGhpcy5wcmVmaWxsaW5nID09PSB0cnVlICYmIHRoaXMucHJlZmlsbERhdGEgIT09IG51bGwpXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgPyAhdGhpcy5wcmVmaWxsRGF0YS5wYXJhbWV0ZXJzLm9uRm9jdXNTaG93U3VnZ2VzdGlvbnNBZnRlclByZWZpbGwgOiBmYWxzZTtcbiAgICAvLyB0aGlzLnByZWZpbGxpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnNraXBOZXh0Qmx1ciA9IGZhbHNlO1xuICAgIHRoaXMuZm9jdXNFdmVudC5lbWl0KEFERFJFU1NMRVZFTC5MT0NBTElUWSk7XG4gIH1cblxuICBvbklucHV0Q2xpY2soKSB7XG4gICAgaWYgKHRoaXMuc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSkgeyBjb25zb2xlLmxvZygnbG9jYWxpdHkgY2xpY2snKTsgfVxuICB9XG5cbiAgb25JbnB1dENoYW5nZShzb3VyY2U/OiBTb3VyY2VUeXBlKSB7XG4gICAgdGhpcy5jb2xsYXBzZURyb3Bkb3duID0gZmFsc2U7XG4gICAgdGhpcy5yZXNldEFycm93U2VsZWN0ZWRJbmRleCgpO1xuICAgIGlmICghc291cmNlKSB7XG4gICAgICB0aGlzLnByZWZpbGxpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2VkKCk7XG4gICAgfVxuICAgIHRoaXMuY2xlYXJTdWdnZXN0aW9uVmFsaWRhdGlvbk1lc3NhZ2UoKTtcbiAgICBpZiAodGhpcy5zZWFyY2hUZXh0ID09PSAnJykge1xuICAgICAgdGhpcy5zZXF1ZW5jZU51bWJlciArPSAxO1xuICAgICAgdGhpcy5jb25zdW1lZE51bWJlciA9IHRoaXMuc2VxdWVuY2VOdW1iZXI7XG4gICAgICB0aGlzLmNsZWFyU3VnZ2VzdGlvbnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nZXRUb3BTdWdnZXN0aW9ucyhzb3VyY2UpO1xuICAgIH1cbiAgICAvLyBjb25zb2xlLmxvZygnTGliQXV0b2NvbXBsZXRlTG9jYWxpdHlDb21wb25lbnQ6Om9uSW5wdXRDaGFuZ2UgLSBiZWZvcmUnLCB0aGlzLndvcmRMaXN0KTtcbiAgICB0aGlzLmJ1aWxkSW5wdXRXb3JkTGlzdCgpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdMaWJBdXRvY29tcGxldGVMb2NhbGl0eUNvbXBvbmVudDo6b25JbnB1dENoYW5nZSAtIGFmdGVyJywgdGhpcy53b3JkTGlzdCk7XG4gIH1cblxuICBwYXJzZVNpbmdsZVN1Z2dlc3Rpb24oc3VnZ2VzdGlvbjogYW55LCBzb3VyY2U6IFNvdXJjZVR5cGUpIHtcbiAgICBsZXQgc3VnZ2VzdGlvblRvQWRkOiBhbnk7XG4gICAgaWYgKHRoaXMubG9jYWxlU2VydmljZS5pc0xvY2FsZUZyZW5jaCgpICYmIHN1Z2dlc3Rpb24uaGFzT3duUHJvcGVydHkoJ2ZyZW5jaCcpKSB7XG4gICAgICBzdWdnZXN0aW9uVG9BZGQgPSBzdWdnZXN0aW9uLmZyZW5jaDtcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9jYWxlU2VydmljZS5pc0xvY2FsZUR1dGNoKCkgJiYgc3VnZ2VzdGlvbi5oYXNPd25Qcm9wZXJ0eSgnZHV0Y2gnKSkge1xuICAgICAgc3VnZ2VzdGlvblRvQWRkID0gc3VnZ2VzdGlvbi5kdXRjaDtcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9jYWxlU2VydmljZS5pc0xvY2FsZUdlcm1hbigpICYmIHN1Z2dlc3Rpb24uaGFzT3duUHJvcGVydHkoJ2dlcm1hbicpKSB7XG4gICAgICBzdWdnZXN0aW9uVG9BZGQgPSBzdWdnZXN0aW9uLmdlcm1hbjtcbiAgICB9IGVsc2UgaWYgKHN1Z2dlc3Rpb24uaGFzT3duUHJvcGVydHkoJ2FkZHJlc3MnKSkge1xuICAgICAgc3VnZ2VzdGlvblRvQWRkID0gc3VnZ2VzdGlvbi5hZGRyZXNzO1xuICAgIH1cbiAgICBpZiAoc3VnZ2VzdGlvblRvQWRkKSB7XG4gICAgICBpZiAoc3VnZ2VzdGlvbi5tZXNzYWdlcykge1xuICAgICAgICBzdWdnZXN0aW9uVG9BZGQubWVzc2FnZXMgPSBzdWdnZXN0aW9uLm1lc3NhZ2VzO1xuICAgICAgfVxuICAgICAgdGhpcy5zdWdnZXN0aW9ucy5wdXNoKHN1Z2dlc3Rpb25Ub0FkZCk7XG4gICAgICBpZiAodGhpcy5tZXNzYWdlT3B0aW9uID09PSAnWScgJiYgc3VnZ2VzdGlvblRvQWRkLmhhc093blByb3BlcnR5KCdtZXNzYWdlcycpKSB7XG4gICAgICAgIGZvciAoY29uc3QgbSBvZiBzdWdnZXN0aW9uVG9BZGQubWVzc2FnZXMpIHtcbiAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlTWVzc2FnZShtKTtcbiAgICAgICAgICBpZiAodHJhbnNsYXRlZE1lc3NhZ2UgIT09IG51bGwgKSB7XG4gICAgICAgICAgICBtLnRyYW5zbGF0ZWRNZXNzYWdlID0gdHJhbnNsYXRlZE1lc3NhZ2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc291cmNlID09PSBTb3VyY2VUeXBlLlNPVVJDRV9QUkVGSUxMRUQpXG4gICAgICB7XG4gICAgICAgIHN1Z2dlc3Rpb24uYWRkcmVzcyA9IHN1Z2dlc3Rpb25Ub0FkZDtcbiAgICAgICAgdGhpcy5wcmVmaWxsQ2hlY2tGb3JQZXJmZWN0TWF0Y2goc3VnZ2VzdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJlZmlsbENoZWNrRm9yUGVyZmVjdE1hdGNoKHN1Z2dlc3Rpb24pXG4gIHtcbiAgICBjb25zdCBzdWdBZGRyZXNzID0gc3VnZ2VzdGlvbi5hZGRyZXNzO1xuICAgIGlmICggLyohIHRoaXMucHJlZmlsbERhdGEucHJlZmlsbE11bmljaXBhbGl0eVBlcmZlY3RNYXRjaEZvdW5kICYmKi8gc3VnQWRkcmVzcy5wb3N0YWxDb2RlID09PSB0aGlzLnByZWZpbGxEYXRhLnBhcmFtZXRlcnMucG9zdGFsQ29kZSApXG4gICAge1xuICAgICAgaWYgKHRoaXMuc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSkge1xuICAgICAgICBjb25zb2xlLmxvZygnTE9DQUxJVFkgLSBQUkVGSUxMIC0gY2hlY2tpbmcgc3VnZ2VzdGlvbiBmb3IgcGVyZmVjdCBtYXRjaCcsIHRoaXMucHJlZmlsbERhdGEsIHN1Z2dlc3Rpb24pO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbkxvY2FsaXR5ID0gdGhpcy50cmFuc2Zvcm1NdW5pY2lwYWxpdHlJbkxvd2VyY2FzZUFuZFdpdGhvdXREaWFjcml0aWNzKHN1Z0FkZHJlc3MubG9jYWxpdHlOYW1lKTtcbiAgICAgIGNvbnN0IHN1Z2dlc3Rpb25NdW5pY2lwYWxpdHkgPSB0aGlzLnRyYW5zZm9ybU11bmljaXBhbGl0eUluTG93ZXJjYXNlQW5kV2l0aG91dERpYWNyaXRpY3Moc3VnQWRkcmVzcy5tdW5pY2lwYWxpdHlOYW1lKTtcbiAgICAgIGlmIChzdWdnZXN0aW9uTG9jYWxpdHkgPT09IHRoaXMucHJlZmlsbERhdGEucHJlZmlsbE11bmljaXBhbGl0eU5hbWVcbiAgICAgICAgICB8fCBzdWdnZXN0aW9uTXVuaWNpcGFsaXR5ID09PSB0aGlzLnByZWZpbGxEYXRhLnByZWZpbGxNdW5pY2lwYWxpdHlOYW1lKVxuICAgICAge1xuICAgICAgICBpZiAodGhpcy5wcmVmaWxsRGF0YS5wcmVmaWxsTXVuaWNpcGFsaXR5QW5kTG9jYWxpdHlQZXJmZWN0TWF0Y2hGb3VuZCAgPT09IHRydWUpXG4gICAgICAgIHtcbiAgICAgICAgICBpZiAodGhpcy5zaG93RGVidWdNZXNzYWdlVG9Db25zb2xlKSB7IGNvbnNvbGUubG9nKCdMT0NBTElUWSAtIFBSRUZJTEwgLSBza2lwcGluZyBzdWdnZXN0aW9uOicsIHN1Z2dlc3Rpb24pOyB9XG4gICAgICAgICAgaWYgKHRoaXMuc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSkgeyBjb25zb2xlLmxvZygnTE9DQUxJVFkgLSBQUkVGSUxMIC0ga2VlcGluZyBzdWdnZXN0aW9uOicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZWZpbGxEYXRhLnByZWZpbGxNdW5pY2lwYWxpdHlQZXJmZWN0TWF0Y2hTdWdnZXN0aW9uKTsgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJlZmlsbERhdGEucHJlZmlsbE11bmljaXBhbGl0eVBlcmZlY3RNYXRjaEZvdW5kID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmVmaWxsRGF0YS5wcmVmaWxsTXVuaWNpcGFsaXR5UGVyZmVjdE1hdGNoU3VnZ2VzdGlvbiA9IHN1Z2dlc3Rpb247XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IHN1Z0FkZHJlc3MucG9zdGFsQ29kZSArICcgJyArIHN1Z0FkZHJlc3MubG9jYWxpdHlOYW1lO1xuXG4gICAgICAgIHRoaXMucHJlZmlsbERhdGEucHJlZmlsbE11bmljaXBhbGl0eUFuZExvY2FsaXR5UGVyZmVjdE1hdGNoRm91bmQgPSAoc3VnZ2VzdGlvbkxvY2FsaXR5ID09PSB0aGlzLnByZWZpbGxEYXRhLnByZWZpbGxNdW5pY2lwYWxpdHlOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3VnZ2VzdGlvbk11bmljaXBhbGl0eSA9PT0gdGhpcy5wcmVmaWxsRGF0YS5wcmVmaWxsTXVuaWNpcGFsaXR5TmFtZSkgPyB0cnVlIDogZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMucHJlZmlsbERhdGEucHJlZmlsbE11bmljaXBhbGl0eUFuZExvY2FsaXR5UGVyZmVjdE1hdGNoRm91bmQgID09PSB0cnVlKVxuICAgICAgICB7XG4gICAgICAgICAgaWYgKHRoaXMuc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSkgeyBjb25zb2xlLmxvZygnTE9DQUxJVFkgLSBQUkVGSUxMIC0gUGVyZmVjdCBtYXRjaCAtIE11bmljaXBhbGl0eSAmIGxvY2F0aW9uOicsIHN1Z2dlc3Rpb24pOyB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgaWYgKHRoaXMuc2hvd0RlYnVnTWVzc2FnZVRvQ29uc29sZSkgeyBjb25zb2xlLmxvZygnTE9DQUxJVFkgLSBQUkVGSUxMIC0gUGVyZmVjdCBtYXRjaDonLCBzdWdnZXN0aW9uKTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJlZmlsbEFuYWx5emVEYXRhKClcbiAge1xuXG4gICAgaWYgKHRoaXMucHJlZmlsbERhdGEucHJlZmlsbE11bmljaXBhbGl0eVBlcmZlY3RNYXRjaEZvdW5kID09PSB0cnVlKVxuICAgIHtcbiAgICAgIHRoaXMuY29sbGFwc2VEcm9wZG93biA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMucHJlZmlsbEV2ZW50RW1pdHRlci5lbWl0KC8qdGhpcy5wcmVmaWxsRGF0YSovIG5ldyBQcmVmaWxsRXZlbnQoQUREUkVTU0xFVkVMLkxPQ0FMSVRZLCB0aGlzLnByZWZpbGxEYXRhKSApO1xuICB9XG5cblxuXG4gIHBhcnNlVG9wU3VnZ2VzdGlvbnModG9wU3VnZ2VzdGlvbnMsIHNvdXJjZTogU291cmNlVHlwZSkge1xuICAgIGlmICh0aGlzLnNob3dEZWJ1Z01lc3NhZ2VUb0NvbnNvbGUpIHsgY29uc29sZS5sb2coJ2xvY2FsaXR5IC0gcGFyc2Ugc3VnZ2VzdGlvbnMnLCB0b3BTdWdnZXN0aW9ucyk7IH1cbiAgICBpZiAodG9wU3VnZ2VzdGlvbnMuY29uc3RydWN0b3IgPT09IEFycmF5KSB7XG4gICAgICAvLyB0b3BTdWdnZXN0aW9ucy5mb3JFYWNoKHRoaXMucGFyc2VTaW5nbGVTdWdnZXN0aW9uLmJpbmQodGhpcykpO1xuICAgICAgZm9yIChjb25zdCBzdWcgb2YgdG9wU3VnZ2VzdGlvbnMpXG4gICAgICB7XG4gICAgICAgIHRoaXMucGFyc2VTaW5nbGVTdWdnZXN0aW9uKHN1Zywgc291cmNlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYXJzZVNpbmdsZVN1Z2dlc3Rpb24odG9wU3VnZ2VzdGlvbnMsIHNvdXJjZSk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRBcnJvd1NlbGVjdGVkSW5kZXgoKSB7XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gLTE7XG4gIH1cblxuICBzdGFydHNXaXRoSWdub3JlRGlhY3JpdGljcyh2YWx1ZTogc3RyaW5nLCBwcmVmaXg6IHN0cmluZyk6IG51bWJlciB7XG4gICAgLy8gY29uc29sZS5sb2coJ1NlYXJjaGluZyBmb3IgcHJlZml4IFwiJyArIHByZWZpeCArICdcIiBpbnNpZGUgc3VnZ2VzdGlvbjogJyArIHZhbHVlKTtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICAgIGNvbnN0IF92YWx1ZSA9IHRoaXMudW5pY29kZVNlcnZpY2UucmVtb3ZlRGlhY3JpdGljcyggKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpID8gdmFsdWUudG9Mb3dlckNhc2UoKSA6IHZhbHVlICk7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgICBjb25zdCBfcHJlZml4ID0gdGhpcy51bmljb2RlU2VydmljZS5yZW1vdmVEaWFjcml0aWNzKCAocHJlZml4ICE9PSBudWxsICYmIHByZWZpeCAhPT0gdW5kZWZpbmVkKSA/IHByZWZpeC50b0xvd2VyQ2FzZSgpIDogcHJlZml4KTtcbiAgICBjb25zdCBzdGFydCA9IF92YWx1ZS5pbmRleE9mKF9wcmVmaXgpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdzdGFydHNXaXRoSWdub3JlRGlhY3JpdGljczogJyArIHN0YXJ0KTtcbiAgICByZXR1cm4gc3RhcnQ7XG4gIH1cblxuICB2YWx1ZUNoYW5nZWQoKSB7XG4gICAgdGhpcy50ZXh0Q2hhbmdlRXZlbnQuZW1pdCh0aGlzLnNlYXJjaFRleHQpO1xuICB9XG5cbiAgY2xlYXJJbnB1dChmb2N1cz8sIGVtaXQ6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgdGhpcy5jbGVhclN1Z2dlc3Rpb25zKCk7XG4gICAgdGhpcy5icFR5cGVBaGVhZCA9ICcnO1xuICAgIHRoaXMuc2V0U2VhcmNoVGV4dCgnJyk7XG4gICAgdGhpcy5yZXNldEFycm93U2VsZWN0ZWRJbmRleCgpO1xuICAgIHRoaXMucHJldmlvdXNJbmRleCA9IC0xO1xuICAgIHRoaXMubGFzdFNlYXJjaFZhbHVlID0gJyc7XG4gICAgdGhpcy5jbGVhclN1Z2dlc3Rpb25WYWxpZGF0aW9uTWVzc2FnZSgpO1xuICAgIHRoaXMuY2xlYXJTZWxlY3RlZEFkZHJlc3MoKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZCgpO1xuICAgIHRoaXMuY2xlYXJDb25uZWN0aW9uRXJyb3JNZXNzYWdlKCk7XG4gICAgaWYgKGZvY3VzID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmxvY2FsaXR5U2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICBpZiAoZW1pdCkge1xuICAgICAgdGhpcy5jbGVhcklucHV0RXZlbnRFbWl0dGVyLmVtaXQoLyonTE9DQUxJVFknKi8gSW5wdXROYW1lVHlwZS5MT0NBTElUWSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJTZWFyY2hUZXh0KCkge1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICB9XG5cbiAgY2xlYXJTZWxlY3RlZEFkZHJlc3MoKSB7XG4gICAgdGhpcy5hZGRyZXNzQ2hhbmdlZC5lbWl0KG51bGwpO1xuICAgIHRoaXMuYWRkcmVzc0lzVmFsaWRhdGVkID0gZmFsc2U7XG4gIH1cblxuICBjbGVhclN1Z2dlc3Rpb25WYWxpZGF0aW9uTWVzc2FnZSgpIHtcbiAgICB0aGlzLmFkZHJlc3NJc1ZhbGlkYXRlZCA9IGZhbHNlO1xuICAgIHRoaXMuc3VnZ2VzdGlvblZhbGlkYXRpb25NZXNzYWdlID0gJyc7XG4gICAgLy8gdGhpcy5tZXNzYWdlQ2hhbmdlZC5lbWl0KHRoaXMuc3VnZ2VzdGlvblZhbGlkYXRpb25NZXNzYWdlKTtcbiAgICB0aGlzLm1lc3NhZ2VDaGFuZ2VkLmVtaXQoe21lc3NhZ2VUeXBlOiBudWxsLCB0cmFuc2xhdGVkTWVzc2FnZTogdGhpcy5zdWdnZXN0aW9uVmFsaWRhdGlvbk1lc3NhZ2V9KTtcbiAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlT3B0aW9ucyA9IG51bGw7XG4gICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZUNvZGUgPSBudWxsO1xuICB9XG5cbiAgY2xlYXJTdWdnZXN0aW9ucygpIHtcbiAgICB0aGlzLndvcmRMaXN0ID0gW107XG4gICAgdGhpcy5zdWdnZXN0aW9ucyA9IFtdO1xuICAgIHRoaXMuc3VnZ2VzdGlvbnNXb3JkTGlzdCA9IFtdO1xuICAgIC8vIGNvbnNvbGUubG9nKCdMaWJBdXRvY29tcGxldGVMb2NhbGl0eUNvbXBvbmVudDo6Y2xlYXJTdWdnZXN0aW9ucycsIHRoaXMud29yZExpc3QpO1xuICAgIC8vIHRoaXMuc3VnZ2VzdGlvbk1lc3NhZ2VzID0gIFtdO1xuICB9XG5cbiAgY2xpY2tTdWdnZXN0aW9uKGV2ZW50OiBhbnksIHN1Z2dlc3Rpb246IGFueSkge1xuICAgIHRoaXMuaXNQcmVmaWxsV2l0aE5vTWF0Y2ggPSBmYWxzZTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuY2xlYXJUeXBlQWhlYWQoKTtcbiAgICB0aGlzLnJlc2V0QXJyb3dTZWxlY3RlZEluZGV4KCk7XG4gICAgdGhpcy5zZXRTZWFyY2hUZXh0KHN1Z2dlc3Rpb24uc3RyaW5nKTtcbiAgICB0aGlzLmNvbGxhcHNlRHJvcGRvd24gPSB0cnVlO1xuICAgIC8vIGlmIChzdWdnZXN0aW9uLmhhc093blByb3BlcnR5KCdpc0NvbXBsZXRlJykpIHtcbiAgICAvLyAgIHRoaXMuc2hvd0FkZHJlc3NJc1ZhbGlkYXRlZCgpO1xuICAgIC8vIH1cbiAgICB0aGlzLmFkZHJlc3NJc1ZhbGlkYXRlZCA9IHRydWU7XG4gICAgdGhpcy5jbGVhclN1Z2dlc3Rpb25zKCk7XG4gICAgdGhpcy5zZXRTZWxlY3RlZEFkZHJlc3Moc3VnZ2VzdGlvbik7XG4gIH1cblxuICBjbGVhcldpZGdldCgpIHtcbiAgICB0aGlzLmNsZWFyU2VhcmNoVGV4dCgpO1xuICAgIHRoaXMuY2xlYXJTdWdnZXN0aW9ucygpO1xuICAgIHRoaXMuY2xlYXJUeXBlQWhlYWQoKTtcbiAgICB0aGlzLnByZWZpbGxEYXRhID0gbnVsbDtcbiAgICB0aGlzLnByZWZpbGxpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGN1cnNvcklzT25TdWdnZXN0aW9uTGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEluZGV4ID49IDA7XG4gIH1cblxuICBvbkNoYW5nZWRMYW5ndWFnZSgpIHtcbiAgICAvLyB0aGlzLnBsYWNlSG9sZGVyVGV4dCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdsb2NhbGl0eS5wbGFjZWhvbGRlci5pbnB1dC1wbGFjZWhvbGRlcicpO1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoJ2xvY2FsaXR5LnBsYWNlaG9sZGVyLmlucHV0LXBsYWNlaG9sZGVyJylcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCduZXcgcGxhY2Vob2xkZXInLCByZXMpO1xuICAgICAgICAvLyA9PiAnaGVsbG8gd29ybGQnXG4gICAgICAgIHRoaXMucGxhY2VIb2xkZXJUZXh0ID0gcmVzO1xuICAgIH0pO1xuICB9XG5cbiAgY2hhbmdlU2VsZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbW92ZUFycm93U2VsZWN0ZWRJbmRleERvd24oKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCArIDEgIT09IHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXgrKztcbiAgICAgIHRoaXMuY2hhbmdlU2VsZWN0aW9uKCk7XG4gICAgICB0aGlzLnNldFNlYXJjaFRleHRCYXNlZE9uQXJyb3dTZWxlY3Rpb24odGhpcy5zZWxlY3RlZEluZGV4LCB0aGlzLnNlbGVjdGVkSW5kZXggLSAxKTtcbiAgICB9XG4gIH1cblxuICBtb3ZlQXJyb3dTZWxlY3RlZEluZGV4VXAoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCAtIDEgIT09IC0yKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXgtLTtcbiAgICAgIHRoaXMuY2hhbmdlU2VsZWN0aW9uKCk7XG4gICAgICB0aGlzLnNldFNlYXJjaFRleHRCYXNlZE9uQXJyb3dTZWxlY3Rpb24odGhpcy5zZWxlY3RlZEluZGV4LCB0aGlzLnNlbGVjdGVkSW5kZXggKyAxKTtcbiAgICB9XG4gIH1cblxuICBjaGVja0tleURvd24oZXZlbnQpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LndoaWNoKSB7XG4gICAgICAvLyBkb3duIGtleSwgaW5jcmVtZW50IHNlbGVjdGVkSW5kZXhcbiAgICAgIGNhc2UgNDA6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMubW92ZUFycm93U2VsZWN0ZWRJbmRleERvd24oKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIHVwIGtleSwgZGVjcmVtZW50IHNlbGVjdGVkSW5kZXhcbiAgICAgIGNhc2UgMzg6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMubW92ZUFycm93U2VsZWN0ZWRJbmRleFVwKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gcmlnaHQgYXJyb3cga2V5XG4gICAgICBjYXNlIDM5OlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAodGhpcy5jdXJzb3JJc09uU3VnZ2VzdGlvbkxpc3QoKSkge1xuICAgICAgICAgIHRoaXMuY2xpY2tTdWdnZXN0aW9uKGV2ZW50LCB0aGlzLnN1Z2dlc3Rpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLnR5cGVBaGVhZFdvcmQgJiYgdGhpcy50eXBlQWhlYWRJc1Nob3duKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VhcmNoVGV4dCh0aGlzLmJwVHlwZUFoZWFkKTtcbiAgICAgICAgICAgIHRoaXMudHlwZUFoZWFkV29yZCA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIC8vIHRhYiBrZXlcbiAgICAgIGNhc2UgOTpcbiAgICAgICAgaWYgKCF0aGlzLmFkZHJlc3NJc1ZhbGlkYXRlZCkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RGaXJzdEluTGlzdE9mU3VnZ2VzaW9ucygpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIDQ2OlxuICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgIHRoaXMuY2xlYXJXaWRnZXQoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIC8vIGVudGVyIHByZXNzZWRcbiAgICAgIGNhc2UgMTM6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLmN1cnNvcklzT25TdWdnZXN0aW9uTGlzdCgpKSB7XG4gICAgICAgICAgdGhpcy5jbGlja1N1Z2dlc3Rpb24oZXZlbnQsIHRoaXMuc3VnZ2VzdGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuY2xlYXJUeXBlQWhlYWQoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICB9XG4gIH1cblxuICBzZXRDb25uZWN0aW9uRXJyb3JNZXNzYWdlKCkge1xuICAgIHRoaXMuZXJyb3JDb2RlID0gLyonc2VydmljZS11bmF2YWlsYWJsZScqLyBWYWxpZGF0aW9uTWVzc2FnZVR5cGUuU2VydmljZV9VbmF2YWlsYWJsZTtcbiAgICAvLyB0aGlzLnNldFZhbGlkYXRpb25NZXNzYWdlKHRoaXMuZXJyb3JDb2RlKTtcbiAgICB0aGlzLmVtaXRUcmFuc2xhdGVkVmFsaWRhdGlvbk1lc3NhZ2UoVmFsaWRhdGlvbk1lc3NhZ2VUeXBlLlNlcnZpY2VfVW5hdmFpbGFibGUpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRBZGRyZXNzKHN1Z2dlc3Rpb246IGFueSkge1xuICAgIHRoaXMuYWRkcmVzc0NoYW5nZWQuZW1pdChzdWdnZXN0aW9uKTtcbiAgfVxuXG4gIHRyYW5zbGF0ZU1lc3NhZ2UobWVzc2FnZSk6IHN0cmluZyB7XG4gICAgY29uc3QgbWVzc2FnZUtleSA9IG1lc3NhZ2Uua2V5O1xuICAgIHN3aXRjaCAobWVzc2FnZUtleSkge1xuICAgICAgY2FzZSAnc3VibCc6IHtcbiAgICAgICAgLy8gYXJncyBsZW5ndGggbXVzdCBiZSAyICFcbiAgICAgICAgaWYgKG1lc3NhZ2UuYXJncyAmJiBtZXNzYWdlLmFyZ3MubGVuZ3RoID09PSAyICkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnbG9jYWxpdHkuc3VnZ2VzdGlvbi5tZXNzYWdlLnN1YmwnLCB7IHN1YjogbWVzc2FnZS5hcmdzWzBdLCBwcmluY2lwYWw6IG1lc3NhZ2UuYXJnc1sxXX0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6YWxpZ25cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHR5cGVBaGVhZElzU2hvd24oKSB7XG4gICAgcmV0dXJuIHRoaXMuYnBUeXBlQWhlYWQgJiYgdGhpcy5icFR5cGVBaGVhZC5sZW5ndGggPiAwO1xuICB9XG5cbiAgc2VsZWN0Rmlyc3RJbkxpc3RPZlN1Z2dlc2lvbnMoKSB7XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcbiAgICB0aGlzLmNoYW5nZVNlbGVjdGlvbigpO1xuICAgIHRoaXMuc2V0U2VhcmNoVGV4dEJhc2VkT25BcnJvd1NlbGVjdGlvbih0aGlzLnNlbGVjdGVkSW5kZXgsIHRoaXMuc2VsZWN0ZWRJbmRleCAtIDEpO1xuICB9XG5cbiAgc2V0U2VhcmNoVGV4dCh2YWx1ZSkge1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHZhbHVlO1xuICB9XG5cbiAgc2V0U2VhcmNoVGV4dEJhc2VkT25BcnJvd1NlbGVjdGlvbihuZXdWYWwsIG9sZFZhbCkge1xuICAgIGlmIChuZXdWYWwgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCA8PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChuZXdWYWwgIT09IC0xKSB7XG4gICAgICBpZiAob2xkVmFsID09PSAtMSkge1xuICAgICAgICB0aGlzLmxhc3RTZWFyY2hWYWx1ZSA9IHRoaXMuc2VhcmNoVGV4dDtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0U2VhcmNoVGV4dCh0aGlzLnN1Z2dlc3Rpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0uc3RyaW5nKTtcbiAgICAgIHRoaXMuY2xlYXJUeXBlQWhlYWQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRTZWFyY2hUZXh0KHRoaXMubGFzdFNlYXJjaFZhbHVlKTtcbiAgICB9XG4gIH1cblxufVxuIl19
|
|
@@ -15,9 +15,9 @@ var QueryParameters = /** @class */ (function () {
|
|
|
15
15
|
this.sortByStreetNumber = enable;
|
|
16
16
|
};
|
|
17
17
|
QueryParameters.prototype.sortByBox = function (enable) {
|
|
18
|
-
this.
|
|
18
|
+
this.sortByBoxNumber = enable;
|
|
19
19
|
};
|
|
20
20
|
return QueryParameters;
|
|
21
21
|
}());
|
|
22
22
|
export { QueryParameters };
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcGFyYW1ldGVycy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BicG9zdC9icC1hZGRyZXNzLWF1dG8tY29tcGxldGUtYnktY29tcG9uZW50LyIsInNvdXJjZXMiOlsibGliL21vZGVsL3F1ZXJ5LXBhcmFtZXRlcnMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFjSSx5QkFBWSxJQUErQjtRQUN2QyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsMENBQWdCLEdBQWhCLFVBQWlCLE1BQWU7UUFDNUIsSUFBSSxDQUFDLDRCQUE0QixHQUFHLE1BQU0sQ0FBQztJQUMvQyxDQUFDO0lBRUQsNENBQWtCLEdBQWxCLFVBQW1CLE1BQWU7UUFDOUIsSUFBSSxDQUFDLDRCQUE0QixHQUFHLE1BQU0sQ0FBQztJQUMvQyxDQUFDO0lBRUQsc0NBQVksR0FBWixVQUFhLE1BQWU7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztJQUNuQyxDQUFDO0lBRUQsd0NBQWMsR0FBZCxVQUFlLE1BQWU7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztJQUNyQyxDQUFDO0lBRUQsbUNBQVMsR0FBVCxVQUFVLE1BQWU7UUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUNMLHNCQUFDO0FBQUQsQ0FBQyxBQXJDRCxJQXFDQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBRdWVyeVBhcmFtZXRlcnMge1xyXG4gICAgaWQ6IG51bWJlcjtcclxuICAgIHE6IHN0cmluZztcclxuICAgIHBvc3RhbENvZGU6IHN0cmluZztcclxuICAgIGxvY2FsaXR5OiBzdHJpbmc7XHJcbiAgICBzdHJlZXQ6IHN0cmluZztcclxuICAgIHN0cmVldE51bWJlcjogc3RyaW5nO1xyXG4gICAgbWF4TnVtYmVyT2ZTdWdnZXN0aW9uczogbnVtYmVyO1xyXG4gICAgc29ydEJ5UG9zdGFsQ29kZUxvY2FsaXR5TmFtZTogYm9vbGVhbjtcclxuICAgIHNvcnRCeUxvY2FsaXR5TmFtZVBvc3RhbENvZGU6IGJvb2xlYW47XHJcbiAgICBzb3J0QnlTdHJlZXROYW1lOiBib29sZWFuO1xyXG4gICAgc29ydEJ5U3RyZWV0TnVtYmVyOiBib29sZWFuO1xyXG4gICAgc29ydEJ5Qm94TnVtYmVyOiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQYXJ0aWFsPFF1ZXJ5UGFyYW1ldGVycz4pIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHNvcnRCeVBvc3RhbENvZGUoZW5hYmxlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5zb3J0QnlQb3N0YWxDb2RlTG9jYWxpdHlOYW1lID0gZW5hYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIHNvcnRCeUxvY2FsaXR5bmFtZShlbmFibGU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLnNvcnRCeUxvY2FsaXR5TmFtZVBvc3RhbENvZGUgPSBlbmFibGU7XHJcbiAgICB9XHJcblxyXG4gICAgc29ydEJ5U3RyZWV0KGVuYWJsZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuc29ydEJ5U3RyZWV0TmFtZSA9IGVuYWJsZTtcclxuICAgIH1cclxuXHJcbiAgICBzb3J0QnlTdHJlZXROYihlbmFibGU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLnNvcnRCeVN0cmVldE51bWJlciA9IGVuYWJsZTtcclxuICAgIH1cclxuXHJcbiAgICBzb3J0QnlCb3goZW5hYmxlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5zb3J0QnlCb3hOdW1iZXIgPSBlbmFibGU7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -13,6 +13,7 @@ var AddressService = /** @class */ (function () {
|
|
|
13
13
|
this.httpService = httpService;
|
|
14
14
|
this.domain = 'http://10.194.73.9:8080';
|
|
15
15
|
this.localityURL = this.domain + '/AddressAutoComplete/autocomplete/locality?IncludeGeographicalSanction=true';
|
|
16
|
+
this.log = true;
|
|
16
17
|
}
|
|
17
18
|
AddressService.prototype.getLocality = function (baseUrl, params) {
|
|
18
19
|
var _this = this;
|
|
@@ -65,4 +66,4 @@ var AddressService = /** @class */ (function () {
|
|
|
65
66
|
return AddressService;
|
|
66
67
|
}());
|
|
67
68
|
export { AddressService };
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRyZXNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYnBvc3QvYnAtYWRkcmVzcy1hdXRvLWNvbXBsZXRlLWJ5LWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9hZHJlc3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7O0FBS25DO0lBTUUsd0JBQ1UsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFOMUIsV0FBTSxHQUFHLHlCQUF5QixDQUFDO1FBQ25DLGdCQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyw2RUFBNkUsQ0FBQztRQUVqRyxRQUFHLEdBQUMsSUFBSSxDQUFDO0lBSXRCLENBQUM7SUFFTCxvQ0FBVyxHQUFYLFVBQVksT0FBZSxFQUFFLE1BQXVCO1FBQXBELGlCQVFDO1FBUEMsSUFBTSxHQUFHLEdBQUcsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3hELHNDQUFzQztRQUN0QyxJQUFNLE9BQU8sR0FBRyxFQUFDLE1BQU0sUUFBQSxFQUFDLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxD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QkEzRUQ7Q0EyRUMsQUE5REQsSUE4REM7U0E5RFksY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9odHRwLnNlcnZpY2UnO1xuaW1wb3J0IHsgUXVlcnlQYXJhbWV0ZXJzIH0gZnJvbSAnLi4vbW9kZWwvcXVlcnktcGFyYW1ldGVycy5tb2RlbCc7XG5pbXBvcnQgeyBMb2NhbGl0eSB9IGZyb20gJy4uL21vZGVsL0xvY2FsaXR5JztcbmltcG9ydCB7IFN0cmVldCB9IGZyb20gJy4uL21vZGVsL1N0cmVldCc7XG5pbXBvcnQgeyBCb3ggfSBmcm9tICcuLi9tb2RlbC9Cb3gnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBZGRyZXNzU2VydmljZSB7XG4gIHByaXZhdGUgZG9tYWluID0gJ2h0dHA6Ly8xMC4xOTQuNzMuOTo4MDgwJztcbiAgcHJpdmF0ZSBsb2NhbGl0eVVSTCA9IHRoaXMuZG9tYWluICsgJy9BZGRyZXNzQXV0b0NvbXBsZXRlL2F1dG9jb21wbGV0ZS9sb2NhbGl0eT9JbmNsdWRlR2VvZ3JhcGhpY2FsU2FuY3Rpb249dHJ1ZSc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2c9dHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZVxuICApIHsgfVxuXG4gIGdldExvY2FsaXR5KGJhc2VVcmw6IHN0cmluZywgcGFyYW1zOiBRdWVyeVBhcmFtZXRlcnMpOiBPYnNlcnZhYmxlPExvY2FsaXR5PiB7XG4gICAgY29uc3QgdXJsID0gYmFzZVVybCAhPT0gJycgPyBiYXNlVXJsIDogdGhpcy5sb2NhbGl0eVVSTDtcbiAgICAvLyBjb25zdCBvcHRpb25zID0geydwYXJhbXMnOiBwYXJhbXN9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7cGFyYW1zfTtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQodXJsLCBvcHRpb25zKS5waXBlKFxuICAgICAgdGFwKHJlc3BvbnNlID0+IHRoaXMuaGFuZGxlR2V0TG9jYWxpdHkocmVzcG9uc2UpKSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcikpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlR2V0TG9jYWxpdHkocmVzcG9uc2U6IGFueSk6IExvY2FsaXR5IHtcbiAgICBjb25zdCBsb2NhbGl0eTogTG9jYWxpdHkgPSBuZXcgTG9jYWxpdHkocmVzcG9uc2UucmVzcG9uc2UpO1xuICAgIHJldHVybiBsb2NhbGl0eTtcbiAgfVxuXG4gIGdldFN0cmVldChiYXNlVXJsOiBzdHJpbmcsIGxvY2FsaXR5OiBzdHJpbmcsIHBvc3RhbGNvZGU6IHN0cmluZywgcGFyYW1zOiBRdWVyeVBhcmFtZXRlcnMpOiBPYnNlcnZhYmxlPFN0cmVldD4ge1xuICAgIGxldCB1cmwgPSBiYXNlVXJsO1xuICAgIC8vIGNvbnN0IG9wdGlvbnMgPSB7ICdwYXJhbXMnOiBwYXJhbXMgfTtcbiAgICBjb25zdCBvcHRpb25zID0ge3BhcmFtc307XG4gICAgdXJsID0gdXJsLnJlcGxhY2UoJyRwb3N0YWxDb2RlJywgcG9zdGFsY29kZSk7XG4gICAgdXJsID0gdXJsLnJlcGxhY2UoJyRsb2NhbGl0eU5hbWUnLCBsb2NhbGl0eSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0KHVybCwgb3B0aW9ucykucGlwZShcbiAgICAgIHRhcChyZXNwb25zZSA9PiB0aGlzLmhhbmRsZUdldFN0cmVldChyZXNwb25zZSkpLFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVHZXRTdHJlZXQocmVzcG9uc2U6IGFueSk6IFN0cmVldCB7XG4gICAgY29uc3Qgc3RyZWV0OiBTdHJlZXQgPSBuZXcgU3RyZWV0KHJlc3BvbnNlLnJlc3BvbnNlKTtcbiAgICByZXR1cm4gc3RyZWV0O1xuICB9XG5cbiAgZ2V0Qm94KGJhc2VVcmw6IHN0cmluZywgbG9jYWxpdHk6IHN0cmluZywgcG9zdGFsY29kZTogc3RyaW5nLCBwYXJhbXM6IFF1ZXJ5UGFyYW1ldGVycyk6IE9ic2VydmFibGU8Qm94PiB7XG4gICAgbGV0IHVybCA9IGJhc2VVcmw7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtwYXJhbXN9O1xuICAgIHVybCA9IHVybC5yZXBsYWNlKCckcG9zdGFsQ29kZScsIHBvc3RhbGNvZGUpO1xuICAgIHVybCA9IHVybC5yZXBsYWNlKCckbG9jYWxpdHlOYW1lJywgbG9jYWxpdHkpO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldCh1cmwsIG9wdGlvbnMpLnBpcGUoXG4gICAgICB0YXAocmVzcG9uc2UgPT4gdGhpcy5oYW5kbGVHZXRCb3gocmVzcG9uc2UpKSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcikpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlR2V0Qm94KHJlc3BvbnNlOiBhbnkpOiBCb3gge1xuICAgIGNvbnN0IHN0cmVldDogQm94ID0gbmV3IEJveChyZXNwb25zZS5yZXNwb25zZSk7XG4gICAgcmV0dXJuIHN0cmVldDtcbiAgfVxuXG4gIGhhbmRsZUVycm9yKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { HttpClient } from '@angular/common/http';
|
|
1
|
+
import { __assign, __decorate } from "tslib";
|
|
2
|
+
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
3
3
|
import { Injectable } from '@angular/core';
|
|
4
4
|
import { throwError } from 'rxjs';
|
|
5
5
|
import { catchError, map } from 'rxjs/operators';
|
|
@@ -9,13 +9,26 @@ var HttpService = /** @class */ (function () {
|
|
|
9
9
|
function HttpService(httpClient) {
|
|
10
10
|
this.httpClient = httpClient;
|
|
11
11
|
this.openConnections = 0;
|
|
12
|
+
this.apiKey = 'no-value';
|
|
12
13
|
}
|
|
14
|
+
HttpService.prototype.setApiKey = function (apiKey) {
|
|
15
|
+
this.apiKey = apiKey;
|
|
16
|
+
};
|
|
17
|
+
HttpService.prototype.getHttpHeaders = function () {
|
|
18
|
+
var headers = new HttpHeaders();
|
|
19
|
+
// Attention !
|
|
20
|
+
// Need to reassign as the 'set' is returning a clone of the headera object !!!
|
|
21
|
+
headers = headers.set('x-api-key', /*'bBkvimXYnAaEEKMyGqoWO2XiaZCQyqUi7VReYzPJ'*/ this.apiKey);
|
|
22
|
+
return headers;
|
|
23
|
+
};
|
|
13
24
|
HttpService.prototype.get = function (url, options) {
|
|
14
25
|
return this.request('GET', url, options);
|
|
15
26
|
};
|
|
16
27
|
HttpService.prototype.request = function (method, url, options) {
|
|
17
28
|
var _this = this;
|
|
18
29
|
options = !!options ? options : {};
|
|
30
|
+
options = __assign(__assign({}, options), { headers: this.getHttpHeaders() });
|
|
31
|
+
console.log('options:', JSON.stringify(options));
|
|
19
32
|
this.openConnections++;
|
|
20
33
|
return this.httpClient.request(method, url, options).pipe(map(function (response) { return _this.handleResponse(response); }), catchError(function (error) { return _this.handleError(error); }));
|
|
21
34
|
};
|
|
@@ -39,4 +52,4 @@ var HttpService = /** @class */ (function () {
|
|
|
39
52
|
return HttpService;
|
|
40
53
|
}());
|
|
41
54
|
export { HttpService };
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGJwb3N0L2JwLWFkZHJlc3MtYXV0by1jb21wbGV0ZS1ieS1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvaHR0cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFNakQ7SUFJRSxxQkFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUZsQyxvQkFBZSxHQUFHLENBQUMsQ0FBQztRQUlwQixXQUFNLEdBQUcsVUFBVSxDQUFDO0lBRmtCLENBQUM7SUFJL0MsK0JBQVMsR0FBVCxVQUFVLE1BQWM7UUFFdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELG9DQUFjLEdBQWQ7UUFFRSxJQUFJLE9BQU8sR0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQzlCLGNBQWM7UUFDZCwrRUFBK0U7UUFDL0UsT0FBTyxHQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLDhDQUE4QyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQseUJBQUcsR0FBSCxVQUFJLEdBQVcsRUFBRSxPQUFhO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTyw2QkFBTyxHQUFmLFVBQWdCLE1BQVcsRUFBRSxHQUFZLEVBQUUsT0FBWTtRQUF2RCxpQkFTQztRQVJDLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPLHlCQUFPLE9BQU8sS0FBRSxPQUFPLEVBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFDLENBQUM7UUFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUN2RCxHQUFHLENBQUMsVUFBQyxRQUFrQixJQUFLLE9BQUEsS0FBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQyxFQUMxRCxVQUFVLENBQUMsVUFBQyxLQUFVLElBQUssT0FBQSxLQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUF2QixDQUF1QixDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sb0NBQWMsR0FBdEIsVUFBdUIsUUFBYTtRQUNsQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVPLGlDQUFXLEdBQW5CLFVBQW9CLEtBQVU7UUFDNUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7O2dCQXpDK0IsVUFBVTs7O0lBSi9CLFdBQVc7UUFIdkIsVUFBVSxDQUFDO1lBQ1YsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQztPQUNXLFdBQVcsQ0ErQ3ZCO3NCQXhERDtDQXdEQyxBQS9DRCxJQStDQztTQS9DWSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSHR0cFNlcnZpY2Uge1xuXG4gIHByaXZhdGUgb3BlbkNvbm5lY3Rpb25zID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHsgfVxuXG4gIHByaXZhdGUgYXBpS2V5ID0gJ25vLXZhbHVlJztcblxuICBzZXRBcGlLZXkoYXBpS2V5OiBzdHJpbmcpOiB2b2lkXG4gIHtcbiAgICB0aGlzLmFwaUtleSA9IGFwaUtleTtcbiAgfVxuXG4gIGdldEh0dHBIZWFkZXJzKCk6IEh0dHBIZWFkZXJzXG4gIHtcbiAgICBsZXQgaGVhZGVycz1uZXcgSHR0cEhlYWRlcnMoKTtcbiAgICAvLyBBdHRlbnRpb24gIVxuICAgIC8vIE5lZWQgdG8gcmVhc3NpZ24gYXMgdGhlICdzZXQnIGlzIHJldHVybmluZyBhIGNsb25lIG9mIHRoZSBoZWFkZXJhIG9iamVjdCAhISFcbiAgICBoZWFkZXJzPWhlYWRlcnMuc2V0KCd4LWFwaS1rZXknLCAvKidiQmt2aW1YWW5BYUVFS015R3FvV08yWGlhWkNReXFVaTdWUmVZelBKJyovIHRoaXMuYXBpS2V5KTtcbiAgICByZXR1cm4gaGVhZGVycztcbiAgfVxuICBcbiAgZ2V0KHVybDogc3RyaW5nLCBvcHRpb25zPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdHRVQnLCB1cmwsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXF1ZXN0KG1ldGhvZDogYW55LCB1cmw/OiBzdHJpbmcsIG9wdGlvbnM/OiB7fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgb3B0aW9ucyA9ICEhb3B0aW9ucyA/IG9wdGlvbnMgOiB7fTtcbiAgICBvcHRpb25zID0gey4uLm9wdGlvbnMsIGhlYWRlcnM6ICB0aGlzLmdldEh0dHBIZWFkZXJzKCl9O1xuICAgIGNvbnNvbGUubG9nKCdvcHRpb25zOicsIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpKTtcblxuICAgIHRoaXMub3BlbkNvbm5lY3Rpb25zKys7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzcG9uc2UpKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpKSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVJlc3BvbnNlKHJlc3BvbnNlOiBhbnkpOiBhbnkge1xuICAgIHRoaXMub3BlbkNvbm5lY3Rpb25zLS07XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KTogYW55IHtcbiAgICB0aGlzLm9wZW5Db25uZWN0aW9ucy0tO1xuICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -6,6 +6,8 @@ var PrefillData // extends PrefilledParameters
|
|
|
6
6
|
this.prefillMunicipalityName = null;
|
|
7
7
|
this.prefillMunicipalityPerfectMatchFound = false;
|
|
8
8
|
this.prefillMunicipalityPerfectMatchSuggestion = null;
|
|
9
|
+
// This is a working field, do not document
|
|
10
|
+
this.prefillMunicipalityAndLocalityPerfectMatchFound = false;
|
|
9
11
|
this.prefillStreetName = null;
|
|
10
12
|
this.prefillStreetPerfectMatchFound = false;
|
|
11
13
|
this.prefillStreetPerfectMatchSuggestion = null;
|
|
@@ -21,4 +23,4 @@ var PrefillData // extends PrefilledParameters
|
|
|
21
23
|
return PrefillData;
|
|
22
24
|
}());
|
|
23
25
|
export { PrefillData };
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmlsbC1kYXRhLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGJwb3N0L2JwLWFkZHJlc3MtYXV0by1jb21wbGV0ZS1ieS1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvcHJlZmlsbC1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLGdCQUF5Qiw4QkFBOEI7O0lBd0JuRCxxQkFDVyxVQUErQjtRQUEvQixlQUFVLEdBQVYsVUFBVSxDQUFxQjtRQXZCMUMsbUNBQW1DO1FBRW5DLDRCQUF1QixHQUFXLElBQUksQ0FBQztRQUN2Qyx5Q0FBb0MsR0FBRyxLQUFLLENBQUM7UUFDN0MsOENBQXlDLEdBQVEsSUFBSSxDQUFDO1FBQ3RELDJDQUEyQztRQUMzQyxvREFBK0MsR0FBRyxLQUFLLENBQUM7UUFFeEQsc0JBQWlCLEdBQVcsSUFBSSxDQUFDO1FBQ2pDLG1DQUE4QixHQUFHLEtBQUssQ0FBQztRQUN2Qyx3Q0FBbUMsR0FBUSxJQUFJLENBQUM7UUFFaEQsd0JBQW1CLEdBQVcsSUFBSSxDQUFDO1FBQ25DLHlDQUFvQyxHQUFHLEtBQUssQ0FBQztRQUM3Qyw4Q0FBeUMsR0FBUSxJQUFJLENBQUM7UUFFdEQscUJBQWdCLEdBQVcsSUFBSSxDQUFDO1FBQ2hDLHNDQUFpQyxHQUFHLEtBQUssQ0FBQztRQUMxQywyQ0FBc0MsR0FBUSxJQUFJLENBQUM7UUFFbkQsT0FBRSxHQUFTLElBQUksQ0FBQztRQUtaLElBQUksQ0FBQyxFQUFFLEdBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0wsa0JBQUM7QUFBRCxDQUFDLEFBN0JELElBNkJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJlZmlsbGVkUGFyYW1ldGVycyB9IGZyb20gJy4vcHJlZmlsbGVkLXBhcmFtZXRlcnMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFByZWZpbGxEYXRhIC8vIGV4dGVuZHMgUHJlZmlsbGVkUGFyYW1ldGVyc1xyXG57XHJcbiAgICAvLyBwYXJhbWV0ZXJzOiBQcmVmaWxsZWRQYXJhbWV0ZXJzO1xyXG5cclxuICAgIHByZWZpbGxNdW5pY2lwYWxpdHlOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgcHJlZmlsbE11bmljaXBhbGl0eVBlcmZlY3RNYXRjaEZvdW5kID0gZmFsc2U7XHJcbiAgICBwcmVmaWxsTXVuaWNpcGFsaXR5UGVyZmVjdE1hdGNoU3VnZ2VzdGlvbjogYW55ID0gbnVsbDtcclxuICAgIC8vIFRoaXMgaXMgYSB3b3JraW5nIGZpZWxkLCBkbyBub3QgZG9jdW1lbnRcclxuICAgIHByZWZpbGxNdW5pY2lwYWxpdHlBbmRMb2NhbGl0eVBlcmZlY3RNYXRjaEZvdW5kID0gZmFsc2U7XHJcblxyXG4gICAgcHJlZmlsbFN0cmVldE5hbWU6IHN0cmluZyA9IG51bGw7XHJcbiAgICBwcmVmaWxsU3RyZWV0UGVyZmVjdE1hdGNoRm91bmQgPSBmYWxzZTtcclxuICAgIHByZWZpbGxTdHJlZXRQZXJmZWN0TWF0Y2hTdWdnZXN0aW9uOiBhbnkgPSBudWxsO1xyXG5cclxuICAgIHByZWZpbGxTdHJlZXROdW1iZXI6IHN0cmluZyA9IG51bGw7XHJcbiAgICBwcmVmaWxsU3RyZWV0TnVtYmVyUGVyZmVjdE1hdGNoRm91bmQgPSBmYWxzZTtcclxuICAgIHByZWZpbGxTdHJlZXROdW1iZXJQZXJmZWN0TWF0Y2hTdWdnZXN0aW9uOiBhbnkgPSBudWxsO1xyXG5cclxuICAgIHByZWZpbGxCb3hOdW1iZXI6IHN0cmluZyA9IG51bGw7XHJcbiAgICBwcmVmaWxsQm94TnVtYmVyUGVyZmVjdE1hdGNoRm91bmQgPSBmYWxzZTtcclxuICAgIHByZWZpbGxCb3hOdW1iZXJQZXJmZWN0TWF0Y2hTdWdnZXN0aW9uOiBhbnkgPSBudWxsO1xyXG5cclxuICAgIHRzOiBEYXRlID0gbnVsbDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgcGFyYW1ldGVyczogUHJlZmlsbGVkUGFyYW1ldGVyc1xyXG4gICAgKXtcclxuICAgICAgICB0aGlzLnRzID0gIG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
|