ng-easycommerce 0.0.597 → 0.0.598
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/bundles/ng-easycommerce.umd.js +43 -7
- package/bundles/ng-easycommerce.umd.js.map +1 -1
- package/bundles/ng-easycommerce.umd.min.js +1 -1
- package/bundles/ng-easycommerce.umd.min.js.map +1 -1
- package/esm2015/lib/core.consts.js +13 -1
- package/esm2015/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +32 -8
- package/esm5/lib/core.consts.js +13 -1
- package/esm5/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +32 -8
- package/fesm2015/ng-easycommerce.js +43 -7
- package/fesm2015/ng-easycommerce.js.map +1 -1
- package/fesm5/ng-easycommerce.js +43 -7
- package/fesm5/ng-easycommerce.js.map +1 -1
- package/lib/core.consts.d.ts +2 -0
- package/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.d.ts +1 -0
- package/ng-easycommerce.metadata.json +1 -1
- package/package.json +1 -1
package/esm5/lib/core.consts.js
CHANGED
|
@@ -367,6 +367,15 @@ var Constants = /** @class */ (function () {
|
|
|
367
367
|
return _this.sortFilters = filtersCode;
|
|
368
368
|
};
|
|
369
369
|
this.getSortFilters = function () { return _this.sortFilters; };
|
|
370
|
+
this.postalCodePatterns = {
|
|
371
|
+
'AR': /^[0-9]{4}$/,
|
|
372
|
+
'UY': /^[0-9]{5}$/,
|
|
373
|
+
'GB': /^[A-Z]{1,2}[0-9][A-Z0-9]?\s?[0-9][A-Z]{2}$/,
|
|
374
|
+
'ES': /^(?:0[1-9]|[1-4]\d|5[0-2])\d{3}$/,
|
|
375
|
+
'BR': /^[0-9]{5}-[0-9]{3}$/,
|
|
376
|
+
'FR': /^[0-9]{5}$/,
|
|
377
|
+
'PT': /^[0-9]{4}-[0-9]{3}$/,
|
|
378
|
+
};
|
|
370
379
|
}
|
|
371
380
|
/**
|
|
372
381
|
*
|
|
@@ -404,6 +413,9 @@ var Constants = /** @class */ (function () {
|
|
|
404
413
|
: params.find(function (param) { return param.code == (prefix + searched + suffix) || param.code == searched; });
|
|
405
414
|
};
|
|
406
415
|
;
|
|
416
|
+
Constants.prototype.getPostalCodePattern = function (countryCode) {
|
|
417
|
+
return this.postalCodePatterns[countryCode] || /^[A-Za-z0-9\s\-]+$/;
|
|
418
|
+
};
|
|
407
419
|
Constants.ctorParameters = function () { return [
|
|
408
420
|
{ type: TranslateService },
|
|
409
421
|
{ type: Router },
|
|
@@ -419,4 +431,4 @@ var Constants = /** @class */ (function () {
|
|
|
419
431
|
return Constants;
|
|
420
432
|
}());
|
|
421
433
|
export { Constants };
|
|
422
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5jb25zdHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvY29yZS5jb25zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFtQixhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBWXREO0lBRUksbUJBQW1CLFNBQTJCLEVBQVUsTUFBYyxFQUF5QixHQUFHO1FBQWxHLGlCQUF1RztRQUFwRixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBeUIsUUFBRyxHQUFILEdBQUcsQ0FBQTtRQUVqRixXQUFNLEdBQUcsUUFBUSxDQUFDO1FBQ2xCLFlBQU8sR0FBRyxTQUFTLENBQUM7UUFDOUIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFeEIseUJBQW9CLEdBQUcsSUFBSSxhQUFhLEVBQU8sQ0FBQztRQUNqRCxtQkFBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV6RCxxQkFBZ0IsR0FBRyxVQUFDLE9BQU8sSUFBSyxPQUFBLFlBQVksR0FBRyxPQUFPLEdBQUcsU0FBUyxFQUFsQyxDQUFrQyxDQUFDO1FBRW5FLGtCQUFhLEdBQVcsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNyQyxxQkFBZ0IsR0FBVyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVyRSxnRkFBZ0Y7UUFDeEUsWUFBTyxHQUFXLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLG1DQUFtQyxDQUFDLENBQUM7UUFDL0ksY0FBUyxHQUFXLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuSSxnQkFBVyxHQUFXLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLHFDQUFxQyxDQUFDLENBQUM7UUFDcEssV0FBTSxHQUFXLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUM7UUFDMUwsWUFBTyxHQUFXLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksV0FBVyxDQUFDLENBQUE7UUFDbk0sb0JBQWUsR0FBVyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLENBQUM7UUFFbkosZ0JBQVcsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGdDQUFnQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyRyxtQkFBYyxHQUFHLFVBQUMsTUFBVyxJQUFLLE9BQUEsS0FBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQXpCLENBQXlCLENBQUM7UUFDNUQsbUJBQWMsR0FBRyxjQUFNLE9BQUEsS0FBSSxDQUFDLFdBQVcsRUFBaEIsQ0FBZ0IsQ0FBQztRQUVoQyxZQUFPLEdBQVcsSUFBSSxDQUFDO1FBRXZCLFdBQU0sR0FBRyxDQUFDLFNBQVMsRUFBRSxzQ0FBc0MsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUVuRiwyQkFBMkI7UUFDbkIsa0JBQWEsR0FBRyxJQUFJLENBQUE7UUFFckIscUJBQWdCLEdBQUc7WUFDdEIsSUFBSSxDQUFDLEtBQUksQ0FBQyxhQUFhO2dCQUFFLEtBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1lBQ3BGLE9BQU8sS0FBSSxDQUFDLGFBQWEsQ0FBQTtRQUM3QixDQUFDLENBQUE7UUFFTSxxQkFBZ0IsR0FBRyxVQUFBLE9BQU87WUFDN0IsS0FBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUE7WUFDNUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNuRCxDQUFDLENBQUE7UUFFTyxpQkFBWSxHQUFHLGNBQU0sT0FBQSxLQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsRUFBMUcsQ0FBMEcsQ0FBQztRQUV4SSxlQUFVLEdBQUcsVUFBQyxHQUFHLElBQUssT0FBQSxLQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBbEIsQ0FBa0IsQ0FBQztRQUN6QyxpQkFBWSxHQUFHLFVBQUMsR0FBRyxJQUFLLE9BQUEsS0FBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQXBCLENBQW9CLENBQUM7UUFFN0M7Ozs7O1dBS0c7UUFDSCxxQkFBZ0IsR0FBRyxVQUFDLElBQUksRUFBRSxNQUFNLElBQUssT0FBQSxLQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFuQyxDQUFtQyxDQUFDO1FBRXpFOzs7O1dBSUc7UUFDSCxhQUFRLEdBQUcsVUFBQyxTQUFpQixJQUFLLE9BQUEsS0FBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUksQ0FBQyxTQUFTLElBQUksS0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBdkcsQ0FBdUcsQ0FBQztRQUMxSSxtQkFBYyxHQUFHLGNBQU0sT0FBQSxLQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSSxDQUFDLFNBQVMsSUFBSSxLQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGVBQWUsRUFBbkYsQ0FBbUYsQ0FBQztRQUMzRyxrQkFBYSxHQUFHLGNBQU0sT0FBQSxLQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSSxDQUFDLFNBQVMsSUFBSSxLQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGNBQWMsRUFBbEYsQ0FBa0YsQ0FBQztRQUV6Ryx5QkFBb0IsR0FBRyxjQUFNLE9BQUEsYUFBYSxFQUFiLENBQWEsQ0FBQztRQUUzQyxxQkFBZ0IsR0FBRyxjQUFNLE9BQUEsVUFBVSxFQUFWLENBQVUsQ0FBQztRQUVwQyxlQUFVLEdBQUcsY0FBTSxPQUFBLEtBQUksQ0FBQyxPQUFPLEVBQVosQ0FBWSxDQUFDO1FBQ2hDLG1CQUFjLEdBQUcsY0FBTSxPQUFBLEtBQUksQ0FBQyxXQUFXLEVBQWhCLENBQWdCLENBQUM7UUFFeEMsdUJBQWtCLEdBQUcsY0FBYyxPQUFBLEtBQUksQ0FBQyxlQUFlLElBQUksUUFBUSxDQUFDLEtBQUksQ0FBQyxlQUFlLENBQUMsRUFBdEQsQ0FBc0QsQ0FBQztRQUUxRixpQ0FBaUM7UUFDakMsZ0RBQWdEO1FBRWhELGNBQVMsR0FBRztZQUNSLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ25DLEtBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7YUFDbEQ7WUFDRCxPQUFPLEtBQUksQ0FBQyxNQUFNLENBQUE7UUFDdEIsQ0FBQyxDQUFBO1FBRUQsdUJBQWtCLEdBQUc7WUFDakIsT0FBTyxLQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3pDLENBQUMsQ0FBQTtRQUVNLGNBQVMsR0FBRyxVQUFBLE1BQU07WUFDckIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ3pDLEtBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN4QyxLQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUN4QixDQUFDLENBQUE7UUFFRCxlQUFVLEdBQUc7WUFDVCxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNwQyxLQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO2FBQ3BEO1lBQ0QsT0FBTyxLQUFJLENBQUMsT0FBTyxDQUFBO1FBQ3ZCLENBQUMsQ0FBQTtRQUVNLGVBQVUsR0FBRyxVQUFBLE9BQU87WUFDdkIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQzNDLEtBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQzFCLENBQUMsQ0FBQTtRQUVELGVBQVUsR0FBRyxjQUFNLE9BQUEsS0FBSSxDQUFDLE9BQU8sRUFBWixDQUFZLENBQUM7UUFFaEMsbUJBQWMsR0FBRztZQUNiLE9BQU87Z0JBQ0gsU0FBUyxFQUFFLGFBQWE7Z0JBQ3hCLGFBQWEsRUFBRSxvQkFBb0I7Z0JBQ25DLFVBQVUsRUFBRSxVQUFVO2FBQ3pCLENBQUE7UUFDTCxDQUFDLENBQUE7UUFFRCxpQkFBWSxHQUFHLFVBQUMsSUFBSSxJQUFLLE9BQUEsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBbkQsQ0FBbUQsQ0FBQztRQUU3RTs7V0FFRztRQUVILFdBQU0sR0FBRyxjQUFNLE9BQUEsTUFBTSxDQUFDLFVBQVUsR0FBRyxHQUFHLEVBQXZCLENBQXVCLENBQUM7UUFFdkMsc0JBQWlCLEdBQUcsY0FBTSxPQUFBLEtBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksT0FBTyxFQUFyQyxDQUFxQyxDQUFDO1FBRWhFLGNBQVMsR0FBRyxVQUFDLEtBQUssSUFBSyxPQUFBLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBdEQsQ0FBc0QsQ0FBQztRQUU5RTs7V0FFRztRQUVILG9CQUFlLEdBQUcsVUFBQyxLQUFhLElBQUssT0FBQSxLQUFLLElBQUksS0FBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQWhDLENBQWdDLENBQUM7UUFFdEUsdUJBQWtCLEdBQUcsVUFBQyxLQUFhO1lBQy9CLElBQU0sS0FBSyxHQUFHLEtBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNaLEtBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNoQztRQUNMLENBQUMsQ0FBQTtRQUVELHFCQUFnQixHQUFHLGNBQWdCLE9BQUEsS0FBSSxDQUFDLE1BQU0sRUFBWCxDQUFXLENBQUM7UUFJL0M7Ozs7O1dBS0c7UUFDSCxrQkFBYSxHQUFHLFVBQUMsTUFBVyxFQUFFLElBQVksRUFBRSxPQUFlO1lBQ3ZELElBQUk7Z0JBQ0EsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNqQixJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO29CQUNwQyxPQUFPLENBQUMsSUFBSSxDQUNSLFFBQVEsR0FBRyxDQUFDO3dCQUNSLENBQUMsQ0FBQyxJQUFJO3dCQUNOLENBQUMsQ0FBQyxPQUFPLENBQ2hCLENBQUM7b0JBQ0YsUUFBUSxFQUFFLENBQUM7aUJBQ2Q7Z0JBQ0QsT0FBTyxPQUFPLENBQUM7YUFDbEI7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDWixPQUFPLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzlEO1FBRUwsQ0FBQyxDQUFDO1FBRUY7Ozs7OztXQU1HO1FBQ0gsaUNBQTRCLEdBQUcsVUFBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQWdCO1lBQWhCLDBCQUFBLEVBQUEsZ0JBQWdCO1lBQ3ZELElBQUk7Z0JBQ0EsSUFBSSxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDN0MsSUFBSSxLQUFLLElBQUksQ0FBQztvQkFBRSxPQUFPLElBQUksQ0FBQztnQkFDNUIsSUFBSSxTQUFTLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7Z0JBQ2xDLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdDLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtvQkFDbkIsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFNBQVMsQ0FBQztpQkFDbkQ7Z0JBQ0QsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO2FBQ3JDO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxtREFBbUQsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUM3RTtRQUNMLENBQUMsQ0FBQTtRQXNCRDs7O1dBR0c7UUFDSSxhQUFRLEdBQW1CO1lBQzlCLElBQUksRUFBRSxLQUFLO1lBQ1gsTUFBTSxFQUFFLEdBQUc7WUFDWCxRQUFRLEVBQUUsTUFBTTtZQUNoQixjQUFjLEVBQUUsS0FBSztTQUN4QixDQUFBO1FBRUQ7O1dBRUc7UUFDSSx1QkFBa0IsR0FBcUI7WUFDdEM7Z0JBQ0ksSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsTUFBTSxFQUFFLEdBQUc7Z0JBQ1gsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLGNBQWMsRUFBRSxLQUFLO2FBRXhCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsTUFBTSxFQUFFLEdBQUc7Z0JBQ1gsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLGNBQWMsRUFBRSxLQUFLO2FBQ3hCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsTUFBTSxFQUFFLEdBQUc7Z0JBQ1gsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLGNBQWMsRUFBRSxLQUFLO2FBQ3hCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsTUFBTSxFQUFFLEdBQUc7Z0JBQ1gsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLGNBQWMsRUFBRSxLQUFLO2FBQ3hCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLGNBQWMsRUFBRSxLQUFLO2FBQ3hCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsTUFBTSxFQUFFLElBQUk7Z0JBQ1osUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLGNBQWMsRUFBRSxLQUFLO2FBQ3hCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLGNBQWMsRUFBRSxJQUFJO2FBQ3ZCO1NBQ0osQ0FBQTtRQUVNLDBCQUFxQixHQUFHLFVBQUMsa0JBQW9DO1lBQ2hFLEtBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUNqRCxDQUFDLENBQUE7UUFHTDs7Ozs7V0FLRztRQUNJLDhCQUF5QixHQUFHLFVBQUMsZ0JBQThCLEVBQUUsVUFBMEI7O1lBQzFGLElBQUksWUFBWSxHQUFHLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxJQUFJLENBQUMsSUFBSSxJQUFJLGdCQUFnQixFQUE3QixDQUE2QixDQUFFLENBQUE7WUFDdkYsSUFBRyxZQUFZLEVBQUM7Z0JBQ1osWUFBWSxDQUFDLE1BQU0sR0FBRyxPQUFBLFVBQVUsMENBQUUsTUFBTSxLQUFLLFlBQVksQ0FBQyxNQUFNLENBQUE7Z0JBQ2hFLFlBQVksQ0FBQyxJQUFJLEdBQUcsT0FBQSxVQUFVLDBDQUFFLElBQUksS0FBSSxZQUFZLENBQUMsSUFBSSxDQUFBO2dCQUN6RCxZQUFZLENBQUMsUUFBUSxHQUFHLE9BQUEsVUFBVSwwQ0FBRSxRQUFRLEtBQUssWUFBWSxDQUFDLFFBQVEsQ0FBQTtnQkFDdEUsWUFBWSxDQUFDLGNBQWMsR0FBRyxPQUFBLFVBQVUsMENBQUUsY0FBYyxLQUFJLFlBQVksQ0FBQyxjQUFjLENBQUE7YUFDMUY7WUFDRCxvRUFBb0U7WUFDcEU7O2dCQUVJO1FBQ1IsQ0FBQyxDQUFBO1FBRUQ7Ozs7Ozs7V0FPRztRQUNJLGdCQUFXLEdBQUcsVUFBQyxnQkFBOEIsRUFBRSxVQUEyQjtZQUM3RSxLQUFJLENBQUMsUUFBUSxHQUFHLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBQSxFQUFFLElBQUksT0FBQSxFQUFFLENBQUMsSUFBSSxJQUFJLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxFQUF6QyxDQUF5QyxDQUFDLElBQUksS0FBSSxDQUFDLFFBQVEsQ0FBQTtZQUM5RyxVQUFVLElBQUksQ0FBQyxLQUFJLENBQUMsUUFBUSx5QkFBUSxLQUFJLENBQUMsUUFBUSxHQUFLLFVBQVUsQ0FBRSxDQUFDLENBQUE7WUFDbkUsT0FBTyxLQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3pCLENBQUMsQ0FBQztRQTBCSyx3QkFBbUIsR0FBRyxVQUFBLGFBQWE7WUFDdEMsSUFBSSxhQUFhLENBQUMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJO2dCQUMzQyxLQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBRWhFLElBQUksYUFBYSxDQUFDLE1BQU0sSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUk7Z0JBQ2xELEtBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBRXRFLElBQUksYUFBYSxDQUFDLFFBQVEsSUFBSSxhQUFhLENBQUMsWUFBWTtnQkFDcEQsS0FBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQTtZQUUxRSxPQUFPLGFBQWEsQ0FBQztRQUN6QixDQUFDLENBQUE7UUFDRDs7O1dBR0c7UUFDSyxtQkFBYyxHQUFvQixFQUFFLENBQUE7UUFFNUM7OztXQUdHO1FBQ0ksc0JBQWlCLEdBQUcsVUFBQyxPQUF1QjtZQUMvQyxLQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztRQUNsQyxDQUFDLENBQUE7UUFFTSxzQkFBaUIsR0FBRyxjQUFzQixPQUFBLEtBQUksQ0FBQyxjQUFjLEVBQW5CLENBQW1CLENBQUE7UUFFcEU7OztXQUdHO1FBQ0ssaUJBQVksR0FBaUI7WUFDakMsY0FBYyxFQUFFLEVBQUU7WUFDbEIsT0FBTyxFQUFFLENBQUMsVUFBVSxFQUFDLFlBQVksRUFBQyxVQUFVLEVBQUUsYUFBYSxDQUFDO1NBQy9ELENBQUE7UUFFTSxvQkFBZSxHQUFHLFVBQUUsWUFBeUI7WUFDaEQsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1lBQ25HLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUNsRixDQUFDLENBQUE7UUFFTSxvQkFBZSxHQUFHLGNBQU0sT0FBQSxLQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBekIsQ0FBeUIsQ0FBQTtRQUV4RDs7O1dBR0c7UUFDSyxjQUFTLEdBQWEsRUFBRSxDQUFBO1FBRWhDOzs7OztXQUtHO1FBQ0ksaUJBQVksR0FBRyxVQUFDLFNBQWtCLElBQUssT0FBQSxLQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBMUIsQ0FBMEIsQ0FBQztRQUVsRSxpQkFBWSxHQUFHLGNBQU0sT0FBQSxLQUFJLENBQUMsU0FBUyxFQUFkLENBQWMsQ0FBQztRQUczQzs7Ozs7Ozs7Ozs7Ozs7V0FjRztRQUNLLG9DQUErQixHQUFvQztZQUN2RSxJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxPQUFPO1lBQ2Isa0JBQWtCLEVBQUUsS0FBSztZQUN6QixZQUFZLEVBQUMsSUFBSTtTQUNwQixDQUFBO1FBRUQsdUNBQWtDLEdBQUcsVUFBQyxLQUFxQztZQUN2RSxLQUFJLENBQUMsK0JBQStCLHlCQUM3QixLQUFJLENBQUMsK0JBQStCLEdBQ3BDLEtBQUssQ0FDWCxDQUFBO1FBQ0wsQ0FBQyxDQUFBO1FBRUQsdUNBQWtDLEdBQUcsY0FBTSxPQUFBLEtBQUksQ0FBQywrQkFBK0IsRUFBcEMsQ0FBb0MsQ0FBQTtRQUcvRTs7O1dBR0c7UUFDSyxnQkFBVyxHQUFZLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUVoRTs7Ozs7O1dBTUc7UUFDSCxtQkFBYyxHQUFHLFVBQUMsV0FBNEI7WUFBNUIsNEJBQUEsRUFBQSxlQUFzQixLQUFLLENBQUM7WUFBSyxPQUFBLEtBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVztRQUE5QixDQUE4QixDQUFDO1FBRWxGLG1CQUFjLEdBQUcsY0FBTSxPQUFBLEtBQUksQ0FBQyxXQUFXLEVBQWhCLENBQWdCLENBQUM7SUEzYjhELENBQUM7SUFpTXZHOzs7Ozs7O09BT0c7SUFDSCwrQkFBVyxHQUFYLFVBQVksT0FBZSxFQUFFLFFBQWdCO1FBQ3pDLElBQUksTUFBTSxHQUFZLElBQUksQ0FBQztRQUUzQixJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN6QixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLEtBQUs7Z0JBQ2pDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFBRSxNQUFNLEdBQUcsS0FBSyxDQUFBO1lBQzlGLENBQUMsQ0FBQyxDQUFBO1NBQ0w7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBc0dEOzs7Ozs7Ozs7T0FTRztJQUNJLDZCQUFTLEdBQWhCLFVBQ0ksTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFXLEVBQ1gsTUFBVyxFQUNYLGFBQXFCO1FBRnJCLHVCQUFBLEVBQUEsV0FBVztRQUNYLHVCQUFBLEVBQUEsV0FBVztRQUNYLDhCQUFBLEVBQUEscUJBQXFCO1FBR3JCLE9BQU8sYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQWxJLENBQWtJLENBQUM7WUFDM0ssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLFFBQVEsRUFBcEUsQ0FBb0UsQ0FBQyxDQUFBO0lBRXBHLENBQUM7SUFBQSxDQUFDOztnQkE3VTRCLGdCQUFnQjtnQkFBa0IsTUFBTTtnREFBRyxNQUFNLFNBQUMsS0FBSzs7O0lBRjVFLFNBQVM7UUFIckIsVUFBVSxDQUFDO1lBQ1IsVUFBVSxFQUFFLE1BQU07U0FDckIsQ0FBQztRQUcyRSxXQUFBLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtPQUY3RSxTQUFTLENBK2JyQjtvQkEvY0Q7Q0ErY0MsQUEvYkQsSUErYkM7U0EvYlksU0FBUyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDdXJyZW5jeUNvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9jdXJyZW5jeUNvbmZpZyc7XG5pbXBvcnQgeyBEZWZhdWx0RmlsdGVyLCBGaWx0ZXJDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyJztcbmltcG9ydCB7IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvcGFyYW1zSW50ZXJmYWNlcy9wYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50JztcbnR5cGUgY3VycmVuY3lUeXBlID0gJ0VVUicgfCAnQVJHJyB8ICdVU0QnIHwgJ1BZRycgfCAnUEVOJyB8ICdTRUsnIHwgJ0NVU1RPTSc7XG50eXBlIHBvc2l0aW9uVHlwZSA9ICdMJyB8ICdSJztcbnR5cGUgY2hhbm5lbFR5cGVzID0gJ2IyYicgfCAnYjJiMmMnIHwgJ2IyYyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29uc3RhbnRzIHtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIEBJbmplY3QoJ2VudicpIHByaXZhdGUgZW52KSB7IH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgTE9DQUxFID0gJ0xPQ0FMRSc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBDSEFOTkVMID0gJ0NIQU5ORUwnO1xuICAgIHB1YmxpYyBzZWFyY2hWYWx1ZTogc3RyaW5nID0gJyc7XG5cbiAgICBwcml2YXRlIGNoYW5uZWxDb25maWdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigpO1xuICAgIHB1YmxpYyBjaGFubmVsQ29uZmlnJCA9IHRoaXMuY2hhbm5lbENvbmZpZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBwcml2YXRlIGNoYW5uZWxDb25maWdBUEkgPSAoY2hhbm5lbCkgPT4gJy9zaG9wLWFwaS8nICsgY2hhbm5lbCArICdjaGFubmVsJztcblxuICAgIHByaXZhdGUgYnJvd3NlcldpbmRvdzogb2JqZWN0ID0gd2luZG93IHx8IHt9O1xuICAgIHByaXZhdGUgYnJvd3NlcldpbmRvd0Vudjogb2JqZWN0ID0gdGhpcy5icm93c2VyV2luZG93WydfX2VudiddIHx8IHt9O1xuXG4gICAgLy8gICAgIHByaXZhdGUgdXJsQmFzZTogc3RyaW5nID0gJ2h0dHA6Ly90ZXN0aW5nLmJhY2tlbmQuZWFzeWNvbW1lcmNldGVjaC5jb20vJztcbiAgICBwcml2YXRlIHVybEJhc2U6IHN0cmluZyA9IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnYXBpVXJsJ10gPyB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ2FwaVVybCddIDogKHRoaXMuZW52LmFwaVVybCB8fCAnaHR0cDovL2JhY2tlbmQuZWFzeWNvbW1lcmNlLmRldnAvJyk7XG4gICAgcHJpdmF0ZSB1cmxBc3NldHM6IHN0cmluZyA9IHRoaXMuYnJvd3NlcldpbmRvd0VudlsndXJsQXNzZXRzJ10gPyB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ3VybEFzc2V0cyddIDogKHRoaXMuZW52LnVybEFzc2V0cyB8fCB0aGlzLnVybEJhc2UpO1xuICAgIHByaXZhdGUgdXJsRnJvbnRlbmQ6IHN0cmluZyA9IHRoaXMuYnJvd3NlcldpbmRvd0VudlsndXJsRnJvbnRlbmQnXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsndXJsRnJvbnRlbmQnXSA6ICh0aGlzLmVudi51cmxGcm9udGVuZCB8fCAnaHR0cHM6Ly9lbGRlbi5lYXN5Y29tbWVyY2V0ZWNoLmNvbS8nKTtcbiAgICBwcml2YXRlIGxvY2FsZTogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5MT0NBTEUpID8gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5MT0NBTEUpIDogdGhpcy5icm93c2VyV2luZG93RW52Wydsb2NhbGUnXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnbG9jYWxlJ10gOiAodGhpcy5lbnYubG9jYWxlIHx8ICdlc19BUicpO1xuICAgIHByaXZhdGUgY2hhbm5lbDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DSEFOTkVMKSA/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ0hBTk5FTCkgOiB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ2NoYW5uZWwnXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnY2hhbm5lbCddIDogKHRoaXMuZW52LmNoYW5uZWwgfHwgJ21pbm9yaXN0YScpXG4gICAgcHJpdmF0ZSBibG9ja3NDYWNoZVRpbWU6IHN0cmluZyA9IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnYmxvY2tzQ2FjaGVUaW1lJ10gPyB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ2Jsb2Nrc0NhY2hlVGltZSddIDogKHRoaXMuZW52LmJsb2Nrc0NhY2hlVGltZSB8fCBudWxsKTtcblxuICAgIHByaXZhdGUgbW9kYWxDb25maWcgPSB7IHRpdGxlOiAnRXhhbXBsZScsIGNsYXNzOiAnbW9kYWwteGwgbW9kYWwtZGlhbG9nLWNlbnRlcmVkJywga2V5Ym9hcmQ6IGZhbHNlIH07XG4gICAgc2V0TW9kYWxDb25maWcgPSAoY29uZmlnOiBhbnkpID0+IHRoaXMubW9kYWxDb25maWcgPSBjb25maWc7XG4gICAgZ2V0TW9kYWxDb25maWcgPSAoKSA9PiB0aGlzLm1vZGFsQ29uZmlnO1xuXG4gICAgcHJpdmF0ZSB2ZXJzaW9uOiBzdHJpbmcgPSAndjEnO1xuXG4gICAgcHJpdmF0ZSByb3V0ZXMgPSBbL15ob21lJC9nLCAvXihcXC8/KWNvbGxlY3Rpb24oXFwvPykoW1xcd1xcLlxcL1xcP10qKSQvZywgL15jb250YWN0JC9nXTtcblxuICAgIC8qIEdldCByaWQgb2YgdGhpcyBBU0FQISAqL1xuICAgIHByaXZhdGUgbWFzdGVyQ2hhbm5lbCA9IG51bGxcblxuICAgIHB1YmxpYyBnZXRNYXN0ZXJDaGFubmVsID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMubWFzdGVyQ2hhbm5lbCkgdGhpcy5tYXN0ZXJDaGFubmVsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ01BU1RFUl9DSEFOTkVMJylcbiAgICAgICAgcmV0dXJuIHRoaXMubWFzdGVyQ2hhbm5lbFxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRNYXN0ZXJDaGFubmVsID0gY2hhbm5lbCA9PiB7XG4gICAgICAgIHRoaXMubWFzdGVyQ2hhbm5lbCA9IGNoYW5uZWxcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ01BU1RFUl9DSEFOTkVMJywgY2hhbm5lbClcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUHJvZHVjdGlvbiA9ICgpID0+IHRoaXMuYnJvd3NlcldpbmRvd0VudlsncHJvZHVjdGlvbiddID8gdGhpcy5icm93c2VyV2luZG93RW52Wydwcm9kdWN0aW9uJ10gOiAodGhpcy5lbnYucHJvZHVjdGlvbiB8fCBmYWxzZSk7XG5cbiAgICBzZXRVcmxCYXNlID0gKHVybCkgPT4gdGhpcy51cmxCYXNlID0gdXJsO1xuICAgIHNldFVybEFzc2V0cyA9ICh1cmwpID0+IHRoaXMudXJsQXNzZXRzID0gdXJsO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG5leHQgRnVuY3Rpb24gdG8gZXhlY3V0ZVxuICAgICAqIEBwYXJhbSBwYXJhbXMgVGhhdCBmdW5jdGlvbiBuZWVkc1xuICAgICAqXG4gICAgICogRXhlY3V0ZSB0aGUgZnVuY3Rpb24gcGFzc2VkIGFzIHBhcmFtcywgaWYgdGhlIGZyb250ZW5kIGlzIGluIHByb2R1Y3Rpb24gbW9kZVxuICAgICAqL1xuICAgIG9ubHlJZlByb2R1Y3Rpb24gPSAobmV4dCwgcGFyYW1zKSA9PiB0aGlzLmlzUHJvZHVjdGlvbigpICYmIG5leHQocGFyYW1zKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEZXZ1ZWx2ZSBsYSB1cmwgYmFzZSBkb25kZSBzZSBhbG9qYW4gbG9zIGFyY2hpdm9zIG11bHRpbWVkaWFcbiAgICAgKiBAcGFyYW0gcG9zdE1lZGlhIGNhcnBldGEgZG9uZGUgc2UgZ3VhcmRhbiBsb3MgYXJjaGl2b3NcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIG1lZGlhVXJsID0gKHBvc3RNZWRpYT86c3RyaW5nKSA9PiB0aGlzLnVybEFzc2V0cyArICh0aGlzLnVybEFzc2V0cyA9PSB0aGlzLnVybEJhc2UgPyAnbWVkaWEvJyA6ICcnKSArICggcG9zdE1lZGlhID8gcG9zdE1lZGlhIDogXCJpbWFnZS9cIik7XG4gICAgbWVkaWFCYW5uZXJVcmwgPSAoKSA9PiB0aGlzLnVybEFzc2V0cyArICh0aGlzLnVybEFzc2V0cyA9PSB0aGlzLnVybEJhc2UgPyAnbWVkaWEvJyA6ICcnKSArIFwiYmFubmVyLWltYWdlL1wiO1xuICAgIG1lZGlhU3RvcmVVcmwgPSAoKSA9PiB0aGlzLnVybEFzc2V0cyArICh0aGlzLnVybEFzc2V0cyA9PSB0aGlzLnVybEJhc2UgPyAnbWVkaWEvJyA6ICcnKSArIFwic3RvcmUtaW1hZ2UvXCI7XG5cbiAgICBnZXRQcm9kdWN0c0xpc3RSb3V0ZSA9ICgpID0+ICdjb2xsZWN0aW9uLyc7XG5cbiAgICBnZXRTZWN0aW9uc1JvdXRlID0gKCkgPT4gJ3NlY3Rpb24vJztcblxuICAgIGdldFVybEJhc2UgPSAoKSA9PiB0aGlzLnVybEJhc2U7XG4gICAgZ2V0VXJsRnJvbnRlbmQgPSAoKSA9PiB0aGlzLnVybEZyb250ZW5kO1xuXG4gICAgZ2V0QmxvY2tzQ2FjaGVUaW1lID0gKCk6IG51bWJlciA9PiB0aGlzLmJsb2Nrc0NhY2hlVGltZSAmJiBwYXJzZUludCh0aGlzLmJsb2Nrc0NhY2hlVGltZSk7XG5cbiAgICAvLyBnZXRMb2NhbGUgPSAoKSA9PiB0aGlzLmxvY2FsZTtcbiAgICAvLyBzZXRMb2NhbGUgPSAobG9jYWxlKSA9PiB0aGlzLmxvY2FsZSA9IGxvY2FsZTtcblxuICAgIGdldExvY2FsZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuTE9DQUxFKSkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkxPQ0FMRSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVcbiAgICB9XG5cbiAgICBnZXRMb2NhbGVUcmFuc2xhdGUgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldExvY2FsZSgpLnNwbGl0KCdfJylbMF1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0TG9jYWxlID0gbG9jYWxlID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5MT0NBTEUsIGxvY2FsZSlcbiAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKGxvY2FsZS5zcGxpdCgnXycpWzBdKVxuICAgICAgICB0aGlzLmxvY2FsZSA9IGxvY2FsZVxuICAgIH1cblxuICAgIGdldENoYW5uZWwgPSAoKSA9PiB7XG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNIQU5ORUwpKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5uZWwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNIQU5ORUwpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbm5lbFxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRDaGFubmVsID0gY2hhbm5lbCA9PiB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuQ0hBTk5FTCwgY2hhbm5lbClcbiAgICAgICAgdGhpcy5jaGFubmVsID0gY2hhbm5lbFxuICAgIH1cblxuICAgIGdldFZlcnNpb24gPSAoKSA9PiB0aGlzLnZlcnNpb247XG5cbiAgICBsb2dpbkV4dHJhRGF0YSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsaWVudF9pZDogJ2RlbW9fY2xpZW50JyxcbiAgICAgICAgICAgIGNsaWVudF9zZWNyZXQ6ICdzZWNyZXRfZGVtb19jbGllbnQnLFxuICAgICAgICAgICAgZ3JhbnRfdHlwZTogJ3Bhc3N3b3JkJ1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNDb2xsZWN0aW9uID0gKHBhdGgpID0+ICgvXihcXC8/KWNvbGxlY3Rpb24oXFwvPykoW1xcd1xcLlxcL1xcP10qKSQvZykudGVzdChwYXRoKTtcblxuICAgIC8qKlxuICAgICAqIFV0aWxpdGllc1xuICAgICAqL1xuXG4gICAgbW9iaWxlID0gKCkgPT4gd2luZG93LmlubmVyV2lkdGggPCA3NTA7XG5cbiAgICBzdHJpY3RUeXBlQ2hhbm5lbCA9ICgpID0+IHRoaXMuZW52LnN0cmljdFR5cGVDaGFubmVsIHx8ICdiMmIyYyc7XG5cbiAgICB0b0RlY2ltYWwgPSAodG90YWwpID0+ICh0b3RhbCAtIE1hdGguZmxvb3IodG90YWwpID09IDApID8gdG90YWwgLyAxMDAgOiB0b3RhbDtcblxuICAgIC8qKlxuICAgICAqIEVsZW1lbnRvcyBwYXJhIG1hbmVqbyBkZSBsaXN0YSBkZSBydXRhcyByZXV0aWxpemFibGVzXG4gICAgICovXG5cbiAgICBhZGRSb3V0ZVRvUmV1c2UgPSAocm91dGU6IFJlZ0V4cCkgPT4gcm91dGUgJiYgdGhpcy5yb3V0ZXMucHVzaChyb3V0ZSk7XG5cbiAgICByZW1vdmVSb3V0ZVRvUmV1c2UgPSAocm91dGU6IFJlZ0V4cCkgPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucm91dGVzLmluZGV4T2Yocm91dGUpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFJvdXRlc1RvUmV1c2UgPSAoKTogUmVnRXhwW10gPT4gdGhpcy5yb3V0ZXM7XG5cblxuXG4gICAgLyoqXG4gICAgICogIEBwdWJsaWMgZWplbXBsbyBkZSB1c28gPGltZyAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb25zdHMuZ2V0UmF0aW5nU3Rhcihwcm9kdWN0LnJhdGluZywnYXNzZXRzL2ltYWdlcy9zdGFyLnBuZycsJ2Fzc2V0cy9pbWFnZXMvbm90U3Rhci5wbmcnKVwiIFtzcmNdPVwiaXRlbVwiPlxuICAgICAqICBAZGVzY3JpcHRpb24gZnVuY2lvbiBxdWUgZGFkbyB1biB2YWxvciBlbnRyZSAxIC4uIDUsIHkgc3Rhcjogbm90U3RhcjpcbiAgICAgKiAgICAgIChkZWJlbiBzZXIgZWwgcGF0aCBkZWwgYXJjaGl2byBsb2NhbCBhIGxhIGltcGxlbWVudGFjaW9uKS5cbiAgICAgKiAgICAgIHJldG9ybmEgdW4gYXJyZWdsbyBjb24gY29uIGxhIHZhbG9yYWNpb24gY29ycmVzcG9uZGllbnRlLlxuICAgICAqL1xuICAgIGdldFJhdGluZ1N0YXIgPSAocmF0aW5nOiBhbnksIHN0YXI6IFN0cmluZywgbm90U3RhcjogU3RyaW5nKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgdXJsU3RhciA9IFtdO1xuICAgICAgICAgICAgbGV0IGNhbnRTdGFyID0gTnVtYmVyKHJhdGluZykgfHwgMDtcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCA1OyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgdXJsU3Rhci5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBjYW50U3RhciA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc3RhclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBub3RTdGFyXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjYW50U3Rhci0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVybFN0YXI7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiZ2V0UmF0aW5nU3RhciBwcm9kdWpvIHVuIGVycm9yIC0+IFwiLCBlcnJvcik7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiAgQHB1YmxpYyBlamVtcGxvIGRlIHVzbyAoa2V5cHJlc3MpPVwiaW5wdXRWYWxpZGF0aW9uQnlFeHByZXNzaW9ucygkZXZlbnQsJ1swLTldezEsOX0nKVwiIGVuIGVsIERPTS5cbiAgICAgKiAgQGRlc2NyaXB0aW9uIGZ1bmNpb24gcXVlIGRhZG8gdW4gbWFuZWphbmRvciBkZSBldmVudG8sIHkgdW5hIGV4cHJlc2lvbiByZWd1bGFyIGVzdGEgZXNcbiAgICAgKiAgICAgICAgICBldmFsdWFkYSBzb2JyZSBsb3MgdmFsb3JlcyBxdWUgZWwgbWFuZWphZG9yIGRlIGV2ZW50b3Mgbm9zIGVudmlhLlxuICAgICAqICAgICAgICAgIEVuIGVsIGNhc28gZW4gZWwgcXVlIHNlIGVudmllIGVsIHBhcmFtZXRybyAnY29uZGl0aW9uJyBlc3RlIHB1ZWRlIHNlciBwYXJhXG4gICAgICogICAgICAgICAgYW51bGFyIGVsIGV2ZW50byBjb21vIGNvbmRpY2lvbiBhZGljaW9uYWwgYSBsYSBldmFsdWFjaW9uIGRlIGxhIGVudHJhZGEuXG4gICAgICovXG4gICAgaW5wdXRWYWxpZGF0aW9uQnlFeHByZXNzaW9ucyA9IChlLCBwYXRyb24sIGNvbmRpdGlvbiA9IG51bGwgKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgdGVjbGEgPSAoZG9jdW1lbnQpID8gZS5rZXlDb2RlIDogZS53aGljaDtcbiAgICAgICAgICAgIGlmICh0ZWNsYSA9PSA4KSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGxldCBwYXRyb25SZWcgPSBuZXcgUmVnRXhwKHBhdHJvbilcbiAgICAgICAgICAgIGxldCB0ZWNsYV9maW5hbCA9IFN0cmluZy5mcm9tQ2hhckNvZGUodGVjbGEpO1xuICAgICAgICAgICAgaWYgKGNvbmRpdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhdHJvblJlZy50ZXN0KHRlY2xhX2ZpbmFsKSAmJiBjb25kaXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGF0cm9uUmVnLnRlc3QodGVjbGFfZmluYWwpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiaW5wdXRWYWxpZGF0aW9uQnlFeHByZXNzaW9ucyBwcm9kdWpvIHVuIGVycm9yIC0+IFwiLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIG5lZWRsZXMgKGFndWphcykgb2JqZWN0IGNvbiBjbGF2ZXMgdmFsb3IgYSBmaWx0cmFyXG4gICAgICogQHBhcmFtIGhheXN0YWNrIChwYWphcikgb2JqZWN0byBlbiBlbCBxdWUgYnVzY2FyXG4gICAgICpcbiAgICAgKiBAZGVzY3JpcHRpb24gZnVuY2lvbiBxdWUgYnVzY2EgZW4gZWwgaGF5c3RhY2sgKHBhamFyKSB0b2RvcyBsb3Mgb2JqZXRvcyBxdWUgY29udGVudGFuXG4gICAgICogdG9kYXMgbGFzIGNsYXZlcyBkZSBsb3MgbmVlZGxlcyhhZ3VqYXMpIHF1ZSBjb250ZW5nYW4gZWwgbWlzbW8gdmFsb3JcbiAgICAgKi9cbiAgICBjb250YWluc0FsbChuZWVkbGVzOiBvYmplY3QsIGhheXN0YWNrOiBvYmplY3QpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAgICAgaWYgKCEhbmVlZGxlcyAmJiAhIWhheXN0YWNrKSB7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhuZWVkbGVzKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIShoYXlzdGFjay5oYXNPd25Qcm9wZXJ0eSh2YWx1ZVswXSkgJiYgaGF5c3RhY2tbdmFsdWVbMF1dID09IHZhbHVlWzFdKSkgcmVzdWx0ID0gZmFsc2VcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9waWVkYWQgcXVlIHNlIHV0aWxpemEgcGFyYSB0b21hciBjb21vIGNvbmZpZ3VyYWNpw7NuIHBhcmEgZWwgdGlwbyBkZSBtb25lZGEgcXVlIHNlIHV0aWxpemEgZW4gZWwgc2l0aW8uXG4gICAgICogRXN0b3MgdmFsb3JlcyBzb24gdXRpbGl6YWRvcyBwYXJhIGVsIHBpcGUgY3VycmVuY3lQcmljZVxuICAgICAqL1xuICAgIHB1YmxpYyBjdXJyZW5jeTogQ3VycmVuY3lDb25maWcgPSB7XG4gICAgICAgIGNvZGU6ICdBUkcnLFxuICAgICAgICBzeW1ib2w6ICckJyxcbiAgICAgICAgcG9zaXRpb246ICdMZWZ0JyxcbiAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXJyZWdsbyBkZSB2YWxvcmVzIHVzYWRvcyBwYXJhIGVsIHBpcGUgY3VycmVuY3lQcmljZVxuICAgICAqL1xuICAgIHB1YmxpYyBjdXJyZW5jeVR5cGVDb25maWc6IEN1cnJlbmN5Q29uZmlnW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29kZTogJ0VVUicsXG4gICAgICAgICAgICAgICAgc3ltYm9sOiAn4oKsJyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ1JpZ2h0JyxcbiAgICAgICAgICAgICAgICB3aXRob3V0RGVjaW1hbDogZmFsc2VcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2RlOiAnQVJHJyxcbiAgICAgICAgICAgICAgICBzeW1ib2w6ICckJyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgICAgIHdpdGhvdXREZWNpbWFsOiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2RlOiAnQVJTJyxcbiAgICAgICAgICAgICAgICBzeW1ib2w6ICckJyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgICAgIHdpdGhvdXREZWNpbWFsOiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2RlOiAnVVNEJyxcbiAgICAgICAgICAgICAgICBzeW1ib2w6ICckJyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgICAgIHdpdGhvdXREZWNpbWFsOiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2RlOiAnUFlHJyxcbiAgICAgICAgICAgICAgICBzeW1ib2w6ICdHcy4nLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnTGVmdCcsXG4gICAgICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvZGU6ICdQRU4nLFxuICAgICAgICAgICAgICAgIHN5bWJvbDogJ1MvJyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgICAgIHdpdGhvdXREZWNpbWFsOiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2RlOiAnU0VLJyxcbiAgICAgICAgICAgICAgICBzeW1ib2w6ICdTRUsnLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnUmlnaHQnLFxuICAgICAgICAgICAgICAgIHdpdGhvdXREZWNpbWFsOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICBdXG5cbiAgICAgICAgcHVibGljIHNldEN1cnJlbmN5VHlwZUNvbmZpZyA9IChjdXJyZW5jeVR5cGVDb25maWc6IEN1cnJlbmN5Q29uZmlnW10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lUeXBlQ29uZmlnID0gY3VycmVuY3lUeXBlQ29uZmlnO1xuICAgICAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWVtcGxhemEgbG9zIHZhbG9yZXMgZGUgdW5hIG1vbmVkYS5cbiAgICAgKiBAcGFyYW0gY3VycmVuY3lUeXBlRmluZCBUaXBvIGRlIGN1cnJlbmN5IHF1ZSBzZSBkZXNlYSBtb2RpZmljYXJcbiAgICAgKiBAcGFyYW0gY3VzdG9tVHlwZSBMb3MgbnVldm9zIHZhbG9yZXMuIFRvZGFzIGxhcyBrZXkgc29uIG9wY2lvbmFsZXNcbiAgICAgKiBAZXhhbXBsZSBjdXN0b21UeXBlID0geyBjb2RlOiAnQVJHJywgc3ltYm9sOiAnJCcsIHBvc2l0aW9uOiAnTGVmdCcgLCB3aXRob3V0RGVjaW1hbDogZmFsc2UgfVxuICAgICAqL1xuICAgIHB1YmxpYyByZXBsYWNlQ3VycmVuY3lUeXBlQ29uZmlnID0gKGN1cnJlbmN5VHlwZUZpbmQ6IGN1cnJlbmN5VHlwZSwgY3VzdG9tVHlwZTogQ3VycmVuY3lDb25maWcpID0+IHtcbiAgICAgICAgbGV0IGN1cnJlbmN5VHlwZSA9IHRoaXMuY3VycmVuY3lUeXBlQ29uZmlnLmZpbmQodHlwZSA9PiB0eXBlLmNvZGUgPT0gY3VycmVuY3lUeXBlRmluZCApXG4gICAgICAgIGlmKGN1cnJlbmN5VHlwZSl7XG4gICAgICAgICAgICBjdXJyZW5jeVR5cGUuc3ltYm9sID0gY3VzdG9tVHlwZT8uc3ltYm9sIHx8ICBjdXJyZW5jeVR5cGUuc3ltYm9sXG4gICAgICAgICAgICBjdXJyZW5jeVR5cGUuY29kZSA9IGN1c3RvbVR5cGU/LmNvZGUgfHwgY3VycmVuY3lUeXBlLmNvZGVcbiAgICAgICAgICAgIGN1cnJlbmN5VHlwZS5wb3NpdGlvbiA9IGN1c3RvbVR5cGU/LnBvc2l0aW9uIHx8ICBjdXJyZW5jeVR5cGUucG9zaXRpb25cbiAgICAgICAgICAgIGN1cnJlbmN5VHlwZS53aXRob3V0RGVjaW1hbCA9IGN1c3RvbVR5cGU/LndpdGhvdXREZWNpbWFsIHx8IGN1cnJlbmN5VHlwZS53aXRob3V0RGVjaW1hbFxuICAgICAgICB9XG4gICAgICAgIC8vUmV2ZWVyIGVuIGVsIGZ1dHVybyBzaSBzZSBlbXBpZXphbiBhIGFncmVnYXIgb3RybyB0aXBvcyBkZSBtb25lZGFzXG4gICAgICAgIC8qIGVsc2V7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbmN5VHlwZUNvbmZpZy5wdXNoKHsuLi5jdXN0b21UeXBlIH0pXG4gICAgICAgIH0gKi9cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjdXJyZW5jeVR5cGVGaW5kIERlZmluaXIgZWwgY29kZSBkZWwgdGlwbyBkZSBtb25lZGEgcXVlIHNlIHF1aWVyYSB1dGlsaXphci5cbiAgICAgKiBTaSBlbCB0aXBvIGVzIENVU1RPTSBzZSB0b21hbiBsb3MgdmFsb3JlcyBkZWwgc2VndW5kbyBwYXJhbWV0cm8gZG9uZGUgc2UgcHVlZGUgZGVmaW5pciBsYSBzaW1ib2xvZ8OtYSB5IHBvc2VzacOzbiBxdWUgc2UgcXVpZXJhLlxuICAgICAqIEBwYXJhbSBjdXN0b21UeXBlIEZvcm1hdG8gZGVsIHBhcsOhbWV0cm8gZWplbXBsbyB7IGNvZGU6ICdBUkcnLCBzeW1ib2w6ICckJywgcG9zaXRpb246ICdMJyAsIHdpdGhvdXREZWNpbWFsczogZmFsc2UgfSAsXG4gICAgICogdG9kYXMgbGFzIGtleSBzb24gb3BjaW9uYWxlcyB5IHBvciBkZWZlY3RvIHNlIHRvbWFuIGxvcyB2YWxvcmVzIGRlbCBlamVtcGxvLlxuICAgICAqIEByZXR1cm5zIHNlIHJldG9ybmEgbGEgY29uZmlndXJhY2nDs24gcXVlIHNlIHNldGVvIGEgbGEgcHJvcGllZGFkIGN1cnJlbmN5IGRlbCBzZXJ2aWNpby5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0Q3VycmVuY3kgPSAoY3VycmVuY3lUeXBlRmluZDogY3VycmVuY3lUeXBlLCBjdXN0b21UeXBlPzogQ3VycmVuY3lDb25maWcpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW5jeSA9IHRoaXMuY3VycmVuY3lUeXBlQ29uZmlnLmZpbmQoY3QgPT4gY3QuY29kZSA9PSBjdXJyZW5jeVR5cGVGaW5kLnRvVXBwZXJDYXNlKCkpIHx8IHRoaXMuY3VycmVuY3lcbiAgICAgICAgY3VzdG9tVHlwZSAmJiAodGhpcy5jdXJyZW5jeSA9IHsgLi4udGhpcy5jdXJyZW5jeSwgLi4uY3VzdG9tVHlwZSB9KVxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW5jeTtcbiAgICB9O1xuXG5cbiAgICAvKipcbiAgICAgKiBkZXZ1ZWx2ZSB0cnVlIHNpIGV4aXN0ZSBlbCBlbGVtZW50byBcInNlYXJjaFwiIGVuIGVsIGFycmF5IGRlIHBhcmFtZXRyb3MgXCJwYXJhbXNcIlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmFtcyBBcnJheSBkZSBwYXJhbWV0cm9zIGVudHJlIGxvcyBxdWUgYnVzY2FyXG4gICAgICogQHBhcmFtIHNlYXJjaGVkIEVsZW1lbnRvIHF1ZSBidXNjYXJcbiAgICAgKiBAcGFyYW0gcHJlZml4IHByZWZpam8gZGVsIHN0cmluZyBhIGJ1c2NhciAoZWplbXBsbzogXCJsaW5rX1wiKVxuICAgICAqIEBwYXJhbSBzdWZmaXggc3VmaWpvIGRlbCBzdHJpbmcgYSBidXNjYXIgKGVqZW1wbG86IFwibGlua19cIilcbiAgICAgKiBAcGFyYW0gY2FzZXNlbnNpdGl2ZSBkZXRlcm1pbmEgc2kgc2UgZXZhbHVhIGNvbiBzZW5zaWJpbGlkYWQgZW50cmUgbWF5dXNjdWxhIHkgbWludXNjdWxhXG4gICAgICogQHJldHVybnMgcmV0b3JuYSB0cnVlIG8gZmFsc2Ugc2kgc2UgZW5jb250cm8gbyBubyBlbCBwYXJhbWV0cm8gZW4gZWwgYXJyYXlcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzUGFyYW1zKFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIHNlYXJjaGVkLFxuICAgICAgICBwcmVmaXggPSAnJyxcbiAgICAgICAgc3VmZml4ID0gJycsXG4gICAgICAgIGNhc2VzZW5zaXRpdmUgPSBmYWxzZSk6IGJvb2xlYW4ge1xuXG5cbiAgICAgICAgcmV0dXJuIGNhc2VzZW5zaXRpdmUgPyBwYXJhbXMuZmluZChwYXJhbSA9PiAocGFyYW0uY29kZSkudG9Mb3dlckNhc2UoKSA9PSAocHJlZml4ICsgc2VhcmNoZWQgKyBzdWZmaXgpLnRvTG93ZXJDYXNlKCkgfHwgKHBhcmFtLmNvZGUpLnRvTG93ZXJDYXNlKCkgPT0gKHNlYXJjaGVkKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgOiBwYXJhbXMuZmluZChwYXJhbSA9PiBwYXJhbS5jb2RlID09IChwcmVmaXggKyBzZWFyY2hlZCArIHN1ZmZpeCkgfHwgcGFyYW0uY29kZSA9PSBzZWFyY2hlZClcblxuICAgIH07XG5cbiAgICBwdWJsaWMgbW9kaWZ5Q2hhbm5lbENvbmZpZyA9IGNoYW5uZWxDb25maWcgPT4ge1xuICAgICAgICBpZiAoY2hhbm5lbENvbmZpZy5jaGFubmVsIHx8IGNoYW5uZWxDb25maWcuY29kZSlcbiAgICAgICAgICAgIHRoaXMuc2V0Q2hhbm5lbChjaGFubmVsQ29uZmlnLmNoYW5uZWwgfHwgY2hhbm5lbENvbmZpZy5jb2RlKVxuXG4gICAgICAgIGlmIChjaGFubmVsQ29uZmlnLmxvY2FsZSB8fCBjaGFubmVsQ29uZmlnLmxvY2FsZXMuY29kZSlcbiAgICAgICAgICAgIHRoaXMuc2V0TG9jYWxlKGNoYW5uZWxDb25maWcubG9jYWxlIHx8IGNoYW5uZWxDb25maWcubG9jYWxlcy5jb2RlKVxuXG4gICAgICAgIGlmIChjaGFubmVsQ29uZmlnLmN1cnJlbmN5IHx8IGNoYW5uZWxDb25maWcuYmFzZUN1cnJlbmN5KVxuICAgICAgICAgICAgdGhpcy5zZXRDdXJyZW5jeShjaGFubmVsQ29uZmlnLmN1cnJlbmN5IHx8IGNoYW5uZWxDb25maWcuYmFzZUN1cnJlbmN5KVxuXG4gICAgICAgIHJldHVybiBjaGFubmVsQ29uZmlnO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2UgdXRpbGl6YSBwYXJhIGNvbmZpZ3VyYXIgbG9zIGZpbHRyb3MgcG9yIGRlZmVjdG8gcXVlIHNlIGFwbGljYXJhbiBlbiBsYSBzZWNjaW9uICdDb2xsZWN0aW9uJ1xuICAgICAqIGN1YW5kbyBzZSBpbmdyZXNhIGEgbGEgbWlzbWEuXG4gICAgICovXG4gICAgcHJpdmF0ZSBkZWZhdWx0RmlsdGVyczogRGVmYXVsdEZpbHRlcltdID0gW11cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZXR0ZWEgZWwgdmFsb3IgZGUgbGEgdmFyaWFibGUgZGVmYXVsRmlsdGVycy5cbiAgICAgKiBAcGFyYW0gZmlsdGVyc1xuICAgICAqL1xuICAgIHB1YmxpYyBzZXREZWZhdWx0RmlsdGVycyA9IChmaWx0ZXJzOkRlZmF1bHRGaWx0ZXJbXSkgPT4ge1xuICAgICAgICB0aGlzLmRlZmF1bHRGaWx0ZXJzID0gZmlsdGVycztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVmYXVsdEZpbHRlcnMgPSAoKTpEZWZhdWx0RmlsdGVyW10gPT4gdGhpcy5kZWZhdWx0RmlsdGVyc1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlIHV0aWxpemEgcGFyYSBjb25maWd1cmFyIHRhbnRvIGxvcyBmaWx0cm9zIHBvciBkZWZlY3RvcyBxdWUgeWEgc2VyYW4gYXBsaWNhZG9zLCBjb21vIHRhbWJpZW5cbiAgICAgKiBsb3MgZmlsdHJvcyBxdWUgc2UgbW9zdHJhcmFuIGVuIGxhIHNlY2Npb24gY29sbGVjdGlvbiwgc3Ugb3JkZW4sIGV0Yy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZpbHRlckNvbmZpZzogRmlsdGVyQ29uZmlnID0ge1xuICAgICAgICBkZWZhdWx0RmlsdGVyczogW10sXG4gICAgICAgIGZpbHRlcnM6IFsnY2F0ZWdvcnknLCdhdHRyaWJ1dGVzJywnZHluYW1pY3MnLCAncHJpY2VfcmFuZ2UnXVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRGaWx0ZXJDb25maWcgPSAoIGZpbHRlckNvbmZpZzpGaWx0ZXJDb25maWcgKSA9PiB7XG4gICAgICAgIGZpbHRlckNvbmZpZy5kZWZhdWx0RmlsdGVycyA/IHRoaXMuZmlsdGVyQ29uZmlnLmRlZmF1bHRGaWx0ZXJzID0gZmlsdGVyQ29uZmlnLmRlZmF1bHRGaWx0ZXJzIDogbnVsbFxuICAgICAgICBmaWx0ZXJDb25maWcuZmlsdGVycyA/IHRoaXMuZmlsdGVyQ29uZmlnLmZpbHRlcnMgPSBmaWx0ZXJDb25maWcuZmlsdGVycyA6IG51bGxcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsdGVyQ29uZmlnID0gKCkgPT4gdGhpcy5maWx0ZXJDb25maWcuZmlsdGVyc1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGNvbnRpZW5lIHVuIGFycmVnbG8gZGUgc3RyaW5nIGN1eW8gY29udGVuaWRvIHNvbiBsb3MgY29kaWdvcyBkZSBsb3MgcGFpc2VzLlxuICAgICAqIEBleGFtcGxlIFsnQVInLCdFUycsJ0dCJ11cbiAgICAgKi9cbiAgICBwcml2YXRlIGNvdW50cmllczogc3RyaW5nW10gPSBbXVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY291bnRyaWVzIGRlYmUgY29udGVuZXIgbG9zIGNvZGlnb3MgZGUgbG9zIHBhaXNlcyBxdWUgc2UgcXVpZXJlIG1vc3RyYXJcbiAgICAgKiBAZXhhbXBsZSBbJ0FSJywnRVMnLCdHQiddXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0Q291bnRyaWVzID0gKGNvdW50cmllczpzdHJpbmdbXSkgPT4gdGhpcy5jb3VudHJpZXMgPSBjb3VudHJpZXM7XG5cbiAgICBwdWJsaWMgZ2V0Q291bnRyaWVzID0gKCkgPT4gdGhpcy5jb3VudHJpZXM7XG5cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBlc3RhIHZhcmlhYmxlIHNlIHV0aWxpemEgcGFyYSBjb25maWd1cmFyIGxvcyBwYXJhbWV0cm9zIGN1YW5kbyBzZSBkZXNlYSBtb3N0cmFyXG4gICAgICogdmFyaWFudGVzIGVsIGxpc3RhZG8gZGUgcHJvZHVjdG9zLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfXR5cGUgdGlwbyBkZSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtzdHJpbmd9Y29kZSBjb2RpZ28gZGUgb3B0aW9uc1xuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn1kZWZhdWx0Rmlyc3RPcHRpb24gYHRydWVgIHRvbWEgZWwgcHJpbWVyIG9wdGlvbiBkZWwgcHJvZHVjdG8gZW4gZ2VuZXJhbFxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn1jaGVja0lmU3RvY2sgYHRydWVgIHNlIHJlYWxpemEgdW4gY2hlcXVlbyBkZSBzaSBsYSB2YXJpYW50ZSB0aWVuZSBzdG9jayBwYXJhIG1vc3RyYXJsYVxuICAgICAqIEBleGFtcGxlICBgYGBqYXZhc2NyaXB0XG4gICAgICoge1xuICAgICAgICB0eXBlOiAnY29sb3InLFxuICAgICAgICBjb2RlOiAnY29sb3InLFxuICAgICAgICBkZWZhdWx0Rmlyc3RPcHRpb246IGZhbHNlICxcbiAgICAgICAgY2hlY2tJZlN0b2NrOnRydWVcbiAgICAgICAgfSBgYGBcbiAgICAgKi9cbiAgICBwcml2YXRlIHBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQ6IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSB7XG4gICAgICAgIHR5cGU6ICdjb2xvcicsXG4gICAgICAgIGNvZGU6ICdjb2xvcicsXG4gICAgICAgIGRlZmF1bHRGaXJzdE9wdGlvbjogZmFsc2UgLFxuICAgICAgICBjaGVja0lmU3RvY2s6dHJ1ZVxuICAgIH1cblxuICAgIHNldFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSAodmFsdWU6UGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCkgPT4ge1xuICAgICAgICB0aGlzLnBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSB7XG4gICAgICAgICAgICAuLi50aGlzLnBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQsXG4gICAgICAgICAgICAuLi52YWx1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9ICgpID0+IHRoaXMucGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudFxuXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gc2UgdXRpbGl6YSBwYXJhIGNvbmZpZ3VyYXIgcXVlIGZpbHRyb3MgZGVsIHRpcG8gYFNvcnRGaWx0ZXJgIHNlIHF1aWVyZSBtb3N0cmFyIGVuIGxhIHZpc3RhLlxuICAgICAqIFNlIHVzYW4gbG9zIGNvZGlnbyBkZSBsb3MgZmlsdHJvcyBwYXJhIGluZGljYXIgY3VhbGVzIHNlIGRlYmVuIG1vc3RyYXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzb3J0RmlsdGVyczpzdHJpbmdbXSA9IFsncHJpY2UnLCAnb3JkZXItYWxwaCcsICdyZWNlbnQnXVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsdGVyc0NvZGUgYXJyZWdsbyBkZSBzdHJpbmdzIGNvbiBsb3MgY29kaWdvcyBkZSBsb3MgZmlsdHJvcy5cbiAgICAgKiBTaSBzZSBsZSBwYXNhIGVsIHBhcmFtZXRybyAqKmFsbCoqIGVzdGUgbW9zdHJhcmEgdG9kb3MuXG4gICAgICogQGV4YW1wbGUgcHJpY2UgfCBvcmRlci1hbHBoIHwgcmVjZW50IHwgdXBkYXRlIHwgYWxsXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBzZXRTb3J0RmlsdGVycyA9IChmaWx0ZXJzQ29kZTpzdHJpbmdbXT1bJ2FsbCddKSA9PiB0aGlzLnNvcnRGaWx0ZXJzID0gZmlsdGVyc0NvZGU7XG5cbiAgICBnZXRTb3J0RmlsdGVycyA9ICgpID0+IHRoaXMuc29ydEZpbHRlcnM7XG5cbn1cblxuIl19
|
|
434
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5jb25zdHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvY29yZS5jb25zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFtQixhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBWXREO0lBRUksbUJBQW1CLFNBQTJCLEVBQVUsTUFBYyxFQUF5QixHQUFHO1FBQWxHLGlCQUF1RztRQUFwRixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBeUIsUUFBRyxHQUFILEdBQUcsQ0FBQTtRQUVqRixXQUFNLEdBQUcsUUFBUSxDQUFDO1FBQ2xCLFlBQU8sR0FBRyxTQUFTLENBQUM7UUFDOUIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFeEIseUJBQW9CLEdBQUcsSUFBSSxhQUFhLEVBQU8sQ0FBQztRQUNqRCxtQkFBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV6RCxxQkFBZ0IsR0FBRyxVQUFDLE9BQU8sSUFBSyxPQUFBLFlBQVksR0FBRyxPQUFPLEdBQUcsU0FBUyxFQUFsQyxDQUFrQyxDQUFDO1FBRW5FLGtCQUFhLEdBQVcsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNyQyxxQkFBZ0IsR0FBVyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVyRSxnRkFBZ0Y7UUFDeEUsWUFBTyxHQUFXLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFB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LE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksUUFBUSxFQUFwRSxDQUFvRSxDQUFDLENBQUE7SUFFcEcsQ0FBQztJQUFBLENBQUM7SUEwSEYsd0NBQW9CLEdBQXBCLFVBQXFCLFdBQW1CO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLG9CQUFvQixDQUFDO0lBQ3hFLENBQUM7O2dCQXpjNkIsZ0JBQWdCO2dCQUFrQixNQUFNO2dEQUFHLE1BQU0sU0FBQyxLQUFLOzs7SUFGNUUsU0FBUztRQUhyQixVQUFVLENBQUM7WUFDUixVQUFVLEVBQUUsTUFBTTtTQUNyQixDQUFDO1FBRzJFLFdBQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO09BRjdFLFNBQVMsQ0E0Y3JCO29CQTVkRDtDQTRkQyxBQTVjRCxJQTRjQztTQTVjWSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEN1cnJlbmN5Q29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2N1cnJlbmN5Q29uZmlnJztcbmltcG9ydCB7IERlZmF1bHRGaWx0ZXIsIEZpbHRlckNvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9maWx0ZXInO1xuaW1wb3J0IHsgUGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wYXJhbXNJbnRlcmZhY2VzL3BhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQnO1xudHlwZSBjdXJyZW5jeVR5cGUgPSAnRVVSJyB8ICdBUkcnIHwgJ1VTRCcgfCAnUFlHJyB8ICdQRU4nIHwgJ1NFSycgfCAnQ1VTVE9NJztcbnR5cGUgcG9zaXRpb25UeXBlID0gJ0wnIHwgJ1InO1xudHlwZSBjaGFubmVsVHlwZXMgPSAnYjJiJyB8ICdiMmIyYycgfCAnYjJjJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb25zdGFudHMge1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgQEluamVjdCgnZW52JykgcHJpdmF0ZSBlbnYpIHsgfVxuXG4gICAgcHJpdmF0ZSByZWFkb25seSBMT0NBTEUgPSAnTE9DQUxFJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IENIQU5ORUwgPSAnQ0hBTk5FTCc7XG4gICAgcHVibGljIHNlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcblxuICAgIHByaXZhdGUgY2hhbm5lbENvbmZpZ1N1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KCk7XG4gICAgcHVibGljIGNoYW5uZWxDb25maWckID0gdGhpcy5jaGFubmVsQ29uZmlnU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHByaXZhdGUgY2hhbm5lbENvbmZpZ0FQSSA9IChjaGFubmVsKSA9PiAnL3Nob3AtYXBpLycgKyBjaGFubmVsICsgJ2NoYW5uZWwnO1xuXG4gICAgcHJpdmF0ZSBicm93c2VyV2luZG93OiBvYmplY3QgPSB3aW5kb3cgfHwge307XG4gICAgcHJpdmF0ZSBicm93c2VyV2luZG93RW52OiBvYmplY3QgPSB0aGlzLmJyb3dzZXJXaW5kb3dbJ19fZW52J10gfHwge307XG5cbiAgICAvLyAgICAgcHJpdmF0ZSB1cmxCYXNlOiBzdHJpbmcgPSAnaHR0cDovL3Rlc3RpbmcuYmFja2VuZC5lYXN5Y29tbWVyY2V0ZWNoLmNvbS8nO1xuICAgIHByaXZhdGUgdXJsQmFzZTogc3RyaW5nID0gdGhpcy5icm93c2VyV2luZG93RW52WydhcGlVcmwnXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnYXBpVXJsJ10gOiAodGhpcy5lbnYuYXBpVXJsIHx8ICdodHRwOi8vYmFja2VuZC5lYXN5Y29tbWVyY2UuZGV2cC8nKTtcbiAgICBwcml2YXRlIHVybEFzc2V0czogc3RyaW5nID0gdGhpcy5icm93c2VyV2luZG93RW52Wyd1cmxBc3NldHMnXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsndXJsQXNzZXRzJ10gOiAodGhpcy5lbnYudXJsQXNzZXRzIHx8IHRoaXMudXJsQmFzZSk7XG4gICAgcHJpdmF0ZSB1cmxGcm9udGVuZDogc3RyaW5nID0gdGhpcy5icm93c2VyV2luZG93RW52Wyd1cmxGcm9udGVuZCddID8gdGhpcy5icm93c2VyV2luZG93RW52Wyd1cmxGcm9udGVuZCddIDogKHRoaXMuZW52LnVybEZyb250ZW5kIHx8ICdodHRwczovL2VsZGVuLmVhc3ljb21tZXJjZXRlY2guY29tLycpO1xuICAgIHByaXZhdGUgbG9jYWxlOiBzdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkxPQ0FMRSkgPyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkxPQ0FMRSkgOiB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ2xvY2FsZSddID8gdGhpcy5icm93c2VyV2luZG93RW52Wydsb2NhbGUnXSA6ICh0aGlzLmVudi5sb2NhbGUgfHwgJ2VzX0FSJyk7XG4gICAgcHJpdmF0ZSBjaGFubmVsOiBzdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNIQU5ORUwpID8gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DSEFOTkVMKSA6IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnY2hhbm5lbCddID8gdGhpcy5icm93c2VyV2luZG93RW52WydjaGFubmVsJ10gOiAodGhpcy5lbnYuY2hhbm5lbCB8fCAnbWlub3Jpc3RhJylcbiAgICBwcml2YXRlIGJsb2Nrc0NhY2hlVGltZTogc3RyaW5nID0gdGhpcy5icm93c2VyV2luZG93RW52WydibG9ja3NDYWNoZVRpbWUnXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnYmxvY2tzQ2FjaGVUaW1lJ10gOiAodGhpcy5lbnYuYmxvY2tzQ2FjaGVUaW1lIHx8IG51bGwpO1xuXG4gICAgcHJpdmF0ZSBtb2RhbENvbmZpZyA9IHsgdGl0bGU6ICdFeGFtcGxlJywgY2xhc3M6ICdtb2RhbC14bCBtb2RhbC1kaWFsb2ctY2VudGVyZWQnLCBrZXlib2FyZDogZmFsc2UgfTtcbiAgICBzZXRNb2RhbENvbmZpZyA9IChjb25maWc6IGFueSkgPT4gdGhpcy5tb2RhbENvbmZpZyA9IGNvbmZpZztcbiAgICBnZXRNb2RhbENvbmZpZyA9ICgpID0+IHRoaXMubW9kYWxDb25maWc7XG5cbiAgICBwcml2YXRlIHZlcnNpb246IHN0cmluZyA9ICd2MSc7XG5cbiAgICBwcml2YXRlIHJvdXRlcyA9IFsvXmhvbWUkL2csIC9eKFxcLz8pY29sbGVjdGlvbihcXC8/KShbXFx3XFwuXFwvXFw/XSopJC9nLCAvXmNvbnRhY3QkL2ddO1xuXG4gICAgLyogR2V0IHJpZCBvZiB0aGlzIEFTQVAhICovXG4gICAgcHJpdmF0ZSBtYXN0ZXJDaGFubmVsID0gbnVsbFxuXG4gICAgcHVibGljIGdldE1hc3RlckNoYW5uZWwgPSAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5tYXN0ZXJDaGFubmVsKSB0aGlzLm1hc3RlckNoYW5uZWwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnTUFTVEVSX0NIQU5ORUwnKVxuICAgICAgICByZXR1cm4gdGhpcy5tYXN0ZXJDaGFubmVsXG4gICAgfVxuXG4gICAgcHVibGljIHNldE1hc3RlckNoYW5uZWwgPSBjaGFubmVsID0+IHtcbiAgICAgICAgdGhpcy5tYXN0ZXJDaGFubmVsID0gY2hhbm5lbFxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnTUFTVEVSX0NIQU5ORUwnLCBjaGFubmVsKVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNQcm9kdWN0aW9uID0gKCkgPT4gdGhpcy5icm93c2VyV2luZG93RW52Wydwcm9kdWN0aW9uJ10gPyB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ3Byb2R1Y3Rpb24nXSA6ICh0aGlzLmVudi5wcm9kdWN0aW9uIHx8IGZhbHNlKTtcblxuICAgIHNldFVybEJhc2UgPSAodXJsKSA9PiB0aGlzLnVybEJhc2UgPSB1cmw7XG4gICAgc2V0VXJsQXNzZXRzID0gKHVybCkgPT4gdGhpcy51cmxBc3NldHMgPSB1cmw7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbmV4dCBGdW5jdGlvbiB0byBleGVjdXRlXG4gICAgICogQHBhcmFtIHBhcmFtcyBUaGF0IGZ1bmN0aW9uIG5lZWRzXG4gICAgICpcbiAgICAgKiBFeGVjdXRlIHRoZSBmdW5jdGlvbiBwYXNzZWQgYXMgcGFyYW1zLCBpZiB0aGUgZnJvbnRlbmQgaXMgaW4gcHJvZHVjdGlvbiBtb2RlXG4gICAgICovXG4gICAgb25seUlmUHJvZHVjdGlvbiA9IChuZXh0LCBwYXJhbXMpID0+IHRoaXMuaXNQcm9kdWN0aW9uKCkgJiYgbmV4dChwYXJhbXMpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERldnVlbHZlIGxhIHVybCBiYXNlIGRvbmRlIHNlIGFsb2phbiBsb3MgYXJjaGl2b3MgbXVsdGltZWRpYVxuICAgICAqIEBwYXJhbSBwb3N0TWVkaWEgY2FycGV0YSBkb25kZSBzZSBndWFyZGFuIGxvcyBhcmNoaXZvc1xuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgbWVkaWFVcmwgPSAocG9zdE1lZGlhPzogc3RyaW5nKSA9PiB0aGlzLnVybEFzc2V0cyArICh0aGlzLnVybEFzc2V0cyA9PSB0aGlzLnVybEJhc2UgPyAnbWVkaWEvJyA6ICcnKSArIChwb3N0TWVkaWEgPyBwb3N0TWVkaWEgOiBcImltYWdlL1wiKTtcbiAgICBtZWRpYUJhbm5lclVybCA9ICgpID0+IHRoaXMudXJsQXNzZXRzICsgKHRoaXMudXJsQXNzZXRzID09IHRoaXMudXJsQmFzZSA/ICdtZWRpYS8nIDogJycpICsgXCJiYW5uZXItaW1hZ2UvXCI7XG4gICAgbWVkaWFTdG9yZVVybCA9ICgpID0+IHRoaXMudXJsQXNzZXRzICsgKHRoaXMudXJsQXNzZXRzID09IHRoaXMudXJsQmFzZSA/ICdtZWRpYS8nIDogJycpICsgXCJzdG9yZS1pbWFnZS9cIjtcblxuICAgIGdldFByb2R1Y3RzTGlzdFJvdXRlID0gKCkgPT4gJ2NvbGxlY3Rpb24vJztcblxuICAgIGdldFNlY3Rpb25zUm91dGUgPSAoKSA9PiAnc2VjdGlvbi8nO1xuXG4gICAgZ2V0VXJsQmFzZSA9ICgpID0+IHRoaXMudXJsQmFzZTtcbiAgICBnZXRVcmxGcm9udGVuZCA9ICgpID0+IHRoaXMudXJsRnJvbnRlbmQ7XG5cbiAgICBnZXRCbG9ja3NDYWNoZVRpbWUgPSAoKTogbnVtYmVyID0+IHRoaXMuYmxvY2tzQ2FjaGVUaW1lICYmIHBhcnNlSW50KHRoaXMuYmxvY2tzQ2FjaGVUaW1lKTtcblxuICAgIC8vIGdldExvY2FsZSA9ICgpID0+IHRoaXMubG9jYWxlO1xuICAgIC8vIHNldExvY2FsZSA9IChsb2NhbGUpID0+IHRoaXMubG9jYWxlID0gbG9jYWxlO1xuXG4gICAgZ2V0TG9jYWxlID0gKCkgPT4ge1xuICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5MT0NBTEUpKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuTE9DQUxFKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZVxuICAgIH1cblxuICAgIGdldExvY2FsZVRyYW5zbGF0ZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxlKCkuc3BsaXQoJ18nKVswXVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRMb2NhbGUgPSBsb2NhbGUgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkxPQ0FMRSwgbG9jYWxlKVxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS51c2UobG9jYWxlLnNwbGl0KCdfJylbMF0pXG4gICAgICAgIHRoaXMubG9jYWxlID0gbG9jYWxlXG4gICAgfVxuXG4gICAgZ2V0Q2hhbm5lbCA9ICgpID0+IHtcbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ0hBTk5FTCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbm5lbCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ0hBTk5FTClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jaGFubmVsXG4gICAgfVxuXG4gICAgcHVibGljIHNldENoYW5uZWwgPSBjaGFubmVsID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5DSEFOTkVMLCBjaGFubmVsKVxuICAgICAgICB0aGlzLmNoYW5uZWwgPSBjaGFubmVsXG4gICAgfVxuXG4gICAgZ2V0VmVyc2lvbiA9ICgpID0+IHRoaXMudmVyc2lvbjtcblxuICAgIGxvZ2luRXh0cmFEYXRhID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2xpZW50X2lkOiAnZGVtb19jbGllbnQnLFxuICAgICAgICAgICAgY2xpZW50X3NlY3JldDogJ3NlY3JldF9kZW1vX2NsaWVudCcsXG4gICAgICAgICAgICBncmFudF90eXBlOiAncGFzc3dvcmQnXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0NvbGxlY3Rpb24gPSAocGF0aCkgPT4gKC9eKFxcLz8pY29sbGVjdGlvbihcXC8/KShbXFx3XFwuXFwvXFw/XSopJC9nKS50ZXN0KHBhdGgpO1xuXG4gICAgLyoqXG4gICAgICogVXRpbGl0aWVzXG4gICAgICovXG5cbiAgICBtb2JpbGUgPSAoKSA9PiB3aW5kb3cuaW5uZXJXaWR0aCA8IDc1MDtcblxuICAgIHN0cmljdFR5cGVDaGFubmVsID0gKCkgPT4gdGhpcy5lbnYuc3RyaWN0VHlwZUNoYW5uZWwgfHwgJ2IyYjJjJztcblxuICAgIHRvRGVjaW1hbCA9ICh0b3RhbCkgPT4gKHRvdGFsIC0gTWF0aC5mbG9vcih0b3RhbCkgPT0gMCkgPyB0b3RhbCAvIDEwMCA6IHRvdGFsO1xuXG4gICAgLyoqXG4gICAgICogRWxlbWVudG9zIHBhcmEgbWFuZWpvIGRlIGxpc3RhIGRlIHJ1dGFzIHJldXRpbGl6YWJsZXNcbiAgICAgKi9cblxuICAgIGFkZFJvdXRlVG9SZXVzZSA9IChyb3V0ZTogUmVnRXhwKSA9PiByb3V0ZSAmJiB0aGlzLnJvdXRlcy5wdXNoKHJvdXRlKTtcblxuICAgIHJlbW92ZVJvdXRlVG9SZXVzZSA9IChyb3V0ZTogUmVnRXhwKSA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yb3V0ZXMuaW5kZXhPZihyb3V0ZSk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Um91dGVzVG9SZXVzZSA9ICgpOiBSZWdFeHBbXSA9PiB0aGlzLnJvdXRlcztcblxuXG5cbiAgICAvKipcbiAgICAgKiAgQHB1YmxpYyBlamVtcGxvIGRlIHVzbyA8aW1nICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbnN0cy5nZXRSYXRpbmdTdGFyKHByb2R1Y3QucmF0aW5nLCdhc3NldHMvaW1hZ2VzL3N0YXIucG5nJywnYXNzZXRzL2ltYWdlcy9ub3RTdGFyLnBuZycpXCIgW3NyY109XCJpdGVtXCI+XG4gICAgICogIEBkZXNjcmlwdGlvbiBmdW5jaW9uIHF1ZSBkYWRvIHVuIHZhbG9yIGVudHJlIDEgLi4gNSwgeSBzdGFyOiBub3RTdGFyOlxuICAgICAqICAgICAgKGRlYmVuIHNlciBlbCBwYXRoIGRlbCBhcmNoaXZvIGxvY2FsIGEgbGEgaW1wbGVtZW50YWNpb24pLlxuICAgICAqICAgICAgcmV0b3JuYSB1biBhcnJlZ2xvIGNvbiBjb24gbGEgdmFsb3JhY2lvbiBjb3JyZXNwb25kaWVudGUuXG4gICAgICovXG4gICAgZ2V0UmF0aW5nU3RhciA9IChyYXRpbmc6IGFueSwgc3RhcjogU3RyaW5nLCBub3RTdGFyOiBTdHJpbmcpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCB1cmxTdGFyID0gW107XG4gICAgICAgICAgICBsZXQgY2FudFN0YXIgPSBOdW1iZXIocmF0aW5nKSB8fCAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDU7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICB1cmxTdGFyLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIGNhbnRTdGFyID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG5vdFN0YXJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNhbnRTdGFyLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdXJsU3RhcjtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJnZXRSYXRpbmdTdGFyIHByb2R1am8gdW4gZXJyb3IgLT4gXCIsIGVycm9yKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqICBAcHVibGljIGVqZW1wbG8gZGUgdXNvIChrZXlwcmVzcyk9XCJpbnB1dFZhbGlkYXRpb25CeUV4cHJlc3Npb25zKCRldmVudCwnWzAtOV17MSw5fScpXCIgZW4gZWwgRE9NLlxuICAgICAqICBAZGVzY3JpcHRpb24gZnVuY2lvbiBxdWUgZGFkbyB1biBtYW5lamFuZG9yIGRlIGV2ZW50bywgeSB1bmEgZXhwcmVzaW9uIHJlZ3VsYXIgZXN0YSBlc1xuICAgICAqICAgICAgICAgIGV2YWx1YWRhIHNvYnJlIGxvcyB2YWxvcmVzIHF1ZSBlbCBtYW5lamFkb3IgZGUgZXZlbnRvcyBub3MgZW52aWEuXG4gICAgICogICAgICAgICAgRW4gZWwgY2FzbyBlbiBlbCBxdWUgc2UgZW52aWUgZWwgcGFyYW1ldHJvICdjb25kaXRpb24nIGVzdGUgcHVlZGUgc2VyIHBhcmFcbiAgICAgKiAgICAgICAgICBhbnVsYXIgZWwgZXZlbnRvIGNvbW8gY29uZGljaW9uIGFkaWNpb25hbCBhIGxhIGV2YWx1YWNpb24gZGUgbGEgZW50cmFkYS5cbiAgICAgKi9cbiAgICBpbnB1dFZhbGlkYXRpb25CeUV4cHJlc3Npb25zID0gKGUsIHBhdHJvbiwgY29uZGl0aW9uID0gbnVsbCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IHRlY2xhID0gKGRvY3VtZW50KSA/IGUua2V5Q29kZSA6IGUud2hpY2g7XG4gICAgICAgICAgICBpZiAodGVjbGEgPT0gOCkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBsZXQgcGF0cm9uUmVnID0gbmV3IFJlZ0V4cChwYXRyb24pXG4gICAgICAgICAgICBsZXQgdGVjbGFfZmluYWwgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHRlY2xhKTtcbiAgICAgICAgICAgIGlmIChjb25kaXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXRyb25SZWcudGVzdCh0ZWNsYV9maW5hbCkgJiYgY29uZGl0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhdHJvblJlZy50ZXN0KHRlY2xhX2ZpbmFsKVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcImlucHV0VmFsaWRhdGlvbkJ5RXhwcmVzc2lvbnMgcHJvZHVqbyB1biBlcnJvciAtPiBcIiwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZWVkbGVzIChhZ3VqYXMpIG9iamVjdCBjb24gY2xhdmVzIHZhbG9yIGEgZmlsdHJhclxuICAgICAqIEBwYXJhbSBoYXlzdGFjayAocGFqYXIpIG9iamVjdG8gZW4gZWwgcXVlIGJ1c2NhclxuICAgICAqXG4gICAgICogQGRlc2NyaXB0aW9uIGZ1bmNpb24gcXVlIGJ1c2NhIGVuIGVsIGhheXN0YWNrIChwYWphcikgdG9kb3MgbG9zIG9iamV0b3MgcXVlIGNvbnRlbnRhblxuICAgICAqIHRvZGFzIGxhcyBjbGF2ZXMgZGUgbG9zIG5lZWRsZXMoYWd1amFzKSBxdWUgY29udGVuZ2FuIGVsIG1pc21vIHZhbG9yXG4gICAgICovXG4gICAgY29udGFpbnNBbGwobmVlZGxlczogb2JqZWN0LCBoYXlzdGFjazogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgICAgIGlmICghIW5lZWRsZXMgJiYgISFoYXlzdGFjaykge1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMobmVlZGxlcykuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCEoaGF5c3RhY2suaGFzT3duUHJvcGVydHkodmFsdWVbMF0pICYmIGhheXN0YWNrW3ZhbHVlWzBdXSA9PSB2YWx1ZVsxXSkpIHJlc3VsdCA9IGZhbHNlXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvcGllZGFkIHF1ZSBzZSB1dGlsaXphIHBhcmEgdG9tYXIgY29tbyBjb25maWd1cmFjacOzbiBwYXJhIGVsIHRpcG8gZGUgbW9uZWRhIHF1ZSBzZSB1dGlsaXphIGVuIGVsIHNpdGlvLlxuICAgICAqIEVzdG9zIHZhbG9yZXMgc29uIHV0aWxpemFkb3MgcGFyYSBlbCBwaXBlIGN1cnJlbmN5UHJpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VycmVuY3k6IEN1cnJlbmN5Q29uZmlnID0ge1xuICAgICAgICBjb2RlOiAnQVJHJyxcbiAgICAgICAgc3ltYm9sOiAnJCcsXG4gICAgICAgIHBvc2l0aW9uOiAnTGVmdCcsXG4gICAgICAgIHdpdGhvdXREZWNpbWFsOiBmYWxzZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFycmVnbG8gZGUgdmFsb3JlcyB1c2Fkb3MgcGFyYSBlbCBwaXBlIGN1cnJlbmN5UHJpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VycmVuY3lUeXBlQ29uZmlnOiBDdXJyZW5jeUNvbmZpZ1tdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnRVVSJyxcbiAgICAgICAgICAgIHN5bWJvbDogJ+KCrCcsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ1JpZ2h0JyxcbiAgICAgICAgICAgIHdpdGhvdXREZWNpbWFsOiBmYWxzZVxuXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdBUkcnLFxuICAgICAgICAgICAgc3ltYm9sOiAnJCcsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdBUlMnLFxuICAgICAgICAgICAgc3ltYm9sOiAnJCcsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdVU0QnLFxuICAgICAgICAgICAgc3ltYm9sOiAnJCcsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdQWUcnLFxuICAgICAgICAgICAgc3ltYm9sOiAnR3MuJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnTGVmdCcsXG4gICAgICAgICAgICB3aXRob3V0RGVjaW1hbDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ1BFTicsXG4gICAgICAgICAgICBzeW1ib2w6ICdTLycsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdTRUsnLFxuICAgICAgICAgICAgc3ltYm9sOiAnU0VLJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnUmlnaHQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IHRydWVcbiAgICAgICAgfSxcbiAgICBdXG5cbiAgICBwdWJsaWMgc2V0Q3VycmVuY3lUeXBlQ29uZmlnID0gKGN1cnJlbmN5VHlwZUNvbmZpZzogQ3VycmVuY3lDb25maWdbXSkgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbmN5VHlwZUNvbmZpZyA9IGN1cnJlbmN5VHlwZUNvbmZpZztcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWVtcGxhemEgbG9zIHZhbG9yZXMgZGUgdW5hIG1vbmVkYS5cbiAgICAgKiBAcGFyYW0gY3VycmVuY3lUeXBlRmluZCBUaXBvIGRlIGN1cnJlbmN5IHF1ZSBzZSBkZXNlYSBtb2RpZmljYXJcbiAgICAgKiBAcGFyYW0gY3VzdG9tVHlwZSBMb3MgbnVldm9zIHZhbG9yZXMuIFRvZGFzIGxhcyBrZXkgc29uIG9wY2lvbmFsZXNcbiAgICAgKiBAZXhhbXBsZSBjdXN0b21UeXBlID0geyBjb2RlOiAnQVJHJywgc3ltYm9sOiAnJCcsIHBvc2l0aW9uOiAnTGVmdCcgLCB3aXRob3V0RGVjaW1hbDogZmFsc2UgfVxuICAgICAqL1xuICAgIHB1YmxpYyByZXBsYWNlQ3VycmVuY3lUeXBlQ29uZmlnID0gKGN1cnJlbmN5VHlwZUZpbmQ6IGN1cnJlbmN5VHlwZSwgY3VzdG9tVHlwZTogQ3VycmVuY3lDb25maWcpID0+IHtcbiAgICAgICAgbGV0IGN1cnJlbmN5VHlwZSA9IHRoaXMuY3VycmVuY3lUeXBlQ29uZmlnLmZpbmQodHlwZSA9PiB0eXBlLmNvZGUgPT0gY3VycmVuY3lUeXBlRmluZClcbiAgICAgICAgaWYgKGN1cnJlbmN5VHlwZSkge1xuICAgICAgICAgICAgY3VycmVuY3lUeXBlLnN5bWJvbCA9IGN1c3RvbVR5cGU/LnN5bWJvbCB8fCBjdXJyZW5jeVR5cGUuc3ltYm9sXG4gICAgICAgICAgICBjdXJyZW5jeVR5cGUuY29kZSA9IGN1c3RvbVR5cGU/LmNvZGUgfHwgY3VycmVuY3lUeXBlLmNvZGVcbiAgICAgICAgICAgIGN1cnJlbmN5VHlwZS5wb3NpdGlvbiA9IGN1c3RvbVR5cGU/LnBvc2l0aW9uIHx8IGN1cnJlbmN5VHlwZS5wb3NpdGlvblxuICAgICAgICAgICAgY3VycmVuY3lUeXBlLndpdGhvdXREZWNpbWFsID0gY3VzdG9tVHlwZT8ud2l0aG91dERlY2ltYWwgfHwgY3VycmVuY3lUeXBlLndpdGhvdXREZWNpbWFsXG4gICAgICAgIH1cbiAgICAgICAgLy9SZXZlZXIgZW4gZWwgZnV0dXJvIHNpIHNlIGVtcGllemFuIGEgYWdyZWdhciBvdHJvIHRpcG9zIGRlIG1vbmVkYXNcbiAgICAgICAgLyogZWxzZXtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lUeXBlQ29uZmlnLnB1c2goey4uLmN1c3RvbVR5cGUgfSlcbiAgICAgICAgfSAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIGN1cnJlbmN5VHlwZUZpbmQgRGVmaW5pciBlbCBjb2RlIGRlbCB0aXBvIGRlIG1vbmVkYSBxdWUgc2UgcXVpZXJhIHV0aWxpemFyLlxuICAgICAqIFNpIGVsIHRpcG8gZXMgQ1VTVE9NIHNlIHRvbWFuIGxvcyB2YWxvcmVzIGRlbCBzZWd1bmRvIHBhcmFtZXRybyBkb25kZSBzZSBwdWVkZSBkZWZpbmlyIGxhIHNpbWJvbG9nw61hIHkgcG9zZXNpw7NuIHF1ZSBzZSBxdWllcmEuXG4gICAgICogQHBhcmFtIGN1c3RvbVR5cGUgRm9ybWF0byBkZWwgcGFyw6FtZXRybyBlamVtcGxvIHsgY29kZTogJ0FSRycsIHN5bWJvbDogJyQnLCBwb3NpdGlvbjogJ0wnICwgd2l0aG91dERlY2ltYWxzOiBmYWxzZSB9ICxcbiAgICAgKiB0b2RhcyBsYXMga2V5IHNvbiBvcGNpb25hbGVzIHkgcG9yIGRlZmVjdG8gc2UgdG9tYW4gbG9zIHZhbG9yZXMgZGVsIGVqZW1wbG8uXG4gICAgICogQHJldHVybnMgc2UgcmV0b3JuYSBsYSBjb25maWd1cmFjacOzbiBxdWUgc2Ugc2V0ZW8gYSBsYSBwcm9waWVkYWQgY3VycmVuY3kgZGVsIHNlcnZpY2lvLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRDdXJyZW5jeSA9IChjdXJyZW5jeVR5cGVGaW5kOiBjdXJyZW5jeVR5cGUsIGN1c3RvbVR5cGU/OiBDdXJyZW5jeUNvbmZpZykgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbmN5ID0gdGhpcy5jdXJyZW5jeVR5cGVDb25maWcuZmluZChjdCA9PiBjdC5jb2RlID09IGN1cnJlbmN5VHlwZUZpbmQudG9VcHBlckNhc2UoKSkgfHwgdGhpcy5jdXJyZW5jeVxuICAgICAgICBjdXN0b21UeXBlICYmICh0aGlzLmN1cnJlbmN5ID0geyAuLi50aGlzLmN1cnJlbmN5LCAuLi5jdXN0b21UeXBlIH0pXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbmN5O1xuICAgIH07XG5cblxuICAgIC8qKlxuICAgICAqIGRldnVlbHZlIHRydWUgc2kgZXhpc3RlIGVsIGVsZW1lbnRvIFwic2VhcmNoXCIgZW4gZWwgYXJyYXkgZGUgcGFyYW1ldHJvcyBcInBhcmFtc1wiXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW1zIEFycmF5IGRlIHBhcmFtZXRyb3MgZW50cmUgbG9zIHF1ZSBidXNjYXJcbiAgICAgKiBAcGFyYW0gc2VhcmNoZWQgRWxlbWVudG8gcXVlIGJ1c2NhclxuICAgICAqIEBwYXJhbSBwcmVmaXggcHJlZmlqbyBkZWwgc3RyaW5nIGEgYnVzY2FyIChlamVtcGxvOiBcImxpbmtfXCIpXG4gICAgICogQHBhcmFtIHN1ZmZpeCBzdWZpam8gZGVsIHN0cmluZyBhIGJ1c2NhciAoZWplbXBsbzogXCJsaW5rX1wiKVxuICAgICAqIEBwYXJhbSBjYXNlc2Vuc2l0aXZlIGRldGVybWluYSBzaSBzZSBldmFsdWEgY29uIHNlbnNpYmlsaWRhZCBlbnRyZSBtYXl1c2N1bGEgeSBtaW51c2N1bGFcbiAgICAgKiBAcmV0dXJucyByZXRvcm5hIHRydWUgbyBmYWxzZSBzaSBzZSBlbmNvbnRybyBvIG5vIGVsIHBhcmFtZXRybyBlbiBlbCBhcnJheVxuICAgICAqL1xuICAgIHB1YmxpYyBoYXNQYXJhbXMoXG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgc2VhcmNoZWQsXG4gICAgICAgIHByZWZpeCA9ICcnLFxuICAgICAgICBzdWZmaXggPSAnJyxcbiAgICAgICAgY2FzZXNlbnNpdGl2ZSA9IGZhbHNlKTogYm9vbGVhbiB7XG5cblxuICAgICAgICByZXR1cm4gY2FzZXNlbnNpdGl2ZSA/IHBhcmFtcy5maW5kKHBhcmFtID0+IChwYXJhbS5jb2RlKS50b0xvd2VyQ2FzZSgpID09IChwcmVmaXggKyBzZWFyY2hlZCArIHN1ZmZpeCkudG9Mb3dlckNhc2UoKSB8fCAocGFyYW0uY29kZSkudG9Mb3dlckNhc2UoKSA9PSAoc2VhcmNoZWQpLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICA6IHBhcmFtcy5maW5kKHBhcmFtID0+IHBhcmFtLmNvZGUgPT0gKHByZWZpeCArIHNlYXJjaGVkICsgc3VmZml4KSB8fCBwYXJhbS5jb2RlID09IHNlYXJjaGVkKVxuXG4gICAgfTtcblxuICAgIHB1YmxpYyBtb2RpZnlDaGFubmVsQ29uZmlnID0gY2hhbm5lbENvbmZpZyA9PiB7XG4gICAgICAgIGlmIChjaGFubmVsQ29uZmlnLmNoYW5uZWwgfHwgY2hhbm5lbENvbmZpZy5jb2RlKVxuICAgICAgICAgICAgdGhpcy5zZXRDaGFubmVsKGNoYW5uZWxDb25maWcuY2hhbm5lbCB8fCBjaGFubmVsQ29uZmlnLmNvZGUpXG5cbiAgICAgICAgaWYgKGNoYW5uZWxDb25maWcubG9jYWxlIHx8IGNoYW5uZWxDb25maWcubG9jYWxlcy5jb2RlKVxuICAgICAgICAgICAgdGhpcy5zZXRMb2NhbGUoY2hhbm5lbENvbmZpZy5sb2NhbGUgfHwgY2hhbm5lbENvbmZpZy5sb2NhbGVzLmNvZGUpXG5cbiAgICAgICAgaWYgKGNoYW5uZWxDb25maWcuY3VycmVuY3kgfHwgY2hhbm5lbENvbmZpZy5iYXNlQ3VycmVuY3kpXG4gICAgICAgICAgICB0aGlzLnNldEN1cnJlbmN5KGNoYW5uZWxDb25maWcuY3VycmVuY3kgfHwgY2hhbm5lbENvbmZpZy5iYXNlQ3VycmVuY3kpXG5cbiAgICAgICAgcmV0dXJuIGNoYW5uZWxDb25maWc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZSB1dGlsaXphIHBhcmEgY29uZmlndXJhciBsb3MgZmlsdHJvcyBwb3IgZGVmZWN0byBxdWUgc2UgYXBsaWNhcmFuIGVuIGxhIHNlY2Npb24gJ0NvbGxlY3Rpb24nXG4gICAgICogY3VhbmRvIHNlIGluZ3Jlc2EgYSBsYSBtaXNtYS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGRlZmF1bHRGaWx0ZXJzOiBEZWZhdWx0RmlsdGVyW10gPSBbXVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNldHRlYSBlbCB2YWxvciBkZSBsYSB2YXJpYWJsZSBkZWZhdWxGaWx0ZXJzLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJzXG4gICAgICovXG4gICAgcHVibGljIHNldERlZmF1bHRGaWx0ZXJzID0gKGZpbHRlcnM6IERlZmF1bHRGaWx0ZXJbXSkgPT4ge1xuICAgICAgICB0aGlzLmRlZmF1bHRGaWx0ZXJzID0gZmlsdGVycztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVmYXVsdEZpbHRlcnMgPSAoKTogRGVmYXVsdEZpbHRlcltdID0+IHRoaXMuZGVmYXVsdEZpbHRlcnNcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZSB1dGlsaXphIHBhcmEgY29uZmlndXJhciB0YW50byBsb3MgZmlsdHJvcyBwb3IgZGVmZWN0b3MgcXVlIHlhIHNlcmFuIGFwbGljYWRvcywgY29tbyB0YW1iaWVuXG4gICAgICogbG9zIGZpbHRyb3MgcXVlIHNlIG1vc3RyYXJhbiBlbiBsYSBzZWNjaW9uIGNvbGxlY3Rpb24sIHN1IG9yZGVuLCBldGMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBmaWx0ZXJDb25maWc6IEZpbHRlckNvbmZpZyA9IHtcbiAgICAgICAgZGVmYXVsdEZpbHRlcnM6IFtdLFxuICAgICAgICBmaWx0ZXJzOiBbJ2NhdGVnb3J5JywgJ2F0dHJpYnV0ZXMnLCAnZHluYW1pY3MnLCAncHJpY2VfcmFuZ2UnXVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRGaWx0ZXJDb25maWcgPSAoZmlsdGVyQ29uZmlnOiBGaWx0ZXJDb25maWcpID0+IHtcbiAgICAgICAgZmlsdGVyQ29uZmlnLmRlZmF1bHRGaWx0ZXJzID8gdGhpcy5maWx0ZXJDb25maWcuZGVmYXVsdEZpbHRlcnMgPSBmaWx0ZXJDb25maWcuZGVmYXVsdEZpbHRlcnMgOiBudWxsXG4gICAgICAgIGZpbHRlckNvbmZpZy5maWx0ZXJzID8gdGhpcy5maWx0ZXJDb25maWcuZmlsdGVycyA9IGZpbHRlckNvbmZpZy5maWx0ZXJzIDogbnVsbFxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWx0ZXJDb25maWcgPSAoKSA9PiB0aGlzLmZpbHRlckNvbmZpZy5maWx0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gY29udGllbmUgdW4gYXJyZWdsbyBkZSBzdHJpbmcgY3V5byBjb250ZW5pZG8gc29uIGxvcyBjb2RpZ29zIGRlIGxvcyBwYWlzZXMuXG4gICAgICogQGV4YW1wbGUgWydBUicsJ0VTJywnR0InXVxuICAgICAqL1xuICAgIHByaXZhdGUgY291bnRyaWVzOiBzdHJpbmdbXSA9IFtdXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb3VudHJpZXMgZGViZSBjb250ZW5lciBsb3MgY29kaWdvcyBkZSBsb3MgcGFpc2VzIHF1ZSBzZSBxdWllcmUgbW9zdHJhclxuICAgICAqIEBleGFtcGxlIFsnQVInLCdFUycsJ0dCJ11cbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIHB1YmxpYyBzZXRDb3VudHJpZXMgPSAoY291bnRyaWVzOiBzdHJpbmdbXSkgPT4gdGhpcy5jb3VudHJpZXMgPSBjb3VudHJpZXM7XG5cbiAgICBwdWJsaWMgZ2V0Q291bnRyaWVzID0gKCkgPT4gdGhpcy5jb3VudHJpZXM7XG5cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBlc3RhIHZhcmlhYmxlIHNlIHV0aWxpemEgcGFyYSBjb25maWd1cmFyIGxvcyBwYXJhbWV0cm9zIGN1YW5kbyBzZSBkZXNlYSBtb3N0cmFyXG4gICAgICogdmFyaWFudGVzIGVsIGxpc3RhZG8gZGUgcHJvZHVjdG9zLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfXR5cGUgdGlwbyBkZSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtzdHJpbmd9Y29kZSBjb2RpZ28gZGUgb3B0aW9uc1xuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn1kZWZhdWx0Rmlyc3RPcHRpb24gYHRydWVgIHRvbWEgZWwgcHJpbWVyIG9wdGlvbiBkZWwgcHJvZHVjdG8gZW4gZ2VuZXJhbFxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn1jaGVja0lmU3RvY2sgYHRydWVgIHNlIHJlYWxpemEgdW4gY2hlcXVlbyBkZSBzaSBsYSB2YXJpYW50ZSB0aWVuZSBzdG9jayBwYXJhIG1vc3RyYXJsYVxuICAgICAqIEBleGFtcGxlICBgYGBqYXZhc2NyaXB0XG4gICAgICoge1xuICAgICAgICB0eXBlOiAnY29sb3InLFxuICAgICAgICBjb2RlOiAnY29sb3InLFxuICAgICAgICBkZWZhdWx0Rmlyc3RPcHRpb246IGZhbHNlICxcbiAgICAgICAgY2hlY2tJZlN0b2NrOnRydWVcbiAgICAgICAgfSBgYGBcbiAgICAgKi9cbiAgICBwcml2YXRlIHBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQ6IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSB7XG4gICAgICAgIHR5cGU6ICdjb2xvcicsXG4gICAgICAgIGNvZGU6ICdjb2xvcicsXG4gICAgICAgIGRlZmF1bHRGaXJzdE9wdGlvbjogZmFsc2UsXG4gICAgICAgIGNoZWNrSWZTdG9jazogdHJ1ZVxuICAgIH1cblxuICAgIHNldFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSAodmFsdWU6IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQpID0+IHtcbiAgICAgICAgdGhpcy5wYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0ge1xuICAgICAgICAgICAgLi4udGhpcy5wYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50LFxuICAgICAgICAgICAgLi4udmFsdWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSAoKSA9PiB0aGlzLnBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnRcblxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIHNlIHV0aWxpemEgcGFyYSBjb25maWd1cmFyIHF1ZSBmaWx0cm9zIGRlbCB0aXBvIGBTb3J0RmlsdGVyYCBzZSBxdWllcmUgbW9zdHJhciBlbiBsYSB2aXN0YS5cbiAgICAgKiBTZSB1c2FuIGxvcyBjb2RpZ28gZGUgbG9zIGZpbHRyb3MgcGFyYSBpbmRpY2FyIGN1YWxlcyBzZSBkZWJlbiBtb3N0cmFyLlxuICAgICAqL1xuICAgIHByaXZhdGUgc29ydEZpbHRlcnM6IHN0cmluZ1tdID0gWydwcmljZScsICdvcmRlci1hbHBoJywgJ3JlY2VudCddXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWx0ZXJzQ29kZSBhcnJlZ2xvIGRlIHN0cmluZ3MgY29uIGxvcyBjb2RpZ29zIGRlIGxvcyBmaWx0cm9zLlxuICAgICAqIFNpIHNlIGxlIHBhc2EgZWwgcGFyYW1ldHJvICoqYWxsKiogZXN0ZSBtb3N0cmFyYSB0b2Rvcy5cbiAgICAgKiBAZXhhbXBsZSBwcmljZSB8IG9yZGVyLWFscGggfCByZWNlbnQgfCB1cGRhdGUgfCBhbGxcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIHNldFNvcnRGaWx0ZXJzID0gKGZpbHRlcnNDb2RlOiBzdHJpbmdbXSA9IFsnYWxsJ10pID0+IHRoaXMuc29ydEZpbHRlcnMgPSBmaWx0ZXJzQ29kZTtcblxuICAgIGdldFNvcnRGaWx0ZXJzID0gKCkgPT4gdGhpcy5zb3J0RmlsdGVycztcblxuICAgIHByaXZhdGUgcG9zdGFsQ29kZVBhdHRlcm5zOiB7IFtrZXk6IHN0cmluZ106IFJlZ0V4cCB9ID0ge1xuICAgICAgICAnQVInOiAvXlswLTldezR9JC8sICAvLyBBcmdlbnRpbmEgKEVqOiBDMTAwMUFCQyBvIDEwMDEpXG4gICAgICAgICdVWSc6IC9eWzAtOV17NX0kLywgICAgICAgICAgICAgICAgICAgLy8gVXJ1Z3VheSAoRWo6IDExMDAwKVxuICAgICAgICAnR0InOiAvXltBLVpdezEsMn1bMC05XVtBLVowLTldP1xccz9bMC05XVtBLVpdezJ9JC8sICAvLyBSZWlubyBVbmlkbyAoRWo6IFNXMUEgMUFBKVxuICAgICAgICAnRVMnOiAvXig/OjBbMS05XXxbMS00XVxcZHw1WzAtMl0pXFxkezN9JC8sICAvLyBFc3Bhw7FhIChFajogMjgwMDEpXG4gICAgICAgICdCUic6IC9eWzAtOV17NX0tWzAtOV17M30kLywgICAgICAgICAgIC8vIEJyYXNpbCAoRWo6IDAxMDAwLTAwMClcbiAgICAgICAgJ0ZSJzogL15bMC05XXs1fSQvLCAgICAgICAgICAgICAgICAgICAgLy8gRnJhbmNpYSAoRWo6IDc1MDA4KVxuICAgICAgICAnUFQnOiAvXlswLTldezR9LVswLTldezN9JC8sICAgICAgIC8vIFBvcnR1Z2FsIChFajogMTAwMC0wMDEpXG4gICAgfTtcblxuICAgIGdldFBvc3RhbENvZGVQYXR0ZXJuKGNvdW50cnlDb2RlOiBzdHJpbmcpOiBSZWdFeHAge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3N0YWxDb2RlUGF0dGVybnNbY291bnRyeUNvZGVdIHx8IC9eW0EtWmEtejAtOVxcc1xcLV0rJC87XG4gICAgfVxufVxuXG4iXX0=
|
|
@@ -114,7 +114,7 @@ var DataFormEcComponent = /** @class */ (function (_super) {
|
|
|
114
114
|
_this.viewDataFacturacion = true;
|
|
115
115
|
_this.params = {};
|
|
116
116
|
_this.selectAddres = false;
|
|
117
|
-
_this.postalCodePattern = '^[
|
|
117
|
+
_this.postalCodePattern = '^[A-Z]?[0-9]{4}[A-Z]{0,3}$';
|
|
118
118
|
/**
|
|
119
119
|
* @description filtra los paises de acuerdo al a los codigos retornados en la funcion getCountries.
|
|
120
120
|
* Casos de usos: Si getCountries es vacio, retorna el arreglo que ingresa por parametro.
|
|
@@ -164,6 +164,10 @@ var DataFormEcComponent = /** @class */ (function (_super) {
|
|
|
164
164
|
_this.checkoutForm.controls['countryCode'].setValue(value == 'null' ? null : value);
|
|
165
165
|
_this.checkoutForm.controls['provinceCode'].setValue(null);
|
|
166
166
|
_this.checkoutForm.controls['documentType'].setValue('');
|
|
167
|
+
var selectedCountry = _this.countriesSubject.value.find(function (country) { return country.code == value; });
|
|
168
|
+
if (selectedCountry) {
|
|
169
|
+
_this.updatePostalCodeValidation(selectedCountry.code);
|
|
170
|
+
}
|
|
167
171
|
//Provinces
|
|
168
172
|
var provinces = value && value != 'null' ?
|
|
169
173
|
_this.countriesSubject.value.find(function (country) { return country.code == value; }).provinces
|
|
@@ -342,12 +346,12 @@ var DataFormEcComponent = /** @class */ (function (_super) {
|
|
|
342
346
|
_this.getLabelNotesParam = function () { return _this.hasParams(_this.params, 'label_notes_' + _this.consts.getChannel() + '_' + _this.consts.getLocale().split('_')[0]); };
|
|
343
347
|
_this.getParamByChannelAndLanguage = function (nameParam) { return _this.hasParams(_this.params, nameParam + _this.consts.getChannel() + '_' + _this.consts.getLocale().split('_')[0]); };
|
|
344
348
|
_this.ecOnConstruct();
|
|
345
|
-
_this.checkoutForm = _this.fb.group(__assign(__assign({}, _this.addressingService.getTypeForm().configForm.formAddres), { postcode: ['', [Validators.required
|
|
349
|
+
_this.checkoutForm = _this.fb.group(__assign(__assign({}, _this.addressingService.getTypeForm().configForm.formAddres), { postcode: ['', [Validators.required]] // Se agrega para que sólo acepte códigos postales mayores que cero
|
|
346
350
|
}));
|
|
347
351
|
_this.checkoutForm.statusChanges
|
|
348
352
|
.pipe(filter(function () { _this.onFormChange(); return _this.checkoutForm.valid; }))
|
|
349
353
|
.subscribe(function () { return _this.onFormValid(); });
|
|
350
|
-
_this.checkoutFormFacturacion = _this.fb.group(__assign(__assign({}, _this.addressingService.getTypeForm().configForm.formBilling), { postcode: ['', [Validators.required
|
|
354
|
+
_this.checkoutFormFacturacion = _this.fb.group(__assign(__assign({}, _this.addressingService.getTypeForm().configForm.formBilling), { postcode: ['', [Validators.required]] // Se agrega para que sólo acepte códigos postales mayores que cero
|
|
351
355
|
}));
|
|
352
356
|
_this.checkoutFormFacturacion.statusChanges
|
|
353
357
|
.pipe(filter(function () { _this.onFormChange(); return _this.checkoutFormFacturacion.valid; }))
|
|
@@ -367,15 +371,27 @@ var DataFormEcComponent = /** @class */ (function (_super) {
|
|
|
367
371
|
_this.countriesSubject.next(countries);
|
|
368
372
|
_this.countriesFacturacionSubject.next(countries);
|
|
369
373
|
});
|
|
370
|
-
(this.addressingService.modeSelectAddress
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
_this.addressBook
|
|
374
|
+
if (this.addressingService.modeSelectAddress === 'LOAD_ADDRESS_AND_SELECTION' ||
|
|
375
|
+
this.addressingService.modeSelectAddress === 'ONLY_ADDRESS_SELECTION') {
|
|
376
|
+
this.addressingService.getAddressBook().then(function (res) {
|
|
377
|
+
_this.addressBook = res || null;
|
|
378
|
+
if (_this.addressBook) {
|
|
379
|
+
var selectedAddress = _this.addressBook.find(function (address) { return address.selected; });
|
|
380
|
+
if (selectedAddress) {
|
|
381
|
+
_this.checkoutForm.controls['countryCode'].setValue(selectedAddress.countryCode);
|
|
382
|
+
_this.updatePostalCodeValidation(selectedAddress.countryCode);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
_this.setMode('carga');
|
|
387
|
+
}
|
|
374
388
|
});
|
|
389
|
+
}
|
|
375
390
|
this.countries$.subscribe(function (res) {
|
|
376
391
|
var _a, _b, _c, _d;
|
|
377
392
|
if (res && res.length > 0) {
|
|
378
393
|
_this.checkoutForm.controls['countryCode'].setValue(res[0].code);
|
|
394
|
+
_this.updatePostalCodeValidation(res[0].code);
|
|
379
395
|
// Provincia
|
|
380
396
|
_this.checkoutForm.controls['provinceCode'].setValue((_a = res[0]) === null || _a === void 0 ? void 0 : _a.provinces[0].code);
|
|
381
397
|
_this.provincesSubject.next((_b = res[0]) === null || _b === void 0 ? void 0 : _b.provinces);
|
|
@@ -402,6 +418,14 @@ var DataFormEcComponent = /** @class */ (function (_super) {
|
|
|
402
418
|
DataFormEcComponent.prototype.openModal = function (template) {
|
|
403
419
|
this.modalRef = this.modalService.show(template, { class: 'modal-lg ', keyboard: false, backdrop: 'static' });
|
|
404
420
|
};
|
|
421
|
+
DataFormEcComponent.prototype.updatePostalCodeValidation = function (countryCode) {
|
|
422
|
+
var postalCodePattern = this.consts.getPostalCodePattern(countryCode) || '.*';
|
|
423
|
+
this.checkoutForm.controls['postcode'].setValidators([
|
|
424
|
+
Validators.required,
|
|
425
|
+
Validators.pattern(postalCodePattern)
|
|
426
|
+
]);
|
|
427
|
+
this.checkoutForm.controls['postcode'].updateValueAndValidity();
|
|
428
|
+
};
|
|
405
429
|
DataFormEcComponent.prototype.prueba = function (x) {
|
|
406
430
|
console.log(x);
|
|
407
431
|
};
|
|
@@ -436,4 +460,4 @@ var DataFormEcComponent = /** @class */ (function (_super) {
|
|
|
436
460
|
return DataFormEcComponent;
|
|
437
461
|
}(ComponentHelper));
|
|
438
462
|
export { DataFormEcComponent };
|
|
439
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWZvcm0tZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2VjLWNvbXBvbmVudC9jaGVja291dC1lYy9kYXRhZm9ybS1lYy9kYXRhZm9ybS1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBd0IsS0FBSyxFQUFrQyxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTywwQ0FBMEMsQ0FBQztBQVFqRjtJQUF5Qyx1Q0FBZTtJQXVDcEQsNkJBQW1CLFdBQXdCLEVBQ2hDLEVBQWUsRUFDZixL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SUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7SUFDekIsQ0FBQztJQXVHRCx1Q0FBUyxHQUFULFVBQVUsUUFBMEI7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbEgsQ0FBQztJQTBERCxvQ0FBTSxHQUFOLFVBQU8sQ0FBQztRQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQzs7Z0JBcFMrQixXQUFXO2dCQUM1QixXQUFXO2dCQUNSLFlBQVk7Z0JBQ0EsaUJBQWlCO2dCQUN2QixXQUFXO2dCQUNULGNBQWM7Z0JBQ2QsaUJBQWlCO2dCQUN4QixTQUFTO2dCQUNGLG9CQUFvQjs7SUE3Q3JDO1FBQVIsS0FBSyxFQUFFO3dEQUFTO0lBQ1I7UUFBUixLQUFLLEVBQUU7MERBQTJCO0lBQzFCO1FBQVIsS0FBSyxFQUFFO3lEQUFtQjtJQUpsQixtQkFBbUI7UUFOL0IsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQiw2NmdEQUF5QztZQUV6QyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7O1NBQzlCLENBQUM7T0FDVyxtQkFBbUIsQ0F3Vi9CO0lBQUQsMEJBQUM7Q0FBQSxBQXhWRCxDQUF5QyxlQUFlLEdBd1Z2RDtTQXhWWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXInO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRkcmVzc2luZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jaGVja291dC9hZGRyZXNzaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwvYnMtbW9kYWwtcmVmLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgYWRkIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9jaHJvbm9zJztcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFyYW1ldGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IENoYW5uZWxDb25maWdTZXJ2aWNlIH0gZnJvbSAgJy4uLy4uLy4uL3NlcnZpY2VzL2NoYW5uZWwtY29uZmlnLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1kYXRhZm9ybS1lYycsXG4gICAgdGVtcGxhdGVVcmw6ICdkYXRhZm9ybS1lYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ2RhdGFmb3JtLWVjLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbQnNNb2RhbFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFGb3JtRWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQElucHV0KCkgc3RlcF9pZDtcbiAgICBASW5wdXQoKSBpc0xhc3RPbmU6Ym9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIG5leHRTdGVwOkZ1bmN0aW9uO1xuXG4gICAgcHJvdGVjdGVkIGNvdW50cmllc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJvdGVjdGVkIHByb3ZpbmNlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJvdGVjdGVkIGRvY3VtZW50VHlwZXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuICAgIHByb3RlY3RlZCBjb3VudHJpZXNGYWN0dXJhY2lvblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJvdGVjdGVkIHByb3ZpbmNlc0ZhY3R1cmFjaW9uU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgICBwcm90ZWN0ZWQgZG9jdW1lbnRUeXBlc0ZhY3R1cmFjaW9uU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcblxuICAgIHB1YmxpYyBjb3VudHJpZXMkID0gdGhpcy5jb3VudHJpZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBwcm92aW5jZXMkID0gdGhpcy5wcm92aW5jZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBkb2N1bWVudFR5cGVzJCA9IHRoaXMuZG9jdW1lbnRUeXBlc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGNvdW50cmllc0ZhY3R1cmFjaW9uJCA9IHRoaXMuY291bnRyaWVzRmFjdHVyYWNpb25TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBwcm92aW5jZXNGYWN0dXJhY2lvbiQgPSB0aGlzLnByb3ZpbmNlc0ZhY3R1cmFjaW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgZG9jdW1lbnRUeXBlc0ZhY3R1cmFjaW9uJCA9IHRoaXMuZG9jdW1lbnRUeXBlc0ZhY3R1cmFjaW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHB1YmxpYyByZXF1aXJlX2xvZ2luID0gZmFsc2U7XG4gICAgcHVibGljIGNoZWNrb3V0Rm9ybTogRm9ybUdyb3VwO1xuICAgIHB1YmxpYyBjaGVja291dEZvcm1GYWN0dXJhY2lvbjogRm9ybUdyb3VwO1xuICAgIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG4gICAgcHVibGljIGZvcm1fcmVhZHkgPSBmYWxzZTtcbiAgICBwdWJsaWMgYWxscmVhZHlfZGF0YSA9IGZhbHNlO1xuICAgIHB1YmxpYyBhZGRyZXNzQm9vayA9IFtdO1xuICAgIHB1YmxpYyBhZGRyZXNzQm9va1NlbGVjdGVkID0geyBpZDogMCwgbm90ZXM6IFwiXCIgfVxuICAgIHB1YmxpYyBmaW5pc2g6Ym9vbGVhbiA9IGZhbHNlOyAvL0VzdGEgdmFyaWFibGUgc2UgdXNhIHBhcmEgbW9zdHJhciBlbCBib3RvbiBkZSBmaW5hbGl6YXIuXG5cbiAgICBwdWJsaWMgdmFsaWRhZG8gPSBmYWxzZTtcbiAgICBwdWJsaWMgdmlld0RhdGFGYWN0dXJhY2lvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBwdWJsaWMgbW9kYWxSZWY6IEJzTW9kYWxSZWYgfCBudWxsO1xuICAgIHB1YmxpYyBwYXJhbXM6IGFueSA9IHt9O1xuICAgIHB1YmxpYyBzZWxlY3RBZGRyZXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgcG9zdGFsQ29kZVBhdHRlcm4gPSAnXlswLTldWzAtOV0qJCc7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZmI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwdWJsaWMgdG9hc3Q6IFRvYXN0U2VydmljZSxcbiAgICAgICAgcHVibGljIGFkZHJlc3NpbmdTZXJ2aWNlOiBBZGRyZXNzaW5nU2VydmljZSxcbiAgICAgICAgcHVibGljIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcGFyYW1zU2VydmljZTogUGFyYW1ldGVyc1NlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBjb25zdHM6IENvbnN0YW50cyxcbiAgICAgICAgcHVibGljIGNoYW5uZWxDb25maWc6IENoYW5uZWxDb25maWdTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICAuLi50aGlzLmFkZHJlc3NpbmdTZXJ2aWNlLmdldFR5cGVGb3JtKCkuY29uZmlnRm9ybS5mb3JtQWRkcmVzLFxuICAgICAgICAgICAgcG9zdGNvZGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLnBvc3RhbENvZGVQYXR0ZXJuKV1dIC8vIFNlIGFncmVnYSBwYXJhIHF1ZSBzw7NsbyBhY2VwdGUgY8OzZGlnb3MgcG9zdGFsZXMgbWF5b3JlcyBxdWUgY2Vyb1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jaGVja291dEZvcm0uc3RhdHVzQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHsgdGhpcy5vbkZvcm1DaGFuZ2UoKTsgcmV0dXJuIHRoaXMuY2hlY2tvdXRGb3JtLnZhbGlkIH0pKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uRm9ybVZhbGlkKCkpO1xuXG4gICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRmFjdHVyYWNpb24gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgIC4uLnRoaXMuYWRkcmVzc2luZ1NlcnZpY2UuZ2V0VHlwZUZvcm0oKS5jb25maWdGb3JtLmZvcm1CaWxsaW5nLFxuICAgICAgICAgICAgcG9zdGNvZGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLnBvc3RhbENvZGVQYXR0ZXJuKV1dIC8vIFNlIGFncmVnYSBwYXJhIHF1ZSBzw7NsbyBhY2VwdGUgY8OzZGlnb3MgcG9zdGFsZXMgbWF5b3JlcyBxdWUgY2Vyb1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jaGVja291dEZvcm1GYWN0dXJhY2lvbi5zdGF0dXNDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4geyB0aGlzLm9uRm9ybUNoYW5nZSgpOyByZXR1cm4gdGhpcy5jaGVja291dEZvcm1GYWN0dXJhY2lvbi52YWxpZCB9KSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkZvcm1WYWxpZCgpKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5wYXJhbXNTZXJ2aWNlLnBhcmFtZXRlcnMuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLnBhcmFtcyA9IHJlcyk7XG4gICAgICAgIHRoaXMuYWRkcmVzc2luZ1NlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzLnN0ZXBfaWQpO1xuICAgICAgICBjb25zdCBsb2NhbEVtYWlsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21haWwnKVxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCgpICYmIHRoaXMuY2hlY2tvdXRGb3JtLmNvbnRyb2xzWydlbWFpbCddLnNldFZhbHVlKHRoaXMuYXV0aFNlcnZpY2UuZ2V0Q3VzdG9tZXIoKT8uZW1haWwgfHwgbG9jYWxFbWFpbCk7XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCkgJiYgdGhpcy5jaGVja291dEZvcm0uZ2V0KCdlbWFpbCcpLmRpc2FibGUoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICAgICAgdGhpcy5hZGRyZXNzaW5nU2VydmljZS5nZXRBZGRyZXNzaW5nRGF0YSgpLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgIGxldCBjb3VudHJpZXMgPSB0aGlzLmZpbHRlckNvdW50cnlCeUNvZGUocmVzKVxuICAgICAgICAgICAgdGhpcy5jb3VudHJpZXNTdWJqZWN0Lm5leHQoY291bnRyaWVzKTtcbiAgICAgICAgICAgIHRoaXMuY291bnRyaWVzRmFjdHVyYWNpb25TdWJqZWN0Lm5leHQoY291bnRyaWVzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgKHRoaXMuYWRkcmVzc2luZ1NlcnZpY2UubW9kZVNlbGVjdEFkZHJlc3MgPT0gJ0xPQURfQUREUkVTU19BTkRfU0VMRUNUSU9OJyB8fCB0aGlzLmFkZHJlc3NpbmdTZXJ2aWNlLm1vZGVTZWxlY3RBZGRyZXNzID09ICdPTkxZX0FERFJFU1NfU0VMRUNUSU9OJylcbiAgICAgICAgICAgICYmIHRoaXMuYWRkcmVzc2luZ1NlcnZpY2UuZ2V0QWRkcmVzc0Jvb2soKS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRyZXNzQm9vayA9IHJlcyAmJiByZXMgfHwgbnVsbFxuICAgICAgICAgICAgICAgIHRoaXMuYWRkcmVzc0Jvb2sgPT0gbnVsbCAmJiB0aGlzLnNldE1vZGUoJ2NhcmdhJykgfVxuICAgICAgICAgICAgKVxuXG4gICAgICAgIHRoaXMuY291bnRyaWVzJC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmKHJlcyAmJiByZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtLmNvbnRyb2xzWydjb3VudHJ5Q29kZSddLnNldFZhbHVlKHJlc1swXS5jb2RlKVxuXG4gICAgICAgICAgICAgICAgLy8gUHJvdmluY2lhXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja291dEZvcm0uY29udHJvbHNbJ3Byb3ZpbmNlQ29kZSddLnNldFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICByZXNbMF0/LnByb3ZpbmNlc1swXS5jb2RlXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHRoaXMucHJvdmluY2VzU3ViamVjdC5uZXh0KHJlc1swXT8ucHJvdmluY2VzKVxuXG4gICAgICAgICAgICAgICAgLy8gRG9jdW1lbnRvXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja291dEZvcm0uY29udHJvbHNbJ2RvY3VtZW50VHlwZSddLnNldFZhbHVlKHJlc1swXT8uZG9jdW1lbnRUeXBlc1swXS5jb2RlKVxuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRUeXBlc1N1YmplY3QubmV4dChyZXNbMF0/LmRvY3VtZW50VHlwZXMpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5lY09uSW5pdCgpXG4gICAgIH1cbiAgICAgLyoqXG4gICAgICAqIEBkZXNjcmlwdGlvbiBmaWx0cmEgbG9zIHBhaXNlcyBkZSBhY3VlcmRvIGFsIGEgbG9zIGNvZGlnb3MgcmV0b3JuYWRvcyBlbiBsYSBmdW5jaW9uIGdldENvdW50cmllcy5cbiAgICAgICogQ2Fzb3MgZGUgdXNvczogU2kgZ2V0Q291bnRyaWVzIGVzIHZhY2lvLCByZXRvcm5hIGVsIGFycmVnbG8gcXVlIGluZ3Jlc2EgcG9yIHBhcmFtZXRyby5cbiAgICAgICogU2kgZ2V0Q291bnRyaWVzIGNvbnRpZW5lIHZhbG9yZXMgcXVlIG5vIGNvaW5jaWRlbiwgcmV0b3JuYSBlbCBhcnJlZ2xvIHF1ZSBpbmdyZXNhIHBvciBwYXJhbWV0cm8uXG4gICAgICAqIERlIGxvIGNvbnRyYXJpbyByZXRvcm5hIGxvcyB2YWxvcmVzIGZpbHRyYWRvcy5cbiAgICAgICogQHBhcmFtIGNvdW50cmllcyBBcnJlZ2xvIHF1ZSBjb250aWVuZSBsb3MgY291bnRyaWVzIHJlY2liaWRvcyBlbiBsYSBzdWJzY3JpcGNpb24gZGVsIG9ic2VydmFibGUuXG4gICAgICAqIEByZXR1cm5zIHVuIGFycmVnbG8gZGUgY291bnRyaWVzLlxuICAgICAgKi9cbiAgICAgcHJpdmF0ZSBmaWx0ZXJDb3VudHJ5QnlDb2RlID0gKGNvdW50cmllczphbnlbXSkgPT4ge1xuICAgICAgICBpZih0aGlzLmNvbnN0cy5nZXRDb3VudHJpZXMoKS5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgIGxldCBjb3VudHJpZXNGaWx0ZXJlZCA9IGNvdW50cmllcy5maWx0ZXIoIGVsZW0gPT4gdGhpcy5jb25zdHMuZ2V0Q291bnRyaWVzKCkuaW5jbHVkZXMoZWxlbS5jb2RlKSlcbiAgICAgICAgICAgIGlmKGNvdW50cmllc0ZpbHRlcmVkLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgICAgIHJldHVybiBjb3VudHJpZXNGaWx0ZXJlZFxuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRWwvbG9zIGNvZGlnby9zIGluZ3Jlc2Fkby9zIG5vIGNvaW5jaWRlbiBjb24gbG9zIHByb3Zpc3RvcyBkZXNkZSBlbCBiYWNrZW5kJylcbiAgICAgICAgICAgICAgICByZXR1cm4gY291bnRyaWVzXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICByZXR1cm4gY291bnRyaWVzXG4gICAgICAgIH1cbiAgICAgfVxuXG4gICAgc2hvd0Zvcm1GYWN0dXJhY2lvbiA9ICgpID0+IHtcbiAgICAgICAgdGhpcy52aWV3RGF0YUZhY3R1cmFjaW9uID0gIXRoaXMudmlld0RhdGFGYWN0dXJhY2lvblxuICAgICAgICBpZiAoIXRoaXMudmlld0RhdGFGYWN0dXJhY2lvbikge1xuICAgICAgICAgICAgdGhpcy5jb3VudHJpZXNGYWN0dXJhY2lvbiQuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0Rm9ybUZhY3R1cmFjaW9uLmNvbnRyb2xzWydjb3VudHJ5Q29kZSddLnNldFZhbHVlKHJlc1swXS5jb2RlKVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFByb3ZpbmNpYVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0Rm9ybUZhY3R1cmFjaW9uLmNvbnRyb2xzWydwcm92aW5jZUNvZGUnXS5zZXRWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc1swXT8ucHJvdmluY2VzWzBdLmNvZGVcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3ZpbmNlc0ZhY3R1cmFjaW9uU3ViamVjdC5uZXh0KHJlc1swXT8ucHJvdmluY2VzKVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIERvY3VtZW50b1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0Rm9ybUZhY3R1cmFjaW9uLmNvbnRyb2xzWydkb2N1bWVudFR5cGUnXS5zZXRWYWx1ZShyZXNbMF0/LmRvY3VtZW50VHlwZXNbMF0uY29kZSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudFR5cGVzRmFjdHVyYWNpb25TdWJqZWN0Lm5leHQocmVzWzBdPy5kb2N1bWVudFR5cGVzKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkZvcm1DaGFuZ2UoKVxuICAgICAgICByZXR1cm4gdGhpcy52aWV3RGF0YUZhY3R1cmFjaW9uXG4gICAgfVxuXG4gICAgb25Gb3JtVmFsaWQgPSAoKSA9PiB7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRm9ybUNoYW5nZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tvdXRGb3JtLnZhbGlkKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudmlld0RhdGFGYWN0dXJhY2lvbiAmJiB0aGlzLmNoZWNrb3V0Rm9ybUZhY3R1cmFjaW9uLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGFkbyA9IHRydWVcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnZpZXdEYXRhRmFjdHVyYWNpb24gJiYgdGhpcy5jaGVja291dEZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYWRvID0gdHJ1ZVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsaWRhZG8gPSBmYWxzZVxuICAgIH1cblxuICAgIG9uSW5wdXRDaGFuZ2UgPSAoKSA9PiB0aGlzLmZvcm1fcmVhZHkgPSBmYWxzZTtcblxuICAgIG9uQ291bnRyeVNlbGVjdGVkID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtLmNvbnRyb2xzWydjb3VudHJ5Q29kZSddLnNldFZhbHVlKHZhbHVlID09ICdudWxsJyA/IG51bGwgOiB2YWx1ZSk7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtLmNvbnRyb2xzWydwcm92aW5jZUNvZGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgdGhpcy5jaGVja291dEZvcm0uY29udHJvbHNbJ2RvY3VtZW50VHlwZSddLnNldFZhbHVlKCcnKTtcblxuICAgICAgICAvL1Byb3ZpbmNlc1xuICAgICAgICBsZXQgcHJvdmluY2VzID0gdmFsdWUgJiYgdmFsdWUgIT0gJ251bGwnID9cbiAgICAgICAgICAgIHRoaXMuY291bnRyaWVzU3ViamVjdC52YWx1ZS5maW5kKGNvdW50cnkgPT4gY291bnRyeS5jb2RlID09IHZhbHVlKS5wcm92aW5jZXNcbiAgICAgICAgICAgIDpcbiAgICAgICAgICAgIFtdXG4gICAgICAgIHRoaXMucHJvdmluY2VzU3ViamVjdC5uZXh0KHByb3ZpbmNlcyk7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtLmNvbnRyb2xzWydwcm92aW5jZUNvZGUnXS5zZXRWYWx1ZShwcm92aW5jZXNbMF0uY29kZSlcblxuICAgICAgICAvL0RvY3VtZW50IHR5cGVzXG4gICAgICAgIGxldCBkb2N1bWVudFR5cGVzID0gdmFsdWUgJiYgdmFsdWUgIT0gJ251bGwnID9cbiAgICAgICAgICAgIHRoaXMuY291bnRyaWVzU3ViamVjdC52YWx1ZS5maW5kKGNvdW50cnkgPT4gY291bnRyeS5jb2RlID09IHZhbHVlKS5kb2N1bWVudFR5cGVzXG4gICAgICAgICAgICA6XG4gICAgICAgICAgICBbXVxuICAgICAgICB0aGlzLmRvY3VtZW50VHlwZXNTdWJqZWN0Lm5leHQoZG9jdW1lbnRUeXBlcyk7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtLmNvbnRyb2xzWydkb2N1bWVudFR5cGUnXS5zZXRWYWx1ZShkb2N1bWVudFR5cGVzWzBdLmNvZGUpXG5cbiAgICB9XG5cbiAgICBvbkNvdW50cnlTZWxlY3RlZEZhY3R1cmFjaW9uID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRmFjdHVyYWNpb24uY29udHJvbHNbJ2NvdW50cnlDb2RlJ10uc2V0VmFsdWUodmFsdWUgPT0gJ251bGwnID8gbnVsbCA6IHZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGVja291dEZvcm1GYWN0dXJhY2lvbi5jb250cm9sc1sncHJvdmluY2VDb2RlJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRmFjdHVyYWNpb24uY29udHJvbHNbJ2RvY3VtZW50VHlwZSddLnNldFZhbHVlKCcnKTtcblxuICAgICAgICAvL1Byb3ZpbmNlc1xuICAgICAgICBsZXQgcHJvdmluY2VzID0gdmFsdWUgJiYgdmFsdWUgIT0gJ251bGwnID9cbiAgICAgICAgICAgIHRoaXMuY291bnRyaWVzRmFjdHVyYWNpb25TdWJqZWN0LnZhbHVlLmZpbmQoY291bnRyeSA9PiBjb3VudHJ5LmNvZGUgPT0gdmFsdWUpLnByb3ZpbmNlc1xuICAgICAgICAgICAgOlxuICAgICAgICAgICAgW11cbiAgICAgICAgdGhpcy5wcm92aW5jZXNGYWN0dXJhY2lvblN1YmplY3QubmV4dChwcm92aW5jZXMpO1xuICAgICAgICB0aGlzLmNoZWNrb3V0Rm9ybUZhY3R1cmFjaW9uLmNvbnRyb2xzWydwcm92aW5jZUNvZGUnXS5zZXRWYWx1ZShwcm92aW5jZXNbMF0uY29kZSlcblxuICAgICAgICAvL0RvY3VtZW50IHR5cGVzXG4gICAgICAgIGxldCBkb2N1bWVudFR5cGVzID0gdmFsdWUgJiYgdmFsdWUgIT0gJ251bGwnID9cbiAgICAgICAgICAgIHRoaXMuY291bnRyaWVzRmFjdHVyYWNpb25TdWJqZWN0LnZhbHVlLmZpbmQoY291bnRyeSA9PiBjb3VudHJ5LmNvZGUgPT0gdmFsdWUpLmRvY3VtZW50VHlwZXNcbiAgICAgICAgICAgIDpcbiAgICAgICAgICAgIFtdXG4gICAgICAgIHRoaXMuZG9jdW1lbnRUeXBlc0ZhY3R1cmFjaW9uU3ViamVjdC5uZXh0KGRvY3VtZW50VHlwZXMpO1xuICAgICAgICB0aGlzLmNoZWNrb3V0Rm9ybUZhY3R1cmFjaW9uLmNvbnRyb2xzWydkb2N1bWVudFR5cGUnXS5zZXRWYWx1ZShkb2N1bWVudFR5cGVzWzBdLmNvZGUpXG4gICAgfVxuXG4gICAgb25Qcm92aW5jZXNTZWxlY3RlZCA9ICh2YWx1ZSkgPT4gdGhpcy5jaGVja291dEZvcm0uY29udHJvbHNbJ3Byb3ZpbmNlQ29kZSddLnNldFZhbHVlKHZhbHVlID09ICdudWxsJyA/IG51bGwgOiB2YWx1ZSk7XG5cbiAgICBvblByb3ZpbmNlc1NlbGVjdGVkRmFjdHVyYWNpb24gPSAodmFsdWUpID0+IHRoaXMuY2hlY2tvdXRGb3JtRmFjdHVyYWNpb24uY29udHJvbHNbJ3Byb3ZpbmNlQ29kZSddLnNldFZhbHVlKHZhbHVlID09ICdudWxsJyA/IG51bGwgOiB2YWx1ZSk7XG5cbiAgICBvbkRvY3VtZW50VHlwZXNTZWxlY3RlZCA9ICh2YWx1ZSkgPT4gdGhpcy5jaGVja291dEZvcm0uY29udHJvbHNbJ2RvY3VtZW50VHlwZSddLnNldFZhbHVlKHZhbHVlID09ICcnID8gJycgOiB2YWx1ZSk7XG5cbiAgICBvbkRvY3VtZW50VHlwZXNTZWxlY3RlZEZhY3R1cmFjaW9uID0gKHZhbHVlKSA9PiB0aGlzLmNoZWNrb3V0Rm9ybS5jb250cm9sc1snZG9jdW1lbnRUeXBlJ10uc2V0VmFsdWUodmFsdWUgPT0gJycgPyAnJyA6IHZhbHVlKTtcblxuICAgIHZlcmlmeVZhbGlkYXRlID0gYXN5bmMgKGUsIGl0ZW1zKSA9PiB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJWZXJpZnlpbmc6IFwiLCBlKVxuICAgICAgICB0aGlzLnJlcXVpcmVfbG9naW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtLmNvbnRyb2xzWydlbWFpbCddLnNldFZhbHVlKGUpO1xuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKSAmJiB0aGlzLmNoZWNrb3V0Rm9ybS5nZXQoJ2VtYWlsJykuZGlzYWJsZSh7IG9ubHlTZWxmOiB0cnVlIH0pO1xuXG4gICAgICAgIH1cbiAgICAgICAgaWYodGhpcy5jaGVja291dEZvcm0udmFsaWQpIHtcbiAgICAgICAgICAvLyBpZiAodGhpcy5jYXJ0U2VydmljZS5jaGFubmVsQ29uZmlnLmFwcGx5T3JkZXJMb3Qpe1xuICAgICAgICAgIC8vICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgIC8vICAgICAgIGlmICghaXRlbS5sb3RbMF0pe1xuICAgICAgICAgIC8vICAgICAgLy8gICAgY29uc29sZS5sb2codGhpcy5jaGVja291dEZvcm0uY29udHJvbHNbJ2NpdHknXVsndmFsdWUnXSlcbiAgICAgICAgICAvLyAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZFRvTG90KGl0ZW0ucHJvZHVjdCwwLGl0ZW0udmFyaWFudF9pZCwwLGl0ZW0uaXRlbV9pZCxpdGVtLnF1YW50aXR5LGl0ZW0ucHJvZHVjdC5wcmljZSxpdGVtLnF1YW50aXR5LGl0ZW0uZGlzY291bnQsaXRlbS5wcm9kdWN0LnByaWNlKml0ZW0ucXVhbnRpdHksJ25ldycsJycsJycsMCx0aGlzLmNoZWNrb3V0Rm9ybS5jb250cm9sc1snY2l0eSddWyd2YWx1ZSddKyAnIC0gJyArIHRoaXMuY2hlY2tvdXRGb3JtLmNvbnRyb2xzWydzdHJlZXQnXVsndmFsdWUnXSwgJ25ld2xvdCcpO1xuICAgICAgICAgIC8vICAgICAgIH1cbiAgICAgICAgICAvLyAgIH0pO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgICB0aGlzLmVtaXRSZXN1bHQoKTtcbiAgICAgICAgfWVsc2VcbiAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yKCdpbnZhbGlkLWZvcm0nKTtcbiAgICB9XG5cbiAgICBzaG93RXJyb3IgPSAoZXJyb3JfbWVzc2FnZSkgPT4geyB0aGlzLnRvYXN0LnNob3coZXJyb3JfbWVzc2FnZSk7IHJldHVybiB0cnVlOyB9XG5cbiAgICBwcm90ZWN0ZWQgZW1pdFJlc3VsdCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgbGV0IGRhdGE6IGFueSA9IHsgc2hpcHBpbmdBZGRyZXNzOiB7IC4uLnRoaXMuY2hlY2tvdXRGb3JtLmdldFJhd1ZhbHVlKCksIHBob25lTnVtYmVyOiB0aGlzLmNoZWNrb3V0Rm9ybS52YWx1ZS5waG9uZU51bWJlci50b1N0cmluZygpIH0sIG5vdGVzOiAodGhpcy5jaGVja291dEZvcm0uZ2V0UmF3VmFsdWUoKSkubm90ZXMgfTtcbiAgICAgICAgaWYgKCF0aGlzLnZpZXdEYXRhRmFjdHVyYWNpb24gJiYgdGhpcy5jaGVja291dEZvcm1GYWN0dXJhY2lvbi52YWxpZCkgZGF0YSA9IHsgLi4uZGF0YSwgbm90ZXM6IGRhdGEubm90ZXMsIGJpbGxpbmdBZGRyZXNzOiB0aGlzLmNoZWNrb3V0Rm9ybUZhY3R1cmFjaW9uLmdldFJhd1ZhbHVlKCkgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLmFkZHJlc3NpbmdTZXJ2aWNlLnNldEFkZHJlc3MoZGF0YSk7XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKXtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVfbG9naW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc2hvdygnRWwgZW1haWwgeWEgZXN0w6EgcmVnaXN0cmFkbywgaW5pY2llIHNlc2nDs24uJylcblxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0ICE9PSBmYWxzZSAmJiByZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybV9yZWFkeSA9IHRydWVcbiAgICAgICAgICAgICAgICB0aGlzLmFsbHJlYWR5X2RhdGEgPSB0cnVlXG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0U3RlcCgpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBjYXRjaCAoZSkgeyB0aGlzLnRvYXN0LnNob3coJ29wZXJhdGlvbi1lcnJvcicpIH1cbiAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9wZW5Nb2RhbCh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLm1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uuc2hvdyh0ZW1wbGF0ZSwgeyBjbGFzczogJ21vZGFsLWxnICcsIGtleWJvYXJkOiBmYWxzZSwgYmFja2Ryb3A6ICdzdGF0aWMnIH0pO1xuICAgIH1cblxuICAgIHNldFNlbGVjdEFkZHJlc3MgPSAoYWRkcmVzc1NlbGVjdDogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYWRkcmVzc0Jvb2subWFwKGFkZHJlc3MgPT4gYWRkcmVzcy5zZWxlY3RlZCA9IGFkZHJlc3MuaWQgPT09IGFkZHJlc3NTZWxlY3QuaWQpXG4gICAgICAgIHRoaXMuYWRkcmVzc0Jvb2tTZWxlY3RlZC5pZCA9IHRoaXMuYWRkcmVzc0Jvb2suZmluZChhZGRyZXNzID0+IGFkZHJlc3Muc2VsZWN0ZWQpLmlkIHx8IDBcbiAgICB9XG5cbiAgICBzZWxlY3RBZGRyZXNzID0gYXN5bmMgKGl0ZW1zKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIGxldCBhZGRyZXNzU2VsZWN0ZWQgPSB0aGlzLmFkZHJlc3NCb29rLmZpbmQoYWRkcmVzcyA9PiBhZGRyZXNzLnNlbGVjdGVkKVxuICAgICAgICBpZiAoYWRkcmVzc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5hZGRyZXNzQm9va1NlbGVjdGVkLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkcmVzc0Jvb2tTZWxlY3RlZC5pZCA9IGFkZHJlc3NTZWxlY3RlZC5pZCB8fCAwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLmFkZHJlc3NCb29rU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzczogYWRkcmVzc1NlbGVjdGVkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdFNlZGUgPSBhd2FpdCB0aGlzLmFkZHJlc3NpbmdTZXJ2aWNlLnNldEhlYWRxdWFydGVyKHJlcXVlc3QpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHRTZWRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhcnRTZXJ2aWNlLmNoYW5uZWxDb25maWcuYXBwbHlPcmRlckxvdCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXRlbS5sb3RbMF0pe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coaXRlbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkVG9Mb3QoaXRlbS5wcm9kdWN0LDAsaXRlbS52YXJpYW50X2lkLDAsaXRlbS5pdGVtX2lkLGl0ZW0ucXVhbnRpdHksaXRlbS5wcm9kdWN0LnByaWNlLGl0ZW0ucXVhbnRpdHksaXRlbS5kaXNjb3VudCxpdGVtLnByb2R1Y3QucHJpY2UqaXRlbS5xdWFudGl0eSwnbmV3JywnJywnJywwLHJlc3VsdFNlZGUuc2hpcHBpbmdBZGRyZXNzLmNpdHkgKyAnIC0gJyArIHJlc3VsdFNlZGUuc2hpcHBpbmdBZGRyZXNzLnN0cmVldCwgJ25ld2xvdCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1fcmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbHJlYWR5X2RhdGEgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRTdGVwKClcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnNob3coJ29wZXJhdGlvbi1lcnJvcicpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyB0aGlzLnRvYXN0LnNob3coJ29wZXJhdGlvbi1lcnJvcicpIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yKCdpbnZhbGlkLWZvcm0nKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGdldE1vZGUgPSAoKSA9PiB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5hZGRyZXNzaW5nU2VydmljZS5tb2RlU2VsZWN0QWRkcmVzcykge1xuICAgICAgICAgICAgY2FzZSAnT05MWV9MT0FEX0FERFJFU1MnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICBjYXNlICdPTkxZX0FERFJFU1NfU0VMRUNUSU9OJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIGNhc2UgJ0xPQURfQUREUkVTU19BTkRfU0VMRUNUSU9OJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RBZGRyZXNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcnVlYmEoeCl7XG4gICAgICAgIGNvbnNvbGUubG9nKHgpO1xuICAgIH1cblxuICAgIHNldE1vZGUgPSAobW9kZSkgPT4gdGhpcy5zZWxlY3RBZGRyZXMgPSBtb2RlID09IFwiY2FyZ2FcIlxuXG4gICAgZ2V0Q291bnRyeSA9IChjb2RlKSA9PiB0aGlzLmFkZHJlc3NpbmdTZXJ2aWNlLmNvdW50cmllc0xpc3QuZmluZChwYWlzZXMgPT4gcGFpc2VzLmNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhjb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkpKT8ubmFtZSB8fCBcIlwiXG5cbiAgICBnZXRQcm92aW5jZSA9IChjb2RlKSA9PiB0aGlzLmFkZHJlc3NpbmdTZXJ2aWNlLnByb3ZpbmNlTGlzdC5maW5kKGN0ID0+IGN0LmNvZGUgPT0gY29kZSk/Lm5hbWUgfHwgXCJcIlxuXG4gICAgZ2V0RG9jdW1lbnRUeXBlID0gKGNvZGUpID0+IHRoaXMuYWRkcmVzc2luZ1NlcnZpY2UuZG9jdW1lbnRUeXBlcy5maW5kKGR0ID0+IGR0LmNvZGUgPT0gY29kZSk/Lm5hbWUgfHwgXCJcIlxuXG4gICAgZ2V0TGFiZWxOb3Rlc1BhcmFtID0gKCkgPT4gdGhpcy5oYXNQYXJhbXModGhpcy5wYXJhbXMsICdsYWJlbF9ub3Rlc18nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJ18nICsgdGhpcy5jb25zdHMuZ2V0TG9jYWxlKCkuc3BsaXQoJ18nKVswXSlcblxuICAgIGdldFBhcmFtQnlDaGFubmVsQW5kTGFuZ3VhZ2UgPSAobmFtZVBhcmFtKSA9PiB0aGlzLmhhc1BhcmFtcyh0aGlzLnBhcmFtcywgbmFtZVBhcmFtICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJ18nICsgdGhpcy5jb25zdHMuZ2V0TG9jYWxlKCkuc3BsaXQoJ18nKVswXSlcbn1cbiJdfQ==
|
|
463
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWZvcm0tZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2VjLWNvbXBvbmVudC9jaGVja291dC1lYy9kYXRhZm9ybS1lYy9kYXRhZm9ybS1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBd0IsS0FBSyxFQUFrQyxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQVFoRjtJQUF5Qyx1Q0FBZTtJQXVDcEQsNkJBQW1CLFdBQXdCLEVBQ2hDLEVBQWUsRUFDZixLQUFtQixFQUNuQixpQkFBb0MsRUFDcEMsV0FBd0IsRUFDdkIsWUFBNEIsRUFDN0IsYUFBZ0MsRUFDaEMsTUFBaUIsRUFDakIsYUFBbUM7UUFSOUMsWUFTSSxpQkFBTyxTQW1CVjtRQTVCa0IsaUJBQVcsR0FBWCxXQUFXLENBQWE7UUFDaEMsUUFBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFdBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsdUJBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxpQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN2QixrQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFDN0IsbUJBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hDLFlBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsbUJBQWEsR0FBYixhQUFhLENBQXNCO1FBNUNyQyxlQUFTLEdBQVksS0FBSyxDQUFDO1FBRzFCLHNCQUFnQixHQUFHLElBQUksZUFBZSxDQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELHNCQUFnQixHQUFHLElBQUksZUFBZSxDQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELDBCQUFvQixHQUFHLElBQUksZUFBZSxDQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELGlDQUEyQixHQUFHLElBQUksZUFBZSxDQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdELGlDQUEyQixHQUFHLElBQUksZUFBZSxDQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdELHFDQUErQixHQUFHLElBQUksZUFBZSxDQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXBFLGdCQUFVLEdBQUcsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xELGdCQUFVLEdBQUcsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xELG9CQUFjLEdBQUcsS0FBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFELDJCQUFxQixHQUFHLEtBQUksQ0FBQywyQkFBMkIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4RSwyQkFBcUIsR0FBRyxLQUFJLENBQUMsMkJBQTJCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEUsK0JBQXlCLEdBQUcsS0FBSSxDQUFDLCtCQUErQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWhGLG1CQUFhLEdBQUcsS0FBSyxDQUFDO1FBR3RCLGFBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsZ0JBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsbUJBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsaUJBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIseUJBQW1CLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQTtRQUMxQyxZQUFNLEdBQVksS0FBSyxDQUFDLENBQUMsMERBQTBEO1FBRW5GLGNBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIseUJBQW1CLEdBQVksSUFBSSxDQUFDO1FBR3BDLFlBQU0sR0FBUSxFQUFFLENBQUM7UUFDakIsa0JBQVksR0FBWSxLQUFLLENBQUM7UUFFN0IsdUJBQWlCLEdBQUcsNEJBQTRCLENBQUM7UUFnRnpEOzs7Ozs7O1dBT0c7UUFDSyx5QkFBbUIsR0FBRyxVQUFDLFNBQWdCO1lBQzNDLElBQUksS0FBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxLQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQTlDLENBQThDLENBQUMsQ0FBQTtnQkFDaEcsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUM5QixPQUFPLGlCQUFpQixDQUFBO2lCQUMzQjtxQkFBTTtvQkFDSCxPQUFPLENBQUMsS0FBSyxDQUFDLDZFQUE2RSxDQUFDLENBQUE7b0JBQzVGLE9BQU8sU0FBUyxDQUFBO2lCQUNuQjthQUVKO2lCQUFNO2dCQUNILE9BQU8sU0FBUyxDQUFBO2FBQ25CO1FBQ0wsQ0FBQyxDQUFBO1FBRUQseUJBQW1CLEdBQUc7WUFDbEIsS0FBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsS0FBSSxDQUFDLG1CQUFtQixDQUFBO1lBQ3BELElBQUksQ0FBQyxLQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQzNCLEtBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsVUFBQSxHQUFHOztvQkFDcEMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQ3ZCLEtBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTt3QkFFMUUsWUFBWTt3QkFDWixLQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsT0FDMUQsR0FBRyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FDNUIsQ0FBQTt3QkFDRCxLQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxPQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsMENBQUUsU0FBUyxDQUFDLENBQUE7d0JBRXhELFlBQVk7d0JBQ1osS0FBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLE9BQUMsR0FBRyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUM3RixLQUFJLENBQUMsK0JBQStCLENBQUMsSUFBSSxPQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsMENBQUUsYUFBYSxDQUFDLENBQUE7cUJBQ25FO2dCQUNMLENBQUMsQ0FBQyxDQUFBO2FBQ0w7WUFDRCxLQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7WUFDbkIsT0FBTyxLQUFJLENBQUMsbUJBQW1CLENBQUE7UUFDbkMsQ0FBQyxDQUFBO1FBRUQsaUJBQVcsR0FBRztRQUNkLENBQUMsQ0FBQTtRQWdCRCxtQkFBYSxHQUFHLGNBQU0sT0FBQSxLQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssRUFBdkIsQ0FBdUIsQ0FBQztRQUU5Qyx1QkFBaUIsR0FBRyxVQUFDLEtBQUs7WUFDdEIsS0FBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkYsS0FBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFELEtBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV4RCxJQUFJLGVBQWUsR0FBRyxLQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFBLE9BQU8sSUFBSSxPQUFBLE9BQU8sQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFyQixDQUFxQixDQUFDLENBQUM7WUFFekYsSUFBSSxlQUFlLEVBQUU7Z0JBQ2pCLEtBQUksQ0FBQywwQkFBMEIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDekQ7WUFFRCxXQUFXO1lBQ1gsSUFBSSxTQUFTLEdBQUcsS0FBSyxJQUFJLEtBQUssSUFBSSxNQUFNLENBQUMsQ0FBQztnQkFDdEMsS0FBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBQSxPQUFPLElBQUksT0FBQSxPQUFPLENBQUMsSUFBSSxJQUFJLEtBQUssRUFBckIsQ0FBcUIsQ0FBQyxDQUFDLFNBQVM7Z0JBQzVFLENBQUM7b0JBQ0QsRUFBRSxDQUFBO1lBQ04sS0FBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0QyxLQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBRXRFLGdCQUFnQjtZQUNoQixJQUFJLGFBQWEsR0FBRyxLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sQ0FBQyxDQUFDO2dCQUMxQyxLQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFBLE9BQU8sSUFBSSxPQUFBLE9BQU8sQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFyQixDQUFxQixDQUFDLENBQUMsYUFBYTtnQkFDaEYsQ0FBQztvQkFDRCxFQUFFLENBQUE7WUFDTixLQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlDLEtBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFOUUsQ0FBQyxDQUFBO1FBRUQsa0NBQTRCLEdBQUcsVUFBQyxLQUFLO1lBQ2pDLEtBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUYsS0FBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsS0FBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFbkUsV0FBVztZQUNYLElBQUksU0FBUyxHQUFHLEtBQUssSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLENBQUM7Z0JBQ3RDLEtBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsT0FBTyxDQUFDLElBQUksSUFBSSxLQUFLLEVBQXJCLENBQXFCLENBQUMsQ0FBQyxTQUFTO2dCQUN2RixDQUFDO29CQUNELEVBQUUsQ0FBQTtZQUNOLEtBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakQsS0FBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBRWpGLGdCQUFnQjtZQUNoQixJQUFJLGFBQWEsR0FBRyxLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sQ0FBQyxDQUFDO2dCQUMxQyxLQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFBLE9BQU8sSUFBSSxPQUFBLE9BQU8sQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFyQixDQUFxQixDQUFDLENBQUMsYUFBYTtnQkFDM0YsQ0FBQztvQkFDRCxFQUFFLENBQUE7WUFDTixLQUFJLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3pELEtBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN6RixDQUFDLENBQUE7UUFFRCx5QkFBbUIsR0FBRyxVQUFDLEtBQUssSUFBSyxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFuRixDQUFtRixDQUFDO1FBRXJILG9DQUE4QixHQUFHLFVBQUMsS0FBSyxJQUFLLE9BQUEsS0FBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBOUYsQ0FBOEYsQ0FBQztRQUUzSSw2QkFBdUIsR0FBRyxVQUFDLEtBQUssSUFBSyxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUE3RSxDQUE2RSxDQUFDO1FBRW5ILHdDQUFrQyxHQUFHLFVBQUMsS0FBSyxJQUFLLE9BQUEsS0FBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQTdFLENBQTZFLENBQUM7UUFFOUgsb0JBQWMsR0FBRyxVQUFPLENBQUMsRUFBRSxLQUFLOztnQkFDNUIsK0JBQStCO2dCQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDM0IsSUFBSSxDQUFDLEVBQUU7b0JBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUVwRztnQkFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO29CQUN6QixxREFBcUQ7b0JBQ3JELDJCQUEyQjtvQkFDM0IsMkJBQTJCO29CQUMzQixzRUFBc0U7b0JBQ3RFLDhTQUE4UztvQkFDOVMsVUFBVTtvQkFDVixRQUFRO29CQUNSLElBQUk7b0JBQ0osSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2lCQUNyQjs7b0JBQ0csSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQzs7O2FBQ3RDLENBQUE7UUFFRCxlQUFTLEdBQUcsVUFBQyxhQUFhLElBQU8sS0FBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUVyRSxnQkFBVSxHQUFHOzs7Ozt3QkFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7d0JBQ2hCLElBQUksR0FBUSxFQUFFLGVBQWUsd0JBQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsS0FBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxHQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUN6TCxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLOzRCQUFFLElBQUkseUJBQVEsSUFBSSxLQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLEdBQUUsQ0FBQzs7Ozt3QkFFdEoscUJBQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBQTs7d0JBQXRELE1BQU0sR0FBRyxTQUE2Qzt3QkFFMUQsSUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFOzRCQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzs0QkFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsNkNBQTZDLENBQUMsQ0FBQTt5QkFFakU7NkJBQ0ksSUFBSSxNQUFNLEtBQUssS0FBSyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7NEJBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFBOzRCQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTs0QkFDekIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO3lCQUNsQjs7Ozt3QkFFUyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBOzs7d0JBQ2hELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDOzs7O2FBQ3hCLENBQUE7UUFNRCxzQkFBZ0IsR0FBRyxVQUFDLGFBQWtCO1lBQ2xDLEtBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsT0FBTyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsRUFBRSxLQUFLLGFBQWEsQ0FBQyxFQUFFLEVBQWxELENBQWtELENBQUMsQ0FBQTtZQUNuRixLQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxHQUFHLEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsT0FBTyxDQUFDLFFBQVEsRUFBaEIsQ0FBZ0IsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDNUYsQ0FBQyxDQUFBO1FBV0QsbUJBQWEsR0FBRyxVQUFPLEtBQUs7Ozs7Ozt3QkFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7d0JBQ2hCLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFBLE9BQU8sSUFBSSxPQUFBLE9BQU8sQ0FBQyxRQUFRLEVBQWhCLENBQWdCLENBQUMsQ0FBQTs2QkFDcEUsZUFBZSxFQUFmLHdCQUFlOzs7O3dCQUVYLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxFQUFFOzRCQUM5QixJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxHQUFHLGVBQWUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO3lCQUN4RDt3QkFDSyxPQUFPLEdBQUc7NEJBQ1osUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUI7NEJBQ2xDLGVBQWUsRUFBRSxlQUFlO3lCQUNuQyxDQUFBO3dCQUNrQixxQkFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFBOzt3QkFBakUsZUFBYSxTQUFvRDt3QkFDdkUsSUFBSSxZQUFVLEVBQUU7NEJBQ1osSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUU7Z0NBQzlDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBQSxJQUFJO29DQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO3dDQUNkLG9CQUFvQjt3Q0FDcEIsS0FBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFVLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxLQUFLLEdBQUcsWUFBVSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7cUNBQzlSO2dDQUNMLENBQUMsQ0FBQyxDQUFDOzZCQUNOOzRCQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDOzRCQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzs0QkFDMUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO3lCQUNsQjs2QkFBTTs0QkFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO3lCQUNyQzs7Ozt3QkFDUyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBOzs7O3dCQUVoRCxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFBOzs7d0JBRWxDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDOzs7O2FBQ3hCLENBQUE7UUFFRCxhQUFPLEdBQUc7WUFDTixRQUFRLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDOUMsS0FBSyxtQkFBbUI7b0JBQ3BCLE9BQU8sSUFBSSxDQUFBO2dCQUNmLEtBQUssd0JBQXdCO29CQUN6QixJQUFJLEtBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLEVBQUU7d0JBQ3BDLE9BQU8sS0FBSyxDQUFBO3FCQUNmO29CQUNELE9BQU8sSUFBSSxDQUFBO2dCQUNmLEtBQUssNEJBQTRCO29CQUM3QixJQUFJLEtBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLEVBQUU7d0JBQ3BDLE9BQU8sS0FBSSxDQUFDLFlBQVksQ0FBQTtxQkFDM0I7b0JBQ0QsT0FBTyxJQUFJLENBQUE7YUFDbEI7UUFDTCxDQUFDLENBQUE7UUFLRCxhQUFPLEdBQUcsVUFBQyxJQUFJLElBQUssT0FBQSxLQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxPQUFPLEVBQW5DLENBQW1DLENBQUE7UUFFdkQsZ0JBQVUsR0FBRyxVQUFDLElBQUksWUFBSyxPQUFBLE9BQUEsS0FBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBQSxNQUFNLElBQUksT0FBQSxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEVBQWxFLENBQWtFLENBQUMsMENBQUUsSUFBSSxLQUFJLEVBQUUsQ0FBQSxFQUFBLENBQUE7UUFFMUosaUJBQVcsR0FBRyxVQUFDLElBQUksWUFBSyxPQUFBLE9BQUEsS0FBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBQSxFQUFFLElBQUksT0FBQSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksRUFBZixDQUFlLENBQUMsMENBQUUsSUFBSSxLQUFJLEVBQUUsQ0FBQSxFQUFBLENBQUE7UUFFbkcscUJBQWUsR0FBRyxVQUFDLElBQUksWUFBSyxPQUFBLE9BQUEsS0FBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBQSxFQUFFLElBQUksT0FBQSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksRUFBZixDQUFlLENBQUMsMENBQUUsSUFBSSxLQUFJLEVBQUUsQ0FBQSxFQUFBLENBQUE7UUFFeEcsd0JBQWtCLEdBQUcsY0FBTSxPQUFBLEtBQUksQ0FBQyxTQUFTLENBQUMsS0FBSSxDQUFDLE1BQU0sRUFBRSxjQUFjLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBcEgsQ0FBb0gsQ0FBQTtRQUUvSSxrQ0FBNEIsR0FBRyxVQUFDLFNBQVMsSUFBSyxPQUFBLEtBQUksQ0FBQyxTQUFTLENBQUMsS0FBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxHQUFHLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBL0csQ0FBK0csQ0FBQTtRQWpVekosS0FBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3BCLEtBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLHVCQUMxQixLQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsS0FDN0QsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUVBQW1FO1lBQzNHLENBQUM7UUFDSCxLQUFJLENBQUMsWUFBWSxDQUFDLGFBQWE7YUFDMUIsSUFBSSxDQUNELE1BQU0sQ0FBQyxjQUFRLEtBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE9BQU8sS0FBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN6RSxTQUFTLENBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxXQUFXLEVBQUUsRUFBbEIsQ0FBa0IsQ0FBQyxDQUFDO1FBRXpDLEtBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssdUJBQ3JDLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxLQUM5RCxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxtRUFBbUU7WUFDM0csQ0FBQztRQUNILEtBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhO2FBQ3JDLElBQUksQ0FDRCxNQUFNLENBQUMsY0FBUSxLQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxPQUFPLEtBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwRixTQUFTLENBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxXQUFXLEVBQUUsRUFBbEIsQ0FBa0IsQ0FBQyxDQUFDOztJQUM3QyxDQUFDO0lBRUQsc0NBQVEsR0FBUjtRQUFBLGlCQStDQzs7UUE5Q0csSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsS0FBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQWpCLENBQWlCLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxJQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsMENBQUUsS0FBSyxLQUFJLFVBQVUsQ0FBQyxDQUFDO1FBQ3hJLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLENBQUMsSUFBSSxDQUFDLFVBQUEsR0FBRztZQUMvQyxJQUFJLFNBQVMsR0FBRyxLQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDN0MsS0FBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0QyxLQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEtBQUssNEJBQTRCO1lBQ3pFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsS0FBSyx3QkFBd0IsRUFBRTtZQUV2RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQUEsR0FBRztnQkFDNUMsS0FBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDO2dCQUMvQixJQUFJLEtBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQ2xCLElBQU0sZUFBZSxHQUFHLEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsT0FBTyxDQUFDLFFBQVEsRUFBaEIsQ0FBZ0IsQ0FBQyxDQUFDO29CQUMzRSxJQUFJLGVBQWUsRUFBRTt3QkFDakIsS0FBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDaEYsS0FBSSxDQUFDLDBCQUEwQixDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztxQkFDaEU7aUJBQ0o7cUJBQU07b0JBQ0gsS0FBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDekI7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBQSxHQUFHOztZQUN6QixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDdkIsS0FBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDL0QsS0FBSSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFN0MsWUFBWTtnQkFDWixLQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLE9BQy9DLEdBQUcsQ0FBQyxDQUFDLENBQUMsMENBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQzVCLENBQUE7Z0JBQ0QsS0FBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksT0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLDBDQUFFLFNBQVMsQ0FBQyxDQUFBO2dCQUU3QyxZQUFZO2dCQUNaLEtBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsT0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLDBDQUFFLGFBQWEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQ2xGLEtBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLE9BQUMsR0FBRyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxhQUFhLENBQUMsQ0FBQTthQUN4RDtRQUNMLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ25CLENBQUM7SUFrRFMsMENBQVksR0FBdEI7UUFDSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRTtnQkFDakUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7Z0JBQ3BCLE9BQU07YUFDVDtZQUNELElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO2dCQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtnQkFDcEIsT0FBTTthQUNUO1NBQ0o7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtJQUN6QixDQUFDO0lBNkdELHVDQUFTLEdBQVQsVUFBVSxRQUEwQjtRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNsSCxDQUFDO0lBT0Qsd0RBQTBCLEdBQTFCLFVBQTJCLFdBQW1CO1FBQzFDLElBQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDaEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDO1lBQ2pELFVBQVUsQ0FBQyxRQUFRO1lBQ25CLFVBQVUsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7U0FDeEMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNwRSxDQUFDO0lBcURELG9DQUFNLEdBQU4sVUFBTyxDQUFDO1FBQ0osT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDOztnQkEvVCtCLFdBQVc7Z0JBQzVCLFdBQVc7Z0JBQ1IsWUFBWTtnQkFDQSxpQkFBaUI7Z0JBQ3ZCLFdBQVc7Z0JBQ1QsY0FBYztnQkFDZCxpQkFBaUI7Z0JBQ3hCLFNBQVM7Z0JBQ0Ysb0JBQW9COztJQTdDckM7UUFBUixLQUFLLEVBQUU7d0RBQVM7SUFDUjtRQUFSLEtBQUssRUFBRTswREFBNEI7SUFDM0I7UUFBUixLQUFLLEVBQUU7eURBQW9CO0lBSm5CLG1CQUFtQjtRQU4vQixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsaUJBQWlCO1lBQzNCLDY2Z0RBQXlDO1lBRXpDLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQzs7U0FDOUIsQ0FBQztPQUNXLG1CQUFtQixDQW1YL0I7SUFBRCwwQkFBQztDQUFBLEFBblhELENBQXlDLGVBQWUsR0FtWHZEO1NBblhZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBBZGRyZXNzaW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NoZWNrb3V0L2FkZHJlc3Npbmcuc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbC9icy1tb2RhbC1yZWYuc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBhZGQgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Nocm9ub3MnO1xuaW1wb3J0IHsgUGFyYW1ldGVyc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wYXJhbWV0ZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbm5lbENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jaGFubmVsLWNvbmZpZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtZGF0YWZvcm0tZWMnLFxuICAgIHRlbXBsYXRlVXJsOiAnZGF0YWZvcm0tZWMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydkYXRhZm9ybS1lYy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0JzTW9kYWxTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhRm9ybUVjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIEBJbnB1dCgpIHN0ZXBfaWQ7XG4gICAgQElucHV0KCkgaXNMYXN0T25lOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgbmV4dFN0ZXA6IEZ1bmN0aW9uO1xuXG4gICAgcHJvdGVjdGVkIGNvdW50cmllc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJvdGVjdGVkIHByb3ZpbmNlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJvdGVjdGVkIGRvY3VtZW50VHlwZXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuICAgIHByb3RlY3RlZCBjb3VudHJpZXNGYWN0dXJhY2lvblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJvdGVjdGVkIHByb3ZpbmNlc0ZhY3R1cmFjaW9uU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcbiAgICBwcm90ZWN0ZWQgZG9jdW1lbnRUeXBlc0ZhY3R1cmFjaW9uU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcblxuICAgIHB1YmxpYyBjb3VudHJpZXMkID0gdGhpcy5jb3VudHJpZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBwcm92aW5jZXMkID0gdGhpcy5wcm92aW5jZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBkb2N1bWVudFR5cGVzJCA9IHRoaXMuZG9jdW1lbnRUeXBlc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGNvdW50cmllc0ZhY3R1cmFjaW9uJCA9IHRoaXMuY291bnRyaWVzRmFjdHVyYWNpb25TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBwcm92aW5jZXNGYWN0dXJhY2lvbiQgPSB0aGlzLnByb3ZpbmNlc0ZhY3R1cmFjaW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgZG9jdW1lbnRUeXBlc0ZhY3R1cmFjaW9uJCA9IHRoaXMuZG9jdW1lbnRUeXBlc0ZhY3R1cmFjaW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHB1YmxpYyByZXF1aXJlX2xvZ2luID0gZmFsc2U7XG4gICAgcHVibGljIGNoZWNrb3V0Rm9ybTogRm9ybUdyb3VwO1xuICAgIHB1YmxpYyBjaGVja291dEZvcm1GYWN0dXJhY2lvbjogRm9ybUdyb3VwO1xuICAgIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG4gICAgcHVibGljIGZvcm1fcmVhZHkgPSBmYWxzZTtcbiAgICBwdWJsaWMgYWxscmVhZHlfZGF0YSA9IGZhbHNlO1xuICAgIHB1YmxpYyBhZGRyZXNzQm9vayA9IFtdO1xuICAgIHB1YmxpYyBhZGRyZXNzQm9va1NlbGVjdGVkID0geyBpZDogMCwgbm90ZXM6IFwiXCIgfVxuICAgIHB1YmxpYyBmaW5pc2g6IGJvb2xlYW4gPSBmYWxzZTsgLy9Fc3RhIHZhcmlhYmxlIHNlIHVzYSBwYXJhIG1vc3RyYXIgZWwgYm90b24gZGUgZmluYWxpemFyLlxuXG4gICAgcHVibGljIHZhbGlkYWRvID0gZmFsc2U7XG4gICAgcHVibGljIHZpZXdEYXRhRmFjdHVyYWNpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgcHVibGljIG1vZGFsUmVmOiBCc01vZGFsUmVmIHwgbnVsbDtcbiAgICBwdWJsaWMgcGFyYW1zOiBhbnkgPSB7fTtcbiAgICBwdWJsaWMgc2VsZWN0QWRkcmVzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHBvc3RhbENvZGVQYXR0ZXJuID0gJ15bQS1aXT9bMC05XXs0fVtBLVpdezAsM30kJztcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBmYjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHB1YmxpYyB0b2FzdDogVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgYWRkcmVzc2luZ1NlcnZpY2U6IEFkZHJlc3NpbmdTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG1vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBwYXJhbXNTZXJ2aWNlOiBQYXJhbWV0ZXJzU2VydmljZSxcbiAgICAgICAgcHVibGljIGNvbnN0czogQ29uc3RhbnRzLFxuICAgICAgICBwdWJsaWMgY2hhbm5lbENvbmZpZzogQ2hhbm5lbENvbmZpZ1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lY09uQ29uc3RydWN0KClcbiAgICAgICAgdGhpcy5jaGVja291dEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgIC4uLnRoaXMuYWRkcmVzc2luZ1NlcnZpY2UuZ2V0VHlwZUZvcm0oKS5jb25maWdGb3JtLmZvcm1BZGRyZXMsXG4gICAgICAgICAgICBwb3N0Y29kZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dIC8vIFNlIGFncmVnYSBwYXJhIHF1ZSBzw7NsbyBhY2VwdGUgY8OzZGlnb3MgcG9zdGFsZXMgbWF5b3JlcyBxdWUgY2Vyb1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jaGVja291dEZvcm0uc3RhdHVzQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHsgdGhpcy5vbkZvcm1DaGFuZ2UoKTsgcmV0dXJuIHRoaXMuY2hlY2tvdXRGb3JtLnZhbGlkIH0pKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uRm9ybVZhbGlkKCkpO1xuXG4gICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRmFjdHVyYWNpb24gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgIC4uLnRoaXMuYWRkcmVzc2luZ1NlcnZpY2UuZ2V0VHlwZUZvcm0oKS5jb25maWdGb3JtLmZvcm1CaWxsaW5nLFxuICAgICAgICAgICAgcG9zdGNvZGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSAvLyBTZSBhZ3JlZ2EgcGFyYSBxdWUgc8OzbG8gYWNlcHRlIGPDs2RpZ29zIHBvc3RhbGVzIG1heW9yZXMgcXVlIGNlcm9cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRmFjdHVyYWNpb24uc3RhdHVzQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHsgdGhpcy5vbkZvcm1DaGFuZ2UoKTsgcmV0dXJuIHRoaXMuY2hlY2tvdXRGb3JtRmFjdHVyYWNpb24udmFsaWQgfSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMub25Gb3JtVmFsaWQoKSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMucGFyYW1zU2VydmljZS5wYXJhbWV0ZXJzLnN1YnNjcmliZShyZXMgPT4gdGhpcy5wYXJhbXMgPSByZXMpO1xuICAgICAgICB0aGlzLmFkZHJlc3NpbmdTZXJ2aWNlLmluaXRpYWxpemUodGhpcy5zdGVwX2lkKTtcbiAgICAgICAgY29uc3QgbG9jYWxFbWFpbCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtYWlsJylcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKSAmJiB0aGlzLmNoZWNrb3V0Rm9ybS5jb250cm9sc1snZW1haWwnXS5zZXRWYWx1ZSh0aGlzLmF1dGhTZXJ2aWNlLmdldEN1c3RvbWVyKCk/LmVtYWlsIHx8IGxvY2FsRW1haWwpO1xuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCgpICYmIHRoaXMuY2hlY2tvdXRGb3JtLmdldCgnZW1haWwnKS5kaXNhYmxlKHsgb25seVNlbGY6IHRydWUgfSk7XG4gICAgICAgIHRoaXMuYWRkcmVzc2luZ1NlcnZpY2UuZ2V0QWRkcmVzc2luZ0RhdGEoKS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICBsZXQgY291bnRyaWVzID0gdGhpcy5maWx0ZXJDb3VudHJ5QnlDb2RlKHJlcylcbiAgICAgICAgICAgIHRoaXMuY291bnRyaWVzU3ViamVjdC5uZXh0KGNvdW50cmllcyk7XG4gICAgICAgICAgICB0aGlzLmNvdW50cmllc0ZhY3R1cmFjaW9uU3ViamVjdC5uZXh0KGNvdW50cmllcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmFkZHJlc3NpbmdTZXJ2aWNlLm1vZGVTZWxlY3RBZGRyZXNzID09PSAnTE9BRF9BRERSRVNTX0FORF9TRUxFQ1RJT04nIHx8XG4gICAgICAgICAgICB0aGlzLmFkZHJlc3NpbmdTZXJ2aWNlLm1vZGVTZWxlY3RBZGRyZXNzID09PSAnT05MWV9BRERSRVNTX1NFTEVDVElPTicpIHtcblxuICAgICAgICAgICAgdGhpcy5hZGRyZXNzaW5nU2VydmljZS5nZXRBZGRyZXNzQm9vaygpLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZHJlc3NCb29rID0gcmVzIHx8IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWRkcmVzc0Jvb2spIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRBZGRyZXNzID0gdGhpcy5hZGRyZXNzQm9vay5maW5kKGFkZHJlc3MgPT4gYWRkcmVzcy5zZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEFkZHJlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtLmNvbnRyb2xzWydjb3VudHJ5Q29kZSddLnNldFZhbHVlKHNlbGVjdGVkQWRkcmVzcy5jb3VudHJ5Q29kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBvc3RhbENvZGVWYWxpZGF0aW9uKHNlbGVjdGVkQWRkcmVzcy5jb3VudHJ5Q29kZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE1vZGUoJ2NhcmdhJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvdW50cmllcyQuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja291dEZvcm0uY29udHJvbHNbJ2NvdW50cnlDb2RlJ10uc2V0VmFsdWUocmVzWzBdLmNvZGUpXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQb3N0YWxDb2RlVmFsaWRhdGlvbihyZXNbMF0uY29kZSk7XG5cbiAgICAgICAgICAgICAgICAvLyBQcm92aW5jaWFcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0Rm9ybS5jb250cm9sc1sncHJvdmluY2VDb2RlJ10uc2V0VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgIHJlc1swXT8ucHJvdmluY2VzWzBdLmNvZGVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgdGhpcy5wcm92aW5jZXNTdWJqZWN0Lm5leHQocmVzWzBdPy5wcm92aW5jZXMpXG5cbiAgICAgICAgICAgICAgICAvLyBEb2N1bWVudG9cbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0Rm9ybS5jb250cm9sc1snZG9jdW1lbnRUeXBlJ10uc2V0VmFsdWUocmVzWzBdPy5kb2N1bWVudFR5cGVzWzBdLmNvZGUpXG4gICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudFR5cGVzU3ViamVjdC5uZXh0KHJlc1swXT8uZG9jdW1lbnRUeXBlcylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICB0aGlzLmVjT25Jbml0KClcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGZpbHRyYSBsb3MgcGFpc2VzIGRlIGFjdWVyZG8gYWwgYSBsb3MgY29kaWdvcyByZXRvcm5hZG9zIGVuIGxhIGZ1bmNpb24gZ2V0Q291bnRyaWVzLlxuICAgICAqIENhc29zIGRlIHVzb3M6IFNpIGdldENvdW50cmllcyBlcyB2YWNpbywgcmV0b3JuYSBlbCBhcnJlZ2xvIHF1ZSBpbmdyZXNhIHBvciBwYXJhbWV0cm8uXG4gICAgICogU2kgZ2V0Q291bnRyaWVzIGNvbnRpZW5lIHZhbG9yZXMgcXVlIG5vIGNvaW5jaWRlbiwgcmV0b3JuYSBlbCBhcnJlZ2xvIHF1ZSBpbmdyZXNhIHBvciBwYXJhbWV0cm8uXG4gICAgICogRGUgbG8gY29udHJhcmlvIHJldG9ybmEgbG9zIHZhbG9yZXMgZmlsdHJhZG9zLlxuICAgICAqIEBwYXJhbSBjb3VudHJpZXMgQXJyZWdsbyBxdWUgY29udGllbmUgbG9zIGNvdW50cmllcyByZWNpYmlkb3MgZW4gbGEgc3Vic2NyaXBjaW9uIGRlbCBvYnNlcnZhYmxlLlxuICAgICAqIEByZXR1cm5zIHVuIGFycmVnbG8gZGUgY291bnRyaWVzLlxuICAgICAqL1xuICAgIHByaXZhdGUgZmlsdGVyQ291bnRyeUJ5Q29kZSA9IChjb3VudHJpZXM6IGFueVtdKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbnN0cy5nZXRDb3VudHJpZXMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgY291bnRyaWVzRmlsdGVyZWQgPSBjb3VudHJpZXMuZmlsdGVyKGVsZW0gPT4gdGhpcy5jb25zdHMuZ2V0Q291bnRyaWVzKCkuaW5jbHVkZXMoZWxlbS5jb2RlKSlcbiAgICAgICAgICAgIGlmIChjb3VudHJpZXNGaWx0ZXJlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50cmllc0ZpbHRlcmVkXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VsL2xvcyBjb2RpZ28vcyBpbmdyZXNhZG8vcyBubyBjb2luY2lkZW4gY29uIGxvcyBwcm92aXN0b3MgZGVzZGUgZWwgYmFja2VuZCcpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50cmllc1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY291bnRyaWVzXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93Rm9ybUZhY3R1cmFjaW9uID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnZpZXdEYXRhRmFjdHVyYWNpb24gPSAhdGhpcy52aWV3RGF0YUZhY3R1cmFjaW9uXG4gICAgICAgIGlmICghdGhpcy52aWV3RGF0YUZhY3R1cmFjaW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNvdW50cmllc0ZhY3R1cmFjaW9uJC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRmFjdHVyYWNpb24uY29udHJvbHNbJ2NvdW50cnlDb2RlJ10uc2V0VmFsdWUocmVzWzBdLmNvZGUpXG5cbiAgICAgICAgICAgICAgICAgICAgLy8gUHJvdmluY2lhXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRmFjdHVyYWNpb24uY29udHJvbHNbJ3Byb3ZpbmNlQ29kZSddLnNldFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzWzBdPy5wcm92aW5jZXNbMF0uY29kZVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvdmluY2VzRmFjdHVyYWNpb25TdWJqZWN0Lm5leHQocmVzWzBdPy5wcm92aW5jZXMpXG5cbiAgICAgICAgICAgICAgICAgICAgLy8gRG9jdW1lbnRvXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRmFjdHVyYWNpb24uY29udHJvbHNbJ2RvY3VtZW50VHlwZSddLnNldFZhbHVlKHJlc1swXT8uZG9jdW1lbnRUeXBlc1swXS5jb2RlKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50VHlwZXNGYWN0dXJhY2lvblN1YmplY3QubmV4dChyZXNbMF0/LmRvY3VtZW50VHlwZXMpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uRm9ybUNoYW5nZSgpXG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdEYXRhRmFjdHVyYWNpb25cbiAgICB9XG5cbiAgICBvbkZvcm1WYWxpZCA9ICgpID0+IHtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb3JtQ2hhbmdlKCkge1xuICAgICAgICBpZiAodGhpcy5jaGVja291dEZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy52aWV3RGF0YUZhY3R1cmFjaW9uICYmIHRoaXMuY2hlY2tvdXRGb3JtRmFjdHVyYWNpb24udmFsaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYWRvID0gdHJ1ZVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMudmlld0RhdGFGYWN0dXJhY2lvbiAmJiB0aGlzLmNoZWNrb3V0Rm9ybS52YWxpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhZG8gPSB0cnVlXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWxpZGFkbyA9IGZhbHNlXG4gICAgfVxuXG4gICAgb25JbnB1dENoYW5nZSA9ICgpID0+IHRoaXMuZm9ybV9yZWFkeSA9IGZhbHNlO1xuXG4gICAgb25Db3VudHJ5U2VsZWN0ZWQgPSAodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5jaGVja291dEZvcm0uY29udHJvbHNbJ2NvdW50cnlDb2RlJ10uc2V0VmFsdWUodmFsdWUgPT0gJ251bGwnID8gbnVsbCA6IHZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGVja291dEZvcm0uY29udHJvbHNbJ3Byb3ZpbmNlQ29kZSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB0aGlzLmNoZWNrb3V0Rm9ybS5jb250cm9sc1snZG9jdW1lbnRUeXBlJ10uc2V0VmFsdWUoJycpO1xuXG4gICAgICAgIGxldCBzZWxlY3RlZENvdW50cnkgPSB0aGlzLmNvdW50cmllc1N1YmplY3QudmFsdWUuZmluZChjb3VudHJ5ID0+IGNvdW50cnkuY29kZSA9PSB2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHNlbGVjdGVkQ291bnRyeSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQb3N0YWxDb2RlVmFsaWRhdGlvbihzZWxlY3RlZENvdW50cnkuY29kZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvL1Byb3ZpbmNlc1xuICAgICAgICBsZXQgcHJvdmluY2VzID0gdmFsdWUgJiYgdmFsdWUgIT0gJ251bGwnID9cbiAgICAgICAgICAgIHRoaXMuY291bnRyaWVzU3ViamVjdC52YWx1ZS5maW5kKGNvdW50cnkgPT4gY291bnRyeS5jb2RlID09IHZhbHVlKS5wcm92aW5jZXNcbiAgICAgICAgICAgIDpcbiAgICAgICAgICAgIFtdXG4gICAgICAgIHRoaXMucHJvdmluY2VzU3ViamVjdC5uZXh0KHByb3ZpbmNlcyk7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtLmNvbnRyb2xzWydwcm92aW5jZUNvZGUnXS5zZXRWYWx1ZShwcm92aW5jZXNbMF0uY29kZSlcblxuICAgICAgICAvL0RvY3VtZW50IHR5cGVzXG4gICAgICAgIGxldCBkb2N1bWVudFR5cGVzID0gdmFsdWUgJiYgdmFsdWUgIT0gJ251bGwnID9cbiAgICAgICAgICAgIHRoaXMuY291bnRyaWVzU3ViamVjdC52YWx1ZS5maW5kKGNvdW50cnkgPT4gY291bnRyeS5jb2RlID09IHZhbHVlKS5kb2N1bWVudFR5cGVzXG4gICAgICAgICAgICA6XG4gICAgICAgICAgICBbXVxuICAgICAgICB0aGlzLmRvY3VtZW50VHlwZXNTdWJqZWN0Lm5leHQoZG9jdW1lbnRUeXBlcyk7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtLmNvbnRyb2xzWydkb2N1bWVudFR5cGUnXS5zZXRWYWx1ZShkb2N1bWVudFR5cGVzWzBdLmNvZGUpXG5cbiAgICB9XG5cbiAgICBvbkNvdW50cnlTZWxlY3RlZEZhY3R1cmFjaW9uID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRmFjdHVyYWNpb24uY29udHJvbHNbJ2NvdW50cnlDb2RlJ10uc2V0VmFsdWUodmFsdWUgPT0gJ251bGwnID8gbnVsbCA6IHZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGVja291dEZvcm1GYWN0dXJhY2lvbi5jb250cm9sc1sncHJvdmluY2VDb2RlJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtRmFjdHVyYWNpb24uY29udHJvbHNbJ2RvY3VtZW50VHlwZSddLnNldFZhbHVlKCcnKTtcblxuICAgICAgICAvL1Byb3ZpbmNlc1xuICAgICAgICBsZXQgcHJvdmluY2VzID0gdmFsdWUgJiYgdmFsdWUgIT0gJ251bGwnID9cbiAgICAgICAgICAgIHRoaXMuY291bnRyaWVzRmFjdHVyYWNpb25TdWJqZWN0LnZhbHVlLmZpbmQoY291bnRyeSA9PiBjb3VudHJ5LmNvZGUgPT0gdmFsdWUpLnByb3ZpbmNlc1xuICAgICAgICAgICAgOlxuICAgICAgICAgICAgW11cbiAgICAgICAgdGhpcy5wcm92aW5jZXNGYWN0dXJhY2lvblN1YmplY3QubmV4dChwcm92aW5jZXMpO1xuICAgICAgICB0aGlzLmNoZWNrb3V0Rm9ybUZhY3R1cmFjaW9uLmNvbnRyb2xzWydwcm92aW5jZUNvZGUnXS5zZXRWYWx1ZShwcm92aW5jZXNbMF0uY29kZSlcblxuICAgICAgICAvL0RvY3VtZW50IHR5cGVzXG4gICAgICAgIGxldCBkb2N1bWVudFR5cGVzID0gdmFsdWUgJiYgdmFsdWUgIT0gJ251bGwnID9cbiAgICAgICAgICAgIHRoaXMuY291bnRyaWVzRmFjdHVyYWNpb25TdWJqZWN0LnZhbHVlLmZpbmQoY291bnRyeSA9PiBjb3VudHJ5LmNvZGUgPT0gdmFsdWUpLmRvY3VtZW50VHlwZXNcbiAgICAgICAgICAgIDpcbiAgICAgICAgICAgIFtdXG4gICAgICAgIHRoaXMuZG9jdW1lbnRUeXBlc0ZhY3R1cmFjaW9uU3ViamVjdC5uZXh0KGRvY3VtZW50VHlwZXMpO1xuICAgICAgICB0aGlzLmNoZWNrb3V0Rm9ybUZhY3R1cmFjaW9uLmNvbnRyb2xzWydkb2N1bWVudFR5cGUnXS5zZXRWYWx1ZShkb2N1bWVudFR5cGVzWzBdLmNvZGUpXG4gICAgfVxuXG4gICAgb25Qcm92aW5jZXNTZWxlY3RlZCA9ICh2YWx1ZSkgPT4gdGhpcy5jaGVja291dEZvcm0uY29udHJvbHNbJ3Byb3ZpbmNlQ29kZSddLnNldFZhbHVlKHZhbHVlID09ICdudWxsJyA/IG51bGwgOiB2YWx1ZSk7XG5cbiAgICBvblByb3ZpbmNlc1NlbGVjdGVkRmFjdHVyYWNpb24gPSAodmFsdWUpID0+IHRoaXMuY2hlY2tvdXRGb3JtRmFjdHVyYWNpb24uY29udHJvbHNbJ3Byb3ZpbmNlQ29kZSddLnNldFZhbHVlKHZhbHVlID09ICdudWxsJyA/IG51bGwgOiB2YWx1ZSk7XG5cbiAgICBvbkRvY3VtZW50VHlwZXNTZWxlY3RlZCA9ICh2YWx1ZSkgPT4gdGhpcy5jaGVja291dEZvcm0uY29udHJvbHNbJ2RvY3VtZW50VHlwZSddLnNldFZhbHVlKHZhbHVlID09ICcnID8gJycgOiB2YWx1ZSk7XG5cbiAgICBvbkRvY3VtZW50VHlwZXNTZWxlY3RlZEZhY3R1cmFjaW9uID0gKHZhbHVlKSA9PiB0aGlzLmNoZWNrb3V0Rm9ybS5jb250cm9sc1snZG9jdW1lbnRUeXBlJ10uc2V0VmFsdWUodmFsdWUgPT0gJycgPyAnJyA6IHZhbHVlKTtcblxuICAgIHZlcmlmeVZhbGlkYXRlID0gYXN5bmMgKGUsIGl0ZW1zKSA9PiB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJWZXJpZnlpbmc6IFwiLCBlKVxuICAgICAgICB0aGlzLnJlcXVpcmVfbG9naW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRGb3JtLmNvbnRyb2xzWydlbWFpbCddLnNldFZhbHVlKGUpO1xuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKSAmJiB0aGlzLmNoZWNrb3V0Rm9ybS5nZXQoJ2VtYWlsJykuZGlzYWJsZSh7IG9ubHlTZWxmOiB0cnVlIH0pO1xuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY2hlY2tvdXRGb3JtLnZhbGlkKSB7XG4gICAgICAgICAgICAvLyBpZiAodGhpcy5jYXJ0U2VydmljZS5jaGFubmVsQ29uZmlnLmFwcGx5T3JkZXJMb3Qpe1xuICAgICAgICAgICAgLy8gIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAvLyAgICAgICBpZiAoIWl0ZW0ubG90WzBdKXtcbiAgICAgICAgICAgIC8vICAgICAgLy8gICAgY29uc29sZS5sb2codGhpcy5jaGVja291dEZvcm0uY29udHJvbHNbJ2NpdHknXVsndmFsdWUnXSlcbiAgICAgICAgICAgIC8vICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkVG9Mb3QoaXRlbS5wcm9kdWN0LDAsaXRlbS52YXJpYW50X2lkLDAsaXRlbS5pdGVtX2lkLGl0ZW0ucXVhbnRpdHksaXRlbS5wcm9kdWN0LnByaWNlLGl0ZW0ucXVhbnRpdHksaXRlbS5kaXNjb3VudCxpdGVtLnByb2R1Y3QucHJpY2UqaXRlbS5xdWFudGl0eSwnbmV3JywnJywnJywwLHRoaXMuY2hlY2tvdXRGb3JtLmNvbnRyb2xzWydjaXR5J11bJ3ZhbHVlJ10rICcgLSAnICsgdGhpcy5jaGVja291dEZvcm0uY29udHJvbHNbJ3N0cmVldCddWyd2YWx1ZSddLCAnbmV3bG90Jyk7XG4gICAgICAgICAgICAvLyAgICAgICB9XG4gICAgICAgICAgICAvLyAgIH0pO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgdGhpcy5lbWl0UmVzdWx0KCk7XG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgdGhpcy5zaG93RXJyb3IoJ2ludmFsaWQtZm9ybScpO1xuICAgIH1cblxuICAgIHNob3dFcnJvciA9IChlcnJvcl9tZXNzYWdlKSA9PiB7IHRoaXMudG9hc3Quc2hvdyhlcnJvcl9tZXNzYWdlKTsgcmV0dXJuIHRydWU7IH1cblxuICAgIHByb3RlY3RlZCBlbWl0UmVzdWx0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICBsZXQgZGF0YTogYW55ID0geyBzaGlwcGluZ0FkZHJlc3M6IHsgLi4udGhpcy5jaGVja291dEZvcm0uZ2V0UmF3VmFsdWUoKSwgcGhvbmVOdW1iZXI6IHRoaXMuY2hlY2tvdXRGb3JtLnZhbHVlLnBob25lTnVtYmVyLnRvU3RyaW5nKCkgfSwgbm90ZXM6ICh0aGlzLmNoZWNrb3V0Rm9ybS5nZXRSYXdWYWx1ZSgpKS5ub3RlcyB9O1xuICAgICAgICBpZiAoIXRoaXMudmlld0RhdGFGYWN0dXJhY2lvbiAmJiB0aGlzLmNoZWNrb3V0Rm9ybUZhY3R1cmFjaW9uLnZhbGlkKSBkYXRhID0geyAuLi5kYXRhLCBub3RlczogZGF0YS5ub3RlcywgYmlsbGluZ0FkZHJlc3M6IHRoaXMuY2hlY2tvdXRGb3JtRmFjdHVyYWNpb24uZ2V0UmF3VmFsdWUoKSB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWRkcmVzc2luZ1NlcnZpY2Uuc2V0QWRkcmVzcyhkYXRhKTtcblxuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVpcmVfbG9naW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc2hvdygnRWwgZW1haWwgeWEgZXN0w6EgcmVnaXN0cmFkbywgaW5pY2llIHNlc2nDs24uJylcblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0ICE9PSBmYWxzZSAmJiByZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybV9yZWFkeSA9IHRydWVcbiAgICAgICAgICAgICAgICB0aGlzLmFsbHJlYWR5X2RhdGEgPSB0cnVlXG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0U3RlcCgpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBjYXRjaCAoZSkgeyB0aGlzLnRvYXN0LnNob3coJ29wZXJhdGlvbi1lcnJvcicpIH1cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb3Blbk1vZGFsKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMubW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5zaG93KHRlbXBsYXRlLCB7IGNsYXNzOiAnbW9kYWwtbGcgJywga2V5Ym9hcmQ6IGZhbHNlLCBiYWNrZHJvcDogJ3N0YXRpYycgfSk7XG4gICAgfVxuXG4gICAgc2V0U2VsZWN0QWRkcmVzcyA9IChhZGRyZXNzU2VsZWN0OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5hZGRyZXNzQm9vay5tYXAoYWRkcmVzcyA9PiBhZGRyZXNzLnNlbGVjdGVkID0gYWRkcmVzcy5pZCA9PT0gYWRkcmVzc1NlbGVjdC5pZClcbiAgICAgICAgdGhpcy5hZGRyZXNzQm9va1NlbGVjdGVkLmlkID0gdGhpcy5hZGRyZXNzQm9vay5maW5kKGFkZHJlc3MgPT4gYWRkcmVzcy5zZWxlY3RlZCkuaWQgfHwgMFxuICAgIH1cblxuICAgIHVwZGF0ZVBvc3RhbENvZGVWYWxpZGF0aW9uKGNvdW50cnlDb2RlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcG9zdGFsQ29kZVBhdHRlcm4gPSB0aGlzLmNvbnN0cy5nZXRQb3N0YWxDb2RlUGF0dGVybihjb3VudHJ5Q29kZSkgfHwgJy4qJztcbiAgICAgICAgdGhpcy5jaGVja291dEZvcm0uY29udHJvbHNbJ3Bvc3Rjb2RlJ10uc2V0VmFsaWRhdG9ycyhbXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKHBvc3RhbENvZGVQYXR0ZXJuKVxuICAgICAgICBdKTtcbiAgICAgICAgdGhpcy5jaGVja291dEZvcm0uY29udHJvbHNbJ3Bvc3Rjb2RlJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cblxuICAgIHNlbGVjdEFkZHJlc3MgPSBhc3luYyAoaXRlbXMpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgbGV0IGFkZHJlc3NTZWxlY3RlZCA9IHRoaXMuYWRkcmVzc0Jvb2suZmluZChhZGRyZXNzID0+IGFkZHJlc3Muc2VsZWN0ZWQpXG4gICAgICAgIGlmIChhZGRyZXNzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFkZHJlc3NCb29rU2VsZWN0ZWQuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRyZXNzQm9va1NlbGVjdGVkLmlkID0gYWRkcmVzc1NlbGVjdGVkLmlkIHx8IDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuYWRkcmVzc0Jvb2tTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgc2hpcHBpbmdBZGRyZXNzOiBhZGRyZXNzU2VsZWN0ZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0U2VkZSA9IGF3YWl0IHRoaXMuYWRkcmVzc2luZ1NlcnZpY2Uuc2V0SGVhZHF1YXJ0ZXIocmVxdWVzdCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdFNlZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FydFNlcnZpY2UuY2hhbm5lbENvbmZpZy5hcHBseU9yZGVyTG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXRlbS5sb3RbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coaXRlbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRUb0xvdChpdGVtLnByb2R1Y3QsIDAsIGl0ZW0udmFyaWFudF9pZCwgMCwgaXRlbS5pdGVtX2lkLCBpdGVtLnF1YW50aXR5LCBpdGVtLnByb2R1Y3QucHJpY2UsIGl0ZW0ucXVhbnRpdHksIGl0ZW0uZGlzY291bnQsIGl0ZW0ucHJvZHVjdC5wcmljZSAqIGl0ZW0ucXVhbnRpdHksICduZXcnLCAnJywgJycsIDAsIHJlc3VsdFNlZGUuc2hpcHBpbmdBZGRyZXNzLmNpdHkgKyAnIC0gJyArIHJlc3VsdFNlZGUuc2hpcHBpbmdBZGRyZXNzLnN0cmVldCwgJ25ld2xvdCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybV9yZWFkeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxscmVhZHlfZGF0YSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dFN0ZXAoKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc2hvdygnb3BlcmF0aW9uLWVycm9yJylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7IHRoaXMudG9hc3Quc2hvdygnb3BlcmF0aW9uLWVycm9yJykgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93RXJyb3IoJ2ludmFsaWQtZm9ybScpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0TW9kZSA9ICgpID0+IHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmFkZHJlc3NpbmdTZXJ2aWNlLm1vZGVTZWxlY3RBZGRyZXNzKSB7XG4gICAgICAgICAgICBjYXNlICdPTkxZX0xPQURfQUREUkVTUyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIGNhc2UgJ09OTFlfQUREUkVTU19TRUxFQ1RJT04nOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgY2FzZSAnTE9BRF9BRERSRVNTX0FORF9TRUxFQ1RJT04nOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdEFkZHJlc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuICAgIHBydWViYSh4KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKHgpO1xuICAgIH1cblxuICAgIHNldE1vZGUgPSAobW9kZSkgPT4gdGhpcy5zZWxlY3RBZGRyZXMgPSBtb2RlID09IFwiY2FyZ2FcIlxuXG4gICAgZ2V0Q291bnRyeSA9IChjb2RlKSA9PiB0aGlzLmFkZHJlc3NpbmdTZXJ2aWNlLmNvdW50cmllc0xpc3QuZmluZChwYWlzZXMgPT4gcGFpc2VzLmNvZGUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhjb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkpKT8ubmFtZSB8fCBcIlwiXG5cbiAgICBnZXRQcm92aW5jZSA9IChjb2RlKSA9PiB0aGlzLmFkZHJlc3NpbmdTZXJ2aWNlLnByb3ZpbmNlTGlzdC5maW5kKGN0ID0+IGN0LmNvZGUgPT0gY29kZSk/Lm5hbWUgfHwgXCJcIlxuXG4gICAgZ2V0RG9jdW1lbnRUeXBlID0gKGNvZGUpID0+IHRoaXMuYWRkcmVzc2luZ1NlcnZpY2UuZG9jdW1lbnRUeXBlcy5maW5kKGR0ID0+IGR0LmNvZGUgPT0gY29kZSk/Lm5hbWUgfHwgXCJcIlxuXG4gICAgZ2V0TGFiZWxOb3Rlc1BhcmFtID0gKCkgPT4gdGhpcy5oYXNQYXJhbXModGhpcy5wYXJhbXMsICdsYWJlbF9ub3Rlc18nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJ18nICsgdGhpcy5jb25zdHMuZ2V0TG9jYWxlKCkuc3BsaXQoJ18nKVswXSlcblxuICAgIGdldFBhcmFtQnlDaGFubmVsQW5kTGFuZ3VhZ2UgPSAobmFtZVBhcmFtKSA9PiB0aGlzLmhhc1BhcmFtcyh0aGlzLnBhcmFtcywgbmFtZVBhcmFtICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJ18nICsgdGhpcy5jb25zdHMuZ2V0TG9jYWxlKCkuc3BsaXQoJ18nKVswXSlcbn1cbiJdfQ==
|
|
@@ -516,6 +516,15 @@ let Constants = class Constants {
|
|
|
516
516
|
*/
|
|
517
517
|
this.setSortFilters = (filtersCode = ['all']) => this.sortFilters = filtersCode;
|
|
518
518
|
this.getSortFilters = () => this.sortFilters;
|
|
519
|
+
this.postalCodePatterns = {
|
|
520
|
+
'AR': /^[0-9]{4}$/,
|
|
521
|
+
'UY': /^[0-9]{5}$/,
|
|
522
|
+
'GB': /^[A-Z]{1,2}[0-9][A-Z0-9]?\s?[0-9][A-Z]{2}$/,
|
|
523
|
+
'ES': /^(?:0[1-9]|[1-4]\d|5[0-2])\d{3}$/,
|
|
524
|
+
'BR': /^[0-9]{5}-[0-9]{3}$/,
|
|
525
|
+
'FR': /^[0-9]{5}$/,
|
|
526
|
+
'PT': /^[0-9]{4}-[0-9]{3}$/,
|
|
527
|
+
};
|
|
519
528
|
}
|
|
520
529
|
/**
|
|
521
530
|
*
|
|
@@ -550,6 +559,9 @@ let Constants = class Constants {
|
|
|
550
559
|
: params.find(param => param.code == (prefix + searched + suffix) || param.code == searched);
|
|
551
560
|
}
|
|
552
561
|
;
|
|
562
|
+
getPostalCodePattern(countryCode) {
|
|
563
|
+
return this.postalCodePatterns[countryCode] || /^[A-Za-z0-9\s\-]+$/;
|
|
564
|
+
}
|
|
553
565
|
};
|
|
554
566
|
Constants.ctorParameters = () => [
|
|
555
567
|
{ type: TranslateService },
|
|
@@ -6739,7 +6751,7 @@ let DataFormEcComponent = class DataFormEcComponent extends ComponentHelper {
|
|
|
6739
6751
|
this.viewDataFacturacion = true;
|
|
6740
6752
|
this.params = {};
|
|
6741
6753
|
this.selectAddres = false;
|
|
6742
|
-
this.postalCodePattern = '^[
|
|
6754
|
+
this.postalCodePattern = '^[A-Z]?[0-9]{4}[A-Z]{0,3}$';
|
|
6743
6755
|
/**
|
|
6744
6756
|
* @description filtra los paises de acuerdo al a los codigos retornados en la funcion getCountries.
|
|
6745
6757
|
* Casos de usos: Si getCountries es vacio, retorna el arreglo que ingresa por parametro.
|
|
@@ -6789,6 +6801,10 @@ let DataFormEcComponent = class DataFormEcComponent extends ComponentHelper {
|
|
|
6789
6801
|
this.checkoutForm.controls['countryCode'].setValue(value == 'null' ? null : value);
|
|
6790
6802
|
this.checkoutForm.controls['provinceCode'].setValue(null);
|
|
6791
6803
|
this.checkoutForm.controls['documentType'].setValue('');
|
|
6804
|
+
let selectedCountry = this.countriesSubject.value.find(country => country.code == value);
|
|
6805
|
+
if (selectedCountry) {
|
|
6806
|
+
this.updatePostalCodeValidation(selectedCountry.code);
|
|
6807
|
+
}
|
|
6792
6808
|
//Provinces
|
|
6793
6809
|
let provinces = value && value != 'null' ?
|
|
6794
6810
|
this.countriesSubject.value.find(country => country.code == value).provinces
|
|
@@ -6937,12 +6953,12 @@ let DataFormEcComponent = class DataFormEcComponent extends ComponentHelper {
|
|
|
6937
6953
|
this.getLabelNotesParam = () => this.hasParams(this.params, 'label_notes_' + this.consts.getChannel() + '_' + this.consts.getLocale().split('_')[0]);
|
|
6938
6954
|
this.getParamByChannelAndLanguage = (nameParam) => this.hasParams(this.params, nameParam + this.consts.getChannel() + '_' + this.consts.getLocale().split('_')[0]);
|
|
6939
6955
|
this.ecOnConstruct();
|
|
6940
|
-
this.checkoutForm = this.fb.group(Object.assign(Object.assign({}, this.addressingService.getTypeForm().configForm.formAddres), { postcode: ['', [Validators.required
|
|
6956
|
+
this.checkoutForm = this.fb.group(Object.assign(Object.assign({}, this.addressingService.getTypeForm().configForm.formAddres), { postcode: ['', [Validators.required]] // Se agrega para que sólo acepte códigos postales mayores que cero
|
|
6941
6957
|
}));
|
|
6942
6958
|
this.checkoutForm.statusChanges
|
|
6943
6959
|
.pipe(filter(() => { this.onFormChange(); return this.checkoutForm.valid; }))
|
|
6944
6960
|
.subscribe(() => this.onFormValid());
|
|
6945
|
-
this.checkoutFormFacturacion = this.fb.group(Object.assign(Object.assign({}, this.addressingService.getTypeForm().configForm.formBilling), { postcode: ['', [Validators.required
|
|
6961
|
+
this.checkoutFormFacturacion = this.fb.group(Object.assign(Object.assign({}, this.addressingService.getTypeForm().configForm.formBilling), { postcode: ['', [Validators.required]] // Se agrega para que sólo acepte códigos postales mayores que cero
|
|
6946
6962
|
}));
|
|
6947
6963
|
this.checkoutFormFacturacion.statusChanges
|
|
6948
6964
|
.pipe(filter(() => { this.onFormChange(); return this.checkoutFormFacturacion.valid; }))
|
|
@@ -6960,15 +6976,27 @@ let DataFormEcComponent = class DataFormEcComponent extends ComponentHelper {
|
|
|
6960
6976
|
this.countriesSubject.next(countries);
|
|
6961
6977
|
this.countriesFacturacionSubject.next(countries);
|
|
6962
6978
|
});
|
|
6963
|
-
(this.addressingService.modeSelectAddress
|
|
6964
|
-
|
|
6965
|
-
|
|
6966
|
-
this.addressBook
|
|
6979
|
+
if (this.addressingService.modeSelectAddress === 'LOAD_ADDRESS_AND_SELECTION' ||
|
|
6980
|
+
this.addressingService.modeSelectAddress === 'ONLY_ADDRESS_SELECTION') {
|
|
6981
|
+
this.addressingService.getAddressBook().then(res => {
|
|
6982
|
+
this.addressBook = res || null;
|
|
6983
|
+
if (this.addressBook) {
|
|
6984
|
+
const selectedAddress = this.addressBook.find(address => address.selected);
|
|
6985
|
+
if (selectedAddress) {
|
|
6986
|
+
this.checkoutForm.controls['countryCode'].setValue(selectedAddress.countryCode);
|
|
6987
|
+
this.updatePostalCodeValidation(selectedAddress.countryCode);
|
|
6988
|
+
}
|
|
6989
|
+
}
|
|
6990
|
+
else {
|
|
6991
|
+
this.setMode('carga');
|
|
6992
|
+
}
|
|
6967
6993
|
});
|
|
6994
|
+
}
|
|
6968
6995
|
this.countries$.subscribe(res => {
|
|
6969
6996
|
var _a, _b, _c, _d;
|
|
6970
6997
|
if (res && res.length > 0) {
|
|
6971
6998
|
this.checkoutForm.controls['countryCode'].setValue(res[0].code);
|
|
6999
|
+
this.updatePostalCodeValidation(res[0].code);
|
|
6972
7000
|
// Provincia
|
|
6973
7001
|
this.checkoutForm.controls['provinceCode'].setValue((_a = res[0]) === null || _a === void 0 ? void 0 : _a.provinces[0].code);
|
|
6974
7002
|
this.provincesSubject.next((_b = res[0]) === null || _b === void 0 ? void 0 : _b.provinces);
|
|
@@ -6995,6 +7023,14 @@ let DataFormEcComponent = class DataFormEcComponent extends ComponentHelper {
|
|
|
6995
7023
|
openModal(template) {
|
|
6996
7024
|
this.modalRef = this.modalService.show(template, { class: 'modal-lg ', keyboard: false, backdrop: 'static' });
|
|
6997
7025
|
}
|
|
7026
|
+
updatePostalCodeValidation(countryCode) {
|
|
7027
|
+
const postalCodePattern = this.consts.getPostalCodePattern(countryCode) || '.*';
|
|
7028
|
+
this.checkoutForm.controls['postcode'].setValidators([
|
|
7029
|
+
Validators.required,
|
|
7030
|
+
Validators.pattern(postalCodePattern)
|
|
7031
|
+
]);
|
|
7032
|
+
this.checkoutForm.controls['postcode'].updateValueAndValidity();
|
|
7033
|
+
}
|
|
6998
7034
|
prueba(x) {
|
|
6999
7035
|
console.log(x);
|
|
7000
7036
|
}
|