vcomply-workflow-engine 3.4.35 → 3.4.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/constants/time.constants.mjs +2 -1
- package/esm2020/lib/log-an-issue/log-an-issue.component.mjs +21 -13
- package/esm2020/lib/workflow-compliance/workflow-compliance.component.mjs +10 -10
- package/esm2020/lib/workflow-policy/workflow-policy.component.mjs +7 -7
- package/esm2020/lib/workflow-services/log-issue.service.mjs +4 -3
- package/fesm2015/vcomply-workflow-engine.mjs +41 -31
- package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
- package/fesm2020/vcomply-workflow-engine.mjs +37 -28
- package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/constants/time.constants.d.ts +1 -0
- package/lib/log-an-issue/log-an-issue.component.d.ts +3 -1
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { HttpHeaders } from '@angular/common/http';
|
|
2
2
|
import { Injectable, Optional } from '@angular/core';
|
|
3
3
|
import { map, retry } from 'rxjs/operators';
|
|
4
|
+
import { DEFAULT_24HR } from '../constants/time.constants';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@angular/common/http";
|
|
6
7
|
import * as i2 from "./auth.service";
|
|
@@ -19,7 +20,7 @@ export class LogIssueService {
|
|
|
19
20
|
return `${('0' + hours).slice(-2)}:${minutes}:00`;
|
|
20
21
|
}
|
|
21
22
|
else {
|
|
22
|
-
return
|
|
23
|
+
return DEFAULT_24HR;
|
|
23
24
|
}
|
|
24
25
|
};
|
|
25
26
|
if (config) {
|
|
@@ -201,7 +202,7 @@ export class LogIssueService {
|
|
|
201
202
|
associated_risk: [],
|
|
202
203
|
recommendation: [],
|
|
203
204
|
};
|
|
204
|
-
payload.title = issueData.issueName ?? '';
|
|
205
|
+
payload.title = issueData.issueName.trim() ?? '';
|
|
205
206
|
payload.rc_id = issueData.issueRC.length
|
|
206
207
|
? this.getArrayId(issueData.issueRC, 'rc_id')
|
|
207
208
|
: [];
|
|
@@ -333,4 +334,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
333
334
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.Configurations, decorators: [{
|
|
334
335
|
type: Optional
|
|
335
336
|
}] }]; } });
|
|
336
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWlzc3VlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1zZXJ2aWNlcy9sb2ctaXNzdWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFPNUMsTUFBTSxPQUFPLGVBQWU7SUFFMUIsWUFDVSxJQUFnQixFQUNoQixXQUF3QixFQUNwQixNQUF1QjtRQUYzQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBbVVsQyw0QkFBdUIsR0FBRyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQ3hDLElBQUksTUFBTSxFQUFFO2dCQUNWLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLE1BQU07cUJBQ3JDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQztxQkFDOUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNaLE1BQU0sRUFBRSxHQUFHLE1BQU0sS0FBSyxJQUFJLENBQUM7Z0JBQzNCLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRTdDLE9BQU8sR0FBRyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLEtBQUssQ0FBQzthQUNuRDtpQkFBTTtnQkFDTCxPQUFP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LENBQUMsS0FBVSxFQUFFLGFBQWtCO1FBQzdDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRTtZQUNqQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxPQUFZLEVBQUUsSUFBUztRQUNqQyxJQUFJO1FBQ0osMEJBQTBCO1FBQzFCLHVCQUF1QjtRQUN2QixNQUFNLFFBQVEsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEdBQUcsUUFBUSxHQUFHLG1CQUFtQixFQUM1RCxPQUFPLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBZTtRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FDbkMsT0FBTyxFQUNQLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FDekMsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsYUFBYSxHQUFHLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDO2FBQzlELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDOzs0R0F0WVUsZUFBZTtnSEFBZixlQUFlLGNBRmQsTUFBTTsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBTUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBtYXAsIHJldHJ5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uL2NvbmZpZ3VyYXRpb25zJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9nSXNzdWVTZXJ2aWNlIHtcclxuICBlbnYhOiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXHJcbiAgKSB7XHJcbiAgICBpZiAoY29uZmlnKSB7XHJcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldElzc3VlVHlwZXMoKSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxyXG4gICAgICAndG9rZW4nLFxyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudi5vcmdhbml6YXRpb25HZXQgKyAnaXNzdWVUeXBlTGlzdCcsIHsgaGVhZGVycyB9KVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICBnZXRPcmdQZW9wbGUoKSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxyXG4gICAgICAndG9rZW4nLFxyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudi5vcmdhbml6YXRpb25HZXQgKyAncGVvcGxlJywgeyBoZWFkZXJzIH0pXHJcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG4gIGdldElzc3VlQ2F0ZWdvcmllcygpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXHJcbiAgICAgICd0b2tlbicsXHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcclxuICAgICk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQ8YW55W10+KFxyXG4gICAgICAgIHRoaXMuZW52LmFzc3VyYW5jZSArICdJc3N1ZS9DYXRlZ29yeS9DYXRMaXN0P2NhdGVnb3JpZXM9dHJ1ZScsXHJcbiAgICAgICAgeyBoZWFkZXJzIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgICAvL2h0dHBzOi8vZGV2YXBpLnYtY29tcGx5LmNvbS9Bc3N1cmFuY2UvSXNzdWUvQ2F0ZWdvcnkvQ2F0TGlzdC8xP2lzQnVzaW5lc3NDeWNsZT10cnVlJmNhdGVnb3JpZXM9dHJ1ZVxyXG4gIH1cclxuICBnZXRSZXNwb25zaWJpbGl0eUNlbnRlckxpc3QoKSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxyXG4gICAgICAndG9rZW4nLFxyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgJ3Jlc3BvbnNpYmlsaXR5Q2VudGVyVHJlZScsIHtcclxuICAgICAgICBoZWFkZXJzLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG4gIGNyZWF0ZUlzc3VlKHBheWxvYWQ6IGFueSkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcclxuICAgICAgJ3Rva2VuJyxcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxyXG4gICAgKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QodGhpcy5lbnYuYXNzdXJhbmNlICsgJ0lzc3VlJywgcGF5bG9hZCwgeyBoZWFkZXJzIH0pXHJcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcbiAgdXBkYXRlSXNzdWUocGF5bG9hZDogYW55LCBpc3N1ZUlkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXHJcbiAgICAgICd0b2tlbicsXHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcclxuICAgICk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wdXQodGhpcy5lbnYuYXNzdXJhbmNlICsgJ0lzc3VlLycgKyBpc3N1ZUlkLCBwYXlsb2FkLCB7IGhlYWRlcnMgfSlcclxuICAgICAgLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbFJpc2soYXVkaXRQbGFuSWQ6IHN0cmluZywgdHlwZTogc3RyaW5nKSB7XHJcbiAgICAvLyAgICAgR2V0IExpbmtlZCBBdWRpdCBQbGFuIFJlc3BvbnNpYmlsaXRpZXMgYnkgQXVkaXRfUGxhbl9JZFxyXG4gICAgLy8gVVJMOiBodHRwczovL2RldmFwaS52LWNvbXBseS5jb20vcmVzcG9uc2liaWxpdGllcy8/bW9kZT1tYW5hZ2VfYXVkaXRfcGxhbl9yZXNwb25zaWJpbGl0aWVzJmlkPTYxMGIzMjkxNDRjODFhMDAwOWNiYjU5OCBNZXRob2Q6IEdFVFxyXG5cclxuICAgIC8vIEdldCBMaW5rZWQgQXVkaXQgUGxhbiBSaXNrIGJ5IEF1ZGl0X1BsYW5fSWRcclxuICAgIC8vIFVSTDogaHR0cHM6Ly9kZXZhcGkudi1jb21wbHkuY29tL3Jpc2svP21vZGU9cmlzay9tYW5hZ2VfYXVkaXRfcGxhbl9yaXNrJmlkPTYxMGIzMjkxNDRjODFhMDAwOWNiYjU5OFxyXG4gICAgLy8gTWV0aG9kOiBHRVRcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXHJcbiAgICAgICd0b2tlbicsXHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcclxuICAgICk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ1JFU1BPTlNJQklMSVRZJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgLmdldDxhbnlbXT4oXHJcbiAgICAgICAgICB0aGlzLmVudi5yZXNwb25zaWJpbGl0aWVzR2V0ICtcclxuICAgICAgICAgICAgJ21hbmFnZV9hdWRpdF9wbGFuX3Jlc3BvbnNpYmlsaXRpZXMmaWQ9JyArXHJcbiAgICAgICAgICAgIGF1ZGl0UGxhbklkLFxyXG4gICAgICAgICAgeyBoZWFkZXJzIH1cclxuICAgICAgICApXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKGl0ZW1zOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICAgIGl0ZW1JZDogaXRlbT8ucmVwb3J0X2lkLFxyXG4gICAgICAgICAgICAgIGl0ZW1Db250cm9sSWQ6IGl0ZW0/LmNvbnRyb2xfaWQsXHJcbiAgICAgICAgICAgICAgaXRlbUNvbnRyb2xOYW1lOiBpdGVtPy5yZXBvcnRfbmFtZSxcclxuICAgICAgICAgICAgICBpdGVtVHlwZTogJ1JFU1BPTlNJQklMSVRZJyxcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnUklTSycpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgIC5nZXQ8YW55W10+KFxyXG4gICAgICAgICAgdGhpcy5lbnYucmlzayArICdyaXNrL21hbmFnZV9hdWRpdF9wbGFuX3Jpc2smaWQ9JyArIGF1ZGl0UGxhbklkLFxyXG4gICAgICAgICAgeyBoZWFkZXJzIH1cclxuICAgICAgICApXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKGl0ZW1zOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICAgIGl0ZW1JZDogaXRlbT8ucmlza19pZCxcclxuICAgICAgICAgICAgICBpdGVtQ29udHJvbElkOiBpdGVtPy5yaXNrX2NvbnRyb2xfaWQsXHJcbiAgICAgICAgICAgICAgaXRlbUNvbnRyb2xOYW1lOiBpdGVtPy50aXRsZSxcclxuICAgICAgICAgICAgICBpdGVtVHlwZTogJ1JJU0snLFxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKGlzc3VlRGF0YTogYW55LCBvcGVuZWRGcm9tOiBhbnksIGlzUkNNYW5kYXRvcnk6IGFueSkge1xyXG4gICAgY29uc3QgZXJyb3JzID0gW107XHJcbiAgICBpZiAoIWlzc3VlRGF0YS5pc3N1ZU5hbWUgfHwgaXNzdWVEYXRhLmlzc3VlTmFtZS50cmltKCkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGVycm9ycy5wdXNoKCdpc3N1ZU5hbWUnKTtcclxuICAgIH1cclxuICAgIGlmIChpc3N1ZURhdGEuaXNzdWVSQy5sZW5ndGggPT09IDAgJiYgaXNSQ01hbmRhdG9yeSkge1xyXG4gICAgICBlcnJvcnMucHVzaCgnaXNzdWVSQycpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzc3VlRGF0YS5lbnRydXN0VG8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGVycm9ycy5wdXNoKCdlbnRydXN0VG8nKTtcclxuICAgIH1cclxuICAgIGlmICghaXNzdWVEYXRhLmlzc3VlRHVlRGF0ZSkge1xyXG4gICAgICBlcnJvcnMucHVzaCgnaXNzdWVEdWVEYXRlJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIGlzc3VlRGF0YS5pc3N1ZVJlY29tbWVuZGF0aW9uXHJcbiAgICAgICAgLnJlcGxhY2UoLyZuYnNwOy9nLCAnJylcclxuICAgICAgICAucmVwbGFjZSgvXFw8YnJcXHMqW1xcL10/Pi9naSwgJycpXHJcbiAgICAgICAgLnRyaW0oKS5sZW5ndGggPT09IDBcclxuICAgICkge1xyXG4gICAgICBlcnJvcnMucHVzaCgnaXNzdWVSZWNvbW1lbmRhdGlvbicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVycm9ycztcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlUGF5bG9hZChpc3N1ZURhdGE6IGFueSwgb3B0aW9uRmllbGRzU3RhdHVzOiBhbnkpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKGlzc3VlRGF0YS5pc3N1ZUR1ZURhdGUpO1xyXG4gICAgY29uc3QgZGF0ZVNwbGl0ID0gW1xyXG4gICAgICBzZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgc2VsZWN0ZWREYXRlLmdldE1vbnRoKCkgKyAxLFxyXG4gICAgICBzZWxlY3RlZERhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHRpbWU6IGFueSA9IHRoaXMuY29udmVydEZyb20xMlRvMjRGb3JtYXQoXHJcbiAgICAgIGlzc3VlRGF0YS5pc3N1ZUR1ZVRpbWVcclxuICAgICkuc3BsaXQoJzonKTtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShcclxuICAgICAgZGF0ZVNwbGl0WzBdLFxyXG4gICAgICBkYXRlU3BsaXRbMV0gLSAxLFxyXG4gICAgICBkYXRlU3BsaXRbMl0sXHJcbiAgICAgIHRpbWVbMF0sXHJcbiAgICAgIHRpbWVbMV0sXHJcbiAgICAgIDBcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgY3JlYXRlSXNzdWU6IGFueSA9IHtcclxuICAgICAgaXNzdWVfZGVzY3JpcHRpb25fYXR0YWNobWVudHM6IGlzc3VlRGF0YT8uaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50cyxcclxuICAgICAgYXNzb2NpYXRlZF9yaXNrOiBvcHRpb25GaWVsZHNTdGF0dXMuQVNTT0NJQVRFRF9SSVNLU1xyXG4gICAgICAgID8gaXNzdWVEYXRhLmlzc3VlQXNzb2NpYXRlZFJpc2tcclxuICAgICAgICA6ICcnLFxyXG4gICAgICBpc3N1ZV9uYW1lOiBpc3N1ZURhdGEuaXNzdWVOYW1lLFxyXG4gICAgICByZXBvcnRfaWQ6ICcwJyxcclxuICAgICAgaXNzdWVfZGVzY3JpcHRpb246IGlzc3VlRGF0YS5pc3N1ZURlc2NyaXB0aW9uLFxyXG4gICAgICBpc3N1ZV90eXBlOiBvcHRpb25GaWVsZHNTdGF0dXMuSVNTVUVfVFlQRVxyXG4gICAgICAgID8gdGhpcy5hcnJheVRvSWQoaXNzdWVEYXRhLmlzc3VlVHlwZSwgJ2lzc3VlX2lkJykudG9TdHJpbmcoKVxyXG4gICAgICAgIDogJycsXHJcbiAgICAgIGV4Y2VwdGlvbl90eXBlOiBvcHRpb25GaWVsZHNTdGF0dXMuRVhDRVBUSU9OX1RZUEVcclxuICAgICAgICA/IGlzc3VlRGF0YS5leGNlcHRpb25UeXBlLnRvU3RyaW5nKClcclxuICAgICAgICA6ICcnLFxyXG4gICAgICByaXNrX2NsYXNzOiBpc3N1ZURhdGEuaXNzdWVSaXNrUmF0aW5nLnRvU3RyaW5nKCkgPz8gJycsXHJcbiAgICAgIHByaW9yaXR5OiBvcHRpb25GaWVsZHNTdGF0dXMuUFJJT1JJVFlcclxuICAgICAgICA/IGlzc3VlRGF0YS5pc3N1ZVByaW9yaXR5LnRvU3RyaW5nKClcclxuICAgICAgICA6ICcnLFxyXG4gICAgICBpc3N1ZV9jYXRlZ29yeV9pZDpcclxuICAgICAgICB0aGlzLmFycmF5VG9JZChpc3N1ZURhdGEuaXNzdWVDYXRlZ29yeSwgJ2NhdGVnb3J5X2lkJykgPz8gMCxcclxuICAgICAgcmVjb21tZW5kYXRpb246IGlzc3VlRGF0YS5pc3N1ZVJlY29tbWVuZGF0aW9uLFxyXG4gICAgICBlbnRydXN0ZWRfdG86IHRoaXMuYXJyYXlUb0lkKGlzc3VlRGF0YS5lbnRydXN0VG8sICdlbXBsb3llZV9pZCcpID8/IDAsXHJcbiAgICAgIGlzc3VlX2RhdGU6XHJcbiAgICAgICAgZGF0ZVNwbGl0WzBdICtcclxuICAgICAgICAnLScgK1xyXG4gICAgICAgIGRhdGVTcGxpdFsxXSArXHJcbiAgICAgICAgJy0nICtcclxuICAgICAgICBkYXRlU3BsaXRbMl0gK1xyXG4gICAgICAgICcgJyArXHJcbiAgICAgICAgdGhpcy5jb252ZXJ0RnJvbTEyVG8yNEZvcm1hdChpc3N1ZURhdGEuaXNzdWVEdWVUaW1lKSxcclxuICAgICAgZmFpbGVkX3RpbWU6IHRoaXMuY29udmVydEZyb20xMlRvMjRGb3JtYXQoaXNzdWVEYXRhLmlzc3VlRHVlVGltZSksXHJcbiAgICAgIGlzc3VlX2R1ZV9kYXRlOlxyXG4gICAgICAgIGRhdGVTcGxpdFswXSArXHJcbiAgICAgICAgJy0nICtcclxuICAgICAgICBkYXRlU3BsaXRbMV0gK1xyXG4gICAgICAgICctJyArXHJcbiAgICAgICAgZGF0ZVNwbGl0WzJdICtcclxuICAgICAgICAnICcgK1xyXG4gICAgICAgIHRoaXMuY29udmVydEZyb20xMlRvMjRGb3JtYXQoaXNzdWVEYXRhLmlzc3VlRHVlVGltZSksXHJcbiAgICAgIGdyY19hcmVhOiAnJyxcclxuICAgICAgY2NfZW1wbG95ZWVfZW1haWw6IG9wdGlvbkZpZWxkc1N0YXR1cy5PVkVSU0lHSFRcclxuICAgICAgICA/IHRoaXMuYXJyYXlUb0lEc0R0cmluZyhpc3N1ZURhdGEuaXNzdWVDQ1VzZXJzLCAnZW1wbG95ZWVfZW1haWwnKVxyXG4gICAgICAgIDogJycsXHJcbiAgICAgIGZhaWx1cmVfY2NfZW1wbG95ZWVfZW1haWw6IG9wdGlvbkZpZWxkc1N0YXR1cy5PVkVSU0lHSFRcclxuICAgICAgICA/IHRoaXMuYXJyYXlUb0lEc0R0cmluZyhpc3N1ZURhdGEuZmFpbHVyZUNDVXNlcnMsICdlbXBsb3llZV9lbWFpbCcpXHJcbiAgICAgICAgOiAnJyxcclxuICAgICAgY3VzdG9tX3RhZ192YWx1ZTogJycsXHJcbiAgICAgIGlzc3VlX3Jlc29sdmVfdGltZXN0YW1wOiAoZGF0ZS5nZXRUaW1lKCkgLyAxMDAwKS50b1N0cmluZygpLFxyXG4gICAgICBldmlkZW5jZV91cGxvYWRfZmxhZzogb3B0aW9uRmllbGRzU3RhdHVzLkVWSURFTkNFXHJcbiAgICAgICAgPyBpc3N1ZURhdGEuZXZpZGVuY2VSZXF1aXJlZFxyXG4gICAgICAgICAgPyAnMSdcclxuICAgICAgICAgIDogJzAnXHJcbiAgICAgICAgOiAnMCcsXHJcbiAgICB9O1xyXG4gICAgaWYgKGlzc3VlRGF0YS5pc3N1ZVJDLmxlbmd0aCkge1xyXG4gICAgICBjcmVhdGVJc3N1ZS5yY19pZCA9IHRoaXMuYXJyYXlUb0lkKGlzc3VlRGF0YS5pc3N1ZVJDLCAncmNfaWQnKSA/PyAwO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjcmVhdGVJc3N1ZTtcclxuICB9XHJcblxyXG4gIHBheWxvYWRCdWlsZGVyKGlzc3VlRGF0YTogYW55LCBvcHRpb25GaWVsZHNTdGF0dXM6IGFueSkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoaXNzdWVEYXRhLmlzc3VlRHVlRGF0ZSk7XHJcbiAgICBjb25zdCBkYXRlU3BsaXQgPSBbXHJcbiAgICAgIHNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpLFxyXG4gICAgICBzZWxlY3RlZERhdGUuZ2V0TW9udGgoKSArIDEsXHJcbiAgICAgIHNlbGVjdGVkRGF0ZS5nZXREYXRlKCksXHJcbiAgICBdO1xyXG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICBkZXNjcmlwdGlvbjogW10sXHJcbiAgICAgIGFzc29jaWF0ZWRfcmlzazogW10sXHJcbiAgICAgIHJlY29tbWVuZGF0aW9uOiBbXSxcclxuICAgIH07XHJcbiAgICBwYXlsb2FkLnRpdGxlID0gaXNzdWVEYXRhLmlzc3VlTmFtZSA/PyAnJztcclxuICAgIHBheWxvYWQucmNfaWQgPSBpc3N1ZURhdGEuaXNzdWVSQy5sZW5ndGhcclxuICAgICAgPyB0aGlzLmdldEFycmF5SWQoaXNzdWVEYXRhLmlzc3VlUkMsICdyY19pZCcpXHJcbiAgICAgIDogW107XHJcbiAgICBwYXlsb2FkLmNhdGVnb3J5X2lkID0gaXNzdWVEYXRhLmlzc3VlQ2F0ZWdvcnkubGVuZ3RoXHJcbiAgICAgID8gdGhpcy5hcnJheVRvSWQoaXNzdWVEYXRhLmlzc3VlQ2F0ZWdvcnksICdjYXRlZ29yeV9pZCcpXHJcbiAgICAgIDogbnVsbDtcclxuICAgIHBheWxvYWQuZGVzY3JpcHRpb25bMF0gPSB7XHJcbiAgICAgIHRleHQ6IGlzc3VlRGF0YS5pc3N1ZURlc2NyaXB0aW9uID8/ICcnLFxyXG4gICAgICBhdHRhY2htZW50czogaXNzdWVEYXRhPy5pc3N1ZURlc2NyaXB0aW9uQXR0YWNoZW1lbnRzLmxlbmd0aFxyXG4gICAgICAgID8gaXNzdWVEYXRhPy5pc3N1ZURlc2NyaXB0aW9uQXR0YWNoZW1lbnRzXHJcbiAgICAgICAgOiBbXSxcclxuICAgIH07XHJcbiAgICBwYXlsb2FkLmV4Y2VwdGlvbl90eXBlID0gb3B0aW9uRmllbGRzU3RhdHVzLkVYQ0VQVElPTl9UWVBFXHJcbiAgICAgID8gTnVtYmVyKGlzc3VlRGF0YS5leGNlcHRpb25UeXBlKVxyXG4gICAgICA6IG51bGw7XHJcbiAgICBwYXlsb2FkLnJpc2tfY2xhc3MgPSBpc3N1ZURhdGEuaXNzdWVSaXNrUmF0aW5nID8/IG51bGw7XHJcbiAgICBwYXlsb2FkLnByaW9yaXR5ID0gb3B0aW9uRmllbGRzU3RhdHVzLlBSSU9SSVRZXHJcbiAgICAgID8gTnVtYmVyKGlzc3VlRGF0YS5pc3N1ZVByaW9yaXR5KVxyXG4gICAgICA6IG51bGw7XHJcbiAgICBwYXlsb2FkLmFzc2lnbmVlX2lkID0gaXNzdWVEYXRhLmVudHJ1c3RUb1xyXG4gICAgICA/IHRoaXMuYXJyYXlUb0lkKGlzc3VlRGF0YS5lbnRydXN0VG8sICdteV9tZW1iZXJfaWQnKVxyXG4gICAgICA6IG51bGw7XHJcbiAgICBwYXlsb2FkLmFzc29jaWF0ZWRfcmlza1swXSA9IHtcclxuICAgICAgdGV4dDogb3B0aW9uRmllbGRzU3RhdHVzLkFTU09DSUFURURfUklTS1NcclxuICAgICAgICA/IGlzc3VlRGF0YS5pc3N1ZUFzc29jaWF0ZWRSaXNrXHJcbiAgICAgICAgOiAnJyxcclxuICAgICAgYXR0YWNobWVudHM6IFtdLFxyXG4gICAgfTtcclxuICAgIHBheWxvYWQucmVjb21tZW5kYXRpb25bMF0gPSB7XHJcbiAgICAgIHRleHQ6IGlzc3VlRGF0YS5pc3N1ZVJlY29tbWVuZGF0aW9uID8/ICcnLFxyXG4gICAgICBhdHRhY2htZW50czogaXNzdWVEYXRhPy5yZWNvbW1lbmRlZEFjdGlvbnNBdHRhY2htZW50cy5sZW5ndGhcclxuICAgICAgICA/IGlzc3VlRGF0YT8ucmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHNcclxuICAgICAgICA6IFtdLFxyXG4gICAgfTtcclxuICAgIHBheWxvYWQuZXZpZGVuY2UgPSB7XHJcbiAgICAgIGV2aWRlbmNlX2ZsYWc6IG9wdGlvbkZpZWxkc1N0YXR1cy5FVklERU5DRVxyXG4gICAgICAgID8gaXNzdWVEYXRhLmV2aWRlbmNlUmVxdWlyZWRcclxuICAgICAgICAgID8gMVxyXG4gICAgICAgICAgOiAwXHJcbiAgICAgICAgOiAwLFxyXG4gICAgfTtcclxuICAgIHBheWxvYWQuZnJlcXVlbmN5X2RldGFpbHMgPSB7XHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOlxyXG4gICAgICAgIHRoaXMuY29udmVydEZyb20xMlRvMjRGb3JtYXQoaXNzdWVEYXRhLmlzc3VlRHVlVGltZSkgPz8gJycsXHJcbiAgICAgIGZyZXF1ZW5jeV9kYXRlOlxyXG4gICAgICAgIGRhdGVTcGxpdFswXSArXHJcbiAgICAgICAgJy0nICtcclxuICAgICAgICAoZGF0ZVNwbGl0WzFdIDwgMTAgPyAnMCcgKyBkYXRlU3BsaXRbMV0gOiBkYXRlU3BsaXRbMV0pICtcclxuICAgICAgICAnLScgK1xyXG4gICAgICAgIChkYXRlU3BsaXRbMl0gPCAxMCA/ICcwJyArIGRhdGVTcGxpdFsyXSA6IGRhdGVTcGxpdFsyXSksXHJcbiAgICB9O1xyXG4gICAgcGF5bG9hZC5vdmVyc2VlciA9IHtcclxuICAgICAgY2NfZW1haWw6IG9wdGlvbkZpZWxkc1N0YXR1cy5PVkVSU0lHSFRcclxuICAgICAgICA/IGlzc3VlRGF0YS5pc3N1ZUNDVXNlcnMubGVuZ3RoXHJcbiAgICAgICAgICA/IGlzc3VlRGF0YS5pc3N1ZUNDVXNlcnMubWFwKCh4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4geyBtZW1iZXJfaWQ6IHgubXlfbWVtYmVyX2lkID8/IDAsIGFsZXJ0X2VuYWJsZTogMSB9O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgOiBbXVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIGZhaWx1cmVfY2NfZW1haWw6IG9wdGlvbkZpZWxkc1N0YXR1cy5PVkVSU0lHSFRcclxuICAgICAgICA/IGlzc3VlRGF0YS5mYWlsdXJlQ0NVc2Vycy5sZW5ndGhcclxuICAgICAgICAgID8gaXNzdWVEYXRhLmZhaWx1cmVDQ1VzZXJzLm1hcCgoeDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHsgbWVtYmVyX2lkOiB4Lm15X21lbWJlcl9pZCA/PyAwLCBhbGVydF9lbmFibGU6IDEgfTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIDogW11cclxuICAgICAgICA6IFtdLFxyXG4gICAgfTtcclxuICAgIHBheWxvYWQuY3VzdG9tX3RhZ3MgPSBpc3N1ZURhdGE/Lmlzc3VlQ3VzdG9tVGFnO1xyXG4gICAgcGF5bG9hZC5pc3N1ZVR5cGUgPSBpc3N1ZURhdGE/Lmlzc3VlVHlwZTtcclxuICAgIHJldHVybiBwYXlsb2FkO1xyXG4gIH1cclxuXHJcbiAgYXJyYXlUb0lkKGFycmF5OiBhbnksIGtleTogYW55KSB7XHJcbiAgICBpZiAoYXJyYXkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBhcnJheVswXVtrZXldO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QXJyYXlJZChhcnJheTogYW55LCBrZXk6IGFueSkge1xyXG4gICAgcmV0dXJuIGFycmF5Lm1hcCgoZWxlOiBhbnkpID0+IGVsZVtrZXldKTtcclxuICB9XHJcblxyXG4gIGNvbnZlcnRGcm9tMTJUbzI0Rm9ybWF0ID0gKHRpbWUxMjogYW55KSA9PiB7XHJcbiAgICBpZiAodGltZTEyKSB7XHJcbiAgICAgIGNvbnN0IFtzSG91cnMsIG1pbnV0ZXMsIHBlcmlvZF0gPSB0aW1lMTJcclxuICAgICAgICAubWF0Y2goLyhbMC05XXsxLDJ9KTooWzAtOV17Mn0pIChhbXxwbXxBTXxQTSkvKVxyXG4gICAgICAgIC5zbGljZSgxKTtcclxuICAgICAgY29uc3QgUE0gPSBwZXJpb2QgPT09ICdQTSc7XHJcbiAgICAgIGNvbnN0IGhvdXJzID0gKCtzSG91cnMgJSAxMikgKyAoUE0gPyAxMiA6IDApO1xyXG5cclxuICAgICAgcmV0dXJuIGAkeygnMCcgKyBob3Vycykuc2xpY2UoLTIpfToke21pbnV0ZXN9OjAwYDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnMjM6NTk6MDAnO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbnZlcnRGcm9tMjRUbzEyRm9ybWF0KHRpbWU6IGFueSkge1xyXG4gICAgY29uc3QgaGhtbSA9IHRpbWUuc3BsaXQoJzonKTtcclxuICAgIHRpbWUgPSBgJHtoaG1tWzBdfToke2hobW1bMV19YDtcclxuICAgIC8vIENoZWNrIGNvcnJlY3QgdGltZSBmb3JtYXQgYW5kIHNwbGl0IGludG8gY29tcG9uZW50c1xyXG4gICAgdGltZSA9IHRpbWVcclxuICAgICAgLnRvU3RyaW5nKClcclxuICAgICAgLm1hdGNoKC9eKFswMV1cXGR8MlswLTNdKSg6KShbMC01XVxcZCkoOlswLTVdXFxkKT8kLykgfHwgW3RpbWVdO1xyXG5cclxuICAgIGlmICh0aW1lLmxlbmd0aCA+IDEpIHtcclxuICAgICAgLy8gSWYgdGltZSBmb3JtYXQgY29ycmVjdFxyXG4gICAgICB0aW1lID0gdGltZS5zbGljZSgxKTsgLy8gUmVtb3ZlIGZ1bGwgc3RyaW5nIG1hdGNoIHZhbHVlXHJcbiAgICAgIHRpbWVbNV0gPSArdGltZVswXSA8IDEyID8gJyBBTScgOiAnIFBNJzsgLy8gU2V0IEFNL1BNXHJcbiAgICAgIHRpbWVbMF0gPSArdGltZVswXSAlIDEyIHx8IDEyOyAvLyBBZGp1c3QgaG91cnNcclxuICAgIH1cclxuICAgIHJldHVybiB0aW1lLmpvaW4oJycpOyAvLyByZXR1cm4gYWRqdXN0ZWQgdGltZSBvciBvcmlnaW5hbCBzdHJpbmdcclxuICB9XHJcblxyXG4gIGFycmF5VG9JRHNEdHJpbmcoYXJyYXk6IGFueSwgaWRlbnRpZmllcktleTogYW55KSB7XHJcbiAgICBjb25zdCBsaXN0ID0gYXJyYXkubWFwKChlbDogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiBlbFtpZGVudGlmaWVyS2V5XTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGxpc3Quam9pbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBsb2FkcyB0aGUgZ2l2ZW4gZmlsZSB0byBzZXJ2ZXJcclxuICAgKiBAcGFyYW0gcGF5bG9hZCBwYXlsb2FkIEZpbGUgZGF0YSB0byBiZSB1cGxvYWRlZFxyXG4gICAqIEBwYXJhbSBwYXRoIHBhdGggUGF0aCBvZiBmaWxlIHRvIGJlIHVwbG9hZGVkXHJcbiAgICogQHJldHVybnMgcmVzcG9uc2UgYWZ0ZXIgdXBsb2FkaW5nIGEgZmlsZVxyXG4gICAqL1xyXG4gIHVwbG9hZEZpbGVzKHBheWxvYWQ6IGFueSwgcGF0aDogYW55KSB7XHJcbiAgICAvLyB7XHJcbiAgICAvLyAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgLy8gICBvYnNlcnZlOiAnZXZlbnRzJ31cclxuICAgIGNvbnN0IE9SR19QQVRIID0gYG8vJHtwYXRofWA7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIHRoaXMuZW52LmZpbGVVcGxvYWRFbmRQb2ludCArIE9SR19QQVRIICsgJyZuZ3N3LWJ5cGFzcz10cnVlJyxcclxuICAgICAgcGF5bG9hZFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldElzc3VlRGV0YWlscyhpc3N1ZUlkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXHJcbiAgICAgICd0b2tlbicsXHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcclxuICAgICk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodGhpcy5lbnYuYXNzdXJhbmNlICsgJ0lzc3VlL0VkaXQvJyArIGlzc3VlSWQsIHsgaGVhZGVycyB9KVxyXG4gICAgICAucGlwZShyZXRyeSgzKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWlzc3VlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1zZXJ2aWNlcy9sb2ctaXNzdWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7O0FBSzNELE1BQU0sT0FBTyxlQUFlO0lBRTFCLFlBQ1UsSUFBZ0IsRUFDaEIsV0FBd0IsRUFDcEIsTUFBdUI7UUFGM0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQW9VbEMsNEJBQXVCLEdBQUcsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUN4QyxJQUFJLE1BQU0sRUFBRTtnQkFDVixNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNO3FCQUNyQyxLQUFLLENBQUMsdUNBQXVDLENBQUM7cUJBQzlDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDWixNQUFNLEVBQUUsR0FBRyxNQUFNLEtBQUssSUFBSSxDQUFDO2dCQUMzQixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUU3QyxPQUFPLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFD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WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgbWFwLCByZXRyeSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tICcuLi9jb25maWd1cmF0aW9ucyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBERUZBVUxUXzI0SFIgfSBmcm9tICcuLi9jb25zdGFudHMvdGltZS5jb25zdGFudHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvZ0lzc3VlU2VydmljZSB7XHJcbiAgZW52ITogYW55O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBjb25maWc/OiBDb25maWd1cmF0aW9uc1xyXG4gICkge1xyXG4gICAgaWYgKGNvbmZpZykge1xyXG4gICAgICB0aGlzLmVudiA9IGNvbmZpZy5lbnZDb25maWc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRJc3N1ZVR5cGVzKCkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcclxuICAgICAgJ3Rva2VuJyxcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxyXG4gICAgKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnYub3JnYW5pemF0aW9uR2V0ICsgJ2lzc3VlVHlwZUxpc3QnLCB7IGhlYWRlcnMgfSlcclxuICAgICAgLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3JnUGVvcGxlKCkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcclxuICAgICAgJ3Rva2VuJyxcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxyXG4gICAgKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnYub3JnYW5pemF0aW9uR2V0ICsgJ3Blb3BsZScsIHsgaGVhZGVycyB9KVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICBnZXRJc3N1ZUNhdGVnb3JpZXMoKSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxyXG4gICAgICAndG9rZW4nLFxyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0PGFueVtdPihcclxuICAgICAgICB0aGlzLmVudi5hc3N1cmFuY2UgKyAnSXNzdWUvQ2F0ZWdvcnkvQ2F0TGlzdD9jYXRlZ29yaWVzPXRydWUnLFxyXG4gICAgICAgIHsgaGVhZGVycyB9XHJcbiAgICAgIClcclxuICAgICAgLnBpcGUocmV0cnkoMikpO1xyXG4gICAgLy9odHRwczovL2RldmFwaS52LWNvbXBseS5jb20vQXNzdXJhbmNlL0lzc3VlL0NhdGVnb3J5L0NhdExpc3QvMT9pc0J1c2luZXNzQ3ljbGU9dHJ1ZSZjYXRlZ29yaWVzPXRydWVcclxuICB9XHJcbiAgZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcclxuICAgICAgJ3Rva2VuJyxcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxyXG4gICAgKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnYuY29tcGxpYW5jZUdldCArICdyZXNwb25zaWJpbGl0eUNlbnRlclRyZWUnLCB7XHJcbiAgICAgICAgaGVhZGVycyxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuICBjcmVhdGVJc3N1ZShwYXlsb2FkOiBhbnkpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXHJcbiAgICAgICd0b2tlbicsXHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcclxuICAgICk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuZW52LmFzc3VyYW5jZSArICdJc3N1ZScsIHBheWxvYWQsIHsgaGVhZGVycyB9KVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG4gIHVwZGF0ZUlzc3VlKHBheWxvYWQ6IGFueSwgaXNzdWVJZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxyXG4gICAgICAndG9rZW4nLFxyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucHV0KHRoaXMuZW52LmFzc3VyYW5jZSArICdJc3N1ZS8nICsgaXNzdWVJZCwgcGF5bG9hZCwgeyBoZWFkZXJzIH0pXHJcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG4gIGdldENvbnRyb2xSaXNrKGF1ZGl0UGxhbklkOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xyXG4gICAgLy8gICAgIEdldCBMaW5rZWQgQXVkaXQgUGxhbiBSZXNwb25zaWJpbGl0aWVzIGJ5IEF1ZGl0X1BsYW5fSWRcclxuICAgIC8vIFVSTDogaHR0cHM6Ly9kZXZhcGkudi1jb21wbHkuY29tL3Jlc3BvbnNpYmlsaXRpZXMvP21vZGU9bWFuYWdlX2F1ZGl0X3BsYW5fcmVzcG9uc2liaWxpdGllcyZpZD02MTBiMzI5MTQ0YzgxYTAwMDljYmI1OTggTWV0aG9kOiBHRVRcclxuXHJcbiAgICAvLyBHZXQgTGlua2VkIEF1ZGl0IFBsYW4gUmlzayBieSBBdWRpdF9QbGFuX0lkXHJcbiAgICAvLyBVUkw6IGh0dHBzOi8vZGV2YXBpLnYtY29tcGx5LmNvbS9yaXNrLz9tb2RlPXJpc2svbWFuYWdlX2F1ZGl0X3BsYW5fcmlzayZpZD02MTBiMzI5MTQ0YzgxYTAwMDljYmI1OThcclxuICAgIC8vIE1ldGhvZDogR0VUXHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxyXG4gICAgICAndG9rZW4nLFxyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXHJcbiAgICApO1xyXG4gICAgaWYgKHR5cGUgPT09ICdSRVNQT05TSUJJTElUWScpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgIC5nZXQ8YW55W10+KFxyXG4gICAgICAgICAgdGhpcy5lbnYucmVzcG9uc2liaWxpdGllc0dldCArXHJcbiAgICAgICAgICAgICdtYW5hZ2VfYXVkaXRfcGxhbl9yZXNwb25zaWJpbGl0aWVzJmlkPScgK1xyXG4gICAgICAgICAgICBhdWRpdFBsYW5JZCxcclxuICAgICAgICAgIHsgaGVhZGVycyB9XHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgbWFwKChpdGVtczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICBpdGVtSWQ6IGl0ZW0/LnJlcG9ydF9pZCxcclxuICAgICAgICAgICAgICBpdGVtQ29udHJvbElkOiBpdGVtPy5jb250cm9sX2lkLFxyXG4gICAgICAgICAgICAgIGl0ZW1Db250cm9sTmFtZTogaXRlbT8ucmVwb3J0X25hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbVR5cGU6ICdSRVNQT05TSUJJTElUWScsXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1JJU0snKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAuZ2V0PGFueVtdPihcclxuICAgICAgICAgIHRoaXMuZW52LnJpc2sgKyAncmlzay9tYW5hZ2VfYXVkaXRfcGxhbl9yaXNrJmlkPScgKyBhdWRpdFBsYW5JZCxcclxuICAgICAgICAgIHsgaGVhZGVycyB9XHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgbWFwKChpdGVtczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICBpdGVtSWQ6IGl0ZW0/LnJpc2tfaWQsXHJcbiAgICAgICAgICAgICAgaXRlbUNvbnRyb2xJZDogaXRlbT8ucmlza19jb250cm9sX2lkLFxyXG4gICAgICAgICAgICAgIGl0ZW1Db250cm9sTmFtZTogaXRlbT8udGl0bGUsXHJcbiAgICAgICAgICAgICAgaXRlbVR5cGU6ICdSSVNLJyxcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZShpc3N1ZURhdGE6IGFueSwgb3BlbmVkRnJvbTogYW55LCBpc1JDTWFuZGF0b3J5OiBhbnkpIHtcclxuICAgIGNvbnN0IGVycm9ycyA9IFtdO1xyXG4gICAgaWYgKCFpc3N1ZURhdGEuaXNzdWVOYW1lIHx8IGlzc3VlRGF0YS5pc3N1ZU5hbWUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBlcnJvcnMucHVzaCgnaXNzdWVOYW1lJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNzdWVEYXRhLmlzc3VlUkMubGVuZ3RoID09PSAwICYmIGlzUkNNYW5kYXRvcnkpIHtcclxuICAgICAgZXJyb3JzLnB1c2goJ2lzc3VlUkMnKTtcclxuICAgIH1cclxuICAgIGlmIChpc3N1ZURhdGEuZW50cnVzdFRvLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBlcnJvcnMucHVzaCgnZW50cnVzdFRvJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzc3VlRGF0YS5pc3N1ZUR1ZURhdGUpIHtcclxuICAgICAgZXJyb3JzLnB1c2goJ2lzc3VlRHVlRGF0ZScpO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBpc3N1ZURhdGEuaXNzdWVSZWNvbW1lbmRhdGlvblxyXG4gICAgICAgIC5yZXBsYWNlKC8mbmJzcDsvZywgJycpXHJcbiAgICAgICAgLnJlcGxhY2UoL1xcPGJyXFxzKltcXC9dPz4vZ2ksICcnKVxyXG4gICAgICAgIC50cmltKCkubGVuZ3RoID09PSAwXHJcbiAgICApIHtcclxuICAgICAgZXJyb3JzLnB1c2goJ2lzc3VlUmVjb21tZW5kYXRpb24nKTtcclxuICAgIH1cclxuICAgIHJldHVybiBlcnJvcnM7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVBheWxvYWQoaXNzdWVEYXRhOiBhbnksIG9wdGlvbkZpZWxkc1N0YXR1czogYW55KSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZERhdGUgPSBuZXcgRGF0ZShpc3N1ZURhdGEuaXNzdWVEdWVEYXRlKTtcclxuICAgIGNvbnN0IGRhdGVTcGxpdCA9IFtcclxuICAgICAgc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgIHNlbGVjdGVkRGF0ZS5nZXRNb250aCgpICsgMSxcclxuICAgICAgc2VsZWN0ZWREYXRlLmdldERhdGUoKSxcclxuICAgIF07XHJcbiAgICBjb25zdCB0aW1lOiBhbnkgPSB0aGlzLmNvbnZlcnRGcm9tMTJUbzI0Rm9ybWF0KFxyXG4gICAgICBpc3N1ZURhdGEuaXNzdWVEdWVUaW1lXHJcbiAgICApLnNwbGl0KCc6Jyk7XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoXHJcbiAgICAgIGRhdGVTcGxpdFswXSxcclxuICAgICAgZGF0ZVNwbGl0WzFdIC0gMSxcclxuICAgICAgZGF0ZVNwbGl0WzJdLFxyXG4gICAgICB0aW1lWzBdLFxyXG4gICAgICB0aW1lWzFdLFxyXG4gICAgICAwXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGNyZWF0ZUlzc3VlOiBhbnkgPSB7XHJcbiAgICAgIGlzc3VlX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzOiBpc3N1ZURhdGE/Lmlzc3VlRGVzY3JpcHRpb25BdHRhY2hlbWVudHMsXHJcbiAgICAgIGFzc29jaWF0ZWRfcmlzazogb3B0aW9uRmllbGRzU3RhdHVzLkFTU09DSUFURURfUklTS1NcclxuICAgICAgICA/IGlzc3VlRGF0YS5pc3N1ZUFzc29jaWF0ZWRSaXNrXHJcbiAgICAgICAgOiAnJyxcclxuICAgICAgaXNzdWVfbmFtZTogaXNzdWVEYXRhLmlzc3VlTmFtZSxcclxuICAgICAgcmVwb3J0X2lkOiAnMCcsXHJcbiAgICAgIGlzc3VlX2Rlc2NyaXB0aW9uOiBpc3N1ZURhdGEuaXNzdWVEZXNjcmlwdGlvbixcclxuICAgICAgaXNzdWVfdHlwZTogb3B0aW9uRmllbGRzU3RhdHVzLklTU1VFX1RZUEVcclxuICAgICAgICA/IHRoaXMuYXJyYXlUb0lkKGlzc3VlRGF0YS5pc3N1ZVR5cGUsICdpc3N1ZV9pZCcpLnRvU3RyaW5nKClcclxuICAgICAgICA6ICcnLFxyXG4gICAgICBleGNlcHRpb25fdHlwZTogb3B0aW9uRmllbGRzU3RhdHVzLkVYQ0VQVElPTl9UWVBFXHJcbiAgICAgICAgPyBpc3N1ZURhdGEuZXhjZXB0aW9uVHlwZS50b1N0cmluZygpXHJcbiAgICAgICAgOiAnJyxcclxuICAgICAgcmlza19jbGFzczogaXNzdWVEYXRhLmlzc3VlUmlza1JhdGluZy50b1N0cmluZygpID8/ICcnLFxyXG4gICAgICBwcmlvcml0eTogb3B0aW9uRmllbGRzU3RhdHVzLlBSSU9SSVRZXHJcbiAgICAgICAgPyBpc3N1ZURhdGEuaXNzdWVQcmlvcml0eS50b1N0cmluZygpXHJcbiAgICAgICAgOiAnJyxcclxuICAgICAgaXNzdWVfY2F0ZWdvcnlfaWQ6XHJcbiAgICAgICAgdGhpcy5hcnJheVRvSWQoaXNzdWVEYXRhLmlzc3VlQ2F0ZWdvcnksICdjYXRlZ29yeV9pZCcpID8/IDAsXHJcbiAgICAgIHJlY29tbWVuZGF0aW9uOiBpc3N1ZURhdGEuaXNzdWVSZWNvbW1lbmRhdGlvbixcclxuICAgICAgZW50cnVzdGVkX3RvOiB0aGlzLmFycmF5VG9JZChpc3N1ZURhdGEuZW50cnVzdFRvLCAnZW1wbG95ZWVfaWQnKSA/PyAwLFxyXG4gICAgICBpc3N1ZV9kYXRlOlxyXG4gICAgICAgIGRhdGVTcGxpdFswXSArXHJcbiAgICAgICAgJy0nICtcclxuICAgICAgICBkYXRlU3BsaXRbMV0gK1xyXG4gICAgICAgICctJyArXHJcbiAgICAgICAgZGF0ZVNwbGl0WzJdICtcclxuICAgICAgICAnICcgK1xyXG4gICAgICAgIHRoaXMuY29udmVydEZyb20xMlRvMjRGb3JtYXQoaXNzdWVEYXRhLmlzc3VlRHVlVGltZSksXHJcbiAgICAgIGZhaWxlZF90aW1lOiB0aGlzLmNvbnZlcnRGcm9tMTJUbzI0Rm9ybWF0KGlzc3VlRGF0YS5pc3N1ZUR1ZVRpbWUpLFxyXG4gICAgICBpc3N1ZV9kdWVfZGF0ZTpcclxuICAgICAgICBkYXRlU3BsaXRbMF0gK1xyXG4gICAgICAgICctJyArXHJcbiAgICAgICAgZGF0ZVNwbGl0WzFdICtcclxuICAgICAgICAnLScgK1xyXG4gICAgICAgIGRhdGVTcGxpdFsyXSArXHJcbiAgICAgICAgJyAnICtcclxuICAgICAgICB0aGlzLmNvbnZlcnRGcm9tMTJUbzI0Rm9ybWF0KGlzc3VlRGF0YS5pc3N1ZUR1ZVRpbWUpLFxyXG4gICAgICBncmNfYXJlYTogJycsXHJcbiAgICAgIGNjX2VtcGxveWVlX2VtYWlsOiBvcHRpb25GaWVsZHNTdGF0dXMuT1ZFUlNJR0hUXHJcbiAgICAgICAgPyB0aGlzLmFycmF5VG9JRHNEdHJpbmcoaXNzdWVEYXRhLmlzc3VlQ0NVc2VycywgJ2VtcGxveWVlX2VtYWlsJylcclxuICAgICAgICA6ICcnLFxyXG4gICAgICBmYWlsdXJlX2NjX2VtcGxveWVlX2VtYWlsOiBvcHRpb25GaWVsZHNTdGF0dXMuT1ZFUlNJR0hUXHJcbiAgICAgICAgPyB0aGlzLmFycmF5VG9JRHNEdHJpbmcoaXNzdWVEYXRhLmZhaWx1cmVDQ1VzZXJzLCAnZW1wbG95ZWVfZW1haWwnKVxyXG4gICAgICAgIDogJycsXHJcbiAgICAgIGN1c3RvbV90YWdfdmFsdWU6ICcnLFxyXG4gICAgICBpc3N1ZV9yZXNvbHZlX3RpbWVzdGFtcDogKGRhdGUuZ2V0VGltZSgpIC8gMTAwMCkudG9TdHJpbmcoKSxcclxuICAgICAgZXZpZGVuY2VfdXBsb2FkX2ZsYWc6IG9wdGlvbkZpZWxkc1N0YXR1cy5FVklERU5DRVxyXG4gICAgICAgID8gaXNzdWVEYXRhLmV2aWRlbmNlUmVxdWlyZWRcclxuICAgICAgICAgID8gJzEnXHJcbiAgICAgICAgICA6ICcwJ1xyXG4gICAgICAgIDogJzAnLFxyXG4gICAgfTtcclxuICAgIGlmIChpc3N1ZURhdGEuaXNzdWVSQy5sZW5ndGgpIHtcclxuICAgICAgY3JlYXRlSXNzdWUucmNfaWQgPSB0aGlzLmFycmF5VG9JZChpc3N1ZURhdGEuaXNzdWVSQywgJ3JjX2lkJykgPz8gMDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY3JlYXRlSXNzdWU7XHJcbiAgfVxyXG5cclxuICBwYXlsb2FkQnVpbGRlcihpc3N1ZURhdGE6IGFueSwgb3B0aW9uRmllbGRzU3RhdHVzOiBhbnkpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKGlzc3VlRGF0YS5pc3N1ZUR1ZURhdGUpO1xyXG4gICAgY29uc3QgZGF0ZVNwbGl0ID0gW1xyXG4gICAgICBzZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgc2VsZWN0ZWREYXRlLmdldE1vbnRoKCkgKyAxLFxyXG4gICAgICBzZWxlY3RlZERhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgZGVzY3JpcHRpb246IFtdLFxyXG4gICAgICBhc3NvY2lhdGVkX3Jpc2s6IFtdLFxyXG4gICAgICByZWNvbW1lbmRhdGlvbjogW10sXHJcbiAgICB9O1xyXG5cclxuICAgIHBheWxvYWQudGl0bGUgPSBpc3N1ZURhdGEuaXNzdWVOYW1lLnRyaW0oKSA/PyAnJztcclxuICAgIHBheWxvYWQucmNfaWQgPSBpc3N1ZURhdGEuaXNzdWVSQy5sZW5ndGhcclxuICAgICAgPyB0aGlzLmdldEFycmF5SWQoaXNzdWVEYXRhLmlzc3VlUkMsICdyY19pZCcpXHJcbiAgICAgIDogW107XHJcbiAgICBwYXlsb2FkLmNhdGVnb3J5X2lkID0gaXNzdWVEYXRhLmlzc3VlQ2F0ZWdvcnkubGVuZ3RoXHJcbiAgICAgID8gdGhpcy5hcnJheVRvSWQoaXNzdWVEYXRhLmlzc3VlQ2F0ZWdvcnksICdjYXRlZ29yeV9pZCcpXHJcbiAgICAgIDogbnVsbDtcclxuICAgIHBheWxvYWQuZGVzY3JpcHRpb25bMF0gPSB7XHJcbiAgICAgIHRleHQ6IGlzc3VlRGF0YS5pc3N1ZURlc2NyaXB0aW9uID8/ICcnLFxyXG4gICAgICBhdHRhY2htZW50czogaXNzdWVEYXRhPy5pc3N1ZURlc2NyaXB0aW9uQXR0YWNoZW1lbnRzLmxlbmd0aFxyXG4gICAgICAgID8gaXNzdWVEYXRhPy5pc3N1ZURlc2NyaXB0aW9uQXR0YWNoZW1lbnRzXHJcbiAgICAgICAgOiBbXSxcclxuICAgIH07XHJcbiAgICBwYXlsb2FkLmV4Y2VwdGlvbl90eXBlID0gb3B0aW9uRmllbGRzU3RhdHVzLkVYQ0VQVElPTl9UWVBFXHJcbiAgICAgID8gTnVtYmVyKGlzc3VlRGF0YS5leGNlcHRpb25UeXBlKVxyXG4gICAgICA6IG51bGw7XHJcbiAgICBwYXlsb2FkLnJpc2tfY2xhc3MgPSBpc3N1ZURhdGEuaXNzdWVSaXNrUmF0aW5nID8/IG51bGw7XHJcbiAgICBwYXlsb2FkLnByaW9yaXR5ID0gb3B0aW9uRmllbGRzU3RhdHVzLlBSSU9SSVRZXHJcbiAgICAgID8gTnVtYmVyKGlzc3VlRGF0YS5pc3N1ZVByaW9yaXR5KVxyXG4gICAgICA6IG51bGw7XHJcbiAgICBwYXlsb2FkLmFzc2lnbmVlX2lkID0gaXNzdWVEYXRhLmVudHJ1c3RUb1xyXG4gICAgICA/IHRoaXMuYXJyYXlUb0lkKGlzc3VlRGF0YS5lbnRydXN0VG8sICdteV9tZW1iZXJfaWQnKVxyXG4gICAgICA6IG51bGw7XHJcbiAgICBwYXlsb2FkLmFzc29jaWF0ZWRfcmlza1swXSA9IHtcclxuICAgICAgdGV4dDogb3B0aW9uRmllbGRzU3RhdHVzLkFTU09DSUFURURfUklTS1NcclxuICAgICAgICA/IGlzc3VlRGF0YS5pc3N1ZUFzc29jaWF0ZWRSaXNrXHJcbiAgICAgICAgOiAnJyxcclxuICAgICAgYXR0YWNobWVudHM6IFtdLFxyXG4gICAgfTtcclxuICAgIHBheWxvYWQucmVjb21tZW5kYXRpb25bMF0gPSB7XHJcbiAgICAgIHRleHQ6IGlzc3VlRGF0YS5pc3N1ZVJlY29tbWVuZGF0aW9uID8/ICcnLFxyXG4gICAgICBhdHRhY2htZW50czogaXNzdWVEYXRhPy5yZWNvbW1lbmRlZEFjdGlvbnNBdHRhY2htZW50cy5sZW5ndGhcclxuICAgICAgICA/IGlzc3VlRGF0YT8ucmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHNcclxuICAgICAgICA6IFtdLFxyXG4gICAgfTtcclxuICAgIHBheWxvYWQuZXZpZGVuY2UgPSB7XHJcbiAgICAgIGV2aWRlbmNlX2ZsYWc6IG9wdGlvbkZpZWxkc1N0YXR1cy5FVklERU5DRVxyXG4gICAgICAgID8gaXNzdWVEYXRhLmV2aWRlbmNlUmVxdWlyZWRcclxuICAgICAgICAgID8gMVxyXG4gICAgICAgICAgOiAwXHJcbiAgICAgICAgOiAwLFxyXG4gICAgfTtcclxuICAgIHBheWxvYWQuZnJlcXVlbmN5X2RldGFpbHMgPSB7XHJcbiAgICAgIGZyZXF1ZW5jeV90aW1lOlxyXG4gICAgICAgIHRoaXMuY29udmVydEZyb20xMlRvMjRGb3JtYXQoaXNzdWVEYXRhLmlzc3VlRHVlVGltZSkgPz8gJycsXHJcbiAgICAgIGZyZXF1ZW5jeV9kYXRlOlxyXG4gICAgICAgIGRhdGVTcGxpdFswXSArXHJcbiAgICAgICAgJy0nICtcclxuICAgICAgICAoZGF0ZVNwbGl0WzFdIDwgMTAgPyAnMCcgKyBkYXRlU3BsaXRbMV0gOiBkYXRlU3BsaXRbMV0pICtcclxuICAgICAgICAnLScgK1xyXG4gICAgICAgIChkYXRlU3BsaXRbMl0gPCAxMCA/ICcwJyArIGRhdGVTcGxpdFsyXSA6IGRhdGVTcGxpdFsyXSksXHJcbiAgICB9O1xyXG4gICAgcGF5bG9hZC5vdmVyc2VlciA9IHtcclxuICAgICAgY2NfZW1haWw6IG9wdGlvbkZpZWxkc1N0YXR1cy5PVkVSU0lHSFRcclxuICAgICAgICA/IGlzc3VlRGF0YS5pc3N1ZUNDVXNlcnMubGVuZ3RoXHJcbiAgICAgICAgICA/IGlzc3VlRGF0YS5pc3N1ZUNDVXNlcnMubWFwKCh4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4geyBtZW1iZXJfaWQ6IHgubXlfbWVtYmVyX2lkID8/IDAsIGFsZXJ0X2VuYWJsZTogMSB9O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgOiBbXVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIGZhaWx1cmVfY2NfZW1haWw6IG9wdGlvbkZpZWxkc1N0YXR1cy5PVkVSU0lHSFRcclxuICAgICAgICA/IGlzc3VlRGF0YS5mYWlsdXJlQ0NVc2Vycy5sZW5ndGhcclxuICAgICAgICAgID8gaXNzdWVEYXRhLmZhaWx1cmVDQ1VzZXJzLm1hcCgoeDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHsgbWVtYmVyX2lkOiB4Lm15X21lbWJlcl9pZCA/PyAwLCBhbGVydF9lbmFibGU6IDEgfTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIDogW11cclxuICAgICAgICA6IFtdLFxyXG4gICAgfTtcclxuICAgIHBheWxvYWQuY3VzdG9tX3RhZ3MgPSBpc3N1ZURhdGE/Lmlzc3VlQ3VzdG9tVGFnO1xyXG4gICAgcGF5bG9hZC5pc3N1ZVR5cGUgPSBpc3N1ZURhdGE/Lmlzc3VlVHlwZTtcclxuICAgIHJldHVybiBwYXlsb2FkO1xyXG4gIH1cclxuXHJcbiAgYXJyYXlUb0lkKGFycmF5OiBhbnksIGtleTogYW55KSB7XHJcbiAgICBpZiAoYXJyYXkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBhcnJheVswXVtrZXldO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QXJyYXlJZChhcnJheTogYW55LCBrZXk6IGFueSkge1xyXG4gICAgcmV0dXJuIGFycmF5Lm1hcCgoZWxlOiBhbnkpID0+IGVsZVtrZXldKTtcclxuICB9XHJcblxyXG4gIGNvbnZlcnRGcm9tMTJUbzI0Rm9ybWF0ID0gKHRpbWUxMjogYW55KSA9PiB7XHJcbiAgICBpZiAodGltZTEyKSB7XHJcbiAgICAgIGNvbnN0IFtzSG91cnMsIG1pbnV0ZXMsIHBlcmlvZF0gPSB0aW1lMTJcclxuICAgICAgICAubWF0Y2goLyhbMC05XXsxLDJ9KTooWzAtOV17Mn0pIChhbXxwbXxBTXxQTSkvKVxyXG4gICAgICAgIC5zbGljZSgxKTtcclxuICAgICAgY29uc3QgUE0gPSBwZXJpb2QgPT09ICdQTSc7XHJcbiAgICAgIGNvbnN0IGhvdXJzID0gKCtzSG91cnMgJSAxMikgKyAoUE0gPyAxMiA6IDApO1xyXG5cclxuICAgICAgcmV0dXJuIGAkeygnMCcgKyBob3Vycykuc2xpY2UoLTIpfToke21pbnV0ZXN9OjAwYDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBERUZBVUxUXzI0SFI7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY29udmVydEZyb20yNFRvMTJGb3JtYXQodGltZTogYW55KSB7XHJcbiAgICBjb25zdCBoaG1tID0gdGltZS5zcGxpdCgnOicpO1xyXG4gICAgdGltZSA9IGAke2hobW1bMF19OiR7aGhtbVsxXX1gO1xyXG4gICAgLy8gQ2hlY2sgY29ycmVjdCB0aW1lIGZvcm1hdCBhbmQgc3BsaXQgaW50byBjb21wb25lbnRzXHJcbiAgICB0aW1lID0gdGltZVxyXG4gICAgICAudG9TdHJpbmcoKVxyXG4gICAgICAubWF0Y2goL14oWzAxXVxcZHwyWzAtM10pKDopKFswLTVdXFxkKSg6WzAtNV1cXGQpPyQvKSB8fCBbdGltZV07XHJcblxyXG4gICAgaWYgKHRpbWUubGVuZ3RoID4gMSkge1xyXG4gICAgICAvLyBJZiB0aW1lIGZvcm1hdCBjb3JyZWN0XHJcbiAgICAgIHRpbWUgPSB0aW1lLnNsaWNlKDEpOyAvLyBSZW1vdmUgZnVsbCBzdHJpbmcgbWF0Y2ggdmFsdWVcclxuICAgICAgdGltZVs1XSA9ICt0aW1lWzBdIDwgMTIgPyAnIEFNJyA6ICcgUE0nOyAvLyBTZXQgQU0vUE1cclxuICAgICAgdGltZVswXSA9ICt0aW1lWzBdICUgMTIgfHwgMTI7IC8vIEFkanVzdCBob3Vyc1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRpbWUuam9pbignJyk7IC8vIHJldHVybiBhZGp1c3RlZCB0aW1lIG9yIG9yaWdpbmFsIHN0cmluZ1xyXG4gIH1cclxuXHJcbiAgYXJyYXlUb0lEc0R0cmluZyhhcnJheTogYW55LCBpZGVudGlmaWVyS2V5OiBhbnkpIHtcclxuICAgIGNvbnN0IGxpc3QgPSBhcnJheS5tYXAoKGVsOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIGVsW2lkZW50aWZpZXJLZXldO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbGlzdC5qb2luKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGxvYWRzIHRoZSBnaXZlbiBmaWxlIHRvIHNlcnZlclxyXG4gICAqIEBwYXJhbSBwYXlsb2FkIHBheWxvYWQgRmlsZSBkYXRhIHRvIGJlIHVwbG9hZGVkXHJcbiAgICogQHBhcmFtIHBhdGggcGF0aCBQYXRoIG9mIGZpbGUgdG8gYmUgdXBsb2FkZWRcclxuICAgKiBAcmV0dXJucyByZXNwb25zZSBhZnRlciB1cGxvYWRpbmcgYSBmaWxlXHJcbiAgICovXHJcbiAgdXBsb2FkRmlsZXMocGF5bG9hZDogYW55LCBwYXRoOiBhbnkpIHtcclxuICAgIC8vIHtcclxuICAgIC8vICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXHJcbiAgICAvLyAgIG9ic2VydmU6ICdldmVudHMnfVxyXG4gICAgY29uc3QgT1JHX1BBVEggPSBgby8ke3BhdGh9YDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgdGhpcy5lbnYuZmlsZVVwbG9hZEVuZFBvaW50ICsgT1JHX1BBVEggKyAnJm5nc3ctYnlwYXNzPXRydWUnLFxyXG4gICAgICBwYXlsb2FkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXNzdWVEZXRhaWxzKGlzc3VlSWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcclxuICAgICAgJ3Rva2VuJyxcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxyXG4gICAgKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLmVudi5hc3N1cmFuY2UgKyAnSXNzdWUvRWRpdC8nICsgaXNzdWVJZCwgeyBoZWFkZXJzIH0pXHJcbiAgICAgIC5waXBlKHJldHJ5KDMpKTtcclxuICB9XHJcbn1cclxuIl19
|