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/.jsii +19 -2
- package/biome.jsonc +25 -52
- package/lib/index.d.ts +3 -3
- package/lib/index.js +1 -1
- package/lib/lib/aws.d.ts +4 -4
- package/lib/lib/aws.js +145 -145
- package/lib/lib/azure.d.ts +1 -1
- package/lib/lib/azure.js +132 -132
- package/lib/lib/gcp.d.ts +1 -1
- package/lib/lib/gcp.js +82 -82
- package/lib/lib/variables.d.ts +2 -2
- package/lib/lib/variables.js +11 -11
- package/lib/tfModules.js +17 -17
- package/modules/azure-container-apps/README.md +17 -17
- package/modules/azure-container-apps/cdk.tf.json +1 -1
- package/modules/google-cloud-run/README.md +16 -16
- package/modules/google-cloud-run/cdk.tf.json +1 -1
- package/package.json +11 -9
- package/renovate.json5 +2 -2
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,
|
|
27
|
+
new provider_1.AzurermProvider(this, "azurerm", {
|
|
28
28
|
features: [{}],
|
|
29
29
|
});
|
|
30
|
-
new provider_3.AzapiProvider(this,
|
|
31
|
-
new provider_2.RandomProvider(this,
|
|
32
|
-
const sub = new data_azurerm_subscription_1.DataAzurermSubscription(this,
|
|
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,
|
|
35
|
-
default:
|
|
36
|
-
description:
|
|
37
|
-
type:
|
|
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,
|
|
41
|
+
const rg = new resource_group_1.ResourceGroup(this, "rg", {
|
|
42
42
|
location,
|
|
43
|
-
name:
|
|
43
|
+
name: "gha-runner-rg",
|
|
44
44
|
lifecycle: {
|
|
45
|
-
ignoreChanges: [
|
|
45
|
+
ignoreChanges: ["tags"],
|
|
46
46
|
},
|
|
47
47
|
});
|
|
48
|
-
const random = new string_resource_1.StringResource(this,
|
|
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,
|
|
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:
|
|
57
|
+
sku: "Basic",
|
|
58
58
|
lifecycle: {
|
|
59
|
-
ignoreChanges: [
|
|
59
|
+
ignoreChanges: ["tags"],
|
|
60
60
|
},
|
|
61
61
|
});
|
|
62
62
|
// use caching for images
|
|
63
|
-
const runnerCache = new resource_1.Resource(this,
|
|
64
|
-
type:
|
|
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:
|
|
66
|
+
name: "root-runner-cache",
|
|
67
67
|
body: {
|
|
68
68
|
properties: {
|
|
69
|
-
sourceRepository:
|
|
70
|
-
targetRepository:
|
|
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,
|
|
75
|
-
type:
|
|
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:
|
|
77
|
+
name: "autoscaler-cache",
|
|
78
78
|
body: {
|
|
79
79
|
properties: {
|
|
80
|
-
sourceRepository:
|
|
81
|
-
targetRepository:
|
|
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,
|
|
85
|
+
const identity = new user_assigned_identity_1.UserAssignedIdentity(this, "identity", {
|
|
86
86
|
location,
|
|
87
|
-
name:
|
|
87
|
+
name: "aca-acr-access",
|
|
88
88
|
resourceGroupName: rg.name,
|
|
89
89
|
lifecycle: {
|
|
90
|
-
ignoreChanges: [
|
|
90
|
+
ignoreChanges: ["tags"],
|
|
91
91
|
},
|
|
92
92
|
});
|
|
93
|
-
new role_assignment_1.RoleAssignment(this,
|
|
93
|
+
new role_assignment_1.RoleAssignment(this, "roleAssignment", {
|
|
94
94
|
principalId: identity.principalId,
|
|
95
95
|
scope: acr.id,
|
|
96
|
-
roleDefinitionName:
|
|
96
|
+
roleDefinitionName: "AcrPull",
|
|
97
97
|
});
|
|
98
|
-
const log = new log_analytics_workspace_1.LogAnalyticsWorkspace(this,
|
|
98
|
+
const log = new log_analytics_workspace_1.LogAnalyticsWorkspace(this, "log", {
|
|
99
99
|
location,
|
|
100
|
-
name:
|
|
100
|
+
name: "gha-example-logs",
|
|
101
101
|
resourceGroupName: rg.name,
|
|
102
102
|
lifecycle: {
|
|
103
|
-
ignoreChanges: [
|
|
103
|
+
ignoreChanges: ["tags"],
|
|
104
104
|
},
|
|
105
105
|
});
|
|
106
|
-
const storageAccount = new resource_1.Resource(this,
|
|
107
|
-
type:
|
|
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:
|
|
113
|
+
largeFileSharesState: "Enabled",
|
|
114
114
|
},
|
|
115
115
|
sku: {
|
|
116
|
-
name:
|
|
116
|
+
name: "Standard_LRS",
|
|
117
117
|
},
|
|
118
|
-
kind:
|
|
118
|
+
kind: "StorageV2",
|
|
119
119
|
},
|
|
120
120
|
lifecycle: {
|
|
121
|
-
ignoreChanges: [
|
|
121
|
+
ignoreChanges: ["tags"],
|
|
122
122
|
},
|
|
123
123
|
responseExportValues: [],
|
|
124
124
|
});
|
|
125
|
-
const storageShare = new resource_1.Resource(this,
|
|
126
|
-
type:
|
|
127
|
-
name:
|
|
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:
|
|
131
|
+
enabledProtocols: "SMB",
|
|
132
132
|
},
|
|
133
133
|
},
|
|
134
134
|
});
|
|
135
|
-
const externalsShare = new resource_1.Resource(this,
|
|
136
|
-
type:
|
|
137
|
-
name:
|
|
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:
|
|
141
|
+
enabledProtocols: "SMB",
|
|
142
142
|
},
|
|
143
143
|
},
|
|
144
144
|
});
|
|
145
|
-
const environment = new resource_1.Resource(this,
|
|
146
|
-
type:
|
|
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:
|
|
149
|
+
name: "gha-runner-environment",
|
|
150
150
|
body: {
|
|
151
151
|
properties: {
|
|
152
152
|
appLogsConfiguration: {
|
|
153
|
-
destination:
|
|
153
|
+
destination: "log-analytics",
|
|
154
154
|
logAnalyticsConfiguration: {
|
|
155
155
|
customerId: log.workspaceId,
|
|
156
156
|
sharedKey: log.primarySharedKey,
|
|
157
157
|
},
|
|
158
158
|
},
|
|
159
|
-
infrastructureResourceGroup:
|
|
159
|
+
infrastructureResourceGroup: "managed-aca-rg",
|
|
160
160
|
workloadProfiles: [
|
|
161
161
|
{
|
|
162
|
-
name:
|
|
163
|
-
workloadProfileType:
|
|
162
|
+
name: "Consumption",
|
|
163
|
+
workloadProfileType: "Consumption",
|
|
164
164
|
},
|
|
165
165
|
],
|
|
166
166
|
},
|
|
167
167
|
},
|
|
168
168
|
lifecycle: {
|
|
169
|
-
ignoreChanges: [
|
|
169
|
+
ignoreChanges: ["tags"],
|
|
170
170
|
},
|
|
171
171
|
});
|
|
172
|
-
const storageAccessKey = new data_azapi_resource_action_1.DataAzapiResourceAction(this,
|
|
173
|
-
type:
|
|
174
|
-
action:
|
|
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(
|
|
183
|
-
const acaEnvStorage = new container_app_environment_storage_1.ContainerAppEnvironmentStorage(this,
|
|
184
|
-
name:
|
|
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:
|
|
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,
|
|
196
|
-
name:
|
|
195
|
+
const acaExternalStorage = new container_app_environment_storage_1.ContainerAppEnvironmentStorage(this, "acaexternalstorage", {
|
|
196
|
+
name: "gharunnerexternalstorage",
|
|
197
197
|
accessKey,
|
|
198
|
-
accessMode:
|
|
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 =
|
|
208
|
-
const externalVolumeName =
|
|
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,
|
|
213
|
-
type:
|
|
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:
|
|
216
|
+
type: "UserAssigned",
|
|
217
217
|
identityIds: [identity.id],
|
|
218
218
|
},
|
|
219
219
|
],
|
|
220
|
-
name:
|
|
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:
|
|
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:
|
|
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:
|
|
249
|
+
name: "main",
|
|
250
250
|
command: [
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
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:
|
|
257
|
+
mountPath: "/tmp/_work",
|
|
258
258
|
volumeName: runnerVolumeName,
|
|
259
259
|
},
|
|
260
260
|
{
|
|
261
|
-
mountPath:
|
|
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:
|
|
269
|
-
value:
|
|
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:
|
|
273
|
+
name: "AZURE_CLIENT_ID",
|
|
274
274
|
value: identity.clientId,
|
|
275
275
|
},
|
|
276
276
|
{
|
|
277
|
-
name:
|
|
277
|
+
name: "RG_NAME",
|
|
278
278
|
value: rg.name,
|
|
279
279
|
},
|
|
280
280
|
{
|
|
281
|
-
name:
|
|
281
|
+
name: "LOG_ID",
|
|
282
282
|
value: log.workspaceId,
|
|
283
283
|
},
|
|
284
284
|
{
|
|
285
|
-
name:
|
|
285
|
+
name: "STORAGE_NAME",
|
|
286
286
|
value: acaEnvStorage.name,
|
|
287
287
|
},
|
|
288
288
|
{
|
|
289
|
-
name:
|
|
289
|
+
name: "EXTERNAL_STORAGE_NAME",
|
|
290
290
|
value: acaExternalStorage.name,
|
|
291
291
|
},
|
|
292
292
|
{
|
|
293
|
-
name:
|
|
293
|
+
name: "SUBSCRIPTION_ID",
|
|
294
294
|
value: sub.subscriptionId,
|
|
295
295
|
},
|
|
296
296
|
{
|
|
297
|
-
name:
|
|
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:
|
|
308
|
-
mountOptions:
|
|
307
|
+
storageType: "AzureFile",
|
|
308
|
+
mountOptions: "mfsymlinks",
|
|
309
309
|
},
|
|
310
310
|
{
|
|
311
311
|
name: externalVolumeName,
|
|
312
312
|
storageName: acaExternalStorage.name,
|
|
313
|
-
storageType:
|
|
314
|
-
mountOptions:
|
|
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: [
|
|
322
|
+
ignoreChanges: ["tags"],
|
|
323
323
|
},
|
|
324
324
|
});
|
|
325
|
-
const autoscalerApp = new container_app_1.ContainerApp(this,
|
|
325
|
+
const autoscalerApp = new container_app_1.ContainerApp(this, "autoscalerApp", {
|
|
326
326
|
containerAppEnvironmentId: environment.id,
|
|
327
|
-
name:
|
|
327
|
+
name: "autoscaler-app-01",
|
|
328
328
|
resourceGroupName: rg.name,
|
|
329
|
-
revisionMode:
|
|
329
|
+
revisionMode: "Single",
|
|
330
330
|
identity: {
|
|
331
|
-
type:
|
|
331
|
+
type: "SystemAssigned, UserAssigned",
|
|
332
332
|
identityIds: [identity.id],
|
|
333
333
|
},
|
|
334
334
|
secret: [
|
|
335
335
|
{
|
|
336
|
-
name:
|
|
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:
|
|
351
|
+
memory: "0.5Gi",
|
|
352
352
|
image: `${acr.loginServer}/autoscaler:test`,
|
|
353
|
-
name:
|
|
353
|
+
name: "autoscaler",
|
|
354
354
|
env: [
|
|
355
355
|
{
|
|
356
|
-
name:
|
|
357
|
-
secretName:
|
|
356
|
+
name: "PAT",
|
|
357
|
+
secretName: "pat",
|
|
358
358
|
},
|
|
359
359
|
{
|
|
360
|
-
name:
|
|
360
|
+
name: "GITHUB_CONFIG_URL",
|
|
361
361
|
value: githubConfigUrl.value,
|
|
362
362
|
},
|
|
363
363
|
{
|
|
364
|
-
name:
|
|
364
|
+
name: "AZURE_TENANT_ID",
|
|
365
365
|
value: sub.tenantId,
|
|
366
366
|
},
|
|
367
367
|
{
|
|
368
|
-
name:
|
|
368
|
+
name: "SUBSCRIPTION_ID",
|
|
369
369
|
value: sub.subscriptionId,
|
|
370
370
|
},
|
|
371
371
|
{
|
|
372
|
-
name:
|
|
372
|
+
name: "RESOURCE_GROUP_NAME",
|
|
373
373
|
value: rg.name,
|
|
374
374
|
},
|
|
375
375
|
{
|
|
376
|
-
name:
|
|
376
|
+
name: "JOB_NAME",
|
|
377
377
|
value: ghaRunnerJob.name,
|
|
378
378
|
},
|
|
379
379
|
{
|
|
380
|
-
name:
|
|
381
|
-
value:
|
|
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: [
|
|
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,
|
|
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
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
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,
|
|
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
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
438
|
+
new role_assignment_1.RoleAssignment(this, "imagePushRoleAssignment", {
|
|
439
439
|
principalId: identity.principalId,
|
|
440
440
|
scope: acr.id,
|
|
441
|
-
roleDefinitionName:
|
|
441
|
+
roleDefinitionName: "AcrPush",
|
|
442
442
|
});
|
|
443
|
-
new role_assignment_1.RoleAssignment(this,
|
|
443
|
+
new role_assignment_1.RoleAssignment(this, "jobLogReadAssignment", {
|
|
444
444
|
principalId: identity.principalId,
|
|
445
445
|
scope: log.id,
|
|
446
|
-
roleDefinitionName:
|
|
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.
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2F6dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkVBQXlFO0FBQ3pFLHFIQUErRztBQUMvRyx1RkFBbUY7QUFDbkYscUdBQWdHO0FBQ2hHLGlHQUE0RjtBQUM1RixtRUFBdUU7QUFDdkUsK0VBQTJFO0FBQzNFLGlGQUE2RTtBQUM3RSxpRkFBNkU7QUFDN0UsK0ZBQTBGO0FBQzFGLGtFQUFxRTtBQUNyRSxnRkFBNEU7QUFDNUUsaUNBQThDO0FBQzlDLDJDQUF1QztBQUN2QyxtR0FBNkY7QUFDN0YsK0RBQWlFO0FBQ2pFLCtEQUE0RDtBQUM1RCwyQ0FBOEM7QUFFOUMsTUFBYSxLQUFNLFNBQVEsc0JBQVM7SUFDbkMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdkMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLDBCQUFlLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUNwQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDZCxDQUFDLENBQUM7UUFFSCxJQUFJLHdCQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVyQyxJQUFJLHlCQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRW5DLE1BQU0sR0FBRyxHQUFHLElBQUksbURBQXVCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV6RCxNQUFNLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUEsMkJBQWUsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUV2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLHlCQUFpQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDeEQsT0FBTyxFQUFFLFlBQVk7WUFDckIsV0FBVyxFQUFFLDBDQUEwQztZQUN2RCxJQUFJLEVBQUUsUUFBUTtZ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RSxTQUFTO1NBQzdCLENBQUMsQ0FBQztRQUVILElBQUksZ0NBQWMsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7WUFDaEQsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXO1lBQ2pDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNiLGtCQUFrQixFQUFFLHNCQUFzQjtTQUMxQyxDQUFDLENBQUM7SUFDSixDQUFDOztBQXZkRixzQkF3ZEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250YWluZXJBcHAgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2NvbnRhaW5lci1hcHBcIjtcbmltcG9ydCB7IENvbnRhaW5lckFwcEVudmlyb25tZW50U3RvcmFnZSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvY29udGFpbmVyLWFwcC1lbnZpcm9ubWVudC1zdG9yYWdlXCI7XG5pbXBvcnQgeyBDb250YWluZXJSZWdpc3RyeSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvY29udGFpbmVyLXJlZ2lzdHJ5XCI7XG5pbXBvcnQgeyBEYXRhQXp1cmVybVN1YnNjcmlwdGlvbiB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvZGF0YS1henVyZXJtLXN1YnNjcmlwdGlvblwiO1xuaW1wb3J0IHsgTG9nQW5hbHl0aWNzV29ya3NwYWNlIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9sb2ctYW5hbHl0aWNzLXdvcmtzcGFjZVwiO1xuaW1wb3J0IHsgQXp1cmVybVByb3ZpZGVyIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9wcm92aWRlclwiO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvcmVzb3VyY2UtZ3JvdXBcIjtcbmltcG9ydCB7IFJvbGVBc3NpZ25tZW50IH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9yb2xlLWFzc2lnbm1lbnRcIjtcbmltcG9ydCB7IFJvbGVEZWZpbml0aW9uIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9yb2xlLWRlZmluaXRpb25cIjtcbmltcG9ydCB7IFVzZXJBc3NpZ25lZElkZW50aXR5IH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi91c2VyLWFzc2lnbmVkLWlkZW50aXR5XCI7XG5pbXBvcnQgeyBSYW5kb21Qcm92aWRlciB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItcmFuZG9tL2xpYi9wcm92aWRlclwiO1xuaW1wb3J0IHsgU3RyaW5nUmVzb3VyY2UgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLXJhbmRvbS9saWIvc3RyaW5nLXJlc291cmNlXCI7XG5pbXBvcnQgeyBGbiwgVGVycmFmb3JtVmFyaWFibGUgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBEYXRhQXphcGlSZXNvdXJjZUFjdGlvbiB9IGZyb20gXCIuLi8uZ2VuL3Byb3ZpZGVycy9hemFwaS9kYXRhLWF6YXBpLXJlc291cmNlLWFjdGlvblwiO1xuaW1wb3J0IHsgQXphcGlQcm92aWRlciB9IGZyb20gXCIuLi8uZ2VuL3Byb3ZpZGVycy9hemFwaS9wcm92aWRlclwiO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tIFwiLi4vLmdlbi9wcm92aWRlcnMvYXphcGkvcmVzb3VyY2VcIjtcbmltcG9ydCB7IGNvbW1vblZhcmlhYmxlcyB9IGZyb20gXCIuL3ZhcmlhYmxlc1wiO1xuXG5leHBvcnQgY2xhc3MgQXp1cmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXHRjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG5cdFx0c3VwZXIoc2NvcGUsIGlkKTtcblxuXHRcdG5ldyBBenVyZXJtUHJvdmlkZXIodGhpcywgXCJhenVyZXJtXCIsIHtcblx0XHRcdGZlYXR1cmVzOiBbe31dLFxuXHRcdH0pO1xuXG5cdFx0bmV3IEF6YXBpUHJvdmlkZXIodGhpcywgXCJhemFwaVwiLCB7fSk7XG5cblx0XHRuZXcgUmFuZG9tUHJvdmlkZXIodGhpcywgXCJyYW5kb21cIik7XG5cblx0XHRjb25zdCBzdWIgPSBuZXcgRGF0YUF6dXJlcm1TdWJzY3JpcHRpb24odGhpcywgXCJzdWJcIiwge30pO1xuXG5cdFx0Y29uc3QgeyBwYXQsIGdpdGh1YkNvbmZpZ1VybCB9ID0gY29tbW9uVmFyaWFibGVzKHRoaXMpO1xuXG5cdFx0Y29uc3QgbG9jYXRpb24gPSBuZXcgVGVycmFmb3JtVmFyaWFibGUodGhpcywgXCJsb2NhdGlvblwiLCB7XG5cdFx0XHRkZWZhdWx0OiBcIndlc3RldXJvcGVcIixcblx0XHRcdGRlc2NyaXB0aW9uOiBcIkxvY2F0aW9uIHdoZXJlIHRvIHByb3Zpc2lvbiByZXNvdXJjZXMgdG9cIixcblx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRzZW5zaXRpdmU6IGZhbHNlLFxuXHRcdFx0bnVsbGFibGU6IGZhbHNlLFxuXHRcdH0pLnZhbHVlO1xuXG5cdFx0Y29uc3QgcmcgPSBuZXcgUmVzb3VyY2VHcm91cCh0aGlzLCBcInJnXCIsIHtcblx0XHRcdGxvY2F0aW9uLFxuXHRcdFx0bmFtZTogXCJnaGEtcnVubmVyLXJnXCIsXG5cdFx0XHRsaWZlY3ljbGU6IHtcblx0XHRcdFx0aWdub3JlQ2hhbmdlczogW1widGFnc1wiXSxcblx0XHRcdH0sXG5cdFx0fSk7XG5cblx0XHRjb25zdCByYW5kb20gPSBuZXcgU3RyaW5nUmVzb3VyY2UodGhpcywgXCJyYW5kb21TdWZmaXhcIiwge1xuXHRcdFx0bGVuZ3RoOiA2LFxuXHRcdFx0c3BlY2lhbDogZmFsc2UsXG5cdFx0XHR1cHBlcjogZmFsc2UsXG5cdFx0fSk7XG5cblx0XHRjb25zdCBhY3IgPSBuZXcgQ29udGFpbmVyUmVnaXN0cnkodGhpcywgXCJhY3JcIiwge1xuXHRcdFx0bG9jYXRpb24sXG5cdFx0XHRuYW1lOiBgcnVubmVyYWNyJHtyYW5kb20ucmVzdWx0fWAsXG5cdFx0XHRyZXNvdXJjZUdyb3VwTmFtZTogcmcubmFtZSxcblx0XHRcdHNrdTogXCJCYXNpY1wiLFxuXHRcdFx0bGlmZWN5Y2xlOiB7XG5cdFx0XHRcdGlnbm9yZUNoYW5nZXM6IFtcInRhZ3NcIl0sXG5cdFx0XHR9LFxuXHRcdH0pO1xuXG5cdFx0Ly8gdXNlIGNhY2hpbmcgZm9yIGltYWdlc1xuXHRcdGNvbnN0IHJ1bm5lckNhY2hlID0gbmV3IFJlc291cmNlKHRoaXMsIFwicnVubmVyQ2FjaGVcIiwge1xuXHRcdFx0dHlwZTogXCJNaWNyb3NvZnQuQ29udGFpbmVyUmVnaXN0cnkvcmVnaXN0cmllcy9jYWNoZVJ1bGVzQDIwMjMtMDEtMDEtcHJldmlld1wiLFxuXHRcdFx0cGFyZW50SWQ6IGFjci5pZCxcblx0XHRcdG5hbWU6IFwicm9vdC1ydW5uZXItY2FjaGVcIixcblx0XHRcdGJvZHk6IHtcblx0XHRcdFx0cHJvcGVydGllczoge1xuXHRcdFx0XHRcdHNvdXJjZVJlcG9zaXRvcnk6IFwiZ2hjci5pby9oaS1maS9yb290LWFjdGlvbnMtcnVubmVyXCIsXG5cdFx0XHRcdFx0dGFyZ2V0UmVwb3NpdG9yeTogXCJyb290LWFjdGlvbnMtcnVubmVyXCIsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgYXV0b3NjYWxlckNhY2hlID0gbmV3IFJlc291cmNlKHRoaXMsIFwiYXV0b3NjYWxlckNhY2hlXCIsIHtcblx0XHRcdHR5cGU6IFwiTWljcm9zb2Z0LkNvbnRhaW5lclJlZ2lzdHJ5L3JlZ2lzdHJpZXMvY2FjaGVSdWxlc0AyMDIzLTAxLTAxLXByZXZpZXdcIixcblx0XHRcdHBhcmVudElkOiBhY3IuaWQsXG5cdFx0XHRuYW1lOiBcImF1dG9zY2FsZXItY2FjaGVcIixcblx0XHRcdGJvZHk6IHtcblx0XHRcdFx0cHJvcGVydGllczoge1xuXHRcdFx0XHRcdHNvdXJjZVJlcG9zaXRvcnk6IFwiZ2hjci5pby9oaS1maS9naGEtcnVubmVycy1vbi1tYW5hZ2VkLWVudlwiLFxuXHRcdFx0XHRcdHRhcmdldFJlcG9zaXRvcnk6IFwiYXV0b3NjYWxlclwiLFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHR9KTtcblxuXHRcdGNvbnN0IGlkZW50aXR5ID0gbmV3IFVzZXJBc3NpZ25lZElkZW50aXR5KHRoaXMsIFwiaWRlbnRpdHlcIiwge1xuXHRcdFx0bG9jYXRpb24sXG5cdFx0XHRuYW1lOiBcImFjYS1hY3ItYWNjZXNzXCIsXG5cdFx0XHRyZXNvdXJjZUdyb3VwTmFtZTogcmcubmFtZSxcblx0XHRcdGxpZmVjeWNsZToge1xuXHRcdFx0XHRpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCJdLFxuXHRcdFx0fSxcblx0XHR9KTtcblxuXHRcdG5ldyBSb2xlQXNzaWdubWVudCh0aGlzLCBcInJvbGVBc3NpZ25tZW50XCIsIHtcblx0XHRcdHByaW5jaXBhbElkOiBpZGVudGl0eS5wcmluY2lwYWxJZCxcblx0XHRcdHNjb3BlOiBhY3IuaWQsXG5cdFx0XHRyb2xlRGVmaW5pdGlvbk5hbWU6IFwiQWNyUHVsbFwiLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgbG9nID0gbmV3IExvZ0FuYWx5dGljc1dvcmtzcGFjZSh0aGlzLCBcImxvZ1wiLCB7XG5cdFx0XHRsb2NhdGlvbixcblx0XHRcdG5hbWU6IFwiZ2hhLWV4YW1wbGUtbG9nc1wiLFxuXHRcdFx0cmVzb3VyY2VHcm91cE5hbWU6IHJnLm5hbWUsXG5cdFx0XHRsaWZlY3ljbGU6IHtcblx0XHRcdFx0aWdub3JlQ2hhbmdlczogW1widGFnc1wiXSxcblx0XHRcdH0sXG5cdFx0fSk7XG5cblx0XHRjb25zdCBzdG9yYWdlQWNjb3VudCA9IG5ldyBSZXNvdXJjZSh0aGlzLCBcInN0b3JhZ2VBY2NvdW50XCIsIHtcblx0XHRcdHR5cGU6IFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzQDIwMjMtMDEtMDFcIixcblx0XHRcdHBhcmVudElkOiByZy5pZCxcblx0XHRcdGxvY2F0aW9uLFxuXHRcdFx0bmFtZTogYGdoYXN0b3JhZ2VhY2NvdW50JHtyYW5kb20ucmVzdWx0fWAsXG5cdFx0XHRib2R5OiB7XG5cdFx0XHRcdHByb3BlcnRpZXM6IHtcblx0XHRcdFx0XHRsYXJnZUZpbGVTaGFyZXNTdGF0ZTogXCJFbmFibGVkXCIsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNrdToge1xuXHRcdFx0XHRcdG5hbWU6IFwiU3RhbmRhcmRfTFJTXCIsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGtpbmQ6IFwiU3RvcmFnZVYyXCIsXG5cdFx0XHR9LFxuXHRcdFx0bGlmZWN5Y2xlOiB7XG5cdFx0XHRcdGlnbm9yZUNoYW5nZXM6IFtcInRhZ3NcIl0sXG5cdFx0XHR9LFxuXHRcdFx0cmVzcG9uc2VFeHBvcnRWYWx1ZXM6IFtdLFxuXHRcdH0pO1xuXG5cdFx0Y29uc3Qgc3RvcmFnZVNoYXJlID0gbmV3IFJlc291cmNlKHRoaXMsIFwic3RvcmFnZVNoYXJlXCIsIHtcblx0XHRcdHR5cGU6IFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2ZpbGVTZXJ2aWNlcy9zaGFyZXNAMjAyMy0wMS0wMVwiLFxuXHRcdFx0bmFtZTogXCJnaGFleGFtcGxlc2hhcmVcIixcblx0XHRcdHBhcmVudElkOiBgJHtzdG9yYWdlQWNjb3VudC5pZH0vZmlsZVNlcnZpY2VzL2RlZmF1bHRgLFxuXHRcdFx0Ym9keToge1xuXHRcdFx0XHRwcm9wZXJ0aWVzOiB7XG5cdFx0XHRcdFx0ZW5hYmxlZFByb3RvY29sczogXCJTTUJcIixcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0fSk7XG5cblx0XHRjb25zdCBleHRlcm5hbHNTaGFyZSA9IG5ldyBSZXNvdXJjZSh0aGlzLCBcImV4dGVybmFsc1NoYXJlXCIsIHtcblx0XHRcdHR5cGU6IFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2ZpbGVTZXJ2aWNlcy9zaGFyZXNAMjAyMy0wMS0wMVwiLFxuXHRcdFx0bmFtZTogXCJnaGFleHRlcm5hbHNzaGFyZVwiLFxuXHRcdFx0cGFyZW50SWQ6IGAke3N0b3JhZ2VBY2NvdW50LmlkfS9maWxlU2VydmljZXMvZGVmYXVsdGAsXG5cdFx0XHRib2R5OiB7XG5cdFx0XHRcdHByb3BlcnRpZXM6IHtcblx0XHRcdFx0XHRlbmFibGVkUHJvdG9jb2xzOiBcIlNNQlwiLFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHR9KTtcblxuXHRcdGNvbnN0IGVudmlyb25tZW50ID0gbmV3IFJlc291cmNlKHRoaXMsIFwiYWNhZW52XCIsIHtcblx0XHRcdHR5cGU6IFwiTWljcm9zb2Z0LkFwcC9tYW5hZ2VkRW52aXJvbm1lbnRzQDIwMjQtMDMtMDFcIixcblx0XHRcdHBhcmVudElkOiByZy5pZCxcblx0XHRcdGxvY2F0aW9uLFxuXHRcdFx0bmFtZTogXCJnaGEtcnVubmVyLWVudmlyb25tZW50XCIsXG5cdFx0XHRib2R5OiB7XG5cdFx0XHRcdHByb3BlcnRpZXM6IHtcblx0XHRcdFx0XHRhcHBMb2dzQ29uZmlndXJhdGlvbjoge1xuXHRcdFx0XHRcdFx0ZGVzdGluYXRpb246IFwibG9nLWFuYWx5dGljc1wiLFxuXHRcdFx0XHRcdFx0bG9nQW5hbHl0aWNzQ29uZmlndXJhdGlvbjoge1xuXHRcdFx0XHRcdFx0XHRjdXN0b21lcklkOiBsb2cud29ya3NwYWNlSWQsXG5cdFx0XHRcdFx0XHRcdHNoYXJlZEtleTogbG9nLnByaW1hcnlTaGFyZWRLZXksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0aW5mcmFzdHJ1Y3R1cmVSZXNvdXJjZUdyb3VwOiBcIm1hbmFnZWQtYWNhLXJnXCIsXG5cdFx0XHRcdFx0d29ya2xvYWRQcm9maWxlczogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRuYW1lOiBcIkNvbnN1bXB0aW9uXCIsXG5cdFx0XHRcdFx0XHRcdHdvcmtsb2FkUHJvZmlsZVR5cGU6IFwiQ29uc3VtcHRpb25cIixcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHRsaWZlY3ljbGU6IHtcblx0XHRcdFx0aWdub3JlQ2hhbmdlczogW1widGFnc1wiXSxcblx0XHRcdH0sXG5cdFx0fSk7XG5cblx0XHRjb25zdCBzdG9yYWdlQWNjZXNzS2V5ID0gbmV3IERhdGFBemFwaVJlc291cmNlQWN0aW9uKFxuXHRcdFx0dGhpcyxcblx0XHRcdFwic3RvcmFnZUFjY2Vzc0tleXNcIixcblx0XHRcdHtcblx0XHRcdFx0dHlwZTogXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHNAMjAyMy0wMS0wMVwiLFxuXHRcdFx0XHRhY3Rpb246IFwibGlzdEtleXNcIixcblx0XHRcdFx0cmVzb3VyY2VJZDogc3RvcmFnZUFjY291bnQuaWQsXG5cdFx0XHRcdHJlc3BvbnNlRXhwb3J0VmFsdWVzOiBbXCIqXCJdLFxuXHRcdFx0XHRkZXBlbmRzT246IFtzdG9yYWdlQWNjb3VudF0sXG5cdFx0XHR9LFxuXHRcdCk7XG5cblx0XHQvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tY2RrL2lzc3Vlcy8xNjQxXG5cdFx0Ly8gRm9yIG9sZGVyIEF6YXBpIHdheSB0byBnZXQga2V5IHdvdWxkIGJlIHRoaXMgd2hlbiAoZGVmYXVsdCkgZGF0YSBvdXRwdXQgd2FzIGpzb24uIFdpdG4gMi4wLjAtYmV0YSBkZWZhdWx0IHdhcyBjaGFuZ2VkIHRvIEhDTFxuXHRcdC8vIGNvbnN0IGFjY2Vzc0tleSA9IEZuLmxvb2t1cChGbi5lbGVtZW50KEZuLmxvb2t1cChGbi5qc29uZGVjb2RlKHN0b3JhZ2VBY2Nlc3NLZXkub3V0cHV0IGFzIGFueSksICdrZXlzJyksIDApLCAndmFsdWUnKVxuXG5cdFx0Y29uc3QgYWNjZXNzS2V5ID0gRm4ubG9va3VwKFxuXHRcdFx0Rm4uZWxlbWVudChGbi5lbGVtZW50KHN0b3JhZ2VBY2Nlc3NLZXkub3V0cHV0Lmxvb2t1cChcIjBcIiksIDApLCAwKSxcblx0XHRcdFwidmFsdWVcIixcblx0XHQpO1xuXG5cdFx0Y29uc3QgYWNhRW52U3RvcmFnZSA9IG5ldyBDb250YWluZXJBcHBFbnZpcm9ubWVudFN0b3JhZ2UoXG5cdFx0XHR0aGlzLFxuXHRcdFx0XCJhY2FlbnZzdG9yYWdlXCIsXG5cdFx0XHR7XG5cdFx0XHRcdG5hbWU6IFwiZ2hhcnVubmVyam9ic3RvcmFnZVwiLFxuXHRcdFx0XHRhY2Nlc3NLZXksXG5cdFx0XHRcdGFjY2Vzc01vZGU6IFwiUmVhZFdyaXRlXCIsXG5cdFx0XHRcdGFjY291bnROYW1lOiBzdG9yYWdlQWNjb3VudC5uYW1lLFxuXHRcdFx0XHRjb250YWluZXJBcHBFbnZpcm9ubWVudElkOiBlbnZpcm9ubWVudC5pZCxcblx0XHRcdFx0c2hhcmVOYW1lOiBzdG9yYWdlU2hhcmUubmFtZSxcblx0XHRcdFx0ZGVwZW5kc09uOiBbXG5cdFx0XHRcdFx0Ly8gTmFtZSBkb2Vzbid0IGNyZWF0ZSBkZXBlbmRzT24gcmVxdWlyZW1lbnQsIHNvIGFkZGluZyB0aGF0IGV4cGxpY2l0bHlcblx0XHRcdFx0XHRzdG9yYWdlU2hhcmUsXG5cdFx0XHRcdF0sXG5cdFx0XHR9LFxuXHRcdCk7XG5cblx0XHRjb25zdCBhY2FFeHRlcm5hbFN0b3JhZ2UgPSBuZXcgQ29udGFpbmVyQXBwRW52aXJvbm1lbnRTdG9yYWdlKFxuXHRcdFx0dGhpcyxcblx0XHRcdFwiYWNhZXh0ZXJuYWxzdG9yYWdlXCIsXG5cdFx0XHR7XG5cdFx0XHRcdG5hbWU6IFwiZ2hhcnVubmVyZXh0ZXJuYWxzdG9yYWdlXCIsXG5cdFx0XHRcdGFjY2Vzc0tleSxcblx0XHRcdFx0YWNjZXNzTW9kZTogXCJSZWFkV3JpdGVcIixcblx0XHRcdFx0YWNjb3VudE5hbWU6IHN0b3JhZ2VBY2NvdW50Lm5hbWUsXG5cdFx0XHRcdGNvbnRhaW5lckFwcEVudmlyb25tZW50SWQ6IGVudmlyb25tZW50LmlkLFxuXHRcdFx0XHRzaGFyZU5hbWU6IGV4dGVybmFsc1NoYXJlLm5hbWUsXG5cdFx0XHRcdGRlcGVuZHNPbjogW1xuXHRcdFx0XHRcdC8vIE5hbWUgZG9lc24ndCBjcmVhdGUgZGVwZW5kc09uIHJlcXVpcmVtZW50LCBzbyBhZGRpbmcgdGhhdCBleHBsaWNpdGx5XG5cdFx0XHRcdFx0ZXh0ZXJuYWxzU2hhcmUsXG5cdFx0XHRcdF0sXG5cdFx0XHR9LFxuXHRcdCk7XG5cblx0XHRjb25zdCBydW5uZXJWb2x1bWVOYW1lID0gXCJ3b3JrXCI7XG5cdFx0Y29uc3QgZXh0ZXJuYWxWb2x1bWVOYW1lID0gXCJleHRlcm5hbHNcIjtcblxuXHRcdC8qKlxuXHRcdCAqIEBzZWUgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2F6dXJlL3RlbXBsYXRlcy9taWNyb3NvZnQuYXBwL2pvYnM/cGl2b3RzPWRlcGxveW1lbnQtbGFuZ3VhZ2UtdGVycmFmb3JtXG5cdFx0ICovXG5cdFx0Y29uc3QgZ2hhUnVubmVySm9iID0gbmV3IFJlc291cmNlKHRoaXMsIFwiZ2hhUnVubmVySm9iXCIsIHtcblx0XHRcdHR5cGU6IFwiTWljcm9zb2Z0LkFwcC9qb2JzQDIwMjQtMDItMDItcHJldmlld1wiLFxuXHRcdFx0aWRlbnRpdHk6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHR5cGU6IFwiVXNlckFzc2lnbmVkXCIsXG5cdFx0XHRcdFx0aWRlbnRpdHlJZHM6IFtpZGVudGl0eS5pZF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdFx0bmFtZTogXCJnaGEtcnVubmVyLWpvYi0wMVwiLFxuXHRcdFx0cGFyZW50SWQ6IHJnLmlkLFxuXHRcdFx0bG9jYXRpb24sXG5cdFx0XHRib2R5OiB7XG5cdFx0XHRcdHByb3BlcnRpZXM6IHtcblx0XHRcdFx0XHRjb25maWd1cmF0aW9uOiB7XG5cdFx0XHRcdFx0XHRtYW51YWxUcmlnZ2VyQ29uZmlnOiB7XG5cdFx0XHRcdFx0XHRcdHBhcmFsbGVsaXNtOiAxLFxuXHRcdFx0XHRcdFx0XHRyZXBsaWNhQ29tcGxldGlvbkNvdW50OiAxLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHRyaWdnZXJUeXBlOiBcIk1hbnVhbFwiLFxuXHRcdFx0XHRcdFx0cmVwbGljYVRpbWVvdXQ6IDEyMDAsXG5cdFx0XHRcdFx0XHRyZWdpc3RyaWVzOiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRpZGVudGl0eTogaWRlbnRpdHkuaWQsXG5cdFx0XHRcdFx0XHRcdFx0c2VydmVyOiBhY3IubG9naW5TZXJ2ZXIsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZW52aXJvbm1lbnRJZDogZW52aXJvbm1lbnQuaWQsXG5cdFx0XHRcdFx0dGVtcGxhdGU6IHtcblx0XHRcdFx0XHRcdGNvbnRhaW5lcnM6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHJlc291cmNlczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3B1OiAxLFxuXHRcdFx0XHRcdFx0XHRcdFx0bWVtb3J5OiBcIjJHaVwiLFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0Ly8gSGF2ZSB0byB1c2UgY3VzdG9tIGltYWdlIGFzIHdlIHdhbnQgdG8gcnVuIHNlcnZpY2UgYXMgcm9vdCB0byBiZSBhYmxlIHRvIGluc3RhbGwgcGFja2FnZXNcblx0XHRcdFx0XHRcdFx0XHRpbWFnZTogYCR7YWNyLmxvZ2luU2VydmVyfS9yb290LWFjdGlvbnMtcnVubmVyOmxhdGVzdGAsXG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJtYWluXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y29tbWFuZDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0XCIvYmluL3NoXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcIi1jXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcImV4cG9ydCBFWEVDSUQ9JChjYXQgL3Byb2Mvc3lzL2tlcm5lbC9yYW5kb20vdXVpZCkgJiYgbWtkaXIgLXAgL3RtcC9fd29yay8kRVhFQ0lEICYmIGxuIC1zIC90bXAvX3dvcmsvJEVYRUNJRCBfd29yayAmJiAvaG9tZS9ydW5uZXIvcnVuLnNoIDsgcm0gLXIgL3RtcC9fd29yay8kRVhFQ0lEXCIsXG5cdFx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0XHR2b2x1bWVNb3VudHM6IFtcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bW91bnRQYXRoOiBcIi90bXAvX3dvcmtcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0dm9sdW1lTmFtZTogcnVubmVyVm9sdW1lTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG1vdW50UGF0aDogXCIvdG1wL2V4dGVybmFsc1wiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2b2x1bWVOYW1lOiBleHRlcm5hbFZvbHVtZU5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0XHRcdFx0ZW52OiBbXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2F6dXJlLWNvbnRhaW5lci1hcHBzL2lzc3Vlcy81MDIjaXNzdWVjb21tZW50LTEzNDAyMjU0Mzhcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJBUFBTRVRUSU5HX1dFQlNJVEVfU0lURV9OQU1FXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBcImlkZW50aXR5LXdvcmthcm91bmRcIixcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2F6dXJlLWNvbnRhaW5lci1hcHBzL2lzc3Vlcy80NDIjaXNzdWVjb21tZW50LTE2NjU2MjEwMzFcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJBWlVSRV9DTElFTlRfSURcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGlkZW50aXR5LmNsaWVudElkLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJSR19OQU1FXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiByZy5uYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJMT0dfSURcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGxvZy53b3Jrc3BhY2VJZCxcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiU1RPUkFHRV9OQU1FXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhY2FFbnZTdG9yYWdlLm5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiBcIkVYVEVSTkFMX1NUT1JBR0VfTkFNRVwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYWNhRXh0ZXJuYWxTdG9yYWdlLm5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiBcIlNVQlNDUklQVElPTl9JRFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogc3ViLnN1YnNjcmlwdGlvbklkLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJBQ0FfRU5WSVJPTk1FTlRfSURcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGVudmlyb25tZW50LmlkLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdHZvbHVtZXM6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6IHJ1bm5lclZvbHVtZU5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0c3RvcmFnZU5hbWU6IGFjYUVudlN0b3JhZ2UubmFtZSxcblx0XHRcdFx0XHRcdFx0XHRzdG9yYWdlVHlwZTogXCJBenVyZUZpbGVcIixcblx0XHRcdFx0XHRcdFx0XHRtb3VudE9wdGlvbnM6IFwibWZzeW1saW5rc1wiLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogZXh0ZXJuYWxWb2x1bWVOYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHN0b3JhZ2VOYW1lOiBhY2FFeHRlcm5hbFN0b3JhZ2UubmFtZSxcblx0XHRcdFx0XHRcdFx0XHRzdG9yYWdlVHlwZTogXCJBenVyZUZpbGVcIixcblx0XHRcdFx0XHRcdFx0XHRtb3VudE9wdGlvbnM6IFwibWZzeW1saW5rc1wiLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXHRcdFx0fSxcblx0XHRcdGRlcGVuZHNPbjogW3J1bm5lckNhY2hlXSxcblx0XHRcdGxpZmVjeWNsZToge1xuXHRcdFx0XHRpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCJdLFxuXHRcdFx0fSxcblx0XHR9KTtcblxuXHRcdGNvbnN0IGF1dG9zY2FsZXJBcHAgPSBuZXcgQ29udGFpbmVyQXBwKHRoaXMsIFwiYXV0b3NjYWxlckFwcFwiLCB7XG5cdFx0XHRjb250YWluZXJBcHBFbnZpcm9ubWVudElkOiBlbnZpcm9ubWVudC5pZCxcblx0XHRcdG5hbWU6IFwiYXV0b3NjYWxlci1hcHAtMDFcIixcblx0XHRcdHJlc291cmNlR3JvdXBOYW1lOiByZy5uYW1lLFxuXHRcdFx0cmV2aXNpb25Nb2RlOiBcIlNpbmdsZVwiLFxuXHRcdFx0aWRlbnRpdHk6IHtcblx0XHRcdFx0dHlwZTogXCJTeXN0ZW1Bc3NpZ25lZCwgVXNlckFzc2lnbmVkXCIsXG5cdFx0XHRcdGlkZW50aXR5SWRzOiBbaWRlbnRpdHkuaWRdLFxuXHRcdFx0fSxcblx0XHRcdHNlY3JldDogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bmFtZTogXCJwYXRcIixcblx0XHRcdFx0XHR2YWx1ZTogcGF0LnZhbHVlLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHRcdHJlZ2lzdHJ5OiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRpZGVudGl0eTogaWRlbnRpdHkuaWQsXG5cdFx0XHRcdFx0c2VydmVyOiBhY3IubG9naW5TZXJ2ZXIsXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdFx0dGVtcGxhdGU6IHtcblx0XHRcdFx0Y29udGFpbmVyOiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Ly8gQ1BVIGFuZCBNZW1vcnkgY2FuIGJlIGxvd2VyIHdpdGggd29ya2xvYWQgcHJvZmlsZVxuXHRcdFx0XHRcdFx0Y3B1OiAwLjI1LFxuXHRcdFx0XHRcdFx0bWVtb3J5OiBcIjAuNUdpXCIsXG5cdFx0XHRcdFx0XHRpbWFnZTogYCR7YWNyLmxvZ2luU2VydmVyfS9hdXRvc2NhbGVyOnRlc3RgLFxuXHRcdFx0XHRcdFx0bmFtZTogXCJhdXRvc2NhbGVyXCIsXG5cdFx0XHRcdFx0XHRlbnY6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiUEFUXCIsXG5cdFx0XHRcdFx0XHRcdFx0c2VjcmV0TmFtZTogXCJwYXRcIixcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwiR0lUSFVCX0NPTkZJR19VUkxcIixcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZ2l0aHViQ29uZmlnVXJsLnZhbHVlLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJBWlVSRV9URU5BTlRfSURcIixcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogc3ViLnRlbmFudElkLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJTVUJTQ1JJUFRJT05fSURcIixcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogc3ViLnN1YnNjcmlwdGlvbklkLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJSRVNPVVJDRV9HUk9VUF9OQU1FXCIsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHJnLm5hbWUsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiBcIkpPQl9OQU1FXCIsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGdoYVJ1bm5lckpvYi5uYW1lLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJTQ0FMRV9TRVRfTkFNRVwiLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBcImFjYS1ydW5uZXItc2V0XCIsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdF0sXG5cdFx0XHR9LFxuXHRcdFx0ZGVwZW5kc09uOiBbYXV0b3NjYWxlckNhY2hlXSxcblx0XHRcdGxpZmVjeWNsZToge1xuXHRcdFx0XHRpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCIsIFwid29ya2xvYWRfcHJvZmlsZV9uYW1lXCJdLFxuXHRcdFx0fSxcblx0XHR9KTtcblxuXHRcdC8qKlxuXHRcdCAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9henVyZS1jb250YWluZXItYXBwcy9pc3N1ZXMvMTAyNFxuXHRcdCAqL1xuXHRcdGNvbnN0IHJvbGUgPSBuZXcgUm9sZURlZmluaXRpb24odGhpcywgXCJqb2JSb2xlXCIsIHtcblx0XHRcdG5hbWU6IGBnaGEtZXhhbXBsZS1yZXZpc2lvbi1zdGFydC1yb2xlLSR7cmFuZG9tLnJlc3VsdH1gLFxuXHRcdFx0c2NvcGU6IHN1Yi5pZCxcblx0XHRcdHBlcm1pc3Npb25zOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRhY3Rpb25zOiBbXG5cdFx0XHRcdFx0XHRcIm1pY3Jvc29mdC5hcHAvam9icy9zdGFydC9hY3Rpb25cIixcblx0XHRcdFx0XHRcdFwibWljcm9zb2Z0LmFwcC9qb2JzL3N0b3AvYWN0aW9uXCIsXG5cdFx0XHRcdFx0XHRcIm1pY3Jvc29mdC5hcHAvam9icy9yZWFkXCIsXG5cdFx0XHRcdFx0XHRcIm1pY3Jvc29mdC5hcHAvam9icy9leGVjdXRpb25zL3JlYWRcIixcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XSxcblx0XHR9KTtcblxuXHRcdGNvbnN0IGpvYkNyZWF0aW9uUm9sZSA9IG5ldyBSb2xlRGVmaW5pdGlvbih0aGlzLCBcImpvYkNyZWF0aW9uUm9sZVwiLCB7XG5cdFx0XHRuYW1lOiBgZ2hhLWV4YW1wbGUtcmV2aXNpb24tY3JlYXRlLXJvbGUtJHtyYW5kb20ucmVzdWx0fWAsXG5cdFx0XHRzY29wZTogc3ViLmlkLFxuXHRcdFx0cGVybWlzc2lvbnM6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGFjdGlvbnM6IFtcblx0XHRcdFx0XHRcdFwibWljcm9zb2Z0LmFwcC9qb2JzL3N0YXJ0L2FjdGlvblwiLFxuXHRcdFx0XHRcdFx0XCJtaWNyb3NvZnQuYXBwL2pvYnMvc3RvcC9hY3Rpb25cIixcblx0XHRcdFx0XHRcdFwibWljcm9zb2Z0LmFwcC9qb2JzL3JlYWRcIixcblx0XHRcdFx0XHRcdFwibWljcm9zb2Z0LmFwcC9qb2JzL3dyaXRlXCIsXG5cdFx0XHRcdFx0XHRcIm1pY3Jvc29mdC5hcHAvam9icy9leGVjdXRpb25zL3JlYWRcIixcblx0XHRcdFx0XHRcdFwibWljcm9zb2Z0LmFwcC9tYW5hZ2VkRW52aXJvbm1lbnRzL2pvaW4vYWN0aW9uXCIsXG5cdFx0XHRcdFx0XHRcIm1pY3Jvc29mdC5hcHAvam9icy9kZWxldGVcIiwgLy8gY2xlYW51cCBmb3Igam9ic1xuXHRcdFx0XHRcdF0sXG5cdFx0XHRcdH0sXG5cdFx0XHRdLFxuXHRcdH0pO1xuXG5cdFx0Ly8gQWxsb3cgYXV0b3NjYWxlciB0byBjcmVhdGUgbmV3IHJldmlzaW9uIG9mIGFwcFxuXHRcdG5ldyBSb2xlQXNzaWdubWVudCh0aGlzLCBcInNjYWxlSm9iUm9sZUFzc2lnbm1lbnRcIiwge1xuXHRcdFx0cHJpbmNpcGFsSWQ6IGF1dG9zY2FsZXJBcHAuaWRlbnRpdHkucHJpbmNpcGFsSWQsXG5cdFx0XHRzY29wZTogZ2hhUnVubmVySm9iLmlkLFxuXHRcdFx0cm9sZURlZmluaXRpb25JZDogcm9sZS5yb2xlRGVmaW5pdGlvblJlc291cmNlSWQsXG5cdFx0fSk7XG5cblx0XHQvLyBBbGxvdyBydW5uZXIgdG8gc3RhcnQgdGhlIGpvYi4gQXMgZWFjaCBvbmUgY3JlYXRlZCBuZXcgam9iLCBoYXZlIHRvIGdpdmUgdG8gUkcgbGV2ZWwuXG5cdFx0bmV3IFJvbGVBc3NpZ25tZW50KHRoaXMsIFwiYWN0aW9uQ29udGFpbmVyU3RhcnRSb2xlQXNzaWdubWVudFwiLCB7XG5cdFx0XHRwcmluY2lwYWxJZDogaWRlbnRpdHkucHJpbmNpcGFsSWQsXG5cdFx0XHRzY29wZTogcmcuaWQsXG5cdFx0XHRyb2xlRGVmaW5pdGlvbklkOiBqb2JDcmVhdGlvblJvbGUucm9sZURlZmluaXRpb25SZXNvdXJjZUlkLFxuXHRcdH0pO1xuXG5cdFx0bmV3IFJvbGVBc3NpZ25tZW50KHRoaXMsIFwiaW1hZ2VQdXNoUm9sZUFzc2lnbm1lbnRcIiwge1xuXHRcdFx0cHJpbmNpcGFsSWQ6IGlkZW50aXR5LnByaW5jaXBhbElkLFxuXHRcdFx0c2NvcGU6IGFjci5pZCxcblx0XHRcdHJvbGVEZWZpbml0aW9uTmFtZTogXCJBY3JQdXNoXCIsXG5cdFx0fSk7XG5cblx0XHRuZXcgUm9sZUFzc2lnbm1lbnQodGhpcywgXCJqb2JMb2dSZWFkQXNzaWdubWVudFwiLCB7XG5cdFx0XHRwcmluY2lwYWxJZDogaWRlbnRpdHkucHJpbmNpcGFsSWQsXG5cdFx0XHRzY29wZTogbG9nLmlkLFxuXHRcdFx0cm9sZURlZmluaXRpb25OYW1lOiBcIkxvZyBBbmFseXRpY3MgUmVhZGVyXCIsXG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|