@cdktn/provider-azuread 15.0.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.
Files changed (158) hide show
  1. package/.jsii +112042 -0
  2. package/LICENSE +355 -0
  3. package/README.md +94 -0
  4. package/lib/access-package/index.d.ts +151 -0
  5. package/lib/access-package/index.js +354 -0
  6. package/lib/access-package-assignment-policy/index.d.ts +1098 -0
  7. package/lib/access-package-assignment-policy/index.js +2711 -0
  8. package/lib/access-package-catalog/index.d.ts +152 -0
  9. package/lib/access-package-catalog/index.js +357 -0
  10. package/lib/access-package-catalog-role-assignment/index.d.ts +140 -0
  11. package/lib/access-package-catalog-role-assignment/index.js +333 -0
  12. package/lib/access-package-resource-catalog-association/index.d.ts +131 -0
  13. package/lib/access-package-resource-catalog-association/index.js +307 -0
  14. package/lib/access-package-resource-package-association/index.d.ts +132 -0
  15. package/lib/access-package-resource-package-association/index.js +310 -0
  16. package/lib/administrative-unit/index.d.ts +165 -0
  17. package/lib/administrative-unit/index.js +385 -0
  18. package/lib/administrative-unit-member/index.d.ts +123 -0
  19. package/lib/administrative-unit-member/index.js +295 -0
  20. package/lib/administrative-unit-role-member/index.d.ts +131 -0
  21. package/lib/administrative-unit-role-member/index.js +307 -0
  22. package/lib/app-role-assignment/index.d.ts +134 -0
  23. package/lib/app-role-assignment/index.js +319 -0
  24. package/lib/application/index.d.ts +1352 -0
  25. package/lib/application/index.js +3262 -0
  26. package/lib/application-api-access/index.d.ts +152 -0
  27. package/lib/application-api-access/index.js +357 -0
  28. package/lib/application-app-role/index.d.ts +171 -0
  29. package/lib/application-app-role/index.js +390 -0
  30. package/lib/application-certificate/index.d.ts +196 -0
  31. package/lib/application-certificate/index.js +441 -0
  32. package/lib/application-fallback-public-client/index.d.ts +122 -0
  33. package/lib/application-fallback-public-client/index.js +292 -0
  34. package/lib/application-federated-identity-credential/index.d.ts +172 -0
  35. package/lib/application-federated-identity-credential/index.js +394 -0
  36. package/lib/application-flexible-federated-identity-credential/index.d.ts +172 -0
  37. package/lib/application-flexible-federated-identity-credential/index.js +394 -0
  38. package/lib/application-from-template/index.d.ts +134 -0
  39. package/lib/application-from-template/index.js +334 -0
  40. package/lib/application-identifier-uri/index.d.ts +121 -0
  41. package/lib/application-identifier-uri/index.js +289 -0
  42. package/lib/application-known-clients/index.d.ts +130 -0
  43. package/lib/application-known-clients/index.js +315 -0
  44. package/lib/application-optional-claims/index.d.ts +381 -0
  45. package/lib/application-optional-claims/index.js +918 -0
  46. package/lib/application-owner/index.d.ts +121 -0
  47. package/lib/application-owner/index.js +289 -0
  48. package/lib/application-password/index.d.ts +185 -0
  49. package/lib/application-password/index.js +410 -0
  50. package/lib/application-permission-scope/index.d.ts +193 -0
  51. package/lib/application-permission-scope/index.js +432 -0
  52. package/lib/application-pre-authorized/index.d.ts +140 -0
  53. package/lib/application-pre-authorized/index.js +333 -0
  54. package/lib/application-redirect-uris/index.d.ts +140 -0
  55. package/lib/application-redirect-uris/index.js +333 -0
  56. package/lib/application-registration/index.d.ts +278 -0
  57. package/lib/application-registration/index.js +610 -0
  58. package/lib/authentication-strength-policy/index.d.ts +141 -0
  59. package/lib/authentication-strength-policy/index.js +336 -0
  60. package/lib/claims-mapping-policy/index.d.ts +130 -0
  61. package/lib/claims-mapping-policy/index.js +315 -0
  62. package/lib/conditional-access-policy/index.d.ts +959 -0
  63. package/lib/conditional-access-policy/index.js +2705 -0
  64. package/lib/custom-directory-role/index.d.ts +216 -0
  65. package/lib/custom-directory-role/index.js +505 -0
  66. package/lib/data-azuread-access-package/index.d.ts +118 -0
  67. package/lib/data-azuread-access-package/index.js +272 -0
  68. package/lib/data-azuread-access-package-catalog/index.d.ts +108 -0
  69. package/lib/data-azuread-access-package-catalog/index.js +258 -0
  70. package/lib/data-azuread-access-package-catalog-role/index.d.ts +107 -0
  71. package/lib/data-azuread-access-package-catalog-role/index.js +254 -0
  72. package/lib/data-azuread-administrative-unit/index.d.ts +135 -0
  73. package/lib/data-azuread-administrative-unit/index.js +336 -0
  74. package/lib/data-azuread-application/index.d.ts +654 -0
  75. package/lib/data-azuread-application/index.js +1606 -0
  76. package/lib/data-azuread-application-published-app-ids/index.d.ts +85 -0
  77. package/lib/data-azuread-application-published-app-ids/index.js +206 -0
  78. package/lib/data-azuread-application-template/index.d.ts +111 -0
  79. package/lib/data-azuread-application-template/index.js +270 -0
  80. package/lib/data-azuread-client-config/index.d.ts +86 -0
  81. package/lib/data-azuread-client-config/index.js +216 -0
  82. package/lib/data-azuread-directory-object/index.d.ts +94 -0
  83. package/lib/data-azuread-directory-object/index.js +223 -0
  84. package/lib/data-azuread-directory-role-templates/index.d.ts +120 -0
  85. package/lib/data-azuread-directory-role-templates/index.js +293 -0
  86. package/lib/data-azuread-directory-roles/index.d.ts +122 -0
  87. package/lib/data-azuread-directory-roles/index.js +301 -0
  88. package/lib/data-azuread-domains/index.d.ts +190 -0
  89. package/lib/data-azuread-domains/index.js +435 -0
  90. package/lib/data-azuread-group/index.d.ts +207 -0
  91. package/lib/data-azuread-group/index.js +506 -0
  92. package/lib/data-azuread-group-role-management-policy/index.d.ts +105 -0
  93. package/lib/data-azuread-group-role-management-policy/index.js +248 -0
  94. package/lib/data-azuread-groups/index.d.ts +160 -0
  95. package/lib/data-azuread-groups/index.js +348 -0
  96. package/lib/data-azuread-named-location/index.d.ts +163 -0
  97. package/lib/data-azuread-named-location/index.js +398 -0
  98. package/lib/data-azuread-service-principal/index.d.ts +325 -0
  99. package/lib/data-azuread-service-principal/index.js +817 -0
  100. package/lib/data-azuread-service-principals/index.d.ts +183 -0
  101. package/lib/data-azuread-service-principals/index.js +430 -0
  102. package/lib/data-azuread-user/index.d.ts +177 -0
  103. package/lib/data-azuread-user/index.js +465 -0
  104. package/lib/data-azuread-users/index.d.ts +204 -0
  105. package/lib/data-azuread-users/index.js +468 -0
  106. package/lib/directory-role/index.d.ts +125 -0
  107. package/lib/directory-role/index.js +306 -0
  108. package/lib/directory-role-assignment/index.d.ts +143 -0
  109. package/lib/directory-role-assignment/index.js +331 -0
  110. package/lib/directory-role-eligibility-schedule-request/index.d.ts +141 -0
  111. package/lib/directory-role-eligibility-schedule-request/index.js +325 -0
  112. package/lib/directory-role-member/index.d.ts +123 -0
  113. package/lib/directory-role-member/index.js +295 -0
  114. package/lib/group/index.d.ts +392 -0
  115. package/lib/group/index.js +872 -0
  116. package/lib/group-member/index.d.ts +121 -0
  117. package/lib/group-member/index.js +289 -0
  118. package/lib/group-role-management-policy/index.d.ts +1043 -0
  119. package/lib/group-role-management-policy/index.js +2775 -0
  120. package/lib/group-without-members/index.d.ts +381 -0
  121. package/lib/group-without-members/index.js +851 -0
  122. package/lib/index.d.ts +79 -0
  123. package/lib/index.js +85 -0
  124. package/lib/invitation/index.d.ts +203 -0
  125. package/lib/invitation/index.js +490 -0
  126. package/lib/lazy-index.d.ts +4 -0
  127. package/lib/lazy-index.js +82 -0
  128. package/lib/named-location/index.d.ts +212 -0
  129. package/lib/named-location/index.js +571 -0
  130. package/lib/privileged-access-group-assignment-schedule/index.d.ts +218 -0
  131. package/lib/privileged-access-group-assignment-schedule/index.js +484 -0
  132. package/lib/privileged-access-group-eligibility-schedule/index.d.ts +218 -0
  133. package/lib/privileged-access-group-eligibility-schedule/index.js +484 -0
  134. package/lib/provider/index.d.ts +289 -0
  135. package/lib/provider/index.js +549 -0
  136. package/lib/service-principal/index.d.ts +547 -0
  137. package/lib/service-principal/index.js +1305 -0
  138. package/lib/service-principal-certificate/index.d.ts +187 -0
  139. package/lib/service-principal-certificate/index.js +415 -0
  140. package/lib/service-principal-claims-mapping-policy-assignment/index.d.ts +121 -0
  141. package/lib/service-principal-claims-mapping-policy-assignment/index.js +289 -0
  142. package/lib/service-principal-delegated-permission-grant/index.d.ts +151 -0
  143. package/lib/service-principal-delegated-permission-grant/index.js +354 -0
  144. package/lib/service-principal-password/index.d.ts +176 -0
  145. package/lib/service-principal-password/index.js +384 -0
  146. package/lib/service-principal-token-signing-certificate/index.d.ts +137 -0
  147. package/lib/service-principal-token-signing-certificate/index.js +329 -0
  148. package/lib/synchronization-job/index.d.ts +177 -0
  149. package/lib/synchronization-job/index.js +424 -0
  150. package/lib/synchronization-job-provision-on-demand/index.d.ts +254 -0
  151. package/lib/synchronization-job-provision-on-demand/index.js +590 -0
  152. package/lib/synchronization-secret/index.d.ts +184 -0
  153. package/lib/synchronization-secret/index.js +449 -0
  154. package/lib/user/index.d.ts +517 -0
  155. package/lib/user/index.js +1084 -0
  156. package/lib/user-flow-attribute/index.d.ts +141 -0
  157. package/lib/user-flow-attribute/index.js +340 -0
  158. package/package.json +155 -0
@@ -0,0 +1,354 @@
1
+ "use strict";
2
+ var _a, _b;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ServicePrincipalDelegatedPermissionGrant = exports.ServicePrincipalDelegatedPermissionGrantTimeoutsOutputReference = void 0;
5
+ exports.servicePrincipalDelegatedPermissionGrantTimeoutsToTerraform = servicePrincipalDelegatedPermissionGrantTimeoutsToTerraform;
6
+ exports.servicePrincipalDelegatedPermissionGrantTimeoutsToHclTerraform = servicePrincipalDelegatedPermissionGrantTimeoutsToHclTerraform;
7
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
8
+ const cdktn = require("cdktn");
9
+ function servicePrincipalDelegatedPermissionGrantTimeoutsToTerraform(struct) {
10
+ if (!cdktn.canInspect(struct) || cdktn.Tokenization.isResolvable(struct)) {
11
+ return struct;
12
+ }
13
+ if (cdktn.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
+ create: cdktn.stringToTerraform(struct.create),
18
+ delete: cdktn.stringToTerraform(struct.delete),
19
+ read: cdktn.stringToTerraform(struct.read),
20
+ update: cdktn.stringToTerraform(struct.update),
21
+ };
22
+ }
23
+ function servicePrincipalDelegatedPermissionGrantTimeoutsToHclTerraform(struct) {
24
+ if (!cdktn.canInspect(struct) || cdktn.Tokenization.isResolvable(struct)) {
25
+ return struct;
26
+ }
27
+ if (cdktn.isComplexElement(struct)) {
28
+ throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
29
+ }
30
+ const attrs = {
31
+ create: {
32
+ value: cdktn.stringToHclTerraform(struct.create),
33
+ isBlock: false,
34
+ type: "simple",
35
+ storageClassType: "string",
36
+ },
37
+ delete: {
38
+ value: cdktn.stringToHclTerraform(struct.delete),
39
+ isBlock: false,
40
+ type: "simple",
41
+ storageClassType: "string",
42
+ },
43
+ read: {
44
+ value: cdktn.stringToHclTerraform(struct.read),
45
+ isBlock: false,
46
+ type: "simple",
47
+ storageClassType: "string",
48
+ },
49
+ update: {
50
+ value: cdktn.stringToHclTerraform(struct.update),
51
+ isBlock: false,
52
+ type: "simple",
53
+ storageClassType: "string",
54
+ },
55
+ };
56
+ // remove undefined attributes
57
+ return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
58
+ }
59
+ class ServicePrincipalDelegatedPermissionGrantTimeoutsOutputReference extends cdktn.ComplexObject {
60
+ /**
61
+ * @param terraformResource The parent resource
62
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
63
+ */
64
+ constructor(terraformResource, terraformAttribute) {
65
+ super(terraformResource, terraformAttribute, false);
66
+ this.isEmptyObject = false;
67
+ }
68
+ get internalValue() {
69
+ if (this.resolvableValue) {
70
+ return this.resolvableValue;
71
+ }
72
+ let hasAnyValues = this.isEmptyObject;
73
+ const internalValueResult = {};
74
+ if (this._create !== undefined) {
75
+ hasAnyValues = true;
76
+ internalValueResult.create = this._create;
77
+ }
78
+ if (this._delete !== undefined) {
79
+ hasAnyValues = true;
80
+ internalValueResult.delete = this._delete;
81
+ }
82
+ if (this._read !== undefined) {
83
+ hasAnyValues = true;
84
+ internalValueResult.read = this._read;
85
+ }
86
+ if (this._update !== undefined) {
87
+ hasAnyValues = true;
88
+ internalValueResult.update = this._update;
89
+ }
90
+ return hasAnyValues ? internalValueResult : undefined;
91
+ }
92
+ set internalValue(value) {
93
+ if (value === undefined) {
94
+ this.isEmptyObject = false;
95
+ this.resolvableValue = undefined;
96
+ this._create = undefined;
97
+ this._delete = undefined;
98
+ this._read = undefined;
99
+ this._update = undefined;
100
+ }
101
+ else if (cdktn.Tokenization.isResolvable(value)) {
102
+ this.isEmptyObject = false;
103
+ this.resolvableValue = value;
104
+ }
105
+ else {
106
+ this.isEmptyObject = Object.keys(value).length === 0;
107
+ this.resolvableValue = undefined;
108
+ this._create = value.create;
109
+ this._delete = value.delete;
110
+ this._read = value.read;
111
+ this._update = value.update;
112
+ }
113
+ }
114
+ get create() {
115
+ return this.getStringAttribute('create');
116
+ }
117
+ set create(value) {
118
+ this._create = value;
119
+ }
120
+ resetCreate() {
121
+ this._create = undefined;
122
+ }
123
+ // Temporarily expose input value. Use with caution.
124
+ get createInput() {
125
+ return this._create;
126
+ }
127
+ get delete() {
128
+ return this.getStringAttribute('delete');
129
+ }
130
+ set delete(value) {
131
+ this._delete = value;
132
+ }
133
+ resetDelete() {
134
+ this._delete = undefined;
135
+ }
136
+ // Temporarily expose input value. Use with caution.
137
+ get deleteInput() {
138
+ return this._delete;
139
+ }
140
+ get read() {
141
+ return this.getStringAttribute('read');
142
+ }
143
+ set read(value) {
144
+ this._read = value;
145
+ }
146
+ resetRead() {
147
+ this._read = undefined;
148
+ }
149
+ // Temporarily expose input value. Use with caution.
150
+ get readInput() {
151
+ return this._read;
152
+ }
153
+ get update() {
154
+ return this.getStringAttribute('update');
155
+ }
156
+ set update(value) {
157
+ this._update = value;
158
+ }
159
+ resetUpdate() {
160
+ this._update = undefined;
161
+ }
162
+ // Temporarily expose input value. Use with caution.
163
+ get updateInput() {
164
+ return this._update;
165
+ }
166
+ }
167
+ exports.ServicePrincipalDelegatedPermissionGrantTimeoutsOutputReference = ServicePrincipalDelegatedPermissionGrantTimeoutsOutputReference;
168
+ _a = JSII_RTTI_SYMBOL_1;
169
+ ServicePrincipalDelegatedPermissionGrantTimeoutsOutputReference[_a] = { fqn: "@cdktn/provider-azuread.servicePrincipalDelegatedPermissionGrant.ServicePrincipalDelegatedPermissionGrantTimeoutsOutputReference", version: "15.0.0" };
170
+ /**
171
+ * Represents a {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_delegated_permission_grant azuread_service_principal_delegated_permission_grant}
172
+ */
173
+ class ServicePrincipalDelegatedPermissionGrant extends cdktn.TerraformResource {
174
+ // ==============
175
+ // STATIC Methods
176
+ // ==============
177
+ /**
178
+ * Generates CDKTN code for importing a ServicePrincipalDelegatedPermissionGrant resource upon running "cdktn plan <stack-name>"
179
+ * @param scope The scope in which to define this construct
180
+ * @param importToId The construct id used in the generated config for the ServicePrincipalDelegatedPermissionGrant to import
181
+ * @param importFromId The id of the existing ServicePrincipalDelegatedPermissionGrant that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_delegated_permission_grant#import import section} in the documentation of this resource for the id to use
182
+ * @param provider? Optional instance of the provider where the ServicePrincipalDelegatedPermissionGrant to import is found
183
+ */
184
+ static generateConfigForImport(scope, importToId, importFromId, provider) {
185
+ return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "azuread_service_principal_delegated_permission_grant", importId: importFromId, provider });
186
+ }
187
+ // ===========
188
+ // INITIALIZER
189
+ // ===========
190
+ /**
191
+ * Create a new {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_delegated_permission_grant azuread_service_principal_delegated_permission_grant} Resource
192
+ *
193
+ * @param scope The scope in which to define this construct
194
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
195
+ * @param options ServicePrincipalDelegatedPermissionGrantConfig
196
+ */
197
+ constructor(scope, id, config) {
198
+ super(scope, id, {
199
+ terraformResourceType: 'azuread_service_principal_delegated_permission_grant',
200
+ terraformGeneratorMetadata: {
201
+ providerName: 'azuread',
202
+ providerVersion: '3.7.0',
203
+ providerVersionConstraint: '~> 3.0'
204
+ },
205
+ provider: config.provider,
206
+ dependsOn: config.dependsOn,
207
+ count: config.count,
208
+ lifecycle: config.lifecycle,
209
+ provisioners: config.provisioners,
210
+ connection: config.connection,
211
+ forEach: config.forEach
212
+ });
213
+ // timeouts - computed: false, optional: true, required: false
214
+ this._timeouts = new ServicePrincipalDelegatedPermissionGrantTimeoutsOutputReference(this, "timeouts");
215
+ this._claimValues = config.claimValues;
216
+ this._id = config.id;
217
+ this._resourceServicePrincipalObjectId = config.resourceServicePrincipalObjectId;
218
+ this._servicePrincipalObjectId = config.servicePrincipalObjectId;
219
+ this._userObjectId = config.userObjectId;
220
+ this._timeouts.internalValue = config.timeouts;
221
+ }
222
+ get claimValues() {
223
+ return cdktn.Fn.tolist(this.getListAttribute('claim_values'));
224
+ }
225
+ set claimValues(value) {
226
+ this._claimValues = value;
227
+ }
228
+ // Temporarily expose input value. Use with caution.
229
+ get claimValuesInput() {
230
+ return this._claimValues;
231
+ }
232
+ get id() {
233
+ return this.getStringAttribute('id');
234
+ }
235
+ set id(value) {
236
+ this._id = value;
237
+ }
238
+ resetId() {
239
+ this._id = undefined;
240
+ }
241
+ // Temporarily expose input value. Use with caution.
242
+ get idInput() {
243
+ return this._id;
244
+ }
245
+ get resourceServicePrincipalObjectId() {
246
+ return this.getStringAttribute('resource_service_principal_object_id');
247
+ }
248
+ set resourceServicePrincipalObjectId(value) {
249
+ this._resourceServicePrincipalObjectId = value;
250
+ }
251
+ // Temporarily expose input value. Use with caution.
252
+ get resourceServicePrincipalObjectIdInput() {
253
+ return this._resourceServicePrincipalObjectId;
254
+ }
255
+ get servicePrincipalObjectId() {
256
+ return this.getStringAttribute('service_principal_object_id');
257
+ }
258
+ set servicePrincipalObjectId(value) {
259
+ this._servicePrincipalObjectId = value;
260
+ }
261
+ // Temporarily expose input value. Use with caution.
262
+ get servicePrincipalObjectIdInput() {
263
+ return this._servicePrincipalObjectId;
264
+ }
265
+ get userObjectId() {
266
+ return this.getStringAttribute('user_object_id');
267
+ }
268
+ set userObjectId(value) {
269
+ this._userObjectId = value;
270
+ }
271
+ resetUserObjectId() {
272
+ this._userObjectId = undefined;
273
+ }
274
+ // Temporarily expose input value. Use with caution.
275
+ get userObjectIdInput() {
276
+ return this._userObjectId;
277
+ }
278
+ get timeouts() {
279
+ return this._timeouts;
280
+ }
281
+ putTimeouts(value) {
282
+ this._timeouts.internalValue = value;
283
+ }
284
+ resetTimeouts() {
285
+ this._timeouts.internalValue = undefined;
286
+ }
287
+ // Temporarily expose input value. Use with caution.
288
+ get timeoutsInput() {
289
+ return this._timeouts.internalValue;
290
+ }
291
+ // =========
292
+ // SYNTHESIS
293
+ // =========
294
+ synthesizeAttributes() {
295
+ return {
296
+ claim_values: cdktn.listMapper(cdktn.stringToTerraform, false)(this._claimValues),
297
+ id: cdktn.stringToTerraform(this._id),
298
+ resource_service_principal_object_id: cdktn.stringToTerraform(this._resourceServicePrincipalObjectId),
299
+ service_principal_object_id: cdktn.stringToTerraform(this._servicePrincipalObjectId),
300
+ user_object_id: cdktn.stringToTerraform(this._userObjectId),
301
+ timeouts: servicePrincipalDelegatedPermissionGrantTimeoutsToTerraform(this._timeouts.internalValue),
302
+ };
303
+ }
304
+ synthesizeHclAttributes() {
305
+ const attrs = {
306
+ claim_values: {
307
+ value: cdktn.listMapperHcl(cdktn.stringToHclTerraform, false)(this._claimValues),
308
+ isBlock: false,
309
+ type: "set",
310
+ storageClassType: "stringList",
311
+ },
312
+ id: {
313
+ value: cdktn.stringToHclTerraform(this._id),
314
+ isBlock: false,
315
+ type: "simple",
316
+ storageClassType: "string",
317
+ },
318
+ resource_service_principal_object_id: {
319
+ value: cdktn.stringToHclTerraform(this._resourceServicePrincipalObjectId),
320
+ isBlock: false,
321
+ type: "simple",
322
+ storageClassType: "string",
323
+ },
324
+ service_principal_object_id: {
325
+ value: cdktn.stringToHclTerraform(this._servicePrincipalObjectId),
326
+ isBlock: false,
327
+ type: "simple",
328
+ storageClassType: "string",
329
+ },
330
+ user_object_id: {
331
+ value: cdktn.stringToHclTerraform(this._userObjectId),
332
+ isBlock: false,
333
+ type: "simple",
334
+ storageClassType: "string",
335
+ },
336
+ timeouts: {
337
+ value: servicePrincipalDelegatedPermissionGrantTimeoutsToHclTerraform(this._timeouts.internalValue),
338
+ isBlock: true,
339
+ type: "struct",
340
+ storageClassType: "ServicePrincipalDelegatedPermissionGrantTimeouts",
341
+ },
342
+ };
343
+ // remove undefined attributes
344
+ return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
345
+ }
346
+ }
347
+ exports.ServicePrincipalDelegatedPermissionGrant = ServicePrincipalDelegatedPermissionGrant;
348
+ _b = JSII_RTTI_SYMBOL_1;
349
+ ServicePrincipalDelegatedPermissionGrant[_b] = { fqn: "@cdktn/provider-azuread.servicePrincipalDelegatedPermissionGrant.ServicePrincipalDelegatedPermissionGrant", version: "15.0.0" };
350
+ // =================
351
+ // STATIC PROPERTIES
352
+ // =================
353
+ ServicePrincipalDelegatedPermissionGrant.tfResourceType = "azuread_service_principal_delegated_permission_grant";
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZS1wcmluY2lwYWwtZGVsZWdhdGVkLXBlcm1pc3Npb24tZ3JhbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQXVFQSxrSUFXQztBQUdELHdJQWtDQzs7QUE5R0QsK0JBQStCO0FBOEQvQixTQUFnQiwyREFBMkQsQ0FBQyxNQUE2RTtJQUN2SixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQUMsT0FBTyxNQUFNLENBQUM7SUFBQyxDQUFDO0lBQzVGLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvSEFBb0gsQ0FBQyxDQUFDO0lBQ3hJLENBQUM7SUFDRCxPQUFPO1FBQ0wsTUFBTSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsTUFBTSxDQUFDO1FBQy9DLE1BQU0sRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTyxDQUFDLE1BQU0sQ0FBQztRQUMvQyxJQUFJLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxJQUFJLENBQUM7UUFDM0MsTUFBTSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsTUFBTSxDQUFDO0tBQ2hELENBQUE7QUFDSCxDQUFDO0FBR0QsU0FBZ0IsOERBQThELENBQUMsTUFBNkU7SUFDMUosSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sTUFBTSxDQUFDO0lBQUMsQ0FBQztJQUM1RixJQUFJLEtBQUssQ0FB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b3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCBJQk0gQ29ycC4gMjAyMSwgMjAyNlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbiAqL1xuXG4vLyBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F6dXJlYWQvMy43LjAvZG9jcy9yZXNvdXJjZXMvc2VydmljZV9wcmluY2lwYWxfZGVsZWdhdGVkX3Blcm1pc3Npb25fZ3JhbnRcbi8vIGdlbmVyYXRlZCBmcm9tIHRlcnJhZm9ybSByZXNvdXJjZSBzY2hlbWFcblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBjZGt0biBmcm9tICdjZGt0bic7XG5cbi8vIENvbmZpZ3VyYXRpb25cblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlUHJpbmNpcGFsRGVsZWdhdGVkUGVybWlzc2lvbkdyYW50Q29uZmlnIGV4dGVuZHMgY2RrdG4uVGVycmFmb3JtTWV0YUFyZ3VtZW50cyB7XG4gIC8qKlxuICAqIEEgc2V0IG9mIGNsYWltIHZhbHVlcyBmb3IgZGVsZWdhdGVkIHBlcm1pc3Npb24gc2NvcGVzIHdoaWNoIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBhY2Nlc3MgdG9rZW5zIGZvciB0aGUgcmVzb3VyY2VcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL3NlcnZpY2VfcHJpbmNpcGFsX2RlbGVnYXRlZF9wZXJtaXNzaW9uX2dyYW50I2NsYWltX3ZhbHVlcyBTZXJ2aWNlUHJpbmNpcGFsRGVsZWdhdGVkUGVybWlzc2lvbkdyYW50I2NsYWltX3ZhbHVlc31cbiAgKi9cbiAgcmVhZG9ubHkgY2xhaW1WYWx1ZXM6IHN0cmluZ1tdO1xuICAvKipcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXp1cmVhZC8zLjcuMC9kb2NzL3Jlc291cmNlcy9zZXJ2aWNlX3ByaW5jaXBhbF9kZWxlZ2F0ZWRfcGVybWlzc2lvbl9ncmFudCNpZCBTZXJ2aWNlUHJpbmNpcGFsRGVsZWdhdGVkUGVybWlzc2lvbkdyYW50I2lkfVxuICAqXG4gICogUGxlYXNlIGJlIGF3YXJlIHRoYXQgdGhlIGlkIGZpZWxkIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gYWxsIHJlc291cmNlcyBpbiBUZXJyYWZvcm0gcHJvdmlkZXJzIHVzaW5nIGEgVGVycmFmb3JtIHByb3ZpZGVyIFNESyB2ZXJzaW9uIGJlbG93IDIuXG4gICogSWYgeW91IGV4cGVyaWVuY2UgcHJvYmxlbXMgc2V0dGluZyB0aGlzIHZhbHVlIGl0IG1pZ2h0IG5vdCBiZSBzZXR0YWJsZS4gUGxlYXNlIHRha2UgYSBsb29rIGF0IHRoZSBwcm92aWRlciBkb2N1bWVudGF0aW9uIHRvIGVuc3VyZSBpdCBzaG91bGQgYmUgc2V0dGFibGUuXG4gICovXG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuICAvKipcbiAgKiBUaGUgb2JqZWN0IElEIG9mIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCByZXByZXNlbnRpbmcgdGhlIHJlc291cmNlIHRvIGJlIGFjY2Vzc2VkXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXp1cmVhZC8zLjcuMC9kb2NzL3Jlc291cmNlcy9zZXJ2aWNlX3ByaW5jaXBhbF9kZWxlZ2F0ZWRfcGVybWlzc2lvbl9ncmFudCNyZXNvdXJjZV9zZXJ2aWNlX3ByaW5jaXBhbF9vYmplY3RfaWQgU2VydmljZVByaW5jaXBhbERlbGVnYXRlZFBlcm1pc3Npb25HcmFudCNyZXNvdXJjZV9zZXJ2aWNlX3ByaW5jaXBhbF9vYmplY3RfaWR9XG4gICovXG4gIHJlYWRvbmx5IHJlc291cmNlU2VydmljZVByaW5jaXBhbE9iamVjdElkOiBzdHJpbmc7XG4gIC8qKlxuICAqIFRoZSBvYmplY3QgSUQgb2YgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIGZvciB3aGljaCB0aGlzIGRlbGVnYXRlZCBwZXJtaXNzaW9uIGdyYW50IHNob3VsZCBiZSBjcmVhdGVkXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXp1cmVhZC8zLjcuMC9kb2NzL3Jlc291cmNlcy9zZXJ2aWNlX3ByaW5jaXBhbF9kZWxlZ2F0ZWRfcGVybWlzc2lvbl9ncmFudCNzZXJ2aWNlX3ByaW5jaXBhbF9vYmplY3RfaWQgU2VydmljZVByaW5jaXBhbERlbGVnYXRlZFBlcm1pc3Npb25HcmFudCNzZXJ2aWNlX3ByaW5jaXBhbF9vYmplY3RfaWR9XG4gICovXG4gIHJlYWRvbmx5IHNlcnZpY2VQcmluY2lwYWxPYmplY3RJZDogc3RyaW5nO1xuICAvKipcbiAgKiBUaGUgb2JqZWN0IElEIG9mIHRoZSB1c2VyIG9uIGJlaGFsZiBvZiB3aG9tIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCBpcyBhdXRob3JpemVkIHRvIGFjY2VzcyB0aGUgcmVzb3VyY2VcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL3NlcnZpY2VfcHJpbmNpcGFsX2RlbGVnYXRlZF9wZXJtaXNzaW9uX2dyYW50I3VzZXJfb2JqZWN0X2lkIFNlcnZpY2VQcmluY2lwYWxEZWxlZ2F0ZWRQZXJtaXNzaW9uR3JhbnQjdXNlcl9vYmplY3RfaWR9XG4gICovXG4gIHJlYWRvbmx5IHVzZXJPYmplY3RJZD86IHN0cmluZztcbiAgLyoqXG4gICogdGltZW91dHMgYmxvY2tcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL3NlcnZpY2VfcHJpbmNpcGFsX2RlbGVnYXRlZF9wZXJtaXNzaW9uX2dyYW50I3RpbWVvdXRzIFNlcnZpY2VQcmluY2lwYWxEZWxlZ2F0ZWRQZXJtaXNzaW9uR3JhbnQjdGltZW91dHN9XG4gICovXG4gIHJlYWRvbmx5IHRpbWVvdXRzPzogU2VydmljZVByaW5jaXBhbERlbGVnYXRlZFBlcm1pc3Npb25HcmFudFRpbWVvdXRzO1xufVxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlUHJpbmNpcGFsRGVsZWdhdGVkUGVybWlzc2lvbkdyYW50VGltZW91dHMge1xuICAvKipcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXp1cmVhZC8zLjcuMC9kb2NzL3Jlc291cmNlcy9zZXJ2aWNlX3ByaW5jaXBhbF9kZWxlZ2F0ZWRfcGVybWlzc2lvbl9ncmFudCNjcmVhdGUgU2VydmljZVByaW5jaXBhbERlbGVnYXRlZFBlcm1pc3Npb25HcmFudCNjcmVhdGV9XG4gICovXG4gIHJlYWRvbmx5IGNyZWF0ZT86IHN0cmluZztcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F6dXJlYWQvMy43LjAvZG9jcy9yZXNvdXJjZXMvc2VydmljZV9wcmluY2lwYWxfZGVsZWdhdGVkX3Blcm1pc3Npb25fZ3JhbnQjZGVsZXRlIFNlcnZpY2VQcmluY2lwYWxEZWxlZ2F0ZWRQZXJtaXNzaW9uR3JhbnQjZGVsZXRlfVxuICAqL1xuICByZWFkb25seSBkZWxldGU/OiBzdHJpbmc7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL3NlcnZpY2VfcHJpbmNpcGFsX2RlbGVnYXRlZF9wZXJtaXNzaW9uX2dyYW50I3JlYWQgU2VydmljZVByaW5jaXBhbERlbGVnYXRlZFBlcm1pc3Npb25HcmFudCNyZWFkfVxuICAqL1xuICByZWFkb25seSByZWFkPzogc3RyaW5nO1xuICAvKipcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXp1cmVhZC8zLjcuMC9kb2NzL3Jlc291cmNlcy9zZXJ2aWNlX3ByaW5jaXBhbF9kZWxlZ2F0ZWRfcGVybWlzc2lvbl9ncmFudCN1cGRhdGUgU2VydmljZVByaW5jaXBhbERlbGVnYXRlZFBlcm1pc3Npb25HcmFudCN1cGRhdGV9XG4gICovXG4gIHJlYWRvbmx5IHVwZGF0ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VQcmluY2lwYWxEZWxlZ2F0ZWRQZXJtaXNzaW9uR3JhbnRUaW1lb3V0c1RvVGVycmFmb3JtKHN0cnVjdD86IFNlcnZpY2VQcmluY2lwYWxEZWxlZ2F0ZWRQZXJtaXNzaW9uR3JhbnRUaW1lb3V0cyB8IGNka3RuLklSZXNvbHZhYmxlKTogYW55IHtcbiAgaWYgKCFjZGt0bi5jYW5JbnNwZWN0KHN0cnVjdCkgfHwgY2RrdG4uVG9rZW5pemF0aW9uLmlzUmVzb2x2YWJsZShzdHJ1Y3QpKSB7IHJldHVybiBzdHJ1Y3Q7IH1cbiAgaWYgKGNka3RuLmlzQ29tcGxleEVsZW1lbnQoc3RydWN0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkEgY29tcGxleCBlbGVtZW50IHdhcyB1c2VkIGFzIGNvbmZpZ3VyYXRpb24sIHRoaXMgaXMgbm90IHN1cHBvcnRlZDogaHR0cHM6Ly9jZGsudGYvY29tcGxleC1vYmplY3QtYXMtY29uZmlndXJhdGlvblwiKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGNyZWF0ZTogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS5jcmVhdGUpLFxuICAgIGRlbGV0ZTogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS5kZWxldGUpLFxuICAgIHJlYWQ6IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHN0cnVjdCEucmVhZCksXG4gICAgdXBkYXRlOiBjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybShzdHJ1Y3QhLnVwZGF0ZSksXG4gIH1cbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gc2VydmljZVByaW5jaXBhbERlbGVnYXRlZFBlcm1pc3Npb25HcmFudFRpbWVvdXRzVG9IY2xUZXJyYWZvcm0oc3RydWN0PzogU2VydmljZVByaW5jaXBhbERlbGVnYXRlZFBlcm1pc3Npb25HcmFudFRpbWVvdXRzIHwgY2RrdG4uSVJlc29sdmFibGUpOiBhbnkge1xuICBpZiAoIWNka3RuLmNhbkluc3BlY3Qoc3RydWN0KSB8fCBjZGt0bi5Ub2tlbml6YXRpb24uaXNSZXNvbHZhYmxlKHN0cnVjdCkpIHsgcmV0dXJuIHN0cnVjdDsgfVxuICBpZiAoY2RrdG4uaXNDb21wbGV4RWxlbWVudChzdHJ1Y3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQSBjb21wbGV4IGVsZW1lbnQgd2FzIHVzZWQgYXMgY29uZmlndXJhdGlvbiwgdGhpcyBpcyBub3Qgc3VwcG9ydGVkOiBodHRwczovL2Nkay50Zi9jb21wbGV4LW9iamVjdC1hcy1jb25maWd1cmF0aW9uXCIpO1xuICB9XG4gIGNvbnN0IGF0dHJzID0ge1xuICAgIGNyZWF0ZToge1xuICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHN0cnVjdCEuY3JlYXRlKSxcbiAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgfSxcbiAgICBkZWxldGU6IHtcbiAgICAgIHZhbHVlOiBjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybShzdHJ1Y3QhLmRlbGV0ZSksXG4gICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgIH0sXG4gICAgcmVhZDoge1xuICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHN0cnVjdCEucmVhZCksXG4gICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgIH0sXG4gICAgdXBkYXRlOiB7XG4gICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0oc3RydWN0IS51cGRhdGUpLFxuICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICB9LFxuICB9O1xuXG4gIC8vIHJlbW92ZSB1bmRlZmluZWQgYXR0cmlidXRlc1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGF0dHJzKS5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCkpO1xufVxuXG5leHBvcnQgY2xhc3MgU2VydmljZVByaW5jaXBhbERlbGVnYXRlZFBlcm1pc3Npb25HcmFudFRpbWVvdXRzT3V0cHV0UmVmZXJlbmNlIGV4dGVuZHMgY2RrdG4uQ29tcGxleE9iamVjdCB7XG4gIHByaXZhdGUgaXNFbXB0eU9iamVjdCA9IGZhbHNlO1xuICBwcml2YXRlIHJlc29sdmFibGVWYWx1ZT86IGNka3RuLklSZXNvbHZhYmxlO1xuXG4gIC8qKlxuICAqIEBwYXJhbSB0ZXJyYWZvcm1SZXNvdXJjZSBUaGUgcGFyZW50IHJlc291cmNlXG4gICogQHBhcmFtIHRlcnJhZm9ybUF0dHJpYnV0ZSBUaGUgYXR0cmlidXRlIG9uIHRoZSBwYXJlbnQgcmVzb3VyY2UgdGhpcyBjbGFzcyBpcyByZWZlcmVuY2luZ1xuICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IodGVycmFmb3JtUmVzb3VyY2U6IGNka3RuLklJbnRlcnBvbGF0aW5nUGFyZW50LCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZykge1xuICAgIHN1cGVyKHRlcnJhZm9ybVJlc291cmNlLCB0ZXJyYWZvcm1BdHRyaWJ1dGUsIGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW50ZXJuYWxWYWx1ZSgpOiBTZXJ2aWNlUHJpbmNpcGFsRGVsZWdhdGVkUGVybWlzc2lvbkdyYW50VGltZW91dHMgfCBjZGt0bi5JUmVzb2x2YWJsZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMucmVzb2x2YWJsZVZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvbHZhYmxlVmFsdWU7XG4gICAgfVxuICAgIGxldCBoYXNBbnlWYWx1ZXMgPSB0aGlzLmlzRW1wdHlPYmplY3Q7XG4gICAgY29uc3QgaW50ZXJuYWxWYWx1ZVJlc3VsdDogYW55ID0ge307XG4gICAgaWYgKHRoaXMuX2NyZWF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNBbnlWYWx1ZXMgPSB0cnVlO1xuICAgICAgaW50ZXJuYWxWYWx1ZVJlc3VsdC5jcmVhdGUgPSB0aGlzLl9jcmVhdGU7XG4gICAgfVxuICAgIGlmICh0aGlzLl9kZWxldGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzQW55VmFsdWVzID0gdHJ1ZTtcbiAgICAgIGludGVybmFsVmFsdWVSZXN1bHQuZGVsZXRlID0gdGhpcy5fZGVsZXRlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fcmVhZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNBbnlWYWx1ZXMgPSB0cnVlO1xuICAgICAgaW50ZXJuYWxWYWx1ZVJlc3VsdC5yZWFkID0gdGhpcy5fcmVhZDtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3VwZGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNBbnlWYWx1ZXMgPSB0cnVlO1xuICAgICAgaW50ZXJuYWxWYWx1ZVJlc3VsdC51cGRhdGUgPSB0aGlzLl91cGRhdGU7XG4gICAgfVxuICAgIHJldHVybiBoYXNBbnlWYWx1ZXMgPyBpbnRlcm5hbFZhbHVlUmVzdWx0IDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNldCBpbnRlcm5hbFZhbHVlKHZhbHVlOiBTZXJ2aWNlUHJpbmNpcGFsRGVsZWdhdGVkUGVybWlzc2lvbkdyYW50VGltZW91dHMgfCBjZGt0bi5JUmVzb2x2YWJsZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmlzRW1wdHlPYmplY3QgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzb2x2YWJsZVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fY3JlYXRlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fZGVsZXRlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fcmVhZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX3VwZGF0ZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZWxzZSBpZiAoY2RrdG4uVG9rZW5pemF0aW9uLmlzUmVzb2x2YWJsZSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuaXNFbXB0eU9iamVjdCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNvbHZhYmxlVmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmlzRW1wdHlPYmplY3QgPSBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwO1xuICAgICAgdGhpcy5yZXNvbHZhYmxlVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9jcmVhdGUgPSB2YWx1ZS5jcmVhdGU7XG4gICAgICB0aGlzLl9kZWxldGUgPSB2YWx1ZS5kZWxldGU7XG4gICAgICB0aGlzLl9yZWFkID0gdmFsdWUucmVhZDtcbiAgICAgIHRoaXMuX3VwZGF0ZSA9IHZhbHVlLnVwZGF0ZTtcbiAgICB9XG4gIH1cblxuICAvLyBjcmVhdGUgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfY3JlYXRlPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBjcmVhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdjcmVhdGUnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGNyZWF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fY3JlYXRlID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0Q3JlYXRlKCkge1xuICAgIHRoaXMuX2NyZWF0ZSA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgY3JlYXRlSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZTtcbiAgfVxuXG4gIC8vIGRlbGV0ZSAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9kZWxldGU/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGRlbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2RlbGV0ZScpO1xuICB9XG4gIHB1YmxpYyBzZXQgZGVsZXRlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kZWxldGUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXREZWxldGUoKSB7XG4gICAgdGhpcy5fZGVsZXRlID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBkZWxldGVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVsZXRlO1xuICB9XG5cbiAgLy8gcmVhZCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yZWFkPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCByZWFkKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgncmVhZCcpO1xuICB9XG4gIHB1YmxpYyBzZXQgcmVhZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcmVhZCA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFJlYWQoKSB7XG4gICAgdGhpcy5fcmVhZCA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgcmVhZElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkO1xuICB9XG5cbiAgLy8gdXBkYXRlIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3VwZGF0ZT86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgdXBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgndXBkYXRlJyk7XG4gIH1cbiAgcHVibGljIHNldCB1cGRhdGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3VwZGF0ZSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFVwZGF0ZSgpIHtcbiAgICB0aGlzLl91cGRhdGUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHVwZGF0ZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl91cGRhdGU7XG4gIH1cbn1cblxuLyoqXG4qIFJlcHJlc2VudHMgYSB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL3NlcnZpY2VfcHJpbmNpcGFsX2RlbGVnYXRlZF9wZXJtaXNzaW9uX2dyYW50IGF6dXJlYWRfc2VydmljZV9wcmluY2lwYWxfZGVsZWdhdGVkX3Blcm1pc3Npb25fZ3JhbnR9XG4qL1xuZXhwb3J0IGNsYXNzIFNlcnZpY2VQcmluY2lwYWxEZWxlZ2F0ZWRQZXJtaXNzaW9uR3JhbnQgZXh0ZW5kcyBjZGt0bi5UZXJyYWZvcm1SZXNvdXJjZSB7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgLy8gU1RBVElDIFBST1BFUlRJRVNcbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0ZlJlc291cmNlVHlwZSA9IFwiYXp1cmVhZF9zZXJ2aWNlX3ByaW5jaXBhbF9kZWxlZ2F0ZWRfcGVybWlzc2lvbl9ncmFudFwiO1xuXG4gIC8vID09PT09PT09PT09PT09XG4gIC8vIFNUQVRJQyBNZXRob2RzXG4gIC8vID09PT09PT09PT09PT09XG4gIC8qKlxuICAqIEdlbmVyYXRlcyBDREtUTiBjb2RlIGZvciBpbXBvcnRpbmcgYSBTZXJ2aWNlUHJpbmNpcGFsRGVsZWdhdGVkUGVybWlzc2lvbkdyYW50IHJlc291cmNlIHVwb24gcnVubmluZyBcImNka3RuIHBsYW4gPHN0YWNrLW5hbWU+XCJcbiAgKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAqIEBwYXJhbSBpbXBvcnRUb0lkIFRoZSBjb25zdHJ1Y3QgaWQgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvbmZpZyBmb3IgdGhlIFNlcnZpY2VQcmluY2lwYWxEZWxlZ2F0ZWRQZXJtaXNzaW9uR3JhbnQgdG8gaW1wb3J0XG4gICogQHBhcmFtIGltcG9ydEZyb21JZCBUaGUgaWQgb2YgdGhlIGV4aXN0aW5nIFNlcnZpY2VQcmluY2lwYWxEZWxlZ2F0ZWRQZXJtaXNzaW9uR3JhbnQgdGhhdCBzaG91bGQgYmUgaW1wb3J0ZWQuIFJlZmVyIHRvIHRoZSB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9henVyZWFkLzMuNy4wL2RvY3MvcmVzb3VyY2VzL3NlcnZpY2VfcHJpbmNpcGFsX2RlbGVnYXRlZF9wZXJtaXNzaW9uX2dyYW50I2ltcG9ydCBpbXBvcnQgc2VjdGlvbn0gaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhpcyByZXNvdXJjZSBmb3IgdGhlIGlkIHRvIHVzZVxuICAqIEBwYXJhbSBwcm92aWRlcj8gT3B0aW9uYWwgaW5zdGFuY2Ugb2YgdGhlIHByb3ZpZGVyIHdoZXJlIHRoZSBTZXJ2aWNlUHJpbmNpcGFsRGVsZWdhdGVkUGVybWlzc2lvbkdyYW50IHRvIGltcG9ydCBpcyBmb3VuZFxuICAqL1xuICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlQ29uZmlnRm9ySW1wb3J0KHNjb3BlOiBDb25zdHJ1Y3QsIGltcG9ydFRvSWQ6IHN0cmluZywgaW1wb3J0RnJvbUlkOiBzdHJpbmcsIHByb3ZpZGVyPzogY2RrdG4uVGVycmFmb3JtUHJvdmlkZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBjZGt0bi5JbXBvcnRhYmxlUmVzb3VyY2Uoc2NvcGUsIGltcG9ydFRvSWQsIHsgdGVycmFmb3JtUmVzb3VyY2VUeXBlOiBcImF6dXJlYWRfc2VydmljZV9wcmluY2lwYWxfZGVsZWdhdGVkX3Blcm1pc3Npb25fZ3JhbnRcIiwgaW1wb3J0SWQ6IGltcG9ydEZyb21JZCwgcHJvdmlkZXIgfSk7XG4gICAgICB9XG5cbiAgLy8gPT09PT09PT09PT1cbiAgLy8gSU5JVElBTElaRVJcbiAgLy8gPT09PT09PT09PT1cblxuICAvKipcbiAgKiBDcmVhdGUgYSBuZXcge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXp1cmVhZC8zLjcuMC9kb2NzL3Jlc291cmNlcy9zZXJ2aWNlX3ByaW5jaXBhbF9kZWxlZ2F0ZWRfcGVybWlzc2lvbl9ncmFudCBhenVyZWFkX3NlcnZpY2VfcHJpbmNpcGFsX2RlbGVnYXRlZF9wZXJtaXNzaW9uX2dyYW50fSBSZXNvdXJjZVxuICAqXG4gICogQHBhcmFtIHNjb3BlIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgKiBAcGFyYW0gaWQgVGhlIHNjb3BlZCBjb25zdHJ1Y3QgSUQuIE11c3QgYmUgdW5pcXVlIGFtb25nc3Qgc2libGluZ3MgaW4gdGhlIHNhbWUgc2NvcGVcbiAgKiBAcGFyYW0gb3B0aW9ucyBTZXJ2aWNlUHJpbmNpcGFsRGVsZWdhdGVkUGVybWlzc2lvbkdyYW50Q29uZmlnXG4gICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBjb25maWc6IFNlcnZpY2VQcmluY2lwYWxEZWxlZ2F0ZWRQZXJtaXNzaW9uR3JhbnRDb25maWcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHRlcnJhZm9ybVJlc291cmNlVHlwZTogJ2F6dXJlYWRfc2VydmljZV9wcmluY2lwYWxfZGVsZWdhdGVkX3Blcm1pc3Npb25fZ3JhbnQnLFxuICAgICAgdGVycmFmb3JtR2VuZXJhdG9yTWV0YWRhdGE6IHtcbiAgICAgICAgcHJvdmlkZXJOYW1lOiAnYXp1cmVhZCcsXG4gICAgICAgIHByb3ZpZGVyVmVyc2lvbjogJzMuNy4wJyxcbiAgICAgICAgcHJvdmlkZXJWZXJzaW9uQ29uc3RyYWludDogJ34+IDMuMCdcbiAgICAgIH0sXG4gICAgICBwcm92aWRlcjogY29uZmlnLnByb3ZpZGVyLFxuICAgICAgZGVwZW5kc09uOiBjb25maWcuZGVwZW5kc09uLFxuICAgICAgY291bnQ6IGNvbmZpZy5jb3VudCxcbiAgICAgIGxpZmVjeWNsZTogY29uZmlnLmxpZmVjeWNsZSxcbiAgICAgIHByb3Zpc2lvbmVyczogY29uZmlnLnByb3Zpc2lvbmVycyxcbiAgICAgIGNvbm5lY3Rpb246IGNvbmZpZy5jb25uZWN0aW9uLFxuICAgICAgZm9yRWFjaDogY29uZmlnLmZvckVhY2hcbiAgICB9KTtcbiAgICB0aGlzLl9jbGFpbVZhbHVlcyA9IGNvbmZpZy5jbGFpbVZhbHVlcztcbiAgICB0aGlzLl9pZCA9IGNvbmZpZy5pZDtcbiAgICB0aGlzLl9yZXNvdXJjZVNlcnZpY2VQcmluY2lwYWxPYmplY3RJZCA9IGNvbmZpZy5yZXNvdXJjZVNlcnZpY2VQcmluY2lwYWxPYmplY3RJZDtcbiAgICB0aGlzLl9zZXJ2aWNlUHJpbmNpcGFsT2JqZWN0SWQgPSBjb25maWcuc2VydmljZVByaW5jaXBhbE9iamVjdElkO1xuICAgIHRoaXMuX3VzZXJPYmplY3RJZCA9IGNvbmZpZy51c2VyT2JqZWN0SWQ7XG4gICAgdGhpcy5fdGltZW91dHMuaW50ZXJuYWxWYWx1ZSA9IGNvbmZpZy50aW1lb3V0cztcbiAgfVxuXG4gIC8vID09PT09PT09PT1cbiAgLy8gQVRUUklCVVRFU1xuICAvLyA9PT09PT09PT09XG5cbiAgLy8gY2xhaW1fdmFsdWVzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiB0cnVlXG4gIHByaXZhdGUgX2NsYWltVmFsdWVzPzogc3RyaW5nW107IFxuICBwdWJsaWMgZ2V0IGNsYWltVmFsdWVzKCkge1xuICAgIHJldHVybiBjZGt0bi5Gbi50b2xpc3QodGhpcy5nZXRMaXN0QXR0cmlidXRlKCdjbGFpbV92YWx1ZXMnKSk7XG4gIH1cbiAgcHVibGljIHNldCBjbGFpbVZhbHVlcyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9jbGFpbVZhbHVlcyA9IHZhbHVlO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBjbGFpbVZhbHVlc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9jbGFpbVZhbHVlcztcbiAgfVxuXG4gIC8vIGlkIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfaWQ/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnaWQnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldElkKCkge1xuICAgIHRoaXMuX2lkID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBpZElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuXG4gIC8vIHJlc291cmNlX3NlcnZpY2VfcHJpbmNpcGFsX29iamVjdF9pZCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF9yZXNvdXJjZVNlcnZpY2VQcmluY2lwYWxPYmplY3RJZD86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VTZXJ2aWNlUHJpbmNpcGFsT2JqZWN0SWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdyZXNvdXJjZV9zZXJ2aWNlX3ByaW5jaXBhbF9vYmplY3RfaWQnKTtcbiAgfVxuICBwdWJsaWMgc2V0IHJlc291cmNlU2VydmljZVByaW5jaXBhbE9iamVjdElkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9yZXNvdXJjZVNlcnZpY2VQcmluY2lwYWxPYmplY3RJZCA9IHZhbHVlO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCByZXNvdXJjZVNlcnZpY2VQcmluY2lwYWxPYmplY3RJZElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVNlcnZpY2VQcmluY2lwYWxPYmplY3RJZDtcbiAgfVxuXG4gIC8vIHNlcnZpY2VfcHJpbmNpcGFsX29iamVjdF9pZCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF9zZXJ2aWNlUHJpbmNpcGFsT2JqZWN0SWQ/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IHNlcnZpY2VQcmluY2lwYWxPYmplY3RJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ3NlcnZpY2VfcHJpbmNpcGFsX29iamVjdF9pZCcpO1xuICB9XG4gIHB1YmxpYyBzZXQgc2VydmljZVByaW5jaXBhbE9iamVjdElkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXJ2aWNlUHJpbmNpcGFsT2JqZWN0SWQgPSB2YWx1ZTtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgc2VydmljZVByaW5jaXBhbE9iamVjdElkSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2VQcmluY2lwYWxPYmplY3RJZDtcbiAgfVxuXG4gIC8vIHVzZXJfb2JqZWN0X2lkIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3VzZXJPYmplY3RJZD86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgdXNlck9iamVjdElkKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgndXNlcl9vYmplY3RfaWQnKTtcbiAgfVxuICBwdWJsaWMgc2V0IHVzZXJPYmplY3RJZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdXNlck9iamVjdElkID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0VXNlck9iamVjdElkKCkge1xuICAgIHRoaXMuX3VzZXJPYmplY3RJZCA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgdXNlck9iamVjdElkSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3VzZXJPYmplY3RJZDtcbiAgfVxuXG4gIC8vIHRpbWVvdXRzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3RpbWVvdXRzID0gbmV3IFNlcnZpY2VQcmluY2lwYWxEZWxlZ2F0ZWRQZXJtaXNzaW9uR3JhbnRUaW1lb3V0c091dHB1dFJlZmVyZW5jZSh0aGlzLCBcInRpbWVvdXRzXCIpO1xuICBwdWJsaWMgZ2V0IHRpbWVvdXRzKCkge1xuICAgIHJldHVybiB0aGlzLl90aW1lb3V0cztcbiAgfVxuICBwdWJsaWMgcHV0VGltZW91dHModmFsdWU6IFNlcnZpY2VQcmluY2lwYWxEZWxlZ2F0ZWRQZXJtaXNzaW9uR3JhbnRUaW1lb3V0cykge1xuICAgIHRoaXMuX3RpbWVvdXRzLmludGVybmFsVmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRUaW1lb3V0cygpIHtcbiAgICB0aGlzLl90aW1lb3V0cy5pbnRlcm5hbFZhbHVlID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCB0aW1lb3V0c0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl90aW1lb3V0cy5pbnRlcm5hbFZhbHVlO1xuICB9XG5cbiAgLy8gPT09PT09PT09XG4gIC8vIFNZTlRIRVNJU1xuICAvLyA9PT09PT09PT1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiB7XG4gICAgICBjbGFpbV92YWx1ZXM6IGNka3RuLmxpc3RNYXBwZXIoY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0sIGZhbHNlKSh0aGlzLl9jbGFpbVZhbHVlcyksXG4gICAgICBpZDogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5faWQpLFxuICAgICAgcmVzb3VyY2Vfc2VydmljZV9wcmluY2lwYWxfb2JqZWN0X2lkOiBjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9yZXNvdXJjZVNlcnZpY2VQcmluY2lwYWxPYmplY3RJZCksXG4gICAgICBzZXJ2aWNlX3ByaW5jaXBhbF9vYmplY3RfaWQ6IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX3NlcnZpY2VQcmluY2lwYWxPYmplY3RJZCksXG4gICAgICB1c2VyX29iamVjdF9pZDogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fdXNlck9iamVjdElkKSxcbiAgICAgIHRpbWVvdXRzOiBzZXJ2aWNlUHJpbmNpcGFsRGVsZWdhdGVkUGVybWlzc2lvbkdyYW50VGltZW91dHNUb1RlcnJhZm9ybSh0aGlzLl90aW1lb3V0cy5pbnRlcm5hbFZhbHVlKSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCBhdHRycyA9IHtcbiAgICAgIGNsYWltX3ZhbHVlczoge1xuICAgICAgICB2YWx1ZTogY2RrdG4ubGlzdE1hcHBlckhjbChjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybSwgZmFsc2UpKHRoaXMuX2NsYWltVmFsdWVzKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2V0XCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nTGlzdFwiLFxuICAgICAgfSxcbiAgICAgIGlkOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl9pZCksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIHJlc291cmNlX3NlcnZpY2VfcHJpbmNpcGFsX29iamVjdF9pZDoge1xuICAgICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5fcmVzb3VyY2VTZXJ2aWNlUHJpbmNpcGFsT2JqZWN0SWQpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICBzZXJ2aWNlX3ByaW5jaXBhbF9vYmplY3RfaWQ6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX3NlcnZpY2VQcmluY2lwYWxPYmplY3RJZCksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIHVzZXJfb2JqZWN0X2lkOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl91c2VyT2JqZWN0SWQpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICB0aW1lb3V0czoge1xuICAgICAgICB2YWx1ZTogc2VydmljZVByaW5jaXBhbERlbGVnYXRlZFBlcm1pc3Npb25HcmFudFRpbWVvdXRzVG9IY2xUZXJyYWZvcm0odGhpcy5fdGltZW91dHMuaW50ZXJuYWxWYWx1ZSksXG4gICAgICAgIGlzQmxvY2s6IHRydWUsXG4gICAgICAgIHR5cGU6IFwic3RydWN0XCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwiU2VydmljZVByaW5jaXBhbERlbGVnYXRlZFBlcm1pc3Npb25HcmFudFRpbWVvdXRzXCIsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvLyByZW1vdmUgdW5kZWZpbmVkIGF0dHJpYnV0ZXNcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGF0dHJzKS5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCApKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Copyright IBM Corp. 2021, 2026
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import { Construct } from 'constructs';
6
+ import * as cdktn from 'cdktn';
7
+ export interface ServicePrincipalPasswordConfig extends cdktn.TerraformMetaArguments {
8
+ /**
9
+ * A display name for the password
10
+ *
11
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_password#display_name ServicePrincipalPassword#display_name}
12
+ */
13
+ readonly displayName?: string;
14
+ /**
15
+ * The end date until which the password is valid, formatted as an RFC3339 date string (e.g. `2018-01-01T01:02:03Z`)
16
+ *
17
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_password#end_date ServicePrincipalPassword#end_date}
18
+ */
19
+ readonly endDate?: string;
20
+ /**
21
+ * A relative duration for which the password is valid until, for example `240h` (10 days) or `2400h30m`. Changing this field forces a new resource to be created
22
+ *
23
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_password#end_date_relative ServicePrincipalPassword#end_date_relative}
24
+ */
25
+ readonly endDateRelative?: string;
26
+ /**
27
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_password#id ServicePrincipalPassword#id}
28
+ *
29
+ * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
30
+ * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
31
+ */
32
+ readonly id?: string;
33
+ /**
34
+ * Arbitrary map of values that, when changed, will trigger rotation of the password
35
+ *
36
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_password#rotate_when_changed ServicePrincipalPassword#rotate_when_changed}
37
+ */
38
+ readonly rotateWhenChanged?: {
39
+ [key: string]: string;
40
+ };
41
+ /**
42
+ * The ID of the service principal for which this password should be created
43
+ *
44
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_password#service_principal_id ServicePrincipalPassword#service_principal_id}
45
+ */
46
+ readonly servicePrincipalId: string;
47
+ /**
48
+ * The start date from which the password is valid, formatted as an RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). If this isn't specified, the current date is used
49
+ *
50
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_password#start_date ServicePrincipalPassword#start_date}
51
+ */
52
+ readonly startDate?: string;
53
+ /**
54
+ * timeouts block
55
+ *
56
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_password#timeouts ServicePrincipalPassword#timeouts}
57
+ */
58
+ readonly timeouts?: ServicePrincipalPasswordTimeouts;
59
+ }
60
+ export interface ServicePrincipalPasswordTimeouts {
61
+ /**
62
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_password#create ServicePrincipalPassword#create}
63
+ */
64
+ readonly create?: string;
65
+ /**
66
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_password#delete ServicePrincipalPassword#delete}
67
+ */
68
+ readonly delete?: string;
69
+ /**
70
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_password#read ServicePrincipalPassword#read}
71
+ */
72
+ readonly read?: string;
73
+ }
74
+ export declare function servicePrincipalPasswordTimeoutsToTerraform(struct?: ServicePrincipalPasswordTimeouts | cdktn.IResolvable): any;
75
+ export declare function servicePrincipalPasswordTimeoutsToHclTerraform(struct?: ServicePrincipalPasswordTimeouts | cdktn.IResolvable): any;
76
+ export declare class ServicePrincipalPasswordTimeoutsOutputReference extends cdktn.ComplexObject {
77
+ private isEmptyObject;
78
+ private resolvableValue?;
79
+ /**
80
+ * @param terraformResource The parent resource
81
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
82
+ */
83
+ constructor(terraformResource: cdktn.IInterpolatingParent, terraformAttribute: string);
84
+ get internalValue(): ServicePrincipalPasswordTimeouts | cdktn.IResolvable | undefined;
85
+ set internalValue(value: ServicePrincipalPasswordTimeouts | cdktn.IResolvable | undefined);
86
+ private _create?;
87
+ get create(): string;
88
+ set create(value: string);
89
+ resetCreate(): void;
90
+ get createInput(): string | undefined;
91
+ private _delete?;
92
+ get delete(): string;
93
+ set delete(value: string);
94
+ resetDelete(): void;
95
+ get deleteInput(): string | undefined;
96
+ private _read?;
97
+ get read(): string;
98
+ set read(value: string);
99
+ resetRead(): void;
100
+ get readInput(): string | undefined;
101
+ }
102
+ /**
103
+ * Represents a {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_password azuread_service_principal_password}
104
+ */
105
+ export declare class ServicePrincipalPassword extends cdktn.TerraformResource {
106
+ static readonly tfResourceType = "azuread_service_principal_password";
107
+ /**
108
+ * Generates CDKTN code for importing a ServicePrincipalPassword resource upon running "cdktn plan <stack-name>"
109
+ * @param scope The scope in which to define this construct
110
+ * @param importToId The construct id used in the generated config for the ServicePrincipalPassword to import
111
+ * @param importFromId The id of the existing ServicePrincipalPassword that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_password#import import section} in the documentation of this resource for the id to use
112
+ * @param provider? Optional instance of the provider where the ServicePrincipalPassword to import is found
113
+ */
114
+ static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktn.TerraformProvider): cdktn.ImportableResource;
115
+ /**
116
+ * Create a new {@link https://registry.terraform.io/providers/hashicorp/azuread/3.7.0/docs/resources/service_principal_password azuread_service_principal_password} Resource
117
+ *
118
+ * @param scope The scope in which to define this construct
119
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
120
+ * @param options ServicePrincipalPasswordConfig
121
+ */
122
+ constructor(scope: Construct, id: string, config: ServicePrincipalPasswordConfig);
123
+ private _displayName?;
124
+ get displayName(): string;
125
+ set displayName(value: string);
126
+ resetDisplayName(): void;
127
+ get displayNameInput(): string | undefined;
128
+ private _endDate?;
129
+ get endDate(): string;
130
+ set endDate(value: string);
131
+ resetEndDate(): void;
132
+ get endDateInput(): string | undefined;
133
+ private _endDateRelative?;
134
+ get endDateRelative(): string;
135
+ set endDateRelative(value: string);
136
+ resetEndDateRelative(): void;
137
+ get endDateRelativeInput(): string | undefined;
138
+ private _id?;
139
+ get id(): string;
140
+ set id(value: string);
141
+ resetId(): void;
142
+ get idInput(): string | undefined;
143
+ get keyId(): string;
144
+ private _rotateWhenChanged?;
145
+ get rotateWhenChanged(): {
146
+ [key: string]: string;
147
+ };
148
+ set rotateWhenChanged(value: {
149
+ [key: string]: string;
150
+ });
151
+ resetRotateWhenChanged(): void;
152
+ get rotateWhenChangedInput(): {
153
+ [key: string]: string;
154
+ } | undefined;
155
+ private _servicePrincipalId?;
156
+ get servicePrincipalId(): string;
157
+ set servicePrincipalId(value: string);
158
+ get servicePrincipalIdInput(): string | undefined;
159
+ private _startDate?;
160
+ get startDate(): string;
161
+ set startDate(value: string);
162
+ resetStartDate(): void;
163
+ get startDateInput(): string | undefined;
164
+ get value(): string;
165
+ private _timeouts;
166
+ get timeouts(): ServicePrincipalPasswordTimeoutsOutputReference;
167
+ putTimeouts(value: ServicePrincipalPasswordTimeouts): void;
168
+ resetTimeouts(): void;
169
+ get timeoutsInput(): cdktn.IResolvable | ServicePrincipalPasswordTimeouts | undefined;
170
+ protected synthesizeAttributes(): {
171
+ [name: string]: any;
172
+ };
173
+ protected synthesizeHclAttributes(): {
174
+ [name: string]: any;
175
+ };
176
+ }