@bluedynamics/cdk8s-plone 0.1.31 → 0.1.32
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 +170 -55
- package/API.md +112 -0
- package/documentation/sources/how-to/deploy-with-vinyl-cache.md +27 -0
- package/documentation/sources/reference/configuration-options.md +23 -0
- package/lib/httpcache.js +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/plone.js +1 -1
- package/lib/vinylcache.d.ts +45 -0
- package/lib/vinylcache.js +9 -2
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -1770,7 +1770,7 @@
|
|
|
1770
1770
|
},
|
|
1771
1771
|
"locationInModule": {
|
|
1772
1772
|
"filename": "src/vinylcache.ts",
|
|
1773
|
-
"line":
|
|
1773
|
+
"line": 403
|
|
1774
1774
|
},
|
|
1775
1775
|
"parameters": [
|
|
1776
1776
|
{
|
|
@@ -1796,7 +1796,7 @@
|
|
|
1796
1796
|
"kind": "class",
|
|
1797
1797
|
"locationInModule": {
|
|
1798
1798
|
"filename": "src/vinylcache.ts",
|
|
1799
|
-
"line":
|
|
1799
|
+
"line": 396
|
|
1800
1800
|
},
|
|
1801
1801
|
"name": "PloneVinylCache",
|
|
1802
1802
|
"properties": [
|
|
@@ -1809,7 +1809,7 @@
|
|
|
1809
1809
|
"immutable": true,
|
|
1810
1810
|
"locationInModule": {
|
|
1811
1811
|
"filename": "src/vinylcache.ts",
|
|
1812
|
-
"line":
|
|
1812
|
+
"line": 401
|
|
1813
1813
|
},
|
|
1814
1814
|
"name": "vinylCacheServiceName",
|
|
1815
1815
|
"type": {
|
|
@@ -1831,7 +1831,7 @@
|
|
|
1831
1831
|
"kind": "interface",
|
|
1832
1832
|
"locationInModule": {
|
|
1833
1833
|
"filename": "src/vinylcache.ts",
|
|
1834
|
-
"line":
|
|
1834
|
+
"line": 163
|
|
1835
1835
|
},
|
|
1836
1836
|
"name": "PloneVinylCacheOptions",
|
|
1837
1837
|
"properties": [
|
|
@@ -1845,7 +1845,7 @@
|
|
|
1845
1845
|
"immutable": true,
|
|
1846
1846
|
"locationInModule": {
|
|
1847
1847
|
"filename": "src/vinylcache.ts",
|
|
1848
|
-
"line":
|
|
1848
|
+
"line": 168
|
|
1849
1849
|
},
|
|
1850
1850
|
"name": "plone",
|
|
1851
1851
|
"type": {
|
|
@@ -1862,7 +1862,7 @@
|
|
|
1862
1862
|
"immutable": true,
|
|
1863
1863
|
"locationInModule": {
|
|
1864
1864
|
"filename": "src/vinylcache.ts",
|
|
1865
|
-
"line":
|
|
1865
|
+
"line": 225
|
|
1866
1866
|
},
|
|
1867
1867
|
"name": "director",
|
|
1868
1868
|
"optional": true,
|
|
@@ -1881,7 +1881,7 @@
|
|
|
1881
1881
|
"immutable": true,
|
|
1882
1882
|
"locationInModule": {
|
|
1883
1883
|
"filename": "src/vinylcache.ts",
|
|
1884
|
-
"line":
|
|
1884
|
+
"line": 175
|
|
1885
1885
|
},
|
|
1886
1886
|
"name": "extraBackends",
|
|
1887
1887
|
"optional": true,
|
|
@@ -1904,7 +1904,7 @@
|
|
|
1904
1904
|
"immutable": true,
|
|
1905
1905
|
"locationInModule": {
|
|
1906
1906
|
"filename": "src/vinylcache.ts",
|
|
1907
|
-
"line":
|
|
1907
|
+
"line": 291
|
|
1908
1908
|
},
|
|
1909
1909
|
"name": "image",
|
|
1910
1910
|
"optional": true,
|
|
@@ -1922,7 +1922,7 @@
|
|
|
1922
1922
|
"immutable": true,
|
|
1923
1923
|
"locationInModule": {
|
|
1924
1924
|
"filename": "src/vinylcache.ts",
|
|
1925
|
-
"line":
|
|
1925
|
+
"line": 279
|
|
1926
1926
|
},
|
|
1927
1927
|
"name": "invalidation",
|
|
1928
1928
|
"optional": true,
|
|
@@ -1940,7 +1940,7 @@
|
|
|
1940
1940
|
"immutable": true,
|
|
1941
1941
|
"locationInModule": {
|
|
1942
1942
|
"filename": "src/vinylcache.ts",
|
|
1943
|
-
"line":
|
|
1943
|
+
"line": 199
|
|
1944
1944
|
},
|
|
1945
1945
|
"name": "limitCpu",
|
|
1946
1946
|
"optional": true,
|
|
@@ -1958,7 +1958,7 @@
|
|
|
1958
1958
|
"immutable": true,
|
|
1959
1959
|
"locationInModule": {
|
|
1960
1960
|
"filename": "src/vinylcache.ts",
|
|
1961
|
-
"line":
|
|
1961
|
+
"line": 205
|
|
1962
1962
|
},
|
|
1963
1963
|
"name": "limitMemory",
|
|
1964
1964
|
"optional": true,
|
|
@@ -1976,7 +1976,7 @@
|
|
|
1976
1976
|
"immutable": true,
|
|
1977
1977
|
"locationInModule": {
|
|
1978
1978
|
"filename": "src/vinylcache.ts",
|
|
1979
|
-
"line":
|
|
1979
|
+
"line": 285
|
|
1980
1980
|
},
|
|
1981
1981
|
"name": "monitoring",
|
|
1982
1982
|
"optional": true,
|
|
@@ -1995,7 +1995,7 @@
|
|
|
1995
1995
|
"immutable": true,
|
|
1996
1996
|
"locationInModule": {
|
|
1997
1997
|
"filename": "src/vinylcache.ts",
|
|
1998
|
-
"line":
|
|
1998
|
+
"line": 304
|
|
1999
1999
|
},
|
|
2000
2000
|
"name": "nodeSelector",
|
|
2001
2001
|
"optional": true,
|
|
@@ -2018,7 +2018,7 @@
|
|
|
2018
2018
|
"immutable": true,
|
|
2019
2019
|
"locationInModule": {
|
|
2020
2020
|
"filename": "src/vinylcache.ts",
|
|
2021
|
-
"line":
|
|
2021
|
+
"line": 181
|
|
2022
2022
|
},
|
|
2023
2023
|
"name": "replicas",
|
|
2024
2024
|
"optional": true,
|
|
@@ -2036,7 +2036,7 @@
|
|
|
2036
2036
|
"immutable": true,
|
|
2037
2037
|
"locationInModule": {
|
|
2038
2038
|
"filename": "src/vinylcache.ts",
|
|
2039
|
-
"line":
|
|
2039
|
+
"line": 187
|
|
2040
2040
|
},
|
|
2041
2041
|
"name": "requestCpu",
|
|
2042
2042
|
"optional": true,
|
|
@@ -2054,7 +2054,7 @@
|
|
|
2054
2054
|
"immutable": true,
|
|
2055
2055
|
"locationInModule": {
|
|
2056
2056
|
"filename": "src/vinylcache.ts",
|
|
2057
|
-
"line":
|
|
2057
|
+
"line": 193
|
|
2058
2058
|
},
|
|
2059
2059
|
"name": "requestMemory",
|
|
2060
2060
|
"optional": true,
|
|
@@ -2073,7 +2073,7 @@
|
|
|
2073
2073
|
"immutable": true,
|
|
2074
2074
|
"locationInModule": {
|
|
2075
2075
|
"filename": "src/vinylcache.ts",
|
|
2076
|
-
"line":
|
|
2076
|
+
"line": 234
|
|
2077
2077
|
},
|
|
2078
2078
|
"name": "shardBy",
|
|
2079
2079
|
"optional": true,
|
|
@@ -2092,7 +2092,7 @@
|
|
|
2092
2092
|
"immutable": true,
|
|
2093
2093
|
"locationInModule": {
|
|
2094
2094
|
"filename": "src/vinylcache.ts",
|
|
2095
|
-
"line":
|
|
2095
|
+
"line": 244
|
|
2096
2096
|
},
|
|
2097
2097
|
"name": "shardHealthy",
|
|
2098
2098
|
"optional": true,
|
|
@@ -2111,7 +2111,7 @@
|
|
|
2111
2111
|
"immutable": true,
|
|
2112
2112
|
"locationInModule": {
|
|
2113
2113
|
"filename": "src/vinylcache.ts",
|
|
2114
|
-
"line":
|
|
2114
|
+
"line": 252
|
|
2115
2115
|
},
|
|
2116
2116
|
"name": "shardRampup",
|
|
2117
2117
|
"optional": true,
|
|
@@ -2130,7 +2130,7 @@
|
|
|
2130
2130
|
"immutable": true,
|
|
2131
2131
|
"locationInModule": {
|
|
2132
2132
|
"filename": "src/vinylcache.ts",
|
|
2133
|
-
"line":
|
|
2133
|
+
"line": 259
|
|
2134
2134
|
},
|
|
2135
2135
|
"name": "shardReplicas",
|
|
2136
2136
|
"optional": true,
|
|
@@ -2138,6 +2138,31 @@
|
|
|
2138
2138
|
"primitive": "number"
|
|
2139
2139
|
}
|
|
2140
2140
|
},
|
|
2141
|
+
{
|
|
2142
|
+
"abstract": true,
|
|
2143
|
+
"docs": {
|
|
2144
|
+
"default": "- no storage configured; operator uses varnishd default (~100MB malloc)",
|
|
2145
|
+
"example": "storage: [{ name: 's0', type: 'malloc', size: '1Gi' }]",
|
|
2146
|
+
"remarks": "Each entry becomes a `-s <name>=<type>,<options>` argument to varnishd.\nIf omitted, the operator ships varnishd with its stock default (~100 MB\nmalloc) — almost always too small. Set an explicit malloc size at least\nmatching the pod's memory request to use the allocated memory for caching.",
|
|
2147
|
+
"stability": "stable",
|
|
2148
|
+
"summary": "Varnish storage backends (`spec.storage`)."
|
|
2149
|
+
},
|
|
2150
|
+
"immutable": true,
|
|
2151
|
+
"locationInModule": {
|
|
2152
|
+
"filename": "src/vinylcache.ts",
|
|
2153
|
+
"line": 219
|
|
2154
|
+
},
|
|
2155
|
+
"name": "storage",
|
|
2156
|
+
"optional": true,
|
|
2157
|
+
"type": {
|
|
2158
|
+
"collection": {
|
|
2159
|
+
"elementtype": {
|
|
2160
|
+
"fqn": "@bluedynamics/cdk8s-plone.VinylCacheStorage"
|
|
2161
|
+
},
|
|
2162
|
+
"kind": "array"
|
|
2163
|
+
}
|
|
2164
|
+
}
|
|
2165
|
+
},
|
|
2141
2166
|
{
|
|
2142
2167
|
"abstract": true,
|
|
2143
2168
|
"docs": {
|
|
@@ -2148,7 +2173,7 @@
|
|
|
2148
2173
|
"immutable": true,
|
|
2149
2174
|
"locationInModule": {
|
|
2150
2175
|
"filename": "src/vinylcache.ts",
|
|
2151
|
-
"line":
|
|
2176
|
+
"line": 297
|
|
2152
2177
|
},
|
|
2153
2178
|
"name": "tolerations",
|
|
2154
2179
|
"optional": true,
|
|
@@ -2171,7 +2196,7 @@
|
|
|
2171
2196
|
"immutable": true,
|
|
2172
2197
|
"locationInModule": {
|
|
2173
2198
|
"filename": "src/vinylcache.ts",
|
|
2174
|
-
"line":
|
|
2199
|
+
"line": 376
|
|
2175
2200
|
},
|
|
2176
2201
|
"name": "vclBackendErrorSnippet",
|
|
2177
2202
|
"optional": true,
|
|
@@ -2189,7 +2214,7 @@
|
|
|
2189
2214
|
"immutable": true,
|
|
2190
2215
|
"locationInModule": {
|
|
2191
2216
|
"filename": "src/vinylcache.ts",
|
|
2192
|
-
"line":
|
|
2217
|
+
"line": 370
|
|
2193
2218
|
},
|
|
2194
2219
|
"name": "vclBackendFetchSnippet",
|
|
2195
2220
|
"optional": true,
|
|
@@ -2208,7 +2233,7 @@
|
|
|
2208
2233
|
"immutable": true,
|
|
2209
2234
|
"locationInModule": {
|
|
2210
2235
|
"filename": "src/vinylcache.ts",
|
|
2211
|
-
"line":
|
|
2236
|
+
"line": 273
|
|
2212
2237
|
},
|
|
2213
2238
|
"name": "vclBackendResponseSnippet",
|
|
2214
2239
|
"optional": true,
|
|
@@ -2226,7 +2251,7 @@
|
|
|
2226
2251
|
"immutable": true,
|
|
2227
2252
|
"locationInModule": {
|
|
2228
2253
|
"filename": "src/vinylcache.ts",
|
|
2229
|
-
"line":
|
|
2254
|
+
"line": 310
|
|
2230
2255
|
},
|
|
2231
2256
|
"name": "vclDeliverSnippet",
|
|
2232
2257
|
"optional": true,
|
|
@@ -2244,7 +2269,7 @@
|
|
|
2244
2269
|
"immutable": true,
|
|
2245
2270
|
"locationInModule": {
|
|
2246
2271
|
"filename": "src/vinylcache.ts",
|
|
2247
|
-
"line":
|
|
2272
|
+
"line": 364
|
|
2248
2273
|
},
|
|
2249
2274
|
"name": "vclFiniSnippet",
|
|
2250
2275
|
"optional": true,
|
|
@@ -2262,7 +2287,7 @@
|
|
|
2262
2287
|
"immutable": true,
|
|
2263
2288
|
"locationInModule": {
|
|
2264
2289
|
"filename": "src/vinylcache.ts",
|
|
2265
|
-
"line":
|
|
2290
|
+
"line": 352
|
|
2266
2291
|
},
|
|
2267
2292
|
"name": "vclHashSnippet",
|
|
2268
2293
|
"optional": true,
|
|
@@ -2280,7 +2305,7 @@
|
|
|
2280
2305
|
"immutable": true,
|
|
2281
2306
|
"locationInModule": {
|
|
2282
2307
|
"filename": "src/vinylcache.ts",
|
|
2283
|
-
"line":
|
|
2308
|
+
"line": 316
|
|
2284
2309
|
},
|
|
2285
2310
|
"name": "vclHitSnippet",
|
|
2286
2311
|
"optional": true,
|
|
@@ -2298,7 +2323,7 @@
|
|
|
2298
2323
|
"immutable": true,
|
|
2299
2324
|
"locationInModule": {
|
|
2300
2325
|
"filename": "src/vinylcache.ts",
|
|
2301
|
-
"line":
|
|
2326
|
+
"line": 358
|
|
2302
2327
|
},
|
|
2303
2328
|
"name": "vclInitSnippet",
|
|
2304
2329
|
"optional": true,
|
|
@@ -2316,7 +2341,7 @@
|
|
|
2316
2341
|
"immutable": true,
|
|
2317
2342
|
"locationInModule": {
|
|
2318
2343
|
"filename": "src/vinylcache.ts",
|
|
2319
|
-
"line":
|
|
2344
|
+
"line": 322
|
|
2320
2345
|
},
|
|
2321
2346
|
"name": "vclMissSnippet",
|
|
2322
2347
|
"optional": true,
|
|
@@ -2334,7 +2359,7 @@
|
|
|
2334
2359
|
"immutable": true,
|
|
2335
2360
|
"locationInModule": {
|
|
2336
2361
|
"filename": "src/vinylcache.ts",
|
|
2337
|
-
"line":
|
|
2362
|
+
"line": 328
|
|
2338
2363
|
},
|
|
2339
2364
|
"name": "vclPassSnippet",
|
|
2340
2365
|
"optional": true,
|
|
@@ -2352,7 +2377,7 @@
|
|
|
2352
2377
|
"immutable": true,
|
|
2353
2378
|
"locationInModule": {
|
|
2354
2379
|
"filename": "src/vinylcache.ts",
|
|
2355
|
-
"line":
|
|
2380
|
+
"line": 334
|
|
2356
2381
|
},
|
|
2357
2382
|
"name": "vclPipeSnippet",
|
|
2358
2383
|
"optional": true,
|
|
@@ -2370,7 +2395,7 @@
|
|
|
2370
2395
|
"immutable": true,
|
|
2371
2396
|
"locationInModule": {
|
|
2372
2397
|
"filename": "src/vinylcache.ts",
|
|
2373
|
-
"line":
|
|
2398
|
+
"line": 346
|
|
2374
2399
|
},
|
|
2375
2400
|
"name": "vclPurgeSnippet",
|
|
2376
2401
|
"optional": true,
|
|
@@ -2389,7 +2414,7 @@
|
|
|
2389
2414
|
"immutable": true,
|
|
2390
2415
|
"locationInModule": {
|
|
2391
2416
|
"filename": "src/vinylcache.ts",
|
|
2392
|
-
"line":
|
|
2417
|
+
"line": 266
|
|
2393
2418
|
},
|
|
2394
2419
|
"name": "vclRecvSnippet",
|
|
2395
2420
|
"optional": true,
|
|
@@ -2407,7 +2432,7 @@
|
|
|
2407
2432
|
"immutable": true,
|
|
2408
2433
|
"locationInModule": {
|
|
2409
2434
|
"filename": "src/vinylcache.ts",
|
|
2410
|
-
"line":
|
|
2435
|
+
"line": 340
|
|
2411
2436
|
},
|
|
2412
2437
|
"name": "vclSynthSnippet",
|
|
2413
2438
|
"optional": true,
|
|
@@ -2429,7 +2454,7 @@
|
|
|
2429
2454
|
"kind": "interface",
|
|
2430
2455
|
"locationInModule": {
|
|
2431
2456
|
"filename": "src/vinylcache.ts",
|
|
2432
|
-
"line":
|
|
2457
|
+
"line": 62
|
|
2433
2458
|
},
|
|
2434
2459
|
"name": "VinylCacheBackend",
|
|
2435
2460
|
"properties": [
|
|
@@ -2443,7 +2468,7 @@
|
|
|
2443
2468
|
"immutable": true,
|
|
2444
2469
|
"locationInModule": {
|
|
2445
2470
|
"filename": "src/vinylcache.ts",
|
|
2446
|
-
"line":
|
|
2471
|
+
"line": 66
|
|
2447
2472
|
},
|
|
2448
2473
|
"name": "name",
|
|
2449
2474
|
"type": {
|
|
@@ -2459,7 +2484,7 @@
|
|
|
2459
2484
|
"immutable": true,
|
|
2460
2485
|
"locationInModule": {
|
|
2461
2486
|
"filename": "src/vinylcache.ts",
|
|
2462
|
-
"line":
|
|
2487
|
+
"line": 76
|
|
2463
2488
|
},
|
|
2464
2489
|
"name": "port",
|
|
2465
2490
|
"type": {
|
|
@@ -2475,7 +2500,7 @@
|
|
|
2475
2500
|
"immutable": true,
|
|
2476
2501
|
"locationInModule": {
|
|
2477
2502
|
"filename": "src/vinylcache.ts",
|
|
2478
|
-
"line":
|
|
2503
|
+
"line": 71
|
|
2479
2504
|
},
|
|
2480
2505
|
"name": "serviceName",
|
|
2481
2506
|
"type": {
|
|
@@ -2492,7 +2517,7 @@
|
|
|
2492
2517
|
"immutable": true,
|
|
2493
2518
|
"locationInModule": {
|
|
2494
2519
|
"filename": "src/vinylcache.ts",
|
|
2495
|
-
"line":
|
|
2520
|
+
"line": 82
|
|
2496
2521
|
},
|
|
2497
2522
|
"name": "probe",
|
|
2498
2523
|
"optional": true,
|
|
@@ -2511,7 +2536,7 @@
|
|
|
2511
2536
|
"immutable": true,
|
|
2512
2537
|
"locationInModule": {
|
|
2513
2538
|
"filename": "src/vinylcache.ts",
|
|
2514
|
-
"line":
|
|
2539
|
+
"line": 88
|
|
2515
2540
|
},
|
|
2516
2541
|
"name": "weight",
|
|
2517
2542
|
"optional": true,
|
|
@@ -2533,7 +2558,7 @@
|
|
|
2533
2558
|
"kind": "interface",
|
|
2534
2559
|
"locationInModule": {
|
|
2535
2560
|
"filename": "src/vinylcache.ts",
|
|
2536
|
-
"line":
|
|
2561
|
+
"line": 21
|
|
2537
2562
|
},
|
|
2538
2563
|
"name": "VinylCacheBackendProbe",
|
|
2539
2564
|
"properties": [
|
|
@@ -2547,7 +2572,7 @@
|
|
|
2547
2572
|
"immutable": true,
|
|
2548
2573
|
"locationInModule": {
|
|
2549
2574
|
"filename": "src/vinylcache.ts",
|
|
2550
|
-
"line":
|
|
2575
|
+
"line": 56
|
|
2551
2576
|
},
|
|
2552
2577
|
"name": "expectedResponse",
|
|
2553
2578
|
"optional": true,
|
|
@@ -2565,7 +2590,7 @@
|
|
|
2565
2590
|
"immutable": true,
|
|
2566
2591
|
"locationInModule": {
|
|
2567
2592
|
"filename": "src/vinylcache.ts",
|
|
2568
|
-
"line":
|
|
2593
|
+
"line": 32
|
|
2569
2594
|
},
|
|
2570
2595
|
"name": "interval",
|
|
2571
2596
|
"optional": true,
|
|
@@ -2583,7 +2608,7 @@
|
|
|
2583
2608
|
"immutable": true,
|
|
2584
2609
|
"locationInModule": {
|
|
2585
2610
|
"filename": "src/vinylcache.ts",
|
|
2586
|
-
"line":
|
|
2611
|
+
"line": 50
|
|
2587
2612
|
},
|
|
2588
2613
|
"name": "threshold",
|
|
2589
2614
|
"optional": true,
|
|
@@ -2601,7 +2626,7 @@
|
|
|
2601
2626
|
"immutable": true,
|
|
2602
2627
|
"locationInModule": {
|
|
2603
2628
|
"filename": "src/vinylcache.ts",
|
|
2604
|
-
"line":
|
|
2629
|
+
"line": 38
|
|
2605
2630
|
},
|
|
2606
2631
|
"name": "timeout",
|
|
2607
2632
|
"optional": true,
|
|
@@ -2619,7 +2644,7 @@
|
|
|
2619
2644
|
"immutable": true,
|
|
2620
2645
|
"locationInModule": {
|
|
2621
2646
|
"filename": "src/vinylcache.ts",
|
|
2622
|
-
"line":
|
|
2647
|
+
"line": 26
|
|
2623
2648
|
},
|
|
2624
2649
|
"name": "url",
|
|
2625
2650
|
"optional": true,
|
|
@@ -2637,7 +2662,7 @@
|
|
|
2637
2662
|
"immutable": true,
|
|
2638
2663
|
"locationInModule": {
|
|
2639
2664
|
"filename": "src/vinylcache.ts",
|
|
2640
|
-
"line":
|
|
2665
|
+
"line": 44
|
|
2641
2666
|
},
|
|
2642
2667
|
"name": "window",
|
|
2643
2668
|
"optional": true,
|
|
@@ -2648,6 +2673,96 @@
|
|
|
2648
2673
|
],
|
|
2649
2674
|
"symbolId": "src/vinylcache:VinylCacheBackendProbe"
|
|
2650
2675
|
},
|
|
2676
|
+
"@bluedynamics/cdk8s-plone.VinylCacheStorage": {
|
|
2677
|
+
"assembly": "@bluedynamics/cdk8s-plone",
|
|
2678
|
+
"datatype": true,
|
|
2679
|
+
"docs": {
|
|
2680
|
+
"remarks": "Maps to `spec.storage[]` on the VinylCache CRD. The operator emits one\n`-s <name>=<type>,<options>` argument per entry to varnishd.\n\nWithout any storage entry the operator falls back to the varnishd default\n(~100 MB malloc), which is almost always too small for real workloads.",
|
|
2681
|
+
"stability": "stable",
|
|
2682
|
+
"summary": "A Varnish storage backend configuration."
|
|
2683
|
+
},
|
|
2684
|
+
"fqn": "@bluedynamics/cdk8s-plone.VinylCacheStorage",
|
|
2685
|
+
"kind": "interface",
|
|
2686
|
+
"locationInModule": {
|
|
2687
|
+
"filename": "src/vinylcache.ts",
|
|
2688
|
+
"line": 100
|
|
2689
|
+
},
|
|
2690
|
+
"name": "VinylCacheStorage",
|
|
2691
|
+
"properties": [
|
|
2692
|
+
{
|
|
2693
|
+
"abstract": true,
|
|
2694
|
+
"docs": {
|
|
2695
|
+
"remarks": "Must be unique within the VinylCache and match `^[a-zA-Z][a-zA-Z0-9_]*$`.",
|
|
2696
|
+
"stability": "stable",
|
|
2697
|
+
"summary": "Internal storage identifier used in the varnishd `-s` argument."
|
|
2698
|
+
},
|
|
2699
|
+
"immutable": true,
|
|
2700
|
+
"locationInModule": {
|
|
2701
|
+
"filename": "src/vinylcache.ts",
|
|
2702
|
+
"line": 105
|
|
2703
|
+
},
|
|
2704
|
+
"name": "name",
|
|
2705
|
+
"type": {
|
|
2706
|
+
"primitive": "string"
|
|
2707
|
+
}
|
|
2708
|
+
},
|
|
2709
|
+
{
|
|
2710
|
+
"abstract": true,
|
|
2711
|
+
"docs": {
|
|
2712
|
+
"remarks": "Only \"malloc\" and \"file\" are permitted by the\nadmission webhook.",
|
|
2713
|
+
"stability": "stable",
|
|
2714
|
+
"summary": "Storage backend type."
|
|
2715
|
+
},
|
|
2716
|
+
"immutable": true,
|
|
2717
|
+
"locationInModule": {
|
|
2718
|
+
"filename": "src/vinylcache.ts",
|
|
2719
|
+
"line": 111
|
|
2720
|
+
},
|
|
2721
|
+
"name": "type",
|
|
2722
|
+
"type": {
|
|
2723
|
+
"primitive": "string"
|
|
2724
|
+
}
|
|
2725
|
+
},
|
|
2726
|
+
{
|
|
2727
|
+
"abstract": true,
|
|
2728
|
+
"docs": {
|
|
2729
|
+
"default": "- required for type \"file\"",
|
|
2730
|
+
"remarks": "Ignored for malloc.",
|
|
2731
|
+
"stability": "stable",
|
|
2732
|
+
"summary": "Filesystem path for file-type storage."
|
|
2733
|
+
},
|
|
2734
|
+
"immutable": true,
|
|
2735
|
+
"locationInModule": {
|
|
2736
|
+
"filename": "src/vinylcache.ts",
|
|
2737
|
+
"line": 124
|
|
2738
|
+
},
|
|
2739
|
+
"name": "path",
|
|
2740
|
+
"optional": true,
|
|
2741
|
+
"type": {
|
|
2742
|
+
"primitive": "string"
|
|
2743
|
+
}
|
|
2744
|
+
},
|
|
2745
|
+
{
|
|
2746
|
+
"abstract": true,
|
|
2747
|
+
"docs": {
|
|
2748
|
+
"default": "- required for both malloc and file",
|
|
2749
|
+
"stability": "stable",
|
|
2750
|
+
"summary": "Storage allocation as a Kubernetes resource quantity (e.g. \"1Gi\", \"500M\"). Required for malloc; required for file."
|
|
2751
|
+
},
|
|
2752
|
+
"immutable": true,
|
|
2753
|
+
"locationInModule": {
|
|
2754
|
+
"filename": "src/vinylcache.ts",
|
|
2755
|
+
"line": 118
|
|
2756
|
+
},
|
|
2757
|
+
"name": "size",
|
|
2758
|
+
"optional": true,
|
|
2759
|
+
"type": {
|
|
2760
|
+
"primitive": "string"
|
|
2761
|
+
}
|
|
2762
|
+
}
|
|
2763
|
+
],
|
|
2764
|
+
"symbolId": "src/vinylcache:VinylCacheStorage"
|
|
2765
|
+
},
|
|
2651
2766
|
"@bluedynamics/cdk8s-plone.VinylCacheToleration": {
|
|
2652
2767
|
"assembly": "@bluedynamics/cdk8s-plone",
|
|
2653
2768
|
"datatype": true,
|
|
@@ -2659,7 +2774,7 @@
|
|
|
2659
2774
|
"kind": "interface",
|
|
2660
2775
|
"locationInModule": {
|
|
2661
2776
|
"filename": "src/vinylcache.ts",
|
|
2662
|
-
"line":
|
|
2777
|
+
"line": 130
|
|
2663
2778
|
},
|
|
2664
2779
|
"name": "VinylCacheToleration",
|
|
2665
2780
|
"properties": [
|
|
@@ -2672,7 +2787,7 @@
|
|
|
2672
2787
|
"immutable": true,
|
|
2673
2788
|
"locationInModule": {
|
|
2674
2789
|
"filename": "src/vinylcache.ts",
|
|
2675
|
-
"line":
|
|
2790
|
+
"line": 134
|
|
2676
2791
|
},
|
|
2677
2792
|
"name": "key",
|
|
2678
2793
|
"type": {
|
|
@@ -2689,7 +2804,7 @@
|
|
|
2689
2804
|
"immutable": true,
|
|
2690
2805
|
"locationInModule": {
|
|
2691
2806
|
"filename": "src/vinylcache.ts",
|
|
2692
|
-
"line":
|
|
2807
|
+
"line": 152
|
|
2693
2808
|
},
|
|
2694
2809
|
"name": "effect",
|
|
2695
2810
|
"optional": true,
|
|
@@ -2707,7 +2822,7 @@
|
|
|
2707
2822
|
"immutable": true,
|
|
2708
2823
|
"locationInModule": {
|
|
2709
2824
|
"filename": "src/vinylcache.ts",
|
|
2710
|
-
"line":
|
|
2825
|
+
"line": 140
|
|
2711
2826
|
},
|
|
2712
2827
|
"name": "operator",
|
|
2713
2828
|
"optional": true,
|
|
@@ -2725,7 +2840,7 @@
|
|
|
2725
2840
|
"immutable": true,
|
|
2726
2841
|
"locationInModule": {
|
|
2727
2842
|
"filename": "src/vinylcache.ts",
|
|
2728
|
-
"line":
|
|
2843
|
+
"line": 146
|
|
2729
2844
|
},
|
|
2730
2845
|
"name": "value",
|
|
2731
2846
|
"optional": true,
|
|
@@ -2737,6 +2852,6 @@
|
|
|
2737
2852
|
"symbolId": "src/vinylcache:VinylCacheToleration"
|
|
2738
2853
|
}
|
|
2739
2854
|
},
|
|
2740
|
-
"version": "0.1.
|
|
2741
|
-
"fingerprint": "
|
|
2855
|
+
"version": "0.1.32",
|
|
2856
|
+
"fingerprint": "UtpnYb4U3+2cbpSPwGNwdRDrnD4wpEZhJk90IEqXe88="
|
|
2742
2857
|
}
|
package/API.md
CHANGED
|
@@ -1798,6 +1798,7 @@ const ploneVinylCacheOptions: PloneVinylCacheOptions = { ... }
|
|
|
1798
1798
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardHealthy">shardHealthy</a></code> | <code>string</code> | Shard director: which backends the director considers when selecting a shard. |
|
|
1799
1799
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardRampup">shardRampup</a></code> | <code>string</code> | Shard director: time after adding a backend before it receives its full share of traffic, preventing thundering-herd. |
|
|
1800
1800
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.shardReplicas">shardReplicas</a></code> | <code>number</code> | Shard director: number of Ketama replicas per backend in the hash ring. |
|
|
1801
|
+
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.storage">storage</a></code> | <code><a href="#@bluedynamics/cdk8s-plone.VinylCacheStorage">VinylCacheStorage</a>[]</code> | Varnish storage backends (`spec.storage`). |
|
|
1801
1802
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.tolerations">tolerations</a></code> | <code><a href="#@bluedynamics/cdk8s-plone.VinylCacheToleration">VinylCacheToleration</a>[]</code> | Tolerations for the Varnish pods. |
|
|
1802
1803
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.vclBackendErrorSnippet">vclBackendErrorSnippet</a></code> | <code>string</code> | Custom VCL snippet for vcl_backend_error subroutine. |
|
|
1803
1804
|
| <code><a href="#@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.vclBackendFetchSnippet">vclBackendFetchSnippet</a></code> | <code>string</code> | Custom VCL snippet for vcl_backend_fetch subroutine. |
|
|
@@ -2042,6 +2043,31 @@ Only applied when director is "shard".
|
|
|
2042
2043
|
|
|
2043
2044
|
---
|
|
2044
2045
|
|
|
2046
|
+
##### `storage`<sup>Optional</sup> <a name="storage" id="@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.storage"></a>
|
|
2047
|
+
|
|
2048
|
+
```typescript
|
|
2049
|
+
public readonly storage: VinylCacheStorage[];
|
|
2050
|
+
```
|
|
2051
|
+
|
|
2052
|
+
- *Type:* <a href="#@bluedynamics/cdk8s-plone.VinylCacheStorage">VinylCacheStorage</a>[]
|
|
2053
|
+
- *Default:* no storage configured; operator uses varnishd default (~100MB malloc)
|
|
2054
|
+
|
|
2055
|
+
Varnish storage backends (`spec.storage`).
|
|
2056
|
+
|
|
2057
|
+
Each entry becomes a `-s <name>=<type>,<options>` argument to varnishd.
|
|
2058
|
+
If omitted, the operator ships varnishd with its stock default (~100 MB
|
|
2059
|
+
malloc) — almost always too small. Set an explicit malloc size at least
|
|
2060
|
+
matching the pod's memory request to use the allocated memory for caching.
|
|
2061
|
+
|
|
2062
|
+
---
|
|
2063
|
+
|
|
2064
|
+
*Example*
|
|
2065
|
+
|
|
2066
|
+
```typescript
|
|
2067
|
+
storage: [{ name: 's0', type: 'malloc', size: '1Gi' }]
|
|
2068
|
+
```
|
|
2069
|
+
|
|
2070
|
+
|
|
2045
2071
|
##### `tolerations`<sup>Optional</sup> <a name="tolerations" id="@bluedynamics/cdk8s-plone.PloneVinylCacheOptions.property.tolerations"></a>
|
|
2046
2072
|
|
|
2047
2073
|
```typescript
|
|
@@ -2434,6 +2460,92 @@ Number of most recent probes to consider.
|
|
|
2434
2460
|
|
|
2435
2461
|
---
|
|
2436
2462
|
|
|
2463
|
+
### VinylCacheStorage <a name="VinylCacheStorage" id="@bluedynamics/cdk8s-plone.VinylCacheStorage"></a>
|
|
2464
|
+
|
|
2465
|
+
A Varnish storage backend configuration.
|
|
2466
|
+
|
|
2467
|
+
Maps to `spec.storage[]` on the VinylCache CRD. The operator emits one
|
|
2468
|
+
`-s <name>=<type>,<options>` argument per entry to varnishd.
|
|
2469
|
+
|
|
2470
|
+
Without any storage entry the operator falls back to the varnishd default
|
|
2471
|
+
(~100 MB malloc), which is almost always too small for real workloads.
|
|
2472
|
+
|
|
2473
|
+
#### Initializer <a name="Initializer" id="@bluedynamics/cdk8s-plone.VinylCacheStorage.Initializer"></a>
|
|
2474
|
+
|
|
2475
|
+
```typescript
|
|
2476
|
+
import { VinylCacheStorage } from '@bluedynamics/cdk8s-plone'
|
|
2477
|
+
|
|
2478
|
+
const vinylCacheStorage: VinylCacheStorage = { ... }
|
|
2479
|
+
```
|
|
2480
|
+
|
|
2481
|
+
#### Properties <a name="Properties" id="Properties"></a>
|
|
2482
|
+
|
|
2483
|
+
| **Name** | **Type** | **Description** |
|
|
2484
|
+
| --- | --- | --- |
|
|
2485
|
+
| <code><a href="#@bluedynamics/cdk8s-plone.VinylCacheStorage.property.name">name</a></code> | <code>string</code> | Internal storage identifier used in the varnishd `-s` argument. |
|
|
2486
|
+
| <code><a href="#@bluedynamics/cdk8s-plone.VinylCacheStorage.property.type">type</a></code> | <code>string</code> | Storage backend type. |
|
|
2487
|
+
| <code><a href="#@bluedynamics/cdk8s-plone.VinylCacheStorage.property.path">path</a></code> | <code>string</code> | Filesystem path for file-type storage. |
|
|
2488
|
+
| <code><a href="#@bluedynamics/cdk8s-plone.VinylCacheStorage.property.size">size</a></code> | <code>string</code> | Storage allocation as a Kubernetes resource quantity (e.g. "1Gi", "500M"). Required for malloc; required for file. |
|
|
2489
|
+
|
|
2490
|
+
---
|
|
2491
|
+
|
|
2492
|
+
##### `name`<sup>Required</sup> <a name="name" id="@bluedynamics/cdk8s-plone.VinylCacheStorage.property.name"></a>
|
|
2493
|
+
|
|
2494
|
+
```typescript
|
|
2495
|
+
public readonly name: string;
|
|
2496
|
+
```
|
|
2497
|
+
|
|
2498
|
+
- *Type:* string
|
|
2499
|
+
|
|
2500
|
+
Internal storage identifier used in the varnishd `-s` argument.
|
|
2501
|
+
|
|
2502
|
+
Must be unique within the VinylCache and match `^[a-zA-Z][a-zA-Z0-9_]*$`.
|
|
2503
|
+
|
|
2504
|
+
---
|
|
2505
|
+
|
|
2506
|
+
##### `type`<sup>Required</sup> <a name="type" id="@bluedynamics/cdk8s-plone.VinylCacheStorage.property.type"></a>
|
|
2507
|
+
|
|
2508
|
+
```typescript
|
|
2509
|
+
public readonly type: string;
|
|
2510
|
+
```
|
|
2511
|
+
|
|
2512
|
+
- *Type:* string
|
|
2513
|
+
|
|
2514
|
+
Storage backend type.
|
|
2515
|
+
|
|
2516
|
+
Only "malloc" and "file" are permitted by the
|
|
2517
|
+
admission webhook.
|
|
2518
|
+
|
|
2519
|
+
---
|
|
2520
|
+
|
|
2521
|
+
##### `path`<sup>Optional</sup> <a name="path" id="@bluedynamics/cdk8s-plone.VinylCacheStorage.property.path"></a>
|
|
2522
|
+
|
|
2523
|
+
```typescript
|
|
2524
|
+
public readonly path: string;
|
|
2525
|
+
```
|
|
2526
|
+
|
|
2527
|
+
- *Type:* string
|
|
2528
|
+
- *Default:* required for type "file"
|
|
2529
|
+
|
|
2530
|
+
Filesystem path for file-type storage.
|
|
2531
|
+
|
|
2532
|
+
Ignored for malloc.
|
|
2533
|
+
|
|
2534
|
+
---
|
|
2535
|
+
|
|
2536
|
+
##### `size`<sup>Optional</sup> <a name="size" id="@bluedynamics/cdk8s-plone.VinylCacheStorage.property.size"></a>
|
|
2537
|
+
|
|
2538
|
+
```typescript
|
|
2539
|
+
public readonly size: string;
|
|
2540
|
+
```
|
|
2541
|
+
|
|
2542
|
+
- *Type:* string
|
|
2543
|
+
- *Default:* required for both malloc and file
|
|
2544
|
+
|
|
2545
|
+
Storage allocation as a Kubernetes resource quantity (e.g. "1Gi", "500M"). Required for malloc; required for file.
|
|
2546
|
+
|
|
2547
|
+
---
|
|
2548
|
+
|
|
2437
2549
|
### VinylCacheToleration <a name="VinylCacheToleration" id="@bluedynamics/cdk8s-plone.VinylCacheToleration"></a>
|
|
2438
2550
|
|
|
2439
2551
|
A Kubernetes toleration for the Varnish pods.
|
|
@@ -66,6 +66,33 @@ kubectl get pods -n <namespace> -l app.kubernetes.io/managed-by=cloud-vinyl
|
|
|
66
66
|
|
|
67
67
|
## Customization
|
|
68
68
|
|
|
69
|
+
### Sizing the Cache Storage
|
|
70
|
+
|
|
71
|
+
Without an explicit `storage` entry, the operator ships varnishd with its
|
|
72
|
+
stock default (~100 MB malloc) — almost always too small. Set a malloc size
|
|
73
|
+
below the pod's memory limit, leaving headroom for varnishd overhead:
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
new PloneVinylCache(chart, 'cache', {
|
|
77
|
+
plone: plone,
|
|
78
|
+
requestMemory: '512Mi',
|
|
79
|
+
limitMemory: '2Gi',
|
|
80
|
+
storage: [
|
|
81
|
+
{ name: 's0', type: 'malloc', size: '1500M' },
|
|
82
|
+
],
|
|
83
|
+
});
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
For larger working sets you can combine an in-memory tier with a file-backed
|
|
87
|
+
tier (requires a writable volume mount at the given path):
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
storage: [
|
|
91
|
+
{ name: 'mem', type: 'malloc', size: '500M' },
|
|
92
|
+
{ name: 'disk', type: 'file', path: '/var/lib/varnish/disk.bin', size: '10Gi' },
|
|
93
|
+
]
|
|
94
|
+
```
|
|
95
|
+
|
|
69
96
|
### Custom VCL
|
|
70
97
|
|
|
71
98
|
Override the default Plone VCL snippets for custom caching logic:
|
|
@@ -307,6 +307,7 @@ Requires the [cloud-vinyl operator](https://github.com/bluedynamics/cloud-vinyl)
|
|
|
307
307
|
| `limitCpu` | `string` | No | `500m` | CPU limit |
|
|
308
308
|
| `requestMemory` | `string` | No | `256Mi` | Memory request |
|
|
309
309
|
| `limitMemory` | `string` | No | `512Mi` | Memory limit |
|
|
310
|
+
| `storage` | `VinylCacheStorage[]` | No | - | Varnish storage backends. If omitted, the operator falls back to the varnishd default (~100 MB malloc), which is almost always too small. |
|
|
310
311
|
| `director` | `string` | No | `shard` | Director type: shard, round_robin, random, hash |
|
|
311
312
|
| `vclRecvSnippet` | `string` | No | built-in | Custom VCL snippet for vcl_recv |
|
|
312
313
|
| `vclBackendResponseSnippet` | `string` | No | built-in | Custom VCL snippet for vcl_backend_response |
|
|
@@ -314,6 +315,15 @@ Requires the [cloud-vinyl operator](https://github.com/bluedynamics/cloud-vinyl)
|
|
|
314
315
|
| `monitoring` | `boolean` | No | `false` | Enable Prometheus metrics and ServiceMonitor |
|
|
315
316
|
| `tolerations` | `VinylCacheToleration[]` | No | - | Node tolerations for Varnish pods |
|
|
316
317
|
|
|
318
|
+
**`VinylCacheStorage` fields:**
|
|
319
|
+
|
|
320
|
+
| Property | Type | Required | Description |
|
|
321
|
+
|----------|------|----------|-------------|
|
|
322
|
+
| `name` | `string` | Yes | Internal storage identifier (must match `^[a-zA-Z][a-zA-Z0-9_]*$`) |
|
|
323
|
+
| `type` | `'malloc' \| 'file'` | Yes | Storage backend type |
|
|
324
|
+
| `size` | `string` | Yes | Kubernetes resource quantity (e.g. `"1Gi"`, `"500M"`) |
|
|
325
|
+
| `path` | `string` | for `file` | Filesystem path for file-type storage |
|
|
326
|
+
|
|
317
327
|
**Example:**
|
|
318
328
|
```typescript
|
|
319
329
|
const cache = new PloneVinylCache(chart, 'cache', {
|
|
@@ -343,6 +353,19 @@ new PloneVinylCache(chart, 'cache', {
|
|
|
343
353
|
});
|
|
344
354
|
```
|
|
345
355
|
|
|
356
|
+
**Storage sizing:**
|
|
357
|
+
```typescript
|
|
358
|
+
new PloneVinylCache(chart, 'cache', {
|
|
359
|
+
plone: ploneInstance,
|
|
360
|
+
limitMemory: '2Gi',
|
|
361
|
+
storage: [
|
|
362
|
+
{ name: 's0', type: 'malloc', size: '1500M' },
|
|
363
|
+
],
|
|
364
|
+
});
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
Without an explicit `storage` entry, varnishd runs with its stock default (~100 MB malloc) regardless of the container's memory limit. Size malloc storage below the pod's memory limit to leave headroom for varnishd overhead and transient allocations.
|
|
368
|
+
|
|
346
369
|
**vs PloneHttpcache:**
|
|
347
370
|
- `PloneHttpcache` deploys Varnish via mittwald Helm chart (self-contained, no operator needed)
|
|
348
371
|
- `PloneVinylCache` creates a VinylCache CR managed by the cloud-vinyl operator (requires operator in cluster)
|
package/lib/httpcache.js
CHANGED
|
@@ -118,5 +118,5 @@ class PloneHttpcache extends constructs_1.Construct {
|
|
|
118
118
|
}
|
|
119
119
|
exports.PloneHttpcache = PloneHttpcache;
|
|
120
120
|
_a = JSII_RTTI_SYMBOL_1;
|
|
121
|
-
PloneHttpcache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneHttpcache", version: "0.1.
|
|
121
|
+
PloneHttpcache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneHttpcache", version: "0.1.32" };
|
|
122
122
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cGNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2h0dHBjYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsaUNBQTZCO0FBQzdCLDJDQUF1QztBQXdKdkM7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsc0JBQVM7SUFPM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUE4QjtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksVUFBa0IsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3hCLElBQUksT0FBZSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUM5RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDbkMsQ0FBQztZQUNELFVBQVUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDNUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxZQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUM1Qyx1REFBdUQ7WUFDdkQsSUFBSSxFQUFFLDBCQUEwQjtZQUNoQyxLQUFLLEVBQUUsZ0JBQWdCO1lBQ3ZCLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWTtZQUM3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QUFJLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDOztBQS9GSCx3Q0FnR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgSGVsbSB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUGxvbmUgfSBmcm9tICcuL3Bsb25lJztcblxuLyoqXG4gKiBBbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBwYXNzIHRvIHRoZSBrdWJlLWh0dHBjYWNoZSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cGNhY2hlRW52VmFyIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBLdWJlcm5ldGVzIHRvbGVyYXRpb24gZm9yIHRoZSBWYXJuaXNoIHBvZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cGNhY2hlVG9sZXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdGFpbnQga2V5IHRvIHRvbGVyYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRvciAoRXF1YWwgb3IgRXhpc3RzKS5cbiAgICogQGRlZmF1bHQgJ0VxdWFsJ1xuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0b3I/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWludCB2YWx1ZSB0byBtYXRjaCAod2hlbiBvcGVyYXRvciBpcyBFcXVhbCkuXG4gICAqIEBkZWZhdWx0IC0gbm8gdmFsdWVcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFpbnQgZWZmZWN0IHRvIHRvbGVyYXRlIChOb1NjaGVkdWxlLCBQcmVmZXJOb1NjaGVkdWxlLCBOb0V4ZWN1dGUpLlxuICAgKiBAZGVmYXVsdCAtIHRvbGVyYXRlIGFsbCBlZmZlY3RzXG4gICAqL1xuICByZWFkb25seSBlZmZlY3Q/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBQbG9uZUh0dHBjYWNoZSAoVmFybmlzaCBjYWNoaW5nIGxheWVyKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG9uZUh0dHBjYWNoZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIFBsb25lIGNvbnN0cnVjdCB0byBhdHRhY2ggdGhlIEhUVFAgY2FjaGUgdG8uXG4gICAqIFRoZSBjYWNoZSB3aWxsIGF1dG9tYXRpY2FsbHkgY29ubmVjdCB0byB0aGUgYmFja2VuZCBhbmQgZnJvbnRlbmQgc2VydmljZXMuXG4gICAqL1xuICByZWFkb25seSBwbG9uZTogUGxvbmU7XG5cbiAgLyoqXG4gICAqIFZhcm5pc2ggVkNMIGNvbmZpZ3VyYXRpb24gYXMgYSBzdHJpbmcuXG4gICAqIElmIHByb3ZpZGVkLCB0aGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YXJuaXNoVmNsRmlsZS5cbiAgICogQGRlZmF1bHQgLSBsb2FkZWQgZnJvbSB2YXJuaXNoVmNsRmlsZSBvciBkZWZhdWx0IGNvbmZpZyBmaWxlXG4gICAqL1xuICByZWFkb25seSB2YXJuaXNoVmNsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIGEgVmFybmlzaCBWQ0wgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHVzZXMgdGhlIGRlZmF1bHQgVkNMIGZpbGUgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkuXG4gICAqIEBkZWZhdWx0IC0gdXNlcyBkZWZhdWx0IGNvbmZpZy92YXJuaXNoLnRwbC52Y2xcbiAgICovXG4gIHJlYWRvbmx5IHZhcm5pc2hWY2xGaWxlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIGFuIGV4aXN0aW5nIEt1YmVybmV0ZXMgc2VjcmV0IGNvbnRhaW5pbmcgVmFybmlzaCBhZG1pbiBjcmVkZW50aWFscy5cbiAgICogVGhlIHNlY3JldCBzaG91bGQgYmUgY3JlYXRlZCBzZXBhcmF0ZWx5IGluIHRoZSBzYW1lIG5hbWVzcGFjZS5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWQgKG5vIGV4aXN0aW5nIHNlY3JldClcbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nU2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDUFUgbGltaXQgZm9yIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJzUwMG0nXG4gICAqL1xuICByZWFkb25seSBsaW1pdENwdT86IHN0cmluZztcblxuICAvKipcbiAgICogTWVtb3J5IGxpbWl0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICc1MDBNaSdcbiAgICovXG4gIHJlYWRvbmx5IGxpbWl0TWVtb3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDUFUgcmVxdWVzdCBmb3IgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAnMTAwbSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RDcHU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lbW9yeSByZXF1ZXN0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICcxMDBNaSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RNZW1vcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBQcm9tZXRoZXVzIFNlcnZpY2VNb25pdG9yIGZvciBtZXRyaWNzIGNvbGxlY3Rpb24uXG4gICAqIFJlcXVpcmVzIFByb21ldGhldXMgT3BlcmF0b3IgdG8gYmUgaW5zdGFsbGVkIGluIHRoZSBjbHVzdGVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZW1vbml0b3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgdGhlIFByb21ldGhldXMgZXhwb3J0ZXIgZm9yIFZhcm5pc2ggbWV0cmljcy5cbiAgICogV2hlbiBlbmFibGVkLCB0aGUgZXhwb3J0ZXIgc2lkZWNhciBjb250YWluZXIgd2lsbCBiZSBkZXBsb3llZCBhbG9uZ3NpZGUgVmFybmlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwb3J0ZXJFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiB0aGUga3ViZS1odHRwY2FjaGUgSGVsbSBjaGFydCB0byB1c2UuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIHRoZSByZXBvc2l0b3J5IHdpbGwgYmUgdXNlZC5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIChsYXRlc3QpXG4gICAqL1xuICByZWFkb25seSBjaGFydFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdGhlIGt1YmUtaHR0cGNhY2hlIENvbnRhaW5lciBJbWFnZSB0byB1c2UuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIHRoZSByZXBvc2l0b3J5IHdpbGwgYmUgdXNlZC5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIChjaGFydFZlcnNpb24gPSB3aXRoIGVhY2ggY2hhcnQgcmVsZWFzZSB0aGVyZSBpcyBhbiBpbWFnZSByZWxlYXNlIHRvbyApXG4gICAqL1xuICByZWFkb25seSBhcHBWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgVmFybmlzaCBwb2QgcmVwbGljYXMgdG8gcnVuLlxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICByZWFkb25seSByZXBsaWNhcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGFzcyB0byB0aGUga3ViZS1odHRwY2FjaGUgY29udGFpbmVyLlxuICAgKiBUaGVzZSBhcmUgYXBwZW5kZWQgdG8gdGhlIGJ1aWx0LWluIGVudiB2YXJzIChCQUNLRU5EX1NFUlZJQ0VfTkFNRSwgZXRjLilcbiAgICogYW5kIGNhbiBiZSByZWZlcmVuY2VkIGluIFZDTCB0ZW1wbGF0ZXMgdXNpbmcgR28gdGVtcGxhdGUgc3ludGF4OiB7eyAuRW52LlZBUl9OQU1FIH19XG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBlbnYgdmFyc1xuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFFbnZWYXJzPzogSHR0cGNhY2hlRW52VmFyW107XG5cbiAgLyoqXG4gICAqIFRvbGVyYXRpb25zIGZvciB0aGUgVmFybmlzaCBwb2RzLlxuICAgKiBVc2UgdGhpcyB0byBhbGxvdyBzY2hlZHVsaW5nIG9uIG5vZGVzIHdpdGggc3BlY2lmaWMgdGFpbnRzLFxuICAgKiBlLmcuIG5vZGVzIHRhaW50ZWQgd2l0aCBrdWJlcm5ldGVzLmlvL2FyY2g9YW1kNjQ6Tm9TY2hlZHVsZS5cbiAgICogQGRlZmF1bHQgLSBubyB0b2xlcmF0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgdG9sZXJhdGlvbnM/OiBIdHRwY2FjaGVUb2xlcmF0aW9uW107XG59XG5cbi8qKlxuICogUGxvbmVIdHRwY2FjaGUgY29uc3RydWN0IGZvciBkZXBsb3lpbmcgVmFybmlzaCBIVFRQIGNhY2hpbmcgbGF5ZXIuXG4gKlxuICogVXNlcyB0aGUgbWl0dHdhbGQva3ViZS1odHRwY2FjaGUgSGVsbSBjaGFydCB0byBkZXBsb3kgVmFybmlzaCBhcyBhXG4gKiBjYWNoaW5nIHByb3h5IGluIGZyb250IG9mIFBsb25lIGJhY2tlbmQgYW5kL29yIGZyb250ZW5kIHNlcnZpY2VzLlxuICpcbiAqIFRoZSBjYWNoZSBhdXRvbWF0aWNhbGx5IGNvbm5lY3RzIHRvIHRoZSBQbG9uZSBzZXJ2aWNlcyBhbmQgcHJvdmlkZXNcbiAqIEhUVFAgY2FjaGUgaW52YWxpZGF0aW9uIGNhcGFiaWxpdGllcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcGxvbmUgPSBuZXcgUGxvbmUoY2hhcnQsICdwbG9uZScpO1xuICogY29uc3QgY2FjaGUgPSBuZXcgUGxvbmVIdHRwY2FjaGUoY2hhcnQsICdjYWNoZScsIHtcbiAqICAgcGxvbmU6IHBsb25lLFxuICogICBleGlzdGluZ1NlY3JldDogJ3Zhcm5pc2gtc2VjcmV0JyxcbiAqIH0pO1xuICovXG5leHBvcnQgY2xhc3MgUGxvbmVIdHRwY2FjaGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgVmFybmlzaCBzZXJ2aWNlIGNyZWF0ZWQgYnkgdGhlIEhlbG0gY2hhcnQuXG4gICAqIFVzZSB0aGlzIHRvIHJlZmVyZW5jZSB0aGUgY2FjaGUgc2VydmljZSBmcm9tIGluZ3Jlc3Mgb3Igb3RoZXIgY29uc3RydWN0cy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBodHRwY2FjaGVTZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFBsb25lSHR0cGNhY2hlT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgbGV0IHZhcm5pc2hWY2w6IHN0cmluZztcbiAgICBpZiAoIW9wdGlvbnMudmFybmlzaFZjbCkge1xuICAgICAgbGV0IHZjbFBhdGg6IHN0cmluZztcbiAgICAgIGlmICghb3B0aW9ucy52YXJuaXNoVmNsRmlsZSkge1xuICAgICAgICB2Y2xQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJ2NvbmZpZycsICd2YXJuaXNoLnRwbC52Y2wnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZjbFBhdGggPSBvcHRpb25zLnZhcm5pc2hWY2xGaWxlO1xuICAgICAgfVxuICAgICAgdmFybmlzaFZjbCA9IGZzLnJlYWRGaWxlU3luYyh2Y2xQYXRoLCAndXRmOCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXJuaXNoVmNsID0gb3B0aW9ucy52YXJuaXNoVmNsO1xuICAgIH1cbiAgICBjb25zdCBpbWFnZVRhZyA9IG9wdGlvbnMuYXBwVmVyc2lvbiA/PyBvcHRpb25zLmNoYXJ0VmVyc2lvbjtcbiAgICBjb25zdCBodHRwY2FjaGUgPSBuZXcgSGVsbSh0aGlzLCAnaHR0cGNhY2hlJywge1xuICAgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9taXR0d2FsZC9rdWJlLWh0dHBjYWNoZS9jaGFydFxuICAgICAgcmVwbzogJ2h0dHBzOi8vaGVsbS5taXR0d2FsZC5kZScsXG4gICAgICBjaGFydDogJ2t1YmUtaHR0cGNhY2hlJyxcbiAgICAgIHZlcnNpb246IG9wdGlvbnMuY2hhcnRWZXJzaW9uLFxuICAgICAgdmFsdWVzOiB7XG4gICAgICAgIHJlcGxpY2FDb3VudDogb3B0aW9ucy5yZXBsaWNhcyA/PyAyLFxuICAgICAgICAuLi4oaW1hZ2VUYWcgJiYgeyBpbWFnZTogeyB0YWc6IGltYWdlVGFnIH0gfSksXG4gICAgICAgIGNhY2hlOiB7XG4gICAgICAgICAgYmFja2VuZFNlcnZpY2U6IG9wdGlvbnMucGxvbmUuYmFja2VuZFNlcnZpY2VOYW1lLFxuICAgICAgICAgIGZyb250ZW5kV2F0Y2g6IGZhbHNlLFxuICAgICAgICAgIGJhY2tlbmRXYXRjaDogdHJ1ZSxcbiAgICAgICAgICBleGlzdGluZ1NlY3JldDogb3B0aW9ucy5leGlzdGluZ1NlY3JldCA/PyB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIFdvcmthcm91bmQ6IHVwc3RyZWFtIGNoYXJ0IGFjY2VwdHMgYmFja2VuZFBvcnROYW1lIGJ1dCBuZXZlclxuICAgICAgICAvLyByZW5kZXJzIGl0IGFzIENMSSBhcmcuIFBhc3MgdmlhIGNhY2hlRXh0cmFBcmdzIGluc3RlYWQuXG4gICAgICAgIGNhY2hlRXh0cmFBcmdzOiAnLSAtYmFja2VuZC1wb3J0bmFtZT1iYWNrZW5kLWh0dHAnLFxuICAgICAgICB2Y2xUZW1wbGF0ZTogdmFybmlzaFZjbCxcbiAgICAgICAgZXh0cmFFbnZWYXJzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnQkFDS0VORF9TRVJWSUNFX05BTUUnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5iYWNrZW5kU2VydmljZU5hbWUgfSxcbiAgICAgICAgICB7IG5hbWU6ICdCQUNLRU5EX1NFUlZJQ0VfUE9SVCcsIHZhbHVlOiAnODA4MCcgfSxcbiAgICAgICAgICB7IG5hbWU6ICdCQUNLRU5EX1NJVEVfSUQnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5zaXRlSWQgfSxcbiAgICAgICAgICB7IG5hbWU6ICdGUk9OVEVORF9TRVJWSUNFX05BTUUnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5mcm9udGVuZFNlcnZpY2VOYW1lIH0sXG4gICAgICAgICAgeyBuYW1lOiAnRlJPTlRFTkRfU0VSVklDRV9QT1JUJywgdmFsdWU6ICczMDAwJyB9LFxuICAgICAgICAgIC4uLihvcHRpb25zLmV4dHJhRW52VmFycyA/PyBbXSksXG4gICAgICAgIF0sXG4gICAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbWl0dHdhbGQva3ViZS1odHRwY2FjaGUvaXNzdWVzLzI1M1xuICAgICAgICBub2RlU2VsZWN0b3I6IHtcbiAgICAgICAgICAna3ViZXJuZXRlcy5pby9hcmNoJzogJ2FtZDY0JyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uKG9wdGlvbnMudG9sZXJhdGlvbnMgJiYgeyB0b2xlcmF0aW9uczogb3B0aW9ucy50b2xlcmF0aW9ucyB9KSxcbiAgICAgICAgcmVzb3VyY2VzOiB7XG4gICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICBjcHU6IG9wdGlvbnMubGltaXRDcHUgfHwgJzUwMG0nLFxuICAgICAgICAgICAgbWVtb3J5OiBvcHRpb25zLmxpbWl0TWVtb3J5IHx8ICc1MDBNaScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1ZXN0czoge1xuICAgICAgICAgICAgY3B1OiBvcHRpb25zLnJlcXVlc3RDcHUgfHwgJzEwMG0nLFxuICAgICAgICAgICAgbWVtb3J5OiBvcHRpb25zLnJlcXVlc3RNZW1vcnkgfHwgJzEwME1pJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByYmFjOiB7XG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwb3J0ZXI6IHtcbiAgICAgICAgICBlbmFibGVkOiBvcHRpb25zLmV4cG9ydGVyRW5hYmxlZCA/PyB0cnVlLFxuICAgICAgICAgIHJlc291cmNlczoge1xuICAgICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICAgIGNwdTogJzEwMG0nLFxuICAgICAgICAgICAgICBtZW1vcnk6ICcxMDBNaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWVzdHM6IHtcbiAgICAgICAgICAgICAgY3B1OiAnMTBtJyxcbiAgICAgICAgICAgICAgbWVtb3J5OiAnNTBNaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNlcnZpY2VNb25pdG9yOiB7XG4gICAgICAgICAgZW5hYmxlZDogb3B0aW9ucy5zZXJ2aWNlbW9uaXRvciB8fCBmYWxzZSxcbiAgICAgICAgICBzY3JhcGVTaWduYWxsZXI6IG9wdGlvbnMuc2VydmljZW1vbml0b3IgfHwgZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGh0dHBjYWNoZVNlcnZpY2UgPSBodHRwY2FjaGUuYXBpT2JqZWN0cy5maW5kKChjb25zdHJ1Y3QpID0+IHtcbiAgICAgIGlmICgoY29uc3RydWN0LmtpbmQgPT09ICdTZXJ2aWNlJykgJiYgKGNvbnN0cnVjdC5tZXRhZGF0YS5uYW1lPy5lbmRzV2l0aCgna3ViZS1odHRwY2FjaGUnKSkpIHtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdC5uYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpZiAoaHR0cGNhY2hlU2VydmljZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGh0dHBjYWNoZSBzZXJ2aWNlJyk7XG4gICAgfVxuICAgIHRoaXMuaHR0cGNhY2hlU2VydmljZU5hbWUgPSBodHRwY2FjaGVTZXJ2aWNlLm5hbWU7XG4gIH1cbn0iXX0=
|
package/lib/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { Plone, PloneOptions, PloneBaseOptions, PloneVariant, PloneSecurityContext, PloneCapabilities } from './plone';
|
|
2
2
|
export { PloneHttpcache, PloneHttpcacheOptions, HttpcacheEnvVar, HttpcacheToleration } from './httpcache';
|
|
3
|
-
export { PloneVinylCache, PloneVinylCacheOptions, VinylCacheToleration, VinylCacheBackend, VinylCacheBackendProbe } from './vinylcache';
|
|
3
|
+
export { PloneVinylCache, PloneVinylCacheOptions, VinylCacheToleration, VinylCacheBackend, VinylCacheBackendProbe, VinylCacheStorage } from './vinylcache';
|
package/lib/index.js
CHANGED
|
@@ -8,4 +8,4 @@ var httpcache_1 = require("./httpcache");
|
|
|
8
8
|
Object.defineProperty(exports, "PloneHttpcache", { enumerable: true, get: function () { return httpcache_1.PloneHttpcache; } });
|
|
9
9
|
var vinylcache_1 = require("./vinylcache");
|
|
10
10
|
Object.defineProperty(exports, "PloneVinylCache", { enumerable: true, get: function () { return vinylcache_1.PloneVinylCache; } });
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQXVIO0FBQTlHLDhGQUFBLEtBQUssT0FBQTtBQUFrQyxxR0FBQSxZQUFZLE9BQUE7QUFDNUQseUNBQTBHO0FBQWpHLDJHQUFBLGNBQWMsT0FBQTtBQUN2QiwyQ0FBMko7QUFBbEosNkdBQUEsZUFBZSxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgUGxvbmUsIFBsb25lT3B0aW9ucywgUGxvbmVCYXNlT3B0aW9ucywgUGxvbmVWYXJpYW50LCBQbG9uZVNlY3VyaXR5Q29udGV4dCwgUGxvbmVDYXBhYmlsaXRpZXMgfSBmcm9tICcuL3Bsb25lJztcbmV4cG9ydCB7IFBsb25lSHR0cGNhY2hlLCBQbG9uZUh0dHBjYWNoZU9wdGlvbnMsIEh0dHBjYWNoZUVudlZhciwgSHR0cGNhY2hlVG9sZXJhdGlvbiB9IGZyb20gJy4vaHR0cGNhY2hlJztcbmV4cG9ydCB7IFBsb25lVmlueWxDYWNoZSwgUGxvbmVWaW55bENhY2hlT3B0aW9ucywgVmlueWxDYWNoZVRvbGVyYXRpb24sIFZpbnlsQ2FjaGVCYWNrZW5kLCBWaW55bENhY2hlQmFja2VuZFByb2JlLCBWaW55bENhY2hlU3RvcmFnZSB9IGZyb20gJy4vdmlueWxjYWNoZSc7XG4iXX0=
|
package/lib/plone.js
CHANGED
|
@@ -262,5 +262,5 @@ class Plone extends constructs_1.Construct {
|
|
|
262
262
|
}
|
|
263
263
|
exports.Plone = Plone;
|
|
264
264
|
_a = JSII_RTTI_SYMBOL_1;
|
|
265
|
-
Plone[_a] = { fqn: "@bluedynamics/cdk8s-plone.Plone", version: "0.1.
|
|
265
|
+
Plone[_a] = { fqn: "@bluedynamics/cdk8s-plone.Plone", version: "0.1.32" };
|
|
266
266
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGxvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpQ0FBOEI7QUFDOUIsdUNBQXVDO0FBQ3ZDLDJDQUF1QztBQUN2Qyw2Q0FBdUU7QUFDdkUsdUNBQTRDO0FBRTVDLDJFQUF3RztBQUN4Ryx1Q0FBeUM7QUF3UnpDOztHQUVHO0FBQ0gsSUFBWSxZQVlYO0FBWkQsV0FBWSxZQUFZO0lBQ3RCOzs7T0FHRztJQUNILCtCQUFlLENBQUE7SUFFZjs7O09BR0c7SUFDSCx1Q0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBWlcsWUFBWSw0QkFBWixZQUFZLFFBWXZCO0FBZ0REOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQWEsS0FBTSxTQUFRLHNCQUFTO0lBdUJsQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFVBQXdCLEVBQUU7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFFckQsMkVBQTJFO1FBQzNFLFVBQVU7UUFDVixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxNQUFNLGFBQWEsR0FBRztZQUNwQix3QkFBd0IsRUFBRSxlQUFlO1lBQ3pDLDZCQUE2QixFQUFFLFNBQVM7WUFDeEMsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxXQUFXO1NBQzVELENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFFekIsVUFBVTtRQUNWLElBQUksY0FBYyxHQUEyQjtZQUMz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b0JBQ1IsV0FBVyxFQUFFO3dCQUNYLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUM7cUJBQ25FO2lCQUNGO2dCQUNELFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO3dCQUNuQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDO3dCQUM3QyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7d0JBQ2pCLFFBQVEsRUFBRSxLQUFLO3FCQUNoQjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF6UEgsc0JBMFBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmFtZXMgfSBmcm9tICdjZGs4cyc7XG5pbXBvcnQgKiBhcyBrcGx1cyBmcm9tICdjZGs4cy1wbHVzLTMwJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUGxvbmVEZXBsb3ltZW50LCBQbG9uZURlcGxveW1lbnRPcHRpb25zIH0gZnJvbSAnLi9kZXBsb3ltZW50JztcbmltcG9ydCB7IEludE9yU3RyaW5nIH0gZnJvbSAnLi9pbXBvcnRzL2s4cyc7XG5pbXBvcnQgKiBhcyBrOHMgZnJvbSAnLi9pbXBvcnRzL2s4cyc7XG5pbXBvcnQgeyBTZXJ2aWNlTW9uaXRvciwgU2VydmljZU1vbml0b3JTcGVjRW5kcG9pbnRzVGFyZ2V0UG9ydCB9IGZyb20gJy4vaW1wb3J0cy9tb25pdG9yaW5nLmNvcmVvcy5jb20nO1xuaW1wb3J0IHsgUGxvbmVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlJztcblxuLyoqXG4gKiBMaW51eCBjYXBhYmlsaXRpZXMgdG8gYWRkIG9yIGRyb3Agb24gYSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxvbmVDYXBhYmlsaXRpZXMge1xuICAvKipcbiAgICogQ2FwYWJpbGl0aWVzIHRvIGFkZCAoZS5nLiAnU1lTX1BUUkFDRScsICdORVRfQURNSU4nKS5cbiAgICogQGRlZmF1bHQgLSBubyBjYXBhYmlsaXRpZXMgYWRkZWRcbiAgICovXG4gIHJlYWRvbmx5IGFkZD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDYXBhYmlsaXRpZXMgdG8gZHJvcCAoZS5nLiAnQUxMJywgJ05FVF9SQVcnKS5cbiAgICogQGRlZmF1bHQgLSBubyBjYXBhYmlsaXRpZXMgZHJvcHBlZFxuICAgKi9cbiAgcmVhZG9ubHkgZHJvcD86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFNlY3VyaXR5IGNvbnRleHQgZm9yIGEgUGxvbmUgY29udGFpbmVyLlxuICogQ29udHJvbHMgcHJpdmlsZWdlIGFuZCBhY2Nlc3Mgc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxvbmVTZWN1cml0eUNvbnRleHQge1xuICAvKipcbiAgICogTGludXggY2FwYWJpbGl0aWVzIHRvIGFkZCBvciBkcm9wLlxuICAgKiBAZXhhbXBsZSB7IGFkZDogWydTWVNfUFRSQUNFJ10gfVxuICAgKiBAZGVmYXVsdCAtIG5vIGNhcGFiaWxpdHkgY2hhbmdlc1xuICAgKi9cbiAgcmVhZG9ubHkgY2FwYWJpbGl0aWVzPzogUGxvbmVDYXBhYmlsaXRpZXM7XG5cbiAgLyoqXG4gICAqIFJ1biB0aGUgY29udGFpbmVyIGFzIGEgc3BlY2lmaWMgdXNlciBJRC5cbiAgICogQGRlZmF1bHQgLSBjb250YWluZXIgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgcnVuQXNVc2VyPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSdW4gdGhlIGNvbnRhaW5lciBhcyBhIHNwZWNpZmljIGdyb3VwIElELlxuICAgKiBAZGVmYXVsdCAtIGNvbnRhaW5lciBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBydW5Bc0dyb3VwPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXF1aXJlIHRoZSBjb250YWluZXIgdG8gcnVuIGFzIG5vbi1yb290LlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgcnVuQXNOb25Sb290PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTW91bnQgdGhlIHJvb3QgZmlsZXN5c3RlbSBhcyByZWFkLW9ubHkuXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSByZWFkT25seVJvb3RGaWxlc3lzdGVtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3cgcHJpdmlsZWdlIGVzY2FsYXRpb24gZm9yIHRoZSBjb250YWluZXIgcHJvY2Vzcy5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93UHJpdmlsZWdlRXNjYWxhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJ1biB0aGUgY29udGFpbmVyIGluIHByaXZpbGVnZWQgbW9kZS5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHByaXZpbGVnZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEJhc2Ugb3B0aW9ucyBmb3IgUGxvbmUgYmFja2VuZCBvciBmcm9udGVuZCBjb25maWd1cmF0aW9uLlxuICogVGhlc2Ugb3B0aW9ucyBjb250cm9sIGNvbnRhaW5lciBpbWFnZSwgcmVwbGljYSBjb3VudCwgcmVzb3VyY2UgbGltaXRzLFxuICogZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQgaGVhbHRoIHByb2Jlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG9uZUJhc2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIENvbnRhaW5lciBpbWFnZSB0byB1c2UgZm9yIHRoZSBkZXBsb3ltZW50LlxuICAgKiBAZXhhbXBsZSAncGxvbmUvcGxvbmUtYmFja2VuZDo2LjAuMTAnIG9yICdwbG9uZS9wbG9uZS1mcm9udGVuZDoxNi4wLjAnXG4gICAqIEBkZWZhdWx0IC0gJ3Bsb25lL3Bsb25lLWJhY2tlbmQ6bGF0ZXN0JyBmb3IgYmFja2VuZCwgJ3Bsb25lL3Bsb25lLWZyb250ZW5kOmxhdGVzdCcgZm9yIGZyb250ZW5kXG4gICAqL1xuICByZWFkb25seSBpbWFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW1hZ2UgcHVsbCBwb2xpY3kgZm9yIHRoZSBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0ICdJZk5vdFByZXNlbnQnXG4gICAqL1xuICByZWFkb25seSBpbWFnZVB1bGxQb2xpY3k/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBwb2QgcmVwbGljYXMgdG8gcnVuLlxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICByZWFkb25seSByZXBsaWNhcz86IG51bWJlcjtcblxuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgcG9kcyB0aGF0IGNhbiBiZSB1bmF2YWlsYWJsZSBkdXJpbmcgdXBkYXRlcy5cbiAgICogQ2FuIGJlIGFuIGFic29sdXRlIG51bWJlciAoZS5nLiwgMSkgb3IgYSBwZXJjZW50YWdlIChlLmcuLCAnNTAlJykuXG4gICAqIFVzZWQgaW4gUG9kRGlzcnVwdGlvbkJ1ZGdldCBpZiBzcGVjaWZpZWQuXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkIChub3Qgc2V0KVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4VW5hdmFpbGFibGU/OiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gbnVtYmVyIG9mIHBvZHMgdGhhdCBtdXN0IGJlIGF2YWlsYWJsZSBkdXJpbmcgdXBkYXRlcy5cbiAgICogQ2FuIGJlIGFuIGFic29sdXRlIG51bWJlciAoZS5nLiwgMSkgb3IgYSBwZXJjZW50YWdlIChlLmcuLCAnNTAlJykuXG4gICAqIFVzZWQgaW4gUG9kRGlzcnVwdGlvbkJ1ZGdldCBpZiBzcGVjaWZpZWQuXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkIChub3Qgc2V0KVxuICAgKi9cbiAgcmVhZG9ubHkgbWluQXZhaWxhYmxlPzogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDUFUgbGltaXQgZm9yIHRoZSBjb250YWluZXIuXG4gICAqIEBleGFtcGxlICc1MDBtJyBvciAnMScgb3IgJzIwMDBtJ1xuICAgKiBAZGVmYXVsdCAnNTAwbScgZm9yIGJvdGggYmFja2VuZCBhbmQgZnJvbnRlbmRcbiAgICovXG4gIHJlYWRvbmx5IGxpbWl0Q3B1Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNZW1vcnkgbGltaXQgZm9yIHRoZSBjb250YWluZXIuXG4gICAqIEBleGFtcGxlICc1MTJNaScgb3IgJzFHaSdcbiAgICogQGRlZmF1bHQgJzUxMk1pJyBmb3IgYmFja2VuZCwgJzFHaScgZm9yIGZyb250ZW5kXG4gICAqL1xuICByZWFkb25seSBsaW1pdE1lbW9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogQ1BVIHJlcXVlc3QgZm9yIHRoZSBjb250YWluZXIuXG4gICAqIEBleGFtcGxlICcyMDBtJyBvciAnMC41J1xuICAgKiBAZGVmYXVsdCAnMjAwbSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RDcHU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lbW9yeSByZXF1ZXN0IGZvciB0aGUgY29udGFpbmVyLlxuICAgKiBAZXhhbXBsZSAnMjU2TWknIG9yICc1MTJNaSdcbiAgICogQGRlZmF1bHQgJzI1Nk1pJ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdE1lbW9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBpbiB0aGUgY29udGFpbmVyLlxuICAgKiBVc2UgY2RrOHMtcGx1cy0zMCBFbnYgY2xhc3MgdG8gZGVmaW5lIHZhcmlhYmxlcyBhbmQgc291cmNlcy5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWQgKG5vIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzKVxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBrcGx1cy5FbnY7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSByZWFkaW5lc3MgcHJvYmUgZm9yIHRoZSBjb250YWluZXIuXG4gICAqIFJlYWRpbmVzcyBwcm9iZXMgZGV0ZXJtaW5lIHdoZW4gYSBjb250YWluZXIgaXMgcmVhZHkgdG8gYWNjZXB0IHRyYWZmaWMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRpbmVzc0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygc2Vjb25kcyBhZnRlciBjb250YWluZXIgc3RhcnQgYmVmb3JlIHJlYWRpbmVzcyBwcm9iZSBpcyBpbml0aWF0ZWQuXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICByZWFkb25seSByZWFkaW5lc3NJbml0aWFsRGVsYXlTZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygc2Vjb25kcyBhZnRlciB3aGljaCB0aGUgcmVhZGluZXNzIHByb2JlIHRpbWVzIG91dC5cbiAgICogQGRlZmF1bHQgMTVcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRpbmVzc1RpbWVvdXRTZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIb3cgb2Z0ZW4gKGluIHNlY29uZHMpIHRvIHBlcmZvcm0gdGhlIHJlYWRpbmVzcyBwcm9iZS5cbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRpbmVzc1BlcmlvZFNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gY29uc2VjdXRpdmUgc3VjY2Vzc2VzIGZvciB0aGUgcmVhZGluZXNzIHByb2JlIHRvIGJlIGNvbnNpZGVyZWQgc3VjY2Vzc2Z1bC5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgcmVhZGluZXNzU3VjY2Vzc1RocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogTWluaW11bSBjb25zZWN1dGl2ZSBmYWlsdXJlcyBmb3IgdGhlIHJlYWRpbmVzcyBwcm9iZSB0byBiZSBjb25zaWRlcmVkIGZhaWxlZC5cbiAgICogQGRlZmF1bHQgM1xuICAgKi9cbiAgcmVhZG9ubHkgcmVhZGluZXNzRmFpbHVyZVRocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogRW5hYmxlIGxpdmVuZXNzIHByb2JlIGZvciB0aGUgY29udGFpbmVyLlxuICAgKiBMaXZlbmVzcyBwcm9iZXMgZGV0ZXJtaW5lIHdoZW4gdG8gcmVzdGFydCBhIGNvbnRhaW5lci5cbiAgICogUmVjb21tZW5kZWQ6IHRydWUgZm9yIGZyb250ZW5kLCBmYWxzZSBmb3IgYmFja2VuZCAoWm9wZSBoYXMgaXRzIG93biByZWNvdmVyeSkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBsaXZlbmVzc0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygc2Vjb25kcyBhZnRlciBjb250YWluZXIgc3RhcnQgYmVmb3JlIGxpdmVuZXNzIHByb2JlIGlzIGluaXRpYXRlZC5cbiAgICogQGRlZmF1bHQgMzBcbiAgICovXG4gIHJlYWRvbmx5IGxpdmVuZXNzSW5pdGlhbERlbGF5U2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHNlY29uZHMgYWZ0ZXIgd2hpY2ggdGhlIGxpdmVuZXNzIHByb2JlIHRpbWVzIG91dC5cbiAgICogQGRlZmF1bHQgNVxuICAgKi9cbiAgcmVhZG9ubHkgbGl2ZW5lc3NUaW1lb3V0U2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogSG93IG9mdGVuIChpbiBzZWNvbmRzKSB0byBwZXJmb3JtIHRoZSBsaXZlbmVzcyBwcm9iZS5cbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHJlYWRvbmx5IGxpdmVuZXNzUGVyaW9kU2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogTWluaW11bSBjb25zZWN1dGl2ZSBzdWNjZXNzZXMgZm9yIHRoZSBsaXZlbmVzcyBwcm9iZSB0byBiZSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IGxpdmVuZXNzU3VjY2Vzc1RocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogTWluaW11bSBjb25zZWN1dGl2ZSBmYWlsdXJlcyBmb3IgdGhlIGxpdmVuZXNzIHByb2JlIHRvIGJlIGNvbnNpZGVyZWQgZmFpbGVkLlxuICAgKiBAZGVmYXVsdCAzXG4gICAqL1xuICByZWFkb25seSBsaXZlbmVzc0ZhaWx1cmVUaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFubm90YXRpb25zIHRvIGFkZCB0byB0aGUgRGVwbG95bWVudCBtZXRhZGF0YS5cbiAgICogQGV4YW1wbGUgeyAnZGVwbG95bWVudC5rdWJlcm5ldGVzLmlvL3JldmlzaW9uJzogJzEnIH1cbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGFubm90YXRpb25zXG4gICAqL1xuICByZWFkb25seSBhbm5vdGF0aW9ucz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBbm5vdGF0aW9ucyB0byBhZGQgdG8gdGhlIFBvZCB0ZW1wbGF0ZSBtZXRhZGF0YS5cbiAgICogQ29tbW9uIGZvciBQcm9tZXRoZXVzLCBJc3RpbywgYmFja3VwIHBvbGljaWVzLCBldGMuXG4gICAqIEBleGFtcGxlIHsgJ3Byb21ldGhldXMuaW8vc2NyYXBlJzogJ3RydWUnLCAncHJvbWV0aGV1cy5pby9wb3J0JzogJzgwODAnIH1cbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGFubm90YXRpb25zXG4gICAqL1xuICByZWFkb25seSBwb2RBbm5vdGF0aW9ucz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBbm5vdGF0aW9ucyB0byBhZGQgdG8gdGhlIFNlcnZpY2UgbWV0YWRhdGEuXG4gICAqIENvbW1vbiBmb3IgZXh0ZXJuYWwtZG5zLCBsb2FkIGJhbGFuY2Vycywgc2VydmljZSBtZXNoLCBldGMuXG4gICAqIEBleGFtcGxlIHsgJ2V4dGVybmFsLWRucy5hbHBoYS5rdWJlcm5ldGVzLmlvL2hvc3RuYW1lJzogJ3Bsb25lLmV4YW1wbGUuY29tJyB9XG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBhbm5vdGF0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZUFubm90YXRpb25zPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBQcm9tZXRoZXVzIFNlcnZpY2VNb25pdG9yIGZvciBtZXRyaWNzIGNvbGxlY3Rpb24uXG4gICAqIFJlcXVpcmVzIFByb21ldGhldXMgT3BlcmF0b3IgdG8gYmUgaW5zdGFsbGVkIGluIHRoZSBjbHVzdGVyLlxuICAgKiBXaGVuIGVuYWJsZWQsIGEgU2VydmljZU1vbml0b3IgcmVzb3VyY2Ugd2lsbCBiZSBjcmVhdGVkIHRvIHNjcmFwZSBtZXRyaWNzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZW1vbml0b3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQb3J0IG5hbWUgb3IgbnVtYmVyIHRvIHNjcmFwZSBtZXRyaWNzIGZyb20uXG4gICAqIE9ubHkgdXNlZCB3aGVuIHNlcnZpY2Vtb25pdG9yIGlzIGVuYWJsZWQuXG4gICAqIEBkZWZhdWx0IC0gdXNlcyB0aGUgbWFpbiBzZXJ2aWNlIHBvcnRcbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpY3NQb3J0Pzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIHNjcmFwZSBtZXRyaWNzIGZyb20uXG4gICAqIE9ubHkgdXNlZCB3aGVuIHNlcnZpY2Vtb25pdG9yIGlzIGVuYWJsZWQuXG4gICAqIEBkZWZhdWx0ICcvbWV0cmljcydcbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpY3NQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOb2RlIHNlbGVjdG9yIGxhYmVscyBmb3IgcG9kIHNjaGVkdWxpbmcuXG4gICAqIFVzZSB0byBjb25zdHJhaW4gcG9kcyB0byBub2RlcyB3aXRoIG1hdGNoaW5nIGxhYmVscywgZS5nLiBmb3IgcmVnaW9uIGFmZmluaXR5LlxuICAgKiBAZXhhbXBsZSB7ICd0b3BvbG9neS5rdWJlcm5ldGVzLmlvL3JlZ2lvbic6ICdmc24xJyB9XG4gICAqIEBkZWZhdWx0IC0gbm8gbm9kZSBzZWxlY3RvclxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVNlbGVjdG9yPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogU2VjdXJpdHkgY29udGV4dCBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogVXNlIHRvIHNldCBjYXBhYmlsaXRpZXMsIHJ1biBhcyBub24tcm9vdCwgcmVhZC1vbmx5IGZpbGVzeXN0ZW0sIGV0Yy5cbiAgICogQGV4YW1wbGUgeyBjYXBhYmlsaXRpZXM6IHsgYWRkOiBbJ1NZU19QVFJBQ0UnXSB9IH1cbiAgICogQGRlZmF1bHQgLSBubyBzZWN1cml0eSBjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUNvbnRleHQ/OiBQbG9uZVNlY3VyaXR5Q29udGV4dDtcbn1cbi8qKlxuICogUGxvbmUgZGVwbG95bWVudCB2YXJpYW50cy5cbiAqL1xuZXhwb3J0IGVudW0gUGxvbmVWYXJpYW50IHtcbiAgLyoqXG4gICAqIFZvbHRvIHZhcmlhbnQ6IFJlYWN0SlMgZnJvbnRlbmQgKFZvbHRvKSB3aXRoIFJFU1QgQVBJIGJhY2tlbmQuXG4gICAqIERlcGxveXMgYm90aCBmcm9udGVuZCBhbmQgYmFja2VuZCBzZXJ2aWNlcy5cbiAgICovXG4gIFZPTFRPID0gJ3ZvbHRvJyxcblxuICAvKipcbiAgICogQ2xhc3NpYyBVSSB2YXJpYW50OiBUcmFkaXRpb25hbCBQbG9uZSB3aXRoIHNlcnZlci1zaWRlIHJlbmRlcmluZy5cbiAgICogRGVwbG95cyBvbmx5IHRoZSBiYWNrZW5kIHNlcnZpY2UuXG4gICAqL1xuICBDTEFTU0lDVUkgPSAnY2xhc3NpY3VpJyxcbn1cblxuLyoqXG4gKiBNYWluIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgUGxvbmUgZGVwbG95bWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG9uZU9wdGlvbnMge1xuICAvKipcbiAgICogVmVyc2lvbiBzdHJpbmcgZm9yIGxhYmVsaW5nIHRoZSBkZXBsb3ltZW50LlxuICAgKiBUaGlzIGlzIHVzZWQgaW4gS3ViZXJuZXRlcyBsYWJlbHMgYW5kIGRvZXNuJ3QgYWZmZWN0IHRoZSBhY3R1YWwgaW1hZ2UgdmVyc2lvbnMuXG4gICAqIEBkZWZhdWx0ICd1bmRlZmluZWQnXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQbG9uZSBzaXRlIElEIGluIHRoZSBaT0RCLlxuICAgKiBUaGlzIGlzIHVzZWQgdG8gY29uc3RydWN0IHRoZSBpbnRlcm5hbCBBUEkgcGF0aCBmb3IgVm9sdG8gZnJvbnRlbmQuXG4gICAqIEBkZWZhdWx0ICdQbG9uZSdcbiAgICovXG4gIHJlYWRvbmx5IHNpdGVJZD86IHN0cmluZztcblxuICAvKipcbiAgICogUGxvbmUgZGVwbG95bWVudCB2YXJpYW50IHRvIHVzZS5cbiAgICogQGRlZmF1bHQgUGxvbmVWYXJpYW50LlZPTFRPXG4gICAqL1xuICByZWFkb25seSB2YXJpYW50PzogUGxvbmVWYXJpYW50O1xuXG4gIC8qKlxuICAgKiBCYWNrZW5kIChQbG9uZSBBUEkpIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBkZWZhdWx0IHt9ICh1c2VzIGRlZmF1bHQgdmFsdWVzIGZyb20gUGxvbmVCYXNlT3B0aW9ucylcbiAgICovXG4gIHJlYWRvbmx5IGJhY2tlbmQ/OiBQbG9uZUJhc2VPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBGcm9udGVuZCAoVm9sdG8pIGNvbmZpZ3VyYXRpb24uXG4gICAqIE9ubHkgdXNlZCB3aGVuIHZhcmlhbnQgaXMgUGxvbmVWYXJpYW50LlZPTFRPLlxuICAgKiBAZGVmYXVsdCB7fSAodXNlcyBkZWZhdWx0IHZhbHVlcyBmcm9tIFBsb25lQmFzZU9wdGlvbnMpXG4gICAqL1xuICByZWFkb25seSBmcm9udGVuZD86IFBsb25lQmFzZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIE5hbWVzIG9mIEt1YmVybmV0ZXMgc2VjcmV0cyB0byB1c2UgZm9yIHB1bGxpbmcgcHJpdmF0ZSBjb250YWluZXIgaW1hZ2VzLlxuICAgKiBUaGVzZSBzZWNyZXRzIG11c3QgZXhpc3QgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHRoZSBkZXBsb3ltZW50LlxuICAgKiBAZXhhbXBsZSBbJ215LXJlZ2lzdHJ5LXNlY3JldCddXG4gICAqIEBkZWZhdWx0IFtdIChubyBpbWFnZSBwdWxsIHNlY3JldHMpXG4gICAqL1xuICByZWFkb25seSBpbWFnZVB1bGxTZWNyZXRzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUGxvbmUgY29uc3RydWN0IGZvciBkZXBsb3lpbmcgUGxvbmUgQ01TIHRvIEt1YmVybmV0ZXMuXG4gKlxuICogVGhpcyBjb25zdHJ1Y3QgY3JlYXRlcyBhbGwgbmVjZXNzYXJ5IEt1YmVybmV0ZXMgcmVzb3VyY2VzIGZvciBydW5uaW5nIFBsb25lOlxuICogLSBEZXBsb3ltZW50KHMpIGZvciBiYWNrZW5kIChhbmQgb3B0aW9uYWxseSBmcm9udGVuZClcbiAqIC0gU2VydmljZShzKSBmb3IgbmV0d29yayBhY2Nlc3NcbiAqIC0gT3B0aW9uYWwgUG9kRGlzcnVwdGlvbkJ1ZGdldCBmb3IgaGlnaCBhdmFpbGFiaWxpdHlcbiAqXG4gKiBTdXBwb3J0cyB0d28gZGVwbG95bWVudCB2YXJpYW50czpcbiAqIC0gVk9MVE86IE1vZGVybiBSZWFjdCBmcm9udGVuZCB3aXRoIFJFU1QgQVBJIGJhY2tlbmQgKGRlZmF1bHQpXG4gKiAtIENMQVNTSUNVSTogVHJhZGl0aW9uYWwgc2VydmVyLXNpZGUgcmVuZGVyZWQgUGxvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogbmV3IFBsb25lKGNoYXJ0LCAnbXktcGxvbmUnLCB7XG4gKiAgIHZhcmlhbnQ6IFBsb25lVmFyaWFudC5WT0xUTyxcbiAqICAgYmFja2VuZDoge1xuICogICAgIGltYWdlOiAncGxvbmUvcGxvbmUtYmFja2VuZDo2LjAuMTAnLFxuICogICAgIHJlcGxpY2FzOiAzLFxuICogICB9LFxuICogICBmcm9udGVuZDoge1xuICogICAgIGltYWdlOiAncGxvbmUvcGxvbmUtZnJvbnRlbmQ6MTYuMC4wJyxcbiAqICAgfSxcbiAqIH0pO1xuICovXG5leHBvcnQgY2xhc3MgUGxvbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgYmFja2VuZCBLdWJlcm5ldGVzIHNlcnZpY2UuXG4gICAqIFVzZSB0aGlzIHRvIHJlZmVyZW5jZSB0aGUgYmFja2VuZCBzZXJ2aWNlIGZyb20gb3RoZXIgY29uc3RydWN0cy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBiYWNrZW5kU2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZnJvbnRlbmQgS3ViZXJuZXRlcyBzZXJ2aWNlLlxuICAgKiBPbmx5IHNldCB3aGVuIHZhcmlhbnQgaXMgVk9MVE8sIG90aGVyd2lzZSB1bmRlZmluZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnJvbnRlbmRTZXJ2aWNlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVwbG95bWVudCB2YXJpYW50IGJlaW5nIHVzZWQgKFZPTFRPIG9yIENMQVNTSUNVSSkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFyaWFudDogUGxvbmVWYXJpYW50O1xuXG4gIC8qKlxuICAgKiBUaGUgUGxvbmUgc2l0ZSBJRCBpbiBaT0RCLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNpdGVJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFBsb25lT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmZyb250ZW5kU2VydmljZU5hbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zaXRlSWQgPSBvcHRpb25zLnNpdGVJZCA/PyAnUGxvbmUnO1xuICAgIHRoaXMudmFyaWFudCA9IG9wdGlvbnMudmFyaWFudCA/PyBQbG9uZVZhcmlhbnQuVk9MVE87XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBCYWNrZW5kXG4gICAgY29uc3QgYmFja2VuZCA9IG9wdGlvbnMuYmFja2VuZCA/PyB7fTtcbiAgICBjb25zdCBiYWNrZW5kTGFiZWxzID0ge1xuICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL25hbWUnOiAncGxvbmUtYmFja2VuZCcsXG4gICAgICAnYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50JzogJ2JhY2tlbmQnLFxuICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL3ZlcnNpb24nOiBvcHRpb25zLnZlcnNpb24gPz8gJ3VuZGVmaW5lZCcsXG4gICAgfTtcbiAgICBjb25zdCBiYWNrZW5kUG9ydCA9IDgwODA7XG5cbiAgICAvLyBPcHRpb25zXG4gICAgdmFyIGJhY2tlbmRPcHRpb25zOiBQbG9uZURlcGxveW1lbnRPcHRpb25zID0ge1xuICAgICAgbGFiZWxzOiBiYWNrZW5kTGFiZWxzLFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgaW1hZ2U6IGJhY2tlbmQuaW1hZ2UgPz8gJ3Bsb25lL3Bsb25lLWJhY2tlbmQ6bGF0ZXN0JyxcbiAgICAgICAgaW1hZ2VQdWxsU2VjcmV0czogb3B0aW9ucy5pbWFnZVB1bGxTZWNyZXRzID8/IFtdLFxuICAgICAgICBpbWFnZVB1bGxQb2xpY3k6IGJhY2tlbmQuaW1hZ2VQdWxsUG9saWN5ID8/ICdJZk5vdFByZXNlbnQnLFxuICAgICAgfSxcbiAgICAgIHJlcGxpY2FzOiBiYWNrZW5kLnJlcGxpY2FzLFxuICAgICAgbGltaXRDcHU6IGJhY2tlbmQubGltaXRDcHUgPz8gJzUwMG0nLFxuICAgICAgbGltaXRNZW1vcnk6IGJhY2tlbmQubGltaXRNZW1vcnkgPz8gJzUxMk1pJyxcbiAgICAgIHJlcXVlc3RDcHU6IGJhY2tlbmQucmVxdWVzdENwdSA/PyAnMjAwbScsXG4gICAgICByZXF1ZXN0TWVtb3J5OiBiYWNrZW5kLnJlcXVlc3RNZW1vcnkgPz8gJzI1Nk1pJyxcbiAgICAgIHBkYjoge1xuICAgICAgICBtYXhVbmF2YWlsYWJsZTogYmFja2VuZC5tYXhVbmF2YWlsYWJsZSA/PyB1bmRlZmluZWQsXG4gICAgICAgIG1pbkF2YWlsYWJsZTogYmFja2VuZC5taW5BdmFpbGFibGUgPz8gdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIHBvcnQ6IGJhY2tlbmRQb3J0LFxuICAgICAgZW52aXJvbm1lbnQ6IGJhY2tlbmQuZW52aXJvbm1lbnQsXG4gICAgICBhbm5vdGF0aW9uczogYmFja2VuZC5hbm5vdGF0aW9ucyxcbiAgICAgIHBvZEFubm90YXRpb25zOiBiYWNrZW5kLnBvZEFubm90YXRpb25zLFxuICAgICAgbm9kZVNlbGVjdG9yOiBiYWNrZW5kLm5vZGVTZWxlY3RvcixcbiAgICAgIHNlY3VyaXR5Q29udGV4dDogYmFja2VuZC5zZWN1cml0eUNvbnRleHQgYXMgazhzLlNlY3VyaXR5Q29udGV4dCxcbiAgICB9O1xuXG4gICAgLy8gUHJvYmluZ1xuICAgIGNvbnN0IGJhY2tlbmRBY3Rpb25IdHRwR2V0OiBrOHMuSHR0cEdldEFjdGlvbiA9IHtcbiAgICAgIHBhdGg6ICcvJyxcbiAgICAgIHBvcnQ6IEludE9yU3RyaW5nLmZyb21OdW1iZXIoYmFja2VuZFBvcnQpLFxuICAgIH07XG4gICAgaWYgKGJhY2tlbmQubGl2ZW5lc3NFbmFibGVkID8/IGZhbHNlKSB7XG4gICAgICBiYWNrZW5kT3B0aW9ucy5saXZlbmVzc1Byb2JlID0ge1xuICAgICAgICBodHRwR2V0OiBiYWNrZW5kQWN0aW9uSHR0cEdldCxcbiAgICAgICAgaW5pdGlhbERlbGF5U2Vjb25kczogYmFja2VuZC5saXZlbmVzc0luaXRpYWxEZWxheVNlY29uZHMgPz8gMzAsXG4gICAgICAgIHRpbWVvdXRTZWNvbmRzOiBiYWNrZW5kLmxpdmVuZXNzVGltZW91dFNlY29uZHMgPz8gNSxcbiAgICAgICAgcGVyaW9kU2Vjb25kczogYmFja2VuZC5saXZlbmVzc1BlcmlvZFNlY29uZHMgPz8gMTAsXG4gICAgICAgIHN1Y2Nlc3NUaHJlc2hvbGQ6IGJhY2tlbmQubGl2ZW5lc3NTdWNjZXNzVGhyZXNob2xkID8/IDEsXG4gICAgICAgIGZhaWx1cmVUaHJlc2hvbGQ6IGJhY2tlbmQubGl2ZW5lc3NGYWlsdXJlVGhyZXNob2xkID8/IDMsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoYmFja2VuZC5yZWFkaW5lc3NFbmFibGVkID8/IHRydWUpIHtcbiAgICAgIGJhY2tlbmRPcHRpb25zLnJlYWRpbmVzc1Byb2JlID0ge1xuICAgICAgICBodHRwR2V0OiBiYWNrZW5kQWN0aW9uSHR0cEdldCxcbiAgICAgICAgaW5pdGlhbERlbGF5U2Vjb25kczogYmFja2VuZC5yZWFkaW5lc3NJbml0aWFsRGVsYXlTZWNvbmRzID8/IDEwLFxuICAgICAgICB0aW1lb3V0U2Vjb25kczogYmFja2VuZC5yZWFkaW5lc3NUaW1lb3V0U2Vjb25kcyA/PyAxNSxcbiAgICAgICAgcGVyaW9kU2Vjb25kczogYmFja2VuZC5yZWFkaW5lc3NQZXJpb2RTZWNvbmRzID8/IDEwLFxuICAgICAgICBzdWNjZXNzVGhyZXNob2xkOiBiYWNrZW5kLnJlYWRpbmVzc1N1Y2Nlc3NUaHJlc2hvbGQgPz8gMSxcbiAgICAgICAgZmFpbHVyZVRocmVzaG9sZDogYmFja2VuZC5yZWFkaW5lc3NGYWlsdXJlVGhyZXNob2xkID8/IDMsXG4gICAgICB9O1xuICAgIH1cbiAgICAvLyBEZXBsb3ltZW50XG4gICAgdmFyIGJhY2tlbmREZXBsb3ltZW50ID0gbmV3IFBsb25lRGVwbG95bWVudCh0aGlzLCAnYmFja2VuZCcsIGJhY2tlbmRPcHRpb25zKTtcblxuICAgIC8vIFNlcnZpY2VcbiAgICBjb25zdCBiYWNrZW5kU2VydmljZSA9IG5ldyBQbG9uZVNlcnZpY2UoYmFja2VuZERlcGxveW1lbnQsICdzZXJ2aWNlJywge1xuICAgICAgbGFiZWxzOiB7XG4gICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9uYW1lJzogJ3Bsb25lLWJhY2tlbmQtc2VydmljZScsXG4gICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnQnOiAnc2VydmljZScsXG4gICAgICB9LFxuICAgICAgdGFyZ2V0UG9ydDogYmFja2VuZFBvcnQsXG4gICAgICBzZWxlY3RvckxhYmVsOiB7IGFwcDogTmFtZXMudG9MYWJlbFZhbHVlKGJhY2tlbmREZXBsb3ltZW50KSB9LFxuICAgICAgcG9ydE5hbWU6ICdiYWNrZW5kLWh0dHAnLFxuICAgICAgYW5ub3RhdGlvbnM6IGJhY2tlbmQuc2VydmljZUFubm90YXRpb25zLFxuICAgIH0pO1xuICAgIHRoaXMuYmFja2VuZFNlcnZpY2VOYW1lID0gYmFja2VuZFNlcnZpY2UubmFtZTtcblxuICAgIC8vIFNlcnZpY2VNb25pdG9yIGZvciBiYWNrZW5kXG4gICAgaWYgKGJhY2tlbmQuc2VydmljZW1vbml0b3IpIHtcbiAgICAgIHRoaXMuY3JlYXRlU2VydmljZU1vbml0b3IoYmFja2VuZFNlcnZpY2UsICdiYWNrZW5kJywge1xuICAgICAgICBwb3J0OiBiYWNrZW5kLm1ldHJpY3NQb3J0ID8/ICdiYWNrZW5kLWh0dHAnLFxuICAgICAgICBwYXRoOiBiYWNrZW5kLm1ldHJpY3NQYXRoID8/ICcvbWV0cmljcycsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBGcm9udGVuZFxuICAgIGlmICh0aGlzLnZhcmlhbnQgPT0gUGxvbmVWYXJpYW50LlZPTFRPKSB7XG4gICAgICBjb25zdCBmcm9udGVuZCA9IG9wdGlvbnMuZnJvbnRlbmQgPz8ge307XG4gICAgICBjb25zdCBmcm9udGVuZFBvcnQgPSAzMDAwO1xuICAgICAgY29uc3QgZnJvbnRlbmRMYWJlbHMgPSB7XG4gICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9uYW1lJzogJ3Bsb25lLWZyb250ZW5kJyxcbiAgICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCc6ICdmcm9udGVuZCcsXG4gICAgICAgICdhcHAua3ViZXJuZXRlcy5pby92ZXJzaW9uJzogb3B0aW9ucy52ZXJzaW9uID8/ICd1bmRlZmluZWQnLFxuICAgICAgfTtcblxuICAgICAgLy8gRW52aXJvbm1lbnQgZm9yIFJBWlpMRVxuICAgICAgdmFyIGZyb250ZW5kRW52aXJvbm1lbnQgPSBmcm9udGVuZC5lbnZpcm9ubWVudCA/PyBuZXcga3BsdXMuRW52KFtdLCB7fSk7XG4gICAgICBpZiAoZnJvbnRlbmRFbnZpcm9ubWVudC52YXJpYWJsZXMuUkFaWkxFX0lOVEVSTkFMX0FQSV9QQVRIID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gY29ubmVjdCB3aXRoIGJhY2tlbmQgc2VydmljZVxuICAgICAgICBmcm9udGVuZEVudmlyb25tZW50Py5hZGRWYXJpYWJsZSgnUkFaWkxFX0lOVEVSTkFMX0FQSV9QQVRIJywga3BsdXMuRW52VmFsdWUuZnJvbVZhbHVlKGBodHRwOi8vJHtiYWNrZW5kU2VydmljZS5uYW1lfToke2JhY2tlbmRQb3J0fS8ke3RoaXMuc2l0ZUlkfWApKTtcbiAgICAgIH1cblxuICAgICAgLy8gT3B0aW9uc1xuICAgICAgdmFyIGZyb250ZW5kT3B0aW9uczogUGxvbmVEZXBsb3ltZW50T3B0aW9ucyA9IHtcbiAgICAgICAgbGFiZWxzOiBmcm9udGVuZExhYmVscyxcbiAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICBpbWFnZTogZnJvbnRlbmQuaW1hZ2UgPz8gJ3Bsb25lL3Bsb25lLWZyb250ZW5kOmxhdGVzdCcsXG4gICAgICAgICAgaW1hZ2VQdWxsU2VjcmV0czogb3B0aW9ucy5pbWFnZVB1bGxTZWNyZXRzID8/IFtdLFxuICAgICAgICAgIGltYWdlUHVsbFBvbGljeTogZnJvbnRlbmQuaW1hZ2VQdWxsUG9saWN5ID8/ICdJZk5vdFByZXNlbnQnLFxuICAgICAgICB9LFxuICAgICAgICByZXBsaWNhczogZnJvbnRlbmQucmVwbGljYXMsXG4gICAgICAgIGxpbWl0Q3B1OiBmcm9udGVuZC5saW1pdENwdSA/PyAnNTAwbScsXG4gICAgICAgIGxpbWl0TWVtb3J5OiBmcm9udGVuZC5saW1pdE1lbW9yeSA/PyAnMUdpJyxcbiAgICAgICAgcmVxdWVzdENwdTogZnJvbnRlbmQucmVxdWVzdENwdSA/PyAnMjAwbScsXG4gICAgICAgIHJlcXVlc3RNZW1vcnk6IGZyb250ZW5kLnJlcXVlc3RNZW1vcnkgPz8gJzI1Nk1pJyxcblxuICAgICAgICBwZGI6IHtcbiAgICAgICAgICBtYXhVbmF2YWlsYWJsZTogZnJvbnRlbmQubWF4VW5hdmFpbGFibGUgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgIG1pbkF2YWlsYWJsZTogZnJvbnRlbmQubWluQXZhaWxhYmxlID8/IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgICAgcG9ydDogZnJvbnRlbmRQb3J0LFxuICAgICAgICBlbnZpcm9ubWVudDogZnJvbnRlbmRFbnZpcm9ubWVudCxcbiAgICAgICAgYW5ub3RhdGlvbnM6IGZyb250ZW5kLmFubm90YXRpb25zLFxuICAgICAgICBwb2RBbm5vdGF0aW9uczogZnJvbnRlbmQucG9kQW5ub3RhdGlvbnMsXG4gICAgICAgIG5vZGVTZWxlY3RvcjogZnJvbnRlbmQubm9kZVNlbGVjdG9yLFxuICAgICAgICBzZWN1cml0eUNvbnRleHQ6IGZyb250ZW5kLnNlY3VyaXR5Q29udGV4dCBhcyBrOHMuU2VjdXJpdHlDb250ZXh0LFxuICAgICAgfTtcblxuICAgICAgLy8gUHJvYmluZ1xuICAgICAgY29uc3QgZnJvbnRlbmRBY3Rpb25IdHRwR2V0OiBrOHMuSHR0cEdldEFjdGlvbiA9IHtcbiAgICAgICAgcGF0aDogJy8nLFxuICAgICAgICBwb3J0OiBJbnRPclN0cmluZy5mcm9tTnVtYmVyKGZyb250ZW5kUG9ydCksXG4gICAgICB9O1xuICAgICAgaWYgKGZyb250ZW5kLmxpdmVuZXNzRW5hYmxlZCA/PyBmYWxzZSkge1xuICAgICAgICBmcm9udGVuZE9wdGlvbnMubGl2ZW5lc3NQcm9iZSA9IHtcbiAgICAgICAgICBodHRwR2V0OiBmcm9udGVuZEFjdGlvbkh0dHBHZXQsXG4gICAgICAgICAgaW5pdGlhbERlbGF5U2Vjb25kczogZnJvbnRlbmQubGl2ZW5lc3NJbml0aWFsRGVsYXlTZWNvbmRzID8/IDMwLFxuICAgICAgICAgIHRpbWVvdXRTZWNvbmRzOiBmcm9udGVuZC5saXZlbmVzc1RpbWVvdXRTZWNvbmRzID8/IDUsXG4gICAgICAgICAgcGVyaW9kU2Vjb25kczogZnJvbnRlbmQubGl2ZW5lc3NQZXJpb2RTZWNvbmRzID8/IDEwLFxuICAgICAgICAgIHN1Y2Nlc3NUaHJlc2hvbGQ6IGZyb250ZW5kLmxpdmVuZXNzU3VjY2Vzc1RocmVzaG9sZCA/PyAxLFxuICAgICAgICAgIGZhaWx1cmVUaHJlc2hvbGQ6IGZyb250ZW5kLmxpdmVuZXNzRmFpbHVyZVRocmVzaG9sZCA/PyAzLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKGZyb250ZW5kLnJlYWRpbmVzc0VuYWJsZWQgPz8gdHJ1ZSkge1xuICAgICAgICBmcm9udGVuZE9wdGlvbnMucmVhZGluZXNzUHJvYmUgPSB7XG4gICAgICAgICAgaHR0cEdldDogZnJvbnRlbmRBY3Rpb25IdHRwR2V0LFxuICAgICAgICAgIGluaXRpYWxEZWxheVNlY29uZHM6IGZyb250ZW5kLnJlYWRpbmVzc0luaXRpYWxEZWxheVNlY29uZHMgPz8gMTAsXG4gICAgICAgICAgdGltZW91dFNlY29uZHM6IGZyb250ZW5kLnJlYWRpbmVzc1RpbWVvdXRTZWNvbmRzID8/IDE1LFxuICAgICAgICAgIHBlcmlvZFNlY29uZHM6IGZyb250ZW5kLnJlYWRpbmVzc1BlcmlvZFNlY29uZHMgPz8gMTAsXG4gICAgICAgICAgc3VjY2Vzc1RocmVzaG9sZDogZnJvbnRlbmQucmVhZGluZXNzU3VjY2Vzc1RocmVzaG9sZCA/PyAxLFxuICAgICAgICAgIGZhaWx1cmVUaHJlc2hvbGQ6IGZyb250ZW5kLnJlYWRpbmVzc0ZhaWx1cmVUaHJlc2hvbGQgPz8gMyxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gRGVwbG95bWVudFxuICAgICAgY29uc3QgZnJvbnRlbmREZXBsb3ltZW50ID0gbmV3IFBsb25lRGVwbG95bWVudCh0aGlzLCAnZnJvbnRlbmQnLCBmcm9udGVuZE9wdGlvbnMpO1xuXG4gICAgICAvLyBTZXJ2aWNlXG4gICAgICBjb25zdCBmcm9udGVuZFNlcnZpY2UgPSBuZXcgUGxvbmVTZXJ2aWNlKGZyb250ZW5kRGVwbG95bWVudCwgJ3NlcnZpY2UnLCB7XG4gICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9uYW1lJzogJ3Bsb25lLWZyb250ZW5kLXNlcnZpY2UnLFxuICAgICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnQnOiAnc2VydmljZScsXG4gICAgICAgIH0sXG4gICAgICAgIHRhcmdldFBvcnQ6IGZyb250ZW5kUG9ydCxcbiAgICAgICAgc2VsZWN0b3JMYWJlbDogeyBhcHA6IE5hbWVzLnRvTGFiZWxWYWx1ZShmcm9udGVuZERlcGxveW1lbnQpIH0sXG4gICAgICAgIHBvcnROYW1lOiAnZnJvbnRlbmQtaHR0cCcsXG4gICAgICAgIGFubm90YXRpb25zOiBmcm9udGVuZC5zZXJ2aWNlQW5ub3RhdGlvbnMsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZnJvbnRlbmRTZXJ2aWNlTmFtZSA9IGZyb250ZW5kU2VydmljZS5uYW1lO1xuXG4gICAgICAvLyBTZXJ2aWNlTW9uaXRvciBmb3IgZnJvbnRlbmRcbiAgICAgIGlmIChmcm9udGVuZC5zZXJ2aWNlbW9uaXRvcikge1xuICAgICAgICB0aGlzLmNyZWF0ZVNlcnZpY2VNb25pdG9yKGZyb250ZW5kU2VydmljZSwgJ2Zyb250ZW5kJywge1xuICAgICAgICAgIHBvcnQ6IGZyb250ZW5kLm1ldHJpY3NQb3J0ID8/ICdmcm9udGVuZC1odHRwJyxcbiAgICAgICAgICBwYXRoOiBmcm9udGVuZC5tZXRyaWNzUGF0aCA/PyAnL21ldHJpY3MnLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIFByb21ldGhldXMgU2VydmljZU1vbml0b3IgcmVzb3VyY2UgZm9yIHRoZSBnaXZlbiBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gc2VydmljZSBUaGUgUGxvbmVTZXJ2aWNlIHRvIG1vbml0b3JcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgU2VydmljZU1vbml0b3JcbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgU2VydmljZU1vbml0b3JcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlU2VydmljZU1vbml0b3IoXG4gICAgc2VydmljZTogUGxvbmVTZXJ2aWNlLFxuICAgIGlkOiBzdHJpbmcsXG4gICAgY29uZmlnOiB7IHBvcnQ6IHN0cmluZyB8IG51bWJlcjsgcGF0aDogc3RyaW5nIH0sXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHBvcnROYW1lID0gdHlwZW9mIGNvbmZpZy5wb3J0ID09PSAnc3RyaW5nJyA/IGNvbmZpZy5wb3J0IDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHBvcnROdW1iZXIgPSB0eXBlb2YgY29uZmlnLnBvcnQgPT09ICdudW1iZXInXG4gICAgICA/IFNlcnZpY2VNb25pdG9yU3BlY0VuZHBvaW50c1RhcmdldFBvcnQuZnJvbU51bWJlcihjb25maWcucG9ydClcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgbmV3IFNlcnZpY2VNb25pdG9yKHRoaXMsIGBzZXJ2aWNlbW9uaXRvci0ke2lkfWAsIHtcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIG5hbWU6IGAke3NlcnZpY2UubmFtZX0tbW9uaXRvcmAsXG4gICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9uYW1lJzogc2VydmljZS5uYW1lLFxuICAgICAgICAgICdhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnQnOiAnc2VydmljZW1vbml0b3InLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNwZWM6IHtcbiAgICAgICAgc2VsZWN0b3I6IHtcbiAgICAgICAgICBtYXRjaExhYmVsczoge1xuICAgICAgICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL25hbWUnOiBzZXJ2aWNlLmxhYmVsc1snYXBwLmt1YmVybmV0ZXMuaW8vbmFtZSddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGVuZHBvaW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLihwb3J0TmFtZSAmJiB7IHBvcnQ6IHBvcnROYW1lIH0pLFxuICAgICAgICAgICAgLi4uKHBvcnROdW1iZXIgJiYgeyB0YXJnZXRQb3J0OiBwb3J0TnVtYmVyIH0pLFxuICAgICAgICAgICAgcGF0aDogY29uZmlnLnBhdGgsXG4gICAgICAgICAgICBpbnRlcnZhbDogJzMwcycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn0iXX0=
|
package/lib/vinylcache.d.ts
CHANGED
|
@@ -62,6 +62,38 @@ export interface VinylCacheBackend {
|
|
|
62
62
|
*/
|
|
63
63
|
readonly weight?: number;
|
|
64
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* A Varnish storage backend configuration.
|
|
67
|
+
*
|
|
68
|
+
* Maps to `spec.storage[]` on the VinylCache CRD. The operator emits one
|
|
69
|
+
* `-s <name>=<type>,<options>` argument per entry to varnishd.
|
|
70
|
+
*
|
|
71
|
+
* Without any storage entry the operator falls back to the varnishd default
|
|
72
|
+
* (~100 MB malloc), which is almost always too small for real workloads.
|
|
73
|
+
*/
|
|
74
|
+
export interface VinylCacheStorage {
|
|
75
|
+
/**
|
|
76
|
+
* Internal storage identifier used in the varnishd `-s` argument.
|
|
77
|
+
* Must be unique within the VinylCache and match `^[a-zA-Z][a-zA-Z0-9_]*$`.
|
|
78
|
+
*/
|
|
79
|
+
readonly name: string;
|
|
80
|
+
/**
|
|
81
|
+
* Storage backend type. Only "malloc" and "file" are permitted by the
|
|
82
|
+
* admission webhook.
|
|
83
|
+
*/
|
|
84
|
+
readonly type: 'malloc' | 'file';
|
|
85
|
+
/**
|
|
86
|
+
* Storage allocation as a Kubernetes resource quantity (e.g. "1Gi", "500M").
|
|
87
|
+
* Required for malloc; required for file.
|
|
88
|
+
* @default - required for both malloc and file
|
|
89
|
+
*/
|
|
90
|
+
readonly size?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Filesystem path for file-type storage. Ignored for malloc.
|
|
93
|
+
* @default - required for type "file"
|
|
94
|
+
*/
|
|
95
|
+
readonly path?: string;
|
|
96
|
+
}
|
|
65
97
|
/**
|
|
66
98
|
* A Kubernetes toleration for the Varnish pods.
|
|
67
99
|
*/
|
|
@@ -131,6 +163,19 @@ export interface PloneVinylCacheOptions {
|
|
|
131
163
|
* @default '512Mi'
|
|
132
164
|
*/
|
|
133
165
|
readonly limitMemory?: string;
|
|
166
|
+
/**
|
|
167
|
+
* Varnish storage backends (`spec.storage`).
|
|
168
|
+
*
|
|
169
|
+
* Each entry becomes a `-s <name>=<type>,<options>` argument to varnishd.
|
|
170
|
+
* If omitted, the operator ships varnishd with its stock default (~100 MB
|
|
171
|
+
* malloc) — almost always too small. Set an explicit malloc size at least
|
|
172
|
+
* matching the pod's memory request to use the allocated memory for caching.
|
|
173
|
+
*
|
|
174
|
+
* @default - no storage configured; operator uses varnishd default (~100MB malloc)
|
|
175
|
+
* @example
|
|
176
|
+
* storage: [{ name: 's0', type: 'malloc', size: '1Gi' }]
|
|
177
|
+
*/
|
|
178
|
+
readonly storage?: VinylCacheStorage[];
|
|
134
179
|
/**
|
|
135
180
|
* Director type for load distribution.
|
|
136
181
|
* @default 'shard'
|
package/lib/vinylcache.js
CHANGED
|
@@ -119,12 +119,19 @@ class PloneVinylCache extends constructs_1.Construct {
|
|
|
119
119
|
});
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
|
+
const storage = options.storage?.map(s => ({
|
|
123
|
+
name: s.name,
|
|
124
|
+
type: s.type === 'file' ? vinyl_bluedynamics_eu_1.VinylCacheSpecStorageType.FILE : vinyl_bluedynamics_eu_1.VinylCacheSpecStorageType.MALLOC,
|
|
125
|
+
size: s.size !== undefined ? vinyl_bluedynamics_eu_1.VinylCacheSpecStorageSize.fromString(s.size) : undefined,
|
|
126
|
+
path: s.path,
|
|
127
|
+
}));
|
|
122
128
|
const vinylCache = new vinyl_bluedynamics_eu_1.VinylCache(this, 'vinylcache', {
|
|
123
129
|
spec: {
|
|
124
130
|
replicas,
|
|
125
131
|
image: options.image ?? 'varnish:7.6',
|
|
126
132
|
backends,
|
|
127
133
|
director: { type: directorType, shard: shardSpec },
|
|
134
|
+
storage,
|
|
128
135
|
vcl: {
|
|
129
136
|
snippets: {
|
|
130
137
|
vclRecv: vclRecv,
|
|
@@ -179,5 +186,5 @@ class PloneVinylCache extends constructs_1.Construct {
|
|
|
179
186
|
}
|
|
180
187
|
exports.PloneVinylCache = PloneVinylCache;
|
|
181
188
|
_a = JSII_RTTI_SYMBOL_1;
|
|
182
|
-
PloneVinylCache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneVinylCache", version: "0.1.
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlueWxjYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92aW55bGNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpQ0FBOEI7QUFDOUIsMkNBQXVDO0FBQ3ZDLDJFQU95QztBQTBUekM7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFPNUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDO1FBQ2xELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDO1FBRS9DLDZCQUE2QjtRQUM3QixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQztRQUNoRCxJQUFJLFlBQXdDLENBQUM7UUFDN0MsUUFBUSxXQUFXLEVBQUUsQ0FBQztZQUNwQixLQUFLLGFBQWE7Z0JBQ2hCLFlBQVksR0FBRyxrREFBMEIsQ0FBQyxzQkFBc0IsQ0FBQztnQkFDakUsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxZQUFZLEdBQUcsa0RBQTBCLENBQUMsTUFBTSxDQUFDO2dCQUNqRCxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULFlBQVksR0FBRyxrREFBMEIsQ0FBQyxJQUFJLENBQUM7Z0JBQy9DLE1BQU07WUFDUjtnQkFDRSxZQUFZLEdBQUcsa0RBQTBCLENBQUMsS0FBSyxDQUFDO1FBQ3BELENBQUM7UUFFRCxxRkFBcUY7UUFDckYsMkVBQTJFO1FBQzNFLElBQUksU0FLUyxDQUFDO1FBQ2QsSUFBSSxZQUFZLEtBQUssa0RB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QyxDQUFDO3dCQUMxQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUc7d0JBQ1YsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO3dCQUNwQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7d0JBQ2QsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNO3FCQUNqQixDQUFDLENBQUM7b0JBQ0gsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO2lCQUNuQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQ2Q7U0FDRixDQUFDLENBQUM7UUFFSCwrRUFBK0U7UUFDL0UsSUFBSSxDQUFDLHFCQUFxQixHQUFHLGFBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7QUFwTEgsMENBcUxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IE5hbWVzIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQge1xuICBWaW55bENhY2hlLFxuICBWaW55bENhY2hlU3BlY0RpcmVjdG9yU2hhcmRCeSxcbiAgVmlueWxDYWNoZVNwZWNEaXJlY3RvclNoYXJkSGVhbHRoeSxcbiAgVmlueWxDYWNoZVNwZWNEaXJlY3RvclR5cGUsXG4gIFZpbnlsQ2FjaGVTcGVjUmVzb3VyY2VzTGltaXRzLFxuICBWaW55bENhY2hlU3BlY1Jlc291cmNlc1JlcXVlc3RzLFxufSBmcm9tICcuL2ltcG9ydHMvdmlueWwuYmx1ZWR5bmFtaWNzLmV1JztcbmltcG9ydCB7IFBsb25lIH0gZnJvbSAnLi9wbG9uZSc7XG5cbi8qKlxuICogSGVhbHRoIHByb2JlIGNvbmZpZ3VyYXRpb24gZm9yIGEgVmlueWxDYWNoZSBiYWNrZW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpbnlsQ2FjaGVCYWNrZW5kUHJvYmUge1xuICAvKipcbiAgICogVVJMIHRvIHByb2JlLlxuICAgKiBAZGVmYXVsdCAnLydcbiAgICovXG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcblxuICAvKipcbiAgICogSG93IG9mdGVuIHRvIHByb2JlIHRoZSBiYWNrZW5kLlxuICAgKiBAZGVmYXVsdCAnNXMnXG4gICAqL1xuICByZWFkb25seSBpbnRlcnZhbD86IHN0cmluZztcblxuICAvKipcbiAgICogTWF4aW11bSB0aW1lIHRvIHdhaXQgZm9yIGEgcHJvYmUgcmVzcG9uc2UuXG4gICAqIEBkZWZhdWx0ICcycydcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBtb3N0IHJlY2VudCBwcm9iZXMgdG8gY29uc2lkZXIuXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICByZWFkb25seSB3aW5kb3c/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gc3VjY2Vzc2Z1bCBwcm9iZXMgd2l0aGluIHdpbmRvdyBmb3IgaGVhbHRoeSBzdGF0dXMuXG4gICAqIEBkZWZhdWx0IDhcbiAgICovXG4gIHJlYWRvbmx5IHRocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogRXhwZWN0ZWQgSFRUUCByZXNwb25zZSBzdGF0dXMgY29kZS5cbiAgICogQGRlZmF1bHQgMjAwXG4gICAqL1xuICByZWFkb25seSBleHBlY3RlZFJlc3BvbnNlPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEFuIGFkZGl0aW9uYWwgYmFja2VuZCBmb3IgdGhlIFZpbnlsQ2FjaGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlueWxDYWNoZUJhY2tlbmQge1xuICAvKipcbiAgICogVkNMIGlkZW50aWZpZXIgZm9yIHRoaXMgYmFja2VuZC4gTXVzdCBtYXRjaCBeW2EtekEtWl1bYS16QS1aMC05X10qJC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogS3ViZXJuZXRlcyBTZXJ2aWNlIG5hbWUgdG8gdXNlIGFzIGJhY2tlbmQuXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQb3J0IHRvIHVzZSBmb3IgdGhpcyBiYWNrZW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIZWFsdGggcHJvYmUgY29uZmlndXJhdGlvbi5cbiAgICogQGRlZmF1bHQgLSBubyBwcm9iZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvYmU/OiBWaW55bENhY2hlQmFja2VuZFByb2JlO1xuXG4gIC8qKlxuICAgKiBSZWxhdGl2ZSB3ZWlnaHQgZm9yIHRoZSBkaXJlY3Rvci4gMCBtZWFucyBzdGFuZGJ5LlxuICAgKiBAZGVmYXVsdCAtIG9wZXJhdG9yIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IHdlaWdodD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIEt1YmVybmV0ZXMgdG9sZXJhdGlvbiBmb3IgdGhlIFZhcm5pc2ggcG9kcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaW55bENhY2hlVG9sZXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdGFpbnQga2V5IHRvIHRvbGVyYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRvciAoRXF1YWwgb3IgRXhpc3RzKS5cbiAgICogQGRlZmF1bHQgJ0VxdWFsJ1xuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0b3I/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWludCB2YWx1ZSB0byBtYXRjaCAod2hlbiBvcGVyYXRvciBpcyBFcXVhbCkuXG4gICAqIEBkZWZhdWx0IC0gbm8gdmFsdWVcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFpbnQgZWZmZWN0IHRvIHRvbGVyYXRlIChOb1NjaGVkdWxlLCBQcmVmZXJOb1NjaGVkdWxlLCBOb0V4ZWN1dGUpLlxuICAgKiBAZGVmYXVsdCAtIHRvbGVyYXRlIGFsbCBlZmZlY3RzXG4gICAqL1xuICByZWFkb25seSBlZmZlY3Q/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBQbG9uZVZpbnlsQ2FjaGUgKGNsb3VkLXZpbnlsIG9wZXJhdG9yKS5cbiAqXG4gKiBDcmVhdGVzIGEgVmlueWxDYWNoZSBjdXN0b20gcmVzb3VyY2UgdGhhdCB0aGUgY2xvdWQtdmlueWwgb3BlcmF0b3JcbiAqIHJlY29uY2lsZXMgaW50byBhIFZhcm5pc2ggQ2FjaGUgY2x1c3RlciB3aXRoIGFnZW50LWJhc2VkIFZDTCBkZWxpdmVyeS5cbiAqXG4gKiBSZXF1aXJlcyB0aGUgY2xvdWQtdmlueWwgb3BlcmF0b3IgdG8gYmUgaW5zdGFsbGVkIGluIHRoZSBjbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsb25lVmlueWxDYWNoZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIFBsb25lIGNvbnN0cnVjdCB0byBhdHRhY2ggdGhlIGNhY2hlIHRvLlxuICAgKiBCYWNrZW5kcyBhcmUgYXV0by1jb25maWd1cmVkIGZyb20gdGhlIFBsb25lIHNlcnZpY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGxvbmU6IFBsb25lO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGJhY2tlbmRzIHRvIGFkZCBhZnRlciB0aGUgYXV0by1nZW5lcmF0ZWQgUGxvbmUgYmFja2VuZHMuXG4gICAqIFVzZXMgdGhlIHNhbWUgYmFja2VuZCB0eXBlIHN0cnVjdHVyZSBhcyB0aGUgVmlueWxDYWNoZSBDUkQuXG4gICAqIEBkZWZhdWx0IC0gbm8gZXh0cmEgYmFja2VuZHNcbiAgICovXG4gIHJlYWRvbmx5IGV4dHJhQmFja2VuZHM/OiBWaW55bENhY2hlQmFja2VuZFtdO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgVmFybmlzaCBwb2QgcmVwbGljYXMuXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHJlYWRvbmx5IHJlcGxpY2FzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDUFUgcmVxdWVzdCBmb3IgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAnMTAwbSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RDcHU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lbW9yeSByZXF1ZXN0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICcyNTZNaSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RNZW1vcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENQVSBsaW1pdCBmb3IgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAnNTAwbSdcbiAgICovXG4gIHJlYWRvbmx5IGxpbWl0Q3B1Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNZW1vcnkgbGltaXQgZm9yIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJzUxMk1pJ1xuICAgKi9cbiAgcmVhZG9ubHkgbGltaXRNZW1vcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERpcmVjdG9yIHR5cGUgZm9yIGxvYWQgZGlzdHJpYnV0aW9uLlxuICAgKiBAZGVmYXVsdCAnc2hhcmQnXG4gICAqL1xuICByZWFkb25seSBkaXJlY3Rvcj86IHN0cmluZztcblxuICAvKipcbiAgICogU2hhcmQgZGlyZWN0b3I6IHdoYXQgdmFsdWUgaXMgaGFzaGVkIGZvciBzaGFyZCBzZWxlY3Rpb24uXG4gICAqIFwiSEFTSFwiIHVzZXMgdGhlIFZhcm5pc2ggaGFzaCAoZGVmYXVsdCk7IFwiVVJMXCIgdXNlcyB0aGUgcmVxdWVzdCBVUkwuXG4gICAqIE9ubHkgYXBwbGllZCB3aGVuIGRpcmVjdG9yIGlzIFwic2hhcmRcIi5cbiAgICogUmVxdWlyZXMgY2xvdWQtdmlueWwgb3BlcmF0b3IgPj0gMC40LjIuXG4gICAqIEBkZWZhdWx0IC0gb3BlcmF0b3IgZGVmYXVsdCAoXCJIQVNIXCIpXG4gICAqL1xuICByZWFkb25seSBzaGFyZEJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaGFyZCBkaXJlY3Rvcjogd2hpY2ggYmFja2VuZHMgdGhlIGRpcmVjdG9yIGNvbnNpZGVycyB3aGVuIHNlbGVjdGluZyBhIHNoYXJkLlxuICAgKiBcIkNIT1NFTlwiIChkZWZhdWx0KSBvbmx5IGNvbnNpZGVycyB0aGUgY2hvc2VuIGJhY2tlbmQgaGVhbHRoeTsgXCJBTExcIiByZXF1aXJlcyBhbGxcbiAgICogYmFja2VuZHMgdG8gYmUgaGVhbHRoeS5cbiAgICogT25seSBhcHBsaWVkIHdoZW4gZGlyZWN0b3IgaXMgXCJzaGFyZFwiLlxuICAgKiBSZXF1aXJlcyBjbG91ZC12aW55bCBvcGVyYXRvciA+PSAwLjQuMi5cbiAgICogQGRlZmF1bHQgLSBvcGVyYXRvciBkZWZhdWx0IChcIkNIT1NFTlwiKVxuICAgKi9cbiAgcmVhZG9ubHkgc2hhcmRIZWFsdGh5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaGFyZCBkaXJlY3RvcjogdGltZSBhZnRlciBhZGRpbmcgYSBiYWNrZW5kIGJlZm9yZSBpdCByZWNlaXZlcyBpdHMgZnVsbCBzaGFyZSBvZlxuICAgKiB0cmFmZmljLCBwcmV2ZW50aW5nIHRodW5kZXJpbmctaGVyZC5cbiAgICogT25seSBhcHBsaWVkIHdoZW4gZGlyZWN0b3IgaXMgXCJzaGFyZFwiLlxuICAgKiBAZGVmYXVsdCAtIG9wZXJhdG9yIGRlZmF1bHQgKFwiMzBzXCIpXG4gICAqL1xuICByZWFkb25seSBzaGFyZFJhbXB1cD86IHN0cmluZztcblxuICAvKipcbiAgICogU2hhcmQgZGlyZWN0b3I6IG51bWJlciBvZiBLZXRhbWEgcmVwbGljYXMgcGVyIGJhY2tlbmQgaW4gdGhlIGhhc2ggcmluZy5cbiAgICogT25seSBhcHBsaWVkIHdoZW4gZGlyZWN0b3IgaXMgXCJzaGFyZFwiLlxuICAgKiBAZGVmYXVsdCAtIG9wZXJhdG9yIGRlZmF1bHQgKDY3KVxuICAgKi9cbiAgcmVhZG9ubHkgc2hhcmRSZXBsaWNhcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfcmVjdiBzdWJyb3V0aW5lLlxuICAgKiBSZXBsYWNlcyB0aGUgZGVmYXVsdCBQbG9uZSByZWN2IHNuaXBwZXQuXG4gICAqIEBkZWZhdWx0IC0gdXNlcyBidWlsdC1pbiBwbG9uZS12aW55bC1yZWN2LnZjbFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsUmVjdlNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX2JhY2tlbmRfcmVzcG9uc2Ugc3Vicm91dGluZS5cbiAgICogUmVwbGFjZXMgdGhlIGRlZmF1bHQgUGxvbmUgYmFja2VuZF9yZXNwb25zZSBzbmlwcGV0LlxuICAgKiBAZGVmYXVsdCAtIHVzZXMgYnVpbHQtaW4gcGxvbmUtdmlueWwtYmFja2VuZC1yZXNwb25zZS52Y2xcbiAgICovXG4gIHJlYWRvbmx5IHZjbEJhY2tlbmRSZXNwb25zZVNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBjYWNoZSBpbnZhbGlkYXRpb24gKFBVUkdFLCBCQU4sIHhrZXkpLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBpbnZhbGlkYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgUHJvbWV0aGV1cyBtb25pdG9yaW5nIChtZXRyaWNzICsgU2VydmljZU1vbml0b3IpLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbnRhaW5lciBpbWFnZSBmb3IgdGhlIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJ3Zhcm5pc2g6Ny42J1xuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvbGVyYXRpb25zIGZvciB0aGUgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAtIG5vIHRvbGVyYXRpb25zXG4gICAqL1xuICByZWFkb25seSB0b2xlcmF0aW9ucz86IFZpbnlsQ2FjaGVUb2xlcmF0aW9uW107XG5cbiAgLyoqXG4gICAqIE5vZGUgc2VsZWN0b3IgbGFiZWxzIGZvciB0aGUgVmFybmlzaCBwb2RzLlxuICAgKiBDb25zdHJhaW5zIHBvZHMgdG8gbm9kZXMgbWF0Y2hpbmcgYWxsIHNwZWNpZmllZCBsYWJlbHMuXG4gICAqIEBkZWZhdWx0IC0gbm8gbm9kZSBzZWxlY3RvclxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVNlbGVjdG9yPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfZGVsaXZlciBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbERlbGl2ZXJTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9oaXQgc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xIaXRTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9taXNzIHN1YnJvdXRpbmUuXG4gICAqIEBkZWZhdWx0IC0gbm8gc25pcHBldFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsTWlzc1NuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX3Bhc3Mgc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xQYXNzU25pcHBldD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfcGlwZSBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbFBpcGVTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9zeW50aCBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbFN5bnRoU25pcHBldD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfcHVyZ2Ugc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xQdXJnZVNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX2hhc2ggc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xIYXNoU25pcHBldD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfaW5pdCBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbEluaXRTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9maW5pIHN1YnJvdXRpbmUuXG4gICAqIEBkZWZhdWx0IC0gbm8gc25pcHBldFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsRmluaVNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX2JhY2tlbmRfZmV0Y2ggc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xCYWNrZW5kRmV0Y2hTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9iYWNrZW5kX2Vycm9yIHN1YnJvdXRpbmUuXG4gICAqIEBkZWZhdWx0IC0gbm8gc25pcHBldFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsQmFja2VuZEVycm9yU25pcHBldD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQbG9uZVZpbnlsQ2FjaGUgY29uc3RydWN0IGZvciBkZXBsb3lpbmcgVmFybmlzaCBDYWNoZSB2aWEgY2xvdWQtdmlueWwgb3BlcmF0b3IuXG4gKlxuICogQ3JlYXRlcyBhIFZpbnlsQ2FjaGUgY3VzdG9tIHJlc291cmNlIHdpdGggUGxvbmUgYmFja2VuZC9mcm9udGVuZCBzZXJ2aWNlc1xuICogYXV0by1jb25maWd1cmVkIGFzIGJhY2tlbmRzLiBUaGUgY2xvdWQtdmlueWwgb3BlcmF0b3IgbWFuYWdlcyB0aGUgZnVsbFxuICogVmFybmlzaCBsaWZlY3ljbGUgaW5jbHVkaW5nIFZDTCBnZW5lcmF0aW9uLCBhZ2VudCBkZWxpdmVyeSwgYW5kIG1vbml0b3JpbmcuXG4gKlxuICogUmVxdWlyZXMgdGhlIGNsb3VkLXZpbnlsIG9wZXJhdG9yIHRvIGJlIGluc3RhbGxlZCBpbiB0aGUgY2x1c3Rlci5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcGxvbmUgPSBuZXcgUGxvbmUoY2hhcnQsICdwbG9uZScpO1xuICogY29uc3QgY2FjaGUgPSBuZXcgUGxvbmVWaW55bENhY2hlKGNoYXJ0LCAnY2FjaGUnLCB7XG4gKiAgIHBsb25lOiBwbG9uZSxcbiAqICAgcmVwbGljYXM6IDIsXG4gKiB9KTtcbiAqIC8vIFVzZSBjYWNoZS52aW55bENhY2hlU2VydmljZU5hbWUgZm9yIEluZ3Jlc3NSb3V0ZVxuICovXG5leHBvcnQgY2xhc3MgUGxvbmVWaW55bENhY2hlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIFZpbnlsQ2FjaGUgc2VydmljZSBjcmVhdGVkIGJ5IHRoZSBvcGVyYXRvci5cbiAgICogVXNlIHRoaXMgdG8gcmVmZXJlbmNlIHRoZSBjYWNoZSBzZXJ2aWNlIGZyb20gaW5ncmVzcyBvciBvdGhlciBjb25zdHJ1Y3RzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZpbnlsQ2FjaGVTZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFBsb25lVmlueWxDYWNoZU9wdGlvbnMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgcmVwbGljYXMgPSBvcHRpb25zLnJlcGxpY2FzID8/IDI7XG4gICAgY29uc3QgaW52YWxpZGF0aW9uID0gb3B0aW9ucy5pbnZhbGlkYXRpb24gPz8gdHJ1ZTtcbiAgICBjb25zdCBtb25pdG9yaW5nID0gb3B0aW9ucy5tb25pdG9yaW5nID8/IGZhbHNlO1xuXG4gICAgLy8gUmVzb2x2ZSBkaXJlY3RvciB0eXBlIGVudW1cbiAgICBjb25zdCBkaXJlY3RvclN0ciA9IG9wdGlvbnMuZGlyZWN0b3IgPz8gJ3NoYXJkJztcbiAgICBsZXQgZGlyZWN0b3JUeXBlOiBWaW55bENhY2hlU3BlY0RpcmVjdG9yVHlwZTtcbiAgICBzd2l0Y2ggKGRpcmVjdG9yU3RyKSB7XG4gICAgICBjYXNlICdyb3VuZF9yb2Jpbic6XG4gICAgICAgIGRpcmVjdG9yVHlwZSA9IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JUeXBlLlJPVU5EX1VOREVSU0NPUkVfUk9CSU47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmFuZG9tJzpcbiAgICAgICAgZGlyZWN0b3JUeXBlID0gVmlueWxDYWNoZVNwZWNEaXJlY3RvclR5cGUuUkFORE9NO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2hhc2gnOlxuICAgICAgICBkaXJlY3RvclR5cGUgPSBWaW55bENhY2hlU3BlY0RpcmVjdG9yVHlwZS5IQVNIO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGRpcmVjdG9yVHlwZSA9IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JUeXBlLlNIQVJEO1xuICAgIH1cblxuICAgIC8vIFNoYXJkIGRpcmVjdG9yIHR1bmluZzogb25seSBob25vcmVkIGJ5IHRoZSBvcGVyYXRvciB3aGVuIGRpcmVjdG9yIHR5cGUgaXMgXCJzaGFyZFwiLlxuICAgIC8vIEVtaXQgdGhlIHNoYXJkIGJsb2NrIG9ubHkgZm9yIHNoYXJkIGRpcmVjdG9ycyBzbyBtYW5pZmVzdHMgc3RheSBtaW5pbWFsLlxuICAgIGxldCBzaGFyZFNwZWM6IHtcbiAgICAgIGJ5PzogVmlueWxDYWNoZVNwZWNEaXJlY3RvclNoYXJkQnk7XG4gICAgICBoZWFsdGh5PzogVmlueWxDYWNoZVNwZWNEaXJlY3RvclNoYXJkSGVhbHRoeTtcbiAgICAgIHJhbXB1cD86IHN0cmluZztcbiAgICAgIHJlcGxpY2FzPzogbnVtYmVyO1xuICAgIH0gfCB1bmRlZmluZWQ7XG4gICAgaWYgKGRpcmVjdG9yVHlwZSA9PT0gVmlueWxDYWNoZVNwZWNEaXJlY3RvclR5cGUuU0hBUkQgJiZcbiAgICAgICAgKG9wdGlvbnMuc2hhcmRCeSB8fCBvcHRpb25zLnNoYXJkSGVhbHRoeSB8fCBvcHRpb25zLnNoYXJkUmFtcHVwIHx8IG9wdGlvbnMuc2hhcmRSZXBsaWNhcyAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgbGV0IHNoYXJkQnk6IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JTaGFyZEJ5IHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKG9wdGlvbnMuc2hhcmRCeSA9PT0gJ1VSTCcpIHNoYXJkQnkgPSBWaW55bENhY2hlU3BlY0RpcmVjdG9yU2hhcmRCeS5VUkw7XG4gICAgICBlbHNlIGlmIChvcHRpb25zLnNoYXJkQnkgPT09ICdIQVNIJykgc2hhcmRCeSA9IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JTaGFyZEJ5LkhBU0g7XG5cbiAgICAgIGxldCBzaGFyZEhlYWx0aHk6IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JTaGFyZEhlYWx0aHkgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAob3B0aW9ucy5zaGFyZEhlYWx0aHkgPT09ICdBTEwnKSBzaGFyZEhlYWx0aHkgPSBWaW55bENhY2hlU3BlY0RpcmVjdG9yU2hhcmRIZWFsdGh5LkFMTDtcbiAgICAgIGVsc2UgaWYgKG9wdGlvbnMuc2hhcmRIZWFsdGh5ID09PSAnQ0hPU0VOJykgc2hhcmRIZWFsdGh5ID0gVmlueWxDYWNoZVNwZWNEaXJlY3RvclNoYXJkSGVhbHRoeS5DSE9TRU47XG5cbiAgICAgIHNoYXJkU3BlYyA9IHtcbiAgICAgICAgYnk6IHNoYXJkQnksXG4gICAgICAgIGhlYWx0aHk6IHNoYXJkSGVhbHRoeSxcbiAgICAgICAgcmFtcHVwOiBvcHRpb25zLnNoYXJkUmFtcHVwLFxuICAgICAgICByZXBsaWNhczogb3B0aW9ucy5zaGFyZFJlcGxpY2FzLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBMb2FkIGRlZmF1bHQgVkNMIHNuaXBwZXRzXG4gICAgY29uc3QgdmNsUmVjdiA9IG9wdGlvbnMudmNsUmVjdlNuaXBwZXQgPz9cbiAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCAnY29uZmlnJywgJ3Bsb25lLXZpbnlsLXJlY3YudmNsJyksICd1dGY4Jyk7XG4gICAgY29uc3QgdmNsQmFja2VuZFJlc3BvbnNlID0gb3B0aW9ucy52Y2xCYWNrZW5kUmVzcG9uc2VTbmlwcGV0ID8/XG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgJ2NvbmZpZycsICdwbG9uZS12aW55bC1iYWNrZW5kLXJlc3BvbnNlLnZjbCcpLCAndXRmOCcpO1xuXG4gICAgLy8gQnVpbGQgYmFja2VuZHMgZnJvbSBQbG9uZSBzZXJ2aWNlc1xuICAgIGNvbnN0IGJhY2tlbmRzOiBBcnJheTx7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBzZXJ2aWNlUmVmOiB7IG5hbWU6IHN0cmluZyB9O1xuICAgICAgcG9ydDogbnVtYmVyO1xuICAgICAgcHJvYmU/OiB7XG4gICAgICAgIHVybDogc3RyaW5nO1xuICAgICAgICBpbnRlcnZhbDogc3RyaW5nO1xuICAgICAgICB0aW1lb3V0OiBzdHJpbmc7XG4gICAgICAgIHdpbmRvdzogbnVtYmVyO1xuICAgICAgICB0aHJlc2hvbGQ6IG51bWJlcjtcbiAgICAgIH07XG4gICAgICB3ZWlnaHQ/OiBudW1iZXI7XG4gICAgfT4gPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdwbG9uZV9iYWNrZW5kJyxcbiAgICAgICAgc2VydmljZVJlZjogeyBuYW1lOiBvcHRpb25zLnBsb25lLmJhY2tlbmRTZXJ2aWNlTmFtZSB9LFxuICAgICAgICBwb3J0OiA4MDgwLFxuICAgICAgICBwcm9iZToge1xuICAgICAgICAgIHVybDogJy9vaycsXG4gICAgICAgICAgaW50ZXJ2YWw6ICc1cycsXG4gICAgICAgICAgdGltZW91dDogJzJzJyxcbiAgICAgICAgICB3aW5kb3c6IDEwLFxuICAgICAgICAgIHRocmVzaG9sZDogOCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGlmIChvcHRpb25zLnBsb25lLmZyb250ZW5kU2VydmljZU5hbWUpIHtcbiAgICAgIGJhY2tlbmRzLnB1c2goe1xuICAgICAgICBuYW1lOiAncGxvbmVfZnJvbnRlbmQnLFxuICAgICAgICBzZXJ2aWNlUmVmOiB7IG5hbWU6IG9wdGlvbnMucGxvbmUuZnJvbnRlbmRTZXJ2aWNlTmFtZSB9LFxuICAgICAgICBwb3J0OiAzMDAwLFxuICAgICAgICBwcm9iZToge1xuICAgICAgICAgIHVybDogJy8nLFxuICAgICAgICAgIGludGVydmFsOiAnNXMnLFxuICAgICAgICAgIHRpbWVvdXQ6ICcycycsXG4gICAgICAgICAgd2luZG93OiAxMCxcbiAgICAgICAgICB0aHJlc2hvbGQ6IDgsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5leHRyYUJhY2tlbmRzKSB7XG4gICAgICBmb3IgKGNvbnN0IGViIG9mIG9wdGlvbnMuZXh0cmFCYWNrZW5kcykge1xuICAgICAgICBiYWNrZW5kcy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBlYi5uYW1lLFxuICAgICAgICAgIHNlcnZpY2VSZWY6IHsgbmFtZTogZWIuc2VydmljZU5hbWUgfSxcbiAgICAgICAgICBwb3J0OiBlYi5wb3J0LFxuICAgICAgICAgIHByb2JlOiBlYi5wcm9iZSA/IHtcbiAgICAgICAgICAgIHVybDogZWIucHJvYmUudXJsID8/ICcvJyxcbiAgICAgICAgICAgIGludGVydmFsOiBlYi5wcm9iZS5pbnRlcnZhbCA/PyAnNXMnLFxuICAgICAgICAgICAgdGltZW91dDogZWIucHJvYmUudGltZW91dCA/PyAnMnMnLFxuICAgICAgICAgICAgd2luZG93OiBlYi5wcm9iZS53aW5kb3cgPz8gMTAsXG4gICAgICAgICAgICB0aHJlc2hvbGQ6IGViLnByb2JlLnRocmVzaG9sZCA/PyA4LFxuICAgICAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHZpbnlsQ2FjaGUgPSBuZXcgVmlueWxDYWNoZSh0aGlzLCAndmlueWxjYWNoZScsIHtcbiAgICAgIHNwZWM6IHtcbiAgICAgICAgcmVwbGljYXMsXG4gICAgICAgIGltYWdlOiBvcHRpb25zLmltYWdlID8/ICd2YXJuaXNoOjcuNicsXG4gICAgICAgIGJhY2tlbmRzLFxuICAgICAgICBkaXJlY3RvcjogeyB0eXBlOiBkaXJlY3RvclR5cGUsIHNoYXJkOiBzaGFyZFNwZWMgfSxcbiAgICAgICAgdmNsOiB7XG4gICAgICAgICAgc25pcHBldHM6IHtcbiAgICAgICAgICAgIHZjbFJlY3Y6IHZjbFJlY3YsXG4gICAgICAgICAgICB2Y2xCYWNrZW5kUmVzcG9uc2U6IHZjbEJhY2tlbmRSZXNwb25zZSxcbiAgICAgICAgICAgIHZjbERlbGl2ZXI6IG9wdGlvbnMudmNsRGVsaXZlclNuaXBwZXQsXG4gICAgICAgICAgICB2Y2xIaXQ6IG9wdGlvbnMudmNsSGl0U25pcHBldCxcbiAgICAgICAgICAgIHZjbE1pc3M6IG9wdGlvbnMudmNsTWlzc1NuaXBwZXQsXG4gICAgICAgICAgICB2Y2xQYXNzOiBvcHRpb25zLnZjbFBhc3NTbmlwcGV0LFxuICAgICAgICAgICAgdmNsUGlwZTogb3B0aW9ucy52Y2xQaXBlU25pcHBldCxcbiAgICAgICAgICAgIHZjbFN5bnRoOiBvcHRpb25zLnZjbFN5bnRoU25pcHBldCxcbiAgICAgICAgICAgIHZjbFB1cmdlOiBvcHRpb25zLnZjbFB1cmdlU25pcHBldCxcbiAgICAgICAgICAgIHZjbEhhc2g6IG9wdGlvbnMudmNsSGFzaFNuaXBwZXQsXG4gICAgICAgICAgICB2Y2xJbml0OiBvcHRpb25zLnZjbEluaXRTbmlwcGV0LFxuICAgICAgICAgICAgdmNsRmluaTogb3B0aW9ucy52Y2xGaW5pU25pcHBldCxcbiAgICAgICAgICAgIHZjbEJhY2tlbmRGZXRjaDogb3B0aW9ucy52Y2xCYWNrZW5kRmV0Y2hTbmlwcGV0LFxuICAgICAgICAgICAgdmNsQmFja2VuZEVycm9yOiBvcHRpb25zLnZjbEJhY2tlbmRFcnJvclNuaXBwZXQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb3VyY2VzOiB7XG4gICAgICAgICAgcmVxdWVzdHM6IHtcbiAgICAgICAgICAgIGNwdTogVmlueWxDYWNoZVNwZWNSZXNvdXJjZXNSZXF1ZXN0cy5mcm9tU3RyaW5nKG9wdGlvbnMucmVxdWVzdENwdSA/PyAnMTAwbScpLFxuICAgICAgICAgICAgbWVtb3J5OiBWaW55bENhY2hlU3BlY1Jlc291cmNlc1JlcXVlc3RzLmZyb21TdHJpbmcob3B0aW9ucy5yZXF1ZXN0TWVtb3J5ID8/ICcyNTZNaScpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICBjcHU6IFZpbnlsQ2FjaGVTcGVjUmVzb3VyY2VzTGltaXRzLmZyb21TdHJpbmcob3B0aW9ucy5saW1pdENwdSA/PyAnNTAwbScpLFxuICAgICAgICAgICAgbWVtb3J5OiBWaW55bENhY2hlU3BlY1Jlc291cmNlc0xpbWl0cy5mcm9tU3RyaW5nKG9wdGlvbnMubGltaXRNZW1vcnkgPz8gJzUxMk1pJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgaW52YWxpZGF0aW9uOiBpbnZhbGlkYXRpb24gPyB7XG4gICAgICAgICAgcHVyZ2U6IHsgZW5hYmxlZDogdHJ1ZSB9LFxuICAgICAgICAgIGJhbjogeyBlbmFibGVkOiB0cnVlIH0sXG4gICAgICAgICAgeGtleTogeyBlbmFibGVkOiB0cnVlIH0sXG4gICAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIG1vbml0b3Jpbmc6IG1vbml0b3JpbmcgPyB7XG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBzZXJ2aWNlTW9uaXRvcjogeyBlbmFibGVkOiB0cnVlIH0sXG4gICAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIHBvZDogKG9wdGlvbnMudG9sZXJhdGlvbnM/Lmxlbmd0aCB8fCBvcHRpb25zLm5vZGVTZWxlY3RvcikgPyB7XG4gICAgICAgICAgdG9sZXJhdGlvbnM6IG9wdGlvbnMudG9sZXJhdGlvbnM/Lm1hcCh0ID0+ICh7XG4gICAgICAgICAgICBrZXk6IHQua2V5LFxuICAgICAgICAgICAgb3BlcmF0b3I6IHQub3BlcmF0b3IsXG4gICAgICAgICAgICB2YWx1ZTogdC52YWx1ZSxcbiAgICAgICAgICAgIGVmZmVjdDogdC5lZmZlY3QsXG4gICAgICAgICAgfSkpLFxuICAgICAgICAgIG5vZGVTZWxlY3Rvcjogb3B0aW9ucy5ub2RlU2VsZWN0b3IsXG4gICAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gVGhlIG9wZXJhdG9yIGNyZWF0ZXMgYSBzZXJ2aWNlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgVmlueWxDYWNoZSByZXNvdXJjZVxuICAgIHRoaXMudmlueWxDYWNoZVNlcnZpY2VOYW1lID0gTmFtZXMudG9MYWJlbFZhbHVlKHZpbnlsQ2FjaGUpO1xuICB9XG59XG4iXX0=
|
|
189
|
+
PloneVinylCache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneVinylCache", version: "0.1.32" };
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlueWxjYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92aW55bGNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpQ0FBOEI7QUFDOUIsMkNBQXVDO0FBQ3ZDLDJFQVV5QztBQTRXekM7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFPNUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDO1FBQ2xELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDO1FBRS9DLDZCQUE2QjtRQUM3QixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQztRQUNoRCxJQUFJLFlBQXdDLENBQUM7UUFDN0MsUUFBUSxXQUFXLEVBQUUsQ0FBQztZQUNwQixLQUFLLGFBQWE7Z0JBQ2hCLFlBQVksR0FBRyxrREFBMEIsQ0FBQyxzQkFBc0IsQ0FBQztnQkFDakUsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxZQUFZLEdBQUcsa0RBQTBCLENBQUMsTUFBTSxDQUFDO2dCQUNqRCxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULFlBQVksR0FBRyxrREFBMEIsQ0FBQyxJQUFJLENBQUM7Z0JBQy9DLE1BQU07WUFDUjtnQkFDRSxZQUFZLEdBQUcsa0RBQTBCLENBQUMsS0FBSyxDQUFDO1FBQ3BELENBQUM7UUFFRCxxRkFBcUY7UUFDckYsMkVBQTJFO1FBQzNFLElBQUksU0FLUyxDQUFDO1FBQ2QsSUFBSSxZQUFZLEtBQUssa0RB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QUU7b0JBQ3hCLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7b0JBQ3RCLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7aUJBQ3hCLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxJQUFJO29CQUNiLGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7aUJBQ2xDLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2IsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxNQUFNLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDM0QsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDMUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHO3dCQUNWLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTt3QkFDcEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO3dCQUNkLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTTtxQkFDakIsQ0FBQyxDQUFDO29CQUNILFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtpQkFDbkMsQ0FBQyxDQUFDLENBQUMsU0FBUzthQUNkO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsK0VBQStFO1FBQy9FLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxhQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlELENBQUM7O0FBNUxILDBDQTZMQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBOYW1lcyB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtcbiAgVmlueWxDYWNoZSxcbiAgVmlueWxDYWNoZVNwZWNEaXJlY3RvclNoYXJkQnksXG4gIFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JTaGFyZEhlYWx0aHksXG4gIFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JUeXBlLFxuICBWaW55bENhY2hlU3BlY1Jlc291cmNlc0xpbWl0cyxcbiAgVmlueWxDYWNoZVNwZWNSZXNvdXJjZXNSZXF1ZXN0cyxcbiAgVmlueWxDYWNoZVNwZWNTdG9yYWdlLFxuICBWaW55bENhY2hlU3BlY1N0b3JhZ2VTaXplLFxuICBWaW55bENhY2hlU3BlY1N0b3JhZ2VUeXBlLFxufSBmcm9tICcuL2ltcG9ydHMvdmlueWwuYmx1ZWR5bmFtaWNzLmV1JztcbmltcG9ydCB7IFBsb25lIH0gZnJvbSAnLi9wbG9uZSc7XG5cbi8qKlxuICogSGVhbHRoIHByb2JlIGNvbmZpZ3VyYXRpb24gZm9yIGEgVmlueWxDYWNoZSBiYWNrZW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpbnlsQ2FjaGVCYWNrZW5kUHJvYmUge1xuICAvKipcbiAgICogVVJMIHRvIHByb2JlLlxuICAgKiBAZGVmYXVsdCAnLydcbiAgICovXG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcblxuICAvKipcbiAgICogSG93IG9mdGVuIHRvIHByb2JlIHRoZSBiYWNrZW5kLlxuICAgKiBAZGVmYXVsdCAnNXMnXG4gICAqL1xuICByZWFkb25seSBpbnRlcnZhbD86IHN0cmluZztcblxuICAvKipcbiAgICogTWF4aW11bSB0aW1lIHRvIHdhaXQgZm9yIGEgcHJvYmUgcmVzcG9uc2UuXG4gICAqIEBkZWZhdWx0ICcycydcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBtb3N0IHJlY2VudCBwcm9iZXMgdG8gY29uc2lkZXIuXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICByZWFkb25seSB3aW5kb3c/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gc3VjY2Vzc2Z1bCBwcm9iZXMgd2l0aGluIHdpbmRvdyBmb3IgaGVhbHRoeSBzdGF0dXMuXG4gICAqIEBkZWZhdWx0IDhcbiAgICovXG4gIHJlYWRvbmx5IHRocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogRXhwZWN0ZWQgSFRUUCByZXNwb25zZSBzdGF0dXMgY29kZS5cbiAgICogQGRlZmF1bHQgMjAwXG4gICAqL1xuICByZWFkb25seSBleHBlY3RlZFJlc3BvbnNlPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEFuIGFkZGl0aW9uYWwgYmFja2VuZCBmb3IgdGhlIFZpbnlsQ2FjaGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlueWxDYWNoZUJhY2tlbmQge1xuICAvKipcbiAgICogVkNMIGlkZW50aWZpZXIgZm9yIHRoaXMgYmFja2VuZC4gTXVzdCBtYXRjaCBeW2EtekEtWl1bYS16QS1aMC05X10qJC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogS3ViZXJuZXRlcyBTZXJ2aWNlIG5hbWUgdG8gdXNlIGFzIGJhY2tlbmQuXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQb3J0IHRvIHVzZSBmb3IgdGhpcyBiYWNrZW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIZWFsdGggcHJvYmUgY29uZmlndXJhdGlvbi5cbiAgICogQGRlZmF1bHQgLSBubyBwcm9iZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvYmU/OiBWaW55bENhY2hlQmFja2VuZFByb2JlO1xuXG4gIC8qKlxuICAgKiBSZWxhdGl2ZSB3ZWlnaHQgZm9yIHRoZSBkaXJlY3Rvci4gMCBtZWFucyBzdGFuZGJ5LlxuICAgKiBAZGVmYXVsdCAtIG9wZXJhdG9yIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IHdlaWdodD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIFZhcm5pc2ggc3RvcmFnZSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogTWFwcyB0byBgc3BlYy5zdG9yYWdlW11gIG9uIHRoZSBWaW55bENhY2hlIENSRC4gVGhlIG9wZXJhdG9yIGVtaXRzIG9uZVxuICogYC1zIDxuYW1lPj08dHlwZT4sPG9wdGlvbnM+YCBhcmd1bWVudCBwZXIgZW50cnkgdG8gdmFybmlzaGQuXG4gKlxuICogV2l0aG91dCBhbnkgc3RvcmFnZSBlbnRyeSB0aGUgb3BlcmF0b3IgZmFsbHMgYmFjayB0byB0aGUgdmFybmlzaGQgZGVmYXVsdFxuICogKH4xMDAgTUIgbWFsbG9jKSwgd2hpY2ggaXMgYWxtb3N0IGFsd2F5cyB0b28gc21hbGwgZm9yIHJlYWwgd29ya2xvYWRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpbnlsQ2FjaGVTdG9yYWdlIHtcbiAgLyoqXG4gICAqIEludGVybmFsIHN0b3JhZ2UgaWRlbnRpZmllciB1c2VkIGluIHRoZSB2YXJuaXNoZCBgLXNgIGFyZ3VtZW50LlxuICAgKiBNdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIFZpbnlsQ2FjaGUgYW5kIG1hdGNoIGBeW2EtekEtWl1bYS16QS1aMC05X10qJGAuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFN0b3JhZ2UgYmFja2VuZCB0eXBlLiBPbmx5IFwibWFsbG9jXCIgYW5kIFwiZmlsZVwiIGFyZSBwZXJtaXR0ZWQgYnkgdGhlXG4gICAqIGFkbWlzc2lvbiB3ZWJob29rLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogJ21hbGxvYycgfCAnZmlsZSc7XG5cbiAgLyoqXG4gICAqIFN0b3JhZ2UgYWxsb2NhdGlvbiBhcyBhIEt1YmVybmV0ZXMgcmVzb3VyY2UgcXVhbnRpdHkgKGUuZy4gXCIxR2lcIiwgXCI1MDBNXCIpLlxuICAgKiBSZXF1aXJlZCBmb3IgbWFsbG9jOyByZXF1aXJlZCBmb3IgZmlsZS5cbiAgICogQGRlZmF1bHQgLSByZXF1aXJlZCBmb3IgYm90aCBtYWxsb2MgYW5kIGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHNpemU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpbGVzeXN0ZW0gcGF0aCBmb3IgZmlsZS10eXBlIHN0b3JhZ2UuIElnbm9yZWQgZm9yIG1hbGxvYy5cbiAgICogQGRlZmF1bHQgLSByZXF1aXJlZCBmb3IgdHlwZSBcImZpbGVcIlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIEt1YmVybmV0ZXMgdG9sZXJhdGlvbiBmb3IgdGhlIFZhcm5pc2ggcG9kcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaW55bENhY2hlVG9sZXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdGFpbnQga2V5IHRvIHRvbGVyYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRvciAoRXF1YWwgb3IgRXhpc3RzKS5cbiAgICogQGRlZmF1bHQgJ0VxdWFsJ1xuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0b3I/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWludCB2YWx1ZSB0byBtYXRjaCAod2hlbiBvcGVyYXRvciBpcyBFcXVhbCkuXG4gICAqIEBkZWZhdWx0IC0gbm8gdmFsdWVcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFpbnQgZWZmZWN0IHRvIHRvbGVyYXRlIChOb1NjaGVkdWxlLCBQcmVmZXJOb1NjaGVkdWxlLCBOb0V4ZWN1dGUpLlxuICAgKiBAZGVmYXVsdCAtIHRvbGVyYXRlIGFsbCBlZmZlY3RzXG4gICAqL1xuICByZWFkb25seSBlZmZlY3Q/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBQbG9uZVZpbnlsQ2FjaGUgKGNsb3VkLXZpbnlsIG9wZXJhdG9yKS5cbiAqXG4gKiBDcmVhdGVzIGEgVmlueWxDYWNoZSBjdXN0b20gcmVzb3VyY2UgdGhhdCB0aGUgY2xvdWQtdmlueWwgb3BlcmF0b3JcbiAqIHJlY29uY2lsZXMgaW50byBhIFZhcm5pc2ggQ2FjaGUgY2x1c3RlciB3aXRoIGFnZW50LWJhc2VkIFZDTCBkZWxpdmVyeS5cbiAqXG4gKiBSZXF1aXJlcyB0aGUgY2xvdWQtdmlueWwgb3BlcmF0b3IgdG8gYmUgaW5zdGFsbGVkIGluIHRoZSBjbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsb25lVmlueWxDYWNoZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIFBsb25lIGNvbnN0cnVjdCB0byBhdHRhY2ggdGhlIGNhY2hlIHRvLlxuICAgKiBCYWNrZW5kcyBhcmUgYXV0by1jb25maWd1cmVkIGZyb20gdGhlIFBsb25lIHNlcnZpY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGxvbmU6IFBsb25lO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGJhY2tlbmRzIHRvIGFkZCBhZnRlciB0aGUgYXV0by1nZW5lcmF0ZWQgUGxvbmUgYmFja2VuZHMuXG4gICAqIFVzZXMgdGhlIHNhbWUgYmFja2VuZCB0eXBlIHN0cnVjdHVyZSBhcyB0aGUgVmlueWxDYWNoZSBDUkQuXG4gICAqIEBkZWZhdWx0IC0gbm8gZXh0cmEgYmFja2VuZHNcbiAgICovXG4gIHJlYWRvbmx5IGV4dHJhQmFja2VuZHM/OiBWaW55bENhY2hlQmFja2VuZFtdO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgVmFybmlzaCBwb2QgcmVwbGljYXMuXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHJlYWRvbmx5IHJlcGxpY2FzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDUFUgcmVxdWVzdCBmb3IgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAnMTAwbSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RDcHU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lbW9yeSByZXF1ZXN0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICcyNTZNaSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RNZW1vcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENQVSBsaW1pdCBmb3IgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAnNTAwbSdcbiAgICovXG4gIHJlYWRvbmx5IGxpbWl0Q3B1Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNZW1vcnkgbGltaXQgZm9yIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJzUxMk1pJ1xuICAgKi9cbiAgcmVhZG9ubHkgbGltaXRNZW1vcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhcm5pc2ggc3RvcmFnZSBiYWNrZW5kcyAoYHNwZWMuc3RvcmFnZWApLlxuICAgKlxuICAgKiBFYWNoIGVudHJ5IGJlY29tZXMgYSBgLXMgPG5hbWU+PTx0eXBlPiw8b3B0aW9ucz5gIGFyZ3VtZW50IHRvIHZhcm5pc2hkLlxuICAgKiBJZiBvbWl0dGVkLCB0aGUgb3BlcmF0b3Igc2hpcHMgdmFybmlzaGQgd2l0aCBpdHMgc3RvY2sgZGVmYXVsdCAofjEwMCBNQlxuICAgKiBtYWxsb2MpIOKAlCBhbG1vc3QgYWx3YXlzIHRvbyBzbWFsbC4gU2V0IGFuIGV4cGxpY2l0IG1hbGxvYyBzaXplIGF0IGxlYXN0XG4gICAqIG1hdGNoaW5nIHRoZSBwb2QncyBtZW1vcnkgcmVxdWVzdCB0byB1c2UgdGhlIGFsbG9jYXRlZCBtZW1vcnkgZm9yIGNhY2hpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc3RvcmFnZSBjb25maWd1cmVkOyBvcGVyYXRvciB1c2VzIHZhcm5pc2hkIGRlZmF1bHQgKH4xMDBNQiBtYWxsb2MpXG4gICAqIEBleGFtcGxlXG4gICAqIHN0b3JhZ2U6IFt7IG5hbWU6ICdzMCcsIHR5cGU6ICdtYWxsb2MnLCBzaXplOiAnMUdpJyB9XVxuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZT86IFZpbnlsQ2FjaGVTdG9yYWdlW107XG5cbiAgLyoqXG4gICAqIERpcmVjdG9yIHR5cGUgZm9yIGxvYWQgZGlzdHJpYnV0aW9uLlxuICAgKiBAZGVmYXVsdCAnc2hhcmQnXG4gICAqL1xuICByZWFkb25seSBkaXJlY3Rvcj86IHN0cmluZztcblxuICAvKipcbiAgICogU2hhcmQgZGlyZWN0b3I6IHdoYXQgdmFsdWUgaXMgaGFzaGVkIGZvciBzaGFyZCBzZWxlY3Rpb24uXG4gICAqIFwiSEFTSFwiIHVzZXMgdGhlIFZhcm5pc2ggaGFzaCAoZGVmYXVsdCk7IFwiVVJMXCIgdXNlcyB0aGUgcmVxdWVzdCBVUkwuXG4gICAqIE9ubHkgYXBwbGllZCB3aGVuIGRpcmVjdG9yIGlzIFwic2hhcmRcIi5cbiAgICogUmVxdWlyZXMgY2xvdWQtdmlueWwgb3BlcmF0b3IgPj0gMC40LjIuXG4gICAqIEBkZWZhdWx0IC0gb3BlcmF0b3IgZGVmYXVsdCAoXCJIQVNIXCIpXG4gICAqL1xuICByZWFkb25seSBzaGFyZEJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaGFyZCBkaXJlY3Rvcjogd2hpY2ggYmFja2VuZHMgdGhlIGRpcmVjdG9yIGNvbnNpZGVycyB3aGVuIHNlbGVjdGluZyBhIHNoYXJkLlxuICAgKiBcIkNIT1NFTlwiIChkZWZhdWx0KSBvbmx5IGNvbnNpZGVycyB0aGUgY2hvc2VuIGJhY2tlbmQgaGVhbHRoeTsgXCJBTExcIiByZXF1aXJlcyBhbGxcbiAgICogYmFja2VuZHMgdG8gYmUgaGVhbHRoeS5cbiAgICogT25seSBhcHBsaWVkIHdoZW4gZGlyZWN0b3IgaXMgXCJzaGFyZFwiLlxuICAgKiBSZXF1aXJlcyBjbG91ZC12aW55bCBvcGVyYXRvciA+PSAwLjQuMi5cbiAgICogQGRlZmF1bHQgLSBvcGVyYXRvciBkZWZhdWx0IChcIkNIT1NFTlwiKVxuICAgKi9cbiAgcmVhZG9ubHkgc2hhcmRIZWFsdGh5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaGFyZCBkaXJlY3RvcjogdGltZSBhZnRlciBhZGRpbmcgYSBiYWNrZW5kIGJlZm9yZSBpdCByZWNlaXZlcyBpdHMgZnVsbCBzaGFyZSBvZlxuICAgKiB0cmFmZmljLCBwcmV2ZW50aW5nIHRodW5kZXJpbmctaGVyZC5cbiAgICogT25seSBhcHBsaWVkIHdoZW4gZGlyZWN0b3IgaXMgXCJzaGFyZFwiLlxuICAgKiBAZGVmYXVsdCAtIG9wZXJhdG9yIGRlZmF1bHQgKFwiMzBzXCIpXG4gICAqL1xuICByZWFkb25seSBzaGFyZFJhbXB1cD86IHN0cmluZztcblxuICAvKipcbiAgICogU2hhcmQgZGlyZWN0b3I6IG51bWJlciBvZiBLZXRhbWEgcmVwbGljYXMgcGVyIGJhY2tlbmQgaW4gdGhlIGhhc2ggcmluZy5cbiAgICogT25seSBhcHBsaWVkIHdoZW4gZGlyZWN0b3IgaXMgXCJzaGFyZFwiLlxuICAgKiBAZGVmYXVsdCAtIG9wZXJhdG9yIGRlZmF1bHQgKDY3KVxuICAgKi9cbiAgcmVhZG9ubHkgc2hhcmRSZXBsaWNhcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfcmVjdiBzdWJyb3V0aW5lLlxuICAgKiBSZXBsYWNlcyB0aGUgZGVmYXVsdCBQbG9uZSByZWN2IHNuaXBwZXQuXG4gICAqIEBkZWZhdWx0IC0gdXNlcyBidWlsdC1pbiBwbG9uZS12aW55bC1yZWN2LnZjbFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsUmVjdlNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX2JhY2tlbmRfcmVzcG9uc2Ugc3Vicm91dGluZS5cbiAgICogUmVwbGFjZXMgdGhlIGRlZmF1bHQgUGxvbmUgYmFja2VuZF9yZXNwb25zZSBzbmlwcGV0LlxuICAgKiBAZGVmYXVsdCAtIHVzZXMgYnVpbHQtaW4gcGxvbmUtdmlueWwtYmFja2VuZC1yZXNwb25zZS52Y2xcbiAgICovXG4gIHJlYWRvbmx5IHZjbEJhY2tlbmRSZXNwb25zZVNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBjYWNoZSBpbnZhbGlkYXRpb24gKFBVUkdFLCBCQU4sIHhrZXkpLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBpbnZhbGlkYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgUHJvbWV0aGV1cyBtb25pdG9yaW5nIChtZXRyaWNzICsgU2VydmljZU1vbml0b3IpLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbnRhaW5lciBpbWFnZSBmb3IgdGhlIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJ3Zhcm5pc2g6Ny42J1xuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvbGVyYXRpb25zIGZvciB0aGUgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAtIG5vIHRvbGVyYXRpb25zXG4gICAqL1xuICByZWFkb25seSB0b2xlcmF0aW9ucz86IFZpbnlsQ2FjaGVUb2xlcmF0aW9uW107XG5cbiAgLyoqXG4gICAqIE5vZGUgc2VsZWN0b3IgbGFiZWxzIGZvciB0aGUgVmFybmlzaCBwb2RzLlxuICAgKiBDb25zdHJhaW5zIHBvZHMgdG8gbm9kZXMgbWF0Y2hpbmcgYWxsIHNwZWNpZmllZCBsYWJlbHMuXG4gICAqIEBkZWZhdWx0IC0gbm8gbm9kZSBzZWxlY3RvclxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVNlbGVjdG9yPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfZGVsaXZlciBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbERlbGl2ZXJTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9oaXQgc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xIaXRTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9taXNzIHN1YnJvdXRpbmUuXG4gICAqIEBkZWZhdWx0IC0gbm8gc25pcHBldFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsTWlzc1NuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX3Bhc3Mgc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xQYXNzU25pcHBldD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfcGlwZSBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbFBpcGVTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9zeW50aCBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbFN5bnRoU25pcHBldD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfcHVyZ2Ugc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xQdXJnZVNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX2hhc2ggc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xIYXNoU25pcHBldD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFZDTCBzbmlwcGV0IGZvciB2Y2xfaW5pdCBzdWJyb3V0aW5lLlxuICAgKiBAZGVmYXVsdCAtIG5vIHNuaXBwZXRcbiAgICovXG4gIHJlYWRvbmx5IHZjbEluaXRTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9maW5pIHN1YnJvdXRpbmUuXG4gICAqIEBkZWZhdWx0IC0gbm8gc25pcHBldFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsRmluaVNuaXBwZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBWQ0wgc25pcHBldCBmb3IgdmNsX2JhY2tlbmRfZmV0Y2ggc3Vicm91dGluZS5cbiAgICogQGRlZmF1bHQgLSBubyBzbmlwcGV0XG4gICAqL1xuICByZWFkb25seSB2Y2xCYWNrZW5kRmV0Y2hTbmlwcGV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVkNMIHNuaXBwZXQgZm9yIHZjbF9iYWNrZW5kX2Vycm9yIHN1YnJvdXRpbmUuXG4gICAqIEBkZWZhdWx0IC0gbm8gc25pcHBldFxuICAgKi9cbiAgcmVhZG9ubHkgdmNsQmFja2VuZEVycm9yU25pcHBldD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQbG9uZVZpbnlsQ2FjaGUgY29uc3RydWN0IGZvciBkZXBsb3lpbmcgVmFybmlzaCBDYWNoZSB2aWEgY2xvdWQtdmlueWwgb3BlcmF0b3IuXG4gKlxuICogQ3JlYXRlcyBhIFZpbnlsQ2FjaGUgY3VzdG9tIHJlc291cmNlIHdpdGggUGxvbmUgYmFja2VuZC9mcm9udGVuZCBzZXJ2aWNlc1xuICogYXV0by1jb25maWd1cmVkIGFzIGJhY2tlbmRzLiBUaGUgY2xvdWQtdmlueWwgb3BlcmF0b3IgbWFuYWdlcyB0aGUgZnVsbFxuICogVmFybmlzaCBsaWZlY3ljbGUgaW5jbHVkaW5nIFZDTCBnZW5lcmF0aW9uLCBhZ2VudCBkZWxpdmVyeSwgYW5kIG1vbml0b3JpbmcuXG4gKlxuICogUmVxdWlyZXMgdGhlIGNsb3VkLXZpbnlsIG9wZXJhdG9yIHRvIGJlIGluc3RhbGxlZCBpbiB0aGUgY2x1c3Rlci5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcGxvbmUgPSBuZXcgUGxvbmUoY2hhcnQsICdwbG9uZScpO1xuICogY29uc3QgY2FjaGUgPSBuZXcgUGxvbmVWaW55bENhY2hlKGNoYXJ0LCAnY2FjaGUnLCB7XG4gKiAgIHBsb25lOiBwbG9uZSxcbiAqICAgcmVwbGljYXM6IDIsXG4gKiB9KTtcbiAqIC8vIFVzZSBjYWNoZS52aW55bENhY2hlU2VydmljZU5hbWUgZm9yIEluZ3Jlc3NSb3V0ZVxuICovXG5leHBvcnQgY2xhc3MgUGxvbmVWaW55bENhY2hlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIFZpbnlsQ2FjaGUgc2VydmljZSBjcmVhdGVkIGJ5IHRoZSBvcGVyYXRvci5cbiAgICogVXNlIHRoaXMgdG8gcmVmZXJlbmNlIHRoZSBjYWNoZSBzZXJ2aWNlIGZyb20gaW5ncmVzcyBvciBvdGhlciBjb25zdHJ1Y3RzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZpbnlsQ2FjaGVTZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFBsb25lVmlueWxDYWNoZU9wdGlvbnMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgcmVwbGljYXMgPSBvcHRpb25zLnJlcGxpY2FzID8/IDI7XG4gICAgY29uc3QgaW52YWxpZGF0aW9uID0gb3B0aW9ucy5pbnZhbGlkYXRpb24gPz8gdHJ1ZTtcbiAgICBjb25zdCBtb25pdG9yaW5nID0gb3B0aW9ucy5tb25pdG9yaW5nID8/IGZhbHNlO1xuXG4gICAgLy8gUmVzb2x2ZSBkaXJlY3RvciB0eXBlIGVudW1cbiAgICBjb25zdCBkaXJlY3RvclN0ciA9IG9wdGlvbnMuZGlyZWN0b3IgPz8gJ3NoYXJkJztcbiAgICBsZXQgZGlyZWN0b3JUeXBlOiBWaW55bENhY2hlU3BlY0RpcmVjdG9yVHlwZTtcbiAgICBzd2l0Y2ggKGRpcmVjdG9yU3RyKSB7XG4gICAgICBjYXNlICdyb3VuZF9yb2Jpbic6XG4gICAgICAgIGRpcmVjdG9yVHlwZSA9IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JUeXBlLlJPVU5EX1VOREVSU0NPUkVfUk9CSU47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmFuZG9tJzpcbiAgICAgICAgZGlyZWN0b3JUeXBlID0gVmlueWxDYWNoZVNwZWNEaXJlY3RvclR5cGUuUkFORE9NO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2hhc2gnOlxuICAgICAgICBkaXJlY3RvclR5cGUgPSBWaW55bENhY2hlU3BlY0RpcmVjdG9yVHlwZS5IQVNIO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGRpcmVjdG9yVHlwZSA9IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JUeXBlLlNIQVJEO1xuICAgIH1cblxuICAgIC8vIFNoYXJkIGRpcmVjdG9yIHR1bmluZzogb25seSBob25vcmVkIGJ5IHRoZSBvcGVyYXRvciB3aGVuIGRpcmVjdG9yIHR5cGUgaXMgXCJzaGFyZFwiLlxuICAgIC8vIEVtaXQgdGhlIHNoYXJkIGJsb2NrIG9ubHkgZm9yIHNoYXJkIGRpcmVjdG9ycyBzbyBtYW5pZmVzdHMgc3RheSBtaW5pbWFsLlxuICAgIGxldCBzaGFyZFNwZWM6IHtcbiAgICAgIGJ5PzogVmlueWxDYWNoZVNwZWNEaXJlY3RvclNoYXJkQnk7XG4gICAgICBoZWFsdGh5PzogVmlueWxDYWNoZVNwZWNEaXJlY3RvclNoYXJkSGVhbHRoeTtcbiAgICAgIHJhbXB1cD86IHN0cmluZztcbiAgICAgIHJlcGxpY2FzPzogbnVtYmVyO1xuICAgIH0gfCB1bmRlZmluZWQ7XG4gICAgaWYgKGRpcmVjdG9yVHlwZSA9PT0gVmlueWxDYWNoZVNwZWNEaXJlY3RvclR5cGUuU0hBUkQgJiZcbiAgICAgICAgKG9wdGlvbnMuc2hhcmRCeSB8fCBvcHRpb25zLnNoYXJkSGVhbHRoeSB8fCBvcHRpb25zLnNoYXJkUmFtcHVwIHx8IG9wdGlvbnMuc2hhcmRSZXBsaWNhcyAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgbGV0IHNoYXJkQnk6IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JTaGFyZEJ5IHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKG9wdGlvbnMuc2hhcmRCeSA9PT0gJ1VSTCcpIHNoYXJkQnkgPSBWaW55bENhY2hlU3BlY0RpcmVjdG9yU2hhcmRCeS5VUkw7XG4gICAgICBlbHNlIGlmIChvcHRpb25zLnNoYXJkQnkgPT09ICdIQVNIJykgc2hhcmRCeSA9IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JTaGFyZEJ5LkhBU0g7XG5cbiAgICAgIGxldCBzaGFyZEhlYWx0aHk6IFZpbnlsQ2FjaGVTcGVjRGlyZWN0b3JTaGFyZEhlYWx0aHkgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAob3B0aW9ucy5zaGFyZEhlYWx0aHkgPT09ICdBTEwnKSBzaGFyZEhlYWx0aHkgPSBWaW55bENhY2hlU3BlY0RpcmVjdG9yU2hhcmRIZWFsdGh5LkFMTDtcbiAgICAgIGVsc2UgaWYgKG9wdGlvbnMuc2hhcmRIZWFsdGh5ID09PSAnQ0hPU0VOJykgc2hhcmRIZWFsdGh5ID0gVmlueWxDYWNoZVNwZWNEaXJlY3RvclNoYXJkSGVhbHRoeS5DSE9TRU47XG5cbiAgICAgIHNoYXJkU3BlYyA9IHtcbiAgICAgICAgYnk6IHNoYXJkQnksXG4gICAgICAgIGhlYWx0aHk6IHNoYXJkSGVhbHRoeSxcbiAgICAgICAgcmFtcHVwOiBvcHRpb25zLnNoYXJkUmFtcHVwLFxuICAgICAgICByZXBsaWNhczogb3B0aW9ucy5zaGFyZFJlcGxpY2FzLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBMb2FkIGRlZmF1bHQgVkNMIHNuaXBwZXRzXG4gICAgY29uc3QgdmNsUmVjdiA9IG9wdGlvbnMudmNsUmVjdlNuaXBwZXQgPz9cbiAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCAnY29uZmlnJywgJ3Bsb25lLXZpbnlsLXJlY3YudmNsJyksICd1dGY4Jyk7XG4gICAgY29uc3QgdmNsQmFja2VuZFJlc3BvbnNlID0gb3B0aW9ucy52Y2xCYWNrZW5kUmVzcG9uc2VTbmlwcGV0ID8/XG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgJ2NvbmZpZycsICdwbG9uZS12aW55bC1iYWNrZW5kLXJlc3BvbnNlLnZjbCcpLCAndXRmOCcpO1xuXG4gICAgLy8gQnVpbGQgYmFja2VuZHMgZnJvbSBQbG9uZSBzZXJ2aWNlc1xuICAgIGNvbnN0IGJhY2tlbmRzOiBBcnJheTx7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBzZXJ2aWNlUmVmOiB7IG5hbWU6IHN0cmluZyB9O1xuICAgICAgcG9ydDogbnVtYmVyO1xuICAgICAgcHJvYmU/OiB7XG4gICAgICAgIHVybDogc3RyaW5nO1xuICAgICAgICBpbnRlcnZhbDogc3RyaW5nO1xuICAgICAgICB0aW1lb3V0OiBzdHJpbmc7XG4gICAgICAgIHdpbmRvdzogbnVtYmVyO1xuICAgICAgICB0aHJlc2hvbGQ6IG51bWJlcjtcbiAgICAgIH07XG4gICAgICB3ZWlnaHQ/OiBudW1iZXI7XG4gICAgfT4gPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdwbG9uZV9iYWNrZW5kJyxcbiAgICAgICAgc2VydmljZVJlZjogeyBuYW1lOiBvcHRpb25zLnBsb25lLmJhY2tlbmRTZXJ2aWNlTmFtZSB9LFxuICAgICAgICBwb3J0OiA4MDgwLFxuICAgICAgICBwcm9iZToge1xuICAgICAgICAgIHVybDogJy9vaycsXG4gICAgICAgICAgaW50ZXJ2YWw6ICc1cycsXG4gICAgICAgICAgdGltZW91dDogJzJzJyxcbiAgICAgICAgICB3aW5kb3c6IDEwLFxuICAgICAgICAgIHRocmVzaG9sZDogOCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGlmIChvcHRpb25zLnBsb25lLmZyb250ZW5kU2VydmljZU5hbWUpIHtcbiAgICAgIGJhY2tlbmRzLnB1c2goe1xuICAgICAgICBuYW1lOiAncGxvbmVfZnJvbnRlbmQnLFxuICAgICAgICBzZXJ2aWNlUmVmOiB7IG5hbWU6IG9wdGlvbnMucGxvbmUuZnJvbnRlbmRTZXJ2aWNlTmFtZSB9LFxuICAgICAgICBwb3J0OiAzMDAwLFxuICAgICAgICBwcm9iZToge1xuICAgICAgICAgIHVybDogJy8nLFxuICAgICAgICAgIGludGVydmFsOiAnNXMnLFxuICAgICAgICAgIHRpbWVvdXQ6ICcycycsXG4gICAgICAgICAgd2luZG93OiAxMCxcbiAgICAgICAgICB0aHJlc2hvbGQ6IDgsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5leHRyYUJhY2tlbmRzKSB7XG4gICAgICBmb3IgKGNvbnN0IGViIG9mIG9wdGlvbnMuZXh0cmFCYWNrZW5kcykge1xuICAgICAgICBiYWNrZW5kcy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBlYi5uYW1lLFxuICAgICAgICAgIHNlcnZpY2VSZWY6IHsgbmFtZTogZWIuc2VydmljZU5hbWUgfSxcbiAgICAgICAgICBwb3J0OiBlYi5wb3J0LFxuICAgICAgICAgIHByb2JlOiBlYi5wcm9iZSA/IHtcbiAgICAgICAgICAgIHVybDogZWIucHJvYmUudXJsID8/ICcvJyxcbiAgICAgICAgICAgIGludGVydmFsOiBlYi5wcm9iZS5pbnRlcnZhbCA/PyAnNXMnLFxuICAgICAgICAgICAgdGltZW91dDogZWIucHJvYmUudGltZW91dCA/PyAnMnMnLFxuICAgICAgICAgICAgd2luZG93OiBlYi5wcm9iZS53aW5kb3cgPz8gMTAsXG4gICAgICAgICAgICB0aHJlc2hvbGQ6IGViLnByb2JlLnRocmVzaG9sZCA/PyA4LFxuICAgICAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHN0b3JhZ2U6IFZpbnlsQ2FjaGVTcGVjU3RvcmFnZVtdIHwgdW5kZWZpbmVkID0gb3B0aW9ucy5zdG9yYWdlPy5tYXAocyA9PiAoe1xuICAgICAgbmFtZTogcy5uYW1lLFxuICAgICAgdHlwZTogcy50eXBlID09PSAnZmlsZScgPyBWaW55bENhY2hlU3BlY1N0b3JhZ2VUeXBlLkZJTEUgOiBWaW55bENhY2hlU3BlY1N0b3JhZ2VUeXBlLk1BTExPQyxcbiAgICAgIHNpemU6IHMuc2l6ZSAhPT0gdW5kZWZpbmVkID8gVmlueWxDYWNoZVNwZWNTdG9yYWdlU2l6ZS5mcm9tU3RyaW5nKHMuc2l6ZSkgOiB1bmRlZmluZWQsXG4gICAgICBwYXRoOiBzLnBhdGgsXG4gICAgfSkpO1xuXG4gICAgY29uc3QgdmlueWxDYWNoZSA9IG5ldyBWaW55bENhY2hlKHRoaXMsICd2aW55bGNhY2hlJywge1xuICAgICAgc3BlYzoge1xuICAgICAgICByZXBsaWNhcyxcbiAgICAgICAgaW1hZ2U6IG9wdGlvbnMuaW1hZ2UgPz8gJ3Zhcm5pc2g6Ny42JyxcbiAgICAgICAgYmFja2VuZHMsXG4gICAgICAgIGRpcmVjdG9yOiB7IHR5cGU6IGRpcmVjdG9yVHlwZSwgc2hhcmQ6IHNoYXJkU3BlYyB9LFxuICAgICAgICBzdG9yYWdlLFxuICAgICAgICB2Y2w6IHtcbiAgICAgICAgICBzbmlwcGV0czoge1xuICAgICAgICAgICAgdmNsUmVjdjogdmNsUmVjdixcbiAgICAgICAgICAgIHZjbEJhY2tlbmRSZXNwb25zZTogdmNsQmFja2VuZFJlc3BvbnNlLFxuICAgICAgICAgICAgdmNsRGVsaXZlcjogb3B0aW9ucy52Y2xEZWxpdmVyU25pcHBldCxcbiAgICAgICAgICAgIHZjbEhpdDogb3B0aW9ucy52Y2xIaXRTbmlwcGV0LFxuICAgICAgICAgICAgdmNsTWlzczogb3B0aW9ucy52Y2xNaXNzU25pcHBldCxcbiAgICAgICAgICAgIHZjbFBhc3M6IG9wdGlvbnMudmNsUGFzc1NuaXBwZXQsXG4gICAgICAgICAgICB2Y2xQaXBlOiBvcHRpb25zLnZjbFBpcGVTbmlwcGV0LFxuICAgICAgICAgICAgdmNsU3ludGg6IG9wdGlvbnMudmNsU3ludGhTbmlwcGV0LFxuICAgICAgICAgICAgdmNsUHVyZ2U6IG9wdGlvbnMudmNsUHVyZ2VTbmlwcGV0LFxuICAgICAgICAgICAgdmNsSGFzaDogb3B0aW9ucy52Y2xIYXNoU25pcHBldCxcbiAgICAgICAgICAgIHZjbEluaXQ6IG9wdGlvbnMudmNsSW5pdFNuaXBwZXQsXG4gICAgICAgICAgICB2Y2xGaW5pOiBvcHRpb25zLnZjbEZpbmlTbmlwcGV0LFxuICAgICAgICAgICAgdmNsQmFja2VuZEZldGNoOiBvcHRpb25zLnZjbEJhY2tlbmRGZXRjaFNuaXBwZXQsXG4gICAgICAgICAgICB2Y2xCYWNrZW5kRXJyb3I6IG9wdGlvbnMudmNsQmFja2VuZEVycm9yU25pcHBldCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByZXNvdXJjZXM6IHtcbiAgICAgICAgICByZXF1ZXN0czoge1xuICAgICAgICAgICAgY3B1OiBWaW55bENhY2hlU3BlY1Jlc291cmNlc1JlcXVlc3RzLmZyb21TdHJpbmcob3B0aW9ucy5yZXF1ZXN0Q3B1ID8/ICcxMDBtJyksXG4gICAgICAgICAgICBtZW1vcnk6IFZpbnlsQ2FjaGVTcGVjUmVzb3VyY2VzUmVxdWVzdHMuZnJvbVN0cmluZyhvcHRpb25zLnJlcXVlc3RNZW1vcnkgPz8gJzI1Nk1pJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsaW1pdHM6IHtcbiAgICAgICAgICAgIGNwdTogVmlueWxDYWNoZVNwZWNSZXNvdXJjZXNMaW1pdHMuZnJvbVN0cmluZyhvcHRpb25zLmxpbWl0Q3B1ID8/ICc1MDBtJyksXG4gICAgICAgICAgICBtZW1vcnk6IFZpbnlsQ2FjaGVTcGVjUmVzb3VyY2VzTGltaXRzLmZyb21TdHJpbmcob3B0aW9ucy5saW1pdE1lbW9yeSA/PyAnNTEyTWknKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBpbnZhbGlkYXRpb246IGludmFsaWRhdGlvbiA/IHtcbiAgICAgICAgICBwdXJnZTogeyBlbmFibGVkOiB0cnVlIH0sXG4gICAgICAgICAgYmFuOiB7IGVuYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgICB4a2V5OiB7IGVuYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgbW9uaXRvcmluZzogbW9uaXRvcmluZyA/IHtcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHNlcnZpY2VNb25pdG9yOiB7IGVuYWJsZWQ6IHRydWUgfSxcbiAgICAgICAgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgcG9kOiAob3B0aW9ucy50b2xlcmF0aW9ucz8ubGVuZ3RoIHx8IG9wdGlvbnMubm9kZVNlbGVjdG9yKSA/IHtcbiAgICAgICAgICB0b2xlcmF0aW9uczogb3B0aW9ucy50b2xlcmF0aW9ucz8ubWFwKHQgPT4gKHtcbiAgICAgICAgICAgIGtleTogdC5rZXksXG4gICAgICAgICAgICBvcGVyYXRvcjogdC5vcGVyYXRvcixcbiAgICAgICAgICAgIHZhbHVlOiB0LnZhbHVlLFxuICAgICAgICAgICAgZWZmZWN0OiB0LmVmZmVjdCxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgbm9kZVNlbGVjdG9yOiBvcHRpb25zLm5vZGVTZWxlY3RvcixcbiAgICAgICAgfSA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBUaGUgb3BlcmF0b3IgY3JlYXRlcyBhIHNlcnZpY2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSBWaW55bENhY2hlIHJlc291cmNlXG4gICAgdGhpcy52aW55bENhY2hlU2VydmljZU5hbWUgPSBOYW1lcy50b0xhYmVsVmFsdWUodmlueWxDYWNoZSk7XG4gIH1cbn1cbiJdfQ==
|