ng-pli-commons 0.0.1853 → 0.0.1855
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.
|
@@ -549,9 +549,7 @@ export class TokenService {
|
|
|
549
549
|
}
|
|
550
550
|
}
|
|
551
551
|
else if (token && token[0] == '$') {
|
|
552
|
-
|
|
553
|
-
console.log(dataValue.original_name);
|
|
554
|
-
if (dataValue.original_name !== undefined) {
|
|
552
|
+
if (dataValue.original_name !== undefined && dataValue.original_name !== null) {
|
|
555
553
|
valueReplace = dataValue.original_name;
|
|
556
554
|
}
|
|
557
555
|
else {
|
|
@@ -1330,4 +1328,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
|
|
|
1330
1328
|
type: Inject,
|
|
1331
1329
|
args: [LOCALE_ID]
|
|
1332
1330
|
}] } });
|
|
1333
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUErQixVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQU1sRCxNQUFNLE9BQU8sWUFBWTtJQW9XeEIsWUFDZ0MsV0FBVyxFQUNsQyxVQUFzQixFQUN0QixXQUF3QixFQUN4QixZQUEwQjtRQUhILGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDaEMsQ0FBQztJQUVKLGlGQUFpRjtJQUNqRix1QkFBdUIsQ0FBQyxVQUFVO1FBQ2pDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDdEMsMEJBQTBCO1lBQzFCLElBQUksZ0JBQWdCLEdBQVUsSUFBSSxDQUFDO1lBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDdEQsSUFBSSxFQUFFLENBQUMsVUFBZSxFQUFFLEVBQUU7b0JBQ3pCLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQzFCLEtBQUssTUFBTSxLQUFLLElBQUksVUFBVSxFQUFFOzRCQUMvQixJQUFJLFVBQVUs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cnJlbmN5UGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGVVdGlsLCBIRUFERVJfSlNPTiwgUGxpQ25mR3VhcmFudGVlVG9rZW4sIFRva2VuLCBVdGlsU3RyaW5nIH0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZvcm1pb1V0aWwgfSBmcm9tICcuLi91dGlscy9mb3JtaW8tdXRpbCc7XHJcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi9mb3JtLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9rZW5TZXJ2aWNlIHtcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU0lHTl9MRVRURVJfVEFHX0lEOiBzdHJpbmcgPSAnX3NpZ24tbGV0dGVyLXRhZy1pZCc7XHJcblxyXG5cdC8qKiAqL1xyXG5cdEBJbmplY3QoTE9DQUxFX0lEKSBwdWJsaWMgbG9jYWxlOiBzdHJpbmc7XHJcblxyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9GT1JNOiBzdHJpbmcgPSAnRnJtJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfQlVER0VUOiBzdHJpbmcgPSAnUHJlc3VwdWVzdG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9DQUxDVUxBVEVEOiBzdHJpbmcgPSAnQ2FsY3VsYWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfU05BUFNIT1Q6IHN0cmluZyA9ICdTbmFwc2hvdCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX1NUQVRJQzogc3RyaW5nID0gJ0VzdMOhdGljbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0RPQ1VNRU5UTzogc3RyaW5nID0gJ0RvY3VtZW50byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0RPQ1VNRU5UT19BTkFMSVNJU19BVVRPTUFUSUNPOiBzdHJpbmcgPSAnQW7DoWxpc2lzIGF1dG9tw6F0aWNvIGRlIGRvY3VtZW50b3MnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9ET0NVTUVOVE9fQU5BTFlTSVNfVFlQRTogc3RyaW5nID0gJ2RvY3VtZW50X2FuYWx5c2lzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfVEFTSzogc3RyaW5nID0gJ1RhcmVhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfVEFTS0w6IHN0cmluZyA9ICd0YXNrJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfR1VBUkFOVEVFOiBzdHJpbmcgPSAnR2FyYW50aWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9UT1RBTF9BTU9VTlQ6IHN0cmluZyA9ICd0b3RhbEFtb3VudCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0FQUExJQ0FUSU9OX1BST0NFU1NfVE9UQUxfQU1PVU5UOiBzdHJpbmcgPSAnYXBwbGljYXRpb25Ub3RhbCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0FQUExJQ0FUSU9OX1BST0NFU1NfVE9UQUxfT1dOX0ZPVU5EUzogc3RyaW5nID0gJ2FwcGxpY2F0aW9uT3duRm91bmRzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfQVBQTElDQVRJT05fUFJPQ0VTU19UT1RBTF9GSU5BTkNJTkc6IHN0cmluZyA9ICdhcHBsaWNhdGlvbkZpbmFuY2luZyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0xFR0FMSVpBVElPTl9QUk9DRVNTX1RPVEFMX0FNT1VOVDogc3RyaW5nID0gJ2xlZ2FsaXphdGlvblRvdGFsJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfT1dOX0ZPVU5EUzogc3RyaW5nID1cclxuXHRcdCdsZWdhbGl6YXRpb25Pd25Gb3VuZHMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9MRUdBTElaQVRJT05fUFJPQ0VTU19UT1RBTF9GSU5BTkNJTkc6IHN0cmluZyA9ICdsZWdhbGl6YXRpb25GaW5hbmNpbmcnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9JTlNVUkFOQ0VfQU1PVU5UOiBzdHJpbmcgPSAnaW5zdXJhbmNlQW1vdW50JztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgTEVHQUxJWkFUSU9OX09SX0FQUExJQ0FUSU9OX1RPVEFMX0ZJTkFOQ0lORzogc3RyaW5nID1cclxuXHRcdCdsZWdsaXphdGlvbk9yQXBwbGljYXRpb25Ub3RhbEZpbmFuY2luZyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX1JFU1VNRV9DQVRFR09SWV9ZRUFSOiBzdHJpbmcgPSAncmVzdW1lQ2F0ZWdvcnlZZWFyJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfRkVDSEFfRklOQU5DSU5HX1NUQVJUOiBzdHJpbmcgPSAnZmVjaGFJbmljaW9GaW5hbmNpYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9GRUNIQV9GSU5BTkNJTkdfRU5EOiBzdHJpbmcgPSAnZmVjaGFGaW5GaW5hbmNpYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0RVUkFUSU9OX1NUVURJRVM6IHN0cmluZyA9ICdkdXJhY2lvbkVzdHVkaW9zJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19GSU5BTkNJTkdfRFVSQVRJT046IHN0cmluZyA9ICdkdXJhY2lvbkZpbmFuY2lhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0NPRElHT19WRVJJRklDQUNJT046IHN0cmluZyA9ICdjb2RpZ29WZXJpZmljYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9BX1FVSUVOX1ZBX0RJUklHSURPOiBzdHJpbmcgPSAnYVF1aWVuVmFEaXJpZ2lkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0ZFQ0hBX0FDVFVBTDogc3RyaW5nID0gJ2ZlY2hhQWN0dWFsJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfU1RBVFVTX05BTUU6IHN0cmluZyA9ICdzdGF0dXNOYW1lJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUEFUUk9DSU5BRE9SOiBzdHJpbmcgPSAncGxpUGF0cm9jaW5hZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUEFUUk9DSU5BRE9SX0NPUlRPOiBzdHJpbmcgPSAncGxpUGF0cm9jaW5hZG9yQ29ydG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QUk9HUkFNQTogc3RyaW5nID0gJ3BsaVByb2dyYW1hJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUFJPR1JBTUFfQ09SVE86IHN0cmluZyA9ICdwbGlQcm9ncmFtYUNvcnRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUFJPTU9DSU9OOiBzdHJpbmcgPSAncGxpUHJvbW9jaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUFJPTU9DSU9OX0NPUlRPOiBzdHJpbmcgPSAncGxpUHJvbW9jaW9uQ29ydG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9BTklPX1BST01PQ0lPTjogc3RyaW5nID0gJ2FuaW9Qcm9tb2Npb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9JU09fTU9ORURBX0JBU0U6IHN0cmluZyA9ICdpc29Nb25lZGFCYXNlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfU0FMVURPX0NPTVBMRU1FTlRBUklPOiBzdHJpbmcgPSAnc2FsdWRvQ29tcGxlbWVudGFyaW8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9OVU1CRVJfQVBQTElDQVRJT046IHN0cmluZyA9ICdudW1lcm9SYWRpY2Fkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1VTRVJfSU5JVElBTFM6IHN0cmluZyA9ICdpbmljaWFsZXNVc3VhcmlvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfTEVUVEVSX1NJR046IHN0cmluZyA9ICdmaXJtYUNhcnRhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT01NSVRURUVfTkFNRTogc3RyaW5nID0gJ2NvbWl0ZU5vbWJyZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX1NFR01FTlRBVElPTjogc3RyaW5nID0gJ2NvbWl0ZVNlZ21lbnRhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0FHR1JVUEFUSU9OOiBzdHJpbmcgPSAnY29taXRlQWdydXBhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0NVVExJTkVfREFURTogc3RyaW5nID0gJ2NvbWl0ZUZlY2hhTGluZWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTkZJUk1fTEVHQUxJWkFUSU9OX0FQUE9JTlRNRU5UOiBzdHJpbmcgPSAnY29uZmlybWFjaW9uQ2l0YSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfRE9DVU1FTlRfTlVNQkVSOiBzdHJpbmcgPSAnbnVtZXJvRG9jdW1lbnRvQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX0RPQ1VNRU5UX1RZUEU6IHN0cmluZyA9ICd0aXBvRG9jdW1lbnRvQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX05BTUU6IHN0cmluZyA9ICdub21icmVzQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX0xBU1ROQU1FOiBzdHJpbmcgPSAnYXBlbGxpZG9zQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1RZUEVfQ09ERUJUT1I6IHN0cmluZyA9ICd0aXBvUGVyc29uYUNvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9SRVZJRVdFUjogc3RyaW5nID0gJ3Jldmlzb3JDb2RldWRvcmVzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19UT1RBTF9XRUlHSFRFRDogc3RyaW5nID0gJ3BvbmRlcmFkb1RvdGFsJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT05TRUNVVElWRV9HVUFSQU5URUU6IHN0cmluZyA9ICdjb25zZWN1dGl2b0dhcmFudGlhcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfREFZOiBzdHJpbmcgPSAnZGlhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19NT05USDogc3RyaW5nID0gJ21lcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfWUVBUjogc3RyaW5nID0gJ2Fubyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfTkFNRTogc3RyaW5nID0gJ25vbWJyZXNSZXByZXNlbnRhbnRlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9MQVNUTkFNRTogc3RyaW5nID0gJ2FwZWxsaWRvc1JlcHJlc2VudGFudGUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX0RPQ1VNRU5UX05VTUJFUjogc3RyaW5nID0gJ2NlZHVsYVJlcHJlc2VudGFudGUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NJVFlfU0lHTkFUVVJFOiBzdHJpbmcgPSAnY2l1ZGFkRmlybWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1VTRVJfVFlQRV9DUkVESVRfU1RVRFk6IHN0cmluZyA9ICd0aXBvVXN1YXJpb0VzdHVkaW9DcmVkaXRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9WRUhJQ0xFU19RVUFOVElUWTogc3RyaW5nID0gJ2NhbnRpZGFkVmVoaWN1bG9zQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX0FTU0VUU19RVUFOVElUWTogc3RyaW5nID0gJ2NhbnRpZGFkQmllbmVzQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0xJU1RfQ09ERUJUT1JTOiBzdHJpbmcgPSAnbGlzdGFDb2RldWRvcmVzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX0lOR1JFU09fQ09ERVVET1JfSEFCRUFTX0RBVEE6IHN0cmluZyA9ICdpbmdyZXNvQ29kZXVkb3JIYWJlYXNEYXRhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX1BERl9SRVNVTUVOX0NPREVVRE9SOiBzdHJpbmcgPSAncGRmUmVzdW1lbkNvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19RVUFOVElUWV9WRUhJQ0xFX0JFTkVGSUNJQVJZOiBzdHJpbmcgPSAnY2FudGlkYWRWZWhpY3Vsb3NTZWxlY2Npb25hZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1FVQU5USVRZX0FTU0VUU19CRU5FRklDSUFSWTogc3RyaW5nID0gJ2NhbnRpZGFkQmllbmVzU2VsZWNjaW9uYWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19CRU5fQ09ESUdPOiBzdHJpbmcgPSAnYmVuQ29kaWdvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX0NSRURJVF9SRVZJRVdFUl9PQlNFUlZBVElPTlNfQ09ERUJUT1I6IHN0cmluZyA9XHJcblx0XHQnY3JlZGl0UmV2aWV3ZXJPYnNlcnZhdGlvbnNDb2RlYnRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9DUkVESVRfUkVWSUVXRVJfT0JTRVJWQVRJT05TOiBzdHJpbmcgPSAnY3JlZGl0UmV2aWV3ZXJPYnNlcnZhdGlvbnMnO1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fVEFHX05BTUU6IHN0cmluZyA9ICd0YWdOYW1lJztcclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX05BTUVfUkVWSUVXRVJfVEFTSyA9ICduYW1lUmV2aXdlclRhc2snO1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fTEFTVF9OQU1FX1JFVklFV0VSX1RBU0sgPSAnbGFzdE5hbWVSZXZpd2VyVGFzayc7XHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9UQVNLX1RPVEFMX0FTU0lHTkVEX1RPX1JFVklFV0VSID0gJ3Rhc2tUb3RhbEFzc2lnbmVkVG9SZXZpZXdlcic7XHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlM6IGFueVtdID0gW1xyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9QQVRST0NJTkFET1IsXHJcblx0XHRcdGxhYmVsOiAnUGF0cm9jaW5hZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfUFJPR1JBTUEsXHJcblx0XHRcdGxhYmVsOiAnUHJvZ3JhbWEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9QUk9NT0NJT04sXHJcblx0XHRcdGxhYmVsOiAnUHJvbW9jacOzbidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0FOSU9fUFJPTU9DSU9OLFxyXG5cdFx0XHRsYWJlbDogJ0HDsW8gcHJvbW9jacOzbidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0lTT19NT05FREFfQkFTRSxcclxuXHRcdFx0bGFiZWw6ICdJU08gTW9uZWRhIGJhc2UnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9TQUxVRE9fQ09NUExFTUVOVEFSSU8sXHJcblx0XHRcdGxhYmVsOiAnU2FsdWRvIGNvbXBsZW1lbnRhcmlvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfQ09ESUdPX1ZFUklGSUNBQ0lPTixcclxuXHRcdFx0bGFiZWw6ICdDw7NkaWdvIGRlIHZlcmlmaWNhY2nDs24nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9BX1FVSUVOX1ZBX0RJUklHSURPLFxyXG5cdFx0XHRsYWJlbDogJ0EgcXVpZW4gdmEgZGlyaWdpZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9GRUNIQV9BQ1RVQUwsXHJcblx0XHRcdGxhYmVsOiAnRmVjaGEgYWN0dWFsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfU1RBVFVTX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnRXN0YWRvIGFjdHVhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX05VTUJFUl9BUFBMSUNBVElPTixcclxuXHRcdFx0bGFiZWw6ICdOw7ptZXJvIHJhZGljYWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfVVNFUl9JTklUSUFMUyxcclxuXHRcdFx0bGFiZWw6ICdJbmljaWFsZXMgZGUgdXN1YXJpbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0xFVFRFUl9TSUdOLFxyXG5cdFx0XHRsYWJlbDogJ0Zpcm1hIGRlIGNhcnRhcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnTm9tYnJlIGNvbWl0w6knXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9TRUdNRU5UQVRJT04sXHJcblx0XHRcdGxhYmVsOiAnU2VnbWVudGFjacOzbiBjb21pdMOpJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQUdHUlVQQVRJT04sXHJcblx0XHRcdGxhYmVsOiAnQWdydXBhY2nDs24gY29taXTDqSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0NVVExJTkVfREFURSxcclxuXHRcdFx0bGFiZWw6ICdGZWNoYSBMw61uZWEgZGUgY29ydGUnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTkZJUk1fTEVHQUxJWkFUSU9OX0FQUE9JTlRNRU5ULFxyXG5cdFx0XHRsYWJlbDogJ0NvbmZpcm1hY2nDs24gZGUgY2l0YSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfRE9DVU1FTlRfTlVNQkVSLFxyXG5cdFx0XHRsYWJlbDogJ07Dum1lcm8gZGUgZG9jdW1lbnRvIGRlIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9ET0NVTUVOVF9UWVBFLFxyXG5cdFx0XHRsYWJlbDogJ1RpcG8gZGUgZG9jdW1lbnRvIGRlIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9OQU1FLFxyXG5cdFx0XHRsYWJlbDogJ05vbWJyZXMgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0xBU1ROQU1FLFxyXG5cdFx0XHRsYWJlbDogJ0FwZWxsaWRvcyBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVFlQRV9DT0RFQlRPUixcclxuXHRcdFx0bGFiZWw6ICdUaXBvIGRlIHBlcnNvbmEgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX1ZFSElDTEVTX1FVQU5USVRZLFxyXG5cdFx0XHRsYWJlbDogJ0NhbnRpZGFkIHZlaGljdWxvcyBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfQVNTRVRTX1FVQU5USVRZLFxyXG5cdFx0XHRsYWJlbDogJ0NhbnRpZGFkIGJpZW5lcyBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfUkVWSUVXRVIsXHJcblx0XHRcdGxhYmVsOiAnUmV2aXNvciBkZSBjb2RldWRvcmVzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19UT1RBTF9XRUlHSFRFRCxcclxuXHRcdFx0bGFiZWw6ICdQb25kZXJhZG8gdG90YWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTlNFQ1VUSVZFX0dVQVJBTlRFRSxcclxuXHRcdFx0bGFiZWw6ICdDb25zZWN1dGl2byBkZSBnYXJhbnRpYXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnTm9tYnJlcyByZXByZXNlbnRhbnRlIGxlZ2FsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9MQVNUTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdBcGVsbGlkb3MgcmVwcmVzZW50YW50ZSBsZWdhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfRE9DVU1FTlRfTlVNQkVSLFxyXG5cdFx0XHRsYWJlbDogJ0NlZHVsYSByZXByZXNlbnRhbnRlIGxlZ2FsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19VU0VSX1RZUEVfQ1JFRElUX1NUVURZLFxyXG5cdFx0XHRsYWJlbDogJ1RpcG8gdXN1YXJpbyBlc3R1ZGlvIGNyw6lkaXRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19EQVksXHJcblx0XHRcdGxhYmVsOiAnRGlhJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19NT05USCxcclxuXHRcdFx0bGFiZWw6ICdNZXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1lFQVIsXHJcblx0XHRcdGxhYmVsOiAnQcOxbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ0lUWV9TSUdOQVRVUkUsXHJcblx0XHRcdGxhYmVsOiAnQ2l1ZGFkIGRlIGxhIGZpcm1hJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19MSVNUX0NPREVCVE9SUyxcclxuXHRcdFx0bGFiZWw6ICdMaXN0YSBkZSBjb2RldWRvcmVzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX0lOR1JFU09fQ09ERVVET1JfSEFCRUFTX0RBVEEsXHJcblx0XHRcdGxhYmVsOiAnSW5ncmVzbyBDb2RldWRvciBIYWJlYXMgRGF0YSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9QREZfUkVTVU1FTl9DT0RFVURPUixcclxuXHRcdFx0bGFiZWw6ICdQZGYgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1FVQU5USVRZX1ZFSElDTEVfQkVORUZJQ0lBUlksXHJcblx0XHRcdGxhYmVsOiAnQ2FudGlkYWQgZGUgdmVow61jdWxvcyBkZWwgc2VsZWNjaW9uYWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19RVUFOVElUWV9BU1NFVFNfQkVORUZJQ0lBUlksXHJcblx0XHRcdGxhYmVsOiAnQ2FudGlkYWQgYmllbmVzIGRlbCBzZWxlY2Npb25hZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0JFTl9DT0RJR08sXHJcblx0XHRcdGxhYmVsOiAnQ8OzZGlnbyBiZW5lZmljaWFyaW8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fQ1JFRElUX1JFVklFV0VSX09CU0VSVkFUSU9OUyxcclxuXHRcdFx0bGFiZWw6ICdPYnNlcnZhY2lvbmVzIHJldmlzb3IgZmluYW5jaWVybyBzZWxlY2Npb25hZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fQ1JFRElUX1JFVklFV0VSX09CU0VSVkFUSU9OU19DT0RFQlRPUixcclxuXHRcdFx0bGFiZWw6ICdPYnNlcnZhY2lvbmVzIHJldmlzb3IgZmluYW5jaWVybyBjb2RldWRvcmVzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX1RBR19OQU1FLFxyXG5cdFx0XHRsYWJlbDogJ05vbWJyZSBkZWwgdGFnJ1xyXG5cdFx0fSxcclxuXHRcdHsga2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX05BTUVfUkVWSUVXRVJfVEFTSywgbGFiZWw6ICdOb21icmUgcmV2aXNvciB0YXJlYXMnIH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9MQVNUX05BTUVfUkVWSUVXRVJfVEFTSyxcclxuXHRcdFx0bGFiZWw6ICdBcGVsbGlkbyByZXZpc29yIHRhcmVhcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9UQVNLX1RPVEFMX0FTU0lHTkVEX1RPX1JFVklFV0VSLFxyXG5cdFx0XHRsYWJlbDogJ1RvdGFsIHRhcmVhcyBhc2lnbmFkYXMgYSByZXZpc29yJ1xyXG5cdFx0fVxyXG5cdF07XHJcblxyXG5cdHN0YXRpYyBleGNsdWRlZFRva2VuID0gW1xyXG5cdFx0VG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVVNFUl9UWVBFX0NSRURJVF9TVFVEWS50b0xvd2VyQ2FzZSgpLFxyXG5cdFx0VG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfVkVISUNMRVNfUVVBTlRJVFkudG9Mb3dlckNhc2UoKSxcclxuXHRcdFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0FTU0VUU19RVUFOVElUWS50b0xvd2VyQ2FzZSgpXHJcblx0XTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQsXHJcblx0XHRwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcblx0XHRwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSxcclxuXHRcdHByaXZhdGUgY3VycmVuY3lQaXBlOiBDdXJyZW5jeVBpcGVcclxuXHQpIHt9XHJcblxyXG5cdC8qKiBUaGlzIHByb21pc2UgYWxsb3dzIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbiB3aGVuIGNvbnN1bHRpbmcgdGhlIGZvcm0gZmllbGRzLiAqL1xyXG5cdGdldEZvcm1GaWVsZHNCeVByb21Db2RlKHByb21Db2RpZ28pOiBQcm9taXNlPGFueVtdPiB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHQvLyBTZWFyY2ggdGhlIGR5bmFtaWMgZm9ybVxyXG5cdFx0XHRsZXQgbEZvcm1GaWVsZHNUb2tlbjogYW55W10gPSBudWxsO1xyXG5cdFx0XHR0aGlzLmZvcm1TZXJ2aWNlLmdldEJ5UHJvbUNvZGlnbyhwcm9tQ29kaWdvKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdG5leHQ6IChhcnJheUZvcm1zOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGlmIChhcnJheUZvcm1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0Zm9yIChjb25zdCBmb3JtcyBvZiBhcnJheUZvcm1zKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IGNvbXBvbmVudHMgPSBbXTtcclxuXHJcblx0XHRcdFx0XHRcdFx0Y29tcG9uZW50cy5wdXNoKC4uLkZvcm1pb1V0aWwuZ2V0Q29tcG9uZW50cyhmb3Jtcy5jb21wb25lbnRzKSk7XHJcblxyXG5cdFx0XHRcdFx0XHRcdGlmIChmb3Jtcy5jb21wb25lbnRzICYmIGZvcm1zLmNvbXBvbmVudHMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBjb21wb25lbnRzIG9mIGZvcm1zLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNvbXBvbmVudHMuY29tcG9uZW50cyAmJiBjb21wb25lbnRzLmNvbXBvbmVudHMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgY29tcG9uZW50IG9mIGNvbXBvbmVudHMuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNvbXBvbmVudC5jb2x1bW5zICYmIGNvbXBvbmVudC5jb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBjQ29tcG9uZW50cyBvZiBjb21wb25lbnQuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNDb21wb25lbnRzLmNvbXBvbmVudHMgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNDb21wb25lbnRzLmNvbXBvbmVudHMubGVuZ3RoID4gMFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBpdGVyYXRvciBvZiBjQ29tcG9uZW50cy5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChpdGVyYXRvci50eXBlID09PSAnYWRkcmVzcycpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZWxldGUgaXRlcmF0b3IuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdGxldCBmb3JtOiBhbnkgPSBhcnJheUZvcm1zO1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhZm9ybSB8fFxyXG5cdFx0XHRcdFx0XHQhZm9ybVswXSB8fFxyXG5cdFx0XHRcdFx0XHQhZm9ybVswXS5wcm9tQ29kaWdvIHx8XHJcblx0XHRcdFx0XHRcdGZvcm1bMF0ucHJvbUNvZGlnbyAhPSBwcm9tQ29kaWdvXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Ly8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWyc0MDQnXSk7XHJcblx0XHRcdFx0XHRcdHJlc29sdmUobEZvcm1GaWVsZHNUb2tlbik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuID0gW107XHJcblx0XHRcdFx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0XHRcdGxldCBjb21wb25lbnRzOiBhbnlbXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29sdW1ucztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAobmV3Q29tcG9uZW50cyAmJiBVdGlsU3RyaW5nLmlzVmFsaWQoZm9ybUNvbXAudGl0bGUpKSB7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbi5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLmdldEtleUZvcm11bGFyaW8oZm9ybUNvbXAudGl0bGUpLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZm9ybUNvbXAudGl0bGUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG9iamVjdDogZm9ybUNvbXBcclxuXHRcdFx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogW11cclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuW2xGb3JtRmllbGRzVG9rZW4ubGVuZ3RoIC0gMV0udmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5nZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50cyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZmFsc2UsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGxcclxuXHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHJlc29sdmUobEZvcm1GaWVsZHNUb2tlbik7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRlcnJvcjogKGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRyZWplY3QoZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGdldEZvcm1GaWVsZHNCeUZvcm1JZChmb3JtSWQ6IHN0cmluZyk6IFByb21pc2U8YW55W10+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdC8vIFNlYXJjaCB0aGUgZHluYW1pYyBmb3JtXHJcblx0XHRcdGxldCBsRm9ybUZpZWxkc1Rva2VuOiBhbnlbXSA9IG51bGw7XHJcblx0XHRcdHRoaXMuZm9ybVNlcnZpY2UuZ2V0QnlJZChmb3JtSWQpLnN1YnNjcmliZShcclxuXHRcdFx0XHQocmVzdWx0OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGxldCBmb3JtOiBhbnkgPSByZXN1bHQ7XHJcblx0XHRcdFx0XHRpZiAoIWZvcm0gfHwgIWZvcm1bMF0pIHtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4gPSBbXTtcclxuXHRcdFx0XHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRcdFx0bGV0IGNvbXBvbmVudHM6IGFueVtdID0gW107XHJcblx0XHRcdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChuZXdDb21wb25lbnRzICYmIFV0aWxTdHJpbmcuaXNWYWxpZChmb3JtQ29tcC50aXRsZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtQ29tcC50aXRsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmb3JtQ29tcC50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0b2JqZWN0OiBmb3JtQ29tcFxyXG5cdFx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBbXVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW5bbEZvcm1GaWVsZHNUb2tlbi5sZW5ndGggLSAxXS52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldENvbXBvbmVuZXRGb3JtKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb21wb25lbnRzLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmYWxzZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bnVsbFxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKiBUaGlzIHByb21pc2UgYWxsb3dzIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbiB3aGVuIGNvbnN1bHRpbmcgdGhlIGZvcm0gZmllbGRzLiAqL1xyXG5cdGdldEZvcm1QYW5lbHNCeVByb21Db2RlKHByb21Db2RpZ28pOiBQcm9taXNlPGFueVtdPiB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHQvLyBTZWFyY2ggdGhlIGR5bmFtaWMgZm9ybVxyXG5cdFx0XHRsZXQgbEZvcm1QYW5uZWxzVG9rZW46IGFueVtdID0gbnVsbDtcclxuXHRcdFx0dGhpcy5mb3JtU2VydmljZS5nZXRCeVByb21Db2RpZ28ocHJvbUNvZGlnbykuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChyZXN1bHQ6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IGZvcm06IGFueSA9IHJlc3VsdDtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IWZvcm0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0ucHJvbUNvZGlnbyB8fFxyXG5cdFx0XHRcdFx0XHRmb3JtWzBdLnByb21Db2RpZ28gIT0gcHJvbUNvZGlnb1xyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnNDA0J10pO1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtUGFubmVsc1Rva2VuKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGxGb3JtUGFubmVsc1Rva2VuID0gW107XHJcblx0XHRcdFx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0XHRcdGxldCBjb21wb25lbnRzOiBhbnlbXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29sdW1ucztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAobmV3Q29tcG9uZW50cyAmJiBVdGlsU3RyaW5nLmlzVmFsaWQoZm9ybUNvbXAudGl0bGUpKSB7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1QYW5uZWxzVG9rZW4ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm1Db21wLnRpdGxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZvcm1Db21wLnRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3Q6IGZvcm1Db21wXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFtdXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1QYW5uZWxzVG9rZW5bbEZvcm1QYW5uZWxzVG9rZW4ubGVuZ3RoIC0gMV0udmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5nZXRQYW5lbENvbXBvbmVuZXQoY29tcG9uZW50cywgbmV3Q29tcG9uZW50cywgbnVsbCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHJlc29sdmUobEZvcm1QYW5uZWxzVG9rZW4pO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRyZWplY3QoZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSByZWN1cnNpdmUgbWV0aG9kIHRvIGdldCBhbGwgdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBlZGl0R3JpZCBkeW5hbWljIGZvcm1cclxuXHQgKiBAcGFyYW0gY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBmb3JtXHJcblx0ICovXHJcblx0Z2V0UGFuZWxDb21wb25lbmV0KGNvbXBvbmVudHM6IGFueVtdLCBmb3JtOiBhbnksIHBhbmVsTmFtZTogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRpZiAoZm9ybUNvbXAudHlwZSA9PT0gJ3BhbmVsJykge1xyXG5cdFx0XHRcdGNvbXBvbmVudHMucHVzaChmb3JtQ29tcCk7XHJcblx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29tcG9uZW50cyB8fCBmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29sdW1ucztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29tcG9uZW50cyA9IHRoaXMuZ2V0UGFuZWxDb21wb25lbmV0KGNvbXBvbmVudHMsIG5ld0NvbXBvbmVudHMsIHBhbmVsTmFtZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBjb21wb25lbnRzO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSByZWN1cnNpdmUgbWV0aG9kIHRvIGdldCBhbGwgdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBjb21wb25lbnRzIGEgY29sdW1ucyBvZiB0aGUgZHluYW1pYyBmb3JtXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHNcclxuXHQgKiBAcGFyYW0gZm9ybVxyXG5cdCAqL1xyXG5cdGdldENvbXBvbmVuZXRGb3JtKFxyXG5cdFx0Y29tcG9uZW50czogYW55W10sXHJcblx0XHRmb3JtOiBhbnksXHJcblx0XHRwYW5lbE5hbWU6IHN0cmluZyxcclxuXHRcdGVkaXRncmlkOiBib29sZWFuLFxyXG5cdFx0ZWRpdEdyaWRLZXk6IHN0cmluZ1xyXG5cdCk6IGFueVtdIHtcclxuXHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0Ly9NTy0gIG1hbnRpcyA4NzQzIGZpeCBhZGRyZXNzIHRva2VuXHJcblx0XHRcdGlmICgoZm9ybUNvbXAuY29tcG9uZW50cyB8fCBmb3JtQ29tcC5jb2x1bW5zKSAmJiBmb3JtQ29tcC50eXBlICE9PSAnYWRkcmVzcycpIHtcclxuXHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdGlmIChmb3JtQ29tcC50eXBlID09PSAnZWRpdGdyaWQnKSB7XHJcblx0XHRcdFx0XHRcdGVkaXRncmlkID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0ZWRpdEdyaWRLZXkgPSBmb3JtQ29tcC5rZXk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29sdW1ucztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgJiYgZm9ybUNvbXAudHlwZSA9PT0gJ3BhbmVsJykge1xyXG5cdFx0XHRcdFx0cGFuZWxOYW1lID0gZm9ybUNvbXAudGl0bGU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbXBvbmVudHMgPSB0aGlzLmdldENvbXBvbmVuZXRGb3JtKFxyXG5cdFx0XHRcdFx0Y29tcG9uZW50cyxcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRwYW5lbE5hbWUsXHJcblx0XHRcdFx0XHRlZGl0Z3JpZCxcclxuXHRcdFx0XHRcdGVkaXRHcmlkS2V5XHJcblx0XHRcdFx0KTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRmb3JtQ29tcC5wYW5lbE5hbWUgPSBwYW5lbE5hbWU7XHJcblx0XHRcdFx0Zm9ybUNvbXAuZWRpdGdyaWQgPSBlZGl0Z3JpZDtcclxuXHRcdFx0XHRmb3JtQ29tcC5lZGl0R3JpZEtleSA9IGVkaXRHcmlkS2V5O1xyXG5cdFx0XHRcdGNvbXBvbmVudHMucHVzaChmb3JtQ29tcCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBjb21wb25lbnRzO1xyXG5cdH1cclxuXHJcblx0LyoqIFRoaXMgcHJvbWlzZSBhbGxvd3MgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIHdoZW4gY29uc3VsdGluZyB0aGUgZm9ybSBmaWVsZHMuICovXHJcblx0Z2V0Rm9ybUVkaXRHcmlkRmllbGRzQnlQcm9tQ29kZShwcm9tQ29kaWdvKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtRmllbGRzVG9rZW46IGFueVtdID0gbnVsbDtcclxuXHRcdFx0dGhpcy5mb3JtU2VydmljZS5nZXRCeVByb21Db2RpZ28ocHJvbUNvZGlnbykuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChyZXN1bHQ6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IGZvcm06IGFueSA9IHJlc3VsdDtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IWZvcm0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0ucHJvbUNvZGlnbyB8fFxyXG5cdFx0XHRcdFx0XHRmb3JtWzBdLnByb21Db2RpZ28gIT0gcHJvbUNvZGlnb1xyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnNDA0J10pO1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm1Db21wLnRpdGxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZvcm1Db21wLnRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3Q6IGZvcm1Db21wXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFtdXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbltsRm9ybUZpZWxkc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0RWRpdEdyaWRDb21wb25lbmV0KGNvbXBvbmVudHMsIG5ld0NvbXBvbmVudHMsIG51bGwpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRyZWplY3QoZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSByZWN1cnNpdmUgbWV0aG9kIHRvIGdldCBhbGwgdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBlZGl0R3JpZCBkeW5hbWljIGZvcm1cclxuXHQgKiBAcGFyYW0gY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBmb3JtXHJcblx0ICovXHJcblx0Z2V0RWRpdEdyaWRDb21wb25lbmV0KGNvbXBvbmVudHM6IGFueVtdLCBmb3JtOiBhbnksIHBhbmVsTmFtZTogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRpZiAoZm9ybUNvbXAudHlwZSA9PT0gJ2VkaXRncmlkJykge1xyXG5cdFx0XHRcdGZvcm1Db21wLnBhbmVsTmFtZSA9IHBhbmVsTmFtZTtcclxuXHRcdFx0XHRjb21wb25lbnRzLnB1c2goZm9ybUNvbXApO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbXBvbmVudHMgfHwgZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC50eXBlICYmIGZvcm1Db21wLnR5cGUgPT09ICdwYW5lbCcpIHtcclxuXHRcdFx0XHRcdHBhbmVsTmFtZSA9IGZvcm1Db21wLnRpdGxlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb21wb25lbnRzID0gdGhpcy5nZXRFZGl0R3JpZENvbXBvbmVuZXQoY29tcG9uZW50cywgbmV3Q29tcG9uZW50cywgcGFuZWxOYW1lKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNvbXBvbmVudHM7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyB0aGUgdG9rZW5zIGJ5IHByb21Db2RpZ28gKi9cclxuXHRnZXRMaXN0QnlQcm9tQ29kaWdvKHByb21Db2RlOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vZ2V0QnlQcm9tQ29kaWdvJyxcclxuXHRcdFx0eyBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwcm9tQ29kaWdvJywgcHJvbUNvZGUudG9TdHJpbmcoKSkgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCByZXR1cm5zIHRoZSB0b2tlbiBieSBpZCAqL1xyXG5cdGdldEJ5SWQoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL2dldEJ5SWQnLCB7XHJcblx0XHRcdHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2lkJywgaWQudG9TdHJpbmcoKSlcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IGRlbGV0ZXMgYSBmb3JtIGJ5IGlkICovXHJcblx0ZGVsZXRlKGlkKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZGVsZXRlKFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL2RlbGV0ZScsXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgnaWQnLCBpZCkgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCBzYXZlcyB0aGUgdG9rZW4gKi9cclxuXHRzYXZlKHRva2VuOiBUb2tlbik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vc2F2ZScsXHJcblx0XHRcdHRva2VuLFxyXG5cdFx0XHRIRUFERVJfSlNPTlxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlGb3JtdWxhcmlvKGZvcm1UaXRsZTogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRcdGlmIChVdGlsU3RyaW5nLmlzVmFsaWQoZm9ybVRpdGxlKSkge1xyXG5cdFx0XHRyZXR1cm4gKFxyXG5cdFx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRk9STSkgK1xyXG5cdFx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhmb3JtVGl0bGUpLnJlcGxhY2UoL18vZywgJy0nKVxyXG5cdFx0XHQpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuICcnO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgdGhlIHVuaXF1ZSB2ZXJpZmljYXRpb24gY29kZSAqL1xyXG5cdGdldFVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUobG9naW46IHN0cmluZywgdG9rZW46IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuZG9jdW1lbnRzUmVwb3NpdG9yeSArXHJcblx0XHRcdFx0J2RvY3VtZW50by9jb25zdWx0YXJDb2RpZ29Vbmljby8nICtcclxuXHRcdFx0XHRsb2dpbiArXHJcblx0XHRcdFx0Jy8nICtcclxuXHRcdFx0XHR0b2tlbixcclxuXHRcdFx0eyBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCBzZW5kIHRoZSBpbmZvcm1hdGlvbiB0byBjb3B5IHRoZSBEb2N1bWVudCB2aWV3ZXIgKi9cclxuXHRjb3B5RG9jdW1lbnRJbmZvcm1hdGlvblZpZXdlcihcclxuXHRcdGxvZ2luOiBzdHJpbmcsXHJcblx0XHR0b2tlbjogc3RyaW5nLFxyXG5cdFx0dW5pcXVlQ29kZTogc3RyaW5nLFxyXG5cdFx0ZG9jdW1lbnRVUkw6IHN0cmluZyxcclxuXHRcdGRvY3VtZW50TmFtZTogc3RyaW5nXHJcblx0KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdGxldCBpbmZvRG9jdW1lbnRvID0ge1xyXG5cdFx0XHRjb2RpZ29VbmljbzogdW5pcXVlQ29kZSxcclxuXHRcdFx0cnV0YURvY3VtZW50bzogZG9jdW1lbnRVUkwsXHJcblx0XHRcdGRvY3VtZW50TmFtZTogZG9jdW1lbnROYW1lXHJcblx0XHR9O1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5kb2N1bWVudHNSZXBvc2l0b3J5ICtcclxuXHRcdFx0XHQnZG9jdW1lbnRvL2FkaWNpb25hckRvY3VtZW50by8nICtcclxuXHRcdFx0XHRsb2dpbiArXHJcblx0XHRcdFx0Jy8nICtcclxuXHRcdFx0XHR0b2tlbixcclxuXHRcdFx0aW5mb0RvY3VtZW50byxcclxuXHRcdFx0SEVBREVSX0pTT05cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5QnVkZ2V0KCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9CVURHRVQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleURvY3VtZW50KCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9ET0NVTUVOVE8pO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleURvY3VtZW50QW5hbHlzaXMoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0RPQ1VNRU5UT19BTkFMWVNJU19UWVBFKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlUYXNrKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9UQVNLTCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5U3RhdGljKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9TVEFUSUMpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleUNhbGN1bGF0ZWQodG9rZW46IFRva2VuKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRCkgK1xyXG5cdFx0XHQnXycgK1xyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnModG9rZW4ubmFtZSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5U25hcHNob3QodG9rZW46IFRva2VuKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU05BUFNIT1QpICtcclxuXHRcdFx0J18nICtcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKHRva2VuLm5hbWUpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleUd1YXJhbnRlZSh0b2tlbjogUGxpQ25mR3VhcmFudGVlVG9rZW4pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9HVUFSQU5URUUpICtcclxuXHRcdFx0J18nICtcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKHRva2VuLm5hbWUpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0dXJuIGEgdmFsdWUgdGhhdCByZXByZXNlbnQgdGhlIHR5cGUgb2YgbGFiZWw6IDE9Rm9ybSwgMj1CdWRnZXQsIDM9U3RhdGljLCA0PUNhbGN1bGF0ZWRcclxuXHQgKiBAcGFyYW0ga2V5IFZhbHVlIHRvIGV2YWx1ZWF0ZVxyXG5cdCAqL1xyXG5cdHN0YXRpYyBnZXRLZXlUeXBlKGtleTogc3RyaW5nKTogbnVtYmVyIHtcclxuXHRcdGtleSA9IGtleS5yZXBsYWNlKCd7JywgJycpLnJlcGxhY2UoJ30nLCAnJyk7XHJcblx0XHRrZXkgPSBrZXkuc3Vic3RyaW5nKDEsIGtleS5pbmRleE9mKCdfJykpO1xyXG5cdFx0aWYgKGtleS5zdGFydHNXaXRoKFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRk9STSkpKSB7XHJcblx0XHRcdHJldHVybiAxO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9CVURHRVQpKVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiAyO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9TVEFUSUMpKVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiAzO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoXHJcblx0XHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9DQUxDVUxBVEVEKVxyXG5cdFx0XHQpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIDQ7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1RBU0tMKSlcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gNTtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdGtleS5zdGFydHNXaXRoKFxyXG5cdFx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fRE9DVU1FTlRPX0FOQUxZU0lTX1RZUEUpXHJcblx0XHRcdClcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gNjtcclxuXHRcdH1cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGVwZW5kcyBvZiB0aGUgdHlwZSBvZiBmb3JtRmllbGRUb2tlbiByZXR1cm4gZGUgdmFsdWUgb2YgdGhlIHZhbHVlRGF0YVxyXG5cdCAqIEBwYXJhbSBmb3JtRmllbGRUb2tlblxyXG5cdCAqIEBwYXJhbSB2YWx1ZURhdGFcclxuXHQgKi9cclxuXHRnZXRWYWx1ZUZyb21Gb3JtRmllbGQoZm9ybUZpZWxkVG9rZW46IGFueSwgdmFsdWVEYXRhOiBhbnkpOiBhbnkge1xyXG5cdFx0aWYgKHR5cGVvZiB2YWx1ZURhdGEgPT0gJ29iamVjdCcpIHtcclxuXHRcdFx0aWYgKGZvcm1GaWVsZFRva2VuLnR5cGUpIHtcclxuXHRcdFx0XHRpZiAoZm9ybUZpZWxkVG9rZW4udHlwZSA9PSAnYWRkcmVzcycpIHtcclxuXHRcdFx0XHRcdHJldHVybiB2YWx1ZURhdGEuZm9ybWF0dGVkX2FkZHJlc3M7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGZvcm1GaWVsZFRva2VuLnR5cGUgPT0gJ3NlbGVjdCcgJiZcclxuXHRcdFx0XHRcdHZhbHVlRGF0YS5oYXNPd25Qcm9wZXJ0eShmb3JtRmllbGRUb2tlbi5zZWFyY2hGaWVsZClcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGZvcm1GaWVsZFRva2VuKTtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHZhbHVlRGF0YSk7XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdGlmKHZhbHVlRGF0YS5oYXNPd25Qcm9wZXJ0eSgnb3JpZ2luYWxfbmFtZScpICE9PSAnJyl7XHJcblx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZURhdGEub3JpZ2luYWxfbmFtZTtcclxuXHRcdFx0XHRcdH1lbHNlIGlmKHZhbHVlRGF0YS5oYXNPd25Qcm9wZXJ0eSgnbmF0aXZlTmFtZScpICE9PSAnJyl7XHJcblx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZURhdGEubmF0aXZlTmFtZTtcclxuXHRcdFx0XHRcdH1lbHNlIGlmKGZvcm1GaWVsZFRva2VuLnNlYXJjaEZpZWxkKXtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlRGF0YVtmb3JtRmllbGRUb2tlbi5zZWFyY2hGaWVsZF07XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gdmFsdWVEYXRhO1xyXG5cdH1cclxuXHRmb3JtYXREYXRlKHZhbHVlOiBEYXRlLCBsb2NhbGU6IHN0cmluZyk6IHN0cmluZyB7XHJcblx0XHRjb25zdCBkYXRlID0gbmV3IERhdGUodmFsdWUpO1xyXG5cclxuXHRcdGNvbnN0IG1vbnRocyA9IHtcclxuXHRcdFx0ZXM6IFtcclxuXHRcdFx0XHQnZW5lcm8nLFxyXG5cdFx0XHRcdCdmZWJyZXJvJyxcclxuXHRcdFx0XHQnbWFyem8nLFxyXG5cdFx0XHRcdCdhYnJpbCcsXHJcblx0XHRcdFx0J21heW8nLFxyXG5cdFx0XHRcdCdqdW5pbycsXHJcblx0XHRcdFx0J2p1bGlvJyxcclxuXHRcdFx0XHQnYWdvc3RvJyxcclxuXHRcdFx0XHQnc2VwdGllbWJyZScsXHJcblx0XHRcdFx0J29jdHVicmUnLFxyXG5cdFx0XHRcdCdub3ZpZW1icmUnLFxyXG5cdFx0XHRcdCdkaWNpZW1icmUnXHJcblx0XHRcdF0sXHJcblx0XHRcdGVuOiBbXHJcblx0XHRcdFx0J0phbnVhcnknLFxyXG5cdFx0XHRcdCdGZWJydWFyeScsXHJcblx0XHRcdFx0J01hcmNoJyxcclxuXHRcdFx0XHQnQXByaWwnLFxyXG5cdFx0XHRcdCdNYXknLFxyXG5cdFx0XHRcdCdKdW5lJyxcclxuXHRcdFx0XHQnSnVseScsXHJcblx0XHRcdFx0J0F1Z3VzdCcsXHJcblx0XHRcdFx0J1NlcHRlbWJlcicsXHJcblx0XHRcdFx0J09jdG9iZXInLFxyXG5cdFx0XHRcdCdOb3ZlbWJlcicsXHJcblx0XHRcdFx0J0RlY2VtYmVyJ1xyXG5cdFx0XHRdLFxyXG5cdFx0XHRmcjogW1xyXG5cdFx0XHRcdCdqYW52aWVyJyxcclxuXHRcdFx0XHQnZsOpdnJpZXInLFxyXG5cdFx0XHRcdCdtYXJzJyxcclxuXHRcdFx0XHQnYXZyaWwnLFxyXG5cdFx0XHRcdCdtYWknLFxyXG5cdFx0XHRcdCdqdWluJyxcclxuXHRcdFx0XHQnanVpbGxldCcsXHJcblx0XHRcdFx0J2Fvw7t0JyxcclxuXHRcdFx0XHQnc2VwdGVtYnJlJyxcclxuXHRcdFx0XHQnb2N0b2JyZScsXHJcblx0XHRcdFx0J25vdmVtYnJlJyxcclxuXHRcdFx0XHQnZMOpY2VtYnJlJ1xyXG5cdFx0XHRdLFxyXG5cdFx0XHRkZTogW1xyXG5cdFx0XHRcdCdKYW51YXInLFxyXG5cdFx0XHRcdCdGZWJydWFyJyxcclxuXHRcdFx0XHQnTcOkcnonLFxyXG5cdFx0XHRcdCdBcHJpbCcsXHJcblx0XHRcdFx0J01haScsXHJcblx0XHRcdFx0J0p1bmknLFxyXG5cdFx0XHRcdCdKdWxpJyxcclxuXHRcdFx0XHQnQXVndXN0JyxcclxuXHRcdFx0XHQnU2VwdGVtYmVyJyxcclxuXHRcdFx0XHQnT2t0b2JlcicsXHJcblx0XHRcdFx0J05vdmVtYmVyJyxcclxuXHRcdFx0XHQnRGV6ZW1iZXInXHJcblx0XHRcdF0sXHJcblx0XHRcdGl0OiBbXHJcblx0XHRcdFx0J2dlbm5haW8nLFxyXG5cdFx0XHRcdCdmZWJicmFpbycsXHJcblx0XHRcdFx0J21hcnpvJyxcclxuXHRcdFx0XHQnYXByaWxlJyxcclxuXHRcdFx0XHQnbWFnZ2lvJyxcclxuXHRcdFx0XHQnZ2l1Z25vJyxcclxuXHRcdFx0XHQnbHVnbGlvJyxcclxuXHRcdFx0XHQnYWdvc3RvJyxcclxuXHRcdFx0XHQnc2V0dGVtYnJlJyxcclxuXHRcdFx0XHQnb3R0b2JyZScsXHJcblx0XHRcdFx0J25vdmVtYnJlJyxcclxuXHRcdFx0XHQnZGljZW1icmUnXHJcblx0XHRcdF1cclxuXHRcdH07XHJcblxyXG5cdFx0Y29uc3QgbG9jYWxlTW9udGhzID0gbW9udGhzW2xvY2FsZV07XHJcblxyXG5cdFx0Y29uc3QgbW9udGggPSBsb2NhbGVNb250aHNbZGF0ZS5nZXRNb250aCgpXTtcclxuXHRcdGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcblxyXG5cdFx0cmV0dXJuIGAke21vbnRofSAke3llYXJ9YDtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogVHJ5IHRvIGZpbmQgdGhlIHRva2VuIGluIHRoZSBzdHJpbmdUZXh0IGFuZCByZXBsYWNlIHdpdGggZGF0YVZhbHVlLiBJZiBkZXRlY3QgZm9ybWF0IG9mIG51bWJlciBvciBkYXRlIHRyeSB0byBmb3JtYXQgdGhlIGRhdGFWYWx1ZVxyXG5cdCAqIEBwYXJhbSBzdHJpbmdUZXh0XHJcblx0ICogQHBhcmFtIHRva2VuXHJcblx0ICogQHBhcmFtIGRhdGFWYWx1ZVxyXG5cdCAqL1xyXG5cdHJlcGxhY2VUb2tlbihzdHJpbmdUZXh0OiBzdHJpbmcsIHRva2VuOiBhbnksIGRhdGFWYWx1ZTogYW55LCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0bGV0IHZhbHVlUmVwbGFjZTogc3RyaW5nID0gbnVsbDtcclxuXHRcdGlmICh0b2tlbiAmJiB0b2tlblswXSA9PSAnIycpIHtcclxuXHRcdFx0bGV0IHR5cGVUb2tlbiA9IHRva2VuLnN1YnN0cmluZygxLCB0b2tlbi5pbmRleE9mKCcoJykpO1xyXG5cdFx0XHRpZiAodHlwZVRva2VuID09ICdkYXRlJykge1xyXG5cdFx0XHRcdGxldCBkYXRlRm9ybWF0OiBzdHJpbmcgPSB0b2tlbi5zdWJzdHJpbmcoXHJcblx0XHRcdFx0XHR0b2tlbi5pbmRleE9mKCd9JykgKyAxLFxyXG5cdFx0XHRcdFx0dG9rZW4uaW5kZXhPZignKScpXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRkYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdC50cmltKCkucmVwbGFjZSgvXFxcIi9nLCAnJykucmVwbGFjZSgvXFwnL2csICcnKTtcclxuXHRcdFx0XHRsZXQgZGF0ZVZhbHVlID0gRGF0ZVV0aWwuZ2V0RGF0ZShkYXRhVmFsdWUpO1xyXG5cdFx0XHRcdGlmIChsb2NhbGUgIT0gbnVsbCAmJiBsb2NhbGUpIHtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9IHRoaXMuZm9ybWF0RGF0ZShkYXRlVmFsdWUsIGxvY2FsZSk7XHJcblx0XHRcdFx0fSBlbHNlIGlmIChkYXRlVmFsdWUpIHtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9IERhdGVVdGlsLmdldE1vbWVudChkYXRlVmFsdWUpLmZvcm1hdChkYXRlRm9ybWF0KTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dmFsdWVSZXBsYWNlID0gJyc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVUb2tlbiA9PSAnbnVtYmVyJykge1xyXG5cdFx0XHRcdGxldCBudW1iZXJWYWx1ZTogbnVtYmVyID0gTnVtYmVyKGRhdGFWYWx1ZSk7XHJcblx0XHRcdFx0aWYgKG51bWJlclZhbHVlICE9IHVuZGVmaW5lZCAmJiAhaXNOYU4obnVtYmVyVmFsdWUpKSB7XHJcblx0XHRcdFx0XHRsZXQgbnVtYmVyRm9ybWF0OiBzdHJpbmcgPSB0b2tlbi5zdWJzdHJpbmcoXHJcblx0XHRcdFx0XHRcdHRva2VuLmluZGV4T2YoJ30nKSArIDEsXHJcblx0XHRcdFx0XHRcdHRva2VuLmluZGV4T2YoJyknKVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdG51bWJlckZvcm1hdCA9IG51bWJlckZvcm1hdC50cmltKCkucmVwbGFjZSgvXFxcIi9nLCAnJykucmVwbGFjZSgvXFwnL2csICcnKTtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9IHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybShcclxuXHRcdFx0XHRcdFx0bnVtYmVyVmFsdWUsXHJcblx0XHRcdFx0XHRcdHRoaXMubG9jYWxlLFxyXG5cdFx0XHRcdFx0XHQnJyxcclxuXHRcdFx0XHRcdFx0bnVtYmVyRm9ybWF0XHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcclxuXHRcdFx0XHRcdFx0J0VsIGRhdG8gWycgK1xyXG5cdFx0XHRcdFx0XHRcdGRhdGFWYWx1ZSArXHJcblx0XHRcdFx0XHRcdFx0J10gcGFyYSBlbCB0b2tlbiBbJyArXHJcblx0XHRcdFx0XHRcdFx0dG9rZW4gK1xyXG5cdFx0XHRcdFx0XHRcdCddIHRpcG8gbsO6bWVyaWNvIG5vIGVzIHZhbGlkbydcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSAnJztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ3RpcG8gZGUgdG9rZW4gaW5kZWZpbmlkby4gW3R5cGVUb2tlblsnICsgdHlwZVRva2VuICsgJ11dJyk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAodG9rZW4gJiYgdG9rZW5bMF0gPT0gJyQnKSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKGRhdGFWYWx1ZSk7XHJcblx0XHRcdGNvbnNvbGUubG9nKGRhdGFWYWx1ZS5vcmlnaW5hbF9uYW1lKTtcclxuXHRcdFx0XHJcblx0XHRcdGlmKGRhdGFWYWx1ZS5vcmlnaW5hbF9uYW1lICE9PSB1bmRlZmluZWQpe1xyXG5cdFx0XHRcdHZhbHVlUmVwbGFjZSA9IGRhdGFWYWx1ZS5vcmlnaW5hbF9uYW1lO1xyXG5cdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSBkYXRhVmFsdWU7XHJcblx0XHRcdH1cclxuXHRcdFx0XHQvLyB2YWx1ZVJlcGxhY2UgPSBkYXRhVmFsdWU7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRjb25zb2xlLmxvZygnRWwgdG9rZW4gbm8gZXMgdmFsaWRvLiBbdG9rZW5bJyArIHRva2VuICsgJ11dJyk7XHJcblx0XHR9XHJcblx0XHRpZiAoc3RyaW5nVGV4dCAmJiB2YWx1ZVJlcGxhY2UgIT09IG51bGwpIHtcclxuXHRcdFx0Ly8gcmVwbGFjZSB0ZXh0IGluIGEgbW9yZSBlZmZpY2llbnQgd2F5XHJcblx0XHRcdHN0cmluZ1RleHQgPSBzdHJpbmdUZXh0LnNwbGl0KHRva2VuKS5qb2luKHZhbHVlUmVwbGFjZSk7XHJcblx0XHRcdC8vc3RyaW5nVGV4dCA9IHN0cmluZ1RleHQucmVwbGFjZSh0b2tlbiwgdmFsdWVSZXBsYWNlKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBzdHJpbmdUZXh0O1xyXG5cdH1cclxuXHJcblx0Z2V0TGlzdFRva2Vuc0J5U3RyaW5nU2VnbWVudGF0aW9uKHN0cmluZ1RleHQ6IHN0cmluZyk6IGFueVtdIHtcclxuXHRcdGNvbnN0IGFycmF5VG9rZW4gPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCR7KFtefV0rKVxcfS9nKTtcclxuXHRcdGNvbnN0IGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwjZGF0ZVteKV0rXFwpL2cpO1xyXG5cdFx0Y29uc3QgYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciA9IHN0cmluZ1RleHQubWF0Y2goL1xcI251bWJlclteKV0rXFwpL2cpO1xyXG5cdFx0bGV0IGFycmF5VG9rZW5Gb3JtYXR0ZWQgPSBbXTtcclxuXHRcdGlmIChcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZERhdGUubGVuZ3RoID4gMCAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIubGVuZ3RoID4gMFxyXG5cdFx0KSB7XHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWQgPSBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5jb25jYXQoYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlcik7XHJcblx0XHR9IGVsc2UgaWYgKGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlICYmIGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLnNsaWNlKCk7XHJcblx0XHR9IGVsc2UgaWYgKGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgJiYgYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5sZW5ndGggPiAwKSB7XHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWQgPSBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLnNsaWNlKCk7XHJcblx0XHR9XHJcblx0XHRjb25zdCByZXN1bHQ6IGFueVtdID0gW107XHJcblxyXG5cdFx0aWYgKGFycmF5VG9rZW4pIHtcclxuXHRcdFx0Zm9yIChjb25zdCB0b2tlbiBvZiBhcnJheVRva2VuKSB7XHJcblx0XHRcdFx0Y29uc3QgaW5mb1Rva2VuID0geyBrZXk6IHRva2VuLCB2YWx1ZTogdG9rZW4gfTtcclxuXHRcdFx0XHRpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZCkge1xyXG5cdFx0XHRcdFx0Zm9yIChjb25zdCB0b2tlbkZvcm1hdHRlZCBvZiBhcnJheVRva2VuRm9ybWF0dGVkKSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IGluZGV4ID0gdG9rZW5Gb3JtYXR0ZWQuaW5kZXhPZih0b2tlbik7XHJcblx0XHRcdFx0XHRcdGlmIChpbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0aW5mb1Rva2VuLnZhbHVlID0gdG9rZW5Gb3JtYXR0ZWQ7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmVzdWx0LnB1c2goaW5mb1Rva2VuKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiByZXN1bHQ7XHJcblx0fVxyXG5cclxuXHRjaGFuZ2VJZFByb3BlcnRpZXNPZk9iamVjdChub3JtYWxpemF0aW9uQ29sdW1uczogYW55W10sIGxpc3REYXRhOiBhbnlbXSk6IGFueVtdIHtcclxuXHRcdGNvbnN0IG5ld0RhdGEgPSBbXTtcclxuXHRcdGxpc3REYXRhLmZvckVhY2goKGRhdGEpID0+IHtcclxuXHRcdFx0Y29uc3Qgb2JqRGF0YSA9IHt9O1xyXG5cdFx0XHRPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xyXG5cdFx0XHRcdGlmIChkYXRhLmhhc093blByb3BlcnR5KHByb3BlcnR5KSkge1xyXG5cdFx0XHRcdFx0bm9ybWFsaXphdGlvbkNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChjb2x1bW4uaWRDb2x1bW4udG9TdHJpbmcoKSA9PT0gcHJvcGVydHkpIHtcclxuXHRcdFx0XHRcdFx0XHRvYmpEYXRhW2NvbHVtbi5rZXldID0gZGF0YVtwcm9wZXJ0eV07XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHRcdGlmIChvYmpEYXRhKSB7XHJcblx0XHRcdFx0bmV3RGF0YS5wdXNoKG9iakRhdGEpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdHJldHVybiBuZXdEYXRhO1xyXG5cdH1cclxuXHJcblx0Z2VuZXJhdGVIdG1sQnlUb2tlbnNBbmREYXRhKGh0bWw6IHN0cmluZywgbGlzdERhdGE6IGFueVtdLCBsaXN0VG9rZW5zOiBhbnlbXSk6IHN0cmluZ1tdIHtcclxuXHRcdGNvbnN0IHRyYW5zbGF0ZWRDYXJkczogYW55W10gPSBbXTtcclxuXHRcdGxpc3REYXRhLmZvckVhY2goKGRhdGEpID0+IHtcclxuXHRcdFx0Y29uc3Qgb2JqVG9rZW4gPSB7fTtcclxuXHRcdFx0Y29uc3QgaHRtbFRyYW5zbGF0ZWQgPSB7IGh0bWw6IGh0bWwgfTtcclxuXHRcdFx0T2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcclxuXHRcdFx0XHRsaXN0VG9rZW5zLmZvckVhY2goKHRva2VuKSA9PiB7XHJcblx0XHRcdFx0XHRpZiAocHJvcGVydHkgPT0gdG9rZW4ua2V5LnJlcGxhY2UoJyR7JywgJycpLnJlcGxhY2UoJ30nLCAnJykpIHtcclxuXHRcdFx0XHRcdFx0b2JqVG9rZW5bdG9rZW4ua2V5XSA9IGRhdGFbcHJvcGVydHldO1xyXG5cdFx0XHRcdFx0XHRodG1sVHJhbnNsYXRlZC5odG1sID0gaHRtbFRyYW5zbGF0ZWQuaHRtbC5yZXBsYWNlKFxyXG5cdFx0XHRcdFx0XHRcdHRva2VuLmtleSxcclxuXHRcdFx0XHRcdFx0XHRkYXRhW3Byb3BlcnR5XVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdFx0dHJhbnNsYXRlZENhcmRzLnB1c2goaHRtbFRyYW5zbGF0ZWQpO1xyXG5cdFx0fSk7XHJcblx0XHRyZXR1cm4gdHJhbnNsYXRlZENhcmRzO1xyXG5cdH1cclxuXHJcblx0Z2V0TGlzdFRva2Vuc0J5U3RyaW5nKHN0cmluZ1RleHQ6IHN0cmluZyk6IGFueVtdIHtcclxuXHRcdHZhciBhcnJheVRva2VuID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwkeyhbXn1dKylcXH0vZyk7XHJcblx0XHR2YXIgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCNkYXRlW14pXStcXCkvZyk7XHJcblx0XHR2YXIgYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciA9IHN0cmluZ1RleHQubWF0Y2goL1xcI251bWJlclteKV0rXFwpL2cpO1xyXG5cdFx0dmFyIGFycmF5VG9rZW5Gb3JtYXR0ZWQgPSBbXTtcclxuXHRcdGlmIChcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZERhdGUubGVuZ3RoID4gMCAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIubGVuZ3RoID4gMFxyXG5cdFx0KSB7XHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWQgPSBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5jb25jYXQoYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlcik7XHJcblx0XHR9IGVsc2UgaWYgKGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlICYmIGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLnNsaWNlKCk7XHJcblx0XHR9IGVsc2UgaWYgKGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgJiYgYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5sZW5ndGggPiAwKSB7XHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWQgPSBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLnNsaWNlKCk7XHJcblx0XHR9XHJcblx0XHR2YXIgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuXHRcdGlmIChhcnJheVRva2VuKSB7XHJcblx0XHRcdGZvciAoY29uc3QgdG9rZW4gb2YgYXJyYXlUb2tlbikge1xyXG5cdFx0XHRcdGxldCBrZXlUeXBlOiBudW1iZXIgPSBUb2tlblNlcnZpY2UuZ2V0S2V5VHlwZSh0b2tlbik7XHJcblx0XHRcdFx0aWYgKGtleVR5cGUgPT09IG51bGwpIHtcclxuXHRcdFx0XHRcdGNvbnRpbnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR2YXIgaW5mb1Rva2VuID0geyBrZXk6IHRva2VuLCB2YWx1ZTogdG9rZW4gfTtcclxuXHRcdFx0XHRpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZCkge1xyXG5cdFx0XHRcdFx0Zm9yIChjb25zdCB0b2tlbkZvcm1hdHRlZCBvZiBhcnJheVRva2VuRm9ybWF0dGVkKSB7XHJcblx0XHRcdFx0XHRcdHZhciBpbmRleCA9IHRva2VuRm9ybWF0dGVkLmluZGV4T2YodG9rZW4pO1xyXG5cdFx0XHRcdFx0XHRpZiAoaW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdGluZm9Ub2tlbi52YWx1ZSA9IHRva2VuRm9ybWF0dGVkO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cclxuXHRcdC8vIGxldCB0b2tlbnM6IGFueVtdID0gW107XHJcblx0XHQvLyBsZXQgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgMCk7XHJcblx0XHQvLyBsZXQgY291bnQgPSAwO1xyXG5cdFx0Ly8gd2hpbGUgKGkgPj0gMCAmJiBjb3VudCA8PSAxMCkge1xyXG5cdFx0Ly8gICBsZXQgaW5mb1Rva2VuOiB7fSA9IG51bGw7XHJcblx0XHQvLyAgIGxldCBuZXh0STogbnVtYmVyID0gaTtcclxuXHRcdC8vICAgbGV0IGNoYXJhY3RlciA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKGksIChpICsgMSkpO1xyXG5cdFx0Ly8gICBpZiAoY2hhcmFjdGVyID09IFwiJFwiKSB7XHJcblx0XHQvLyAgICAgbGV0IG5leHRDaGFyYWN0ZXIgPSBzdHJpbmdUZXh0LnN1YnN0cmluZygoaSArIDEpLCAoaSArIDIpKTtcclxuXHRcdC8vICAgICAvLyBUaGUgbmV4dCBjaGFyYWN0ZXIgbmVlZCB0byBiZSBhIHsgc2lnblxyXG5cdFx0Ly8gICAgIGlmIChuZXh0Q2hhcmFjdGVyICE9IFwie1wiKSB7XHJcblx0XHQvLyAgICAgICBpID0gdGhpcy5uZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0LCBuZXh0SSArIDEpO1xyXG5cdFx0Ly8gICAgICAgY29udGludWU7XHJcblx0XHQvLyAgICAgfVxyXG5cdFx0Ly8gICAgIGxldCBrZXlUb2tlbjogc3RyaW5nID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoaSwgc3RyaW5nVGV4dC5pbmRleE9mKFwifVwiLCBpKSArIDEpO1xyXG5cdFx0Ly8gICAgIC8vIElmIHRoZSB0b2tlbiBoYXZlIGEgdmFsaWQga2V5IHR5cGVcclxuXHRcdC8vICAgICBsZXQga2V5VHlwZTogbnVtYmVyID0gVG9rZW5TZXJ2aWNlLmdldEtleVR5cGUoa2V5VG9rZW4ucmVwbGFjZShcIntcIiwgXCJcIikucmVwbGFjZShcIn1cIiwgXCJcIikpO1xyXG5cdFx0Ly8gICAgIGlmIChrZXlUeXBlID09PSBudWxsKSB7XHJcblx0XHQvLyAgICAgICBpID0gdGhpcy5uZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0LCBuZXh0SSArIDEpO1xyXG5cdFx0Ly8gICAgICAgY29udGludWU7XHJcblx0XHQvLyAgICAgfVxyXG5cdFx0Ly8gICAgIGluZm9Ub2tlbiA9IHtcclxuXHRcdC8vICAgICAgIGtleToga2V5VG9rZW4sXHJcblx0XHQvLyAgICAgICB2YWx1ZToga2V5VG9rZW5cclxuXHRcdC8vICAgICB9O1xyXG5cdFx0Ly8gICAgIG5leHRJID0gc3RyaW5nVGV4dC5pbmRleE9mKFwifVwiLCBpKTtcclxuXHRcdC8vICAgfSBlbHNlIHtcclxuXHRcdC8vICAgICBsZXQgbmV4dFNpZ246IG51bWJlciA9IHN0cmluZ1RleHQuaW5kZXhPZihcIiRcIiwgaSk7XHJcblx0XHQvLyAgICAgLy8gV2UgaW5seSBzdXBwb3J0ICNkYXRlKCQgYW5kICNudW1iZXIoJCBpbiB0aGlzIDIgc2NlbmFyaW9zIHRoZSBsZW5naHQgY2FuJ3QgYmUgbW9yZSB0aGFuIDEwIGNoYXJhY3RlcnNcclxuXHRcdC8vICAgICBpZiAobmV4dFNpZ24gPCAwIHx8IChuZXh0U2lnbiAtIGkpID4gMTApIHtcclxuXHRcdC8vICAgICAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJICsgMSk7XHJcblx0XHQvLyAgICAgICBjb250aW51ZTtcclxuXHRcdC8vICAgICB9XHJcblx0XHQvLyAgICAgbGV0IGtleVRva2VuOiBzdHJpbmcgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyhzdHJpbmdUZXh0LmluZGV4T2YoXCIkXCIsIGkpLCBzdHJpbmdUZXh0LmluZGV4T2YoXCJ9XCIsIGkpICsgMSk7XHJcblx0XHQvLyAgICAgbGV0IHZhbHVlVG9rZW46IHN0cmluZyA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKGksIHN0cmluZ1RleHQuaW5kZXhPZihcIilcIiwgaSkgKyAxKTtcclxuXHRcdC8vICAgICBpbmZvVG9rZW4gPSB7XHJcblx0XHQvLyAgICAgICBrZXk6IGtleVRva2VuLFxyXG5cdFx0Ly8gICAgICAgdmFsdWU6IHZhbHVlVG9rZW5cclxuXHRcdC8vICAgICB9O1xyXG5cdFx0Ly8gICAgIG5leHRJID0gc3RyaW5nVGV4dC5pbmRleE9mKFwiKVwiLCBpKTtcclxuXHRcdC8vICAgfVxyXG5cdFx0Ly8gICB0b2tlbnMucHVzaChpbmZvVG9rZW4pO1xyXG5cdFx0Ly8gICBpID0gdGhpcy5uZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0LCBuZXh0SSk7XHJcblx0XHQvLyAgIGNvdW50Kys7XHJcblx0XHQvLyB9XHJcblx0XHQvLyByZXR1cm4gdG9rZW5zO1xyXG5cdH1cclxuXHJcblx0bmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dDogc3RyaW5nLCBuZXh0STogbnVtYmVyKTogbnVtYmVyIHtcclxuXHRcdGxldCB0b2tlbkRvbGxhclNpZ246IG51bWJlciA9IHN0cmluZ1RleHQuaW5kZXhPZignJCcsIG5leHRJKTtcclxuXHRcdGxldCB0b2tlbk51bVNpZ246IG51bWJlciA9IHN0cmluZ1RleHQuaW5kZXhPZignIycsIG5leHRJKTtcclxuXHRcdGxldCBpOiBudW1iZXIgPVxyXG5cdFx0XHR0b2tlbkRvbGxhclNpZ24gPCAwICYmIHRva2VuTnVtU2lnbiA+PSAwXHJcblx0XHRcdFx0PyB0b2tlbk51bVNpZ25cclxuXHRcdFx0XHQ6IHRva2VuTnVtU2lnbiA8IDAgJiYgdG9rZW5Eb2xsYXJTaWduID49IDBcclxuXHRcdFx0XHQ/IHRva2VuRG9sbGFyU2lnblxyXG5cdFx0XHRcdDogdG9rZW5Eb2xsYXJTaWduIDwgdG9rZW5OdW1TaWduXHJcblx0XHRcdFx0PyB0b2tlbkRvbGxhclNpZ25cclxuXHRcdFx0XHQ6IHRva2VuTnVtU2lnbjtcclxuXHRcdHJldHVybiBpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSXQgcmV1c2VzIHJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdFB1YmxpYyBidXQgc2V0IGFsbCBrZXlzIGxvYmplY3R0b2tlbnMgYXMgbG93ZXJjYXNlXHJcblx0ICogQHBhcmFtIHRva2VuTmFtZVxyXG5cdCAqIEBwYXJhbSBmb3JtdWxhXHJcblx0ICogQHBhcmFtIGxPYmplY3RUb2tlbnNcclxuXHQgKi9cclxuXHRyZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3RQdWJsaWMoXHJcblx0XHR0b2tlbk5hbWU6IHN0cmluZyxcclxuXHRcdGZvcm11bGE6IHN0cmluZyxcclxuXHRcdGxPYmplY3RUb2tlbnM6IGFueVtdXHJcblx0KTogc3RyaW5nIHtcclxuXHRcdGxldCBsRGF0YU9yZzogYW55W10gPSBbXTtcclxuXHRcdGlmIChsT2JqZWN0VG9rZW5zKSB7XHJcblx0XHRcdGZvciAobGV0IGRhdGFGb3JtIGluIGxPYmplY3RUb2tlbnMpIHtcclxuXHRcdFx0XHRsRGF0YU9yZ1tkYXRhRm9ybS50b0xvd2VyQ2FzZSgpXSA9IGxPYmplY3RUb2tlbnNbZGF0YUZvcm1dO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gdGhpcy5yZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3QodG9rZW5OYW1lLCBmb3JtdWxhLCBsRGF0YU9yZyk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEBwYXJhbSB0b2tlbk5hbWUgdG9rZW4gbmFtZVxyXG5cdCAqIEBwYXJhbSBmb3JtdWxhIFN0cmluZyB3aXRoIHRoZSBmb3JtdWxhIHRvIGV4ZWN1dGVcclxuXHQgKiBAcGFyYW0gbE9iamVjdFRva2VucyBMaXN0IG9mIHRva2VucyB3aXRoIHRoZSB2YWx1ZXMgdG8gcmVwbGFjZVxyXG5cdCAqL1xyXG5cdHJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdCh0b2tlbk5hbWU6IHN0cmluZywgZm9ybXVsYTogc3RyaW5nLCBsT2JqZWN0VG9rZW5zOiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0aWYgKCFmb3JtdWxhIHx8IGZvcm11bGEubGVuZ3RoID09IDApIHtcclxuXHRcdFx0dGhyb3cge1xyXG5cdFx0XHRcdG1lc3NhZ2U6ICdMYSBmb3JtdWxhIGRlbCB0b2tlbiAnICsgdG9rZW5OYW1lICsgJyBlc3RhIHZhY8OtYScsXHJcblx0XHRcdFx0dGl0bGU6ICdBbGVydGEhJyxcclxuXHRcdFx0XHRlcnJvcjpcclxuXHRcdFx0XHRcdCdMYSBmb3JtdWxhIGRlbCB0b2tlbiAnICsgdG9rZW5OYW1lICsgJyBlc3RhIHZhY8OtYS4gW2Zvcm11bGFbJyArIGZvcm11bGEgKyAnXV0nXHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0XHRsZXQgcmVwbGFjZWRUb2tlbnM6IHN0cmluZyA9IGZvcm11bGEudG9TdHJpbmcoKTtcclxuXHRcdGlmIChyZXBsYWNlZFRva2Vucy5zdGFydHNXaXRoKCdmaWxlOi8vJykpIHtcclxuXHRcdFx0cmV0dXJuIHJlcGxhY2VkVG9rZW5zO1xyXG5cdFx0fVxyXG5cdFx0Ly8gRmluZCB0aGUgdG9rZW5zIGluIHRoZSBmb3JtdWxhXHJcblx0XHRsZXQgdG9rZW5zQXJyYXk6IGFueVtdID0gdGhpcy5nZXRMaXN0VG9rZW5zQnlTdHJpbmcocmVwbGFjZWRUb2tlbnMpO1xyXG5cdFx0aWYgKHRva2Vuc0FycmF5Lmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdHJldHVybiByZXBsYWNlZFRva2VucztcclxuXHRcdH1cclxuXHRcdC8vIElmIHRoZXJlIGFueSB0b2tlbiwgdHJ5IHRvIHJlcGxhY2VcclxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0bGV0IG9iamVjdFRva2VuID1cclxuXHRcdFx0XHRsT2JqZWN0VG9rZW5zW3Rva2Vuc0FycmF5W2ldLmtleV0gIT09IHVuZGVmaW5lZFxyXG5cdFx0XHRcdFx0PyBsT2JqZWN0VG9rZW5zW3Rva2Vuc0FycmF5W2ldLmtleV1cclxuXHRcdFx0XHRcdDogbnVsbDtcclxuXHRcdFx0bGV0IGNsZWFyS2V5O1xyXG5cdFx0XHRpZiAob2JqZWN0VG9rZW4gPT0gbnVsbCkge1xyXG5cdFx0XHRcdGNsZWFyS2V5ID0gdG9rZW5zQXJyYXlbaV0ua2V5LnJlcGxhY2UoJyR7JywgJycpLnJlcGxhY2UoJ30nLCAnJykudG9Mb3dlckNhc2UoKTtcclxuXHRcdFx0XHRvYmplY3RUb2tlbiA9XHJcblx0XHRcdFx0XHRsT2JqZWN0VG9rZW5zW2NsZWFyS2V5XSAhPT0gdW5kZWZpbmVkID8gbE9iamVjdFRva2Vuc1tjbGVhcktleV0gOiBudWxsO1xyXG5cclxuXHRcdFx0XHRpZiAob2JqZWN0VG9rZW4gPT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0Y2xlYXJLZXkgPSB0b2tlbnNBcnJheVtpXS5rZXlcclxuXHRcdFx0XHRcdFx0LnJlcGxhY2UoJ3snLCAnJylcclxuXHRcdFx0XHRcdFx0LnJlcGxhY2UoJ30nLCAnJylcclxuXHRcdFx0XHRcdFx0LnNwbGl0KCdfJylbMV1cclxuXHRcdFx0XHRcdFx0LnRvTG93ZXJDYXNlKCk7XHJcblx0XHRcdFx0XHRvYmplY3RUb2tlbiA9XHJcblx0XHRcdFx0XHRcdGxPYmplY3RUb2tlbnNbY2xlYXJLZXldICE9PSB1bmRlZmluZWQgPyBsT2JqZWN0VG9rZW5zW2NsZWFyS2V5XSA6IG51bGw7XHJcblx0XHRcdFx0XHRpZiAob2JqZWN0VG9rZW4gPT09IG51bGwgfHwgb2JqZWN0VG9rZW4gPT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBhcnJheUtleSA9IHRva2Vuc0FycmF5W2ldLmtleVxyXG5cdFx0XHRcdFx0XHRcdC5yZXBsYWNlKCd7JywgJycpXHJcblx0XHRcdFx0XHRcdFx0LnJlcGxhY2UoJ30nLCAnJylcclxuXHRcdFx0XHRcdFx0XHQuc3BsaXQoJ18nKVsxXVxyXG5cdFx0XHRcdFx0XHRcdC5zcGxpdCgnLicpO1xyXG5cdFx0XHRcdFx0XHRpZiAoYXJyYXlLZXkubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdGxldCB2YWx1ZSA9IGxPYmplY3RUb2tlbnM7XHJcblx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5S2V5Lmxlbmd0aDsgaW5kZXgrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0bGV0IGVsZW1lbnQgPSBhcnJheUtleVtpbmRleF07XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoaW5kZXggPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRlbGVtZW50ID0gZWxlbWVudC50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWUgPSB2YWx1ZVtlbGVtZW50XTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0b2JqZWN0VG9rZW4gPSB2YWx1ZTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAob2JqZWN0VG9rZW4gPT0gbnVsbCkge1xyXG5cdFx0XHRcdC8vIElmIG5vdCBmaW5kIHRoZSB0b2tlbiwgYnkgZGVmYXVsdCBwdXQgYW4gZW1wdHkgc3RyaW5nXHJcblx0XHRcdFx0LyppZiAoVG9rZW5TZXJ2aWNlLmV4Y2x1ZGVkVG9rZW4uaW5kZXhPZihjbGVhcktleSkgPT09IC0xKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFxyXG5cdFx0XHRcdFx0XHQnRWwgdG9rZW4gJyArIHRva2Vuc0FycmF5W2ldLnZhbHVlICsgJyBubyBmdWUgZW5jb250cmFkby4nLFxyXG5cdFx0XHRcdFx0XHRsT2JqZWN0VG9rZW5zLFxyXG5cdFx0XHRcdFx0XHR0b2tlbnNBcnJheVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHR9Ki9cclxuXHRcdFx0XHRvYmplY3RUb2tlbiA9ICcnO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChvYmplY3RUb2tlbiAhPSBudWxsKSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlOiBhbnkgPSBOdW1iZXIob2JqZWN0VG9rZW4pXHJcblx0XHRcdFx0XHQ/IG9iamVjdFRva2VuXHJcblx0XHRcdFx0XHQ6IEFycmF5LmlzQXJyYXkob2JqZWN0VG9rZW4pXHJcblx0XHRcdFx0XHQ/IEpTT04uc3RyaW5naWZ5KG9iamVjdFRva2VuKVxyXG5cdFx0XHRcdFx0OiBcIidcIiArIG9iamVjdFRva2VuICsgXCInXCI7XHJcblx0XHRcdFx0cmVwbGFjZWRUb2tlbnMgPSB0aGlzLnJlcGxhY2VUb2tlbihyZXBsYWNlZFRva2VucywgdG9rZW5zQXJyYXlbaV0udmFsdWUsIHZhbHVlKTtcclxuXHRcdFx0XHQvLyB9IGVsc2Uge1xyXG5cdFx0XHRcdC8vICAgY29uc29sZS5lcnJvcihsT2JqZWN0VG9rZW5zLCB0b2tlbnNBcnJheSk7XHJcblx0XHRcdFx0Ly8gICB0aHJvdyB7XHJcblx0XHRcdFx0Ly8gICAgIG1lc3NhZ2U6IFwiTm8gc2UgZW5jb250csOzIHZhbG9yIHBhcmEgdW4gdG9rZW5cIixcclxuXHRcdFx0XHQvLyAgICAgdGl0bGU6IFwiQWxlcnRhIVwiLFxyXG5cdFx0XHRcdC8vICAgICBlcnJvcjogXCJFbCB0b2tlbiBcIiArIHRva2Vuc0FycmF5W2ldLnZhbHVlICsgXCIgbm8gZnVlIGVuY29udHJhZG8uXCJcclxuXHRcdFx0XHQvLyAgIH07XHJcblx0XHRcdFx0Ly9cclxuXHRcdFx0XHQvLyBTaSBlcyBsYSB1bHRpbWEgaXRlcmFjaW9uIHkgbGEgZm9ybXVsYSB0aWVuZSBbIGVzIHBvcnF1ZSB0aWVuZSB1biBhcnJheSBlbiBlbCB2YWxvciBxdWUgcmVzb2x2aW8gZWwgdG9rZW5cclxuXHRcdFx0XHRpZiAoaSA9PSB0b2tlbnNBcnJheS5sZW5ndGggLSAxICYmIHJlcGxhY2VkVG9rZW5zLmluY2x1ZGVzKCdbJykpIHtcclxuXHRcdFx0XHRcdC8vIFNlIHBvbmVuIHRvZG9zIGxvcyBvcGVyYW5kb3MgY29tbyBlbGVtZW50b3MgZW4gdW4gYXJyYXkgWydleHByZXNpb24gYScsICcmJicsICdFeHByZXNpb24gQiddXHJcblx0XHRcdFx0XHRsZXQgZm9ybUV4cHJlc3Npb25zOiBzdHJpbmdbXSA9IHJlcGxhY2VkVG9rZW5zLnNwbGl0KC8gKFxcfFxcfHwmJikgLyk7XHJcblx0XHRcdFx0XHRsZXQgbEF1eGZvcm1FeHByZXNzaW9uOiBzdHJpbmdbXSA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9ybUV4cHJlc3Npb25zLmZvckVhY2goKGV4cHJlc3Npb246IHN0cmluZykgPT4ge1xyXG5cdFx0XHRcdFx0XHRpZiAoZXhwcmVzc2lvbi5jaGFyQXQoMCkgPT0gJ1snKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IGlzVGFnRm91bmQ6IHN0cmluZyA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdGlzVGFnRm91bmQgPSB0aGlzLmZpbmRUYWcoZXhwcmVzc2lvbik7XHJcblx0XHRcdFx0XHRcdFx0bEF1eGZvcm1FeHByZXNzaW9uLnB1c2goaXNUYWdGb3VuZCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0bEF1eGZvcm1FeHByZXNzaW9uLnB1c2goZXhwcmVzc2lvbik7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0cmVwbGFjZWRUb2tlbnMgPSBsQXV4Zm9ybUV4cHJlc3Npb24uam9pbignICcpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJlcGxhY2VkVG9rZW5zO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTUV0b2RvIHF1ZSB0ZW5pZW5kbyB1bmEgZXhwcmVzaW9uIGRlIGxhIGZvcm1hIFsndGFnMScsICd0YWcyJ109PXRhZzNcclxuXHQgKiBldmFsdWEgc2kgdGFnMyBoYWNlIHBhcnRlIGRlbCBhcnJheSBzaSB0aWVuZSBlbCBvcGVyYWRvciA9PS5cclxuXHQgKiBTaSB0aWVuZSBlbCBvcGVyYWRvciAhPSBleGFtaW5hIHF1ZSB0YWczIG5vIGhhZ2EgcGFydGUgZGVsIGFycmF5K1xyXG5cdCAqXHJcblx0ICogQHBhcmFtIGV4cHJlc3Npb24gT3BlcmFuZG8gcXVlIGV2YWx1YSB0YWcuIEVzIGRlIGxhIGZvcm1hIFsndGFnMScsICd0YWcyJ109PXRhZzNcclxuXHQgKiBAcmV0dXJucyBSZXRvcm5hICd0cnVlJyBvICdmYWxzZScgZW4gc3RyaW5nIHF1ZSBkZXNwdWVzIHNlcmEgcGFzYWRvIGEgdW4gZXZhbCgpXHJcblx0ICogbWFzIGFkZWxhbnRlIGVuIGVsIGZsdWpvXHJcblx0ICovXHJcblx0ZmluZFRhZyhleHByZXNzaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0bGV0IHJlZ2V4T3BlcmF0b3IgPSBuZXcgUmVnRXhwKCcoPT09fD09fCE9PXwhPSknKTtcclxuXHRcdC8vIFJldG9ybmEgZWwgb3BlcmFkb3JcclxuXHRcdGxldCBvcGVyYXRvcjogc3RyaW5nW10gPSBleHByZXNzaW9uLm1hdGNoKHJlZ2V4T3BlcmF0b3IpO1xyXG5cdFx0Ly8gU2kgbm8gZW5jdWVudHJhIHVuIG9wZXJhZG9yIHNlZ3VuIGVsIHBhdHJvbiByZXRvcm5hICdmYWxzZSdcclxuXHRcdC8vIHBhcmEgZXZpdGFyIHJlc3VsdGFkb3MgaW5lc3BlcmFkb3NcclxuXHRcdGlmIChvcGVyYXRvciA9PSBudWxsKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ05vIHNlIGVuY29udHJvIHVuIG9wZXJhZG9yIHBlcm1pdGlkbyBwYXJhIGxhIGV4cHJlc2lvbicpO1xyXG5cdFx0XHRyZXR1cm4gJ2ZhbHNlJztcclxuXHRcdH1cclxuXHRcdC8vIFNlcGFyYSBsYSBzZW50ZW5jaWEgcG9yIGVsIG9wZXJhZG9yXHJcblx0XHQvLyBMYSBwcmltZXJhIHBhcnRlIGVzIGVsIHZhbG9yIHBvciBlbCBjdWFsIHNlIHJlbXBsYXphIGVsIHRva2VuIHF1ZSBlcyB1biBhcnJheSBlbiBzdHJpbmcgXCJbJ2EnLCAnYiddXCJcclxuXHRcdC8vIEVsIHNlZ3VuZG8gZXMgZWwgdmFsb3IgY29uIGVsIGN1YWwgc2UgdmEgYSBjb21wYXJhclxyXG5cdFx0bGV0IHZhbHVlVG9rZW4sIHZhbHVlVG9Db21wYXJlO1xyXG5cdFx0W3ZhbHVlVG9rZW4sIHZhbHVlVG9Db21wYXJlXSA9IGV4cHJlc3Npb24uc3BsaXQob3BlcmF0b3JbMF0pO1xyXG5cdFx0Ly8gU2UgbGltcGlhIGVsIHN0cmluZyBjb3JyZXNwb25kaWVudGUgYWwgYXJyYXkgcGFyYSBxdWUgbG9zIGVsZW1lbnRvcyBxdWVkZW4gc2VwYXJhZG9zIHBvciBcIixcIlxyXG5cdFx0dmFsdWVUb2tlbiA9IHZhbHVlVG9rZW4ucmVwbGFjZSgvW15hLXpBLVowLTkgLF0vZywgJycpO1xyXG5cdFx0Ly8gU2kgbm8gaGF5IHRhZ3MgYXNvY2lhZG9zIGFsIHJlZ2lzdHJvIHNlIGRldnVlbHZlICdmYWxzZSdcclxuXHRcdGlmICghdmFsdWVUb2tlbikge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKCdObyBoYXkgdGFncyBhc29jaWFkb3MgYSBlc3RhIGFwbGljYWNpw7NuJyk7XHJcblx0XHRcdHJldHVybiAnZmFsc2UnO1xyXG5cdFx0fVxyXG5cdFx0Ly8gU2UgbGltcGlhIGVsIHN0cmluZyBjb3JyZXNwb25kaWVudGUgYWwgdmFsb3IgcG9yIGNvbXBhcmFyXHJcblx0XHR2YWx1ZVRvQ29tcGFyZSA9IHZhbHVlVG9Db21wYXJlLnJlcGxhY2UoL1teYS16QS1aMC05IF0vZywgJycpO1xyXG5cdFx0Ly8gRWwgc3RyaW5nIGNvcnJlc3BvbmRpZW50ZSBhbCBhcnJheSBwYXNhIGEgc2VyIHRpcG8gYXJyYXlcclxuXHRcdHZhbHVlVG9rZW4gPSB2YWx1ZVRva2VuLnNwbGl0KCcsJyk7XHJcblxyXG5cdFx0Ly8gU2UgdHJhdGEgZGUgY29uc3RhdGFyIHNpIGVsIHZhbG9yIGEgY29tcGFyYXIgc2UgZW5jdWV0cmEgbyBubyBkZW50cm9cclxuXHRcdC8vIFNpIGVsIG9wZXJhZG9yIHF1ZSBzZSBlbmNvbnRybyA9PSByZXR1cm5hIHRydWUgc2kgbG8gZW5jdWVudHJhXHJcblx0XHRsZXQgaXNUYWdGb3VuZDogYm9vbGVhbiA9IHRydWU7XHJcblx0XHRzd2l0Y2ggKG9wZXJhdG9yWzBdKSB7XHJcblx0XHRcdGNhc2UgJz09JzpcclxuXHRcdFx0XHRpc1RhZ0ZvdW5kID0gdmFsdWVUb2tlbi5zb21lKCh0YWcpID0+IHRhZyA9PSB2YWx1ZVRvQ29tcGFyZSk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgJz09PSc6XHJcblx0XHRcdFx0aXNUYWdGb3VuZCA9IHZhbHVlVG9rZW4uc29tZSgodGFnKSA9PiB0YWcgPT09IHZhbHVlVG9Db21wYXJlKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSAnIT09JzpcclxuXHRcdFx0XHRpc1RhZ0ZvdW5kID0gdmFsdWVUb2tlbi5zb21lKCh0YWcpID0+IHRhZyAhPT0gdmFsdWVUb0NvbXBhcmUpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlICchPSc6XHJcblx0XHRcdFx0aXNUYWdGb3VuZCA9IHZhbHVlVG9rZW4uc29tZSgodGFnKSA9PiB0YWcgIT0gdmFsdWVUb0NvbXBhcmUpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cdFx0ZXhwcmVzc2lvbiA9IGlzVGFnRm91bmQgPyAndHJ1ZScgOiAnZmFsc2UnO1xyXG5cdFx0cmV0dXJuIGV4cHJlc3Npb247XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcnkgdG8gZXZhbCB0aGUgZm9ybXVsYSBkZXBlbmQgb2YgdGhlIHR5cGUgb2YgZmllbGRzLlxyXG5cdCAqIEBwYXJhbSBsU3RhdGljVG9rZW5cclxuXHQgKiBAcGFyYW0gZm9ybXVsYU5hbWVcclxuXHQgKiBAcGFyYW0gZm9ybXVsYVxyXG5cdCAqL1xyXG5cdHZhbGlkYXRlRm9ybXVsYShsU3RhdGljVG9rZW46IGFueSwgZm9ybXVsYU5hbWU6IHN0cmluZywgZm9ybXVsYTogc3RyaW5nKTogYm9vbGVhbiB7XHJcblx0XHRsZXQgZXZhbEZvcm11bGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdC8vIFRvIHZhbGlkYXRlIHRoZSBmb3JtdWxhLCBmaXJzdCBvcmdhbml6ZSB0aGUgaW5mbyB0byBrZXkgLSB2YWx1ZSBhcnJheVxyXG5cdFx0bGV0IG9iamVjdFRva2VuczogYW55W10gPSBbXTtcclxuXHRcdGZvciAobGV0IHBhbmVsIG9mIGxTdGF0aWNUb2tlbikge1xyXG5cdFx0XHRmb3IgKGxldCBncm91cFRva2VuIG9mIHBhbmVsLnZhbHVlKSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgc3RhdGljVG9rZW4gb2YgZ3JvdXBUb2tlbi52YWx1ZSkge1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgYXJyYXlUb2tlbkluZm8gb2Ygc3RhdGljVG9rZW4pIHtcclxuXHRcdFx0XHRcdFx0b2JqZWN0VG9rZW5zW2FycmF5VG9rZW5JbmZvLmtleV0gPSBhcnJheVRva2VuSW5mby5vYmplY3RcclxuXHRcdFx0XHRcdFx0XHQ/IGFycmF5VG9rZW5JbmZvLm9iamVjdC50eXBlID09ICdudW1iZXInXHJcblx0XHRcdFx0XHRcdFx0XHQ/ICcwJ1xyXG5cdFx0XHRcdFx0XHRcdFx0OiAnJ1xyXG5cdFx0XHRcdFx0XHRcdDogJyc7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHR0cnkge1xyXG5cdFx0XHRmb3JtdWxhID0gdGhpcy5yZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3QoZm9ybXVsYU5hbWUsIGZvcm11bGEsIG9iamVjdFRva2Vucyk7XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHQvL2NvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG5cdFx0XHR0aHJvdyBlcnJvcjtcclxuXHRcdH1cclxuXHRcdGlmIChmb3JtdWxhICE9PSBudWxsKSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0bGV0IHJlc3VsdCA9IGZvcm11bGEuc3RhcnRzV2l0aCgnZmlsZTovLycpID8gZm9ybXVsYSA6IGV2YWwoZm9ybXVsYSk7XHJcblx0XHRcdFx0ZXZhbEZvcm11bGEgPSB0cnVlO1xyXG5cdFx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdFx0Ly9jb25zb2xlLmVycm9yKFwiRXJyb3IgZXZhbHVhdGluZyB0aGUgZm9ybXVsYVwiLCBlKTtcclxuXHRcdFx0XHR0aHJvdyB7XHJcblx0XHRcdFx0XHRtZXNzYWdlOiAnTGEgZm9ybXVsYSBubyBmdWUgcG9zaWJsZSBldmFsdWFyJyxcclxuXHRcdFx0XHRcdHRpdGxlOiAnQWxlcnRhIScsXHJcblx0XHRcdFx0XHRlcnJvcjogZVxyXG5cdFx0XHRcdH07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBldmFsRm9ybXVsYTtcclxuXHR9XHJcblxyXG5cdGdldENvbmZpZ0Nsb25pbmdUb2tlbk1hcChvbGRQUFA6IG51bWJlciwgbmV3UFBQOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vZ2V0Q29uZmlnQ2xvbmluZ1Rva2VuTWFwJyxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKVxyXG5cdFx0XHRcdFx0LnNldCgnb2xkUFBQJywgb2xkUFBQLnRvU3RyaW5nKCkpXHJcblx0XHRcdFx0XHQuc2V0KCduZXdQUFAnLCBuZXdQUFAudG9TdHJpbmcoKSlcclxuXHRcdFx0fVxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIl19
|
|
1331
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUErQixVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQU1sRCxNQUFNLE9BQU8sWUFBWTtJQW9XeEIsWUFDZ0MsV0FBVyxFQUNsQyxVQUFzQixFQUN0QixXQUF3QixFQUN4QixZQUEwQjtRQUhILGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDaEMsQ0FBQztJQUVKLGlGQUFpRjtJQUNqRix1QkFBdUIsQ0FBQyxVQUFVO1FBQ2pDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDdEMsMEJBQTBCO1lBQzFCLElBQUksZ0JBQWdCLEdBQVUsSUFBSSxDQUFDO1lBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDdEQsSUFBSSxFQUFFLENBQUMsVUFBZSxFQUFFLEVBQUU7b0JBQ3pCLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQzFCLEtBQUssTUFBTSxLQUFLLElBQUksVUFBVSxFQUFFOzRCQUMvQixJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7NEJBRXBCLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDOzRCQUUvRCxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dDQUNwRCxLQUFLLE1BQU0sVUFBVSxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUU7b0NBQzFDLElBQUksVUFBVSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0NBQzlELEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxDQUFDLFVBQVUsRUFBRTs0Q0FDOUMsSUFBSSxTQUFTLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnREFDdEQsS0FBSyxNQUFNLFdBQVcsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO29EQUM1QyxJQUNDLFdBQVcsQ0FBQyxVQUFVO3dEQUN0QixXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQ2hDO3dEQUNELEtBQUssTUFBTSxRQUFRLElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRTs0REFDOUMsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtnRUFDaEMsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDOzZEQUMzQjt5REFDRDtxREFDRDtpREFDRDs2Q0FDRDt5Q0FDRDtxQ0FDRDtpQ0FDRDs2QkFDRDt5QkFDRDtxQkFDRDtvQkFFRCxJQUFJLElBQUksR0FBUSxVQUFVLENBQUM7b0JBQzNCLElBQ0MsQ0FBQyxJQUFJO3dCQUNMLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDUixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVO3dCQUNuQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLFVBQVUsRUFDL0I7d0JBQ0QsaUNBQWlDO3dCQUNqQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztxQkFDMUI7b0JBQ0QsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO29CQUN0QixLQUFLLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTt3QkFDMUIsSUFBSSxhQUFrQixDQUFDO3dCQUN2QixJQUFJLFVBQVUsR0FBVSxFQUFFLENBQUM7d0JBQzNCLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRTs0QkFDeEIsYUFBYSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7eUJBQ3BDOzZCQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRTs0QkFDNUIsYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7eUJBQ2pDO3dCQUNELElBQUksYUFBYSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFOzRCQUN4RCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7Z0NBQ3JCLEtBQUssRUFBRTtvQ0FDTixHQUFHLEVBQUUsWUFBWSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7b0NBQ2xELEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztvQ0FDckIsTUFBTSxFQUFFLFFBQVE7aUNBQ2hCO2dDQUNELEtBQUssRUFBRSxFQUFFOzZCQUNULENBQUMsQ0FBQzs0QkFDSCxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSztnQ0FDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUNyQixVQUFVLEVBQ1YsYUFBYSxFQUNiLElBQUksRUFDSixLQUFLLEVBQ0wsSUFBSSxDQUNKLENBQUM7eUJBQ0g7cUJBQ0Q7b0JBQ0QsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQzNCLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ2hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDZixDQUFDO2FBQ0QsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQscUJBQXFCLENBQUMsTUFBYztRQUNuQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3RDLDBCQUEwQjtZQUMxQixJQUFJLGdCQUFnQixHQUFVLElBQUksQ0FBQztZQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQ3pDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxJQUFJLEdBQVEsTUFBTSxDQUFDO2dCQUN2QixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUN0QixPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztpQkFDMUI7Z0JBQ0QsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixLQUFLLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtvQkFDMUIsSUFBSSxhQUFrQixDQUFDO29CQUN2QixJQUFJLFVBQVUsR0FBVSxFQUFFLENBQUM7b0JBQzNCLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRTt3QkFDeEIsYUFBYSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7cUJBQ3BDO3lCQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRTt3QkFDNUIsYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7cUJBQ2pDO29CQUNELElBQUksYUFBYSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUN4RCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7NEJBQ3JCLEtBQUssRUFBRTtnQ0FDTixHQUFHLEVBQUUsWUFBWSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0NBQ2xELEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztnQ0FDckIsTUFBTSxFQUFFLFFBQVE7NkJBQ2hCOzRCQUNELEtBQUssRUFBRSxFQUFFO3lCQUNULENBQUMsQ0FBQzt3QkFDSCxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSzs0QkFDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUNyQixVQUFVLEVBQ1YsYUFBYSxFQUNiLElBQUksRUFDSixLQUFLLEVBQ0wsSUFBSSxDQUNKLENBQUM7cUJBQ0g7aUJBQ0Q7Z0JBQ0QsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDM0IsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2YsQ0FBQyxDQUNELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxpRkFBaUY7SUFDakYsdUJBQXVCLENBQUMsVUFBVTtRQUNqQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3RDLDBCQUEwQjtZQUMxQixJQUFJLGlCQUFpQixHQUFVLElBQUksQ0FBQztZQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQ3JELENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxJQUFJLEdBQVEsTUFBTSxDQUFDO2dCQUN2QixJQUNDLENBQUMsSUFBSTtvQkFDTCxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ1IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVTtvQkFDbkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxVQUFVLEVBQy9CO29CQUNELGlDQUFpQztvQkFDakMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7aUJBQzNCO2dCQUNELGlCQUFpQixHQUFHLEVBQUUsQ0FBQztnQkFDdkIsS0FBSyxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7b0JBQzFCLElBQUksYUFBa0IsQ0FBQztvQkFDdkIsSUFBSSxVQUFVLEdBQVUsRUFBRSxDQUFDO29CQUMzQixJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUU7d0JBQ3hCLGFBQWEsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO3FCQUNwQzt5QkFBTSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUU7d0JBQzVCLGFBQWEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO3FCQUNqQztvQkFDRCxJQUFJLGFBQWEsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTt3QkFDeEQsaUJBQWlCLENBQUMsSUFBSSxDQUFDOzRCQUN0QixLQUFLLEVBQUU7Z0NBQ04sR0FBRyxFQUFFLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dDQUNsRCxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0NBQ3JCLE1BQU0sRUFBRSxRQUFROzZCQUNoQjs0QkFDRCxLQUFLLEVBQUUsRUFBRTt5QkFDVCxDQUFDLENBQUM7d0JBQ0gsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUs7NEJBQ3BELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUMxRDtpQkFDRDtnQkFDRCxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUM1QixDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDZixDQUFDLENBQ0QsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxrQkFBa0IsQ0FBQyxVQUFpQixFQUFFLElBQVMsRUFBRSxTQUFpQjtRQUNqRSxLQUFLLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtZQUMxQixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO2dCQUM5QixVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzFCO2lCQUFNLElBQUksUUFBUSxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFO2dCQUNuRCxJQUFJLGFBQWtCLENBQUM7Z0JBQ3ZCLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRTtvQkFDeEIsYUFBYSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7aUJBQ3BDO3FCQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRTtvQkFDNUIsYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7aUJBQ2pDO2dCQUNELFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUMzRTtTQUNEO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQkFBaUIsQ0FDaEIsVUFBaUIsRUFDakIsSUFBUyxFQUNULFNBQWlCLEVBQ2pCLFFBQWlCLEVBQ2pCLFdBQW1CO1FBRW5CLEtBQUssSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO1lBQzFCLG9DQUFvQztZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7Z0JBQzdFLElBQUksYUFBa0IsQ0FBQztnQkFDdkIsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFO29CQUN4QixhQUFhLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQztvQkFDcEMsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTt3QkFDakMsUUFBUSxHQUFHLElBQUksQ0FBQzt3QkFDaEIsV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUM7cUJBQzNCO2lCQUNEO3FCQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRTtvQkFDNUIsYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7aUJBQ2pDO2dCQUNELElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtvQkFDL0MsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7aUJBQzNCO2dCQUNELFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQ2xDLFVBQVUsRUFDVixhQUFhLEVBQ2IsU0FBUyxFQUNULFFBQVEsRUFDUixXQUFXLENBQ1gsQ0FBQzthQUNGO2lCQUFNO2dCQUNOLFFBQVEsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO2dCQUMvQixRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztnQkFDN0IsUUFBUSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7Z0JBQ25DLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDMUI7U0FDRDtRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ25CLENBQUM7SUFFRCxpRkFBaUY7SUFDakYsK0JBQStCLENBQUMsVUFBVTtRQUN6QyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3RDLDBCQUEwQjtZQUMxQixJQUFJLGdCQUFnQixHQUFVLElBQUksQ0FBQztZQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQ3JELENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxJQUFJLEdBQVEsTUFBTSxDQUFDO2dCQUN2QixJQUNDLENBQUMsSUFBSTtvQkFDTCxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ1IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVTtvQkFDbkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxVQUFVLEVBQy9CO29CQUNELGlDQUFpQztvQkFDakMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7aUJBQzFCO2dCQUNELGdCQUFnQixHQUFHLEVBQUUsQ0FBQztnQkFDdEIsS0FBSyxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7b0JBQzFCLElBQUksYUFBa0IsQ0FBQztvQkFDdkIsSUFBSSxVQUFVLEdBQVUsRUFBRSxDQUFDO29CQUMzQixJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUU7d0JBQ3hCLGFBQWEsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO3FCQUNwQzt5QkFBTSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUU7d0JBQzVCLGFBQWEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO3FCQUNqQztvQkFDRCxJQUFJLGFBQWEsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTt3QkFDeEQsZ0JBQWdCLENBQUMsSUFBSSxDQUFDOzRCQUNyQixLQUFLLEVBQUU7Z0NBQ04sR0FBRyxFQUFFLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dDQUNsRCxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0NBQ3JCLE1BQU0sRUFBRSxRQUFROzZCQUNoQjs0QkFDRCxLQUFLLEVBQUUsRUFBRTt5QkFDVCxDQUFDLENBQUM7d0JBQ0gsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUs7NEJBQ2xELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUM3RDtpQkFDRDtnQkFDRCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMzQixDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDZixDQUFDLENBQ0QsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxxQkFBcUIsQ0FBQyxVQUFpQixFQUFFLElBQVMsRUFBRSxTQUFpQjtRQUNwRSxLQUFLLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtZQUMxQixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO2dCQUNqQyxRQUFRLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztnQkFDL0IsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMxQjtpQkFBTSxJQUFJLFFBQVEsQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRTtnQkFDbkQsSUFBSSxhQUFrQixDQUFDO2dCQUN2QixJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUU7b0JBQ3hCLGFBQWEsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO2lCQUNwQztxQkFBTSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUU7b0JBQzVCLGFBQWEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO2lCQUNqQztnQkFDRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7b0JBQy9DLFNBQVMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO2lCQUMzQjtnQkFDRCxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDOUU7U0FDRDtRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ25CLENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsbUJBQW1CLENBQUMsUUFBZ0I7UUFDbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyx1QkFBdUIsRUFDckUsRUFBRSxNQUFNLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLE9BQU8sQ0FBQyxFQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxlQUFlLEVBQUU7WUFDekYsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDakQsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELDhCQUE4QjtJQUM5QixNQUFNLENBQUMsRUFBRTtRQUNSLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsY0FBYyxFQUM1RCxFQUFFLE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FDMUMsQ0FBQztJQUNILENBQUM7SUFFRCx5QkFBeUI7SUFDekIsSUFBSSxDQUFDLEtBQVk7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxZQUFZLEVBQzFELEtBQUssRUFDTCxXQUFXLENBQ1gsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBaUI7UUFDeEMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2xDLE9BQU8sQ0FDTixVQUFVLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDO2dCQUNuRSxVQUFVLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FDbEUsQ0FBQztTQUNGO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWCxDQUFDO0lBRUQsOENBQThDO0lBQzlDLHlCQUF5QixDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ3JELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUI7WUFDaEQsaUNBQWlDO1lBQ2pDLEtBQUs7WUFDTCxHQUFHO1lBQ0gsS0FBSyxFQUNOLEVBQUUsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FDNUIsQ0FBQztJQUNILENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsNkJBQTZCLENBQzVCLEtBQWEsRUFDYixLQUFhLEVBQ2IsVUFBa0IsRUFDbEIsV0FBbUIsRUFDbkIsWUFBb0I7UUFFcEIsSUFBSSxhQUFhLEdBQUc7WUFDbkIsV0FBVyxFQUFFLFVBQVU7WUFDdkIsYUFBYSxFQUFFLFdBQVc7WUFDMUIsWUFBWSxFQUFFLFlBQVk7U0FDMUIsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUI7WUFDaEQsK0JBQStCO1lBQy9CLEtBQUs7WUFDTCxHQUFHO1lBQ0gsS0FBSyxFQUNOLGFBQWEsRUFDYixXQUFXLENBQ1gsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWTtRQUNsQixPQUFPLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWM7UUFDcEIsT0FBTyxVQUFVLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELE1BQU0sQ0FBQyxzQkFBc0I7UUFDNUIsT0FBTyxVQUFVLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVO1FBQ2hCLE9BQU8sVUFBVSxDQUFDLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWTtRQUNsQixPQUFPLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQVk7UUFDbkMsT0FBTyxDQUNOLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUM7WUFDekUsR0FBRztZQUNILFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFZO1FBQ2pDLE9BQU8sQ0FDTixVQUFVLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDO1lBQ3ZFLEdBQUc7WUFDSCxVQUFVLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBMkI7UUFDakQsT0FBTyxDQUNOLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUM7WUFDeEUsR0FBRztZQUNILFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFXO1FBQzVCLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFO1lBQ3hGLE9BQU8sQ0FBQyxDQUFDO1NBQ1Q7YUFBTSxJQUNOLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQ3BGO1lBQ0QsT0FBTyxDQUFDLENBQUM7U0FDVDthQUFNLElBQ04sR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFDcEY7WUFDRCxPQUFPLENBQUMsQ0FBQztTQUNUO2FBQU0sSUFDTixHQUFHLENBQUMsVUFBVSxDQUNiLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FDekUsRUFDQTtZQUNELE9BQU8sQ0FBQyxDQUFDO1NBQ1Q7YUFBTSxJQUNOLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQ25GO1lBQ0QsT0FBTyxDQUFDLENBQUM7U0FDVDthQUFNLElBQ04sR0FBRyxDQUFDLFVBQVUsQ0FDYixVQUFVLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLDZCQUE2QixDQUFDLENBQ2hGLEVBQ0E7WUFDRCxPQUFPLENBQUMsQ0FBQztTQUNUO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHFCQUFxQixDQUFDLGNBQW1CLEVBQUUsU0FBYztRQUN4RCxJQUFJLE9BQU8sU0FBUyxJQUFJLFFBQVEsRUFBRTtZQUNqQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3hCLElBQUksY0FBYyxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUU7b0JBQ3JDLE9BQU8sU0FBUyxDQUFDLGlCQUFpQixDQUFDO2lCQUNuQztnQkFDRCxJQUNDLGNBQWMsQ0FBQyxJQUFJLElBQUksUUFBUTtvQkFDL0IsU0FBUyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQ25EO29CQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBRXZCLElBQUcsU0FBUyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEVBQUM7d0JBQ25ELE9BQU8sU0FBUyxDQUFDLGFBQWEsQ0FBQztxQkFDL0I7eUJBQUssSUFBRyxTQUFTLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsRUFBQzt3QkFDdEQsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDO3FCQUM1Qjt5QkFBSyxJQUFHLGNBQWMsQ0FBQyxXQUFXLEVBQUM7d0JBQ25DLE9BQU8sU0FBUyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztxQkFDN0M7aUJBQ0Q7YUFDRDtTQUNEO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbEIsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFXLEVBQUUsTUFBYztRQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3QixNQUFNLE1BQU0sR0FBRztZQUNkLEVBQUUsRUFBRTtnQkFDSCxPQUFPO2dCQUNQLFNBQVM7Z0JBQ1QsT0FBTztnQkFDUCxPQUFPO2dCQUNQLE1BQU07Z0JBQ04sT0FBTztnQkFDUCxPQUFPO2dCQUNQLFFBQVE7Z0JBQ1IsWUFBWTtnQkFDWixTQUFTO2dCQUNULFdBQVc7Z0JBQ1gsV0FBVzthQUNYO1lBQ0QsRUFBRSxFQUFFO2dCQUNILFNBQVM7Z0JBQ1QsVUFBVTtnQkFDVixPQUFPO2dCQUNQLE9BQU87Z0JBQ1AsS0FBSztnQkFDTCxNQUFNO2dCQUNOLE1BQU07Z0JBQ04sUUFBUTtnQkFDUixXQUFXO2dCQUNYLFNBQVM7Z0JBQ1QsVUFBVTtnQkFDVixVQUFVO2FBQ1Y7WUFDRCxFQUFFLEVBQUU7Z0JBQ0gsU0FBUztnQkFDVCxTQUFTO2dCQUNULE1BQU07Z0JBQ04sT0FBTztnQkFDUCxLQUFLO2dCQUNMLE1BQU07Z0JBQ04sU0FBUztnQkFDVCxNQUFNO2dCQUNOLFdBQVc7Z0JBQ1gsU0FBUztnQkFDVCxVQUFVO2dCQUNWLFVBQVU7YUFDVjtZQUNELEVBQUUsRUFBRTtnQkFDSCxRQUFRO2dCQUNSLFNBQVM7Z0JBQ1QsTUFBTTtnQkFDTixPQUFPO2dCQUNQLEtBQUs7Z0JBQ0wsTUFBTTtnQkFDTixNQUFNO2dCQUNOLFFBQVE7Z0JBQ1IsV0FBVztnQkFDWCxTQUFTO2dCQUNULFVBQVU7Z0JBQ1YsVUFBVTthQUNWO1lBQ0QsRUFBRSxFQUFFO2dCQUNILFNBQVM7Z0JBQ1QsVUFBVTtnQkFDVixPQUFPO2dCQUNQLFFBQVE7Z0JBQ1IsUUFBUTtnQkFDUixRQUFRO2dCQUNSLFFBQVE7Z0JBQ1IsUUFBUTtnQkFDUixXQUFXO2dCQUNYLFNBQVM7Z0JBQ1QsVUFBVTtnQkFDVixVQUFVO2FBQ1Y7U0FDRCxDQUFDO1FBRUYsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBDLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM1QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFaEMsT0FBTyxHQUFHLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsVUFBa0IsRUFBRSxLQUFVLEVBQUUsU0FBYyxFQUFFLE1BQWU7UUFDM0UsSUFBSSxZQUFZLEdBQVcsSUFBSSxDQUFDO1FBQ2hDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUU7WUFDN0IsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELElBQUksU0FBUyxJQUFJLE1BQU0sRUFBRTtnQkFDeEIsSUFBSSxVQUFVLEdBQVcsS0FBSyxDQUFDLFNBQVMsQ0FDdkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQ3RCLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQ2xCLENBQUM7Z0JBQ0YsVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JFLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzVDLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxNQUFNLEVBQUU7b0JBQzdCLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztpQkFDbEQ7cUJBQU0sSUFBSSxTQUFTLEVBQUU7b0JBQ3JCLFlBQVksR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDaEU7cUJBQU07b0JBQ04sWUFBWSxHQUFHLEVBQUUsQ0FBQztpQkFDbEI7YUFDRDtpQkFBTSxJQUFJLFNBQVMsSUFBSSxRQUFRLEVBQUU7Z0JBQ2pDLElBQUksV0FBVyxHQUFXLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxXQUFXLElBQUksU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFO29CQUNwRCxJQUFJLFlBQVksR0FBVyxLQUFLLENBQUMsU0FBUyxDQUN6QyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFDdEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FDbEIsQ0FBQztvQkFDRixZQUFZLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDekUsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUN6QyxXQUFXLEVBQ1gsSUFBSSxDQUFDLE1BQU0sRUFDWCxFQUFFLEVBQ0YsWUFBWSxDQUNaLENBQUM7aUJBQ0Y7cUJBQU07b0JBQ04sT0FBTyxDQUFDLEdBQUcsQ0FDVixXQUFXO3dCQUNWLFNBQVM7d0JBQ1QsbUJBQW1CO3dCQUNuQixLQUFLO3dCQUNMLDhCQUE4QixDQUMvQixDQUFDO29CQUNGLFlBQVksR0FBRyxFQUFFLENBQUM7aUJBQ2xCO2FBQ0Q7aUJBQU07Z0JBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUM7YUFDeEU7U0FDRDthQUFNLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUU7WUFDcEMsSUFBRyxTQUFTLENBQUMsYUFBYSxLQUFLLFNBQVMsSUFBSSxTQUFTLENBQUMsYUFBYSxLQUFLLElBQUksRUFBRTtnQkFDN0UsWUFBWSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUM7YUFDdkM7aUJBQUk7Z0JBQ0osWUFBWSxHQUFHLFNBQVMsQ0FBQzthQUN6QjtZQUNBLDRCQUE0QjtTQUM3QjthQUFNO1lBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDN0Q7UUFDRCxJQUFJLFVBQVUsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFO1lBQ3hDLHVDQUF1QztZQUN2QyxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDeEQsdURBQXVEO1NBQ3ZEO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDbkIsQ0FBQztJQUVELGlDQUFpQyxDQUFDLFVBQWtCO1FBQ25ELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckQsTUFBTSx1QkFBdUIsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbkUsTUFBTSx5QkFBeUIsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkUsSUFBSSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFDQyx1QkFBdUI7WUFDdkIsdUJBQXVCLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDbEMseUJBQXlCO1lBQ3pCLHlCQUF5QixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQ25DO1lBQ0QsbUJBQW1CLEdBQUcsdUJBQXVCLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDaEY7YUFBTSxJQUFJLHVCQUF1QixJQUFJLHVCQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekUsbUJBQW1CLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdEQ7YUFBTSxJQUFJLHlCQUF5QixJQUFJLHlCQUF5QixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0UsbUJBQW1CLEdBQUcseUJBQXlCLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDeEQ7UUFDRCxNQUFNLE1BQU0sR0FBVSxFQUFFLENBQUM7UUFFekIsSUFBSSxVQUFVLEVBQUU7WUFDZixLQUFLLE1BQU0sS0FBSyxJQUFJLFVBQVUsRUFBRTtnQkFDL0IsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDL0MsSUFBSSxtQkFBbUIsRUFBRTtvQkFDeEIsS0FBSyxNQUFNLGNBQWMsSUFBSSxtQkFBbUIsRUFBRTt3QkFDakQsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDNUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFOzRCQUNmLFNBQVMsQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDOzRCQUNqQyxNQUFNO3lCQUNOO3FCQUNEO2lCQUNEO2dCQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDdkI7U0FDRDtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVELDBCQUEwQixDQUFDLG9CQUEyQixFQUFFLFFBQWU7UUFDdEUsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ25CLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN6QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNsQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTt3QkFDdkMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLFFBQVEsRUFBRTs0QkFDNUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7eUJBQ3JDO29CQUNGLENBQUMsQ0FBQyxDQUFDO2lCQUNIO1lBQ0YsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLE9BQU8sRUFBRTtnQkFDWixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3RCO1FBQ0YsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNoQixDQUFDO0lBRUQsMkJBQTJCLENBQUMsSUFBWSxFQUFFLFFBQWUsRUFBRSxVQUFpQjtRQUMzRSxNQUFNLGVBQWUsR0FBVSxFQUFFLENBQUM7UUFDbEMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNwQixNQUFNLGNBQWMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUN0QyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQzVCLElBQUksUUFBUSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFO3dCQUM3RCxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDckMsY0FBYyxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FDaEQsS0FBSyxDQUFDLEdBQUcsRUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ2QsQ0FBQztxQkFDRjtnQkFDRixDQUFDLENBQUMsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0gsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sZUFBZSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxVQUFrQjtRQUN2QyxJQUFJLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELElBQUksdUJBQXVCLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2pFLElBQUkseUJBQXlCLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JFLElBQUksbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQ0MsdUJBQXVCO1lBQ3ZCLHVCQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ2xDLHlCQUF5QjtZQUN6Qix5QkFBeUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUNuQztZQUNELG1CQUFtQixHQUFHLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQ2hGO2FBQU0sSUFBSSx1QkFBdUIsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pFLG1CQUFtQixHQUFHLHVCQUF1QixDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3REO2FBQU0sSUFBSSx5QkFBeUIsSUFBSSx5QkFBeUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdFLG1CQUFtQixHQUFHLHlCQUF5QixDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3hEO1FBQ0QsSUFBSSxNQUFNLEdBQVUsRUFBRSxDQUFDO1FBRXZCLElBQUksVUFBVSxFQUFFO1lBQ2YsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUU7Z0JBQy9CLElBQUksT0FBTyxHQUFXLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JELElBQUksT0FBTyxLQUFLLElBQUksRUFBRTtvQkFDckIsU0FBUztpQkFDVDtnQkFDRCxJQUFJLFNBQVMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUM3QyxJQUFJLG1CQUFtQixFQUFFO29CQUN4QixLQUFLLE1BQU0sY0FBYyxJQUFJLG1CQUFtQixFQUFFO3dCQUNqRCxJQUFJLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUMxQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7NEJBQ2YsU0FBUyxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUM7NEJBQ2pDLE1BQU07eUJBQ047cUJBQ0Q7aUJBQ0Q7Z0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN2QjtTQUNEO1FBRUQsT0FBTyxNQUFNLENBQUM7UUFFZCwwQkFBMEI7UUFDMUIsdURBQXVEO1FBQ3ZELGlCQUFpQjtRQUNqQixrQ0FBa0M7UUFDbEMsOEJBQThCO1FBQzlCLDJCQUEyQjtRQUMzQixzREFBc0Q7UUFDdEQsNEJBQTRCO1FBQzVCLGtFQUFrRTtRQUNsRSxnREFBZ0Q7UUFDaEQsa0NBQWtDO1FBQ2xDLGlFQUFpRTtRQUNqRSxrQkFBa0I7UUFDbEIsUUFBUTtRQUNSLHNGQUFzRjtRQUN0Riw0Q0FBNEM7UUFDNUMsaUdBQWlHO1FBQ2pHLDhCQUE4QjtRQUM5QixpRUFBaUU7UUFDakUsa0JBQWtCO1FBQ2xCLFFBQVE7UUFDUixvQkFBb0I7UUFDcEIsdUJBQXVCO1FBQ3ZCLHdCQUF3QjtRQUN4QixTQUFTO1FBQ1QsMENBQTBDO1FBQzFDLGFBQWE7UUFDYix5REFBeUQ7UUFDekQsK0dBQStHO1FBQy9HLGlEQUFpRDtRQUNqRCxpRUFBaUU7UUFDakUsa0JBQWtCO1FBQ2xCLFFBQVE7UUFDUiwrR0FBK0c7UUFDL0csd0ZBQXdGO1FBQ3hGLG9CQUFvQjtRQUNwQix1QkFBdUI7UUFDdkIsMEJBQTBCO1FBQzFCLFNBQVM7UUFDVCwwQ0FBMEM7UUFDMUMsTUFBTTtRQUNOLDRCQUE0QjtRQUM1Qix5REFBeUQ7UUFDekQsYUFBYTtRQUNiLElBQUk7UUFDSixpQkFBaUI7SUFDbEIsQ0FBQztJQUVELHVCQUF1QixDQUFDLFVBQWtCLEVBQUUsS0FBYTtRQUN4RCxJQUFJLGVBQWUsR0FBVyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3RCxJQUFJLFlBQVksR0FBVyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsR0FDSixlQUFlLEdBQUcsQ0FBQyxJQUFJLFlBQVksSUFBSSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxZQUFZO1lBQ2QsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksZUFBZSxJQUFJLENBQUM7Z0JBQzFDLENBQUMsQ0FBQyxlQUFlO2dCQUNqQixDQUFDLENBQUMsZUFBZSxHQUFHLFlBQVk7b0JBQ2hDLENBQUMsQ0FBQyxlQUFlO29CQUNqQixDQUFDLENBQUMsWUFBWSxDQUFDO1FBQ2pCLE9BQU8sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUNBQWlDLENBQ2hDLFNBQWlCLEVBQ2pCLE9BQWUsRUFDZixhQUFvQjtRQUVwQixJQUFJLFFBQVEsR0FBVSxFQUFFLENBQUM7UUFDekIsSUFBSSxhQUFhLEVBQUU7WUFDbEIsS0FBSyxJQUFJLFFBQVEsSUFBSSxhQUFhLEVBQUU7Z0JBQ25DLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDM0Q7U0FDRDtRQUNELE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCwyQkFBMkIsQ0FBQyxTQUFpQixFQUFFLE9BQWUsRUFBRSxhQUFrQjtRQUNqRixJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ3BDLE1BQU07Z0JBQ0wsT0FBTyxFQUFFLHVCQUF1QixHQUFHLFNBQVMsR0FBRyxhQUFhO2dCQUM1RCxLQUFLLEVBQUUsU0FBUztnQkFDaEIsS0FBSyxFQUNKLHVCQUF1QixHQUFHLFNBQVMsR0FBRyx3QkFBd0IsR0FBRyxPQUFPLEdBQUcsSUFBSTthQUNoRixDQUFDO1NBQ0Y7UUFDRCxJQUFJLGNBQWMsR0FBVyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEQsSUFBSSxjQUFjLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3pDLE9BQU8sY0FBYyxDQUFDO1NBQ3RCO1FBQ0QsaUNBQWlDO1FBQ2pDLElBQUksV0FBVyxHQUFVLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwRSxJQUFJLFdBQVcsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQzVCLE9BQU8sY0FBYyxDQUFDO1NBQ3RCO1FBQ0QscUNBQXFDO1FBQ3JDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVDLElBQUksV0FBVyxHQUNkLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUztnQkFDOUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUNuQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ1QsSUFBSSxRQUFRLENBQUM7WUFDYixJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUU7Z0JBQ3hCLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDL0UsV0FBVztvQkFDVixhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFFeEUsSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFO29CQUN4QixRQUFRLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7eUJBQzNCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO3lCQUNoQixPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQzt5QkFDaEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzt5QkFDYixXQUFXLEVBQUUsQ0FBQztvQkFDaEIsV0FBVzt3QkFDVixhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDeEUsSUFBSSxXQUFXLEtBQUssSUFBSSxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUU7d0JBQ3RELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHOzZCQUNqQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQzs2QkFDaEIsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7NkJBQ2hCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7NkJBQ2IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNiLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7NEJBQ3hCLElBQUksS0FBSyxHQUFHLGFBQWEsQ0FBQzs0QkFDMUIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0NBQ3JELElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDOUIsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO29DQUNmLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7aUNBQ2hDO2dDQUNELEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7NkJBQ3ZCOzRCQUNELFdBQVcsR0FBRyxLQUFLLENBQUM7eUJBQ3BCO3FCQUNEO2lCQUNEO2FBQ0Q7WUFDRCxJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUU7Z0JBQ3hCLHdEQUF3RDtnQkFDeEQ7Ozs7OzttQkFNRztnQkFDSCxXQUFXLEdBQUcsRUFBRSxDQUFDO2FBQ2pCO1lBQ0QsSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFO2dCQUN4QixJQUFJLEtBQUssR0FBUSxNQUFNLENBQUMsV0FBVyxDQUFDO29CQUNuQyxDQUFDLENBQUMsV0FBVztvQkFDYixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7d0JBQzVCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQzt3QkFDN0IsQ0FBQyxDQUFDLEdBQUcsR0FBRyxXQUFXLEdBQUcsR0FBRyxDQUFDO2dCQUMzQixjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDaEYsV0FBVztnQkFDWCwrQ0FBK0M7Z0JBQy9DLFlBQVk7Z0JBQ1oscURBQXFEO2dCQUNyRCx3QkFBd0I7Z0JBQ3hCLHdFQUF3RTtnQkFDeEUsT0FBTztnQkFDUCxFQUFFO2dCQUNGLDRHQUE0RztnQkFDNUcsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDaEUsK0ZBQStGO29CQUMvRixJQUFJLGVBQWUsR0FBYSxjQUFjLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUNwRSxJQUFJLGtCQUFrQixHQUFhLEVBQUUsQ0FBQztvQkFDdEMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQWtCLEVBQUUsRUFBRTt3QkFDOUMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRTs0QkFDaEMsSUFBSSxVQUFVLEdBQVcsRUFBRSxDQUFDOzRCQUM1QixVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQzs0QkFDdEMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3lCQUNwQzs2QkFBTTs0QkFDTixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7eUJBQ3BDO29CQUNGLENBQUMsQ0FBQyxDQUFDO29CQUNILGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQzlDO2FBQ0Q7U0FDRDtRQUNELE9BQU8sY0FBYyxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE9BQU8sQ0FBQyxVQUFrQjtRQUN6QixJQUFJLGFBQWEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2xELHNCQUFzQjtRQUN0QixJQUFJLFFBQVEsR0FBYSxVQUFVLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pELDhEQUE4RDtRQUM5RCxxQ0FBcUM7UUFDckMsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO1lBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztZQUN4RSxPQUFPLE9BQU8sQ0FBQztTQUNmO1FBQ0Qsc0NBQXNDO1FBQ3RDLHVHQUF1RztRQUN2RyxzREFBc0Q7UUFDdEQsSUFBSSxVQUFVLEVBQUUsY0FBYyxDQUFDO1FBQy9CLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsK0ZBQStGO1FBQy9GLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUN6RCxPQUFPLE9BQU8sQ0FBQztTQUNmO1FBQ0QsNERBQTREO1FBQzVELGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlELDJEQUEyRDtRQUMzRCxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVuQyx1RUFBdUU7UUFDdkUsaUVBQWlFO1FBQ2pFLElBQUksVUFBVSxHQUFZLElBQUksQ0FBQztRQUMvQixRQUFRLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNwQixLQUFLLElBQUk7Z0JBQ1IsVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxjQUFjLENBQUMsQ0FBQztnQkFDN0QsTUFBTTtZQUNQLEtBQUssS0FBSztnQkFDVCxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLGNBQWMsQ0FBQyxDQUFDO2dCQUM5RCxNQUFNO1lBQ1AsS0FBSyxLQUFLO2dCQUNULFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssY0FBYyxDQUFDLENBQUM7Z0JBQzlELE1BQU07WUFDUCxLQUFLLElBQUk7Z0JBQ1IsVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxjQUFjLENBQUMsQ0FBQztnQkFDN0QsTUFBTTtZQUNQO2dCQUNDLE1BQU07U0FDUDtRQUNELFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQzNDLE9BQU8sVUFBVSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWUsQ0FBQyxZQUFpQixFQUFFLFdBQW1CLEVBQUUsT0FBZTtRQUN0RSxJQUFJLFdBQVcsR0FBWSxLQUFLLENBQUM7UUFDakMsd0VBQXdFO1FBQ3hFLElBQUksWUFBWSxHQUFVLEVBQUUsQ0FBQztRQUM3QixLQUFLLElBQUksS0FBSyxJQUFJLFlBQVksRUFBRTtZQUMvQixLQUFLLElBQUksVUFBVSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7Z0JBQ25DLEtBQUssSUFBSSxXQUFXLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRTtvQkFDekMsS0FBSyxJQUFJLGNBQWMsSUFBSSxXQUFXLEVBQUU7d0JBQ3ZDLFlBQVksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU07NEJBQ3ZELENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxRQUFRO2dDQUN2QyxDQUFDLENBQUMsR0FBRztnQ0FDTCxDQUFDLENBQUMsRUFBRTs0QkFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO3FCQUNOO2lCQUNEO2FBQ0Q7U0FDRDtRQUNELElBQUk7WUFDSCxPQUFPLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDL0U7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNmLHVCQUF1QjtZQUN2QixNQUFNLEtBQUssQ0FBQztTQUNaO1FBQ0QsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQ3JCLElBQUk7Z0JBQ0gsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JFLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDbkI7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDWCxtREFBbUQ7Z0JBQ25ELE1BQU07b0JBQ0wsT0FBTyxFQUFFLG1DQUFtQztvQkFDNUMsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLEtBQUssRUFBRSxDQUFDO2lCQUNSLENBQUM7YUFDRjtTQUNEO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDcEIsQ0FBQztJQUVELHdCQUF3QixDQUFDLE1BQWMsRUFBRSxNQUFjO1FBQ3RELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsZ0NBQWdDLEVBQzlFO1lBQ0MsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFO2lCQUN0QixHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDaEMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDbEMsQ0FDRCxDQUFDO0lBQ0gsQ0FBQzs7QUF4NkNELE1BQU07QUFDQywrQkFBa0IsR0FBVyxxQkFBc0IsQ0FBQTtBQUsxRCxNQUFNO0FBQ0MsNkJBQWdCLEdBQVcsS0FBTSxDQUFBO0FBQ3hDLE1BQU07QUFDQywrQkFBa0IsR0FBVyxhQUFjLENBQUE7QUFDbEQsTUFBTTtBQUNDLG1DQUFzQixHQUFXLFdBQVksQ0FBQTtBQUNwRCxNQUFNO0FBQ0MsaUNBQW9CLEdBQVcsVUFBVyxDQUFBO0FBQ2pELE1BQU07QUFDQywrQkFBa0IsR0FBVyxVQUFXLENBQUE7QUFDL0MsTUFBTTtBQUNDLGtDQUFxQixHQUFXLFdBQVksQ0FBQTtBQUNuRCxNQUFNO0FBQ0Msc0RBQXlDLEdBQVcsbUNBQW9DLENBQUE7QUFDL0YsTUFBTTtBQUNDLDBDQUE2QixHQUFXLG1CQUFvQixDQUFBO0FBQ25FLE1BQU07QUFDQyw2QkFBZ0IsR0FBVyxPQUFRLENBQUE7QUFDMUMsTUFBTTtBQUNDLDhCQUFpQixHQUFXLE1BQU8sQ0FBQTtBQUMxQyxNQUFNO0FBQ0Msa0NBQXFCLEdBQVcsVUFBVyxDQUFBO0FBQ2xELE1BQU07QUFDQywyQ0FBOEIsR0FBVyxhQUFjLENBQUE7QUFDOUQsTUFBTTtBQUNDLCtEQUFrRCxHQUFXLGtCQUFtQixDQUFBO0FBQ3ZGLE1BQU07QUFDQyxtRUFBc0QsR0FBVyxzQkFBdUIsQ0FBQTtBQUMvRixNQUFNO0FBQ0Msa0VBQXFELEdBQVcsc0JBQXVCLENBQUE7QUFDOUYsTUFBTTtBQUNDLGdFQUFtRCxHQUFXLG1CQUFvQixDQUFBO0FBQ3pGLE1BQU07QUFDQyxvRUFBdUQsR0FDN0QsdUJBQXdCLENBQUE7QUFDekIsTUFBTTtBQUNDLG1FQUFzRCxHQUFXLHVCQUF3QixDQUFBO0FBQ2hHLE1BQU07QUFDQywrQ0FBa0MsR0FBVyxpQkFBa0IsQ0FBQTtBQUN0RSxNQUFNO0FBQ0Msd0RBQTJDLEdBQ2pELHdDQUF5QyxDQUFBO0FBQzFDLE1BQU07QUFDQyxtREFBc0MsR0FBVyxvQkFBcUIsQ0FBQTtBQUM3RSxNQUFNO0FBQ0Msb0RBQXVDLEdBQVcseUJBQTBCLENBQUE7QUFDbkYsTUFBTTtBQUNDLGtEQUFxQyxHQUFXLHNCQUF1QixDQUFBO0FBQzlFLE1BQU07QUFDQywyQ0FBOEIsR0FBVyxrQkFBbUIsQ0FBQTtBQUNuRSxNQUFNO0FBQ0MsNkNBQWdDLEdBQVcsc0JBQXVCLENBQUE7QUFDekUsTUFBTTtBQUNDLGtEQUFxQyxHQUFXLG9CQUFxQixDQUFBO0FBQzVFLE1BQU07QUFDQyxrREFBcUMsR0FBVyxrQkFBbUIsQ0FBQTtBQUMxRSxNQUFNO0FBQ0MsMkNBQThCLEdBQVcsYUFBYyxDQUFBO0FBQzlELE1BQU07QUFDQywwQ0FBNkIsR0FBVyxZQUFhLENBQUE7QUFDNUQsTUFBTTtBQUNDLDJDQUE4QixHQUFXLGlCQUFrQixDQUFBO0FBQ2xFLE1BQU07QUFDQyxpREFBb0MsR0FBVyxzQkFBdUIsQ0FBQTtBQUM3RSxNQUFNO0FBQ0MsdUNBQTBCLEdBQVcsYUFBYyxDQUFBO0FBQzFELE1BQU07QUFDQyw2Q0FBZ0MsR0FBVyxrQkFBbUIsQ0FBQTtBQUNyRSxNQUFNO0FBQ0Msd0NBQTJCLEdBQVcsY0FBZSxDQUFBO0FBQzVELE1BQU07QUFDQyw4Q0FBaUMsR0FBVyxtQkFBb0IsQ0FBQTtBQUN2RSxNQUFNO0FBQ0MsNkNBQWdDLEdBQVcsZUFBZ0IsQ0FBQTtBQUNsRSxNQUFNO0FBQ0MsOENBQWlDLEdBQVcsZUFBZ0IsQ0FBQTtBQUNuRSxNQUFNO0FBQ0Msb0RBQXVDLEdBQVcsc0JBQXVCLENBQUE7QUFDaEYsTUFBTTtBQUNDLGlEQUFvQyxHQUFXLGdCQUFpQixDQUFBO0FBQ3ZFLE1BQU07QUFDQyw0Q0FBK0IsR0FBVyxrQkFBbUIsQ0FBQTtBQUNwRSxNQUFNO0FBQ0MsMENBQTZCLEdBQVcsWUFBYSxDQUFBO0FBQzVELE1BQU07QUFDQyx5Q0FBNEIsR0FBVyxjQUFlLENBQUE7QUFDN0QsTUFBTTtBQUNDLGlEQUFvQyxHQUFXLG9CQUFxQixDQUFBO0FBQzNFLE1BQU07QUFDQyxnREFBbUMsR0FBVyxrQkFBbUIsQ0FBQTtBQUN4RSxNQUFNO0FBQ0MsaURBQW9DLEdBQVcsa0JBQW1CLENBQUE7QUFDekUsTUFBTTtBQUNDLDJEQUE4QyxHQUFXLGtCQUFtQixDQUFBO0FBQ25GLE1BQU07QUFDQyxtREFBc0MsR0FBVyx5QkFBMEIsQ0FBQTtBQUNsRixNQUFNO0FBQ0MsaURBQW9DLEdBQVcsdUJBQXdCLENBQUE7QUFDOUUsTUFBTTtBQUNDLHdDQUEyQixHQUFXLGlCQUFrQixDQUFBO0FBQy9ELE1BQU07QUFDQyw0Q0FBK0IsR0FBVyxtQkFBb0IsQ0FBQTtBQUNyRSxNQUFNO0FBQ0Msd0NBQTJCLEdBQVcscUJBQXNCLENBQUE7QUFDbkUsTUFBTTtBQUNDLDRDQUErQixHQUFXLG1CQUFvQixDQUFBO0FBQ3JFLE1BQU07QUFDQyx5Q0FBNEIsR0FBVyxnQkFBaUIsQ0FBQTtBQUMvRCxNQUFNO0FBQ0MsZ0RBQW1DLEdBQVcsc0JBQXVCLENBQUE7QUFDNUUsTUFBTTtBQUNDLDhCQUFpQixHQUFXLEtBQU0sQ0FBQTtBQUN6QyxNQUFNO0FBQ0MsZ0NBQW1CLEdBQVcsS0FBTSxDQUFBO0FBQzNDLE1BQU07QUFDQywrQkFBa0IsR0FBVyxLQUFNLENBQUE7QUFDMUMsTUFBTTtBQUNDLDhDQUFpQyxHQUFXLHNCQUF1QixDQUFBO0FBQzFFLE1BQU07QUFDQyxrREFBcUMsR0FBVyx3QkFBeUIsQ0FBQTtBQUNoRixNQUFNO0FBQ0MseURBQTRDLEdBQVcscUJBQXNCLENBQUE7QUFDcEYsTUFBTTtBQUNDLHlDQUE0QixHQUFXLGFBQWMsQ0FBQTtBQUM1RCxNQUFNO0FBQ0MsaURBQW9DLEdBQVcsMkJBQTRCLENBQUE7QUFDbEYsTUFBTTtBQUNDLHFEQUF3QyxHQUFXLDJCQUE0QixDQUFBO0FBQ3RGLE1BQU07QUFDQyxtREFBc0MsR0FBVyx3QkFBeUIsQ0FBQTtBQUNqRixNQUFNO0FBQ0MseUNBQTRCLEdBQVcsaUJBQWtCLENBQUE7QUFDaEUsTUFBTTtBQUNDLHNEQUF5QyxHQUFXLDJCQUE0QixDQUFBO0FBQ3ZGLE1BQU07QUFDQyw4Q0FBaUMsR0FBVyxvQkFBcUIsQ0FBQTtBQUN4RSxNQUFNO0FBQ0MsdURBQTBDLEdBQVcsK0JBQWdDLENBQUE7QUFDNUYsTUFBTTtBQUNDLHNEQUF5QyxHQUFXLDRCQUE2QixDQUFBO0FBQ3hGLE1BQU07QUFDQyxxQ0FBd0IsR0FBVyxXQUFZLENBQUE7QUFDdEQsTUFBTTtBQUNDLCtEQUFrRCxHQUN4RCxvQ0FBcUMsQ0FBQTtBQUN0QyxNQUFNO0FBQ0Msc0RBQXlDLEdBQVcsNEJBQTZCLENBQUE7QUFDakYsa0NBQXFCLEdBQVcsU0FBVSxDQUFBO0FBQzFDLDRDQUErQixHQUFHLGlCQUFpQixDQUFDO0FBQ3BELGlEQUFvQyxHQUFHLHFCQUFxQixDQUFDO0FBQzdELHlEQUE0QyxHQUFHLDZCQUE2QixDQUFDO0FBQzdFLDBCQUFhLEdBQVU7SUFDN0I7UUFDQyxHQUFHLEVBQUUsWUFBWSxDQUFDLDhCQUE4QjtRQUNoRCxLQUFLLEVBQUUsY0FBYztLQUNyQjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQywwQkFBMEI7UUFDNUMsS0FBSyxFQUFFLFVBQVU7S0FDakI7SUFDRDtRQUNDLEdBQUcsRUFBRSxZQUFZLENBQUMsMkJBQTJCO1FBQzdDLEtBQUssRUFBRSxXQUFXO0tBQ2xCO0lBQ0Q7UUFDQyxHQUFHLEVBQUUsWUFBWSxDQUFDLGdDQUFnQztRQUNsRCxLQUFLLEVBQUUsZUFBZTtLQUN0QjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxpQ0FBaUM7UUFDbkQsS0FBSyxFQUFFLGlCQUFpQjtLQUN4QjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyx1Q0FBdUM7UUFDekQsS0FBSyxFQUFFLHVCQUF1QjtLQUM5QjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxxQ0FBcUM7UUFDdkQsS0FBSyxFQUFFLHdCQUF3QjtLQUMvQjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxxQ0FBcUM7UUFDdkQsS0FBSyxFQUFFLHFCQUFxQjtLQUM1QjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyw4QkFBOEI7UUFDaEQsS0FBSyxFQUFFLGNBQWM7S0FDckI7SUFDRDtRQUNDLEdBQUcsRUFBRSxZQUFZLENBQUMsNkJBQTZCO1FBQy9DLEtBQUssRUFBRSxlQUFlO0tBQ3RCO0lBQ0Q7UUFDQyxHQUFHLEVBQUUsWUFBWSxDQUFDLG9DQUFvQztRQUN0RCxLQUFLLEVBQUUsaUJBQWlCO0tBQ3hCO0lBQ0Q7UUFDQyxHQUFHLEVBQUUsWUFBWSxDQUFDLCtCQUErQjtRQUNqRCxLQUFLLEVBQUUsc0JBQXNCO0tBQzdCO0lBQ0Q7UUFDQyxHQUFHLEVBQUUsWUFBWSxDQUFDLDZCQUE2QjtRQUMvQyxLQUFLLEVBQUUsaUJBQWlCO0tBQ3hCO0lBQ0Q7UUFDQyxHQUFHLEVBQUUsWUFBWSxDQUFDLDRCQUE0QjtRQUM5QyxLQUFLLEVBQUUsZUFBZTtLQUN0QjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxvQ0FBb0M7UUFDdEQsS0FBSyxFQUFFLHFCQUFxQjtLQUM1QjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxtQ0FBbUM7UUFDckQsS0FBSyxFQUFFLG1CQUFtQjtLQUMxQjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxvQ0FBb0M7UUFDdEQsS0FBSyxFQUFFLHNCQUFzQjtLQUM3QjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyw4Q0FBOEM7UUFDaEUsS0FBSyxFQUFFLHNCQUFzQjtLQUM3QjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxzQ0FBc0M7UUFDeEQsS0FBSyxFQUFFLGlDQUFpQztLQUN4QztJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxvQ0FBb0M7UUFDdEQsS0FBSyxFQUFFLCtCQUErQjtLQUN0QztJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQywyQkFBMkI7UUFDN0MsS0FBSyxFQUFFLGtCQUFrQjtLQUN6QjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQywrQkFBK0I7UUFDakQsS0FBSyxFQUFFLG9CQUFvQjtLQUMzQjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQywyQkFBMkI7UUFDN0MsS0FBSyxFQUFFLDBCQUEwQjtLQUNqQztJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyx3Q0FBd0M7UUFDMUQsS0FBSyxFQUFFLDZCQUE2QjtLQUNwQztJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxzQ0FBc0M7UUFDeEQsS0FBSyxFQUFFLDBCQUEwQjtLQUNqQztJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQywrQkFBK0I7UUFDakQsS0FBSyxFQUFFLHVCQUF1QjtLQUM5QjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyw0QkFBNEI7UUFDOUMsS0FBSyxFQUFFLGlCQUFpQjtLQUN4QjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxtQ0FBbUM7UUFDckQsS0FBSyxFQUFFLDBCQUEwQjtLQUNqQztJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxpQ0FBaUM7UUFDbkQsS0FBSyxFQUFFLDZCQUE2QjtLQUNwQztJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxxQ0FBcUM7UUFDdkQsS0FBSyxFQUFFLCtCQUErQjtLQUN0QztJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyw0Q0FBNEM7UUFDOUQsS0FBSyxFQUFFLDRCQUE0QjtLQUNuQztJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxvQ0FBb0M7UUFDdEQsS0FBSyxFQUFFLDhCQUE4QjtLQUNyQztJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxpQkFBaUI7UUFDbkMsS0FBSyxFQUFFLEtBQUs7S0FDWjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxtQkFBbUI7UUFDckMsS0FBSyxFQUFFLEtBQUs7S0FDWjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxrQkFBa0I7UUFDcEMsS0FBSyxFQUFFLEtBQUs7S0FDWjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyw0QkFBNEI7UUFDOUMsS0FBSyxFQUFFLG9CQUFvQjtLQUMzQjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyw0QkFBNEI7UUFDOUMsS0FBSyxFQUFFLHFCQUFxQjtLQUM1QjtJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyx5Q0FBeUM7UUFDM0QsS0FBSyxFQUFFLDhCQUE4QjtLQUNyQztJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxpQ0FBaUM7UUFDbkQsS0FBSyxFQUFFLGNBQWM7S0FDckI7SUFDRDtRQUNDLEdBQUcsRUFBRSxZQUFZLENBQUMsMENBQTBDO1FBQzVELEtBQUssRUFBRSx3Q0FBd0M7S0FDL0M7SUFDRDtRQUNDLEdBQUcsRUFBRSxZQUFZLENBQUMseUNBQXlDO1FBQzNELEtBQUssRUFBRSxrQ0FBa0M7S0FDekM7SUFDRDtRQUNDLEdBQUcsRUFBRSxZQUFZLENBQUMsd0JBQXdCO1FBQzFDLEtBQUssRUFBRSxxQkFBcUI7S0FDNUI7SUFDRDtRQUNDLEdBQUcsRUFBRSxZQUFZLENBQUMseUNBQXlDO1FBQzNELEtBQUssRUFBRSwrQ0FBK0M7S0FDdEQ7SUFDRDtRQUNDLEdBQUcsRUFBRSxZQUFZLENBQUMsa0RBQWtEO1FBQ3BFLEtBQUssRUFBRSw2Q0FBNkM7S0FDcEQ7SUFDRDtRQUNDLEdBQUcsRUFBRSxZQUFZLENBQUMscUJBQXFCO1FBQ3ZDLEtBQUssRUFBRSxnQkFBZ0I7S0FDdkI7SUFDRCxFQUFFLEdBQUcsRUFBRSxZQUFZLENBQUMsK0JBQStCLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFO0lBQ3JGO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyxvQ0FBb0M7UUFDdEQsS0FBSyxFQUFFLHlCQUF5QjtLQUNoQztJQUNEO1FBQ0MsR0FBRyxFQUFFLFlBQVksQ0FBQyw0Q0FBNEM7UUFDOUQsS0FBSyxFQUFFLGtDQUFrQztLQUN6QztDQUNBLENBQUE7QUFFSywwQkFBYSxHQUFHO0lBQ3RCLFlBQVksQ0FBQyxvQ0FBb0MsQ0FBQyxXQUFXLEVBQUU7SUFDL0QsWUFBWSxDQUFDLHdDQUF3QyxDQUFDLFdBQVcsRUFBRTtJQUNuRSxZQUFZLENBQUMsc0NBQXNDLENBQUMsV0FBVyxFQUFFO0NBQ2pFLENBQUM7eUdBbFdVLFlBQVksa0JBcVdmLGFBQWE7NkdBcldWLFlBQVksY0FGWixNQUFNOzJGQUVOLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCOzswQkFzV0UsTUFBTTsyQkFBQyxhQUFhOzBIQWhXSSxNQUFNO3NCQUEvQixNQUFNO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIExPQ0FMRV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRlVXRpbCwgSEVBREVSX0pTT04sIFBsaUNuZkd1YXJhbnRlZVRva2VuLCBUb2tlbiwgVXRpbFN0cmluZyB9IGZyb20gJ25nLXBsaS11dGlsJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JtaW9VdGlsIH0gZnJvbSAnLi4vdXRpbHMvZm9ybWlvLXV0aWwnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4vZm9ybS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRva2VuU2VydmljZSB7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNJR05fTEVUVEVSX1RBR19JRDogc3RyaW5nID0gJ19zaWduLWxldHRlci10YWctaWQnO1xyXG5cclxuXHQvKiogKi9cclxuXHRASW5qZWN0KExPQ0FMRV9JRCkgcHVibGljIGxvY2FsZTogc3RyaW5nO1xyXG5cclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfRk9STTogc3RyaW5nID0gJ0ZybSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0JVREdFVDogc3RyaW5nID0gJ1ByZXN1cHVlc3RvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRDogc3RyaW5nID0gJ0NhbGN1bGFkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX1NOQVBTSE9UOiBzdHJpbmcgPSAnU25hcHNob3QnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9TVEFUSUM6IHN0cmluZyA9ICdFc3TDoXRpY28nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9ET0NVTUVOVE86IHN0cmluZyA9ICdEb2N1bWVudG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9ET0NVTUVOVE9fQU5BTElTSVNfQVVUT01BVElDTzogc3RyaW5nID0gJ0Fuw6FsaXNpcyBhdXRvbcOhdGljbyBkZSBkb2N1bWVudG9zJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fRE9DVU1FTlRPX0FOQUxZU0lTX1RZUEU6IHN0cmluZyA9ICdkb2N1bWVudF9hbmFseXNpcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX1RBU0s6IHN0cmluZyA9ICdUYXJlYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX1RBU0tMOiBzdHJpbmcgPSAndGFzayc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0dVQVJBTlRFRTogc3RyaW5nID0gJ0dhcmFudGlhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfVE9UQUxfQU1PVU5UOiBzdHJpbmcgPSAndG90YWxBbW91bnQnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9BUFBMSUNBVElPTl9QUk9DRVNTX1RPVEFMX0FNT1VOVDogc3RyaW5nID0gJ2FwcGxpY2F0aW9uVG90YWwnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9BUFBMSUNBVElPTl9QUk9DRVNTX1RPVEFMX09XTl9GT1VORFM6IHN0cmluZyA9ICdhcHBsaWNhdGlvbk93bkZvdW5kcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0FQUExJQ0FUSU9OX1BST0NFU1NfVE9UQUxfRklOQU5DSU5HOiBzdHJpbmcgPSAnYXBwbGljYXRpb25GaW5hbmNpbmcnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9MRUdBTElaQVRJT05fUFJPQ0VTU19UT1RBTF9BTU9VTlQ6IHN0cmluZyA9ICdsZWdhbGl6YXRpb25Ub3RhbCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0xFR0FMSVpBVElPTl9QUk9DRVNTX1RPVEFMX09XTl9GT1VORFM6IHN0cmluZyA9XHJcblx0XHQnbGVnYWxpemF0aW9uT3duRm91bmRzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfRklOQU5DSU5HOiBzdHJpbmcgPSAnbGVnYWxpemF0aW9uRmluYW5jaW5nJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfSU5TVVJBTkNFX0FNT1VOVDogc3RyaW5nID0gJ2luc3VyYW5jZUFtb3VudCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIExFR0FMSVpBVElPTl9PUl9BUFBMSUNBVElPTl9UT1RBTF9GSU5BTkNJTkc6IHN0cmluZyA9XHJcblx0XHQnbGVnbGl6YXRpb25PckFwcGxpY2F0aW9uVG90YWxGaW5hbmNpbmcnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9SRVNVTUVfQ0FURUdPUllfWUVBUjogc3RyaW5nID0gJ3Jlc3VtZUNhdGVnb3J5WWVhcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0ZFQ0hBX0ZJTkFOQ0lOR19TVEFSVDogc3RyaW5nID0gJ2ZlY2hhSW5pY2lvRmluYW5jaWFjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfRkVDSEFfRklOQU5DSU5HX0VORDogc3RyaW5nID0gJ2ZlY2hhRmluRmluYW5jaWFjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19EVVJBVElPTl9TVFVESUVTOiBzdHJpbmcgPSAnZHVyYWNpb25Fc3R1ZGlvcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfRklOQU5DSU5HX0RVUkFUSU9OOiBzdHJpbmcgPSAnZHVyYWNpb25GaW5hbmNpYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9DT0RJR09fVkVSSUZJQ0FDSU9OOiBzdHJpbmcgPSAnY29kaWdvVmVyaWZpY2FjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfQV9RVUlFTl9WQV9ESVJJR0lETzogc3RyaW5nID0gJ2FRdWllblZhRGlyaWdpZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9GRUNIQV9BQ1RVQUw6IHN0cmluZyA9ICdmZWNoYUFjdHVhbCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1NUQVRVU19OQU1FOiBzdHJpbmcgPSAnc3RhdHVzTmFtZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BBVFJPQ0lOQURPUjogc3RyaW5nID0gJ3BsaVBhdHJvY2luYWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BBVFJPQ0lOQURPUl9DT1JUTzogc3RyaW5nID0gJ3BsaVBhdHJvY2luYWRvckNvcnRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUFJPR1JBTUE6IHN0cmluZyA9ICdwbGlQcm9ncmFtYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BST0dSQU1BX0NPUlRPOiBzdHJpbmcgPSAncGxpUHJvZ3JhbWFDb3J0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BST01PQ0lPTjogc3RyaW5nID0gJ3BsaVByb21vY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BST01PQ0lPTl9DT1JUTzogc3RyaW5nID0gJ3BsaVByb21vY2lvbkNvcnRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfQU5JT19QUk9NT0NJT046IHN0cmluZyA9ICdhbmlvUHJvbW9jaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfSVNPX01PTkVEQV9CQVNFOiBzdHJpbmcgPSAnaXNvTW9uZWRhQmFzZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1NBTFVET19DT01QTEVNRU5UQVJJTzogc3RyaW5nID0gJ3NhbHVkb0NvbXBsZW1lbnRhcmlvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfTlVNQkVSX0FQUExJQ0FUSU9OOiBzdHJpbmcgPSAnbnVtZXJvUmFkaWNhZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9VU0VSX0lOSVRJQUxTOiBzdHJpbmcgPSAnaW5pY2lhbGVzVXN1YXJpbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0xFVFRFUl9TSUdOOiBzdHJpbmcgPSAnZmlybWFDYXJ0YSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX05BTUU6IHN0cmluZyA9ICdjb21pdGVOb21icmUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9TRUdNRU5UQVRJT046IHN0cmluZyA9ICdjb21pdGVTZWdtZW50YWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9BR0dSVVBBVElPTjogc3RyaW5nID0gJ2NvbWl0ZUFncnVwYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9DVVRMSU5FX0RBVEU6IHN0cmluZyA9ICdjb21pdGVGZWNoYUxpbmVhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT05GSVJNX0xFR0FMSVpBVElPTl9BUFBPSU5UTUVOVDogc3RyaW5nID0gJ2NvbmZpcm1hY2lvbkNpdGEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX0RPQ1VNRU5UX05VTUJFUjogc3RyaW5nID0gJ251bWVyb0RvY3VtZW50b0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9ET0NVTUVOVF9UWVBFOiBzdHJpbmcgPSAndGlwb0RvY3VtZW50b0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9OQU1FOiBzdHJpbmcgPSAnbm9tYnJlc0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9MQVNUTkFNRTogc3RyaW5nID0gJ2FwZWxsaWRvc0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19UWVBFX0NPREVCVE9SOiBzdHJpbmcgPSAndGlwb1BlcnNvbmFDb2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfUkVWSUVXRVI6IHN0cmluZyA9ICdyZXZpc29yQ29kZXVkb3Jlcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfVE9UQUxfV0VJR0hURUQ6IHN0cmluZyA9ICdwb25kZXJhZG9Ub3RhbCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09OU0VDVVRJVkVfR1VBUkFOVEVFOiBzdHJpbmcgPSAnY29uc2VjdXRpdm9HYXJhbnRpYXMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0RBWTogc3RyaW5nID0gJ2RpYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfTU9OVEg6IHN0cmluZyA9ICdtZXMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1lFQVI6IHN0cmluZyA9ICdhbm8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX05BTUU6IHN0cmluZyA9ICdub21icmVzUmVwcmVzZW50YW50ZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfTEFTVE5BTUU6IHN0cmluZyA9ICdhcGVsbGlkb3NSZXByZXNlbnRhbnRlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9ET0NVTUVOVF9OVU1CRVI6IHN0cmluZyA9ICdjZWR1bGFSZXByZXNlbnRhbnRlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DSVRZX1NJR05BVFVSRTogc3RyaW5nID0gJ2NpdWRhZEZpcm1hJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19VU0VSX1RZUEVfQ1JFRElUX1NUVURZOiBzdHJpbmcgPSAndGlwb1VzdWFyaW9Fc3R1ZGlvQ3JlZGl0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfVkVISUNMRVNfUVVBTlRJVFk6IHN0cmluZyA9ICdjYW50aWRhZFZlaGljdWxvc0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9BU1NFVFNfUVVBTlRJVFk6IHN0cmluZyA9ICdjYW50aWRhZEJpZW5lc0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19MSVNUX0NPREVCVE9SUzogc3RyaW5nID0gJ2xpc3RhQ29kZXVkb3Jlcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9JTkdSRVNPX0NPREVVRE9SX0hBQkVBU19EQVRBOiBzdHJpbmcgPSAnaW5ncmVzb0NvZGV1ZG9ySGFiZWFzRGF0YSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9QREZfUkVTVU1FTl9DT0RFVURPUjogc3RyaW5nID0gJ3BkZlJlc3VtZW5Db2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUVVBTlRJVFlfVkVISUNMRV9CRU5FRklDSUFSWTogc3RyaW5nID0gJ2NhbnRpZGFkVmVoaWN1bG9zU2VsZWNjaW9uYWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19RVUFOVElUWV9BU1NFVFNfQkVORUZJQ0lBUlk6IHN0cmluZyA9ICdjYW50aWRhZEJpZW5lc1NlbGVjY2lvbmFkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQkVOX0NPRElHTzogc3RyaW5nID0gJ2JlbkNvZGlnbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9DUkVESVRfUkVWSUVXRVJfT0JTRVJWQVRJT05TX0NPREVCVE9SOiBzdHJpbmcgPVxyXG5cdFx0J2NyZWRpdFJldmlld2VyT2JzZXJ2YXRpb25zQ29kZWJ0b3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fQ1JFRElUX1JFVklFV0VSX09CU0VSVkFUSU9OUzogc3RyaW5nID0gJ2NyZWRpdFJldmlld2VyT2JzZXJ2YXRpb25zJztcclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX1RBR19OQU1FOiBzdHJpbmcgPSAndGFnTmFtZSc7XHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9OQU1FX1JFVklFV0VSX1RBU0sgPSAnbmFtZVJldml3ZXJUYXNrJztcclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX0xBU1RfTkFNRV9SRVZJRVdFUl9UQVNLID0gJ2xhc3ROYW1lUmV2aXdlclRhc2snO1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fVEFTS19UT1RBTF9BU1NJR05FRF9UT19SRVZJRVdFUiA9ICd0YXNrVG90YWxBc3NpZ25lZFRvUmV2aWV3ZXInO1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TOiBhbnlbXSA9IFtcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfUEFUUk9DSU5BRE9SLFxyXG5cdFx0XHRsYWJlbDogJ1BhdHJvY2luYWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1BST0dSQU1BLFxyXG5cdFx0XHRsYWJlbDogJ1Byb2dyYW1hJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfUFJPTU9DSU9OLFxyXG5cdFx0XHRsYWJlbDogJ1Byb21vY2nDs24nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9BTklPX1BST01PQ0lPTixcclxuXHRcdFx0bGFiZWw6ICdBw7FvIHByb21vY2nDs24nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9JU09fTU9ORURBX0JBU0UsXHJcblx0XHRcdGxhYmVsOiAnSVNPIE1vbmVkYSBiYXNlJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfU0FMVURPX0NPTVBMRU1FTlRBUklPLFxyXG5cdFx0XHRsYWJlbDogJ1NhbHVkbyBjb21wbGVtZW50YXJpbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0NPRElHT19WRVJJRklDQUNJT04sXHJcblx0XHRcdGxhYmVsOiAnQ8OzZGlnbyBkZSB2ZXJpZmljYWNpw7NuJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfQV9RVUlFTl9WQV9ESVJJR0lETyxcclxuXHRcdFx0bGFiZWw6ICdBIHF1aWVuIHZhIGRpcmlnaWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfRkVDSEFfQUNUVUFMLFxyXG5cdFx0XHRsYWJlbDogJ0ZlY2hhIGFjdHVhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1NUQVRVU19OQU1FLFxyXG5cdFx0XHRsYWJlbDogJ0VzdGFkbyBhY3R1YWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9OVU1CRVJfQVBQTElDQVRJT04sXHJcblx0XHRcdGxhYmVsOiAnTsO6bWVybyByYWRpY2FkbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1VTRVJfSU5JVElBTFMsXHJcblx0XHRcdGxhYmVsOiAnSW5pY2lhbGVzIGRlIHVzdWFyaW8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9MRVRURVJfU0lHTixcclxuXHRcdFx0bGFiZWw6ICdGaXJtYSBkZSBjYXJ0YXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9OQU1FLFxyXG5cdFx0XHRsYWJlbDogJ05vbWJyZSBjb21pdMOpJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfU0VHTUVOVEFUSU9OLFxyXG5cdFx0XHRsYWJlbDogJ1NlZ21lbnRhY2nDs24gY29taXTDqSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0FHR1JVUEFUSU9OLFxyXG5cdFx0XHRsYWJlbDogJ0FncnVwYWNpw7NuIGNvbWl0w6knXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9DVVRMSU5FX0RBVEUsXHJcblx0XHRcdGxhYmVsOiAnRmVjaGEgTMOtbmVhIGRlIGNvcnRlJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT05GSVJNX0xFR0FMSVpBVElPTl9BUFBPSU5UTUVOVCxcclxuXHRcdFx0bGFiZWw6ICdDb25maXJtYWNpw7NuIGRlIGNpdGEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0RPQ1VNRU5UX05VTUJFUixcclxuXHRcdFx0bGFiZWw6ICdOw7ptZXJvIGRlIGRvY3VtZW50byBkZSBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfRE9DVU1FTlRfVFlQRSxcclxuXHRcdFx0bGFiZWw6ICdUaXBvIGRlIGRvY3VtZW50byBkZSBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdOb21icmVzIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9MQVNUTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdBcGVsbGlkb3MgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1RZUEVfQ09ERUJUT1IsXHJcblx0XHRcdGxhYmVsOiAnVGlwbyBkZSBwZXJzb25hIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9WRUhJQ0xFU19RVUFOVElUWSxcclxuXHRcdFx0bGFiZWw6ICdDYW50aWRhZCB2ZWhpY3Vsb3MgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0FTU0VUU19RVUFOVElUWSxcclxuXHRcdFx0bGFiZWw6ICdDYW50aWRhZCBiaWVuZXMgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX1JFVklFV0VSLFxyXG5cdFx0XHRsYWJlbDogJ1Jldmlzb3IgZGUgY29kZXVkb3JlcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVE9UQUxfV0VJR0hURUQsXHJcblx0XHRcdGxhYmVsOiAnUG9uZGVyYWRvIHRvdGFsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT05TRUNVVElWRV9HVUFSQU5URUUsXHJcblx0XHRcdGxhYmVsOiAnQ29uc2VjdXRpdm8gZGUgZ2FyYW50aWFzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9OQU1FLFxyXG5cdFx0XHRsYWJlbDogJ05vbWJyZXMgcmVwcmVzZW50YW50ZSBsZWdhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfTEFTVE5BTUUsXHJcblx0XHRcdGxhYmVsOiAnQXBlbGxpZG9zIHJlcHJlc2VudGFudGUgbGVnYWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX0RPQ1VNRU5UX05VTUJFUixcclxuXHRcdFx0bGFiZWw6ICdDZWR1bGEgcmVwcmVzZW50YW50ZSBsZWdhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVVNFUl9UWVBFX0NSRURJVF9TVFVEWSxcclxuXHRcdFx0bGFiZWw6ICdUaXBvIHVzdWFyaW8gZXN0dWRpbyBjcsOpZGl0bydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfREFZLFxyXG5cdFx0XHRsYWJlbDogJ0RpYSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfTU9OVEgsXHJcblx0XHRcdGxhYmVsOiAnTWVzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19ZRUFSLFxyXG5cdFx0XHRsYWJlbDogJ0HDsW8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NJVFlfU0lHTkFUVVJFLFxyXG5cdFx0XHRsYWJlbDogJ0NpdWRhZCBkZSBsYSBmaXJtYSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfTElTVF9DT0RFQlRPUlMsXHJcblx0XHRcdGxhYmVsOiAnTGlzdGEgZGUgY29kZXVkb3JlcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9JTkdSRVNPX0NPREVVRE9SX0hBQkVBU19EQVRBLFxyXG5cdFx0XHRsYWJlbDogJ0luZ3Jlc28gQ29kZXVkb3IgSGFiZWFzIERhdGEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fUERGX1JFU1VNRU5fQ09ERVVET1IsXHJcblx0XHRcdGxhYmVsOiAnUGRmIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19RVUFOVElUWV9WRUhJQ0xFX0JFTkVGSUNJQVJZLFxyXG5cdFx0XHRsYWJlbDogJ0NhbnRpZGFkIGRlIHZlaMOtY3Vsb3MgZGVsIHNlbGVjY2lvbmFkbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUVVBTlRJVFlfQVNTRVRTX0JFTkVGSUNJQVJZLFxyXG5cdFx0XHRsYWJlbDogJ0NhbnRpZGFkIGJpZW5lcyBkZWwgc2VsZWNjaW9uYWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19CRU5fQ09ESUdPLFxyXG5cdFx0XHRsYWJlbDogJ0PDs2RpZ28gYmVuZWZpY2lhcmlvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX0NSRURJVF9SRVZJRVdFUl9PQlNFUlZBVElPTlMsXHJcblx0XHRcdGxhYmVsOiAnT2JzZXJ2YWNpb25lcyByZXZpc29yIGZpbmFuY2llcm8gc2VsZWNjaW9uYWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX0NSRURJVF9SRVZJRVdFUl9PQlNFUlZBVElPTlNfQ09ERUJUT1IsXHJcblx0XHRcdGxhYmVsOiAnT2JzZXJ2YWNpb25lcyByZXZpc29yIGZpbmFuY2llcm8gY29kZXVkb3JlcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9UQUdfTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdOb21icmUgZGVsIHRhZydcclxuXHRcdH0sXHJcblx0XHR7IGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9OQU1FX1JFVklFV0VSX1RBU0ssIGxhYmVsOiAnTm9tYnJlIHJldmlzb3IgdGFyZWFzJyB9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fTEFTVF9OQU1FX1JFVklFV0VSX1RBU0ssXHJcblx0XHRcdGxhYmVsOiAnQXBlbGxpZG8gcmV2aXNvciB0YXJlYXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fVEFTS19UT1RBTF9BU1NJR05FRF9UT19SRVZJRVdFUixcclxuXHRcdFx0bGFiZWw6ICdUb3RhbCB0YXJlYXMgYXNpZ25hZGFzIGEgcmV2aXNvcidcclxuXHRcdH1cclxuXHRdO1xyXG5cclxuXHRzdGF0aWMgZXhjbHVkZWRUb2tlbiA9IFtcclxuXHRcdFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1VTRVJfVFlQRV9DUkVESVRfU1RVRFkudG9Mb3dlckNhc2UoKSxcclxuXHRcdFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX1ZFSElDTEVTX1FVQU5USVRZLnRvTG93ZXJDYXNlKCksXHJcblx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9BU1NFVFNfUVVBTlRJVFkudG9Mb3dlckNhc2UoKVxyXG5cdF07XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0QEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50LFxyXG5cdFx0cHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG5cdFx0cHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIGN1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlXHJcblx0KSB7fVxyXG5cclxuXHQvKiogVGhpcyBwcm9taXNlIGFsbG93cyB0byBleGVjdXRlIGEgZnVuY3Rpb24gd2hlbiBjb25zdWx0aW5nIHRoZSBmb3JtIGZpZWxkcy4gKi9cclxuXHRnZXRGb3JtRmllbGRzQnlQcm9tQ29kZShwcm9tQ29kaWdvKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtRmllbGRzVG9rZW46IGFueVtdID0gbnVsbDtcclxuXHRcdFx0dGhpcy5mb3JtU2VydmljZS5nZXRCeVByb21Db2RpZ28ocHJvbUNvZGlnbykuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAoYXJyYXlGb3JtczogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRpZiAoYXJyYXlGb3Jtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdGZvciAoY29uc3QgZm9ybXMgb2YgYXJyYXlGb3Jtcykge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBjb21wb25lbnRzID0gW107XHJcblxyXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudHMucHVzaCguLi5Gb3JtaW9VdGlsLmdldENvbXBvbmVudHMoZm9ybXMuY29tcG9uZW50cykpO1xyXG5cclxuXHRcdFx0XHRcdFx0XHRpZiAoZm9ybXMuY29tcG9uZW50cyAmJiBmb3Jtcy5jb21wb25lbnRzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgY29tcG9uZW50cyBvZiBmb3Jtcy5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjb21wb25lbnRzLmNvbXBvbmVudHMgJiYgY29tcG9uZW50cy5jb21wb25lbnRzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb25lbnRzLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjb21wb25lbnQuY29sdW1ucyAmJiBjb21wb25lbnQuY29sdW1ucy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgY0NvbXBvbmVudHMgb2YgY29tcG9uZW50LmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjQ29tcG9uZW50cy5jb21wb25lbnRzICYmXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjQ29tcG9uZW50cy5jb21wb25lbnRzLmxlbmd0aCA+IDBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgaXRlcmF0b3Igb2YgY0NvbXBvbmVudHMuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaXRlcmF0b3IudHlwZSA9PT0gJ2FkZHJlc3MnKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVsZXRlIGl0ZXJhdG9yLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRsZXQgZm9ybTogYW55ID0gYXJyYXlGb3JtcztcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IWZvcm0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0ucHJvbUNvZGlnbyB8fFxyXG5cdFx0XHRcdFx0XHRmb3JtWzBdLnByb21Db2RpZ28gIT0gcHJvbUNvZGlnb1xyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnNDA0J10pO1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm1Db21wLnRpdGxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZvcm1Db21wLnRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3Q6IGZvcm1Db21wXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFtdXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbltsRm9ybUZpZWxkc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0Q29tcG9uZW5ldEZvcm0oXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRnZXRGb3JtRmllbGRzQnlGb3JtSWQoZm9ybUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPiB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHQvLyBTZWFyY2ggdGhlIGR5bmFtaWMgZm9ybVxyXG5cdFx0XHRsZXQgbEZvcm1GaWVsZHNUb2tlbjogYW55W10gPSBudWxsO1xyXG5cdFx0XHR0aGlzLmZvcm1TZXJ2aWNlLmdldEJ5SWQoZm9ybUlkKS5zdWJzY3JpYmUoXHJcblx0XHRcdFx0KHJlc3VsdDogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgZm9ybTogYW55ID0gcmVzdWx0O1xyXG5cdFx0XHRcdFx0aWYgKCFmb3JtIHx8ICFmb3JtWzBdKSB7XHJcblx0XHRcdFx0XHRcdHJlc29sdmUobEZvcm1GaWVsZHNUb2tlbik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuID0gW107XHJcblx0XHRcdFx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0XHRcdGxldCBjb21wb25lbnRzOiBhbnlbXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29sdW1ucztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAobmV3Q29tcG9uZW50cyAmJiBVdGlsU3RyaW5nLmlzVmFsaWQoZm9ybUNvbXAudGl0bGUpKSB7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbi5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLmdldEtleUZvcm11bGFyaW8oZm9ybUNvbXAudGl0bGUpLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZm9ybUNvbXAudGl0bGUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG9iamVjdDogZm9ybUNvbXBcclxuXHRcdFx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogW11cclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuW2xGb3JtRmllbGRzVG9rZW4ubGVuZ3RoIC0gMV0udmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5nZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50cyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZmFsc2UsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGxcclxuXHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHJlc29sdmUobEZvcm1GaWVsZHNUb2tlbik7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdHJlamVjdChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKiogVGhpcyBwcm9taXNlIGFsbG93cyB0byBleGVjdXRlIGEgZnVuY3Rpb24gd2hlbiBjb25zdWx0aW5nIHRoZSBmb3JtIGZpZWxkcy4gKi9cclxuXHRnZXRGb3JtUGFuZWxzQnlQcm9tQ29kZShwcm9tQ29kaWdvKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtUGFubmVsc1Rva2VuOiBhbnlbXSA9IG51bGw7XHJcblx0XHRcdHRoaXMuZm9ybVNlcnZpY2UuZ2V0QnlQcm9tQ29kaWdvKHByb21Db2RpZ28pLnN1YnNjcmliZShcclxuXHRcdFx0XHQocmVzdWx0OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGxldCBmb3JtOiBhbnkgPSByZXN1bHQ7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFmb3JtIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdLnByb21Db2RpZ28gfHxcclxuXHRcdFx0XHRcdFx0Zm9ybVswXS5wcm9tQ29kaWdvICE9IHByb21Db2RpZ29cclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJzQwNCddKTtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZShsRm9ybVBhbm5lbHNUb2tlbik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRsRm9ybVBhbm5lbHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtUGFubmVsc1Rva2VuLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtQ29tcC50aXRsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmb3JtQ29tcC50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0b2JqZWN0OiBmb3JtQ29tcFxyXG5cdFx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBbXVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtUGFubmVsc1Rva2VuW2xGb3JtUGFubmVsc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0UGFuZWxDb21wb25lbmV0KGNvbXBvbmVudHMsIG5ld0NvbXBvbmVudHMsIG51bGwpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtUGFubmVsc1Rva2VuKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgZWRpdEdyaWQgZHluYW1pYyBmb3JtXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHNcclxuXHQgKiBAcGFyYW0gZm9ybVxyXG5cdCAqL1xyXG5cdGdldFBhbmVsQ29tcG9uZW5ldChjb21wb25lbnRzOiBhbnlbXSwgZm9ybTogYW55LCBwYW5lbE5hbWU6IHN0cmluZyk6IGFueVtdIHtcclxuXHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgPT09ICdwYW5lbCcpIHtcclxuXHRcdFx0XHRjb21wb25lbnRzLnB1c2goZm9ybUNvbXApO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbXBvbmVudHMgfHwgZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbXBvbmVudHMgPSB0aGlzLmdldFBhbmVsQ29tcG9uZW5ldChjb21wb25lbnRzLCBuZXdDb21wb25lbnRzLCBwYW5lbE5hbWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29tcG9uZW50cztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgY29tcG9uZW50cyBhIGNvbHVtbnMgb2YgdGhlIGR5bmFtaWMgZm9ybVxyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGZvcm1cclxuXHQgKi9cclxuXHRnZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdGNvbXBvbmVudHM6IGFueVtdLFxyXG5cdFx0Zm9ybTogYW55LFxyXG5cdFx0cGFuZWxOYW1lOiBzdHJpbmcsXHJcblx0XHRlZGl0Z3JpZDogYm9vbGVhbixcclxuXHRcdGVkaXRHcmlkS2V5OiBzdHJpbmdcclxuXHQpOiBhbnlbXSB7XHJcblx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdC8vTU8tICBtYW50aXMgODc0MyBmaXggYWRkcmVzcyB0b2tlblxyXG5cdFx0XHRpZiAoKGZvcm1Db21wLmNvbXBvbmVudHMgfHwgZm9ybUNvbXAuY29sdW1ucykgJiYgZm9ybUNvbXAudHlwZSAhPT0gJ2FkZHJlc3MnKSB7XHJcblx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRpZiAoZm9ybUNvbXAudHlwZSA9PT0gJ2VkaXRncmlkJykge1xyXG5cdFx0XHRcdFx0XHRlZGl0Z3JpZCA9IHRydWU7XHJcblx0XHRcdFx0XHRcdGVkaXRHcmlkS2V5ID0gZm9ybUNvbXAua2V5O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC50eXBlICYmIGZvcm1Db21wLnR5cGUgPT09ICdwYW5lbCcpIHtcclxuXHRcdFx0XHRcdHBhbmVsTmFtZSA9IGZvcm1Db21wLnRpdGxlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb21wb25lbnRzID0gdGhpcy5nZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdFx0XHRcdGNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzLFxyXG5cdFx0XHRcdFx0cGFuZWxOYW1lLFxyXG5cdFx0XHRcdFx0ZWRpdGdyaWQsXHJcblx0XHRcdFx0XHRlZGl0R3JpZEtleVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Zm9ybUNvbXAucGFuZWxOYW1lID0gcGFuZWxOYW1lO1xyXG5cdFx0XHRcdGZvcm1Db21wLmVkaXRncmlkID0gZWRpdGdyaWQ7XHJcblx0XHRcdFx0Zm9ybUNvbXAuZWRpdEdyaWRLZXkgPSBlZGl0R3JpZEtleTtcclxuXHRcdFx0XHRjb21wb25lbnRzLnB1c2goZm9ybUNvbXApO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29tcG9uZW50cztcclxuXHR9XHJcblxyXG5cdC8qKiBUaGlzIHByb21pc2UgYWxsb3dzIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbiB3aGVuIGNvbnN1bHRpbmcgdGhlIGZvcm0gZmllbGRzLiAqL1xyXG5cdGdldEZvcm1FZGl0R3JpZEZpZWxkc0J5UHJvbUNvZGUocHJvbUNvZGlnbyk6IFByb21pc2U8YW55W10+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdC8vIFNlYXJjaCB0aGUgZHluYW1pYyBmb3JtXHJcblx0XHRcdGxldCBsRm9ybUZpZWxkc1Rva2VuOiBhbnlbXSA9IG51bGw7XHJcblx0XHRcdHRoaXMuZm9ybVNlcnZpY2UuZ2V0QnlQcm9tQ29kaWdvKHByb21Db2RpZ28pLnN1YnNjcmliZShcclxuXHRcdFx0XHQocmVzdWx0OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGxldCBmb3JtOiBhbnkgPSByZXN1bHQ7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFmb3JtIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdLnByb21Db2RpZ28gfHxcclxuXHRcdFx0XHRcdFx0Zm9ybVswXS5wcm9tQ29kaWdvICE9IHByb21Db2RpZ29cclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJzQwNCddKTtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4gPSBbXTtcclxuXHRcdFx0XHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRcdFx0bGV0IGNvbXBvbmVudHM6IGFueVtdID0gW107XHJcblx0XHRcdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChuZXdDb21wb25lbnRzICYmIFV0aWxTdHJpbmcuaXNWYWxpZChmb3JtQ29tcC50aXRsZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtQ29tcC50aXRsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmb3JtQ29tcC50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0b2JqZWN0OiBmb3JtQ29tcFxyXG5cdFx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBbXVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW5bbEZvcm1GaWVsZHNUb2tlbi5sZW5ndGggLSAxXS52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldEVkaXRHcmlkQ29tcG9uZW5ldChjb21wb25lbnRzLCBuZXdDb21wb25lbnRzLCBudWxsKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgZWRpdEdyaWQgZHluYW1pYyBmb3JtXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHNcclxuXHQgKiBAcGFyYW0gZm9ybVxyXG5cdCAqL1xyXG5cdGdldEVkaXRHcmlkQ29tcG9uZW5ldChjb21wb25lbnRzOiBhbnlbXSwgZm9ybTogYW55LCBwYW5lbE5hbWU6IHN0cmluZyk6IGFueVtdIHtcclxuXHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgPT09ICdlZGl0Z3JpZCcpIHtcclxuXHRcdFx0XHRmb3JtQ29tcC5wYW5lbE5hbWUgPSBwYW5lbE5hbWU7XHJcblx0XHRcdFx0Y29tcG9uZW50cy5wdXNoKGZvcm1Db21wKTtcclxuXHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb21wb25lbnRzIHx8IGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoZm9ybUNvbXAudHlwZSAmJiBmb3JtQ29tcC50eXBlID09PSAncGFuZWwnKSB7XHJcblx0XHRcdFx0XHRwYW5lbE5hbWUgPSBmb3JtQ29tcC50aXRsZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29tcG9uZW50cyA9IHRoaXMuZ2V0RWRpdEdyaWRDb21wb25lbmV0KGNvbXBvbmVudHMsIG5ld0NvbXBvbmVudHMsIHBhbmVsTmFtZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBjb21wb25lbnRzO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgdGhlIHRva2VucyBieSBwcm9tQ29kaWdvICovXHJcblx0Z2V0TGlzdEJ5UHJvbUNvZGlnbyhwcm9tQ29kZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL2dldEJ5UHJvbUNvZGlnbycsXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgncHJvbUNvZGlnbycsIHByb21Db2RlLnRvU3RyaW5nKCkpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyB0aGUgdG9rZW4gYnkgaWQgKi9cclxuXHRnZXRCeUlkKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICd0b2tlbi9nZXRCeUlkJywge1xyXG5cdFx0XHRwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdpZCcsIGlkLnRvU3RyaW5nKCkpXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCBkZWxldGVzIGEgZm9ybSBieSBpZCAqL1xyXG5cdGRlbGV0ZShpZCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmRlbGV0ZShcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICd0b2tlbi9kZWxldGUnLFxyXG5cdFx0XHR7IHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2lkJywgaWQpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgc2F2ZXMgdGhlIHRva2VuICovXHJcblx0c2F2ZSh0b2tlbjogVG9rZW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL3NhdmUnLFxyXG5cdFx0XHR0b2tlbixcclxuXHRcdFx0SEVBREVSX0pTT05cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtVGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XHJcblx0XHRpZiAoVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1UaXRsZSkpIHtcclxuXHRcdFx0cmV0dXJuIChcclxuXHRcdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0ZPUk0pICtcclxuXHRcdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoZm9ybVRpdGxlKS5yZXBsYWNlKC9fL2csICctJylcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHRcdHJldHVybiAnJztcclxuXHR9XHJcblxyXG5cdC8qKiBJdCByZXR1cm5zIHRoZSB1bmlxdWUgdmVyaWZpY2F0aW9uIGNvZGUgKi9cclxuXHRnZXRVbmlxdWVWZXJpZmljYXRpb25Db2RlKGxvZ2luOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmRvY3VtZW50c1JlcG9zaXRvcnkgK1xyXG5cdFx0XHRcdCdkb2N1bWVudG8vY29uc3VsdGFyQ29kaWdvVW5pY28vJyArXHJcblx0XHRcdFx0bG9naW4gK1xyXG5cdFx0XHRcdCcvJyArXHJcblx0XHRcdFx0dG9rZW4sXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgc2VuZCB0aGUgaW5mb3JtYXRpb24gdG8gY29weSB0aGUgRG9jdW1lbnQgdmlld2VyICovXHJcblx0Y29weURvY3VtZW50SW5mb3JtYXRpb25WaWV3ZXIoXHJcblx0XHRsb2dpbjogc3RyaW5nLFxyXG5cdFx0dG9rZW46IHN0cmluZyxcclxuXHRcdHVuaXF1ZUNvZGU6IHN0cmluZyxcclxuXHRcdGRvY3VtZW50VVJMOiBzdHJpbmcsXHJcblx0XHRkb2N1bWVudE5hbWU6IHN0cmluZ1xyXG5cdCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgaW5mb0RvY3VtZW50byA9IHtcclxuXHRcdFx0Y29kaWdvVW5pY286IHVuaXF1ZUNvZGUsXHJcblx0XHRcdHJ1dGFEb2N1bWVudG86IGRvY3VtZW50VVJMLFxyXG5cdFx0XHRkb2N1bWVudE5hbWU6IGRvY3VtZW50TmFtZVxyXG5cdFx0fTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuZG9jdW1lbnRzUmVwb3NpdG9yeSArXHJcblx0XHRcdFx0J2RvY3VtZW50by9hZGljaW9uYXJEb2N1bWVudG8vJyArXHJcblx0XHRcdFx0bG9naW4gK1xyXG5cdFx0XHRcdCcvJyArXHJcblx0XHRcdFx0dG9rZW4sXHJcblx0XHRcdGluZm9Eb2N1bWVudG8sXHJcblx0XHRcdEhFQURFUl9KU09OXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleUJ1ZGdldCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQlVER0VUKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlEb2N1bWVudCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRE9DVU1FTlRPKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlEb2N1bWVudEFuYWx5c2lzKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9ET0NVTUVOVE9fQU5BTFlTSVNfVFlQRSk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5VGFzaygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfVEFTS0wpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleVN0YXRpYygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU1RBVElDKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlDYWxjdWxhdGVkKHRva2VuOiBUb2tlbik6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0NBTENVTEFURUQpICtcclxuXHRcdFx0J18nICtcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKHRva2VuLm5hbWUpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleVNuYXBzaG90KHRva2VuOiBUb2tlbik6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NOQVBTSE9UKSArXHJcblx0XHRcdCdfJyArXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyh0b2tlbi5uYW1lKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlHdWFyYW50ZWUodG9rZW46IFBsaUNuZkd1YXJhbnRlZVRva2VuKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfR1VBUkFOVEVFKSArXHJcblx0XHRcdCdfJyArXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyh0b2tlbi5uYW1lKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHVybiBhIHZhbHVlIHRoYXQgcmVwcmVzZW50IHRoZSB0eXBlIG9mIGxhYmVsOiAxPUZvcm0sIDI9QnVkZ2V0LCAzPVN0YXRpYywgND1DYWxjdWxhdGVkXHJcblx0ICogQHBhcmFtIGtleSBWYWx1ZSB0byBldmFsdWVhdGVcclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0S2V5VHlwZShrZXk6IHN0cmluZyk6IG51bWJlciB7XHJcblx0XHRrZXkgPSBrZXkucmVwbGFjZSgneycsICcnKS5yZXBsYWNlKCd9JywgJycpO1xyXG5cdFx0a2V5ID0ga2V5LnN1YnN0cmluZygxLCBrZXkuaW5kZXhPZignXycpKTtcclxuXHRcdGlmIChrZXkuc3RhcnRzV2l0aChVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0ZPUk0pKSkge1xyXG5cdFx0XHRyZXR1cm4gMTtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdGtleS5zdGFydHNXaXRoKFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQlVER0VUKSlcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gMjtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdGtleS5zdGFydHNXaXRoKFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU1RBVElDKSlcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gMztcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdGtleS5zdGFydHNXaXRoKFxyXG5cdFx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRClcclxuXHRcdFx0KVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiA0O1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9UQVNLTCkpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIDU7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChcclxuXHRcdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0RPQ1VNRU5UT19BTkFMWVNJU19UWVBFKVxyXG5cdFx0XHQpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIDY7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlcGVuZHMgb2YgdGhlIHR5cGUgb2YgZm9ybUZpZWxkVG9rZW4gcmV0dXJuIGRlIHZhbHVlIG9mIHRoZSB2YWx1ZURhdGFcclxuXHQgKiBAcGFyYW0gZm9ybUZpZWxkVG9rZW5cclxuXHQgKiBAcGFyYW0gdmFsdWVEYXRhXHJcblx0ICovXHJcblx0Z2V0VmFsdWVGcm9tRm9ybUZpZWxkKGZvcm1GaWVsZFRva2VuOiBhbnksIHZhbHVlRGF0YTogYW55KTogYW55IHtcclxuXHRcdGlmICh0eXBlb2YgdmFsdWVEYXRhID09ICdvYmplY3QnKSB7XHJcblx0XHRcdGlmIChmb3JtRmllbGRUb2tlbi50eXBlKSB7XHJcblx0XHRcdFx0aWYgKGZvcm1GaWVsZFRva2VuLnR5cGUgPT0gJ2FkZHJlc3MnKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWVEYXRhLmZvcm1hdHRlZF9hZGRyZXNzO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRmb3JtRmllbGRUb2tlbi50eXBlID09ICdzZWxlY3QnICYmXHJcblx0XHRcdFx0XHR2YWx1ZURhdGEuaGFzT3duUHJvcGVydHkoZm9ybUZpZWxkVG9rZW4uc2VhcmNoRmllbGQpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhmb3JtRmllbGRUb2tlbik7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh2YWx1ZURhdGEpO1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRpZih2YWx1ZURhdGEuaGFzT3duUHJvcGVydHkoJ29yaWdpbmFsX25hbWUnKSAhPT0gJycpe1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWVEYXRhLm9yaWdpbmFsX25hbWU7XHJcblx0XHRcdFx0XHR9ZWxzZSBpZih2YWx1ZURhdGEuaGFzT3duUHJvcGVydHkoJ25hdGl2ZU5hbWUnKSAhPT0gJycpe1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWVEYXRhLm5hdGl2ZU5hbWU7XHJcblx0XHRcdFx0XHR9ZWxzZSBpZihmb3JtRmllbGRUb2tlbi5zZWFyY2hGaWVsZCl7XHJcblx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZURhdGFbZm9ybUZpZWxkVG9rZW4uc2VhcmNoRmllbGRdO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHZhbHVlRGF0YTtcclxuXHR9XHJcblx0Zm9ybWF0RGF0ZSh2YWx1ZTogRGF0ZSwgbG9jYWxlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuXHJcblx0XHRjb25zdCBtb250aHMgPSB7XHJcblx0XHRcdGVzOiBbXHJcblx0XHRcdFx0J2VuZXJvJyxcclxuXHRcdFx0XHQnZmVicmVybycsXHJcblx0XHRcdFx0J21hcnpvJyxcclxuXHRcdFx0XHQnYWJyaWwnLFxyXG5cdFx0XHRcdCdtYXlvJyxcclxuXHRcdFx0XHQnanVuaW8nLFxyXG5cdFx0XHRcdCdqdWxpbycsXHJcblx0XHRcdFx0J2Fnb3N0bycsXHJcblx0XHRcdFx0J3NlcHRpZW1icmUnLFxyXG5cdFx0XHRcdCdvY3R1YnJlJyxcclxuXHRcdFx0XHQnbm92aWVtYnJlJyxcclxuXHRcdFx0XHQnZGljaWVtYnJlJ1xyXG5cdFx0XHRdLFxyXG5cdFx0XHRlbjogW1xyXG5cdFx0XHRcdCdKYW51YXJ5JyxcclxuXHRcdFx0XHQnRmVicnVhcnknLFxyXG5cdFx0XHRcdCdNYXJjaCcsXHJcblx0XHRcdFx0J0FwcmlsJyxcclxuXHRcdFx0XHQnTWF5JyxcclxuXHRcdFx0XHQnSnVuZScsXHJcblx0XHRcdFx0J0p1bHknLFxyXG5cdFx0XHRcdCdBdWd1c3QnLFxyXG5cdFx0XHRcdCdTZXB0ZW1iZXInLFxyXG5cdFx0XHRcdCdPY3RvYmVyJyxcclxuXHRcdFx0XHQnTm92ZW1iZXInLFxyXG5cdFx0XHRcdCdEZWNlbWJlcidcclxuXHRcdFx0XSxcclxuXHRcdFx0ZnI6IFtcclxuXHRcdFx0XHQnamFudmllcicsXHJcblx0XHRcdFx0J2bDqXZyaWVyJyxcclxuXHRcdFx0XHQnbWFycycsXHJcblx0XHRcdFx0J2F2cmlsJyxcclxuXHRcdFx0XHQnbWFpJyxcclxuXHRcdFx0XHQnanVpbicsXHJcblx0XHRcdFx0J2p1aWxsZXQnLFxyXG5cdFx0XHRcdCdhb8O7dCcsXHJcblx0XHRcdFx0J3NlcHRlbWJyZScsXHJcblx0XHRcdFx0J29jdG9icmUnLFxyXG5cdFx0XHRcdCdub3ZlbWJyZScsXHJcblx0XHRcdFx0J2TDqWNlbWJyZSdcclxuXHRcdFx0XSxcclxuXHRcdFx0ZGU6IFtcclxuXHRcdFx0XHQnSmFudWFyJyxcclxuXHRcdFx0XHQnRmVicnVhcicsXHJcblx0XHRcdFx0J03DpHJ6JyxcclxuXHRcdFx0XHQnQXByaWwnLFxyXG5cdFx0XHRcdCdNYWknLFxyXG5cdFx0XHRcdCdKdW5pJyxcclxuXHRcdFx0XHQnSnVsaScsXHJcblx0XHRcdFx0J0F1Z3VzdCcsXHJcblx0XHRcdFx0J1NlcHRlbWJlcicsXHJcblx0XHRcdFx0J09rdG9iZXInLFxyXG5cdFx0XHRcdCdOb3ZlbWJlcicsXHJcblx0XHRcdFx0J0RlemVtYmVyJ1xyXG5cdFx0XHRdLFxyXG5cdFx0XHRpdDogW1xyXG5cdFx0XHRcdCdnZW5uYWlvJyxcclxuXHRcdFx0XHQnZmViYnJhaW8nLFxyXG5cdFx0XHRcdCdtYXJ6bycsXHJcblx0XHRcdFx0J2FwcmlsZScsXHJcblx0XHRcdFx0J21hZ2dpbycsXHJcblx0XHRcdFx0J2dpdWdubycsXHJcblx0XHRcdFx0J2x1Z2xpbycsXHJcblx0XHRcdFx0J2Fnb3N0bycsXHJcblx0XHRcdFx0J3NldHRlbWJyZScsXHJcblx0XHRcdFx0J290dG9icmUnLFxyXG5cdFx0XHRcdCdub3ZlbWJyZScsXHJcblx0XHRcdFx0J2RpY2VtYnJlJ1xyXG5cdFx0XHRdXHJcblx0XHR9O1xyXG5cclxuXHRcdGNvbnN0IGxvY2FsZU1vbnRocyA9IG1vbnRoc1tsb2NhbGVdO1xyXG5cclxuXHRcdGNvbnN0IG1vbnRoID0gbG9jYWxlTW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XHJcblx0XHRjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG5cclxuXHRcdHJldHVybiBgJHttb250aH0gJHt5ZWFyfWA7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFRyeSB0byBmaW5kIHRoZSB0b2tlbiBpbiB0aGUgc3RyaW5nVGV4dCBhbmQgcmVwbGFjZSB3aXRoIGRhdGFWYWx1ZS4gSWYgZGV0ZWN0IGZvcm1hdCBvZiBudW1iZXIgb3IgZGF0ZSB0cnkgdG8gZm9ybWF0IHRoZSBkYXRhVmFsdWVcclxuXHQgKiBAcGFyYW0gc3RyaW5nVGV4dFxyXG5cdCAqIEBwYXJhbSB0b2tlblxyXG5cdCAqIEBwYXJhbSBkYXRhVmFsdWVcclxuXHQgKi9cclxuXHRyZXBsYWNlVG9rZW4oc3RyaW5nVGV4dDogc3RyaW5nLCB0b2tlbjogYW55LCBkYXRhVmFsdWU6IGFueSwgbG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRcdGxldCB2YWx1ZVJlcGxhY2U6IHN0cmluZyA9IG51bGw7XHJcblx0XHRpZiAodG9rZW4gJiYgdG9rZW5bMF0gPT0gJyMnKSB7XHJcblx0XHRcdGxldCB0eXBlVG9rZW4gPSB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4uaW5kZXhPZignKCcpKTtcclxuXHRcdFx0aWYgKHR5cGVUb2tlbiA9PSAnZGF0ZScpIHtcclxuXHRcdFx0XHRsZXQgZGF0ZUZvcm1hdDogc3RyaW5nID0gdG9rZW4uc3Vic3RyaW5nKFxyXG5cdFx0XHRcdFx0dG9rZW4uaW5kZXhPZignfScpICsgMSxcclxuXHRcdFx0XHRcdHRva2VuLmluZGV4T2YoJyknKVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0ZGF0ZUZvcm1hdCA9IGRhdGVGb3JtYXQudHJpbSgpLnJlcGxhY2UoL1xcXCIvZywgJycpLnJlcGxhY2UoL1xcJy9nLCAnJyk7XHJcblx0XHRcdFx0bGV0IGRhdGVWYWx1ZSA9IERhdGVVdGlsLmdldERhdGUoZGF0YVZhbHVlKTtcclxuXHRcdFx0XHRpZiAobG9jYWxlICE9IG51bGwgJiYgbG9jYWxlKSB7XHJcblx0XHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSB0aGlzLmZvcm1hdERhdGUoZGF0ZVZhbHVlLCBsb2NhbGUpO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZGF0ZVZhbHVlKSB7XHJcblx0XHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSBEYXRlVXRpbC5nZXRNb21lbnQoZGF0ZVZhbHVlKS5mb3JtYXQoZGF0ZUZvcm1hdCk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9ICcnO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIGlmICh0eXBlVG9rZW4gPT0gJ251bWJlcicpIHtcclxuXHRcdFx0XHRsZXQgbnVtYmVyVmFsdWU6IG51bWJlciA9IE51bWJlcihkYXRhVmFsdWUpO1xyXG5cdFx0XHRcdGlmIChudW1iZXJWYWx1ZSAhPSB1bmRlZmluZWQgJiYgIWlzTmFOKG51bWJlclZhbHVlKSkge1xyXG5cdFx0XHRcdFx0bGV0IG51bWJlckZvcm1hdDogc3RyaW5nID0gdG9rZW4uc3Vic3RyaW5nKFxyXG5cdFx0XHRcdFx0XHR0b2tlbi5pbmRleE9mKCd9JykgKyAxLFxyXG5cdFx0XHRcdFx0XHR0b2tlbi5pbmRleE9mKCcpJylcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRudW1iZXJGb3JtYXQgPSBudW1iZXJGb3JtYXQudHJpbSgpLnJlcGxhY2UoL1xcXCIvZywgJycpLnJlcGxhY2UoL1xcJy9nLCAnJyk7XHJcblx0XHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSB0aGlzLmN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oXHJcblx0XHRcdFx0XHRcdG51bWJlclZhbHVlLFxyXG5cdFx0XHRcdFx0XHR0aGlzLmxvY2FsZSxcclxuXHRcdFx0XHRcdFx0JycsXHJcblx0XHRcdFx0XHRcdG51bWJlckZvcm1hdFxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXHJcblx0XHRcdFx0XHRcdCdFbCBkYXRvIFsnICtcclxuXHRcdFx0XHRcdFx0XHRkYXRhVmFsdWUgK1xyXG5cdFx0XHRcdFx0XHRcdCddIHBhcmEgZWwgdG9rZW4gWycgK1xyXG5cdFx0XHRcdFx0XHRcdHRva2VuICtcclxuXHRcdFx0XHRcdFx0XHQnXSB0aXBvIG7Dum1lcmljbyBubyBlcyB2YWxpZG8nXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0dmFsdWVSZXBsYWNlID0gJyc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCd0aXBvIGRlIHRva2VuIGluZGVmaW5pZG8uIFt0eXBlVG9rZW5bJyArIHR5cGVUb2tlbiArICddXScpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHRva2VuICYmIHRva2VuWzBdID09ICckJykge1xyXG5cdFx0XHRpZihkYXRhVmFsdWUub3JpZ2luYWxfbmFtZSAhPT0gdW5kZWZpbmVkICYmIGRhdGFWYWx1ZS5vcmlnaW5hbF9uYW1lICE9PSBudWxsKSB7XHJcblx0XHRcdFx0dmFsdWVSZXBsYWNlID0gZGF0YVZhbHVlLm9yaWdpbmFsX25hbWU7XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHZhbHVlUmVwbGFjZSA9IGRhdGFWYWx1ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRcdC8vIHZhbHVlUmVwbGFjZSA9IGRhdGFWYWx1ZTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdFbCB0b2tlbiBubyBlcyB2YWxpZG8uIFt0b2tlblsnICsgdG9rZW4gKyAnXV0nKTtcclxuXHRcdH1cclxuXHRcdGlmIChzdHJpbmdUZXh0ICYmIHZhbHVlUmVwbGFjZSAhPT0gbnVsbCkge1xyXG5cdFx0XHQvLyByZXBsYWNlIHRleHQgaW4gYSBtb3JlIGVmZmljaWVudCB3YXlcclxuXHRcdFx0c3RyaW5nVGV4dCA9IHN0cmluZ1RleHQuc3BsaXQodG9rZW4pLmpvaW4odmFsdWVSZXBsYWNlKTtcclxuXHRcdFx0Ly9zdHJpbmdUZXh0ID0gc3RyaW5nVGV4dC5yZXBsYWNlKHRva2VuLCB2YWx1ZVJlcGxhY2UpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHN0cmluZ1RleHQ7XHJcblx0fVxyXG5cclxuXHRnZXRMaXN0VG9rZW5zQnlTdHJpbmdTZWdtZW50YXRpb24oc3RyaW5nVGV4dDogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0Y29uc3QgYXJyYXlUb2tlbiA9IHN0cmluZ1RleHQubWF0Y2goL1xcJHsoW159XSspXFx9L2cpO1xyXG5cdFx0Y29uc3QgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCNkYXRlW14pXStcXCkvZyk7XHJcblx0XHRjb25zdCBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwjbnVtYmVyW14pXStcXCkvZyk7XHJcblx0XHRsZXQgYXJyYXlUb2tlbkZvcm1hdHRlZCA9IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmNvbmNhdChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgJiYgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuc2xpY2UoKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJiBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIuc2xpY2UoKTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcblx0XHRpZiAoYXJyYXlUb2tlbikge1xyXG5cdFx0XHRmb3IgKGNvbnN0IHRva2VuIG9mIGFycmF5VG9rZW4pIHtcclxuXHRcdFx0XHRjb25zdCBpbmZvVG9rZW4gPSB7IGtleTogdG9rZW4sIHZhbHVlOiB0b2tlbiB9O1xyXG5cdFx0XHRcdGlmIChhcnJheVRva2VuRm9ybWF0dGVkKSB7XHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHRva2VuRm9ybWF0dGVkIG9mIGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgaW5kZXggPSB0b2tlbkZvcm1hdHRlZC5pbmRleE9mKHRva2VuKTtcclxuXHRcdFx0XHRcdFx0aWYgKGluZGV4ID49IDApIHtcclxuXHRcdFx0XHRcdFx0XHRpbmZvVG9rZW4udmFsdWUgPSB0b2tlbkZvcm1hdHRlZDtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXN1bHQucHVzaChpbmZvVG9rZW4pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHR9XHJcblxyXG5cdGNoYW5nZUlkUHJvcGVydGllc09mT2JqZWN0KG5vcm1hbGl6YXRpb25Db2x1bW5zOiBhbnlbXSwgbGlzdERhdGE6IGFueVtdKTogYW55W10ge1xyXG5cdFx0Y29uc3QgbmV3RGF0YSA9IFtdO1xyXG5cdFx0bGlzdERhdGEuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG5cdFx0XHRjb25zdCBvYmpEYXRhID0ge307XHJcblx0XHRcdE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XHJcblx0XHRcdFx0aWYgKGRhdGEuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKSB7XHJcblx0XHRcdFx0XHRub3JtYWxpemF0aW9uQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKGNvbHVtbi5pZENvbHVtbi50b1N0cmluZygpID09PSBwcm9wZXJ0eSkge1xyXG5cdFx0XHRcdFx0XHRcdG9iakRhdGFbY29sdW1uLmtleV0gPSBkYXRhW3Byb3BlcnR5XTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0aWYgKG9iakRhdGEpIHtcclxuXHRcdFx0XHRuZXdEYXRhLnB1c2gob2JqRGF0YSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIG5ld0RhdGE7XHJcblx0fVxyXG5cclxuXHRnZW5lcmF0ZUh0bWxCeVRva2Vuc0FuZERhdGEoaHRtbDogc3RyaW5nLCBsaXN0RGF0YTogYW55W10sIGxpc3RUb2tlbnM6IGFueVtdKTogc3RyaW5nW10ge1xyXG5cdFx0Y29uc3QgdHJhbnNsYXRlZENhcmRzOiBhbnlbXSA9IFtdO1xyXG5cdFx0bGlzdERhdGEuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG5cdFx0XHRjb25zdCBvYmpUb2tlbiA9IHt9O1xyXG5cdFx0XHRjb25zdCBodG1sVHJhbnNsYXRlZCA9IHsgaHRtbDogaHRtbCB9O1xyXG5cdFx0XHRPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xyXG5cdFx0XHRcdGxpc3RUb2tlbnMuZm9yRWFjaCgodG9rZW4pID0+IHtcclxuXHRcdFx0XHRcdGlmIChwcm9wZXJ0eSA9PSB0b2tlbi5rZXkucmVwbGFjZSgnJHsnLCAnJykucmVwbGFjZSgnfScsICcnKSkge1xyXG5cdFx0XHRcdFx0XHRvYmpUb2tlblt0b2tlbi5rZXldID0gZGF0YVtwcm9wZXJ0eV07XHJcblx0XHRcdFx0XHRcdGh0bWxUcmFuc2xhdGVkLmh0bWwgPSBodG1sVHJhbnNsYXRlZC5odG1sLnJlcGxhY2UoXHJcblx0XHRcdFx0XHRcdFx0dG9rZW4ua2V5LFxyXG5cdFx0XHRcdFx0XHRcdGRhdGFbcHJvcGVydHldXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHR0cmFuc2xhdGVkQ2FyZHMucHVzaChodG1sVHJhbnNsYXRlZCk7XHJcblx0XHR9KTtcclxuXHRcdHJldHVybiB0cmFuc2xhdGVkQ2FyZHM7XHJcblx0fVxyXG5cclxuXHRnZXRMaXN0VG9rZW5zQnlTdHJpbmcoc3RyaW5nVGV4dDogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0dmFyIGFycmF5VG9rZW4gPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCR7KFtefV0rKVxcfS9nKTtcclxuXHRcdHZhciBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSA9IHN0cmluZ1RleHQubWF0Y2goL1xcI2RhdGVbXildK1xcKS9nKTtcclxuXHRcdHZhciBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwjbnVtYmVyW14pXStcXCkvZyk7XHJcblx0XHR2YXIgYXJyYXlUb2tlbkZvcm1hdHRlZCA9IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmNvbmNhdChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgJiYgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuc2xpY2UoKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJiBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIuc2xpY2UoKTtcclxuXHRcdH1cclxuXHRcdHZhciByZXN1bHQ6IGFueVtdID0gW107XHJcblxyXG5cdFx0aWYgKGFycmF5VG9rZW4pIHtcclxuXHRcdFx0Zm9yIChjb25zdCB0b2tlbiBvZiBhcnJheVRva2VuKSB7XHJcblx0XHRcdFx0bGV0IGtleVR5cGU6IG51bWJlciA9IFRva2VuU2VydmljZS5nZXRLZXlUeXBlKHRva2VuKTtcclxuXHRcdFx0XHRpZiAoa2V5VHlwZSA9PT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciBpbmZvVG9rZW4gPSB7IGtleTogdG9rZW4sIHZhbHVlOiB0b2tlbiB9O1xyXG5cdFx0XHRcdGlmIChhcnJheVRva2VuRm9ybWF0dGVkKSB7XHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHRva2VuRm9ybWF0dGVkIG9mIGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdFx0dmFyIGluZGV4ID0gdG9rZW5Gb3JtYXR0ZWQuaW5kZXhPZih0b2tlbik7XHJcblx0XHRcdFx0XHRcdGlmIChpbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0aW5mb1Rva2VuLnZhbHVlID0gdG9rZW5Gb3JtYXR0ZWQ7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmVzdWx0LnB1c2goaW5mb1Rva2VuKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiByZXN1bHQ7XHJcblxyXG5cdFx0Ly8gbGV0IHRva2VuczogYW55W10gPSBbXTtcclxuXHRcdC8vIGxldCBpID0gdGhpcy5uZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0LCAwKTtcclxuXHRcdC8vIGxldCBjb3VudCA9IDA7XHJcblx0XHQvLyB3aGlsZSAoaSA+PSAwICYmIGNvdW50IDw9IDEwKSB7XHJcblx0XHQvLyAgIGxldCBpbmZvVG9rZW46IHt9ID0gbnVsbDtcclxuXHRcdC8vICAgbGV0IG5leHRJOiBudW1iZXIgPSBpO1xyXG5cdFx0Ly8gICBsZXQgY2hhcmFjdGVyID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoaSwgKGkgKyAxKSk7XHJcblx0XHQvLyAgIGlmIChjaGFyYWN0ZXIgPT0gXCIkXCIpIHtcclxuXHRcdC8vICAgICBsZXQgbmV4dENoYXJhY3RlciA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKChpICsgMSksIChpICsgMikpO1xyXG5cdFx0Ly8gICAgIC8vIFRoZSBuZXh0IGNoYXJhY3RlciBuZWVkIHRvIGJlIGEgeyBzaWduXHJcblx0XHQvLyAgICAgaWYgKG5leHRDaGFyYWN0ZXIgIT0gXCJ7XCIpIHtcclxuXHRcdC8vICAgICAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJICsgMSk7XHJcblx0XHQvLyAgICAgICBjb250aW51ZTtcclxuXHRcdC8vICAgICB9XHJcblx0XHQvLyAgICAgbGV0IGtleVRva2VuOiBzdHJpbmcgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyhpLCBzdHJpbmdUZXh0LmluZGV4T2YoXCJ9XCIsIGkpICsgMSk7XHJcblx0XHQvLyAgICAgLy8gSWYgdGhlIHRva2VuIGhhdmUgYSB2YWxpZCBrZXkgdHlwZVxyXG5cdFx0Ly8gICAgIGxldCBrZXlUeXBlOiBudW1iZXIgPSBUb2tlblNlcnZpY2UuZ2V0S2V5VHlwZShrZXlUb2tlbi5yZXBsYWNlKFwie1wiLCBcIlwiKS5yZXBsYWNlKFwifVwiLCBcIlwiKSk7XHJcblx0XHQvLyAgICAgaWYgKGtleVR5cGUgPT09IG51bGwpIHtcclxuXHRcdC8vICAgICAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJICsgMSk7XHJcblx0XHQvLyAgICAgICBjb250aW51ZTtcclxuXHRcdC8vICAgICB9XHJcblx0XHQvLyAgICAgaW5mb1Rva2VuID0ge1xyXG5cdFx0Ly8gICAgICAga2V5OiBrZXlUb2tlbixcclxuXHRcdC8vICAgICAgIHZhbHVlOiBrZXlUb2tlblxyXG5cdFx0Ly8gICAgIH07XHJcblx0XHQvLyAgICAgbmV4dEkgPSBzdHJpbmdUZXh0LmluZGV4T2YoXCJ9XCIsIGkpO1xyXG5cdFx0Ly8gICB9IGVsc2Uge1xyXG5cdFx0Ly8gICAgIGxldCBuZXh0U2lnbjogbnVtYmVyID0gc3RyaW5nVGV4dC5pbmRleE9mKFwiJFwiLCBpKTtcclxuXHRcdC8vICAgICAvLyBXZSBpbmx5IHN1cHBvcnQgI2RhdGUoJCBhbmQgI251bWJlcigkIGluIHRoaXMgMiBzY2VuYXJpb3MgdGhlIGxlbmdodCBjYW4ndCBiZSBtb3JlIHRoYW4gMTAgY2hhcmFjdGVyc1xyXG5cdFx0Ly8gICAgIGlmIChuZXh0U2lnbiA8IDAgfHwgKG5leHRTaWduIC0gaSkgPiAxMCkge1xyXG5cdFx0Ly8gICAgICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkgKyAxKTtcclxuXHRcdC8vICAgICAgIGNvbnRpbnVlO1xyXG5cdFx0Ly8gICAgIH1cclxuXHRcdC8vICAgICBsZXQga2V5VG9rZW46IHN0cmluZyA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKHN0cmluZ1RleHQuaW5kZXhPZihcIiRcIiwgaSksIHN0cmluZ1RleHQuaW5kZXhPZihcIn1cIiwgaSkgKyAxKTtcclxuXHRcdC8vICAgICBsZXQgdmFsdWVUb2tlbjogc3RyaW5nID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoaSwgc3RyaW5nVGV4dC5pbmRleE9mKFwiKVwiLCBpKSArIDEpO1xyXG5cdFx0Ly8gICAgIGluZm9Ub2tlbiA9IHtcclxuXHRcdC8vICAgICAgIGtleToga2V5VG9rZW4sXHJcblx0XHQvLyAgICAgICB2YWx1ZTogdmFsdWVUb2tlblxyXG5cdFx0Ly8gICAgIH07XHJcblx0XHQvLyAgICAgbmV4dEkgPSBzdHJpbmdUZXh0LmluZGV4T2YoXCIpXCIsIGkpO1xyXG5cdFx0Ly8gICB9XHJcblx0XHQvLyAgIHRva2Vucy5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHQvLyAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJKTtcclxuXHRcdC8vICAgY291bnQrKztcclxuXHRcdC8vIH1cclxuXHRcdC8vIHJldHVybiB0b2tlbnM7XHJcblx0fVxyXG5cclxuXHRuZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0OiBzdHJpbmcsIG5leHRJOiBudW1iZXIpOiBudW1iZXIge1xyXG5cdFx0bGV0IHRva2VuRG9sbGFyU2lnbjogbnVtYmVyID0gc3RyaW5nVGV4dC5pbmRleE9mKCckJywgbmV4dEkpO1xyXG5cdFx0bGV0IHRva2VuTnVtU2lnbjogbnVtYmVyID0gc3RyaW5nVGV4dC5pbmRleE9mKCcjJywgbmV4dEkpO1xyXG5cdFx0bGV0IGk6IG51bWJlciA9XHJcblx0XHRcdHRva2VuRG9sbGFyU2lnbiA8IDAgJiYgdG9rZW5OdW1TaWduID49IDBcclxuXHRcdFx0XHQ/IHRva2VuTnVtU2lnblxyXG5cdFx0XHRcdDogdG9rZW5OdW1TaWduIDwgMCAmJiB0b2tlbkRvbGxhclNpZ24gPj0gMFxyXG5cdFx0XHRcdD8gdG9rZW5Eb2xsYXJTaWduXHJcblx0XHRcdFx0OiB0b2tlbkRvbGxhclNpZ24gPCB0b2tlbk51bVNpZ25cclxuXHRcdFx0XHQ/IHRva2VuRG9sbGFyU2lnblxyXG5cdFx0XHRcdDogdG9rZW5OdW1TaWduO1xyXG5cdFx0cmV0dXJuIGk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXVzZXMgcmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0UHVibGljIGJ1dCBzZXQgYWxsIGtleXMgbG9iamVjdHRva2VucyBhcyBsb3dlcmNhc2VcclxuXHQgKiBAcGFyYW0gdG9rZW5OYW1lXHJcblx0ICogQHBhcmFtIGZvcm11bGFcclxuXHQgKiBAcGFyYW0gbE9iamVjdFRva2Vuc1xyXG5cdCAqL1xyXG5cdHJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdFB1YmxpYyhcclxuXHRcdHRva2VuTmFtZTogc3RyaW5nLFxyXG5cdFx0Zm9ybXVsYTogc3RyaW5nLFxyXG5cdFx0bE9iamVjdFRva2VuczogYW55W11cclxuXHQpOiBzdHJpbmcge1xyXG5cdFx0bGV0IGxEYXRhT3JnOiBhbnlbXSA9IFtdO1xyXG5cdFx0aWYgKGxPYmplY3RUb2tlbnMpIHtcclxuXHRcdFx0Zm9yIChsZXQgZGF0YUZvcm0gaW4gbE9iamVjdFRva2Vucykge1xyXG5cdFx0XHRcdGxEYXRhT3JnW2RhdGFGb3JtLnRvTG93ZXJDYXNlKCldID0gbE9iamVjdFRva2Vuc1tkYXRhRm9ybV07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLnJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdCh0b2tlbk5hbWUsIGZvcm11bGEsIGxEYXRhT3JnKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQHBhcmFtIHRva2VuTmFtZSB0b2tlbiBuYW1lXHJcblx0ICogQHBhcmFtIGZvcm11bGEgU3RyaW5nIHdpdGggdGhlIGZvcm11bGEgdG8gZXhlY3V0ZVxyXG5cdCAqIEBwYXJhbSBsT2JqZWN0VG9rZW5zIExpc3Qgb2YgdG9rZW5zIHdpdGggdGhlIHZhbHVlcyB0byByZXBsYWNlXHJcblx0ICovXHJcblx0cmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0KHRva2VuTmFtZTogc3RyaW5nLCBmb3JtdWxhOiBzdHJpbmcsIGxPYmplY3RUb2tlbnM6IGFueSk6IHN0cmluZyB7XHJcblx0XHRpZiAoIWZvcm11bGEgfHwgZm9ybXVsYS5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHR0aHJvdyB7XHJcblx0XHRcdFx0bWVzc2FnZTogJ0xhIGZvcm11bGEgZGVsIHRva2VuICcgKyB0b2tlbk5hbWUgKyAnIGVzdGEgdmFjw61hJyxcclxuXHRcdFx0XHR0aXRsZTogJ0FsZXJ0YSEnLFxyXG5cdFx0XHRcdGVycm9yOlxyXG5cdFx0XHRcdFx0J0xhIGZvcm11bGEgZGVsIHRva2VuICcgKyB0b2tlbk5hbWUgKyAnIGVzdGEgdmFjw61hLiBbZm9ybXVsYVsnICsgZm9ybXVsYSArICddXSdcclxuXHRcdFx0fTtcclxuXHRcdH1cclxuXHRcdGxldCByZXBsYWNlZFRva2Vuczogc3RyaW5nID0gZm9ybXVsYS50b1N0cmluZygpO1xyXG5cdFx0aWYgKHJlcGxhY2VkVG9rZW5zLnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xyXG5cdFx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0XHR9XHJcblx0XHQvLyBGaW5kIHRoZSB0b2tlbnMgaW4gdGhlIGZvcm11bGFcclxuXHRcdGxldCB0b2tlbnNBcnJheTogYW55W10gPSB0aGlzLmdldExpc3RUb2tlbnNCeVN0cmluZyhyZXBsYWNlZFRva2Vucyk7XHJcblx0XHRpZiAodG9rZW5zQXJyYXkubGVuZ3RoID09IDApIHtcclxuXHRcdFx0cmV0dXJuIHJlcGxhY2VkVG9rZW5zO1xyXG5cdFx0fVxyXG5cdFx0Ly8gSWYgdGhlcmUgYW55IHRva2VuLCB0cnkgdG8gcmVwbGFjZVxyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnNBcnJheS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRsZXQgb2JqZWN0VG9rZW4gPVxyXG5cdFx0XHRcdGxPYmplY3RUb2tlbnNbdG9rZW5zQXJyYXlbaV0ua2V5XSAhPT0gdW5kZWZpbmVkXHJcblx0XHRcdFx0XHQ/IGxPYmplY3RUb2tlbnNbdG9rZW5zQXJyYXlbaV0ua2V5XVxyXG5cdFx0XHRcdFx0OiBudWxsO1xyXG5cdFx0XHRsZXQgY2xlYXJLZXk7XHJcblx0XHRcdGlmIChvYmplY3RUb2tlbiA9PSBudWxsKSB7XHJcblx0XHRcdFx0Y2xlYXJLZXkgPSB0b2tlbnNBcnJheVtpXS5rZXkucmVwbGFjZSgnJHsnLCAnJykucmVwbGFjZSgnfScsICcnKS50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0XHRcdG9iamVjdFRva2VuID1cclxuXHRcdFx0XHRcdGxPYmplY3RUb2tlbnNbY2xlYXJLZXldICE9PSB1bmRlZmluZWQgPyBsT2JqZWN0VG9rZW5zW2NsZWFyS2V5XSA6IG51bGw7XHJcblxyXG5cdFx0XHRcdGlmIChvYmplY3RUb2tlbiA9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRjbGVhcktleSA9IHRva2Vuc0FycmF5W2ldLmtleVxyXG5cdFx0XHRcdFx0XHQucmVwbGFjZSgneycsICcnKVxyXG5cdFx0XHRcdFx0XHQucmVwbGFjZSgnfScsICcnKVxyXG5cdFx0XHRcdFx0XHQuc3BsaXQoJ18nKVsxXVxyXG5cdFx0XHRcdFx0XHQudG9Mb3dlckNhc2UoKTtcclxuXHRcdFx0XHRcdG9iamVjdFRva2VuID1cclxuXHRcdFx0XHRcdFx0bE9iamVjdFRva2Vuc1tjbGVhcktleV0gIT09IHVuZGVmaW5lZCA/IGxPYmplY3RUb2tlbnNbY2xlYXJLZXldIDogbnVsbDtcclxuXHRcdFx0XHRcdGlmIChvYmplY3RUb2tlbiA9PT0gbnVsbCB8fCBvYmplY3RUb2tlbiA9PT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IGFycmF5S2V5ID0gdG9rZW5zQXJyYXlbaV0ua2V5XHJcblx0XHRcdFx0XHRcdFx0LnJlcGxhY2UoJ3snLCAnJylcclxuXHRcdFx0XHRcdFx0XHQucmVwbGFjZSgnfScsICcnKVxyXG5cdFx0XHRcdFx0XHRcdC5zcGxpdCgnXycpWzFdXHJcblx0XHRcdFx0XHRcdFx0LnNwbGl0KCcuJyk7XHJcblx0XHRcdFx0XHRcdGlmIChhcnJheUtleS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IHZhbHVlID0gbE9iamVjdFRva2VucztcclxuXHRcdFx0XHRcdFx0XHRmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlLZXkubGVuZ3RoOyBpbmRleCsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRsZXQgZWxlbWVudCA9IGFycmF5S2V5W2luZGV4XTtcclxuXHRcdFx0XHRcdFx0XHRcdGlmIChpbmRleCA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGVsZW1lbnQgPSBlbGVtZW50LnRvTG93ZXJDYXNlKCk7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZSA9IHZhbHVlW2VsZW1lbnRdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRvYmplY3RUb2tlbiA9IHZhbHVlO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChvYmplY3RUb2tlbiA9PSBudWxsKSB7XHJcblx0XHRcdFx0Ly8gSWYgbm90IGZpbmQgdGhlIHRva2VuLCBieSBkZWZhdWx0IHB1dCBhbiBlbXB0eSBzdHJpbmdcclxuXHRcdFx0XHQvKmlmIChUb2tlblNlcnZpY2UuZXhjbHVkZWRUb2tlbi5pbmRleE9mKGNsZWFyS2V5KSA9PT0gLTEpIHtcclxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXHJcblx0XHRcdFx0XHRcdCdFbCB0b2tlbiAnICsgdG9rZW5zQXJyYXlbaV0udmFsdWUgKyAnIG5vIGZ1ZSBlbmNvbnRyYWRvLicsXHJcblx0XHRcdFx0XHRcdGxPYmplY3RUb2tlbnMsXHJcblx0XHRcdFx0XHRcdHRva2Vuc0FycmF5XHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH0qL1xyXG5cdFx0XHRcdG9iamVjdFRva2VuID0gJyc7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKG9iamVjdFRva2VuICE9IG51bGwpIHtcclxuXHRcdFx0XHRsZXQgdmFsdWU6IGFueSA9IE51bWJlcihvYmplY3RUb2tlbilcclxuXHRcdFx0XHRcdD8gb2JqZWN0VG9rZW5cclxuXHRcdFx0XHRcdDogQXJyYXkuaXNBcnJheShvYmplY3RUb2tlbilcclxuXHRcdFx0XHRcdD8gSlNPTi5zdHJpbmdpZnkob2JqZWN0VG9rZW4pXHJcblx0XHRcdFx0XHQ6IFwiJ1wiICsgb2JqZWN0VG9rZW4gKyBcIidcIjtcclxuXHRcdFx0XHRyZXBsYWNlZFRva2VucyA9IHRoaXMucmVwbGFjZVRva2VuKHJlcGxhY2VkVG9rZW5zLCB0b2tlbnNBcnJheVtpXS52YWx1ZSwgdmFsdWUpO1xyXG5cdFx0XHRcdC8vIH0gZWxzZSB7XHJcblx0XHRcdFx0Ly8gICBjb25zb2xlLmVycm9yKGxPYmplY3RUb2tlbnMsIHRva2Vuc0FycmF5KTtcclxuXHRcdFx0XHQvLyAgIHRocm93IHtcclxuXHRcdFx0XHQvLyAgICAgbWVzc2FnZTogXCJObyBzZSBlbmNvbnRyw7MgdmFsb3IgcGFyYSB1biB0b2tlblwiLFxyXG5cdFx0XHRcdC8vICAgICB0aXRsZTogXCJBbGVydGEhXCIsXHJcblx0XHRcdFx0Ly8gICAgIGVycm9yOiBcIkVsIHRva2VuIFwiICsgdG9rZW5zQXJyYXlbaV0udmFsdWUgKyBcIiBubyBmdWUgZW5jb250cmFkby5cIlxyXG5cdFx0XHRcdC8vICAgfTtcclxuXHRcdFx0XHQvL1xyXG5cdFx0XHRcdC8vIFNpIGVzIGxhIHVsdGltYSBpdGVyYWNpb24geSBsYSBmb3JtdWxhIHRpZW5lIFsgZXMgcG9ycXVlIHRpZW5lIHVuIGFycmF5IGVuIGVsIHZhbG9yIHF1ZSByZXNvbHZpbyBlbCB0b2tlblxyXG5cdFx0XHRcdGlmIChpID09IHRva2Vuc0FycmF5Lmxlbmd0aCAtIDEgJiYgcmVwbGFjZWRUb2tlbnMuaW5jbHVkZXMoJ1snKSkge1xyXG5cdFx0XHRcdFx0Ly8gU2UgcG9uZW4gdG9kb3MgbG9zIG9wZXJhbmRvcyBjb21vIGVsZW1lbnRvcyBlbiB1biBhcnJheSBbJ2V4cHJlc2lvbiBhJywgJyYmJywgJ0V4cHJlc2lvbiBCJ11cclxuXHRcdFx0XHRcdGxldCBmb3JtRXhwcmVzc2lvbnM6IHN0cmluZ1tdID0gcmVwbGFjZWRUb2tlbnMuc3BsaXQoLyAoXFx8XFx8fCYmKSAvKTtcclxuXHRcdFx0XHRcdGxldCBsQXV4Zm9ybUV4cHJlc3Npb246IHN0cmluZ1tdID0gW107XHJcblx0XHRcdFx0XHRmb3JtRXhwcmVzc2lvbnMuZm9yRWFjaCgoZXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChleHByZXNzaW9uLmNoYXJBdCgwKSA9PSAnWycpIHtcclxuXHRcdFx0XHRcdFx0XHRsZXQgaXNUYWdGb3VuZDogc3RyaW5nID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0aXNUYWdGb3VuZCA9IHRoaXMuZmluZFRhZyhleHByZXNzaW9uKTtcclxuXHRcdFx0XHRcdFx0XHRsQXV4Zm9ybUV4cHJlc3Npb24ucHVzaChpc1RhZ0ZvdW5kKTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRsQXV4Zm9ybUV4cHJlc3Npb24ucHVzaChleHByZXNzaW9uKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRyZXBsYWNlZFRva2VucyA9IGxBdXhmb3JtRXhwcmVzc2lvbi5qb2luKCcgJyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBNRXRvZG8gcXVlIHRlbmllbmRvIHVuYSBleHByZXNpb24gZGUgbGEgZm9ybWEgWyd0YWcxJywgJ3RhZzInXT09dGFnM1xyXG5cdCAqIGV2YWx1YSBzaSB0YWczIGhhY2UgcGFydGUgZGVsIGFycmF5IHNpIHRpZW5lIGVsIG9wZXJhZG9yID09LlxyXG5cdCAqIFNpIHRpZW5lIGVsIG9wZXJhZG9yICE9IGV4YW1pbmEgcXVlIHRhZzMgbm8gaGFnYSBwYXJ0ZSBkZWwgYXJyYXkrXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZXhwcmVzc2lvbiBPcGVyYW5kbyBxdWUgZXZhbHVhIHRhZy4gRXMgZGUgbGEgZm9ybWEgWyd0YWcxJywgJ3RhZzInXT09dGFnM1xyXG5cdCAqIEByZXR1cm5zIFJldG9ybmEgJ3RydWUnIG8gJ2ZhbHNlJyBlbiBzdHJpbmcgcXVlIGRlc3B1ZXMgc2VyYSBwYXNhZG8gYSB1biBldmFsKClcclxuXHQgKiBtYXMgYWRlbGFudGUgZW4gZWwgZmx1am9cclxuXHQgKi9cclxuXHRmaW5kVGFnKGV4cHJlc3Npb246IHN0cmluZyk6IHN0cmluZyB7XHJcblx0XHRsZXQgcmVnZXhPcGVyYXRvciA9IG5ldyBSZWdFeHAoJyg9PT18PT18IT09fCE9KScpO1xyXG5cdFx0Ly8gUmV0b3JuYSBlbCBvcGVyYWRvclxyXG5cdFx0bGV0IG9wZXJhdG9yOiBzdHJpbmdbXSA9IGV4cHJlc3Npb24ubWF0Y2gocmVnZXhPcGVyYXRvcik7XHJcblx0XHQvLyBTaSBubyBlbmN1ZW50cmEgdW4gb3BlcmFkb3Igc2VndW4gZWwgcGF0cm9uIHJldG9ybmEgJ2ZhbHNlJ1xyXG5cdFx0Ly8gcGFyYSBldml0YXIgcmVzdWx0YWRvcyBpbmVzcGVyYWRvc1xyXG5cdFx0aWYgKG9wZXJhdG9yID09IG51bGwpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcignTm8gc2UgZW5jb250cm8gdW4gb3BlcmFkb3IgcGVybWl0aWRvIHBhcmEgbGEgZXhwcmVzaW9uJyk7XHJcblx0XHRcdHJldHVybiAnZmFsc2UnO1xyXG5cdFx0fVxyXG5cdFx0Ly8gU2VwYXJhIGxhIHNlbnRlbmNpYSBwb3IgZWwgb3BlcmFkb3JcclxuXHRcdC8vIExhIHByaW1lcmEgcGFydGUgZXMgZWwgdmFsb3IgcG9yIGVsIGN1YWwgc2UgcmVtcGxhemEgZWwgdG9rZW4gcXVlIGVzIHVuIGFycmF5IGVuIHN0cmluZyBcIlsnYScsICdiJ11cIlxyXG5cdFx0Ly8gRWwgc2VndW5kbyBlcyBlbCB2YWxvciBjb24gZWwgY3VhbCBzZSB2YSBhIGNvbXBhcmFyXHJcblx0XHRsZXQgdmFsdWVUb2tlbiwgdmFsdWVUb0NvbXBhcmU7XHJcblx0XHRbdmFsdWVUb2tlbiwgdmFsdWVUb0NvbXBhcmVdID0gZXhwcmVzc2lvbi5zcGxpdChvcGVyYXRvclswXSk7XHJcblx0XHQvLyBTZSBsaW1waWEgZWwgc3RyaW5nIGNvcnJlc3BvbmRpZW50ZSBhbCBhcnJheSBwYXJhIHF1ZSBsb3MgZWxlbWVudG9zIHF1ZWRlbiBzZXBhcmFkb3MgcG9yIFwiLFwiXHJcblx0XHR2YWx1ZVRva2VuID0gdmFsdWVUb2tlbi5yZXBsYWNlKC9bXmEtekEtWjAtOSAsXS9nLCAnJyk7XHJcblx0XHQvLyBTaSBubyBoYXkgdGFncyBhc29jaWFkb3MgYWwgcmVnaXN0cm8gc2UgZGV2dWVsdmUgJ2ZhbHNlJ1xyXG5cdFx0aWYgKCF2YWx1ZVRva2VuKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ05vIGhheSB0YWdzIGFzb2NpYWRvcyBhIGVzdGEgYXBsaWNhY2nDs24nKTtcclxuXHRcdFx0cmV0dXJuICdmYWxzZSc7XHJcblx0XHR9XHJcblx0XHQvLyBTZSBsaW1waWEgZWwgc3RyaW5nIGNvcnJlc3BvbmRpZW50ZSBhbCB2YWxvciBwb3IgY29tcGFyYXJcclxuXHRcdHZhbHVlVG9Db21wYXJlID0gdmFsdWVUb0NvbXBhcmUucmVwbGFjZSgvW15hLXpBLVowLTkgXS9nLCAnJyk7XHJcblx0XHQvLyBFbCBzdHJpbmcgY29ycmVzcG9uZGllbnRlIGFsIGFycmF5IHBhc2EgYSBzZXIgdGlwbyBhcnJheVxyXG5cdFx0dmFsdWVUb2tlbiA9IHZhbHVlVG9rZW4uc3BsaXQoJywnKTtcclxuXHJcblx0XHQvLyBTZSB0cmF0YSBkZSBjb25zdGF0YXIgc2kgZWwgdmFsb3IgYSBjb21wYXJhciBzZSBlbmN1ZXRyYSBvIG5vIGRlbnRyb1xyXG5cdFx0Ly8gU2kgZWwgb3BlcmFkb3IgcXVlIHNlIGVuY29udHJvID09IHJldHVybmEgdHJ1ZSBzaSBsbyBlbmN1ZW50cmFcclxuXHRcdGxldCBpc1RhZ0ZvdW5kOiBib29sZWFuID0gdHJ1ZTtcclxuXHRcdHN3aXRjaCAob3BlcmF0b3JbMF0pIHtcclxuXHRcdFx0Y2FzZSAnPT0nOlxyXG5cdFx0XHRcdGlzVGFnRm91bmQgPSB2YWx1ZVRva2VuLnNvbWUoKHRhZykgPT4gdGFnID09IHZhbHVlVG9Db21wYXJlKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSAnPT09JzpcclxuXHRcdFx0XHRpc1RhZ0ZvdW5kID0gdmFsdWVUb2tlbi5zb21lKCh0YWcpID0+IHRhZyA9PT0gdmFsdWVUb0NvbXBhcmUpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlICchPT0nOlxyXG5cdFx0XHRcdGlzVGFnRm91bmQgPSB2YWx1ZVRva2VuLnNvbWUoKHRhZykgPT4gdGFnICE9PSB2YWx1ZVRvQ29tcGFyZSk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgJyE9JzpcclxuXHRcdFx0XHRpc1RhZ0ZvdW5kID0gdmFsdWVUb2tlbi5zb21lKCh0YWcpID0+IHRhZyAhPSB2YWx1ZVRvQ29tcGFyZSk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0XHRleHByZXNzaW9uID0gaXNUYWdGb3VuZCA/ICd0cnVlJyA6ICdmYWxzZSc7XHJcblx0XHRyZXR1cm4gZXhwcmVzc2lvbjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRyeSB0byBldmFsIHRoZSBmb3JtdWxhIGRlcGVuZCBvZiB0aGUgdHlwZSBvZiBmaWVsZHMuXHJcblx0ICogQHBhcmFtIGxTdGF0aWNUb2tlblxyXG5cdCAqIEBwYXJhbSBmb3JtdWxhTmFtZVxyXG5cdCAqIEBwYXJhbSBmb3JtdWxhXHJcblx0ICovXHJcblx0dmFsaWRhdGVGb3JtdWxhKGxTdGF0aWNUb2tlbjogYW55LCBmb3JtdWxhTmFtZTogc3RyaW5nLCBmb3JtdWxhOiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHRcdGxldCBldmFsRm9ybXVsYTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdFx0Ly8gVG8gdmFsaWRhdGUgdGhlIGZvcm11bGEsIGZpcnN0IG9yZ2FuaXplIHRoZSBpbmZvIHRvIGtleSAtIHZhbHVlIGFycmF5XHJcblx0XHRsZXQgb2JqZWN0VG9rZW5zOiBhbnlbXSA9IFtdO1xyXG5cdFx0Zm9yIChsZXQgcGFuZWwgb2YgbFN0YXRpY1Rva2VuKSB7XHJcblx0XHRcdGZvciAobGV0IGdyb3VwVG9rZW4gb2YgcGFuZWwudmFsdWUpIHtcclxuXHRcdFx0XHRmb3IgKGxldCBzdGF0aWNUb2tlbiBvZiBncm91cFRva2VuLnZhbHVlKSB7XHJcblx0XHRcdFx0XHRmb3IgKGxldCBhcnJheVRva2VuSW5mbyBvZiBzdGF0aWNUb2tlbikge1xyXG5cdFx0XHRcdFx0XHRvYmplY3RUb2tlbnNbYXJyYXlUb2tlbkluZm8ua2V5XSA9IGFycmF5VG9rZW5JbmZvLm9iamVjdFxyXG5cdFx0XHRcdFx0XHRcdD8gYXJyYXlUb2tlbkluZm8ub2JqZWN0LnR5cGUgPT0gJ251bWJlcidcclxuXHRcdFx0XHRcdFx0XHRcdD8gJzAnXHJcblx0XHRcdFx0XHRcdFx0XHQ6ICcnXHJcblx0XHRcdFx0XHRcdFx0OiAnJztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHRyeSB7XHJcblx0XHRcdGZvcm11bGEgPSB0aGlzLnJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdChmb3JtdWxhTmFtZSwgZm9ybXVsYSwgb2JqZWN0VG9rZW5zKTtcclxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdC8vY29uc29sZS5lcnJvcihlcnJvcik7XHJcblx0XHRcdHRocm93IGVycm9yO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGZvcm11bGEgIT09IG51bGwpIHtcclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRsZXQgcmVzdWx0ID0gZm9ybXVsYS5zdGFydHNXaXRoKCdmaWxlOi8vJykgPyBmb3JtdWxhIDogZXZhbChmb3JtdWxhKTtcclxuXHRcdFx0XHRldmFsRm9ybXVsYSA9IHRydWU7XHJcblx0XHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0XHQvL2NvbnNvbGUuZXJyb3IoXCJFcnJvciBldmFsdWF0aW5nIHRoZSBmb3JtdWxhXCIsIGUpO1xyXG5cdFx0XHRcdHRocm93IHtcclxuXHRcdFx0XHRcdG1lc3NhZ2U6ICdMYSBmb3JtdWxhIG5vIGZ1ZSBwb3NpYmxlIGV2YWx1YXInLFxyXG5cdFx0XHRcdFx0dGl0bGU6ICdBbGVydGEhJyxcclxuXHRcdFx0XHRcdGVycm9yOiBlXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGV2YWxGb3JtdWxhO1xyXG5cdH1cclxuXHJcblx0Z2V0Q29uZmlnQ2xvbmluZ1Rva2VuTWFwKG9sZFBQUDogbnVtYmVyLCBuZXdQUFA6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICd0b2tlbi9nZXRDb25maWdDbG9uaW5nVG9rZW5NYXAnLFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0cGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpXHJcblx0XHRcdFx0XHQuc2V0KCdvbGRQUFAnLCBvbGRQUFAudG9TdHJpbmcoKSlcclxuXHRcdFx0XHRcdC5zZXQoJ25ld1BQUCcsIG5ld1BQUC50b1N0cmluZygpKVxyXG5cdFx0XHR9XHJcblx0XHQpO1xyXG5cdH1cclxufVxyXG4iXX0=
|
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-2392-g9587958e-dirty",
|
|
6
|
+
"hash": "g9587958e",
|
|
7
|
+
"distance": 2392,
|
|
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": "2024-01-
|
|
23
|
+
"suffix": "2392-g9587958e-dirty",
|
|
24
|
+
"semverString": "0.0.18+2392.g9587958e",
|
|
25
|
+
"version": "0.0.1855",
|
|
26
|
+
"buildTimestamp": "2024-01-18T22:07:14.802Z"
|
|
27
27
|
};
|
|
28
28
|
/* tslint:enable */
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUMzRSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLDhCQUE4QjtJQUNyQyxNQUFNLEVBQUUsV0FBVztJQUNuQixVQUFVLEVBQUUsSUFBSTtJQUNoQixLQUFLLEVBQUUsU0FBUztJQUNoQixRQUFRLEVBQUU7UUFDTixTQUFTLEVBQUU7WUFDUCxPQUFPLEVBQUUsS0FBSztZQUNkLG1CQUFtQixFQUFFLEtBQUs7U0FDN0I7UUFDRCxPQUFPLEVBQUUsS0FBSztRQUNkLEtBQUssRUFBRSxTQUFTO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsRUFBRTtRQUNYLFlBQVksRUFBRSxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLFFBQVE7S0FDdEI7SUFDRCxRQUFRLEVBQUUsc0JBQXNCO0lBQ2hDLGNBQWMsRUFBRSx1QkFBdUI7SUFDdkMsU0FBUyxFQUFFLFVBQVU7SUFDckIsZ0JBQWdCLEVBQUUsMEJBQTBCO0NBQy9DLENBQUM7QUFDRixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJTVBPUlRBTlQ6IFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRCEgRE8gTk9UIE1BTlVBTExZIEVESVQgT1IgQ0hFQ0tJTiFcbi8qIHRzbGludDpkaXNhYmxlICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IHtcbiAgICBcImRpcnR5XCI6IHRydWUsXG4gICAgXCJyYXdcIjogXCJ2MC4wLjE4LTIzOTItZzk1ODc5NThlLWRpcnR5XCIsXG4gICAgXCJoYXNoXCI6IFwiZzk1ODc5NThlXCIsXG4gICAgXCJkaXN0YW5jZVwiOiAyMzkyLFxuICAgIFwidGFnXCI6IFwidjAuMC4xOFwiLFxuICAgIFwic2VtdmVyXCI6IHtcbiAgICAgICAgXCJvcHRpb25zXCI6IHtcbiAgICAgICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgICAgICBcImluY2x1ZGVQcmVyZWxlYXNlXCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgIFwicmF3XCI6IFwidjAuMC4xOFwiLFxuICAgICAgICBcIm1ham9yXCI6IDAsXG4gICAgICAgIFwibWlub3JcIjogMCxcbiAgICAgICAgXCJwYXRjaFwiOiAxOCxcbiAgICAgICAgXCJwcmVyZWxlYXNlXCI6IFtdLFxuICAgICAgICBcImJ1aWxkXCI6IFtdLFxuICAgICAgICBcInZlcnNpb25cIjogXCIwLjAuMThcIlxuICAgIH0sXG4gICAgXCJzdWZmaXhcIjogXCIyMzkyLWc5NTg3OTU4ZS1kaXJ0eVwiLFxuICAgIFwic2VtdmVyU3RyaW5nXCI6IFwiMC4wLjE4KzIzOTIuZzk1ODc5NThlXCIsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4wLjE4NTVcIixcbiAgICBcImJ1aWxkVGltZXN0YW1wXCI6IFwiMjAyNC0wMS0xOFQyMjowNzoxNC44MDJaXCJcbn07XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG4iXX0=
|