aws-cdk 2.37.1 → 2.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -1
- package/THIRD_PARTY_LICENSES +81 -1
- package/build-info.json +2 -2
- package/lib/api/aws-auth/aws-sdk-inifile.js +2 -3
- package/lib/api/aws-auth/awscli-compatible.js +5 -7
- package/lib/api/aws-auth/sdk-provider.js +7 -11
- package/lib/api/aws-auth/sdk.js +2 -3
- package/lib/api/bootstrap/bootstrap-environment.js +14 -15
- package/lib/api/bootstrap/deploy-bootstrap.js +5 -7
- package/lib/api/cloudformation-deployments.js +9 -12
- package/lib/api/cxapp/cloud-assembly.js +3 -4
- package/lib/api/cxapp/cloud-executable.js +2 -3
- package/lib/api/cxapp/exec.js +8 -10
- package/lib/api/deploy-stack.js +11 -13
- package/lib/api/evaluate-cloudformation-template.js +6 -11
- package/lib/api/hotswap/appsync-mapping-templates.js +4 -5
- package/lib/api/hotswap/code-build-projects.js +2 -3
- package/lib/api/hotswap/ecs-services.js +4 -5
- package/lib/api/hotswap/lambda-functions.js +45 -24
- package/lib/api/hotswap/s3-bucket-deployments.js +3 -5
- package/lib/api/hotswap/stepfunctions-state-machines.js +2 -3
- package/lib/api/hotswap-deployments.js +5 -7
- package/lib/api/logs/logs-monitor.js +5 -8
- package/lib/api/nested-stack-helpers.js +9 -11
- package/lib/api/toolkit-info.js +12 -17
- package/lib/api/util/cloudformation/stack-activity-monitor.js +17 -27
- package/lib/api/util/cloudformation.js +7 -11
- package/lib/api/util/placeholders.js +2 -3
- package/lib/assets.js +3 -4
- package/lib/cdk-toolkit.d.ts +14 -0
- package/lib/cdk-toolkit.js +36 -19
- package/lib/cli.js +14 -14
- package/lib/context-providers/load-balancers.js +11 -18
- package/lib/context-providers/security-groups.js +5 -7
- package/lib/deploy.d.ts +7 -0
- package/lib/deploy.js +43 -0
- package/lib/import.js +8 -13
- package/lib/index.js +2500 -1469
- package/lib/notices.js +11 -17
- package/lib/settings.js +4 -5
- package/lib/util/asset-publishing.js +5 -8
- package/lib/util/directories.js +2 -3
- package/lib/version.js +2 -2
- package/package.json +10 -9
- package/test/api/bootstrap2.test.js +2 -3
- package/test/api/cloud-executable.test.js +2 -3
- package/test/api/deploy-stack.test.js +4 -7
- package/test/api/fake-sts.js +6 -8
- package/test/api/hotswap/hotswap-deployments.test.js +4 -4
- package/test/api/hotswap/lambda-functions-docker-hotswap-deployments.test.js +3 -3
- package/test/api/hotswap/lambda-functions-hotswap-deployments.test.js +179 -7
- package/test/api/sdk-provider.test.js +8 -11
- package/test/aws-sdk-non-public-apis.test.js +2 -3
- package/test/cdk-toolkit.test.js +10 -1
- package/test/context-providers/load-balancers.test.js +3 -5
- package/test/deploy.test.d.ts +1 -0
- package/test/deploy.test.js +175 -0
- package/test/import.test.js +2 -2
- package/test/init.test.js +2 -3
- package/test/integ/cli/app/app.js +19 -0
- package/test/integ/cli/bootstrapping.integtest.js +9 -20
- package/test/integ/cli/cli.integtest.js +62 -31
- package/test/integ/github-helpers.js +2 -3
- package/test/integ/helpers/aws.js +4 -7
- package/test/integ/helpers/cdk.js +21 -30
- package/test/integ/helpers/sam.js +10 -17
- package/test/util/mock-child_process.js +3 -4
- package/test/util/mock-sdk.js +4 -6
- package/test/util/mock-toolkitinfo.js +4 -5
- package/test/util.js +3 -5
|
@@ -45,8 +45,7 @@ describe('utilities', () => {
|
|
|
45
45
|
const listenerArns = [...Array(100)].map((_, i) => `arn:listener-${i}`);
|
|
46
46
|
expect(listenerArns[0]).toEqual('arn:listener-0');
|
|
47
47
|
AWS.mock('ELBv2', 'describeListeners', (_params, cb) => {
|
|
48
|
-
|
|
49
|
-
const start = parseInt((_a = _params.Marker) !== null && _a !== void 0 ? _a : '0');
|
|
48
|
+
const start = parseInt(_params.Marker ?? '0');
|
|
50
49
|
const end = start + 10;
|
|
51
50
|
const slice = listenerArns.slice(start, end);
|
|
52
51
|
cb(null, {
|
|
@@ -67,8 +66,7 @@ describe('utilities', () => {
|
|
|
67
66
|
const loadBalancerArns = [...Array(100)].map((_, i) => `arn:load-balancer-${i}`);
|
|
68
67
|
expect(loadBalancerArns[0]).toEqual('arn:load-balancer-0');
|
|
69
68
|
AWS.mock('ELBv2', 'describeLoadBalancers', (_params, cb) => {
|
|
70
|
-
|
|
71
|
-
const start = parseInt((_a = _params.Marker) !== null && _a !== void 0 ? _a : '0');
|
|
69
|
+
const start = parseInt(_params.Marker ?? '0');
|
|
72
70
|
const end = start + 10;
|
|
73
71
|
const slice = loadBalancerArns.slice(start, end);
|
|
74
72
|
cb(null, {
|
|
@@ -766,4 +764,4 @@ function mockALBLookup(options) {
|
|
|
766
764
|
cb(null, { Listeners: options.listeners });
|
|
767
765
|
});
|
|
768
766
|
}
|
|
769
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1iYWxhbmNlcnMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvYWQtYmFsYW5jZXJzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyREFBMkQ7QUFFM0Qsb0NBQW9DO0FBQ3BDLCtFQUE4TjtBQUM5TiwrQ0FBbUQ7QUFFbkQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFFdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBZSxFQUFFLENBQUM7QUFJdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ2YsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUM7QUFDVCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO0lBQ3pCLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNuRCxNQUFNLFlBQVksR0FBNkMsRUFBRSxDQUFDO1FBQ2xFLEtBQUssTUFBTSxXQUFXLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2pGLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRztnQkFDMUIsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLElBQUksRUFBRTtvQkFDSixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtpQkFDcEM7YUFDRixDQUFDO1NBQ0g7UUFBQSxDQUFDO1FBRUYsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMsT0FBb0MsRUFBRSxFQUE2QyxFQUFFLEVBQUU7WUFDeEgsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFB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QUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDLE9BQW9DLEVBQUUsRUFBNkMsRUFBRSxFQUFFO1FBQ3hILElBQUksT0FBTyxDQUFDLG9CQUFvQixLQUFLLFNBQVMsRUFBRTtZQUM5QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUMsT0FBeUMsRUFBRSxFQUFrRCxFQUFFLEVBQUU7UUFDdkksSUFBSSxPQUFPLENBQUMseUJBQXlCLEtBQUssU0FBUyxFQUFFO1lBQ25ELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDNUQ7UUFDRCxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBhd3MgZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQgKiBhcyBBV1MgZnJvbSAnYXdzLXNkay1tb2NrJztcbmltcG9ydCB7IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luLCBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4sIHRhZ3NNYXRjaCwgZGVzY3JpYmVMaXN0ZW5lcnNCeUxvYWRCYWxhbmNlckFybiwgZGVzY3JpYmVUYWdzLCBkZXNjcmliZUxvYWRCYWxhbmNlcnMgfSBmcm9tICcuLi8uLi9saWIvY29udGV4dC1wcm92aWRlcnMvbG9hZC1iYWxhbmNlcnMnO1xuaW1wb3J0IHsgTW9ja1Nka1Byb3ZpZGVyIH0gZnJvbSAnLi4vdXRpbC9tb2NrLXNkayc7XG5cbkFXUy5zZXRTREsocmVxdWlyZS5yZXNvbHZlKCdhd3Mtc2RrJykpO1xuXG5jb25zdCBtb2NrU0RLID0gbmV3IE1vY2tTZGtQcm92aWRlcigpO1xuXG50eXBlIEF3c0NhbGxiYWNrPFQ+ID0gKGVycjogRXJyb3IgfCBudWxsLCB2YWw6IFQpID0+IHZvaWQ7XG5cbmFmdGVyRWFjaChkb25lID0+IHtcbiAgQVdTLnJlc3RvcmUoKTtcbiAgZG9uZSgpO1xufSk7XG5cbmRlc2NyaWJlKCd1dGlsaXRpZXMnLCAoKSA9PiB7XG4gIHRlc3QoJ2Rlc2NyaWJlVGFncyB5aWVsZHMgdGFncyBieSBjaHVuaycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZVRhZ3M6IFJlY29yZDxzdHJpbmcsIGF3cy5FTEJ2Mi5UYWdEZXNjcmlwdGlvbj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHJlc291cmNlQXJuIG9mIFsuLi5BcnJheSgxMDApXS5tYXAoKF8sIGkpID0+IGBhcm46bG9hZC1iYWxhbmNlci0ke2l9YCkpIHtcbiAgICAgIHJlc291cmNlVGFnc1tyZXNvdXJjZUFybl0gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiByZXNvdXJjZUFybixcbiAgICAgICAgVGFnczogW1xuICAgICAgICAgIHsgS2V5OiAnbmFtZScsIFZhbHVlOiByZXNvdXJjZUFybiB9LFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlVGFncycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVUYWdzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVUYWdzT3V0cHV0PikgPT4ge1xuICAgICAgZXhwZWN0KF9wYXJhbXMuUmVzb3VyY2VBcm5zLmxlbmd0aCkudG9CZUxlc3NUaGFuT3JFcXVhbCgyMCk7XG5cbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgVGFnRGVzY3JpcHRpb25zOiBfcGFyYW1zLlJlc291cmNlQXJucy5tYXAocmVzb3VyY2VBcm4gPT4gKHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogcmVzb3VyY2VBcm4sXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICduYW1lJywgVmFsdWU6IHJlc291cmNlQXJuIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSkpLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBlbGJ2MiA9IChhd2FpdCBtb2NrU0RLLmZvckVudmlyb25tZW50KCkpLnNkay5lbGJ2MigpO1xuXG4gICAgY29uc3QgcmVzb3VyY2VUYWdzT3V0OiBSZWNvcmQ8c3RyaW5nLCBhd3MuRUxCdjIuVGFnRGVzY3JpcHRpb24+ID0ge307XG4gICAgZm9yIGF3YWl0IChjb25zdCB0YWdEZXNjcmlwdGlvbiBvZiBkZXNjcmliZVRhZ3MoZWxidjIsIE9iamVjdC5rZXlzKHJlc291cmNlVGFncykpKSB7XG4gICAgICByZXNvdXJjZVRhZ3NPdXRbdGFnRGVzY3JpcHRpb24uUmVzb3VyY2VBcm4hXSA9IHRhZ0Rlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIGV4cGVjdChyZXNvdXJjZVRhZ3NPdXQpLnRvRXF1YWwocmVzb3VyY2VUYWdzKTtcbiAgfSk7XG5cbiAgdGVzdCgnZGVzY3JpYmVMaXN0ZW5lcnNCeUxvYWRCYWxhbmNlckFybiB0cmF2ZXJzZXMgcGFnZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gYXJuOmxpc3RlbmVyLTAsIGFybjpsaXN0ZW5lci0xLCAuLi4sIGFybjpsaXN0ZW5lci05OVxuICAgIGNvbnN0IGxpc3RlbmVyQXJucyA9IFsuLi5BcnJheSgxMDApXS5tYXAoKF8sIGkpID0+IGBhcm46bGlzdGVuZXItJHtpfWApO1xuICAgIGV4cGVjdChsaXN0ZW5lckFybnNbMF0pLnRvRXF1YWwoJ2FybjpsaXN0ZW5lci0wJyk7XG5cbiAgICBBV1MubW9jaygnRUxCdjInLCAnZGVzY3JpYmVMaXN0ZW5lcnMnLCAoX3BhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlTGlzdGVuZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNPdXRwdXQ+KSA9PiB7XG4gICAgICBjb25zdCBzdGFydCA9IHBhcnNlSW50KF9wYXJhbXMuTWFya2VyID8/ICcwJyk7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIDEwO1xuICAgICAgY29uc3Qgc2xpY2UgPSBsaXN0ZW5lckFybnMuc2xpY2Uoc3RhcnQsIGVuZCk7XG5cbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgTGlzdGVuZXJzOiBzbGljZS5tYXAoYXJuID0+ICh7XG4gICAgICAgICAgTGlzdGVuZXJBcm46IGFybixcbiAgICAgICAgfSkpLFxuICAgICAgICBOZXh0TWFya2VyOiBlbmQgPCBsaXN0ZW5lckFybnMubGVuZ3RoID8gZW5kLnRvU3RyaW5nKCkgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGVsYnYyID0gKGF3YWl0IG1vY2tTREsuZm9yRW52aXJvbm1lbnQoKSkuc2RrLmVsYnYyKCk7XG5cbiAgICBjb25zdCBsaXN0ZW5lckFybnNGcm9tUGFnZXMgPSBBcnJheTxzdHJpbmc+KCk7XG4gICAgZm9yIGF3YWl0IChjb25zdCBsaXN0ZW5lciBvZiBkZXNjcmliZUxpc3RlbmVyc0J5TG9hZEJhbGFuY2VyQXJuKGVsYnYyLCBbJ2Fybjpsb2FkLWJhbGFuY2VyJ10pKSB7XG4gICAgICBsaXN0ZW5lckFybnNGcm9tUGFnZXMucHVzaChsaXN0ZW5lci5MaXN0ZW5lckFybiEpO1xuICAgIH1cblxuICAgIGV4cGVjdChsaXN0ZW5lckFybnNGcm9tUGFnZXMpLnRvRXF1YWwobGlzdGVuZXJBcm5zKTtcbiAgfSk7XG5cbiAgdGVzdCgnZGVzY3JpYmVMb2FkQmFsYW5jZXJzIHRyYXZlcnNlcyBwYWdlcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXJBcm5zID0gWy4uLkFycmF5KDEwMCldLm1hcCgoXywgaSkgPT4gYGFybjpsb2FkLWJhbGFuY2VyLSR7aX1gKTtcbiAgICBleHBlY3QobG9hZEJhbGFuY2VyQXJuc1swXSkudG9FcXVhbCgnYXJuOmxvYWQtYmFsYW5jZXItMCcpO1xuXG4gICAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlTG9hZEJhbGFuY2VycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzT3V0cHV0PikgPT4ge1xuICAgICAgY29uc3Qgc3RhcnQgPSBwYXJzZUludChfcGFyYW1zLk1hcmtlciA/PyAnMCcpO1xuICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyAxMDtcbiAgICAgIGNvbnN0IHNsaWNlID0gbG9hZEJhbGFuY2VyQXJucy5zbGljZShzdGFydCwgZW5kKTtcblxuICAgICAgY2IobnVsbCwge1xuICAgICAgICBMb2FkQmFsYW5jZXJzOiBzbGljZS5tYXAobG9hZEJhbGFuY2VyQXJuID0+ICh7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiBsb2FkQmFsYW5jZXJBcm4sXG4gICAgICAgIH0pKSxcbiAgICAgICAgTmV4dE1hcmtlcjogZW5kIDwgbG9hZEJhbGFuY2VyQXJucy5sZW5ndGggPyBlbmQudG9TdHJpbmcoKSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZWxidjIgPSAoYXdhaXQgbW9ja1NESy5mb3JFbnZpcm9ubWVudCgpKS5zZGsuZWxidjIoKTtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXJBcm5zRnJvbVBhZ2VzID0gKGF3YWl0IGRlc2NyaWJlTG9hZEJhbGFuY2VycyhlbGJ2Miwge30pKS5tYXAobCA9PiBsLkxvYWRCYWxhbmNlckFybiEpO1xuXG4gICAgZXhwZWN0KGxvYWRCYWxhbmNlckFybnNGcm9tUGFnZXMpLnRvRXF1YWwobG9hZEJhbGFuY2VyQXJucyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd0YWdzTWF0Y2gnLCAoKSA9PiB7XG4gICAgdGVzdCgnYWxsIHRhZ3MgbWF0Y2gnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0YWdEZXNjcmlwdGlvbiA9IHtcbiAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46d2hhdGV2ZXInLFxuICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVxdWlyZWRUYWdzID0gW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgIF07XG5cbiAgICAgIGV4cGVjdCh0YWdzTWF0Y2godGFnRGVzY3JpcHRpb24sIHJlcXVpcmVkVGFncykpLnRvRXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdleHRyYSB0YWdzIG1hdGNoJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGFnRGVzY3JpcHRpb24gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiAnYXJuOndoYXRldmVyJyxcbiAgICAgICAgVGFnczogW1xuICAgICAgICAgIHsgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9LFxuICAgICAgICAgIHsgS2V5OiAnb3RoZXInLCBWYWx1ZTogJ3RhZzInIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXF1aXJlZFRhZ3MgPSBbXG4gICAgICAgIHsga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9LFxuICAgICAgXTtcblxuICAgICAgZXhwZWN0KHRhZ3NNYXRjaCh0YWdEZXNjcmlwdGlvbiwgcmVxdWlyZWRUYWdzKSkudG9FcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ25vIHRhZ3MgbWF0Y2hlcyBubyB0YWdzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGFnRGVzY3JpcHRpb24gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiAnYXJuOndoYXRldmVyJyxcbiAgICAgICAgVGFnczogW10sXG4gICAgICB9O1xuXG4gICAgICBleHBlY3QodGFnc01hdGNoKHRhZ0Rlc2NyaXB0aW9uLCBbXSkpLnRvRXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdvbmUgdGFnIG1hdGNoZXMgb2Ygc2V2ZXJhbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHRhZ0Rlc2NyaXB0aW9uID0ge1xuICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjp3aGF0ZXZlcicsXG4gICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXF1aXJlZFRhZ3MgPSBbXG4gICAgICAgIHsga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9LFxuICAgICAgICB7IGtleTogJ290aGVyJywgdmFsdWU6ICd2YWx1ZScgfSxcbiAgICAgIF07XG5cbiAgICAgIGV4cGVjdCh0YWdzTWF0Y2godGFnRGVzY3JpcHRpb24sIHJlcXVpcmVkVGFncykpLnRvRXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgndW5kZWZpbmVkIHRhZyBkb2VzIG5vdCBlcnJvcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHRhZ0Rlc2NyaXB0aW9uID0ge1xuICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjp3aGF0ZXZlcicsXG4gICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnIH1dLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVxdWlyZWRUYWdzID0gW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgICAgeyBrZXk6ICdvdGhlcicsIHZhbHVlOiAndmFsdWUnIH0sXG4gICAgICBdO1xuXG4gICAgICBleHBlY3QodGFnc01hdGNoKHRhZ0Rlc2NyaXB0aW9uLCByZXF1aXJlZFRhZ3MpKS50b0VxdWFsKGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2xvYWQgYmFsYW5jZXIgY29udGV4dCBwcm92aWRlciBwbHVnaW4nLCAoKSA9PiB7XG4gIHRlc3QoJ2Vycm9ycyB3aGVuIG5vIG1hdGNoZXMgYXJlIGZvdW5kJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgICAgbG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9ObyBsb2FkIGJhbGFuY2VycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gbXVsdGlwbGUgbG9hZCBiYWxhbmNlcnMgbWF0Y2gnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgIEROU05hbWU6ICdkbnMxLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zMi5leGFtcGxlLmNvbScsXG4gICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnXSxcbiAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGRlc2NyaWJlVGFnc0V4cGVjdGVkOiB7IFJlc291cmNlQXJuczogWydhcm46bG9hZC1iYWxhbmNlcjEnLCAnYXJuOmxvYWQtYmFsYW5jZXIyJ10gfSxcbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgIFRhZ3M6IFtcbiAgICAgICAgICAgIHsgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMicsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFtcbiAgICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9NdWx0aXBsZSBsb2FkIGJhbGFuY2VycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgYXJuJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyMSddIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QocmVzdWx0LmlwQWRkcmVzc1R5cGUpLnRvRXF1YWwoJ2lwdjQnKTtcbiAgICBleHBlY3QocmVzdWx0LmxvYWRCYWxhbmNlckFybikudG9FcXVhbCgnYXJuOmxvYWQtYmFsYW5jZXIxJyk7XG4gICAgZXhwZWN0KHJlc3VsdC5sb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQpLnRvRXF1YWwoJ1oxMjM0Jyk7XG4gICAgZXhwZWN0KHJlc3VsdC5sb2FkQmFsYW5jZXJEbnNOYW1lKS50b0VxdWFsKCdkbnMuZXhhbXBsZS5jb20nKTtcbiAgICBleHBlY3QocmVzdWx0LnNlY3VyaXR5R3JvdXBJZHMpLnRvRXF1YWwoWydzZy0xMjM0J10pO1xuICAgIGV4cGVjdChyZXN1bHQudnBjSWQpLnRvRXF1YWwoJ3ZwYy0xMjM0Jyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2xvb2tzIHVwIGJ5IHRhZ3MnLCBhc3luYygpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgSXBBZGRyZXNzVHlwZTogJ2lwdjQnLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgRE5TTmFtZTogJ2RuczEuZXhhbXBsZS5jb20nLFxuICAgICAgICAgIENhbm9uaWNhbEhvc3RlZFpvbmVJZDogJ1oxMjM0JyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgIEROU05hbWU6ICdkbnMyLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZGVzY3JpYmVUYWdzRXhwZWN0ZWQ6IHsgUmVzb3VyY2VBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyMScsICdhcm46bG9hZC1iYWxhbmNlcjInXSB9LFxuICAgICAgdGFnRGVzY3JpcHRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUYWdzOiBbXG4gICAgICAgICAgICB7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfSxcbiAgICAgICAgICAgIHsgS2V5OiAnc2Vjb25kJywgVmFsdWU6ICd0YWcyJyB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyVGFnczogW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgICAgeyBrZXk6ICdzZWNvbmQnLCB2YWx1ZTogJ3RhZzInIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5sb2FkQmFsYW5jZXJBcm4pLnRvRXF1YWwoJ2Fybjpsb2FkLWJhbGFuY2VyMicpO1xuICB9KTtcblxuICB0ZXN0KCdmaWx0ZXJzIGJ5IHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBUeXBlOiAnbmV0d29yaycsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zMS5leGFtcGxlLmNvbScsXG4gICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnXSxcbiAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMicsXG4gICAgICAgICAgRE5TTmFtZTogJ2RuczIuZXhhbXBsZS5jb20nLFxuICAgICAgICAgIENhbm9uaWNhbEhvc3RlZFpvbmVJZDogJ1oxMjM0JyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICB0YWdEZXNjcmlwdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICB9KTtcblxuICAgIGV4cGVjdChsb2FkQmFsYW5jZXIubG9hZEJhbGFuY2VyQXJuKS50b0VxdWFsKCdhcm46bG9hZC1iYWxhbmNlcjInKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2xvYWQgYmFsYW5jZXIgbGlzdGVuZXIgY29udGV4dCBwcm92aWRlciBwbHVnaW4nLCAoKSA9PiB7XG4gIHRlc3QoJ2Vycm9ycyB3aGVuIG5vIGFzc29jaWF0ZWQgbG9hZCBiYWxhbmNlcnMgbWF0Y2gnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgbG9hZEJhbGFuY2VyczogW10sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFt7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfV0sXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygvTm8gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gbm8gbGlzdGVuZXJzIG1hdGNoJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyJyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgICBQcm90b2NvbDogJ0hUVFAnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgICAgbG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICBsaXN0ZW5lclBvcnQ6IDQ0MyxcbiAgICAgICAgbGlzdGVuZXJQcm90b2NvbDogY3hzY2hlbWEuTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbC5IVFRQUyxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9ObyBsb2FkIGJhbGFuY2VyIGxpc3RlbmVycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gbXVsdGlwbGUgbGlzdGVuZXJzIG1hdGNoJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyJyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcicsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgICBQcm90b2NvbDogJ0hUVFAnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lcjInLFxuICAgICAgICAgIFBvcnQ6IDgwLFxuICAgICAgICAgIFByb3RvY29sOiAnSFRUUCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICBsaXN0ZW5lclBvcnQ6IDgwLFxuICAgICAgICBsaXN0ZW5lclByb3RvY29sOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sLkhUVFAsXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygvTXVsdGlwbGUgbG9hZCBiYWxhbmNlciBsaXN0ZW5lcnMvaSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2xvb2tzIHVwIGJ5IGxpc3RlbmVyIGFybicsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkOiB7IExpc3RlbmVyQXJuczogWydhcm46bGlzdGVuZXItYXJuJ10gfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4nLFxuICAgICAgICAgIFBvcnQ6IDk5OSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyLWFybiddIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4nLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnLCAnc2ctMjM0NSddLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxpc3RlbmVyID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICBsaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4nLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lckFybikudG9FcXVhbCgnYXJuOmxpc3RlbmVyLWFybicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoOTk5KTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTEyMzQnLCAnc2ctMjM0NSddKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIGFybicsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnXSB9LFxuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkOiB7IExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnIH0sXG4gICAgICBsaXN0ZW5lcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIC8vIFRoaXMgb25lXG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMScsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgUG9ydDogODAsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxpc3RlbmVyID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICBsb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QobGlzdGVuZXIubGlzdGVuZXJBcm4pLnRvRXF1YWwoJ2FybjpsaXN0ZW5lci1hcm4xJyk7XG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyUG9ydCkudG9FcXVhbCg4MCk7XG4gICAgZXhwZWN0KGxpc3RlbmVyLnNlY3VyaXR5R3JvdXBJZHMpLnRvRXF1YWwoWydzZy0xMjM0J10pO1xuICB9KTtcblxuICB0ZXN0KCdsb29rcyB1cCBieSBhc3NvY2lhdGVkIGxvYWQgYmFsYW5jZXIgdGFncycsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiB1bmRlZmluZWQgfSxcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIC8vIFRoaXMgb25lIHNob3VsZCBoYXZlIHRoZSB3cm9uZyB0YWdzXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCcsICdzZy0yMzQ1J10sXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIEV4cGVjdGluZyB0aGlzIG9uZVxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTM0NTYnLCAnc2ctNDU2NyddLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICBkZXNjcmliZVRhZ3NFeHBlY3RlZDogeyBSZXNvdXJjZUFybnM6IFsnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsICdhcm46bG9hZC1iYWxhbmNlci1hcm4yJ10gfSxcbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBUYWdzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIEV4cGVjdGluZyB0aGlzIG9uZVxuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIGRlc2NyaWJlTGlzdGVuZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicgfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gVGhpcyBvbmVcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4xJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4yJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjInLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFBvcnQ6IDk5OSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgY29uc3QgbGlzdGVuZXIgPSBhd2FpdCBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFtcbiAgICAgICAgeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH0sXG4gICAgICBdLFxuICAgICAgbGlzdGVuZXJQb3J0OiA5OTksXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuMicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoOTk5KTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTM0NTYnLCAnc2ctNDU2NyddKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgbGlzdGVuZXIgcG9ydCBhbmQgcHJvdG8nLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZUxvYWRCYWxhbmNlcnMnLCAoX3BhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlTG9hZEJhbGFuY2Vyc0lucHV0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVMQnYyLkRlc2NyaWJlTG9hZEJhbGFuY2Vyc091dHB1dD4pID0+IHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKHt9KTtcbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgTG9hZEJhbGFuY2VyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFNob3VsZG4ndCBoYXZlIGFueSBtYXRjaGluZyBsaXN0ZW5lcnNcbiAgICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgICBETlNOYW1lOiAnZG5zMS5leGFtcGxlLmNvbScsXG4gICAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBTaG91bGQgaGF2ZSBhIG1hdGNoaW5nIGxpc3RlbmVyXG4gICAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgICAgRE5TTmFtZTogJ2RuczIuZXhhbXBsZS5jb20nLFxuICAgICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMjM0NSddLFxuICAgICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZVRhZ3MnLCAoX3BhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlVGFnc0lucHV0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVMQnYyLkRlc2NyaWJlVGFnc091dHB1dD4pID0+IHtcbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgVGFnRGVzY3JpcHRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlTGlzdGVuZXJzJywgKHBhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlTGlzdGVuZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNPdXRwdXQ+KSA9PiB7XG4gICAgICBpZiAocGFyYW1zLkxvYWRCYWxhbmNlckFybiA9PT0gJ2Fybjpsb2FkLWJhbGFuY2VyMScpIHtcbiAgICAgICAgY2IobnVsbCwge1xuICAgICAgICAgIExpc3RlbmVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgLy8gV3JvbmcgcG9ydCwgd3JvbmcgcHJvdG9jb2wgPT4gbm8gbWF0Y2hcbiAgICAgICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMScsXG4gICAgICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgICAgIFByb3RvY29sOiAnSFRUUCcsXG4gICAgICAgICAgICAgIFBvcnQ6IDgwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFdyb25nIHByb3RvY29sLCByaWdodCBwb3J0ID0+IG5vIG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjMnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ0hUVFBTJyxcbiAgICAgICAgICAgICAgUG9ydDogNDQzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFdyb25nIHBvcnQsIHJpZ2h0IHByb3RvY29sID0+IG5vIG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjQnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ1RDUCcsXG4gICAgICAgICAgICAgIFBvcnQ6IDk5OSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtcy5Mb2FkQmFsYW5jZXJBcm4gPT09ICdhcm46bG9hZC1iYWxhbmNlcjInKSB7XG4gICAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgICBMaXN0ZW5lcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFdyb25nIHBvcnQsIHdyb25nIHByb3RvY29sID0+IG5vIG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjUnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ0hUVFAnLFxuICAgICAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBSaWdodCBwb3J0LCByaWdodCBwcm90b2NvbCA9PiBtYXRjaFxuICAgICAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm42JyxcbiAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICAgICAgUG9ydDogNDQzLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ1RDUCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2IobmV3IEVycm9yKGBVbmV4cGVjdGVkIHJlcXVlc3Q6ICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX0nYCksIHt9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBjb25zdCBsaXN0ZW5lciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyVGFnczogW3sga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9XSxcbiAgICAgIGxpc3RlbmVyUHJvdG9jb2w6IGN4c2NoZW1hLkxvYWRCYWxhbmNlckxpc3RlbmVyUHJvdG9jb2wuVENQLFxuICAgICAgbGlzdGVuZXJQb3J0OiA0NDMsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuNicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoNDQzKTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTIzNDUnXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2ZpbHRlcnMgYnkgYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgZGVzY3JpYmVMb2FkQmFsYW5jZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuczogdW5kZWZpbmVkIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBUaGlzIG9uZSBoYXMgd3JvbmcgdHlwZSA9PiBubyBtYXRjaFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbXSxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gUmlnaHQgdHlwZSA9PiBtYXRjaFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbXSxcbiAgICAgICAgICBUeXBlOiAnbmV0d29yaycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICB0YWdEZXNjcmlwdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIGRlc2NyaWJlTGlzdGVuZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicgfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMicsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgUG9ydDogNDQzLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBjb25zdCBsaXN0ZW5lciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLk5FVFdPUkssXG4gICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgbGlzdGVuZXJQb3J0OiA0NDMsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuMicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoNDQzKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIGlzIHdyb25nIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgZGVzY3JpYmVMaXN0ZW5lcnNFeHBlY3RlZDogeyBMaXN0ZW5lckFybnM6IFsnYXJuOmxpc3RlbmVyLWFybjEnXSB9LFxuICAgICAgbGlzdGVuZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4xJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBQb3J0OiA0NDMsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnXSB9LFxuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gVGhpcyBvbmUgaGFzIHdyb25nIHR5cGUgPT4gbm8gbWF0Y2hcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogW10sXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuTkVUV09SSyxcbiAgICAgICAgbGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMScsXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygvbm8gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIGZvdW5kL2kpO1xuICB9KTtcbn0pO1xuXG5pbnRlcmZhY2UgQUxCTG9va3VwT3B0aW9ucyB7XG4gIGRlc2NyaWJlTG9hZEJhbGFuY2Vyc0V4cGVjdGVkPzogYW55O1xuICBsb2FkQmFsYW5jZXJzPzogYXdzLkVMQnYyLkxvYWRCYWxhbmNlcnM7XG4gIGRlc2NyaWJlVGFnc0V4cGVjdGVkPzogYW55O1xuICB0YWdEZXNjcmlwdGlvbnM/OiBhd3MuRUxCdjIuVGFnRGVzY3JpcHRpb25zO1xuICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkPzogYW55O1xuICBsaXN0ZW5lcnM/OiBhd3MuRUxCdjIuTGlzdGVuZXJzO1xufVxuXG5mdW5jdGlvbiBtb2NrQUxCTG9va3VwKG9wdGlvbnM6IEFMQkxvb2t1cE9wdGlvbnMpIHtcbiAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlTG9hZEJhbGFuY2VycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzT3V0cHV0PikgPT4ge1xuICAgIGlmIChvcHRpb25zLmRlc2NyaWJlTG9hZEJhbGFuY2Vyc0V4cGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKG9wdGlvbnMuZGVzY3JpYmVMb2FkQmFsYW5jZXJzRXhwZWN0ZWQpO1xuICAgIH1cbiAgICBjYihudWxsLCB7IExvYWRCYWxhbmNlcnM6IG9wdGlvbnMubG9hZEJhbGFuY2VycyB9KTtcbiAgfSk7XG5cbiAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlVGFncycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVUYWdzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVUYWdzT3V0cHV0PikgPT4ge1xuICAgIGlmIChvcHRpb25zLmRlc2NyaWJlVGFnc0V4cGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKG9wdGlvbnMuZGVzY3JpYmVUYWdzRXhwZWN0ZWQpO1xuICAgIH1cbiAgICBjYihudWxsLCB7IFRhZ0Rlc2NyaXB0aW9uczogb3B0aW9ucy50YWdEZXNjcmlwdGlvbnMgfSk7XG4gIH0pO1xuXG4gIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZUxpc3RlbmVycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNJbnB1dCwgY2I6IEF3c0NhbGxiYWNrPGF3cy5FTEJ2Mi5EZXNjcmliZUxpc3RlbmVyc091dHB1dD4pID0+IHtcbiAgICBpZiAob3B0aW9ucy5kZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKG9wdGlvbnMuZGVzY3JpYmVMaXN0ZW5lcnNFeHBlY3RlZCk7XG4gICAgfVxuICAgIGNiKG51bGwsIHsgTGlzdGVuZXJzOiBvcHRpb25zLmxpc3RlbmVycyB9KTtcbiAgfSk7XG59XG4iXX0=
|
|
767
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1iYWxhbmNlcnMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvYWQtYmFsYW5jZXJzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyREFBMkQ7QUFFM0Qsb0NBQW9DO0FBQ3BDLCtFQUE4TjtBQUM5TiwrQ0FBbUQ7QUFFbkQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFFdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBZSxFQUFFLENBQUM7QUFJdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ2YsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUM7QUFDVCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO0lBQ3pCLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNuRCxNQUFNLFlBQVksR0FBNkMsRUFBRSxDQUFDO1FBQ2xFLEtBQUssTUFBTSxXQUFXLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2pGLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRztnQkFDMUIsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLElBQUksRUFBRTtvQkFDSixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtpQkFDcEM7YUFDRixDQUFDO1NBQ0g7UUFBQSxDQUFDO1FBRUYsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMsT0FBb0MsRUFBRSxFQUE2QyxFQUFFLEVBQUU7WUFDeEgsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFB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Q0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMsT0FBb0MsRUFBRSxFQUE2QyxFQUFFLEVBQUU7UUFDeEgsSUFBSSxPQUFPLENBQUMsb0JBQW9CLEtBQUssU0FBUyxFQUFFO1lBQzlDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDdkQ7UUFDRCxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUMsQ0FBQyxDQUFDO0lBRUgsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxPQUF5QyxFQUFFLEVBQWtELEVBQUUsRUFBRTtRQUN2SSxJQUFJLE9BQU8sQ0FBQyx5QkFBeUIsS0FBSyxTQUFTLEVBQUU7WUFDbkQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUM1RDtRQUNELEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3hzY2hlbWEgZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbmltcG9ydCAqIGFzIGF3cyBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCAqIGFzIEFXUyBmcm9tICdhd3Mtc2RrLW1vY2snO1xuaW1wb3J0IHsgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4sIExvYWRCYWxhbmNlckNvbnRleHRQcm92aWRlclBsdWdpbiwgdGFnc01hdGNoLCBkZXNjcmliZUxpc3RlbmVyc0J5TG9hZEJhbGFuY2VyQXJuLCBkZXNjcmliZVRhZ3MsIGRlc2NyaWJlTG9hZEJhbGFuY2VycyB9IGZyb20gJy4uLy4uL2xpYi9jb250ZXh0LXByb3ZpZGVycy9sb2FkLWJhbGFuY2Vycyc7XG5pbXBvcnQgeyBNb2NrU2RrUHJvdmlkZXIgfSBmcm9tICcuLi91dGlsL21vY2stc2RrJztcblxuQVdTLnNldFNESyhyZXF1aXJlLnJlc29sdmUoJ2F3cy1zZGsnKSk7XG5cbmNvbnN0IG1vY2tTREsgPSBuZXcgTW9ja1Nka1Byb3ZpZGVyKCk7XG5cbnR5cGUgQXdzQ2FsbGJhY2s8VD4gPSAoZXJyOiBFcnJvciB8IG51bGwsIHZhbDogVCkgPT4gdm9pZDtcblxuYWZ0ZXJFYWNoKGRvbmUgPT4ge1xuICBBV1MucmVzdG9yZSgpO1xuICBkb25lKCk7XG59KTtcblxuZGVzY3JpYmUoJ3V0aWxpdGllcycsICgpID0+IHtcbiAgdGVzdCgnZGVzY3JpYmVUYWdzIHlpZWxkcyB0YWdzIGJ5IGNodW5rJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlVGFnczogUmVjb3JkPHN0cmluZywgYXdzLkVMQnYyLlRhZ0Rlc2NyaXB0aW9uPiA9IHt9O1xuICAgIGZvciAoY29uc3QgcmVzb3VyY2VBcm4gb2YgWy4uLkFycmF5KDEwMCldLm1hcCgoXywgaSkgPT4gYGFybjpsb2FkLWJhbGFuY2VyLSR7aX1gKSkge1xuICAgICAgcmVzb3VyY2VUYWdzW3Jlc291cmNlQXJuXSA9IHtcbiAgICAgICAgUmVzb3VyY2VBcm46IHJlc291cmNlQXJuLFxuICAgICAgICBUYWdzOiBbXG4gICAgICAgICAgeyBLZXk6ICduYW1lJywgVmFsdWU6IHJlc291cmNlQXJuIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBBV1MubW9jaygnRUxCdjInLCAnZGVzY3JpYmVUYWdzJywgKF9wYXJhbXM6IGF3cy5FTEJ2Mi5EZXNjcmliZVRhZ3NJbnB1dCwgY2I6IEF3c0NhbGxiYWNrPGF3cy5FTEJ2Mi5EZXNjcmliZVRhZ3NPdXRwdXQ+KSA9PiB7XG4gICAgICBleHBlY3QoX3BhcmFtcy5SZXNvdXJjZUFybnMubGVuZ3RoKS50b0JlTGVzc1RoYW5PckVxdWFsKDIwKTtcblxuICAgICAgY2IobnVsbCwge1xuICAgICAgICBUYWdEZXNjcmlwdGlvbnM6IF9wYXJhbXMuUmVzb3VyY2VBcm5zLm1hcChyZXNvdXJjZUFybiA9PiAoe1xuICAgICAgICAgIFJlc291cmNlQXJuOiByZXNvdXJjZUFybixcbiAgICAgICAgICBUYWdzOiBbXG4gICAgICAgICAgICB7IEtleTogJ25hbWUnLCBWYWx1ZTogcmVzb3VyY2VBcm4gfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSksXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGVsYnYyID0gKGF3YWl0IG1vY2tTREsuZm9yRW52aXJvbm1lbnQoKSkuc2RrLmVsYnYyKCk7XG5cbiAgICBjb25zdCByZXNvdXJjZVRhZ3NPdXQ6IFJlY29yZDxzdHJpbmcsIGF3cy5FTEJ2Mi5UYWdEZXNjcmlwdGlvbj4gPSB7fTtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHRhZ0Rlc2NyaXB0aW9uIG9mIGRlc2NyaWJlVGFncyhlbGJ2MiwgT2JqZWN0LmtleXMocmVzb3VyY2VUYWdzKSkpIHtcbiAgICAgIHJlc291cmNlVGFnc091dFt0YWdEZXNjcmlwdGlvbi5SZXNvdXJjZUFybiFdID0gdGFnRGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgZXhwZWN0KHJlc291cmNlVGFnc091dCkudG9FcXVhbChyZXNvdXJjZVRhZ3MpO1xuICB9KTtcblxuICB0ZXN0KCdkZXNjcmliZUxpc3RlbmVyc0J5TG9hZEJhbGFuY2VyQXJuIHRyYXZlcnNlcyBwYWdlcycsIGFzeW5jICgpID0+IHtcbiAgICAvLyBhcm46bGlzdGVuZXItMCwgYXJuOmxpc3RlbmVyLTEsIC4uLiwgYXJuOmxpc3RlbmVyLTk5XG4gICAgY29uc3QgbGlzdGVuZXJBcm5zID0gWy4uLkFycmF5KDEwMCldLm1hcCgoXywgaSkgPT4gYGFybjpsaXN0ZW5lci0ke2l9YCk7XG4gICAgZXhwZWN0KGxpc3RlbmVyQXJuc1swXSkudG9FcXVhbCgnYXJuOmxpc3RlbmVyLTAnKTtcblxuICAgIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZUxpc3RlbmVycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNJbnB1dCwgY2I6IEF3c0NhbGxiYWNrPGF3cy5FTEJ2Mi5EZXNjcmliZUxpc3RlbmVyc091dHB1dD4pID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gcGFyc2VJbnQoX3BhcmFtcy5NYXJrZXIgPz8gJzAnKTtcbiAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgMTA7XG4gICAgICBjb25zdCBzbGljZSA9IGxpc3RlbmVyQXJucy5zbGljZShzdGFydCwgZW5kKTtcblxuICAgICAgY2IobnVsbCwge1xuICAgICAgICBMaXN0ZW5lcnM6IHNsaWNlLm1hcChhcm4gPT4gKHtcbiAgICAgICAgICBMaXN0ZW5lckFybjogYXJuLFxuICAgICAgICB9KSksXG4gICAgICAgIE5leHRNYXJrZXI6IGVuZCA8IGxpc3RlbmVyQXJucy5sZW5ndGggPyBlbmQudG9TdHJpbmcoKSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZWxidjIgPSAoYXdhaXQgbW9ja1NESy5mb3JFbnZpcm9ubWVudCgpKS5zZGsuZWxidjIoKTtcblxuICAgIGNvbnN0IGxpc3RlbmVyQXJuc0Zyb21QYWdlcyA9IEFycmF5PHN0cmluZz4oKTtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IGxpc3RlbmVyIG9mIGRlc2NyaWJlTGlzdGVuZXJzQnlMb2FkQmFsYW5jZXJBcm4oZWxidjIsIFsnYXJuOmxvYWQtYmFsYW5jZXInXSkpIHtcbiAgICAgIGxpc3RlbmVyQXJuc0Zyb21QYWdlcy5wdXNoKGxpc3RlbmVyLkxpc3RlbmVyQXJuISk7XG4gICAgfVxuXG4gICAgZXhwZWN0KGxpc3RlbmVyQXJuc0Zyb21QYWdlcykudG9FcXVhbChsaXN0ZW5lckFybnMpO1xuICB9KTtcblxuICB0ZXN0KCdkZXNjcmliZUxvYWRCYWxhbmNlcnMgdHJhdmVyc2VzIHBhZ2VzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlckFybnMgPSBbLi4uQXJyYXkoMTAwKV0ubWFwKChfLCBpKSA9PiBgYXJuOmxvYWQtYmFsYW5jZXItJHtpfWApO1xuICAgIGV4cGVjdChsb2FkQmFsYW5jZXJBcm5zWzBdKS50b0VxdWFsKCdhcm46bG9hZC1iYWxhbmNlci0wJyk7XG5cbiAgICBBV1MubW9jaygnRUxCdjInLCAnZGVzY3JpYmVMb2FkQmFsYW5jZXJzJywgKF9wYXJhbXM6IGF3cy5FTEJ2Mi5EZXNjcmliZUxvYWRCYWxhbmNlcnNJbnB1dCwgY2I6IEF3c0NhbGxiYWNrPGF3cy5FTEJ2Mi5EZXNjcmliZUxvYWRCYWxhbmNlcnNPdXRwdXQ+KSA9PiB7XG4gICAgICBjb25zdCBzdGFydCA9IHBhcnNlSW50KF9wYXJhbXMuTWFya2VyID8/ICcwJyk7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIDEwO1xuICAgICAgY29uc3Qgc2xpY2UgPSBsb2FkQmFsYW5jZXJBcm5zLnNsaWNlKHN0YXJ0LCBlbmQpO1xuXG4gICAgICBjYihudWxsLCB7XG4gICAgICAgIExvYWRCYWxhbmNlcnM6IHNsaWNlLm1hcChsb2FkQmFsYW5jZXJBcm4gPT4gKHtcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46IGxvYWRCYWxhbmNlckFybixcbiAgICAgICAgfSkpLFxuICAgICAgICBOZXh0TWFya2VyOiBlbmQgPCBsb2FkQmFsYW5jZXJBcm5zLmxlbmd0aCA/IGVuZC50b1N0cmluZygpIDogdW5kZWZpbmVkLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBlbGJ2MiA9IChhd2FpdCBtb2NrU0RLLmZvckVudmlyb25tZW50KCkpLnNkay5lbGJ2MigpO1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlckFybnNGcm9tUGFnZXMgPSAoYXdhaXQgZGVzY3JpYmVMb2FkQmFsYW5jZXJzKGVsYnYyLCB7fSkpLm1hcChsID0+IGwuTG9hZEJhbGFuY2VyQXJuISk7XG5cbiAgICBleHBlY3QobG9hZEJhbGFuY2VyQXJuc0Zyb21QYWdlcykudG9FcXVhbChsb2FkQmFsYW5jZXJBcm5zKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3RhZ3NNYXRjaCcsICgpID0+IHtcbiAgICB0ZXN0KCdhbGwgdGFncyBtYXRjaCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHRhZ0Rlc2NyaXB0aW9uID0ge1xuICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjp3aGF0ZXZlcicsXG4gICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXF1aXJlZFRhZ3MgPSBbXG4gICAgICAgIHsga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9LFxuICAgICAgXTtcblxuICAgICAgZXhwZWN0KHRhZ3NNYXRjaCh0YWdEZXNjcmlwdGlvbiwgcmVxdWlyZWRUYWdzKSkudG9FcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2V4dHJhIHRhZ3MgbWF0Y2gnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0YWdEZXNjcmlwdGlvbiA9IHtcbiAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46d2hhdGV2ZXInLFxuICAgICAgICBUYWdzOiBbXG4gICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgeyBLZXk6ICdvdGhlcicsIFZhbHVlOiAndGFnMicgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlcXVpcmVkVGFncyA9IFtcbiAgICAgICAgeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH0sXG4gICAgICBdO1xuXG4gICAgICBleHBlY3QodGFnc01hdGNoKHRhZ0Rlc2NyaXB0aW9uLCByZXF1aXJlZFRhZ3MpKS50b0VxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnbm8gdGFncyBtYXRjaGVzIG5vIHRhZ3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0YWdEZXNjcmlwdGlvbiA9IHtcbiAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46d2hhdGV2ZXInLFxuICAgICAgICBUYWdzOiBbXSxcbiAgICAgIH07XG5cbiAgICAgIGV4cGVjdCh0YWdzTWF0Y2godGFnRGVzY3JpcHRpb24sIFtdKSkudG9FcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ29uZSB0YWcgbWF0Y2hlcyBvZiBzZXZlcmFsJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGFnRGVzY3JpcHRpb24gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiAnYXJuOndoYXRldmVyJyxcbiAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlcXVpcmVkVGFncyA9IFtcbiAgICAgICAgeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH0sXG4gICAgICAgIHsga2V5OiAnb3RoZXInLCB2YWx1ZTogJ3ZhbHVlJyB9LFxuICAgICAgXTtcblxuICAgICAgZXhwZWN0KHRhZ3NNYXRjaCh0YWdEZXNjcmlwdGlvbiwgcmVxdWlyZWRUYWdzKSkudG9FcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCd1bmRlZmluZWQgdGFnIGRvZXMgbm90IGVycm9yJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGFnRGVzY3JpcHRpb24gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiAnYXJuOndoYXRldmVyJyxcbiAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScgfV0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXF1aXJlZFRhZ3MgPSBbXG4gICAgICAgIHsga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9LFxuICAgICAgICB7IGtleTogJ290aGVyJywgdmFsdWU6ICd2YWx1ZScgfSxcbiAgICAgIF07XG5cbiAgICAgIGV4cGVjdCh0YWdzTWF0Y2godGFnRGVzY3JpcHRpb24sIHJlcXVpcmVkVGFncykpLnRvRXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnbG9hZCBiYWxhbmNlciBjb250ZXh0IHByb3ZpZGVyIHBsdWdpbicsICgpID0+IHtcbiAgdGVzdCgnZXJyb3JzIHdoZW4gbm8gbWF0Y2hlcyBhcmUgZm91bmQnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgICBsb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgfSksXG4gICAgKS5yZWplY3RzLnRvVGhyb3coL05vIGxvYWQgYmFsYW5jZXJzIGZvdW5kL2kpO1xuICB9KTtcblxuICB0ZXN0KCdlcnJvcnMgd2hlbiBtdWx0aXBsZSBsb2FkIGJhbGFuY2VycyBtYXRjaCcsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgSXBBZGRyZXNzVHlwZTogJ2lwdjQnLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgRE5TTmFtZTogJ2RuczEuZXhhbXBsZS5jb20nLFxuICAgICAgICAgIENhbm9uaWNhbEhvc3RlZFpvbmVJZDogJ1oxMjM0JyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgIEROU05hbWU6ICdkbnMyLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZGVzY3JpYmVUYWdzRXhwZWN0ZWQ6IHsgUmVzb3VyY2VBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyMScsICdhcm46bG9hZC1iYWxhbmNlcjInXSB9LFxuICAgICAgdGFnRGVzY3JpcHRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUYWdzOiBbXG4gICAgICAgICAgICB7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgICAgbG9hZEJhbGFuY2VyVGFnczogW1xuICAgICAgICAgIHsga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9LFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKS5yZWplY3RzLnRvVGhyb3coL011bHRpcGxlIGxvYWQgYmFsYW5jZXJzIGZvdW5kL2kpO1xuICB9KTtcblxuICB0ZXN0KCdsb29rcyB1cCBieSBhcm4nLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGRlc2NyaWJlTG9hZEJhbGFuY2Vyc0V4cGVjdGVkOiB7IExvYWRCYWxhbmNlckFybnM6IFsnYXJuOmxvYWQtYmFsYW5jZXIxJ10gfSxcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgIEROU05hbWU6ICdkbnMuZXhhbXBsZS5jb20nLFxuICAgICAgICAgIENhbm9uaWNhbEhvc3RlZFpvbmVJZDogJ1oxMjM0JyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICBsb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChyZXN1bHQuaXBBZGRyZXNzVHlwZSkudG9FcXVhbCgnaXB2NCcpO1xuICAgIGV4cGVjdChyZXN1bHQubG9hZEJhbGFuY2VyQXJuKS50b0VxdWFsKCdhcm46bG9hZC1iYWxhbmNlcjEnKTtcbiAgICBleHBlY3QocmVzdWx0LmxvYWRCYWxhbmNlckNhbm9uaWNhbEhvc3RlZFpvbmVJZCkudG9FcXVhbCgnWjEyMzQnKTtcbiAgICBleHBlY3QocmVzdWx0LmxvYWRCYWxhbmNlckRuc05hbWUpLnRvRXF1YWwoJ2Rucy5leGFtcGxlLmNvbScpO1xuICAgIGV4cGVjdChyZXN1bHQuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTEyMzQnXSk7XG4gICAgZXhwZWN0KHJlc3VsdC52cGNJZCkudG9FcXVhbCgndnBjLTEyMzQnKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgdGFncycsIGFzeW5jKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zMS5leGFtcGxlLmNvbScsXG4gICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnXSxcbiAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgSXBBZGRyZXNzVHlwZTogJ2lwdjQnLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMicsXG4gICAgICAgICAgRE5TTmFtZTogJ2RuczIuZXhhbXBsZS5jb20nLFxuICAgICAgICAgIENhbm9uaWNhbEhvc3RlZFpvbmVJZDogJ1oxMjM0JyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBkZXNjcmliZVRhZ3NFeHBlY3RlZDogeyBSZXNvdXJjZUFybnM6IFsnYXJuOmxvYWQtYmFsYW5jZXIxJywgJ2Fybjpsb2FkLWJhbGFuY2VyMiddIH0sXG4gICAgICB0YWdEZXNjcmlwdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBUYWdzOiBbXG4gICAgICAgICAgICB7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgIFRhZ3M6IFtcbiAgICAgICAgICAgIHsgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9LFxuICAgICAgICAgICAgeyBLZXk6ICdzZWNvbmQnLCBWYWx1ZTogJ3RhZzInIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbXG4gICAgICAgIHsga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9LFxuICAgICAgICB7IGtleTogJ3NlY29uZCcsIHZhbHVlOiAndGFnMicgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBleHBlY3QocmVzdWx0LmxvYWRCYWxhbmNlckFybikudG9FcXVhbCgnYXJuOmxvYWQtYmFsYW5jZXIyJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2ZpbHRlcnMgYnkgdHlwZScsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgSXBBZGRyZXNzVHlwZTogJ2lwdjQnLFxuICAgICAgICAgIFR5cGU6ICduZXR3b3JrJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgIEROU05hbWU6ICdkbnMxLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgSXBBZGRyZXNzVHlwZTogJ2lwdjQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zMi5leGFtcGxlLmNvbScsXG4gICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnXSxcbiAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMicsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFt7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfV0sXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KGxvYWRCYWxhbmNlci5sb2FkQmFsYW5jZXJBcm4pLnRvRXF1YWwoJ2Fybjpsb2FkLWJhbGFuY2VyMicpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnbG9hZCBiYWxhbmNlciBsaXN0ZW5lciBjb250ZXh0IHByb3ZpZGVyIHBsdWdpbicsICgpID0+IHtcbiAgdGVzdCgnZXJyb3JzIHdoZW4gbm8gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VycyBtYXRjaCcsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgICAgbG9hZEJhbGFuY2VyVGFnczogW3sga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9XSxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9ObyBhc3NvY2lhdGVkIGxvYWQgYmFsYW5jZXJzIGZvdW5kL2kpO1xuICB9KTtcblxuICB0ZXN0KCdlcnJvcnMgd2hlbiBubyBsaXN0ZW5lcnMgbWF0Y2gnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgbGlzdGVuZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcicsXG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXInLFxuICAgICAgICAgIFBvcnQ6IDgwLFxuICAgICAgICAgIFByb3RvY29sOiAnSFRUUCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgICBsb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcicsXG4gICAgICAgIGxpc3RlbmVyUG9ydDogNDQzLFxuICAgICAgICBsaXN0ZW5lclByb3RvY29sOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sLkhUVFBTLFxuICAgICAgfSksXG4gICAgKS5yZWplY3RzLnRvVGhyb3coL05vIGxvYWQgYmFsYW5jZXIgbGlzdGVuZXJzIGZvdW5kL2kpO1xuICB9KTtcblxuICB0ZXN0KCdlcnJvcnMgd2hlbiBtdWx0aXBsZSBsaXN0ZW5lcnMgbWF0Y2gnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdGFnRGVzY3JpcHRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjpsb2FkLWJhbGFuY2VyJyxcbiAgICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgbGlzdGVuZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcicsXG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXInLFxuICAgICAgICAgIFBvcnQ6IDgwLFxuICAgICAgICAgIFByb3RvY29sOiAnSFRUUCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyMicsXG4gICAgICAgICAgUG9ydDogODAsXG4gICAgICAgICAgUHJvdG9jb2w6ICdIVFRQJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFt7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfV0sXG4gICAgICAgIGxpc3RlbmVyUG9ydDogODAsXG4gICAgICAgIGxpc3RlbmVyUHJvdG9jb2w6IGN4c2NoZW1hLkxvYWRCYWxhbmNlckxpc3RlbmVyUHJvdG9jb2wuSFRUUCxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9NdWx0aXBsZSBsb2FkIGJhbGFuY2VyIGxpc3RlbmVycy9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgbGlzdGVuZXIgYXJuJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGRlc2NyaWJlTGlzdGVuZXJzRXhwZWN0ZWQ6IHsgTGlzdGVuZXJBcm5zOiBbJ2FybjpsaXN0ZW5lci1hcm4nXSB9LFxuICAgICAgbGlzdGVuZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4nLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybicsXG4gICAgICAgICAgUG9ydDogOTk5LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGRlc2NyaWJlTG9hZEJhbGFuY2Vyc0V4cGVjdGVkOiB7IExvYWRCYWxhbmNlckFybnM6IFsnYXJuOmxvYWQtYmFsYW5jZXItYXJuJ10gfSxcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybicsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCcsICdzZy0yMzQ1J10sXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgY29uc3QgbGlzdGVuZXIgPSBhd2FpdCBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgIGxpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybicsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuJyk7XG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyUG9ydCkudG9FcXVhbCg5OTkpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5zZWN1cml0eUdyb3VwSWRzKS50b0VxdWFsKFsnc2ctMTIzNCcsICdzZy0yMzQ1J10pO1xuICB9KTtcblxuICB0ZXN0KCdsb29rcyB1cCBieSBhc3NvY2lhdGVkIGxvYWQgYmFsYW5jZXIgYXJuJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGRlc2NyaWJlTG9hZEJhbGFuY2Vyc0V4cGVjdGVkOiB7IExvYWRCYWxhbmNlckFybnM6IFsnYXJuOmxvYWQtYmFsYW5jZXItYXJuMSddIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIGRlc2NyaWJlTGlzdGVuZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScgfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gVGhpcyBvbmVcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4xJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgY29uc3QgbGlzdGVuZXIgPSBhd2FpdCBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgIGxvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lckFybikudG9FcXVhbCgnYXJuOmxpc3RlbmVyLWFybjEnKTtcbiAgICBleHBlY3QobGlzdGVuZXIubGlzdGVuZXJQb3J0KS50b0VxdWFsKDgwKTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTEyMzQnXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2xvb2tzIHVwIGJ5IGFzc29jaWF0ZWQgbG9hZCBiYWxhbmNlciB0YWdzJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGRlc2NyaWJlTG9hZEJhbGFuY2Vyc0V4cGVjdGVkOiB7IExvYWRCYWxhbmNlckFybnM6IHVuZGVmaW5lZCB9LFxuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gVGhpcyBvbmUgc2hvdWxkIGhhdmUgdGhlIHdyb25nIHRhZ3NcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0JywgJ3NnLTIzNDUnXSxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gRXhwZWN0aW5nIHRoaXMgb25lXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMzQ1NicsICdzZy00NTY3J10sXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIGRlc2NyaWJlVGFnc0V4cGVjdGVkOiB7IFJlc291cmNlQXJuczogWydhcm46bG9hZC1iYWxhbmNlci1hcm4xJywgJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInXSB9LFxuICAgICAgdGFnRGVzY3JpcHRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnLFxuICAgICAgICAgIFRhZ3M6IFtdLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gRXhwZWN0aW5nIHRoaXMgb25lXG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4yJyxcbiAgICAgICAgICBUYWdzOiBbXG4gICAgICAgICAgICB7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcblxuICAgICAgZGVzY3JpYmVMaXN0ZW5lcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4yJyB9LFxuICAgICAgbGlzdGVuZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBUaGlzIG9uZVxuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjEnLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFBvcnQ6IDgwLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMicsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgUG9ydDogOTk5LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBjb25zdCBsaXN0ZW5lciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyVGFnczogW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgIF0sXG4gICAgICBsaXN0ZW5lclBvcnQ6IDk5OSxcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QobGlzdGVuZXIubGlzdGVuZXJBcm4pLnRvRXF1YWwoJ2FybjpsaXN0ZW5lci1hcm4yJyk7XG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyUG9ydCkudG9FcXVhbCg5OTkpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5zZWN1cml0eUdyb3VwSWRzKS50b0VxdWFsKFsnc2ctMzQ1NicsICdzZy00NTY3J10pO1xuICB9KTtcblxuICB0ZXN0KCdsb29rcyB1cCBieSBsaXN0ZW5lciBwb3J0IGFuZCBwcm90bycsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlTG9hZEJhbGFuY2VycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzT3V0cHV0PikgPT4ge1xuICAgICAgZXhwZWN0KF9wYXJhbXMpLnRvRXF1YWwoe30pO1xuICAgICAgY2IobnVsbCwge1xuICAgICAgICBMb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gU2hvdWxkbid0IGhhdmUgYW55IG1hdGNoaW5nIGxpc3RlbmVyc1xuICAgICAgICAgICAgSXBBZGRyZXNzVHlwZTogJ2lwdjQnLFxuICAgICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICAgIEROU05hbWU6ICdkbnMxLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICAgIENhbm9uaWNhbEhvc3RlZFpvbmVJZDogJ1oxMjM0JyxcbiAgICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnXSxcbiAgICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFNob3VsZCBoYXZlIGEgbWF0Y2hpbmcgbGlzdGVuZXJcbiAgICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMicsXG4gICAgICAgICAgICBETlNOYW1lOiAnZG5zMi5leGFtcGxlLmNvbScsXG4gICAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0yMzQ1J10sXG4gICAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlVGFncycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVUYWdzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVUYWdzT3V0cHV0PikgPT4ge1xuICAgICAgY2IobnVsbCwge1xuICAgICAgICBUYWdEZXNjcmlwdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBBV1MubW9jaygnRUxCdjInLCAnZGVzY3JpYmVMaXN0ZW5lcnMnLCAocGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNJbnB1dCwgY2I6IEF3c0NhbGxiYWNrPGF3cy5FTEJ2Mi5EZXNjcmliZUxpc3RlbmVyc091dHB1dD4pID0+IHtcbiAgICAgIGlmIChwYXJhbXMuTG9hZEJhbGFuY2VyQXJuID09PSAnYXJuOmxvYWQtYmFsYW5jZXIxJykge1xuICAgICAgICBjYihudWxsLCB7XG4gICAgICAgICAgTGlzdGVuZXJzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBXcm9uZyBwb3J0LCB3cm9uZyBwcm90b2NvbCA9PiBubyBtYXRjaFxuICAgICAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4xJyxcbiAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICAgICAgUHJvdG9jb2w6ICdIVFRQJyxcbiAgICAgICAgICAgICAgUG9ydDogODAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgLy8gV3JvbmcgcHJvdG9jb2wsIHJpZ2h0IHBvcnQgPT4gbm8gbWF0Y2hcbiAgICAgICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMycsXG4gICAgICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgICAgIFByb3RvY29sOiAnSFRUUFMnLFxuICAgICAgICAgICAgICBQb3J0OiA0NDMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgLy8gV3JvbmcgcG9ydCwgcmlnaHQgcHJvdG9jb2wgPT4gbm8gbWF0Y2hcbiAgICAgICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuNCcsXG4gICAgICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgICAgIFByb3RvY29sOiAnVENQJyxcbiAgICAgICAgICAgICAgUG9ydDogOTk5LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAocGFyYW1zLkxvYWRCYWxhbmNlckFybiA9PT0gJ2Fybjpsb2FkLWJhbGFuY2VyMicpIHtcbiAgICAgICAgY2IobnVsbCwge1xuICAgICAgICAgIExpc3RlbmVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgLy8gV3JvbmcgcG9ydCwgd3JvbmcgcHJvdG9jb2wgPT4gbm8gbWF0Y2hcbiAgICAgICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuNScsXG4gICAgICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMicsXG4gICAgICAgICAgICAgIFByb3RvY29sOiAnSFRUUCcsXG4gICAgICAgICAgICAgIFBvcnQ6IDgwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFJpZ2h0IHBvcnQsIHJpZ2h0IHByb3RvY29sID0+IG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjYnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgICAgICBQb3J0OiA0NDMsXG4gICAgICAgICAgICAgIFByb3RvY29sOiAnVENQJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYihuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgcmVxdWVzdDogJHtKU09OLnN0cmluZ2lmeShwYXJhbXMpfSdgKSwge30pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxpc3RlbmVyID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgbGlzdGVuZXJQcm90b2NvbDogY3hzY2hlbWEuTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbC5UQ1AsXG4gICAgICBsaXN0ZW5lclBvcnQ6IDQ0MyxcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QobGlzdGVuZXIubGlzdGVuZXJBcm4pLnRvRXF1YWwoJ2FybjpsaXN0ZW5lci1hcm42Jyk7XG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyUG9ydCkudG9FcXVhbCg0NDMpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5zZWN1cml0eUdyb3VwSWRzKS50b0VxdWFsKFsnc2ctMjM0NSddKTtcbiAgfSk7XG5cbiAgdGVzdCgnZmlsdGVycyBieSBhc3NvY2lhdGVkIGxvYWQgYmFsYW5jZXIgdHlwZScsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiB1bmRlZmluZWQgfSxcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIC8vIFRoaXMgb25lIGhhcyB3cm9uZyB0eXBlID0+IG5vIG1hdGNoXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFtdLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBSaWdodCB0eXBlID0+IG1hdGNoXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFtdLFxuICAgICAgICAgIFR5cGU6ICduZXR3b3JrJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4yJyxcbiAgICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICB9LFxuICAgICAgXSxcblxuICAgICAgZGVzY3JpYmVMaXN0ZW5lcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4yJyB9LFxuICAgICAgbGlzdGVuZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4yJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4yJyxcbiAgICAgICAgICBQb3J0OiA0NDMsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxpc3RlbmVyID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuTkVUV09SSyxcbiAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFt7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfV0sXG4gICAgICBsaXN0ZW5lclBvcnQ6IDQ0MyxcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QobGlzdGVuZXIubGlzdGVuZXJBcm4pLnRvRXF1YWwoJ2FybjpsaXN0ZW5lci1hcm4yJyk7XG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyUG9ydCkudG9FcXVhbCg0NDMpO1xuICB9KTtcblxuICB0ZXN0KCdlcnJvcnMgd2hlbiBhc3NvY2lhdGVkIGxvYWQgYmFsYW5jZXIgaXMgd3JvbmcgdHlwZScsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkOiB7IExpc3RlbmVyQXJuczogWydhcm46bGlzdGVuZXItYXJuMSddIH0sXG4gICAgICBsaXN0ZW5lcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjEnLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnLFxuICAgICAgICAgIFBvcnQ6IDQ0MyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIGRlc2NyaWJlTG9hZEJhbGFuY2Vyc0V4cGVjdGVkOiB7IExvYWRCYWxhbmNlckFybnM6IFsnYXJuOmxvYWQtYmFsYW5jZXItYXJuMSddIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBUaGlzIG9uZSBoYXMgd3JvbmcgdHlwZSA9PiBubyBtYXRjaFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbXSxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5ORVRXT1JLLFxuICAgICAgICBsaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4xJyxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9ubyBhc3NvY2lhdGVkIGxvYWQgYmFsYW5jZXIgZm91bmQvaSk7XG4gIH0pO1xufSk7XG5cbmludGVyZmFjZSBBTEJMb29rdXBPcHRpb25zIHtcbiAgZGVzY3JpYmVMb2FkQmFsYW5jZXJzRXhwZWN0ZWQ/OiBhbnk7XG4gIGxvYWRCYWxhbmNlcnM/OiBhd3MuRUxCdjIuTG9hZEJhbGFuY2VycztcbiAgZGVzY3JpYmVUYWdzRXhwZWN0ZWQ/OiBhbnk7XG4gIHRhZ0Rlc2NyaXB0aW9ucz86IGF3cy5FTEJ2Mi5UYWdEZXNjcmlwdGlvbnM7XG4gIGRlc2NyaWJlTGlzdGVuZXJzRXhwZWN0ZWQ/OiBhbnk7XG4gIGxpc3RlbmVycz86IGF3cy5FTEJ2Mi5MaXN0ZW5lcnM7XG59XG5cbmZ1bmN0aW9uIG1vY2tBTEJMb29rdXAob3B0aW9uczogQUxCTG9va3VwT3B0aW9ucykge1xuICBBV1MubW9jaygnRUxCdjInLCAnZGVzY3JpYmVMb2FkQmFsYW5jZXJzJywgKF9wYXJhbXM6IGF3cy5FTEJ2Mi5EZXNjcmliZUxvYWRCYWxhbmNlcnNJbnB1dCwgY2I6IEF3c0NhbGxiYWNrPGF3cy5FTEJ2Mi5EZXNjcmliZUxvYWRCYWxhbmNlcnNPdXRwdXQ+KSA9PiB7XG4gICAgaWYgKG9wdGlvbnMuZGVzY3JpYmVMb2FkQmFsYW5jZXJzRXhwZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZXhwZWN0KF9wYXJhbXMpLnRvRXF1YWwob3B0aW9ucy5kZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZCk7XG4gICAgfVxuICAgIGNiKG51bGwsIHsgTG9hZEJhbGFuY2Vyczogb3B0aW9ucy5sb2FkQmFsYW5jZXJzIH0pO1xuICB9KTtcblxuICBBV1MubW9jaygnRUxCdjInLCAnZGVzY3JpYmVUYWdzJywgKF9wYXJhbXM6IGF3cy5FTEJ2Mi5EZXNjcmliZVRhZ3NJbnB1dCwgY2I6IEF3c0NhbGxiYWNrPGF3cy5FTEJ2Mi5EZXNjcmliZVRhZ3NPdXRwdXQ+KSA9PiB7XG4gICAgaWYgKG9wdGlvbnMuZGVzY3JpYmVUYWdzRXhwZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZXhwZWN0KF9wYXJhbXMpLnRvRXF1YWwob3B0aW9ucy5kZXNjcmliZVRhZ3NFeHBlY3RlZCk7XG4gICAgfVxuICAgIGNiKG51bGwsIHsgVGFnRGVzY3JpcHRpb25zOiBvcHRpb25zLnRhZ0Rlc2NyaXB0aW9ucyB9KTtcbiAgfSk7XG5cbiAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlTGlzdGVuZXJzJywgKF9wYXJhbXM6IGF3cy5FTEJ2Mi5EZXNjcmliZUxpc3RlbmVyc0lucHV0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVMQnYyLkRlc2NyaWJlTGlzdGVuZXJzT3V0cHV0PikgPT4ge1xuICAgIGlmIChvcHRpb25zLmRlc2NyaWJlTGlzdGVuZXJzRXhwZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZXhwZWN0KF9wYXJhbXMpLnRvRXF1YWwob3B0aW9ucy5kZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkKTtcbiAgICB9XG4gICAgY2IobnVsbCwgeyBMaXN0ZW5lcnM6IG9wdGlvbnMubGlzdGVuZXJzIH0pO1xuICB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const deploy_1 = require("../lib/deploy");
|
|
4
|
+
const sleep = async (duration) => new Promise((resolve) => setTimeout(() => resolve(), duration));
|
|
5
|
+
/**
|
|
6
|
+
* Repurposing unused stack attributes to create specific test scenarios
|
|
7
|
+
* - stack.name = deployment duration
|
|
8
|
+
* - stack.displayName = error message
|
|
9
|
+
*/
|
|
10
|
+
describe('DeployStacks', () => {
|
|
11
|
+
const deployedStacks = [];
|
|
12
|
+
const deployStack = async ({ id, displayName, name }) => {
|
|
13
|
+
const errorMessage = displayName;
|
|
14
|
+
const timeout = Number(name) || 0;
|
|
15
|
+
await sleep(timeout);
|
|
16
|
+
if (errorMessage) {
|
|
17
|
+
throw Error(errorMessage);
|
|
18
|
+
}
|
|
19
|
+
deployedStacks.push(id);
|
|
20
|
+
};
|
|
21
|
+
beforeEach(() => {
|
|
22
|
+
deployedStacks.splice(0);
|
|
23
|
+
});
|
|
24
|
+
// Success
|
|
25
|
+
test.each([
|
|
26
|
+
// Concurrency 1
|
|
27
|
+
{ scenario: 'No Stacks', concurrency: 1, toDeploy: [], expected: [] },
|
|
28
|
+
{ scenario: 'A', concurrency: 1, toDeploy: [{ id: 'A', dependencies: [] }], expected: ['A'] },
|
|
29
|
+
{ scenario: 'A, B', concurrency: 1, toDeploy: [{ id: 'A', dependencies: [] }, { id: 'B', dependencies: [] }], expected: ['A', 'B'] },
|
|
30
|
+
{ scenario: 'A -> B', concurrency: 1, toDeploy: [{ id: 'A', dependencies: [] }, { id: 'B', dependencies: [{ id: 'A' }] }], expected: ['A', 'B'] },
|
|
31
|
+
{ scenario: '[unsorted] A -> B', concurrency: 1, toDeploy: [{ id: 'B', dependencies: [{ id: 'A' }] }, { id: 'A', dependencies: [] }], expected: ['A', 'B'] },
|
|
32
|
+
{ scenario: 'A -> B -> C', concurrency: 1, toDeploy: [{ id: 'A', dependencies: [] }, { id: 'B', dependencies: [{ id: 'A' }] }, { id: 'C', dependencies: [{ id: 'B' }] }], expected: ['A', 'B', 'C'] },
|
|
33
|
+
{ scenario: 'A -> B, A -> C', concurrency: 1, toDeploy: [{ id: 'A', dependencies: [] }, { id: 'B', dependencies: [{ id: 'A' }] }, { id: 'C', dependencies: [{ id: 'A' }] }], expected: ['A', 'B', 'C'] },
|
|
34
|
+
{
|
|
35
|
+
scenario: 'A (slow), B',
|
|
36
|
+
concurrency: 1,
|
|
37
|
+
toDeploy: [
|
|
38
|
+
{ id: 'A', dependencies: [], name: 10 },
|
|
39
|
+
{ id: 'B', dependencies: [] },
|
|
40
|
+
],
|
|
41
|
+
expected: ['A', 'B'],
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
scenario: 'A -> B, C -> D',
|
|
45
|
+
concurrency: 1,
|
|
46
|
+
toDeploy: [
|
|
47
|
+
{ id: 'A', dependencies: [] },
|
|
48
|
+
{ id: 'B', dependencies: [{ id: 'A' }] },
|
|
49
|
+
{ id: 'C', dependencies: [] },
|
|
50
|
+
{ id: 'D', dependencies: [{ id: 'C' }] },
|
|
51
|
+
],
|
|
52
|
+
expected: ['A', 'C', 'B', 'D'],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
scenario: 'A (slow) -> B, C -> D',
|
|
56
|
+
concurrency: 1,
|
|
57
|
+
toDeploy: [
|
|
58
|
+
{ id: 'A', dependencies: [], name: 10 },
|
|
59
|
+
{ id: 'B', dependencies: [{ id: 'A' }] },
|
|
60
|
+
{ id: 'C', dependencies: [] },
|
|
61
|
+
{ id: 'D', dependencies: [{ id: 'C' }] },
|
|
62
|
+
],
|
|
63
|
+
expected: ['A', 'C', 'B', 'D'],
|
|
64
|
+
},
|
|
65
|
+
// Concurrency 2
|
|
66
|
+
{ scenario: 'No Stacks', concurrency: 2, toDeploy: [], expected: [] },
|
|
67
|
+
{ scenario: 'A', concurrency: 2, toDeploy: [{ id: 'A', dependencies: [] }], expected: ['A'] },
|
|
68
|
+
{ scenario: 'A, B', concurrency: 2, toDeploy: [{ id: 'A', dependencies: [] }, { id: 'B', dependencies: [] }], expected: ['A', 'B'] },
|
|
69
|
+
{ scenario: 'A -> B', concurrency: 2, toDeploy: [{ id: 'A', dependencies: [] }, { id: 'B', dependencies: [{ id: 'A' }] }], expected: ['A', 'B'] },
|
|
70
|
+
{ scenario: '[unsorted] A -> B', concurrency: 2, toDeploy: [{ id: 'B', dependencies: [{ id: 'A' }] }, { id: 'A', dependencies: [] }], expected: ['A', 'B'] },
|
|
71
|
+
{ scenario: 'A -> B -> C', concurrency: 2, toDeploy: [{ id: 'A', dependencies: [] }, { id: 'B', dependencies: [{ id: 'A' }] }, { id: 'C', dependencies: [{ id: 'B' }] }], expected: ['A', 'B', 'C'] },
|
|
72
|
+
{ scenario: 'A -> B, A -> C', concurrency: 2, toDeploy: [{ id: 'A', dependencies: [] }, { id: 'B', dependencies: [{ id: 'A' }] }, { id: 'C', dependencies: [{ id: 'A' }] }], expected: ['A', 'B', 'C'] },
|
|
73
|
+
{
|
|
74
|
+
scenario: 'A, B',
|
|
75
|
+
concurrency: 2,
|
|
76
|
+
toDeploy: [
|
|
77
|
+
{ id: 'A', dependencies: [], name: 10 },
|
|
78
|
+
{ id: 'B', dependencies: [] },
|
|
79
|
+
],
|
|
80
|
+
expected: ['B', 'A'],
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
scenario: 'A -> B, C -> D',
|
|
84
|
+
concurrency: 2,
|
|
85
|
+
toDeploy: [
|
|
86
|
+
{ id: 'A', dependencies: [] },
|
|
87
|
+
{ id: 'B', dependencies: [{ id: 'A' }] },
|
|
88
|
+
{ id: 'C', dependencies: [] },
|
|
89
|
+
{ id: 'D', dependencies: [{ id: 'C' }] },
|
|
90
|
+
],
|
|
91
|
+
expected: ['A', 'C', 'B', 'D'],
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
scenario: 'A (slow) -> B, C -> D',
|
|
95
|
+
concurrency: 2,
|
|
96
|
+
toDeploy: [
|
|
97
|
+
{ id: 'A', dependencies: [], name: 10 },
|
|
98
|
+
{ id: 'B', dependencies: [{ id: 'A' }] },
|
|
99
|
+
{ id: 'C', dependencies: [] },
|
|
100
|
+
{ id: 'D', dependencies: [{ id: 'C' }] },
|
|
101
|
+
],
|
|
102
|
+
expected: ['C', 'D', 'A', 'B'],
|
|
103
|
+
},
|
|
104
|
+
])('Success - Concurrency: $concurrency - $scenario', async ({ concurrency, expected, toDeploy }) => {
|
|
105
|
+
await expect(deploy_1.deployStacks(toDeploy, { concurrency, deployStack })).resolves.toBeUndefined();
|
|
106
|
+
expect(deployedStacks).toStrictEqual(expected);
|
|
107
|
+
});
|
|
108
|
+
// Failure
|
|
109
|
+
test.each([
|
|
110
|
+
// Concurrency 1
|
|
111
|
+
{ scenario: 'A (error)', concurrency: 1, toDeploy: [{ id: 'A', dependencies: [], displayName: 'A' }], expectedError: 'A', expectedStacks: [] },
|
|
112
|
+
{ scenario: 'A (error), B', concurrency: 1, toDeploy: [{ id: 'A', dependencies: [], displayName: 'A' }, { id: 'B', dependencies: [] }], expectedError: 'A', expectedStacks: [] },
|
|
113
|
+
{ scenario: 'A, B (error)', concurrency: 1, toDeploy: [{ id: 'A', dependencies: [] }, { id: 'B', dependencies: [], displayName: 'B' }], expectedError: 'B', expectedStacks: ['A'] },
|
|
114
|
+
{ scenario: 'A (error) -> B', concurrency: 1, toDeploy: [{ id: 'A', dependencies: [], displayName: 'A' }, { id: 'B', dependencies: [{ id: 'A' }] }], expectedError: 'A', expectedStacks: [] },
|
|
115
|
+
{ scenario: '[unsorted] A (error) -> B', concurrency: 1, toDeploy: [{ id: 'B', dependencies: [{ id: 'A' }] }, { id: 'A', dependencies: [], displayName: 'A' }], expectedError: 'A', expectedStacks: [] },
|
|
116
|
+
{
|
|
117
|
+
scenario: 'A (error) -> B, C -> D',
|
|
118
|
+
concurrency: 1,
|
|
119
|
+
toDeploy: [
|
|
120
|
+
{ id: 'A', dependencies: [], displayName: 'A' },
|
|
121
|
+
{ id: 'B', dependencies: [{ id: 'A' }] },
|
|
122
|
+
{ id: 'C', dependencies: [] },
|
|
123
|
+
{ id: 'D', dependencies: [{ id: 'C' }] },
|
|
124
|
+
],
|
|
125
|
+
expectedError: 'A',
|
|
126
|
+
expectedStacks: [],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
scenario: 'A -> B, C (error) -> D',
|
|
130
|
+
concurrency: 1,
|
|
131
|
+
toDeploy: [
|
|
132
|
+
{ id: 'A', dependencies: [] },
|
|
133
|
+
{ id: 'B', dependencies: [{ id: 'A' }] },
|
|
134
|
+
{ id: 'C', dependencies: [], displayName: 'C', name: 100 },
|
|
135
|
+
{ id: 'D', dependencies: [{ id: 'C' }] },
|
|
136
|
+
],
|
|
137
|
+
expectedError: 'C',
|
|
138
|
+
expectedStacks: ['A'],
|
|
139
|
+
},
|
|
140
|
+
// Concurrency 2
|
|
141
|
+
{ scenario: 'A (error)', concurrency: 2, toDeploy: [{ id: 'A', dependencies: [], displayName: 'A' }], expectedError: 'A', expectedStacks: [] },
|
|
142
|
+
{ scenario: 'A (error), B', concurrency: 2, toDeploy: [{ id: 'A', dependencies: [], displayName: 'A' }, { id: 'B', dependencies: [] }], expectedError: 'A', expectedStacks: ['B'] },
|
|
143
|
+
{ scenario: 'A, B (error)', concurrency: 2, toDeploy: [{ id: 'A', dependencies: [] }, { id: 'B', dependencies: [], displayName: 'B' }], expectedError: 'B', expectedStacks: ['A'] },
|
|
144
|
+
{ scenario: 'A (error) -> B', concurrency: 2, toDeploy: [{ id: 'A', dependencies: [], displayName: 'A' }, { id: 'B', dependencies: [{ id: 'A' }] }], expectedError: 'A', expectedStacks: [] },
|
|
145
|
+
{ scenario: '[unsorted] A (error) -> B', concurrency: 2, toDeploy: [{ id: 'B', dependencies: [{ id: 'A' }] }, { id: 'A', dependencies: [], displayName: 'A' }], expectedError: 'A', expectedStacks: [] },
|
|
146
|
+
{
|
|
147
|
+
scenario: 'A (error) -> B, C -> D',
|
|
148
|
+
concurrency: 2,
|
|
149
|
+
toDeploy: [
|
|
150
|
+
{ id: 'A', dependencies: [], displayName: 'A' },
|
|
151
|
+
{ id: 'B', dependencies: [{ id: 'A' }] },
|
|
152
|
+
{ id: 'C', dependencies: [] },
|
|
153
|
+
{ id: 'D', dependencies: [{ id: 'C' }] },
|
|
154
|
+
],
|
|
155
|
+
expectedError: 'A',
|
|
156
|
+
expectedStacks: ['C'],
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
scenario: 'A -> B, C (error) -> D',
|
|
160
|
+
concurrency: 2,
|
|
161
|
+
toDeploy: [
|
|
162
|
+
{ id: 'A', dependencies: [] },
|
|
163
|
+
{ id: 'B', dependencies: [{ id: 'A' }] },
|
|
164
|
+
{ id: 'C', dependencies: [], displayName: 'C', name: 100 },
|
|
165
|
+
{ id: 'D', dependencies: [{ id: 'C' }] },
|
|
166
|
+
],
|
|
167
|
+
expectedError: 'C',
|
|
168
|
+
expectedStacks: ['A', 'B'],
|
|
169
|
+
},
|
|
170
|
+
])('Failure - Concurrency: $concurrency - $scenario', async ({ concurrency, expectedError, toDeploy, expectedStacks }) => {
|
|
171
|
+
await expect(deploy_1.deployStacks(toDeploy, { concurrency, deployStack })).rejects.toThrowError(expectedError);
|
|
172
|
+
expect(deployedStacks).toStrictEqual(expectedStacks);
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkZXBsb3kudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDBDQUE2QztBQUk3QyxNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsUUFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBRWhIOzs7O0dBSUc7QUFDSCxRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtJQUM1QixNQUFNLGNBQWMsR0FBYSxFQUFFLENBQUM7SUFDcEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQVMsRUFBRSxFQUFFO1FBQzdELE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxDLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXJCLElBQUksWUFBWSxFQUFFO1lBQ2hCLE1BQU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzNCO1FBRUQsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUM7SUFFRixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDLENBQUMsQ0FBQztJQUVILFVBQVU7SUFDVixJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ1IsZ0JBQWdCO1FBQ2hCLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtRQUNyRSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDN0YsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1FBQ3BJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNqSixFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUM1SixFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUs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QVcsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzdGLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNwSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDakosRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDNUosRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1FBQ3JNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1FBQ3hNO1lBQ0UsUUFBUSxFQUFFLE1BQU07WUFDaEIsV0FBVyxFQUFFLENBQUM7WUFDZCxRQUFRLEVBQUU7Z0JBQ1IsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDdkMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7YUFDOUI7WUFDRCxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1NBQ3JCO1FBQ0Q7WUFDRSxRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFdBQVcsRUFBRSxDQUFDO1lBQ2QsUUFBUSxFQUFFO2dCQUNSLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFO2dCQUM3QixFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDeEMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7Z0JBQzdCLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3pDO1lBQ0QsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO1NBQy9CO1FBQ0Q7WUFDRSxRQUFRLEVBQUUsdUJBQXVCO1lBQ2pDLFdBQVcsRUFBRSxDQUFDO1lBQ2QsUUFBUSxFQUFFO2dCQUNSLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ3ZDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN4QyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtnQkFDN0IsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDekM7WUFDRCxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7U0FDL0I7S0FDRixDQUFDLENBQUMsaURBQWlELEVBQUUsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO1FBQ2xHLE1BQU0sTUFBTSxDQUFDLHFCQUFZLENBQUMsUUFBOEIsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRWxILE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUFDLENBQUM7SUFFSCxVQUFVO0lBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNSLGdCQUFnQjtRQUNoQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUU7UUFDOUksRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUU7UUFDaEwsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ25MLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUU7UUFDN0wsRUFBRSxRQUFRLEVBQUUsMkJBQTJCLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRTtRQUN4TTtZQUNFLFFBQVEsRUFBRSx3QkFBd0I7WUFDbEMsV0FBVyxFQUFFLENBQUM7WUFDZCxRQUFRLEVBQUU7Z0JBQ1IsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRTtnQkFDL0MsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3hDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFO2dCQUM3QixFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUN6QztZQUNELGFBQWEsRUFBRSxHQUFHO1lBQ2xCLGNBQWMsRUFBRSxFQUFFO1NBQ25CO1FBQ0Q7WUFDRSxRQUFRLEVBQUUsd0JBQXdCO1lBQ2xDLFdBQVcsRUFBRSxDQUFDO1lBQ2QsUUFBUSxFQUFFO2dCQUNSLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFO2dCQUM3QixFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDeEMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUMxRCxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUN6QztZQUNELGFBQWEsRUFBRSxHQUFHO1lBQ2xCLGNBQWMsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUN0QjtRQUVELGdCQUFnQjtRQUNoQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUU7UUFDOUksRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ25MLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNuTCxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFO1FBQzdMLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUU7UUFDeE07WUFDRSxRQUFRLEVBQUUsd0JBQXdCO1lBQ2xDLFdBQVcsRUFBRSxDQUFDO1lBQ2QsUUFBUSxFQUFFO2dCQUNSLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUU7Z0JBQy9DLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN4QyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtnQkFDN0IsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDekM7WUFDRCxhQUFhLEVBQUUsR0FBRztZQUNsQixjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUM7U0FDdEI7UUFDRDtZQUNFLFFBQVEsRUFBRSx3QkFBd0I7WUFDbEMsV0FBVyxFQUFFLENBQUM7WUFDZCxRQUFRLEVBQUU7Z0JBQ1IsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7Z0JBQzdCLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN4QyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQzFELEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3pDO1lBQ0QsYUFBYSxFQUFFLEdBQUc7WUFDbEIsY0FBYyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztTQUMzQjtLQUNGLENBQUMsQ0FBQyxpREFBaUQsRUFBRSxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFO1FBQ3ZILE1BQU0sTUFBTSxDQUFDLHFCQUFZLENBQUMsUUFBOEIsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU3SCxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0IHsgZGVwbG95U3RhY2tzIH0gZnJvbSAnLi4vbGliL2RlcGxveSc7XG5cbnR5cGUgU3RhY2sgPSBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Q7XG5cbmNvbnN0IHNsZWVwID0gYXN5bmMgKGR1cmF0aW9uOiBudW1iZXIpID0+IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUoKSwgZHVyYXRpb24pKTtcblxuLyoqXG4gKiBSZXB1cnBvc2luZyB1bnVzZWQgc3RhY2sgYXR0cmlidXRlcyB0byBjcmVhdGUgc3BlY2lmaWMgdGVzdCBzY2VuYXJpb3NcbiAqIC0gc3RhY2submFtZSAgICAgICAgICA9IGRlcGxveW1lbnQgZHVyYXRpb25cbiAqIC0gc3RhY2suZGlzcGxheU5hbWUgICA9IGVycm9yIG1lc3NhZ2VcbiAqL1xuZGVzY3JpYmUoJ0RlcGxveVN0YWNrcycsICgpID0+IHtcbiAgY29uc3QgZGVwbG95ZWRTdGFja3M6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGRlcGxveVN0YWNrID0gYXN5bmMgKHsgaWQsIGRpc3BsYXlOYW1lLCBuYW1lIH06IFN0YWNrKSA9PiB7XG4gICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZGlzcGxheU5hbWU7XG4gICAgY29uc3QgdGltZW91dCA9IE51bWJlcihuYW1lKSB8fCAwO1xuXG4gICAgYXdhaXQgc2xlZXAodGltZW91dCk7XG5cbiAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICB0aHJvdyBFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGRlcGxveWVkU3RhY2tzLnB1c2goaWQpO1xuICB9O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGRlcGxveWVkU3RhY2tzLnNwbGljZSgwKTtcbiAgfSk7XG5cbiAgLy8gU3VjY2Vzc1xuICB0ZXN0LmVhY2goW1xuICAgIC8vIENvbmN1cnJlbmN5IDFcbiAgICB7IHNjZW5hcmlvOiAnTm8gU3RhY2tzJywgY29uY3VycmVuY3k6IDEsIHRvRGVwbG95OiBbXSwgZXhwZWN0ZWQ6IFtdIH0sXG4gICAgeyBzY2VuYXJpbzogJ0EnLCBjb25jdXJyZW5jeTogMSwgdG9EZXBsb3k6IFt7IGlkOiAnQScsIGRlcGVuZGVuY2llczogW10gfV0sIGV4cGVjdGVkOiBbJ0EnXSB9LFxuICAgIHsgc2NlbmFyaW86ICdBLCBCJywgY29uY3VycmVuY3k6IDEsIHRvRGVwbG95OiBbeyBpZDogJ0EnLCBkZXBlbmRlbmNpZXM6IFtdIH0sIHsgaWQ6ICdCJywgZGVwZW5kZW5jaWVzOiBbXSB9XSwgZXhwZWN0ZWQ6IFsnQScsICdCJ10gfSxcbiAgICB7IHNjZW5hcmlvOiAnQSAtPiBCJywgY29uY3VycmVuY3k6IDEsIHRvRGVwbG95OiBbeyBpZDogJ0EnLCBkZXBlbmRlbmNpZXM6IFtdIH0sIHsgaWQ6ICdCJywgZGVwZW5kZW5jaWVzOiBbeyBpZDogJ0EnIH1dIH1dLCBleHBlY3RlZDogWydBJywgJ0InXSB9LFxuICAgIHsgc2NlbmFyaW86ICdbdW5zb3J0ZWRdIEEgLT4gQicsIGNvbmN1cnJlbmN5OiAxLCB0b0RlcGxveTogW3sgaWQ6ICdCJywgZGVwZW5kZW5jaWVzOiBbeyBpZDogJ0EnIH1dIH0sIHsgaWQ6ICdBJywgZGVwZW5kZW5jaWVzOiBbXSB9XSwgZXhwZWN0ZWQ6IFsnQScsICdCJ10gfSxcbiAgICB7IHNjZW5hcmlvOiAnQSAtPiBCIC0+IEMnLCBjb25jdXJyZW5jeTogMSwgdG9EZXBsb3k6IFt7IGlkOiAnQScsIGRlcGVuZGVuY2llczogW10gfSwgeyBpZDogJ0InLCBkZXBlbmRlbmNpZXM6IFt7IGlkOiAnQScgfV0gfSwgeyBpZDogJ0MnLCBkZXBlbmRlbmNpZXM6IFt7IGlkOiAnQicgfV0gfV0sIGV4cGVjdGVkOiBbJ0EnLCAnQicsICdDJ10gfSxcbiAgICB7IHNjZW5hcmlvOiAnQSAtPiBCLCBBIC0+IEMnLCBjb25jdXJyZW5jeTogMSwgdG9EZXBsb3k6IFt7IGlkOiAnQScsIGRlcGVuZGVuY2llczogW10gfSwgeyBpZDogJ0InLCBkZXBlbmRlbmNpZXM6IFt7IGlkOiAnQScgfV0gfSwgeyBpZDogJ0MnLCBkZXBlbmRlbmNpZXM6IFt7IGlkOiAnQScgfV0gfV0sIGV4cGVjdGVkOiBbJ0EnLCAnQicsICdDJ10gfSxcbiAgICB7XG4gICAgICBzY2VuYXJpbzogJ0EgKHNsb3cpLCBCJyxcbiAgICAgIGNvbmN1cnJlbmN5OiAxLFxuICAgICAgdG9EZXBsb3k6IFtcbiAgICAgICAgeyBpZDogJ0EnLCBkZXBlbmRlbmNpZXM6IFtdLCBuYW1lOiAxMCB9LFxuICAgICAgICB7IGlkOiAnQicsIGRlcGVuZGVuY2llczogW10gfSxcbiAgICAgIF0sXG4gICAgICBleHBlY3RlZDogWydBJywgJ0InXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHNjZW5hcmlvOiAnQSAtPiBCLCBDIC0+IEQnLFxuICAgICAgY29uY3VycmVuY3k6IDEsXG4gICAgICB0b0RlcGxveTogW1xuICAgICAgICB7IGlkOiAnQScsIGRlcGVuZGVuY2llczogW10gfSxcbiAgICAgICAgeyBpZDogJ0InLCBkZXBlbmRlbmNpZXM6IFt7IGlkOiAnQScgfV0gfSxcbiAgICAgICAgeyBpZDogJ0MnLCBkZXBlbmRlbmNpZXM6IFtdIH0sXG4gICAgICAgIHsgaWQ6ICdEJywgZGVwZW5kZW5jaWVzOiBbeyBpZDogJ0MnIH1dIH0sXG4gICAgICBdLFxuICAgICAgZXhwZWN0ZWQ6IFsnQScsICdDJywgJ0InLCAnRCddLFxuICAgIH0sXG4gICAge1xuICAgICAgc2NlbmFyaW86ICdBIChzbG93KSAtPiBCLCBDIC0+IEQnLFxuICAgICAgY29uY3VycmVuY3k6IDEsXG4gICAgICB0b0RlcGxveTogW1xuICAgICAgICB7IGlkOiAnQScsIGRlcGVuZGVuY2llczogW10sIG5hbWU6IDEwIH0sXG4gICAgICAgIHsgaWQ6ICdCJywgZGVwZW5kZW5jaWVzOiBbeyBpZDogJ0EnIH1dIH0sXG4gICAgICAgIHsgaWQ6ICdDJywgZGVwZW5kZW5jaWVzOiBbXSB9LFxuICAgICAgICB7IGlkOiAnRCcsIGRlcGVuZGVuY2llczogW3sgaWQ6ICdDJyB9XSB9LFxuICAgICAgXSxcbiAgICAgIGV4cGVjdGVkOiBbJ0EnLCAnQycsICdCJywgJ0QnXSxcbiAgICB9LFxuXG4gICAgLy8gQ29uY3VycmVuY3kgMlxuICAgIHsgc2NlbmFyaW86ICdObyBTdGFja3MnLCBjb25jdXJyZW5jeTogMiwgdG9EZXBsb3k6IFtdLCBleHBlY3RlZDogW10gfSxcbiAgICB7IHNjZW5hcmlvOiAnQScsIGNvbmN1cnJlbmN5OiAyLCB0b0RlcGxveTogW3sgaWQ6ICdBJywgZGVwZW5kZW5jaWVzOiBbXSB9XSwgZXhwZWN0ZWQ6IFsnQSddIH0sXG4gICAgeyBzY2VuYXJpbzogJ0EsIEInLCBjb25jdXJyZW5jeTogMiwgdG9EZXBsb3k6IFt7IGlkOiAnQScsIGRlcGVuZGVuY2llczogW10gfSwgeyBpZDogJ0InLCBkZXBlbmRlbmNpZXM6IFtdIH1dLCBleHBlY3RlZDogWydBJywgJ0InXSB9LFxuICAgIHsgc2NlbmFyaW86ICdBIC0+IEInLCBjb25jdXJyZW5jeTogMiwgdG9EZXBsb3k6IFt7IGlkOiAnQScsIGRlcGVuZGVuY2llczogW10gfSwgeyBpZDogJ0InLCBkZXBlbmRlbmNpZXM6IFt7IGlkOiAnQScgfV0gfV0sIGV4cGVjdGVkOiBbJ0EnLCAnQiddIH0sXG4gICAgeyBzY2VuYXJpbzogJ1t1bnNvcnRlZF0gQSAtPiBCJywgY29uY3VycmVuY3k6IDIsIHRvRGVwbG95OiBbeyBpZDogJ0InLCBkZXBlbmRlbmNpZXM6IFt7IGlkOiAnQScgfV0gfSwgeyBpZDogJ0EnLCBkZXBlbmRlbmNpZXM6IFtdIH1dLCBleHBlY3RlZDogWydBJywgJ0InXSB9LFxuICAgIHsgc2NlbmFyaW86ICdBIC0+IEIgLT4gQycsIGNvbmN1cnJlbmN5OiAyLCB0b0RlcGxveTogW3sgaWQ6ICdBJywgZGVwZW5kZW5jaWVzOiBbXSB9LCB7IGlkOiAnQicsIGRlcGVuZGVuY2llczogW3sgaWQ6ICdBJyB9XSB9LCB7IGlkOiAnQycsIGRlcGVuZGVuY2llczogW3sgaWQ6ICdCJyB9XSB9XSwgZXhwZWN0ZWQ6IFsnQScsICdCJywgJ0MnXSB9LFxuICAgIHsgc2NlbmFyaW86ICdBIC0+IEIsIEEgLT4gQycsIGNvbmN1cnJlbmN5OiAyLCB0b0RlcGxveTogW3sgaWQ6ICdBJywgZGVwZW5kZW5jaWVzOiBbXSB9LCB7IGlkOiAnQicsIGRlcGVuZGVuY2llczogW3sgaWQ6ICdBJyB9XSB9LCB7IGlkOiAnQycsIGRlcGVuZGVuY2llczogW3sgaWQ6ICdBJyB9XSB9XSwgZXhwZWN0ZWQ6IFsnQScsICdCJywgJ0MnXSB9LFxuICAgIHtcbiAgICAgIHNjZW5hcmlvOiAnQSwgQicsXG4gICAgICBjb25jdXJyZW5jeTogMixcbiAgICAgIHRvRGVwbG95OiBbXG4gICAgICAgIHsgaWQ6ICdBJywgZGVwZW5kZW5jaWVzOiBbXSwgbmFtZTogMTAgfSxcbiAgICAgICAgeyBpZDogJ0InLCBkZXBlbmRlbmNpZXM6IFtdIH0sXG4gICAgICBdLFxuICAgICAgZXhwZWN0ZWQ6IFsnQicsICdBJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBzY2VuYXJpbzogJ0EgLT4gQiwgQyAtPiBEJyxcbiAgICAgIGNvbmN1cnJlbmN5OiAyLFxuICAgICAgdG9EZXBsb3k6IFtcbiAgICAgICAgeyBpZDogJ0EnLCBkZXBlbmRlbmNpZXM6IFtdIH0sXG4gICAgICAgIHsgaWQ6ICdCJywgZGVwZW5kZW5jaWVzOiBbeyBpZDogJ0EnIH1dIH0sXG4gICAgICAgIHsgaWQ6ICdDJywgZGVwZW5kZW5jaWVzOiBbXSB9LFxuICAgICAgICB7IGlkOiAnRCcsIGRlcGVuZGVuY2llczogW3sgaWQ6ICdDJyB9XSB9LFxuICAgICAgXSxcbiAgICAgIGV4cGVjdGVkOiBbJ0EnLCAnQycsICdCJywgJ0QnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHNjZW5hcmlvOiAnQSAoc2xvdykgLT4gQiwgQyAtPiBEJyxcbiAgICAgIGNvbmN1cnJlbmN5OiAyLFxuICAgICAgdG9EZXBsb3k6IFtcbiAgICAgICAgeyBpZDogJ0EnLCBkZXBlbmRlbmNpZXM6IFtdLCBuYW1lOiAxMCB9LFxuICAgICAgICB7IGlkOiAnQicsIGRlcGVuZGVuY2llczogW3sgaWQ6ICdBJyB9XSB9LFxuICAgICAgICB7IGlkOiAnQycsIGRlcGVuZGVuY2llczogW10gfSxcbiAgICAgICAgeyBpZDogJ0QnLCBkZXBlbmRlbmNpZXM6IFt7IGlkOiAnQycgfV0gfSxcbiAgICAgIF0sXG4gICAgICBleHBlY3RlZDogWydDJywgJ0QnLCAnQScsICdCJ10sXG4gICAgfSxcbiAgXSkoJ1N1Y2Nlc3MgLSBDb25jdXJyZW5jeTogJGNvbmN1cnJlbmN5IC0gJHNjZW5hcmlvJywgYXN5bmMgKHsgY29uY3VycmVuY3ksIGV4cGVjdGVkLCB0b0RlcGxveSB9KSA9PiB7XG4gICAgYXdhaXQgZXhwZWN0KGRlcGxveVN0YWNrcyh0b0RlcGxveSBhcyB1bmtub3duIGFzIFN0YWNrW10sIHsgY29uY3VycmVuY3ksIGRlcGxveVN0YWNrIH0pKS5yZXNvbHZlcy50b0JlVW5kZWZpbmVkKCk7XG5cbiAgICBleHBlY3QoZGVwbG95ZWRTdGFja3MpLnRvU3RyaWN0RXF1YWwoZXhwZWN0ZWQpO1xuICB9KTtcblxuICAvLyBGYWlsdXJlXG4gIHRlc3QuZWFjaChbXG4gICAgLy8gQ29uY3VycmVuY3kgMVxuICAgIHsgc2NlbmFyaW86ICdBIChlcnJvciknLCBjb25jdXJyZW5jeTogMSwgdG9EZXBsb3k6IFt7IGlkOiAnQScsIGRlcGVuZGVuY2llczogW10sIGRpc3BsYXlOYW1lOiAnQScgfV0sIGV4cGVjdGVkRXJyb3I6ICdBJywgZXhwZWN0ZWRTdGFja3M6IFtdIH0sXG4gICAgeyBzY2VuYXJpbzogJ0EgKGVycm9yKSwgQicsIGNvbmN1cnJlbmN5OiAxLCB0b0RlcGxveTogW3sgaWQ6ICdBJywgZGVwZW5kZW5jaWVzOiBbXSwgZGlzcGxheU5hbWU6ICdBJyB9LCB7IGlkOiAnQicsIGRlcGVuZGVuY2llczogW10gfV0sIGV4cGVjdGVkRXJyb3I6ICdBJywgZXhwZWN0ZWRTdGFja3M6IFtdIH0sXG4gICAgeyBzY2VuYXJpbzogJ0EsIEIgKGVycm9yKScsIGNvbmN1cnJlbmN5OiAxLCB0b0RlcGxveTogW3sgaWQ6ICdBJywgZGVwZW5kZW5jaWVzOiBbXSB9LCB7IGlkOiAnQicsIGRlcGVuZGVuY2llczogW10sIGRpc3BsYXlOYW1lOiAnQicgfV0sIGV4cGVjdGVkRXJyb3I6ICdCJywgZXhwZWN0ZWRTdGFja3M6IFsnQSddIH0sXG4gICAgeyBzY2VuYXJpbzogJ0EgKGVycm9yKSAtPiBCJywgY29uY3VycmVuY3k6IDEsIHRvRGVwbG95OiBbeyBpZDogJ0EnLCBkZXBlbmRlbmNpZXM6IFtdLCBkaXNwbGF5TmFtZTogJ0EnIH0sIHsgaWQ6ICdCJywgZGVwZW5kZW5jaWVzOiBbeyBpZDogJ0EnIH1dIH1dLCBleHBlY3RlZEVycm9yOiAnQScsIGV4cGVjdGVkU3RhY2tzOiBbXSB9LFxuICAgIHsgc2NlbmFyaW86ICdbdW5zb3J0ZWRdIEEgKGVycm9yKSAtPiBCJywgY29uY3VycmVuY3k6IDEsIHRvRGVwbG95OiBbeyBpZDogJ0InLCBkZXBlbmRlbmNpZXM6IFt7IGlkOiAnQScgfV0gfSwgeyBpZDogJ0EnLCBkZXBlbmRlbmNpZXM6IFtdLCBkaXNwbGF5TmFtZTogJ0EnIH1dLCBleHBlY3RlZEVycm9yOiAnQScsIGV4cGVjdGVkU3RhY2tzOiBbXSB9LFxuICAgIHtcbiAgICAgIHNjZW5hcmlvOiAnQSAoZXJyb3IpIC0+IEIsIEMgLT4gRCcsXG4gICAgICBjb25jdXJyZW5jeTogMSxcbiAgICAgIHRvRGVwbG95OiBbXG4gICAgICAgIHsgaWQ6ICdBJywgZGVwZW5kZW5jaWVzOiBbXSwgZGlzcGxheU5hbWU6ICdBJyB9LFxuICAgICAgICB7IGlkOiAnQicsIGRlcGVuZGVuY2llczogW3sgaWQ6ICdBJyB9XSB9LFxuICAgICAgICB7IGlkOiAnQycsIGRlcGVuZGVuY2llczogW10gfSxcbiAgICAgICAgeyBpZDogJ0QnLCBkZXBlbmRlbmNpZXM6IFt7IGlkOiAnQycgfV0gfSxcbiAgICAgIF0sXG4gICAgICBleHBlY3RlZEVycm9yOiAnQScsXG4gICAgICBleHBlY3RlZFN0YWNrczogW10sXG4gICAgfSxcbiAgICB7XG4gICAgICBzY2VuYXJpbzogJ0EgLT4gQiwgQyAoZXJyb3IpIC0+IEQnLFxuICAgICAgY29uY3VycmVuY3k6IDEsXG4gICAgICB0b0RlcGxveTogW1xuICAgICAgICB7IGlkOiAnQScsIGRlcGVuZGVuY2llczogW10gfSxcbiAgICAgICAgeyBpZDogJ0InLCBkZXBlbmRlbmNpZXM6IFt7IGlkOiAnQScgfV0gfSxcbiAgICAgICAgeyBpZDogJ0MnLCBkZXBlbmRlbmNpZXM6IFtdLCBkaXNwbGF5TmFtZTogJ0MnLCBuYW1lOiAxMDAgfSxcbiAgICAgICAgeyBpZDogJ0QnLCBkZXBlbmRlbmNpZXM6IFt7IGlkOiAnQycgfV0gfSxcbiAgICAgIF0sXG4gICAgICBleHBlY3RlZEVycm9yOiAnQycsXG4gICAgICBleHBlY3RlZFN0YWNrczogWydBJ10sXG4gICAgfSxcblxuICAgIC8vIENvbmN1cnJlbmN5IDJcbiAgICB7IHNjZW5hcmlvOiAnQSAoZXJyb3IpJywgY29uY3VycmVuY3k6IDIsIHRvRGVwbG95OiBbeyBpZDogJ0EnLCBkZXBlbmRlbmNpZXM6IFtdLCBkaXNwbGF5TmFtZTogJ0EnIH1dLCBleHBlY3RlZEVycm9yOiAnQScsIGV4cGVjdGVkU3RhY2tzOiBbXSB9LFxuICAgIHsgc2NlbmFyaW86ICdBIChlcnJvciksIEInLCBjb25jdXJyZW5jeTogMiwgdG9EZXBsb3k6IFt7IGlkOiAnQScsIGRlcGVuZGVuY2llczogW10sIGRpc3BsYXlOYW1lOiAnQScgfSwgeyBpZDogJ0InLCBkZXBlbmRlbmNpZXM6IFtdIH1dLCBleHBlY3RlZEVycm9yOiAnQScsIGV4cGVjdGVkU3RhY2tzOiBbJ0InXSB9LFxuICAgIHsgc2NlbmFyaW86ICdBLCBCIChlcnJvciknLCBjb25jdXJyZW5jeTogMiwgdG9EZXBsb3k6IFt7IGlkOiAnQScsIGRlcGVuZGVuY2llczogW10gfSwgeyBpZDogJ0InLCBkZXBlbmRlbmNpZXM6IFtdLCBkaXNwbGF5TmFtZTogJ0InIH1dLCBleHBlY3RlZEVycm9yOiAnQicsIGV4cGVjdGVkU3RhY2tzOiBbJ0EnXSB9LFxuICAgIHsgc2NlbmFyaW86ICdBIChlcnJvcikgLT4gQicsIGNvbmN1cnJlbmN5OiAyLCB0b0RlcGxveTogW3sgaWQ6ICdBJywgZGVwZW5kZW5jaWVzOiBbXSwgZGlzcGxheU5hbWU6ICdBJyB9LCB7IGlkOiAnQicsIGRlcGVuZGVuY2llczogW3sgaWQ6ICdBJyB9XSB9XSwgZXhwZWN0ZWRFcnJvcjogJ0EnLCBleHBlY3RlZFN0YWNrczogW10gfSxcbiAgICB7IHNjZW5hcmlvOiAnW3Vuc29ydGVkXSBBIChlcnJvcikgLT4gQicsIGNvbmN1cnJlbmN5OiAyLCB0b0RlcGxveTogW3sgaWQ6ICdCJywgZGVwZW5kZW5jaWVzOiBbeyBpZDogJ0EnIH1dIH0sIHsgaWQ6ICdBJywgZGVwZW5kZW5jaWVzOiBbXSwgZGlzcGxheU5hbWU6ICdBJyB9XSwgZXhwZWN0ZWRFcnJvcjogJ0EnLCBleHBlY3RlZFN0YWNrczogW10gfSxcbiAgICB7XG4gICAgICBzY2VuYXJpbzogJ0EgKGVycm9yKSAtPiBCLCBDIC0+IEQnLFxuICAgICAgY29uY3VycmVuY3k6IDIsXG4gICAgICB0b0RlcGxveTogW1xuICAgICAgICB7IGlkOiAnQScsIGRlcGVuZGVuY2llczogW10sIGRpc3BsYXlOYW1lOiAnQScgfSxcbiAgICAgICAgeyBpZDogJ0InLCBkZXBlbmRlbmNpZXM6IFt7IGlkOiAnQScgfV0gfSxcbiAgICAgICAgeyBpZDogJ0MnLCBkZXBlbmRlbmNpZXM6IFtdIH0sXG4gICAgICAgIHsgaWQ6ICdEJywgZGVwZW5kZW5jaWVzOiBbeyBpZDogJ0MnIH1dIH0sXG4gICAgICBdLFxuICAgICAgZXhwZWN0ZWRFcnJvcjogJ0EnLFxuICAgICAgZXhwZWN0ZWRTdGFja3M6IFsnQyddLFxuICAgIH0sXG4gICAge1xuICAgICAgc2NlbmFyaW86ICdBIC0+IEIsIEMgKGVycm9yKSAtPiBEJyxcbiAgICAgIGNvbmN1cnJlbmN5OiAyLFxuICAgICAgdG9EZXBsb3k6IFtcbiAgICAgICAgeyBpZDogJ0EnLCBkZXBlbmRlbmNpZXM6IFtdIH0sXG4gICAgICAgIHsgaWQ6ICdCJywgZGVwZW5kZW5jaWVzOiBbeyBpZDogJ0EnIH1dIH0sXG4gICAgICAgIHsgaWQ6ICdDJywgZGVwZW5kZW5jaWVzOiBbXSwgZGlzcGxheU5hbWU6ICdDJywgbmFtZTogMTAwIH0sXG4gICAgICAgIHsgaWQ6ICdEJywgZGVwZW5kZW5jaWVzOiBbeyBpZDogJ0MnIH1dIH0sXG4gICAgICBdLFxuICAgICAgZXhwZWN0ZWRFcnJvcjogJ0MnLFxuICAgICAgZXhwZWN0ZWRTdGFja3M6IFsnQScsICdCJ10sXG4gICAgfSxcbiAgXSkoJ0ZhaWx1cmUgLSBDb25jdXJyZW5jeTogJGNvbmN1cnJlbmN5IC0gJHNjZW5hcmlvJywgYXN5bmMgKHsgY29uY3VycmVuY3ksIGV4cGVjdGVkRXJyb3IsIHRvRGVwbG95LCBleHBlY3RlZFN0YWNrcyB9KSA9PiB7XG4gICAgYXdhaXQgZXhwZWN0KGRlcGxveVN0YWNrcyh0b0RlcGxveSBhcyB1bmtub3duIGFzIFN0YWNrW10sIHsgY29uY3VycmVuY3ksIGRlcGxveVN0YWNrIH0pKS5yZWplY3RzLnRvVGhyb3dFcnJvcihleHBlY3RlZEVycm9yKTtcblxuICAgIGV4cGVjdChkZXBsb3llZFN0YWNrcykudG9TdHJpY3RFcXVhbChleHBlY3RlZFN0YWNrcyk7XG4gIH0pO1xufSk7Il19
|