@dbx-tools/shared-genie 0.9.40 → 0.9.43
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/index.ts +2 -2
- package/lib/index.d.ts +2 -2
- package/lib/index.js +3 -3
- package/lib/src/dashboards.d.ts +0 -18
- package/lib/src/dashboards.js +1 -601
- package/lib/src/genie-model.d.ts +52 -42
- package/lib/src/genie-model.js +56 -9
- package/package.json +2 -2
- package/src/dashboards.ts +0 -600
- package/src/genie-model.ts +36 -22
package/lib/src/dashboards.js
CHANGED
|
@@ -4,92 +4,35 @@
|
|
|
4
4
|
// Generated by ts-to-zod
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
export const authorizationDetailsGrantRuleSchema = z.object({
|
|
7
|
-
/**
|
|
8
|
-
* @description Permission sets for dashboard are defined in iam-common/rbac-common/permission-sets/definitions/TreeStoreBasePermissionSets Ex: `permissionSets/dashboard.runner`
|
|
9
|
-
*/
|
|
10
7
|
permission_set: z.string().optional().describe("Permission sets for dashboard are defined in iam-common/rbac-common/permission-sets/definitions/TreeStoreBasePermissionSets Ex: `permissionSets/dashboard.runner`")
|
|
11
8
|
});
|
|
12
9
|
export const cronScheduleSchema = z.object({
|
|
13
|
-
/**
|
|
14
|
-
* @description A cron expression using quartz syntax. EX: `0 0 8 * * ?` represents everyday at 8am. See [Cron Trigger] for details. [Cron Trigger]: http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html
|
|
15
|
-
*/
|
|
16
10
|
quartz_cron_expression: z.string().describe("A cron expression using quartz syntax. EX: `0 0 8 * * ?` represents everyday at 8am. See [Cron Trigger] for details. [Cron Trigger]: http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html"),
|
|
17
|
-
/**
|
|
18
|
-
* @description A Java timezone id. The schedule will be resolved with respect to this timezone. See [Java TimeZone] for details. [Java TimeZone]: https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html
|
|
19
|
-
*/
|
|
20
11
|
timezone_id: z.string().describe("A Java timezone id. The schedule will be resolved with respect to this timezone. See [Java TimeZone] for details. [Java TimeZone]: https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html")
|
|
21
12
|
});
|
|
22
13
|
export const lifecycleStateSchema = z.union([z.literal("ACTIVE"), z.literal("TRASHED")]);
|
|
23
14
|
export const dashboardViewSchema = z.literal("DASHBOARD_VIEW_BASIC");
|
|
24
15
|
export const deleteScheduleRequestSchema = z.object({
|
|
25
|
-
/**
|
|
26
|
-
* @description UUID identifying the dashboard to which the schedule belongs.
|
|
27
|
-
*/
|
|
28
16
|
dashboard_id: z.string().describe("UUID identifying the dashboard to which the schedule belongs."),
|
|
29
|
-
/**
|
|
30
|
-
* @description The etag for the schedule. Optionally, it can be provided to verify that the schedule has not been modified from its last retrieval.
|
|
31
|
-
*/
|
|
32
17
|
etag: z.string().optional().describe("The etag for the schedule. Optionally, it can be provided to verify that the schedule has not been modified from its last retrieval."),
|
|
33
|
-
/**
|
|
34
|
-
* @description UUID identifying the schedule.
|
|
35
|
-
*/
|
|
36
18
|
schedule_id: z.string().describe("UUID identifying the schedule.")
|
|
37
19
|
});
|
|
38
20
|
export const deleteSubscriptionRequestSchema = z.object({
|
|
39
|
-
/**
|
|
40
|
-
* @description UUID identifying the dashboard which the subscription belongs.
|
|
41
|
-
*/
|
|
42
21
|
dashboard_id: z.string().describe("UUID identifying the dashboard which the subscription belongs."),
|
|
43
|
-
/**
|
|
44
|
-
* @description The etag for the subscription. Can be optionally provided to ensure that the subscription has not been modified since the last read.
|
|
45
|
-
*/
|
|
46
22
|
etag: z.string().optional().describe("The etag for the subscription. Can be optionally provided to ensure that the subscription has not been modified since the last read."),
|
|
47
|
-
/**
|
|
48
|
-
* @description UUID identifying the schedule which the subscription belongs.
|
|
49
|
-
*/
|
|
50
23
|
schedule_id: z.string().describe("UUID identifying the schedule which the subscription belongs."),
|
|
51
|
-
/**
|
|
52
|
-
* @description UUID identifying the subscription.
|
|
53
|
-
*/
|
|
54
24
|
subscription_id: z.string().describe("UUID identifying the subscription.")
|
|
55
25
|
});
|
|
56
|
-
/**
|
|
57
|
-
* @description Follow-up questions suggested by Genie
|
|
58
|
-
*/
|
|
59
26
|
export const genieSuggestedQuestionsAttachmentSchema = z.object({
|
|
60
|
-
/**
|
|
61
|
-
* @description The suggested follow-up questions
|
|
62
|
-
*/
|
|
63
27
|
questions: z.array(z.string()).optional().describe("The suggested follow-up questions")
|
|
64
28
|
});
|
|
65
29
|
export const genieConversationSchema = z.object({
|
|
66
|
-
/**
|
|
67
|
-
* @description Conversation ID
|
|
68
|
-
*/
|
|
69
30
|
conversation_id: z.string().describe("Conversation ID"),
|
|
70
|
-
/**
|
|
71
|
-
* @description Timestamp when the message was created
|
|
72
|
-
*/
|
|
73
31
|
created_timestamp: z.number().optional().describe("Timestamp when the message was created"),
|
|
74
|
-
/**
|
|
75
|
-
* @description Conversation ID. Legacy identifier, use conversation_id instead
|
|
76
|
-
*/
|
|
77
32
|
id: z.string().describe("Conversation ID. Legacy identifier, use conversation_id instead"),
|
|
78
|
-
/**
|
|
79
|
-
* @description Timestamp when the message was last updated
|
|
80
|
-
*/
|
|
81
33
|
last_updated_timestamp: z.number().optional().describe("Timestamp when the message was last updated"),
|
|
82
|
-
/**
|
|
83
|
-
* @description Genie space ID
|
|
84
|
-
*/
|
|
85
34
|
space_id: z.string().describe("Genie space ID"),
|
|
86
|
-
/**
|
|
87
|
-
* @description Conversation title
|
|
88
|
-
*/
|
|
89
35
|
title: z.string().describe("Conversation title"),
|
|
90
|
-
/**
|
|
91
|
-
* @description ID of the user who created the conversation
|
|
92
|
-
*/
|
|
93
36
|
user_id: z.number().describe("ID of the user who created the conversation")
|
|
94
37
|
});
|
|
95
38
|
export const genieConversationSummarySchema = z.object({
|
|
@@ -98,259 +41,94 @@ export const genieConversationSummarySchema = z.object({
|
|
|
98
41
|
title: z.string()
|
|
99
42
|
});
|
|
100
43
|
export const genieCreateConversationMessageRequestSchema = z.object({
|
|
101
|
-
/**
|
|
102
|
-
* @description User message content.
|
|
103
|
-
*/
|
|
104
44
|
content: z.string().describe("User message content."),
|
|
105
|
-
/**
|
|
106
|
-
* @description The ID associated with the conversation.
|
|
107
|
-
*/
|
|
108
45
|
conversation_id: z.string().describe("The ID associated with the conversation."),
|
|
109
|
-
/**
|
|
110
|
-
* @description The ID associated with the Genie space where the conversation is started.
|
|
111
|
-
*/
|
|
112
46
|
space_id: z.string().describe("The ID associated with the Genie space where the conversation is started.")
|
|
113
47
|
});
|
|
114
48
|
export const genieDeleteConversationMessageRequestSchema = z.object({
|
|
115
|
-
/**
|
|
116
|
-
* @description The ID associated with the conversation.
|
|
117
|
-
*/
|
|
118
49
|
conversation_id: z.string().describe("The ID associated with the conversation."),
|
|
119
|
-
/**
|
|
120
|
-
* @description The ID associated with the message to delete.
|
|
121
|
-
*/
|
|
122
50
|
message_id: z.string().describe("The ID associated with the message to delete."),
|
|
123
|
-
/**
|
|
124
|
-
* @description The ID associated with the Genie space where the message is located.
|
|
125
|
-
*/
|
|
126
51
|
space_id: z.string().describe("The ID associated with the Genie space where the message is located.")
|
|
127
52
|
});
|
|
128
53
|
export const genieDeleteConversationRequestSchema = z.object({
|
|
129
|
-
/**
|
|
130
|
-
* @description The ID of the conversation to delete.
|
|
131
|
-
*/
|
|
132
54
|
conversation_id: z.string().describe("The ID of the conversation to delete."),
|
|
133
|
-
/**
|
|
134
|
-
* @description The ID associated with the Genie space where the conversation is located.
|
|
135
|
-
*/
|
|
136
55
|
space_id: z.string().describe("The ID associated with the Genie space where the conversation is located.")
|
|
137
56
|
});
|
|
138
57
|
export const genieExecuteMessageAttachmentQueryRequestSchema = z.object({
|
|
139
|
-
/**
|
|
140
|
-
* @description Attachment ID
|
|
141
|
-
*/
|
|
142
58
|
attachment_id: z.string().describe("Attachment ID"),
|
|
143
|
-
/**
|
|
144
|
-
* @description Conversation ID
|
|
145
|
-
*/
|
|
146
59
|
conversation_id: z.string().describe("Conversation ID"),
|
|
147
|
-
/**
|
|
148
|
-
* @description Message ID
|
|
149
|
-
*/
|
|
150
60
|
message_id: z.string().describe("Message ID"),
|
|
151
|
-
/**
|
|
152
|
-
* @description Genie space ID
|
|
153
|
-
*/
|
|
154
61
|
space_id: z.string().describe("Genie space ID")
|
|
155
62
|
});
|
|
156
63
|
export const genieExecuteMessageQueryRequestSchema = z.object({
|
|
157
|
-
/**
|
|
158
|
-
* @description Conversation ID
|
|
159
|
-
*/
|
|
160
64
|
conversation_id: z.string().describe("Conversation ID"),
|
|
161
|
-
/**
|
|
162
|
-
* @description Message ID
|
|
163
|
-
*/
|
|
164
65
|
message_id: z.string().describe("Message ID"),
|
|
165
|
-
/**
|
|
166
|
-
* @description Genie space ID
|
|
167
|
-
*/
|
|
168
66
|
space_id: z.string().describe("Genie space ID")
|
|
169
67
|
});
|
|
170
|
-
/**
|
|
171
|
-
* @description Feedback rating for Genie messages
|
|
172
|
-
*/
|
|
173
68
|
export const genieFeedbackRatingSchema = z.union([z.literal("NEGATIVE"), z.literal("NONE"), z.literal("POSITIVE")]).describe("Feedback rating for Genie messages");
|
|
174
69
|
export const genieGetConversationMessageRequestSchema = z.object({
|
|
175
|
-
/**
|
|
176
|
-
* @description The ID associated with the target conversation.
|
|
177
|
-
*/
|
|
178
70
|
conversation_id: z.string().describe("The ID associated with the target conversation."),
|
|
179
|
-
/**
|
|
180
|
-
* @description The ID associated with the target message from the identified conversation.
|
|
181
|
-
*/
|
|
182
71
|
message_id: z.string().describe("The ID associated with the target message from the identified conversation."),
|
|
183
|
-
/**
|
|
184
|
-
* @description The ID associated with the Genie space where the target conversation is located.
|
|
185
|
-
*/
|
|
186
72
|
space_id: z.string().describe("The ID associated with the Genie space where the target conversation is located.")
|
|
187
73
|
});
|
|
188
74
|
export const genieGetMessageAttachmentQueryResultRequestSchema = z.object({
|
|
189
|
-
/**
|
|
190
|
-
* @description Attachment ID
|
|
191
|
-
*/
|
|
192
75
|
attachment_id: z.string().describe("Attachment ID"),
|
|
193
|
-
/**
|
|
194
|
-
* @description Conversation ID
|
|
195
|
-
*/
|
|
196
76
|
conversation_id: z.string().describe("Conversation ID"),
|
|
197
|
-
/**
|
|
198
|
-
* @description Message ID
|
|
199
|
-
*/
|
|
200
77
|
message_id: z.string().describe("Message ID"),
|
|
201
|
-
/**
|
|
202
|
-
* @description Genie space ID
|
|
203
|
-
*/
|
|
204
78
|
space_id: z.string().describe("Genie space ID")
|
|
205
79
|
});
|
|
206
80
|
export const genieGetMessageQueryResultRequestSchema = z.object({
|
|
207
|
-
/**
|
|
208
|
-
* @description Conversation ID
|
|
209
|
-
*/
|
|
210
81
|
conversation_id: z.string().describe("Conversation ID"),
|
|
211
|
-
/**
|
|
212
|
-
* @description Message ID
|
|
213
|
-
*/
|
|
214
82
|
message_id: z.string().describe("Message ID"),
|
|
215
|
-
/**
|
|
216
|
-
* @description Genie space ID
|
|
217
|
-
*/
|
|
218
83
|
space_id: z.string().describe("Genie space ID")
|
|
219
84
|
});
|
|
220
85
|
export const genieGetMessageQueryResultResponseSchema = z.object({
|
|
221
|
-
/**
|
|
222
|
-
* @description SQL Statement Execution response. See [Get status, manifest, and result first chunk](:method:statementexecution/getstatement) for more details.
|
|
223
|
-
*/
|
|
224
86
|
statement_response: z.unknown().optional().describe("SQL Statement Execution response. See [Get status, manifest, and result first chunk](:method:statementexecution/getstatement) for more details.")
|
|
225
87
|
});
|
|
226
88
|
export const genieGetQueryResultByAttachmentRequestSchema = z.object({
|
|
227
|
-
/**
|
|
228
|
-
* @description Attachment ID
|
|
229
|
-
*/
|
|
230
89
|
attachment_id: z.string().describe("Attachment ID"),
|
|
231
|
-
/**
|
|
232
|
-
* @description Conversation ID
|
|
233
|
-
*/
|
|
234
90
|
conversation_id: z.string().describe("Conversation ID"),
|
|
235
|
-
/**
|
|
236
|
-
* @description Message ID
|
|
237
|
-
*/
|
|
238
91
|
message_id: z.string().describe("Message ID"),
|
|
239
|
-
/**
|
|
240
|
-
* @description Genie space ID
|
|
241
|
-
*/
|
|
242
92
|
space_id: z.string().describe("Genie space ID")
|
|
243
93
|
});
|
|
244
94
|
export const genieGetSpaceRequestSchema = z.object({
|
|
245
|
-
/**
|
|
246
|
-
* @description The ID associated with the Genie space
|
|
247
|
-
*/
|
|
248
95
|
space_id: z.string().describe("The ID associated with the Genie space")
|
|
249
96
|
});
|
|
250
97
|
export const genieListConversationMessagesRequestSchema = z.object({
|
|
251
|
-
/**
|
|
252
|
-
* @description The ID of the conversation to list messages from
|
|
253
|
-
*/
|
|
254
98
|
conversation_id: z.string().describe("The ID of the conversation to list messages from"),
|
|
255
|
-
/**
|
|
256
|
-
* @description Maximum number of messages to return per page
|
|
257
|
-
*/
|
|
258
99
|
page_size: z.number().optional().describe("Maximum number of messages to return per page"),
|
|
259
|
-
/**
|
|
260
|
-
* @description Token to get the next page of results
|
|
261
|
-
*/
|
|
262
100
|
page_token: z.string().optional().describe("Token to get the next page of results"),
|
|
263
|
-
/**
|
|
264
|
-
* @description The ID associated with the Genie space where the conversation is located
|
|
265
|
-
*/
|
|
266
101
|
space_id: z.string().describe("The ID associated with the Genie space where the conversation is located")
|
|
267
102
|
});
|
|
268
103
|
export const genieListConversationsRequestSchema = z.object({
|
|
269
|
-
/**
|
|
270
|
-
* @description Include all conversations in the space across all users. Requires at least CAN MANAGE permission on the space.
|
|
271
|
-
*/
|
|
272
104
|
include_all: z.boolean().optional().describe("Include all conversations in the space across all users. Requires at least CAN MANAGE permission on the space."),
|
|
273
|
-
/**
|
|
274
|
-
* @description Maximum number of conversations to return per page
|
|
275
|
-
*/
|
|
276
105
|
page_size: z.number().optional().describe("Maximum number of conversations to return per page"),
|
|
277
|
-
/**
|
|
278
|
-
* @description Token to get the next page of results
|
|
279
|
-
*/
|
|
280
106
|
page_token: z.string().optional().describe("Token to get the next page of results"),
|
|
281
|
-
/**
|
|
282
|
-
* @description The ID of the Genie space to retrieve conversations from.
|
|
283
|
-
*/
|
|
284
107
|
space_id: z.string().describe("The ID of the Genie space to retrieve conversations from.")
|
|
285
108
|
});
|
|
286
109
|
export const genieListConversationsResponseSchema = z.object({
|
|
287
|
-
/**
|
|
288
|
-
* @description List of conversations in the Genie space
|
|
289
|
-
*/
|
|
290
110
|
conversations: z.array(genieConversationSummarySchema).optional().describe("List of conversations in the Genie space"),
|
|
291
|
-
/**
|
|
292
|
-
* @description Token to get the next page of results
|
|
293
|
-
*/
|
|
294
111
|
next_page_token: z.string().optional().describe("Token to get the next page of results")
|
|
295
112
|
});
|
|
296
113
|
export const genieListSpacesRequestSchema = z.object({
|
|
297
|
-
/**
|
|
298
|
-
* @description Maximum number of spaces to return per page
|
|
299
|
-
*/
|
|
300
114
|
page_size: z.number().optional().describe("Maximum number of spaces to return per page"),
|
|
301
|
-
/**
|
|
302
|
-
* @description Pagination token for getting the next page of results
|
|
303
|
-
*/
|
|
304
115
|
page_token: z.string().optional().describe("Pagination token for getting the next page of results")
|
|
305
116
|
});
|
|
306
117
|
export const genieSpaceSchema = z.object({
|
|
307
|
-
/**
|
|
308
|
-
* @description Description of the Genie Space
|
|
309
|
-
*/
|
|
310
118
|
description: z.string().optional().describe("Description of the Genie Space"),
|
|
311
|
-
/**
|
|
312
|
-
* @description Genie space ID
|
|
313
|
-
*/
|
|
314
119
|
space_id: z.string().describe("Genie space ID"),
|
|
315
|
-
/**
|
|
316
|
-
* @description Title of the Genie Space
|
|
317
|
-
*/
|
|
318
120
|
title: z.string().describe("Title of the Genie Space"),
|
|
319
|
-
/**
|
|
320
|
-
* @description Warehouse associated with the Genie Space
|
|
321
|
-
*/
|
|
322
121
|
warehouse_id: z.string().optional().describe("Warehouse associated with the Genie Space")
|
|
323
122
|
});
|
|
324
|
-
/**
|
|
325
|
-
* @description Feedback containing rating and optional comment
|
|
326
|
-
*/
|
|
327
123
|
export const genieFeedbackSchema = z.object({
|
|
328
|
-
/**
|
|
329
|
-
* @description The feedback rating
|
|
330
|
-
*/
|
|
331
124
|
rating: genieFeedbackRatingSchema.optional().describe("The feedback rating")
|
|
332
125
|
});
|
|
333
126
|
export const resultSchema = z.object({
|
|
334
|
-
/**
|
|
335
|
-
* @description If result is truncated
|
|
336
|
-
*/
|
|
337
127
|
is_truncated: z.boolean().optional().describe("If result is truncated"),
|
|
338
|
-
/**
|
|
339
|
-
* @description Row count of the result
|
|
340
|
-
*/
|
|
341
128
|
row_count: z.number().optional().describe("Row count of the result"),
|
|
342
|
-
/**
|
|
343
|
-
* @description Statement Execution API statement id. Use [Get status, manifest, and result first chunk](:method:statementexecution/getstatement) to get the full result data.
|
|
344
|
-
*/
|
|
345
129
|
statement_id: z.string().optional().describe("Statement Execution API statement id. Use [Get status, manifest, and result first chunk](:method:statementexecution/getstatement) to get the full result data."),
|
|
346
|
-
/**
|
|
347
|
-
* @description JWT corresponding to the statement contained in this result
|
|
348
|
-
*/
|
|
349
130
|
statement_id_signature: z.string().optional().describe("JWT corresponding to the statement contained in this result")
|
|
350
131
|
});
|
|
351
|
-
/**
|
|
352
|
-
* @description MessageStatus. The possible values are: * `FETCHING_METADATA`: Fetching metadata from the data sources. * `FILTERING_CONTEXT`: Running smart context step to determine relevant context. * `ASKING_AI`: Waiting for the LLM to respond to the user's question. * `PENDING_WAREHOUSE`: Waiting for warehouse before the SQL query can start executing. * `EXECUTING_QUERY`: Executing a generated SQL query. Get the SQL query result by calling [getMessageAttachmentQueryResult](:method:genie/getMessageAttachmentQueryResult) API. * `FAILED`: The response generation or query execution failed. See `error` field. * `COMPLETED`: Message processing is completed. Results are in the `attachments` field. Get the SQL query result by calling [getMessageAttachmentQueryResult](:method:genie/getMessageAttachmentQueryResult) API. * `SUBMITTED`: Message has been submitted. * `QUERY_RESULT_EXPIRED`: SQL result is not available anymore. The user needs to rerun the query. Rerun the SQL query result by calling [executeMessageAttachmentQuery](:method:genie/executeMessageAttachmentQuery) API. * `CANCELLED`: Message has been cancelled.
|
|
353
|
-
*/
|
|
354
132
|
export const messageStatusSchema = z.union([z.literal("ASKING_AI"), z.literal("CANCELLED"), z.literal("COMPLETED"), z.literal("EXECUTING_QUERY"), z.literal("FAILED"), z.literal("FETCHING_METADATA"), z.literal("FILTERING_CONTEXT"), z.literal("PENDING_WAREHOUSE"), z.literal("QUERY_RESULT_EXPIRED"), z.literal("SUBMITTED")]).describe("MessageStatus. The possible values are: * `FETCHING_METADATA`: Fetching metadata from the data sources. * `FILTERING_CONTEXT`: Running smart context step to determine relevant context. * `ASKING_AI`: Waiting for the LLM to respond to the user's question. * `PENDING_WAREHOUSE`: Waiting for warehouse before the SQL query can start executing. * `EXECUTING_QUERY`: Executing a generated SQL query. Get the SQL query result by calling [getMessageAttachmentQueryResult](:method:genie/getMessageAttachmentQueryResult) API. * `FAILED`: The response generation or query execution failed. See `error` field. * `COMPLETED`: Message processing is completed. Results are in the `attachments` field. Get the SQL query result by calling [getMessageAttachmentQueryResult](:method:genie/getMessageAttachmentQueryResult) API. * `SUBMITTED`: Message has been submitted. * `QUERY_RESULT_EXPIRED`: SQL result is not available anymore. The user needs to rerun the query. Rerun the SQL query result by calling [executeMessageAttachmentQuery](:method:genie/executeMessageAttachmentQuery) API. * `CANCELLED`: Message has been cancelled.");
|
|
355
133
|
export const queryAttachmentParameterSchema = z.object({
|
|
356
134
|
keyword: z.string().optional(),
|
|
@@ -358,459 +136,168 @@ export const queryAttachmentParameterSchema = z.object({
|
|
|
358
136
|
value: z.string().optional()
|
|
359
137
|
});
|
|
360
138
|
export const genieResultMetadataSchema = z.object({
|
|
361
|
-
/**
|
|
362
|
-
* @description Indicates whether the result set is truncated.
|
|
363
|
-
*/
|
|
364
139
|
is_truncated: z.boolean().optional().describe("Indicates whether the result set is truncated."),
|
|
365
|
-
/**
|
|
366
|
-
* @description The number of rows in the result set.
|
|
367
|
-
*/
|
|
368
140
|
row_count: z.number().optional().describe("The number of rows in the result set.")
|
|
369
141
|
});
|
|
370
142
|
export const genieSendMessageFeedbackRequestSchema = z.object({
|
|
371
|
-
/**
|
|
372
|
-
* @description The ID associated with the conversation.
|
|
373
|
-
*/
|
|
374
143
|
conversation_id: z.string().describe("The ID associated with the conversation."),
|
|
375
|
-
/**
|
|
376
|
-
* @description The ID associated with the message to provide feedback for.
|
|
377
|
-
*/
|
|
378
144
|
message_id: z.string().describe("The ID associated with the message to provide feedback for."),
|
|
379
|
-
/**
|
|
380
|
-
* @description The rating (POSITIVE, NEGATIVE, or NONE).
|
|
381
|
-
*/
|
|
382
145
|
rating: genieFeedbackRatingSchema.describe("The rating (POSITIVE, NEGATIVE, or NONE)."),
|
|
383
|
-
/**
|
|
384
|
-
* @description The ID associated with the Genie space where the message is located.
|
|
385
|
-
*/
|
|
386
146
|
space_id: z.string().describe("The ID associated with the Genie space where the message is located.")
|
|
387
147
|
});
|
|
388
148
|
export const genieStartConversationMessageRequestSchema = z.object({
|
|
389
|
-
/**
|
|
390
|
-
* @description The text of the message that starts the conversation.
|
|
391
|
-
*/
|
|
392
149
|
content: z.string().describe("The text of the message that starts the conversation."),
|
|
393
|
-
/**
|
|
394
|
-
* @description The ID associated with the Genie space where you want to start a conversation.
|
|
395
|
-
*/
|
|
396
150
|
space_id: z.string().describe("The ID associated with the Genie space where you want to start a conversation.")
|
|
397
151
|
});
|
|
398
152
|
export const genieTrashSpaceRequestSchema = z.object({
|
|
399
|
-
/**
|
|
400
|
-
* @description The ID associated with the Genie space to be sent to the trash.
|
|
401
|
-
*/
|
|
402
153
|
space_id: z.string().describe("The ID associated with the Genie space to be sent to the trash.")
|
|
403
154
|
});
|
|
404
155
|
export const getDashboardRequestSchema = z.object({
|
|
405
|
-
/**
|
|
406
|
-
* @description UUID identifying the dashboard.
|
|
407
|
-
*/
|
|
408
156
|
dashboard_id: z.string().describe("UUID identifying the dashboard.")
|
|
409
157
|
});
|
|
410
158
|
export const getPublishedDashboardRequestSchema = z.object({
|
|
411
|
-
/**
|
|
412
|
-
* @description UUID identifying the published dashboard.
|
|
413
|
-
*/
|
|
414
159
|
dashboard_id: z.string().describe("UUID identifying the published dashboard.")
|
|
415
160
|
});
|
|
416
161
|
export const getPublishedDashboardTokenInfoRequestSchema = z.object({
|
|
417
|
-
/**
|
|
418
|
-
* @description UUID identifying the published dashboard.
|
|
419
|
-
*/
|
|
420
162
|
dashboard_id: z.string().describe("UUID identifying the published dashboard."),
|
|
421
|
-
/**
|
|
422
|
-
* @description Provided external value to be included in the custom claim.
|
|
423
|
-
*/
|
|
424
163
|
external_value: z.string().optional().describe("Provided external value to be included in the custom claim."),
|
|
425
|
-
/**
|
|
426
|
-
* @description Provided external viewer id to be included in the custom claim.
|
|
427
|
-
*/
|
|
428
164
|
external_viewer_id: z.string().optional().describe("Provided external viewer id to be included in the custom claim.")
|
|
429
165
|
});
|
|
430
166
|
export const authorizationDetailsSchema = z.object({
|
|
431
|
-
/**
|
|
432
|
-
* @description Represents downscoped permission rules with specific access rights. This field is specific to `workspace_rule_set` constraint.
|
|
433
|
-
*/
|
|
434
167
|
grant_rules: z.array(authorizationDetailsGrantRuleSchema).optional().describe("Represents downscoped permission rules with specific access rights. This field is specific to `workspace_rule_set` constraint."),
|
|
435
|
-
/**
|
|
436
|
-
* @description The acl path of the tree store resource resource.
|
|
437
|
-
*/
|
|
438
168
|
resource_legacy_acl_path: z.string().optional().describe("The acl path of the tree store resource resource."),
|
|
439
|
-
/**
|
|
440
|
-
* @description The resource name to which the authorization rule applies. This field is specific to `workspace_rule_set` constraint. Format: `workspaces/{workspace_id}/dashboards/{dashboard_id}`
|
|
441
|
-
*/
|
|
442
169
|
resource_name: z.string().optional().describe("The resource name to which the authorization rule applies. This field is specific to `workspace_rule_set` constraint. Format: `workspaces/{workspace_id}/dashboards/{dashboard_id}`"),
|
|
443
|
-
/**
|
|
444
|
-
* @description The type of authorization downscoping policy. Ex: `workspace_rule_set` defines access rules for a specific workspace resource
|
|
445
|
-
*/
|
|
446
170
|
type: z.string().optional().describe("The type of authorization downscoping policy. Ex: `workspace_rule_set` defines access rules for a specific workspace resource")
|
|
447
171
|
});
|
|
448
172
|
export const getScheduleRequestSchema = z.object({
|
|
449
|
-
/**
|
|
450
|
-
* @description UUID identifying the dashboard to which the schedule belongs.
|
|
451
|
-
*/
|
|
452
173
|
dashboard_id: z.string().describe("UUID identifying the dashboard to which the schedule belongs."),
|
|
453
|
-
/**
|
|
454
|
-
* @description UUID identifying the schedule.
|
|
455
|
-
*/
|
|
456
174
|
schedule_id: z.string().describe("UUID identifying the schedule.")
|
|
457
175
|
});
|
|
458
176
|
export const getSubscriptionRequestSchema = z.object({
|
|
459
|
-
/**
|
|
460
|
-
* @description UUID identifying the dashboard which the subscription belongs.
|
|
461
|
-
*/
|
|
462
177
|
dashboard_id: z.string().describe("UUID identifying the dashboard which the subscription belongs."),
|
|
463
|
-
/**
|
|
464
|
-
* @description UUID identifying the schedule which the subscription belongs.
|
|
465
|
-
*/
|
|
466
178
|
schedule_id: z.string().describe("UUID identifying the schedule which the subscription belongs."),
|
|
467
|
-
/**
|
|
468
|
-
* @description UUID identifying the subscription.
|
|
469
|
-
*/
|
|
470
179
|
subscription_id: z.string().describe("UUID identifying the subscription.")
|
|
471
180
|
});
|
|
472
181
|
export const listDashboardsRequestSchema = z.object({
|
|
473
|
-
/**
|
|
474
|
-
* @description The number of dashboards to return per page.
|
|
475
|
-
*/
|
|
476
182
|
page_size: z.number().optional().describe("The number of dashboards to return per page."),
|
|
477
|
-
/**
|
|
478
|
-
* @description A page token, received from a previous `ListDashboards` call. This token can be used to retrieve the subsequent page.
|
|
479
|
-
*/
|
|
480
183
|
page_token: z.string().optional().describe("A page token, received from a previous `ListDashboards` call. This token can be used to retrieve the subsequent page."),
|
|
481
|
-
/**
|
|
482
|
-
* @description The flag to include dashboards located in the trash. If unspecified, only active dashboards will be returned.
|
|
483
|
-
*/
|
|
484
184
|
show_trashed: z.boolean().optional().describe("The flag to include dashboards located in the trash. If unspecified, only active dashboards will be returned."),
|
|
485
|
-
/**
|
|
486
|
-
* @description `DASHBOARD_VIEW_BASIC`only includes summary metadata from the dashboard.
|
|
487
|
-
*/
|
|
488
185
|
view: dashboardViewSchema.optional().describe("`DASHBOARD_VIEW_BASIC`only includes summary metadata from the dashboard.")
|
|
489
186
|
});
|
|
490
187
|
export const dashboardSchema = z.object({
|
|
491
|
-
/**
|
|
492
|
-
* @description The timestamp of when the dashboard was created.
|
|
493
|
-
*/
|
|
494
188
|
create_time: z.string().optional().describe("The timestamp of when the dashboard was created."),
|
|
495
|
-
/**
|
|
496
|
-
* @description UUID identifying the dashboard.
|
|
497
|
-
*/
|
|
498
189
|
dashboard_id: z.string().optional().describe("UUID identifying the dashboard."),
|
|
499
|
-
/**
|
|
500
|
-
* @description The display name of the dashboard.
|
|
501
|
-
*/
|
|
502
190
|
display_name: z.string().optional().describe("The display name of the dashboard."),
|
|
503
|
-
/**
|
|
504
|
-
* @description The etag for the dashboard. Can be optionally provided on updates to ensure that the dashboard has not been modified since the last read. This field is excluded in List Dashboards responses.
|
|
505
|
-
*/
|
|
506
191
|
etag: z.string().optional().describe("The etag for the dashboard. Can be optionally provided on updates to ensure that the dashboard has not been modified since the last read. This field is excluded in List Dashboards responses."),
|
|
507
|
-
/**
|
|
508
|
-
* @description The state of the dashboard resource. Used for tracking trashed status.
|
|
509
|
-
*/
|
|
510
192
|
lifecycle_state: lifecycleStateSchema.optional().describe("The state of the dashboard resource. Used for tracking trashed status."),
|
|
511
|
-
/**
|
|
512
|
-
* @description The workspace path of the folder containing the dashboard. Includes leading slash and no trailing slash. This field is excluded in List Dashboards responses.
|
|
513
|
-
*/
|
|
514
193
|
parent_path: z.string().optional().describe("The workspace path of the folder containing the dashboard. Includes leading slash and no trailing slash. This field is excluded in List Dashboards responses."),
|
|
515
|
-
/**
|
|
516
|
-
* @description The workspace path of the dashboard asset, including the file name. Exported dashboards always have the file extension `.lvdash.json`. This field is excluded in List Dashboards responses.
|
|
517
|
-
*/
|
|
518
194
|
path: z.string().optional().describe("The workspace path of the dashboard asset, including the file name. Exported dashboards always have the file extension `.lvdash.json`. This field is excluded in List Dashboards responses."),
|
|
519
|
-
/**
|
|
520
|
-
* @description The contents of the dashboard in serialized string form. This field is excluded in List Dashboards responses. Use the [get dashboard API] to retrieve an example response, which includes the `serialized_dashboard` field. This field provides the structure of the JSON string that represents the dashboard's layout and components. [get dashboard API]: https://docs.databricks.com/api/workspace/lakeview/get
|
|
521
|
-
*/
|
|
522
195
|
serialized_dashboard: z.string().optional().describe("The contents of the dashboard in serialized string form. This field is excluded in List Dashboards responses. Use the [get dashboard API] to retrieve an example response, which includes the `serialized_dashboard` field. This field provides the structure of the JSON string that represents the dashboard's layout and components. [get dashboard API]: https://docs.databricks.com/api/workspace/lakeview/get"),
|
|
523
|
-
/**
|
|
524
|
-
* @description The timestamp of when the dashboard was last updated by the user. This field is excluded in List Dashboards responses.
|
|
525
|
-
*/
|
|
526
196
|
update_time: z.string().optional().describe("The timestamp of when the dashboard was last updated by the user. This field is excluded in List Dashboards responses."),
|
|
527
|
-
/**
|
|
528
|
-
* @description The warehouse ID used to run the dashboard.
|
|
529
|
-
*/
|
|
530
197
|
warehouse_id: z.string().optional().describe("The warehouse ID used to run the dashboard.")
|
|
531
198
|
});
|
|
532
199
|
export const listSchedulesRequestSchema = z.object({
|
|
533
|
-
/**
|
|
534
|
-
* @description UUID identifying the dashboard to which the schedules belongs.
|
|
535
|
-
*/
|
|
536
200
|
dashboard_id: z.string().describe("UUID identifying the dashboard to which the schedules belongs."),
|
|
537
|
-
/**
|
|
538
|
-
* @description The number of schedules to return per page.
|
|
539
|
-
*/
|
|
540
201
|
page_size: z.number().optional().describe("The number of schedules to return per page."),
|
|
541
|
-
/**
|
|
542
|
-
* @description A page token, received from a previous `ListSchedules` call. Use this to retrieve the subsequent page.
|
|
543
|
-
*/
|
|
544
202
|
page_token: z.string().optional().describe("A page token, received from a previous `ListSchedules` call. Use this to retrieve the subsequent page.")
|
|
545
203
|
});
|
|
546
204
|
export const listSubscriptionsRequestSchema = z.object({
|
|
547
|
-
/**
|
|
548
|
-
* @description UUID identifying the dashboard which the subscriptions belongs.
|
|
549
|
-
*/
|
|
550
205
|
dashboard_id: z.string().describe("UUID identifying the dashboard which the subscriptions belongs."),
|
|
551
|
-
/**
|
|
552
|
-
* @description The number of subscriptions to return per page.
|
|
553
|
-
*/
|
|
554
206
|
page_size: z.number().optional().describe("The number of subscriptions to return per page."),
|
|
555
|
-
/**
|
|
556
|
-
* @description A page token, received from a previous `ListSubscriptions` call. Use this to retrieve the subsequent page.
|
|
557
|
-
*/
|
|
558
207
|
page_token: z.string().optional().describe("A page token, received from a previous `ListSubscriptions` call. Use this to retrieve the subsequent page."),
|
|
559
|
-
/**
|
|
560
|
-
* @description UUID identifying the schedule which the subscriptions belongs.
|
|
561
|
-
*/
|
|
562
208
|
schedule_id: z.string().describe("UUID identifying the schedule which the subscriptions belongs.")
|
|
563
209
|
});
|
|
564
210
|
export const messageErrorTypeSchema = z.union([z.literal("BLOCK_MULTIPLE_EXECUTIONS_EXCEPTION"), z.literal("CHAT_COMPLETION_CLIENT_EXCEPTION"), z.literal("CHAT_COMPLETION_CLIENT_TIMEOUT_EXCEPTION"), z.literal("CHAT_COMPLETION_NETWORK_EXCEPTION"), z.literal("CONTENT_FILTER_EXCEPTION"), z.literal("CONTEXT_EXCEEDED_EXCEPTION"), z.literal("COULD_NOT_GET_MODEL_DEPLOYMENTS_EXCEPTION"), z.literal("COULD_NOT_GET_UC_SCHEMA_EXCEPTION"), z.literal("DEPLOYMENT_NOT_FOUND_EXCEPTION"), z.literal("DESCRIBE_QUERY_INVALID_SQL_ERROR"), z.literal("DESCRIBE_QUERY_TIMEOUT"), z.literal("DESCRIBE_QUERY_UNEXPECTED_FAILURE"), z.literal("EXCEEDED_MAX_TOKEN_LENGTH_EXCEPTION"), z.literal("FUNCTIONS_NOT_AVAILABLE_EXCEPTION"), z.literal("FUNCTION_ARGUMENTS_INVALID_EXCEPTION"), z.literal("FUNCTION_ARGUMENTS_INVALID_JSON_EXCEPTION"), z.literal("FUNCTION_ARGUMENTS_INVALID_TYPE_EXCEPTION"), z.literal("FUNCTION_CALL_MISSING_PARAMETER_EXCEPTION"), z.literal("GENERATED_SQL_QUERY_TOO_LONG_EXCEPTION"), z.literal("GENERIC_CHAT_COMPLETION_EXCEPTION"), z.literal("GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION"), z.literal("GENERIC_SQL_EXEC_API_CALL_EXCEPTION"), z.literal("ILLEGAL_PARAMETER_DEFINITION_EXCEPTION"), z.literal("INTERNAL_CATALOG_ASSET_CREATION_FAILED_EXCEPTION"), z.literal("INTERNAL_CATALOG_ASSET_CREATION_ONGOING_EXCEPTION"), z.literal("INTERNAL_CATALOG_ASSET_CREATION_UNSUPPORTED_EXCEPTION"), z.literal("INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION"), z.literal("INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION"), z.literal("INVALID_CERTIFIED_ANSWER_FUNCTION_EXCEPTION"), z.literal("INVALID_CERTIFIED_ANSWER_IDENTIFIER_EXCEPTION"), z.literal("INVALID_CHAT_COMPLETION_ARGUMENTS_JSON_EXCEPTION"), z.literal("INVALID_CHAT_COMPLETION_JSON_EXCEPTION"), z.literal("INVALID_COMPLETION_REQUEST_EXCEPTION"), z.literal("INVALID_FUNCTION_CALL_EXCEPTION"), z.literal("INVALID_SQL_MULTIPLE_DATASET_REFERENCES_EXCEPTION"), z.literal("INVALID_SQL_MULTIPLE_STATEMENTS_EXCEPTION"), z.literal("INVALID_SQL_UNKNOWN_TABLE_EXCEPTION"), z.literal("INVALID_TABLE_IDENTIFIER_EXCEPTION"), z.literal("LOCAL_CONTEXT_EXCEEDED_EXCEPTION"), z.literal("MESSAGE_ATTACHMENT_TOO_LONG_ERROR"), z.literal("MESSAGE_CANCELLED_WHILE_EXECUTING_EXCEPTION"), z.literal("MESSAGE_DELETED_WHILE_EXECUTING_EXCEPTION"), z.literal("MESSAGE_UPDATED_WHILE_EXECUTING_EXCEPTION"), z.literal("MISSING_SQL_QUERY_EXCEPTION"), z.literal("NO_DEPLOYMENTS_AVAILABLE_TO_WORKSPACE"), z.literal("NO_QUERY_TO_VISUALIZE_EXCEPTION"), z.literal("NO_TABLES_TO_QUERY_EXCEPTION"), z.literal("RATE_LIMIT_EXCEEDED_GENERIC_EXCEPTION"), z.literal("RATE_LIMIT_EXCEEDED_SPECIFIED_WAIT_EXCEPTION"), z.literal("REPLY_PROCESS_TIMEOUT_EXCEPTION"), z.literal("RETRYABLE_PROCESSING_EXCEPTION"), z.literal("SQL_EXECUTION_EXCEPTION"), z.literal("STOP_PROCESS_DUE_TO_AUTO_REGENERATE"), z.literal("TABLES_MISSING_EXCEPTION"), z.literal("TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION"), z.literal("TOO_MANY_TABLES_EXCEPTION"), z.literal("UNEXPECTED_REPLY_PROCESS_EXCEPTION"), z.literal("UNKNOWN_AI_MODEL"), z.literal("UNSUPPORTED_CONVERSATION_TYPE_EXCEPTION"), z.literal("WAREHOUSE_ACCESS_MISSING_EXCEPTION"), z.literal("WAREHOUSE_NOT_FOUND_EXCEPTION")]);
|
|
565
211
|
export const migrateDashboardRequestSchema = z.object({
|
|
566
|
-
/**
|
|
567
|
-
* @description Display name for the new Lakeview dashboard.
|
|
568
|
-
*/
|
|
569
212
|
display_name: z.string().optional().describe("Display name for the new Lakeview dashboard."),
|
|
570
|
-
/**
|
|
571
|
-
* @description The workspace path of the folder to contain the migrated Lakeview dashboard.
|
|
572
|
-
*/
|
|
573
213
|
parent_path: z.string().optional().describe("The workspace path of the folder to contain the migrated Lakeview dashboard."),
|
|
574
|
-
/**
|
|
575
|
-
* @description UUID of the dashboard to be migrated.
|
|
576
|
-
*/
|
|
577
214
|
source_dashboard_id: z.string().describe("UUID of the dashboard to be migrated."),
|
|
578
|
-
/**
|
|
579
|
-
* @description Flag to indicate if mustache parameter syntax ({{ param }}) should be auto-updated to named syntax (:param) when converting datasets in the dashboard.
|
|
580
|
-
*/
|
|
581
215
|
update_parameter_syntax: z.boolean().optional().describe("Flag to indicate if mustache parameter syntax ({{ param }}) should be auto-updated to named syntax (:param) when converting datasets in the dashboard.")
|
|
582
216
|
});
|
|
583
217
|
export const publishRequestSchema = z.object({
|
|
584
|
-
/**
|
|
585
|
-
* @description UUID identifying the dashboard to be published.
|
|
586
|
-
*/
|
|
587
218
|
dashboard_id: z.string().describe("UUID identifying the dashboard to be published."),
|
|
588
|
-
/**
|
|
589
|
-
* @description Flag to indicate if the publisher's credentials should be embedded in the published dashboard. These embedded credentials will be used to execute the published dashboard's queries.
|
|
590
|
-
*/
|
|
591
219
|
embed_credentials: z.boolean().optional().describe("Flag to indicate if the publisher's credentials should be embedded in the published dashboard. These embedded credentials will be used to execute the published dashboard's queries."),
|
|
592
|
-
/**
|
|
593
|
-
* @description The ID of the warehouse that can be used to override the warehouse which was set in the draft.
|
|
594
|
-
*/
|
|
595
220
|
warehouse_id: z.string().optional().describe("The ID of the warehouse that can be used to override the warehouse which was set in the draft.")
|
|
596
221
|
});
|
|
597
222
|
export const publishedDashboardSchema = z.object({
|
|
598
|
-
/**
|
|
599
|
-
* @description The display name of the published dashboard.
|
|
600
|
-
*/
|
|
601
223
|
display_name: z.string().optional().describe("The display name of the published dashboard."),
|
|
602
|
-
/**
|
|
603
|
-
* @description Indicates whether credentials are embedded in the published dashboard.
|
|
604
|
-
*/
|
|
605
224
|
embed_credentials: z.boolean().optional().describe("Indicates whether credentials are embedded in the published dashboard."),
|
|
606
|
-
/**
|
|
607
|
-
* @description The timestamp of when the published dashboard was last revised.
|
|
608
|
-
*/
|
|
609
225
|
revision_create_time: z.string().optional().describe("The timestamp of when the published dashboard was last revised."),
|
|
610
|
-
/**
|
|
611
|
-
* @description The warehouse ID used to run the published dashboard.
|
|
612
|
-
*/
|
|
613
226
|
warehouse_id: z.string().optional().describe("The warehouse ID used to run the published dashboard.")
|
|
614
227
|
});
|
|
615
228
|
export const schedulePauseStatusSchema = z.union([z.literal("PAUSED"), z.literal("UNPAUSED")]);
|
|
616
229
|
export const subscriptionSubscriberDestinationSchema = z.object({
|
|
617
|
-
/**
|
|
618
|
-
* @description The canonical identifier of the destination to receive email notification.
|
|
619
|
-
*/
|
|
620
230
|
destination_id: z.string().describe("The canonical identifier of the destination to receive email notification.")
|
|
621
231
|
});
|
|
622
232
|
export const subscriptionSubscriberUserSchema = z.object({
|
|
623
|
-
/**
|
|
624
|
-
* @description UserId of the subscriber.
|
|
625
|
-
*/
|
|
626
233
|
user_id: z.number().describe("UserId of the subscriber.")
|
|
627
234
|
});
|
|
628
235
|
export const subscriberSchema = z.object({
|
|
629
|
-
/**
|
|
630
|
-
* @description The destination to receive the subscription email. This parameter is mutually exclusive with `user_subscriber`.
|
|
631
|
-
*/
|
|
632
236
|
destination_subscriber: subscriptionSubscriberDestinationSchema.optional().describe("The destination to receive the subscription email. This parameter is mutually exclusive with `user_subscriber`."),
|
|
633
|
-
/**
|
|
634
|
-
* @description The user to receive the subscription email. This parameter is mutually exclusive with `destination_subscriber`.
|
|
635
|
-
*/
|
|
636
237
|
user_subscriber: subscriptionSubscriberUserSchema.optional().describe("The user to receive the subscription email. This parameter is mutually exclusive with `destination_subscriber`.")
|
|
637
238
|
});
|
|
638
|
-
/**
|
|
639
|
-
* @description Purpose/intent of a text attachment
|
|
640
|
-
*/
|
|
641
239
|
export const textAttachmentPurposeSchema = z.literal("FOLLOW_UP_QUESTION").describe("Purpose/intent of a text attachment");
|
|
642
240
|
export const trashDashboardRequestSchema = z.object({
|
|
643
|
-
/**
|
|
644
|
-
* @description UUID identifying the dashboard.
|
|
645
|
-
*/
|
|
646
241
|
dashboard_id: z.string().describe("UUID identifying the dashboard.")
|
|
647
242
|
});
|
|
648
243
|
export const unpublishDashboardRequestSchema = z.object({
|
|
649
|
-
/**
|
|
650
|
-
* @description UUID identifying the published dashboard.
|
|
651
|
-
*/
|
|
652
244
|
dashboard_id: z.string().describe("UUID identifying the published dashboard.")
|
|
653
245
|
});
|
|
654
246
|
export const updateDashboardRequestSchema = z.object({
|
|
655
247
|
dashboard: dashboardSchema,
|
|
656
|
-
/**
|
|
657
|
-
* @description UUID identifying the dashboard.
|
|
658
|
-
*/
|
|
659
248
|
dashboard_id: z.string().describe("UUID identifying the dashboard.")
|
|
660
249
|
});
|
|
661
250
|
export const scheduleSchema = z.object({
|
|
662
|
-
/**
|
|
663
|
-
* @description A timestamp indicating when the schedule was created.
|
|
664
|
-
*/
|
|
665
251
|
create_time: z.string().optional().describe("A timestamp indicating when the schedule was created."),
|
|
666
|
-
/**
|
|
667
|
-
* @description The cron expression describing the frequency of the periodic refresh for this schedule.
|
|
668
|
-
*/
|
|
669
252
|
cron_schedule: cronScheduleSchema.describe("The cron expression describing the frequency of the periodic refresh for this schedule."),
|
|
670
|
-
/**
|
|
671
|
-
* @description UUID identifying the dashboard to which the schedule belongs.
|
|
672
|
-
*/
|
|
673
253
|
dashboard_id: z.string().optional().describe("UUID identifying the dashboard to which the schedule belongs."),
|
|
674
|
-
/**
|
|
675
|
-
* @description The display name for schedule.
|
|
676
|
-
*/
|
|
677
254
|
display_name: z.string().optional().describe("The display name for schedule."),
|
|
678
|
-
/**
|
|
679
|
-
* @description The etag for the schedule. Must be left empty on create, must be provided on updates to ensure that the schedule has not been modified since the last read, and can be optionally provided on delete.
|
|
680
|
-
*/
|
|
681
255
|
etag: z.string().optional().describe("The etag for the schedule. Must be left empty on create, must be provided on updates to ensure that the schedule has not been modified since the last read, and can be optionally provided on delete."),
|
|
682
|
-
/**
|
|
683
|
-
* @description The status indicates whether this schedule is paused or not.
|
|
684
|
-
*/
|
|
685
256
|
pause_status: schedulePauseStatusSchema.optional().describe("The status indicates whether this schedule is paused or not."),
|
|
686
|
-
/**
|
|
687
|
-
* @description UUID identifying the schedule.
|
|
688
|
-
*/
|
|
689
257
|
schedule_id: z.string().optional().describe("UUID identifying the schedule."),
|
|
690
|
-
/**
|
|
691
|
-
* @description A timestamp indicating when the schedule was last updated.
|
|
692
|
-
*/
|
|
693
258
|
update_time: z.string().optional().describe("A timestamp indicating when the schedule was last updated."),
|
|
694
|
-
/**
|
|
695
|
-
* @description The warehouse id to run the dashboard with for the schedule.
|
|
696
|
-
*/
|
|
697
259
|
warehouse_id: z.string().optional().describe("The warehouse id to run the dashboard with for the schedule.")
|
|
698
260
|
});
|
|
699
261
|
export const createDashboardRequestSchema = z.object({
|
|
700
262
|
dashboard: dashboardSchema
|
|
701
263
|
});
|
|
702
264
|
export const createScheduleRequestSchema = z.object({
|
|
703
|
-
/**
|
|
704
|
-
* @description UUID identifying the dashboard to which the schedule belongs.
|
|
705
|
-
*/
|
|
706
265
|
dashboard_id: z.string().describe("UUID identifying the dashboard to which the schedule belongs."),
|
|
707
|
-
/**
|
|
708
|
-
* @description The schedule to create. A dashboard is limited to 10 schedules.
|
|
709
|
-
*/
|
|
710
266
|
schedule: scheduleSchema.describe("The schedule to create. A dashboard is limited to 10 schedules.")
|
|
711
267
|
});
|
|
712
268
|
export const subscriptionSchema = z.object({
|
|
713
|
-
/**
|
|
714
|
-
* @description A timestamp indicating when the subscription was created.
|
|
715
|
-
*/
|
|
716
269
|
create_time: z.string().optional().describe("A timestamp indicating when the subscription was created."),
|
|
717
|
-
/**
|
|
718
|
-
* @description UserId of the user who adds subscribers (users or notification destinations) to the dashboard's schedule.
|
|
719
|
-
*/
|
|
720
270
|
created_by_user_id: z.number().optional().describe("UserId of the user who adds subscribers (users or notification destinations) to the dashboard's schedule."),
|
|
721
|
-
/**
|
|
722
|
-
* @description UUID identifying the dashboard to which the subscription belongs.
|
|
723
|
-
*/
|
|
724
271
|
dashboard_id: z.string().optional().describe("UUID identifying the dashboard to which the subscription belongs."),
|
|
725
|
-
/**
|
|
726
|
-
* @description The etag for the subscription. Must be left empty on create, can be optionally provided on delete to ensure that the subscription has not been deleted since the last read.
|
|
727
|
-
*/
|
|
728
272
|
etag: z.string().optional().describe("The etag for the subscription. Must be left empty on create, can be optionally provided on delete to ensure that the subscription has not been deleted since the last read."),
|
|
729
|
-
/**
|
|
730
|
-
* @description UUID identifying the schedule to which the subscription belongs.
|
|
731
|
-
*/
|
|
732
273
|
schedule_id: z.string().optional().describe("UUID identifying the schedule to which the subscription belongs."),
|
|
733
|
-
/**
|
|
734
|
-
* @description Subscriber details for users and destinations to be added as subscribers to the schedule.
|
|
735
|
-
*/
|
|
736
274
|
subscriber: subscriberSchema.describe("Subscriber details for users and destinations to be added as subscribers to the schedule."),
|
|
737
|
-
/**
|
|
738
|
-
* @description UUID identifying the subscription.
|
|
739
|
-
*/
|
|
740
275
|
subscription_id: z.string().optional().describe("UUID identifying the subscription."),
|
|
741
|
-
/**
|
|
742
|
-
* @description A timestamp indicating when the subscription was last updated.
|
|
743
|
-
*/
|
|
744
276
|
update_time: z.string().optional().describe("A timestamp indicating when the subscription was last updated.")
|
|
745
277
|
});
|
|
746
278
|
export const genieQueryAttachmentSchema = z.object({
|
|
747
|
-
/**
|
|
748
|
-
* @description Description of the query
|
|
749
|
-
*/
|
|
750
279
|
description: z.string().optional().describe("Description of the query"),
|
|
751
280
|
id: z.string().optional(),
|
|
752
|
-
/**
|
|
753
|
-
* @description Time when the user updated the query last
|
|
754
|
-
*/
|
|
755
281
|
last_updated_timestamp: z.number().optional().describe("Time when the user updated the query last"),
|
|
756
282
|
parameters: z.array(queryAttachmentParameterSchema).optional(),
|
|
757
|
-
/**
|
|
758
|
-
* @description AI generated SQL query
|
|
759
|
-
*/
|
|
760
283
|
query: z.string().optional().describe("AI generated SQL query"),
|
|
761
|
-
/**
|
|
762
|
-
* @description Metadata associated with the query result.
|
|
763
|
-
*/
|
|
764
284
|
query_result_metadata: genieResultMetadataSchema.optional().describe("Metadata associated with the query result."),
|
|
765
|
-
/**
|
|
766
|
-
* @description Statement Execution API statement id. Use [Get status, manifest, and result first chunk](:method:statementexecution/getstatement) to get the full result data.
|
|
767
|
-
*/
|
|
768
285
|
statement_id: z.string().optional().describe("Statement Execution API statement id. Use [Get status, manifest, and result first chunk](:method:statementexecution/getstatement) to get the full result data."),
|
|
769
|
-
/**
|
|
770
|
-
* @description Name of the query
|
|
771
|
-
*/
|
|
772
286
|
title: z.string().optional().describe("Name of the query")
|
|
773
287
|
});
|
|
774
288
|
export const textAttachmentSchema = z.object({
|
|
775
|
-
/**
|
|
776
|
-
* @description AI generated message
|
|
777
|
-
*/
|
|
778
289
|
content: z.string().optional().describe("AI generated message"),
|
|
779
290
|
id: z.string().optional(),
|
|
780
|
-
/**
|
|
781
|
-
* @description Purpose/intent of this text attachment
|
|
782
|
-
*/
|
|
783
291
|
purpose: textAttachmentPurposeSchema.optional().describe("Purpose/intent of this text attachment")
|
|
784
292
|
});
|
|
785
293
|
export const genieListSpacesResponseSchema = z.object({
|
|
786
|
-
/**
|
|
787
|
-
* @description Token to get the next page of results
|
|
788
|
-
*/
|
|
789
294
|
next_page_token: z.string().optional().describe("Token to get the next page of results"),
|
|
790
|
-
/**
|
|
791
|
-
* @description List of Genie spaces
|
|
792
|
-
*/
|
|
793
295
|
spaces: z.array(genieSpaceSchema).optional().describe("List of Genie spaces")
|
|
794
296
|
});
|
|
795
|
-
/**
|
|
796
|
-
* @description Genie AI Response
|
|
797
|
-
*/
|
|
798
297
|
export const genieAttachmentSchema = z.object({
|
|
799
|
-
/**
|
|
800
|
-
* @description Attachment ID
|
|
801
|
-
*/
|
|
802
298
|
attachment_id: z.string().optional().describe("Attachment ID"),
|
|
803
|
-
/**
|
|
804
|
-
* @description Query Attachment if Genie responds with a SQL query
|
|
805
|
-
*/
|
|
806
299
|
query: genieQueryAttachmentSchema.optional().describe("Query Attachment if Genie responds with a SQL query"),
|
|
807
|
-
/**
|
|
808
|
-
* @description Follow-up questions suggested by Genie
|
|
809
|
-
*/
|
|
810
300
|
suggested_questions: genieSuggestedQuestionsAttachmentSchema.optional().describe("Follow-up questions suggested by Genie"),
|
|
811
|
-
/**
|
|
812
|
-
* @description Text Attachment if Genie responds with text
|
|
813
|
-
*/
|
|
814
301
|
text: textAttachmentSchema.optional().describe("Text Attachment if Genie responds with text")
|
|
815
302
|
});
|
|
816
303
|
export const messageErrorSchema = z.object({
|
|
@@ -818,142 +305,55 @@ export const messageErrorSchema = z.object({
|
|
|
818
305
|
type: messageErrorTypeSchema.optional()
|
|
819
306
|
});
|
|
820
307
|
export const genieMessageSchema = z.object({
|
|
821
|
-
/**
|
|
822
|
-
* @description AI-generated response to the message
|
|
823
|
-
*/
|
|
824
308
|
attachments: z.array(genieAttachmentSchema).optional().describe("AI-generated response to the message"),
|
|
825
|
-
/**
|
|
826
|
-
* @description User message content
|
|
827
|
-
*/
|
|
828
309
|
content: z.string().describe("User message content"),
|
|
829
|
-
/**
|
|
830
|
-
* @description Conversation ID
|
|
831
|
-
*/
|
|
832
310
|
conversation_id: z.string().describe("Conversation ID"),
|
|
833
|
-
/**
|
|
834
|
-
* @description Timestamp when the message was created
|
|
835
|
-
*/
|
|
836
311
|
created_timestamp: z.number().optional().describe("Timestamp when the message was created"),
|
|
837
|
-
/**
|
|
838
|
-
* @description Error message if Genie failed to respond to the message
|
|
839
|
-
*/
|
|
840
312
|
error: messageErrorSchema.optional().describe("Error message if Genie failed to respond to the message"),
|
|
841
|
-
/**
|
|
842
|
-
* @description User feedback for the message if provided
|
|
843
|
-
*/
|
|
844
313
|
feedback: genieFeedbackSchema.optional().describe("User feedback for the message if provided"),
|
|
845
|
-
/**
|
|
846
|
-
* @description Message ID. Legacy identifier, use message_id instead
|
|
847
|
-
*/
|
|
848
314
|
id: z.string().describe("Message ID. Legacy identifier, use message_id instead"),
|
|
849
|
-
/**
|
|
850
|
-
* @description Timestamp when the message was last updated
|
|
851
|
-
*/
|
|
852
315
|
last_updated_timestamp: z.number().optional().describe("Timestamp when the message was last updated"),
|
|
853
|
-
/**
|
|
854
|
-
* @description Message ID
|
|
855
|
-
*/
|
|
856
316
|
message_id: z.string().describe("Message ID"),
|
|
857
|
-
/**
|
|
858
|
-
* @description The result of SQL query if the message includes a query attachment. Deprecated. Use `query_result_metadata` in `GenieQueryAttachment` instead.
|
|
859
|
-
*/
|
|
860
317
|
query_result: resultSchema.optional().describe("The result of SQL query if the message includes a query attachment. Deprecated. Use `query_result_metadata` in `GenieQueryAttachment` instead."),
|
|
861
|
-
/**
|
|
862
|
-
* @description Genie space ID
|
|
863
|
-
*/
|
|
864
318
|
space_id: z.string().describe("Genie space ID"),
|
|
865
|
-
/**
|
|
866
|
-
* @description MessageStatus. The possible values are: * `FETCHING_METADATA`: Fetching metadata from the data sources. * `FILTERING_CONTEXT`: Running smart context step to determine relevant context. * `ASKING_AI`: Waiting for the LLM to respond to the user's question. * `PENDING_WAREHOUSE`: Waiting for warehouse before the SQL query can start executing. * `EXECUTING_QUERY`: Executing a generated SQL query. Get the SQL query result by calling [getMessageAttachmentQueryResult](:method:genie/getMessageAttachmentQueryResult) API. * `FAILED`: The response generation or query execution failed. See `error` field. * `COMPLETED`: Message processing is completed. Results are in the `attachments` field. Get the SQL query result by calling [getMessageAttachmentQueryResult](:method:genie/getMessageAttachmentQueryResult) API. * `SUBMITTED`: Message has been submitted. * `QUERY_RESULT_EXPIRED`: SQL result is not available anymore. The user needs to rerun the query. Rerun the SQL query result by calling [executeMessageAttachmentQuery](:method:genie/executeMessageAttachmentQuery) API. * `CANCELLED`: Message has been cancelled.
|
|
867
|
-
*/
|
|
868
319
|
status: messageStatusSchema.optional().describe("MessageStatus. The possible values are: * `FETCHING_METADATA`: Fetching metadata from the data sources. * `FILTERING_CONTEXT`: Running smart context step to determine relevant context. * `ASKING_AI`: Waiting for the LLM to respond to the user's question. * `PENDING_WAREHOUSE`: Waiting for warehouse before the SQL query can start executing. * `EXECUTING_QUERY`: Executing a generated SQL query. Get the SQL query result by calling [getMessageAttachmentQueryResult](:method:genie/getMessageAttachmentQueryResult) API. * `FAILED`: The response generation or query execution failed. See `error` field. * `COMPLETED`: Message processing is completed. Results are in the `attachments` field. Get the SQL query result by calling [getMessageAttachmentQueryResult](:method:genie/getMessageAttachmentQueryResult) API. * `SUBMITTED`: Message has been submitted. * `QUERY_RESULT_EXPIRED`: SQL result is not available anymore. The user needs to rerun the query. Rerun the SQL query result by calling [executeMessageAttachmentQuery](:method:genie/executeMessageAttachmentQuery) API. * `CANCELLED`: Message has been cancelled."),
|
|
869
|
-
/**
|
|
870
|
-
* @description ID of the user who created the message
|
|
871
|
-
*/
|
|
872
320
|
user_id: z.number().optional().describe("ID of the user who created the message")
|
|
873
321
|
});
|
|
874
322
|
export const getPublishedDashboardTokenInfoResponseSchema = z.object({
|
|
875
|
-
/**
|
|
876
|
-
* @description Authorization constraints for accessing the published dashboard. Currently includes `workspace_rule_set` and could be enriched with `unity_catalog_privileges` before oAuth token generation.
|
|
877
|
-
*/
|
|
878
323
|
authorization_details: z.array(authorizationDetailsSchema).optional().describe("Authorization constraints for accessing the published dashboard. Currently includes `workspace_rule_set` and could be enriched with `unity_catalog_privileges` before oAuth token generation."),
|
|
879
|
-
/**
|
|
880
|
-
* @description Custom claim generated from external_value and external_viewer_id. Format: `urn:aibi:external_data:<external_value>:<external_viewer_id>:<dashboard_id>`
|
|
881
|
-
*/
|
|
882
324
|
custom_claim: z.string().optional().describe("Custom claim generated from external_value and external_viewer_id. Format: `urn:aibi:external_data:<external_value>:<external_viewer_id>:<dashboard_id>`"),
|
|
883
|
-
/**
|
|
884
|
-
* @description Scope defining access permissions.
|
|
885
|
-
*/
|
|
886
325
|
scope: z.string().optional().describe("Scope defining access permissions.")
|
|
887
326
|
});
|
|
888
327
|
export const listDashboardsResponseSchema = z.object({
|
|
889
328
|
dashboards: z.array(dashboardSchema).optional(),
|
|
890
|
-
/**
|
|
891
|
-
* @description A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent dashboards.
|
|
892
|
-
*/
|
|
893
329
|
next_page_token: z.string().optional().describe("A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent dashboards.")
|
|
894
330
|
});
|
|
895
331
|
export const listSchedulesResponseSchema = z.object({
|
|
896
|
-
/**
|
|
897
|
-
* @description A token that can be used as a `page_token` in subsequent requests to retrieve the next page of results. If this field is omitted, there are no subsequent schedules.
|
|
898
|
-
*/
|
|
899
332
|
next_page_token: z.string().optional().describe("A token that can be used as a `page_token` in subsequent requests to retrieve the next page of results. If this field is omitted, there are no subsequent schedules."),
|
|
900
333
|
schedules: z.array(scheduleSchema).optional()
|
|
901
334
|
});
|
|
902
335
|
export const listSubscriptionsResponseSchema = z.object({
|
|
903
|
-
/**
|
|
904
|
-
* @description A token that can be used as a `page_token` in subsequent requests to retrieve the next page of results. If this field is omitted, there are no subsequent subscriptions.
|
|
905
|
-
*/
|
|
906
336
|
next_page_token: z.string().optional().describe("A token that can be used as a `page_token` in subsequent requests to retrieve the next page of results. If this field is omitted, there are no subsequent subscriptions."),
|
|
907
337
|
subscriptions: z.array(subscriptionSchema).optional()
|
|
908
338
|
});
|
|
909
339
|
export const updateScheduleRequestSchema = z.object({
|
|
910
|
-
/**
|
|
911
|
-
* @description UUID identifying the dashboard to which the schedule belongs.
|
|
912
|
-
*/
|
|
913
340
|
dashboard_id: z.string().describe("UUID identifying the dashboard to which the schedule belongs."),
|
|
914
|
-
/**
|
|
915
|
-
* @description The schedule to update.
|
|
916
|
-
*/
|
|
917
341
|
schedule: scheduleSchema.describe("The schedule to update."),
|
|
918
|
-
/**
|
|
919
|
-
* @description UUID identifying the schedule.
|
|
920
|
-
*/
|
|
921
342
|
schedule_id: z.string().describe("UUID identifying the schedule.")
|
|
922
343
|
});
|
|
923
344
|
export const createSubscriptionRequestSchema = z.object({
|
|
924
|
-
/**
|
|
925
|
-
* @description UUID identifying the dashboard to which the subscription belongs.
|
|
926
|
-
*/
|
|
927
345
|
dashboard_id: z.string().describe("UUID identifying the dashboard to which the subscription belongs."),
|
|
928
|
-
/**
|
|
929
|
-
* @description UUID identifying the schedule to which the subscription belongs.
|
|
930
|
-
*/
|
|
931
346
|
schedule_id: z.string().describe("UUID identifying the schedule to which the subscription belongs."),
|
|
932
|
-
/**
|
|
933
|
-
* @description The subscription to create. A schedule is limited to 100 subscriptions.
|
|
934
|
-
*/
|
|
935
347
|
subscription: subscriptionSchema.describe("The subscription to create. A schedule is limited to 100 subscriptions.")
|
|
936
348
|
});
|
|
937
349
|
export const genieListConversationMessagesResponseSchema = z.object({
|
|
938
|
-
/**
|
|
939
|
-
* @description List of messages in the conversation.
|
|
940
|
-
*/
|
|
941
350
|
messages: z.array(genieMessageSchema).optional().describe("List of messages in the conversation."),
|
|
942
|
-
/**
|
|
943
|
-
* @description The token to use for retrieving the next page of results.
|
|
944
|
-
*/
|
|
945
351
|
next_page_token: z.string().optional().describe("The token to use for retrieving the next page of results.")
|
|
946
352
|
});
|
|
947
353
|
export const genieStartConversationResponseSchema = z.object({
|
|
948
354
|
conversation: genieConversationSchema.optional(),
|
|
949
|
-
/**
|
|
950
|
-
* @description Conversation ID
|
|
951
|
-
*/
|
|
952
355
|
conversation_id: z.string().describe("Conversation ID"),
|
|
953
356
|
message: genieMessageSchema.optional(),
|
|
954
|
-
/**
|
|
955
|
-
* @description Message ID
|
|
956
|
-
*/
|
|
957
357
|
message_id: z.string().describe("Message ID")
|
|
958
358
|
});
|
|
959
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXNoYm9hcmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUNoRSwrRUFBK0U7QUFDL0Usd0VBQXdFO0FBRXhFLHlCQUF5QjtBQUN6QixPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDeEQ7O0dBRUQ7SUFDQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxtS0FBbUssQ0FBQztDQUN0TixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3ZDOztHQUVEO0lBQ0Msc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyw0TkFBNE4sQ0FBQztJQUN6UTs7R0FFRDtJQUNDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLHNNQUFzTSxDQUFDO0NBQzNPLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXpGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2hEOztHQUVEO0lBQ0MsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENB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QU0sQ0FBQyxNQUFNLDJDQUEyQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDaEU7O0dBRUQ7SUFDQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyx1Q0FBdUMsQ0FBQztJQUNsRzs7R0FFRDtJQUNDLGVBQWUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLDJEQUEyRCxDQUFDO0NBQy9HLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekQsWUFBWSxFQUFFLHVCQUF1QixDQUFDLFFBQVEsRUFBRTtJQUNoRDs7R0FFRDtJQUNDLGVBQWUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO0lBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7SUFDdEM7O0dBRUQ7SUFDQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7Q0FDaEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiBzeW50aCAoY29kZWdlbjogdHMtdG8tem9kKSAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgdXBzdHJlYW0gLmQudHMgZGVjbGFyZWQgaW4gcGFja2FnZS5qc29uIGNvZGVnZW4uaW5wdXRzLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbi8vIEdlbmVyYXRlZCBieSB0cy10by16b2RcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCBjb25zdCBhdXRob3JpemF0aW9uRGV0YWlsc0dyYW50UnVsZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBQZXJtaXNzaW9uIHNldHMgZm9yIGRhc2hib2FyZCBhcmUgZGVmaW5lZCBpbiBpYW0tY29tbW9uL3JiYWMtY29tbW9uL3Blcm1pc3Npb24tc2V0cy9kZWZpbml0aW9ucy9UcmVlU3RvcmVCYXNlUGVybWlzc2lvblNldHMgRXg6IGBwZXJtaXNzaW9uU2V0cy9kYXNoYm9hcmQucnVubmVyYFxuICovXG4gICAgcGVybWlzc2lvbl9zZXQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlBlcm1pc3Npb24gc2V0cyBmb3IgZGFzaGJvYXJkIGFyZSBkZWZpbmVkIGluIGlhbS1jb21tb24vcmJhYy1jb21tb24vcGVybWlzc2lvbi1zZXRzL2RlZmluaXRpb25zL1RyZWVTdG9yZUJhc2VQZXJtaXNzaW9uU2V0cyBFeDogYHBlcm1pc3Npb25TZXRzL2Rhc2hib2FyZC5ydW5uZXJgXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGNyb25TY2hlZHVsZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBBIGNyb24gZXhwcmVzc2lvbiB1c2luZyBxdWFydHogc3ludGF4LiBFWDogYDAgMCA4ICogKiA/YCByZXByZXNlbnRzIGV2ZXJ5ZGF5IGF0IDhhbS4gU2VlIFtDcm9uIFRyaWdnZXJdIGZvciBkZXRhaWxzLiBbQ3JvbiBUcmlnZ2VyXTogaHR0cDovL3d3dy5xdWFydHotc2NoZWR1bGVyLm9yZy9kb2N1bWVudGF0aW9uL3F1YXJ0ei0yLjMuMC90dXRvcmlhbHMvY3JvbnRyaWdnZXIuaHRtbFxuICovXG4gICAgcXVhcnR6X2Nyb25fZXhwcmVzc2lvbjogei5zdHJpbmcoKS5kZXNjcmliZShcIkEgY3JvbiBleHByZXNzaW9uIHVzaW5nIHF1YXJ0eiBzeW50YXguIEVYOiBgMCAwIDggKiAqID9gIHJlcHJlc2VudHMgZXZlcnlkYXkgYXQgOGFtLiBTZWUgW0Nyb24gVHJpZ2dlcl0gZm9yIGRldGFpbHMuIFtDcm9uIFRyaWdnZXJdOiBodHRwOi8vd3d3LnF1YXJ0ei1zY2hlZHVsZXIub3JnL2RvY3VtZW50YXRpb24vcXVhcnR6LTIuMy4wL3R1dG9yaWFscy9jcm9udHJpZ2dlci5odG1sXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIEEgSmF2YSB0aW1lem9uZSBpZC4gVGhlIHNjaGVkdWxlIHdpbGwgYmUgcmVzb2x2ZWQgd2l0aCByZXNwZWN0IHRvIHRoaXMgdGltZXpvbmUuIFNlZSBbSmF2YSBUaW1lWm9uZV0gZm9yIGRldGFpbHMuIFtKYXZhIFRpbWVab25lXTogaHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vamF2YXNlLzcvZG9jcy9hcGkvamF2YS91dGlsL1RpbWVab25lLmh0bWxcbiAqL1xuICAgIHRpbWV6b25lX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiQSBKYXZhIHRpbWV6b25lIGlkLiBUaGUgc2NoZWR1bGUgd2lsbCBiZSByZXNvbHZlZCB3aXRoIHJlc3BlY3QgdG8gdGhpcyB0aW1lem9uZS4gU2VlIFtKYXZhIFRpbWVab25lXSBmb3IgZGV0YWlscy4gW0phdmEgVGltZVpvbmVdOiBodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL3V0aWwvVGltZVpvbmUuaHRtbFwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBsaWZlY3ljbGVTdGF0ZVNjaGVtYSA9IHoudW5pb24oW3oubGl0ZXJhbChcIkFDVElWRVwiKSwgei5saXRlcmFsKFwiVFJBU0hFRFwiKV0pO1xuXG5leHBvcnQgY29uc3QgZGFzaGJvYXJkVmlld1NjaGVtYSA9IHoubGl0ZXJhbChcIkRBU0hCT0FSRF9WSUVXX0JBU0lDXCIpO1xuXG5leHBvcnQgY29uc3QgZGVsZXRlU2NoZWR1bGVSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFVVSUQgaWRlbnRpZnlpbmcgdGhlIGRhc2hib2FyZCB0byB3aGljaCB0aGUgc2NoZWR1bGUgYmVsb25ncy5cbiAqL1xuICAgIGRhc2hib2FyZF9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIGRhc2hib2FyZCB0byB3aGljaCB0aGUgc2NoZWR1bGUgYmVsb25ncy5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIGV0YWcgZm9yIHRoZSBzY2hlZHVsZS4gT3B0aW9uYWxseSwgaXQgY2FuIGJlIHByb3ZpZGVkIHRvIHZlcmlmeSB0aGF0IHRoZSBzY2hlZHVsZSBoYXMgbm90IGJlZW4gbW9kaWZpZWQgZnJvbSBpdHMgbGFzdCByZXRyaWV2YWwuXG4gKi9cbiAgICBldGFnOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgZXRhZyBmb3IgdGhlIHNjaGVkdWxlLiBPcHRpb25hbGx5LCBpdCBjYW4gYmUgcHJvdmlkZWQgdG8gdmVyaWZ5IHRoYXQgdGhlIHNjaGVkdWxlIGhhcyBub3QgYmVlbiBtb2RpZmllZCBmcm9tIGl0cyBsYXN0IHJldHJpZXZhbC5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVVVJRCBpZGVudGlmeWluZyB0aGUgc2NoZWR1bGUuXG4gKi9cbiAgICBzY2hlZHVsZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIHNjaGVkdWxlLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBkZWxldGVTdWJzY3JpcHRpb25SZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFVVSUQgaWRlbnRpZnlpbmcgdGhlIGRhc2hib2FyZCB3aGljaCB0aGUgc3Vic2NyaXB0aW9uIGJlbG9uZ3MuXG4gKi9cbiAgICBkYXNoYm9hcmRfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgd2hpY2ggdGhlIHN1YnNjcmlwdGlvbiBiZWxvbmdzLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgZXRhZyBmb3IgdGhlIHN1YnNjcmlwdGlvbi4gQ2FuIGJlIG9wdGlvbmFsbHkgcHJvdmlkZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHN1YnNjcmlwdGlvbiBoYXMgbm90IGJlZW4gbW9kaWZpZWQgc2luY2UgdGhlIGxhc3QgcmVhZC5cbiAqL1xuICAgIGV0YWc6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBldGFnIGZvciB0aGUgc3Vic2NyaXB0aW9uLiBDYW4gYmUgb3B0aW9uYWxseSBwcm92aWRlZCB0byBlbnN1cmUgdGhhdCB0aGUgc3Vic2NyaXB0aW9uIGhhcyBub3QgYmVlbiBtb2RpZmllZCBzaW5jZSB0aGUgbGFzdCByZWFkLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVVUlEIGlkZW50aWZ5aW5nIHRoZSBzY2hlZHVsZSB3aGljaCB0aGUgc3Vic2NyaXB0aW9uIGJlbG9uZ3MuXG4gKi9cbiAgICBzY2hlZHVsZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIHNjaGVkdWxlIHdoaWNoIHRoZSBzdWJzY3JpcHRpb24gYmVsb25ncy5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVVVJRCBpZGVudGlmeWluZyB0aGUgc3Vic2NyaXB0aW9uLlxuICovXG4gICAgc3Vic2NyaXB0aW9uX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgc3Vic2NyaXB0aW9uLlwiKVxufSk7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZvbGxvdy11cCBxdWVzdGlvbnMgc3VnZ2VzdGVkIGJ5IEdlbmllXG4gKi9cbmV4cG9ydCBjb25zdCBnZW5pZVN1Z2dlc3RlZFF1ZXN0aW9uc0F0dGFjaG1lbnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIHN1Z2dlc3RlZCBmb2xsb3ctdXAgcXVlc3Rpb25zXG4gKi9cbiAgICBxdWVzdGlvbnM6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBzdWdnZXN0ZWQgZm9sbG93LXVwIHF1ZXN0aW9uc1wiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZUNvbnZlcnNhdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJzYXRpb24gSURcbiAqL1xuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkNvbnZlcnNhdGlvbiBJRFwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaW1lc3RhbXAgd2hlbiB0aGUgbWVzc2FnZSB3YXMgY3JlYXRlZFxuICovXG4gICAgY3JlYXRlZF90aW1lc3RhbXA6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRpbWVzdGFtcCB3aGVuIHRoZSBtZXNzYWdlIHdhcyBjcmVhdGVkXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIENvbnZlcnNhdGlvbiBJRC4gTGVnYWN5IGlkZW50aWZpZXIsIHVzZSBjb252ZXJzYXRpb25faWQgaW5zdGVhZFxuICovXG4gICAgaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJDb252ZXJzYXRpb24gSUQuIExlZ2FjeSBpZGVudGlmaWVyLCB1c2UgY29udmVyc2F0aW9uX2lkIGluc3RlYWRcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGltZXN0YW1wIHdoZW4gdGhlIG1lc3NhZ2Ugd2FzIGxhc3QgdXBkYXRlZFxuICovXG4gICAgbGFzdF91cGRhdGVkX3RpbWVzdGFtcDogei5udW1iZXIoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGltZXN0YW1wIHdoZW4gdGhlIG1lc3NhZ2Ugd2FzIGxhc3QgdXBkYXRlZFwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBHZW5pZSBzcGFjZSBJRFxuICovXG4gICAgc3BhY2VfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJHZW5pZSBzcGFjZSBJRFwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJzYXRpb24gdGl0bGVcbiAqL1xuICAgIHRpdGxlOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiQ29udmVyc2F0aW9uIHRpdGxlXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSB1c2VyIHdobyBjcmVhdGVkIHRoZSBjb252ZXJzYXRpb25cbiAqL1xuICAgIHVzZXJfaWQ6IHoubnVtYmVyKCkuZGVzY3JpYmUoXCJJRCBvZiB0aGUgdXNlciB3aG8gY3JlYXRlZCB0aGUgY29udmVyc2F0aW9uXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllQ29udmVyc2F0aW9uU3VtbWFyeVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCksXG4gICAgY3JlYXRlZF90aW1lc3RhbXA6IHoubnVtYmVyKCksXG4gICAgdGl0bGU6IHouc3RyaW5nKClcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVDcmVhdGVDb252ZXJzYXRpb25NZXNzYWdlUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVc2VyIG1lc3NhZ2UgY29udGVudC5cbiAqL1xuICAgIGNvbnRlbnQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVc2VyIG1lc3NhZ2UgY29udGVudC5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udmVyc2F0aW9uLlxuICovXG4gICAgY29udmVyc2F0aW9uX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udmVyc2F0aW9uLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBHZW5pZSBzcGFjZSB3aGVyZSB0aGUgY29udmVyc2F0aW9uIGlzIHN0YXJ0ZWQuXG4gKi9cbiAgICBzcGFjZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIEdlbmllIHNwYWNlIHdoZXJlIHRoZSBjb252ZXJzYXRpb24gaXMgc3RhcnRlZC5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVEZWxldGVDb252ZXJzYXRpb25NZXNzYWdlUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb252ZXJzYXRpb24uXG4gKi9cbiAgICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb252ZXJzYXRpb24uXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIG1lc3NhZ2UgdG8gZGVsZXRlLlxuICovXG4gICAgbWVzc2FnZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIG1lc3NhZ2UgdG8gZGVsZXRlLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBHZW5pZSBzcGFjZSB3aGVyZSB0aGUgbWVzc2FnZSBpcyBsb2NhdGVkLlxuICovXG4gICAgc3BhY2VfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBHZW5pZSBzcGFjZSB3aGVyZSB0aGUgbWVzc2FnZSBpcyBsb2NhdGVkLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZURlbGV0ZUNvbnZlcnNhdGlvblJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjb252ZXJzYXRpb24gdG8gZGVsZXRlLlxuICovXG4gICAgY29udmVyc2F0aW9uX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIElEIG9mIHRoZSBjb252ZXJzYXRpb24gdG8gZGVsZXRlLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBHZW5pZSBzcGFjZSB3aGVyZSB0aGUgY29udmVyc2F0aW9uIGlzIGxvY2F0ZWQuXG4gKi9cbiAgICBzcGFjZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIEdlbmllIHNwYWNlIHdoZXJlIHRoZSBjb252ZXJzYXRpb24gaXMgbG9jYXRlZC5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVFeGVjdXRlTWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gQXR0YWNobWVudCBJRFxuICovXG4gICAgYXR0YWNobWVudF9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkF0dGFjaG1lbnQgSURcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29udmVyc2F0aW9uIElEXG4gKi9cbiAgICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJDb252ZXJzYXRpb24gSURcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gTWVzc2FnZSBJRFxuICovXG4gICAgbWVzc2FnZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIk1lc3NhZ2UgSURcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuaWUgc3BhY2UgSURcbiAqL1xuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiR2VuaWUgc3BhY2UgSURcIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVFeGVjdXRlTWVzc2FnZVF1ZXJ5UmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJzYXRpb24gSURcbiAqL1xuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkNvbnZlcnNhdGlvbiBJRFwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBNZXNzYWdlIElEXG4gKi9cbiAgICBtZXNzYWdlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiTWVzc2FnZSBJRFwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBHZW5pZSBzcGFjZSBJRFxuICovXG4gICAgc3BhY2VfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJHZW5pZSBzcGFjZSBJRFwiKVxufSk7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZlZWRiYWNrIHJhdGluZyBmb3IgR2VuaWUgbWVzc2FnZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmllRmVlZGJhY2tSYXRpbmdTY2hlbWEgPSB6LnVuaW9uKFt6LmxpdGVyYWwoXCJORUdBVElWRVwiKSwgei5saXRlcmFsKFwiTk9ORVwiKSwgei5saXRlcmFsKFwiUE9TSVRJVkVcIildKS5kZXNjcmliZShcIkZlZWRiYWNrIHJhdGluZyBmb3IgR2VuaWUgbWVzc2FnZXNcIik7XG5cbmV4cG9ydCBjb25zdCBnZW5pZUdldENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIHRhcmdldCBjb252ZXJzYXRpb24uXG4gKi9cbiAgICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YXJnZXQgY29udmVyc2F0aW9uLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YXJnZXQgbWVzc2FnZSBmcm9tIHRoZSBpZGVudGlmaWVkIGNvbnZlcnNhdGlvbi5cbiAqL1xuICAgIG1lc3NhZ2VfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YXJnZXQgbWVzc2FnZSBmcm9tIHRoZSBpZGVudGlmaWVkIGNvbnZlcnNhdGlvbi5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2VuaWUgc3BhY2Ugd2hlcmUgdGhlIHRhcmdldCBjb252ZXJzYXRpb24gaXMgbG9jYXRlZC5cbiAqL1xuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2VuaWUgc3BhY2Ugd2hlcmUgdGhlIHRhcmdldCBjb252ZXJzYXRpb24gaXMgbG9jYXRlZC5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVHZXRNZXNzYWdlQXR0YWNobWVudFF1ZXJ5UmVzdWx0UmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBBdHRhY2htZW50IElEXG4gKi9cbiAgICBhdHRhY2htZW50X2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiQXR0YWNobWVudCBJRFwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJzYXRpb24gSURcbiAqL1xuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkNvbnZlcnNhdGlvbiBJRFwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBNZXNzYWdlIElEXG4gKi9cbiAgICBtZXNzYWdlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiTWVzc2FnZSBJRFwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBHZW5pZSBzcGFjZSBJRFxuICovXG4gICAgc3BhY2VfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJHZW5pZSBzcGFjZSBJRFwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZUdldE1lc3NhZ2VRdWVyeVJlc3VsdFJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29udmVyc2F0aW9uIElEXG4gKi9cbiAgICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJDb252ZXJzYXRpb24gSURcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gTWVzc2FnZSBJRFxuICovXG4gICAgbWVzc2FnZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIk1lc3NhZ2UgSURcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuaWUgc3BhY2UgSURcbiAqL1xuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiR2VuaWUgc3BhY2UgSURcIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVHZXRNZXNzYWdlUXVlcnlSZXN1bHRSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBTUUwgU3RhdGVtZW50IEV4ZWN1dGlvbiByZXNwb25zZS4gU2VlIFtHZXQgc3RhdHVzLCBtYW5pZmVzdCwgYW5kIHJlc3VsdCBmaXJzdCBjaHVua10oOm1ldGhvZDpzdGF0ZW1lbnRleGVjdXRpb24vZ2V0c3RhdGVtZW50KSBmb3IgbW9yZSBkZXRhaWxzLlxuICovXG4gICAgc3RhdGVtZW50X3Jlc3BvbnNlOiB6LnVua25vd24oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiU1FMIFN0YXRlbWVudCBFeGVjdXRpb24gcmVzcG9uc2UuIFNlZSBbR2V0IHN0YXR1cywgbWFuaWZlc3QsIGFuZCByZXN1bHQgZmlyc3QgY2h1bmtdKDptZXRob2Q6c3RhdGVtZW50ZXhlY3V0aW9uL2dldHN0YXRlbWVudCkgZm9yIG1vcmUgZGV0YWlscy5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVHZXRRdWVyeVJlc3VsdEJ5QXR0YWNobWVudFJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gQXR0YWNobWVudCBJRFxuICovXG4gICAgYXR0YWNobWVudF9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkF0dGFjaG1lbnQgSURcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29udmVyc2F0aW9uIElEXG4gKi9cbiAgICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJDb252ZXJzYXRpb24gSURcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gTWVzc2FnZSBJRFxuICovXG4gICAgbWVzc2FnZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIk1lc3NhZ2UgSURcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuaWUgc3BhY2UgSURcbiAqL1xuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiR2VuaWUgc3BhY2UgSURcIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVHZXRTcGFjZVJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2VuaWUgc3BhY2VcbiAqL1xuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2VuaWUgc3BhY2VcIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgY29udmVyc2F0aW9uIHRvIGxpc3QgbWVzc2FnZXMgZnJvbVxuICovXG4gICAgY29udmVyc2F0aW9uX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIElEIG9mIHRoZSBjb252ZXJzYXRpb24gdG8gbGlzdCBtZXNzYWdlcyBmcm9tXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIE1heGltdW0gbnVtYmVyIG9mIG1lc3NhZ2VzIHRvIHJldHVybiBwZXIgcGFnZVxuICovXG4gICAgcGFnZV9zaXplOiB6Lm51bWJlcigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJNYXhpbXVtIG51bWJlciBvZiBtZXNzYWdlcyB0byByZXR1cm4gcGVyIHBhZ2VcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVG9rZW4gdG8gZ2V0IHRoZSBuZXh0IHBhZ2Ugb2YgcmVzdWx0c1xuICovXG4gICAgcGFnZV90b2tlbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVG9rZW4gdG8gZ2V0IHRoZSBuZXh0IHBhZ2Ugb2YgcmVzdWx0c1wiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBHZW5pZSBzcGFjZSB3aGVyZSB0aGUgY29udmVyc2F0aW9uIGlzIGxvY2F0ZWRcbiAqL1xuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2VuaWUgc3BhY2Ugd2hlcmUgdGhlIGNvbnZlcnNhdGlvbiBpcyBsb2NhdGVkXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllTGlzdENvbnZlcnNhdGlvbnNSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIEluY2x1ZGUgYWxsIGNvbnZlcnNhdGlvbnMgaW4gdGhlIHNwYWNlIGFjcm9zcyBhbGwgdXNlcnMuIFJlcXVpcmVzIGF0IGxlYXN0IENBTiBNQU5BR0UgcGVybWlzc2lvbiBvbiB0aGUgc3BhY2UuXG4gKi9cbiAgICBpbmNsdWRlX2FsbDogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkluY2x1ZGUgYWxsIGNvbnZlcnNhdGlvbnMgaW4gdGhlIHNwYWNlIGFjcm9zcyBhbGwgdXNlcnMuIFJlcXVpcmVzIGF0IGxlYXN0IENBTiBNQU5BR0UgcGVybWlzc2lvbiBvbiB0aGUgc3BhY2UuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIE1heGltdW0gbnVtYmVyIG9mIGNvbnZlcnNhdGlvbnMgdG8gcmV0dXJuIHBlciBwYWdlXG4gKi9cbiAgICBwYWdlX3NpemU6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIk1heGltdW0gbnVtYmVyIG9mIGNvbnZlcnNhdGlvbnMgdG8gcmV0dXJuIHBlciBwYWdlXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRva2VuIHRvIGdldCB0aGUgbmV4dCBwYWdlIG9mIHJlc3VsdHNcbiAqL1xuICAgIHBhZ2VfdG9rZW46IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRva2VuIHRvIGdldCB0aGUgbmV4dCBwYWdlIG9mIHJlc3VsdHNcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBHZW5pZSBzcGFjZSB0byByZXRyaWV2ZSBjb252ZXJzYXRpb25zIGZyb20uXG4gKi9cbiAgICBzcGFjZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBJRCBvZiB0aGUgR2VuaWUgc3BhY2UgdG8gcmV0cmlldmUgY29udmVyc2F0aW9ucyBmcm9tLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZUxpc3RDb252ZXJzYXRpb25zUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gTGlzdCBvZiBjb252ZXJzYXRpb25zIGluIHRoZSBHZW5pZSBzcGFjZVxuICovXG4gICAgY29udmVyc2F0aW9uczogei5hcnJheShnZW5pZUNvbnZlcnNhdGlvblN1bW1hcnlTY2hlbWEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJMaXN0IG9mIGNvbnZlcnNhdGlvbnMgaW4gdGhlIEdlbmllIHNwYWNlXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRva2VuIHRvIGdldCB0aGUgbmV4dCBwYWdlIG9mIHJlc3VsdHNcbiAqL1xuICAgIG5leHRfcGFnZV90b2tlbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVG9rZW4gdG8gZ2V0IHRoZSBuZXh0IHBhZ2Ugb2YgcmVzdWx0c1wiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZUxpc3RTcGFjZXNSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIE1heGltdW0gbnVtYmVyIG9mIHNwYWNlcyB0byByZXR1cm4gcGVyIHBhZ2VcbiAqL1xuICAgIHBhZ2Vfc2l6ZTogei5udW1iZXIoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTWF4aW11bSBudW1iZXIgb2Ygc3BhY2VzIHRvIHJldHVybiBwZXIgcGFnZVwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBQYWdpbmF0aW9uIHRva2VuIGZvciBnZXR0aW5nIHRoZSBuZXh0IHBhZ2Ugb2YgcmVzdWx0c1xuICovXG4gICAgcGFnZV90b2tlbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUGFnaW5hdGlvbiB0b2tlbiBmb3IgZ2V0dGluZyB0aGUgbmV4dCBwYWdlIG9mIHJlc3VsdHNcIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVTcGFjZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBEZXNjcmlwdGlvbiBvZiB0aGUgR2VuaWUgU3BhY2VcbiAqL1xuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEZXNjcmlwdGlvbiBvZiB0aGUgR2VuaWUgU3BhY2VcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuaWUgc3BhY2UgSURcbiAqL1xuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiR2VuaWUgc3BhY2UgSURcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGl0bGUgb2YgdGhlIEdlbmllIFNwYWNlXG4gKi9cbiAgICB0aXRsZTogei5zdHJpbmcoKS5kZXNjcmliZShcIlRpdGxlIG9mIHRoZSBHZW5pZSBTcGFjZVwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBXYXJlaG91c2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBHZW5pZSBTcGFjZVxuICovXG4gICAgd2FyZWhvdXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJXYXJlaG91c2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBHZW5pZSBTcGFjZVwiKVxufSk7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZlZWRiYWNrIGNvbnRhaW5pbmcgcmF0aW5nIGFuZCBvcHRpb25hbCBjb21tZW50XG4gKi9cbmV4cG9ydCBjb25zdCBnZW5pZUZlZWRiYWNrU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBmZWVkYmFjayByYXRpbmdcbiAqL1xuICAgIHJhdGluZzogZ2VuaWVGZWVkYmFja1JhdGluZ1NjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIGZlZWRiYWNrIHJhdGluZ1wiKVxufSk7XG5cbmV4cG9ydCBjb25zdCByZXN1bHRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gSWYgcmVzdWx0IGlzIHRydW5jYXRlZFxuICovXG4gICAgaXNfdHJ1bmNhdGVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSWYgcmVzdWx0IGlzIHRydW5jYXRlZFwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBSb3cgY291bnQgb2YgdGhlIHJlc3VsdFxuICovXG4gICAgcm93X2NvdW50OiB6Lm51bWJlcigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJSb3cgY291bnQgb2YgdGhlIHJlc3VsdFwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBTdGF0ZW1lbnQgRXhlY3V0aW9uIEFQSSBzdGF0ZW1lbnQgaWQuIFVzZSBbR2V0IHN0YXR1cywgbWFuaWZlc3QsIGFuZCByZXN1bHQgZmlyc3QgY2h1bmtdKDptZXRob2Q6c3RhdGVtZW50ZXhlY3V0aW9uL2dldHN0YXRlbWVudCkgdG8gZ2V0IHRoZSBmdWxsIHJlc3VsdCBkYXRhLlxuICovXG4gICAgc3RhdGVtZW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTdGF0ZW1lbnQgRXhlY3V0aW9uIEFQSSBzdGF0ZW1lbnQgaWQuIFVzZSBbR2V0IHN0YXR1cywgbWFuaWZlc3QsIGFuZCByZXN1bHQgZmlyc3QgY2h1bmtdKDptZXRob2Q6c3RhdGVtZW50ZXhlY3V0aW9uL2dldHN0YXRlbWVudCkgdG8gZ2V0IHRoZSBmdWxsIHJlc3VsdCBkYXRhLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBKV1QgY29ycmVzcG9uZGluZyB0byB0aGUgc3RhdGVtZW50IGNvbnRhaW5lZCBpbiB0aGlzIHJlc3VsdFxuICovXG4gICAgc3RhdGVtZW50X2lkX3NpZ25hdHVyZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSldUIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHN0YXRlbWVudCBjb250YWluZWQgaW4gdGhpcyByZXN1bHRcIilcbn0pO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNZXNzYWdlU3RhdHVzLiBUaGUgcG9zc2libGUgdmFsdWVzIGFyZTogKiBgRkVUQ0hJTkdfTUVUQURBVEFgOiBGZXRjaGluZyBtZXRhZGF0YSBmcm9tIHRoZSBkYXRhIHNvdXJjZXMuICogYEZJTFRFUklOR19DT05URVhUYDogUnVubmluZyBzbWFydCBjb250ZXh0IHN0ZXAgdG8gZGV0ZXJtaW5lIHJlbGV2YW50IGNvbnRleHQuICogYEFTS0lOR19BSWA6IFdhaXRpbmcgZm9yIHRoZSBMTE0gdG8gcmVzcG9uZCB0byB0aGUgdXNlcidzIHF1ZXN0aW9uLiAqIGBQRU5ESU5HX1dBUkVIT1VTRWA6IFdhaXRpbmcgZm9yIHdhcmVob3VzZSBiZWZvcmUgdGhlIFNRTCBxdWVyeSBjYW4gc3RhcnQgZXhlY3V0aW5nLiAqIGBFWEVDVVRJTkdfUVVFUllgOiBFeGVjdXRpbmcgYSBnZW5lcmF0ZWQgU1FMIHF1ZXJ5LiBHZXQgdGhlIFNRTCBxdWVyeSByZXN1bHQgYnkgY2FsbGluZyBbZ2V0TWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlc3VsdF0oOm1ldGhvZDpnZW5pZS9nZXRNZXNzYWdlQXR0YWNobWVudFF1ZXJ5UmVzdWx0KSBBUEkuICogYEZBSUxFRGA6IFRoZSByZXNwb25zZSBnZW5lcmF0aW9uIG9yIHF1ZXJ5IGV4ZWN1dGlvbiBmYWlsZWQuIFNlZSBgZXJyb3JgIGZpZWxkLiAqIGBDT01QTEVURURgOiBNZXNzYWdlIHByb2Nlc3NpbmcgaXMgY29tcGxldGVkLiBSZXN1bHRzIGFyZSBpbiB0aGUgYGF0dGFjaG1lbnRzYCBmaWVsZC4gR2V0IHRoZSBTUUwgcXVlcnkgcmVzdWx0IGJ5IGNhbGxpbmcgW2dldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRdKDptZXRob2Q6Z2VuaWUvZ2V0TWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlc3VsdCkgQVBJLiAqIGBTVUJNSVRURURgOiBNZXNzYWdlIGhhcyBiZWVuIHN1Ym1pdHRlZC4gKiBgUVVFUllfUkVTVUxUX0VYUElSRURgOiBTUUwgcmVzdWx0IGlzIG5vdCBhdmFpbGFibGUgYW55bW9yZS4gVGhlIHVzZXIgbmVlZHMgdG8gcmVydW4gdGhlIHF1ZXJ5LiBSZXJ1biB0aGUgU1FMIHF1ZXJ5IHJlc3VsdCBieSBjYWxsaW5nIFtleGVjdXRlTWVzc2FnZUF0dGFjaG1lbnRRdWVyeV0oOm1ldGhvZDpnZW5pZS9leGVjdXRlTWVzc2FnZUF0dGFjaG1lbnRRdWVyeSkgQVBJLiAqIGBDQU5DRUxMRURgOiBNZXNzYWdlIGhhcyBiZWVuIGNhbmNlbGxlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1lc3NhZ2VTdGF0dXNTY2hlbWEgPSB6LnVuaW9uKFt6LmxpdGVyYWwoXCJBU0tJTkdfQUlcIiksIHoubGl0ZXJhbChcIkNBTkNFTExFRFwiKSwgei5saXRlcmFsKFwiQ09NUExFVEVEXCIpLCB6LmxpdGVyYWwoXCJFWEVDVVRJTkdfUVVFUllcIiksIHoubGl0ZXJhbChcIkZBSUxFRFwiKSwgei5saXRlcmFsKFwiRkVUQ0hJTkdfTUVUQURBVEFcIiksIHoubGl0ZXJhbChcIkZJTFRFUklOR19DT05URVhUXCIpLCB6LmxpdGVyYWwoXCJQRU5ESU5HX1dBUkVIT1VTRVwiKSwgei5saXRlcmFsKFwiUVVFUllfUkVTVUxUX0VYUElSRURcIiksIHoubGl0ZXJhbChcIlNVQk1JVFRFRFwiKV0pLmRlc2NyaWJlKFwiTWVzc2FnZVN0YXR1cy4gVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmU6ICogYEZFVENISU5HX01FVEFEQVRBYDogRmV0Y2hpbmcgbWV0YWRhdGEgZnJvbSB0aGUgZGF0YSBzb3VyY2VzLiAqIGBGSUxURVJJTkdfQ09OVEVYVGA6IFJ1bm5pbmcgc21hcnQgY29udGV4dCBzdGVwIHRvIGRldGVybWluZSByZWxldmFudCBjb250ZXh0LiAqIGBBU0tJTkdfQUlgOiBXYWl0aW5nIGZvciB0aGUgTExNIHRvIHJlc3BvbmQgdG8gdGhlIHVzZXIncyBxdWVzdGlvbi4gKiBgUEVORElOR19XQVJFSE9VU0VgOiBXYWl0aW5nIGZvciB3YXJlaG91c2UgYmVmb3JlIHRoZSBTUUwgcXVlcnkgY2FuIHN0YXJ0IGV4ZWN1dGluZy4gKiBgRVhFQ1VUSU5HX1FVRVJZYDogRXhlY3V0aW5nIGEgZ2VuZXJhdGVkIFNRTCBxdWVyeS4gR2V0IHRoZSBTUUwgcXVlcnkgcmVzdWx0IGJ5IGNhbGxpbmcgW2dldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRdKDptZXRob2Q6Z2VuaWUvZ2V0TWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlc3VsdCkgQVBJLiAqIGBGQUlMRURgOiBUaGUgcmVzcG9uc2UgZ2VuZXJhdGlvbiBvciBxdWVyeSBleGVjdXRpb24gZmFpbGVkLiBTZWUgYGVycm9yYCBmaWVsZC4gKiBgQ09NUExFVEVEYDogTWVzc2FnZSBwcm9jZXNzaW5nIGlzIGNvbXBsZXRlZC4gUmVzdWx0cyBhcmUgaW4gdGhlIGBhdHRhY2htZW50c2AgZmllbGQuIEdldCB0aGUgU1FMIHF1ZXJ5IHJlc3VsdCBieSBjYWxsaW5nIFtnZXRNZXNzYWdlQXR0YWNobWVudFF1ZXJ5UmVzdWx0XSg6bWV0aG9kOmdlbmllL2dldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHQpIEFQSS4gKiBgU1VCTUlUVEVEYDogTWVzc2FnZSBoYXMgYmVlbiBzdWJtaXR0ZWQuICogYFFVRVJZX1JFU1VMVF9FWFBJUkVEYDogU1FMIHJlc3VsdCBpcyBub3QgYXZhaWxhYmxlIGFueW1vcmUuIFRoZSB1c2VyIG5lZWRzIHRvIHJlcnVuIHRoZSBxdWVyeS4gUmVydW4gdGhlIFNRTCBxdWVyeSByZXN1bHQgYnkgY2FsbGluZyBbZXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnldKDptZXRob2Q6Z2VuaWUvZXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnkpIEFQSS4gKiBgQ0FOQ0VMTEVEYDogTWVzc2FnZSBoYXMgYmVlbiBjYW5jZWxsZWQuXCIpO1xuXG5leHBvcnQgY29uc3QgcXVlcnlBdHRhY2htZW50UGFyYW1ldGVyU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGtleXdvcmQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBzcWxfdHlwZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHZhbHVlOiB6LnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVSZXN1bHRNZXRhZGF0YVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVzdWx0IHNldCBpcyB0cnVuY2F0ZWQuXG4gKi9cbiAgICBpc190cnVuY2F0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJJbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVzdWx0IHNldCBpcyB0cnVuY2F0ZWQuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBudW1iZXIgb2Ygcm93cyBpbiB0aGUgcmVzdWx0IHNldC5cbiAqL1xuICAgIHJvd19jb3VudDogei5udW1iZXIoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIG51bWJlciBvZiByb3dzIGluIHRoZSByZXN1bHQgc2V0LlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZVNlbmRNZXNzYWdlRmVlZGJhY2tSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnZlcnNhdGlvbi5cbiAqL1xuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnZlcnNhdGlvbi5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVzc2FnZSB0byBwcm92aWRlIGZlZWRiYWNrIGZvci5cbiAqL1xuICAgIG1lc3NhZ2VfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZXNzYWdlIHRvIHByb3ZpZGUgZmVlZGJhY2sgZm9yLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgcmF0aW5nIChQT1NJVElWRSwgTkVHQVRJVkUsIG9yIE5PTkUpLlxuICovXG4gICAgcmF0aW5nOiBnZW5pZUZlZWRiYWNrUmF0aW5nU2NoZW1hLmRlc2NyaWJlKFwiVGhlIHJhdGluZyAoUE9TSVRJVkUsIE5FR0FUSVZFLCBvciBOT05FKS5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2VuaWUgc3BhY2Ugd2hlcmUgdGhlIG1lc3NhZ2UgaXMgbG9jYXRlZC5cbiAqL1xuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2VuaWUgc3BhY2Ugd2hlcmUgdGhlIG1lc3NhZ2UgaXMgbG9jYXRlZC5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVTdGFydENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlIHRoYXQgc3RhcnRzIHRoZSBjb252ZXJzYXRpb24uXG4gKi9cbiAgICBjb250ZW50OiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIHRleHQgb2YgdGhlIG1lc3NhZ2UgdGhhdCBzdGFydHMgdGhlIGNvbnZlcnNhdGlvbi5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2VuaWUgc3BhY2Ugd2hlcmUgeW91IHdhbnQgdG8gc3RhcnQgYSBjb252ZXJzYXRpb24uXG4gKi9cbiAgICBzcGFjZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIEdlbmllIHNwYWNlIHdoZXJlIHlvdSB3YW50IHRvIHN0YXJ0IGEgY29udmVyc2F0aW9uLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZVRyYXNoU3BhY2VSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIEdlbmllIHNwYWNlIHRvIGJlIHNlbnQgdG8gdGhlIHRyYXNoLlxuICovXG4gICAgc3BhY2VfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBHZW5pZSBzcGFjZSB0byBiZSBzZW50IHRvIHRoZSB0cmFzaC5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0RGFzaGJvYXJkUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQuXG4gKi9cbiAgICBkYXNoYm9hcmRfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdldFB1Ymxpc2hlZERhc2hib2FyZFJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVVVJRCBpZGVudGlmeWluZyB0aGUgcHVibGlzaGVkIGRhc2hib2FyZC5cbiAqL1xuICAgIGRhc2hib2FyZF9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIHB1Ymxpc2hlZCBkYXNoYm9hcmQuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdldFB1Ymxpc2hlZERhc2hib2FyZFRva2VuSW5mb1JlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVVVJRCBpZGVudGlmeWluZyB0aGUgcHVibGlzaGVkIGRhc2hib2FyZC5cbiAqL1xuICAgIGRhc2hib2FyZF9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIHB1Ymxpc2hlZCBkYXNoYm9hcmQuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVkIGV4dGVybmFsIHZhbHVlIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBjdXN0b20gY2xhaW0uXG4gKi9cbiAgICBleHRlcm5hbF92YWx1ZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUHJvdmlkZWQgZXh0ZXJuYWwgdmFsdWUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGN1c3RvbSBjbGFpbS5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZWQgZXh0ZXJuYWwgdmlld2VyIGlkIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBjdXN0b20gY2xhaW0uXG4gKi9cbiAgICBleHRlcm5hbF92aWV3ZXJfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlByb3ZpZGVkIGV4dGVybmFsIHZpZXdlciBpZCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgY3VzdG9tIGNsYWltLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBhdXRob3JpemF0aW9uRGV0YWlsc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRzIGRvd25zY29wZWQgcGVybWlzc2lvbiBydWxlcyB3aXRoIHNwZWNpZmljIGFjY2VzcyByaWdodHMuIFRoaXMgZmllbGQgaXMgc3BlY2lmaWMgdG8gYHdvcmtzcGFjZV9ydWxlX3NldGAgY29uc3RyYWludC5cbiAqL1xuICAgIGdyYW50X3J1bGVzOiB6LmFycmF5KGF1dGhvcml6YXRpb25EZXRhaWxzR3JhbnRSdWxlU2NoZW1hKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUmVwcmVzZW50cyBkb3duc2NvcGVkIHBlcm1pc3Npb24gcnVsZXMgd2l0aCBzcGVjaWZpYyBhY2Nlc3MgcmlnaHRzLiBUaGlzIGZpZWxkIGlzIHNwZWNpZmljIHRvIGB3b3Jrc3BhY2VfcnVsZV9zZXRgIGNvbnN0cmFpbnQuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBhY2wgcGF0aCBvZiB0aGUgdHJlZSBzdG9yZSByZXNvdXJjZSByZXNvdXJjZS5cbiAqL1xuICAgIHJlc291cmNlX2xlZ2FjeV9hY2xfcGF0aDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIGFjbCBwYXRoIG9mIHRoZSB0cmVlIHN0b3JlIHJlc291cmNlIHJlc291cmNlLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgcmVzb3VyY2UgbmFtZSB0byB3aGljaCB0aGUgYXV0aG9yaXphdGlvbiBydWxlIGFwcGxpZXMuIFRoaXMgZmllbGQgaXMgc3BlY2lmaWMgdG8gYHdvcmtzcGFjZV9ydWxlX3NldGAgY29uc3RyYWludC4gRm9ybWF0OiBgd29ya3NwYWNlcy97d29ya3NwYWNlX2lkfS9kYXNoYm9hcmRzL3tkYXNoYm9hcmRfaWR9YFxuICovXG4gICAgcmVzb3VyY2VfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIHJlc291cmNlIG5hbWUgdG8gd2hpY2ggdGhlIGF1dGhvcml6YXRpb24gcnVsZSBhcHBsaWVzLiBUaGlzIGZpZWxkIGlzIHNwZWNpZmljIHRvIGB3b3Jrc3BhY2VfcnVsZV9zZXRgIGNvbnN0cmFpbnQuIEZvcm1hdDogYHdvcmtzcGFjZXMve3dvcmtzcGFjZV9pZH0vZGFzaGJvYXJkcy97ZGFzaGJvYXJkX2lkfWBcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgYXV0aG9yaXphdGlvbiBkb3duc2NvcGluZyBwb2xpY3kuIEV4OiBgd29ya3NwYWNlX3J1bGVfc2V0YCBkZWZpbmVzIGFjY2VzcyBydWxlcyBmb3IgYSBzcGVjaWZpYyB3b3Jrc3BhY2UgcmVzb3VyY2VcbiAqL1xuICAgIHR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSB0eXBlIG9mIGF1dGhvcml6YXRpb24gZG93bnNjb3BpbmcgcG9saWN5LiBFeDogYHdvcmtzcGFjZV9ydWxlX3NldGAgZGVmaW5lcyBhY2Nlc3MgcnVsZXMgZm9yIGEgc3BlY2lmaWMgd29ya3NwYWNlIHJlc291cmNlXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdldFNjaGVkdWxlUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgdG8gd2hpY2ggdGhlIHNjaGVkdWxlIGJlbG9uZ3MuXG4gKi9cbiAgICBkYXNoYm9hcmRfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgdG8gd2hpY2ggdGhlIHNjaGVkdWxlIGJlbG9uZ3MuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFVVSUQgaWRlbnRpZnlpbmcgdGhlIHNjaGVkdWxlLlxuICovXG4gICAgc2NoZWR1bGVfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBzY2hlZHVsZS5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0U3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgd2hpY2ggdGhlIHN1YnNjcmlwdGlvbiBiZWxvbmdzLlxuICovXG4gICAgZGFzaGJvYXJkX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgZGFzaGJvYXJkIHdoaWNoIHRoZSBzdWJzY3JpcHRpb24gYmVsb25ncy5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVVVJRCBpZGVudGlmeWluZyB0aGUgc2NoZWR1bGUgd2hpY2ggdGhlIHN1YnNjcmlwdGlvbiBiZWxvbmdzLlxuICovXG4gICAgc2NoZWR1bGVfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBzY2hlZHVsZSB3aGljaCB0aGUgc3Vic2NyaXB0aW9uIGJlbG9uZ3MuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFVVSUQgaWRlbnRpZnlpbmcgdGhlIHN1YnNjcmlwdGlvbi5cbiAqL1xuICAgIHN1YnNjcmlwdGlvbl9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIHN1YnNjcmlwdGlvbi5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgbGlzdERhc2hib2FyZHNSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBudW1iZXIgb2YgZGFzaGJvYXJkcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gKi9cbiAgICBwYWdlX3NpemU6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBudW1iZXIgb2YgZGFzaGJvYXJkcyB0byByZXR1cm4gcGVyIHBhZ2UuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIEEgcGFnZSB0b2tlbiwgcmVjZWl2ZWQgZnJvbSBhIHByZXZpb3VzIGBMaXN0RGFzaGJvYXJkc2AgY2FsbC4gVGhpcyB0b2tlbiBjYW4gYmUgdXNlZCB0byByZXRyaWV2ZSB0aGUgc3Vic2VxdWVudCBwYWdlLlxuICovXG4gICAgcGFnZV90b2tlbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQSBwYWdlIHRva2VuLCByZWNlaXZlZCBmcm9tIGEgcHJldmlvdXMgYExpc3REYXNoYm9hcmRzYCBjYWxsLiBUaGlzIHRva2VuIGNhbiBiZSB1c2VkIHRvIHJldHJpZXZlIHRoZSBzdWJzZXF1ZW50IHBhZ2UuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBmbGFnIHRvIGluY2x1ZGUgZGFzaGJvYXJkcyBsb2NhdGVkIGluIHRoZSB0cmFzaC4gSWYgdW5zcGVjaWZpZWQsIG9ubHkgYWN0aXZlIGRhc2hib2FyZHMgd2lsbCBiZSByZXR1cm5lZC5cbiAqL1xuICAgIHNob3dfdHJhc2hlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBmbGFnIHRvIGluY2x1ZGUgZGFzaGJvYXJkcyBsb2NhdGVkIGluIHRoZSB0cmFzaC4gSWYgdW5zcGVjaWZpZWQsIG9ubHkgYWN0aXZlIGRhc2hib2FyZHMgd2lsbCBiZSByZXR1cm5lZC5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gYERBU0hCT0FSRF9WSUVXX0JBU0lDYG9ubHkgaW5jbHVkZXMgc3VtbWFyeSBtZXRhZGF0YSBmcm9tIHRoZSBkYXNoYm9hcmQuXG4gKi9cbiAgICB2aWV3OiBkYXNoYm9hcmRWaWV3U2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJgREFTSEJPQVJEX1ZJRVdfQkFTSUNgb25seSBpbmNsdWRlcyBzdW1tYXJ5IG1ldGFkYXRhIGZyb20gdGhlIGRhc2hib2FyZC5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZGFzaGJvYXJkU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSB0aW1lc3RhbXAgb2Ygd2hlbiB0aGUgZGFzaGJvYXJkIHdhcyBjcmVhdGVkLlxuICovXG4gICAgY3JlYXRlX3RpbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSB0aW1lc3RhbXAgb2Ygd2hlbiB0aGUgZGFzaGJvYXJkIHdhcyBjcmVhdGVkLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQuXG4gKi9cbiAgICBkYXNoYm9hcmRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIGRhc2hib2FyZC5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgZGFzaGJvYXJkLlxuICovXG4gICAgZGlzcGxheV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgZGlzcGxheSBuYW1lIG9mIHRoZSBkYXNoYm9hcmQuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBldGFnIGZvciB0aGUgZGFzaGJvYXJkLiBDYW4gYmUgb3B0aW9uYWxseSBwcm92aWRlZCBvbiB1cGRhdGVzIHRvIGVuc3VyZSB0aGF0IHRoZSBkYXNoYm9hcmQgaGFzIG5vdCBiZWVuIG1vZGlmaWVkIHNpbmNlIHRoZSBsYXN0IHJlYWQuIFRoaXMgZmllbGQgaXMgZXhjbHVkZWQgaW4gTGlzdCBEYXNoYm9hcmRzIHJlc3BvbnNlcy5cbiAqL1xuICAgIGV0YWc6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBldGFnIGZvciB0aGUgZGFzaGJvYXJkLiBDYW4gYmUgb3B0aW9uYWxseSBwcm92aWRlZCBvbiB1cGRhdGVzIHRvIGVuc3VyZSB0aGF0IHRoZSBkYXNoYm9hcmQgaGFzIG5vdCBiZWVuIG1vZGlmaWVkIHNpbmNlIHRoZSBsYXN0IHJlYWQuIFRoaXMgZmllbGQgaXMgZXhjbHVkZWQgaW4gTGlzdCBEYXNoYm9hcmRzIHJlc3BvbnNlcy5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIHN0YXRlIG9mIHRoZSBkYXNoYm9hcmQgcmVzb3VyY2UuIFVzZWQgZm9yIHRyYWNraW5nIHRyYXNoZWQgc3RhdHVzLlxuICovXG4gICAgbGlmZWN5Y2xlX3N0YXRlOiBsaWZlY3ljbGVTdGF0ZVNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIHN0YXRlIG9mIHRoZSBkYXNoYm9hcmQgcmVzb3VyY2UuIFVzZWQgZm9yIHRyYWNraW5nIHRyYXNoZWQgc3RhdHVzLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgd29ya3NwYWNlIHBhdGggb2YgdGhlIGZvbGRlciBjb250YWluaW5nIHRoZSBkYXNoYm9hcmQuIEluY2x1ZGVzIGxlYWRpbmcgc2xhc2ggYW5kIG5vIHRyYWlsaW5nIHNsYXNoLiBUaGlzIGZpZWxkIGlzIGV4Y2x1ZGVkIGluIExpc3QgRGFzaGJvYXJkcyByZXNwb25zZXMuXG4gKi9cbiAgICBwYXJlbnRfcGF0aDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIHdvcmtzcGFjZSBwYXRoIG9mIHRoZSBmb2xkZXIgY29udGFpbmluZyB0aGUgZGFzaGJvYXJkLiBJbmNsdWRlcyBsZWFkaW5nIHNsYXNoIGFuZCBubyB0cmFpbGluZyBzbGFzaC4gVGhpcyBmaWVsZCBpcyBleGNsdWRlZCBpbiBMaXN0IERhc2hib2FyZHMgcmVzcG9uc2VzLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgd29ya3NwYWNlIHBhdGggb2YgdGhlIGRhc2hib2FyZCBhc3NldCwgaW5jbHVkaW5nIHRoZSBmaWxlIG5hbWUuIEV4cG9ydGVkIGRhc2hib2FyZHMgYWx3YXlzIGhhdmUgdGhlIGZpbGUgZXh0ZW5zaW9uIGAubHZkYXNoLmpzb25gLiBUaGlzIGZpZWxkIGlzIGV4Y2x1ZGVkIGluIExpc3QgRGFzaGJvYXJkcyByZXNwb25zZXMuXG4gKi9cbiAgICBwYXRoOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgd29ya3NwYWNlIHBhdGggb2YgdGhlIGRhc2hib2FyZCBhc3NldCwgaW5jbHVkaW5nIHRoZSBmaWxlIG5hbWUuIEV4cG9ydGVkIGRhc2hib2FyZHMgYWx3YXlzIGhhdmUgdGhlIGZpbGUgZXh0ZW5zaW9uIGAubHZkYXNoLmpzb25gLiBUaGlzIGZpZWxkIGlzIGV4Y2x1ZGVkIGluIExpc3QgRGFzaGJvYXJkcyByZXNwb25zZXMuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBjb250ZW50cyBvZiB0aGUgZGFzaGJvYXJkIGluIHNlcmlhbGl6ZWQgc3RyaW5nIGZvcm0uIFRoaXMgZmllbGQgaXMgZXhjbHVkZWQgaW4gTGlzdCBEYXNoYm9hcmRzIHJlc3BvbnNlcy4gVXNlIHRoZSBbZ2V0IGRhc2hib2FyZCBBUEldIHRvIHJldHJpZXZlIGFuIGV4YW1wbGUgcmVzcG9uc2UsIHdoaWNoIGluY2x1ZGVzIHRoZSBgc2VyaWFsaXplZF9kYXNoYm9hcmRgIGZpZWxkLiBUaGlzIGZpZWxkIHByb3ZpZGVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIEpTT04gc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgZGFzaGJvYXJkJ3MgbGF5b3V0IGFuZCBjb21wb25lbnRzLiBbZ2V0IGRhc2hib2FyZCBBUEldOiBodHRwczovL2RvY3MuZGF0YWJyaWNrcy5jb20vYXBpL3dvcmtzcGFjZS9sYWtldmlldy9nZXRcbiAqL1xuICAgIHNlcmlhbGl6ZWRfZGFzaGJvYXJkOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgY29udGVudHMgb2YgdGhlIGRhc2hib2FyZCBpbiBzZXJpYWxpemVkIHN0cmluZyBmb3JtLiBUaGlzIGZpZWxkIGlzIGV4Y2x1ZGVkIGluIExpc3QgRGFzaGJvYXJkcyByZXNwb25zZXMuIFVzZSB0aGUgW2dldCBkYXNoYm9hcmQgQVBJXSB0byByZXRyaWV2ZSBhbiBleGFtcGxlIHJlc3BvbnNlLCB3aGljaCBpbmNsdWRlcyB0aGUgYHNlcmlhbGl6ZWRfZGFzaGJvYXJkYCBmaWVsZC4gVGhpcyBmaWVsZCBwcm92aWRlcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBKU09OIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhlIGRhc2hib2FyZCdzIGxheW91dCBhbmQgY29tcG9uZW50cy4gW2dldCBkYXNoYm9hcmQgQVBJXTogaHR0cHM6Ly9kb2NzLmRhdGFicmlja3MuY29tL2FwaS93b3Jrc3BhY2UvbGFrZXZpZXcvZ2V0XCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSB0aW1lc3RhbXAgb2Ygd2hlbiB0aGUgZGFzaGJvYXJkIHdhcyBsYXN0IHVwZGF0ZWQgYnkgdGhlIHVzZXIuIFRoaXMgZmllbGQgaXMgZXhjbHVkZWQgaW4gTGlzdCBEYXNoYm9hcmRzIHJlc3BvbnNlcy5cbiAqL1xuICAgIHVwZGF0ZV90aW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgdGltZXN0YW1wIG9mIHdoZW4gdGhlIGRhc2hib2FyZCB3YXMgbGFzdCB1cGRhdGVkIGJ5IHRoZSB1c2VyLiBUaGlzIGZpZWxkIGlzIGV4Y2x1ZGVkIGluIExpc3QgRGFzaGJvYXJkcyByZXNwb25zZXMuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSB3YXJlaG91c2UgSUQgdXNlZCB0byBydW4gdGhlIGRhc2hib2FyZC5cbiAqL1xuICAgIHdhcmVob3VzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIHdhcmVob3VzZSBJRCB1c2VkIHRvIHJ1biB0aGUgZGFzaGJvYXJkLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBsaXN0U2NoZWR1bGVzUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgdG8gd2hpY2ggdGhlIHNjaGVkdWxlcyBiZWxvbmdzLlxuICovXG4gICAgZGFzaGJvYXJkX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgZGFzaGJvYXJkIHRvIHdoaWNoIHRoZSBzY2hlZHVsZXMgYmVsb25ncy5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIG51bWJlciBvZiBzY2hlZHVsZXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICovXG4gICAgcGFnZV9zaXplOiB6Lm51bWJlcigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgbnVtYmVyIG9mIHNjaGVkdWxlcyB0byByZXR1cm4gcGVyIHBhZ2UuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIEEgcGFnZSB0b2tlbiwgcmVjZWl2ZWQgZnJvbSBhIHByZXZpb3VzIGBMaXN0U2NoZWR1bGVzYCBjYWxsLiBVc2UgdGhpcyB0byByZXRyaWV2ZSB0aGUgc3Vic2VxdWVudCBwYWdlLlxuICovXG4gICAgcGFnZV90b2tlbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQSBwYWdlIHRva2VuLCByZWNlaXZlZCBmcm9tIGEgcHJldmlvdXMgYExpc3RTY2hlZHVsZXNgIGNhbGwuIFVzZSB0aGlzIHRvIHJldHJpZXZlIHRoZSBzdWJzZXF1ZW50IHBhZ2UuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGxpc3RTdWJzY3JpcHRpb25zUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgd2hpY2ggdGhlIHN1YnNjcmlwdGlvbnMgYmVsb25ncy5cbiAqL1xuICAgIGRhc2hib2FyZF9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIGRhc2hib2FyZCB3aGljaCB0aGUgc3Vic2NyaXB0aW9ucyBiZWxvbmdzLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgbnVtYmVyIG9mIHN1YnNjcmlwdGlvbnMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICovXG4gICAgcGFnZV9zaXplOiB6Lm51bWJlcigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgbnVtYmVyIG9mIHN1YnNjcmlwdGlvbnMgdG8gcmV0dXJuIHBlciBwYWdlLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBBIHBhZ2UgdG9rZW4sIHJlY2VpdmVkIGZyb20gYSBwcmV2aW91cyBgTGlzdFN1YnNjcmlwdGlvbnNgIGNhbGwuIFVzZSB0aGlzIHRvIHJldHJpZXZlIHRoZSBzdWJzZXF1ZW50IHBhZ2UuXG4gKi9cbiAgICBwYWdlX3Rva2VuOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBIHBhZ2UgdG9rZW4sIHJlY2VpdmVkIGZyb20gYSBwcmV2aW91cyBgTGlzdFN1YnNjcmlwdGlvbnNgIGNhbGwuIFVzZSB0aGlzIHRvIHJldHJpZXZlIHRoZSBzdWJzZXF1ZW50IHBhZ2UuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFVVSUQgaWRlbnRpZnlpbmcgdGhlIHNjaGVkdWxlIHdoaWNoIHRoZSBzdWJzY3JpcHRpb25zIGJlbG9uZ3MuXG4gKi9cbiAgICBzY2hlZHVsZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIHNjaGVkdWxlIHdoaWNoIHRoZSBzdWJzY3JpcHRpb25zIGJlbG9uZ3MuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IG1lc3NhZ2VFcnJvclR5cGVTY2hlbWEgPSB6LnVuaW9uKFt6LmxpdGVyYWwoXCJCTE9DS19NVUxUSVBMRV9FWEVDVVRJT05TX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiQ0hBVF9DT01QTEVUSU9OX0NMSUVOVF9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIkNIQVRfQ09NUExFVElPTl9DTElFTlRfVElNRU9VVF9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIkNIQVRfQ09NUExFVElPTl9ORVRXT1JLX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiQ09OVEVOVF9GSUxURVJfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJDT05URVhUX0VYQ0VFREVEX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiQ09VTERfTk9UX0dFVF9NT0RFTF9ERVBMT1lNRU5UU19FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIkNPVUxEX05PVF9HRVRfVUNfU0NIRU1BX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiREVQTE9ZTUVOVF9OT1RfRk9VTkRfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJERVNDUklCRV9RVUVSWV9JTlZBTElEX1NRTF9FUlJPUlwiKSwgei5saXRlcmFsKFwiREVTQ1JJQkVfUVVFUllfVElNRU9VVFwiKSwgei5saXRlcmFsKFwiREVTQ1JJQkVfUVVFUllfVU5FWFBFQ1RFRF9GQUlMVVJFXCIpLCB6LmxpdGVyYWwoXCJFWENFRURFRF9NQVhfVE9LRU5fTEVOR1RIX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiRlVOQ1RJT05TX05PVF9BVkFJTEFCTEVfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJGVU5DVElPTl9BUkdVTUVOVFNfSU5WQUxJRF9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIkZVTkNUSU9OX0FSR1VNRU5UU19JTlZBTElEX0pTT05fRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJGVU5DVElPTl9BUkdVTUVOVFNfSU5WQUxJRF9UWVBFX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiRlVOQ1RJT05fQ0FMTF9NSVNTSU5HX1BBUkFNRVRFUl9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIkdFTkVSQVRFRF9TUUxfUVVFUllfVE9PX0xPTkdfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJHRU5FUklDX0NIQVRfQ09NUExFVElPTl9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIkdFTkVSSUNfQ0hBVF9DT01QTEVUSU9OX1NFUlZJQ0VfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJHRU5FUklDX1NRTF9FWEVDX0FQSV9DQUxMX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiSUxMRUdBTF9QQVJBTUVURVJfREVGSU5JVElPTl9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIklOVEVSTkFMX0NBVEFMT0dfQVNTRVRfQ1JFQVRJT05fRkFJTEVEX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiSU5URVJOQUxfQ0FUQUxPR19BU1NFVF9DUkVBVElPTl9PTkdPSU5HX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiSU5URVJOQUxfQ0FUQUxPR19BU1NFVF9DUkVBVElPTl9VTlNVUFBPUlRFRF9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIklOVEVSTkFMX0NBVEFMT0dfTUlTU0lOR19VQ19QQVRIX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiSU5URVJOQUxfQ0FUQUxPR19QQVRIX09WRVJMQVBfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJJTlZBTElEX0NFUlRJRklFRF9BTlNXRVJfRlVOQ1RJT05fRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJJTlZBTElEX0NFUlRJRklFRF9BTlNXRVJfSURFTlRJRklFUl9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIklOVkFMSURfQ0hBVF9DT01QTEVUSU9OX0FSR1VNRU5UU19KU09OX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiSU5WQUxJRF9DSEFUX0NPTVBMRVRJT05fSlNPTl9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIklOVkFMSURfQ09NUExFVElPTl9SRVFVRVNUX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiSU5WQUxJRF9GVU5DVElPTl9DQUxMX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiSU5WQUxJRF9TUUxfTVVMVElQTEVfREFUQVNFVF9SRUZFUkVOQ0VTX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiSU5WQUxJRF9TUUxfTVVMVElQTEVfU1RBVEVNRU5UU19FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIklOVkFMSURfU1FMX1VOS05PV05fVEFCTEVfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJJTlZBTElEX1RBQkxFX0lERU5USUZJRVJfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJMT0NBTF9DT05URVhUX0VYQ0VFREVEX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiTUVTU0FHRV9BVFRBQ0hNRU5UX1RPT19MT05HX0VSUk9SXCIpLCB6LmxpdGVyYWwoXCJNRVNTQUdFX0NBTkNFTExFRF9XSElMRV9FWEVDVVRJTkdfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJNRVNTQUdFX0RFTEVURURfV0hJTEVfRVhFQ1VUSU5HX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiTUVTU0FHRV9VUERBVEVEX1dISUxFX0VYRUNVVElOR19FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIk1JU1NJTkdfU1FMX1FVRVJZX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiTk9fREVQTE9ZTUVOVFNfQVZBSUxBQkxFX1RPX1dPUktTUEFDRVwiKSwgei5saXRlcmFsKFwiTk9fUVVFUllfVE9fVklTVUFMSVpFX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiTk9fVEFCTEVTX1RPX1FVRVJZX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiUkFURV9MSU1JVF9FWENFRURFRF9HRU5FUklDX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiUkFURV9MSU1JVF9FWENFRURFRF9TUEVDSUZJRURfV0FJVF9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIlJFUExZX1BST0NFU1NfVElNRU9VVF9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIlJFVFJZQUJMRV9QUk9DRVNTSU5HX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiU1FMX0VYRUNVVElPTl9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIlNUT1BfUFJPQ0VTU19EVUVfVE9fQVVUT19SRUdFTkVSQVRFXCIpLCB6LmxpdGVyYWwoXCJUQUJMRVNfTUlTU0lOR19FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIlRPT19NQU5ZX0NFUlRJRklFRF9BTlNXRVJTX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiVE9PX01BTllfVEFCTEVTX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiVU5FWFBFQ1RFRF9SRVBMWV9QUk9DRVNTX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiVU5LTk9XTl9BSV9NT0RFTFwiKSwgei5saXRlcmFsKFwiVU5TVVBQT1JURURfQ09OVkVSU0FUSU9OX1RZUEVfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJXQVJFSE9VU0VfQUNDRVNTX01JU1NJTkdfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJXQVJFSE9VU0VfTk9UX0ZPVU5EX0VYQ0VQVElPTlwiKV0pO1xuXG5leHBvcnQgY29uc3QgbWlncmF0ZURhc2hib2FyZFJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gRGlzcGxheSBuYW1lIGZvciB0aGUgbmV3IExha2V2aWV3IGRhc2hib2FyZC5cbiAqL1xuICAgIGRpc3BsYXlfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRGlzcGxheSBuYW1lIGZvciB0aGUgbmV3IExha2V2aWV3IGRhc2hib2FyZC5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIHdvcmtzcGFjZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gY29udGFpbiB0aGUgbWlncmF0ZWQgTGFrZXZpZXcgZGFzaGJvYXJkLlxuICovXG4gICAgcGFyZW50X3BhdGg6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSB3b3Jrc3BhY2UgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGNvbnRhaW4gdGhlIG1pZ3JhdGVkIExha2V2aWV3IGRhc2hib2FyZC5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVVVJRCBvZiB0aGUgZGFzaGJvYXJkIHRvIGJlIG1pZ3JhdGVkLlxuICovXG4gICAgc291cmNlX2Rhc2hib2FyZF9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgb2YgdGhlIGRhc2hib2FyZCB0byBiZSBtaWdyYXRlZC5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gRmxhZyB0byBpbmRpY2F0ZSBpZiBtdXN0YWNoZSBwYXJhbWV0ZXIgc3ludGF4ICh7eyBwYXJhbSB9fSkgc2hvdWxkIGJlIGF1dG8tdXBkYXRlZCB0byBuYW1lZCBzeW50YXggKDpwYXJhbSkgd2hlbiBjb252ZXJ0aW5nIGRhdGFzZXRzIGluIHRoZSBkYXNoYm9hcmQuXG4gKi9cbiAgICB1cGRhdGVfcGFyYW1ldGVyX3N5bnRheDogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkZsYWcgdG8gaW5kaWNhdGUgaWYgbXVzdGFjaGUgcGFyYW1ldGVyIHN5bnRheCAoe3sgcGFyYW0gfX0pIHNob3VsZCBiZSBhdXRvLXVwZGF0ZWQgdG8gbmFtZWQgc3ludGF4ICg6cGFyYW0pIHdoZW4gY29udmVydGluZyBkYXRhc2V0cyBpbiB0aGUgZGFzaGJvYXJkLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBwdWJsaXNoUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgdG8gYmUgcHVibGlzaGVkLlxuICovXG4gICAgZGFzaGJvYXJkX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgZGFzaGJvYXJkIHRvIGJlIHB1Ymxpc2hlZC5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gRmxhZyB0byBpbmRpY2F0ZSBpZiB0aGUgcHVibGlzaGVyJ3MgY3JlZGVudGlhbHMgc2hvdWxkIGJlIGVtYmVkZGVkIGluIHRoZSBwdWJsaXNoZWQgZGFzaGJvYXJkLiBUaGVzZSBlbWJlZGRlZCBjcmVkZW50aWFscyB3aWxsIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgcHVibGlzaGVkIGRhc2hib2FyZCdzIHF1ZXJpZXMuXG4gKi9cbiAgICBlbWJlZF9jcmVkZW50aWFsczogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkZsYWcgdG8gaW5kaWNhdGUgaWYgdGhlIHB1Ymxpc2hlcidzIGNyZWRlbnRpYWxzIHNob3VsZCBiZSBlbWJlZGRlZCBpbiB0aGUgcHVibGlzaGVkIGRhc2hib2FyZC4gVGhlc2UgZW1iZWRkZWQgY3JlZGVudGlhbHMgd2lsbCBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlIHB1Ymxpc2hlZCBkYXNoYm9hcmQncyBxdWVyaWVzLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHdhcmVob3VzZSB0aGF0IGNhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSB3YXJlaG91c2Ugd2hpY2ggd2FzIHNldCBpbiB0aGUgZHJhZnQuXG4gKi9cbiAgICB3YXJlaG91c2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBJRCBvZiB0aGUgd2FyZWhvdXNlIHRoYXQgY2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIHdhcmVob3VzZSB3aGljaCB3YXMgc2V0IGluIHRoZSBkcmFmdC5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgcHVibGlzaGVkRGFzaGJvYXJkU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIHB1Ymxpc2hlZCBkYXNoYm9hcmQuXG4gKi9cbiAgICBkaXNwbGF5X25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIHB1Ymxpc2hlZCBkYXNoYm9hcmQuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIEluZGljYXRlcyB3aGV0aGVyIGNyZWRlbnRpYWxzIGFyZSBlbWJlZGRlZCBpbiB0aGUgcHVibGlzaGVkIGRhc2hib2FyZC5cbiAqL1xuICAgIGVtYmVkX2NyZWRlbnRpYWxzOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSW5kaWNhdGVzIHdoZXRoZXIgY3JlZGVudGlhbHMgYXJlIGVtYmVkZGVkIGluIHRoZSBwdWJsaXNoZWQgZGFzaGJvYXJkLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgdGltZXN0YW1wIG9mIHdoZW4gdGhlIHB1Ymxpc2hlZCBkYXNoYm9hcmQgd2FzIGxhc3QgcmV2aXNlZC5cbiAqL1xuICAgIHJldmlzaW9uX2NyZWF0ZV90aW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgdGltZXN0YW1wIG9mIHdoZW4gdGhlIHB1Ymxpc2hlZCBkYXNoYm9hcmQgd2FzIGxhc3QgcmV2aXNlZC5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIHdhcmVob3VzZSBJRCB1c2VkIHRvIHJ1biB0aGUgcHVibGlzaGVkIGRhc2hib2FyZC5cbiAqL1xuICAgIHdhcmVob3VzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIHdhcmVob3VzZSBJRCB1c2VkIHRvIHJ1biB0aGUgcHVibGlzaGVkIGRhc2hib2FyZC5cIilcbn0pO1xuXG5leHBvcnQgY29uc3Qgc2NoZWR1bGVQYXVzZVN0YXR1c1NjaGVtYSA9IHoudW5pb24oW3oubGl0ZXJhbChcIlBBVVNFRFwiKSwgei5saXRlcmFsKFwiVU5QQVVTRURcIildKTtcblxuZXhwb3J0IGNvbnN0IHN1YnNjcmlwdGlvblN1YnNjcmliZXJEZXN0aW5hdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgY2Fub25pY2FsIGlkZW50aWZpZXIgb2YgdGhlIGRlc3RpbmF0aW9uIHRvIHJlY2VpdmUgZW1haWwgbm90aWZpY2F0aW9uLlxuICovXG4gICAgZGVzdGluYXRpb25faWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgY2Fub25pY2FsIGlkZW50aWZpZXIgb2YgdGhlIGRlc3RpbmF0aW9uIHRvIHJlY2VpdmUgZW1haWwgbm90aWZpY2F0aW9uLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBzdWJzY3JpcHRpb25TdWJzY3JpYmVyVXNlclNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVc2VySWQgb2YgdGhlIHN1YnNjcmliZXIuXG4gKi9cbiAgICB1c2VyX2lkOiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiVXNlcklkIG9mIHRoZSBzdWJzY3JpYmVyLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBzdWJzY3JpYmVyU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBkZXN0aW5hdGlvbiB0byByZWNlaXZlIHRoZSBzdWJzY3JpcHRpb24gZW1haWwuIFRoaXMgcGFyYW1ldGVyIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGB1c2VyX3N1YnNjcmliZXJgLlxuICovXG4gICAgZGVzdGluYXRpb25fc3Vic2NyaWJlcjogc3Vic2NyaXB0aW9uU3Vic2NyaWJlckRlc3RpbmF0aW9uU2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgZGVzdGluYXRpb24gdG8gcmVjZWl2ZSB0aGUgc3Vic2NyaXB0aW9uIGVtYWlsLiBUaGlzIHBhcmFtZXRlciBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgdXNlcl9zdWJzY3JpYmVyYC5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIHVzZXIgdG8gcmVjZWl2ZSB0aGUgc3Vic2NyaXB0aW9uIGVtYWlsLiBUaGlzIHBhcmFtZXRlciBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgZGVzdGluYXRpb25fc3Vic2NyaWJlcmAuXG4gKi9cbiAgICB1c2VyX3N1YnNjcmliZXI6IHN1YnNjcmlwdGlvblN1YnNjcmliZXJVc2VyU2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgdXNlciB0byByZWNlaXZlIHRoZSBzdWJzY3JpcHRpb24gZW1haWwuIFRoaXMgcGFyYW1ldGVyIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGBkZXN0aW5hdGlvbl9zdWJzY3JpYmVyYC5cIilcbn0pO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQdXJwb3NlL2ludGVudCBvZiBhIHRleHQgYXR0YWNobWVudFxuICovXG5leHBvcnQgY29uc3QgdGV4dEF0dGFjaG1lbnRQdXJwb3NlU2NoZW1hID0gei5saXRlcmFsKFwiRk9MTE9XX1VQX1FVRVNUSU9OXCIpLmRlc2NyaWJlKFwiUHVycG9zZS9pbnRlbnQgb2YgYSB0ZXh0IGF0dGFjaG1lbnRcIik7XG5cbmV4cG9ydCBjb25zdCB0cmFzaERhc2hib2FyZFJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVVVJRCBpZGVudGlmeWluZyB0aGUgZGFzaGJvYXJkLlxuICovXG4gICAgZGFzaGJvYXJkX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgZGFzaGJvYXJkLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCB1bnB1Ymxpc2hEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFVVSUQgaWRlbnRpZnlpbmcgdGhlIHB1Ymxpc2hlZCBkYXNoYm9hcmQuXG4gKi9cbiAgICBkYXNoYm9hcmRfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBwdWJsaXNoZWQgZGFzaGJvYXJkLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGRhc2hib2FyZDogZGFzaGJvYXJkU2NoZW1hLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFVVSUQgaWRlbnRpZnlpbmcgdGhlIGRhc2hib2FyZC5cbiAqL1xuICAgIGRhc2hib2FyZF9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIGRhc2hib2FyZC5cIilcbn0pO1xuXG5leHBvcnQgY29uc3Qgc2NoZWR1bGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gQSB0aW1lc3RhbXAgaW5kaWNhdGluZyB3aGVuIHRoZSBzY2hlZHVsZSB3YXMgY3JlYXRlZC5cbiAqL1xuICAgIGNyZWF0ZV90aW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBIHRpbWVzdGFtcCBpbmRpY2F0aW5nIHdoZW4gdGhlIHNjaGVkdWxlIHdhcyBjcmVhdGVkLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgY3JvbiBleHByZXNzaW9uIGRlc2NyaWJpbmcgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgcGVyaW9kaWMgcmVmcmVzaCBmb3IgdGhpcyBzY2hlZHVsZS5cbiAqL1xuICAgIGNyb25fc2NoZWR1bGU6IGNyb25TY2hlZHVsZVNjaGVtYS5kZXNjcmliZShcIlRoZSBjcm9uIGV4cHJlc3Npb24gZGVzY3JpYmluZyB0aGUgZnJlcXVlbmN5IG9mIHRoZSBwZXJpb2RpYyByZWZyZXNoIGZvciB0aGlzIHNjaGVkdWxlLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgdG8gd2hpY2ggdGhlIHNjaGVkdWxlIGJlbG9uZ3MuXG4gKi9cbiAgICBkYXNoYm9hcmRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIGRhc2hib2FyZCB0byB3aGljaCB0aGUgc2NoZWR1bGUgYmVsb25ncy5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIGRpc3BsYXkgbmFtZSBmb3Igc2NoZWR1bGUuXG4gKi9cbiAgICBkaXNwbGF5X25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBkaXNwbGF5IG5hbWUgZm9yIHNjaGVkdWxlLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgZXRhZyBmb3IgdGhlIHNjaGVkdWxlLiBNdXN0IGJlIGxlZnQgZW1wdHkgb24gY3JlYXRlLCBtdXN0IGJlIHByb3ZpZGVkIG9uIHVwZGF0ZXMgdG8gZW5zdXJlIHRoYXQgdGhlIHNjaGVkdWxlIGhhcyBub3QgYmVlbiBtb2RpZmllZCBzaW5jZSB0aGUgbGFzdCByZWFkLCBhbmQgY2FuIGJlIG9wdGlvbmFsbHkgcHJvdmlkZWQgb24gZGVsZXRlLlxuICovXG4gICAgZXRhZzogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIGV0YWcgZm9yIHRoZSBzY2hlZHVsZS4gTXVzdCBiZSBsZWZ0IGVtcHR5IG9uIGNyZWF0ZSwgbXVzdCBiZSBwcm92aWRlZCBvbiB1cGRhdGVzIHRvIGVuc3VyZSB0aGF0IHRoZSBzY2hlZHVsZSBoYXMgbm90IGJlZW4gbW9kaWZpZWQgc2luY2UgdGhlIGxhc3QgcmVhZCwgYW5kIGNhbiBiZSBvcHRpb25hbGx5IHByb3ZpZGVkIG9uIGRlbGV0ZS5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIHN0YXR1cyBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIHNjaGVkdWxlIGlzIHBhdXNlZCBvciBub3QuXG4gKi9cbiAgICBwYXVzZV9zdGF0dXM6IHNjaGVkdWxlUGF1c2VTdGF0dXNTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBzdGF0dXMgaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBzY2hlZHVsZSBpcyBwYXVzZWQgb3Igbm90LlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVVUlEIGlkZW50aWZ5aW5nIHRoZSBzY2hlZHVsZS5cbiAqL1xuICAgIHNjaGVkdWxlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBzY2hlZHVsZS5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gQSB0aW1lc3RhbXAgaW5kaWNhdGluZyB3aGVuIHRoZSBzY2hlZHVsZSB3YXMgbGFzdCB1cGRhdGVkLlxuICovXG4gICAgdXBkYXRlX3RpbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkEgdGltZXN0YW1wIGluZGljYXRpbmcgd2hlbiB0aGUgc2NoZWR1bGUgd2FzIGxhc3QgdXBkYXRlZC5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIHdhcmVob3VzZSBpZCB0byBydW4gdGhlIGRhc2hib2FyZCB3aXRoIGZvciB0aGUgc2NoZWR1bGUuXG4gKi9cbiAgICB3YXJlaG91c2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSB3YXJlaG91c2UgaWQgdG8gcnVuIHRoZSBkYXNoYm9hcmQgd2l0aCBmb3IgdGhlIHNjaGVkdWxlLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGRhc2hib2FyZDogZGFzaGJvYXJkU2NoZW1hXG59KTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNjaGVkdWxlUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgdG8gd2hpY2ggdGhlIHNjaGVkdWxlIGJlbG9uZ3MuXG4gKi9cbiAgICBkYXNoYm9hcmRfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgdG8gd2hpY2ggdGhlIHNjaGVkdWxlIGJlbG9uZ3MuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBzY2hlZHVsZSB0byBjcmVhdGUuIEEgZGFzaGJvYXJkIGlzIGxpbWl0ZWQgdG8gMTAgc2NoZWR1bGVzLlxuICovXG4gICAgc2NoZWR1bGU6IHNjaGVkdWxlU2NoZW1hLmRlc2NyaWJlKFwiVGhlIHNjaGVkdWxlIHRvIGNyZWF0ZS4gQSBkYXNoYm9hcmQgaXMgbGltaXRlZCB0byAxMCBzY2hlZHVsZXMuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IHN1YnNjcmlwdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBBIHRpbWVzdGFtcCBpbmRpY2F0aW5nIHdoZW4gdGhlIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZC5cbiAqL1xuICAgIGNyZWF0ZV90aW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBIHRpbWVzdGFtcCBpbmRpY2F0aW5nIHdoZW4gdGhlIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZC5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVXNlcklkIG9mIHRoZSB1c2VyIHdobyBhZGRzIHN1YnNjcmliZXJzICh1c2VycyBvciBub3RpZmljYXRpb24gZGVzdGluYXRpb25zKSB0byB0aGUgZGFzaGJvYXJkJ3Mgc2NoZWR1bGUuXG4gKi9cbiAgICBjcmVhdGVkX2J5X3VzZXJfaWQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlVzZXJJZCBvZiB0aGUgdXNlciB3aG8gYWRkcyBzdWJzY3JpYmVycyAodXNlcnMgb3Igbm90aWZpY2F0aW9uIGRlc3RpbmF0aW9ucykgdG8gdGhlIGRhc2hib2FyZCdzIHNjaGVkdWxlLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgdG8gd2hpY2ggdGhlIHN1YnNjcmlwdGlvbiBiZWxvbmdzLlxuICovXG4gICAgZGFzaGJvYXJkX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgdG8gd2hpY2ggdGhlIHN1YnNjcmlwdGlvbiBiZWxvbmdzLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgZXRhZyBmb3IgdGhlIHN1YnNjcmlwdGlvbi4gTXVzdCBiZSBsZWZ0IGVtcHR5IG9uIGNyZWF0ZSwgY2FuIGJlIG9wdGlvbmFsbHkgcHJvdmlkZWQgb24gZGVsZXRlIHRvIGVuc3VyZSB0aGF0IHRoZSBzdWJzY3JpcHRpb24gaGFzIG5vdCBiZWVuIGRlbGV0ZWQgc2luY2UgdGhlIGxhc3QgcmVhZC5cbiAqL1xuICAgIGV0YWc6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBldGFnIGZvciB0aGUgc3Vic2NyaXB0aW9uLiBNdXN0IGJlIGxlZnQgZW1wdHkgb24gY3JlYXRlLCBjYW4gYmUgb3B0aW9uYWxseSBwcm92aWRlZCBvbiBkZWxldGUgdG8gZW5zdXJlIHRoYXQgdGhlIHN1YnNjcmlwdGlvbiBoYXMgbm90IGJlZW4gZGVsZXRlZCBzaW5jZSB0aGUgbGFzdCByZWFkLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVVUlEIGlkZW50aWZ5aW5nIHRoZSBzY2hlZHVsZSB0byB3aGljaCB0aGUgc3Vic2NyaXB0aW9uIGJlbG9uZ3MuXG4gKi9cbiAgICBzY2hlZHVsZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgc2NoZWR1bGUgdG8gd2hpY2ggdGhlIHN1YnNjcmlwdGlvbiBiZWxvbmdzLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBTdWJzY3JpYmVyIGRldGFpbHMgZm9yIHVzZXJzIGFuZCBkZXN0aW5hdGlvbnMgdG8gYmUgYWRkZWQgYXMgc3Vic2NyaWJlcnMgdG8gdGhlIHNjaGVkdWxlLlxuICovXG4gICAgc3Vic2NyaWJlcjogc3Vic2NyaWJlclNjaGVtYS5kZXNjcmliZShcIlN1YnNjcmliZXIgZGV0YWlscyBmb3IgdXNlcnMgYW5kIGRlc3RpbmF0aW9ucyB0byBiZSBhZGRlZCBhcyBzdWJzY3JpYmVycyB0byB0aGUgc2NoZWR1bGUuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFVVSUQgaWRlbnRpZnlpbmcgdGhlIHN1YnNjcmlwdGlvbi5cbiAqL1xuICAgIHN1YnNjcmlwdGlvbl9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgc3Vic2NyaXB0aW9uLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBBIHRpbWVzdGFtcCBpbmRpY2F0aW5nIHdoZW4gdGhlIHN1YnNjcmlwdGlvbiB3YXMgbGFzdCB1cGRhdGVkLlxuICovXG4gICAgdXBkYXRlX3RpbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkEgdGltZXN0YW1wIGluZGljYXRpbmcgd2hlbiB0aGUgc3Vic2NyaXB0aW9uIHdhcyBsYXN0IHVwZGF0ZWQuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIERlc2NyaXB0aW9uIG9mIHRoZSBxdWVyeVxuICovXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRlc2NyaXB0aW9uIG9mIHRoZSBxdWVyeVwiKSxcbiAgICBpZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRpbWUgd2hlbiB0aGUgdXNlciB1cGRhdGVkIHRoZSBxdWVyeSBsYXN0XG4gKi9cbiAgICBsYXN0X3VwZGF0ZWRfdGltZXN0YW1wOiB6Lm51bWJlcigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaW1lIHdoZW4gdGhlIHVzZXIgdXBkYXRlZCB0aGUgcXVlcnkgbGFzdFwiKSxcbiAgICBwYXJhbWV0ZXJzOiB6LmFycmF5KHF1ZXJ5QXR0YWNobWVudFBhcmFtZXRlclNjaGVtYSkub3B0aW9uYWwoKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBBSSBnZW5lcmF0ZWQgU1FMIHF1ZXJ5XG4gKi9cbiAgICBxdWVyeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQUkgZ2VuZXJhdGVkIFNRTCBxdWVyeVwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBNZXRhZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHF1ZXJ5IHJlc3VsdC5cbiAqL1xuICAgIHF1ZXJ5X3Jlc3VsdF9tZXRhZGF0YTogZ2VuaWVSZXN1bHRNZXRhZGF0YVNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBxdWVyeSByZXN1bHQuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFN0YXRlbWVudCBFeGVjdXRpb24gQVBJIHN0YXRlbWVudCBpZC4gVXNlIFtHZXQgc3RhdHVzLCBtYW5pZmVzdCwgYW5kIHJlc3VsdCBmaXJzdCBjaHVua10oOm1ldGhvZDpzdGF0ZW1lbnRleGVjdXRpb24vZ2V0c3RhdGVtZW50KSB0byBnZXQgdGhlIGZ1bGwgcmVzdWx0IGRhdGEuXG4gKi9cbiAgICBzdGF0ZW1lbnRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlN0YXRlbWVudCBFeGVjdXRpb24gQVBJIHN0YXRlbWVudCBpZC4gVXNlIFtHZXQgc3RhdHVzLCBtYW5pZmVzdCwgYW5kIHJlc3VsdCBmaXJzdCBjaHVua10oOm1ldGhvZDpzdGF0ZW1lbnRleGVjdXRpb24vZ2V0c3RhdGVtZW50KSB0byBnZXQgdGhlIGZ1bGwgcmVzdWx0IGRhdGEuXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIE5hbWUgb2YgdGhlIHF1ZXJ5XG4gKi9cbiAgICB0aXRsZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTmFtZSBvZiB0aGUgcXVlcnlcIilcbn0pO1xuXG5leHBvcnQgY29uc3QgdGV4dEF0dGFjaG1lbnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gQUkgZ2VuZXJhdGVkIG1lc3NhZ2VcbiAqL1xuICAgIGNvbnRlbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkFJIGdlbmVyYXRlZCBtZXNzYWdlXCIpLFxuICAgIGlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gUHVycG9zZS9pbnRlbnQgb2YgdGhpcyB0ZXh0IGF0dGFjaG1lbnRcbiAqL1xuICAgIHB1cnBvc2U6IHRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUHVycG9zZS9pbnRlbnQgb2YgdGhpcyB0ZXh0IGF0dGFjaG1lbnRcIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVMaXN0U3BhY2VzUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVG9rZW4gdG8gZ2V0IHRoZSBuZXh0IHBhZ2Ugb2YgcmVzdWx0c1xuICovXG4gICAgbmV4dF9wYWdlX3Rva2VuOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUb2tlbiB0byBnZXQgdGhlIG5leHQgcGFnZSBvZiByZXN1bHRzXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIExpc3Qgb2YgR2VuaWUgc3BhY2VzXG4gKi9cbiAgICBzcGFjZXM6IHouYXJyYXkoZ2VuaWVTcGFjZVNjaGVtYSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkxpc3Qgb2YgR2VuaWUgc3BhY2VzXCIpXG59KTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuaWUgQUkgUmVzcG9uc2VcbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmllQXR0YWNobWVudFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBBdHRhY2htZW50IElEXG4gKi9cbiAgICBhdHRhY2htZW50X2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBdHRhY2htZW50IElEXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFF1ZXJ5IEF0dGFjaG1lbnQgaWYgR2VuaWUgcmVzcG9uZHMgd2l0aCBhIFNRTCBxdWVyeVxuICovXG4gICAgcXVlcnk6IGdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJRdWVyeSBBdHRhY2htZW50IGlmIEdlbmllIHJlc3BvbmRzIHdpdGggYSBTUUwgcXVlcnlcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gRm9sbG93LXVwIHF1ZXN0aW9ucyBzdWdnZXN0ZWQgYnkgR2VuaWVcbiAqL1xuICAgIHN1Z2dlc3RlZF9xdWVzdGlvbnM6IGdlbmllU3VnZ2VzdGVkUXVlc3Rpb25zQXR0YWNobWVudFNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRm9sbG93LXVwIHF1ZXN0aW9ucyBzdWdnZXN0ZWQgYnkgR2VuaWVcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGV4dCBBdHRhY2htZW50IGlmIEdlbmllIHJlc3BvbmRzIHdpdGggdGV4dFxuICovXG4gICAgdGV4dDogdGV4dEF0dGFjaG1lbnRTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcIlRleHQgQXR0YWNobWVudCBpZiBHZW5pZSByZXNwb25kcyB3aXRoIHRleHRcIilcbn0pO1xuXG5leHBvcnQgY29uc3QgbWVzc2FnZUVycm9yU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGVycm9yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdHlwZTogbWVzc2FnZUVycm9yVHlwZVNjaGVtYS5vcHRpb25hbCgpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllTWVzc2FnZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBBSS1nZW5lcmF0ZWQgcmVzcG9uc2UgdG8gdGhlIG1lc3NhZ2VcbiAqL1xuICAgIGF0dGFjaG1lbnRzOiB6LmFycmF5KGdlbmllQXR0YWNobWVudFNjaGVtYSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkFJLWdlbmVyYXRlZCByZXNwb25zZSB0byB0aGUgbWVzc2FnZVwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVc2VyIG1lc3NhZ2UgY29udGVudFxuICovXG4gICAgY29udGVudDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVzZXIgbWVzc2FnZSBjb250ZW50XCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIENvbnZlcnNhdGlvbiBJRFxuICovXG4gICAgY29udmVyc2F0aW9uX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiQ29udmVyc2F0aW9uIElEXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRpbWVzdGFtcCB3aGVuIHRoZSBtZXNzYWdlIHdhcyBjcmVhdGVkXG4gKi9cbiAgICBjcmVhdGVkX3RpbWVzdGFtcDogei5udW1iZXIoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGltZXN0YW1wIHdoZW4gdGhlIG1lc3NhZ2Ugd2FzIGNyZWF0ZWRcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gRXJyb3IgbWVzc2FnZSBpZiBHZW5pZSBmYWlsZWQgdG8gcmVzcG9uZCB0byB0aGUgbWVzc2FnZVxuICovXG4gICAgZXJyb3I6IG1lc3NhZ2VFcnJvclNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRXJyb3IgbWVzc2FnZSBpZiBHZW5pZSBmYWlsZWQgdG8gcmVzcG9uZCB0byB0aGUgbWVzc2FnZVwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVc2VyIGZlZWRiYWNrIGZvciB0aGUgbWVzc2FnZSBpZiBwcm92aWRlZFxuICovXG4gICAgZmVlZGJhY2s6IGdlbmllRmVlZGJhY2tTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcIlVzZXIgZmVlZGJhY2sgZm9yIHRoZSBtZXNzYWdlIGlmIHByb3ZpZGVkXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIE1lc3NhZ2UgSUQuIExlZ2FjeSBpZGVudGlmaWVyLCB1c2UgbWVzc2FnZV9pZCBpbnN0ZWFkXG4gKi9cbiAgICBpZDogei5zdHJpbmcoKS5kZXNjcmliZShcIk1lc3NhZ2UgSUQuIExlZ2FjeSBpZGVudGlmaWVyLCB1c2UgbWVzc2FnZV9pZCBpbnN0ZWFkXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRpbWVzdGFtcCB3aGVuIHRoZSBtZXNzYWdlIHdhcyBsYXN0IHVwZGF0ZWRcbiAqL1xuICAgIGxhc3RfdXBkYXRlZF90aW1lc3RhbXA6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRpbWVzdGFtcCB3aGVuIHRoZSBtZXNzYWdlIHdhcyBsYXN0IHVwZGF0ZWRcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gTWVzc2FnZSBJRFxuICovXG4gICAgbWVzc2FnZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIk1lc3NhZ2UgSURcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIHJlc3VsdCBvZiBTUUwgcXVlcnkgaWYgdGhlIG1lc3NhZ2UgaW5jbHVkZXMgYSBxdWVyeSBhdHRhY2htZW50LiBEZXByZWNhdGVkLiBVc2UgYHF1ZXJ5X3Jlc3VsdF9tZXRhZGF0YWAgaW4gYEdlbmllUXVlcnlBdHRhY2htZW50YCBpbnN0ZWFkLlxuICovXG4gICAgcXVlcnlfcmVzdWx0OiByZXN1bHRTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSByZXN1bHQgb2YgU1FMIHF1ZXJ5IGlmIHRoZSBtZXNzYWdlIGluY2x1ZGVzIGEgcXVlcnkgYXR0YWNobWVudC4gRGVwcmVjYXRlZC4gVXNlIGBxdWVyeV9yZXN1bHRfbWV0YWRhdGFgIGluIGBHZW5pZVF1ZXJ5QXR0YWNobWVudGAgaW5zdGVhZC5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuaWUgc3BhY2UgSURcbiAqL1xuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiR2VuaWUgc3BhY2UgSURcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gTWVzc2FnZVN0YXR1cy4gVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmU6ICogYEZFVENISU5HX01FVEFEQVRBYDogRmV0Y2hpbmcgbWV0YWRhdGEgZnJvbSB0aGUgZGF0YSBzb3VyY2VzLiAqIGBGSUxURVJJTkdfQ09OVEVYVGA6IFJ1bm5pbmcgc21hcnQgY29udGV4dCBzdGVwIHRvIGRldGVybWluZSByZWxldmFudCBjb250ZXh0LiAqIGBBU0tJTkdfQUlgOiBXYWl0aW5nIGZvciB0aGUgTExNIHRvIHJlc3BvbmQgdG8gdGhlIHVzZXIncyBxdWVzdGlvbi4gKiBgUEVORElOR19XQVJFSE9VU0VgOiBXYWl0aW5nIGZvciB3YXJlaG91c2UgYmVmb3JlIHRoZSBTUUwgcXVlcnkgY2FuIHN0YXJ0IGV4ZWN1dGluZy4gKiBgRVhFQ1VUSU5HX1FVRVJZYDogRXhlY3V0aW5nIGEgZ2VuZXJhdGVkIFNRTCBxdWVyeS4gR2V0IHRoZSBTUUwgcXVlcnkgcmVzdWx0IGJ5IGNhbGxpbmcgW2dldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRdKDptZXRob2Q6Z2VuaWUvZ2V0TWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlc3VsdCkgQVBJLiAqIGBGQUlMRURgOiBUaGUgcmVzcG9uc2UgZ2VuZXJhdGlvbiBvciBxdWVyeSBleGVjdXRpb24gZmFpbGVkLiBTZWUgYGVycm9yYCBmaWVsZC4gKiBgQ09NUExFVEVEYDogTWVzc2FnZSBwcm9jZXNzaW5nIGlzIGNvbXBsZXRlZC4gUmVzdWx0cyBhcmUgaW4gdGhlIGBhdHRhY2htZW50c2AgZmllbGQuIEdldCB0aGUgU1FMIHF1ZXJ5IHJlc3VsdCBieSBjYWxsaW5nIFtnZXRNZXNzYWdlQXR0YWNobWVudFF1ZXJ5UmVzdWx0XSg6bWV0aG9kOmdlbmllL2dldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHQpIEFQSS4gKiBgU1VCTUlUVEVEYDogTWVzc2FnZSBoYXMgYmVlbiBzdWJtaXR0ZWQuICogYFFVRVJZX1JFU1VMVF9FWFBJUkVEYDogU1FMIHJlc3VsdCBpcyBub3QgYXZhaWxhYmxlIGFueW1vcmUuIFRoZSB1c2VyIG5lZWRzIHRvIHJlcnVuIHRoZSBxdWVyeS4gUmVydW4gdGhlIFNRTCBxdWVyeSByZXN1bHQgYnkgY2FsbGluZyBbZXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnldKDptZXRob2Q6Z2VuaWUvZXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnkpIEFQSS4gKiBgQ0FOQ0VMTEVEYDogTWVzc2FnZSBoYXMgYmVlbiBjYW5jZWxsZWQuXG4gKi9cbiAgICBzdGF0dXM6IG1lc3NhZ2VTdGF0dXNTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcIk1lc3NhZ2VTdGF0dXMuIFRoZSBwb3NzaWJsZSB2YWx1ZXMgYXJlOiAqIGBGRVRDSElOR19NRVRBREFUQWA6IEZldGNoaW5nIG1ldGFkYXRhIGZyb20gdGhlIGRhdGEgc291cmNlcy4gKiBgRklMVEVSSU5HX0NPTlRFWFRgOiBSdW5uaW5nIHNtYXJ0IGNvbnRleHQgc3RlcCB0byBkZXRlcm1pbmUgcmVsZXZhbnQgY29udGV4dC4gKiBgQVNLSU5HX0FJYDogV2FpdGluZyBmb3IgdGhlIExMTSB0byByZXNwb25kIHRvIHRoZSB1c2VyJ3MgcXVlc3Rpb24uICogYFBFTkRJTkdfV0FSRUhPVVNFYDogV2FpdGluZyBmb3Igd2FyZWhvdXNlIGJlZm9yZSB0aGUgU1FMIHF1ZXJ5IGNhbiBzdGFydCBleGVjdXRpbmcuICogYEVYRUNVVElOR19RVUVSWWA6IEV4ZWN1dGluZyBhIGdlbmVyYXRlZCBTUUwgcXVlcnkuIEdldCB0aGUgU1FMIHF1ZXJ5IHJlc3VsdCBieSBjYWxsaW5nIFtnZXRNZXNzYWdlQXR0YWNobWVudFF1ZXJ5UmVzdWx0XSg6bWV0aG9kOmdlbmllL2dldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHQpIEFQSS4gKiBgRkFJTEVEYDogVGhlIHJlc3BvbnNlIGdlbmVyYXRpb24gb3IgcXVlcnkgZXhlY3V0aW9uIGZhaWxlZC4gU2VlIGBlcnJvcmAgZmllbGQuICogYENPTVBMRVRFRGA6IE1lc3NhZ2UgcHJvY2Vzc2luZyBpcyBjb21wbGV0ZWQuIFJlc3VsdHMgYXJlIGluIHRoZSBgYXR0YWNobWVudHNgIGZpZWxkLiBHZXQgdGhlIFNRTCBxdWVyeSByZXN1bHQgYnkgY2FsbGluZyBbZ2V0TWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlc3VsdF0oOm1ldGhvZDpnZW5pZS9nZXRNZXNzYWdlQXR0YWNobWVudFF1ZXJ5UmVzdWx0KSBBUEkuICogYFNVQk1JVFRFRGA6IE1lc3NhZ2UgaGFzIGJlZW4gc3VibWl0dGVkLiAqIGBRVUVSWV9SRVNVTFRfRVhQSVJFRGA6IFNRTCByZXN1bHQgaXMgbm90IGF2YWlsYWJsZSBhbnltb3JlLiBUaGUgdXNlciBuZWVkcyB0byByZXJ1biB0aGUgcXVlcnkuIFJlcnVuIHRoZSBTUUwgcXVlcnkgcmVzdWx0IGJ5IGNhbGxpbmcgW2V4ZWN1dGVNZXNzYWdlQXR0YWNobWVudFF1ZXJ5XSg6bWV0aG9kOmdlbmllL2V4ZWN1dGVNZXNzYWdlQXR0YWNobWVudFF1ZXJ5KSBBUEkuICogYENBTkNFTExFRGA6IE1lc3NhZ2UgaGFzIGJlZW4gY2FuY2VsbGVkLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgdXNlciB3aG8gY3JlYXRlZCB0aGUgbWVzc2FnZVxuICovXG4gICAgdXNlcl9pZDogei5udW1iZXIoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSUQgb2YgdGhlIHVzZXIgd2hvIGNyZWF0ZWQgdGhlIG1lc3NhZ2VcIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0UHVibGlzaGVkRGFzaGJvYXJkVG9rZW5JbmZvUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gQXV0aG9yaXphdGlvbiBjb25zdHJhaW50cyBmb3IgYWNjZXNzaW5nIHRoZSBwdWJsaXNoZWQgZGFzaGJvYXJkLiBDdXJyZW50bHkgaW5jbHVkZXMgYHdvcmtzcGFjZV9ydWxlX3NldGAgYW5kIGNvdWxkIGJlIGVucmljaGVkIHdpdGggYHVuaXR5X2NhdGFsb2dfcHJpdmlsZWdlc2AgYmVmb3JlIG9BdXRoIHRva2VuIGdlbmVyYXRpb24uXG4gKi9cbiAgICBhdXRob3JpemF0aW9uX2RldGFpbHM6IHouYXJyYXkoYXV0aG9yaXphdGlvbkRldGFpbHNTY2hlbWEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBdXRob3JpemF0aW9uIGNvbnN0cmFpbnRzIGZvciBhY2Nlc3NpbmcgdGhlIHB1Ymxpc2hlZCBkYXNoYm9hcmQuIEN1cnJlbnRseSBpbmNsdWRlcyBgd29ya3NwYWNlX3J1bGVfc2V0YCBhbmQgY291bGQgYmUgZW5yaWNoZWQgd2l0aCBgdW5pdHlfY2F0YWxvZ19wcml2aWxlZ2VzYCBiZWZvcmUgb0F1dGggdG9rZW4gZ2VuZXJhdGlvbi5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3VzdG9tIGNsYWltIGdlbmVyYXRlZCBmcm9tIGV4dGVybmFsX3ZhbHVlIGFuZCBleHRlcm5hbF92aWV3ZXJfaWQuIEZvcm1hdDogYHVybjphaWJpOmV4dGVybmFsX2RhdGE6PGV4dGVybmFsX3ZhbHVlPjo8ZXh0ZXJuYWxfdmlld2VyX2lkPjo8ZGFzaGJvYXJkX2lkPmBcbiAqL1xuICAgIGN1c3RvbV9jbGFpbTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQ3VzdG9tIGNsYWltIGdlbmVyYXRlZCBmcm9tIGV4dGVybmFsX3ZhbHVlIGFuZCBleHRlcm5hbF92aWV3ZXJfaWQuIEZvcm1hdDogYHVybjphaWJpOmV4dGVybmFsX2RhdGE6PGV4dGVybmFsX3ZhbHVlPjo8ZXh0ZXJuYWxfdmlld2VyX2lkPjo8ZGFzaGJvYXJkX2lkPmBcIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gU2NvcGUgZGVmaW5pbmcgYWNjZXNzIHBlcm1pc3Npb25zLlxuICovXG4gICAgc2NvcGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNjb3BlIGRlZmluaW5nIGFjY2VzcyBwZXJtaXNzaW9ucy5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgbGlzdERhc2hib2FyZHNSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBkYXNoYm9hcmRzOiB6LmFycmF5KGRhc2hib2FyZFNjaGVtYSkub3B0aW9uYWwoKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBBIHRva2VuLCB3aGljaCBjYW4gYmUgc2VudCBhcyBgcGFnZV90b2tlbmAgdG8gcmV0cmlldmUgdGhlIG5leHQgcGFnZS4gSWYgdGhpcyBmaWVsZCBpcyBvbWl0dGVkLCB0aGVyZSBhcmUgbm8gc3Vic2VxdWVudCBkYXNoYm9hcmRzLlxuICovXG4gICAgbmV4dF9wYWdlX3Rva2VuOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBIHRva2VuLCB3aGljaCBjYW4gYmUgc2VudCBhcyBgcGFnZV90b2tlbmAgdG8gcmV0cmlldmUgdGhlIG5leHQgcGFnZS4gSWYgdGhpcyBmaWVsZCBpcyBvbWl0dGVkLCB0aGVyZSBhcmUgbm8gc3Vic2VxdWVudCBkYXNoYm9hcmRzLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBsaXN0U2NoZWR1bGVzUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gQSB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgYHBhZ2VfdG9rZW5gIGluIHN1YnNlcXVlbnQgcmVxdWVzdHMgdG8gcmV0cmlldmUgdGhlIG5leHQgcGFnZSBvZiByZXN1bHRzLiBJZiB0aGlzIGZpZWxkIGlzIG9taXR0ZWQsIHRoZXJlIGFyZSBubyBzdWJzZXF1ZW50IHNjaGVkdWxlcy5cbiAqL1xuICAgIG5leHRfcGFnZV90b2tlbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQSB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgYHBhZ2VfdG9rZW5gIGluIHN1YnNlcXVlbnQgcmVxdWVzdHMgdG8gcmV0cmlldmUgdGhlIG5leHQgcGFnZSBvZiByZXN1bHRzLiBJZiB0aGlzIGZpZWxkIGlzIG9taXR0ZWQsIHRoZXJlIGFyZSBubyBzdWJzZXF1ZW50IHNjaGVkdWxlcy5cIiksXG4gICAgc2NoZWR1bGVzOiB6LmFycmF5KHNjaGVkdWxlU2NoZW1hKS5vcHRpb25hbCgpXG59KTtcblxuZXhwb3J0IGNvbnN0IGxpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gQSB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgYHBhZ2VfdG9rZW5gIGluIHN1YnNlcXVlbnQgcmVxdWVzdHMgdG8gcmV0cmlldmUgdGhlIG5leHQgcGFnZSBvZiByZXN1bHRzLiBJZiB0aGlzIGZpZWxkIGlzIG9taXR0ZWQsIHRoZXJlIGFyZSBubyBzdWJzZXF1ZW50IHN1YnNjcmlwdGlvbnMuXG4gKi9cbiAgICBuZXh0X3BhZ2VfdG9rZW46IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkEgdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCBhcyBhIGBwYWdlX3Rva2VuYCBpbiBzdWJzZXF1ZW50IHJlcXVlc3RzIHRvIHJldHJpZXZlIHRoZSBuZXh0IHBhZ2Ugb2YgcmVzdWx0cy4gSWYgdGhpcyBmaWVsZCBpcyBvbWl0dGVkLCB0aGVyZSBhcmUgbm8gc3Vic2VxdWVudCBzdWJzY3JpcHRpb25zLlwiKSxcbiAgICBzdWJzY3JpcHRpb25zOiB6LmFycmF5KHN1YnNjcmlwdGlvblNjaGVtYSkub3B0aW9uYWwoKVxufSk7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVTY2hlZHVsZVJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVVVJRCBpZGVudGlmeWluZyB0aGUgZGFzaGJvYXJkIHRvIHdoaWNoIHRoZSBzY2hlZHVsZSBiZWxvbmdzLlxuICovXG4gICAgZGFzaGJvYXJkX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgZGFzaGJvYXJkIHRvIHdoaWNoIHRoZSBzY2hlZHVsZSBiZWxvbmdzLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgc2NoZWR1bGUgdG8gdXBkYXRlLlxuICovXG4gICAgc2NoZWR1bGU6IHNjaGVkdWxlU2NoZW1hLmRlc2NyaWJlKFwiVGhlIHNjaGVkdWxlIHRvIHVwZGF0ZS5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVVVJRCBpZGVudGlmeWluZyB0aGUgc2NoZWR1bGUuXG4gKi9cbiAgICBzY2hlZHVsZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIHNjaGVkdWxlLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFVVSUQgaWRlbnRpZnlpbmcgdGhlIGRhc2hib2FyZCB0byB3aGljaCB0aGUgc3Vic2NyaXB0aW9uIGJlbG9uZ3MuXG4gKi9cbiAgICBkYXNoYm9hcmRfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgdG8gd2hpY2ggdGhlIHN1YnNjcmlwdGlvbiBiZWxvbmdzLlwiKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBVVUlEIGlkZW50aWZ5aW5nIHRoZSBzY2hlZHVsZSB0byB3aGljaCB0aGUgc3Vic2NyaXB0aW9uIGJlbG9uZ3MuXG4gKi9cbiAgICBzY2hlZHVsZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIHNjaGVkdWxlIHRvIHdoaWNoIHRoZSBzdWJzY3JpcHRpb24gYmVsb25ncy5cIiksXG4gICAgLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIHN1YnNjcmlwdGlvbiB0byBjcmVhdGUuIEEgc2NoZWR1bGUgaXMgbGltaXRlZCB0byAxMDAgc3Vic2NyaXB0aW9ucy5cbiAqL1xuICAgIHN1YnNjcmlwdGlvbjogc3Vic2NyaXB0aW9uU2NoZW1hLmRlc2NyaWJlKFwiVGhlIHN1YnNjcmlwdGlvbiB0byBjcmVhdGUuIEEgc2NoZWR1bGUgaXMgbGltaXRlZCB0byAxMDAgc3Vic2NyaXB0aW9ucy5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBMaXN0IG9mIG1lc3NhZ2VzIGluIHRoZSBjb252ZXJzYXRpb24uXG4gKi9cbiAgICBtZXNzYWdlczogei5hcnJheShnZW5pZU1lc3NhZ2VTY2hlbWEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJMaXN0IG9mIG1lc3NhZ2VzIGluIHRoZSBjb252ZXJzYXRpb24uXCIpLFxuICAgIC8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSB0b2tlbiB0byB1c2UgZm9yIHJldHJpZXZpbmcgdGhlIG5leHQgcGFnZSBvZiByZXN1bHRzLlxuICovXG4gICAgbmV4dF9wYWdlX3Rva2VuOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgdG9rZW4gdG8gdXNlIGZvciByZXRyaWV2aW5nIHRoZSBuZXh0IHBhZ2Ugb2YgcmVzdWx0cy5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVTdGFydENvbnZlcnNhdGlvblJlc3BvbnNlU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGNvbnZlcnNhdGlvbjogZ2VuaWVDb252ZXJzYXRpb25TY2hlbWEub3B0aW9uYWwoKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJzYXRpb24gSURcbiAqL1xuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkNvbnZlcnNhdGlvbiBJRFwiKSxcbiAgICBtZXNzYWdlOiBnZW5pZU1lc3NhZ2VTY2hlbWEub3B0aW9uYWwoKSxcbiAgICAvKipcbiAqIEBkZXNjcmlwdGlvbiBNZXNzYWdlIElEXG4gKi9cbiAgICBtZXNzYWdlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiTWVzc2FnZSBJRFwiKVxufSk7XG5cbmV4cG9ydCB0eXBlIEF1dGhvcml6YXRpb25EZXRhaWxzR3JhbnRSdWxlID0gei5pbmZlcjx0eXBlb2YgYXV0aG9yaXphdGlvbkRldGFpbHNHcmFudFJ1bGVTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBDcm9uU2NoZWR1bGUgPSB6LmluZmVyPHR5cGVvZiBjcm9uU2NoZWR1bGVTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBMaWZlY3ljbGVTdGF0ZSA9IHouaW5mZXI8dHlwZW9mIGxpZmVjeWNsZVN0YXRlU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgRGFzaGJvYXJkVmlldyA9IHouaW5mZXI8dHlwZW9mIGRhc2hib2FyZFZpZXdTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBEZWxldGVTY2hlZHVsZVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBkZWxldGVTY2hlZHVsZVJlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBEZWxldGVTdWJzY3JpcHRpb25SZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZGVsZXRlU3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllU3VnZ2VzdGVkUXVlc3Rpb25zQXR0YWNobWVudCA9IHouaW5mZXI8dHlwZW9mIGdlbmllU3VnZ2VzdGVkUXVlc3Rpb25zQXR0YWNobWVudFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllQ29udmVyc2F0aW9uID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVDb252ZXJzYXRpb25TY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZUNvbnZlcnNhdGlvblN1bW1hcnkgPSB6LmluZmVyPHR5cGVvZiBnZW5pZUNvbnZlcnNhdGlvblN1bW1hcnlTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZUNyZWF0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVDcmVhdGVDb252ZXJzYXRpb25NZXNzYWdlUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllRGVsZXRlQ29udmVyc2F0aW9uTWVzc2FnZVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZW5pZURlbGV0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVEZWxldGVDb252ZXJzYXRpb25SZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVEZWxldGVDb252ZXJzYXRpb25SZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVFeGVjdXRlTWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZW5pZUV4ZWN1dGVNZXNzYWdlQXR0YWNobWVudFF1ZXJ5UmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllRXhlY3V0ZU1lc3NhZ2VRdWVyeVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZW5pZUV4ZWN1dGVNZXNzYWdlUXVlcnlSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVGZWVkYmFja1JhdGluZyA9IHouaW5mZXI8dHlwZW9mIGdlbmllRmVlZGJhY2tSYXRpbmdTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZUdldENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVHZXRDb252ZXJzYXRpb25NZXNzYWdlUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllR2V0TWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlc3VsdFJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZW5pZUdldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVHZXRNZXNzYWdlUXVlcnlSZXN1bHRSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVHZXRNZXNzYWdlUXVlcnlSZXN1bHRSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVHZXRNZXNzYWdlUXVlcnlSZXN1bHRSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIGdlbmllR2V0TWVzc2FnZVF1ZXJ5UmVzdWx0UmVzcG9uc2VTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZUdldFF1ZXJ5UmVzdWx0QnlBdHRhY2htZW50UmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIGdlbmllR2V0UXVlcnlSZXN1bHRCeUF0dGFjaG1lbnRSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVHZXRTcGFjZVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZW5pZUdldFNwYWNlUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllTGlzdENvbnZlcnNhdGlvbk1lc3NhZ2VzUmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIGdlbmllTGlzdENvbnZlcnNhdGlvbk1lc3NhZ2VzUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllTGlzdENvbnZlcnNhdGlvbnNSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVMaXN0Q29udmVyc2F0aW9uc1JlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZUxpc3RDb252ZXJzYXRpb25zUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBnZW5pZUxpc3RDb252ZXJzYXRpb25zUmVzcG9uc2VTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZUxpc3RTcGFjZXNSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVMaXN0U3BhY2VzUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllU3BhY2UgPSB6LmluZmVyPHR5cGVvZiBnZW5pZVNwYWNlU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVGZWVkYmFjayA9IHouaW5mZXI8dHlwZW9mIGdlbmllRmVlZGJhY2tTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBSZXN1bHQgPSB6LmluZmVyPHR5cGVvZiByZXN1bHRTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlU3RhdHVzID0gei5pbmZlcjx0eXBlb2YgbWVzc2FnZVN0YXR1c1NjaGVtYT47XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5QXR0YWNobWVudFBhcmFtZXRlciA9IHouaW5mZXI8dHlwZW9mIHF1ZXJ5QXR0YWNobWVudFBhcmFtZXRlclNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllUmVzdWx0TWV0YWRhdGEgPSB6LmluZmVyPHR5cGVvZiBnZW5pZVJlc3VsdE1ldGFkYXRhU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVTZW5kTWVzc2FnZUZlZWRiYWNrUmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIGdlbmllU2VuZE1lc3NhZ2VGZWVkYmFja1JlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZVN0YXJ0Q29udmVyc2F0aW9uTWVzc2FnZVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZW5pZVN0YXJ0Q29udmVyc2F0aW9uTWVzc2FnZVJlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZVRyYXNoU3BhY2VSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVUcmFzaFNwYWNlUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdldERhc2hib2FyZFJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZXREYXNoYm9hcmRSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2V0UHVibGlzaGVkRGFzaGJvYXJkUmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIGdldFB1Ymxpc2hlZERhc2hib2FyZFJlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2V0UHVibGlzaGVkRGFzaGJvYXJkVG9rZW5JbmZvUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEF1dGhvcml6YXRpb25EZXRhaWxzID0gei5pbmZlcjx0eXBlb2YgYXV0aG9yaXphdGlvbkRldGFpbHNTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZXRTY2hlZHVsZVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZXRTY2hlZHVsZVJlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZXRTdWJzY3JpcHRpb25SZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2V0U3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIExpc3REYXNoYm9hcmRzUmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIGxpc3REYXNoYm9hcmRzUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIERhc2hib2FyZCA9IHouaW5mZXI8dHlwZW9mIGRhc2hib2FyZFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIExpc3RTY2hlZHVsZXNSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgbGlzdFNjaGVkdWxlc1JlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBMaXN0U3Vic2NyaXB0aW9uc1JlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBsaXN0U3Vic2NyaXB0aW9uc1JlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlRXJyb3JUeXBlID0gei5pbmZlcjx0eXBlb2YgbWVzc2FnZUVycm9yVHlwZVNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIE1pZ3JhdGVEYXNoYm9hcmRSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgbWlncmF0ZURhc2hib2FyZFJlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBQdWJsaXNoUmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIHB1Ymxpc2hSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgUHVibGlzaGVkRGFzaGJvYXJkID0gei5pbmZlcjx0eXBlb2YgcHVibGlzaGVkRGFzaGJvYXJkU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgU2NoZWR1bGVQYXVzZVN0YXR1cyA9IHouaW5mZXI8dHlwZW9mIHNjaGVkdWxlUGF1c2VTdGF0dXNTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdWJzY3JpYmVyRGVzdGluYXRpb24gPSB6LmluZmVyPHR5cGVvZiBzdWJzY3JpcHRpb25TdWJzY3JpYmVyRGVzdGluYXRpb25TY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdWJzY3JpYmVyVXNlciA9IHouaW5mZXI8dHlwZW9mIHN1YnNjcmlwdGlvblN1YnNjcmliZXJVc2VyU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlciA9IHouaW5mZXI8dHlwZW9mIHN1YnNjcmliZXJTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBUZXh0QXR0YWNobWVudFB1cnBvc2UgPSB6LmluZmVyPHR5cGVvZiB0ZXh0QXR0YWNobWVudFB1cnBvc2VTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBUcmFzaERhc2hib2FyZFJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiB0cmFzaERhc2hib2FyZFJlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBVbnB1Ymxpc2hEYXNoYm9hcmRSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgdW5wdWJsaXNoRGFzaGJvYXJkUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZURhc2hib2FyZFJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiB1cGRhdGVEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgU2NoZWR1bGUgPSB6LmluZmVyPHR5cGVvZiBzY2hlZHVsZVNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIENyZWF0ZURhc2hib2FyZFJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBjcmVhdGVEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgQ3JlYXRlU2NoZWR1bGVSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgY3JlYXRlU2NoZWR1bGVSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uID0gei5pbmZlcjx0eXBlb2Ygc3Vic2NyaXB0aW9uU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVRdWVyeUF0dGFjaG1lbnQgPSB6LmluZmVyPHR5cGVvZiBnZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIFRleHRBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgdGV4dEF0dGFjaG1lbnRTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZUxpc3RTcGFjZXNSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIGdlbmllTGlzdFNwYWNlc1Jlc3BvbnNlU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVBdHRhY2htZW50U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUVycm9yID0gei5pbmZlcjx0eXBlb2YgbWVzc2FnZUVycm9yU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVNZXNzYWdlID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVNZXNzYWdlU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2V0UHVibGlzaGVkRGFzaGJvYXJkVG9rZW5JbmZvUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBnZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXNwb25zZVNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIExpc3REYXNoYm9hcmRzUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBsaXN0RGFzaGJvYXJkc1Jlc3BvbnNlU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgTGlzdFNjaGVkdWxlc1Jlc3BvbnNlID0gei5pbmZlcjx0eXBlb2YgbGlzdFNjaGVkdWxlc1Jlc3BvbnNlU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgTGlzdFN1YnNjcmlwdGlvbnNSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIGxpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2VTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBVcGRhdGVTY2hlZHVsZVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiB1cGRhdGVTY2hlZHVsZVJlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgY3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllTGlzdENvbnZlcnNhdGlvbk1lc3NhZ2VzUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBnZW5pZUxpc3RDb252ZXJzYXRpb25NZXNzYWdlc1Jlc3BvbnNlU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVTdGFydENvbnZlcnNhdGlvblJlc3BvbnNlID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVTdGFydENvbnZlcnNhdGlvblJlc3BvbnNlU2NoZW1hPjtcbiJdfQ==
|
|
359
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXNoYm9hcmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUNoRSwrRUFBK0U7QUFDL0Usd0VBQXdFO0FBRXhFLHlCQUF5QjtBQUN6QixPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDeEQsY0FBYyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsbUtBQW1LLENBQUM7Q0FDdE4sQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN2QyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLDROQUE0TixDQUFDO0lBQ3pRLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLHNNQUFzTSxDQUFDO0NBQzNPLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXpGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2hELFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLCtEQUErRCxDQUFDO0lBQ2xHLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLHNJQUFzSSxDQUFDO0lBQzVLLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxDQUFDO0NBQ3JFLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDcEQsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0VBQWdFLENBQUM7SUFDbkcsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsc0lBQXNJLENBQUM7SUFDNUssV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsK0RBQStELENBQUM7SUFDakcsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsb0NBQW9DLENBQUM7Q0FDN0UsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM1RCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsbUNBQW1DLENBQUM7Q0FDMUYsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM1QyxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztJQUN2RCxpQkFBaUIsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLHdDQUF3QyxDQUFDO0lBQzNGLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGlFQUFpRSxDQUFDO0lBQzFGLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsNkNBQTZDLENBQUM7SUFDckcsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7SUFDL0MsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUM7SUFDaEQsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsNkNBQTZDLENBQUM7Q0FDOUUsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNuRCxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUMzQixpQkFBaUIsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQzdCLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0NBQ3BCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDJDQUEyQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDaEUsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUM7SUFDckQsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsMENBQTBDLENBQUM7SUFDaEYsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsMkVBQTJFLENBQUM7Q0FDN0csQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sMkNBQTJDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQywwQ0FBMEMsQ0FBQztJQUNoRixVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQywrQ0FBK0MsQ0FBQztJQUNoRixRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxzRUFBc0UsQ0FBQztDQUN4RyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3pELGVBQWUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLHVDQUF1QyxDQUFDO0lBQzdFLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLDJFQUEyRSxDQUFDO0NBQzdHLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLCtDQUErQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDcEUsYUFBYSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBQ25ELGVBQWUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO0lBQ3ZELFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztJQUM3QyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztDQUNsRCxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzFELGVBQWUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO0lBQ3ZELFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztJQUM3QyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztDQUNsRCxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0FBRW5LLE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0QsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsaURBQWlELENBQUM7SUFDdkYsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsNkVBQTZFLENBQUM7SUFDOUcsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsa0ZBQWtGLENBQUM7Q0FDcEgsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0saURBQWlELEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN0RSxhQUFhLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7SUFDbkQsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7SUFDdkQsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQzdDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO0NBQ2xELENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDNUQsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7SUFDdkQsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQzdDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO0NBQ2xELENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0Qsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxpSkFBaUosQ0FBQztDQUN6TSxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSw0Q0FBNEMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2pFLGFBQWEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztJQUNuRCxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztJQUN2RCxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDN0MsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7Q0FDbEQsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMvQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyx3Q0FBd0MsQ0FBQztDQUMxRSxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSwwQ0FBMEMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQy9ELGVBQWUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGtEQUFrRCxDQUFDO0lBQ3hGLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLCtDQUErQyxDQUFDO0lBQzFGLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLHVDQUF1QyxDQUFDO0lBQ25GLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLDBFQUEwRSxDQUFDO0NBQzVHLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDeEQsV0FBVyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0hBQWdILENBQUM7SUFDOUosU0FBUyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsb0RBQW9ELENBQUM7SUFDL0YsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsdUNBQXVDLENBQUM7SUFDbkYsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsMkRBQTJELENBQUM7Q0FDN0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN6RCxhQUFhLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQywwQ0FBMEMsQ0FBQztJQUN0SCxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyx1Q0FBdUMsQ0FBQztDQUMzRixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2pELFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLDZDQUE2QyxDQUFDO0lBQ3hGLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLHVEQUF1RCxDQUFDO0NBQ3RHLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDckMsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0NBQWdDLENBQUM7SUFDN0UsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7SUFDL0MsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUM7SUFDdEQsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsMkNBQTJDLENBQUM7Q0FDNUYsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN4QyxNQUFNLEVBQUUseUJBQXlCLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDO0NBQy9FLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2pDLFlBQVksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDO0lBQ3ZFLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDO0lBQ3BFLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLGdLQUFnSyxDQUFDO0lBQzlNLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsNkRBQTZELENBQUM7Q0FDeEgsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsMmxDQUEybEMsQ0FBQyxDQUFDO0FBRXo2QyxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ25ELE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzlCLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQy9CLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQy9CLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDOUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0RBQWdELENBQUM7SUFDL0YsU0FBUyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsdUNBQXVDLENBQUM7Q0FDckYsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxRCxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQywwQ0FBMEMsQ0FBQztJQUNoRixVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyw2REFBNkQsQ0FBQztJQUM5RixNQUFNLEVBQUUseUJBQXlCLENBQUMsUUFBUSxDQUFDLDJDQUEyQyxDQUFDO0lBQ3ZGLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLHNFQUFzRSxDQUFDO0NBQ3hHLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDBDQUEwQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDL0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsdURBQXVELENBQUM7SUFDckYsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0ZBQWdGLENBQUM7Q0FDbEgsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNqRCxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxpRUFBaUUsQ0FBQztDQUNuRyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzlDLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGlDQUFpQyxDQUFDO0NBQ3ZFLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdkQsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsMkNBQTJDLENBQUM7Q0FDakYsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sMkNBQTJDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQywyQ0FBMkMsQ0FBQztJQUM5RSxjQUFjLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyw2REFBNkQsQ0FBQztJQUM3RyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLGlFQUFpRSxDQUFDO0NBQ3hILENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDL0MsV0FBVyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0lBQWdJLENBQUM7SUFDL00sd0JBQXdCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxtREFBbUQsQ0FBQztJQUM3RyxhQUFhLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxxTEFBcUwsQ0FBQztJQUNwTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQywrSEFBK0gsQ0FBQztDQUN4SyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzdDLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLCtEQUErRCxDQUFDO0lBQ2xHLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxDQUFDO0NBQ3JFLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDakQsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0VBQWdFLENBQUM7SUFDbkcsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsK0RBQStELENBQUM7SUFDakcsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsb0NBQW9DLENBQUM7Q0FDN0UsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoRCxTQUFTLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyw4Q0FBOEMsQ0FBQztJQUN6RixVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyx1SEFBdUgsQ0FBQztJQUNuSyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQywrR0FBK0csQ0FBQztJQUM5SixJQUFJLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLDBFQUEwRSxDQUFDO0NBQzVILENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3BDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLGtEQUFrRCxDQUFDO0lBQy9GLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLGlDQUFpQyxDQUFDO0lBQy9FLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLG9DQUFvQyxDQUFDO0lBQ2xGLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLGdNQUFnTSxDQUFDO0lBQ3RPLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsd0VBQXdFLENBQUM7SUFDbkksV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsK0pBQStKLENBQUM7SUFDNU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsNkxBQTZMLENBQUM7SUFDbk8sb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxxWkFBcVosQ0FBQztJQUMzYyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyx3SEFBd0gsQ0FBQztJQUNySyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyw2Q0FBNkMsQ0FBQztDQUM5RixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQy9DLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGdFQUFnRSxDQUFDO0lBQ25HLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLDZDQUE2QyxDQUFDO0lBQ3hGLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLHdHQUF3RyxDQUFDO0NBQ3ZKLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkQsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUVBQWlFLENBQUM7SUFDcEcsU0FBUyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsaURBQWlELENBQUM7SUFDNUYsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsNEdBQTRHLENBQUM7SUFDeEosV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0VBQWdFLENBQUM7Q0FDckcsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMscUNBQXFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQywwQ0FBMEMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsbUNBQW1DLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsMkNBQTJDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMscUNBQXFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsMkNBQTJDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLDJDQUEyQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQywyQ0FBMkMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsd0NBQXdDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQywyQ0FBMkMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMscUNBQXFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLHdDQUF3QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrREFBa0QsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsbURBQW1ELENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLHVEQUF1RCxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyw0Q0FBNEMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMseUNBQXlDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLDZDQUE2QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQywrQ0FBK0MsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsa0RBQWtELENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLHdDQUF3QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsaUNBQWlDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLG1EQUFtRCxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQywyQ0FBMkMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMscUNBQXFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsbUNBQW1DLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLDZDQUE2QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQywyQ0FBMkMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsMkNBQTJDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1Q0FBdUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsaUNBQWlDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLDhCQUE4QixDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1Q0FBdUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsOENBQThDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLHFDQUFxQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsc0NBQXNDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFamtHLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsOENBQThDLENBQUM7SUFDNUYsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsOEVBQThFLENBQUM7SUFDM0gsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyx1Q0FBdUMsQ0FBQztJQUNqRix1QkFBdUIsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLHdKQUF3SixDQUFDO0NBQ3JOLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekMsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsaURBQWlELENBQUM7SUFDcEYsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxzTEFBc0wsQ0FBQztJQUMxTyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxnR0FBZ0csQ0FBQztDQUNqSixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzdDLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLDhDQUE4QyxDQUFDO0lBQzVGLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsd0VBQXdFLENBQUM7SUFDNUgsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxpRUFBaUUsQ0FBQztJQUN2SCxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyx1REFBdUQsQ0FBQztDQUN4RyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUUvRixNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzVELGNBQWMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLDRFQUE0RSxDQUFDO0NBQ3BILENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDckQsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUM7Q0FDNUQsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNyQyxzQkFBc0IsRUFBRSx1Q0FBdUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUhBQWlILENBQUM7SUFDdE0sZUFBZSxFQUFFLGdDQUFnQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxpSEFBaUgsQ0FBQztDQUMzTCxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7QUFFM0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoRCxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxpQ0FBaUMsQ0FBQztDQUN2RSxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3BELFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLDJDQUEyQyxDQUFDO0NBQ2pGLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDakQsU0FBUyxFQUFFLGVBQWU7SUFDMUIsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUNBQWlDLENBQUM7Q0FDdkUsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkMsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsdURBQXVELENBQUM7SUFDcEcsYUFBYSxFQUFFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyx5RkFBeUYsQ0FBQztJQUNySSxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQywrREFBK0QsQ0FBQztJQUM3RyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQztJQUM5RSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyx1TUFBdU0sQ0FBQztJQUM3TyxZQUFZLEVBQUUseUJBQXlCLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLDhEQUE4RCxDQUFDO0lBQzNILFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxDQUFDO0lBQzdFLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLDREQUE0RCxDQUFDO0lBQ3pHLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLDhEQUE4RCxDQUFDO0NBQy9HLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDakQsU0FBUyxFQUFFLGVBQWU7Q0FDN0IsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoRCxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQywrREFBK0QsQ0FBQztJQUNsRyxRQUFRLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxpRUFBaUUsQ0FBQztDQUN2RyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3ZDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLDJEQUEyRCxDQUFDO0lBQ3hHLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsMkdBQTJHLENBQUM7SUFDL0osWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsbUVBQW1FLENBQUM7SUFDakgsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsNktBQTZLLENBQUM7SUFDbk4sV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsa0VBQWtFLENBQUM7SUFDL0csVUFBVSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQywyRkFBMkYsQ0FBQztJQUNsSSxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsQ0FBQztJQUNyRixXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxnRUFBZ0UsQ0FBQztDQUNoSCxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQy9DLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDO0lBQ3ZFLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3pCLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsMkNBQTJDLENBQUM7SUFDbkcsVUFBVSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDOUQsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUM7SUFDL0QscUJBQXFCLEVBQUUseUJBQXlCLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUFDO0lBQ2xILFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLGdLQUFnSyxDQUFDO0lBQzlNLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDO0NBQzdELENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUM7SUFDL0QsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDekIsT0FBTyxFQUFFLDJCQUEyQixDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyx3Q0FBd0MsQ0FBQztDQUNyRyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2xELGVBQWUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLHVDQUF1QyxDQUFDO0lBQ3hGLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDO0NBQ2hGLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDMUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBQzlELEtBQUssRUFBRSwwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMscURBQXFELENBQUM7SUFDNUcsbUJBQW1CLEVBQUUsdUNBQXVDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLHdDQUF3QyxDQUFDO0lBQzFILElBQUksRUFBRSxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsNkNBQTZDLENBQUM7Q0FDaEcsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN2QyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QixJQUFJLEVBQUUsc0JBQXNCLENBQUMsUUFBUSxFQUFFO0NBQzFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdkMsV0FBVyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsc0NBQXNDLENBQUM7SUFDdkcsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUM7SUFDcEQsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7SUFDdkQsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyx3Q0FBd0MsQ0FBQztJQUMzRixLQUFLLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLHlEQUF5RCxDQUFDO0lBQ3hHLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsMkNBQTJDLENBQUM7SUFDOUYsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsdURBQXVELENBQUM7SUFDaEYsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyw2Q0FBNkMsQ0FBQztJQUNyRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDN0MsWUFBWSxFQUFFLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0pBQWdKLENBQUM7SUFDaE0sUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7SUFDL0MsTUFBTSxFQUFFLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQywybENBQTJsQyxDQUFDO0lBQzVvQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyx3Q0FBd0MsQ0FBQztDQUNwRixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSw0Q0FBNEMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2pFLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsK0xBQStMLENBQUM7SUFDL1EsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsMEpBQTBKLENBQUM7SUFDeE0sS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsb0NBQW9DLENBQUM7Q0FDOUUsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNqRCxVQUFVLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDL0MsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMscUlBQXFJLENBQUM7Q0FDekwsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoRCxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxzS0FBc0ssQ0FBQztJQUN2TixTQUFTLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUU7Q0FDaEQsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNwRCxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQywwS0FBMEssQ0FBQztJQUMzTixhQUFhLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFFBQVEsRUFBRTtDQUN4RCxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2hELFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLCtEQUErRCxDQUFDO0lBQ2xHLFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDO0lBQzVELFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxDQUFDO0NBQ3JFLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDcEQsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsbUVBQW1FLENBQUM7SUFDdEcsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsa0VBQWtFLENBQUM7SUFDcEcsWUFBWSxFQUFFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyx5RUFBeUUsQ0FBQztDQUN2SCxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSwyQ0FBMkMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2hFLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLHVDQUF1QyxDQUFDO0lBQ2xHLGVBQWUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLDJEQUEyRCxDQUFDO0NBQy9HLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekQsWUFBWSxFQUFFLHVCQUF1QixDQUFDLFFBQVEsRUFBRTtJQUNoRCxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztJQUN2RCxPQUFPLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxFQUFFO0lBQ3RDLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztDQUNoRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHN5bnRoIChjb2RlZ2VuOiB0cy10by16b2QpIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSB1cHN0cmVhbSAuZC50cyBkZWNsYXJlZCBpbiBwYWNrYWdlLmpzb24gY29kZWdlbi5pbnB1dHMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuLy8gR2VuZXJhdGVkIGJ5IHRzLXRvLXpvZFxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuZXhwb3J0IGNvbnN0IGF1dGhvcml6YXRpb25EZXRhaWxzR3JhbnRSdWxlU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIHBlcm1pc3Npb25fc2V0OiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJQZXJtaXNzaW9uIHNldHMgZm9yIGRhc2hib2FyZCBhcmUgZGVmaW5lZCBpbiBpYW0tY29tbW9uL3JiYWMtY29tbW9uL3Blcm1pc3Npb24tc2V0cy9kZWZpbml0aW9ucy9UcmVlU3RvcmVCYXNlUGVybWlzc2lvblNldHMgRXg6IGBwZXJtaXNzaW9uU2V0cy9kYXNoYm9hcmQucnVubmVyYFwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBjcm9uU2NoZWR1bGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgcXVhcnR6X2Nyb25fZXhwcmVzc2lvbjogei5zdHJpbmcoKS5kZXNjcmliZShcIkEgY3JvbiBleHByZXNzaW9uIHVzaW5nIHF1YXJ0eiBzeW50YXguIEVYOiBgMCAwIDggKiAqID9gIHJlcHJlc2VudHMgZXZlcnlkYXkgYXQgOGFtLiBTZWUgW0Nyb24gVHJpZ2dlcl0gZm9yIGRldGFpbHMuIFtDcm9uIFRyaWdnZXJdOiBodHRwOi8vd3d3LnF1YXJ0ei1zY2hlZHVsZXIub3JnL2RvY3VtZW50YXRpb24vcXVhcnR6LTIuMy4wL3R1dG9yaWFscy9jcm9udHJpZ2dlci5odG1sXCIpLFxuICAgIHRpbWV6b25lX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiQSBKYXZhIHRpbWV6b25lIGlkLiBUaGUgc2NoZWR1bGUgd2lsbCBiZSByZXNvbHZlZCB3aXRoIHJlc3BlY3QgdG8gdGhpcyB0aW1lem9uZS4gU2VlIFtKYXZhIFRpbWVab25lXSBmb3IgZGV0YWlscy4gW0phdmEgVGltZVpvbmVdOiBodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL3V0aWwvVGltZVpvbmUuaHRtbFwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBsaWZlY3ljbGVTdGF0ZVNjaGVtYSA9IHoudW5pb24oW3oubGl0ZXJhbChcIkFDVElWRVwiKSwgei5saXRlcmFsKFwiVFJBU0hFRFwiKV0pO1xuXG5leHBvcnQgY29uc3QgZGFzaGJvYXJkVmlld1NjaGVtYSA9IHoubGl0ZXJhbChcIkRBU0hCT0FSRF9WSUVXX0JBU0lDXCIpO1xuXG5leHBvcnQgY29uc3QgZGVsZXRlU2NoZWR1bGVSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGRhc2hib2FyZF9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIGRhc2hib2FyZCB0byB3aGljaCB0aGUgc2NoZWR1bGUgYmVsb25ncy5cIiksXG4gICAgZXRhZzogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIGV0YWcgZm9yIHRoZSBzY2hlZHVsZS4gT3B0aW9uYWxseSwgaXQgY2FuIGJlIHByb3ZpZGVkIHRvIHZlcmlmeSB0aGF0IHRoZSBzY2hlZHVsZSBoYXMgbm90IGJlZW4gbW9kaWZpZWQgZnJvbSBpdHMgbGFzdCByZXRyaWV2YWwuXCIpLFxuICAgIHNjaGVkdWxlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgc2NoZWR1bGUuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZVN1YnNjcmlwdGlvblJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgZGFzaGJvYXJkX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgZGFzaGJvYXJkIHdoaWNoIHRoZSBzdWJzY3JpcHRpb24gYmVsb25ncy5cIiksXG4gICAgZXRhZzogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIGV0YWcgZm9yIHRoZSBzdWJzY3JpcHRpb24uIENhbiBiZSBvcHRpb25hbGx5IHByb3ZpZGVkIHRvIGVuc3VyZSB0aGF0IHRoZSBzdWJzY3JpcHRpb24gaGFzIG5vdCBiZWVuIG1vZGlmaWVkIHNpbmNlIHRoZSBsYXN0IHJlYWQuXCIpLFxuICAgIHNjaGVkdWxlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgc2NoZWR1bGUgd2hpY2ggdGhlIHN1YnNjcmlwdGlvbiBiZWxvbmdzLlwiKSxcbiAgICBzdWJzY3JpcHRpb25faWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBzdWJzY3JpcHRpb24uXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllU3VnZ2VzdGVkUXVlc3Rpb25zQXR0YWNobWVudFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBxdWVzdGlvbnM6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBzdWdnZXN0ZWQgZm9sbG93LXVwIHF1ZXN0aW9uc1wiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZUNvbnZlcnNhdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJDb252ZXJzYXRpb24gSURcIiksXG4gICAgY3JlYXRlZF90aW1lc3RhbXA6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRpbWVzdGFtcCB3aGVuIHRoZSBtZXNzYWdlIHdhcyBjcmVhdGVkXCIpLFxuICAgIGlkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiQ29udmVyc2F0aW9uIElELiBMZWdhY3kgaWRlbnRpZmllciwgdXNlIGNvbnZlcnNhdGlvbl9pZCBpbnN0ZWFkXCIpLFxuICAgIGxhc3RfdXBkYXRlZF90aW1lc3RhbXA6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRpbWVzdGFtcCB3aGVuIHRoZSBtZXNzYWdlIHdhcyBsYXN0IHVwZGF0ZWRcIiksXG4gICAgc3BhY2VfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJHZW5pZSBzcGFjZSBJRFwiKSxcbiAgICB0aXRsZTogei5zdHJpbmcoKS5kZXNjcmliZShcIkNvbnZlcnNhdGlvbiB0aXRsZVwiKSxcbiAgICB1c2VyX2lkOiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiSUQgb2YgdGhlIHVzZXIgd2hvIGNyZWF0ZWQgdGhlIGNvbnZlcnNhdGlvblwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZUNvbnZlcnNhdGlvblN1bW1hcnlTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgY29udmVyc2F0aW9uX2lkOiB6LnN0cmluZygpLFxuICAgIGNyZWF0ZWRfdGltZXN0YW1wOiB6Lm51bWJlcigpLFxuICAgIHRpdGxlOiB6LnN0cmluZygpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllQ3JlYXRlQ29udmVyc2F0aW9uTWVzc2FnZVJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgY29udGVudDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVzZXIgbWVzc2FnZSBjb250ZW50LlwiKSxcbiAgICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb252ZXJzYXRpb24uXCIpLFxuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2VuaWUgc3BhY2Ugd2hlcmUgdGhlIGNvbnZlcnNhdGlvbiBpcyBzdGFydGVkLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZURlbGV0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnZlcnNhdGlvbi5cIiksXG4gICAgbWVzc2FnZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIG1lc3NhZ2UgdG8gZGVsZXRlLlwiKSxcbiAgICBzcGFjZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIEdlbmllIHNwYWNlIHdoZXJlIHRoZSBtZXNzYWdlIGlzIGxvY2F0ZWQuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllRGVsZXRlQ29udmVyc2F0aW9uUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgSUQgb2YgdGhlIGNvbnZlcnNhdGlvbiB0byBkZWxldGUuXCIpLFxuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2VuaWUgc3BhY2Ugd2hlcmUgdGhlIGNvbnZlcnNhdGlvbiBpcyBsb2NhdGVkLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZUV4ZWN1dGVNZXNzYWdlQXR0YWNobWVudFF1ZXJ5UmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBhdHRhY2htZW50X2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiQXR0YWNobWVudCBJRFwiKSxcbiAgICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJDb252ZXJzYXRpb24gSURcIiksXG4gICAgbWVzc2FnZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIk1lc3NhZ2UgSURcIiksXG4gICAgc3BhY2VfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJHZW5pZSBzcGFjZSBJRFwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZUV4ZWN1dGVNZXNzYWdlUXVlcnlSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkNvbnZlcnNhdGlvbiBJRFwiKSxcbiAgICBtZXNzYWdlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiTWVzc2FnZSBJRFwiKSxcbiAgICBzcGFjZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkdlbmllIHNwYWNlIElEXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllRmVlZGJhY2tSYXRpbmdTY2hlbWEgPSB6LnVuaW9uKFt6LmxpdGVyYWwoXCJORUdBVElWRVwiKSwgei5saXRlcmFsKFwiTk9ORVwiKSwgei5saXRlcmFsKFwiUE9TSVRJVkVcIildKS5kZXNjcmliZShcIkZlZWRiYWNrIHJhdGluZyBmb3IgR2VuaWUgbWVzc2FnZXNcIik7XG5cbmV4cG9ydCBjb25zdCBnZW5pZUdldENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIHRhcmdldCBjb252ZXJzYXRpb24uXCIpLFxuICAgIG1lc3NhZ2VfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YXJnZXQgbWVzc2FnZSBmcm9tIHRoZSBpZGVudGlmaWVkIGNvbnZlcnNhdGlvbi5cIiksXG4gICAgc3BhY2VfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBHZW5pZSBzcGFjZSB3aGVyZSB0aGUgdGFyZ2V0IGNvbnZlcnNhdGlvbiBpcyBsb2NhdGVkLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZUdldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGF0dGFjaG1lbnRfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJBdHRhY2htZW50IElEXCIpLFxuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkNvbnZlcnNhdGlvbiBJRFwiKSxcbiAgICBtZXNzYWdlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiTWVzc2FnZSBJRFwiKSxcbiAgICBzcGFjZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkdlbmllIHNwYWNlIElEXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllR2V0TWVzc2FnZVF1ZXJ5UmVzdWx0UmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJDb252ZXJzYXRpb24gSURcIiksXG4gICAgbWVzc2FnZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIk1lc3NhZ2UgSURcIiksXG4gICAgc3BhY2VfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJHZW5pZSBzcGFjZSBJRFwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZUdldE1lc3NhZ2VRdWVyeVJlc3VsdFJlc3BvbnNlU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIHN0YXRlbWVudF9yZXNwb25zZTogei51bmtub3duKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlNRTCBTdGF0ZW1lbnQgRXhlY3V0aW9uIHJlc3BvbnNlLiBTZWUgW0dldCBzdGF0dXMsIG1hbmlmZXN0LCBhbmQgcmVzdWx0IGZpcnN0IGNodW5rXSg6bWV0aG9kOnN0YXRlbWVudGV4ZWN1dGlvbi9nZXRzdGF0ZW1lbnQpIGZvciBtb3JlIGRldGFpbHMuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllR2V0UXVlcnlSZXN1bHRCeUF0dGFjaG1lbnRSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGF0dGFjaG1lbnRfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJBdHRhY2htZW50IElEXCIpLFxuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkNvbnZlcnNhdGlvbiBJRFwiKSxcbiAgICBtZXNzYWdlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiTWVzc2FnZSBJRFwiKSxcbiAgICBzcGFjZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkdlbmllIHNwYWNlIElEXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllR2V0U3BhY2VSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2VuaWUgc3BhY2VcIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBJRCBvZiB0aGUgY29udmVyc2F0aW9uIHRvIGxpc3QgbWVzc2FnZXMgZnJvbVwiKSxcbiAgICBwYWdlX3NpemU6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIk1heGltdW0gbnVtYmVyIG9mIG1lc3NhZ2VzIHRvIHJldHVybiBwZXIgcGFnZVwiKSxcbiAgICBwYWdlX3Rva2VuOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUb2tlbiB0byBnZXQgdGhlIG5leHQgcGFnZSBvZiByZXN1bHRzXCIpLFxuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2VuaWUgc3BhY2Ugd2hlcmUgdGhlIGNvbnZlcnNhdGlvbiBpcyBsb2NhdGVkXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllTGlzdENvbnZlcnNhdGlvbnNSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGluY2x1ZGVfYWxsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiSW5jbHVkZSBhbGwgY29udmVyc2F0aW9ucyBpbiB0aGUgc3BhY2UgYWNyb3NzIGFsbCB1c2Vycy4gUmVxdWlyZXMgYXQgbGVhc3QgQ0FOIE1BTkFHRSBwZXJtaXNzaW9uIG9uIHRoZSBzcGFjZS5cIiksXG4gICAgcGFnZV9zaXplOiB6Lm51bWJlcigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJNYXhpbXVtIG51bWJlciBvZiBjb252ZXJzYXRpb25zIHRvIHJldHVybiBwZXIgcGFnZVwiKSxcbiAgICBwYWdlX3Rva2VuOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUb2tlbiB0byBnZXQgdGhlIG5leHQgcGFnZSBvZiByZXN1bHRzXCIpLFxuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIElEIG9mIHRoZSBHZW5pZSBzcGFjZSB0byByZXRyaWV2ZSBjb252ZXJzYXRpb25zIGZyb20uXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllTGlzdENvbnZlcnNhdGlvbnNSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBjb252ZXJzYXRpb25zOiB6LmFycmF5KGdlbmllQ29udmVyc2F0aW9uU3VtbWFyeVNjaGVtYSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkxpc3Qgb2YgY29udmVyc2F0aW9ucyBpbiB0aGUgR2VuaWUgc3BhY2VcIiksXG4gICAgbmV4dF9wYWdlX3Rva2VuOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUb2tlbiB0byBnZXQgdGhlIG5leHQgcGFnZSBvZiByZXN1bHRzXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllTGlzdFNwYWNlc1JlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgcGFnZV9zaXplOiB6Lm51bWJlcigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJNYXhpbXVtIG51bWJlciBvZiBzcGFjZXMgdG8gcmV0dXJuIHBlciBwYWdlXCIpLFxuICAgIHBhZ2VfdG9rZW46IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlBhZ2luYXRpb24gdG9rZW4gZm9yIGdldHRpbmcgdGhlIG5leHQgcGFnZSBvZiByZXN1bHRzXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllU3BhY2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRlc2NyaXB0aW9uIG9mIHRoZSBHZW5pZSBTcGFjZVwiKSxcbiAgICBzcGFjZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkdlbmllIHNwYWNlIElEXCIpLFxuICAgIHRpdGxlOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGl0bGUgb2YgdGhlIEdlbmllIFNwYWNlXCIpLFxuICAgIHdhcmVob3VzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2FyZWhvdXNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2VuaWUgU3BhY2VcIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVGZWVkYmFja1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgICByYXRpbmc6IGdlbmllRmVlZGJhY2tSYXRpbmdTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBmZWVkYmFjayByYXRpbmdcIilcbn0pO1xuXG5leHBvcnQgY29uc3QgcmVzdWx0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGlzX3RydW5jYXRlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIklmIHJlc3VsdCBpcyB0cnVuY2F0ZWRcIiksXG4gICAgcm93X2NvdW50OiB6Lm51bWJlcigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJSb3cgY291bnQgb2YgdGhlIHJlc3VsdFwiKSxcbiAgICBzdGF0ZW1lbnRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlN0YXRlbWVudCBFeGVjdXRpb24gQVBJIHN0YXRlbWVudCBpZC4gVXNlIFtHZXQgc3RhdHVzLCBtYW5pZmVzdCwgYW5kIHJlc3VsdCBmaXJzdCBjaHVua10oOm1ldGhvZDpzdGF0ZW1lbnRleGVjdXRpb24vZ2V0c3RhdGVtZW50KSB0byBnZXQgdGhlIGZ1bGwgcmVzdWx0IGRhdGEuXCIpLFxuICAgIHN0YXRlbWVudF9pZF9zaWduYXR1cmU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkpXVCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzdGF0ZW1lbnQgY29udGFpbmVkIGluIHRoaXMgcmVzdWx0XCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IG1lc3NhZ2VTdGF0dXNTY2hlbWEgPSB6LnVuaW9uKFt6LmxpdGVyYWwoXCJBU0tJTkdfQUlcIiksIHoubGl0ZXJhbChcIkNBTkNFTExFRFwiKSwgei5saXRlcmFsKFwiQ09NUExFVEVEXCIpLCB6LmxpdGVyYWwoXCJFWEVDVVRJTkdfUVVFUllcIiksIHoubGl0ZXJhbChcIkZBSUxFRFwiKSwgei5saXRlcmFsKFwiRkVUQ0hJTkdfTUVUQURBVEFcIiksIHoubGl0ZXJhbChcIkZJTFRFUklOR19DT05URVhUXCIpLCB6LmxpdGVyYWwoXCJQRU5ESU5HX1dBUkVIT1VTRVwiKSwgei5saXRlcmFsKFwiUVVFUllfUkVTVUxUX0VYUElSRURcIiksIHoubGl0ZXJhbChcIlNVQk1JVFRFRFwiKV0pLmRlc2NyaWJlKFwiTWVzc2FnZVN0YXR1cy4gVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmU6ICogYEZFVENISU5HX01FVEFEQVRBYDogRmV0Y2hpbmcgbWV0YWRhdGEgZnJvbSB0aGUgZGF0YSBzb3VyY2VzLiAqIGBGSUxURVJJTkdfQ09OVEVYVGA6IFJ1bm5pbmcgc21hcnQgY29udGV4dCBzdGVwIHRvIGRldGVybWluZSByZWxldmFudCBjb250ZXh0LiAqIGBBU0tJTkdfQUlgOiBXYWl0aW5nIGZvciB0aGUgTExNIHRvIHJlc3BvbmQgdG8gdGhlIHVzZXIncyBxdWVzdGlvbi4gKiBgUEVORElOR19XQVJFSE9VU0VgOiBXYWl0aW5nIGZvciB3YXJlaG91c2UgYmVmb3JlIHRoZSBTUUwgcXVlcnkgY2FuIHN0YXJ0IGV4ZWN1dGluZy4gKiBgRVhFQ1VUSU5HX1FVRVJZYDogRXhlY3V0aW5nIGEgZ2VuZXJhdGVkIFNRTCBxdWVyeS4gR2V0IHRoZSBTUUwgcXVlcnkgcmVzdWx0IGJ5IGNhbGxpbmcgW2dldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRdKDptZXRob2Q6Z2VuaWUvZ2V0TWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlc3VsdCkgQVBJLiAqIGBGQUlMRURgOiBUaGUgcmVzcG9uc2UgZ2VuZXJhdGlvbiBvciBxdWVyeSBleGVjdXRpb24gZmFpbGVkLiBTZWUgYGVycm9yYCBmaWVsZC4gKiBgQ09NUExFVEVEYDogTWVzc2FnZSBwcm9jZXNzaW5nIGlzIGNvbXBsZXRlZC4gUmVzdWx0cyBhcmUgaW4gdGhlIGBhdHRhY2htZW50c2AgZmllbGQuIEdldCB0aGUgU1FMIHF1ZXJ5IHJlc3VsdCBieSBjYWxsaW5nIFtnZXRNZXNzYWdlQXR0YWNobWVudFF1ZXJ5UmVzdWx0XSg6bWV0aG9kOmdlbmllL2dldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHQpIEFQSS4gKiBgU1VCTUlUVEVEYDogTWVzc2FnZSBoYXMgYmVlbiBzdWJtaXR0ZWQuICogYFFVRVJZX1JFU1VMVF9FWFBJUkVEYDogU1FMIHJlc3VsdCBpcyBub3QgYXZhaWxhYmxlIGFueW1vcmUuIFRoZSB1c2VyIG5lZWRzIHRvIHJlcnVuIHRoZSBxdWVyeS4gUmVydW4gdGhlIFNRTCBxdWVyeSByZXN1bHQgYnkgY2FsbGluZyBbZXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnldKDptZXRob2Q6Z2VuaWUvZXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnkpIEFQSS4gKiBgQ0FOQ0VMTEVEYDogTWVzc2FnZSBoYXMgYmVlbiBjYW5jZWxsZWQuXCIpO1xuXG5leHBvcnQgY29uc3QgcXVlcnlBdHRhY2htZW50UGFyYW1ldGVyU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGtleXdvcmQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBzcWxfdHlwZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHZhbHVlOiB6LnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVSZXN1bHRNZXRhZGF0YVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBpc190cnVuY2F0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJJbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVzdWx0IHNldCBpcyB0cnVuY2F0ZWQuXCIpLFxuICAgIHJvd19jb3VudDogei5udW1iZXIoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIG51bWJlciBvZiByb3dzIGluIHRoZSByZXN1bHQgc2V0LlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZVNlbmRNZXNzYWdlRmVlZGJhY2tSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnZlcnNhdGlvbi5cIiksXG4gICAgbWVzc2FnZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIG1lc3NhZ2UgdG8gcHJvdmlkZSBmZWVkYmFjayBmb3IuXCIpLFxuICAgIHJhdGluZzogZ2VuaWVGZWVkYmFja1JhdGluZ1NjaGVtYS5kZXNjcmliZShcIlRoZSByYXRpbmcgKFBPU0lUSVZFLCBORUdBVElWRSwgb3IgTk9ORSkuXCIpLFxuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2VuaWUgc3BhY2Ugd2hlcmUgdGhlIG1lc3NhZ2UgaXMgbG9jYXRlZC5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVTdGFydENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGNvbnRlbnQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgdGV4dCBvZiB0aGUgbWVzc2FnZSB0aGF0IHN0YXJ0cyB0aGUgY29udmVyc2F0aW9uLlwiKSxcbiAgICBzcGFjZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIEdlbmllIHNwYWNlIHdoZXJlIHlvdSB3YW50IHRvIHN0YXJ0IGEgY29udmVyc2F0aW9uLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZVRyYXNoU3BhY2VSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIHNwYWNlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2VuaWUgc3BhY2UgdG8gYmUgc2VudCB0byB0aGUgdHJhc2guXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdldERhc2hib2FyZFJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgZGFzaGJvYXJkX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgZGFzaGJvYXJkLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZXRQdWJsaXNoZWREYXNoYm9hcmRSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGRhc2hib2FyZF9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIHB1Ymxpc2hlZCBkYXNoYm9hcmQuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdldFB1Ymxpc2hlZERhc2hib2FyZFRva2VuSW5mb1JlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgZGFzaGJvYXJkX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgcHVibGlzaGVkIGRhc2hib2FyZC5cIiksXG4gICAgZXh0ZXJuYWxfdmFsdWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlByb3ZpZGVkIGV4dGVybmFsIHZhbHVlIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBjdXN0b20gY2xhaW0uXCIpLFxuICAgIGV4dGVybmFsX3ZpZXdlcl9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUHJvdmlkZWQgZXh0ZXJuYWwgdmlld2VyIGlkIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBjdXN0b20gY2xhaW0uXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGF1dGhvcml6YXRpb25EZXRhaWxzU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGdyYW50X3J1bGVzOiB6LmFycmF5KGF1dGhvcml6YXRpb25EZXRhaWxzR3JhbnRSdWxlU2NoZW1hKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUmVwcmVzZW50cyBkb3duc2NvcGVkIHBlcm1pc3Npb24gcnVsZXMgd2l0aCBzcGVjaWZpYyBhY2Nlc3MgcmlnaHRzLiBUaGlzIGZpZWxkIGlzIHNwZWNpZmljIHRvIGB3b3Jrc3BhY2VfcnVsZV9zZXRgIGNvbnN0cmFpbnQuXCIpLFxuICAgIHJlc291cmNlX2xlZ2FjeV9hY2xfcGF0aDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIGFjbCBwYXRoIG9mIHRoZSB0cmVlIHN0b3JlIHJlc291cmNlIHJlc291cmNlLlwiKSxcbiAgICByZXNvdXJjZV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgcmVzb3VyY2UgbmFtZSB0byB3aGljaCB0aGUgYXV0aG9yaXphdGlvbiBydWxlIGFwcGxpZXMuIFRoaXMgZmllbGQgaXMgc3BlY2lmaWMgdG8gYHdvcmtzcGFjZV9ydWxlX3NldGAgY29uc3RyYWludC4gRm9ybWF0OiBgd29ya3NwYWNlcy97d29ya3NwYWNlX2lkfS9kYXNoYm9hcmRzL3tkYXNoYm9hcmRfaWR9YFwiKSxcbiAgICB0eXBlOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgdHlwZSBvZiBhdXRob3JpemF0aW9uIGRvd25zY29waW5nIHBvbGljeS4gRXg6IGB3b3Jrc3BhY2VfcnVsZV9zZXRgIGRlZmluZXMgYWNjZXNzIHJ1bGVzIGZvciBhIHNwZWNpZmljIHdvcmtzcGFjZSByZXNvdXJjZVwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZXRTY2hlZHVsZVJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgZGFzaGJvYXJkX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgZGFzaGJvYXJkIHRvIHdoaWNoIHRoZSBzY2hlZHVsZSBiZWxvbmdzLlwiKSxcbiAgICBzY2hlZHVsZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIHNjaGVkdWxlLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZXRTdWJzY3JpcHRpb25SZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGRhc2hib2FyZF9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIGRhc2hib2FyZCB3aGljaCB0aGUgc3Vic2NyaXB0aW9uIGJlbG9uZ3MuXCIpLFxuICAgIHNjaGVkdWxlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgc2NoZWR1bGUgd2hpY2ggdGhlIHN1YnNjcmlwdGlvbiBiZWxvbmdzLlwiKSxcbiAgICBzdWJzY3JpcHRpb25faWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBzdWJzY3JpcHRpb24uXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGxpc3REYXNoYm9hcmRzUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBwYWdlX3NpemU6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBudW1iZXIgb2YgZGFzaGJvYXJkcyB0byByZXR1cm4gcGVyIHBhZ2UuXCIpLFxuICAgIHBhZ2VfdG9rZW46IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkEgcGFnZSB0b2tlbiwgcmVjZWl2ZWQgZnJvbSBhIHByZXZpb3VzIGBMaXN0RGFzaGJvYXJkc2AgY2FsbC4gVGhpcyB0b2tlbiBjYW4gYmUgdXNlZCB0byByZXRyaWV2ZSB0aGUgc3Vic2VxdWVudCBwYWdlLlwiKSxcbiAgICBzaG93X3RyYXNoZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgZmxhZyB0byBpbmNsdWRlIGRhc2hib2FyZHMgbG9jYXRlZCBpbiB0aGUgdHJhc2guIElmIHVuc3BlY2lmaWVkLCBvbmx5IGFjdGl2ZSBkYXNoYm9hcmRzIHdpbGwgYmUgcmV0dXJuZWQuXCIpLFxuICAgIHZpZXc6IGRhc2hib2FyZFZpZXdTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcImBEQVNIQk9BUkRfVklFV19CQVNJQ2Bvbmx5IGluY2x1ZGVzIHN1bW1hcnkgbWV0YWRhdGEgZnJvbSB0aGUgZGFzaGJvYXJkLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBkYXNoYm9hcmRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgY3JlYXRlX3RpbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSB0aW1lc3RhbXAgb2Ygd2hlbiB0aGUgZGFzaGJvYXJkIHdhcyBjcmVhdGVkLlwiKSxcbiAgICBkYXNoYm9hcmRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIGRhc2hib2FyZC5cIiksXG4gICAgZGlzcGxheV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgZGlzcGxheSBuYW1lIG9mIHRoZSBkYXNoYm9hcmQuXCIpLFxuICAgIGV0YWc6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBldGFnIGZvciB0aGUgZGFzaGJvYXJkLiBDYW4gYmUgb3B0aW9uYWxseSBwcm92aWRlZCBvbiB1cGRhdGVzIHRvIGVuc3VyZSB0aGF0IHRoZSBkYXNoYm9hcmQgaGFzIG5vdCBiZWVuIG1vZGlmaWVkIHNpbmNlIHRoZSBsYXN0IHJlYWQuIFRoaXMgZmllbGQgaXMgZXhjbHVkZWQgaW4gTGlzdCBEYXNoYm9hcmRzIHJlc3BvbnNlcy5cIiksXG4gICAgbGlmZWN5Y2xlX3N0YXRlOiBsaWZlY3ljbGVTdGF0ZVNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIHN0YXRlIG9mIHRoZSBkYXNoYm9hcmQgcmVzb3VyY2UuIFVzZWQgZm9yIHRyYWNraW5nIHRyYXNoZWQgc3RhdHVzLlwiKSxcbiAgICBwYXJlbnRfcGF0aDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIHdvcmtzcGFjZSBwYXRoIG9mIHRoZSBmb2xkZXIgY29udGFpbmluZyB0aGUgZGFzaGJvYXJkLiBJbmNsdWRlcyBsZWFkaW5nIHNsYXNoIGFuZCBubyB0cmFpbGluZyBzbGFzaC4gVGhpcyBmaWVsZCBpcyBleGNsdWRlZCBpbiBMaXN0IERhc2hib2FyZHMgcmVzcG9uc2VzLlwiKSxcbiAgICBwYXRoOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgd29ya3NwYWNlIHBhdGggb2YgdGhlIGRhc2hib2FyZCBhc3NldCwgaW5jbHVkaW5nIHRoZSBmaWxlIG5hbWUuIEV4cG9ydGVkIGRhc2hib2FyZHMgYWx3YXlzIGhhdmUgdGhlIGZpbGUgZXh0ZW5zaW9uIGAubHZkYXNoLmpzb25gLiBUaGlzIGZpZWxkIGlzIGV4Y2x1ZGVkIGluIExpc3QgRGFzaGJvYXJkcyByZXNwb25zZXMuXCIpLFxuICAgIHNlcmlhbGl6ZWRfZGFzaGJvYXJkOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgY29udGVudHMgb2YgdGhlIGRhc2hib2FyZCBpbiBzZXJpYWxpemVkIHN0cmluZyBmb3JtLiBUaGlzIGZpZWxkIGlzIGV4Y2x1ZGVkIGluIExpc3QgRGFzaGJvYXJkcyByZXNwb25zZXMuIFVzZSB0aGUgW2dldCBkYXNoYm9hcmQgQVBJXSB0byByZXRyaWV2ZSBhbiBleGFtcGxlIHJlc3BvbnNlLCB3aGljaCBpbmNsdWRlcyB0aGUgYHNlcmlhbGl6ZWRfZGFzaGJvYXJkYCBmaWVsZC4gVGhpcyBmaWVsZCBwcm92aWRlcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBKU09OIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhlIGRhc2hib2FyZCdzIGxheW91dCBhbmQgY29tcG9uZW50cy4gW2dldCBkYXNoYm9hcmQgQVBJXTogaHR0cHM6Ly9kb2NzLmRhdGFicmlja3MuY29tL2FwaS93b3Jrc3BhY2UvbGFrZXZpZXcvZ2V0XCIpLFxuICAgIHVwZGF0ZV90aW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgdGltZXN0YW1wIG9mIHdoZW4gdGhlIGRhc2hib2FyZCB3YXMgbGFzdCB1cGRhdGVkIGJ5IHRoZSB1c2VyLiBUaGlzIGZpZWxkIGlzIGV4Y2x1ZGVkIGluIExpc3QgRGFzaGJvYXJkcyByZXNwb25zZXMuXCIpLFxuICAgIHdhcmVob3VzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIHdhcmVob3VzZSBJRCB1c2VkIHRvIHJ1biB0aGUgZGFzaGJvYXJkLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBsaXN0U2NoZWR1bGVzUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBkYXNoYm9hcmRfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgdG8gd2hpY2ggdGhlIHNjaGVkdWxlcyBiZWxvbmdzLlwiKSxcbiAgICBwYWdlX3NpemU6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBudW1iZXIgb2Ygc2NoZWR1bGVzIHRvIHJldHVybiBwZXIgcGFnZS5cIiksXG4gICAgcGFnZV90b2tlbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQSBwYWdlIHRva2VuLCByZWNlaXZlZCBmcm9tIGEgcHJldmlvdXMgYExpc3RTY2hlZHVsZXNgIGNhbGwuIFVzZSB0aGlzIHRvIHJldHJpZXZlIHRoZSBzdWJzZXF1ZW50IHBhZ2UuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGxpc3RTdWJzY3JpcHRpb25zUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBkYXNoYm9hcmRfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgd2hpY2ggdGhlIHN1YnNjcmlwdGlvbnMgYmVsb25ncy5cIiksXG4gICAgcGFnZV9zaXplOiB6Lm51bWJlcigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgbnVtYmVyIG9mIHN1YnNjcmlwdGlvbnMgdG8gcmV0dXJuIHBlciBwYWdlLlwiKSxcbiAgICBwYWdlX3Rva2VuOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBIHBhZ2UgdG9rZW4sIHJlY2VpdmVkIGZyb20gYSBwcmV2aW91cyBgTGlzdFN1YnNjcmlwdGlvbnNgIGNhbGwuIFVzZSB0aGlzIHRvIHJldHJpZXZlIHRoZSBzdWJzZXF1ZW50IHBhZ2UuXCIpLFxuICAgIHNjaGVkdWxlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgc2NoZWR1bGUgd2hpY2ggdGhlIHN1YnNjcmlwdGlvbnMgYmVsb25ncy5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgbWVzc2FnZUVycm9yVHlwZVNjaGVtYSA9IHoudW5pb24oW3oubGl0ZXJhbChcIkJMT0NLX01VTFRJUExFX0VYRUNVVElPTlNfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJDSEFUX0NPTVBMRVRJT05fQ0xJRU5UX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiQ0hBVF9DT01QTEVUSU9OX0NMSUVOVF9USU1FT1VUX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiQ0hBVF9DT01QTEVUSU9OX05FVFdPUktfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJDT05URU5UX0ZJTFRFUl9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIkNPTlRFWFRfRVhDRUVERURfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJDT1VMRF9OT1RfR0VUX01PREVMX0RFUExPWU1FTlRTX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiQ09VTERfTk9UX0dFVF9VQ19TQ0hFTUFfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJERVBMT1lNRU5UX05PVF9GT1VORF9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIkRFU0NSSUJFX1FVRVJZX0lOVkFMSURfU1FMX0VSUk9SXCIpLCB6LmxpdGVyYWwoXCJERVNDUklCRV9RVUVSWV9USU1FT1VUXCIpLCB6LmxpdGVyYWwoXCJERVNDUklCRV9RVUVSWV9VTkVYUEVDVEVEX0ZBSUxVUkVcIiksIHoubGl0ZXJhbChcIkVYQ0VFREVEX01BWF9UT0tFTl9MRU5HVEhfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJGVU5DVElPTlNfTk9UX0FWQUlMQUJMRV9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIkZVTkNUSU9OX0FSR1VNRU5UU19JTlZBTElEX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiRlVOQ1RJT05fQVJHVU1FTlRTX0lOVkFMSURfSlNPTl9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIkZVTkNUSU9OX0FSR1VNRU5UU19JTlZBTElEX1RZUEVfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJGVU5DVElPTl9DQUxMX01JU1NJTkdfUEFSQU1FVEVSX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiR0VORVJBVEVEX1NRTF9RVUVSWV9UT09fTE9OR19FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIkdFTkVSSUNfQ0hBVF9DT01QTEVUSU9OX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiR0VORVJJQ19DSEFUX0NPTVBMRVRJT05fU0VSVklDRV9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIkdFTkVSSUNfU1FMX0VYRUNfQVBJX0NBTExfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJJTExFR0FMX1BBUkFNRVRFUl9ERUZJTklUSU9OX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiSU5URVJOQUxfQ0FUQUxPR19BU1NFVF9DUkVBVElPTl9GQUlMRURfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJJTlRFUk5BTF9DQVRBTE9HX0FTU0VUX0NSRUFUSU9OX09OR09JTkdfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJJTlRFUk5BTF9DQVRBTE9HX0FTU0VUX0NSRUFUSU9OX1VOU1VQUE9SVEVEX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiSU5URVJOQUxfQ0FUQUxPR19NSVNTSU5HX1VDX1BBVEhfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJJTlRFUk5BTF9DQVRBTE9HX1BBVEhfT1ZFUkxBUF9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIklOVkFMSURfQ0VSVElGSUVEX0FOU1dFUl9GVU5DVElPTl9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIklOVkFMSURfQ0VSVElGSUVEX0FOU1dFUl9JREVOVElGSUVSX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiSU5WQUxJRF9DSEFUX0NPTVBMRVRJT05fQVJHVU1FTlRTX0pTT05fRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJJTlZBTElEX0NIQVRfQ09NUExFVElPTl9KU09OX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiSU5WQUxJRF9DT01QTEVUSU9OX1JFUVVFU1RfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJJTlZBTElEX0ZVTkNUSU9OX0NBTExfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJJTlZBTElEX1NRTF9NVUxUSVBMRV9EQVRBU0VUX1JFRkVSRU5DRVNfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJJTlZBTElEX1NRTF9NVUxUSVBMRV9TVEFURU1FTlRTX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiSU5WQUxJRF9TUUxfVU5LTk9XTl9UQUJMRV9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIklOVkFMSURfVEFCTEVfSURFTlRJRklFUl9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIkxPQ0FMX0NPTlRFWFRfRVhDRUVERURfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJNRVNTQUdFX0FUVEFDSE1FTlRfVE9PX0xPTkdfRVJST1JcIiksIHoubGl0ZXJhbChcIk1FU1NBR0VfQ0FOQ0VMTEVEX1dISUxFX0VYRUNVVElOR19FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIk1FU1NBR0VfREVMRVRFRF9XSElMRV9FWEVDVVRJTkdfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJNRVNTQUdFX1VQREFURURfV0hJTEVfRVhFQ1VUSU5HX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiTUlTU0lOR19TUUxfUVVFUllfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJOT19ERVBMT1lNRU5UU19BVkFJTEFCTEVfVE9fV09SS1NQQUNFXCIpLCB6LmxpdGVyYWwoXCJOT19RVUVSWV9UT19WSVNVQUxJWkVfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJOT19UQUJMRVNfVE9fUVVFUllfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJSQVRFX0xJTUlUX0VYQ0VFREVEX0dFTkVSSUNfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJSQVRFX0xJTUlUX0VYQ0VFREVEX1NQRUNJRklFRF9XQUlUX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiUkVQTFlfUFJPQ0VTU19USU1FT1VUX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiUkVUUllBQkxFX1BST0NFU1NJTkdfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJTUUxfRVhFQ1VUSU9OX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiU1RPUF9QUk9DRVNTX0RVRV9UT19BVVRPX1JFR0VORVJBVEVcIiksIHoubGl0ZXJhbChcIlRBQkxFU19NSVNTSU5HX0VYQ0VQVElPTlwiKSwgei5saXRlcmFsKFwiVE9PX01BTllfQ0VSVElGSUVEX0FOU1dFUlNfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJUT09fTUFOWV9UQUJMRVNfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJVTkVYUEVDVEVEX1JFUExZX1BST0NFU1NfRVhDRVBUSU9OXCIpLCB6LmxpdGVyYWwoXCJVTktOT1dOX0FJX01PREVMXCIpLCB6LmxpdGVyYWwoXCJVTlNVUFBPUlRFRF9DT05WRVJTQVRJT05fVFlQRV9FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIldBUkVIT1VTRV9BQ0NFU1NfTUlTU0lOR19FWENFUFRJT05cIiksIHoubGl0ZXJhbChcIldBUkVIT1VTRV9OT1RfRk9VTkRfRVhDRVBUSU9OXCIpXSk7XG5cbmV4cG9ydCBjb25zdCBtaWdyYXRlRGFzaGJvYXJkUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBkaXNwbGF5X25hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRpc3BsYXkgbmFtZSBmb3IgdGhlIG5ldyBMYWtldmlldyBkYXNoYm9hcmQuXCIpLFxuICAgIHBhcmVudF9wYXRoOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgd29ya3NwYWNlIHBhdGggb2YgdGhlIGZvbGRlciB0byBjb250YWluIHRoZSBtaWdyYXRlZCBMYWtldmlldyBkYXNoYm9hcmQuXCIpLFxuICAgIHNvdXJjZV9kYXNoYm9hcmRfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVVUlEIG9mIHRoZSBkYXNoYm9hcmQgdG8gYmUgbWlncmF0ZWQuXCIpLFxuICAgIHVwZGF0ZV9wYXJhbWV0ZXJfc3ludGF4OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRmxhZyB0byBpbmRpY2F0ZSBpZiBtdXN0YWNoZSBwYXJhbWV0ZXIgc3ludGF4ICh7eyBwYXJhbSB9fSkgc2hvdWxkIGJlIGF1dG8tdXBkYXRlZCB0byBuYW1lZCBzeW50YXggKDpwYXJhbSkgd2hlbiBjb252ZXJ0aW5nIGRhdGFzZXRzIGluIHRoZSBkYXNoYm9hcmQuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IHB1Ymxpc2hSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGRhc2hib2FyZF9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIGRhc2hib2FyZCB0byBiZSBwdWJsaXNoZWQuXCIpLFxuICAgIGVtYmVkX2NyZWRlbnRpYWxzOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiRmxhZyB0byBpbmRpY2F0ZSBpZiB0aGUgcHVibGlzaGVyJ3MgY3JlZGVudGlhbHMgc2hvdWxkIGJlIGVtYmVkZGVkIGluIHRoZSBwdWJsaXNoZWQgZGFzaGJvYXJkLiBUaGVzZSBlbWJlZGRlZCBjcmVkZW50aWFscyB3aWxsIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgcHVibGlzaGVkIGRhc2hib2FyZCdzIHF1ZXJpZXMuXCIpLFxuICAgIHdhcmVob3VzZV9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIElEIG9mIHRoZSB3YXJlaG91c2UgdGhhdCBjYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgd2FyZWhvdXNlIHdoaWNoIHdhcyBzZXQgaW4gdGhlIGRyYWZ0LlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBwdWJsaXNoZWREYXNoYm9hcmRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgZGlzcGxheV9uYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgZGlzcGxheSBuYW1lIG9mIHRoZSBwdWJsaXNoZWQgZGFzaGJvYXJkLlwiKSxcbiAgICBlbWJlZF9jcmVkZW50aWFsczogei5ib29sZWFuKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkluZGljYXRlcyB3aGV0aGVyIGNyZWRlbnRpYWxzIGFyZSBlbWJlZGRlZCBpbiB0aGUgcHVibGlzaGVkIGRhc2hib2FyZC5cIiksXG4gICAgcmV2aXNpb25fY3JlYXRlX3RpbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSB0aW1lc3RhbXAgb2Ygd2hlbiB0aGUgcHVibGlzaGVkIGRhc2hib2FyZCB3YXMgbGFzdCByZXZpc2VkLlwiKSxcbiAgICB3YXJlaG91c2VfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSB3YXJlaG91c2UgSUQgdXNlZCB0byBydW4gdGhlIHB1Ymxpc2hlZCBkYXNoYm9hcmQuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IHNjaGVkdWxlUGF1c2VTdGF0dXNTY2hlbWEgPSB6LnVuaW9uKFt6LmxpdGVyYWwoXCJQQVVTRURcIiksIHoubGl0ZXJhbChcIlVOUEFVU0VEXCIpXSk7XG5cbmV4cG9ydCBjb25zdCBzdWJzY3JpcHRpb25TdWJzY3JpYmVyRGVzdGluYXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgZGVzdGluYXRpb25faWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgY2Fub25pY2FsIGlkZW50aWZpZXIgb2YgdGhlIGRlc3RpbmF0aW9uIHRvIHJlY2VpdmUgZW1haWwgbm90aWZpY2F0aW9uLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBzdWJzY3JpcHRpb25TdWJzY3JpYmVyVXNlclNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICB1c2VyX2lkOiB6Lm51bWJlcigpLmRlc2NyaWJlKFwiVXNlcklkIG9mIHRoZSBzdWJzY3JpYmVyLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBzdWJzY3JpYmVyU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGRlc3RpbmF0aW9uX3N1YnNjcmliZXI6IHN1YnNjcmlwdGlvblN1YnNjcmliZXJEZXN0aW5hdGlvblNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIGRlc3RpbmF0aW9uIHRvIHJlY2VpdmUgdGhlIHN1YnNjcmlwdGlvbiBlbWFpbC4gVGhpcyBwYXJhbWV0ZXIgaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYHVzZXJfc3Vic2NyaWJlcmAuXCIpLFxuICAgIHVzZXJfc3Vic2NyaWJlcjogc3Vic2NyaXB0aW9uU3Vic2NyaWJlclVzZXJTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSB1c2VyIHRvIHJlY2VpdmUgdGhlIHN1YnNjcmlwdGlvbiBlbWFpbC4gVGhpcyBwYXJhbWV0ZXIgaXMgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYGRlc3RpbmF0aW9uX3N1YnNjcmliZXJgLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCB0ZXh0QXR0YWNobWVudFB1cnBvc2VTY2hlbWEgPSB6LmxpdGVyYWwoXCJGT0xMT1dfVVBfUVVFU1RJT05cIikuZGVzY3JpYmUoXCJQdXJwb3NlL2ludGVudCBvZiBhIHRleHQgYXR0YWNobWVudFwiKTtcblxuZXhwb3J0IGNvbnN0IHRyYXNoRGFzaGJvYXJkUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBkYXNoYm9hcmRfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IHVucHVibGlzaERhc2hib2FyZFJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgZGFzaGJvYXJkX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgcHVibGlzaGVkIGRhc2hib2FyZC5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgdXBkYXRlRGFzaGJvYXJkUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBkYXNoYm9hcmQ6IGRhc2hib2FyZFNjaGVtYSxcbiAgICBkYXNoYm9hcmRfaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IHNjaGVkdWxlU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGNyZWF0ZV90aW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBIHRpbWVzdGFtcCBpbmRpY2F0aW5nIHdoZW4gdGhlIHNjaGVkdWxlIHdhcyBjcmVhdGVkLlwiKSxcbiAgICBjcm9uX3NjaGVkdWxlOiBjcm9uU2NoZWR1bGVTY2hlbWEuZGVzY3JpYmUoXCJUaGUgY3JvbiBleHByZXNzaW9uIGRlc2NyaWJpbmcgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgcGVyaW9kaWMgcmVmcmVzaCBmb3IgdGhpcyBzY2hlZHVsZS5cIiksXG4gICAgZGFzaGJvYXJkX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgdG8gd2hpY2ggdGhlIHNjaGVkdWxlIGJlbG9uZ3MuXCIpLFxuICAgIGRpc3BsYXlfbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIGRpc3BsYXkgbmFtZSBmb3Igc2NoZWR1bGUuXCIpLFxuICAgIGV0YWc6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBldGFnIGZvciB0aGUgc2NoZWR1bGUuIE11c3QgYmUgbGVmdCBlbXB0eSBvbiBjcmVhdGUsIG11c3QgYmUgcHJvdmlkZWQgb24gdXBkYXRlcyB0byBlbnN1cmUgdGhhdCB0aGUgc2NoZWR1bGUgaGFzIG5vdCBiZWVuIG1vZGlmaWVkIHNpbmNlIHRoZSBsYXN0IHJlYWQsIGFuZCBjYW4gYmUgb3B0aW9uYWxseSBwcm92aWRlZCBvbiBkZWxldGUuXCIpLFxuICAgIHBhdXNlX3N0YXR1czogc2NoZWR1bGVQYXVzZVN0YXR1c1NjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIHN0YXR1cyBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIHNjaGVkdWxlIGlzIHBhdXNlZCBvciBub3QuXCIpLFxuICAgIHNjaGVkdWxlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBzY2hlZHVsZS5cIiksXG4gICAgdXBkYXRlX3RpbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkEgdGltZXN0YW1wIGluZGljYXRpbmcgd2hlbiB0aGUgc2NoZWR1bGUgd2FzIGxhc3QgdXBkYXRlZC5cIiksXG4gICAgd2FyZWhvdXNlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgd2FyZWhvdXNlIGlkIHRvIHJ1biB0aGUgZGFzaGJvYXJkIHdpdGggZm9yIHRoZSBzY2hlZHVsZS5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGFzaGJvYXJkUmVxdWVzdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBkYXNoYm9hcmQ6IGRhc2hib2FyZFNjaGVtYVxufSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTY2hlZHVsZVJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgZGFzaGJvYXJkX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgZGFzaGJvYXJkIHRvIHdoaWNoIHRoZSBzY2hlZHVsZSBiZWxvbmdzLlwiKSxcbiAgICBzY2hlZHVsZTogc2NoZWR1bGVTY2hlbWEuZGVzY3JpYmUoXCJUaGUgc2NoZWR1bGUgdG8gY3JlYXRlLiBBIGRhc2hib2FyZCBpcyBsaW1pdGVkIHRvIDEwIHNjaGVkdWxlcy5cIilcbn0pO1xuXG5leHBvcnQgY29uc3Qgc3Vic2NyaXB0aW9uU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGNyZWF0ZV90aW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBIHRpbWVzdGFtcCBpbmRpY2F0aW5nIHdoZW4gdGhlIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZC5cIiksXG4gICAgY3JlYXRlZF9ieV91c2VyX2lkOiB6Lm51bWJlcigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJVc2VySWQgb2YgdGhlIHVzZXIgd2hvIGFkZHMgc3Vic2NyaWJlcnMgKHVzZXJzIG9yIG5vdGlmaWNhdGlvbiBkZXN0aW5hdGlvbnMpIHRvIHRoZSBkYXNoYm9hcmQncyBzY2hlZHVsZS5cIiksXG4gICAgZGFzaGJvYXJkX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJVVUlEIGlkZW50aWZ5aW5nIHRoZSBkYXNoYm9hcmQgdG8gd2hpY2ggdGhlIHN1YnNjcmlwdGlvbiBiZWxvbmdzLlwiKSxcbiAgICBldGFnOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgZXRhZyBmb3IgdGhlIHN1YnNjcmlwdGlvbi4gTXVzdCBiZSBsZWZ0IGVtcHR5IG9uIGNyZWF0ZSwgY2FuIGJlIG9wdGlvbmFsbHkgcHJvdmlkZWQgb24gZGVsZXRlIHRvIGVuc3VyZSB0aGF0IHRoZSBzdWJzY3JpcHRpb24gaGFzIG5vdCBiZWVuIGRlbGV0ZWQgc2luY2UgdGhlIGxhc3QgcmVhZC5cIiksXG4gICAgc2NoZWR1bGVfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIHNjaGVkdWxlIHRvIHdoaWNoIHRoZSBzdWJzY3JpcHRpb24gYmVsb25ncy5cIiksXG4gICAgc3Vic2NyaWJlcjogc3Vic2NyaWJlclNjaGVtYS5kZXNjcmliZShcIlN1YnNjcmliZXIgZGV0YWlscyBmb3IgdXNlcnMgYW5kIGRlc3RpbmF0aW9ucyB0byBiZSBhZGRlZCBhcyBzdWJzY3JpYmVycyB0byB0aGUgc2NoZWR1bGUuXCIpLFxuICAgIHN1YnNjcmlwdGlvbl9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgc3Vic2NyaXB0aW9uLlwiKSxcbiAgICB1cGRhdGVfdGltZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQSB0aW1lc3RhbXAgaW5kaWNhdGluZyB3aGVuIHRoZSBzdWJzY3JpcHRpb24gd2FzIGxhc3QgdXBkYXRlZC5cIilcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkRlc2NyaXB0aW9uIG9mIHRoZSBxdWVyeVwiKSxcbiAgICBpZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGxhc3RfdXBkYXRlZF90aW1lc3RhbXA6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRpbWUgd2hlbiB0aGUgdXNlciB1cGRhdGVkIHRoZSBxdWVyeSBsYXN0XCIpLFxuICAgIHBhcmFtZXRlcnM6IHouYXJyYXkocXVlcnlBdHRhY2htZW50UGFyYW1ldGVyU2NoZW1hKS5vcHRpb25hbCgpLFxuICAgIHF1ZXJ5OiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBSSBnZW5lcmF0ZWQgU1FMIHF1ZXJ5XCIpLFxuICAgIHF1ZXJ5X3Jlc3VsdF9tZXRhZGF0YTogZ2VuaWVSZXN1bHRNZXRhZGF0YVNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBxdWVyeSByZXN1bHQuXCIpLFxuICAgIHN0YXRlbWVudF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiU3RhdGVtZW50IEV4ZWN1dGlvbiBBUEkgc3RhdGVtZW50IGlkLiBVc2UgW0dldCBzdGF0dXMsIG1hbmlmZXN0LCBhbmQgcmVzdWx0IGZpcnN0IGNodW5rXSg6bWV0aG9kOnN0YXRlbWVudGV4ZWN1dGlvbi9nZXRzdGF0ZW1lbnQpIHRvIGdldCB0aGUgZnVsbCByZXN1bHQgZGF0YS5cIiksXG4gICAgdGl0bGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIk5hbWUgb2YgdGhlIHF1ZXJ5XCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IHRleHRBdHRhY2htZW50U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGNvbnRlbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkFJIGdlbmVyYXRlZCBtZXNzYWdlXCIpLFxuICAgIGlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcHVycG9zZTogdGV4dEF0dGFjaG1lbnRQdXJwb3NlU2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJQdXJwb3NlL2ludGVudCBvZiB0aGlzIHRleHQgYXR0YWNobWVudFwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZUxpc3RTcGFjZXNSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBuZXh0X3BhZ2VfdG9rZW46IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRva2VuIHRvIGdldCB0aGUgbmV4dCBwYWdlIG9mIHJlc3VsdHNcIiksXG4gICAgc3BhY2VzOiB6LmFycmF5KGdlbmllU3BhY2VTY2hlbWEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJMaXN0IG9mIEdlbmllIHNwYWNlc1wiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZUF0dGFjaG1lbnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgYXR0YWNobWVudF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQXR0YWNobWVudCBJRFwiKSxcbiAgICBxdWVyeTogZ2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcIlF1ZXJ5IEF0dGFjaG1lbnQgaWYgR2VuaWUgcmVzcG9uZHMgd2l0aCBhIFNRTCBxdWVyeVwiKSxcbiAgICBzdWdnZXN0ZWRfcXVlc3Rpb25zOiBnZW5pZVN1Z2dlc3RlZFF1ZXN0aW9uc0F0dGFjaG1lbnRTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcIkZvbGxvdy11cCBxdWVzdGlvbnMgc3VnZ2VzdGVkIGJ5IEdlbmllXCIpLFxuICAgIHRleHQ6IHRleHRBdHRhY2htZW50U2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUZXh0IEF0dGFjaG1lbnQgaWYgR2VuaWUgcmVzcG9uZHMgd2l0aCB0ZXh0XCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IG1lc3NhZ2VFcnJvclNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBlcnJvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHR5cGU6IG1lc3NhZ2VFcnJvclR5cGVTY2hlbWEub3B0aW9uYWwoKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZU1lc3NhZ2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgYXR0YWNobWVudHM6IHouYXJyYXkoZ2VuaWVBdHRhY2htZW50U2NoZW1hKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiQUktZ2VuZXJhdGVkIHJlc3BvbnNlIHRvIHRoZSBtZXNzYWdlXCIpLFxuICAgIGNvbnRlbnQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJVc2VyIG1lc3NhZ2UgY29udGVudFwiKSxcbiAgICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJDb252ZXJzYXRpb24gSURcIiksXG4gICAgY3JlYXRlZF90aW1lc3RhbXA6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRpbWVzdGFtcCB3aGVuIHRoZSBtZXNzYWdlIHdhcyBjcmVhdGVkXCIpLFxuICAgIGVycm9yOiBtZXNzYWdlRXJyb3JTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcIkVycm9yIG1lc3NhZ2UgaWYgR2VuaWUgZmFpbGVkIHRvIHJlc3BvbmQgdG8gdGhlIG1lc3NhZ2VcIiksXG4gICAgZmVlZGJhY2s6IGdlbmllRmVlZGJhY2tTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcIlVzZXIgZmVlZGJhY2sgZm9yIHRoZSBtZXNzYWdlIGlmIHByb3ZpZGVkXCIpLFxuICAgIGlkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiTWVzc2FnZSBJRC4gTGVnYWN5IGlkZW50aWZpZXIsIHVzZSBtZXNzYWdlX2lkIGluc3RlYWRcIiksXG4gICAgbGFzdF91cGRhdGVkX3RpbWVzdGFtcDogei5udW1iZXIoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGltZXN0YW1wIHdoZW4gdGhlIG1lc3NhZ2Ugd2FzIGxhc3QgdXBkYXRlZFwiKSxcbiAgICBtZXNzYWdlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiTWVzc2FnZSBJRFwiKSxcbiAgICBxdWVyeV9yZXN1bHQ6IHJlc3VsdFNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIHJlc3VsdCBvZiBTUUwgcXVlcnkgaWYgdGhlIG1lc3NhZ2UgaW5jbHVkZXMgYSBxdWVyeSBhdHRhY2htZW50LiBEZXByZWNhdGVkLiBVc2UgYHF1ZXJ5X3Jlc3VsdF9tZXRhZGF0YWAgaW4gYEdlbmllUXVlcnlBdHRhY2htZW50YCBpbnN0ZWFkLlwiKSxcbiAgICBzcGFjZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkdlbmllIHNwYWNlIElEXCIpLFxuICAgIHN0YXR1czogbWVzc2FnZVN0YXR1c1NjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTWVzc2FnZVN0YXR1cy4gVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmU6ICogYEZFVENISU5HX01FVEFEQVRBYDogRmV0Y2hpbmcgbWV0YWRhdGEgZnJvbSB0aGUgZGF0YSBzb3VyY2VzLiAqIGBGSUxURVJJTkdfQ09OVEVYVGA6IFJ1bm5pbmcgc21hcnQgY29udGV4dCBzdGVwIHRvIGRldGVybWluZSByZWxldmFudCBjb250ZXh0LiAqIGBBU0tJTkdfQUlgOiBXYWl0aW5nIGZvciB0aGUgTExNIHRvIHJlc3BvbmQgdG8gdGhlIHVzZXIncyBxdWVzdGlvbi4gKiBgUEVORElOR19XQVJFSE9VU0VgOiBXYWl0aW5nIGZvciB3YXJlaG91c2UgYmVmb3JlIHRoZSBTUUwgcXVlcnkgY2FuIHN0YXJ0IGV4ZWN1dGluZy4gKiBgRVhFQ1VUSU5HX1FVRVJZYDogRXhlY3V0aW5nIGEgZ2VuZXJhdGVkIFNRTCBxdWVyeS4gR2V0IHRoZSBTUUwgcXVlcnkgcmVzdWx0IGJ5IGNhbGxpbmcgW2dldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRdKDptZXRob2Q6Z2VuaWUvZ2V0TWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlc3VsdCkgQVBJLiAqIGBGQUlMRURgOiBUaGUgcmVzcG9uc2UgZ2VuZXJhdGlvbiBvciBxdWVyeSBleGVjdXRpb24gZmFpbGVkLiBTZWUgYGVycm9yYCBmaWVsZC4gKiBgQ09NUExFVEVEYDogTWVzc2FnZSBwcm9jZXNzaW5nIGlzIGNvbXBsZXRlZC4gUmVzdWx0cyBhcmUgaW4gdGhlIGBhdHRhY2htZW50c2AgZmllbGQuIEdldCB0aGUgU1FMIHF1ZXJ5IHJlc3VsdCBieSBjYWxsaW5nIFtnZXRNZXNzYWdlQXR0YWNobWVudFF1ZXJ5UmVzdWx0XSg6bWV0aG9kOmdlbmllL2dldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHQpIEFQSS4gKiBgU1VCTUlUVEVEYDogTWVzc2FnZSBoYXMgYmVlbiBzdWJtaXR0ZWQuICogYFFVRVJZX1JFU1VMVF9FWFBJUkVEYDogU1FMIHJlc3VsdCBpcyBub3QgYXZhaWxhYmxlIGFueW1vcmUuIFRoZSB1c2VyIG5lZWRzIHRvIHJlcnVuIHRoZSBxdWVyeS4gUmVydW4gdGhlIFNRTCBxdWVyeSByZXN1bHQgYnkgY2FsbGluZyBbZXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnldKDptZXRob2Q6Z2VuaWUvZXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnkpIEFQSS4gKiBgQ0FOQ0VMTEVEYDogTWVzc2FnZSBoYXMgYmVlbiBjYW5jZWxsZWQuXCIpLFxuICAgIHVzZXJfaWQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIklEIG9mIHRoZSB1c2VyIHdobyBjcmVhdGVkIHRoZSBtZXNzYWdlXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdldFB1Ymxpc2hlZERhc2hib2FyZFRva2VuSW5mb1Jlc3BvbnNlU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGF1dGhvcml6YXRpb25fZGV0YWlsczogei5hcnJheShhdXRob3JpemF0aW9uRGV0YWlsc1NjaGVtYSkub3B0aW9uYWwoKS5kZXNjcmliZShcIkF1dGhvcml6YXRpb24gY29uc3RyYWludHMgZm9yIGFjY2Vzc2luZyB0aGUgcHVibGlzaGVkIGRhc2hib2FyZC4gQ3VycmVudGx5IGluY2x1ZGVzIGB3b3Jrc3BhY2VfcnVsZV9zZXRgIGFuZCBjb3VsZCBiZSBlbnJpY2hlZCB3aXRoIGB1bml0eV9jYXRhbG9nX3ByaXZpbGVnZXNgIGJlZm9yZSBvQXV0aCB0b2tlbiBnZW5lcmF0aW9uLlwiKSxcbiAgICBjdXN0b21fY2xhaW06IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkN1c3RvbSBjbGFpbSBnZW5lcmF0ZWQgZnJvbSBleHRlcm5hbF92YWx1ZSBhbmQgZXh0ZXJuYWxfdmlld2VyX2lkLiBGb3JtYXQ6IGB1cm46YWliaTpleHRlcm5hbF9kYXRhOjxleHRlcm5hbF92YWx1ZT46PGV4dGVybmFsX3ZpZXdlcl9pZD46PGRhc2hib2FyZF9pZD5gXCIpLFxuICAgIHNjb3BlOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTY29wZSBkZWZpbmluZyBhY2Nlc3MgcGVybWlzc2lvbnMuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGxpc3REYXNoYm9hcmRzUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgZGFzaGJvYXJkczogei5hcnJheShkYXNoYm9hcmRTY2hlbWEpLm9wdGlvbmFsKCksXG4gICAgbmV4dF9wYWdlX3Rva2VuOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBIHRva2VuLCB3aGljaCBjYW4gYmUgc2VudCBhcyBgcGFnZV90b2tlbmAgdG8gcmV0cmlldmUgdGhlIG5leHQgcGFnZS4gSWYgdGhpcyBmaWVsZCBpcyBvbWl0dGVkLCB0aGVyZSBhcmUgbm8gc3Vic2VxdWVudCBkYXNoYm9hcmRzLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBsaXN0U2NoZWR1bGVzUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgbmV4dF9wYWdlX3Rva2VuOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBgcGFnZV90b2tlbmAgaW4gc3Vic2VxdWVudCByZXF1ZXN0cyB0byByZXRyaWV2ZSB0aGUgbmV4dCBwYWdlIG9mIHJlc3VsdHMuIElmIHRoaXMgZmllbGQgaXMgb21pdHRlZCwgdGhlcmUgYXJlIG5vIHN1YnNlcXVlbnQgc2NoZWR1bGVzLlwiKSxcbiAgICBzY2hlZHVsZXM6IHouYXJyYXkoc2NoZWR1bGVTY2hlbWEpLm9wdGlvbmFsKClcbn0pO1xuXG5leHBvcnQgY29uc3QgbGlzdFN1YnNjcmlwdGlvbnNSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBuZXh0X3BhZ2VfdG9rZW46IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkEgdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCBhcyBhIGBwYWdlX3Rva2VuYCBpbiBzdWJzZXF1ZW50IHJlcXVlc3RzIHRvIHJldHJpZXZlIHRoZSBuZXh0IHBhZ2Ugb2YgcmVzdWx0cy4gSWYgdGhpcyBmaWVsZCBpcyBvbWl0dGVkLCB0aGVyZSBhcmUgbm8gc3Vic2VxdWVudCBzdWJzY3JpcHRpb25zLlwiKSxcbiAgICBzdWJzY3JpcHRpb25zOiB6LmFycmF5KHN1YnNjcmlwdGlvblNjaGVtYSkub3B0aW9uYWwoKVxufSk7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVTY2hlZHVsZVJlcXVlc3RTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgZGFzaGJvYXJkX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgZGFzaGJvYXJkIHRvIHdoaWNoIHRoZSBzY2hlZHVsZSBiZWxvbmdzLlwiKSxcbiAgICBzY2hlZHVsZTogc2NoZWR1bGVTY2hlbWEuZGVzY3JpYmUoXCJUaGUgc2NoZWR1bGUgdG8gdXBkYXRlLlwiKSxcbiAgICBzY2hlZHVsZV9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIHNjaGVkdWxlLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIGRhc2hib2FyZF9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlVVSUQgaWRlbnRpZnlpbmcgdGhlIGRhc2hib2FyZCB0byB3aGljaCB0aGUgc3Vic2NyaXB0aW9uIGJlbG9uZ3MuXCIpLFxuICAgIHNjaGVkdWxlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVVVJRCBpZGVudGlmeWluZyB0aGUgc2NoZWR1bGUgdG8gd2hpY2ggdGhlIHN1YnNjcmlwdGlvbiBiZWxvbmdzLlwiKSxcbiAgICBzdWJzY3JpcHRpb246IHN1YnNjcmlwdGlvblNjaGVtYS5kZXNjcmliZShcIlRoZSBzdWJzY3JpcHRpb24gdG8gY3JlYXRlLiBBIHNjaGVkdWxlIGlzIGxpbWl0ZWQgdG8gMTAwIHN1YnNjcmlwdGlvbnMuXCIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlbmllTGlzdENvbnZlcnNhdGlvbk1lc3NhZ2VzUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgbWVzc2FnZXM6IHouYXJyYXkoZ2VuaWVNZXNzYWdlU2NoZW1hKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiTGlzdCBvZiBtZXNzYWdlcyBpbiB0aGUgY29udmVyc2F0aW9uLlwiKSxcbiAgICBuZXh0X3BhZ2VfdG9rZW46IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSB0b2tlbiB0byB1c2UgZm9yIHJldHJpZXZpbmcgdGhlIG5leHQgcGFnZSBvZiByZXN1bHRzLlwiKVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW5pZVN0YXJ0Q29udmVyc2F0aW9uUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgY29udmVyc2F0aW9uOiBnZW5pZUNvbnZlcnNhdGlvblNjaGVtYS5vcHRpb25hbCgpLFxuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5kZXNjcmliZShcIkNvbnZlcnNhdGlvbiBJRFwiKSxcbiAgICBtZXNzYWdlOiBnZW5pZU1lc3NhZ2VTY2hlbWEub3B0aW9uYWwoKSxcbiAgICBtZXNzYWdlX2lkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiTWVzc2FnZSBJRFwiKVxufSk7XG5cbmV4cG9ydCB0eXBlIEF1dGhvcml6YXRpb25EZXRhaWxzR3JhbnRSdWxlID0gei5pbmZlcjx0eXBlb2YgYXV0aG9yaXphdGlvbkRldGFpbHNHcmFudFJ1bGVTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBDcm9uU2NoZWR1bGUgPSB6LmluZmVyPHR5cGVvZiBjcm9uU2NoZWR1bGVTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBMaWZlY3ljbGVTdGF0ZSA9IHouaW5mZXI8dHlwZW9mIGxpZmVjeWNsZVN0YXRlU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgRGFzaGJvYXJkVmlldyA9IHouaW5mZXI8dHlwZW9mIGRhc2hib2FyZFZpZXdTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBEZWxldGVTY2hlZHVsZVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBkZWxldGVTY2hlZHVsZVJlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBEZWxldGVTdWJzY3JpcHRpb25SZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZGVsZXRlU3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllU3VnZ2VzdGVkUXVlc3Rpb25zQXR0YWNobWVudCA9IHouaW5mZXI8dHlwZW9mIGdlbmllU3VnZ2VzdGVkUXVlc3Rpb25zQXR0YWNobWVudFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllQ29udmVyc2F0aW9uID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVDb252ZXJzYXRpb25TY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZUNvbnZlcnNhdGlvblN1bW1hcnkgPSB6LmluZmVyPHR5cGVvZiBnZW5pZUNvbnZlcnNhdGlvblN1bW1hcnlTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZUNyZWF0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVDcmVhdGVDb252ZXJzYXRpb25NZXNzYWdlUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllRGVsZXRlQ29udmVyc2F0aW9uTWVzc2FnZVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZW5pZURlbGV0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVEZWxldGVDb252ZXJzYXRpb25SZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVEZWxldGVDb252ZXJzYXRpb25SZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVFeGVjdXRlTWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZW5pZUV4ZWN1dGVNZXNzYWdlQXR0YWNobWVudFF1ZXJ5UmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllRXhlY3V0ZU1lc3NhZ2VRdWVyeVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZW5pZUV4ZWN1dGVNZXNzYWdlUXVlcnlSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVGZWVkYmFja1JhdGluZyA9IHouaW5mZXI8dHlwZW9mIGdlbmllRmVlZGJhY2tSYXRpbmdTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZUdldENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVHZXRDb252ZXJzYXRpb25NZXNzYWdlUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllR2V0TWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlc3VsdFJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZW5pZUdldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVHZXRNZXNzYWdlUXVlcnlSZXN1bHRSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVHZXRNZXNzYWdlUXVlcnlSZXN1bHRSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVHZXRNZXNzYWdlUXVlcnlSZXN1bHRSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIGdlbmllR2V0TWVzc2FnZVF1ZXJ5UmVzdWx0UmVzcG9uc2VTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZUdldFF1ZXJ5UmVzdWx0QnlBdHRhY2htZW50UmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIGdlbmllR2V0UXVlcnlSZXN1bHRCeUF0dGFjaG1lbnRSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVHZXRTcGFjZVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZW5pZUdldFNwYWNlUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllTGlzdENvbnZlcnNhdGlvbk1lc3NhZ2VzUmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIGdlbmllTGlzdENvbnZlcnNhdGlvbk1lc3NhZ2VzUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllTGlzdENvbnZlcnNhdGlvbnNSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVMaXN0Q29udmVyc2F0aW9uc1JlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZUxpc3RDb252ZXJzYXRpb25zUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBnZW5pZUxpc3RDb252ZXJzYXRpb25zUmVzcG9uc2VTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZUxpc3RTcGFjZXNSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVMaXN0U3BhY2VzUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllU3BhY2UgPSB6LmluZmVyPHR5cGVvZiBnZW5pZVNwYWNlU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVGZWVkYmFjayA9IHouaW5mZXI8dHlwZW9mIGdlbmllRmVlZGJhY2tTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBSZXN1bHQgPSB6LmluZmVyPHR5cGVvZiByZXN1bHRTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlU3RhdHVzID0gei5pbmZlcjx0eXBlb2YgbWVzc2FnZVN0YXR1c1NjaGVtYT47XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5QXR0YWNobWVudFBhcmFtZXRlciA9IHouaW5mZXI8dHlwZW9mIHF1ZXJ5QXR0YWNobWVudFBhcmFtZXRlclNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllUmVzdWx0TWV0YWRhdGEgPSB6LmluZmVyPHR5cGVvZiBnZW5pZVJlc3VsdE1ldGFkYXRhU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVTZW5kTWVzc2FnZUZlZWRiYWNrUmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIGdlbmllU2VuZE1lc3NhZ2VGZWVkYmFja1JlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZVN0YXJ0Q29udmVyc2F0aW9uTWVzc2FnZVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZW5pZVN0YXJ0Q29udmVyc2F0aW9uTWVzc2FnZVJlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZVRyYXNoU3BhY2VSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVUcmFzaFNwYWNlUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdldERhc2hib2FyZFJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZXREYXNoYm9hcmRSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2V0UHVibGlzaGVkRGFzaGJvYXJkUmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIGdldFB1Ymxpc2hlZERhc2hib2FyZFJlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2V0UHVibGlzaGVkRGFzaGJvYXJkVG9rZW5JbmZvUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEF1dGhvcml6YXRpb25EZXRhaWxzID0gei5pbmZlcjx0eXBlb2YgYXV0aG9yaXphdGlvbkRldGFpbHNTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZXRTY2hlZHVsZVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBnZXRTY2hlZHVsZVJlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZXRTdWJzY3JpcHRpb25SZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgZ2V0U3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIExpc3REYXNoYm9hcmRzUmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIGxpc3REYXNoYm9hcmRzUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIERhc2hib2FyZCA9IHouaW5mZXI8dHlwZW9mIGRhc2hib2FyZFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIExpc3RTY2hlZHVsZXNSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgbGlzdFNjaGVkdWxlc1JlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBMaXN0U3Vic2NyaXB0aW9uc1JlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBsaXN0U3Vic2NyaXB0aW9uc1JlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlRXJyb3JUeXBlID0gei5pbmZlcjx0eXBlb2YgbWVzc2FnZUVycm9yVHlwZVNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIE1pZ3JhdGVEYXNoYm9hcmRSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgbWlncmF0ZURhc2hib2FyZFJlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBQdWJsaXNoUmVxdWVzdCA9IHouaW5mZXI8dHlwZW9mIHB1Ymxpc2hSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgUHVibGlzaGVkRGFzaGJvYXJkID0gei5pbmZlcjx0eXBlb2YgcHVibGlzaGVkRGFzaGJvYXJkU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgU2NoZWR1bGVQYXVzZVN0YXR1cyA9IHouaW5mZXI8dHlwZW9mIHNjaGVkdWxlUGF1c2VTdGF0dXNTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdWJzY3JpYmVyRGVzdGluYXRpb24gPSB6LmluZmVyPHR5cGVvZiBzdWJzY3JpcHRpb25TdWJzY3JpYmVyRGVzdGluYXRpb25TY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdWJzY3JpYmVyVXNlciA9IHouaW5mZXI8dHlwZW9mIHN1YnNjcmlwdGlvblN1YnNjcmliZXJVc2VyU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlciA9IHouaW5mZXI8dHlwZW9mIHN1YnNjcmliZXJTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBUZXh0QXR0YWNobWVudFB1cnBvc2UgPSB6LmluZmVyPHR5cGVvZiB0ZXh0QXR0YWNobWVudFB1cnBvc2VTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBUcmFzaERhc2hib2FyZFJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiB0cmFzaERhc2hib2FyZFJlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBVbnB1Ymxpc2hEYXNoYm9hcmRSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgdW5wdWJsaXNoRGFzaGJvYXJkUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZURhc2hib2FyZFJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiB1cGRhdGVEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgU2NoZWR1bGUgPSB6LmluZmVyPHR5cGVvZiBzY2hlZHVsZVNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIENyZWF0ZURhc2hib2FyZFJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBjcmVhdGVEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgQ3JlYXRlU2NoZWR1bGVSZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgY3JlYXRlU2NoZWR1bGVSZXF1ZXN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uID0gei5pbmZlcjx0eXBlb2Ygc3Vic2NyaXB0aW9uU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVRdWVyeUF0dGFjaG1lbnQgPSB6LmluZmVyPHR5cGVvZiBnZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIFRleHRBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgdGV4dEF0dGFjaG1lbnRTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBHZW5pZUxpc3RTcGFjZXNSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIGdlbmllTGlzdFNwYWNlc1Jlc3BvbnNlU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVBdHRhY2htZW50U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZUVycm9yID0gei5pbmZlcjx0eXBlb2YgbWVzc2FnZUVycm9yU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVNZXNzYWdlID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVNZXNzYWdlU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2V0UHVibGlzaGVkRGFzaGJvYXJkVG9rZW5JbmZvUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBnZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXNwb25zZVNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIExpc3REYXNoYm9hcmRzUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBsaXN0RGFzaGJvYXJkc1Jlc3BvbnNlU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgTGlzdFNjaGVkdWxlc1Jlc3BvbnNlID0gei5pbmZlcjx0eXBlb2YgbGlzdFNjaGVkdWxlc1Jlc3BvbnNlU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgTGlzdFN1YnNjcmlwdGlvbnNSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIGxpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2VTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBVcGRhdGVTY2hlZHVsZVJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiB1cGRhdGVTY2hlZHVsZVJlcXVlc3RTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgY3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIEdlbmllTGlzdENvbnZlcnNhdGlvbk1lc3NhZ2VzUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBnZW5pZUxpc3RDb252ZXJzYXRpb25NZXNzYWdlc1Jlc3BvbnNlU2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgR2VuaWVTdGFydENvbnZlcnNhdGlvblJlc3BvbnNlID0gei5pbmZlcjx0eXBlb2YgZ2VuaWVTdGFydENvbnZlcnNhdGlvblJlc3BvbnNlU2NoZW1hPjtcbiJdfQ==
|