terraform-cdk-serverless-github-actions-runner-controller 0.0.7 → 0.0.8

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/lib/lib/azure.js CHANGED
@@ -24,166 +24,166 @@ const variables_1 = require("./variables");
24
24
  class Azure extends constructs_1.Construct {
25
25
  constructor(scope, id) {
26
26
  super(scope, id);
27
- new provider_1.AzurermProvider(this, 'azurerm', {
27
+ new provider_1.AzurermProvider(this, "azurerm", {
28
28
  features: [{}],
29
29
  });
30
- new provider_3.AzapiProvider(this, 'azapi', {});
31
- new provider_2.RandomProvider(this, 'random');
32
- const sub = new data_azurerm_subscription_1.DataAzurermSubscription(this, 'sub', {});
30
+ new provider_3.AzapiProvider(this, "azapi", {});
31
+ new provider_2.RandomProvider(this, "random");
32
+ const sub = new data_azurerm_subscription_1.DataAzurermSubscription(this, "sub", {});
33
33
  const { pat, githubConfigUrl } = (0, variables_1.commonVariables)(this);
34
- const location = new cdktf_1.TerraformVariable(this, 'location', {
35
- default: 'westeurope',
36
- description: 'Location where to provision resources to',
37
- type: 'string',
34
+ const location = new cdktf_1.TerraformVariable(this, "location", {
35
+ default: "westeurope",
36
+ description: "Location where to provision resources to",
37
+ type: "string",
38
38
  sensitive: false,
39
39
  nullable: false,
40
40
  }).value;
41
- const rg = new resource_group_1.ResourceGroup(this, 'rg', {
41
+ const rg = new resource_group_1.ResourceGroup(this, "rg", {
42
42
  location,
43
- name: 'gha-runner-rg',
43
+ name: "gha-runner-rg",
44
44
  lifecycle: {
45
- ignoreChanges: ['tags'],
45
+ ignoreChanges: ["tags"],
46
46
  },
47
47
  });
48
- const random = new string_resource_1.StringResource(this, 'randomSuffix', {
48
+ const random = new string_resource_1.StringResource(this, "randomSuffix", {
49
49
  length: 6,
50
50
  special: false,
51
51
  upper: false,
52
52
  });
53
- const acr = new container_registry_1.ContainerRegistry(this, 'acr', {
53
+ const acr = new container_registry_1.ContainerRegistry(this, "acr", {
54
54
  location,
55
55
  name: `runneracr${random.result}`,
56
56
  resourceGroupName: rg.name,
57
- sku: 'Basic',
57
+ sku: "Basic",
58
58
  lifecycle: {
59
- ignoreChanges: ['tags'],
59
+ ignoreChanges: ["tags"],
60
60
  },
61
61
  });
62
62
  // use caching for images
63
- const runnerCache = new resource_1.Resource(this, 'runnerCache', {
64
- type: 'Microsoft.ContainerRegistry/registries/cacheRules@2023-01-01-preview',
63
+ const runnerCache = new resource_1.Resource(this, "runnerCache", {
64
+ type: "Microsoft.ContainerRegistry/registries/cacheRules@2023-01-01-preview",
65
65
  parentId: acr.id,
66
- name: 'root-runner-cache',
66
+ name: "root-runner-cache",
67
67
  body: {
68
68
  properties: {
69
- sourceRepository: 'ghcr.io/hi-fi/root-actions-runner',
70
- targetRepository: 'root-actions-runner',
69
+ sourceRepository: "ghcr.io/hi-fi/root-actions-runner",
70
+ targetRepository: "root-actions-runner",
71
71
  },
72
72
  },
73
73
  });
74
- const autoscalerCache = new resource_1.Resource(this, 'autoscalerCache', {
75
- type: 'Microsoft.ContainerRegistry/registries/cacheRules@2023-01-01-preview',
74
+ const autoscalerCache = new resource_1.Resource(this, "autoscalerCache", {
75
+ type: "Microsoft.ContainerRegistry/registries/cacheRules@2023-01-01-preview",
76
76
  parentId: acr.id,
77
- name: 'autoscaler-cache',
77
+ name: "autoscaler-cache",
78
78
  body: {
79
79
  properties: {
80
- sourceRepository: 'ghcr.io/hi-fi/gha-runners-on-managed-env',
81
- targetRepository: 'autoscaler',
80
+ sourceRepository: "ghcr.io/hi-fi/gha-runners-on-managed-env",
81
+ targetRepository: "autoscaler",
82
82
  },
83
83
  },
84
84
  });
85
- const identity = new user_assigned_identity_1.UserAssignedIdentity(this, 'identity', {
85
+ const identity = new user_assigned_identity_1.UserAssignedIdentity(this, "identity", {
86
86
  location,
87
- name: 'aca-acr-access',
87
+ name: "aca-acr-access",
88
88
  resourceGroupName: rg.name,
89
89
  lifecycle: {
90
- ignoreChanges: ['tags'],
90
+ ignoreChanges: ["tags"],
91
91
  },
92
92
  });
93
- new role_assignment_1.RoleAssignment(this, 'roleAssignment', {
93
+ new role_assignment_1.RoleAssignment(this, "roleAssignment", {
94
94
  principalId: identity.principalId,
95
95
  scope: acr.id,
96
- roleDefinitionName: 'AcrPull',
96
+ roleDefinitionName: "AcrPull",
97
97
  });
98
- const log = new log_analytics_workspace_1.LogAnalyticsWorkspace(this, 'log', {
98
+ const log = new log_analytics_workspace_1.LogAnalyticsWorkspace(this, "log", {
99
99
  location,
100
- name: 'gha-example-logs',
100
+ name: "gha-example-logs",
101
101
  resourceGroupName: rg.name,
102
102
  lifecycle: {
103
- ignoreChanges: ['tags'],
103
+ ignoreChanges: ["tags"],
104
104
  },
105
105
  });
106
- const storageAccount = new resource_1.Resource(this, 'storageAccount', {
107
- type: 'Microsoft.Storage/storageAccounts@2023-01-01',
106
+ const storageAccount = new resource_1.Resource(this, "storageAccount", {
107
+ type: "Microsoft.Storage/storageAccounts@2023-01-01",
108
108
  parentId: rg.id,
109
109
  location,
110
110
  name: `ghastorageaccount${random.result}`,
111
111
  body: {
112
112
  properties: {
113
- largeFileSharesState: 'Enabled',
113
+ largeFileSharesState: "Enabled",
114
114
  },
115
115
  sku: {
116
- name: 'Standard_LRS',
116
+ name: "Standard_LRS",
117
117
  },
118
- kind: 'StorageV2',
118
+ kind: "StorageV2",
119
119
  },
120
120
  lifecycle: {
121
- ignoreChanges: ['tags'],
121
+ ignoreChanges: ["tags"],
122
122
  },
123
123
  responseExportValues: [],
124
124
  });
125
- const storageShare = new resource_1.Resource(this, 'storageShare', {
126
- type: 'Microsoft.Storage/storageAccounts/fileServices/shares@2023-01-01',
127
- name: 'ghaexampleshare',
125
+ const storageShare = new resource_1.Resource(this, "storageShare", {
126
+ type: "Microsoft.Storage/storageAccounts/fileServices/shares@2023-01-01",
127
+ name: "ghaexampleshare",
128
128
  parentId: `${storageAccount.id}/fileServices/default`,
129
129
  body: {
130
130
  properties: {
131
- enabledProtocols: 'SMB',
131
+ enabledProtocols: "SMB",
132
132
  },
133
133
  },
134
134
  });
135
- const externalsShare = new resource_1.Resource(this, 'externalsShare', {
136
- type: 'Microsoft.Storage/storageAccounts/fileServices/shares@2023-01-01',
137
- name: 'ghaexternalsshare',
135
+ const externalsShare = new resource_1.Resource(this, "externalsShare", {
136
+ type: "Microsoft.Storage/storageAccounts/fileServices/shares@2023-01-01",
137
+ name: "ghaexternalsshare",
138
138
  parentId: `${storageAccount.id}/fileServices/default`,
139
139
  body: {
140
140
  properties: {
141
- enabledProtocols: 'SMB',
141
+ enabledProtocols: "SMB",
142
142
  },
143
143
  },
144
144
  });
145
- const environment = new resource_1.Resource(this, 'acaenv', {
146
- type: 'Microsoft.App/managedEnvironments@2024-03-01',
145
+ const environment = new resource_1.Resource(this, "acaenv", {
146
+ type: "Microsoft.App/managedEnvironments@2024-03-01",
147
147
  parentId: rg.id,
148
148
  location,
149
- name: 'gha-runner-environment',
149
+ name: "gha-runner-environment",
150
150
  body: {
151
151
  properties: {
152
152
  appLogsConfiguration: {
153
- destination: 'log-analytics',
153
+ destination: "log-analytics",
154
154
  logAnalyticsConfiguration: {
155
155
  customerId: log.workspaceId,
156
156
  sharedKey: log.primarySharedKey,
157
157
  },
158
158
  },
159
- infrastructureResourceGroup: 'managed-aca-rg',
159
+ infrastructureResourceGroup: "managed-aca-rg",
160
160
  workloadProfiles: [
161
161
  {
162
- name: 'Consumption',
163
- workloadProfileType: 'Consumption',
162
+ name: "Consumption",
163
+ workloadProfileType: "Consumption",
164
164
  },
165
165
  ],
166
166
  },
167
167
  },
168
168
  lifecycle: {
169
- ignoreChanges: ['tags'],
169
+ ignoreChanges: ["tags"],
170
170
  },
171
171
  });
172
- const storageAccessKey = new data_azapi_resource_action_1.DataAzapiResourceAction(this, 'storageAccessKeys', {
173
- type: 'Microsoft.Storage/storageAccounts@2023-01-01',
174
- action: 'listKeys',
172
+ const storageAccessKey = new data_azapi_resource_action_1.DataAzapiResourceAction(this, "storageAccessKeys", {
173
+ type: "Microsoft.Storage/storageAccounts@2023-01-01",
174
+ action: "listKeys",
175
175
  resourceId: storageAccount.id,
176
- responseExportValues: ['*'],
176
+ responseExportValues: ["*"],
177
177
  dependsOn: [storageAccount],
178
178
  });
179
179
  // see https://github.com/hashicorp/terraform-cdk/issues/1641
180
180
  // For older Azapi way to get key would be this when (default) data output was json. Witn 2.0.0-beta default was changed to HCL
181
181
  // const accessKey = Fn.lookup(Fn.element(Fn.lookup(Fn.jsondecode(storageAccessKey.output as any), 'keys'), 0), 'value')
182
- const accessKey = cdktf_1.Fn.lookup(cdktf_1.Fn.element(cdktf_1.Fn.element(storageAccessKey.output.lookup('0'), 0), 0), 'value');
183
- const acaEnvStorage = new container_app_environment_storage_1.ContainerAppEnvironmentStorage(this, 'acaenvstorage', {
184
- name: 'gharunnerjobstorage',
182
+ const accessKey = cdktf_1.Fn.lookup(cdktf_1.Fn.element(cdktf_1.Fn.element(storageAccessKey.output.lookup("0"), 0), 0), "value");
183
+ const acaEnvStorage = new container_app_environment_storage_1.ContainerAppEnvironmentStorage(this, "acaenvstorage", {
184
+ name: "gharunnerjobstorage",
185
185
  accessKey,
186
- accessMode: 'ReadWrite',
186
+ accessMode: "ReadWrite",
187
187
  accountName: storageAccount.name,
188
188
  containerAppEnvironmentId: environment.id,
189
189
  shareName: storageShare.name,
@@ -192,10 +192,10 @@ class Azure extends constructs_1.Construct {
192
192
  storageShare,
193
193
  ],
194
194
  });
195
- const acaExternalStorage = new container_app_environment_storage_1.ContainerAppEnvironmentStorage(this, 'acaexternalstorage', {
196
- name: 'gharunnerexternalstorage',
195
+ const acaExternalStorage = new container_app_environment_storage_1.ContainerAppEnvironmentStorage(this, "acaexternalstorage", {
196
+ name: "gharunnerexternalstorage",
197
197
  accessKey,
198
- accessMode: 'ReadWrite',
198
+ accessMode: "ReadWrite",
199
199
  accountName: storageAccount.name,
200
200
  containerAppEnvironmentId: environment.id,
201
201
  shareName: externalsShare.name,
@@ -204,20 +204,20 @@ class Azure extends constructs_1.Construct {
204
204
  externalsShare,
205
205
  ],
206
206
  });
207
- const runnerVolumeName = 'work';
208
- const externalVolumeName = 'externals';
207
+ const runnerVolumeName = "work";
208
+ const externalVolumeName = "externals";
209
209
  /**
210
210
  * @see https://learn.microsoft.com/en-us/azure/templates/microsoft.app/jobs?pivots=deployment-language-terraform
211
211
  */
212
- const ghaRunnerJob = new resource_1.Resource(this, 'ghaRunnerJob', {
213
- type: 'Microsoft.App/jobs@2024-02-02-preview',
212
+ const ghaRunnerJob = new resource_1.Resource(this, "ghaRunnerJob", {
213
+ type: "Microsoft.App/jobs@2024-02-02-preview",
214
214
  identity: [
215
215
  {
216
- type: 'UserAssigned',
216
+ type: "UserAssigned",
217
217
  identityIds: [identity.id],
218
218
  },
219
219
  ],
220
- name: 'gha-runner-job-01',
220
+ name: "gha-runner-job-01",
221
221
  parentId: rg.id,
222
222
  location,
223
223
  body: {
@@ -227,7 +227,7 @@ class Azure extends constructs_1.Construct {
227
227
  parallelism: 1,
228
228
  replicaCompletionCount: 1,
229
229
  },
230
- triggerType: 'Manual',
230
+ triggerType: "Manual",
231
231
  replicaTimeout: 1200,
232
232
  registries: [
233
233
  {
@@ -242,59 +242,59 @@ class Azure extends constructs_1.Construct {
242
242
  {
243
243
  resources: {
244
244
  cpu: 1,
245
- memory: '2Gi',
245
+ memory: "2Gi",
246
246
  },
247
247
  // Have to use custom image as we want to run service as root to be able to install packages
248
248
  image: `${acr.loginServer}/root-actions-runner:latest`,
249
- name: 'main',
249
+ name: "main",
250
250
  command: [
251
- '/bin/sh',
252
- '-c',
253
- 'export EXECID=$(cat /proc/sys/kernel/random/uuid) && mkdir -p /tmp/_work/$EXECID && ln -s /tmp/_work/$EXECID _work && /home/runner/run.sh ; rm -r /tmp/_work/$EXECID',
251
+ "/bin/sh",
252
+ "-c",
253
+ "export EXECID=$(cat /proc/sys/kernel/random/uuid) && mkdir -p /tmp/_work/$EXECID && ln -s /tmp/_work/$EXECID _work && /home/runner/run.sh ; rm -r /tmp/_work/$EXECID",
254
254
  ],
255
255
  volumeMounts: [
256
256
  {
257
- mountPath: '/tmp/_work',
257
+ mountPath: "/tmp/_work",
258
258
  volumeName: runnerVolumeName,
259
259
  },
260
260
  {
261
- mountPath: '/tmp/externals',
261
+ mountPath: "/tmp/externals",
262
262
  volumeName: externalVolumeName,
263
263
  },
264
264
  ],
265
265
  env: [
266
266
  // https://github.com/microsoft/azure-container-apps/issues/502#issuecomment-1340225438
267
267
  {
268
- name: 'APPSETTING_WEBSITE_SITE_NAME',
269
- value: 'identity-workaround',
268
+ name: "APPSETTING_WEBSITE_SITE_NAME",
269
+ value: "identity-workaround",
270
270
  },
271
271
  // https://github.com/microsoft/azure-container-apps/issues/442#issuecomment-1665621031
272
272
  {
273
- name: 'AZURE_CLIENT_ID',
273
+ name: "AZURE_CLIENT_ID",
274
274
  value: identity.clientId,
275
275
  },
276
276
  {
277
- name: 'RG_NAME',
277
+ name: "RG_NAME",
278
278
  value: rg.name,
279
279
  },
280
280
  {
281
- name: 'LOG_ID',
281
+ name: "LOG_ID",
282
282
  value: log.workspaceId,
283
283
  },
284
284
  {
285
- name: 'STORAGE_NAME',
285
+ name: "STORAGE_NAME",
286
286
  value: acaEnvStorage.name,
287
287
  },
288
288
  {
289
- name: 'EXTERNAL_STORAGE_NAME',
289
+ name: "EXTERNAL_STORAGE_NAME",
290
290
  value: acaExternalStorage.name,
291
291
  },
292
292
  {
293
- name: 'SUBSCRIPTION_ID',
293
+ name: "SUBSCRIPTION_ID",
294
294
  value: sub.subscriptionId,
295
295
  },
296
296
  {
297
- name: 'ACA_ENVIRONMENT_ID',
297
+ name: "ACA_ENVIRONMENT_ID",
298
298
  value: environment.id,
299
299
  },
300
300
  ],
@@ -304,14 +304,14 @@ class Azure extends constructs_1.Construct {
304
304
  {
305
305
  name: runnerVolumeName,
306
306
  storageName: acaEnvStorage.name,
307
- storageType: 'AzureFile',
308
- mountOptions: 'mfsymlinks',
307
+ storageType: "AzureFile",
308
+ mountOptions: "mfsymlinks",
309
309
  },
310
310
  {
311
311
  name: externalVolumeName,
312
312
  storageName: acaExternalStorage.name,
313
- storageType: 'AzureFile',
314
- mountOptions: 'mfsymlinks',
313
+ storageType: "AzureFile",
314
+ mountOptions: "mfsymlinks",
315
315
  },
316
316
  ],
317
317
  },
@@ -319,21 +319,21 @@ class Azure extends constructs_1.Construct {
319
319
  },
320
320
  dependsOn: [runnerCache],
321
321
  lifecycle: {
322
- ignoreChanges: ['tags'],
322
+ ignoreChanges: ["tags"],
323
323
  },
324
324
  });
325
- const autoscalerApp = new container_app_1.ContainerApp(this, 'autoscalerApp', {
325
+ const autoscalerApp = new container_app_1.ContainerApp(this, "autoscalerApp", {
326
326
  containerAppEnvironmentId: environment.id,
327
- name: 'autoscaler-app-01',
327
+ name: "autoscaler-app-01",
328
328
  resourceGroupName: rg.name,
329
- revisionMode: 'Single',
329
+ revisionMode: "Single",
330
330
  identity: {
331
- type: 'SystemAssigned, UserAssigned',
331
+ type: "SystemAssigned, UserAssigned",
332
332
  identityIds: [identity.id],
333
333
  },
334
334
  secret: [
335
335
  {
336
- name: 'pat',
336
+ name: "pat",
337
337
  value: pat.value,
338
338
  },
339
339
  ],
@@ -348,37 +348,37 @@ class Azure extends constructs_1.Construct {
348
348
  {
349
349
  // CPU and Memory can be lower with workload profile
350
350
  cpu: 0.25,
351
- memory: '0.5Gi',
351
+ memory: "0.5Gi",
352
352
  image: `${acr.loginServer}/autoscaler:test`,
353
- name: 'autoscaler',
353
+ name: "autoscaler",
354
354
  env: [
355
355
  {
356
- name: 'PAT',
357
- secretName: 'pat',
356
+ name: "PAT",
357
+ secretName: "pat",
358
358
  },
359
359
  {
360
- name: 'GITHUB_CONFIG_URL',
360
+ name: "GITHUB_CONFIG_URL",
361
361
  value: githubConfigUrl.value,
362
362
  },
363
363
  {
364
- name: 'AZURE_TENANT_ID',
364
+ name: "AZURE_TENANT_ID",
365
365
  value: sub.tenantId,
366
366
  },
367
367
  {
368
- name: 'SUBSCRIPTION_ID',
368
+ name: "SUBSCRIPTION_ID",
369
369
  value: sub.subscriptionId,
370
370
  },
371
371
  {
372
- name: 'RESOURCE_GROUP_NAME',
372
+ name: "RESOURCE_GROUP_NAME",
373
373
  value: rg.name,
374
374
  },
375
375
  {
376
- name: 'JOB_NAME',
376
+ name: "JOB_NAME",
377
377
  value: ghaRunnerJob.name,
378
378
  },
379
379
  {
380
- name: 'SCALE_SET_NAME',
381
- value: 'aca-runner-set',
380
+ name: "SCALE_SET_NAME",
381
+ value: "aca-runner-set",
382
382
  },
383
383
  ],
384
384
  },
@@ -386,68 +386,68 @@ class Azure extends constructs_1.Construct {
386
386
  },
387
387
  dependsOn: [autoscalerCache],
388
388
  lifecycle: {
389
- ignoreChanges: ['tags', 'workload_profile_name'],
389
+ ignoreChanges: ["tags", "workload_profile_name"],
390
390
  },
391
391
  });
392
392
  /**
393
393
  * @see https://github.com/microsoft/azure-container-apps/issues/1024
394
394
  */
395
- const role = new role_definition_1.RoleDefinition(this, 'jobRole', {
395
+ const role = new role_definition_1.RoleDefinition(this, "jobRole", {
396
396
  name: `gha-example-revision-start-role-${random.result}`,
397
397
  scope: sub.id,
398
398
  permissions: [
399
399
  {
400
400
  actions: [
401
- 'microsoft.app/jobs/start/action',
402
- 'microsoft.app/jobs/stop/action',
403
- 'microsoft.app/jobs/read',
404
- 'microsoft.app/jobs/executions/read',
401
+ "microsoft.app/jobs/start/action",
402
+ "microsoft.app/jobs/stop/action",
403
+ "microsoft.app/jobs/read",
404
+ "microsoft.app/jobs/executions/read",
405
405
  ],
406
406
  },
407
407
  ],
408
408
  });
409
- const jobCreationRole = new role_definition_1.RoleDefinition(this, 'jobCreationRole', {
409
+ const jobCreationRole = new role_definition_1.RoleDefinition(this, "jobCreationRole", {
410
410
  name: `gha-example-revision-create-role-${random.result}`,
411
411
  scope: sub.id,
412
412
  permissions: [
413
413
  {
414
414
  actions: [
415
- 'microsoft.app/jobs/start/action',
416
- 'microsoft.app/jobs/stop/action',
417
- 'microsoft.app/jobs/read',
418
- 'microsoft.app/jobs/write',
419
- 'microsoft.app/jobs/executions/read',
420
- 'microsoft.app/managedEnvironments/join/action',
421
- 'microsoft.app/jobs/delete', // cleanup for jobs
415
+ "microsoft.app/jobs/start/action",
416
+ "microsoft.app/jobs/stop/action",
417
+ "microsoft.app/jobs/read",
418
+ "microsoft.app/jobs/write",
419
+ "microsoft.app/jobs/executions/read",
420
+ "microsoft.app/managedEnvironments/join/action",
421
+ "microsoft.app/jobs/delete", // cleanup for jobs
422
422
  ],
423
423
  },
424
424
  ],
425
425
  });
426
426
  // Allow autoscaler to create new revision of app
427
- new role_assignment_1.RoleAssignment(this, 'scaleJobRoleAssignment', {
427
+ new role_assignment_1.RoleAssignment(this, "scaleJobRoleAssignment", {
428
428
  principalId: autoscalerApp.identity.principalId,
429
429
  scope: ghaRunnerJob.id,
430
430
  roleDefinitionId: role.roleDefinitionResourceId,
431
431
  });
432
432
  // Allow runner to start the job. As each one created new job, have to give to RG level.
433
- new role_assignment_1.RoleAssignment(this, 'actionContainerStartRoleAssignment', {
433
+ new role_assignment_1.RoleAssignment(this, "actionContainerStartRoleAssignment", {
434
434
  principalId: identity.principalId,
435
435
  scope: rg.id,
436
436
  roleDefinitionId: jobCreationRole.roleDefinitionResourceId,
437
437
  });
438
- new role_assignment_1.RoleAssignment(this, 'imagePushRoleAssignment', {
438
+ new role_assignment_1.RoleAssignment(this, "imagePushRoleAssignment", {
439
439
  principalId: identity.principalId,
440
440
  scope: acr.id,
441
- roleDefinitionName: 'AcrPush',
441
+ roleDefinitionName: "AcrPush",
442
442
  });
443
- new role_assignment_1.RoleAssignment(this, 'jobLogReadAssignment', {
443
+ new role_assignment_1.RoleAssignment(this, "jobLogReadAssignment", {
444
444
  principalId: identity.principalId,
445
445
  scope: log.id,
446
- roleDefinitionName: 'Log Analytics Reader',
446
+ roleDefinitionName: "Log Analytics Reader",
447
447
  });
448
448
  }
449
449
  }
450
450
  exports.Azure = Azure;
451
451
  _a = JSII_RTTI_SYMBOL_1;
452
- Azure[_a] = { fqn: "terraform-cdk-serverless-github-actions-runner-controller.Azure", version: "0.0.7" };
453
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2F6dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkVBQXdFO0FBQ3hFLHFIQUE4RztBQUM5Ryx1RkFBa0Y7QUFDbEYscUdBQStGO0FBQy9GLGlHQUEyRjtBQUMzRixtRUFBc0U7QUFDdEUsK0VBQTBFO0FBQzFFLGlGQUE0RTtBQUM1RSxpRkFBNEU7QUFDNUUsK0ZBQXlGO0FBQ3pGLGtFQUFvRTtBQUNwRSxnRkFBMkU7QUFDM0UsaUNBQTZDO0FBQzdDLDJDQUFzQztBQUN0QyxtR0FBNEY7QUFDNUYsK0RBQWdFO0FBQ2hFLCtEQUEyRDtBQUMzRCwyQ0FBNkM7QUFFN0MsTUFBYSxLQUFNLFNBQVEsc0JBQVM7SUFDbEMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixJQUFJLDBCQUFlLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUNuQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDZixDQUFDLENBQUE7UUFFRixJQUFJLHdCQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVwQyxJQUFJLHlCQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRWxDLE1BQU0sR0FBRyxHQUFHLElBQUksbURBQXVCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUV4RCxNQUFNLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUEsMkJBQWUsRUFBQyxJQUFJLENBQUMsQ0FBQTtRQUV0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLHlCQUFpQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDdkQsT0FBTyxFQUFFLFlBQVk7WUFDckIsV0FBVyxFQUFFLDBDQUEwQztZQUN2RCxJQUFJLEVBQUUsUUFBUTtZ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QUUsU0FBUztTQUM5QixDQUFDLENBQUE7UUFFRixJQUFJLGdDQUFjLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQy9DLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztZQUNqQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDYixrQkFBa0IsRUFBRSxzQkFBc0I7U0FDM0MsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7QUF2ZEgsc0JBd2RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGFpbmVyQXBwIH0gZnJvbSAnQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2NvbnRhaW5lci1hcHAnXG5pbXBvcnQgeyBDb250YWluZXJBcHBFbnZpcm9ubWVudFN0b3JhZ2UgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvY29udGFpbmVyLWFwcC1lbnZpcm9ubWVudC1zdG9yYWdlJ1xuaW1wb3J0IHsgQ29udGFpbmVyUmVnaXN0cnkgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvY29udGFpbmVyLXJlZ2lzdHJ5J1xuaW1wb3J0IHsgRGF0YUF6dXJlcm1TdWJzY3JpcHRpb24gfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvZGF0YS1henVyZXJtLXN1YnNjcmlwdGlvbidcbmltcG9ydCB7IExvZ0FuYWx5dGljc1dvcmtzcGFjZSB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9sb2ctYW5hbHl0aWNzLXdvcmtzcGFjZSdcbmltcG9ydCB7IEF6dXJlcm1Qcm92aWRlciB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9wcm92aWRlcidcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvcmVzb3VyY2UtZ3JvdXAnXG5pbXBvcnQgeyBSb2xlQXNzaWdubWVudCB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9yb2xlLWFzc2lnbm1lbnQnXG5pbXBvcnQgeyBSb2xlRGVmaW5pdGlvbiB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9yb2xlLWRlZmluaXRpb24nXG5pbXBvcnQgeyBVc2VyQXNzaWduZWRJZGVudGl0eSB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi91c2VyLWFzc2lnbmVkLWlkZW50aXR5J1xuaW1wb3J0IHsgUmFuZG9tUHJvdmlkZXIgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItcmFuZG9tL2xpYi9wcm92aWRlcidcbmltcG9ydCB7IFN0cmluZ1Jlc291cmNlIH0gZnJvbSAnQGNka3RmL3Byb3ZpZGVyLXJhbmRvbS9saWIvc3RyaW5nLXJlc291cmNlJ1xuaW1wb3J0IHsgRm4sIFRlcnJhZm9ybVZhcmlhYmxlIH0gZnJvbSAnY2RrdGYnXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJ1xuaW1wb3J0IHsgRGF0YUF6YXBpUmVzb3VyY2VBY3Rpb24gfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9hemFwaS9kYXRhLWF6YXBpLXJlc291cmNlLWFjdGlvbidcbmltcG9ydCB7IEF6YXBpUHJvdmlkZXIgfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9hemFwaS9wcm92aWRlcidcbmltcG9ydCB7IFJlc291cmNlIH0gZnJvbSAnLi4vLmdlbi9wcm92aWRlcnMvYXphcGkvcmVzb3VyY2UnXG5pbXBvcnQgeyBjb21tb25WYXJpYWJsZXMgfSBmcm9tICcuL3ZhcmlhYmxlcydcblxuZXhwb3J0IGNsYXNzIEF6dXJlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIG5ldyBBenVyZXJtUHJvdmlkZXIodGhpcywgJ2F6dXJlcm0nLCB7XG4gICAgICBmZWF0dXJlczogW3t9XSxcbiAgICB9KVxuXG4gICAgbmV3IEF6YXBpUHJvdmlkZXIodGhpcywgJ2F6YXBpJywge30pXG5cbiAgICBuZXcgUmFuZG9tUHJvdmlkZXIodGhpcywgJ3JhbmRvbScpXG5cbiAgICBjb25zdCBzdWIgPSBuZXcgRGF0YUF6dXJlcm1TdWJzY3JpcHRpb24odGhpcywgJ3N1YicsIHt9KVxuXG4gICAgY29uc3QgeyBwYXQsIGdpdGh1YkNvbmZpZ1VybCB9ID0gY29tbW9uVmFyaWFibGVzKHRoaXMpXG5cbiAgICBjb25zdCBsb2NhdGlvbiA9IG5ldyBUZXJyYWZvcm1WYXJpYWJsZSh0aGlzLCAnbG9jYXRpb24nLCB7XG4gICAgICBkZWZhdWx0OiAnd2VzdGV1cm9wZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIHdoZXJlIHRvIHByb3Zpc2lvbiByZXNvdXJjZXMgdG8nLFxuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICBzZW5zaXRpdmU6IGZhbHNlLFxuICAgICAgbnVsbGFibGU6IGZhbHNlLFxuICAgIH0pLnZhbHVlXG5cbiAgICBjb25zdCByZyA9IG5ldyBSZXNvdXJjZUdyb3VwKHRoaXMsICdyZycsIHtcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgbmFtZTogJ2doYS1ydW5uZXItcmcnLFxuICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFsndGFncyddLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgY29uc3QgcmFuZG9tID0gbmV3IFN0cmluZ1Jlc291cmNlKHRoaXMsICdyYW5kb21TdWZmaXgnLCB7XG4gICAgICBsZW5ndGg6IDYsXG4gICAgICBzcGVjaWFsOiBmYWxzZSxcbiAgICAgIHVwcGVyOiBmYWxzZSxcbiAgICB9KVxuXG4gICAgY29uc3QgYWNyID0gbmV3IENvbnRhaW5lclJlZ2lzdHJ5KHRoaXMsICdhY3InLCB7XG4gICAgICBsb2NhdGlvbixcbiAgICAgIG5hbWU6IGBydW5uZXJhY3Ike3JhbmRvbS5yZXN1bHR9YCxcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiByZy5uYW1lLFxuICAgICAgc2t1OiAnQmFzaWMnLFxuICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFsndGFncyddLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgLy8gdXNlIGNhY2hpbmcgZm9yIGltYWdlc1xuICAgIGNvbnN0IHJ1bm5lckNhY2hlID0gbmV3IFJlc291cmNlKHRoaXMsICdydW5uZXJDYWNoZScsIHtcbiAgICAgIHR5cGU6ICdNaWNyb3NvZnQuQ29udGFpbmVyUmVnaXN0cnkvcmVnaXN0cmllcy9jYWNoZVJ1bGVzQDIwMjMtMDEtMDEtcHJldmlldycsXG4gICAgICBwYXJlbnRJZDogYWNyLmlkLFxuICAgICAgbmFtZTogJ3Jvb3QtcnVubmVyLWNhY2hlJyxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIHNvdXJjZVJlcG9zaXRvcnk6ICdnaGNyLmlvL2hpLWZpL3Jvb3QtYWN0aW9ucy1ydW5uZXInLFxuICAgICAgICAgIHRhcmdldFJlcG9zaXRvcnk6ICdyb290LWFjdGlvbnMtcnVubmVyJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIGNvbnN0IGF1dG9zY2FsZXJDYWNoZSA9IG5ldyBSZXNvdXJjZSh0aGlzLCAnYXV0b3NjYWxlckNhY2hlJywge1xuICAgICAgdHlwZTogJ01pY3Jvc29mdC5Db250YWluZXJSZWdpc3RyeS9yZWdpc3RyaWVzL2NhY2hlUnVsZXNAMjAyMy0wMS0wMS1wcmV2aWV3JyxcbiAgICAgIHBhcmVudElkOiBhY3IuaWQsXG4gICAgICBuYW1lOiAnYXV0b3NjYWxlci1jYWNoZScsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBzb3VyY2VSZXBvc2l0b3J5OiAnZ2hjci5pby9oaS1maS9naGEtcnVubmVycy1vbi1tYW5hZ2VkLWVudicsXG4gICAgICAgICAgdGFyZ2V0UmVwb3NpdG9yeTogJ2F1dG9zY2FsZXInLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgY29uc3QgaWRlbnRpdHkgPSBuZXcgVXNlckFzc2lnbmVkSWRlbnRpdHkodGhpcywgJ2lkZW50aXR5Jywge1xuICAgICAgbG9jYXRpb24sXG4gICAgICBuYW1lOiAnYWNhLWFjci1hY2Nlc3MnLFxuICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHJnLm5hbWUsXG4gICAgICBsaWZlY3ljbGU6IHtcbiAgICAgICAgaWdub3JlQ2hhbmdlczogWyd0YWdzJ10sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBuZXcgUm9sZUFzc2lnbm1lbnQodGhpcywgJ3JvbGVBc3NpZ25tZW50Jywge1xuICAgICAgcHJpbmNpcGFsSWQ6IGlkZW50aXR5LnByaW5jaXBhbElkLFxuICAgICAgc2NvcGU6IGFjci5pZCxcbiAgICAgIHJvbGVEZWZpbml0aW9uTmFtZTogJ0FjclB1bGwnLFxuICAgIH0pXG5cbiAgICBjb25zdCBsb2cgPSBuZXcgTG9nQW5hbHl0aWNzV29ya3NwYWNlKHRoaXMsICdsb2cnLCB7XG4gICAgICBsb2NhdGlvbixcbiAgICAgIG5hbWU6ICdnaGEtZXhhbXBsZS1sb2dzJyxcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiByZy5uYW1lLFxuICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFsndGFncyddLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgY29uc3Qgc3RvcmFnZUFjY291bnQgPSBuZXcgUmVzb3VyY2UodGhpcywgJ3N0b3JhZ2VBY2NvdW50Jywge1xuICAgICAgdHlwZTogJ01pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50c0AyMDIzLTAxLTAxJyxcbiAgICAgIHBhcmVudElkOiByZy5pZCxcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgbmFtZTogYGdoYXN0b3JhZ2VhY2NvdW50JHtyYW5kb20ucmVzdWx0fWAsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBsYXJnZUZpbGVTaGFyZXNTdGF0ZTogJ0VuYWJsZWQnLFxuICAgICAgICB9LFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiAnU3RhbmRhcmRfTFJTJyxcbiAgICAgICAgfSxcbiAgICAgICAga2luZDogJ1N0b3JhZ2VWMicsXG4gICAgICB9LFxuICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFsndGFncyddLFxuICAgICAgfSxcbiAgICAgIHJlc3BvbnNlRXhwb3J0VmFsdWVzOiBbXSxcbiAgICB9KVxuXG4gICAgY29uc3Qgc3RvcmFnZVNoYXJlID0gbmV3IFJlc291cmNlKHRoaXMsICdzdG9yYWdlU2hhcmUnLCB7XG4gICAgICB0eXBlOiAnTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2ZpbGVTZXJ2aWNlcy9zaGFyZXNAMjAyMy0wMS0wMScsXG4gICAgICBuYW1lOiAnZ2hhZXhhbXBsZXNoYXJlJyxcbiAgICAgIHBhcmVudElkOiBgJHtzdG9yYWdlQWNjb3VudC5pZH0vZmlsZVNlcnZpY2VzL2RlZmF1bHRgLFxuICAgICAgYm9keToge1xuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZW5hYmxlZFByb3RvY29sczogJ1NNQicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBjb25zdCBleHRlcm5hbHNTaGFyZSA9IG5ldyBSZXNvdXJjZSh0aGlzLCAnZXh0ZXJuYWxzU2hhcmUnLCB7XG4gICAgICB0eXBlOiAnTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2ZpbGVTZXJ2aWNlcy9zaGFyZXNAMjAyMy0wMS0wMScsXG4gICAgICBuYW1lOiAnZ2hhZXh0ZXJuYWxzc2hhcmUnLFxuICAgICAgcGFyZW50SWQ6IGAke3N0b3JhZ2VBY2NvdW50LmlkfS9maWxlU2VydmljZXMvZGVmYXVsdGAsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBlbmFibGVkUHJvdG9jb2xzOiAnU01CJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIGNvbnN0IGVudmlyb25tZW50ID0gbmV3IFJlc291cmNlKHRoaXMsICdhY2FlbnYnLCB7XG4gICAgICB0eXBlOiAnTWljcm9zb2Z0LkFwcC9tYW5hZ2VkRW52aXJvbm1lbnRzQDIwMjQtMDMtMDEnLFxuICAgICAgcGFyZW50SWQ6IHJnLmlkLFxuICAgICAgbG9jYXRpb24sXG4gICAgICBuYW1lOiAnZ2hhLXJ1bm5lci1lbnZpcm9ubWVudCcsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBhcHBMb2dzQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgZGVzdGluYXRpb246ICdsb2ctYW5hbHl0aWNzJyxcbiAgICAgICAgICAgIGxvZ0FuYWx5dGljc0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgICAgY3VzdG9tZXJJZDogbG9nLndvcmtzcGFjZUlkLFxuICAgICAgICAgICAgICBzaGFyZWRLZXk6IGxvZy5wcmltYXJ5U2hhcmVkS2V5LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluZnJhc3RydWN0dXJlUmVzb3VyY2VHcm91cDogJ21hbmFnZWQtYWNhLXJnJyxcbiAgICAgICAgICB3b3JrbG9hZFByb2ZpbGVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdDb25zdW1wdGlvbicsXG4gICAgICAgICAgICAgIHdvcmtsb2FkUHJvZmlsZVR5cGU6ICdDb25zdW1wdGlvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFsndGFncyddLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgY29uc3Qgc3RvcmFnZUFjY2Vzc0tleSA9IG5ldyBEYXRhQXphcGlSZXNvdXJjZUFjdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICAnc3RvcmFnZUFjY2Vzc0tleXMnLFxuICAgICAge1xuICAgICAgICB0eXBlOiAnTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzQDIwMjMtMDEtMDEnLFxuICAgICAgICBhY3Rpb246ICdsaXN0S2V5cycsXG4gICAgICAgIHJlc291cmNlSWQ6IHN0b3JhZ2VBY2NvdW50LmlkLFxuICAgICAgICByZXNwb25zZUV4cG9ydFZhbHVlczogWycqJ10sXG4gICAgICAgIGRlcGVuZHNPbjogW3N0b3JhZ2VBY2NvdW50XSxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLWNkay9pc3N1ZXMvMTY0MVxuICAgIC8vIEZvciBvbGRlciBBemFwaSB3YXkgdG8gZ2V0IGtleSB3b3VsZCBiZSB0aGlzIHdoZW4gKGRlZmF1bHQpIGRhdGEgb3V0cHV0IHdhcyBqc29uLiBXaXRuIDIuMC4wLWJldGEgZGVmYXVsdCB3YXMgY2hhbmdlZCB0byBIQ0xcbiAgICAvLyBjb25zdCBhY2Nlc3NLZXkgPSBGbi5sb29rdXAoRm4uZWxlbWVudChGbi5sb29rdXAoRm4uanNvbmRlY29kZShzdG9yYWdlQWNjZXNzS2V5Lm91dHB1dCBhcyBhbnkpLCAna2V5cycpLCAwKSwgJ3ZhbHVlJylcblxuICAgIGNvbnN0IGFjY2Vzc0tleSA9IEZuLmxvb2t1cChcbiAgICAgIEZuLmVsZW1lbnQoRm4uZWxlbWVudChzdG9yYWdlQWNjZXNzS2V5Lm91dHB1dC5sb29rdXAoJzAnKSwgMCksIDApLFxuICAgICAgJ3ZhbHVlJyxcbiAgICApXG5cbiAgICBjb25zdCBhY2FFbnZTdG9yYWdlID0gbmV3IENvbnRhaW5lckFwcEVudmlyb25tZW50U3RvcmFnZShcbiAgICAgIHRoaXMsXG4gICAgICAnYWNhZW52c3RvcmFnZScsXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdnaGFydW5uZXJqb2JzdG9yYWdlJyxcbiAgICAgICAgYWNjZXNzS2V5LFxuICAgICAgICBhY2Nlc3NNb2RlOiAnUmVhZFdyaXRlJyxcbiAgICAgICAgYWNjb3VudE5hbWU6IHN0b3JhZ2VBY2NvdW50Lm5hbWUsXG4gICAgICAgIGNvbnRhaW5lckFwcEVudmlyb25tZW50SWQ6IGVudmlyb25tZW50LmlkLFxuICAgICAgICBzaGFyZU5hbWU6IHN0b3JhZ2VTaGFyZS5uYW1lLFxuICAgICAgICBkZXBlbmRzT246IFtcbiAgICAgICAgICAvLyBOYW1lIGRvZXNuJ3QgY3JlYXRlIGRlcGVuZHNPbiByZXF1aXJlbWVudCwgc28gYWRkaW5nIHRoYXQgZXhwbGljaXRseVxuICAgICAgICAgIHN0b3JhZ2VTaGFyZSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgY29uc3QgYWNhRXh0ZXJuYWxTdG9yYWdlID0gbmV3IENvbnRhaW5lckFwcEVudmlyb25tZW50U3RvcmFnZShcbiAgICAgIHRoaXMsXG4gICAgICAnYWNhZXh0ZXJuYWxzdG9yYWdlJyxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2doYXJ1bm5lcmV4dGVybmFsc3RvcmFnZScsXG4gICAgICAgIGFjY2Vzc0tleSxcbiAgICAgICAgYWNjZXNzTW9kZTogJ1JlYWRXcml0ZScsXG4gICAgICAgIGFjY291bnROYW1lOiBzdG9yYWdlQWNjb3VudC5uYW1lLFxuICAgICAgICBjb250YWluZXJBcHBFbnZpcm9ubWVudElkOiBlbnZpcm9ubWVudC5pZCxcbiAgICAgICAgc2hhcmVOYW1lOiBleHRlcm5hbHNTaGFyZS5uYW1lLFxuICAgICAgICBkZXBlbmRzT246IFtcbiAgICAgICAgICAvLyBOYW1lIGRvZXNuJ3QgY3JlYXRlIGRlcGVuZHNPbiByZXF1aXJlbWVudCwgc28gYWRkaW5nIHRoYXQgZXhwbGljaXRseVxuICAgICAgICAgIGV4dGVybmFsc1NoYXJlLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBjb25zdCBydW5uZXJWb2x1bWVOYW1lID0gJ3dvcmsnXG4gICAgY29uc3QgZXh0ZXJuYWxWb2x1bWVOYW1lID0gJ2V4dGVybmFscydcblxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2F6dXJlL3RlbXBsYXRlcy9taWNyb3NvZnQuYXBwL2pvYnM/cGl2b3RzPWRlcGxveW1lbnQtbGFuZ3VhZ2UtdGVycmFmb3JtXG4gICAgICovXG4gICAgY29uc3QgZ2hhUnVubmVySm9iID0gbmV3IFJlc291cmNlKHRoaXMsICdnaGFSdW5uZXJKb2InLCB7XG4gICAgICB0eXBlOiAnTWljcm9zb2Z0LkFwcC9qb2JzQDIwMjQtMDItMDItcHJldmlldycsXG4gICAgICBpZGVudGl0eTogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ1VzZXJBc3NpZ25lZCcsXG4gICAgICAgICAgaWRlbnRpdHlJZHM6IFtpZGVudGl0eS5pZF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgbmFtZTogJ2doYS1ydW5uZXItam9iLTAxJyxcbiAgICAgIHBhcmVudElkOiByZy5pZCxcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgYm9keToge1xuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgbWFudWFsVHJpZ2dlckNvbmZpZzoge1xuICAgICAgICAgICAgICBwYXJhbGxlbGlzbTogMSxcbiAgICAgICAgICAgICAgcmVwbGljYUNvbXBsZXRpb25Db3VudDogMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0cmlnZ2VyVHlwZTogJ01hbnVhbCcsXG4gICAgICAgICAgICByZXBsaWNhVGltZW91dDogMTIwMCxcbiAgICAgICAgICAgIHJlZ2lzdHJpZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkZW50aXR5OiBpZGVudGl0eS5pZCxcbiAgICAgICAgICAgICAgICBzZXJ2ZXI6IGFjci5sb2dpblNlcnZlcixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlbnZpcm9ubWVudElkOiBlbnZpcm9ubWVudC5pZCxcbiAgICAgICAgICB0ZW1wbGF0ZToge1xuICAgICAgICAgICAgY29udGFpbmVyczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzOiB7XG4gICAgICAgICAgICAgICAgICBjcHU6IDEsXG4gICAgICAgICAgICAgICAgICBtZW1vcnk6ICcyR2knLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8gSGF2ZSB0byB1c2UgY3VzdG9tIGltYWdlIGFzIHdlIHdhbnQgdG8gcnVuIHNlcnZpY2UgYXMgcm9vdCB0byBiZSBhYmxlIHRvIGluc3RhbGwgcGFja2FnZXNcbiAgICAgICAgICAgICAgICBpbWFnZTogYCR7YWNyLmxvZ2luU2VydmVyfS9yb290LWFjdGlvbnMtcnVubmVyOmxhdGVzdGAsXG4gICAgICAgICAgICAgICAgbmFtZTogJ21haW4nLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICcvYmluL3NoJyxcbiAgICAgICAgICAgICAgICAgICctYycsXG4gICAgICAgICAgICAgICAgICAnZXhwb3J0IEVYRUNJRD0kKGNhdCAvcHJvYy9zeXMva2VybmVsL3JhbmRvbS91dWlkKSAmJiBta2RpciAtcCAvdG1wL193b3JrLyRFWEVDSUQgJiYgbG4gLXMgL3RtcC9fd29yay8kRVhFQ0lEIF93b3JrICYmIC9ob21lL3J1bm5lci9ydW4uc2ggOyBybSAtciAvdG1wL193b3JrLyRFWEVDSUQnLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgdm9sdW1lTW91bnRzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vdW50UGF0aDogJy90bXAvX3dvcmsnLFxuICAgICAgICAgICAgICAgICAgICB2b2x1bWVOYW1lOiBydW5uZXJWb2x1bWVOYW1lLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbW91bnRQYXRoOiAnL3RtcC9leHRlcm5hbHMnLFxuICAgICAgICAgICAgICAgICAgICB2b2x1bWVOYW1lOiBleHRlcm5hbFZvbHVtZU5hbWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgZW52OiBbXG4gICAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2F6dXJlLWNvbnRhaW5lci1hcHBzL2lzc3Vlcy81MDIjaXNzdWVjb21tZW50LTEzNDAyMjU0MzhcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0FQUFNFVFRJTkdfV0VCU0lURV9TSVRFX05BTUUnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ2lkZW50aXR5LXdvcmthcm91bmQnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvYXp1cmUtY29udGFpbmVyLWFwcHMvaXNzdWVzLzQ0MiNpc3N1ZWNvbW1lbnQtMTY2NTYyMTAzMVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQVpVUkVfQ0xJRU5UX0lEJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGlkZW50aXR5LmNsaWVudElkLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1JHX05BTUUnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmcubmFtZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdMT0dfSUQnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbG9nLndvcmtzcGFjZUlkLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1NUT1JBR0VfTkFNRScsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBhY2FFbnZTdG9yYWdlLm5hbWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnRVhURVJOQUxfU1RPUkFHRV9OQU1FJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGFjYUV4dGVybmFsU3RvcmFnZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1NVQlNDUklQVElPTl9JRCcsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzdWIuc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQUNBX0VOVklST05NRU5UX0lEJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudmlyb25tZW50LmlkLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHZvbHVtZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IHJ1bm5lclZvbHVtZU5hbWUsXG4gICAgICAgICAgICAgICAgc3RvcmFnZU5hbWU6IGFjYUVudlN0b3JhZ2UubmFtZSxcbiAgICAgICAgICAgICAgICBzdG9yYWdlVHlwZTogJ0F6dXJlRmlsZScsXG4gICAgICAgICAgICAgICAgbW91bnRPcHRpb25zOiAnbWZzeW1saW5rcycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBleHRlcm5hbFZvbHVtZU5hbWUsXG4gICAgICAgICAgICAgICAgc3RvcmFnZU5hbWU6IGFjYUV4dGVybmFsU3RvcmFnZS5uYW1lLFxuICAgICAgICAgICAgICAgIHN0b3JhZ2VUeXBlOiAnQXp1cmVGaWxlJyxcbiAgICAgICAgICAgICAgICBtb3VudE9wdGlvbnM6ICdtZnN5bWxpbmtzJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBkZXBlbmRzT246IFtydW5uZXJDYWNoZV0sXG4gICAgICBsaWZlY3ljbGU6IHtcbiAgICAgICAgaWdub3JlQ2hhbmdlczogWyd0YWdzJ10sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBjb25zdCBhdXRvc2NhbGVyQXBwID0gbmV3IENvbnRhaW5lckFwcCh0aGlzLCAnYXV0b3NjYWxlckFwcCcsIHtcbiAgICAgIGNvbnRhaW5lckFwcEVudmlyb25tZW50SWQ6IGVudmlyb25tZW50LmlkLFxuICAgICAgbmFtZTogJ2F1dG9zY2FsZXItYXBwLTAxJyxcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiByZy5uYW1lLFxuICAgICAgcmV2aXNpb25Nb2RlOiAnU2luZ2xlJyxcbiAgICAgIGlkZW50aXR5OiB7XG4gICAgICAgIHR5cGU6ICdTeXN0ZW1Bc3NpZ25lZCwgVXNlckFzc2lnbmVkJyxcbiAgICAgICAgaWRlbnRpdHlJZHM6IFtpZGVudGl0eS5pZF0sXG4gICAgICB9LFxuICAgICAgc2VjcmV0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAncGF0JyxcbiAgICAgICAgICB2YWx1ZTogcGF0LnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHJlZ2lzdHJ5OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZGVudGl0eTogaWRlbnRpdHkuaWQsXG4gICAgICAgICAgc2VydmVyOiBhY3IubG9naW5TZXJ2ZXIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdGVtcGxhdGU6IHtcbiAgICAgICAgY29udGFpbmVyOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gQ1BVIGFuZCBNZW1vcnkgY2FuIGJlIGxvd2VyIHdpdGggd29ya2xvYWQgcHJvZmlsZVxuICAgICAgICAgICAgY3B1OiAwLjI1LFxuICAgICAgICAgICAgbWVtb3J5OiAnMC41R2knLFxuICAgICAgICAgICAgaW1hZ2U6IGAke2Fjci5sb2dpblNlcnZlcn0vYXV0b3NjYWxlcjp0ZXN0YCxcbiAgICAgICAgICAgIG5hbWU6ICdhdXRvc2NhbGVyJyxcbiAgICAgICAgICAgIGVudjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1BBVCcsXG4gICAgICAgICAgICAgICAgc2VjcmV0TmFtZTogJ3BhdCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnR0lUSFVCX0NPTkZJR19VUkwnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBnaXRodWJDb25maWdVcmwudmFsdWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQVpVUkVfVEVOQU5UX0lEJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogc3ViLnRlbmFudElkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1NVQlNDUklQVElPTl9JRCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHN1Yi5zdWJzY3JpcHRpb25JZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdSRVNPVVJDRV9HUk9VUF9OQU1FJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogcmcubmFtZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdKT0JfTkFNRScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGdoYVJ1bm5lckpvYi5uYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1NDQUxFX1NFVF9OQU1FJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ2FjYS1ydW5uZXItc2V0JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBkZXBlbmRzT246IFthdXRvc2NhbGVyQ2FjaGVdLFxuICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFsndGFncycsICd3b3JrbG9hZF9wcm9maWxlX25hbWUnXSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9henVyZS1jb250YWluZXItYXBwcy9pc3N1ZXMvMTAyNFxuICAgICAqL1xuICAgIGNvbnN0IHJvbGUgPSBuZXcgUm9sZURlZmluaXRpb24odGhpcywgJ2pvYlJvbGUnLCB7XG4gICAgICBuYW1lOiBgZ2hhLWV4YW1wbGUtcmV2aXNpb24tc3RhcnQtcm9sZS0ke3JhbmRvbS5yZXN1bHR9YCxcbiAgICAgIHNjb3BlOiBzdWIuaWQsXG4gICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy9zdGFydC9hY3Rpb24nLFxuICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy9zdG9wL2FjdGlvbicsXG4gICAgICAgICAgICAnbWljcm9zb2Z0LmFwcC9qb2JzL3JlYWQnLFxuICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy9leGVjdXRpb25zL3JlYWQnLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG5cbiAgICBjb25zdCBqb2JDcmVhdGlvblJvbGUgPSBuZXcgUm9sZURlZmluaXRpb24odGhpcywgJ2pvYkNyZWF0aW9uUm9sZScsIHtcbiAgICAgIG5hbWU6IGBnaGEtZXhhbXBsZS1yZXZpc2lvbi1jcmVhdGUtcm9sZS0ke3JhbmRvbS5yZXN1bHR9YCxcbiAgICAgIHNjb3BlOiBzdWIuaWQsXG4gICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy9zdGFydC9hY3Rpb24nLFxuICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy9zdG9wL2FjdGlvbicsXG4gICAgICAgICAgICAnbWljcm9zb2Z0LmFwcC9qb2JzL3JlYWQnLFxuICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy93cml0ZScsXG4gICAgICAgICAgICAnbWljcm9zb2Z0LmFwcC9qb2JzL2V4ZWN1dGlvbnMvcmVhZCcsXG4gICAgICAgICAgICAnbWljcm9zb2Z0LmFwcC9tYW5hZ2VkRW52aXJvbm1lbnRzL2pvaW4vYWN0aW9uJyxcbiAgICAgICAgICAgICdtaWNyb3NvZnQuYXBwL2pvYnMvZGVsZXRlJywgLy8gY2xlYW51cCBmb3Igam9ic1xuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG5cbiAgICAvLyBBbGxvdyBhdXRvc2NhbGVyIHRvIGNyZWF0ZSBuZXcgcmV2aXNpb24gb2YgYXBwXG4gICAgbmV3IFJvbGVBc3NpZ25tZW50KHRoaXMsICdzY2FsZUpvYlJvbGVBc3NpZ25tZW50Jywge1xuICAgICAgcHJpbmNpcGFsSWQ6IGF1dG9zY2FsZXJBcHAuaWRlbnRpdHkucHJpbmNpcGFsSWQsXG4gICAgICBzY29wZTogZ2hhUnVubmVySm9iLmlkLFxuICAgICAgcm9sZURlZmluaXRpb25JZDogcm9sZS5yb2xlRGVmaW5pdGlvblJlc291cmNlSWQsXG4gICAgfSlcblxuICAgIC8vIEFsbG93IHJ1bm5lciB0byBzdGFydCB0aGUgam9iLiBBcyBlYWNoIG9uZSBjcmVhdGVkIG5ldyBqb2IsIGhhdmUgdG8gZ2l2ZSB0byBSRyBsZXZlbC5cbiAgICBuZXcgUm9sZUFzc2lnbm1lbnQodGhpcywgJ2FjdGlvbkNvbnRhaW5lclN0YXJ0Um9sZUFzc2lnbm1lbnQnLCB7XG4gICAgICBwcmluY2lwYWxJZDogaWRlbnRpdHkucHJpbmNpcGFsSWQsXG4gICAgICBzY29wZTogcmcuaWQsXG4gICAgICByb2xlRGVmaW5pdGlvbklkOiBqb2JDcmVhdGlvblJvbGUucm9sZURlZmluaXRpb25SZXNvdXJjZUlkLFxuICAgIH0pXG5cbiAgICBuZXcgUm9sZUFzc2lnbm1lbnQodGhpcywgJ2ltYWdlUHVzaFJvbGVBc3NpZ25tZW50Jywge1xuICAgICAgcHJpbmNpcGFsSWQ6IGlkZW50aXR5LnByaW5jaXBhbElkLFxuICAgICAgc2NvcGU6IGFjci5pZCxcbiAgICAgIHJvbGVEZWZpbml0aW9uTmFtZTogJ0FjclB1c2gnLFxuICAgIH0pXG5cbiAgICBuZXcgUm9sZUFzc2lnbm1lbnQodGhpcywgJ2pvYkxvZ1JlYWRBc3NpZ25tZW50Jywge1xuICAgICAgcHJpbmNpcGFsSWQ6IGlkZW50aXR5LnByaW5jaXBhbElkLFxuICAgICAgc2NvcGU6IGxvZy5pZCxcbiAgICAgIHJvbGVEZWZpbml0aW9uTmFtZTogJ0xvZyBBbmFseXRpY3MgUmVhZGVyJyxcbiAgICB9KVxuICB9XG59XG4iXX0=
452
+ Azure[_a] = { fqn: "terraform-cdk-serverless-github-actions-runner-controller.Azure", version: "0.0.8" };
453
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2F6dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkVBQXlFO0FBQ3pFLHFIQUErRztBQUMvRyx1RkFBbUY7QUFDbkYscUdBQWdHO0FBQ2hHLGlHQUE0RjtBQUM1RixtRUFBdUU7QUFDdkUsK0VBQTJFO0FBQzNFLGlGQUE2RTtBQUM3RSxpRkFBNkU7QUFDN0UsK0ZBQTBGO0FBQzFGLGtFQUFxRTtBQUNyRSxnRkFBNEU7QUFDNUUsaUNBQThDO0FBQzlDLDJDQUF1QztBQUN2QyxtR0FBNkY7QUFDN0YsK0RBQWlFO0FBQ2pFLCtEQUE0RDtBQUM1RCwyQ0FBOEM7QUFFOUMsTUFBYSxLQUFNLFNBQVEsc0JBQVM7SUFDbkMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdkMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLDBCQUFlLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUNwQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDZCxDQUFDLENBQUM7UUFFSCxJQUFJLHdCQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVyQyxJQUFJLHlCQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRW5DLE1BQU0sR0FBRyxHQUFHLElBQUksbURBQXVCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV6RCxNQUFNLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUEsMkJBQWUsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUV2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLHlCQUFpQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDeEQsT0FBTyxFQUFFLFlBQVk7WUFDckIsV0FBVyxFQUFFLDBDQUEwQztZQUN2RCxJQUFJLEVBQUUsUUFBUTtZQUNkLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFFBQVEsRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUVULE1BQU0sRUFBRSxHQUFHLElBQUksOEJBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ3hDLFFBQVE7WUFDUixJQUFJLEVBQUUsZUFBZTtZQUNyQixTQUFTLEVBQUU7Z0JBQ1YsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDO2FBQ3ZCO1NBQ0QsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsSUFBSSxnQ0FBYyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDdkQsTUFBTSxFQUFFLENBQUM7WUFDVCxPQUFPLEVBQUUsS0FBSztZQUNkLEtBQUssRUFBRSxLQUFLO1NBQ1osQ0FBQyxDQUFDO1FBRUgsTUFBTSxHQUFHLEdBQUcsSUFBSSxzQ0FBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQzlDLFFBQVE7WUFDUixJQUFJLEVBQUUsWUFBWSxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ2pDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxJQUFJO1lBQzFCLEdBQUcsRUFBRSxPQUFPO1lBQ1osU0FBUyxFQUFFO2dCQUNWLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUN2QjtTQUNELENBQUMsQ0FBQztRQUVILHlCQUF5QjtRQUN6QixNQUFNLFdBQVcsR0FBRyxJQUFJLG1CQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNyRCxJQUFJLEVBQUUsc0VBQXNFO1lBQzVFLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNoQixJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLElBQUksRUFBRTtnQkFDTCxVQUFVLEVBQUU7b0JBQ1gsZ0JBQWdCLEVBQUUsbUNBQW1DO29CQUNyRCxnQkFBZ0IsRUFBRSxxQkFBcUI7aUJBQ3ZDO2FBQ0Q7U0FDRCxDQUFDLENBQUM7UUFFSCxNQUFNLGVBQWUsR0FBRyxJQUFJLG1CQUFRLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQzdELElBQUksRUFBRSxzRUFBc0U7WUFDNUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ2hCLElBQUksRUFBRSxrQkFBa0I7WUFDeEIsSUFBSSxFQUFFO2dCQUNMLFVBQVUsRUFBRTtvQkFDWCxnQkFBZ0IsRUFBRSwwQ0FBMEM7b0JBQzVELGdCQUFnQixFQUFFLFlBQVk7aUJBQzlCO2FBQ0Q7U0FDRCxDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRyxJQUFJLDZDQUFvQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDM0QsUUFBUTtZQUNSLElBQUksRUFBRSxnQkFBZ0I7WUFDdEIsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUk7WUFDMUIsU0FBUyxFQUFFO2dCQUNWLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUN2QjtTQUNELENBQUMsQ0FBQztRQUVILElBQUksZ0NBQWMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDMUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXO1lBQ2pDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNiLGtCQUFrQixFQUFFLFNBQVM7U0FDN0IsQ0FBQyxDQUFDO1FBRUgsTUFBTSxHQUFHLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQ2xELFFBQVE7WUFDUixJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxJQUFJO1lBQzFCLFNBQVMsRUFBRTtnQkFDVixhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDdkI7U0FDRCxDQUFDLENBQUM7UUFFSCxNQUFNLGNBQWMsR0FBRyxJQUFJLG1CQUFRLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQzNELElBQUksRUFBRSw4Q0FBOEM7WUFDcEQsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2YsUUFBUTtZQUNSLElBQUksRUFBRSxvQkFBb0IsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUN6QyxJQUFJLEVBQUU7Z0JBQ0wsVUFBVSxFQUFFO29CQUNYLG9CQUFvQixFQUFFLFNBQVM7aUJBQy9CO2dCQUNELEdBQUcsRUFBRTtvQkFDSixJQUFJLEVBQUUsY0FBYztpQkFDcEI7Z0JBQ0QsSUFBSSxFQUFFLFdBQVc7YUFDakI7WUFDRCxTQUFTLEVBQUU7Z0JBQ1YsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDO2FBQ3ZCO1lBQ0Qsb0JBQW9CLEVBQUUsRUFBRTtTQUN4QixDQUFDLENBQUM7UUFFSCxNQUFNLFlBQVksR0FBRyxJQUFJLG1CQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUN2RCxJQUFJLEVBQUUsa0VBQWtFO1lBQ3hFLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsUUFBUSxFQUFFLEdBQUcsY0FBYyxDQUFDLEVBQUUsdUJBQXVCO1lBQ3JELElBQUksRUFBRTtnQkFDTCxVQUFVLEVBQUU7b0JBQ1gsZ0JBQWdCLEVBQUUsS0FBSztpQkFDdkI7YUFDRDtTQUNELENBQUMsQ0FBQztRQUVILE1BQU0sY0FBYyxHQUFHLElBQUksbUJBQVEsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDM0QsSUFBSSxFQUFFLGtFQUFrRTtZQUN4RSxJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLFFBQVEsRUFBRSxHQUFHLGNBQWMsQ0FBQyxFQUFFLHVCQUF1QjtZQUNyRCxJQUFJLEVBQUU7Z0JBQ0wsVUFBVSxFQUFFO29CQUNYLGdCQUFnQixFQUFFLEtBQUs7aUJBQ3ZCO2FBQ0Q7U0FDRCxDQUFDLENBQUM7UUFFSCxNQUFNLFdBQVcsR0FBRyxJQUFJLG1CQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNoRCxJQUFJLEVBQUUsOENBQThDO1lBQ3BELFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUNmLFFBQVE7WUFDUixJQUFJLEVBQUUsd0JBQXdCO1lBQzlCLElBQUksRUFBRTtnQkFDTCxVQUFVLEVBQUU7b0JBQ1gsb0JBQW9CLEVBQUU7d0JBQ3JCLFdBQVcsRUFBRSxlQUFlO3dCQUM1Qix5QkFBeUIsRUFBRTs0QkFDMUIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxXQUFXOzRCQUMzQixTQUFTLEVBQUUsR0FBRyxDQUFDLGdCQUFnQjt5QkFDL0I7cUJBQ0Q7b0JBQ0QsMkJBQTJCLEVBQUUsZ0JBQWdCO29CQUM3QyxnQkFBZ0IsRUFBRTt3QkFDakI7NEJBQ0MsSUFBSSxFQUFFLGFBQWE7NEJBQ25CLG1CQUFtQixFQUFFLGFBQWE7eUJBQ2xDO3FCQUNEO2lCQUNEO2FBQ0Q7WUFDRCxTQUFTLEVBQUU7Z0JBQ1YsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDO2FBQ3ZCO1NBQ0QsQ0FBQyxDQUFDO1FBRUgsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLG9EQUF1QixDQUNuRCxJQUFJLEVBQ0osbUJBQW1CLEVBQ25CO1lBQ0MsSUFBSSxFQUFFLDhDQUE4QztZQUNwRCxNQUFNLEVBQUUsVUFBVTtZQUNsQixVQUFVLEVBQUUsY0FBYyxDQUFDLEVBQUU7WUFDN0Isb0JBQW9CLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFDM0IsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDO1NBQzNCLENBQ0QsQ0FBQztRQUVGLDZEQUE2RDtRQUM3RCwrSEFBK0g7UUFDL0gsd0hBQXdIO1FBRXhILE1BQU0sU0FBUyxHQUFHLFVBQUUsQ0FBQyxNQUFNLENBQzFCLFVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBRSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNqRSxPQUFPLENBQ1AsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHLElBQUksa0VBQThCLENBQ3ZELElBQUksRUFDSixlQUFlLEVBQ2Y7WUFDQyxJQUFJLEVBQUUscUJBQXFCO1lBQzNCLFNBQVM7WUFDVCxVQUFVLEVBQUUsV0FBVztZQUN2QixXQUFXLEVBQUUsY0FBYyxDQUFDLElBQUk7WUFDaEMseUJBQXlCLEVBQUUsV0FBVyxDQUFDLEVBQUU7WUFDekMsU0FBUyxFQUFFLFlBQVksQ0FBQyxJQUFJO1lBQzVCLFNBQVMsRUFBRTtnQkFDVix1RUFBdUU7Z0JBQ3ZFLFlBQVk7YUFDWjtTQUNELENBQ0QsQ0FBQztRQUVGLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxrRUFBOEIsQ0FDNUQsSUFBSSxFQUNKLG9CQUFvQixFQUNwQjtZQUNDLElBQUksRUFBRSwwQkFBMEI7WUFDaEMsU0FBUztZQUNULFVBQVUsRUFBRSxXQUFXO1lBQ3ZCLFdBQVcsRUFBRSxjQUFjLENBQUMsSUFBSTtZQUNoQyx5QkFBeUIsRUFBRSxXQUFXLENBQUMsRUFBRTtZQUN6QyxTQUFTLEVBQUUsY0FBYyxDQUFDLElBQUk7WUFDOUIsU0FBUyxFQUFFO2dCQUNWLHVFQUF1RTtnQkFDdkUsY0FBYzthQUNkO1NBQ0QsQ0FDRCxDQUFDO1FBRUYsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUM7UUFDaEMsTUFBTSxrQkFBa0IsR0FBRyxXQUFXLENBQUM7UUFFdkM7O1dBRUc7UUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLG1CQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUN2RCxJQUFJLEVBQUUsdUNBQXVDO1lBQzdDLFFBQVEsRUFBRTtnQkFDVDtvQkFDQyxJQUFJLEVBQUUsY0FBYztvQkFDcEIsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztpQkFDMUI7YUFDRDtZQUNELElBQUksRUFBRSxtQkFBbUI7WUFDekIsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2YsUUFBUTtZQUNSLElBQUksRUFBRTtnQkFDTCxVQUFVLEVBQUU7b0JBQ1gsYUFBYSxFQUFFO3dCQUNkLG1CQUFtQixFQUFFOzRCQUNwQixXQUFXLEVBQUUsQ0FBQzs0QkFDZCxzQkFBc0IsRUFBRSxDQUFDO3lCQUN6Qjt3QkFDRCxXQUFXLEVBQUUsUUFBUTt3QkFDckIsY0FBYyxFQUFFLElBQUk7d0JBQ3BCLFVBQVUsRUFBRTs0QkFDWDtnQ0FDQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0NBQ3JCLE1BQU0sRUFBRSxHQUFHLENBQUMsV0FBVzs2QkFDdkI7eUJBQ0Q7cUJBQ0Q7b0JBQ0QsYUFBYSxFQUFFLFdBQVcsQ0FBQyxFQUFFO29CQUM3QixRQUFRLEVBQUU7d0JBQ1QsVUFBVSxFQUFFOzRCQUNYO2dDQUNDLFNBQVMsRUFBRTtvQ0FDVixHQUFHLEVBQUUsQ0FBQztvQ0FDTixNQUFNLEVBQUUsS0FBSztpQ0FDYjtnQ0FDRCw0RkFBNEY7Z0NBQzVGLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxXQUFXLDZCQUE2QjtnQ0FDdEQsSUFBSSxFQUFFLE1BQU07Z0NBQ1osT0FBTyxFQUFFO29DQUNSLFNBQVM7b0NBQ1QsSUFBSTtvQ0FDSixzS0FBc0s7aUNBQ3RLO2dDQUNELFlBQVksRUFBRTtvQ0FDYjt3Q0FDQyxTQUFTLEVBQUUsWUFBWTt3Q0FDdkIsVUFBVSxFQUFFLGdCQUFnQjtxQ0FDNUI7b0NBQ0Q7d0NBQ0MsU0FBUyxFQUFFLGdCQUFnQjt3Q0FDM0IsVUFBVSxFQUFFLGtCQUFrQjtxQ0FDOUI7aUNBQ0Q7Z0NBQ0QsR0FBRyxFQUFFO29DQUNKLHVGQUF1RjtvQ0FDdkY7d0NBQ0MsSUFBSSxFQUFFLDhCQUE4Qjt3Q0FDcEMsS0FBSyxFQUFFLHFCQUFxQjtxQ0FDNUI7b0NBQ0QsdUZBQXVGO29DQUN2Rjt3Q0FDQyxJQUFJLEVBQUUsaUJBQWlCO3dDQUN2QixLQUFLLEVBQUUsUUFBUSxDQUFDLFFBQVE7cUNBQ3hCO29DQUNEO3dDQUNDLElBQUksRUFBRSxTQUFTO3dDQUNmLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSTtxQ0FDZDtvQ0FDRDt3Q0FDQyxJQUFJLEVBQUUsUUFBUTt3Q0FDZCxLQUFLLEVBQUUsR0FBRyxDQUFDLFdBQVc7cUNBQ3RCO29DQUNEO3dDQUNDLElBQUksRUFBRSxjQUFjO3dDQUNwQixLQUFLLEVBQUUsYUFBYSxDQUFDLElBQUk7cUNBQ3pCO29DQUNEO3dDQUNDLElBQUksRUFBRSx1QkFBdUI7d0NBQzdCLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxJQUFJO3FDQUM5QjtvQ0FDRDt3Q0FDQyxJQUFJLEVBQUUsaUJBQWlCO3dDQUN2QixLQUFLLEVBQUUsR0FBRyxDQUFDLGNBQWM7cUNBQ3pCO29DQUNEO3dDQUNDLElBQUksRUFBRSxvQkFBb0I7d0NBQzFCLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRTtxQ0FDckI7aUNBQ0Q7NkJBQ0Q7eUJBQ0Q7d0JBQ0QsT0FBTyxFQUFFOzRCQUNSO2dDQUNDLElBQUksRUFBRSxnQkFBZ0I7Z0NBQ3RCLFdBQVcsRUFBRSxhQUFhLENBQUMsSUFBSTtnQ0FDL0IsV0FBVyxFQUFFLFdBQVc7Z0NBQ3hCLFlBQVksRUFBRSxZQUFZOzZCQUMxQjs0QkFDRDtnQ0FDQyxJQUFJLEVBQUUsa0JBQWtCO2dDQUN4QixXQUFXLEVBQUUsa0JBQWtCLENBQUMsSUFBSTtnQ0FDcEMsV0FBVyxFQUFFLFdBQVc7Z0NBQ3hCLFlBQVksRUFBRSxZQUFZOzZCQUMxQjt5QkFDRDtxQkFDRDtpQkFDRDthQUNEO1lBQ0QsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDO1lBQ3hCLFNBQVMsRUFBRTtnQkFDVixhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDdkI7U0FDRCxDQUFDLENBQUM7UUFFSCxNQUFNLGFBQWEsR0FBRyxJQUFJLDRCQUFZLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtZQUM3RCx5QkFBeUIsRUFBRSxXQUFXLENBQUMsRUFBRTtZQUN6QyxJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxJQUFJO1lBQzFCLFlBQVksRUFBRSxRQUFRO1lBQ3RCLFFBQVEsRUFBRTtnQkFDVCxJQUFJLEVBQUUsOEJBQThCO2dCQUNwQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2FBQzFCO1lBQ0QsTUFBTSxFQUFFO2dCQUNQO29CQUNDLElBQUksRUFBRSxLQUFLO29CQUNYLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztpQkFDaEI7YUFDRDtZQUNELFFBQVEsRUFBRTtnQkFDVDtvQkFDQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUU7b0JBQ3JCLE1BQU0sRUFBRSxHQUFHLENBQUMsV0FBVztpQkFDdkI7YUFDRDtZQUNELFFBQVEsRUFBRTtnQkFDVCxTQUFTLEVBQUU7b0JBQ1Y7d0JBQ0Msb0RBQW9EO3dCQUNwRCxHQUFHLEVBQUUsSUFBSTt3QkFDVCxNQUFNLEVBQUUsT0FBTzt3QkFDZixLQUFLLEVBQUUsR0FBRyxHQUFHLENBQUMsV0FBVyxrQkFBa0I7d0JBQzNDLElBQUksRUFBRSxZQUFZO3dCQUNsQixHQUFHLEVBQUU7NEJBQ0o7Z0NBQ0MsSUFBSSxFQUFFLEtBQUs7Z0NBQ1gsVUFBVSxFQUFFLEtBQUs7NkJBQ2pCOzRCQUNEO2dDQUNDLElBQUksRUFBRSxtQkFBbUI7Z0NBQ3pCLEtBQUssRUFBRSxlQUFlLENBQUMsS0FBSzs2QkFDNUI7NEJBQ0Q7Z0NBQ0MsSUFBSSxFQUFFLGlCQUFpQjtnQ0FDdkIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxRQUFROzZCQUNuQjs0QkFDRDtnQ0FDQyxJQUFJLEVBQUUsaUJBQWlCO2dDQUN2QixLQUFLLEVBQUUsR0FBRyxDQUFDLGNBQWM7NkJBQ3pCOzRCQUNEO2dDQUNDLElBQUksRUFBRSxxQkFBcUI7Z0NBQzNCLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSTs2QkFDZDs0QkFDRDtnQ0FDQyxJQUFJLEVBQUUsVUFBVTtnQ0FDaEIsS0FBSyxFQUFFLFlBQVksQ0FBQyxJQUFJOzZCQUN4Qjs0QkFDRDtnQ0FDQyxJQUFJLEVBQUUsZ0JBQWdCO2dDQUN0QixLQUFLLEVBQUUsZ0JBQWdCOzZCQUN2Qjt5QkFDRDtxQkFDRDtpQkFDRDthQUNEO1lBQ0QsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO1lBQzVCLFNBQVMsRUFBRTtnQkFDVixhQUFhLEVBQUUsQ0FBQyxNQUFNLEVBQUUsdUJBQXVCLENBQUM7YUFDaEQ7U0FDRCxDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNILE1BQU0sSUFBSSxHQUFHLElBQUksZ0NBQWMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ2hELElBQUksRUFBRSxtQ0FBbUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUN4RCxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDYixXQUFXLEVBQUU7Z0JBQ1o7b0JBQ0MsT0FBTyxFQUFFO3dCQUNSLGlDQUFpQzt3QkFDakMsZ0NBQWdDO3dCQUNoQyx5QkFBeUI7d0JBQ3pCLG9DQUFvQztxQkFDcEM7aUJBQ0Q7YUFDRDtTQUNELENBQUMsQ0FBQztRQUVILE1BQU0sZUFBZSxHQUFHLElBQUksZ0NBQWMsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDbkUsSUFBSSxFQUFFLG9DQUFvQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ3pELEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNiLFdBQVcsRUFBRTtnQkFDWjtvQkFDQyxPQUFPLEVBQUU7d0JBQ1IsaUNBQWlDO3dCQUNqQyxnQ0FBZ0M7d0JBQ2hDLHlCQUF5Qjt3QkFDekIsMEJBQTBCO3dCQUMxQixvQ0FBb0M7d0JBQ3BDLCtDQUErQzt3QkFDL0MsMkJBQTJCLEVBQUUsbUJBQW1CO3FCQUNoRDtpQkFDRDthQUNEO1NBQ0QsQ0FBQyxDQUFDO1FBRUgsaURBQWlEO1FBQ2pELElBQUksZ0NBQWMsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7WUFDbEQsV0FBVyxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVztZQUMvQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEVBQUU7WUFDdEIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLHdCQUF3QjtTQUMvQyxDQUFDLENBQUM7UUFFSCx3RkFBd0Y7UUFDeEYsSUFBSSxnQ0FBYyxDQUFDLElBQUksRUFBRSxvQ0FBb0MsRUFBRTtZQUM5RCxXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7WUFDakMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ1osZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLHdCQUF3QjtTQUMxRCxDQUFDLENBQUM7UUFFSCxJQUFJLGdDQUFjLENBQUMsSUFBSSxFQUFFLHlCQUF5QixFQUFFO1lBQ25ELFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztZQUNqQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDYixrQkFBa0IsRUFBRSxTQUFTO1NBQzdCLENBQUMsQ0FBQztRQUVILElBQUksZ0NBQWMsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7WUFDaEQsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXO1lBQ2pDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNiLGtCQUFrQixFQUFFLHNCQUFzQjtTQUMxQyxDQUFDLENBQUM7SUFDSixDQUFDOztBQXZkRixzQkF3ZEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250YWluZXJBcHAgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2NvbnRhaW5lci1hcHBcIjtcbmltcG9ydCB7IENvbnRhaW5lckFwcEVudmlyb25tZW50U3RvcmFnZSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvY29udGFpbmVyLWFwcC1lbnZpcm9ubWVudC1zdG9yYWdlXCI7XG5pbXBvcnQgeyBDb250YWluZXJSZWdpc3RyeSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvY29udGFpbmVyLXJlZ2lzdHJ5XCI7XG5pbXBvcnQgeyBEYXRhQXp1cmVybVN1YnNjcmlwdGlvbiB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvZGF0YS1henVyZXJtLXN1YnNjcmlwdGlvblwiO1xuaW1wb3J0IHsgTG9nQW5hbHl0aWNzV29ya3NwYWNlIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9sb2ctYW5hbHl0aWNzLXdvcmtzcGFjZVwiO1xuaW1wb3J0IHsgQXp1cmVybVByb3ZpZGVyIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9wcm92aWRlclwiO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvcmVzb3VyY2UtZ3JvdXBcIjtcbmltcG9ydCB7IFJvbGVBc3NpZ25tZW50IH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9yb2xlLWFzc2lnbm1lbnRcIjtcbmltcG9ydCB7IFJvbGVEZWZpbml0aW9uIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9yb2xlLWRlZmluaXRpb25cIjtcbmltcG9ydCB7IFVzZXJBc3NpZ25lZElkZW50aXR5IH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi91c2VyLWFzc2lnbmVkLWlkZW50aXR5XCI7XG5pbXBvcnQgeyBSYW5kb21Qcm92aWRlciB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItcmFuZG9tL2xpYi9wcm92aWRlclwiO1xuaW1wb3J0IHsgU3RyaW5nUmVzb3VyY2UgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLXJhbmRvbS9saWIvc3RyaW5nLXJlc291cmNlXCI7XG5pbXBvcnQgeyBGbiwgVGVycmFmb3JtVmFyaWFibGUgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBEYXRhQXphcGlSZXNvdXJjZUFjdGlvbiB9IGZyb20gXCIuLi8uZ2VuL3Byb3ZpZGVycy9hemFwaS9kYXRhLWF6YXBpLXJlc291cmNlLWFjdGlvblwiO1xuaW1wb3J0IHsgQXphcGlQcm92aWRlciB9IGZyb20gXCIuLi8uZ2VuL3Byb3ZpZGVycy9hemFwaS9wcm92aWRlclwiO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tIFwiLi4vLmdlbi9wcm92aWRlcnMvYXphcGkvcmVzb3VyY2VcIjtcbmltcG9ydCB7IGNvbW1vblZhcmlhYmxlcyB9IGZyb20gXCIuL3ZhcmlhYmxlc1wiO1xuXG5leHBvcnQgY2xhc3MgQXp1cmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXHRjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG5cdFx0c3VwZXIoc2NvcGUsIGlkKTtcblxuXHRcdG5ldyBBenVyZXJtUHJvdmlkZXIodGhpcywgXCJhenVyZXJtXCIsIHtcblx0XHRcdGZlYXR1cmVzOiBbe31dLFxuXHRcdH0pO1xuXG5cdFx0bmV3IEF6YXBpUHJvdmlkZXIodGhpcywgXCJhemFwaVwiLCB7fSk7XG5cblx0XHRuZXcgUmFuZG9tUHJvdmlkZXIodGhpcywgXCJyYW5kb21cIik7XG5cblx0XHRjb25zdCBzdWIgPSBuZXcgRGF0YUF6dXJlcm1TdWJzY3JpcHRpb24odGhpcywgXCJzdWJcIiwge30pO1xuXG5cdFx0Y29uc3QgeyBwYXQsIGdpdGh1YkNvbmZpZ1VybCB9ID0gY29tbW9uVmFyaWFibGVzKHRoaXMpO1xuXG5cdFx0Y29uc3QgbG9jYXRpb24gPSBuZXcgVGVycmFmb3JtVmFyaWFibGUodGhpcywgXCJsb2NhdGlvblwiLCB7XG5cdFx0XHRkZWZhdWx0OiBcIndlc3RldXJvcGVcIixcblx0XHRcdGRlc2NyaXB0aW9uOiBcIkxvY2F0aW9uIHdoZXJlIHRvIHByb3Zpc2lvbiByZXNvdXJjZXMgdG9cIixcblx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRzZW5zaXRpdmU6IGZhbHNlLFxuXHRcdFx0bnVsbGFibGU6IGZhbHNlLFxuXHRcdH0pLnZhbHVlO1xuXG5cdFx0Y29uc3QgcmcgPSBuZXcgUmVzb3VyY2VHcm91cCh0aGlzLCBcInJnXCIsIHtcblx0XHRcdGxvY2F0aW9uLFxuXHRcdFx0bmFtZTogXCJnaGEtcnVubmVyLXJnXCIsXG5cdFx0XHRsaWZlY3ljbGU6IHtcblx0XHRcdFx0aWdub3JlQ2hhbmdlczogW1widGFnc1wiXSxcblx0XHRcdH0sXG5cdFx0fSk7XG5cblx0XHRjb25zdCByYW5kb20gPSBuZXcgU3RyaW5nUmVzb3VyY2UodGhpcywgXCJyYW5kb21TdWZmaXhcIiwge1xuXHRcdFx0bGVuZ3RoOiA2LFxuXHRcdFx0c3BlY2lhbDogZmFsc2UsXG5cdFx0XHR1cHBlcjogZmFsc2UsXG5cdFx0fSk7XG5cblx0XHRjb25zdCBhY3IgPSBuZXcgQ29udGFpbmVyUmVnaXN0cnkodGhpcywgXCJhY3JcIiwge1xuXHRcdFx0bG9jYXRpb24sXG5cdFx0XHRuYW1lOiBgcnVubmVyYWNyJHtyYW5kb20ucmVzdWx0fWAsXG5cdFx0XHRyZXNvdXJjZUdyb3VwTmFtZTogcmcubmFtZSxcblx0XHRcdHNrdTogXCJCYXNpY1wiLFxuXHRcdFx0bGlmZWN5Y2xlOiB7XG5cdFx0XHRcdGlnbm9yZUNoYW5nZXM6IFtcInRhZ3NcIl0sXG5cdFx0XHR9LFxuXHRcdH0pO1xuXG5cdFx0Ly8gdXNlIGNhY2hpbmcgZm9yIGltYWdlc1xuXHRcdGNvbnN0IHJ1bm5lckNhY2hlID0gbmV3IFJlc291cmNlKHRoaXMsIFwicnVubmVyQ2FjaGVcIiwge1xuXHRcdFx0dHlwZTogXCJNaWNyb3NvZnQuQ29udGFpbmVyUmVnaXN0cnkvcmVnaXN0cmllcy9jYWNoZVJ1bGVzQDIwMjMtMDEtMDEtcHJldmlld1wiLFxuXHRcdFx0cGFyZW50SWQ6IGFjci5pZCxcblx0XHRcdG5hbWU6IFwicm9vdC1ydW5uZXItY2FjaGVcIixcblx0XHRcdGJvZHk6IHtcblx0XHRcdFx0cHJvcGVydGllczoge1xuXHRcdFx0XHRcdHNvdXJjZVJlcG9zaXRvcnk6IFwiZ2hjci5pby9oaS1maS9yb290LWFjdGlvbnMtcnVubmVyXCIsXG5cdFx0XHRcdFx0dGFyZ2V0UmVwb3NpdG9yeTogXCJyb290LWFjdGlvbnMtcnVubmVyXCIsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgYXV0b3NjYWxlckNhY2hlID0gbmV3IFJlc291cmNlKHRoaXMsIFwiYXV0b3NjYWxlckNhY2hlXCIsIHtcblx0XHRcdHR5cGU6IFwiTWljcm9zb2Z0LkNvbnRhaW5lclJlZ2lzdHJ5L3JlZ2lzdHJpZXMvY2FjaGVSdWxlc0AyMDIzLTAxLTAxLXByZXZpZXdcIixcblx0XHRcdHBhcmVudElkOiBhY3IuaWQsXG5cdFx0XHRuYW1lOiBcImF1dG9zY2FsZXItY2FjaGVcIixcblx0XHRcdGJvZHk6IHtcblx0XHRcdFx0cHJvcGVydGllczoge1xuXHRcdFx0XHRcdHNvdXJjZVJlcG9zaXRvcnk6IFwiZ2hjci5pby9oaS1maS9naGEtcnVubmVycy1vbi1tYW5hZ2VkLWVudlwiLFxuXHRcdFx0XHRcdHRhcmdldFJlcG9zaXRvcnk6IFwiYXV0b3NjYWxlclwiLFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHR9KTtcblxuXHRcdGNvbnN0IGlkZW50aXR5ID0gbmV3IFVzZXJBc3NpZ25lZElkZW50aXR5KHRoaXMsIFwiaWRlbnRpdHlcIiwge1xuXHRcdFx0bG9jYXRpb24sXG5cdFx0XHRuYW1lOiBcImFjYS1hY3ItYWNjZXNzXCIsXG5cdFx0XHRyZXNvdXJjZUdyb3VwTmFtZTogcmcubmFtZSxcblx0XHRcdGxpZmVjeWNsZToge1xuXHRcdFx0XHRpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCJdLFxuXHRcdFx0fSxcblx0XHR9KTtcblxuXHRcdG5ldyBSb2xlQXNzaWdubWVudCh0aGlzLCBcInJvbGVBc3NpZ25tZW50XCIsIHtcblx0XHRcdHByaW5jaXBhbElkOiBpZGVudGl0eS5wcmluY2lwYWxJZCxcblx0XHRcdHNjb3BlOiBhY3IuaWQsXG5cdFx0XHRyb2xlRGVmaW5pdGlvbk5hbWU6IFwiQWNyUHVsbFwiLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgbG9nID0gbmV3IExvZ0FuYWx5dGljc1dvcmtzcGFjZSh0aGlzLCBcImxvZ1wiLCB7XG5cdFx0XHRsb2NhdGlvbixcblx0XHRcdG5hbWU6IFwiZ2hhLWV4YW1wbGUtbG9nc1wiLFxuXHRcdFx0cmVzb3VyY2VHcm91cE5hbWU6IHJnLm5hbWUsXG5cdFx0XHRsaWZlY3ljbGU6IHtcblx0XHRcdFx0aWdub3JlQ2hhbmdlczogW1widGFnc1wiXSxcblx0XHRcdH0sXG5cdFx0fSk7XG5cblx0XHRjb25zdCBzdG9yYWdlQWNjb3VudCA9IG5ldyBSZXNvdXJjZSh0aGlzLCBcInN0b3JhZ2VBY2NvdW50XCIsIHtcblx0XHRcdHR5cGU6IFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzQDIwMjMtMDEtMDFcIixcblx0XHRcdHBhcmVudElkOiByZy5pZCxcblx0XHRcdGxvY2F0aW9uLFxuXHRcdFx0bmFtZTogYGdoYXN0b3JhZ2VhY2NvdW50JHtyYW5kb20ucmVzdWx0fWAsXG5cdFx0XHRib2R5OiB7XG5cdFx0XHRcdHByb3BlcnRpZXM6IHtcblx0XHRcdFx0XHRsYXJnZUZpbGVTaGFyZXNTdGF0ZTogXCJFbmFibGVkXCIsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNrdToge1xuXHRcdFx0XHRcdG5hbWU6IFwiU3RhbmRhcmRfTFJTXCIsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGtpbmQ6IFwiU3RvcmFnZVYyXCIsXG5cdFx0XHR9LFxuXHRcdFx0bGlmZWN5Y2xlOiB7XG5cdFx0XHRcdGlnbm9yZUNoYW5nZXM6IFtcInRhZ3NcIl0sXG5cdFx0XHR9LFxuXHRcdFx0cmVzcG9uc2VFeHBvcnRWYWx1ZXM6IFtdLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3Qgc3RvcmFnZVNoYXJlID0gbmV3IFJlc291cmNlKHRoaXMsIFwic3RvcmFnZVNoYXJlXCIsIHtcblx0XHRcdHR5cGU6IFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2ZpbGVTZXJ2aWNlcy9zaGFyZXNAMjAyMy0wMS0wMVwiLFxuXHRcdFx0bmFtZTogXCJnaGFleGFtcGxlc2hhcmVcIixcblx0XHRcdHBhcmVudElkOiBgJHtzdG9yYWdlQWNjb3VudC5pZH0vZmlsZVNlcnZpY2VzL2RlZmF1bHRgLFxuXHRcdFx0Ym9keToge1xuXHRcdFx0XHRwcm9wZXJ0aWVzOiB7XG5cdFx0XHRcdFx0ZW5hYmxlZFByb3RvY29sczogXCJTTUJcIixcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0fSk7XG5cblx0XHRjb25zdCBleHRlcm5hbHNTaGFyZSA9IG5ldyBSZXNvdXJjZSh0aGlzLCBcImV4dGVybmFsc1NoYXJlXCIsIHtcblx0XHRcdHR5cGU6IFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2ZpbGVTZXJ2aWNlcy9zaGFyZXNAMjAyMy0wMS0wMVwiLFxuXHRcdFx0bmFtZTogXCJnaGFleHRlcm5hbHNzaGFyZVwiLFxuXHRcdFx0cGFyZW50SWQ6IGAke3N0b3JhZ2VBY2NvdW50LmlkfS9maWxlU2VydmljZXMvZGVmYXVsdGAsXG5cdFx0XHRib2R5OiB7XG5cdFx0XHRcdHByb3BlcnRpZXM6IHtcblx0XHRcdFx0XHRlbmFibGVkUHJvdG9jb2xzOiBcIlNNQlwiLFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHR9KTtcblxuXHRcdGNvbnN0IGVudmlyb25tZW50ID0gbmV3IFJlc291cmNlKHRoaXMsIFwiYWNhZW52XCIsIHtcblx0XHRcdHR5cGU6IFwiTWljcm9zb2Z0LkFwcC9tYW5hZ2VkRW52aXJvbm1lbnRzQDIwMjQtMDMtMDFcIixcblx0XHRcdHBhcmVudElkOiByZy5pZCxcblx0XHRcdGxvY2F0aW9uLFxuXHRcdFx0bmFtZTogXCJnaGEtcnVubmVyLWVudmlyb25tZW50XCIsXG5cdFx0XHRib2R5OiB7XG5cdFx0XHRcdHByb3BlcnRpZXM6IHtcblx0XHRcdFx0XHRhcHBMb2dzQ29uZmlndXJhdGlvbjoge1xuXHRcdFx0XHRcdFx0ZGVzdGluYXRpb246IFwibG9nLWFuYWx5dGljc1wiLFxuXHRcdFx0XHRcdFx0bG9nQW5hbHl0aWNzQ29uZmlndXJhdGlvbjoge1xuXHRcdFx0XHRcdFx0XHRjdXN0b21lcklkOiBsb2cud29ya3NwYWNlSWQsXG5cdFx0XHRcdFx0XHRcdHNoYXJlZEtleTogbG9nLnByaW1hcnlTaGFyZWRLZXksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0aW5mcmFzdHJ1Y3R1cmVSZXNvdXJjZUdyb3VwOiBcIm1hbmFnZWQtYWNhLXJnXCIsXG5cdFx0XHRcdFx0d29ya2xvYWRQcm9maWxlczogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiBcIkNvbnN1bXB0aW9uXCIsXG5cdFx0XHRcdFx0XHRcdHdvcmtsb2FkUHJvZmlsZVR5cGU6IFwiQ29uc3VtcHRpb25cIixcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHRsaWZlY3ljbGU6IHtcblx0XHRcdFx0aWdub3JlQ2hhbmdlczogW1widGFnc1wiXSxcblx0XHRcdH0sXG5cdFx0fSk7XG5cblx0XHRjb25zdCBzdG9yYWdlQWNjZXNzS2V5ID0gbmV3IERhdGFBemFwaVJlc291cmNlQWN0aW9uKFxuXHRcdFx0dGhpcyxcblx0XHRcdFwic3RvcmFnZUFjY2Vzc0tleXNcIixcblx0XHRcdHtcblx0XHRcdFx0dHlwZTogXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHNAMjAyMy0wMS0wMVwiLFxuXHRcdFx0XHRhY3Rpb246IFwibGlzdEtleXNcIixcblx0XHRcdFx0cmVzb3VyY2VJZDogc3RvcmFnZUFjY291bnQuaWQsXG5cdFx0XHRcdHJlc3BvbnNlRXhwb3J0VmFsdWVzOiBbXCIqXCJdLFxuXHRcdFx0XHRkZXBlbmRzT246IFtzdG9yYWdlQWNjb3VudF0sXG5cdFx0XHR9LFxuXHRcdCk7XG5cblx0XHQvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tY2RrL2lzc3Vlcy8xNjQxXG5cdFx0Ly8gRm9yIG9sZGVyIEF6YXBpIHdheSB0byBnZXQga2V5IHdvdWxkIGJlIHRoaXMgd2hlbiAoZGVmYXVsdCkgZGF0YSBvdXRwdXQgd2FzIGpzb24uIFdpdG4gMi4wLjAtYmV0YSBkZWZhdWx0IHdhcyBjaGFuZ2VkIHRvIEhDTFxuXHRcdC8vIGNvbnN0IGFjY2Vzc0tleSA9IEZuLmxvb2t1cChGbi5lbGVtZW50KEZuLmxvb2t1cChGbi5qc29uZGVjb2RlKHN0b3JhZ2VBY2Nlc3NLZXkub3V0cHV0IGFzIGFueSksICdrZXlzJyksIDApLCAndmFsdWUnKVxuXG5cdFx0Y29uc3QgYWNjZXNzS2V5ID0gRm4ubG9va3VwKFxuXHRcdFx0Rm4uZWxlbWVudChGbi5lbGVtZW50KHN0b3JhZ2VBY2Nlc3NLZXkub3V0cHV0Lmxvb2t1cChcIjBcIiksIDApLCAwKSxcblx0XHRcdFwidmFsdWVcIixcblx0XHQpO1xuXG5cdFx0Y29uc3QgYWNhRW52U3RvcmFnZSA9IG5ldyBDb250YWluZXJBcHBFbnZpcm9ubWVudFN0b3JhZ2UoXG5cdFx0XHR0aGlzLFxuXHRcdFx0XCJhY2FlbnZzdG9yYWdlXCIsXG5cdFx0XHR7XG5cdFx0XHRcdG5hbWU6IFwiZ2hhcnVubmVyam9ic3RvcmFnZVwiLFxuXHRcdFx0XHRhY2Nlc3NLZXksXG5cdFx0XHRcdGFjY2Vzc01vZGU6IFwiUmVhZFdyaXRlXCIsXG5cdFx0XHRcdGFjY291bnROYW1lOiBzdG9yYWdlQWNjb3VudC5uYW1lLFxuXHRcdFx0XHRjb250YWluZXJBcHBFbnZpcm9ubWVudElkOiBlbnZpcm9ubWVudC5pZCxcblx0XHRcdFx0c2hhcmVOYW1lOiBzdG9yYWdlU2hhcmUubmFtZSxcblx0XHRcdFx0ZGVwZW5kc09uOiBbXG5cdFx0XHRcdFx0Ly8gTmFtZSBkb2Vzbid0IGNyZWF0ZSBkZXBlbmRzT24gcmVxdWlyZW1lbnQsIHNvIGFkZGluZyB0aGF0IGV4cGxpY2l0bHlcblx0XHRcdFx0XHRzdG9yYWdlU2hhcmUsXG5cdFx0XHRcdF0sXG5cdFx0XHR9LFxuXHRcdCk7XG5cblx0XHRjb25zdCBhY2FFeHRlcm5hbFN0b3JhZ2UgPSBuZXcgQ29udGFpbmVyQXBwRW52aXJvbm1lbnRTdG9yYWdlKFxuXHRcdFx0dGhpcyxcblx0XHRcdFwiYWNhZXh0ZXJuYWxzdG9yYWdlXCIsXG5cdFx0XHR7XG5cdFx0XHRcdG5hbWU6IFwiZ2hhcnVubmVyZXh0ZXJuYWxzdG9yYWdlXCIsXG5cdFx0XHRcdGFjY2Vzc0tleSxcblx0XHRcdFx0YWNjZXNzTW9kZTogXCJSZWFkV3JpdGVcIixcblx0XHRcdFx0YWNjb3VudE5hbWU6IHN0b3JhZ2VBY2NvdW50Lm5hbWUsXG5cdFx0XHRcdGNvbnRhaW5lckFwcEVudmlyb25tZW50SWQ6IGVudmlyb25tZW50LmlkLFxuXHRcdFx0XHRzaGFyZU5hbWU6IGV4dGVybmFsc1NoYXJlLm5hbWUsXG5cdFx0XHRcdGRlcGVuZHNPbjogW1xuXHRcdFx0XHRcdC8vIE5hbWUgZG9lc24ndCBjcmVhdGUgZGVwZW5kc09uIHJlcXVpcmVtZW50LCBzbyBhZGRpbmcgdGhhdCBleHBsaWNpdGx5XG5cdFx0XHRcdFx0ZXh0ZXJuYWxzU2hhcmUsXG5cdFx0XHRcdF0sXG5cdFx0XHR9LFxuXHRcdCk7XG5cblx0XHRjb25zdCBydW5uZXJWb2x1bWVOYW1lID0gXCJ3b3JrXCI7XG5cdFx0Y29uc3QgZXh0ZXJuYWxWb2x1bWVOYW1lID0gXCJleHRlcm5hbHNcIjtcblxuXHRcdC8qKlxuXHRcdCAqIEBzZWUgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2F6dXJlL3RlbXBsYXRlcy9taWNyb3NvZnQuYXBwL2pvYnM/cGl2b3RzPWRlcGxveW1lbnQtbGFuZ3VhZ2UtdGVycmFmb3JtXG5cdFx0ICovXG5cdFx0Y29uc3QgZ2hhUnVubmVySm9iID0gbmV3IFJlc291cmNlKHRoaXMsIFwiZ2hhUnVubmVySm9iXCIsIHtcblx0XHRcdHR5cGU6IFwiTWljcm9zb2Z0LkFwcC9qb2JzQDIwMjQtMDItMDItcHJldmlld1wiLFxuXHRcdFx0aWRlbnRpdHk6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHR5cGU6IFwiVXNlckFzc2lnbmVkXCIsXG5cdFx0XHRcdFx0aWRlbnRpdHlJZHM6IFtpZGVudGl0eS5pZF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdFx0bmFtZTogXCJnaGEtcnVubmVyLWpvYi0wMVwiLFxuXHRcdFx0cGFyZW50SWQ6IHJnLmlkLFxuXHRcdFx0bG9jYXRpb24sXG5cdFx0XHRib2R5OiB7XG5cdFx0XHRcdHByb3BlcnRpZXM6IHtcblx0XHRcdFx0XHRjb25maWd1cmF0aW9uOiB7XG5cdFx0XHRcdFx0XHRtYW51YWxUcmlnZ2VyQ29uZmlnOiB7XG5cdFx0XHRcdFx0XHRcdHBhcmFsbGVsaXNtOiAxLFxuXHRcdFx0XHRcdFx0XHRyZXBsaWNhQ29tcGxldGlvbkNvdW50OiAxLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHRyaWdnZXJUeXBlOiBcIk1hbnVhbFwiLFxuXHRcdFx0XHRcdFx0cmVwbGljYVRpbWVvdXQ6IDEyMDAsXG5cdFx0XHRcdFx0XHRyZWdpc3RyaWVzOiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRpZGVudGl0eTogaWRlbnRpdHkuaWQsXG5cdFx0XHRcdFx0XHRcdFx0c2VydmVyOiBhY3IubG9naW5TZXJ2ZXIsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZW52aXJvbm1lbnRJZDogZW52aXJvbm1lbnQuaWQsXG5cdFx0XHRcdFx0dGVtcGxhdGU6IHtcblx0XHRcdFx0XHRcdGNvbnRhaW5lcnM6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHJlc291cmNlczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3B1OiAxLFxuXHRcdFx0XHRcdFx0XHRcdFx0bWVtb3J5OiBcIjJHaVwiLFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0Ly8gSGF2ZSB0byB1c2UgY3VzdG9tIGltYWdlIGFzIHdlIHdhbnQgdG8gcnVuIHNlcnZpY2UgYXMgcm9vdCB0byBiZSBhYmxlIHRvIGluc3RhbGwgcGFja2FnZXNcblx0XHRcdFx0XHRcdFx0XHRpbWFnZTogYCR7YWNyLmxvZ2luU2VydmVyfS9yb290LWFjdGlvbnMtcnVubmVyOmxhdGVzdGAsXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJtYWluXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y29tbWFuZDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0XCIvYmluL3NoXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcIi1jXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcImV4cG9ydCBFWEVDSUQ9JChjYXQgL3Byb2Mvc3lzL2tlcm5lbC9yYW5kb20vdXVpZCkgJiYgbWtkaXIgLXAgL3RtcC9fd29yay8kRVhFQ0lEICYmIGxuIC1zIC90bXAvX3dvcmsvJEVYRUNJRCBfd29yayAmJiAvaG9tZS9ydW5uZXIvcnVuLnNoIDsgcm0gLXIgL3RtcC9fd29yay8kRVhFQ0lEXCIsXG5cdFx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0XHR2b2x1bWVNb3VudHM6IFtcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bW91bnRQYXRoOiBcIi90bXAvX3dvcmtcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0dm9sdW1lTmFtZTogcnVubmVyVm9sdW1lTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG1vdW50UGF0aDogXCIvdG1wL2V4dGVybmFsc1wiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2b2x1bWVOYW1lOiBleHRlcm5hbFZvbHVtZU5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0XHRcdFx0ZW52OiBbXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2F6dXJlLWNvbnRhaW5lci1hcHBzL2lzc3Vlcy81MDIjaXNzdWVjb21tZW50LTEzNDAyMjU0Mzhcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJBUFBTRVRUSU5HX1dFQlNJVEVfU0lURV9OQU1FXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBcImlkZW50aXR5LXdvcmthcm91bmRcIixcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2F6dXJlLWNvbnRhaW5lci1hcHBzL2lzc3Vlcy80NDIjaXNzdWVjb21tZW50LTE2NjU2MjEwMzFcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJBWlVSRV9DTElFTlRfSURcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGlkZW50aXR5LmNsaWVudElkLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJSR19OQU1FXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiByZy5uYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJMT0dfSURcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGxvZy53b3Jrc3BhY2VJZCxcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiU1RPUkFHRV9OQU1FXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhY2FFbnZTdG9yYWdlLm5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiBcIkVYVEVSTkFMX1NUT1JBR0VfTkFNRVwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYWNhRXh0ZXJuYWxTdG9yYWdlLm5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiBcIlNVQlNDUklQVElPTl9JRFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogc3ViLnN1YnNjcmlwdGlvbklkLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJBQ0FfRU5WSVJPTk1FTlRfSURcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGVudmlyb25tZW50LmlkLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdHZvbHVtZXM6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6IHJ1bm5lclZvbHVtZU5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0c3RvcmFnZU5hbWU6IGFjYUVudlN0b3JhZ2UubmFtZSxcblx0XHRcdFx0XHRcdFx0XHRzdG9yYWdlVHlwZTogXCJBenVyZUZpbGVcIixcblx0XHRcdFx0XHRcdFx0XHRtb3VudE9wdGlvbnM6IFwibWZzeW1saW5rc1wiLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogZXh0ZXJuYWxWb2x1bWVOYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHN0b3JhZ2VOYW1lOiBhY2FFeHRlcm5hbFN0b3JhZ2UubmFtZSxcblx0XHRcdFx0XHRcdFx0XHRzdG9yYWdlVHlwZTogXCJBenVyZUZpbGVcIixcblx0XHRcdFx0XHRcdFx0XHRtb3VudE9wdGlvbnM6IFwibWZzeW1saW5rc1wiLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHRcdGRlcGVuZHNPbjogW3J1bm5lckNhY2hlXSxcblx0XHRcdGxpZmVjeWNsZToge1xuXHRcdFx0XHRpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCJdLFxuXHRcdFx0fSxcblx0XHR9KTtcblxuXHRcdGNvbnN0IGF1dG9zY2FsZXJBcHAgPSBuZXcgQ29udGFpbmVyQXBwKHRoaXMsIFwiYXV0b3NjYWxlckFwcFwiLCB7XG5cdFx0XHRjb250YWluZXJBcHBFbnZpcm9ubWVudElkOiBlbnZpcm9ubWVudC5pZCxcblx0XHRcdG5hbWU6IFwiYXV0b3NjYWxlci1hcHAtMDFcIixcblx0XHRcdHJlc291cmNlR3JvdXBOYW1lOiByZy5uYW1lLFxuXHRcdFx0cmV2aXNpb25Nb2RlOiBcIlNpbmdsZVwiLFxuXHRcdFx0aWRlbnRpdHk6IHtcblx0XHRcdFx0dHlwZTogXCJTeXN0ZW1Bc3NpZ25lZCwgVXNlckFzc2lnbmVkXCIsXG5cdFx0XHRcdGlkZW50aXR5SWRzOiBbaWRlbnRpdHkuaWRdLFxuXHRcdFx0fSxcblx0XHRcdHNlY3JldDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogXCJwYXRcIixcblx0XHRcdFx0XHR2YWx1ZTogcGF0LnZhbHVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHRcdHJlZ2lzdHJ5OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRpZGVudGl0eTogaWRlbnRpdHkuaWQsXG5cdFx0XHRcdFx0c2VydmVyOiBhY3IubG9naW5TZXJ2ZXIsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdFx0dGVtcGxhdGU6IHtcblx0XHRcdFx0Y29udGFpbmVyOiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Ly8gQ1BVIGFuZCBNZW1vcnkgY2FuIGJlIGxvd2VyIHdpdGggd29ya2xvYWQgcHJvZmlsZVxuXHRcdFx0XHRcdFx0Y3B1OiAwLjI1LFxuXHRcdFx0XHRcdFx0bWVtb3J5OiBcIjAuNUdpXCIsXG5cdFx0XHRcdFx0XHRpbWFnZTogYCR7YWNyLmxvZ2luU2VydmVyfS9hdXRvc2NhbGVyOnRlc3RgLFxuXHRcdFx0XHRcdFx0bmFtZTogXCJhdXRvc2NhbGVyXCIsXG5cdFx0XHRcdFx0XHRlbnY6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiUEFUXCIsXG5cdFx0XHRcdFx0XHRcdFx0c2VjcmV0TmFtZTogXCJwYXRcIixcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiR0lUSFVCX0NPTkZJR19VUkxcIixcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZ2l0aHViQ29uZmlnVXJsLnZhbHVlLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJBWlVSRV9URU5BTlRfSURcIixcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogc3ViLnRlbmFudElkLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJTVUJTQ1JJUFRJT05fSURcIixcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogc3ViLnN1YnNjcmlwdGlvbklkLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJSRVNPVVJDRV9HUk9VUF9OQU1FXCIsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHJnLm5hbWUsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiBcIkpPQl9OQU1FXCIsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGdoYVJ1bm5lckpvYi5uYW1lLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJTQ0FMRV9TRVRfTkFNRVwiLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBcImFjYS1ydW5uZXItc2V0XCIsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9LFxuXHRcdFx0ZGVwZW5kc09uOiBbYXV0b3NjYWxlckNhY2hlXSxcblx0XHRcdGxpZmVjeWNsZToge1xuXHRcdFx0XHRpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCIsIFwid29ya2xvYWRfcHJvZmlsZV9uYW1lXCJdLFxuXHRcdFx0fSxcblx0XHR9KTtcblxuXHRcdC8qKlxuXHRcdCAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9henVyZS1jb250YWluZXItYXBwcy9pc3N1ZXMvMTAyNFxuXHRcdCAqL1xuXHRcdGNvbnN0IHJvbGUgPSBuZXcgUm9sZURlZmluaXRpb24odGhpcywgXCJqb2JSb2xlXCIsIHtcblx0XHRcdG5hbWU6IGBnaGEtZXhhbXBsZS1yZXZpc2lvbi1zdGFydC1yb2xlLSR7cmFuZG9tLnJlc3VsdH1gLFxuXHRcdFx0c2NvcGU6IHN1Yi5pZCxcblx0XHRcdHBlcm1pc3Npb25zOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRhY3Rpb25zOiBbXG5cdFx0XHRcdFx0XHRcIm1pY3Jvc29mdC5hcHAvam9icy9zdGFydC9hY3Rpb25cIixcblx0XHRcdFx0XHRcdFwibWljcm9zb2Z0LmFwcC9qb2JzL3N0b3AvYWN0aW9uXCIsXG5cdFx0XHRcdFx0XHRcIm1pY3Jvc29mdC5hcHAvam9icy9yZWFkXCIsXG5cdFx0XHRcdFx0XHRcIm1pY3Jvc29mdC5hcHAvam9icy9leGVjdXRpb25zL3JlYWRcIixcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9KTtcblxuXHRcdGNvbnN0IGpvYkNyZWF0aW9uUm9sZSA9IG5ldyBSb2xlRGVmaW5pdGlvbih0aGlzLCBcImpvYkNyZWF0aW9uUm9sZVwiLCB7XG5cdFx0XHRuYW1lOiBgZ2hhLWV4YW1wbGUtcmV2aXNpb24tY3JlYXRlLXJvbGUtJHtyYW5kb20ucmVzdWx0fWAsXG5cdFx0XHRzY29wZTogc3ViLmlkLFxuXHRcdFx0cGVybWlzc2lvbnM6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGFjdGlvbnM6IFtcblx0XHRcdFx0XHRcdFwibWljcm9zb2Z0LmFwcC9qb2JzL3N0YXJ0L2FjdGlvblwiLFxuXHRcdFx0XHRcdFx0XCJtaWNyb3NvZnQuYXBwL2pvYnMvc3RvcC9hY3Rpb25cIixcblx0XHRcdFx0XHRcdFwibWljcm9zb2Z0LmFwcC9qb2JzL3JlYWRcIixcblx0XHRcdFx0XHRcdFwibWljcm9zb2Z0LmFwcC9qb2JzL3dyaXRlXCIsXG5cdFx0XHRcdFx0XHRcIm1pY3Jvc29mdC5hcHAvam9icy9leGVjdXRpb25zL3JlYWRcIixcblx0XHRcdFx0XHRcdFwibWljcm9zb2Z0LmFwcC9tYW5hZ2VkRW52aXJvbm1lbnRzL2pvaW4vYWN0aW9uXCIsXG5cdFx0XHRcdFx0XHRcIm1pY3Jvc29mdC5hcHAvam9icy9kZWxldGVcIiwgLy8gY2xlYW51cCBmb3Igam9ic1xuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXG5cdFx0Ly8gQWxsb3cgYXV0b3NjYWxlciB0byBjcmVhdGUgbmV3IHJldmlzaW9uIG9mIGFwcFxuXHRcdG5ldyBSb2xlQXNzaWdubWVudCh0aGlzLCBcInNjYWxlSm9iUm9sZUFzc2lnbm1lbnRcIiwge1xuXHRcdFx0cHJpbmNpcGFsSWQ6IGF1dG9zY2FsZXJBcHAuaWRlbnRpdHkucHJpbmNpcGFsSWQsXG5cdFx0XHRzY29wZTogZ2hhUnVubmVySm9iLmlkLFxuXHRcdFx0cm9sZURlZmluaXRpb25JZDogcm9sZS5yb2xlRGVmaW5pdGlvblJlc291cmNlSWQsXG5cdFx0fSk7XG5cblx0XHQvLyBBbGxvdyBydW5uZXIgdG8gc3RhcnQgdGhlIGpvYi4gQXMgZWFjaCBvbmUgY3JlYXRlZCBuZXcgam9iLCBoYXZlIHRvIGdpdmUgdG8gUkcgbGV2ZWwuXG5cdFx0bmV3IFJvbGVBc3NpZ25tZW50KHRoaXMsIFwiYWN0aW9uQ29udGFpbmVyU3RhcnRSb2xlQXNzaWdubWVudFwiLCB7XG5cdFx0XHRwcmluY2lwYWxJZDogaWRlbnRpdHkucHJpbmNpcGFsSWQsXG5cdFx0XHRzY29wZTogcmcuaWQsXG5cdFx0XHRyb2xlRGVmaW5pdGlvbklkOiBqb2JDcmVhdGlvblJvbGUucm9sZURlZmluaXRpb25SZXNvdXJjZUlkLFxuXHRcdH0pO1xuXG5cdFx0bmV3IFJvbGVBc3NpZ25tZW50KHRoaXMsIFwiaW1hZ2VQdXNoUm9sZUFzc2lnbm1lbnRcIiwge1xuXHRcdFx0cHJpbmNpcGFsSWQ6IGlkZW50aXR5LnByaW5jaXBhbElkLFxuXHRcdFx0c2NvcGU6IGFjci5pZCxcblx0XHRcdHJvbGVEZWZpbml0aW9uTmFtZTogXCJBY3JQdXNoXCIsXG5cdFx0fSk7XG5cblx0XHRuZXcgUm9sZUFzc2lnbm1lbnQodGhpcywgXCJqb2JMb2dSZWFkQXNzaWdubWVudFwiLCB7XG5cdFx0XHRwcmluY2lwYWxJZDogaWRlbnRpdHkucHJpbmNpcGFsSWQsXG5cdFx0XHRzY29wZTogbG9nLmlkLFxuXHRcdFx0cm9sZURlZmluaXRpb25OYW1lOiBcIkxvZyBBbmFseXRpY3MgUmVhZGVyXCIsXG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==