ng-pli-commons 0.0.1406 → 0.0.1409
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/esm2020/lib/services/pli-cnf-support-document-category.service.mjs +1 -1
- package/esm2020/lib/services/token.service.mjs +3 -1
- package/esm2020/version.mjs +8 -8
- package/fesm2015/ng-pli-commons.mjs +9 -7
- package/fesm2015/ng-pli-commons.mjs.map +1 -1
- package/fesm2020/ng-pli-commons.mjs +9 -7
- package/fesm2020/ng-pli-commons.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
|
|
|
44
44
|
type: Inject,
|
|
45
45
|
args: ['environment']
|
|
46
46
|
}] }, { type: i1.HttpClient }]; } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxpLWNuZi1zdXBwb3J0LWRvY3VtZW50LWNhdGVnb3J5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wbGktY29tbW9ucy9zcmMvbGliL3NlcnZpY2VzL3BsaS1jbmYtc3VwcG9ydC1kb2N1bWVudC1jYXRlZ29yeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMkIsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU9uRCxNQUFNLE9BQU8sb0NBQW9DO0lBR2hELFlBQTJDLFdBQVcsRUFBVSxVQUFzQjtRQUEzQyxnQkFBVyxHQUFYLFdBQVcsQ0FBQTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFGOUUsWUFBTyxHQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsK0JBQStCLENBQUM7SUFDVSxDQUFDO0lBRTFGLE9BQU87UUFDTixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQWtCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxtQkFBbUIsRUFBRTtZQUM5RCxNQUFNLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNqRSxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxDQUFDLDZCQUE0RDtRQUNoRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxFQUFFLDZCQUE2QixDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFVO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLEVBQUU7WUFDM0QsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDakQsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELDRCQUE0QixDQUFDLE1BQWMsRUFBRSxNQUFjLEVBQUUsVUFBbUI7UUFDL0UsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLG9CQUFvQixFQUFFO1lBQy9ELE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRTtpQkFDdEIsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ2hDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUNoQyxHQUFHLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUMxQyxDQUFDLENBQUM7SUFDSixDQUFDOztpSUFoQ1csb0NBQW9DLGtCQUc1QixhQUFhO3FJQUhyQixvQ0FBb0MsY0FGcEMsTUFBTTsyRkFFTixvQ0FBb0M7a0JBSGhELFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCOzswQkFJYSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBsaUNuZlN1cHBvcnREb2N1bWVudENhdGVnb3J5IH0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQbGlDbmZTdXBwb3J0RG9jdW1lbnRDYXRlZ29yeVNlcnZpY2Uge1xyXG5cdHByaXZhdGUgdXJsQmFzZTogc3RyaW5nID1cclxuXHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAncGxpQ25mU3VwcG9ydERvY3VtZW50Q2F0ZWdvcnknO1xyXG5cdGNvbnN0cnVjdG9yKEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudCwgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7fVxyXG5cclxuXHRmaW5kQWxsKCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLnVybEJhc2UgKyAnL2ZpbmRBbGwnKTtcclxuXHR9XHJcblxyXG5cdGZpbmRCeVByb21Db2RpZ28ocHJvbUNvZGlnbzogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KHRoaXMudXJsQmFzZSArICcvZmluZEJ5UHJvbUNvZGlnbycsIHtcclxuXHRcdFx0cGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgncHJvbUNvZGlnbycsIHByb21Db2RpZ28udG9TdHJpbmcoKSlcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0c2F2ZShwbGlDbmZTdXBwb3J0RG9jdW1lbnRDYXRlZ29yeTogUGxpQ25mU3VwcG9ydERvY3VtZW50Q2F0ZWdvcnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KHRoaXMudXJsQmFzZSArICcvc2F2ZScsIHBsaUNuZlN1cHBvcnREb2N1bWVudENhdGVnb3J5KTtcclxuXHR9XHJcblxyXG5cdGRlbGV0ZUJ5SWQoaWQ6IG51bWJlcikge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5kZWxldGUodGhpcy51cmxCYXNlICsgJy9kZWxldGVCeUlkJywge1xyXG5cdFx0XHRwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdpZCcsIGlkLnRvU3RyaW5nKCkpXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGNsb25pbmdTdXBwb3J0RG9jc0NhdGVnb3JpZXMob2xkUFBQOiBudW1iZXIsIG5ld1BQUDogbnVtYmVyLCBpZENhdGVnb3J5PzogbnVtYmVyKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLnVybEJhc2UgKyAnL2Nsb25pbmdDYXRlZ29yaWVzJywge1xyXG5cdFx0XHRwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKClcclxuXHRcdFx0XHQuc2V0KCdvbGRQUFAnLCBvbGRQUFAudG9TdHJpbmcoKSlcclxuXHRcdFx0XHQuc2V0KCduZXdQUFAnLCBuZXdQUFAudG9TdHJpbmcoKSlcclxuXHRcdFx0XHQuc2V0KCdpZENhdGVnb3J5JywgaWRDYXRlZ29yeS50b1N0cmluZygpKVxyXG5cdFx0fSk7XHJcblx0fVxyXG59XHJcbiJdfQ==
|
|
@@ -723,6 +723,8 @@ export class TokenService {
|
|
|
723
723
|
[valueToken, valueToCompare] = replacedTokens.split(operator[0]);
|
|
724
724
|
// Se limpia el string correspondiente al array para que los elementos queden separados por ","
|
|
725
725
|
valueToken = valueToken.replace(/[^a-zA-Z0-9 ,]/g, '');
|
|
726
|
+
// Se limpia el string correspondiente al valor por comparar
|
|
727
|
+
valueToCompare = valueToCompare.replace(/[^a-zA-Z0-9 ]/g, '');
|
|
726
728
|
// Se pasa el string a array
|
|
727
729
|
valueToken = valueToken.split(',');
|
|
728
730
|
// Si el valor que se encontro para el token es un array es porque es tag
|
|
@@ -1135,4 +1137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
|
|
|
1135
1137
|
type: Inject,
|
|
1136
1138
|
args: [LOCALE_ID]
|
|
1137
1139
|
}] } });
|
|
1138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSTlELE9BQU8sRUFBUyxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBd0IsTUFBTSxhQUFhLENBQUM7Ozs7O0FBSzdGLE1BQU0sT0FBTyxZQUFZO0lBb1Z4QixZQUNnQyxXQUFXLEVBQ2xDLFVBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLFlBQTBCO1FBSEgsZ0JBQVcsR0FBWCxXQUFXLENBQUE7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUNoQyxDQUFDO0lBRUosaUZBQWlGO0lBQ2pGLHVCQUF1QixDQUFDLFVBQVU7UUFDakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QywwQkFBMEI7WUFDMUIsSUFBSSxnQkFBZ0IsR0FBVSxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUN0RCxJQUFJLEVBQUUsQ0FBQyxVQUFlLEVBQUUsRUFBRTtvQkFDekIsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTt3QkFDMUIsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUU7NEJBQy9CLElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FB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VlYsWUFBWSxjQUZaLE1BQU07MkZBRU4sWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEI7OzBCQXNWRSxNQUFNOzJCQUFDLGFBQWE7MEhBaFZJLE1BQU07c0JBQS9CLE1BQU07dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4vZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3VycmVuY3lQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgVG9rZW4sIEhFQURFUl9KU09OLCBVdGlsU3RyaW5nLCBEYXRlVXRpbCwgUGxpQ25mR3VhcmFudGVlVG9rZW4gfSBmcm9tICduZy1wbGktdXRpbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2tlblNlcnZpY2Uge1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTSUdOX0xFVFRFUl9UQUdfSUQ6IHN0cmluZyA9ICdfc2lnbi1sZXR0ZXItdGFnLWlkJztcclxuXHJcblx0LyoqICovXHJcblx0QEluamVjdChMT0NBTEVfSUQpIHB1YmxpYyBsb2NhbGU6IHN0cmluZztcclxuXHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0ZPUk06IHN0cmluZyA9ICdGcm0nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9CVURHRVQ6IHN0cmluZyA9ICdQcmVzdXB1ZXN0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0NBTENVTEFURUQ6IHN0cmluZyA9ICdDYWxjdWxhZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9TTkFQU0hPVDogc3RyaW5nID0gJ1NuYXBzaG90JztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfU1RBVElDOiBzdHJpbmcgPSAnRXN0w6F0aWNvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfRE9DVU1FTlRPOiBzdHJpbmcgPSAnRG9jdW1lbnRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfVEFTSzogc3RyaW5nID0gJ1RhcmVhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfVEFTS0w6IHN0cmluZyA9ICd0YXNrJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfR1VBUkFOVEVFOiBzdHJpbmcgPSAnR2FyYW50aWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9UT1RBTF9BTU9VTlQ6IHN0cmluZyA9ICd0b3RhbEFtb3VudCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0FQUExJQ0FUSU9OX1BST0NFU1NfVE9UQUxfQU1PVU5UOiBzdHJpbmcgPSAnYXBwbGljYXRpb25Ub3RhbCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0FQUExJQ0FUSU9OX1BST0NFU1NfVE9UQUxfT1dOX0ZPVU5EUzogc3RyaW5nID0gJ2FwcGxpY2F0aW9uT3duRm91bmRzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfQVBQTElDQVRJT05fUFJPQ0VTU19UT1RBTF9GSU5BTkNJTkc6IHN0cmluZyA9ICdhcHBsaWNhdGlvbkZpbmFuY2luZyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0xFR0FMSVpBVElPTl9QUk9DRVNTX1RPVEFMX0FNT1VOVDogc3RyaW5nID0gJ2xlZ2FsaXphdGlvblRvdGFsJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfT1dOX0ZPVU5EUzogc3RyaW5nID1cclxuXHRcdCdsZWdhbGl6YXRpb25Pd25Gb3VuZHMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9MRUdBTElaQVRJT05fUFJPQ0VTU19UT1RBTF9GSU5BTkNJTkc6IHN0cmluZyA9ICdsZWdhbGl6YXRpb25GaW5hbmNpbmcnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9JTlNVUkFOQ0VfQU1PVU5UOiBzdHJpbmcgPSAnaW5zdXJhbmNlQW1vdW50JztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgTEVHQUxJWkFUSU9OX09SX0FQUExJQ0FUSU9OX1RPVEFMX0ZJTkFOQ0lORzogc3RyaW5nID1cclxuXHRcdCdsZWdsaXphdGlvbk9yQXBwbGljYXRpb25Ub3RhbEZpbmFuY2luZyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX1JFU1VNRV9DQVRFR09SWV9ZRUFSOiBzdHJpbmcgPSAncmVzdW1lQ2F0ZWdvcnlZZWFyJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfRkVDSEFfRklOQU5DSU5HX1NUQVJUOiBzdHJpbmcgPSAnZmVjaGFJbmljaW9GaW5hbmNpYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9GRUNIQV9GSU5BTkNJTkdfRU5EOiBzdHJpbmcgPSAnZmVjaGFGaW5GaW5hbmNpYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0RVUkFUSU9OX1NUVURJRVM6IHN0cmluZyA9ICdkdXJhY2lvbkVzdHVkaW9zJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19GSU5BTkNJTkdfRFVSQVRJT046IHN0cmluZyA9ICdkdXJhY2lvbkZpbmFuY2lhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0NPRElHT19WRVJJRklDQUNJT046IHN0cmluZyA9ICdjb2RpZ29WZXJpZmljYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9BX1FVSUVOX1ZBX0RJUklHSURPOiBzdHJpbmcgPSAnYVF1aWVuVmFEaXJpZ2lkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0ZFQ0hBX0FDVFVBTDogc3RyaW5nID0gJ2ZlY2hhQWN0dWFsJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfU1RBVFVTX05BTUU6IHN0cmluZyA9ICdzdGF0dXNOYW1lJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUEFUUk9DSU5BRE9SOiBzdHJpbmcgPSAncGxpUGF0cm9jaW5hZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUEFUUk9DSU5BRE9SX0NPUlRPOiBzdHJpbmcgPSAncGxpUGF0cm9jaW5hZG9yQ29ydG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QUk9HUkFNQTogc3RyaW5nID0gJ3BsaVByb2dyYW1hJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUFJPR1JBTUFfQ09SVE86IHN0cmluZyA9ICdwbGlQcm9ncmFtYUNvcnRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUFJPTU9DSU9OOiBzdHJpbmcgPSAncGxpUHJvbW9jaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUFJPTU9DSU9OX0NPUlRPOiBzdHJpbmcgPSAncGxpUHJvbW9jaW9uQ29ydG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9BTklPX1BST01PQ0lPTjogc3RyaW5nID0gJ2FuaW9Qcm9tb2Npb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9JU09fTU9ORURBX0JBU0U6IHN0cmluZyA9ICdpc29Nb25lZGFCYXNlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfU0FMVURPX0NPTVBMRU1FTlRBUklPOiBzdHJpbmcgPSAnc2FsdWRvQ29tcGxlbWVudGFyaW8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9OVU1CRVJfQVBQTElDQVRJT046IHN0cmluZyA9ICdudW1lcm9SYWRpY2Fkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1VTRVJfSU5JVElBTFM6IHN0cmluZyA9ICdpbmljaWFsZXNVc3VhcmlvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfTEVUVEVSX1NJR046IHN0cmluZyA9ICdmaXJtYUNhcnRhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT01NSVRURUVfTkFNRTogc3RyaW5nID0gJ2NvbWl0ZU5vbWJyZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX1NFR01FTlRBVElPTjogc3RyaW5nID0gJ2NvbWl0ZVNlZ21lbnRhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0FHR1JVUEFUSU9OOiBzdHJpbmcgPSAnY29taXRlQWdydXBhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0NVVExJTkVfREFURTogc3RyaW5nID0gJ2NvbWl0ZUZlY2hhTGluZWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTkZJUk1fTEVHQUxJWkFUSU9OX0FQUE9JTlRNRU5UOiBzdHJpbmcgPSAnY29uZmlybWFjaW9uQ2l0YSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfRE9DVU1FTlRfTlVNQkVSOiBzdHJpbmcgPSAnbnVtZXJvRG9jdW1lbnRvQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX0RPQ1VNRU5UX1RZUEU6IHN0cmluZyA9ICd0aXBvRG9jdW1lbnRvQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX05BTUU6IHN0cmluZyA9ICdub21icmVzQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX0xBU1ROQU1FOiBzdHJpbmcgPSAnYXBlbGxpZG9zQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1RZUEVfQ09ERUJUT1I6IHN0cmluZyA9ICd0aXBvUGVyc29uYUNvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9SRVZJRVdFUjogc3RyaW5nID0gJ3Jldmlzb3JDb2RldWRvcmVzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19UT1RBTF9XRUlHSFRFRDogc3RyaW5nID0gJ3BvbmRlcmFkb1RvdGFsJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT05TRUNVVElWRV9HVUFSQU5URUU6IHN0cmluZyA9ICdjb25zZWN1dGl2b0dhcmFudGlhcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfREFZOiBzdHJpbmcgPSAnZGlhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19NT05USDogc3RyaW5nID0gJ21lcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfWUVBUjogc3RyaW5nID0gJ2Fubyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfTkFNRTogc3RyaW5nID0gJ25vbWJyZXNSZXByZXNlbnRhbnRlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9MQVNUTkFNRTogc3RyaW5nID0gJ2FwZWxsaWRvc1JlcHJlc2VudGFudGUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX0RPQ1VNRU5UX05VTUJFUjogc3RyaW5nID0gJ2NlZHVsYVJlcHJlc2VudGFudGUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NJVFlfU0lHTkFUVVJFOiBzdHJpbmcgPSAnY2l1ZGFkRmlybWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1VTRVJfVFlQRV9DUkVESVRfU1RVRFk6IHN0cmluZyA9ICd0aXBvVXN1YXJpb0VzdHVkaW9DcmVkaXRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9WRUhJQ0xFU19RVUFOVElUWTogc3RyaW5nID0gJ2NhbnRpZGFkVmVoaWN1bG9zQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX0FTU0VUU19RVUFOVElUWTogc3RyaW5nID0gJ2NhbnRpZGFkQmllbmVzQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0xJU1RfQ09ERUJUT1JTOiBzdHJpbmcgPSAnbGlzdGFDb2RldWRvcmVzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX0lOR1JFU09fQ09ERVVET1JfSEFCRUFTX0RBVEE6IHN0cmluZyA9ICdpbmdyZXNvQ29kZXVkb3JIYWJlYXNEYXRhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX1BERl9SRVNVTUVOX0NPREVVRE9SOiBzdHJpbmcgPSAncGRmUmVzdW1lbkNvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19RVUFOVElUWV9WRUhJQ0xFX0JFTkVGSUNJQVJZOiBzdHJpbmcgPSAnY2FudGlkYWRWZWhpY3Vsb3NTZWxlY2Npb25hZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1FVQU5USVRZX0FTU0VUU19CRU5FRklDSUFSWTogc3RyaW5nID0gJ2NhbnRpZGFkQmllbmVzU2VsZWNjaW9uYWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19CRU5fQ09ESUdPOiBzdHJpbmcgPSAnYmVuQ29kaWdvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX0NSRURJVF9SRVZJRVdFUl9PQlNFUlZBVElPTlNfQ09ERUJUT1I6IHN0cmluZyA9XHJcblx0XHQnY3JlZGl0UmV2aWV3ZXJPYnNlcnZhdGlvbnNDb2RlYnRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9DUkVESVRfUkVWSUVXRVJfT0JTRVJWQVRJT05TOiBzdHJpbmcgPSAnY3JlZGl0UmV2aWV3ZXJPYnNlcnZhdGlvbnMnO1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fVEFHX05BTUU6IHN0cmluZyA9ICd0YWdOYW1lJztcclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOUzogYW55W10gPSBbXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1BBVFJPQ0lOQURPUixcclxuXHRcdFx0bGFiZWw6ICdQYXRyb2NpbmFkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9QUk9HUkFNQSxcclxuXHRcdFx0bGFiZWw6ICdQcm9ncmFtYSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1BST01PQ0lPTixcclxuXHRcdFx0bGFiZWw6ICdQcm9tb2Npw7NuJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfQU5JT19QUk9NT0NJT04sXHJcblx0XHRcdGxhYmVsOiAnQcOxbyBwcm9tb2Npw7NuJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfSVNPX01PTkVEQV9CQVNFLFxyXG5cdFx0XHRsYWJlbDogJ0lTTyBNb25lZGEgYmFzZSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1NBTFVET19DT01QTEVNRU5UQVJJTyxcclxuXHRcdFx0bGFiZWw6ICdTYWx1ZG8gY29tcGxlbWVudGFyaW8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9DT0RJR09fVkVSSUZJQ0FDSU9OLFxyXG5cdFx0XHRsYWJlbDogJ0PDs2RpZ28gZGUgdmVyaWZpY2FjacOzbidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0FfUVVJRU5fVkFfRElSSUdJRE8sXHJcblx0XHRcdGxhYmVsOiAnQSBxdWllbiB2YSBkaXJpZ2lkbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0ZFQ0hBX0FDVFVBTCxcclxuXHRcdFx0bGFiZWw6ICdGZWNoYSBhY3R1YWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9TVEFUVVNfTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdFc3RhZG8gYWN0dWFsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfTlVNQkVSX0FQUExJQ0FUSU9OLFxyXG5cdFx0XHRsYWJlbDogJ07Dum1lcm8gcmFkaWNhZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9VU0VSX0lOSVRJQUxTLFxyXG5cdFx0XHRsYWJlbDogJ0luaWNpYWxlcyBkZSB1c3VhcmlvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfTEVUVEVSX1NJR04sXHJcblx0XHRcdGxhYmVsOiAnRmlybWEgZGUgY2FydGFzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdOb21icmUgY29taXTDqSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX1NFR01FTlRBVElPTixcclxuXHRcdFx0bGFiZWw6ICdTZWdtZW50YWNpw7NuIGNvbWl0w6knXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9BR0dSVVBBVElPTixcclxuXHRcdFx0bGFiZWw6ICdBZ3J1cGFjacOzbiBjb21pdMOpJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQ1VUTElORV9EQVRFLFxyXG5cdFx0XHRsYWJlbDogJ0ZlY2hhIEzDrW5lYSBkZSBjb3J0ZSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ORklSTV9MRUdBTElaQVRJT05fQVBQT0lOVE1FTlQsXHJcblx0XHRcdGxhYmVsOiAnQ29uZmlybWFjacOzbiBkZSBjaXRhJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9ET0NVTUVOVF9OVU1CRVIsXHJcblx0XHRcdGxhYmVsOiAnTsO6bWVybyBkZSBkb2N1bWVudG8gZGUgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0RPQ1VNRU5UX1RZUEUsXHJcblx0XHRcdGxhYmVsOiAnVGlwbyBkZSBkb2N1bWVudG8gZGUgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnTm9tYnJlcyBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfTEFTVE5BTUUsXHJcblx0XHRcdGxhYmVsOiAnQXBlbGxpZG9zIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19UWVBFX0NPREVCVE9SLFxyXG5cdFx0XHRsYWJlbDogJ1RpcG8gZGUgcGVyc29uYSBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfVkVISUNMRVNfUVVBTlRJVFksXHJcblx0XHRcdGxhYmVsOiAnQ2FudGlkYWQgdmVoaWN1bG9zIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9BU1NFVFNfUVVBTlRJVFksXHJcblx0XHRcdGxhYmVsOiAnQ2FudGlkYWQgYmllbmVzIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9SRVZJRVdFUixcclxuXHRcdFx0bGFiZWw6ICdSZXZpc29yIGRlIGNvZGV1ZG9yZXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1RPVEFMX1dFSUdIVEVELFxyXG5cdFx0XHRsYWJlbDogJ1BvbmRlcmFkbyB0b3RhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09OU0VDVVRJVkVfR1VBUkFOVEVFLFxyXG5cdFx0XHRsYWJlbDogJ0NvbnNlY3V0aXZvIGRlIGdhcmFudGlhcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdOb21icmVzIHJlcHJlc2VudGFudGUgbGVnYWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX0xBU1ROQU1FLFxyXG5cdFx0XHRsYWJlbDogJ0FwZWxsaWRvcyByZXByZXNlbnRhbnRlIGxlZ2FsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9ET0NVTUVOVF9OVU1CRVIsXHJcblx0XHRcdGxhYmVsOiAnQ2VkdWxhIHJlcHJlc2VudGFudGUgbGVnYWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1VTRVJfVFlQRV9DUkVESVRfU1RVRFksXHJcblx0XHRcdGxhYmVsOiAnVGlwbyB1c3VhcmlvIGVzdHVkaW8gY3LDqWRpdG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0RBWSxcclxuXHRcdFx0bGFiZWw6ICdEaWEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX01PTlRILFxyXG5cdFx0XHRsYWJlbDogJ01lcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfWUVBUixcclxuXHRcdFx0bGFiZWw6ICdBw7FvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DSVRZX1NJR05BVFVSRSxcclxuXHRcdFx0bGFiZWw6ICdDaXVkYWQgZGUgbGEgZmlybWEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0xJU1RfQ09ERUJUT1JTLFxyXG5cdFx0XHRsYWJlbDogJ0xpc3RhIGRlIGNvZGV1ZG9yZXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fSU5HUkVTT19DT0RFVURPUl9IQUJFQVNfREFUQSxcclxuXHRcdFx0bGFiZWw6ICdJbmdyZXNvIENvZGV1ZG9yIEhhYmVhcyBEYXRhJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX1BERl9SRVNVTUVOX0NPREVVRE9SLFxyXG5cdFx0XHRsYWJlbDogJ1BkZiBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUVVBTlRJVFlfVkVISUNMRV9CRU5FRklDSUFSWSxcclxuXHRcdFx0bGFiZWw6ICdDYW50aWRhZCBkZSB2ZWjDrWN1bG9zIGRlbCBzZWxlY2Npb25hZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1FVQU5USVRZX0FTU0VUU19CRU5FRklDSUFSWSxcclxuXHRcdFx0bGFiZWw6ICdDYW50aWRhZCBiaWVuZXMgZGVsIHNlbGVjY2lvbmFkbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQkVOX0NPRElHTyxcclxuXHRcdFx0bGFiZWw6ICdDw7NkaWdvIGJlbmVmaWNpYXJpbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9DUkVESVRfUkVWSUVXRVJfT0JTRVJWQVRJT05TLFxyXG5cdFx0XHRsYWJlbDogJ09ic2VydmFjaW9uZXMgcmV2aXNvciBmaW5hbmNpZXJvIHNlbGVjY2lvbmFkbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9DUkVESVRfUkVWSUVXRVJfT0JTRVJWQVRJT05TX0NPREVCVE9SLFxyXG5cdFx0XHRsYWJlbDogJ09ic2VydmFjaW9uZXMgcmV2aXNvciBmaW5hbmNpZXJvIGNvZGV1ZG9yZXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fVEFHX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnTm9tYnJlIGRlbCB0YWcnXHJcblx0XHR9XHJcblx0XTtcclxuXHJcblx0c3RhdGljIGV4Y2x1ZGVkVG9rZW4gPSBbXHJcblx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19VU0VSX1RZUEVfQ1JFRElUX1NUVURZLnRvTG93ZXJDYXNlKCksXHJcblx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9WRUhJQ0xFU19RVUFOVElUWS50b0xvd2VyQ2FzZSgpLFxyXG5cdFx0VG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfQVNTRVRTX1FVQU5USVRZLnRvTG93ZXJDYXNlKClcclxuXHRdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudCxcclxuXHRcdHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuXHRcdHByaXZhdGUgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZVxyXG5cdCkge31cclxuXHJcblx0LyoqIFRoaXMgcHJvbWlzZSBhbGxvd3MgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIHdoZW4gY29uc3VsdGluZyB0aGUgZm9ybSBmaWVsZHMuICovXHJcblx0Z2V0Rm9ybUZpZWxkc0J5UHJvbUNvZGUocHJvbUNvZGlnbyk6IFByb21pc2U8YW55W10+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdC8vIFNlYXJjaCB0aGUgZHluYW1pYyBmb3JtXHJcblx0XHRcdGxldCBsRm9ybUZpZWxkc1Rva2VuOiBhbnlbXSA9IG51bGw7XHJcblx0XHRcdHRoaXMuZm9ybVNlcnZpY2UuZ2V0QnlQcm9tQ29kaWdvKHByb21Db2RpZ28pLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKGFycmF5Rm9ybXM6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGFycmF5Rm9ybXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGZvcm1zIG9mIGFycmF5Rm9ybXMpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoZm9ybXMuY29tcG9uZW50cyAmJiBmb3Jtcy5jb21wb25lbnRzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgY29tcG9uZW50cyBvZiBmb3Jtcy5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjb21wb25lbnRzLmNvbXBvbmVudHMgJiYgY29tcG9uZW50cy5jb21wb25lbnRzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb25lbnRzLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjb21wb25lbnQuY29sdW1ucyAmJiBjb21wb25lbnQuY29sdW1ucy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgY0NvbXBvbmVudHMgb2YgY29tcG9uZW50LmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjQ29tcG9uZW50cy5jb21wb25lbnRzICYmXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjQ29tcG9uZW50cy5jb21wb25lbnRzLmxlbmd0aCA+IDBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgaXRlcmF0b3Igb2YgY0NvbXBvbmVudHMuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaXRlcmF0b3IudHlwZSA9PT0gJ2FkZHJlc3MnKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVsZXRlIGl0ZXJhdG9yLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRsZXQgZm9ybTogYW55ID0gYXJyYXlGb3JtcztcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IWZvcm0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0ucHJvbUNvZGlnbyB8fFxyXG5cdFx0XHRcdFx0XHRmb3JtWzBdLnByb21Db2RpZ28gIT0gcHJvbUNvZGlnb1xyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnNDA0J10pO1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm1Db21wLnRpdGxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZvcm1Db21wLnRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3Q6IGZvcm1Db21wXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFtdXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbltsRm9ybUZpZWxkc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0Q29tcG9uZW5ldEZvcm0oXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRnZXRGb3JtRmllbGRzQnlGb3JtSWQoZm9ybUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPiB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHQvLyBTZWFyY2ggdGhlIGR5bmFtaWMgZm9ybVxyXG5cdFx0XHRsZXQgbEZvcm1GaWVsZHNUb2tlbjogYW55W10gPSBudWxsO1xyXG5cdFx0XHR0aGlzLmZvcm1TZXJ2aWNlLmdldEJ5SWQoZm9ybUlkKS5zdWJzY3JpYmUoXHJcblx0XHRcdFx0KHJlc3VsdDogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgZm9ybTogYW55ID0gcmVzdWx0O1xyXG5cdFx0XHRcdFx0aWYgKCFmb3JtIHx8ICFmb3JtWzBdKSB7XHJcblx0XHRcdFx0XHRcdHJlc29sdmUobEZvcm1GaWVsZHNUb2tlbik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuID0gW107XHJcblx0XHRcdFx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0XHRcdGxldCBjb21wb25lbnRzOiBhbnlbXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29sdW1ucztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAobmV3Q29tcG9uZW50cyAmJiBVdGlsU3RyaW5nLmlzVmFsaWQoZm9ybUNvbXAudGl0bGUpKSB7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbi5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLmdldEtleUZvcm11bGFyaW8oZm9ybUNvbXAudGl0bGUpLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZm9ybUNvbXAudGl0bGUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG9iamVjdDogZm9ybUNvbXBcclxuXHRcdFx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogW11cclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuW2xGb3JtRmllbGRzVG9rZW4ubGVuZ3RoIC0gMV0udmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5nZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50cyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZmFsc2UsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGxcclxuXHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHJlc29sdmUobEZvcm1GaWVsZHNUb2tlbik7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdHJlamVjdChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKiogVGhpcyBwcm9taXNlIGFsbG93cyB0byBleGVjdXRlIGEgZnVuY3Rpb24gd2hlbiBjb25zdWx0aW5nIHRoZSBmb3JtIGZpZWxkcy4gKi9cclxuXHRnZXRGb3JtUGFuZWxzQnlQcm9tQ29kZShwcm9tQ29kaWdvKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtUGFubmVsc1Rva2VuOiBhbnlbXSA9IG51bGw7XHJcblx0XHRcdHRoaXMuZm9ybVNlcnZpY2UuZ2V0QnlQcm9tQ29kaWdvKHByb21Db2RpZ28pLnN1YnNjcmliZShcclxuXHRcdFx0XHQocmVzdWx0OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGxldCBmb3JtOiBhbnkgPSByZXN1bHQ7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFmb3JtIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdLnByb21Db2RpZ28gfHxcclxuXHRcdFx0XHRcdFx0Zm9ybVswXS5wcm9tQ29kaWdvICE9IHByb21Db2RpZ29cclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJzQwNCddKTtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZShsRm9ybVBhbm5lbHNUb2tlbik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRsRm9ybVBhbm5lbHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtUGFubmVsc1Rva2VuLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtQ29tcC50aXRsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmb3JtQ29tcC50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0b2JqZWN0OiBmb3JtQ29tcFxyXG5cdFx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBbXVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtUGFubmVsc1Rva2VuW2xGb3JtUGFubmVsc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0UGFuZWxDb21wb25lbmV0KGNvbXBvbmVudHMsIG5ld0NvbXBvbmVudHMsIG51bGwpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtUGFubmVsc1Rva2VuKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgZWRpdEdyaWQgZHluYW1pYyBmb3JtXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHNcclxuXHQgKiBAcGFyYW0gZm9ybVxyXG5cdCAqL1xyXG5cdGdldFBhbmVsQ29tcG9uZW5ldChjb21wb25lbnRzOiBhbnlbXSwgZm9ybTogYW55LCBwYW5lbE5hbWU6IHN0cmluZyk6IGFueVtdIHtcclxuXHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgPT09ICdwYW5lbCcpIHtcclxuXHRcdFx0XHRjb21wb25lbnRzLnB1c2goZm9ybUNvbXApO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbXBvbmVudHMgfHwgZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbXBvbmVudHMgPSB0aGlzLmdldFBhbmVsQ29tcG9uZW5ldChjb21wb25lbnRzLCBuZXdDb21wb25lbnRzLCBwYW5lbE5hbWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29tcG9uZW50cztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgY29tcG9uZW50cyBhIGNvbHVtbnMgb2YgdGhlIGR5bmFtaWMgZm9ybVxyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGZvcm1cclxuXHQgKi9cclxuXHRnZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdGNvbXBvbmVudHM6IGFueVtdLFxyXG5cdFx0Zm9ybTogYW55LFxyXG5cdFx0cGFuZWxOYW1lOiBzdHJpbmcsXHJcblx0XHRlZGl0Z3JpZDogYm9vbGVhbixcclxuXHRcdGVkaXRHcmlkS2V5OiBzdHJpbmdcclxuXHQpOiBhbnlbXSB7XHJcblx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzIHx8IGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdGlmIChmb3JtQ29tcC50eXBlID09PSAnZWRpdGdyaWQnKSB7XHJcblx0XHRcdFx0XHRcdGVkaXRncmlkID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0ZWRpdEdyaWRLZXkgPSBmb3JtQ29tcC5rZXk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29sdW1ucztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgJiYgZm9ybUNvbXAudHlwZSA9PT0gJ3BhbmVsJykge1xyXG5cdFx0XHRcdFx0cGFuZWxOYW1lID0gZm9ybUNvbXAudGl0bGU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbXBvbmVudHMgPSB0aGlzLmdldENvbXBvbmVuZXRGb3JtKFxyXG5cdFx0XHRcdFx0Y29tcG9uZW50cyxcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRwYW5lbE5hbWUsXHJcblx0XHRcdFx0XHRlZGl0Z3JpZCxcclxuXHRcdFx0XHRcdGVkaXRHcmlkS2V5XHJcblx0XHRcdFx0KTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRmb3JtQ29tcC5wYW5lbE5hbWUgPSBwYW5lbE5hbWU7XHJcblx0XHRcdFx0Zm9ybUNvbXAuZWRpdGdyaWQgPSBlZGl0Z3JpZDtcclxuXHRcdFx0XHRmb3JtQ29tcC5lZGl0R3JpZEtleSA9IGVkaXRHcmlkS2V5O1xyXG5cdFx0XHRcdGNvbXBvbmVudHMucHVzaChmb3JtQ29tcCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBjb21wb25lbnRzO1xyXG5cdH1cclxuXHJcblx0LyoqIFRoaXMgcHJvbWlzZSBhbGxvd3MgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIHdoZW4gY29uc3VsdGluZyB0aGUgZm9ybSBmaWVsZHMuICovXHJcblx0Z2V0Rm9ybUVkaXRHcmlkRmllbGRzQnlQcm9tQ29kZShwcm9tQ29kaWdvKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtRmllbGRzVG9rZW46IGFueVtdID0gbnVsbDtcclxuXHRcdFx0dGhpcy5mb3JtU2VydmljZS5nZXRCeVByb21Db2RpZ28ocHJvbUNvZGlnbykuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChyZXN1bHQ6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IGZvcm06IGFueSA9IHJlc3VsdDtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IWZvcm0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0ucHJvbUNvZGlnbyB8fFxyXG5cdFx0XHRcdFx0XHRmb3JtWzBdLnByb21Db2RpZ28gIT0gcHJvbUNvZGlnb1xyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnNDA0J10pO1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm1Db21wLnRpdGxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZvcm1Db21wLnRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3Q6IGZvcm1Db21wXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFtdXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbltsRm9ybUZpZWxkc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0RWRpdEdyaWRDb21wb25lbmV0KGNvbXBvbmVudHMsIG5ld0NvbXBvbmVudHMsIG51bGwpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRyZWplY3QoZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSByZWN1cnNpdmUgbWV0aG9kIHRvIGdldCBhbGwgdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBlZGl0R3JpZCBkeW5hbWljIGZvcm1cclxuXHQgKiBAcGFyYW0gY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBmb3JtXHJcblx0ICovXHJcblx0Z2V0RWRpdEdyaWRDb21wb25lbmV0KGNvbXBvbmVudHM6IGFueVtdLCBmb3JtOiBhbnksIHBhbmVsTmFtZTogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRpZiAoZm9ybUNvbXAudHlwZSA9PT0gJ2VkaXRncmlkJykge1xyXG5cdFx0XHRcdGZvcm1Db21wLnBhbmVsTmFtZSA9IHBhbmVsTmFtZTtcclxuXHRcdFx0XHRjb21wb25lbnRzLnB1c2goZm9ybUNvbXApO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbXBvbmVudHMgfHwgZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC50eXBlICYmIGZvcm1Db21wLnR5cGUgPT09ICdwYW5lbCcpIHtcclxuXHRcdFx0XHRcdHBhbmVsTmFtZSA9IGZvcm1Db21wLnRpdGxlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb21wb25lbnRzID0gdGhpcy5nZXRFZGl0R3JpZENvbXBvbmVuZXQoY29tcG9uZW50cywgbmV3Q29tcG9uZW50cywgcGFuZWxOYW1lKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNvbXBvbmVudHM7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyB0aGUgdG9rZW5zIGJ5IHByb21Db2RpZ28gKi9cclxuXHRnZXRMaXN0QnlQcm9tQ29kaWdvKHByb21Db2RlOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vZ2V0QnlQcm9tQ29kaWdvJyxcclxuXHRcdFx0eyBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwcm9tQ29kaWdvJywgcHJvbUNvZGUudG9TdHJpbmcoKSkgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCByZXR1cm5zIHRoZSB0b2tlbiBieSBpZCAqL1xyXG5cdGdldEJ5SWQoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL2dldEJ5SWQnLCB7XHJcblx0XHRcdHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2lkJywgaWQudG9TdHJpbmcoKSlcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IGRlbGV0ZXMgYSBmb3JtIGJ5IGlkICovXHJcblx0ZGVsZXRlKGlkKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZGVsZXRlKFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL2RlbGV0ZScsXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgnaWQnLCBpZCkgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCBzYXZlcyB0aGUgdG9rZW4gKi9cclxuXHRzYXZlKHRva2VuOiBUb2tlbik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vc2F2ZScsXHJcblx0XHRcdHRva2VuLFxyXG5cdFx0XHRIRUFERVJfSlNPTlxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlGb3JtdWxhcmlvKGZvcm1UaXRsZTogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRcdGlmIChVdGlsU3RyaW5nLmlzVmFsaWQoZm9ybVRpdGxlKSkge1xyXG5cdFx0XHRyZXR1cm4gKFxyXG5cdFx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRk9STSkgK1xyXG5cdFx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhmb3JtVGl0bGUpLnJlcGxhY2UoL18vZywgJy0nKVxyXG5cdFx0XHQpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuICcnO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgdGhlIHVuaXF1ZSB2ZXJpZmljYXRpb24gY29kZSAqL1xyXG5cdGdldFVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUobG9naW46IHN0cmluZywgdG9rZW46IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuZG9jdW1lbnRzUmVwb3NpdG9yeSArXHJcblx0XHRcdFx0J2RvY3VtZW50by9jb25zdWx0YXJDb2RpZ29Vbmljby8nICtcclxuXHRcdFx0XHRsb2dpbiArXHJcblx0XHRcdFx0Jy8nICtcclxuXHRcdFx0XHR0b2tlbixcclxuXHRcdFx0eyBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCBzZW5kIHRoZSBpbmZvcm1hdGlvbiB0byBjb3B5IHRoZSBEb2N1bWVudCB2aWV3ZXIgKi9cclxuXHRjb3B5RG9jdW1lbnRJbmZvcm1hdGlvblZpZXdlcihcclxuXHRcdGxvZ2luOiBzdHJpbmcsXHJcblx0XHR0b2tlbjogc3RyaW5nLFxyXG5cdFx0dW5pcXVlQ29kZTogc3RyaW5nLFxyXG5cdFx0ZG9jdW1lbnRVUkw6IHN0cmluZyxcclxuXHRcdGRvY3VtZW50TmFtZTogc3RyaW5nXHJcblx0KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdGxldCBpbmZvRG9jdW1lbnRvID0ge1xyXG5cdFx0XHRjb2RpZ29VbmljbzogdW5pcXVlQ29kZSxcclxuXHRcdFx0cnV0YURvY3VtZW50bzogZG9jdW1lbnRVUkwsXHJcblx0XHRcdGRvY3VtZW50TmFtZTogZG9jdW1lbnROYW1lXHJcblx0XHR9O1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5kb2N1bWVudHNSZXBvc2l0b3J5ICtcclxuXHRcdFx0XHQnZG9jdW1lbnRvL2FkaWNpb25hckRvY3VtZW50by8nICtcclxuXHRcdFx0XHRsb2dpbiArXHJcblx0XHRcdFx0Jy8nICtcclxuXHRcdFx0XHR0b2tlbixcclxuXHRcdFx0aW5mb0RvY3VtZW50byxcclxuXHRcdFx0SEVBREVSX0pTT05cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5QnVkZ2V0KCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9CVURHRVQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleURvY3VtZW50KCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9ET0NVTUVOVE8pO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleVRhc2soKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1RBU0tMKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlTdGF0aWMoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NUQVRJQyk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5Q2FsY3VsYXRlZCh0b2tlbjogVG9rZW4pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9DQUxDVUxBVEVEKSArXHJcblx0XHRcdCdfJyArXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyh0b2tlbi5uYW1lKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlTbmFwc2hvdCh0b2tlbjogVG9rZW4pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9TTkFQU0hPVCkgK1xyXG5cdFx0XHQnXycgK1xyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnModG9rZW4ubmFtZSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5R3VhcmFudGVlKHRva2VuOiBQbGlDbmZHdWFyYW50ZWVUb2tlbik6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0dVQVJBTlRFRSkgK1xyXG5cdFx0XHQnXycgK1xyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnModG9rZW4ubmFtZSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXR1cm4gYSB2YWx1ZSB0aGF0IHJlcHJlc2VudCB0aGUgdHlwZSBvZiBsYWJlbDogMT1Gb3JtLCAyPUJ1ZGdldCwgMz1TdGF0aWMsIDQ9Q2FsY3VsYXRlZFxyXG5cdCAqIEBwYXJhbSBrZXkgVmFsdWUgdG8gZXZhbHVlYXRlXHJcblx0ICovXHJcblx0c3RhdGljIGdldEtleVR5cGUoa2V5OiBzdHJpbmcpOiBudW1iZXIge1xyXG5cdFx0a2V5ID0ga2V5LnJlcGxhY2UoJ3snLCAnJykucmVwbGFjZSgnfScsICcnKTtcclxuXHRcdGtleSA9IGtleS5zdWJzdHJpbmcoMSwga2V5LmluZGV4T2YoJ18nKSk7XHJcblx0XHRpZiAoa2V5LnN0YXJ0c1dpdGgoVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9GT1JNKSkpIHtcclxuXHRcdFx0cmV0dXJuIDE7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0JVREdFVCkpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIDI7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NUQVRJQykpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIDM7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChcclxuXHRcdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0NBTENVTEFURUQpXHJcblx0XHRcdClcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gNDtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdGtleS5zdGFydHNXaXRoKFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfVEFTS0wpKVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiA1O1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZXBlbmRzIG9mIHRoZSB0eXBlIG9mIGZvcm1GaWVsZFRva2VuIHJldHVybiBkZSB2YWx1ZSBvZiB0aGUgdmFsdWVEYXRhXHJcblx0ICogQHBhcmFtIGZvcm1GaWVsZFRva2VuXHJcblx0ICogQHBhcmFtIHZhbHVlRGF0YVxyXG5cdCAqL1xyXG5cdGdldFZhbHVlRnJvbUZvcm1GaWVsZChmb3JtRmllbGRUb2tlbjogYW55LCB2YWx1ZURhdGE6IGFueSk6IGFueSB7XHJcblx0XHRpZiAodHlwZW9mIHZhbHVlRGF0YSA9PSAnb2JqZWN0Jykge1xyXG5cdFx0XHRpZiAoZm9ybUZpZWxkVG9rZW4udHlwZSkge1xyXG5cdFx0XHRcdGlmIChmb3JtRmllbGRUb2tlbi50eXBlID09ICdhZGRyZXNzJykge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlRGF0YS5mb3JtYXR0ZWRfYWRkcmVzcztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0Zm9ybUZpZWxkVG9rZW4udHlwZSA9PSAnc2VsZWN0JyAmJlxyXG5cdFx0XHRcdFx0Zm9ybUZpZWxkVG9rZW4uc2VhcmNoRmllbGQgJiZcclxuXHRcdFx0XHRcdHZhbHVlRGF0YS5oYXNPd25Qcm9wZXJ0eShmb3JtRmllbGRUb2tlbi5zZWFyY2hGaWVsZClcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdHJldHVybiB2YWx1ZURhdGFbZm9ybUZpZWxkVG9rZW4uc2VhcmNoRmllbGRdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHZhbHVlRGF0YTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRyeSB0byBmaW5kIHRoZSB0b2tlbiBpbiB0aGUgc3RyaW5nVGV4dCBhbmQgcmVwbGFjZSB3aXRoIGRhdGFWYWx1ZS4gSWYgZGV0ZWN0IGZvcm1hdCBvZiBudW1iZXIgb3IgZGF0ZSB0cnkgdG8gZm9ybWF0IHRoZSBkYXRhVmFsdWVcclxuXHQgKiBAcGFyYW0gc3RyaW5nVGV4dFxyXG5cdCAqIEBwYXJhbSB0b2tlblxyXG5cdCAqIEBwYXJhbSBkYXRhVmFsdWVcclxuXHQgKi9cclxuXHRyZXBsYWNlVG9rZW4oc3RyaW5nVGV4dDogc3RyaW5nLCB0b2tlbjogYW55LCBkYXRhVmFsdWU6IGFueSk6IHN0cmluZyB7XHJcblx0XHRsZXQgdmFsdWVSZXBsYWNlOiBzdHJpbmcgPSBudWxsO1xyXG5cdFx0aWYgKHRva2VuICYmIHRva2VuWzBdID09ICcjJykge1xyXG5cdFx0XHRsZXQgdHlwZVRva2VuID0gdG9rZW4uc3Vic3RyaW5nKDEsIHRva2VuLmluZGV4T2YoJygnKSk7XHJcblx0XHRcdGlmICh0eXBlVG9rZW4gPT0gJ2RhdGUnKSB7XHJcblx0XHRcdFx0bGV0IGRhdGVGb3JtYXQ6IHN0cmluZyA9IHRva2VuLnN1YnN0cmluZyhcclxuXHRcdFx0XHRcdHRva2VuLmluZGV4T2YoJ30nKSArIDEsXHJcblx0XHRcdFx0XHR0b2tlbi5pbmRleE9mKCcpJylcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHRcdGRhdGVGb3JtYXQgPSBkYXRlRm9ybWF0LnRyaW0oKS5yZXBsYWNlKC9cXFwiL2csICcnKS5yZXBsYWNlKC9cXCcvZywgJycpO1xyXG5cdFx0XHRcdGxldCBkYXRlVmFsdWUgPSBEYXRlVXRpbC5nZXREYXRlKGRhdGFWYWx1ZSk7XHJcblx0XHRcdFx0aWYgKGRhdGVWYWx1ZSkge1xyXG5cdFx0XHRcdFx0dmFsdWVSZXBsYWNlID0gRGF0ZVV0aWwuZ2V0TW9tZW50KGRhdGVWYWx1ZSkuZm9ybWF0KGRhdGVGb3JtYXQpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSAnJztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSBpZiAodHlwZVRva2VuID09ICdudW1iZXInKSB7XHJcblx0XHRcdFx0bGV0IG51bWJlclZhbHVlOiBudW1iZXIgPSBOdW1iZXIoZGF0YVZhbHVlKTtcclxuXHRcdFx0XHRpZiAobnVtYmVyVmFsdWUgIT0gdW5kZWZpbmVkICYmICFpc05hTihudW1iZXJWYWx1ZSkpIHtcclxuXHRcdFx0XHRcdGxldCBudW1iZXJGb3JtYXQ6IHN0cmluZyA9IHRva2VuLnN1YnN0cmluZyhcclxuXHRcdFx0XHRcdFx0dG9rZW4uaW5kZXhPZignfScpICsgMSxcclxuXHRcdFx0XHRcdFx0dG9rZW4uaW5kZXhPZignKScpXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0bnVtYmVyRm9ybWF0ID0gbnVtYmVyRm9ybWF0LnRyaW0oKS5yZXBsYWNlKC9cXFwiL2csICcnKS5yZXBsYWNlKC9cXCcvZywgJycpO1xyXG5cdFx0XHRcdFx0dmFsdWVSZXBsYWNlID0gdGhpcy5jdXJyZW5jeVBpcGUudHJhbnNmb3JtKFxyXG5cdFx0XHRcdFx0XHRudW1iZXJWYWx1ZSxcclxuXHRcdFx0XHRcdFx0dGhpcy5sb2NhbGUsXHJcblx0XHRcdFx0XHRcdCcnLFxyXG5cdFx0XHRcdFx0XHRudW1iZXJGb3JtYXRcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFxyXG5cdFx0XHRcdFx0XHQnRWwgZGF0byBbJyArXHJcblx0XHRcdFx0XHRcdFx0ZGF0YVZhbHVlICtcclxuXHRcdFx0XHRcdFx0XHQnXSBwYXJhIGVsIHRva2VuIFsnICtcclxuXHRcdFx0XHRcdFx0XHR0b2tlbiArXHJcblx0XHRcdFx0XHRcdFx0J10gdGlwbyBuw7ptZXJpY28gbm8gZXMgdmFsaWRvJ1xyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9ICcnO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZygndGlwbyBkZSB0b2tlbiBpbmRlZmluaWRvLiBbdHlwZVRva2VuWycgKyB0eXBlVG9rZW4gKyAnXV0nKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmICh0b2tlbiAmJiB0b2tlblswXSA9PSAnJCcpIHtcclxuXHRcdFx0dmFsdWVSZXBsYWNlID0gZGF0YVZhbHVlO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ0VsIHRva2VuIG5vIGVzIHZhbGlkby4gW3Rva2VuWycgKyB0b2tlbiArICddXScpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHN0cmluZ1RleHQgJiYgdmFsdWVSZXBsYWNlICE9PSBudWxsKSB7XHJcblx0XHRcdC8vIHJlcGxhY2UgdGV4dCBpbiBhIG1vcmUgZWZmaWNpZW50IHdheVxyXG5cdFx0XHRzdHJpbmdUZXh0ID0gc3RyaW5nVGV4dC5zcGxpdCh0b2tlbikuam9pbih2YWx1ZVJlcGxhY2UpO1xyXG5cdFx0XHQvL3N0cmluZ1RleHQgPSBzdHJpbmdUZXh0LnJlcGxhY2UodG9rZW4sIHZhbHVlUmVwbGFjZSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gc3RyaW5nVGV4dDtcclxuXHR9XHJcblxyXG5cdGdldExpc3RUb2tlbnNCeVN0cmluZ1NlZ21lbnRhdGlvbihzdHJpbmdUZXh0OiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHRjb25zdCBhcnJheVRva2VuID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwkeyhbXn1dKylcXH0vZyk7XHJcblx0XHRjb25zdCBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSA9IHN0cmluZ1RleHQubWF0Y2goL1xcI2RhdGVbXildK1xcKS9nKTtcclxuXHRcdGNvbnN0IGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCNudW1iZXJbXildK1xcKS9nKTtcclxuXHRcdGxldCBhcnJheVRva2VuRm9ybWF0dGVkID0gW107XHJcblx0XHRpZiAoXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDBcclxuXHRcdCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuY29uY2F0KGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJiBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWQgPSBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5zbGljZSgpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyICYmIGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5zbGljZSgpO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuXHRcdGlmIChhcnJheVRva2VuKSB7XHJcblx0XHRcdGZvciAoY29uc3QgdG9rZW4gb2YgYXJyYXlUb2tlbikge1xyXG5cdFx0XHRcdGNvbnN0IGluZm9Ub2tlbiA9IHsga2V5OiB0b2tlbiwgdmFsdWU6IHRva2VuIH07XHJcblx0XHRcdFx0aWYgKGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdGZvciAoY29uc3QgdG9rZW5Gb3JtYXR0ZWQgb2YgYXJyYXlUb2tlbkZvcm1hdHRlZCkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBpbmRleCA9IHRva2VuRm9ybWF0dGVkLmluZGV4T2YodG9rZW4pO1xyXG5cdFx0XHRcdFx0XHRpZiAoaW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdGluZm9Ub2tlbi52YWx1ZSA9IHRva2VuRm9ybWF0dGVkO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0Y2hhbmdlSWRQcm9wZXJ0aWVzT2ZPYmplY3Qobm9ybWFsaXphdGlvbkNvbHVtbnM6IGFueVtdLCBsaXN0RGF0YTogYW55W10pOiBhbnlbXSB7XHJcblx0XHRjb25zdCBuZXdEYXRhID0gW107XHJcblx0XHRsaXN0RGF0YS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcblx0XHRcdGNvbnN0IG9iakRhdGEgPSB7fTtcclxuXHRcdFx0T2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcclxuXHRcdFx0XHRpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcclxuXHRcdFx0XHRcdG5vcm1hbGl6YXRpb25Db2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG5cdFx0XHRcdFx0XHRpZiAoY29sdW1uLmlkQ29sdW1uLnRvU3RyaW5nKCkgPT09IHByb3BlcnR5KSB7XHJcblx0XHRcdFx0XHRcdFx0b2JqRGF0YVtjb2x1bW4ua2V5XSA9IGRhdGFbcHJvcGVydHldO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0XHRpZiAob2JqRGF0YSkge1xyXG5cdFx0XHRcdG5ld0RhdGEucHVzaChvYmpEYXRhKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRyZXR1cm4gbmV3RGF0YTtcclxuXHR9XHJcblxyXG5cdGdlbmVyYXRlSHRtbEJ5VG9rZW5zQW5kRGF0YShodG1sOiBzdHJpbmcsIGxpc3REYXRhOiBhbnlbXSwgbGlzdFRva2VuczogYW55W10pOiBzdHJpbmdbXSB7XHJcblx0XHRjb25zdCB0cmFuc2xhdGVkQ2FyZHM6IGFueVtdID0gW107XHJcblx0XHRsaXN0RGF0YS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcblx0XHRcdGNvbnN0IG9ialRva2VuID0ge307XHJcblx0XHRcdGNvbnN0IGh0bWxUcmFuc2xhdGVkID0geyBodG1sOiBodG1sIH07XHJcblx0XHRcdE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XHJcblx0XHRcdFx0bGlzdFRva2Vucy5mb3JFYWNoKCh0b2tlbikgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHByb3BlcnR5ID09IHRva2VuLmtleS5yZXBsYWNlKCckeycsICcnKS5yZXBsYWNlKCd9JywgJycpKSB7XHJcblx0XHRcdFx0XHRcdG9ialRva2VuW3Rva2VuLmtleV0gPSBkYXRhW3Byb3BlcnR5XTtcclxuXHRcdFx0XHRcdFx0aHRtbFRyYW5zbGF0ZWQuaHRtbCA9IGh0bWxUcmFuc2xhdGVkLmh0bWwucmVwbGFjZShcclxuXHRcdFx0XHRcdFx0XHR0b2tlbi5rZXksXHJcblx0XHRcdFx0XHRcdFx0ZGF0YVtwcm9wZXJ0eV1cclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHRyYW5zbGF0ZWRDYXJkcy5wdXNoKGh0bWxUcmFuc2xhdGVkKTtcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIHRyYW5zbGF0ZWRDYXJkcztcclxuXHR9XHJcblxyXG5cdGdldExpc3RUb2tlbnNCeVN0cmluZyhzdHJpbmdUZXh0OiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHR2YXIgYXJyYXlUb2tlbiA9IHN0cmluZ1RleHQubWF0Y2goL1xcJHsoW159XSspXFx9L2cpO1xyXG5cdFx0dmFyIGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwjZGF0ZVteKV0rXFwpL2cpO1xyXG5cdFx0dmFyIGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCNudW1iZXJbXildK1xcKS9nKTtcclxuXHRcdHZhciBhcnJheVRva2VuRm9ybWF0dGVkID0gW107XHJcblx0XHRpZiAoXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDBcclxuXHRcdCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuY29uY2F0KGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJiBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWQgPSBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5zbGljZSgpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyICYmIGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5zbGljZSgpO1xyXG5cdFx0fVxyXG5cdFx0dmFyIHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcblx0XHRpZiAoYXJyYXlUb2tlbikge1xyXG5cdFx0XHRmb3IgKGNvbnN0IHRva2VuIG9mIGFycmF5VG9rZW4pIHtcclxuXHRcdFx0XHRsZXQga2V5VHlwZTogbnVtYmVyID0gVG9rZW5TZXJ2aWNlLmdldEtleVR5cGUodG9rZW4pO1xyXG5cdFx0XHRcdGlmIChrZXlUeXBlID09PSBudWxsKSB7XHJcblx0XHRcdFx0XHRjb250aW51ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIGluZm9Ub2tlbiA9IHsga2V5OiB0b2tlbiwgdmFsdWU6IHRva2VuIH07XHJcblx0XHRcdFx0aWYgKGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdGZvciAoY29uc3QgdG9rZW5Gb3JtYXR0ZWQgb2YgYXJyYXlUb2tlbkZvcm1hdHRlZCkge1xyXG5cdFx0XHRcdFx0XHR2YXIgaW5kZXggPSB0b2tlbkZvcm1hdHRlZC5pbmRleE9mKHRva2VuKTtcclxuXHRcdFx0XHRcdFx0aWYgKGluZGV4ID49IDApIHtcclxuXHRcdFx0XHRcdFx0XHRpbmZvVG9rZW4udmFsdWUgPSB0b2tlbkZvcm1hdHRlZDtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXN1bHQucHVzaChpbmZvVG9rZW4pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHJcblx0XHQvLyBsZXQgdG9rZW5zOiBhbnlbXSA9IFtdO1xyXG5cdFx0Ly8gbGV0IGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIDApO1xyXG5cdFx0Ly8gbGV0IGNvdW50ID0gMDtcclxuXHRcdC8vIHdoaWxlIChpID49IDAgJiYgY291bnQgPD0gMTApIHtcclxuXHRcdC8vICAgbGV0IGluZm9Ub2tlbjoge30gPSBudWxsO1xyXG5cdFx0Ly8gICBsZXQgbmV4dEk6IG51bWJlciA9IGk7XHJcblx0XHQvLyAgIGxldCBjaGFyYWN0ZXIgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyhpLCAoaSArIDEpKTtcclxuXHRcdC8vICAgaWYgKGNoYXJhY3RlciA9PSBcIiRcIikge1xyXG5cdFx0Ly8gICAgIGxldCBuZXh0Q2hhcmFjdGVyID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoKGkgKyAxKSwgKGkgKyAyKSk7XHJcblx0XHQvLyAgICAgLy8gVGhlIG5leHQgY2hhcmFjdGVyIG5lZWQgdG8gYmUgYSB7IHNpZ25cclxuXHRcdC8vICAgICBpZiAobmV4dENoYXJhY3RlciAhPSBcIntcIikge1xyXG5cdFx0Ly8gICAgICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkgKyAxKTtcclxuXHRcdC8vICAgICAgIGNvbnRpbnVlO1xyXG5cdFx0Ly8gICAgIH1cclxuXHRcdC8vICAgICBsZXQga2V5VG9rZW46IHN0cmluZyA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKGksIHN0cmluZ1RleHQuaW5kZXhPZihcIn1cIiwgaSkgKyAxKTtcclxuXHRcdC8vICAgICAvLyBJZiB0aGUgdG9rZW4gaGF2ZSBhIHZhbGlkIGtleSB0eXBlXHJcblx0XHQvLyAgICAgbGV0IGtleVR5cGU6IG51bWJlciA9IFRva2VuU2VydmljZS5nZXRLZXlUeXBlKGtleVRva2VuLnJlcGxhY2UoXCJ7XCIsIFwiXCIpLnJlcGxhY2UoXCJ9XCIsIFwiXCIpKTtcclxuXHRcdC8vICAgICBpZiAoa2V5VHlwZSA9PT0gbnVsbCkge1xyXG5cdFx0Ly8gICAgICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkgKyAxKTtcclxuXHRcdC8vICAgICAgIGNvbnRpbnVlO1xyXG5cdFx0Ly8gICAgIH1cclxuXHRcdC8vICAgICBpbmZvVG9rZW4gPSB7XHJcblx0XHQvLyAgICAgICBrZXk6IGtleVRva2VuLFxyXG5cdFx0Ly8gICAgICAgdmFsdWU6IGtleVRva2VuXHJcblx0XHQvLyAgICAgfTtcclxuXHRcdC8vICAgICBuZXh0SSA9IHN0cmluZ1RleHQuaW5kZXhPZihcIn1cIiwgaSk7XHJcblx0XHQvLyAgIH0gZWxzZSB7XHJcblx0XHQvLyAgICAgbGV0IG5leHRTaWduOiBudW1iZXIgPSBzdHJpbmdUZXh0LmluZGV4T2YoXCIkXCIsIGkpO1xyXG5cdFx0Ly8gICAgIC8vIFdlIGlubHkgc3VwcG9ydCAjZGF0ZSgkIGFuZCAjbnVtYmVyKCQgaW4gdGhpcyAyIHNjZW5hcmlvcyB0aGUgbGVuZ2h0IGNhbid0IGJlIG1vcmUgdGhhbiAxMCBjaGFyYWN0ZXJzXHJcblx0XHQvLyAgICAgaWYgKG5leHRTaWduIDwgMCB8fCAobmV4dFNpZ24gLSBpKSA+IDEwKSB7XHJcblx0XHQvLyAgICAgICBpID0gdGhpcy5uZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0LCBuZXh0SSArIDEpO1xyXG5cdFx0Ly8gICAgICAgY29udGludWU7XHJcblx0XHQvLyAgICAgfVxyXG5cdFx0Ly8gICAgIGxldCBrZXlUb2tlbjogc3RyaW5nID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoc3RyaW5nVGV4dC5pbmRleE9mKFwiJFwiLCBpKSwgc3RyaW5nVGV4dC5pbmRleE9mKFwifVwiLCBpKSArIDEpO1xyXG5cdFx0Ly8gICAgIGxldCB2YWx1ZVRva2VuOiBzdHJpbmcgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyhpLCBzdHJpbmdUZXh0LmluZGV4T2YoXCIpXCIsIGkpICsgMSk7XHJcblx0XHQvLyAgICAgaW5mb1Rva2VuID0ge1xyXG5cdFx0Ly8gICAgICAga2V5OiBrZXlUb2tlbixcclxuXHRcdC8vICAgICAgIHZhbHVlOiB2YWx1ZVRva2VuXHJcblx0XHQvLyAgICAgfTtcclxuXHRcdC8vICAgICBuZXh0SSA9IHN0cmluZ1RleHQuaW5kZXhPZihcIilcIiwgaSk7XHJcblx0XHQvLyAgIH1cclxuXHRcdC8vICAgdG9rZW5zLnB1c2goaW5mb1Rva2VuKTtcclxuXHRcdC8vICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkpO1xyXG5cdFx0Ly8gICBjb3VudCsrO1xyXG5cdFx0Ly8gfVxyXG5cdFx0Ly8gcmV0dXJuIHRva2VucztcclxuXHR9XHJcblxyXG5cdG5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQ6IHN0cmluZywgbmV4dEk6IG51bWJlcik6IG51bWJlciB7XHJcblx0XHRsZXQgdG9rZW5Eb2xsYXJTaWduOiBudW1iZXIgPSBzdHJpbmdUZXh0LmluZGV4T2YoJyQnLCBuZXh0SSk7XHJcblx0XHRsZXQgdG9rZW5OdW1TaWduOiBudW1iZXIgPSBzdHJpbmdUZXh0LmluZGV4T2YoJyMnLCBuZXh0SSk7XHJcblx0XHRsZXQgaTogbnVtYmVyID1cclxuXHRcdFx0dG9rZW5Eb2xsYXJTaWduIDwgMCAmJiB0b2tlbk51bVNpZ24gPj0gMFxyXG5cdFx0XHRcdD8gdG9rZW5OdW1TaWduXHJcblx0XHRcdFx0OiB0b2tlbk51bVNpZ24gPCAwICYmIHRva2VuRG9sbGFyU2lnbiA+PSAwXHJcblx0XHRcdFx0PyB0b2tlbkRvbGxhclNpZ25cclxuXHRcdFx0XHQ6IHRva2VuRG9sbGFyU2lnbiA8IHRva2VuTnVtU2lnblxyXG5cdFx0XHRcdD8gdG9rZW5Eb2xsYXJTaWduXHJcblx0XHRcdFx0OiB0b2tlbk51bVNpZ247XHJcblx0XHRyZXR1cm4gaTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJldXNlcyByZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3RQdWJsaWMgYnV0IHNldCBhbGwga2V5cyBsb2JqZWN0dG9rZW5zIGFzIGxvd2VyY2FzZVxyXG5cdCAqIEBwYXJhbSB0b2tlbk5hbWVcclxuXHQgKiBAcGFyYW0gZm9ybXVsYVxyXG5cdCAqIEBwYXJhbSBsT2JqZWN0VG9rZW5zXHJcblx0ICovXHJcblx0cmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0UHVibGljKFxyXG5cdFx0dG9rZW5OYW1lOiBzdHJpbmcsXHJcblx0XHRmb3JtdWxhOiBzdHJpbmcsXHJcblx0XHRsT2JqZWN0VG9rZW5zOiBhbnlbXVxyXG5cdCk6IHN0cmluZyB7XHJcblx0XHRsZXQgbERhdGFPcmc6IGFueVtdID0gW107XHJcblx0XHRpZiAobE9iamVjdFRva2Vucykge1xyXG5cdFx0XHRmb3IgKGxldCBkYXRhRm9ybSBpbiBsT2JqZWN0VG9rZW5zKSB7XHJcblx0XHRcdFx0bERhdGFPcmdbZGF0YUZvcm0udG9Mb3dlckNhc2UoKV0gPSBsT2JqZWN0VG9rZW5zW2RhdGFGb3JtXTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMucmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0KHRva2VuTmFtZSwgZm9ybXVsYSwgbERhdGFPcmcpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBAcGFyYW0gdG9rZW5OYW1lIHRva2VuIG5hbWVcclxuXHQgKiBAcGFyYW0gZm9ybXVsYSBTdHJpbmcgd2l0aCB0aGUgZm9ybXVsYSB0byBleGVjdXRlXHJcblx0ICogQHBhcmFtIGxPYmplY3RUb2tlbnMgTGlzdCBvZiB0b2tlbnMgd2l0aCB0aGUgdmFsdWVzIHRvIHJlcGxhY2VcclxuXHQgKi9cclxuXHRyZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3QodG9rZW5OYW1lOiBzdHJpbmcsIGZvcm11bGE6IHN0cmluZywgbE9iamVjdFRva2VuczogYW55KTogc3RyaW5nIHtcclxuXHRcdGlmICghZm9ybXVsYSB8fCBmb3JtdWxhLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdHRocm93IHtcclxuXHRcdFx0XHRtZXNzYWdlOiAnTGEgZm9ybXVsYSBkZWwgdG9rZW4gJyArIHRva2VuTmFtZSArICcgZXN0YSB2YWPDrWEnLFxyXG5cdFx0XHRcdHRpdGxlOiAnQWxlcnRhIScsXHJcblx0XHRcdFx0ZXJyb3I6XHJcblx0XHRcdFx0XHQnTGEgZm9ybXVsYSBkZWwgdG9rZW4gJyArIHRva2VuTmFtZSArICcgZXN0YSB2YWPDrWEuIFtmb3JtdWxhWycgKyBmb3JtdWxhICsgJ11dJ1xyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdFx0bGV0IHJlcGxhY2VkVG9rZW5zOiBzdHJpbmcgPSBmb3JtdWxhLnRvU3RyaW5nKCk7XHJcblx0XHRpZiAocmVwbGFjZWRUb2tlbnMuc3RhcnRzV2l0aCgnZmlsZTovLycpKSB7XHJcblx0XHRcdHJldHVybiByZXBsYWNlZFRva2VucztcclxuXHRcdH1cclxuXHRcdC8vIEZpbmQgdGhlIHRva2VucyBpbiB0aGUgZm9ybXVsYVxyXG5cdFx0bGV0IHRva2Vuc0FycmF5OiBhbnlbXSA9IHRoaXMuZ2V0TGlzdFRva2Vuc0J5U3RyaW5nKHJlcGxhY2VkVG9rZW5zKTtcclxuXHRcdGlmICh0b2tlbnNBcnJheS5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0XHR9XHJcblx0XHQvLyBJZiB0aGVyZSBhbnkgdG9rZW4sIHRyeSB0byByZXBsYWNlXHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vuc0FycmF5Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGxldCBvYmplY3RUb2tlbiA9XHJcblx0XHRcdFx0bE9iamVjdFRva2Vuc1t0b2tlbnNBcnJheVtpXS5rZXldICE9PSB1bmRlZmluZWRcclxuXHRcdFx0XHRcdD8gbE9iamVjdFRva2Vuc1t0b2tlbnNBcnJheVtpXS5rZXldXHJcblx0XHRcdFx0XHQ6IG51bGw7XHJcblx0XHRcdGxldCBjbGVhcktleTtcclxuXHRcdFx0aWYgKG9iamVjdFRva2VuID09IG51bGwpIHtcclxuXHRcdFx0XHRjbGVhcktleSA9IHRva2Vuc0FycmF5W2ldLmtleS5yZXBsYWNlKCckeycsICcnKS5yZXBsYWNlKCd9JywgJycpLnRvTG93ZXJDYXNlKCk7XHJcblx0XHRcdFx0b2JqZWN0VG9rZW4gPVxyXG5cdFx0XHRcdFx0bE9iamVjdFRva2Vuc1tjbGVhcktleV0gIT09IHVuZGVmaW5lZCA/IGxPYmplY3RUb2tlbnNbY2xlYXJLZXldIDogbnVsbDtcclxuXHJcblx0XHRcdFx0aWYgKG9iamVjdFRva2VuID09IG51bGwpIHtcclxuXHRcdFx0XHRcdGNsZWFyS2V5ID0gdG9rZW5zQXJyYXlbaV0ua2V5XHJcblx0XHRcdFx0XHRcdC5yZXBsYWNlKCd7JywgJycpXHJcblx0XHRcdFx0XHRcdC5yZXBsYWNlKCd9JywgJycpXHJcblx0XHRcdFx0XHRcdC5zcGxpdCgnXycpWzFdXHJcblx0XHRcdFx0XHRcdC50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0XHRcdFx0b2JqZWN0VG9rZW4gPVxyXG5cdFx0XHRcdFx0XHRsT2JqZWN0VG9rZW5zW2NsZWFyS2V5XSAhPT0gdW5kZWZpbmVkID8gbE9iamVjdFRva2Vuc1tjbGVhcktleV0gOiBudWxsO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAob2JqZWN0VG9rZW4gPT0gbnVsbCkge1xyXG5cdFx0XHRcdC8vIElmIG5vdCBmaW5kIHRoZSB0b2tlbiwgYnkgZGVmYXVsdCBwdXQgYW4gZW1wdHkgc3RyaW5nXHJcblx0XHRcdFx0LyppZiAoVG9rZW5TZXJ2aWNlLmV4Y2x1ZGVkVG9rZW4uaW5kZXhPZihjbGVhcktleSkgPT09IC0xKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFxyXG5cdFx0XHRcdFx0XHQnRWwgdG9rZW4gJyArIHRva2Vuc0FycmF5W2ldLnZhbHVlICsgJyBubyBmdWUgZW5jb250cmFkby4nLFxyXG5cdFx0XHRcdFx0XHRsT2JqZWN0VG9rZW5zLFxyXG5cdFx0XHRcdFx0XHR0b2tlbnNBcnJheVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHR9Ki9cclxuXHRcdFx0XHRvYmplY3RUb2tlbiA9ICcnO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChvYmplY3RUb2tlbiAhPSBudWxsKSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlOiBhbnkgPSBOdW1iZXIob2JqZWN0VG9rZW4pXHJcblx0XHRcdFx0XHQ/IG9iamVjdFRva2VuXHJcblx0XHRcdFx0XHQ6IEFycmF5LmlzQXJyYXkob2JqZWN0VG9rZW4pXHJcblx0XHRcdFx0XHQ/IEpTT04uc3RyaW5naWZ5KG9iamVjdFRva2VuKVxyXG5cdFx0XHRcdFx0OiBcIidcIiArIG9iamVjdFRva2VuICsgXCInXCI7XHJcblx0XHRcdFx0cmVwbGFjZWRUb2tlbnMgPSB0aGlzLnJlcGxhY2VUb2tlbihyZXBsYWNlZFRva2VucywgdG9rZW5zQXJyYXlbaV0udmFsdWUsIHZhbHVlKTtcclxuXHRcdFx0XHQvLyB9IGVsc2Uge1xyXG5cdFx0XHRcdC8vICAgY29uc29sZS5lcnJvcihsT2JqZWN0VG9rZW5zLCB0b2tlbnNBcnJheSk7XHJcblx0XHRcdFx0Ly8gICB0aHJvdyB7XHJcblx0XHRcdFx0Ly8gICAgIG1lc3NhZ2U6IFwiTm8gc2UgZW5jb250csOzIHZhbG9yIHBhcmEgdW4gdG9rZW5cIixcclxuXHRcdFx0XHQvLyAgICAgdGl0bGU6IFwiQWxlcnRhIVwiLFxyXG5cdFx0XHRcdC8vICAgICBlcnJvcjogXCJFbCB0b2tlbiBcIiArIHRva2Vuc0FycmF5W2ldLnZhbHVlICsgXCIgbm8gZnVlIGVuY29udHJhZG8uXCJcclxuXHRcdFx0XHQvLyAgIH07XHJcblx0XHRcdFx0Ly9cclxuXHRcdFx0XHQvLyBTaSBsYSBmb3JtdWxhIGVtcGllemEgY29uIFsgZXMgcG9ycXVlIHRpZW5lIHVuIGFycmF5IGVuIGVsIHZhbG9yIHF1ZSByZXNvbHZpbyBlbCB0b2tlblxyXG5cdFx0XHRcdGlmIChyZXBsYWNlZFRva2Vucy5jaGFyQXQoMCkgPT0gJ1snKSB7XHJcblx0XHRcdFx0XHRsZXQgcmVnZXhPcGVyYXRvciA9IG5ldyBSZWdFeHAoJyg9ezJ9fCE9PXwhPXw8PXw+PXw8fD4pJyk7XHJcblx0XHRcdFx0XHQvLyBSZXRvcm5hIGVsIG9wZXJhZG9yXHJcblx0XHRcdFx0XHRsZXQgb3BlcmF0b3I6IHN0cmluZ1tdID0gcmVwbGFjZWRUb2tlbnMubWF0Y2gocmVnZXhPcGVyYXRvcik7XHJcblx0XHRcdFx0XHQvLyBTZXBhcmEgbGEgc2VudGVuY2lhIHBvciBlbCBvcGVyYWRvclxyXG5cdFx0XHRcdFx0Ly8gTGEgcHJpbWVyYSBwYXJ0ZSBlcyBlbCB2YWxvciBwb3IgZWwgY3VhbCBzZSByZW1wbGF6YSBlbCB0b2tlbiBxdWUgZXMgdW4gYXJyYXkgZW4gc3RyaW5nIFwiWydhJywgJ2InXVwiXHJcblx0XHRcdFx0XHQvLyBFbCBzZWd1bmRvIGVzIGVsIHZhbG9yIGNvbiBlbCBjdWFsIHNlIHZhIGEgY29tcGFyYXJcclxuXHRcdFx0XHRcdGxldCB2YWx1ZVRva2VuLCB2YWx1ZVRvQ29tcGFyZTtcclxuXHRcdFx0XHRcdFt2YWx1ZVRva2VuLCB2YWx1ZVRvQ29tcGFyZV0gPSByZXBsYWNlZFRva2Vucy5zcGxpdChvcGVyYXRvclswXSk7XHJcblx0XHRcdFx0XHQvLyBTZSBsaW1waWEgZWwgc3RyaW5nIGNvcnJlc3BvbmRpZW50ZSBhbCBhcnJheSBwYXJhIHF1ZSBsb3MgZWxlbWVudG9zIHF1ZWRlbiBzZXBhcmFkb3MgcG9yIFwiLFwiXHJcblx0XHRcdFx0XHR2YWx1ZVRva2VuID0gdmFsdWVUb2tlbi5yZXBsYWNlKC9bXmEtekEtWjAtOSAsXS9nLCAnJyk7XHJcblx0XHRcdFx0XHQvLyBTZSBwYXNhIGVsIHN0cmluZyBhIGFycmF5XHJcblx0XHRcdFx0XHR2YWx1ZVRva2VuID0gdmFsdWVUb2tlbi5zcGxpdCgnLCcpO1xyXG5cdFx0XHRcdFx0Ly8gU2kgZWwgdmFsb3IgcXVlIHNlIGVuY29udHJvIHBhcmEgZWwgdG9rZW4gZXMgdW4gYXJyYXkgZXMgcG9ycXVlIGVzIHRhZ1xyXG5cdFx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWVUb2tlbikpIHtcclxuXHRcdFx0XHRcdFx0Ly8gU2UgdHJhdGEgZGUgZW5jb250cmFyIGVsIHZhbG9yIGEgY29tcGFyYXIgZGVudHJvIGRlbCBhcnJheSBzaSBlcyBhc2lcclxuXHRcdFx0XHRcdFx0Ly8gcmVwbGFjZWRUb2tlbnM9J3RydWUnXHJcblx0XHRcdFx0XHRcdGxldCBpc1RhZ0ZvdW5kID0gdmFsdWVUb2tlbi5zb21lKCh0YWcpID0+IHRhZyA9PSB2YWx1ZVRvQ29tcGFyZSk7XHJcblx0XHRcdFx0XHRcdHJlcGxhY2VkVG9rZW5zID0gaXNUYWdGb3VuZCA/ICd0cnVlJyA6ICdmYWxzZSc7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcnkgdG8gZXZhbCB0aGUgZm9ybXVsYSBkZXBlbmQgb2YgdGhlIHR5cGUgb2YgZmllbGRzLlxyXG5cdCAqIEBwYXJhbSBsU3RhdGljVG9rZW5cclxuXHQgKiBAcGFyYW0gZm9ybXVsYU5hbWVcclxuXHQgKiBAcGFyYW0gZm9ybXVsYVxyXG5cdCAqL1xyXG5cdHZhbGlkYXRlRm9ybXVsYShsU3RhdGljVG9rZW46IGFueSwgZm9ybXVsYU5hbWU6IHN0cmluZywgZm9ybXVsYTogc3RyaW5nKTogYm9vbGVhbiB7XHJcblx0XHRsZXQgZXZhbEZvcm11bGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdC8vIFRvIHZhbGlkYXRlIHRoZSBmb3JtdWxhLCBmaXJzdCBvcmdhbml6ZSB0aGUgaW5mbyB0byBrZXkgLSB2YWx1ZSBhcnJheVxyXG5cdFx0bGV0IG9iamVjdFRva2VuczogYW55W10gPSBbXTtcclxuXHRcdGZvciAobGV0IHBhbmVsIG9mIGxTdGF0aWNUb2tlbikge1xyXG5cdFx0XHRmb3IgKGxldCBncm91cFRva2VuIG9mIHBhbmVsLnZhbHVlKSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgc3RhdGljVG9rZW4gb2YgZ3JvdXBUb2tlbi52YWx1ZSkge1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgYXJyYXlUb2tlbkluZm8gb2Ygc3RhdGljVG9rZW4pIHtcclxuXHRcdFx0XHRcdFx0b2JqZWN0VG9rZW5zW2FycmF5VG9rZW5JbmZvLmtleV0gPSBhcnJheVRva2VuSW5mby5vYmplY3RcclxuXHRcdFx0XHRcdFx0XHQ/IGFycmF5VG9rZW5JbmZvLm9iamVjdC50eXBlID09ICdudW1iZXInXHJcblx0XHRcdFx0XHRcdFx0XHQ/ICcwJ1xyXG5cdFx0XHRcdFx0XHRcdFx0OiAnJ1xyXG5cdFx0XHRcdFx0XHRcdDogJyc7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHR0cnkge1xyXG5cdFx0XHRmb3JtdWxhID0gdGhpcy5yZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3QoZm9ybXVsYU5hbWUsIGZvcm11bGEsIG9iamVjdFRva2Vucyk7XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHQvL2NvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG5cdFx0XHR0aHJvdyBlcnJvcjtcclxuXHRcdH1cclxuXHRcdGlmIChmb3JtdWxhICE9PSBudWxsKSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0bGV0IHJlc3VsdCA9IGZvcm11bGEuc3RhcnRzV2l0aCgnZmlsZTovLycpID8gZm9ybXVsYSA6IGV2YWwoZm9ybXVsYSk7XHJcblx0XHRcdFx0ZXZhbEZvcm11bGEgPSB0cnVlO1xyXG5cdFx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdFx0Ly9jb25zb2xlLmVycm9yKFwiRXJyb3IgZXZhbHVhdGluZyB0aGUgZm9ybXVsYVwiLCBlKTtcclxuXHRcdFx0XHR0aHJvdyB7XHJcblx0XHRcdFx0XHRtZXNzYWdlOiAnTGEgZm9ybXVsYSBubyBmdWUgcG9zaWJsZSBldmFsdWFyJyxcclxuXHRcdFx0XHRcdHRpdGxlOiAnQWxlcnRhIScsXHJcblx0XHRcdFx0XHRlcnJvcjogZVxyXG5cdFx0XHRcdH07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBldmFsRm9ybXVsYTtcclxuXHR9XHJcblxyXG5cdGdldENvbmZpZ0Nsb25pbmdUb2tlbk1hcChvbGRQUFA6IG51bWJlciwgbmV3UFBQOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vZ2V0Q29uZmlnQ2xvbmluZ1Rva2VuTWFwJyxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKVxyXG5cdFx0XHRcdFx0LnNldCgnb2xkUFBQJywgb2xkUFBQLnRvU3RyaW5nKCkpXHJcblx0XHRcdFx0XHQuc2V0KCduZXdQUFAnLCBuZXdQUFAudG9TdHJpbmcoKSlcclxuXHRcdFx0fVxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIl19
|
|
1140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSTlELE9BQU8sRUFBUyxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBd0IsTUFBTSxhQUFhLENBQUM7Ozs7O0FBSzdGLE1BQU0sT0FBTyxZQUFZO0lBb1Z4QixZQUNnQyxXQUFXLEVBQ2xDLFVBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLFlBQTBCO1FBSEgsZ0JBQVcsR0FBWCxXQUFXLENBQUE7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUNoQyxDQUFDO0lBRUosaUZBQWlGO0lBQ2pGLHVCQUF1QixDQUFDLFVBQVU7UUFDakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QywwQkFBMEI7WUFDMUIsSUFBSSxnQkFBZ0IsR0FBVSxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUN0RCxJQUFJLEVBQUUsQ0FBQyxVQUFlLEVBQUUsRUFBRTtvQkFDekIsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTt3QkFDMUIsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUU7NEJBQy9CLElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FB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O0lBQ25FLFlBQVksQ0FBQyxzQ0FBc0MsQ0FBQyxXQUFXLEVBQUU7Q0FDakUsQ0FBQzt5R0FsVlUsWUFBWSxrQkFxVmYsYUFBYTs2R0FyVlYsWUFBWSxjQUZaLE1BQU07MkZBRU4sWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEI7OzBCQXNWRSxNQUFNOzJCQUFDLGFBQWE7MEhBaFZJLE1BQU07c0JBQS9CLE1BQU07dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4vZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3VycmVuY3lQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgVG9rZW4sIEhFQURFUl9KU09OLCBVdGlsU3RyaW5nLCBEYXRlVXRpbCwgUGxpQ25mR3VhcmFudGVlVG9rZW4gfSBmcm9tICduZy1wbGktdXRpbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2tlblNlcnZpY2Uge1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTSUdOX0xFVFRFUl9UQUdfSUQ6IHN0cmluZyA9ICdfc2lnbi1sZXR0ZXItdGFnLWlkJztcclxuXHJcblx0LyoqICovXHJcblx0QEluamVjdChMT0NBTEVfSUQpIHB1YmxpYyBsb2NhbGU6IHN0cmluZztcclxuXHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0ZPUk06IHN0cmluZyA9ICdGcm0nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9CVURHRVQ6IHN0cmluZyA9ICdQcmVzdXB1ZXN0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0NBTENVTEFURUQ6IHN0cmluZyA9ICdDYWxjdWxhZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9TTkFQU0hPVDogc3RyaW5nID0gJ1NuYXBzaG90JztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfU1RBVElDOiBzdHJpbmcgPSAnRXN0w6F0aWNvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfRE9DVU1FTlRPOiBzdHJpbmcgPSAnRG9jdW1lbnRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfVEFTSzogc3RyaW5nID0gJ1RhcmVhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfVEFTS0w6IHN0cmluZyA9ICd0YXNrJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfR1VBUkFOVEVFOiBzdHJpbmcgPSAnR2FyYW50aWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9UT1RBTF9BTU9VTlQ6IHN0cmluZyA9ICd0b3RhbEFtb3VudCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0FQUExJQ0FUSU9OX1BST0NFU1NfVE9UQUxfQU1PVU5UOiBzdHJpbmcgPSAnYXBwbGljYXRpb25Ub3RhbCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0FQUExJQ0FUSU9OX1BST0NFU1NfVE9UQUxfT1dOX0ZPVU5EUzogc3RyaW5nID0gJ2FwcGxpY2F0aW9uT3duRm91bmRzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfQVBQTElDQVRJT05fUFJPQ0VTU19UT1RBTF9GSU5BTkNJTkc6IHN0cmluZyA9ICdhcHBsaWNhdGlvbkZpbmFuY2luZyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0xFR0FMSVpBVElPTl9QUk9DRVNTX1RPVEFMX0FNT1VOVDogc3RyaW5nID0gJ2xlZ2FsaXphdGlvblRvdGFsJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfT1dOX0ZPVU5EUzogc3RyaW5nID1cclxuXHRcdCdsZWdhbGl6YXRpb25Pd25Gb3VuZHMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9MRUdBTElaQVRJT05fUFJPQ0VTU19UT1RBTF9GSU5BTkNJTkc6IHN0cmluZyA9ICdsZWdhbGl6YXRpb25GaW5hbmNpbmcnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9JTlNVUkFOQ0VfQU1PVU5UOiBzdHJpbmcgPSAnaW5zdXJhbmNlQW1vdW50JztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgTEVHQUxJWkFUSU9OX09SX0FQUExJQ0FUSU9OX1RPVEFMX0ZJTkFOQ0lORzogc3RyaW5nID1cclxuXHRcdCdsZWdsaXphdGlvbk9yQXBwbGljYXRpb25Ub3RhbEZpbmFuY2luZyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX1JFU1VNRV9DQVRFR09SWV9ZRUFSOiBzdHJpbmcgPSAncmVzdW1lQ2F0ZWdvcnlZZWFyJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfRkVDSEFfRklOQU5DSU5HX1NUQVJUOiBzdHJpbmcgPSAnZmVjaGFJbmljaW9GaW5hbmNpYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9GRUNIQV9GSU5BTkNJTkdfRU5EOiBzdHJpbmcgPSAnZmVjaGFGaW5GaW5hbmNpYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0RVUkFUSU9OX1NUVURJRVM6IHN0cmluZyA9ICdkdXJhY2lvbkVzdHVkaW9zJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19GSU5BTkNJTkdfRFVSQVRJT046IHN0cmluZyA9ICdkdXJhY2lvbkZpbmFuY2lhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0NPRElHT19WRVJJRklDQUNJT046IHN0cmluZyA9ICdjb2RpZ29WZXJpZmljYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9BX1FVSUVOX1ZBX0RJUklHSURPOiBzdHJpbmcgPSAnYVF1aWVuVmFEaXJpZ2lkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0ZFQ0hBX0FDVFVBTDogc3RyaW5nID0gJ2ZlY2hhQWN0dWFsJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfU1RBVFVTX05BTUU6IHN0cmluZyA9ICdzdGF0dXNOYW1lJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUEFUUk9DSU5BRE9SOiBzdHJpbmcgPSAncGxpUGF0cm9jaW5hZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUEFUUk9DSU5BRE9SX0NPUlRPOiBzdHJpbmcgPSAncGxpUGF0cm9jaW5hZG9yQ29ydG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QUk9HUkFNQTogc3RyaW5nID0gJ3BsaVByb2dyYW1hJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUFJPR1JBTUFfQ09SVE86IHN0cmluZyA9ICdwbGlQcm9ncmFtYUNvcnRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUFJPTU9DSU9OOiBzdHJpbmcgPSAncGxpUHJvbW9jaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUFJPTU9DSU9OX0NPUlRPOiBzdHJpbmcgPSAncGxpUHJvbW9jaW9uQ29ydG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9BTklPX1BST01PQ0lPTjogc3RyaW5nID0gJ2FuaW9Qcm9tb2Npb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9JU09fTU9ORURBX0JBU0U6IHN0cmluZyA9ICdpc29Nb25lZGFCYXNlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfU0FMVURPX0NPTVBMRU1FTlRBUklPOiBzdHJpbmcgPSAnc2FsdWRvQ29tcGxlbWVudGFyaW8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9OVU1CRVJfQVBQTElDQVRJT046IHN0cmluZyA9ICdudW1lcm9SYWRpY2Fkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1VTRVJfSU5JVElBTFM6IHN0cmluZyA9ICdpbmljaWFsZXNVc3VhcmlvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfTEVUVEVSX1NJR046IHN0cmluZyA9ICdmaXJtYUNhcnRhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT01NSVRURUVfTkFNRTogc3RyaW5nID0gJ2NvbWl0ZU5vbWJyZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX1NFR01FTlRBVElPTjogc3RyaW5nID0gJ2NvbWl0ZVNlZ21lbnRhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0FHR1JVUEFUSU9OOiBzdHJpbmcgPSAnY29taXRlQWdydXBhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0NVVExJTkVfREFURTogc3RyaW5nID0gJ2NvbWl0ZUZlY2hhTGluZWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTkZJUk1fTEVHQUxJWkFUSU9OX0FQUE9JTlRNRU5UOiBzdHJpbmcgPSAnY29uZmlybWFjaW9uQ2l0YSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfRE9DVU1FTlRfTlVNQkVSOiBzdHJpbmcgPSAnbnVtZXJvRG9jdW1lbnRvQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX0RPQ1VNRU5UX1RZUEU6IHN0cmluZyA9ICd0aXBvRG9jdW1lbnRvQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX05BTUU6IHN0cmluZyA9ICdub21icmVzQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX0xBU1ROQU1FOiBzdHJpbmcgPSAnYXBlbGxpZG9zQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1RZUEVfQ09ERUJUT1I6IHN0cmluZyA9ICd0aXBvUGVyc29uYUNvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9SRVZJRVdFUjogc3RyaW5nID0gJ3Jldmlzb3JDb2RldWRvcmVzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19UT1RBTF9XRUlHSFRFRDogc3RyaW5nID0gJ3BvbmRlcmFkb1RvdGFsJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT05TRUNVVElWRV9HVUFSQU5URUU6IHN0cmluZyA9ICdjb25zZWN1dGl2b0dhcmFudGlhcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfREFZOiBzdHJpbmcgPSAnZGlhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19NT05USDogc3RyaW5nID0gJ21lcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfWUVBUjogc3RyaW5nID0gJ2Fubyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfTkFNRTogc3RyaW5nID0gJ25vbWJyZXNSZXByZXNlbnRhbnRlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9MQVNUTkFNRTogc3RyaW5nID0gJ2FwZWxsaWRvc1JlcHJlc2VudGFudGUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX0RPQ1VNRU5UX05VTUJFUjogc3RyaW5nID0gJ2NlZHVsYVJlcHJlc2VudGFudGUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NJVFlfU0lHTkFUVVJFOiBzdHJpbmcgPSAnY2l1ZGFkRmlybWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1VTRVJfVFlQRV9DUkVESVRfU1RVRFk6IHN0cmluZyA9ICd0aXBvVXN1YXJpb0VzdHVkaW9DcmVkaXRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9WRUhJQ0xFU19RVUFOVElUWTogc3RyaW5nID0gJ2NhbnRpZGFkVmVoaWN1bG9zQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX0FTU0VUU19RVUFOVElUWTogc3RyaW5nID0gJ2NhbnRpZGFkQmllbmVzQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0xJU1RfQ09ERUJUT1JTOiBzdHJpbmcgPSAnbGlzdGFDb2RldWRvcmVzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX0lOR1JFU09fQ09ERVVET1JfSEFCRUFTX0RBVEE6IHN0cmluZyA9ICdpbmdyZXNvQ29kZXVkb3JIYWJlYXNEYXRhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX1BERl9SRVNVTUVOX0NPREVVRE9SOiBzdHJpbmcgPSAncGRmUmVzdW1lbkNvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19RVUFOVElUWV9WRUhJQ0xFX0JFTkVGSUNJQVJZOiBzdHJpbmcgPSAnY2FudGlkYWRWZWhpY3Vsb3NTZWxlY2Npb25hZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1FVQU5USVRZX0FTU0VUU19CRU5FRklDSUFSWTogc3RyaW5nID0gJ2NhbnRpZGFkQmllbmVzU2VsZWNjaW9uYWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19CRU5fQ09ESUdPOiBzdHJpbmcgPSAnYmVuQ29kaWdvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX0NSRURJVF9SRVZJRVdFUl9PQlNFUlZBVElPTlNfQ09ERUJUT1I6IHN0cmluZyA9XHJcblx0XHQnY3JlZGl0UmV2aWV3ZXJPYnNlcnZhdGlvbnNDb2RlYnRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9DUkVESVRfUkVWSUVXRVJfT0JTRVJWQVRJT05TOiBzdHJpbmcgPSAnY3JlZGl0UmV2aWV3ZXJPYnNlcnZhdGlvbnMnO1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fVEFHX05BTUU6IHN0cmluZyA9ICd0YWdOYW1lJztcclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOUzogYW55W10gPSBbXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1BBVFJPQ0lOQURPUixcclxuXHRcdFx0bGFiZWw6ICdQYXRyb2NpbmFkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9QUk9HUkFNQSxcclxuXHRcdFx0bGFiZWw6ICdQcm9ncmFtYSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1BST01PQ0lPTixcclxuXHRcdFx0bGFiZWw6ICdQcm9tb2Npw7NuJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfQU5JT19QUk9NT0NJT04sXHJcblx0XHRcdGxhYmVsOiAnQcOxbyBwcm9tb2Npw7NuJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfSVNPX01PTkVEQV9CQVNFLFxyXG5cdFx0XHRsYWJlbDogJ0lTTyBNb25lZGEgYmFzZSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1NBTFVET19DT01QTEVNRU5UQVJJTyxcclxuXHRcdFx0bGFiZWw6ICdTYWx1ZG8gY29tcGxlbWVudGFyaW8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9DT0RJR09fVkVSSUZJQ0FDSU9OLFxyXG5cdFx0XHRsYWJlbDogJ0PDs2RpZ28gZGUgdmVyaWZpY2FjacOzbidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0FfUVVJRU5fVkFfRElSSUdJRE8sXHJcblx0XHRcdGxhYmVsOiAnQSBxdWllbiB2YSBkaXJpZ2lkbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0ZFQ0hBX0FDVFVBTCxcclxuXHRcdFx0bGFiZWw6ICdGZWNoYSBhY3R1YWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9TVEFUVVNfTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdFc3RhZG8gYWN0dWFsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfTlVNQkVSX0FQUExJQ0FUSU9OLFxyXG5cdFx0XHRsYWJlbDogJ07Dum1lcm8gcmFkaWNhZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9VU0VSX0lOSVRJQUxTLFxyXG5cdFx0XHRsYWJlbDogJ0luaWNpYWxlcyBkZSB1c3VhcmlvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfTEVUVEVSX1NJR04sXHJcblx0XHRcdGxhYmVsOiAnRmlybWEgZGUgY2FydGFzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdOb21icmUgY29taXTDqSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX1NFR01FTlRBVElPTixcclxuXHRcdFx0bGFiZWw6ICdTZWdtZW50YWNpw7NuIGNvbWl0w6knXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9BR0dSVVBBVElPTixcclxuXHRcdFx0bGFiZWw6ICdBZ3J1cGFjacOzbiBjb21pdMOpJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQ1VUTElORV9EQVRFLFxyXG5cdFx0XHRsYWJlbDogJ0ZlY2hhIEzDrW5lYSBkZSBjb3J0ZSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ORklSTV9MRUdBTElaQVRJT05fQVBQT0lOVE1FTlQsXHJcblx0XHRcdGxhYmVsOiAnQ29uZmlybWFjacOzbiBkZSBjaXRhJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9ET0NVTUVOVF9OVU1CRVIsXHJcblx0XHRcdGxhYmVsOiAnTsO6bWVybyBkZSBkb2N1bWVudG8gZGUgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0RPQ1VNRU5UX1RZUEUsXHJcblx0XHRcdGxhYmVsOiAnVGlwbyBkZSBkb2N1bWVudG8gZGUgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnTm9tYnJlcyBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfTEFTVE5BTUUsXHJcblx0XHRcdGxhYmVsOiAnQXBlbGxpZG9zIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19UWVBFX0NPREVCVE9SLFxyXG5cdFx0XHRsYWJlbDogJ1RpcG8gZGUgcGVyc29uYSBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfVkVISUNMRVNfUVVBTlRJVFksXHJcblx0XHRcdGxhYmVsOiAnQ2FudGlkYWQgdmVoaWN1bG9zIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9BU1NFVFNfUVVBTlRJVFksXHJcblx0XHRcdGxhYmVsOiAnQ2FudGlkYWQgYmllbmVzIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9SRVZJRVdFUixcclxuXHRcdFx0bGFiZWw6ICdSZXZpc29yIGRlIGNvZGV1ZG9yZXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1RPVEFMX1dFSUdIVEVELFxyXG5cdFx0XHRsYWJlbDogJ1BvbmRlcmFkbyB0b3RhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09OU0VDVVRJVkVfR1VBUkFOVEVFLFxyXG5cdFx0XHRsYWJlbDogJ0NvbnNlY3V0aXZvIGRlIGdhcmFudGlhcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdOb21icmVzIHJlcHJlc2VudGFudGUgbGVnYWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX0xBU1ROQU1FLFxyXG5cdFx0XHRsYWJlbDogJ0FwZWxsaWRvcyByZXByZXNlbnRhbnRlIGxlZ2FsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9ET0NVTUVOVF9OVU1CRVIsXHJcblx0XHRcdGxhYmVsOiAnQ2VkdWxhIHJlcHJlc2VudGFudGUgbGVnYWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1VTRVJfVFlQRV9DUkVESVRfU1RVRFksXHJcblx0XHRcdGxhYmVsOiAnVGlwbyB1c3VhcmlvIGVzdHVkaW8gY3LDqWRpdG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0RBWSxcclxuXHRcdFx0bGFiZWw6ICdEaWEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX01PTlRILFxyXG5cdFx0XHRsYWJlbDogJ01lcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfWUVBUixcclxuXHRcdFx0bGFiZWw6ICdBw7FvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DSVRZX1NJR05BVFVSRSxcclxuXHRcdFx0bGFiZWw6ICdDaXVkYWQgZGUgbGEgZmlybWEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0xJU1RfQ09ERUJUT1JTLFxyXG5cdFx0XHRsYWJlbDogJ0xpc3RhIGRlIGNvZGV1ZG9yZXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fSU5HUkVTT19DT0RFVURPUl9IQUJFQVNfREFUQSxcclxuXHRcdFx0bGFiZWw6ICdJbmdyZXNvIENvZGV1ZG9yIEhhYmVhcyBEYXRhJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX1BERl9SRVNVTUVOX0NPREVVRE9SLFxyXG5cdFx0XHRsYWJlbDogJ1BkZiBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUVVBTlRJVFlfVkVISUNMRV9CRU5FRklDSUFSWSxcclxuXHRcdFx0bGFiZWw6ICdDYW50aWRhZCBkZSB2ZWjDrWN1bG9zIGRlbCBzZWxlY2Npb25hZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1FVQU5USVRZX0FTU0VUU19CRU5FRklDSUFSWSxcclxuXHRcdFx0bGFiZWw6ICdDYW50aWRhZCBiaWVuZXMgZGVsIHNlbGVjY2lvbmFkbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQkVOX0NPRElHTyxcclxuXHRcdFx0bGFiZWw6ICdDw7NkaWdvIGJlbmVmaWNpYXJpbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9DUkVESVRfUkVWSUVXRVJfT0JTRVJWQVRJT05TLFxyXG5cdFx0XHRsYWJlbDogJ09ic2VydmFjaW9uZXMgcmV2aXNvciBmaW5hbmNpZXJvIHNlbGVjY2lvbmFkbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9DUkVESVRfUkVWSUVXRVJfT0JTRVJWQVRJT05TX0NPREVCVE9SLFxyXG5cdFx0XHRsYWJlbDogJ09ic2VydmFjaW9uZXMgcmV2aXNvciBmaW5hbmNpZXJvIGNvZGV1ZG9yZXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fVEFHX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnTm9tYnJlIGRlbCB0YWcnXHJcblx0XHR9XHJcblx0XTtcclxuXHJcblx0c3RhdGljIGV4Y2x1ZGVkVG9rZW4gPSBbXHJcblx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19VU0VSX1RZUEVfQ1JFRElUX1NUVURZLnRvTG93ZXJDYXNlKCksXHJcblx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9WRUhJQ0xFU19RVUFOVElUWS50b0xvd2VyQ2FzZSgpLFxyXG5cdFx0VG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfQVNTRVRTX1FVQU5USVRZLnRvTG93ZXJDYXNlKClcclxuXHRdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudCxcclxuXHRcdHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuXHRcdHByaXZhdGUgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZVxyXG5cdCkge31cclxuXHJcblx0LyoqIFRoaXMgcHJvbWlzZSBhbGxvd3MgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIHdoZW4gY29uc3VsdGluZyB0aGUgZm9ybSBmaWVsZHMuICovXHJcblx0Z2V0Rm9ybUZpZWxkc0J5UHJvbUNvZGUocHJvbUNvZGlnbyk6IFByb21pc2U8YW55W10+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdC8vIFNlYXJjaCB0aGUgZHluYW1pYyBmb3JtXHJcblx0XHRcdGxldCBsRm9ybUZpZWxkc1Rva2VuOiBhbnlbXSA9IG51bGw7XHJcblx0XHRcdHRoaXMuZm9ybVNlcnZpY2UuZ2V0QnlQcm9tQ29kaWdvKHByb21Db2RpZ28pLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKGFycmF5Rm9ybXM6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGFycmF5Rm9ybXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGZvcm1zIG9mIGFycmF5Rm9ybXMpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoZm9ybXMuY29tcG9uZW50cyAmJiBmb3Jtcy5jb21wb25lbnRzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgY29tcG9uZW50cyBvZiBmb3Jtcy5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjb21wb25lbnRzLmNvbXBvbmVudHMgJiYgY29tcG9uZW50cy5jb21wb25lbnRzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb25lbnRzLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjb21wb25lbnQuY29sdW1ucyAmJiBjb21wb25lbnQuY29sdW1ucy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgY0NvbXBvbmVudHMgb2YgY29tcG9uZW50LmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjQ29tcG9uZW50cy5jb21wb25lbnRzICYmXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjQ29tcG9uZW50cy5jb21wb25lbnRzLmxlbmd0aCA+IDBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgaXRlcmF0b3Igb2YgY0NvbXBvbmVudHMuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaXRlcmF0b3IudHlwZSA9PT0gJ2FkZHJlc3MnKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVsZXRlIGl0ZXJhdG9yLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRsZXQgZm9ybTogYW55ID0gYXJyYXlGb3JtcztcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IWZvcm0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0ucHJvbUNvZGlnbyB8fFxyXG5cdFx0XHRcdFx0XHRmb3JtWzBdLnByb21Db2RpZ28gIT0gcHJvbUNvZGlnb1xyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnNDA0J10pO1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm1Db21wLnRpdGxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZvcm1Db21wLnRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3Q6IGZvcm1Db21wXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFtdXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbltsRm9ybUZpZWxkc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0Q29tcG9uZW5ldEZvcm0oXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRnZXRGb3JtRmllbGRzQnlGb3JtSWQoZm9ybUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPiB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHQvLyBTZWFyY2ggdGhlIGR5bmFtaWMgZm9ybVxyXG5cdFx0XHRsZXQgbEZvcm1GaWVsZHNUb2tlbjogYW55W10gPSBudWxsO1xyXG5cdFx0XHR0aGlzLmZvcm1TZXJ2aWNlLmdldEJ5SWQoZm9ybUlkKS5zdWJzY3JpYmUoXHJcblx0XHRcdFx0KHJlc3VsdDogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgZm9ybTogYW55ID0gcmVzdWx0O1xyXG5cdFx0XHRcdFx0aWYgKCFmb3JtIHx8ICFmb3JtWzBdKSB7XHJcblx0XHRcdFx0XHRcdHJlc29sdmUobEZvcm1GaWVsZHNUb2tlbik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuID0gW107XHJcblx0XHRcdFx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0XHRcdGxldCBjb21wb25lbnRzOiBhbnlbXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29sdW1ucztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAobmV3Q29tcG9uZW50cyAmJiBVdGlsU3RyaW5nLmlzVmFsaWQoZm9ybUNvbXAudGl0bGUpKSB7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbi5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLmdldEtleUZvcm11bGFyaW8oZm9ybUNvbXAudGl0bGUpLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZm9ybUNvbXAudGl0bGUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG9iamVjdDogZm9ybUNvbXBcclxuXHRcdFx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogW11cclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuW2xGb3JtRmllbGRzVG9rZW4ubGVuZ3RoIC0gMV0udmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5nZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50cyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZmFsc2UsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGxcclxuXHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHJlc29sdmUobEZvcm1GaWVsZHNUb2tlbik7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdHJlamVjdChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKiogVGhpcyBwcm9taXNlIGFsbG93cyB0byBleGVjdXRlIGEgZnVuY3Rpb24gd2hlbiBjb25zdWx0aW5nIHRoZSBmb3JtIGZpZWxkcy4gKi9cclxuXHRnZXRGb3JtUGFuZWxzQnlQcm9tQ29kZShwcm9tQ29kaWdvKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtUGFubmVsc1Rva2VuOiBhbnlbXSA9IG51bGw7XHJcblx0XHRcdHRoaXMuZm9ybVNlcnZpY2UuZ2V0QnlQcm9tQ29kaWdvKHByb21Db2RpZ28pLnN1YnNjcmliZShcclxuXHRcdFx0XHQocmVzdWx0OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGxldCBmb3JtOiBhbnkgPSByZXN1bHQ7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFmb3JtIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdLnByb21Db2RpZ28gfHxcclxuXHRcdFx0XHRcdFx0Zm9ybVswXS5wcm9tQ29kaWdvICE9IHByb21Db2RpZ29cclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJzQwNCddKTtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZShsRm9ybVBhbm5lbHNUb2tlbik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRsRm9ybVBhbm5lbHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtUGFubmVsc1Rva2VuLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtQ29tcC50aXRsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmb3JtQ29tcC50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0b2JqZWN0OiBmb3JtQ29tcFxyXG5cdFx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBbXVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtUGFubmVsc1Rva2VuW2xGb3JtUGFubmVsc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0UGFuZWxDb21wb25lbmV0KGNvbXBvbmVudHMsIG5ld0NvbXBvbmVudHMsIG51bGwpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtUGFubmVsc1Rva2VuKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgZWRpdEdyaWQgZHluYW1pYyBmb3JtXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHNcclxuXHQgKiBAcGFyYW0gZm9ybVxyXG5cdCAqL1xyXG5cdGdldFBhbmVsQ29tcG9uZW5ldChjb21wb25lbnRzOiBhbnlbXSwgZm9ybTogYW55LCBwYW5lbE5hbWU6IHN0cmluZyk6IGFueVtdIHtcclxuXHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgPT09ICdwYW5lbCcpIHtcclxuXHRcdFx0XHRjb21wb25lbnRzLnB1c2goZm9ybUNvbXApO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbXBvbmVudHMgfHwgZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbXBvbmVudHMgPSB0aGlzLmdldFBhbmVsQ29tcG9uZW5ldChjb21wb25lbnRzLCBuZXdDb21wb25lbnRzLCBwYW5lbE5hbWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29tcG9uZW50cztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgY29tcG9uZW50cyBhIGNvbHVtbnMgb2YgdGhlIGR5bmFtaWMgZm9ybVxyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGZvcm1cclxuXHQgKi9cclxuXHRnZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdGNvbXBvbmVudHM6IGFueVtdLFxyXG5cdFx0Zm9ybTogYW55LFxyXG5cdFx0cGFuZWxOYW1lOiBzdHJpbmcsXHJcblx0XHRlZGl0Z3JpZDogYm9vbGVhbixcclxuXHRcdGVkaXRHcmlkS2V5OiBzdHJpbmdcclxuXHQpOiBhbnlbXSB7XHJcblx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzIHx8IGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdGlmIChmb3JtQ29tcC50eXBlID09PSAnZWRpdGdyaWQnKSB7XHJcblx0XHRcdFx0XHRcdGVkaXRncmlkID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0ZWRpdEdyaWRLZXkgPSBmb3JtQ29tcC5rZXk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29sdW1ucztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgJiYgZm9ybUNvbXAudHlwZSA9PT0gJ3BhbmVsJykge1xyXG5cdFx0XHRcdFx0cGFuZWxOYW1lID0gZm9ybUNvbXAudGl0bGU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbXBvbmVudHMgPSB0aGlzLmdldENvbXBvbmVuZXRGb3JtKFxyXG5cdFx0XHRcdFx0Y29tcG9uZW50cyxcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRwYW5lbE5hbWUsXHJcblx0XHRcdFx0XHRlZGl0Z3JpZCxcclxuXHRcdFx0XHRcdGVkaXRHcmlkS2V5XHJcblx0XHRcdFx0KTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRmb3JtQ29tcC5wYW5lbE5hbWUgPSBwYW5lbE5hbWU7XHJcblx0XHRcdFx0Zm9ybUNvbXAuZWRpdGdyaWQgPSBlZGl0Z3JpZDtcclxuXHRcdFx0XHRmb3JtQ29tcC5lZGl0R3JpZEtleSA9IGVkaXRHcmlkS2V5O1xyXG5cdFx0XHRcdGNvbXBvbmVudHMucHVzaChmb3JtQ29tcCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBjb21wb25lbnRzO1xyXG5cdH1cclxuXHJcblx0LyoqIFRoaXMgcHJvbWlzZSBhbGxvd3MgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIHdoZW4gY29uc3VsdGluZyB0aGUgZm9ybSBmaWVsZHMuICovXHJcblx0Z2V0Rm9ybUVkaXRHcmlkRmllbGRzQnlQcm9tQ29kZShwcm9tQ29kaWdvKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtRmllbGRzVG9rZW46IGFueVtdID0gbnVsbDtcclxuXHRcdFx0dGhpcy5mb3JtU2VydmljZS5nZXRCeVByb21Db2RpZ28ocHJvbUNvZGlnbykuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChyZXN1bHQ6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IGZvcm06IGFueSA9IHJlc3VsdDtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IWZvcm0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0ucHJvbUNvZGlnbyB8fFxyXG5cdFx0XHRcdFx0XHRmb3JtWzBdLnByb21Db2RpZ28gIT0gcHJvbUNvZGlnb1xyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnNDA0J10pO1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm1Db21wLnRpdGxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZvcm1Db21wLnRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3Q6IGZvcm1Db21wXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFtdXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbltsRm9ybUZpZWxkc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0RWRpdEdyaWRDb21wb25lbmV0KGNvbXBvbmVudHMsIG5ld0NvbXBvbmVudHMsIG51bGwpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRyZWplY3QoZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSByZWN1cnNpdmUgbWV0aG9kIHRvIGdldCBhbGwgdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBlZGl0R3JpZCBkeW5hbWljIGZvcm1cclxuXHQgKiBAcGFyYW0gY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBmb3JtXHJcblx0ICovXHJcblx0Z2V0RWRpdEdyaWRDb21wb25lbmV0KGNvbXBvbmVudHM6IGFueVtdLCBmb3JtOiBhbnksIHBhbmVsTmFtZTogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRpZiAoZm9ybUNvbXAudHlwZSA9PT0gJ2VkaXRncmlkJykge1xyXG5cdFx0XHRcdGZvcm1Db21wLnBhbmVsTmFtZSA9IHBhbmVsTmFtZTtcclxuXHRcdFx0XHRjb21wb25lbnRzLnB1c2goZm9ybUNvbXApO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbXBvbmVudHMgfHwgZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC50eXBlICYmIGZvcm1Db21wLnR5cGUgPT09ICdwYW5lbCcpIHtcclxuXHRcdFx0XHRcdHBhbmVsTmFtZSA9IGZvcm1Db21wLnRpdGxlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb21wb25lbnRzID0gdGhpcy5nZXRFZGl0R3JpZENvbXBvbmVuZXQoY29tcG9uZW50cywgbmV3Q29tcG9uZW50cywgcGFuZWxOYW1lKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNvbXBvbmVudHM7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyB0aGUgdG9rZW5zIGJ5IHByb21Db2RpZ28gKi9cclxuXHRnZXRMaXN0QnlQcm9tQ29kaWdvKHByb21Db2RlOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vZ2V0QnlQcm9tQ29kaWdvJyxcclxuXHRcdFx0eyBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwcm9tQ29kaWdvJywgcHJvbUNvZGUudG9TdHJpbmcoKSkgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCByZXR1cm5zIHRoZSB0b2tlbiBieSBpZCAqL1xyXG5cdGdldEJ5SWQoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL2dldEJ5SWQnLCB7XHJcblx0XHRcdHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2lkJywgaWQudG9TdHJpbmcoKSlcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IGRlbGV0ZXMgYSBmb3JtIGJ5IGlkICovXHJcblx0ZGVsZXRlKGlkKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZGVsZXRlKFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL2RlbGV0ZScsXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgnaWQnLCBpZCkgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCBzYXZlcyB0aGUgdG9rZW4gKi9cclxuXHRzYXZlKHRva2VuOiBUb2tlbik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vc2F2ZScsXHJcblx0XHRcdHRva2VuLFxyXG5cdFx0XHRIRUFERVJfSlNPTlxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlGb3JtdWxhcmlvKGZvcm1UaXRsZTogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRcdGlmIChVdGlsU3RyaW5nLmlzVmFsaWQoZm9ybVRpdGxlKSkge1xyXG5cdFx0XHRyZXR1cm4gKFxyXG5cdFx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRk9STSkgK1xyXG5cdFx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhmb3JtVGl0bGUpLnJlcGxhY2UoL18vZywgJy0nKVxyXG5cdFx0XHQpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuICcnO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgdGhlIHVuaXF1ZSB2ZXJpZmljYXRpb24gY29kZSAqL1xyXG5cdGdldFVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUobG9naW46IHN0cmluZywgdG9rZW46IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuZG9jdW1lbnRzUmVwb3NpdG9yeSArXHJcblx0XHRcdFx0J2RvY3VtZW50by9jb25zdWx0YXJDb2RpZ29Vbmljby8nICtcclxuXHRcdFx0XHRsb2dpbiArXHJcblx0XHRcdFx0Jy8nICtcclxuXHRcdFx0XHR0b2tlbixcclxuXHRcdFx0eyBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCBzZW5kIHRoZSBpbmZvcm1hdGlvbiB0byBjb3B5IHRoZSBEb2N1bWVudCB2aWV3ZXIgKi9cclxuXHRjb3B5RG9jdW1lbnRJbmZvcm1hdGlvblZpZXdlcihcclxuXHRcdGxvZ2luOiBzdHJpbmcsXHJcblx0XHR0b2tlbjogc3RyaW5nLFxyXG5cdFx0dW5pcXVlQ29kZTogc3RyaW5nLFxyXG5cdFx0ZG9jdW1lbnRVUkw6IHN0cmluZyxcclxuXHRcdGRvY3VtZW50TmFtZTogc3RyaW5nXHJcblx0KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdGxldCBpbmZvRG9jdW1lbnRvID0ge1xyXG5cdFx0XHRjb2RpZ29VbmljbzogdW5pcXVlQ29kZSxcclxuXHRcdFx0cnV0YURvY3VtZW50bzogZG9jdW1lbnRVUkwsXHJcblx0XHRcdGRvY3VtZW50TmFtZTogZG9jdW1lbnROYW1lXHJcblx0XHR9O1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5kb2N1bWVudHNSZXBvc2l0b3J5ICtcclxuXHRcdFx0XHQnZG9jdW1lbnRvL2FkaWNpb25hckRvY3VtZW50by8nICtcclxuXHRcdFx0XHRsb2dpbiArXHJcblx0XHRcdFx0Jy8nICtcclxuXHRcdFx0XHR0b2tlbixcclxuXHRcdFx0aW5mb0RvY3VtZW50byxcclxuXHRcdFx0SEVBREVSX0pTT05cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5QnVkZ2V0KCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9CVURHRVQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleURvY3VtZW50KCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9ET0NVTUVOVE8pO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleVRhc2soKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1RBU0tMKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlTdGF0aWMoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NUQVRJQyk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5Q2FsY3VsYXRlZCh0b2tlbjogVG9rZW4pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9DQUxDVUxBVEVEKSArXHJcblx0XHRcdCdfJyArXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyh0b2tlbi5uYW1lKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlTbmFwc2hvdCh0b2tlbjogVG9rZW4pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9TTkFQU0hPVCkgK1xyXG5cdFx0XHQnXycgK1xyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnModG9rZW4ubmFtZSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5R3VhcmFudGVlKHRva2VuOiBQbGlDbmZHdWFyYW50ZWVUb2tlbik6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0dVQVJBTlRFRSkgK1xyXG5cdFx0XHQnXycgK1xyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnModG9rZW4ubmFtZSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXR1cm4gYSB2YWx1ZSB0aGF0IHJlcHJlc2VudCB0aGUgdHlwZSBvZiBsYWJlbDogMT1Gb3JtLCAyPUJ1ZGdldCwgMz1TdGF0aWMsIDQ9Q2FsY3VsYXRlZFxyXG5cdCAqIEBwYXJhbSBrZXkgVmFsdWUgdG8gZXZhbHVlYXRlXHJcblx0ICovXHJcblx0c3RhdGljIGdldEtleVR5cGUoa2V5OiBzdHJpbmcpOiBudW1iZXIge1xyXG5cdFx0a2V5ID0ga2V5LnJlcGxhY2UoJ3snLCAnJykucmVwbGFjZSgnfScsICcnKTtcclxuXHRcdGtleSA9IGtleS5zdWJzdHJpbmcoMSwga2V5LmluZGV4T2YoJ18nKSk7XHJcblx0XHRpZiAoa2V5LnN0YXJ0c1dpdGgoVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9GT1JNKSkpIHtcclxuXHRcdFx0cmV0dXJuIDE7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0JVREdFVCkpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIDI7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NUQVRJQykpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIDM7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChcclxuXHRcdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0NBTENVTEFURUQpXHJcblx0XHRcdClcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gNDtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdGtleS5zdGFydHNXaXRoKFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfVEFTS0wpKVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiA1O1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZXBlbmRzIG9mIHRoZSB0eXBlIG9mIGZvcm1GaWVsZFRva2VuIHJldHVybiBkZSB2YWx1ZSBvZiB0aGUgdmFsdWVEYXRhXHJcblx0ICogQHBhcmFtIGZvcm1GaWVsZFRva2VuXHJcblx0ICogQHBhcmFtIHZhbHVlRGF0YVxyXG5cdCAqL1xyXG5cdGdldFZhbHVlRnJvbUZvcm1GaWVsZChmb3JtRmllbGRUb2tlbjogYW55LCB2YWx1ZURhdGE6IGFueSk6IGFueSB7XHJcblx0XHRpZiAodHlwZW9mIHZhbHVlRGF0YSA9PSAnb2JqZWN0Jykge1xyXG5cdFx0XHRpZiAoZm9ybUZpZWxkVG9rZW4udHlwZSkge1xyXG5cdFx0XHRcdGlmIChmb3JtRmllbGRUb2tlbi50eXBlID09ICdhZGRyZXNzJykge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlRGF0YS5mb3JtYXR0ZWRfYWRkcmVzcztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0Zm9ybUZpZWxkVG9rZW4udHlwZSA9PSAnc2VsZWN0JyAmJlxyXG5cdFx0XHRcdFx0Zm9ybUZpZWxkVG9rZW4uc2VhcmNoRmllbGQgJiZcclxuXHRcdFx0XHRcdHZhbHVlRGF0YS5oYXNPd25Qcm9wZXJ0eShmb3JtRmllbGRUb2tlbi5zZWFyY2hGaWVsZClcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdHJldHVybiB2YWx1ZURhdGFbZm9ybUZpZWxkVG9rZW4uc2VhcmNoRmllbGRdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHZhbHVlRGF0YTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRyeSB0byBmaW5kIHRoZSB0b2tlbiBpbiB0aGUgc3RyaW5nVGV4dCBhbmQgcmVwbGFjZSB3aXRoIGRhdGFWYWx1ZS4gSWYgZGV0ZWN0IGZvcm1hdCBvZiBudW1iZXIgb3IgZGF0ZSB0cnkgdG8gZm9ybWF0IHRoZSBkYXRhVmFsdWVcclxuXHQgKiBAcGFyYW0gc3RyaW5nVGV4dFxyXG5cdCAqIEBwYXJhbSB0b2tlblxyXG5cdCAqIEBwYXJhbSBkYXRhVmFsdWVcclxuXHQgKi9cclxuXHRyZXBsYWNlVG9rZW4oc3RyaW5nVGV4dDogc3RyaW5nLCB0b2tlbjogYW55LCBkYXRhVmFsdWU6IGFueSk6IHN0cmluZyB7XHJcblx0XHRsZXQgdmFsdWVSZXBsYWNlOiBzdHJpbmcgPSBudWxsO1xyXG5cdFx0aWYgKHRva2VuICYmIHRva2VuWzBdID09ICcjJykge1xyXG5cdFx0XHRsZXQgdHlwZVRva2VuID0gdG9rZW4uc3Vic3RyaW5nKDEsIHRva2VuLmluZGV4T2YoJygnKSk7XHJcblx0XHRcdGlmICh0eXBlVG9rZW4gPT0gJ2RhdGUnKSB7XHJcblx0XHRcdFx0bGV0IGRhdGVGb3JtYXQ6IHN0cmluZyA9IHRva2VuLnN1YnN0cmluZyhcclxuXHRcdFx0XHRcdHRva2VuLmluZGV4T2YoJ30nKSArIDEsXHJcblx0XHRcdFx0XHR0b2tlbi5pbmRleE9mKCcpJylcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHRcdGRhdGVGb3JtYXQgPSBkYXRlRm9ybWF0LnRyaW0oKS5yZXBsYWNlKC9cXFwiL2csICcnKS5yZXBsYWNlKC9cXCcvZywgJycpO1xyXG5cdFx0XHRcdGxldCBkYXRlVmFsdWUgPSBEYXRlVXRpbC5nZXREYXRlKGRhdGFWYWx1ZSk7XHJcblx0XHRcdFx0aWYgKGRhdGVWYWx1ZSkge1xyXG5cdFx0XHRcdFx0dmFsdWVSZXBsYWNlID0gRGF0ZVV0aWwuZ2V0TW9tZW50KGRhdGVWYWx1ZSkuZm9ybWF0KGRhdGVGb3JtYXQpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSAnJztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSBpZiAodHlwZVRva2VuID09ICdudW1iZXInKSB7XHJcblx0XHRcdFx0bGV0IG51bWJlclZhbHVlOiBudW1iZXIgPSBOdW1iZXIoZGF0YVZhbHVlKTtcclxuXHRcdFx0XHRpZiAobnVtYmVyVmFsdWUgIT0gdW5kZWZpbmVkICYmICFpc05hTihudW1iZXJWYWx1ZSkpIHtcclxuXHRcdFx0XHRcdGxldCBudW1iZXJGb3JtYXQ6IHN0cmluZyA9IHRva2VuLnN1YnN0cmluZyhcclxuXHRcdFx0XHRcdFx0dG9rZW4uaW5kZXhPZignfScpICsgMSxcclxuXHRcdFx0XHRcdFx0dG9rZW4uaW5kZXhPZignKScpXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0bnVtYmVyRm9ybWF0ID0gbnVtYmVyRm9ybWF0LnRyaW0oKS5yZXBsYWNlKC9cXFwiL2csICcnKS5yZXBsYWNlKC9cXCcvZywgJycpO1xyXG5cdFx0XHRcdFx0dmFsdWVSZXBsYWNlID0gdGhpcy5jdXJyZW5jeVBpcGUudHJhbnNmb3JtKFxyXG5cdFx0XHRcdFx0XHRudW1iZXJWYWx1ZSxcclxuXHRcdFx0XHRcdFx0dGhpcy5sb2NhbGUsXHJcblx0XHRcdFx0XHRcdCcnLFxyXG5cdFx0XHRcdFx0XHRudW1iZXJGb3JtYXRcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFxyXG5cdFx0XHRcdFx0XHQnRWwgZGF0byBbJyArXHJcblx0XHRcdFx0XHRcdFx0ZGF0YVZhbHVlICtcclxuXHRcdFx0XHRcdFx0XHQnXSBwYXJhIGVsIHRva2VuIFsnICtcclxuXHRcdFx0XHRcdFx0XHR0b2tlbiArXHJcblx0XHRcdFx0XHRcdFx0J10gdGlwbyBuw7ptZXJpY28gbm8gZXMgdmFsaWRvJ1xyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9ICcnO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZygndGlwbyBkZSB0b2tlbiBpbmRlZmluaWRvLiBbdHlwZVRva2VuWycgKyB0eXBlVG9rZW4gKyAnXV0nKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmICh0b2tlbiAmJiB0b2tlblswXSA9PSAnJCcpIHtcclxuXHRcdFx0dmFsdWVSZXBsYWNlID0gZGF0YVZhbHVlO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ0VsIHRva2VuIG5vIGVzIHZhbGlkby4gW3Rva2VuWycgKyB0b2tlbiArICddXScpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHN0cmluZ1RleHQgJiYgdmFsdWVSZXBsYWNlICE9PSBudWxsKSB7XHJcblx0XHRcdC8vIHJlcGxhY2UgdGV4dCBpbiBhIG1vcmUgZWZmaWNpZW50IHdheVxyXG5cdFx0XHRzdHJpbmdUZXh0ID0gc3RyaW5nVGV4dC5zcGxpdCh0b2tlbikuam9pbih2YWx1ZVJlcGxhY2UpO1xyXG5cdFx0XHQvL3N0cmluZ1RleHQgPSBzdHJpbmdUZXh0LnJlcGxhY2UodG9rZW4sIHZhbHVlUmVwbGFjZSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gc3RyaW5nVGV4dDtcclxuXHR9XHJcblxyXG5cdGdldExpc3RUb2tlbnNCeVN0cmluZ1NlZ21lbnRhdGlvbihzdHJpbmdUZXh0OiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHRjb25zdCBhcnJheVRva2VuID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwkeyhbXn1dKylcXH0vZyk7XHJcblx0XHRjb25zdCBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSA9IHN0cmluZ1RleHQubWF0Y2goL1xcI2RhdGVbXildK1xcKS9nKTtcclxuXHRcdGNvbnN0IGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCNudW1iZXJbXildK1xcKS9nKTtcclxuXHRcdGxldCBhcnJheVRva2VuRm9ybWF0dGVkID0gW107XHJcblx0XHRpZiAoXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDBcclxuXHRcdCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuY29uY2F0KGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJiBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWQgPSBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5zbGljZSgpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyICYmIGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5zbGljZSgpO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuXHRcdGlmIChhcnJheVRva2VuKSB7XHJcblx0XHRcdGZvciAoY29uc3QgdG9rZW4gb2YgYXJyYXlUb2tlbikge1xyXG5cdFx0XHRcdGNvbnN0IGluZm9Ub2tlbiA9IHsga2V5OiB0b2tlbiwgdmFsdWU6IHRva2VuIH07XHJcblx0XHRcdFx0aWYgKGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdGZvciAoY29uc3QgdG9rZW5Gb3JtYXR0ZWQgb2YgYXJyYXlUb2tlbkZvcm1hdHRlZCkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBpbmRleCA9IHRva2VuRm9ybWF0dGVkLmluZGV4T2YodG9rZW4pO1xyXG5cdFx0XHRcdFx0XHRpZiAoaW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdGluZm9Ub2tlbi52YWx1ZSA9IHRva2VuRm9ybWF0dGVkO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0Y2hhbmdlSWRQcm9wZXJ0aWVzT2ZPYmplY3Qobm9ybWFsaXphdGlvbkNvbHVtbnM6IGFueVtdLCBsaXN0RGF0YTogYW55W10pOiBhbnlbXSB7XHJcblx0XHRjb25zdCBuZXdEYXRhID0gW107XHJcblx0XHRsaXN0RGF0YS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcblx0XHRcdGNvbnN0IG9iakRhdGEgPSB7fTtcclxuXHRcdFx0T2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcclxuXHRcdFx0XHRpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcclxuXHRcdFx0XHRcdG5vcm1hbGl6YXRpb25Db2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG5cdFx0XHRcdFx0XHRpZiAoY29sdW1uLmlkQ29sdW1uLnRvU3RyaW5nKCkgPT09IHByb3BlcnR5KSB7XHJcblx0XHRcdFx0XHRcdFx0b2JqRGF0YVtjb2x1bW4ua2V5XSA9IGRhdGFbcHJvcGVydHldO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0XHRpZiAob2JqRGF0YSkge1xyXG5cdFx0XHRcdG5ld0RhdGEucHVzaChvYmpEYXRhKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRyZXR1cm4gbmV3RGF0YTtcclxuXHR9XHJcblxyXG5cdGdlbmVyYXRlSHRtbEJ5VG9rZW5zQW5kRGF0YShodG1sOiBzdHJpbmcsIGxpc3REYXRhOiBhbnlbXSwgbGlzdFRva2VuczogYW55W10pOiBzdHJpbmdbXSB7XHJcblx0XHRjb25zdCB0cmFuc2xhdGVkQ2FyZHM6IGFueVtdID0gW107XHJcblx0XHRsaXN0RGF0YS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcblx0XHRcdGNvbnN0IG9ialRva2VuID0ge307XHJcblx0XHRcdGNvbnN0IGh0bWxUcmFuc2xhdGVkID0geyBodG1sOiBodG1sIH07XHJcblx0XHRcdE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XHJcblx0XHRcdFx0bGlzdFRva2Vucy5mb3JFYWNoKCh0b2tlbikgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHByb3BlcnR5ID09IHRva2VuLmtleS5yZXBsYWNlKCckeycsICcnKS5yZXBsYWNlKCd9JywgJycpKSB7XHJcblx0XHRcdFx0XHRcdG9ialRva2VuW3Rva2VuLmtleV0gPSBkYXRhW3Byb3BlcnR5XTtcclxuXHRcdFx0XHRcdFx0aHRtbFRyYW5zbGF0ZWQuaHRtbCA9IGh0bWxUcmFuc2xhdGVkLmh0bWwucmVwbGFjZShcclxuXHRcdFx0XHRcdFx0XHR0b2tlbi5rZXksXHJcblx0XHRcdFx0XHRcdFx0ZGF0YVtwcm9wZXJ0eV1cclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHRyYW5zbGF0ZWRDYXJkcy5wdXNoKGh0bWxUcmFuc2xhdGVkKTtcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIHRyYW5zbGF0ZWRDYXJkcztcclxuXHR9XHJcblxyXG5cdGdldExpc3RUb2tlbnNCeVN0cmluZyhzdHJpbmdUZXh0OiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHR2YXIgYXJyYXlUb2tlbiA9IHN0cmluZ1RleHQubWF0Y2goL1xcJHsoW159XSspXFx9L2cpO1xyXG5cdFx0dmFyIGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwjZGF0ZVteKV0rXFwpL2cpO1xyXG5cdFx0dmFyIGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCNudW1iZXJbXildK1xcKS9nKTtcclxuXHRcdHZhciBhcnJheVRva2VuRm9ybWF0dGVkID0gW107XHJcblx0XHRpZiAoXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDBcclxuXHRcdCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuY29uY2F0KGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJiBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWQgPSBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5zbGljZSgpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyICYmIGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5zbGljZSgpO1xyXG5cdFx0fVxyXG5cdFx0dmFyIHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcblx0XHRpZiAoYXJyYXlUb2tlbikge1xyXG5cdFx0XHRmb3IgKGNvbnN0IHRva2VuIG9mIGFycmF5VG9rZW4pIHtcclxuXHRcdFx0XHRsZXQga2V5VHlwZTogbnVtYmVyID0gVG9rZW5TZXJ2aWNlLmdldEtleVR5cGUodG9rZW4pO1xyXG5cdFx0XHRcdGlmIChrZXlUeXBlID09PSBudWxsKSB7XHJcblx0XHRcdFx0XHRjb250aW51ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIGluZm9Ub2tlbiA9IHsga2V5OiB0b2tlbiwgdmFsdWU6IHRva2VuIH07XHJcblx0XHRcdFx0aWYgKGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdGZvciAoY29uc3QgdG9rZW5Gb3JtYXR0ZWQgb2YgYXJyYXlUb2tlbkZvcm1hdHRlZCkge1xyXG5cdFx0XHRcdFx0XHR2YXIgaW5kZXggPSB0b2tlbkZvcm1hdHRlZC5pbmRleE9mKHRva2VuKTtcclxuXHRcdFx0XHRcdFx0aWYgKGluZGV4ID49IDApIHtcclxuXHRcdFx0XHRcdFx0XHRpbmZvVG9rZW4udmFsdWUgPSB0b2tlbkZvcm1hdHRlZDtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXN1bHQucHVzaChpbmZvVG9rZW4pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHJcblx0XHQvLyBsZXQgdG9rZW5zOiBhbnlbXSA9IFtdO1xyXG5cdFx0Ly8gbGV0IGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIDApO1xyXG5cdFx0Ly8gbGV0IGNvdW50ID0gMDtcclxuXHRcdC8vIHdoaWxlIChpID49IDAgJiYgY291bnQgPD0gMTApIHtcclxuXHRcdC8vICAgbGV0IGluZm9Ub2tlbjoge30gPSBudWxsO1xyXG5cdFx0Ly8gICBsZXQgbmV4dEk6IG51bWJlciA9IGk7XHJcblx0XHQvLyAgIGxldCBjaGFyYWN0ZXIgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyhpLCAoaSArIDEpKTtcclxuXHRcdC8vICAgaWYgKGNoYXJhY3RlciA9PSBcIiRcIikge1xyXG5cdFx0Ly8gICAgIGxldCBuZXh0Q2hhcmFjdGVyID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoKGkgKyAxKSwgKGkgKyAyKSk7XHJcblx0XHQvLyAgICAgLy8gVGhlIG5leHQgY2hhcmFjdGVyIG5lZWQgdG8gYmUgYSB7IHNpZ25cclxuXHRcdC8vICAgICBpZiAobmV4dENoYXJhY3RlciAhPSBcIntcIikge1xyXG5cdFx0Ly8gICAgICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkgKyAxKTtcclxuXHRcdC8vICAgICAgIGNvbnRpbnVlO1xyXG5cdFx0Ly8gICAgIH1cclxuXHRcdC8vICAgICBsZXQga2V5VG9rZW46IHN0cmluZyA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKGksIHN0cmluZ1RleHQuaW5kZXhPZihcIn1cIiwgaSkgKyAxKTtcclxuXHRcdC8vICAgICAvLyBJZiB0aGUgdG9rZW4gaGF2ZSBhIHZhbGlkIGtleSB0eXBlXHJcblx0XHQvLyAgICAgbGV0IGtleVR5cGU6IG51bWJlciA9IFRva2VuU2VydmljZS5nZXRLZXlUeXBlKGtleVRva2VuLnJlcGxhY2UoXCJ7XCIsIFwiXCIpLnJlcGxhY2UoXCJ9XCIsIFwiXCIpKTtcclxuXHRcdC8vICAgICBpZiAoa2V5VHlwZSA9PT0gbnVsbCkge1xyXG5cdFx0Ly8gICAgICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkgKyAxKTtcclxuXHRcdC8vICAgICAgIGNvbnRpbnVlO1xyXG5cdFx0Ly8gICAgIH1cclxuXHRcdC8vICAgICBpbmZvVG9rZW4gPSB7XHJcblx0XHQvLyAgICAgICBrZXk6IGtleVRva2VuLFxyXG5cdFx0Ly8gICAgICAgdmFsdWU6IGtleVRva2VuXHJcblx0XHQvLyAgICAgfTtcclxuXHRcdC8vICAgICBuZXh0SSA9IHN0cmluZ1RleHQuaW5kZXhPZihcIn1cIiwgaSk7XHJcblx0XHQvLyAgIH0gZWxzZSB7XHJcblx0XHQvLyAgICAgbGV0IG5leHRTaWduOiBudW1iZXIgPSBzdHJpbmdUZXh0LmluZGV4T2YoXCIkXCIsIGkpO1xyXG5cdFx0Ly8gICAgIC8vIFdlIGlubHkgc3VwcG9ydCAjZGF0ZSgkIGFuZCAjbnVtYmVyKCQgaW4gdGhpcyAyIHNjZW5hcmlvcyB0aGUgbGVuZ2h0IGNhbid0IGJlIG1vcmUgdGhhbiAxMCBjaGFyYWN0ZXJzXHJcblx0XHQvLyAgICAgaWYgKG5leHRTaWduIDwgMCB8fCAobmV4dFNpZ24gLSBpKSA+IDEwKSB7XHJcblx0XHQvLyAgICAgICBpID0gdGhpcy5uZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0LCBuZXh0SSArIDEpO1xyXG5cdFx0Ly8gICAgICAgY29udGludWU7XHJcblx0XHQvLyAgICAgfVxyXG5cdFx0Ly8gICAgIGxldCBrZXlUb2tlbjogc3RyaW5nID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoc3RyaW5nVGV4dC5pbmRleE9mKFwiJFwiLCBpKSwgc3RyaW5nVGV4dC5pbmRleE9mKFwifVwiLCBpKSArIDEpO1xyXG5cdFx0Ly8gICAgIGxldCB2YWx1ZVRva2VuOiBzdHJpbmcgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyhpLCBzdHJpbmdUZXh0LmluZGV4T2YoXCIpXCIsIGkpICsgMSk7XHJcblx0XHQvLyAgICAgaW5mb1Rva2VuID0ge1xyXG5cdFx0Ly8gICAgICAga2V5OiBrZXlUb2tlbixcclxuXHRcdC8vICAgICAgIHZhbHVlOiB2YWx1ZVRva2VuXHJcblx0XHQvLyAgICAgfTtcclxuXHRcdC8vICAgICBuZXh0SSA9IHN0cmluZ1RleHQuaW5kZXhPZihcIilcIiwgaSk7XHJcblx0XHQvLyAgIH1cclxuXHRcdC8vICAgdG9rZW5zLnB1c2goaW5mb1Rva2VuKTtcclxuXHRcdC8vICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkpO1xyXG5cdFx0Ly8gICBjb3VudCsrO1xyXG5cdFx0Ly8gfVxyXG5cdFx0Ly8gcmV0dXJuIHRva2VucztcclxuXHR9XHJcblxyXG5cdG5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQ6IHN0cmluZywgbmV4dEk6IG51bWJlcik6IG51bWJlciB7XHJcblx0XHRsZXQgdG9rZW5Eb2xsYXJTaWduOiBudW1iZXIgPSBzdHJpbmdUZXh0LmluZGV4T2YoJyQnLCBuZXh0SSk7XHJcblx0XHRsZXQgdG9rZW5OdW1TaWduOiBudW1iZXIgPSBzdHJpbmdUZXh0LmluZGV4T2YoJyMnLCBuZXh0SSk7XHJcblx0XHRsZXQgaTogbnVtYmVyID1cclxuXHRcdFx0dG9rZW5Eb2xsYXJTaWduIDwgMCAmJiB0b2tlbk51bVNpZ24gPj0gMFxyXG5cdFx0XHRcdD8gdG9rZW5OdW1TaWduXHJcblx0XHRcdFx0OiB0b2tlbk51bVNpZ24gPCAwICYmIHRva2VuRG9sbGFyU2lnbiA+PSAwXHJcblx0XHRcdFx0PyB0b2tlbkRvbGxhclNpZ25cclxuXHRcdFx0XHQ6IHRva2VuRG9sbGFyU2lnbiA8IHRva2VuTnVtU2lnblxyXG5cdFx0XHRcdD8gdG9rZW5Eb2xsYXJTaWduXHJcblx0XHRcdFx0OiB0b2tlbk51bVNpZ247XHJcblx0XHRyZXR1cm4gaTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJldXNlcyByZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3RQdWJsaWMgYnV0IHNldCBhbGwga2V5cyBsb2JqZWN0dG9rZW5zIGFzIGxvd2VyY2FzZVxyXG5cdCAqIEBwYXJhbSB0b2tlbk5hbWVcclxuXHQgKiBAcGFyYW0gZm9ybXVsYVxyXG5cdCAqIEBwYXJhbSBsT2JqZWN0VG9rZW5zXHJcblx0ICovXHJcblx0cmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0UHVibGljKFxyXG5cdFx0dG9rZW5OYW1lOiBzdHJpbmcsXHJcblx0XHRmb3JtdWxhOiBzdHJpbmcsXHJcblx0XHRsT2JqZWN0VG9rZW5zOiBhbnlbXVxyXG5cdCk6IHN0cmluZyB7XHJcblx0XHRsZXQgbERhdGFPcmc6IGFueVtdID0gW107XHJcblx0XHRpZiAobE9iamVjdFRva2Vucykge1xyXG5cdFx0XHRmb3IgKGxldCBkYXRhRm9ybSBpbiBsT2JqZWN0VG9rZW5zKSB7XHJcblx0XHRcdFx0bERhdGFPcmdbZGF0YUZvcm0udG9Mb3dlckNhc2UoKV0gPSBsT2JqZWN0VG9rZW5zW2RhdGFGb3JtXTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMucmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0KHRva2VuTmFtZSwgZm9ybXVsYSwgbERhdGFPcmcpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBAcGFyYW0gdG9rZW5OYW1lIHRva2VuIG5hbWVcclxuXHQgKiBAcGFyYW0gZm9ybXVsYSBTdHJpbmcgd2l0aCB0aGUgZm9ybXVsYSB0byBleGVjdXRlXHJcblx0ICogQHBhcmFtIGxPYmplY3RUb2tlbnMgTGlzdCBvZiB0b2tlbnMgd2l0aCB0aGUgdmFsdWVzIHRvIHJlcGxhY2VcclxuXHQgKi9cclxuXHRyZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3QodG9rZW5OYW1lOiBzdHJpbmcsIGZvcm11bGE6IHN0cmluZywgbE9iamVjdFRva2VuczogYW55KTogc3RyaW5nIHtcclxuXHRcdGlmICghZm9ybXVsYSB8fCBmb3JtdWxhLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdHRocm93IHtcclxuXHRcdFx0XHRtZXNzYWdlOiAnTGEgZm9ybXVsYSBkZWwgdG9rZW4gJyArIHRva2VuTmFtZSArICcgZXN0YSB2YWPDrWEnLFxyXG5cdFx0XHRcdHRpdGxlOiAnQWxlcnRhIScsXHJcblx0XHRcdFx0ZXJyb3I6XHJcblx0XHRcdFx0XHQnTGEgZm9ybXVsYSBkZWwgdG9rZW4gJyArIHRva2VuTmFtZSArICcgZXN0YSB2YWPDrWEuIFtmb3JtdWxhWycgKyBmb3JtdWxhICsgJ11dJ1xyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdFx0bGV0IHJlcGxhY2VkVG9rZW5zOiBzdHJpbmcgPSBmb3JtdWxhLnRvU3RyaW5nKCk7XHJcblx0XHRpZiAocmVwbGFjZWRUb2tlbnMuc3RhcnRzV2l0aCgnZmlsZTovLycpKSB7XHJcblx0XHRcdHJldHVybiByZXBsYWNlZFRva2VucztcclxuXHRcdH1cclxuXHRcdC8vIEZpbmQgdGhlIHRva2VucyBpbiB0aGUgZm9ybXVsYVxyXG5cdFx0bGV0IHRva2Vuc0FycmF5OiBhbnlbXSA9IHRoaXMuZ2V0TGlzdFRva2Vuc0J5U3RyaW5nKHJlcGxhY2VkVG9rZW5zKTtcclxuXHRcdGlmICh0b2tlbnNBcnJheS5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0XHR9XHJcblx0XHQvLyBJZiB0aGVyZSBhbnkgdG9rZW4sIHRyeSB0byByZXBsYWNlXHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vuc0FycmF5Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGxldCBvYmplY3RUb2tlbiA9XHJcblx0XHRcdFx0bE9iamVjdFRva2Vuc1t0b2tlbnNBcnJheVtpXS5rZXldICE9PSB1bmRlZmluZWRcclxuXHRcdFx0XHRcdD8gbE9iamVjdFRva2Vuc1t0b2tlbnNBcnJheVtpXS5rZXldXHJcblx0XHRcdFx0XHQ6IG51bGw7XHJcblx0XHRcdGxldCBjbGVhcktleTtcclxuXHRcdFx0aWYgKG9iamVjdFRva2VuID09IG51bGwpIHtcclxuXHRcdFx0XHRjbGVhcktleSA9IHRva2Vuc0FycmF5W2ldLmtleS5yZXBsYWNlKCckeycsICcnKS5yZXBsYWNlKCd9JywgJycpLnRvTG93ZXJDYXNlKCk7XHJcblx0XHRcdFx0b2JqZWN0VG9rZW4gPVxyXG5cdFx0XHRcdFx0bE9iamVjdFRva2Vuc1tjbGVhcktleV0gIT09IHVuZGVmaW5lZCA/IGxPYmplY3RUb2tlbnNbY2xlYXJLZXldIDogbnVsbDtcclxuXHJcblx0XHRcdFx0aWYgKG9iamVjdFRva2VuID09IG51bGwpIHtcclxuXHRcdFx0XHRcdGNsZWFyS2V5ID0gdG9rZW5zQXJyYXlbaV0ua2V5XHJcblx0XHRcdFx0XHRcdC5yZXBsYWNlKCd7JywgJycpXHJcblx0XHRcdFx0XHRcdC5yZXBsYWNlKCd9JywgJycpXHJcblx0XHRcdFx0XHRcdC5zcGxpdCgnXycpWzFdXHJcblx0XHRcdFx0XHRcdC50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0XHRcdFx0b2JqZWN0VG9rZW4gPVxyXG5cdFx0XHRcdFx0XHRsT2JqZWN0VG9rZW5zW2NsZWFyS2V5XSAhPT0gdW5kZWZpbmVkID8gbE9iamVjdFRva2Vuc1tjbGVhcktleV0gOiBudWxsO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAob2JqZWN0VG9rZW4gPT0gbnVsbCkge1xyXG5cdFx0XHRcdC8vIElmIG5vdCBmaW5kIHRoZSB0b2tlbiwgYnkgZGVmYXVsdCBwdXQgYW4gZW1wdHkgc3RyaW5nXHJcblx0XHRcdFx0LyppZiAoVG9rZW5TZXJ2aWNlLmV4Y2x1ZGVkVG9rZW4uaW5kZXhPZihjbGVhcktleSkgPT09IC0xKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFxyXG5cdFx0XHRcdFx0XHQnRWwgdG9rZW4gJyArIHRva2Vuc0FycmF5W2ldLnZhbHVlICsgJyBubyBmdWUgZW5jb250cmFkby4nLFxyXG5cdFx0XHRcdFx0XHRsT2JqZWN0VG9rZW5zLFxyXG5cdFx0XHRcdFx0XHR0b2tlbnNBcnJheVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHR9Ki9cclxuXHRcdFx0XHRvYmplY3RUb2tlbiA9ICcnO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChvYmplY3RUb2tlbiAhPSBudWxsKSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlOiBhbnkgPSBOdW1iZXIob2JqZWN0VG9rZW4pXHJcblx0XHRcdFx0XHQ/IG9iamVjdFRva2VuXHJcblx0XHRcdFx0XHQ6IEFycmF5LmlzQXJyYXkob2JqZWN0VG9rZW4pXHJcblx0XHRcdFx0XHQ/IEpTT04uc3RyaW5naWZ5KG9iamVjdFRva2VuKVxyXG5cdFx0XHRcdFx0OiBcIidcIiArIG9iamVjdFRva2VuICsgXCInXCI7XHJcblx0XHRcdFx0cmVwbGFjZWRUb2tlbnMgPSB0aGlzLnJlcGxhY2VUb2tlbihyZXBsYWNlZFRva2VucywgdG9rZW5zQXJyYXlbaV0udmFsdWUsIHZhbHVlKTtcclxuXHRcdFx0XHQvLyB9IGVsc2Uge1xyXG5cdFx0XHRcdC8vICAgY29uc29sZS5lcnJvcihsT2JqZWN0VG9rZW5zLCB0b2tlbnNBcnJheSk7XHJcblx0XHRcdFx0Ly8gICB0aHJvdyB7XHJcblx0XHRcdFx0Ly8gICAgIG1lc3NhZ2U6IFwiTm8gc2UgZW5jb250csOzIHZhbG9yIHBhcmEgdW4gdG9rZW5cIixcclxuXHRcdFx0XHQvLyAgICAgdGl0bGU6IFwiQWxlcnRhIVwiLFxyXG5cdFx0XHRcdC8vICAgICBlcnJvcjogXCJFbCB0b2tlbiBcIiArIHRva2Vuc0FycmF5W2ldLnZhbHVlICsgXCIgbm8gZnVlIGVuY29udHJhZG8uXCJcclxuXHRcdFx0XHQvLyAgIH07XHJcblx0XHRcdFx0Ly9cclxuXHRcdFx0XHQvLyBTaSBsYSBmb3JtdWxhIGVtcGllemEgY29uIFsgZXMgcG9ycXVlIHRpZW5lIHVuIGFycmF5IGVuIGVsIHZhbG9yIHF1ZSByZXNvbHZpbyBlbCB0b2tlblxyXG5cdFx0XHRcdGlmIChyZXBsYWNlZFRva2Vucy5jaGFyQXQoMCkgPT0gJ1snKSB7XHJcblx0XHRcdFx0XHRsZXQgcmVnZXhPcGVyYXRvciA9IG5ldyBSZWdFeHAoJyg9ezJ9fCE9PXwhPXw8PXw+PXw8fD4pJyk7XHJcblx0XHRcdFx0XHQvLyBSZXRvcm5hIGVsIG9wZXJhZG9yXHJcblx0XHRcdFx0XHRsZXQgb3BlcmF0b3I6IHN0cmluZ1tdID0gcmVwbGFjZWRUb2tlbnMubWF0Y2gocmVnZXhPcGVyYXRvcik7XHJcblx0XHRcdFx0XHQvLyBTZXBhcmEgbGEgc2VudGVuY2lhIHBvciBlbCBvcGVyYWRvclxyXG5cdFx0XHRcdFx0Ly8gTGEgcHJpbWVyYSBwYXJ0ZSBlcyBlbCB2YWxvciBwb3IgZWwgY3VhbCBzZSByZW1wbGF6YSBlbCB0b2tlbiBxdWUgZXMgdW4gYXJyYXkgZW4gc3RyaW5nIFwiWydhJywgJ2InXVwiXHJcblx0XHRcdFx0XHQvLyBFbCBzZWd1bmRvIGVzIGVsIHZhbG9yIGNvbiBlbCBjdWFsIHNlIHZhIGEgY29tcGFyYXJcclxuXHRcdFx0XHRcdGxldCB2YWx1ZVRva2VuLCB2YWx1ZVRvQ29tcGFyZTtcclxuXHRcdFx0XHRcdFt2YWx1ZVRva2VuLCB2YWx1ZVRvQ29tcGFyZV0gPSByZXBsYWNlZFRva2Vucy5zcGxpdChvcGVyYXRvclswXSk7XHJcblx0XHRcdFx0XHQvLyBTZSBsaW1waWEgZWwgc3RyaW5nIGNvcnJlc3BvbmRpZW50ZSBhbCBhcnJheSBwYXJhIHF1ZSBsb3MgZWxlbWVudG9zIHF1ZWRlbiBzZXBhcmFkb3MgcG9yIFwiLFwiXHJcblx0XHRcdFx0XHR2YWx1ZVRva2VuID0gdmFsdWVUb2tlbi5yZXBsYWNlKC9bXmEtekEtWjAtOSAsXS9nLCAnJyk7XHJcblx0XHRcdFx0XHQvLyBTZSBsaW1waWEgZWwgc3RyaW5nIGNvcnJlc3BvbmRpZW50ZSBhbCB2YWxvciBwb3IgY29tcGFyYXJcclxuXHRcdFx0XHRcdHZhbHVlVG9Db21wYXJlID0gdmFsdWVUb0NvbXBhcmUucmVwbGFjZSgvW15hLXpBLVowLTkgXS9nLCAnJyk7XHJcblx0XHRcdFx0XHQvLyBTZSBwYXNhIGVsIHN0cmluZyBhIGFycmF5XHJcblx0XHRcdFx0XHR2YWx1ZVRva2VuID0gdmFsdWVUb2tlbi5zcGxpdCgnLCcpO1xyXG5cdFx0XHRcdFx0Ly8gU2kgZWwgdmFsb3IgcXVlIHNlIGVuY29udHJvIHBhcmEgZWwgdG9rZW4gZXMgdW4gYXJyYXkgZXMgcG9ycXVlIGVzIHRhZ1xyXG5cdFx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWVUb2tlbikpIHtcclxuXHRcdFx0XHRcdFx0Ly8gU2UgdHJhdGEgZGUgZW5jb250cmFyIGVsIHZhbG9yIGEgY29tcGFyYXIgZGVudHJvIGRlbCBhcnJheSBzaSBlcyBhc2lcclxuXHRcdFx0XHRcdFx0Ly8gcmVwbGFjZWRUb2tlbnM9J3RydWUnXHJcblx0XHRcdFx0XHRcdGxldCBpc1RhZ0ZvdW5kID0gdmFsdWVUb2tlbi5zb21lKCh0YWcpID0+IHRhZyA9PSB2YWx1ZVRvQ29tcGFyZSk7XHJcblx0XHRcdFx0XHRcdHJlcGxhY2VkVG9rZW5zID0gaXNUYWdGb3VuZCA/ICd0cnVlJyA6ICdmYWxzZSc7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcnkgdG8gZXZhbCB0aGUgZm9ybXVsYSBkZXBlbmQgb2YgdGhlIHR5cGUgb2YgZmllbGRzLlxyXG5cdCAqIEBwYXJhbSBsU3RhdGljVG9rZW5cclxuXHQgKiBAcGFyYW0gZm9ybXVsYU5hbWVcclxuXHQgKiBAcGFyYW0gZm9ybXVsYVxyXG5cdCAqL1xyXG5cdHZhbGlkYXRlRm9ybXVsYShsU3RhdGljVG9rZW46IGFueSwgZm9ybXVsYU5hbWU6IHN0cmluZywgZm9ybXVsYTogc3RyaW5nKTogYm9vbGVhbiB7XHJcblx0XHRsZXQgZXZhbEZvcm11bGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdC8vIFRvIHZhbGlkYXRlIHRoZSBmb3JtdWxhLCBmaXJzdCBvcmdhbml6ZSB0aGUgaW5mbyB0byBrZXkgLSB2YWx1ZSBhcnJheVxyXG5cdFx0bGV0IG9iamVjdFRva2VuczogYW55W10gPSBbXTtcclxuXHRcdGZvciAobGV0IHBhbmVsIG9mIGxTdGF0aWNUb2tlbikge1xyXG5cdFx0XHRmb3IgKGxldCBncm91cFRva2VuIG9mIHBhbmVsLnZhbHVlKSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgc3RhdGljVG9rZW4gb2YgZ3JvdXBUb2tlbi52YWx1ZSkge1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgYXJyYXlUb2tlbkluZm8gb2Ygc3RhdGljVG9rZW4pIHtcclxuXHRcdFx0XHRcdFx0b2JqZWN0VG9rZW5zW2FycmF5VG9rZW5JbmZvLmtleV0gPSBhcnJheVRva2VuSW5mby5vYmplY3RcclxuXHRcdFx0XHRcdFx0XHQ/IGFycmF5VG9rZW5JbmZvLm9iamVjdC50eXBlID09ICdudW1iZXInXHJcblx0XHRcdFx0XHRcdFx0XHQ/ICcwJ1xyXG5cdFx0XHRcdFx0XHRcdFx0OiAnJ1xyXG5cdFx0XHRcdFx0XHRcdDogJyc7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHR0cnkge1xyXG5cdFx0XHRmb3JtdWxhID0gdGhpcy5yZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3QoZm9ybXVsYU5hbWUsIGZvcm11bGEsIG9iamVjdFRva2Vucyk7XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHQvL2NvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG5cdFx0XHR0aHJvdyBlcnJvcjtcclxuXHRcdH1cclxuXHRcdGlmIChmb3JtdWxhICE9PSBudWxsKSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0bGV0IHJlc3VsdCA9IGZvcm11bGEuc3RhcnRzV2l0aCgnZmlsZTovLycpID8gZm9ybXVsYSA6IGV2YWwoZm9ybXVsYSk7XHJcblx0XHRcdFx0ZXZhbEZvcm11bGEgPSB0cnVlO1xyXG5cdFx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdFx0Ly9jb25zb2xlLmVycm9yKFwiRXJyb3IgZXZhbHVhdGluZyB0aGUgZm9ybXVsYVwiLCBlKTtcclxuXHRcdFx0XHR0aHJvdyB7XHJcblx0XHRcdFx0XHRtZXNzYWdlOiAnTGEgZm9ybXVsYSBubyBmdWUgcG9zaWJsZSBldmFsdWFyJyxcclxuXHRcdFx0XHRcdHRpdGxlOiAnQWxlcnRhIScsXHJcblx0XHRcdFx0XHRlcnJvcjogZVxyXG5cdFx0XHRcdH07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBldmFsRm9ybXVsYTtcclxuXHR9XHJcblxyXG5cdGdldENvbmZpZ0Nsb25pbmdUb2tlbk1hcChvbGRQUFA6IG51bWJlciwgbmV3UFBQOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vZ2V0Q29uZmlnQ2xvbmluZ1Rva2VuTWFwJyxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKVxyXG5cdFx0XHRcdFx0LnNldCgnb2xkUFBQJywgb2xkUFBQLnRvU3RyaW5nKCkpXHJcblx0XHRcdFx0XHQuc2V0KCduZXdQUFAnLCBuZXdQUFAudG9TdHJpbmcoKSlcclxuXHRcdFx0fVxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIl19
|
package/esm2020/version.mjs
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/* tslint:disable */
|
|
3
3
|
export const VERSION = {
|
|
4
4
|
"dirty": true,
|
|
5
|
-
"raw": "v0.0.18-
|
|
6
|
-
"hash": "
|
|
7
|
-
"distance":
|
|
5
|
+
"raw": "v0.0.18-1917-g3a6e279d-dirty",
|
|
6
|
+
"hash": "g3a6e279d",
|
|
7
|
+
"distance": 1917,
|
|
8
8
|
"tag": "v0.0.18",
|
|
9
9
|
"semver": {
|
|
10
10
|
"options": {
|
|
@@ -20,10 +20,10 @@ export const VERSION = {
|
|
|
20
20
|
"build": [],
|
|
21
21
|
"version": "0.0.18"
|
|
22
22
|
},
|
|
23
|
-
"suffix": "
|
|
24
|
-
"semverString": "0.0.18+
|
|
25
|
-
"version": "0.0.
|
|
26
|
-
"buildTimestamp": "2022-04-
|
|
23
|
+
"suffix": "1917-g3a6e279d-dirty",
|
|
24
|
+
"semverString": "0.0.18+1917.g3a6e279d",
|
|
25
|
+
"version": "0.0.1409",
|
|
26
|
+
"buildTimestamp": "2022-04-06T21:33:01.626Z"
|
|
27
27
|
};
|
|
28
28
|
/* tslint:enable */
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUMzRSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLDhCQUE4QjtJQUNyQyxNQUFNLEVBQUUsV0FBVztJQUNuQixVQUFVLEVBQUUsSUFBSTtJQUNoQixLQUFLLEVBQUUsU0FBUztJQUNoQixRQUFRLEVBQUU7UUFDTixTQUFTLEVBQUU7WUFDUCxPQUFPLEVBQUUsS0FBSztZQUNkLG1CQUFtQixFQUFFLEtBQUs7U0FDN0I7UUFDRCxPQUFPLEVBQUUsS0FBSztRQUNkLEtBQUssRUFBRSxTQUFTO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsRUFBRTtRQUNYLFlBQVksRUFBRSxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLFFBQVE7S0FDdEI7SUFDRCxRQUFRLEVBQUUsc0JBQXNCO0lBQ2hDLGNBQWMsRUFBRSx1QkFBdUI7SUFDdkMsU0FBUyxFQUFFLFVBQVU7SUFDckIsZ0JBQWdCLEVBQUUsMEJBQTBCO0NBQy9DLENBQUM7QUFDRixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJTVBPUlRBTlQ6IFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRCEgRE8gTk9UIE1BTlVBTExZIEVESVQgT1IgQ0hFQ0tJTiFcbi8qIHRzbGludDpkaXNhYmxlICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IHtcbiAgICBcImRpcnR5XCI6IHRydWUsXG4gICAgXCJyYXdcIjogXCJ2MC4wLjE4LTE5MTctZzNhNmUyNzlkLWRpcnR5XCIsXG4gICAgXCJoYXNoXCI6IFwiZzNhNmUyNzlkXCIsXG4gICAgXCJkaXN0YW5jZVwiOiAxOTE3LFxuICAgIFwidGFnXCI6IFwidjAuMC4xOFwiLFxuICAgIFwic2VtdmVyXCI6IHtcbiAgICAgICAgXCJvcHRpb25zXCI6IHtcbiAgICAgICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgICAgICBcImluY2x1ZGVQcmVyZWxlYXNlXCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgIFwicmF3XCI6IFwidjAuMC4xOFwiLFxuICAgICAgICBcIm1ham9yXCI6IDAsXG4gICAgICAgIFwibWlub3JcIjogMCxcbiAgICAgICAgXCJwYXRjaFwiOiAxOCxcbiAgICAgICAgXCJwcmVyZWxlYXNlXCI6IFtdLFxuICAgICAgICBcImJ1aWxkXCI6IFtdLFxuICAgICAgICBcInZlcnNpb25cIjogXCIwLjAuMThcIlxuICAgIH0sXG4gICAgXCJzdWZmaXhcIjogXCIxOTE3LWczYTZlMjc5ZC1kaXJ0eVwiLFxuICAgIFwic2VtdmVyU3RyaW5nXCI6IFwiMC4wLjE4KzE5MTcuZzNhNmUyNzlkXCIsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4wLjE0MDlcIixcbiAgICBcImJ1aWxkVGltZXN0YW1wXCI6IFwiMjAyMi0wNC0wNlQyMTozMzowMS42MjZaXCJcbn07XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG4iXX0=
|
|
@@ -2053,6 +2053,8 @@ class TokenService {
|
|
|
2053
2053
|
[valueToken, valueToCompare] = replacedTokens.split(operator[0]);
|
|
2054
2054
|
// Se limpia el string correspondiente al array para que los elementos queden separados por ","
|
|
2055
2055
|
valueToken = valueToken.replace(/[^a-zA-Z0-9 ,]/g, '');
|
|
2056
|
+
// Se limpia el string correspondiente al valor por comparar
|
|
2057
|
+
valueToCompare = valueToCompare.replace(/[^a-zA-Z0-9 ]/g, '');
|
|
2056
2058
|
// Se pasa el string a array
|
|
2057
2059
|
valueToken = valueToken.split(',');
|
|
2058
2060
|
// Si el valor que se encontro para el token es un array es porque es tag
|
|
@@ -15210,9 +15212,9 @@ class CustomValidator {
|
|
|
15210
15212
|
/* tslint:disable */
|
|
15211
15213
|
const VERSION = {
|
|
15212
15214
|
"dirty": true,
|
|
15213
|
-
"raw": "v0.0.18-
|
|
15214
|
-
"hash": "
|
|
15215
|
-
"distance":
|
|
15215
|
+
"raw": "v0.0.18-1917-g3a6e279d-dirty",
|
|
15216
|
+
"hash": "g3a6e279d",
|
|
15217
|
+
"distance": 1917,
|
|
15216
15218
|
"tag": "v0.0.18",
|
|
15217
15219
|
"semver": {
|
|
15218
15220
|
"options": {
|
|
@@ -15228,10 +15230,10 @@ const VERSION = {
|
|
|
15228
15230
|
"build": [],
|
|
15229
15231
|
"version": "0.0.18"
|
|
15230
15232
|
},
|
|
15231
|
-
"suffix": "
|
|
15232
|
-
"semverString": "0.0.18+
|
|
15233
|
-
"version": "0.0.
|
|
15234
|
-
"buildTimestamp": "2022-04-
|
|
15233
|
+
"suffix": "1917-g3a6e279d-dirty",
|
|
15234
|
+
"semverString": "0.0.18+1917.g3a6e279d",
|
|
15235
|
+
"version": "0.0.1409",
|
|
15236
|
+
"buildTimestamp": "2022-04-06T21:33:01.626Z"
|
|
15235
15237
|
};
|
|
15236
15238
|
/* tslint:enable */
|
|
15237
15239
|
|