terraform-cdk-serverless-github-actions-runner-controller 0.0.2 → 0.0.4
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/.jsii +138 -5
- package/API.md +74 -1
- package/biome.jsonc +66 -0
- package/lib/lib/aws.d.ts +16 -1
- package/lib/lib/aws.js +275 -280
- package/lib/lib/azure.d.ts +1 -1
- package/lib/lib/azure.js +105 -130
- package/lib/lib/gcp.d.ts +1 -1
- package/lib/lib/gcp.js +46 -48
- package/lib/lib/variables.d.ts +3 -2
- package/lib/lib/variables.js +11 -5
- package/lib/tfModules.js +40 -10
- package/modules/azure-container-apps/README.md +19 -18
- package/modules/azure-container-apps/cdk.tf.json +11 -7
- package/modules/elastic-container-service/README.md +25 -24
- package/modules/elastic-container-service/cdk.tf.json +64 -74
- package/modules/google-cloud-run/README.md +18 -17
- package/modules/google-cloud-run/cdk.tf.json +10 -6
- package/package.json +17 -70
- package/renovate.json5 +42 -0
- package/vitest.config.ts +28 -0
- package/lib/__tests__/index-test.d.ts +0 -1
- package/lib/__tests__/index-test.js +0 -26
- package/main.tf +0 -26
- package/scripts/collect-variables.ts +0 -188
- package/variables.tf +0 -27
package/lib/lib/azure.js
CHANGED
|
@@ -3,34 +3,32 @@ var _a;
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.Azure = void 0;
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const container_app_1 = require("@cdktf/provider-azurerm/lib/container-app");
|
|
7
|
+
const container_app_environment_storage_1 = require("@cdktf/provider-azurerm/lib/container-app-environment-storage");
|
|
8
|
+
const container_registry_1 = require("@cdktf/provider-azurerm/lib/container-registry");
|
|
9
|
+
const data_azurerm_subscription_1 = require("@cdktf/provider-azurerm/lib/data-azurerm-subscription");
|
|
10
|
+
const log_analytics_workspace_1 = require("@cdktf/provider-azurerm/lib/log-analytics-workspace");
|
|
6
11
|
const provider_1 = require("@cdktf/provider-azurerm/lib/provider");
|
|
7
|
-
const provider_2 = require("../.gen/providers/azapi/provider");
|
|
8
|
-
const resource_1 = require("../.gen/providers/azapi/resource");
|
|
9
|
-
const data_azapi_resource_action_1 = require("../.gen/providers/azapi/data-azapi-resource-action");
|
|
10
|
-
const cdktf_1 = require("cdktf");
|
|
11
|
-
const constructs_1 = require("constructs");
|
|
12
12
|
const resource_group_1 = require("@cdktf/provider-azurerm/lib/resource-group");
|
|
13
|
-
const container_registry_1 = require("@cdktf/provider-azurerm/lib/container-registry");
|
|
14
|
-
const user_assigned_identity_1 = require("@cdktf/provider-azurerm/lib/user-assigned-identity");
|
|
15
13
|
const role_assignment_1 = require("@cdktf/provider-azurerm/lib/role-assignment");
|
|
16
|
-
const log_analytics_workspace_1 = require("@cdktf/provider-azurerm/lib/log-analytics-workspace");
|
|
17
14
|
const role_definition_1 = require("@cdktf/provider-azurerm/lib/role-definition");
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const variables_1 = require("./variables");
|
|
21
|
-
const container_app_environment_storage_1 = require("@cdktf/provider-azurerm/lib/container-app-environment-storage");
|
|
22
|
-
const provider_3 = require("@cdktf/provider-random/lib/provider");
|
|
15
|
+
const user_assigned_identity_1 = require("@cdktf/provider-azurerm/lib/user-assigned-identity");
|
|
16
|
+
const provider_2 = require("@cdktf/provider-random/lib/provider");
|
|
23
17
|
const string_resource_1 = require("@cdktf/provider-random/lib/string-resource");
|
|
18
|
+
const cdktf_1 = require("cdktf");
|
|
19
|
+
const constructs_1 = require("constructs");
|
|
20
|
+
const data_azapi_resource_action_1 = require("../.gen/providers/azapi/data-azapi-resource-action");
|
|
21
|
+
const provider_3 = require("../.gen/providers/azapi/provider");
|
|
22
|
+
const resource_1 = require("../.gen/providers/azapi/resource");
|
|
23
|
+
const variables_1 = require("./variables");
|
|
24
24
|
class Azure extends constructs_1.Construct {
|
|
25
25
|
constructor(scope, id) {
|
|
26
26
|
super(scope, id);
|
|
27
27
|
new provider_1.AzurermProvider(this, 'azurerm', {
|
|
28
|
-
features: [
|
|
29
|
-
{}
|
|
30
|
-
]
|
|
28
|
+
features: [{}],
|
|
31
29
|
});
|
|
32
|
-
new
|
|
33
|
-
new
|
|
30
|
+
new provider_3.AzapiProvider(this, 'azapi', {});
|
|
31
|
+
new provider_2.RandomProvider(this, 'random');
|
|
34
32
|
const sub = new data_azurerm_subscription_1.DataAzurermSubscription(this, 'sub', {});
|
|
35
33
|
const { pat, githubConfigUrl } = (0, variables_1.commonVariables)(this);
|
|
36
34
|
const location = new cdktf_1.TerraformVariable(this, 'location', {
|
|
@@ -38,16 +36,14 @@ class Azure extends constructs_1.Construct {
|
|
|
38
36
|
description: 'Location where to provision resources to',
|
|
39
37
|
type: 'string',
|
|
40
38
|
sensitive: false,
|
|
41
|
-
nullable: false
|
|
39
|
+
nullable: false,
|
|
42
40
|
}).value;
|
|
43
41
|
const rg = new resource_group_1.ResourceGroup(this, 'rg', {
|
|
44
42
|
location,
|
|
45
43
|
name: 'gha-runner-rg',
|
|
46
44
|
lifecycle: {
|
|
47
|
-
ignoreChanges: [
|
|
48
|
-
|
|
49
|
-
]
|
|
50
|
-
}
|
|
45
|
+
ignoreChanges: ['tags'],
|
|
46
|
+
},
|
|
51
47
|
});
|
|
52
48
|
const random = new string_resource_1.StringResource(this, 'randomSuffix', {
|
|
53
49
|
length: 6,
|
|
@@ -60,10 +56,8 @@ class Azure extends constructs_1.Construct {
|
|
|
60
56
|
resourceGroupName: rg.name,
|
|
61
57
|
sku: 'Basic',
|
|
62
58
|
lifecycle: {
|
|
63
|
-
ignoreChanges: [
|
|
64
|
-
|
|
65
|
-
]
|
|
66
|
-
}
|
|
59
|
+
ignoreChanges: ['tags'],
|
|
60
|
+
},
|
|
67
61
|
});
|
|
68
62
|
// use caching for images
|
|
69
63
|
const runnerCache = new resource_1.Resource(this, 'runnerCache', {
|
|
@@ -73,9 +67,9 @@ class Azure extends constructs_1.Construct {
|
|
|
73
67
|
body: {
|
|
74
68
|
properties: {
|
|
75
69
|
sourceRepository: 'ghcr.io/hi-fi/root-actions-runner',
|
|
76
|
-
targetRepository: 'root-actions-runner'
|
|
77
|
-
}
|
|
78
|
-
}
|
|
70
|
+
targetRepository: 'root-actions-runner',
|
|
71
|
+
},
|
|
72
|
+
},
|
|
79
73
|
});
|
|
80
74
|
const autoscalerCache = new resource_1.Resource(this, 'autoscalerCache', {
|
|
81
75
|
type: 'Microsoft.ContainerRegistry/registries/cacheRules@2023-01-01-preview',
|
|
@@ -84,34 +78,30 @@ class Azure extends constructs_1.Construct {
|
|
|
84
78
|
body: {
|
|
85
79
|
properties: {
|
|
86
80
|
sourceRepository: 'ghcr.io/hi-fi/gha-runners-on-managed-env',
|
|
87
|
-
targetRepository: 'autoscaler'
|
|
88
|
-
}
|
|
89
|
-
}
|
|
81
|
+
targetRepository: 'autoscaler',
|
|
82
|
+
},
|
|
83
|
+
},
|
|
90
84
|
});
|
|
91
85
|
const identity = new user_assigned_identity_1.UserAssignedIdentity(this, 'identity', {
|
|
92
86
|
location,
|
|
93
87
|
name: 'aca-acr-access',
|
|
94
88
|
resourceGroupName: rg.name,
|
|
95
89
|
lifecycle: {
|
|
96
|
-
ignoreChanges: [
|
|
97
|
-
|
|
98
|
-
]
|
|
99
|
-
}
|
|
90
|
+
ignoreChanges: ['tags'],
|
|
91
|
+
},
|
|
100
92
|
});
|
|
101
93
|
new role_assignment_1.RoleAssignment(this, 'roleAssignment', {
|
|
102
94
|
principalId: identity.principalId,
|
|
103
95
|
scope: acr.id,
|
|
104
|
-
roleDefinitionName: 'AcrPull'
|
|
96
|
+
roleDefinitionName: 'AcrPull',
|
|
105
97
|
});
|
|
106
98
|
const log = new log_analytics_workspace_1.LogAnalyticsWorkspace(this, 'log', {
|
|
107
99
|
location,
|
|
108
100
|
name: 'gha-example-logs',
|
|
109
101
|
resourceGroupName: rg.name,
|
|
110
102
|
lifecycle: {
|
|
111
|
-
ignoreChanges: [
|
|
112
|
-
|
|
113
|
-
]
|
|
114
|
-
}
|
|
103
|
+
ignoreChanges: ['tags'],
|
|
104
|
+
},
|
|
115
105
|
});
|
|
116
106
|
const storageAccount = new resource_1.Resource(this, 'storageAccount', {
|
|
117
107
|
type: 'Microsoft.Storage/storageAccounts@2023-01-01',
|
|
@@ -120,19 +110,17 @@ class Azure extends constructs_1.Construct {
|
|
|
120
110
|
name: `ghastorageaccount${random.result}`,
|
|
121
111
|
body: {
|
|
122
112
|
properties: {
|
|
123
|
-
largeFileSharesState: 'Enabled'
|
|
113
|
+
largeFileSharesState: 'Enabled',
|
|
124
114
|
},
|
|
125
115
|
sku: {
|
|
126
|
-
name: 'Standard_LRS'
|
|
116
|
+
name: 'Standard_LRS',
|
|
127
117
|
},
|
|
128
118
|
kind: 'StorageV2',
|
|
129
119
|
},
|
|
130
120
|
lifecycle: {
|
|
131
|
-
ignoreChanges: [
|
|
132
|
-
'tags'
|
|
133
|
-
]
|
|
121
|
+
ignoreChanges: ['tags'],
|
|
134
122
|
},
|
|
135
|
-
responseExportValues: []
|
|
123
|
+
responseExportValues: [],
|
|
136
124
|
});
|
|
137
125
|
const storageShare = new resource_1.Resource(this, 'storageShare', {
|
|
138
126
|
type: 'Microsoft.Storage/storageAccounts/fileServices/shares@2023-01-01',
|
|
@@ -141,7 +129,7 @@ class Azure extends constructs_1.Construct {
|
|
|
141
129
|
body: {
|
|
142
130
|
properties: {
|
|
143
131
|
enabledProtocols: 'SMB',
|
|
144
|
-
}
|
|
132
|
+
},
|
|
145
133
|
},
|
|
146
134
|
});
|
|
147
135
|
const externalsShare = new resource_1.Resource(this, 'externalsShare', {
|
|
@@ -151,7 +139,7 @@ class Azure extends constructs_1.Construct {
|
|
|
151
139
|
body: {
|
|
152
140
|
properties: {
|
|
153
141
|
enabledProtocols: 'SMB',
|
|
154
|
-
}
|
|
142
|
+
},
|
|
155
143
|
},
|
|
156
144
|
});
|
|
157
145
|
const environment = new resource_1.Resource(this, 'acaenv', {
|
|
@@ -166,31 +154,27 @@ class Azure extends constructs_1.Construct {
|
|
|
166
154
|
logAnalyticsConfiguration: {
|
|
167
155
|
customerId: log.workspaceId,
|
|
168
156
|
sharedKey: log.primarySharedKey,
|
|
169
|
-
}
|
|
157
|
+
},
|
|
170
158
|
},
|
|
171
159
|
infrastructureResourceGroup: 'managed-aca-rg',
|
|
172
160
|
workloadProfiles: [
|
|
173
161
|
{
|
|
174
162
|
name: 'Consumption',
|
|
175
|
-
workloadProfileType: 'Consumption'
|
|
176
|
-
}
|
|
177
|
-
]
|
|
178
|
-
}
|
|
163
|
+
workloadProfileType: 'Consumption',
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
},
|
|
179
167
|
},
|
|
180
168
|
lifecycle: {
|
|
181
|
-
ignoreChanges: [
|
|
182
|
-
|
|
183
|
-
]
|
|
184
|
-
}
|
|
169
|
+
ignoreChanges: ['tags'],
|
|
170
|
+
},
|
|
185
171
|
});
|
|
186
172
|
const storageAccessKey = new data_azapi_resource_action_1.DataAzapiResourceAction(this, 'storageAccessKeys', {
|
|
187
173
|
type: 'Microsoft.Storage/storageAccounts@2023-01-01',
|
|
188
174
|
action: 'listKeys',
|
|
189
175
|
resourceId: storageAccount.id,
|
|
190
176
|
responseExportValues: ['*'],
|
|
191
|
-
dependsOn: [
|
|
192
|
-
storageAccount
|
|
193
|
-
]
|
|
177
|
+
dependsOn: [storageAccount],
|
|
194
178
|
});
|
|
195
179
|
// see https://github.com/hashicorp/terraform-cdk/issues/1641
|
|
196
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
|
|
@@ -205,8 +189,8 @@ class Azure extends constructs_1.Construct {
|
|
|
205
189
|
shareName: storageShare.name,
|
|
206
190
|
dependsOn: [
|
|
207
191
|
// Name doesn't create dependsOn requirement, so adding that explicitly
|
|
208
|
-
storageShare
|
|
209
|
-
]
|
|
192
|
+
storageShare,
|
|
193
|
+
],
|
|
210
194
|
});
|
|
211
195
|
const acaExternalStorage = new container_app_environment_storage_1.ContainerAppEnvironmentStorage(this, 'acaexternalstorage', {
|
|
212
196
|
name: 'gharunnerexternalstorage',
|
|
@@ -217,8 +201,8 @@ class Azure extends constructs_1.Construct {
|
|
|
217
201
|
shareName: externalsShare.name,
|
|
218
202
|
dependsOn: [
|
|
219
203
|
// Name doesn't create dependsOn requirement, so adding that explicitly
|
|
220
|
-
externalsShare
|
|
221
|
-
]
|
|
204
|
+
externalsShare,
|
|
205
|
+
],
|
|
222
206
|
});
|
|
223
207
|
const runnerVolumeName = 'work';
|
|
224
208
|
const externalVolumeName = 'externals';
|
|
@@ -230,10 +214,8 @@ class Azure extends constructs_1.Construct {
|
|
|
230
214
|
identity: [
|
|
231
215
|
{
|
|
232
216
|
type: 'UserAssigned',
|
|
233
|
-
identityIds: [
|
|
234
|
-
|
|
235
|
-
]
|
|
236
|
-
}
|
|
217
|
+
identityIds: [identity.id],
|
|
218
|
+
},
|
|
237
219
|
],
|
|
238
220
|
name: 'gha-runner-job-01',
|
|
239
221
|
parentId: rg.id,
|
|
@@ -250,8 +232,8 @@ class Azure extends constructs_1.Construct {
|
|
|
250
232
|
registries: [
|
|
251
233
|
{
|
|
252
234
|
identity: identity.id,
|
|
253
|
-
server: acr.loginServer
|
|
254
|
-
}
|
|
235
|
+
server: acr.loginServer,
|
|
236
|
+
},
|
|
255
237
|
],
|
|
256
238
|
},
|
|
257
239
|
environmentId: environment.id,
|
|
@@ -265,7 +247,11 @@ class Azure extends constructs_1.Construct {
|
|
|
265
247
|
// Have to use custom image as we want to run service as root to be able to install packages
|
|
266
248
|
image: `${acr.loginServer}/root-actions-runner:latest`,
|
|
267
249
|
name: 'main',
|
|
268
|
-
command: [
|
|
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',
|
|
254
|
+
],
|
|
269
255
|
volumeMounts: [
|
|
270
256
|
{
|
|
271
257
|
mountPath: '/tmp/_work',
|
|
@@ -274,43 +260,43 @@ class Azure extends constructs_1.Construct {
|
|
|
274
260
|
{
|
|
275
261
|
mountPath: '/tmp/externals',
|
|
276
262
|
volumeName: externalVolumeName,
|
|
277
|
-
}
|
|
263
|
+
},
|
|
278
264
|
],
|
|
279
265
|
env: [
|
|
280
266
|
// https://github.com/microsoft/azure-container-apps/issues/502#issuecomment-1340225438
|
|
281
267
|
{
|
|
282
268
|
name: 'APPSETTING_WEBSITE_SITE_NAME',
|
|
283
|
-
value: 'identity-workaround'
|
|
269
|
+
value: 'identity-workaround',
|
|
284
270
|
},
|
|
285
271
|
// https://github.com/microsoft/azure-container-apps/issues/442#issuecomment-1665621031
|
|
286
272
|
{
|
|
287
273
|
name: 'AZURE_CLIENT_ID',
|
|
288
|
-
value: identity.clientId
|
|
274
|
+
value: identity.clientId,
|
|
289
275
|
},
|
|
290
276
|
{
|
|
291
277
|
name: 'RG_NAME',
|
|
292
|
-
value: rg.name
|
|
278
|
+
value: rg.name,
|
|
293
279
|
},
|
|
294
280
|
{
|
|
295
281
|
name: 'LOG_ID',
|
|
296
|
-
value: log.workspaceId
|
|
282
|
+
value: log.workspaceId,
|
|
297
283
|
},
|
|
298
284
|
{
|
|
299
285
|
name: 'STORAGE_NAME',
|
|
300
|
-
value: acaEnvStorage.name
|
|
286
|
+
value: acaEnvStorage.name,
|
|
301
287
|
},
|
|
302
288
|
{
|
|
303
289
|
name: 'EXTERNAL_STORAGE_NAME',
|
|
304
|
-
value: acaExternalStorage.name
|
|
290
|
+
value: acaExternalStorage.name,
|
|
305
291
|
},
|
|
306
292
|
{
|
|
307
293
|
name: 'SUBSCRIPTION_ID',
|
|
308
|
-
value: sub.subscriptionId
|
|
294
|
+
value: sub.subscriptionId,
|
|
309
295
|
},
|
|
310
296
|
{
|
|
311
297
|
name: 'ACA_ENVIRONMENT_ID',
|
|
312
|
-
value: environment.id
|
|
313
|
-
}
|
|
298
|
+
value: environment.id,
|
|
299
|
+
},
|
|
314
300
|
],
|
|
315
301
|
},
|
|
316
302
|
],
|
|
@@ -319,26 +305,22 @@ class Azure extends constructs_1.Construct {
|
|
|
319
305
|
name: runnerVolumeName,
|
|
320
306
|
storageName: acaEnvStorage.name,
|
|
321
307
|
storageType: 'AzureFile',
|
|
322
|
-
mountOptions: 'mfsymlinks'
|
|
308
|
+
mountOptions: 'mfsymlinks',
|
|
323
309
|
},
|
|
324
310
|
{
|
|
325
311
|
name: externalVolumeName,
|
|
326
312
|
storageName: acaExternalStorage.name,
|
|
327
313
|
storageType: 'AzureFile',
|
|
328
|
-
mountOptions: 'mfsymlinks'
|
|
329
|
-
}
|
|
330
|
-
]
|
|
331
|
-
}
|
|
332
|
-
}
|
|
314
|
+
mountOptions: 'mfsymlinks',
|
|
315
|
+
},
|
|
316
|
+
],
|
|
317
|
+
},
|
|
318
|
+
},
|
|
333
319
|
},
|
|
334
|
-
dependsOn: [
|
|
335
|
-
runnerCache
|
|
336
|
-
],
|
|
320
|
+
dependsOn: [runnerCache],
|
|
337
321
|
lifecycle: {
|
|
338
|
-
ignoreChanges: [
|
|
339
|
-
|
|
340
|
-
]
|
|
341
|
-
}
|
|
322
|
+
ignoreChanges: ['tags'],
|
|
323
|
+
},
|
|
342
324
|
});
|
|
343
325
|
const autoscalerApp = new container_app_1.ContainerApp(this, 'autoscalerApp', {
|
|
344
326
|
containerAppEnvironmentId: environment.id,
|
|
@@ -347,21 +329,19 @@ class Azure extends constructs_1.Construct {
|
|
|
347
329
|
revisionMode: 'Single',
|
|
348
330
|
identity: {
|
|
349
331
|
type: 'SystemAssigned, UserAssigned',
|
|
350
|
-
identityIds: [
|
|
351
|
-
identity.id
|
|
352
|
-
]
|
|
332
|
+
identityIds: [identity.id],
|
|
353
333
|
},
|
|
354
334
|
secret: [
|
|
355
335
|
{
|
|
356
336
|
name: 'pat',
|
|
357
|
-
value: pat.value
|
|
358
|
-
}
|
|
337
|
+
value: pat.value,
|
|
338
|
+
},
|
|
359
339
|
],
|
|
360
340
|
registry: [
|
|
361
341
|
{
|
|
362
342
|
identity: identity.id,
|
|
363
|
-
server: acr.loginServer
|
|
364
|
-
}
|
|
343
|
+
server: acr.loginServer,
|
|
344
|
+
},
|
|
365
345
|
],
|
|
366
346
|
template: {
|
|
367
347
|
container: [
|
|
@@ -378,7 +358,7 @@ class Azure extends constructs_1.Construct {
|
|
|
378
358
|
},
|
|
379
359
|
{
|
|
380
360
|
name: 'GITHUB_CONFIG_URL',
|
|
381
|
-
value: githubConfigUrl.value
|
|
361
|
+
value: githubConfigUrl.value,
|
|
382
362
|
},
|
|
383
363
|
{
|
|
384
364
|
name: 'AZURE_TENANT_ID',
|
|
@@ -386,33 +366,28 @@ class Azure extends constructs_1.Construct {
|
|
|
386
366
|
},
|
|
387
367
|
{
|
|
388
368
|
name: 'SUBSCRIPTION_ID',
|
|
389
|
-
value: sub.subscriptionId
|
|
369
|
+
value: sub.subscriptionId,
|
|
390
370
|
},
|
|
391
371
|
{
|
|
392
372
|
name: 'RESOURCE_GROUP_NAME',
|
|
393
|
-
value: rg.name
|
|
373
|
+
value: rg.name,
|
|
394
374
|
},
|
|
395
375
|
{
|
|
396
376
|
name: 'JOB_NAME',
|
|
397
|
-
value: ghaRunnerJob.name
|
|
377
|
+
value: ghaRunnerJob.name,
|
|
398
378
|
},
|
|
399
379
|
{
|
|
400
380
|
name: 'SCALE_SET_NAME',
|
|
401
|
-
value: 'aca-runner-set'
|
|
381
|
+
value: 'aca-runner-set',
|
|
402
382
|
},
|
|
403
|
-
]
|
|
404
|
-
}
|
|
405
|
-
]
|
|
383
|
+
],
|
|
384
|
+
},
|
|
385
|
+
],
|
|
406
386
|
},
|
|
407
|
-
dependsOn: [
|
|
408
|
-
autoscalerCache
|
|
409
|
-
],
|
|
387
|
+
dependsOn: [autoscalerCache],
|
|
410
388
|
lifecycle: {
|
|
411
|
-
ignoreChanges: [
|
|
412
|
-
|
|
413
|
-
'workload_profile_name'
|
|
414
|
-
]
|
|
415
|
-
}
|
|
389
|
+
ignoreChanges: ['tags', 'workload_profile_name'],
|
|
390
|
+
},
|
|
416
391
|
});
|
|
417
392
|
/**
|
|
418
393
|
* @see https://github.com/microsoft/azure-container-apps/issues/1024
|
|
@@ -428,8 +403,8 @@ class Azure extends constructs_1.Construct {
|
|
|
428
403
|
'microsoft.app/jobs/read',
|
|
429
404
|
'microsoft.app/jobs/executions/read',
|
|
430
405
|
],
|
|
431
|
-
}
|
|
432
|
-
]
|
|
406
|
+
},
|
|
407
|
+
],
|
|
433
408
|
});
|
|
434
409
|
const jobCreationRole = new role_definition_1.RoleDefinition(this, 'jobCreationRole', {
|
|
435
410
|
name: `gha-example-revision-create-role-${random.result}`,
|
|
@@ -443,36 +418,36 @@ class Azure extends constructs_1.Construct {
|
|
|
443
418
|
'microsoft.app/jobs/write',
|
|
444
419
|
'microsoft.app/jobs/executions/read',
|
|
445
420
|
'microsoft.app/managedEnvironments/join/action',
|
|
446
|
-
'microsoft.app/jobs/delete' // cleanup for jobs
|
|
421
|
+
'microsoft.app/jobs/delete', // cleanup for jobs
|
|
447
422
|
],
|
|
448
|
-
}
|
|
449
|
-
]
|
|
423
|
+
},
|
|
424
|
+
],
|
|
450
425
|
});
|
|
451
426
|
// Allow autoscaler to create new revision of app
|
|
452
427
|
new role_assignment_1.RoleAssignment(this, 'scaleJobRoleAssignment', {
|
|
453
428
|
principalId: autoscalerApp.identity.principalId,
|
|
454
429
|
scope: ghaRunnerJob.id,
|
|
455
|
-
roleDefinitionId: role.roleDefinitionResourceId
|
|
430
|
+
roleDefinitionId: role.roleDefinitionResourceId,
|
|
456
431
|
});
|
|
457
432
|
// Allow runner to start the job. As each one created new job, have to give to RG level.
|
|
458
433
|
new role_assignment_1.RoleAssignment(this, 'actionContainerStartRoleAssignment', {
|
|
459
434
|
principalId: identity.principalId,
|
|
460
435
|
scope: rg.id,
|
|
461
|
-
roleDefinitionId: jobCreationRole.roleDefinitionResourceId
|
|
436
|
+
roleDefinitionId: jobCreationRole.roleDefinitionResourceId,
|
|
462
437
|
});
|
|
463
438
|
new role_assignment_1.RoleAssignment(this, 'imagePushRoleAssignment', {
|
|
464
439
|
principalId: identity.principalId,
|
|
465
440
|
scope: acr.id,
|
|
466
|
-
roleDefinitionName: 'AcrPush'
|
|
441
|
+
roleDefinitionName: 'AcrPush',
|
|
467
442
|
});
|
|
468
443
|
new role_assignment_1.RoleAssignment(this, 'jobLogReadAssignment', {
|
|
469
444
|
principalId: identity.principalId,
|
|
470
445
|
scope: log.id,
|
|
471
|
-
roleDefinitionName: 'Log Analytics Reader'
|
|
446
|
+
roleDefinitionName: 'Log Analytics Reader',
|
|
472
447
|
});
|
|
473
448
|
}
|
|
474
449
|
}
|
|
475
450
|
exports.Azure = Azure;
|
|
476
451
|
_a = JSII_RTTI_SYMBOL_1;
|
|
477
|
-
Azure[_a] = { fqn: "terraform-cdk-serverless-github-actions-runner-controller.Azure", version: "0.0.
|
|
478
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2F6dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUVBQXVFO0FBQ3ZFLCtEQUFnRTtBQUNoRSwrREFBMkQ7QUFDM0QsbUdBQTRGO0FBQzVGLGlDQUE4QztBQUM5QywyQ0FBdUM7QUFDdkMsK0VBQTJFO0FBQzNFLHVGQUFtRjtBQUNuRiwrRkFBMEY7QUFDMUYsaUZBQTZFO0FBQzdFLGlHQUE0RjtBQUM1RixpRkFBNkU7QUFDN0UscUdBQWdHO0FBQ2hHLDZFQUF5RTtBQUN6RSwyQ0FBOEM7QUFDOUMscUhBQStHO0FBQy9HLGtFQUFxRTtBQUNyRSxnRkFBNEU7QUFFNUUsTUFBYSxLQUFNLFNBQVEsc0JBQVM7SUFDaEMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDcEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLDBCQUFlLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUNqQyxRQUFRLEVBQUU7Z0JBQ04sRUFBRTthQUNMO1NBQ0osQ0FBQyxDQUFBO1FBRUYsSUFBSSx3QkFBYSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFDaEMsQ0FBQyxDQUFBO1FBRUYsSUFBSSx5QkFBYyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUVsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLG1EQUF1QixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFekQsTUFBTSxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsR0FBRyxJQUFBLDJCQUFlLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkQsTUFBTSxRQUFRLEdBQUcsSUFBSSx5QkFBaUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3JELE9BQU8sRUFBRSxZQUFZO1lBQ3JCLFdBQVcsRUFBRSwwQ0FBMEM7WUFDdkQsSUFBSSxFQUFFLFFBQVE7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YixrQkFBa0IsRUFBRSxTQUFTO1NBQ2hDLENBQUMsQ0FBQztRQUVILElBQUksZ0NBQWMsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7WUFDN0MsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXO1lBQ2pDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNiLGtCQUFrQixFQUFFLHNCQUFzQjtTQUM3QyxDQUFDLENBQUE7SUFDTixDQUFDOztBQXBlTCxzQkFxZUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBenVyZXJtUHJvdmlkZXIgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBBemFwaVByb3ZpZGVyIH0gZnJvbSAnLi4vLmdlbi9wcm92aWRlcnMvYXphcGkvcHJvdmlkZXInXG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJy4uLy5nZW4vcHJvdmlkZXJzL2F6YXBpL3Jlc291cmNlJ1xuaW1wb3J0IHsgRGF0YUF6YXBpUmVzb3VyY2VBY3Rpb24gfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9hemFwaS9kYXRhLWF6YXBpLXJlc291cmNlLWFjdGlvbidcbmltcG9ydCB7IEZuLCBUZXJyYWZvcm1WYXJpYWJsZSB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3Jlc291cmNlLWdyb3VwXCI7XG5pbXBvcnQgeyBDb250YWluZXJSZWdpc3RyeSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvY29udGFpbmVyLXJlZ2lzdHJ5XCI7XG5pbXBvcnQgeyBVc2VyQXNzaWduZWRJZGVudGl0eSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvdXNlci1hc3NpZ25lZC1pZGVudGl0eVwiO1xuaW1wb3J0IHsgUm9sZUFzc2lnbm1lbnQgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3JvbGUtYXNzaWdubWVudFwiO1xuaW1wb3J0IHsgTG9nQW5hbHl0aWNzV29ya3NwYWNlIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9sb2ctYW5hbHl0aWNzLXdvcmtzcGFjZVwiO1xuaW1wb3J0IHsgUm9sZURlZmluaXRpb24gfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3JvbGUtZGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgRGF0YUF6dXJlcm1TdWJzY3JpcHRpb24gfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2RhdGEtYXp1cmVybS1zdWJzY3JpcHRpb25cIjtcbmltcG9ydCB7IENvbnRhaW5lckFwcCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvY29udGFpbmVyLWFwcFwiO1xuaW1wb3J0IHsgY29tbW9uVmFyaWFibGVzIH0gZnJvbSBcIi4vdmFyaWFibGVzXCI7XG5pbXBvcnQgeyBDb250YWluZXJBcHBFbnZpcm9ubWVudFN0b3JhZ2UgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2NvbnRhaW5lci1hcHAtZW52aXJvbm1lbnQtc3RvcmFnZVwiO1xuaW1wb3J0IHsgUmFuZG9tUHJvdmlkZXIgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLXJhbmRvbS9saWIvcHJvdmlkZXJcIjtcbmltcG9ydCB7IFN0cmluZ1Jlc291cmNlIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1yYW5kb20vbGliL3N0cmluZy1yZXNvdXJjZVwiO1xuXG5leHBvcnQgY2xhc3MgQXp1cmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAgICAgXG4gICAgICAgIG5ldyBBenVyZXJtUHJvdmlkZXIodGhpcywgJ2F6dXJlcm0nLCB7XG4gICAgICAgICAgICBmZWF0dXJlczogW1xuICAgICAgICAgICAgICAgIHt9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0pXG5cbiAgICAgICAgbmV3IEF6YXBpUHJvdmlkZXIodGhpcywgJ2F6YXBpJywge1xuICAgICAgICB9KVxuXG4gICAgICAgIG5ldyBSYW5kb21Qcm92aWRlcih0aGlzLCAncmFuZG9tJylcblxuICAgICAgICBjb25zdCBzdWIgPSBuZXcgRGF0YUF6dXJlcm1TdWJzY3JpcHRpb24odGhpcywgJ3N1YicsIHt9KTtcblxuICAgICAgICBjb25zdCB7IHBhdCwgZ2l0aHViQ29uZmlnVXJsIH0gPSBjb21tb25WYXJpYWJsZXModGhpcyk7XG5cbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSBuZXcgVGVycmFmb3JtVmFyaWFibGUodGhpcywgJ2xvY2F0aW9uJywge1xuICAgICAgICAgICAgZGVmYXVsdDogJ3dlc3RldXJvcGUnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiB3aGVyZSB0byBwcm92aXNpb24gcmVzb3VyY2VzIHRvJyxcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgc2Vuc2l0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIG51bGxhYmxlOiBmYWxzZVxuICAgICAgICB9KS52YWx1ZTtcblxuICAgICAgICBjb25zdCByZyA9IG5ldyBSZXNvdXJjZUdyb3VwKHRoaXMsICdyZycsIHtcbiAgICAgICAgICAgIGxvY2F0aW9uLFxuICAgICAgICAgICAgbmFtZTogJ2doYS1ydW5uZXItcmcnLFxuICAgICAgICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgICAgICAgICAgaWdub3JlQ2hhbmdlczogW1xuICAgICAgICAgICAgICAgICAgICAndGFncydcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHJhbmRvbSA9IG5ldyBTdHJpbmdSZXNvdXJjZSh0aGlzLCAncmFuZG9tU3VmZml4Jywge1xuICAgICAgICAgICAgbGVuZ3RoOiA2LFxuICAgICAgICAgICAgc3BlY2lhbDogZmFsc2UsXG4gICAgICAgICAgICB1cHBlcjogZmFsc2UsXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgYWNyID0gbmV3IENvbnRhaW5lclJlZ2lzdHJ5KHRoaXMsICdhY3InLCB7XG4gICAgICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgICAgIG5hbWU6IGBydW5uZXJhY3Ike3JhbmRvbS5yZXN1bHR9YCxcbiAgICAgICAgICAgIHJlc291cmNlR3JvdXBOYW1lOiByZy5uYW1lLFxuICAgICAgICAgICAgc2t1OiAnQmFzaWMnLFxuICAgICAgICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgICAgICAgICAgaWdub3JlQ2hhbmdlczogW1xuICAgICAgICAgICAgICAgICAgICAndGFncydcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIHVzZSBjYWNoaW5nIGZvciBpbWFnZXNcbiAgICAgICAgY29uc3QgcnVubmVyQ2FjaGUgPSBuZXcgUmVzb3VyY2UodGhpcywgJ3J1bm5lckNhY2hlJywge1xuICAgICAgICAgICAgdHlwZTogJ01pY3Jvc29mdC5Db250YWluZXJSZWdpc3RyeS9yZWdpc3RyaWVzL2NhY2hlUnVsZXNAMjAyMy0wMS0wMS1wcmV2aWV3JyxcbiAgICAgICAgICAgIHBhcmVudElkOiBhY3IuaWQsXG4gICAgICAgICAgICBuYW1lOiAncm9vdC1ydW5uZXItY2FjaGUnLFxuICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgc291cmNlUmVwb3NpdG9yeTogJ2doY3IuaW8vaGktZmkvcm9vdC1hY3Rpb25zLXJ1bm5lcicsXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFJlcG9zaXRvcnk6ICdyb290LWFjdGlvbnMtcnVubmVyJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBhdXRvc2NhbGVyQ2FjaGUgPSBuZXcgUmVzb3VyY2UodGhpcywgJ2F1dG9zY2FsZXJDYWNoZScsIHtcbiAgICAgICAgICAgIHR5cGU6ICdNaWNyb3NvZnQuQ29udGFpbmVyUmVnaXN0cnkvcmVnaXN0cmllcy9jYWNoZVJ1bGVzQDIwMjMtMDEtMDEtcHJldmlldycsXG4gICAgICAgICAgICBwYXJlbnRJZDogYWNyLmlkLFxuICAgICAgICAgICAgbmFtZTogJ2F1dG9zY2FsZXItY2FjaGUnLFxuICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgc291cmNlUmVwb3NpdG9yeTogJ2doY3IuaW8vaGktZmkvZ2hhLXJ1bm5lcnMtb24tbWFuYWdlZC1lbnYnLFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRSZXBvc2l0b3J5OiAnYXV0b3NjYWxlcidcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgaWRlbnRpdHkgPSBuZXcgVXNlckFzc2lnbmVkSWRlbnRpdHkodGhpcywgJ2lkZW50aXR5Jywge1xuICAgICAgICAgICAgbG9jYXRpb24sXG4gICAgICAgICAgICBuYW1lOiAnYWNhLWFjci1hY2Nlc3MnLFxuICAgICAgICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHJnLm5hbWUsXG4gICAgICAgICAgICBsaWZlY3ljbGU6IHtcbiAgICAgICAgICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICd0YWdzJ1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IFJvbGVBc3NpZ25tZW50KHRoaXMsICdyb2xlQXNzaWdubWVudCcsIHtcbiAgICAgICAgICAgIHByaW5jaXBhbElkOiBpZGVudGl0eS5wcmluY2lwYWxJZCxcbiAgICAgICAgICAgIHNjb3BlOiBhY3IuaWQsXG4gICAgICAgICAgICByb2xlRGVmaW5pdGlvbk5hbWU6ICdBY3JQdWxsJ1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBsb2cgPSBuZXcgTG9nQW5hbHl0aWNzV29ya3NwYWNlKHRoaXMsICdsb2cnLCB7XG4gICAgICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgICAgIG5hbWU6ICdnaGEtZXhhbXBsZS1sb2dzJyxcbiAgICAgICAgICAgIHJlc291cmNlR3JvdXBOYW1lOiByZy5uYW1lLFxuICAgICAgICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgICAgICAgICAgaWdub3JlQ2hhbmdlczogW1xuICAgICAgICAgICAgICAgICAgICAndGFncydcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3Qgc3RvcmFnZUFjY291bnQgPSBuZXcgUmVzb3VyY2UodGhpcywgJ3N0b3JhZ2VBY2NvdW50Jywge1xuICAgICAgICAgICAgdHlwZTogJ01pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50c0AyMDIzLTAxLTAxJyxcbiAgICAgICAgICAgIHBhcmVudElkOiByZy5pZCxcbiAgICAgICAgICAgIGxvY2F0aW9uLFxuICAgICAgICAgICAgbmFtZTogYGdoYXN0b3JhZ2VhY2NvdW50JHtyYW5kb20ucmVzdWx0fWAsXG4gICAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICBsYXJnZUZpbGVTaGFyZXNTdGF0ZTogJ0VuYWJsZWQnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBza3U6IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1N0YW5kYXJkX0xSUydcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGtpbmQ6ICdTdG9yYWdlVjInLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxpZmVjeWNsZToge1xuICAgICAgICAgICAgICAgIGlnbm9yZUNoYW5nZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgJ3RhZ3MnXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3BvbnNlRXhwb3J0VmFsdWVzOiBbXG5cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc3RvcmFnZVNoYXJlID0gbmV3IFJlc291cmNlKHRoaXMsICdzdG9yYWdlU2hhcmUnLCB7XG4gICAgICAgICAgICB0eXBlOiAnTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2ZpbGVTZXJ2aWNlcy9zaGFyZXNAMjAyMy0wMS0wMScsXG4gICAgICAgICAgICBuYW1lOiAnZ2hhZXhhbXBsZXNoYXJlJyxcbiAgICAgICAgICAgIHBhcmVudElkOiBgJHtzdG9yYWdlQWNjb3VudC5pZH0vZmlsZVNlcnZpY2VzL2RlZmF1bHRgLFxuICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgZW5hYmxlZFByb3RvY29sczogJ1NNQicsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZXh0ZXJuYWxzU2hhcmUgPSBuZXcgUmVzb3VyY2UodGhpcywgJ2V4dGVybmFsc1NoYXJlJywge1xuICAgICAgICAgICAgdHlwZTogJ01pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9maWxlU2VydmljZXMvc2hhcmVzQDIwMjMtMDEtMDEnLFxuICAgICAgICAgICAgbmFtZTogJ2doYWV4dGVybmFsc3NoYXJlJyxcbiAgICAgICAgICAgIHBhcmVudElkOiBgJHtzdG9yYWdlQWNjb3VudC5pZH0vZmlsZVNlcnZpY2VzL2RlZmF1bHRgLFxuICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgZW5hYmxlZFByb3RvY29sczogJ1NNQicsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSBuZXcgUmVzb3VyY2UodGhpcywgJ2FjYWVudicsIHtcbiAgICAgICAgICAgIHR5cGU6ICdNaWNyb3NvZnQuQXBwL21hbmFnZWRFbnZpcm9ubWVudHNAMjAyNC0wMy0wMScsXG4gICAgICAgICAgICBwYXJlbnRJZDogcmcuaWQsXG4gICAgICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgICAgIG5hbWU6ICdnaGEtcnVubmVyLWVudmlyb25tZW50JyxcbiAgICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGFwcExvZ3NDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbjogJ2xvZy1hbmFseXRpY3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nQW5hbHl0aWNzQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWVySWQ6IGxvZy53b3Jrc3BhY2VJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWRLZXk6IGxvZy5wcmltYXJ5U2hhcmVkS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBpbmZyYXN0cnVjdHVyZVJlc291cmNlR3JvdXA6ICdtYW5hZ2VkLWFjYS1yZycsXG4gICAgICAgICAgICAgICAgICAgIHdvcmtsb2FkUHJvZmlsZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQ29uc3VtcHRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtsb2FkUHJvZmlsZVR5cGU6ICdDb25zdW1wdGlvbidcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaWZlY3ljbGU6IHtcbiAgICAgICAgICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICd0YWdzJ1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc3RvcmFnZUFjY2Vzc0tleSA9IG5ldyBEYXRhQXphcGlSZXNvdXJjZUFjdGlvbih0aGlzLCAnc3RvcmFnZUFjY2Vzc0tleXMnLCB7XG4gICAgICAgICAgICB0eXBlOiAnTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzQDIwMjMtMDEtMDEnLFxuICAgICAgICAgICAgYWN0aW9uOiAnbGlzdEtleXMnLFxuICAgICAgICAgICAgcmVzb3VyY2VJZDogc3RvcmFnZUFjY291bnQuaWQsXG4gICAgICAgICAgICByZXNwb25zZUV4cG9ydFZhbHVlczogWycqJ10sXG4gICAgICAgICAgICBkZXBlbmRzT246IFtcbiAgICAgICAgICAgICAgICBzdG9yYWdlQWNjb3VudFxuICAgICAgICAgICAgXVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tY2RrL2lzc3Vlcy8xNjQxXG4gICAgICAgIC8vIEZvciBvbGRlciBBemFwaSB3YXkgdG8gZ2V0IGtleSB3b3VsZCBiZSB0aGlzIHdoZW4gKGRlZmF1bHQpIGRhdGEgb3V0cHV0IHdhcyBqc29uLiBXaXRuIDIuMC4wLWJldGEgZGVmYXVsdCB3YXMgY2hhbmdlZCB0byBIQ0xcbiAgICAgICAgLy8gY29uc3QgYWNjZXNzS2V5ID0gRm4ubG9va3VwKEZuLmVsZW1lbnQoRm4ubG9va3VwKEZuLmpzb25kZWNvZGUoc3RvcmFnZUFjY2Vzc0tleS5vdXRwdXQgYXMgYW55KSwgJ2tleXMnKSwgMCksICd2YWx1ZScpXG5cbiAgICAgICAgY29uc3QgYWNjZXNzS2V5ID0gRm4ubG9va3VwKEZuLmVsZW1lbnQoRm4uZWxlbWVudChzdG9yYWdlQWNjZXNzS2V5Lm91dHB1dC5sb29rdXAoJzAnKSwgMCksIDApLCAndmFsdWUnKVxuXG4gICAgICAgIGNvbnN0IGFjYUVudlN0b3JhZ2UgPSBuZXcgQ29udGFpbmVyQXBwRW52aXJvbm1lbnRTdG9yYWdlKHRoaXMsICdhY2FlbnZzdG9yYWdlJywge1xuICAgICAgICAgICAgbmFtZTogJ2doYXJ1bm5lcmpvYnN0b3JhZ2UnLFxuICAgICAgICAgICAgYWNjZXNzS2V5LFxuICAgICAgICAgICAgYWNjZXNzTW9kZTogJ1JlYWRXcml0ZScsXG4gICAgICAgICAgICBhY2NvdW50TmFtZTogc3RvcmFnZUFjY291bnQubmFtZSxcbiAgICAgICAgICAgIGNvbnRhaW5lckFwcEVudmlyb25tZW50SWQ6IGVudmlyb25tZW50LmlkLFxuICAgICAgICAgICAgc2hhcmVOYW1lOiBzdG9yYWdlU2hhcmUubmFtZSxcbiAgICAgICAgICAgIGRlcGVuZHNPbjogW1xuICAgICAgICAgICAgICAgIC8vIE5hbWUgZG9lc24ndCBjcmVhdGUgZGVwZW5kc09uIHJlcXVpcmVtZW50LCBzbyBhZGRpbmcgdGhhdCBleHBsaWNpdGx5XG4gICAgICAgICAgICAgICAgc3RvcmFnZVNoYXJlXG4gICAgICAgICAgICBdIFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBhY2FFeHRlcm5hbFN0b3JhZ2UgPSBuZXcgQ29udGFpbmVyQXBwRW52aXJvbm1lbnRTdG9yYWdlKHRoaXMsICdhY2FleHRlcm5hbHN0b3JhZ2UnLCB7XG4gICAgICAgICAgICBuYW1lOiAnZ2hhcnVubmVyZXh0ZXJuYWxzdG9yYWdlJyxcbiAgICAgICAgICAgIGFjY2Vzc0tleSxcbiAgICAgICAgICAgIGFjY2Vzc01vZGU6ICdSZWFkV3JpdGUnLFxuICAgICAgICAgICAgYWNjb3VudE5hbWU6IHN0b3JhZ2VBY2NvdW50Lm5hbWUsXG4gICAgICAgICAgICBjb250YWluZXJBcHBFbnZpcm9ubWVudElkOiBlbnZpcm9ubWVudC5pZCxcbiAgICAgICAgICAgIHNoYXJlTmFtZTogZXh0ZXJuYWxzU2hhcmUubmFtZSxcbiAgICAgICAgICAgIGRlcGVuZHNPbjogW1xuICAgICAgICAgICAgICAgIC8vIE5hbWUgZG9lc24ndCBjcmVhdGUgZGVwZW5kc09uIHJlcXVpcmVtZW50LCBzbyBhZGRpbmcgdGhhdCBleHBsaWNpdGx5XG4gICAgICAgICAgICAgICAgZXh0ZXJuYWxzU2hhcmVcbiAgICAgICAgICAgIF0gXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHJ1bm5lclZvbHVtZU5hbWUgPSAnd29yaydcbiAgICAgICAgY29uc3QgZXh0ZXJuYWxWb2x1bWVOYW1lID0gJ2V4dGVybmFscydcblxuICAgICAgICAvKipcbiAgICAgICAgICogQHNlZSBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvYXp1cmUvdGVtcGxhdGVzL21pY3Jvc29mdC5hcHAvam9icz9waXZvdHM9ZGVwbG95bWVudC1sYW5ndWFnZS10ZXJyYWZvcm1cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGdoYVJ1bm5lckpvYiA9IG5ldyBSZXNvdXJjZSh0aGlzLCAnZ2hhUnVubmVySm9iJywge1xuICAgICAgICAgICAgdHlwZTogJ01pY3Jvc29mdC5BcHAvam9ic0AyMDI0LTAyLTAyLXByZXZpZXcnLFxuICAgICAgICAgICAgaWRlbnRpdHk6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdVc2VyQXNzaWduZWQnLFxuICAgICAgICAgICAgICAgICAgICBpZGVudGl0eUlkczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpdHkuaWRcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBuYW1lOiAnZ2hhLXJ1bm5lci1qb2ItMDEnLFxuICAgICAgICAgICAgcGFyZW50SWQ6IHJnLmlkLFxuICAgICAgICAgICAgbG9jYXRpb24sXG4gICAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYW51YWxUcmlnZ2VyQ29uZmlnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWxsZWxpc206IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGljYUNvbXBsZXRpb25Db3VudDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyVHlwZTogJ01hbnVhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXBsaWNhVGltZW91dDogMTIwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJpZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aXR5OiBpZGVudGl0eS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyOiBhY3IubG9naW5TZXJ2ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudElkOiBlbnZpcm9ubWVudC5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5OiAnMkdpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGF2ZSB0byB1c2UgY3VzdG9tIGltYWdlIGFzIHdlIHdhbnQgdG8gcnVuIHNlcnZpY2UgYXMgcm9vdCB0byBiZSBhYmxlIHRvIGluc3RhbGwgcGFja2FnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IGAke2Fjci5sb2dpblNlcnZlcn0vcm9vdC1hY3Rpb25zLXJ1bm5lcjpsYXRlc3RgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbWFpbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6IFsnL2Jpbi9zaCcsICctYycsICdleHBvcnQgRVhFQ0lEPSQoY2F0IC9wcm9jL3N5cy9rZXJuZWwvcmFuZG9tL3V1aWQpICYmIG1rZGlyIC1wIC90bXAvX3dvcmsvJEVYRUNJRCAmJiBsbiAtcyAvdG1wL193b3JrLyRFWEVDSUQgX3dvcmsgJiYgL2hvbWUvcnVubmVyL3J1bi5zaCA7IHJtIC1yIC90bXAvX3dvcmsvJEVYRUNJRCddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2x1bWVNb3VudHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VudFBhdGg6ICcvdG1wL193b3JrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2x1bWVOYW1lOiBydW5uZXJWb2x1bWVOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VudFBhdGg6ICcvdG1wL2V4dGVybmFscycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9sdW1lTmFtZTogZXh0ZXJuYWxWb2x1bWVOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvYXp1cmUtY29udGFpbmVyLWFwcHMvaXNzdWVzLzUwMiNpc3N1ZWNvbW1lbnQtMTM0MDIyNTQzOFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdBUFBTRVRUSU5HX1dFQlNJVEVfU0lURV9OQU1FJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ2lkZW50aXR5LXdvcmthcm91bmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9henVyZS1jb250YWluZXItYXBwcy9pc3N1ZXMvNDQyI2lzc3VlY29tbWVudC0xNjY1NjIxMDMxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0FaVVJFX0NMSUVOVF9JRCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGlkZW50aXR5LmNsaWVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdSR19OQU1FJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmcubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnTE9HX0lEJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbG9nLndvcmtzcGFjZUlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdTVE9SQUdFX05BTUUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBhY2FFbnZTdG9yYWdlLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0VYVEVSTkFMX1NUT1JBR0VfTkFNRScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGFjYUV4dGVybmFsU3RvcmFnZS5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdTVUJTQ1JJUFRJT05fSUQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzdWIuc3Vic2NyaXB0aW9uSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0FDQV9FTlZJUk9OTUVOVF9JRCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudmlyb25tZW50LmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICB2b2x1bWVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBydW5uZXJWb2x1bWVOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlTmFtZTogYWNhRW52U3RvcmFnZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlVHlwZTogJ0F6dXJlRmlsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdW50T3B0aW9uczogJ21mc3ltbGlua3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGV4dGVybmFsVm9sdW1lTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZU5hbWU6IGFjYUV4dGVybmFsU3RvcmFnZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlVHlwZTogJ0F6dXJlRmlsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdW50T3B0aW9uczogJ21mc3ltbGlua3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlcGVuZHNPbjogW1xuICAgICAgICAgICAgICAgIHJ1bm5lckNhY2hlXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgICAgICAgICAgaWdub3JlQ2hhbmdlczogW1xuICAgICAgICAgICAgICAgICAgICAndGFncydcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGF1dG9zY2FsZXJBcHAgPSBuZXcgQ29udGFpbmVyQXBwKHRoaXMsICdhdXRvc2NhbGVyQXBwJywge1xuICAgICAgICAgICAgY29udGFpbmVyQXBwRW52aXJvbm1lbnRJZDogZW52aXJvbm1lbnQuaWQsXG4gICAgICAgICAgICBuYW1lOiAnYXV0b3NjYWxlci1hcHAtMDEnLFxuICAgICAgICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHJnLm5hbWUsXG4gICAgICAgICAgICByZXZpc2lvbk1vZGU6ICdTaW5nbGUnLFxuICAgICAgICAgICAgaWRlbnRpdHk6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnU3lzdGVtQXNzaWduZWQsIFVzZXJBc3NpZ25lZCcsXG4gICAgICAgICAgICAgICAgaWRlbnRpdHlJZHM6IFtcbiAgICAgICAgICAgICAgICAgICAgaWRlbnRpdHkuaWRcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VjcmV0OiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGF0JyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhdC52YWx1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByZWdpc3RyeTogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWRlbnRpdHk6IGlkZW50aXR5LmlkLFxuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXI6IGFjci5sb2dpblNlcnZlclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB0ZW1wbGF0ZToge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDUFUgYW5kIE1lbW9yeSBjYW4gYmUgbG93ZXIgd2l0aCB3b3JrbG9hZCBwcm9maWxlXG4gICAgICAgICAgICAgICAgICAgICAgICBjcHU6IDAuMjUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnk6ICcwLjVHaScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogYCR7YWNyLmxvZ2luU2VydmVyfS9hdXRvc2NhbGVyOnRlc3RgLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2F1dG9zY2FsZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW52OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnUEFUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjcmV0TmFtZTogJ3BhdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdHSVRIVUJfQ09ORklHX1VSTCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBnaXRodWJDb25maWdVcmwudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0FaVVJFX1RFTkFOVF9JRCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzdWIudGVuYW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdTVUJTQ1JJUFRJT05fSUQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc3ViLnN1YnNjcmlwdGlvbklkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdSRVNPVVJDRV9HUk9VUF9OQU1FJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJnLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0pPQl9OQU1FJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdoYVJ1bm5lckpvYi5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdTQ0FMRV9TRVRfTkFNRScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnYWNhLXJ1bm5lci1zZXQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZXBlbmRzT246IFtcbiAgICAgICAgICAgICAgICBhdXRvc2NhbGVyQ2FjaGVcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsaWZlY3ljbGU6IHtcbiAgICAgICAgICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICd0YWdzJyxcbiAgICAgICAgICAgICAgICAgICAgJ3dvcmtsb2FkX3Byb2ZpbGVfbmFtZSdcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvYXp1cmUtY29udGFpbmVyLWFwcHMvaXNzdWVzLzEwMjRcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IHJvbGUgPSBuZXcgUm9sZURlZmluaXRpb24odGhpcywgJ2pvYlJvbGUnLCB7XG4gICAgICAgICAgICBuYW1lOiBgZ2hhLWV4YW1wbGUtcmV2aXNpb24tc3RhcnQtcm9sZS0ke3JhbmRvbS5yZXN1bHR9YCxcbiAgICAgICAgICAgIHNjb3BlOiBzdWIuaWQsXG4gICAgICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy9zdGFydC9hY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy9zdG9wL2FjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWljcm9zb2Z0LmFwcC9qb2JzL3JlYWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy9leGVjdXRpb25zL3JlYWQnLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBqb2JDcmVhdGlvblJvbGUgPSBuZXcgUm9sZURlZmluaXRpb24odGhpcywgJ2pvYkNyZWF0aW9uUm9sZScsIHtcbiAgICAgICAgICAgIG5hbWU6IGBnaGEtZXhhbXBsZS1yZXZpc2lvbi1jcmVhdGUtcm9sZS0ke3JhbmRvbS5yZXN1bHR9YCxcbiAgICAgICAgICAgIHNjb3BlOiBzdWIuaWQsXG4gICAgICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy9zdGFydC9hY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy9zdG9wL2FjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWljcm9zb2Z0LmFwcC9qb2JzL3JlYWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy93cml0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWljcm9zb2Z0LmFwcC9qb2JzL2V4ZWN1dGlvbnMvcmVhZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWljcm9zb2Z0LmFwcC9tYW5hZ2VkRW52aXJvbm1lbnRzL2pvaW4vYWN0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaWNyb3NvZnQuYXBwL2pvYnMvZGVsZXRlJyAvLyBjbGVhbnVwIGZvciBqb2JzXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIEFsbG93IGF1dG9zY2FsZXIgdG8gY3JlYXRlIG5ldyByZXZpc2lvbiBvZiBhcHBcbiAgICAgICAgbmV3IFJvbGVBc3NpZ25tZW50KHRoaXMsICdzY2FsZUpvYlJvbGVBc3NpZ25tZW50Jywge1xuICAgICAgICAgICAgcHJpbmNpcGFsSWQ6IGF1dG9zY2FsZXJBcHAuaWRlbnRpdHkucHJpbmNpcGFsSWQsXG4gICAgICAgICAgICBzY29wZTogZ2hhUnVubmVySm9iLmlkLFxuICAgICAgICAgICAgcm9sZURlZmluaXRpb25JZDogcm9sZS5yb2xlRGVmaW5pdGlvblJlc291cmNlSWRcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBBbGxvdyBydW5uZXIgdG8gc3RhcnQgdGhlIGpvYi4gQXMgZWFjaCBvbmUgY3JlYXRlZCBuZXcgam9iLCBoYXZlIHRvIGdpdmUgdG8gUkcgbGV2ZWwuXG4gICAgICAgIG5ldyBSb2xlQXNzaWdubWVudCh0aGlzLCAnYWN0aW9uQ29udGFpbmVyU3RhcnRSb2xlQXNzaWdubWVudCcsIHtcbiAgICAgICAgICAgIHByaW5jaXBhbElkOiBpZGVudGl0eS5wcmluY2lwYWxJZCxcbiAgICAgICAgICAgIHNjb3BlOiByZy5pZCxcbiAgICAgICAgICAgIHJvbGVEZWZpbml0aW9uSWQ6IGpvYkNyZWF0aW9uUm9sZS5yb2xlRGVmaW5pdGlvblJlc291cmNlSWRcbiAgICAgICAgfSlcblxuICAgICAgICBuZXcgUm9sZUFzc2lnbm1lbnQodGhpcywgJ2ltYWdlUHVzaFJvbGVBc3NpZ25tZW50Jywge1xuICAgICAgICAgICAgcHJpbmNpcGFsSWQ6IGlkZW50aXR5LnByaW5jaXBhbElkLFxuICAgICAgICAgICAgc2NvcGU6IGFjci5pZCxcbiAgICAgICAgICAgIHJvbGVEZWZpbml0aW9uTmFtZTogJ0FjclB1c2gnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIG5ldyBSb2xlQXNzaWdubWVudCh0aGlzLCAnam9iTG9nUmVhZEFzc2lnbm1lbnQnLCB7XG4gICAgICAgICAgICBwcmluY2lwYWxJZDogaWRlbnRpdHkucHJpbmNpcGFsSWQsXG4gICAgICAgICAgICBzY29wZTogbG9nLmlkLFxuICAgICAgICAgICAgcm9sZURlZmluaXRpb25OYW1lOiAnTG9nIEFuYWx5dGljcyBSZWFkZXInXG4gICAgICAgIH0pXG4gICAgfVxufSJdfQ==
|
|
452
|
+
Azure[_a] = { fqn: "terraform-cdk-serverless-github-actions-runner-controller.Azure", version: "0.0.4" };
|
|
453
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2F6dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkVBQXdFO0FBQ3hFLHFIQUE4RztBQUM5Ryx1RkFBa0Y7QUFDbEYscUdBQStGO0FBQy9GLGlHQUEyRjtBQUMzRixtRUFBc0U7QUFDdEUsK0VBQTBFO0FBQzFFLGlGQUE0RTtBQUM1RSxpRkFBNEU7QUFDNUUsK0ZBQXlGO0FBQ3pGLGtFQUFvRTtBQUNwRSxnRkFBMkU7QUFDM0UsaUNBQTZDO0FBQzdDLDJDQUFzQztBQUN0QyxtR0FBNEY7QUFDNUYsK0RBQWdFO0FBQ2hFLCtEQUEyRDtBQUMzRCwyQ0FBNkM7QUFFN0MsTUFBYSxLQUFNLFNBQVEsc0JBQVM7SUFDbEMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixJQUFJLDBCQUFlLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUNuQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDZixDQUFDLENBQUE7UUFFRixJQUFJLHdCQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVwQyxJQUFJLHlCQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRWxDLE1BQU0sR0FBRyxHQUFHLElBQUksbURBQXVCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUV4RCxNQUFNLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUEsMkJBQWUsRUFBQyxJQUFJLENBQUMsQ0FBQTtRQUV0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLHlCQUFpQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDdkQsT0FBTyxFQUFFLFlBQVk7WUFDckIsV0FBVyxFQUFFLDBDQUEwQztZQUN2RCxJQUFJLEVBQUUsUUFBUTtZ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QUUsU0FBUztTQUM5QixDQUFDLENBQUE7UUFFRixJQUFJLGdDQUFjLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQy9DLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztZQUNqQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDYixrQkFBa0IsRUFBRSxzQkFBc0I7U0FDM0MsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7QUF2ZEgsc0JBd2RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGFpbmVyQXBwIH0gZnJvbSAnQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2NvbnRhaW5lci1hcHAnXG5pbXBvcnQgeyBDb250YWluZXJBcHBFbnZpcm9ubWVudFN0b3JhZ2UgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvY29udGFpbmVyLWFwcC1lbnZpcm9ubWVudC1zdG9yYWdlJ1xuaW1wb3J0IHsgQ29udGFpbmVyUmVnaXN0cnkgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvY29udGFpbmVyLXJlZ2lzdHJ5J1xuaW1wb3J0IHsgRGF0YUF6dXJlcm1TdWJzY3JpcHRpb24gfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvZGF0YS1henVyZXJtLXN1YnNjcmlwdGlvbidcbmltcG9ydCB7IExvZ0FuYWx5dGljc1dvcmtzcGFjZSB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9sb2ctYW5hbHl0aWNzLXdvcmtzcGFjZSdcbmltcG9ydCB7IEF6dXJlcm1Qcm92aWRlciB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9wcm92aWRlcidcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvcmVzb3VyY2UtZ3JvdXAnXG5pbXBvcnQgeyBSb2xlQXNzaWdubWVudCB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9yb2xlLWFzc2lnbm1lbnQnXG5pbXBvcnQgeyBSb2xlRGVmaW5pdGlvbiB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9yb2xlLWRlZmluaXRpb24nXG5pbXBvcnQgeyBVc2VyQXNzaWduZWRJZGVudGl0eSB9IGZyb20gJ0BjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi91c2VyLWFzc2lnbmVkLWlkZW50aXR5J1xuaW1wb3J0IHsgUmFuZG9tUHJvdmlkZXIgfSBmcm9tICdAY2RrdGYvcHJvdmlkZXItcmFuZG9tL2xpYi9wcm92aWRlcidcbmltcG9ydCB7IFN0cmluZ1Jlc291cmNlIH0gZnJvbSAnQGNka3RmL3Byb3ZpZGVyLXJhbmRvbS9saWIvc3RyaW5nLXJlc291cmNlJ1xuaW1wb3J0IHsgRm4sIFRlcnJhZm9ybVZhcmlhYmxlIH0gZnJvbSAnY2RrdGYnXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJ1xuaW1wb3J0IHsgRGF0YUF6YXBpUmVzb3VyY2VBY3Rpb24gfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9hemFwaS9kYXRhLWF6YXBpLXJlc291cmNlLWFjdGlvbidcbmltcG9ydCB7IEF6YXBpUHJvdmlkZXIgfSBmcm9tICcuLi8uZ2VuL3Byb3ZpZGVycy9hemFwaS9wcm92aWRlcidcbmltcG9ydCB7IFJlc291cmNlIH0gZnJvbSAnLi4vLmdlbi9wcm92aWRlcnMvYXphcGkvcmVzb3VyY2UnXG5pbXBvcnQgeyBjb21tb25WYXJpYWJsZXMgfSBmcm9tICcuL3ZhcmlhYmxlcydcblxuZXhwb3J0IGNsYXNzIEF6dXJlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIG5ldyBBenVyZXJtUHJvdmlkZXIodGhpcywgJ2F6dXJlcm0nLCB7XG4gICAgICBmZWF0dXJlczogW3t9XSxcbiAgICB9KVxuXG4gICAgbmV3IEF6YXBpUHJvdmlkZXIodGhpcywgJ2F6YXBpJywge30pXG5cbiAgICBuZXcgUmFuZG9tUHJvdmlkZXIodGhpcywgJ3JhbmRvbScpXG5cbiAgICBjb25zdCBzdWIgPSBuZXcgRGF0YUF6dXJlcm1TdWJzY3JpcHRpb24odGhpcywgJ3N1YicsIHt9KVxuXG4gICAgY29uc3QgeyBwYXQsIGdpdGh1YkNvbmZpZ1VybCB9ID0gY29tbW9uVmFyaWFibGVzKHRoaXMpXG5cbiAgICBjb25zdCBsb2NhdGlvbiA9IG5ldyBUZXJyYWZvcm1WYXJpYWJsZSh0aGlzLCAnbG9jYXRpb24nLCB7XG4gICAgICBkZWZhdWx0OiAnd2VzdGV1cm9wZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIHdoZXJlIHRvIHByb3Zpc2lvbiByZXNvdXJjZXMgdG8nLFxuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICBzZW5zaXRpdmU6IGZhbHNlLFxuICAgICAgbnVsbGFibGU6IGZhbHNlLFxuICAgIH0pLnZhbHVlXG5cbiAgICBjb25zdCByZyA9IG5ldyBSZXNvdXJjZUdyb3VwKHRoaXMsICdyZycsIHtcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgbmFtZTogJ2doYS1ydW5uZXItcmcnLFxuICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFsndGFncyddLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgY29uc3QgcmFuZG9tID0gbmV3IFN0cmluZ1Jlc291cmNlKHRoaXMsICdyYW5kb21TdWZmaXgnLCB7XG4gICAgICBsZW5ndGg6IDYsXG4gICAgICBzcGVjaWFsOiBmYWxzZSxcbiAgICAgIHVwcGVyOiBmYWxzZSxcbiAgICB9KVxuXG4gICAgY29uc3QgYWNyID0gbmV3IENvbnRhaW5lclJlZ2lzdHJ5KHRoaXMsICdhY3InLCB7XG4gICAgICBsb2NhdGlvbixcbiAgICAgIG5hbWU6IGBydW5uZXJhY3Ike3JhbmRvbS5yZXN1bHR9YCxcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiByZy5uYW1lLFxuICAgICAgc2t1OiAnQmFzaWMnLFxuICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFsndGFncyddLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgLy8gdXNlIGNhY2hpbmcgZm9yIGltYWdlc1xuICAgIGNvbnN0IHJ1bm5lckNhY2hlID0gbmV3IFJlc291cmNlKHRoaXMsICdydW5uZXJDYWNoZScsIHtcbiAgICAgIHR5cGU6ICdNaWNyb3NvZnQuQ29udGFpbmVyUmVnaXN0cnkvcmVnaXN0cmllcy9jYWNoZVJ1bGVzQDIwMjMtMDEtMDEtcHJldmlldycsXG4gICAgICBwYXJlbnRJZDogYWNyLmlkLFxuICAgICAgbmFtZTogJ3Jvb3QtcnVubmVyLWNhY2hlJyxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIHNvdXJjZVJlcG9zaXRvcnk6ICdnaGNyLmlvL2hpLWZpL3Jvb3QtYWN0aW9ucy1ydW5uZXInLFxuICAgICAgICAgIHRhcmdldFJlcG9zaXRvcnk6ICdyb290LWFjdGlvbnMtcnVubmVyJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIGNvbnN0IGF1dG9zY2FsZXJDYWNoZSA9IG5ldyBSZXNvdXJjZSh0aGlzLCAnYXV0b3NjYWxlckNhY2hlJywge1xuICAgICAgdHlwZTogJ01pY3Jvc29mdC5Db250YWluZXJSZWdpc3RyeS9yZWdpc3RyaWVzL2NhY2hlUnVsZXNAMjAyMy0wMS0wMS1wcmV2aWV3JyxcbiAgICAgIHBhcmVudElkOiBhY3IuaWQsXG4gICAgICBuYW1lOiAnYXV0b3NjYWxlci1jYWNoZScsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBzb3VyY2VSZXBvc2l0b3J5OiAnZ2hjci5pby9oaS1maS9naGEtcnVubmVycy1vbi1tYW5hZ2VkLWVudicsXG4gICAgICAgICAgdGFyZ2V0UmVwb3NpdG9yeTogJ2F1dG9zY2FsZXInLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgY29uc3QgaWRlbnRpdHkgPSBuZXcgVXNlckFzc2lnbmVkSWRlbnRpdHkodGhpcywgJ2lkZW50aXR5Jywge1xuICAgICAgbG9jYXRpb24sXG4gICAgICBuYW1lOiAnYWNhLWFjci1hY2Nlc3MnLFxuICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHJnLm5hbWUsXG4gICAgICBsaWZlY3ljbGU6IHtcbiAgICAgICAgaWdub3JlQ2hhbmdlczogWyd0YWdzJ10sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBuZXcgUm9sZUFzc2lnbm1lbnQodGhpcywgJ3JvbGVBc3NpZ25tZW50Jywge1xuICAgICAgcHJpbmNpcGFsSWQ6IGlkZW50aXR5LnByaW5jaXBhbElkLFxuICAgICAgc2NvcGU6IGFjci5pZCxcbiAgICAgIHJvbGVEZWZpbml0aW9uTmFtZTogJ0FjclB1bGwnLFxuICAgIH0pXG5cbiAgICBjb25zdCBsb2cgPSBuZXcgTG9nQW5hbHl0aWNzV29ya3NwYWNlKHRoaXMsICdsb2cnLCB7XG4gICAgICBsb2NhdGlvbixcbiAgICAgIG5hbWU6ICdnaGEtZXhhbXBsZS1sb2dzJyxcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiByZy5uYW1lLFxuICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFsndGFncyddLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgY29uc3Qgc3RvcmFnZUFjY291bnQgPSBuZXcgUmVzb3VyY2UodGhpcywgJ3N0b3JhZ2VBY2NvdW50Jywge1xuICAgICAgdHlwZTogJ01pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50c0AyMDIzLTAxLTAxJyxcbiAgICAgIHBhcmVudElkOiByZy5pZCxcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgbmFtZTogYGdoYXN0b3JhZ2VhY2NvdW50JHtyYW5kb20ucmVzdWx0fWAsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBsYXJnZUZpbGVTaGFyZXNTdGF0ZTogJ0VuYWJsZWQnLFxuICAgICAgICB9LFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiAnU3RhbmRhcmRfTFJTJyxcbiAgICAgICAgfSxcbiAgICAgICAga2luZDogJ1N0b3JhZ2VWMicsXG4gICAgICB9LFxuICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFsndGFncyddLFxuICAgICAgfSxcbiAgICAgIHJlc3BvbnNlRXhwb3J0VmFsdWVzOiBbXSxcbiAgICB9KVxuXG4gICAgY29uc3Qgc3RvcmFnZVNoYXJlID0gbmV3IFJlc291cmNlKHRoaXMsICdzdG9yYWdlU2hhcmUnLCB7XG4gICAgICB0eXBlOiAnTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2ZpbGVTZXJ2aWNlcy9zaGFyZXNAMjAyMy0wMS0wMScsXG4gICAgICBuYW1lOiAnZ2hhZXhhbXBsZXNoYXJlJyxcbiAgICAgIHBhcmVudElkOiBgJHtzdG9yYWdlQWNjb3VudC5pZH0vZmlsZVNlcnZpY2VzL2RlZmF1bHRgLFxuICAgICAgYm9keToge1xuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZW5hYmxlZFByb3RvY29sczogJ1NNQicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBjb25zdCBleHRlcm5hbHNTaGFyZSA9IG5ldyBSZXNvdXJjZSh0aGlzLCAnZXh0ZXJuYWxzU2hhcmUnLCB7XG4gICAgICB0eXBlOiAnTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2ZpbGVTZXJ2aWNlcy9zaGFyZXNAMjAyMy0wMS0wMScsXG4gICAgICBuYW1lOiAnZ2hhZXh0ZXJuYWxzc2hhcmUnLFxuICAgICAgcGFyZW50SWQ6IGAke3N0b3JhZ2VBY2NvdW50LmlkfS9maWxlU2VydmljZXMvZGVmYXVsdGAsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBlbmFibGVkUHJvdG9jb2xzOiAnU01CJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIGNvbnN0IGVudmlyb25tZW50ID0gbmV3IFJlc291cmNlKHRoaXMsICdhY2FlbnYnLCB7XG4gICAgICB0eXBlOiAnTWljcm9zb2Z0LkFwcC9tYW5hZ2VkRW52aXJvbm1lbnRzQDIwMjQtMDMtMDEnLFxuICAgICAgcGFyZW50SWQ6IHJnLmlkLFxuICAgICAgbG9jYXRpb24sXG4gICAgICBuYW1lOiAnZ2hhLXJ1bm5lci1lbnZpcm9ubWVudCcsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBhcHBMb2dzQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgZGVzdGluYXRpb246ICdsb2ctYW5hbHl0aWNzJyxcbiAgICAgICAgICAgIGxvZ0FuYWx5dGljc0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgICAgY3VzdG9tZXJJZDogbG9nLndvcmtzcGFjZUlkLFxuICAgICAgICAgICAgICBzaGFyZWRLZXk6IGxvZy5wcmltYXJ5U2hhcmVkS2V5LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluZnJhc3RydWN0dXJlUmVzb3VyY2VHcm91cDogJ21hbmFnZWQtYWNhLXJnJyxcbiAgICAgICAgICB3b3JrbG9hZFByb2ZpbGVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdDb25zdW1wdGlvbicsXG4gICAgICAgICAgICAgIHdvcmtsb2FkUHJvZmlsZVR5cGU6ICdDb25zdW1wdGlvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFsndGFncyddLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgY29uc3Qgc3RvcmFnZUFjY2Vzc0tleSA9IG5ldyBEYXRhQXphcGlSZXNvdXJjZUFjdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICAnc3RvcmFnZUFjY2Vzc0tleXMnLFxuICAgICAge1xuICAgICAgICB0eXBlOiAnTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzQDIwMjMtMDEtMDEnLFxuICAgICAgICBhY3Rpb246ICdsaXN0S2V5cycsXG4gICAgICAgIHJlc291cmNlSWQ6IHN0b3JhZ2VBY2NvdW50LmlkLFxuICAgICAgICByZXNwb25zZUV4cG9ydFZhbHVlczogWycqJ10sXG4gICAgICAgIGRlcGVuZHNPbjogW3N0b3JhZ2VBY2NvdW50XSxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLWNkay9pc3N1ZXMvMTY0MVxuICAgIC8vIEZvciBvbGRlciBBemFwaSB3YXkgdG8gZ2V0IGtleSB3b3VsZCBiZSB0aGlzIHdoZW4gKGRlZmF1bHQpIGRhdGEgb3V0cHV0IHdhcyBqc29uLiBXaXRuIDIuMC4wLWJldGEgZGVmYXVsdCB3YXMgY2hhbmdlZCB0byBIQ0xcbiAgICAvLyBjb25zdCBhY2Nlc3NLZXkgPSBGbi5sb29rdXAoRm4uZWxlbWVudChGbi5sb29rdXAoRm4uanNvbmRlY29kZShzdG9yYWdlQWNjZXNzS2V5Lm91dHB1dCBhcyBhbnkpLCAna2V5cycpLCAwKSwgJ3ZhbHVlJylcblxuICAgIGNvbnN0IGFjY2Vzc0tleSA9IEZuLmxvb2t1cChcbiAgICAgIEZuLmVsZW1lbnQoRm4uZWxlbWVudChzdG9yYWdlQWNjZXNzS2V5Lm91dHB1dC5sb29rdXAoJzAnKSwgMCksIDApLFxuICAgICAgJ3ZhbHVlJyxcbiAgICApXG5cbiAgICBjb25zdCBhY2FFbnZTdG9yYWdlID0gbmV3IENvbnRhaW5lckFwcEVudmlyb25tZW50U3RvcmFnZShcbiAgICAgIHRoaXMsXG4gICAgICAnYWNhZW52c3RvcmFnZScsXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdnaGFydW5uZXJqb2JzdG9yYWdlJyxcbiAgICAgICAgYWNjZXNzS2V5LFxuICAgICAgICBhY2Nlc3NNb2RlOiAnUmVhZFdyaXRlJyxcbiAgICAgICAgYWNjb3VudE5hbWU6IHN0b3JhZ2VBY2NvdW50Lm5hbWUsXG4gICAgICAgIGNvbnRhaW5lckFwcEVudmlyb25tZW50SWQ6IGVudmlyb25tZW50LmlkLFxuICAgICAgICBzaGFyZU5hbWU6IHN0b3JhZ2VTaGFyZS5uYW1lLFxuICAgICAgICBkZXBlbmRzT246IFtcbiAgICAgICAgICAvLyBOYW1lIGRvZXNuJ3QgY3JlYXRlIGRlcGVuZHNPbiByZXF1aXJlbWVudCwgc28gYWRkaW5nIHRoYXQgZXhwbGljaXRseVxuICAgICAgICAgIHN0b3JhZ2VTaGFyZSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgY29uc3QgYWNhRXh0ZXJuYWxTdG9yYWdlID0gbmV3IENvbnRhaW5lckFwcEVudmlyb25tZW50U3RvcmFnZShcbiAgICAgIHRoaXMsXG4gICAgICAnYWNhZXh0ZXJuYWxzdG9yYWdlJyxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2doYXJ1bm5lcmV4dGVybmFsc3RvcmFnZScsXG4gICAgICAgIGFjY2Vzc0tleSxcbiAgICAgICAgYWNjZXNzTW9kZTogJ1JlYWRXcml0ZScsXG4gICAgICAgIGFjY291bnROYW1lOiBzdG9yYWdlQWNjb3VudC5uYW1lLFxuICAgICAgICBjb250YWluZXJBcHBFbnZpcm9ubWVudElkOiBlbnZpcm9ubWVudC5pZCxcbiAgICAgICAgc2hhcmVOYW1lOiBleHRlcm5hbHNTaGFyZS5uYW1lLFxuICAgICAgICBkZXBlbmRzT246IFtcbiAgICAgICAgICAvLyBOYW1lIGRvZXNuJ3QgY3JlYXRlIGRlcGVuZHNPbiByZXF1aXJlbWVudCwgc28gYWRkaW5nIHRoYXQgZXhwbGljaXRseVxuICAgICAgICAgIGV4dGVybmFsc1NoYXJlLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBjb25zdCBydW5uZXJWb2x1bWVOYW1lID0gJ3dvcmsnXG4gICAgY29uc3QgZXh0ZXJuYWxWb2x1bWVOYW1lID0gJ2V4dGVybmFscydcblxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2F6dXJlL3RlbXBsYXRlcy9taWNyb3NvZnQuYXBwL2pvYnM/cGl2b3RzPWRlcGxveW1lbnQtbGFuZ3VhZ2UtdGVycmFmb3JtXG4gICAgICovXG4gICAgY29uc3QgZ2hhUnVubmVySm9iID0gbmV3IFJlc291cmNlKHRoaXMsICdnaGFSdW5uZXJKb2InLCB7XG4gICAgICB0eXBlOiAnTWljcm9zb2Z0LkFwcC9qb2JzQDIwMjQtMDItMDItcHJldmlldycsXG4gICAgICBpZGVudGl0eTogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ1VzZXJBc3NpZ25lZCcsXG4gICAgICAgICAgaWRlbnRpdHlJZHM6IFtpZGVudGl0eS5pZF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgbmFtZTogJ2doYS1ydW5uZXItam9iLTAxJyxcbiAgICAgIHBhcmVudElkOiByZy5pZCxcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgYm9keToge1xuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgbWFudWFsVHJpZ2dlckNvbmZpZzoge1xuICAgICAgICAgICAgICBwYXJhbGxlbGlzbTogMSxcbiAgICAgICAgICAgICAgcmVwbGljYUNvbXBsZXRpb25Db3VudDogMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0cmlnZ2VyVHlwZTogJ01hbnVhbCcsXG4gICAgICAgICAgICByZXBsaWNhVGltZW91dDogMTIwMCxcbiAgICAgICAgICAgIHJlZ2lzdHJpZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkZW50aXR5OiBpZGVudGl0eS5pZCxcbiAgICAgICAgICAgICAgICBzZXJ2ZXI6IGFjci5sb2dpblNlcnZlcixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlbnZpcm9ubWVudElkOiBlbnZpcm9ubWVudC5pZCxcbiAgICAgICAgICB0ZW1wbGF0ZToge1xuICAgICAgICAgICAgY29udGFpbmVyczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzOiB7XG4gICAgICAgICAgICAgICAgICBjcHU6IDEsXG4gICAgICAgICAgICAgICAgICBtZW1vcnk6ICcyR2knLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8gSGF2ZSB0byB1c2UgY3VzdG9tIGltYWdlIGFzIHdlIHdhbnQgdG8gcnVuIHNlcnZpY2UgYXMgcm9vdCB0byBiZSBhYmxlIHRvIGluc3RhbGwgcGFja2FnZXNcbiAgICAgICAgICAgICAgICBpbWFnZTogYCR7YWNyLmxvZ2luU2VydmVyfS9yb290LWFjdGlvbnMtcnVubmVyOmxhdGVzdGAsXG4gICAgICAgICAgICAgICAgbmFtZTogJ21haW4nLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICcvYmluL3NoJyxcbiAgICAgICAgICAgICAgICAgICctYycsXG4gICAgICAgICAgICAgICAgICAnZXhwb3J0IEVYRUNJRD0kKGNhdCAvcHJvYy9zeXMva2VybmVsL3JhbmRvbS91dWlkKSAmJiBta2RpciAtcCAvdG1wL193b3JrLyRFWEVDSUQgJiYgbG4gLXMgL3RtcC9fd29yay8kRVhFQ0lEIF93b3JrICYmIC9ob21lL3J1bm5lci9ydW4uc2ggOyBybSAtciAvdG1wL193b3JrLyRFWEVDSUQnLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgdm9sdW1lTW91bnRzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vdW50UGF0aDogJy90bXAvX3dvcmsnLFxuICAgICAgICAgICAgICAgICAgICB2b2x1bWVOYW1lOiBydW5uZXJWb2x1bWVOYW1lLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbW91bnRQYXRoOiAnL3RtcC9leHRlcm5hbHMnLFxuICAgICAgICAgICAgICAgICAgICB2b2x1bWVOYW1lOiBleHRlcm5hbFZvbHVtZU5hbWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgZW52OiBbXG4gICAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2F6dXJlLWNvbnRhaW5lci1hcHBzL2lzc3Vlcy81MDIjaXNzdWVjb21tZW50LTEzNDAyMjU0MzhcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0FQUFNFVFRJTkdfV0VCU0lURV9TSVRFX05BTUUnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ2lkZW50aXR5LXdvcmthcm91bmQnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvYXp1cmUtY29udGFpbmVyLWFwcHMvaXNzdWVzLzQ0MiNpc3N1ZWNvbW1lbnQtMTY2NTYyMTAzMVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQVpVUkVfQ0xJRU5UX0lEJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGlkZW50aXR5LmNsaWVudElkLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1JHX05BTUUnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmcubmFtZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdMT0dfSUQnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbG9nLndvcmtzcGFjZUlkLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1NUT1JBR0VfTkFNRScsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBhY2FFbnZTdG9yYWdlLm5hbWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnRVhURVJOQUxfU1RPUkFHRV9OQU1FJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGFjYUV4dGVybmFsU3RvcmFnZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1NVQlNDUklQVElPTl9JRCcsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzdWIuc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQUNBX0VOVklST05NRU5UX0lEJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVudmlyb25tZW50LmlkLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHZvbHVtZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IHJ1bm5lclZvbHVtZU5hbWUsXG4gICAgICAgICAgICAgICAgc3RvcmFnZU5hbWU6IGFjYUVudlN0b3JhZ2UubmFtZSxcbiAgICAgICAgICAgICAgICBzdG9yYWdlVHlwZTogJ0F6dXJlRmlsZScsXG4gICAgICAgICAgICAgICAgbW91bnRPcHRpb25zOiAnbWZzeW1saW5rcycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBleHRlcm5hbFZvbHVtZU5hbWUsXG4gICAgICAgICAgICAgICAgc3RvcmFnZU5hbWU6IGFjYUV4dGVybmFsU3RvcmFnZS5uYW1lLFxuICAgICAgICAgICAgICAgIHN0b3JhZ2VUeXBlOiAnQXp1cmVGaWxlJyxcbiAgICAgICAgICAgICAgICBtb3VudE9wdGlvbnM6ICdtZnN5bWxpbmtzJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBkZXBlbmRzT246IFtydW5uZXJDYWNoZV0sXG4gICAgICBsaWZlY3ljbGU6IHtcbiAgICAgICAgaWdub3JlQ2hhbmdlczogWyd0YWdzJ10sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBjb25zdCBhdXRvc2NhbGVyQXBwID0gbmV3IENvbnRhaW5lckFwcCh0aGlzLCAnYXV0b3NjYWxlckFwcCcsIHtcbiAgICAgIGNvbnRhaW5lckFwcEVudmlyb25tZW50SWQ6IGVudmlyb25tZW50LmlkLFxuICAgICAgbmFtZTogJ2F1dG9zY2FsZXItYXBwLTAxJyxcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiByZy5uYW1lLFxuICAgICAgcmV2aXNpb25Nb2RlOiAnU2luZ2xlJyxcbiAgICAgIGlkZW50aXR5OiB7XG4gICAgICAgIHR5cGU6ICdTeXN0ZW1Bc3NpZ25lZCwgVXNlckFzc2lnbmVkJyxcbiAgICAgICAgaWRlbnRpdHlJZHM6IFtpZGVudGl0eS5pZF0sXG4gICAgICB9LFxuICAgICAgc2VjcmV0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAncGF0JyxcbiAgICAgICAgICB2YWx1ZTogcGF0LnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHJlZ2lzdHJ5OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZGVudGl0eTogaWRlbnRpdHkuaWQsXG4gICAgICAgICAgc2VydmVyOiBhY3IubG9naW5TZXJ2ZXIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdGVtcGxhdGU6IHtcbiAgICAgICAgY29udGFpbmVyOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gQ1BVIGFuZCBNZW1vcnkgY2FuIGJlIGxvd2VyIHdpdGggd29ya2xvYWQgcHJvZmlsZVxuICAgICAgICAgICAgY3B1OiAwLjI1LFxuICAgICAgICAgICAgbWVtb3J5OiAnMC41R2knLFxuICAgICAgICAgICAgaW1hZ2U6IGAke2Fjci5sb2dpblNlcnZlcn0vYXV0b3NjYWxlcjp0ZXN0YCxcbiAgICAgICAgICAgIG5hbWU6ICdhdXRvc2NhbGVyJyxcbiAgICAgICAgICAgIGVudjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1BBVCcsXG4gICAgICAgICAgICAgICAgc2VjcmV0TmFtZTogJ3BhdCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnR0lUSFVCX0NPTkZJR19VUkwnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBnaXRodWJDb25maWdVcmwudmFsdWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQVpVUkVfVEVOQU5UX0lEJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogc3ViLnRlbmFudElkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1NVQlNDUklQVElPTl9JRCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHN1Yi5zdWJzY3JpcHRpb25JZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdSRVNPVVJDRV9HUk9VUF9OQU1FJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogcmcubmFtZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdKT0JfTkFNRScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGdoYVJ1bm5lckpvYi5uYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1NDQUxFX1NFVF9OQU1FJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ2FjYS1ydW5uZXItc2V0JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBkZXBlbmRzT246IFthdXRvc2NhbGVyQ2FjaGVdLFxuICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFsndGFncycsICd3b3JrbG9hZF9wcm9maWxlX25hbWUnXSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9henVyZS1jb250YWluZXItYXBwcy9pc3N1ZXMvMTAyNFxuICAgICAqL1xuICAgIGNvbnN0IHJvbGUgPSBuZXcgUm9sZURlZmluaXRpb24odGhpcywgJ2pvYlJvbGUnLCB7XG4gICAgICBuYW1lOiBgZ2hhLWV4YW1wbGUtcmV2aXNpb24tc3RhcnQtcm9sZS0ke3JhbmRvbS5yZXN1bHR9YCxcbiAgICAgIHNjb3BlOiBzdWIuaWQsXG4gICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy9zdGFydC9hY3Rpb24nLFxuICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy9zdG9wL2FjdGlvbicsXG4gICAgICAgICAgICAnbWljcm9zb2Z0LmFwcC9qb2JzL3JlYWQnLFxuICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy9leGVjdXRpb25zL3JlYWQnLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG5cbiAgICBjb25zdCBqb2JDcmVhdGlvblJvbGUgPSBuZXcgUm9sZURlZmluaXRpb24odGhpcywgJ2pvYkNyZWF0aW9uUm9sZScsIHtcbiAgICAgIG5hbWU6IGBnaGEtZXhhbXBsZS1yZXZpc2lvbi1jcmVhdGUtcm9sZS0ke3JhbmRvbS5yZXN1bHR9YCxcbiAgICAgIHNjb3BlOiBzdWIuaWQsXG4gICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy9zdGFydC9hY3Rpb24nLFxuICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy9zdG9wL2FjdGlvbicsXG4gICAgICAgICAgICAnbWljcm9zb2Z0LmFwcC9qb2JzL3JlYWQnLFxuICAgICAgICAgICAgJ21pY3Jvc29mdC5hcHAvam9icy93cml0ZScsXG4gICAgICAgICAgICAnbWljcm9zb2Z0LmFwcC9qb2JzL2V4ZWN1dGlvbnMvcmVhZCcsXG4gICAgICAgICAgICAnbWljcm9zb2Z0LmFwcC9tYW5hZ2VkRW52aXJvbm1lbnRzL2pvaW4vYWN0aW9uJyxcbiAgICAgICAgICAgICdtaWNyb3NvZnQuYXBwL2pvYnMvZGVsZXRlJywgLy8gY2xlYW51cCBmb3Igam9ic1xuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG5cbiAgICAvLyBBbGxvdyBhdXRvc2NhbGVyIHRvIGNyZWF0ZSBuZXcgcmV2aXNpb24gb2YgYXBwXG4gICAgbmV3IFJvbGVBc3NpZ25tZW50KHRoaXMsICdzY2FsZUpvYlJvbGVBc3NpZ25tZW50Jywge1xuICAgICAgcHJpbmNpcGFsSWQ6IGF1dG9zY2FsZXJBcHAuaWRlbnRpdHkucHJpbmNpcGFsSWQsXG4gICAgICBzY29wZTogZ2hhUnVubmVySm9iLmlkLFxuICAgICAgcm9sZURlZmluaXRpb25JZDogcm9sZS5yb2xlRGVmaW5pdGlvblJlc291cmNlSWQsXG4gICAgfSlcblxuICAgIC8vIEFsbG93IHJ1bm5lciB0byBzdGFydCB0aGUgam9iLiBBcyBlYWNoIG9uZSBjcmVhdGVkIG5ldyBqb2IsIGhhdmUgdG8gZ2l2ZSB0byBSRyBsZXZlbC5cbiAgICBuZXcgUm9sZUFzc2lnbm1lbnQodGhpcywgJ2FjdGlvbkNvbnRhaW5lclN0YXJ0Um9sZUFzc2lnbm1lbnQnLCB7XG4gICAgICBwcmluY2lwYWxJZDogaWRlbnRpdHkucHJpbmNpcGFsSWQsXG4gICAgICBzY29wZTogcmcuaWQsXG4gICAgICByb2xlRGVmaW5pdGlvbklkOiBqb2JDcmVhdGlvblJvbGUucm9sZURlZmluaXRpb25SZXNvdXJjZUlkLFxuICAgIH0pXG5cbiAgICBuZXcgUm9sZUFzc2lnbm1lbnQodGhpcywgJ2ltYWdlUHVzaFJvbGVBc3NpZ25tZW50Jywge1xuICAgICAgcHJpbmNpcGFsSWQ6IGlkZW50aXR5LnByaW5jaXBhbElkLFxuICAgICAgc2NvcGU6IGFjci5pZCxcbiAgICAgIHJvbGVEZWZpbml0aW9uTmFtZTogJ0FjclB1c2gnLFxuICAgIH0pXG5cbiAgICBuZXcgUm9sZUFzc2lnbm1lbnQodGhpcywgJ2pvYkxvZ1JlYWRBc3NpZ25tZW50Jywge1xuICAgICAgcHJpbmNpcGFsSWQ6IGlkZW50aXR5LnByaW5jaXBhbElkLFxuICAgICAgc2NvcGU6IGxvZy5pZCxcbiAgICAgIHJvbGVEZWZpbml0aW9uTmFtZTogJ0xvZyBBbmFseXRpY3MgUmVhZGVyJyxcbiAgICB9KVxuICB9XG59XG4iXX0=
|