@cdktn/provider-docker 12.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +230 -0
- package/.jsii +46911 -0
- package/LICENSE +355 -0
- package/README.md +94 -0
- package/lib/buildx-builder/index.d.ts +764 -0
- package/lib/buildx-builder/index.js +1791 -0
- package/lib/config/index.d.ts +68 -0
- package/lib/config/index.js +129 -0
- package/lib/container/index.d.ts +1845 -0
- package/lib/container/index.js +4085 -0
- package/lib/data-docker-image/index.d.ts +59 -0
- package/lib/data-docker-image/index.js +115 -0
- package/lib/data-docker-logs/index.d.ts +153 -0
- package/lib/data-docker-logs/index.js +325 -0
- package/lib/data-docker-network/index.d.ts +90 -0
- package/lib/data-docker-network/index.js +207 -0
- package/lib/data-docker-plugin/index.d.ts +66 -0
- package/lib/data-docker-plugin/index.js +134 -0
- package/lib/data-docker-registry-image/index.d.ts +70 -0
- package/lib/data-docker-registry-image/index.js +136 -0
- package/lib/data-docker-registry-image-manifests/index.d.ts +161 -0
- package/lib/data-docker-registry-image-manifests/index.js +366 -0
- package/lib/image/index.d.ts +871 -0
- package/lib/image/index.js +2003 -0
- package/lib/index.d.ts +22 -0
- package/lib/index.js +27 -0
- package/lib/lazy-index.d.ts +4 -0
- package/lib/lazy-index.js +25 -0
- package/lib/network/index.d.ts +334 -0
- package/lib/network/index.js +666 -0
- package/lib/plugin/index.d.ts +200 -0
- package/lib/plugin/index.js +414 -0
- package/lib/provider/index.d.ts +186 -0
- package/lib/provider/index.js +342 -0
- package/lib/registry-image/index.d.ts +155 -0
- package/lib/registry-image/index.js +320 -0
- package/lib/secret/index.d.ts +132 -0
- package/lib/secret/index.js +281 -0
- package/lib/service/index.d.ts +2282 -0
- package/lib/service/index.js +5760 -0
- package/lib/tag/index.d.ts +80 -0
- package/lib/tag/index.js +154 -0
- package/lib/volume/index.d.ts +154 -0
- package/lib/volume/index.js +312 -0
- package/package.json +152 -0
- package/tsconfig.eslint.json +34 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) HashiCorp, Inc.
|
|
3
|
+
* SPDX-License-Identifier: MPL-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { Construct } from 'constructs';
|
|
6
|
+
import * as cdktf from 'cdktf';
|
|
7
|
+
export interface DockerProviderConfig {
|
|
8
|
+
/**
|
|
9
|
+
* PEM-encoded content of Docker host CA certificate
|
|
10
|
+
*
|
|
11
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#ca_material DockerProvider#ca_material}
|
|
12
|
+
*/
|
|
13
|
+
readonly caMaterial?: string;
|
|
14
|
+
/**
|
|
15
|
+
* PEM-encoded content of Docker client certificate
|
|
16
|
+
*
|
|
17
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#cert_material DockerProvider#cert_material}
|
|
18
|
+
*/
|
|
19
|
+
readonly certMaterial?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Path to directory with Docker TLS config
|
|
22
|
+
*
|
|
23
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#cert_path DockerProvider#cert_path}
|
|
24
|
+
*/
|
|
25
|
+
readonly certPath?: string;
|
|
26
|
+
/**
|
|
27
|
+
* The name of the Docker context to use. Can also be set via `DOCKER_CONTEXT` environment variable. Overrides the `host` if set.
|
|
28
|
+
*
|
|
29
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#context DockerProvider#context}
|
|
30
|
+
*/
|
|
31
|
+
readonly context?: string;
|
|
32
|
+
/**
|
|
33
|
+
* If set to `true`, the provider will not check if the Docker daemon is running. This is useful for resources/data_sourcess that do not require a running Docker daemon, such as the data source `docker_registry_image`.
|
|
34
|
+
*
|
|
35
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#disable_docker_daemon_check DockerProvider#disable_docker_daemon_check}
|
|
36
|
+
*/
|
|
37
|
+
readonly disableDockerDaemonCheck?: boolean | cdktf.IResolvable;
|
|
38
|
+
/**
|
|
39
|
+
* The Docker daemon address
|
|
40
|
+
*
|
|
41
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#host DockerProvider#host}
|
|
42
|
+
*/
|
|
43
|
+
readonly host?: string;
|
|
44
|
+
/**
|
|
45
|
+
* PEM-encoded content of Docker client private key
|
|
46
|
+
*
|
|
47
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#key_material DockerProvider#key_material}
|
|
48
|
+
*/
|
|
49
|
+
readonly keyMaterial?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Additional SSH option flags to be appended when using `ssh://` protocol
|
|
52
|
+
*
|
|
53
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#ssh_opts DockerProvider#ssh_opts}
|
|
54
|
+
*/
|
|
55
|
+
readonly sshOpts?: string[];
|
|
56
|
+
/**
|
|
57
|
+
* Alias name
|
|
58
|
+
*
|
|
59
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#alias DockerProvider#alias}
|
|
60
|
+
*/
|
|
61
|
+
readonly alias?: string;
|
|
62
|
+
/**
|
|
63
|
+
* registry_auth block
|
|
64
|
+
*
|
|
65
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#registry_auth DockerProvider#registry_auth}
|
|
66
|
+
*/
|
|
67
|
+
readonly registryAuth?: DockerProviderRegistryAuth[] | cdktf.IResolvable;
|
|
68
|
+
}
|
|
69
|
+
export interface DockerProviderRegistryAuth {
|
|
70
|
+
/**
|
|
71
|
+
* Address of the registry
|
|
72
|
+
*
|
|
73
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#address DockerProvider#address}
|
|
74
|
+
*/
|
|
75
|
+
readonly address: string;
|
|
76
|
+
/**
|
|
77
|
+
* Setting this to `true` will tell the provider that this registry does not need authentication. Due to the docker internals, the provider will use dummy credentials (see https://github.com/kreuzwerker/terraform-provider-docker/issues/470 for more information). Defaults to `false`.
|
|
78
|
+
*
|
|
79
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#auth_disabled DockerProvider#auth_disabled}
|
|
80
|
+
*/
|
|
81
|
+
readonly authDisabled?: boolean | cdktf.IResolvable;
|
|
82
|
+
/**
|
|
83
|
+
* Path to docker json file for registry auth. Defaults to `~/.docker/config.json`. If `DOCKER_CONFIG` is set, the value of `DOCKER_CONFIG` is used as the path. `config_file` has predencen over all other options.
|
|
84
|
+
*
|
|
85
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#config_file DockerProvider#config_file}
|
|
86
|
+
*/
|
|
87
|
+
readonly configFile?: string;
|
|
88
|
+
/**
|
|
89
|
+
* Plain content of the docker json file for registry auth. `config_file_content` has precedence over username/password.
|
|
90
|
+
*
|
|
91
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#config_file_content DockerProvider#config_file_content}
|
|
92
|
+
*/
|
|
93
|
+
readonly configFileContent?: string;
|
|
94
|
+
/**
|
|
95
|
+
* Password for the registry. Defaults to `DOCKER_REGISTRY_PASS` env variable if set.
|
|
96
|
+
*
|
|
97
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#password DockerProvider#password}
|
|
98
|
+
*/
|
|
99
|
+
readonly password?: string;
|
|
100
|
+
/**
|
|
101
|
+
* Username for the registry. Defaults to `DOCKER_REGISTRY_USER` env variable if set.
|
|
102
|
+
*
|
|
103
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#username DockerProvider#username}
|
|
104
|
+
*/
|
|
105
|
+
readonly username?: string;
|
|
106
|
+
}
|
|
107
|
+
export declare function dockerProviderRegistryAuthToTerraform(struct?: DockerProviderRegistryAuth | cdktf.IResolvable): any;
|
|
108
|
+
export declare function dockerProviderRegistryAuthToHclTerraform(struct?: DockerProviderRegistryAuth | cdktf.IResolvable): any;
|
|
109
|
+
/**
|
|
110
|
+
* Represents a {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs docker}
|
|
111
|
+
*/
|
|
112
|
+
export declare class DockerProvider extends cdktf.TerraformProvider {
|
|
113
|
+
static readonly tfResourceType = "docker";
|
|
114
|
+
/**
|
|
115
|
+
* Generates CDKTF code for importing a DockerProvider resource upon running "cdktf plan <stack-name>"
|
|
116
|
+
* @param scope The scope in which to define this construct
|
|
117
|
+
* @param importToId The construct id used in the generated config for the DockerProvider to import
|
|
118
|
+
* @param importFromId The id of the existing DockerProvider that should be imported. Refer to the {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#import import section} in the documentation of this resource for the id to use
|
|
119
|
+
* @param provider? Optional instance of the provider where the DockerProvider to import is found
|
|
120
|
+
*/
|
|
121
|
+
static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
|
|
122
|
+
/**
|
|
123
|
+
* Create a new {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs docker} Resource
|
|
124
|
+
*
|
|
125
|
+
* @param scope The scope in which to define this construct
|
|
126
|
+
* @param id The scoped construct ID. Must be unique amongst siblings in the same scope
|
|
127
|
+
* @param options DockerProviderConfig = {}
|
|
128
|
+
*/
|
|
129
|
+
constructor(scope: Construct, id: string, config?: DockerProviderConfig);
|
|
130
|
+
private _caMaterial?;
|
|
131
|
+
get caMaterial(): string | undefined;
|
|
132
|
+
set caMaterial(value: string | undefined);
|
|
133
|
+
resetCaMaterial(): void;
|
|
134
|
+
get caMaterialInput(): string | undefined;
|
|
135
|
+
private _certMaterial?;
|
|
136
|
+
get certMaterial(): string | undefined;
|
|
137
|
+
set certMaterial(value: string | undefined);
|
|
138
|
+
resetCertMaterial(): void;
|
|
139
|
+
get certMaterialInput(): string | undefined;
|
|
140
|
+
private _certPath?;
|
|
141
|
+
get certPath(): string | undefined;
|
|
142
|
+
set certPath(value: string | undefined);
|
|
143
|
+
resetCertPath(): void;
|
|
144
|
+
get certPathInput(): string | undefined;
|
|
145
|
+
private _context?;
|
|
146
|
+
get context(): string | undefined;
|
|
147
|
+
set context(value: string | undefined);
|
|
148
|
+
resetContext(): void;
|
|
149
|
+
get contextInput(): string | undefined;
|
|
150
|
+
private _disableDockerDaemonCheck?;
|
|
151
|
+
get disableDockerDaemonCheck(): boolean | cdktf.IResolvable | undefined;
|
|
152
|
+
set disableDockerDaemonCheck(value: boolean | cdktf.IResolvable | undefined);
|
|
153
|
+
resetDisableDockerDaemonCheck(): void;
|
|
154
|
+
get disableDockerDaemonCheckInput(): boolean | cdktf.IResolvable | undefined;
|
|
155
|
+
private _host?;
|
|
156
|
+
get host(): string | undefined;
|
|
157
|
+
set host(value: string | undefined);
|
|
158
|
+
resetHost(): void;
|
|
159
|
+
get hostInput(): string | undefined;
|
|
160
|
+
private _keyMaterial?;
|
|
161
|
+
get keyMaterial(): string | undefined;
|
|
162
|
+
set keyMaterial(value: string | undefined);
|
|
163
|
+
resetKeyMaterial(): void;
|
|
164
|
+
get keyMaterialInput(): string | undefined;
|
|
165
|
+
private _sshOpts?;
|
|
166
|
+
get sshOpts(): string[] | undefined;
|
|
167
|
+
set sshOpts(value: string[] | undefined);
|
|
168
|
+
resetSshOpts(): void;
|
|
169
|
+
get sshOptsInput(): string[] | undefined;
|
|
170
|
+
private _alias?;
|
|
171
|
+
get alias(): string | undefined;
|
|
172
|
+
set alias(value: string | undefined);
|
|
173
|
+
resetAlias(): void;
|
|
174
|
+
get aliasInput(): string | undefined;
|
|
175
|
+
private _registryAuth?;
|
|
176
|
+
get registryAuth(): DockerProviderRegistryAuth[] | cdktf.IResolvable | undefined;
|
|
177
|
+
set registryAuth(value: DockerProviderRegistryAuth[] | cdktf.IResolvable | undefined);
|
|
178
|
+
resetRegistryAuth(): void;
|
|
179
|
+
get registryAuthInput(): cdktf.IResolvable | DockerProviderRegistryAuth[] | undefined;
|
|
180
|
+
protected synthesizeAttributes(): {
|
|
181
|
+
[name: string]: any;
|
|
182
|
+
};
|
|
183
|
+
protected synthesizeHclAttributes(): {
|
|
184
|
+
[name: string]: any;
|
|
185
|
+
};
|
|
186
|
+
}
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.DockerProvider = void 0;
|
|
5
|
+
exports.dockerProviderRegistryAuthToTerraform = dockerProviderRegistryAuthToTerraform;
|
|
6
|
+
exports.dockerProviderRegistryAuthToHclTerraform = dockerProviderRegistryAuthToHclTerraform;
|
|
7
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
8
|
+
const cdktf = require("cdktf");
|
|
9
|
+
function dockerProviderRegistryAuthToTerraform(struct) {
|
|
10
|
+
if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
|
|
11
|
+
return struct;
|
|
12
|
+
}
|
|
13
|
+
if (cdktf.isComplexElement(struct)) {
|
|
14
|
+
throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
address: cdktf.stringToTerraform(struct.address),
|
|
18
|
+
auth_disabled: cdktf.booleanToTerraform(struct.authDisabled),
|
|
19
|
+
config_file: cdktf.stringToTerraform(struct.configFile),
|
|
20
|
+
config_file_content: cdktf.stringToTerraform(struct.configFileContent),
|
|
21
|
+
password: cdktf.stringToTerraform(struct.password),
|
|
22
|
+
username: cdktf.stringToTerraform(struct.username),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function dockerProviderRegistryAuthToHclTerraform(struct) {
|
|
26
|
+
if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
|
|
27
|
+
return struct;
|
|
28
|
+
}
|
|
29
|
+
if (cdktf.isComplexElement(struct)) {
|
|
30
|
+
throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
|
|
31
|
+
}
|
|
32
|
+
const attrs = {
|
|
33
|
+
address: {
|
|
34
|
+
value: cdktf.stringToHclTerraform(struct.address),
|
|
35
|
+
isBlock: false,
|
|
36
|
+
type: "simple",
|
|
37
|
+
storageClassType: "string",
|
|
38
|
+
},
|
|
39
|
+
auth_disabled: {
|
|
40
|
+
value: cdktf.booleanToHclTerraform(struct.authDisabled),
|
|
41
|
+
isBlock: false,
|
|
42
|
+
type: "simple",
|
|
43
|
+
storageClassType: "boolean",
|
|
44
|
+
},
|
|
45
|
+
config_file: {
|
|
46
|
+
value: cdktf.stringToHclTerraform(struct.configFile),
|
|
47
|
+
isBlock: false,
|
|
48
|
+
type: "simple",
|
|
49
|
+
storageClassType: "string",
|
|
50
|
+
},
|
|
51
|
+
config_file_content: {
|
|
52
|
+
value: cdktf.stringToHclTerraform(struct.configFileContent),
|
|
53
|
+
isBlock: false,
|
|
54
|
+
type: "simple",
|
|
55
|
+
storageClassType: "string",
|
|
56
|
+
},
|
|
57
|
+
password: {
|
|
58
|
+
value: cdktf.stringToHclTerraform(struct.password),
|
|
59
|
+
isBlock: false,
|
|
60
|
+
type: "simple",
|
|
61
|
+
storageClassType: "string",
|
|
62
|
+
},
|
|
63
|
+
username: {
|
|
64
|
+
value: cdktf.stringToHclTerraform(struct.username),
|
|
65
|
+
isBlock: false,
|
|
66
|
+
type: "simple",
|
|
67
|
+
storageClassType: "string",
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
// remove undefined attributes
|
|
71
|
+
return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Represents a {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs docker}
|
|
75
|
+
*/
|
|
76
|
+
class DockerProvider extends cdktf.TerraformProvider {
|
|
77
|
+
// ==============
|
|
78
|
+
// STATIC Methods
|
|
79
|
+
// ==============
|
|
80
|
+
/**
|
|
81
|
+
* Generates CDKTF code for importing a DockerProvider resource upon running "cdktf plan <stack-name>"
|
|
82
|
+
* @param scope The scope in which to define this construct
|
|
83
|
+
* @param importToId The construct id used in the generated config for the DockerProvider to import
|
|
84
|
+
* @param importFromId The id of the existing DockerProvider that should be imported. Refer to the {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs#import import section} in the documentation of this resource for the id to use
|
|
85
|
+
* @param provider? Optional instance of the provider where the DockerProvider to import is found
|
|
86
|
+
*/
|
|
87
|
+
static generateConfigForImport(scope, importToId, importFromId, provider) {
|
|
88
|
+
return new cdktf.ImportableResource(scope, importToId, { terraformResourceType: "docker", importId: importFromId, provider });
|
|
89
|
+
}
|
|
90
|
+
// ===========
|
|
91
|
+
// INITIALIZER
|
|
92
|
+
// ===========
|
|
93
|
+
/**
|
|
94
|
+
* Create a new {@link https://registry.terraform.io/providers/kreuzwerker/docker/3.6.2/docs docker} Resource
|
|
95
|
+
*
|
|
96
|
+
* @param scope The scope in which to define this construct
|
|
97
|
+
* @param id The scoped construct ID. Must be unique amongst siblings in the same scope
|
|
98
|
+
* @param options DockerProviderConfig = {}
|
|
99
|
+
*/
|
|
100
|
+
constructor(scope, id, config = {}) {
|
|
101
|
+
super(scope, id, {
|
|
102
|
+
terraformResourceType: 'docker',
|
|
103
|
+
terraformGeneratorMetadata: {
|
|
104
|
+
providerName: 'docker',
|
|
105
|
+
providerVersion: '3.6.2',
|
|
106
|
+
providerVersionConstraint: '~> 3.0'
|
|
107
|
+
},
|
|
108
|
+
terraformProviderSource: 'kreuzwerker/docker'
|
|
109
|
+
});
|
|
110
|
+
this._caMaterial = config.caMaterial;
|
|
111
|
+
this._certMaterial = config.certMaterial;
|
|
112
|
+
this._certPath = config.certPath;
|
|
113
|
+
this._context = config.context;
|
|
114
|
+
this._disableDockerDaemonCheck = config.disableDockerDaemonCheck;
|
|
115
|
+
this._host = config.host;
|
|
116
|
+
this._keyMaterial = config.keyMaterial;
|
|
117
|
+
this._sshOpts = config.sshOpts;
|
|
118
|
+
this._alias = config.alias;
|
|
119
|
+
this._registryAuth = config.registryAuth;
|
|
120
|
+
}
|
|
121
|
+
get caMaterial() {
|
|
122
|
+
return this._caMaterial;
|
|
123
|
+
}
|
|
124
|
+
set caMaterial(value) {
|
|
125
|
+
this._caMaterial = value;
|
|
126
|
+
}
|
|
127
|
+
resetCaMaterial() {
|
|
128
|
+
this._caMaterial = undefined;
|
|
129
|
+
}
|
|
130
|
+
// Temporarily expose input value. Use with caution.
|
|
131
|
+
get caMaterialInput() {
|
|
132
|
+
return this._caMaterial;
|
|
133
|
+
}
|
|
134
|
+
get certMaterial() {
|
|
135
|
+
return this._certMaterial;
|
|
136
|
+
}
|
|
137
|
+
set certMaterial(value) {
|
|
138
|
+
this._certMaterial = value;
|
|
139
|
+
}
|
|
140
|
+
resetCertMaterial() {
|
|
141
|
+
this._certMaterial = undefined;
|
|
142
|
+
}
|
|
143
|
+
// Temporarily expose input value. Use with caution.
|
|
144
|
+
get certMaterialInput() {
|
|
145
|
+
return this._certMaterial;
|
|
146
|
+
}
|
|
147
|
+
get certPath() {
|
|
148
|
+
return this._certPath;
|
|
149
|
+
}
|
|
150
|
+
set certPath(value) {
|
|
151
|
+
this._certPath = value;
|
|
152
|
+
}
|
|
153
|
+
resetCertPath() {
|
|
154
|
+
this._certPath = undefined;
|
|
155
|
+
}
|
|
156
|
+
// Temporarily expose input value. Use with caution.
|
|
157
|
+
get certPathInput() {
|
|
158
|
+
return this._certPath;
|
|
159
|
+
}
|
|
160
|
+
get context() {
|
|
161
|
+
return this._context;
|
|
162
|
+
}
|
|
163
|
+
set context(value) {
|
|
164
|
+
this._context = value;
|
|
165
|
+
}
|
|
166
|
+
resetContext() {
|
|
167
|
+
this._context = undefined;
|
|
168
|
+
}
|
|
169
|
+
// Temporarily expose input value. Use with caution.
|
|
170
|
+
get contextInput() {
|
|
171
|
+
return this._context;
|
|
172
|
+
}
|
|
173
|
+
get disableDockerDaemonCheck() {
|
|
174
|
+
return this._disableDockerDaemonCheck;
|
|
175
|
+
}
|
|
176
|
+
set disableDockerDaemonCheck(value) {
|
|
177
|
+
this._disableDockerDaemonCheck = value;
|
|
178
|
+
}
|
|
179
|
+
resetDisableDockerDaemonCheck() {
|
|
180
|
+
this._disableDockerDaemonCheck = undefined;
|
|
181
|
+
}
|
|
182
|
+
// Temporarily expose input value. Use with caution.
|
|
183
|
+
get disableDockerDaemonCheckInput() {
|
|
184
|
+
return this._disableDockerDaemonCheck;
|
|
185
|
+
}
|
|
186
|
+
get host() {
|
|
187
|
+
return this._host;
|
|
188
|
+
}
|
|
189
|
+
set host(value) {
|
|
190
|
+
this._host = value;
|
|
191
|
+
}
|
|
192
|
+
resetHost() {
|
|
193
|
+
this._host = undefined;
|
|
194
|
+
}
|
|
195
|
+
// Temporarily expose input value. Use with caution.
|
|
196
|
+
get hostInput() {
|
|
197
|
+
return this._host;
|
|
198
|
+
}
|
|
199
|
+
get keyMaterial() {
|
|
200
|
+
return this._keyMaterial;
|
|
201
|
+
}
|
|
202
|
+
set keyMaterial(value) {
|
|
203
|
+
this._keyMaterial = value;
|
|
204
|
+
}
|
|
205
|
+
resetKeyMaterial() {
|
|
206
|
+
this._keyMaterial = undefined;
|
|
207
|
+
}
|
|
208
|
+
// Temporarily expose input value. Use with caution.
|
|
209
|
+
get keyMaterialInput() {
|
|
210
|
+
return this._keyMaterial;
|
|
211
|
+
}
|
|
212
|
+
get sshOpts() {
|
|
213
|
+
return this._sshOpts;
|
|
214
|
+
}
|
|
215
|
+
set sshOpts(value) {
|
|
216
|
+
this._sshOpts = value;
|
|
217
|
+
}
|
|
218
|
+
resetSshOpts() {
|
|
219
|
+
this._sshOpts = undefined;
|
|
220
|
+
}
|
|
221
|
+
// Temporarily expose input value. Use with caution.
|
|
222
|
+
get sshOptsInput() {
|
|
223
|
+
return this._sshOpts;
|
|
224
|
+
}
|
|
225
|
+
get alias() {
|
|
226
|
+
return this._alias;
|
|
227
|
+
}
|
|
228
|
+
set alias(value) {
|
|
229
|
+
this._alias = value;
|
|
230
|
+
}
|
|
231
|
+
resetAlias() {
|
|
232
|
+
this._alias = undefined;
|
|
233
|
+
}
|
|
234
|
+
// Temporarily expose input value. Use with caution.
|
|
235
|
+
get aliasInput() {
|
|
236
|
+
return this._alias;
|
|
237
|
+
}
|
|
238
|
+
get registryAuth() {
|
|
239
|
+
return this._registryAuth;
|
|
240
|
+
}
|
|
241
|
+
set registryAuth(value) {
|
|
242
|
+
this._registryAuth = value;
|
|
243
|
+
}
|
|
244
|
+
resetRegistryAuth() {
|
|
245
|
+
this._registryAuth = undefined;
|
|
246
|
+
}
|
|
247
|
+
// Temporarily expose input value. Use with caution.
|
|
248
|
+
get registryAuthInput() {
|
|
249
|
+
return this._registryAuth;
|
|
250
|
+
}
|
|
251
|
+
// =========
|
|
252
|
+
// SYNTHESIS
|
|
253
|
+
// =========
|
|
254
|
+
synthesizeAttributes() {
|
|
255
|
+
return {
|
|
256
|
+
ca_material: cdktf.stringToTerraform(this._caMaterial),
|
|
257
|
+
cert_material: cdktf.stringToTerraform(this._certMaterial),
|
|
258
|
+
cert_path: cdktf.stringToTerraform(this._certPath),
|
|
259
|
+
context: cdktf.stringToTerraform(this._context),
|
|
260
|
+
disable_docker_daemon_check: cdktf.booleanToTerraform(this._disableDockerDaemonCheck),
|
|
261
|
+
host: cdktf.stringToTerraform(this._host),
|
|
262
|
+
key_material: cdktf.stringToTerraform(this._keyMaterial),
|
|
263
|
+
ssh_opts: cdktf.listMapper(cdktf.stringToTerraform, false)(this._sshOpts),
|
|
264
|
+
alias: cdktf.stringToTerraform(this._alias),
|
|
265
|
+
registry_auth: cdktf.listMapper(dockerProviderRegistryAuthToTerraform, true)(this._registryAuth),
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
synthesizeHclAttributes() {
|
|
269
|
+
const attrs = {
|
|
270
|
+
ca_material: {
|
|
271
|
+
value: cdktf.stringToHclTerraform(this._caMaterial),
|
|
272
|
+
isBlock: false,
|
|
273
|
+
type: "simple",
|
|
274
|
+
storageClassType: "string",
|
|
275
|
+
},
|
|
276
|
+
cert_material: {
|
|
277
|
+
value: cdktf.stringToHclTerraform(this._certMaterial),
|
|
278
|
+
isBlock: false,
|
|
279
|
+
type: "simple",
|
|
280
|
+
storageClassType: "string",
|
|
281
|
+
},
|
|
282
|
+
cert_path: {
|
|
283
|
+
value: cdktf.stringToHclTerraform(this._certPath),
|
|
284
|
+
isBlock: false,
|
|
285
|
+
type: "simple",
|
|
286
|
+
storageClassType: "string",
|
|
287
|
+
},
|
|
288
|
+
context: {
|
|
289
|
+
value: cdktf.stringToHclTerraform(this._context),
|
|
290
|
+
isBlock: false,
|
|
291
|
+
type: "simple",
|
|
292
|
+
storageClassType: "string",
|
|
293
|
+
},
|
|
294
|
+
disable_docker_daemon_check: {
|
|
295
|
+
value: cdktf.booleanToHclTerraform(this._disableDockerDaemonCheck),
|
|
296
|
+
isBlock: false,
|
|
297
|
+
type: "simple",
|
|
298
|
+
storageClassType: "boolean",
|
|
299
|
+
},
|
|
300
|
+
host: {
|
|
301
|
+
value: cdktf.stringToHclTerraform(this._host),
|
|
302
|
+
isBlock: false,
|
|
303
|
+
type: "simple",
|
|
304
|
+
storageClassType: "string",
|
|
305
|
+
},
|
|
306
|
+
key_material: {
|
|
307
|
+
value: cdktf.stringToHclTerraform(this._keyMaterial),
|
|
308
|
+
isBlock: false,
|
|
309
|
+
type: "simple",
|
|
310
|
+
storageClassType: "string",
|
|
311
|
+
},
|
|
312
|
+
ssh_opts: {
|
|
313
|
+
value: cdktf.listMapperHcl(cdktf.stringToHclTerraform, false)(this._sshOpts),
|
|
314
|
+
isBlock: false,
|
|
315
|
+
type: "list",
|
|
316
|
+
storageClassType: "stringList",
|
|
317
|
+
},
|
|
318
|
+
alias: {
|
|
319
|
+
value: cdktf.stringToHclTerraform(this._alias),
|
|
320
|
+
isBlock: false,
|
|
321
|
+
type: "simple",
|
|
322
|
+
storageClassType: "string",
|
|
323
|
+
},
|
|
324
|
+
registry_auth: {
|
|
325
|
+
value: cdktf.listMapperHcl(dockerProviderRegistryAuthToHclTerraform, true)(this._registryAuth),
|
|
326
|
+
isBlock: true,
|
|
327
|
+
type: "set",
|
|
328
|
+
storageClassType: "DockerProviderRegistryAuthList",
|
|
329
|
+
},
|
|
330
|
+
};
|
|
331
|
+
// remove undefined attributes
|
|
332
|
+
return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
exports.DockerProvider = DockerProvider;
|
|
336
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
337
|
+
DockerProvider[_a] = { fqn: "@cdktn/provider-docker.provider.DockerProvider", version: "12.1.0" };
|
|
338
|
+
// =================
|
|
339
|
+
// STATIC PROPERTIES
|
|
340
|
+
// =================
|
|
341
|
+
DockerProvider.tfResourceType = "docker";
|
|
342
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQWtIQSxzRkFhQztBQUdELDRGQThDQzs7QUF2S0QsK0JBQStCO0FBeUcvQixTQUFnQixxQ0FBcUMsQ0FBQyxNQUF1RDtJQUMzRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQUMsT0FBTyxNQUFNLENBQUM7SUFBQyxDQUFDO0lBQzVGLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvSEFBb0gsQ0FBQyxDQUFDO0lBQ3hJLENBQUM7SUFDRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsT0FBTyxDQUFDO1FBQ2pELGFBQWEsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTyxDQUFDLFlBQVksQ0FBQztRQUM3RCxXQUFXLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxVQUFVLENBQUM7UUFDeEQsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxpQkFBaUIsQ0FBQztRQUN2RSxRQUFRLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxRQUFRLENBQUM7UUFDbkQsUUFBUSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsUUFBUSxDQUFDO0tBQ3BELENBQUE7QUFDSCxDQUFDO0FBR0QsU0FBZ0Isd0NBQXdDLENBQUMsTUFBdUQ7SUFDOUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVks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OUIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUUsQ0FBQyxDQUFBO0lBQzVILENBQUM7O0FBL1NILHdDQWdUQzs7O0FBOVNDLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ0csNkJBQWMsR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbi8vIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9rcmV1endlcmtlci9kb2NrZXIvMy42LjIvZG9jc1xuLy8gZ2VuZXJhdGVkIGZyb20gdGVycmFmb3JtIHJlc291cmNlIHNjaGVtYVxuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGNka3RmIGZyb20gJ2Nka3RmJztcblxuLy8gQ29uZmlndXJhdGlvblxuXG5leHBvcnQgaW50ZXJmYWNlIERvY2tlclByb3ZpZGVyQ29uZmlnIHtcbiAgLyoqXG4gICogUEVNLWVuY29kZWQgY29udGVudCBvZiBEb2NrZXIgaG9zdCBDQSBjZXJ0aWZpY2F0ZVxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMva3JldXp3ZXJrZXIvZG9ja2VyLzMuNi4yL2RvY3MjY2FfbWF0ZXJpYWwgRG9ja2VyUHJvdmlkZXIjY2FfbWF0ZXJpYWx9XG4gICovXG4gIHJlYWRvbmx5IGNhTWF0ZXJpYWw/OiBzdHJpbmc7XG4gIC8qKlxuICAqIFBFTS1lbmNvZGVkIGNvbnRlbnQgb2YgRG9ja2VyIGNsaWVudCBjZXJ0aWZpY2F0ZVxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMva3JldXp3ZXJrZXIvZG9ja2VyLzMuNi4yL2RvY3MjY2VydF9tYXRlcmlhbCBEb2NrZXJQcm92aWRlciNjZXJ0X21hdGVyaWFsfVxuICAqL1xuICByZWFkb25seSBjZXJ0TWF0ZXJpYWw/OiBzdHJpbmc7XG4gIC8qKlxuICAqIFBhdGggdG8gZGlyZWN0b3J5IHdpdGggRG9ja2VyIFRMUyBjb25maWdcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2tyZXV6d2Vya2VyL2RvY2tlci8zLjYuMi9kb2NzI2NlcnRfcGF0aCBEb2NrZXJQcm92aWRlciNjZXJ0X3BhdGh9XG4gICovXG4gIHJlYWRvbmx5IGNlcnRQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgKiBUaGUgbmFtZSBvZiB0aGUgRG9ja2VyIGNvbnRleHQgdG8gdXNlLiBDYW4gYWxzbyBiZSBzZXQgdmlhIGBET0NLRVJfQ09OVEVYVGAgZW52aXJvbm1lbnQgdmFyaWFibGUuIE92ZXJyaWRlcyB0aGUgYGhvc3RgIGlmIHNldC5cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2tyZXV6d2Vya2VyL2RvY2tlci8zLjYuMi9kb2NzI2NvbnRleHQgRG9ja2VyUHJvdmlkZXIjY29udGV4dH1cbiAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IHN0cmluZztcbiAgLyoqXG4gICogSWYgc2V0IHRvIGB0cnVlYCwgdGhlIHByb3ZpZGVyIHdpbGwgbm90IGNoZWNrIGlmIHRoZSBEb2NrZXIgZGFlbW9uIGlzIHJ1bm5pbmcuIFRoaXMgaXMgdXNlZnVsIGZvciByZXNvdXJjZXMvZGF0YV9zb3VyY2VzcyB0aGF0IGRvIG5vdCByZXF1aXJlIGEgcnVubmluZyBEb2NrZXIgZGFlbW9uLCBzdWNoIGFzIHRoZSBkYXRhIHNvdXJjZSBgZG9ja2VyX3JlZ2lzdHJ5X2ltYWdlYC5cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2tyZXV6d2Vya2VyL2RvY2tlci8zLjYuMi9kb2NzI2Rpc2FibGVfZG9ja2VyX2RhZW1vbl9jaGVjayBEb2NrZXJQcm92aWRlciNkaXNhYmxlX2RvY2tlcl9kYWVtb25fY2hlY2t9XG4gICovXG4gIHJlYWRvbmx5IGRpc2FibGVEb2NrZXJEYWVtb25DaGVjaz86IGJvb2xlYW4gfCBjZGt0Zi5JUmVzb2x2YWJsZTtcbiAgLyoqXG4gICogVGhlIERvY2tlciBkYWVtb24gYWRkcmVzc1xuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMva3JldXp3ZXJrZXIvZG9ja2VyLzMuNi4yL2RvY3MjaG9zdCBEb2NrZXJQcm92aWRlciNob3N0fVxuICAqL1xuICByZWFkb25seSBob3N0Pzogc3RyaW5nO1xuICAvKipcbiAgKiBQRU0tZW5jb2RlZCBjb250ZW50IG9mIERvY2tlciBjbGllbnQgcHJpdmF0ZSBrZXlcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2tyZXV6d2Vya2VyL2RvY2tlci8zLjYuMi9kb2NzI2tleV9tYXRlcmlhbCBEb2NrZXJQcm92aWRlciNrZXlfbWF0ZXJpYWx9XG4gICovXG4gIHJlYWRvbmx5IGtleU1hdGVyaWFsPzogc3RyaW5nO1xuICAvKipcbiAgKiBBZGRpdGlvbmFsIFNTSCBvcHRpb24gZmxhZ3MgdG8gYmUgYXBwZW5kZWQgd2hlbiB1c2luZyBgc3NoOi8vYCBwcm90b2NvbFxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMva3JldXp3ZXJrZXIvZG9ja2VyLzMuNi4yL2RvY3Mjc3NoX29wdHMgRG9ja2VyUHJvdmlkZXIjc3NoX29wdHN9XG4gICovXG4gIHJlYWRvbmx5IHNzaE9wdHM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICogQWxpYXMgbmFtZVxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMva3JldXp3ZXJrZXIvZG9ja2VyLzMuNi4yL2RvY3MjYWxpYXMgRG9ja2VyUHJvdmlkZXIjYWxpYXN9XG4gICovXG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuICAvKipcbiAgKiByZWdpc3RyeV9hdXRoIGJsb2NrXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9rcmV1endlcmtlci9kb2NrZXIvMy42LjIvZG9jcyNyZWdpc3RyeV9hdXRoIERvY2tlclByb3ZpZGVyI3JlZ2lzdHJ5X2F1dGh9XG4gICovXG4gIHJlYWRvbmx5IHJlZ2lzdHJ5QXV0aD86IERvY2tlclByb3ZpZGVyUmVnaXN0cnlBdXRoW10gfCBjZGt0Zi5JUmVzb2x2YWJsZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VyUHJvdmlkZXJSZWdpc3RyeUF1dGgge1xuICAvKipcbiAgKiBBZGRyZXNzIG9mIHRoZSByZWdpc3RyeVxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMva3JldXp3ZXJrZXIvZG9ja2VyLzMuNi4yL2RvY3MjYWRkcmVzcyBEb2NrZXJQcm92aWRlciNhZGRyZXNzfVxuICAqL1xuICByZWFkb25seSBhZGRyZXNzOiBzdHJpbmc7XG4gIC8qKlxuICAqIFNldHRpbmcgdGhpcyB0byBgdHJ1ZWAgd2lsbCB0ZWxsIHRoZSBwcm92aWRlciB0aGF0IHRoaXMgcmVnaXN0cnkgZG9lcyBub3QgbmVlZCBhdXRoZW50aWNhdGlvbi4gRHVlIHRvIHRoZSBkb2NrZXIgaW50ZXJuYWxzLCB0aGUgcHJvdmlkZXIgd2lsbCB1c2UgZHVtbXkgY3JlZGVudGlhbHMgKHNlZSBodHRwczovL2dpdGh1Yi5jb20va3JldXp3ZXJrZXIvdGVycmFmb3JtLXByb3ZpZGVyLWRvY2tlci9pc3N1ZXMvNDcwIGZvciBtb3JlIGluZm9ybWF0aW9uKS4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2tyZXV6d2Vya2VyL2RvY2tlci8zLjYuMi9kb2NzI2F1dGhfZGlzYWJsZWQgRG9ja2VyUHJvdmlkZXIjYXV0aF9kaXNhYmxlZH1cbiAgKi9cbiAgcmVhZG9ubHkgYXV0aERpc2FibGVkPzogYm9vbGVhbiB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgKiBQYXRoIHRvIGRvY2tlciBqc29uIGZpbGUgZm9yIHJlZ2lzdHJ5IGF1dGguIERlZmF1bHRzIHRvIGB+Ly5kb2NrZXIvY29uZmlnLmpzb25gLiBJZiBgRE9DS0VSX0NPTkZJR2AgaXMgc2V0LCB0aGUgdmFsdWUgb2YgYERPQ0tFUl9DT05GSUdgIGlzIHVzZWQgYXMgdGhlIHBhdGguIGBjb25maWdfZmlsZWAgaGFzIHByZWRlbmNlbiBvdmVyIGFsbCBvdGhlciBvcHRpb25zLlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMva3JldXp3ZXJrZXIvZG9ja2VyLzMuNi4yL2RvY3MjY29uZmlnX2ZpbGUgRG9ja2VyUHJvdmlkZXIjY29uZmlnX2ZpbGV9XG4gICovXG4gIHJlYWRvbmx5IGNvbmZpZ0ZpbGU/OiBzdHJpbmc7XG4gIC8qKlxuICAqIFBsYWluIGNvbnRlbnQgb2YgdGhlIGRvY2tlciBqc29uIGZpbGUgZm9yIHJlZ2lzdHJ5IGF1dGguIGBjb25maWdfZmlsZV9jb250ZW50YCBoYXMgcHJlY2VkZW5jZSBvdmVyIHVzZXJuYW1lL3Bhc3N3b3JkLlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMva3JldXp3ZXJrZXIvZG9ja2VyLzMuNi4yL2RvY3MjY29uZmlnX2ZpbGVfY29udGVudCBEb2NrZXJQcm92aWRlciNjb25maWdfZmlsZV9jb250ZW50fVxuICAqL1xuICByZWFkb25seSBjb25maWdGaWxlQ29udGVudD86IHN0cmluZztcbiAgLyoqXG4gICogUGFzc3dvcmQgZm9yIHRoZSByZWdpc3RyeS4gRGVmYXVsdHMgdG8gYERPQ0tFUl9SRUdJU1RSWV9QQVNTYCBlbnYgdmFyaWFibGUgaWYgc2V0LlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMva3JldXp3ZXJrZXIvZG9ja2VyLzMuNi4yL2RvY3MjcGFzc3dvcmQgRG9ja2VyUHJvdmlkZXIjcGFzc3dvcmR9XG4gICovXG4gIHJlYWRvbmx5IHBhc3N3b3JkPzogc3RyaW5nO1xuICAvKipcbiAgKiBVc2VybmFtZSBmb3IgdGhlIHJlZ2lzdHJ5LiBEZWZhdWx0cyB0byBgRE9DS0VSX1JFR0lTVFJZX1VTRVJgIGVudiB2YXJpYWJsZSBpZiBzZXQuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9rcmV1endlcmtlci9kb2NrZXIvMy42LjIvZG9jcyN1c2VybmFtZSBEb2NrZXJQcm92aWRlciN1c2VybmFtZX1cbiAgKi9cbiAgcmVhZG9ubHkgdXNlcm5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb2NrZXJQcm92aWRlclJlZ2lzdHJ5QXV0aFRvVGVycmFmb3JtKHN0cnVjdD86IERvY2tlclByb3ZpZGVyUmVnaXN0cnlBdXRoIHwgY2RrdGYuSVJlc29sdmFibGUpOiBhbnkge1xuICBpZiAoIWNka3RmLmNhbkluc3BlY3Qoc3RydWN0KSB8fCBjZGt0Zi5Ub2tlbml6YXRpb24uaXNSZXNvbHZhYmxlKHN0cnVjdCkpIHsgcmV0dXJuIHN0cnVjdDsgfVxuICBpZiAoY2RrdGYuaXNDb21wbGV4RWxlbWVudChzdHJ1Y3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQSBjb21wbGV4IGVsZW1lbnQgd2FzIHVzZWQgYXMgY29uZmlndXJhdGlvbiwgdGhpcyBpcyBub3Qgc3VwcG9ydGVkOiBodHRwczovL2Nkay50Zi9jb21wbGV4LW9iamVjdC1hcy1jb25maWd1cmF0aW9uXCIpO1xuICB9XG4gIHJldHVybiB7XG4gICAgYWRkcmVzczogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS5hZGRyZXNzKSxcbiAgICBhdXRoX2Rpc2FibGVkOiBjZGt0Zi5ib29sZWFuVG9UZXJyYWZvcm0oc3RydWN0IS5hdXRoRGlzYWJsZWQpLFxuICAgIGNvbmZpZ19maWxlOiBjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybShzdHJ1Y3QhLmNvbmZpZ0ZpbGUpLFxuICAgIGNvbmZpZ19maWxlX2NvbnRlbnQ6IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHN0cnVjdCEuY29uZmlnRmlsZUNvbnRlbnQpLFxuICAgIHBhc3N3b3JkOiBjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybShzdHJ1Y3QhLnBhc3N3b3JkKSxcbiAgICB1c2VybmFtZTogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS51c2VybmFtZSksXG4gIH1cbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZG9ja2VyUHJvdmlkZXJSZWdpc3RyeUF1dGhUb0hjbFRlcnJhZm9ybShzdHJ1Y3Q/OiBEb2NrZXJQcm92aWRlclJlZ2lzdHJ5QXV0aCB8IGNka3RmLklSZXNvbHZhYmxlKTogYW55IHtcbiAgaWYgKCFjZGt0Zi5jYW5JbnNwZWN0KHN0cnVjdCkgfHwgY2RrdGYuVG9rZW5pemF0aW9uLmlzUmVzb2x2YWJsZShzdHJ1Y3QpKSB7IHJldHVybiBzdHJ1Y3Q7IH1cbiAgaWYgKGNka3RmLmlzQ29tcGxleEVsZW1lbnQoc3RydWN0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkEgY29tcGxleCBlbGVtZW50IHdhcyB1c2VkIGFzIGNvbmZpZ3VyYXRpb24sIHRoaXMgaXMgbm90IHN1cHBvcnRlZDogaHR0cHM6Ly9jZGsudGYvY29tcGxleC1vYmplY3QtYXMtY29uZmlndXJhdGlvblwiKTtcbiAgfVxuICBjb25zdCBhdHRycyA9IHtcbiAgICBhZGRyZXNzOiB7XG4gICAgICB2YWx1ZTogY2RrdGYuc3RyaW5nVG9IY2xUZXJyYWZvcm0oc3RydWN0IS5hZGRyZXNzKSxcbiAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgfSxcbiAgICBhdXRoX2Rpc2FibGVkOiB7XG4gICAgICB2YWx1ZTogY2RrdGYuYm9vbGVhblRvSGNsVGVycmFmb3JtKHN0cnVjdCEuYXV0aERpc2FibGVkKSxcbiAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwiYm9vbGVhblwiLFxuICAgIH0sXG4gICAgY29uZmlnX2ZpbGU6IHtcbiAgICAgIHZhbHVlOiBjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybShzdHJ1Y3QhLmNvbmZpZ0ZpbGUpLFxuICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICB9LFxuICAgIGNvbmZpZ19maWxlX2NvbnRlbnQ6IHtcbiAgICAgIHZhbHVlOiBjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybShzdHJ1Y3QhLmNvbmZpZ0ZpbGVDb250ZW50KSxcbiAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgfSxcbiAgICBwYXNzd29yZDoge1xuICAgICAgdmFsdWU6IGNka3RmLnN0cmluZ1RvSGNsVGVycmFmb3JtKHN0cnVjdCEucGFzc3dvcmQpLFxuICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICB9LFxuICAgIHVzZXJuYW1lOiB7XG4gICAgICB2YWx1ZTogY2RrdGYuc3RyaW5nVG9IY2xUZXJyYWZvcm0oc3RydWN0IS51c2VybmFtZSksXG4gICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgIH0sXG4gIH07XG5cbiAgLy8gcmVtb3ZlIHVuZGVmaW5lZCBhdHRyaWJ1dGVzXG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoYXR0cnMpLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkKSk7XG59XG5cblxuLyoqXG4qIFJlcHJlc2VudHMgYSB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2tyZXV6d2Vya2VyL2RvY2tlci8zLjYuMi9kb2NzIGRvY2tlcn1cbiovXG5leHBvcnQgY2xhc3MgRG9ja2VyUHJvdmlkZXIgZXh0ZW5kcyBjZGt0Zi5UZXJyYWZvcm1Qcm92aWRlciB7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgLy8gU1RBVElDIFBST1BFUlRJRVNcbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0ZlJlc291cmNlVHlwZSA9IFwiZG9ja2VyXCI7XG5cbiAgLy8gPT09PT09PT09PT09PT1cbiAgLy8gU1RBVElDIE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT1cbiAgLyoqXG4gICogR2VuZXJhdGVzIENES1RGIGNvZGUgZm9yIGltcG9ydGluZyBhIERvY2tlclByb3ZpZGVyIHJlc291cmNlIHVwb24gcnVubmluZyBcImNka3RmIHBsYW4gPHN0YWNrLW5hbWU+XCJcbiAgKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAqIEBwYXJhbSBpbXBvcnRUb0lkIFRoZSBjb25zdHJ1Y3QgaWQgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvbmZpZyBmb3IgdGhlIERvY2tlclByb3ZpZGVyIHRvIGltcG9ydFxuICAqIEBwYXJhbSBpbXBvcnRGcm9tSWQgVGhlIGlkIG9mIHRoZSBleGlzdGluZyBEb2NrZXJQcm92aWRlciB0aGF0IHNob3VsZCBiZSBpbXBvcnRlZC4gUmVmZXIgdG8gdGhlIHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMva3JldXp3ZXJrZXIvZG9ja2VyLzMuNi4yL2RvY3MjaW1wb3J0IGltcG9ydCBzZWN0aW9ufSBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIHJlc291cmNlIGZvciB0aGUgaWQgdG8gdXNlXG4gICogQHBhcmFtIHByb3ZpZGVyPyBPcHRpb25hbCBpbnN0YW5jZSBvZiB0aGUgcHJvdmlkZXIgd2hlcmUgdGhlIERvY2tlclByb3ZpZGVyIHRvIGltcG9ydCBpcyBmb3VuZFxuICAqL1xuICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlQ29uZmlnRm9ySW1wb3J0KHNjb3BlOiBDb25zdHJ1Y3QsIGltcG9ydFRvSWQ6IHN0cmluZywgaW1wb3J0RnJvbUlkOiBzdHJpbmcsIHByb3ZpZGVyPzogY2RrdGYuVGVycmFmb3JtUHJvdmlkZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBjZGt0Zi5JbXBvcnRhYmxlUmVzb3VyY2Uoc2NvcGUsIGltcG9ydFRvSWQsIHsgdGVycmFmb3JtUmVzb3VyY2VUeXBlOiBcImRvY2tlclwiLCBpbXBvcnRJZDogaW1wb3J0RnJvbUlkLCBwcm92aWRlciB9KTtcbiAgICAgIH1cblxuICAvLyA9PT09PT09PT09PVxuICAvLyBJTklUSUFMSVpFUlxuICAvLyA9PT09PT09PT09PVxuXG4gIC8qKlxuICAqIENyZWF0ZSBhIG5ldyB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2tyZXV6d2Vya2VyL2RvY2tlci8zLjYuMi9kb2NzIGRvY2tlcn0gUmVzb3VyY2VcbiAgKlxuICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0XG4gICogQHBhcmFtIGlkIFRoZSBzY29wZWQgY29uc3RydWN0IElELiBNdXN0IGJlIHVuaXF1ZSBhbW9uZ3N0IHNpYmxpbmdzIGluIHRoZSBzYW1lIHNjb3BlXG4gICogQHBhcmFtIG9wdGlvbnMgRG9ja2VyUHJvdmlkZXJDb25maWcgPSB7fVxuICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgY29uZmlnOiBEb2NrZXJQcm92aWRlckNvbmZpZyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6ICdkb2NrZXInLFxuICAgICAgdGVycmFmb3JtR2VuZXJhdG9yTWV0YWRhdGE6IHtcbiAgICAgICAgcHJvdmlkZXJOYW1lOiAnZG9ja2VyJyxcbiAgICAgICAgcHJvdmlkZXJWZXJzaW9uOiAnMy42LjInLFxuICAgICAgICBwcm92aWRlclZlcnNpb25Db25zdHJhaW50OiAnfj4gMy4wJ1xuICAgICAgfSxcbiAgICAgIHRlcnJhZm9ybVByb3ZpZGVyU291cmNlOiAna3JldXp3ZXJrZXIvZG9ja2VyJ1xuICAgIH0pO1xuICAgIHRoaXMuX2NhTWF0ZXJpYWwgPSBjb25maWcuY2FNYXRlcmlhbDtcbiAgICB0aGlzLl9jZXJ0TWF0ZXJpYWwgPSBjb25maWcuY2VydE1hdGVyaWFsO1xuICAgIHRoaXMuX2NlcnRQYXRoID0gY29uZmlnLmNlcnRQYXRoO1xuICAgIHRoaXMuX2NvbnRleHQgPSBjb25maWcuY29udGV4dDtcbiAgICB0aGlzLl9kaXNhYmxlRG9ja2VyRGFlbW9uQ2hlY2sgPSBjb25maWcuZGlzYWJsZURvY2tlckRhZW1vbkNoZWNrO1xuICAgIHRoaXMuX2hvc3QgPSBjb25maWcuaG9zdDtcbiAgICB0aGlzLl9rZXlNYXRlcmlhbCA9IGNvbmZpZy5rZXlNYXRlcmlhbDtcbiAgICB0aGlzLl9zc2hPcHRzID0gY29uZmlnLnNzaE9wdHM7XG4gICAgdGhpcy5fYWxpYXMgPSBjb25maWcuYWxpYXM7XG4gICAgdGhpcy5fcmVnaXN0cnlBdXRoID0gY29uZmlnLnJlZ2lzdHJ5QXV0aDtcbiAgfVxuXG4gIC8vID09PT09PT09PT1cbiAgLy8gQVRUUklCVVRFU1xuICAvLyA9PT09PT09PT09XG5cbiAgLy8gY2FfbWF0ZXJpYWwgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfY2FNYXRlcmlhbD86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgY2FNYXRlcmlhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2FNYXRlcmlhbDtcbiAgfVxuICBwdWJsaWMgc2V0IGNhTWF0ZXJpYWwodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2NhTWF0ZXJpYWwgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRDYU1hdGVyaWFsKCkge1xuICAgIHRoaXMuX2NhTWF0ZXJpYWwgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGNhTWF0ZXJpYWxJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2FNYXRlcmlhbDtcbiAgfVxuXG4gIC8vIGNlcnRfbWF0ZXJpYWwgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfY2VydE1hdGVyaWFsPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBjZXJ0TWF0ZXJpYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NlcnRNYXRlcmlhbDtcbiAgfVxuICBwdWJsaWMgc2V0IGNlcnRNYXRlcmlhbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fY2VydE1hdGVyaWFsID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0Q2VydE1hdGVyaWFsKCkge1xuICAgIHRoaXMuX2NlcnRNYXRlcmlhbCA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgY2VydE1hdGVyaWFsSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NlcnRNYXRlcmlhbDtcbiAgfVxuXG4gIC8vIGNlcnRfcGF0aCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9jZXJ0UGF0aD86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgY2VydFBhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NlcnRQYXRoO1xuICB9XG4gIHB1YmxpYyBzZXQgY2VydFBhdGgodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2NlcnRQYXRoID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0Q2VydFBhdGgoKSB7XG4gICAgdGhpcy5fY2VydFBhdGggPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGNlcnRQYXRoSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NlcnRQYXRoO1xuICB9XG5cbiAgLy8gY29udGV4dCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9jb250ZXh0Pzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBjb250ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xuICB9XG4gIHB1YmxpYyBzZXQgY29udGV4dCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fY29udGV4dCA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldENvbnRleHQoKSB7XG4gICAgdGhpcy5fY29udGV4dCA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgY29udGV4dElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xuICB9XG5cbiAgLy8gZGlzYWJsZV9kb2NrZXJfZGFlbW9uX2NoZWNrIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2Rpc2FibGVEb2NrZXJEYWVtb25DaGVjaz86IGJvb2xlYW4gfCBjZGt0Zi5JUmVzb2x2YWJsZTsgXG4gIHB1YmxpYyBnZXQgZGlzYWJsZURvY2tlckRhZW1vbkNoZWNrKCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlRG9ja2VyRGFlbW9uQ2hlY2s7XG4gIH1cbiAgcHVibGljIHNldCBkaXNhYmxlRG9ja2VyRGFlbW9uQ2hlY2sodmFsdWU6IGJvb2xlYW4gfCBjZGt0Zi5JUmVzb2x2YWJsZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2Rpc2FibGVEb2NrZXJEYWVtb25DaGVjayA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldERpc2FibGVEb2NrZXJEYWVtb25DaGVjaygpIHtcbiAgICB0aGlzLl9kaXNhYmxlRG9ja2VyRGFlbW9uQ2hlY2sgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGRpc2FibGVEb2NrZXJEYWVtb25DaGVja0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlRG9ja2VyRGFlbW9uQ2hlY2s7XG4gIH1cblxuICAvLyBob3N0IC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2hvc3Q/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGhvc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hvc3Q7XG4gIH1cbiAgcHVibGljIHNldCBob3N0KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ob3N0ID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0SG9zdCgpIHtcbiAgICB0aGlzLl9ob3N0ID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBob3N0SW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hvc3Q7XG4gIH1cblxuICAvLyBrZXlfbWF0ZXJpYWwgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfa2V5TWF0ZXJpYWw/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGtleU1hdGVyaWFsKCkge1xuICAgIHJldHVybiB0aGlzLl9rZXlNYXRlcmlhbDtcbiAgfVxuICBwdWJsaWMgc2V0IGtleU1hdGVyaWFsKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9rZXlNYXRlcmlhbCA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldEtleU1hdGVyaWFsKCkge1xuICAgIHRoaXMuX2tleU1hdGVyaWFsID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBrZXlNYXRlcmlhbElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9rZXlNYXRlcmlhbDtcbiAgfVxuXG4gIC8vIHNzaF9vcHRzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3NzaE9wdHM/OiBzdHJpbmdbXTsgXG4gIHB1YmxpYyBnZXQgc3NoT3B0cygpIHtcbiAgICByZXR1cm4gdGhpcy5fc3NoT3B0cztcbiAgfVxuICBwdWJsaWMgc2V0IHNzaE9wdHModmFsdWU6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fc3NoT3B0cyA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFNzaE9wdHMoKSB7XG4gICAgdGhpcy5fc3NoT3B0cyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgc3NoT3B0c0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9zc2hPcHRzO1xuICB9XG5cbiAgLy8gYWxpYXMgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfYWxpYXM/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGFsaWFzKCkge1xuICAgIHJldHVybiB0aGlzLl9hbGlhcztcbiAgfVxuICBwdWJsaWMgc2V0IGFsaWFzKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9hbGlhcyA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldEFsaWFzKCkge1xuICAgIHRoaXMuX2FsaWFzID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBhbGlhc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9hbGlhcztcbiAgfVxuXG4gIC8vIHJlZ2lzdHJ5X2F1dGggLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfcmVnaXN0cnlBdXRoPzogRG9ja2VyUHJvdmlkZXJSZWdpc3RyeUF1dGhbXSB8IGNka3RmLklSZXNvbHZhYmxlOyBcbiAgcHVibGljIGdldCByZWdpc3RyeUF1dGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5QXV0aDtcbiAgfVxuICBwdWJsaWMgc2V0IHJlZ2lzdHJ5QXV0aCh2YWx1ZTogRG9ja2VyUHJvdmlkZXJSZWdpc3RyeUF1dGhbXSB8IGNka3RmLklSZXNvbHZhYmxlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fcmVnaXN0cnlBdXRoID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0UmVnaXN0cnlBdXRoKCkge1xuICAgIHRoaXMuX3JlZ2lzdHJ5QXV0aCA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgcmVnaXN0cnlBdXRoSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5QXV0aDtcbiAgfVxuXG4gIC8vID09PT09PT09PVxuICAvLyBTWU5USEVTSVNcbiAgLy8gPT09PT09PT09XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgY2FfbWF0ZXJpYWw6IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX2NhTWF0ZXJpYWwpLFxuICAgICAgY2VydF9tYXRlcmlhbDogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fY2VydE1hdGVyaWFsKSxcbiAgICAgIGNlcnRfcGF0aDogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fY2VydFBhdGgpLFxuICAgICAgY29udGV4dDogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fY29udGV4dCksXG4gICAgICBkaXNhYmxlX2RvY2tlcl9kYWVtb25fY2hlY2s6IGNka3RmLmJvb2xlYW5Ub1RlcnJhZm9ybSh0aGlzLl9kaXNhYmxlRG9ja2VyRGFlbW9uQ2hlY2spLFxuICAgICAgaG9zdDogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5faG9zdCksXG4gICAgICBrZXlfbWF0ZXJpYWw6IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX2tleU1hdGVyaWFsKSxcbiAgICAgIHNzaF9vcHRzOiBjZGt0Zi5saXN0TWFwcGVyKGNka3RmLnN0cmluZ1RvVGVycmFmb3JtLCBmYWxzZSkodGhpcy5fc3NoT3B0cyksXG4gICAgICBhbGlhczogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fYWxpYXMpLFxuICAgICAgcmVnaXN0cnlfYXV0aDogY2RrdGYubGlzdE1hcHBlcihkb2NrZXJQcm92aWRlclJlZ2lzdHJ5QXV0aFRvVGVycmFmb3JtLCB0cnVlKSh0aGlzLl9yZWdpc3RyeUF1dGgpLFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUhjbEF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIGNvbnN0IGF0dHJzID0ge1xuICAgICAgY2FfbWF0ZXJpYWw6IHtcbiAgICAgICAgdmFsdWU6IGNka3RmLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX2NhTWF0ZXJpYWwpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICBjZXJ0X21hdGVyaWFsOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl9jZXJ0TWF0ZXJpYWwpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICBjZXJ0X3BhdGg6IHtcbiAgICAgICAgdmFsdWU6IGNka3RmLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX2NlcnRQYXRoKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgY29udGV4dDoge1xuICAgICAgICB2YWx1ZTogY2RrdGYuc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5fY29udGV4dCksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIGRpc2FibGVfZG9ja2VyX2RhZW1vbl9jaGVjazoge1xuICAgICAgICB2YWx1ZTogY2RrdGYuYm9vbGVhblRvSGNsVGVycmFmb3JtKHRoaXMuX2Rpc2FibGVEb2NrZXJEYWVtb25DaGVjayksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcImJvb2xlYW5cIixcbiAgICAgIH0sXG4gICAgICBob3N0OiB7XG4gICAgICAgIHZhbHVlOiBjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl9ob3N0KSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAga2V5X21hdGVyaWFsOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl9rZXlNYXRlcmlhbCksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIHNzaF9vcHRzOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0Zi5saXN0TWFwcGVySGNsKGNka3RmLnN0cmluZ1RvSGNsVGVycmFmb3JtLCBmYWxzZSkodGhpcy5fc3NoT3B0cyksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcImxpc3RcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdMaXN0XCIsXG4gICAgICB9LFxuICAgICAgYWxpYXM6IHtcbiAgICAgICAgdmFsdWU6IGNka3RmLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX2FsaWFzKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgcmVnaXN0cnlfYXV0aDoge1xuICAgICAgICB2YWx1ZTogY2RrdGYubGlzdE1hcHBlckhjbChkb2NrZXJQcm92aWRlclJlZ2lzdHJ5QXV0aFRvSGNsVGVycmFmb3JtLCB0cnVlKSh0aGlzLl9yZWdpc3RyeUF1dGgpLFxuICAgICAgICBpc0Jsb2NrOiB0cnVlLFxuICAgICAgICB0eXBlOiBcInNldFwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcIkRvY2tlclByb3ZpZGVyUmVnaXN0cnlBdXRoTGlzdFwiLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgLy8gcmVtb3ZlIHVuZGVmaW5lZCBhdHRyaWJ1dGVzXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhhdHRycykuZmlsdGVyKChbXywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgKSlcbiAgfVxufVxuIl19
|