@discordeno/rest 21.0.1-next.fca0b40 → 22.0.0-beta.2
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/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/invalidBucket.d.ts.map +1 -0
- package/dist/invalidBucket.js +82 -0
- package/dist/manager.d.ts.map +1 -0
- package/dist/manager.js +1844 -0
- package/dist/{types/queue.d.ts → queue.d.ts} +2 -2
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +190 -0
- package/dist/routes.d.ts +9 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +674 -0
- package/dist/{types/types.d.ts → types.d.ts} +462 -193
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/{types/typings → typings}/routes.d.ts +19 -1
- package/dist/typings/routes.d.ts.map +1 -0
- package/dist/typings/routes.js +3 -0
- package/package.json +27 -37
- package/dist/cjs/index.cjs +0 -25
- package/dist/cjs/invalidBucket.cjs +0 -86
- package/dist/cjs/manager.cjs +0 -1665
- package/dist/cjs/queue.cjs +0 -164
- package/dist/cjs/routes.cjs +0 -631
- package/dist/cjs/types.cjs +0 -6
- package/dist/cjs/typings/routes.cjs +0 -6
- package/dist/esm/index.js +0 -8
- package/dist/esm/invalidBucket.js +0 -82
- package/dist/esm/manager.js +0 -1623
- package/dist/esm/queue.js +0 -154
- package/dist/esm/routes.js +0 -621
- package/dist/esm/types.js +0 -3
- package/dist/esm/typings/routes.js +0 -3
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/invalidBucket.d.ts.map +0 -1
- package/dist/types/manager.d.ts.map +0 -1
- package/dist/types/queue.d.ts.map +0 -1
- package/dist/types/routes.d.ts +0 -3
- package/dist/types/routes.d.ts.map +0 -1
- package/dist/types/types.d.ts.map +0 -1
- package/dist/types/typings/routes.d.ts.map +0 -1
- /package/dist/{types/index.d.ts → index.d.ts} +0 -0
- /package/dist/{types/invalidBucket.d.ts → invalidBucket.d.ts} +0 -0
- /package/dist/{types/manager.d.ts → manager.d.ts} +0 -0
package/dist/routes.js
ADDED
|
@@ -0,0 +1,674 @@
|
|
|
1
|
+
import { camelToSnakeCase, isGetMessagesAfter, isGetMessagesAround, isGetMessagesBefore, isGetMessagesLimit } from '@discordeno/utils';
|
|
2
|
+
/**
|
|
3
|
+
* Creates the available discord API routes
|
|
4
|
+
*
|
|
5
|
+
* @param disableURIEncode Don't encode strings, except where required - Danger: disabling URI encoding may lead to path traversal if unsafe strings are used
|
|
6
|
+
* @returns The available discord API routes
|
|
7
|
+
*/ export function createRoutes(disableURIEncode = false) {
|
|
8
|
+
const encode = disableURIEncode ? (x)=>x.toString() : encodeComponent;
|
|
9
|
+
return {
|
|
10
|
+
webhooks: {
|
|
11
|
+
id: (webhookId)=>{
|
|
12
|
+
return `/webhooks/${encode(webhookId)}`;
|
|
13
|
+
},
|
|
14
|
+
message: (webhookId, token, messageId, options)=>{
|
|
15
|
+
let url = `/webhooks/${encode(webhookId)}/${encode(token)}/messages/${encode(messageId)}?`;
|
|
16
|
+
if (options) {
|
|
17
|
+
if (options.threadId) url += `thread_id=${encode(options.threadId)}`;
|
|
18
|
+
if (options.withComponents) url += `&with_components=${encode(options.withComponents)}`;
|
|
19
|
+
}
|
|
20
|
+
return url;
|
|
21
|
+
},
|
|
22
|
+
webhook: (webhookId, token, options)=>{
|
|
23
|
+
let url = `/webhooks/${encode(webhookId)}/${encode(token)}?`;
|
|
24
|
+
if (options) {
|
|
25
|
+
if (options?.wait !== undefined) url += `wait=${encode(options.wait)}`;
|
|
26
|
+
if (options.threadId) url += `&thread_id=${encode(options.threadId)}`;
|
|
27
|
+
if (options.withComponents) url += `&with_components=${encode(options.withComponents)}`;
|
|
28
|
+
}
|
|
29
|
+
return url;
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
// Channel Endpoints
|
|
33
|
+
channels: {
|
|
34
|
+
bulk: (channelId)=>{
|
|
35
|
+
return `/channels/${encode(channelId)}/messages/bulk-delete`;
|
|
36
|
+
},
|
|
37
|
+
dm: ()=>{
|
|
38
|
+
return '/users/@me/channels';
|
|
39
|
+
},
|
|
40
|
+
dmRecipient: (channelId, userId)=>{
|
|
41
|
+
return `/channels/${encode(channelId)}/recipients/${encode(userId)}`;
|
|
42
|
+
},
|
|
43
|
+
pin: (channelId, messageId)=>{
|
|
44
|
+
return `/channels/${encode(channelId)}/pins/${encode(messageId)}`;
|
|
45
|
+
},
|
|
46
|
+
pins: (channelId)=>{
|
|
47
|
+
return `/channels/${encode(channelId)}/pins`;
|
|
48
|
+
},
|
|
49
|
+
messagePins: (channelId, options)=>{
|
|
50
|
+
let url = `/channels/${encode(channelId)}/messages/pins?`;
|
|
51
|
+
if (options) {
|
|
52
|
+
if (options.before) url += `before=${encode(options.before)}`;
|
|
53
|
+
if (options.limit) url += `&limit=${encode(options.limit)}`;
|
|
54
|
+
}
|
|
55
|
+
return url;
|
|
56
|
+
},
|
|
57
|
+
messagePin: (channelId, messageId)=>{
|
|
58
|
+
return `/channels/${encode(channelId)}/messages/pins/${encode(messageId)}`;
|
|
59
|
+
},
|
|
60
|
+
reactions: {
|
|
61
|
+
bot: (channelId, messageId, emoji)=>{
|
|
62
|
+
return `/channels/${encode(channelId)}/messages/${encode(messageId)}/reactions/${encodeURIComponent(emoji)}/@me`;
|
|
63
|
+
},
|
|
64
|
+
user: (channelId, messageId, emoji, userId)=>{
|
|
65
|
+
return `/channels/${encode(channelId)}/messages/${encode(messageId)}/reactions/${encodeURIComponent(emoji)}/${encode(userId)}`;
|
|
66
|
+
},
|
|
67
|
+
all: (channelId, messageId)=>{
|
|
68
|
+
return `/channels/${encode(channelId)}/messages/${encode(messageId)}/reactions`;
|
|
69
|
+
},
|
|
70
|
+
emoji: (channelId, messageId, emoji, options)=>{
|
|
71
|
+
let url = `/channels/${encode(channelId)}/messages/${encode(messageId)}/reactions/${encodeURIComponent(emoji)}?`;
|
|
72
|
+
if (options) {
|
|
73
|
+
if (options.type) url += `type=${encode(options.type)}`;
|
|
74
|
+
if (options.after) url += `&after=${encode(options.after)}`;
|
|
75
|
+
if (options.limit) url += `&limit=${encode(options.limit)}`;
|
|
76
|
+
}
|
|
77
|
+
return url;
|
|
78
|
+
},
|
|
79
|
+
message: (channelId, messageId, emoji, options)=>{
|
|
80
|
+
let url = `/channels/${encode(channelId)}/messages/${encode(messageId)}/reactions/${encodeURIComponent(emoji)}?`;
|
|
81
|
+
if (options) {
|
|
82
|
+
if (options.type) url += `type=${encode(options.type)}`;
|
|
83
|
+
if (options.after) url += `after=${encode(options.after)}`;
|
|
84
|
+
if (options.limit) url += `&limit=${encode(options.limit)}`;
|
|
85
|
+
}
|
|
86
|
+
return url;
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
webhooks: (channelId)=>{
|
|
90
|
+
return `/channels/${encode(channelId)}/webhooks`;
|
|
91
|
+
},
|
|
92
|
+
channel: (channelId)=>{
|
|
93
|
+
return `/channels/${encode(channelId)}`;
|
|
94
|
+
},
|
|
95
|
+
follow: (channelId)=>{
|
|
96
|
+
return `/channels/${encode(channelId)}/followers`;
|
|
97
|
+
},
|
|
98
|
+
forum: (channelId)=>{
|
|
99
|
+
return `/channels/${encode(channelId)}/threads`;
|
|
100
|
+
},
|
|
101
|
+
invites: (channelId)=>{
|
|
102
|
+
return `/channels/${encode(channelId)}/invites`;
|
|
103
|
+
},
|
|
104
|
+
message: (channelId, messageId)=>{
|
|
105
|
+
return `/channels/${encode(channelId)}/messages/${encode(messageId)}`;
|
|
106
|
+
},
|
|
107
|
+
messages: (channelId, options)=>{
|
|
108
|
+
let url = `/channels/${encode(channelId)}/messages?`;
|
|
109
|
+
if (options) {
|
|
110
|
+
if (isGetMessagesAfter(options) && options.after) {
|
|
111
|
+
url += `after=${encode(options.after)}`;
|
|
112
|
+
}
|
|
113
|
+
if (isGetMessagesBefore(options) && options.before) {
|
|
114
|
+
url += `&before=${encode(options.before)}`;
|
|
115
|
+
}
|
|
116
|
+
if (isGetMessagesAround(options) && options.around) {
|
|
117
|
+
url += `&around=${encode(options.around)}`;
|
|
118
|
+
}
|
|
119
|
+
if (isGetMessagesLimit(options) && options.limit) {
|
|
120
|
+
url += `&limit=${encode(options.limit)}`;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return url;
|
|
124
|
+
},
|
|
125
|
+
overwrite: (channelId, overwriteId)=>{
|
|
126
|
+
return `/channels/${encode(channelId)}/permissions/${encode(overwriteId)}`;
|
|
127
|
+
},
|
|
128
|
+
crosspost: (channelId, messageId)=>{
|
|
129
|
+
return `/channels/${encode(channelId)}/messages/${encode(messageId)}/crosspost`;
|
|
130
|
+
},
|
|
131
|
+
stages: ()=>{
|
|
132
|
+
return '/stage-instances';
|
|
133
|
+
},
|
|
134
|
+
stage: (channelId)=>{
|
|
135
|
+
return `/stage-instances/${encode(channelId)}`;
|
|
136
|
+
},
|
|
137
|
+
// Thread Endpoints
|
|
138
|
+
threads: {
|
|
139
|
+
message: (channelId, messageId)=>{
|
|
140
|
+
return `/channels/${encode(channelId)}/messages/${encode(messageId)}/threads`;
|
|
141
|
+
},
|
|
142
|
+
all: (channelId)=>{
|
|
143
|
+
return `/channels/${encode(channelId)}/threads`;
|
|
144
|
+
},
|
|
145
|
+
active: (guildId)=>{
|
|
146
|
+
return `/guilds/${encode(guildId)}/threads/active`;
|
|
147
|
+
},
|
|
148
|
+
members: (channelId, options)=>{
|
|
149
|
+
let url = `/channels/${encode(channelId)}/thread-members?`;
|
|
150
|
+
if (options) {
|
|
151
|
+
if (options.withMember) url += `with_member=${encode(options.withMember)}`;
|
|
152
|
+
if (options.limit) url += `&limit=${encode(options.limit)}`;
|
|
153
|
+
if (options.after) url += `&after=${encode(options.after)}`;
|
|
154
|
+
}
|
|
155
|
+
return url;
|
|
156
|
+
},
|
|
157
|
+
me: (channelId)=>{
|
|
158
|
+
return `/channels/${encode(channelId)}/thread-members/@me`;
|
|
159
|
+
},
|
|
160
|
+
getUser (channelId, userId, options) {
|
|
161
|
+
let url = `/channels/${encode(channelId)}/thread-members/${encode(userId)}?`;
|
|
162
|
+
if (options) {
|
|
163
|
+
if (options.withMember) url += `with_member=${encode(options.withMember)}`;
|
|
164
|
+
}
|
|
165
|
+
return url;
|
|
166
|
+
},
|
|
167
|
+
user: (channelId, userId)=>{
|
|
168
|
+
return `/channels/${encode(channelId)}/thread-members/${encode(userId)}`;
|
|
169
|
+
},
|
|
170
|
+
archived: (channelId)=>{
|
|
171
|
+
return `/channels/${encode(channelId)}/threads/archived`;
|
|
172
|
+
},
|
|
173
|
+
public: (channelId, options)=>{
|
|
174
|
+
let url = `/channels/${encode(channelId)}/threads/archived/public?`;
|
|
175
|
+
if (options) {
|
|
176
|
+
if (options.before) {
|
|
177
|
+
const iso = new Date(options.before).toISOString();
|
|
178
|
+
url += `before=${encode(iso)}`;
|
|
179
|
+
}
|
|
180
|
+
if (options.limit) url += `&limit=${encode(options.limit)}`;
|
|
181
|
+
}
|
|
182
|
+
return url;
|
|
183
|
+
},
|
|
184
|
+
private: (channelId, options)=>{
|
|
185
|
+
let url = `/channels/${encode(channelId)}/threads/archived/private?`;
|
|
186
|
+
if (options) {
|
|
187
|
+
if (options.before) {
|
|
188
|
+
const iso = new Date(options.before).toISOString();
|
|
189
|
+
url += `before=${encode(iso)}`;
|
|
190
|
+
}
|
|
191
|
+
if (options.limit) url += `&limit=${encode(options.limit)}`;
|
|
192
|
+
}
|
|
193
|
+
return url;
|
|
194
|
+
},
|
|
195
|
+
joined: (channelId, options)=>{
|
|
196
|
+
let url = `/channels/${encode(channelId)}/users/@me/threads/archived/private?`;
|
|
197
|
+
if (options) {
|
|
198
|
+
if (options.before) {
|
|
199
|
+
const iso = new Date(options.before).toISOString();
|
|
200
|
+
url += `before=${encode(iso)}`;
|
|
201
|
+
}
|
|
202
|
+
if (options.limit) url += `&limit=${encode(options.limit)}`;
|
|
203
|
+
}
|
|
204
|
+
return url;
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
typing: (channelId)=>{
|
|
208
|
+
return `/channels/${encode(channelId)}/typing`;
|
|
209
|
+
},
|
|
210
|
+
polls: {
|
|
211
|
+
votes: (channelId, messageId, answerId, options)=>{
|
|
212
|
+
let url = `/channels/${encode(channelId)}/polls/${encode(messageId)}/answers/${encode(answerId)}?`;
|
|
213
|
+
if (options) {
|
|
214
|
+
if (options.after) url += `after=${encode(options.after)}`;
|
|
215
|
+
if (options.limit) url += `&limit=${encode(options.limit)}`;
|
|
216
|
+
}
|
|
217
|
+
return url;
|
|
218
|
+
},
|
|
219
|
+
expire: (channelId, messageId)=>{
|
|
220
|
+
return `/channels/${encode(channelId)}/polls/${encode(messageId)}/expire`;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
// Guild Endpoints
|
|
225
|
+
guilds: {
|
|
226
|
+
all: ()=>{
|
|
227
|
+
return '/guilds';
|
|
228
|
+
},
|
|
229
|
+
userGuilds: (options)=>{
|
|
230
|
+
let url = '/users/@me/guilds?';
|
|
231
|
+
if (options) {
|
|
232
|
+
if (options.after) url += `after=${encode(options.after)}`;
|
|
233
|
+
if (options.before) url += `&before=${encode(options.before)}`;
|
|
234
|
+
if (options.limit) url += `&limit=${encode(options.limit)}`;
|
|
235
|
+
if (options.withCounts) url += `&with_counts=${encode(options.withCounts)}`;
|
|
236
|
+
}
|
|
237
|
+
return url;
|
|
238
|
+
},
|
|
239
|
+
auditlogs: (guildId, options)=>{
|
|
240
|
+
let url = `/guilds/${encode(guildId)}/audit-logs?`;
|
|
241
|
+
if (options) {
|
|
242
|
+
if (options.actionType) url += `action_type=${encode(options.actionType)}`;
|
|
243
|
+
if (options.before) url += `&before=${encode(options.before)}`;
|
|
244
|
+
if (options.after) url += `&after=${encode(options.after)}`;
|
|
245
|
+
if (options.limit) url += `&limit=${encode(options.limit)}`;
|
|
246
|
+
if (options.userId) url += `&user_id=${encode(options.userId)}`;
|
|
247
|
+
}
|
|
248
|
+
return url;
|
|
249
|
+
},
|
|
250
|
+
automod: {
|
|
251
|
+
rule: (guildId, ruleId)=>{
|
|
252
|
+
return `/guilds/${encode(guildId)}/auto-moderation/rules/${encode(ruleId)}`;
|
|
253
|
+
},
|
|
254
|
+
rules: (guildId)=>{
|
|
255
|
+
return `/guilds/${encode(guildId)}/auto-moderation/rules`;
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
channels: (guildId)=>{
|
|
259
|
+
return `/guilds/${encode(guildId)}/channels`;
|
|
260
|
+
},
|
|
261
|
+
emoji: (guildId, emojiId)=>{
|
|
262
|
+
return `/guilds/${encode(guildId)}/emojis/${encode(emojiId)}`;
|
|
263
|
+
},
|
|
264
|
+
emojis: (guildId)=>{
|
|
265
|
+
return `/guilds/${encode(guildId)}/emojis`;
|
|
266
|
+
},
|
|
267
|
+
events: {
|
|
268
|
+
events: (guildId, withUserCount)=>{
|
|
269
|
+
let url = `/guilds/${encode(guildId)}/scheduled-events?`;
|
|
270
|
+
if (withUserCount !== undefined) {
|
|
271
|
+
url += `with_user_count=${encode(withUserCount)}`;
|
|
272
|
+
}
|
|
273
|
+
return url;
|
|
274
|
+
},
|
|
275
|
+
event: (guildId, eventId, withUserCount)=>{
|
|
276
|
+
let url = `/guilds/${encode(guildId)}/scheduled-events/${encode(eventId)}`;
|
|
277
|
+
if (withUserCount !== undefined) {
|
|
278
|
+
url += `with_user_count=${encode(withUserCount)}`;
|
|
279
|
+
}
|
|
280
|
+
return url;
|
|
281
|
+
},
|
|
282
|
+
users: (guildId, eventId, options)=>{
|
|
283
|
+
let url = `/guilds/${encode(guildId)}/scheduled-events/${encode(eventId)}/users?`;
|
|
284
|
+
if (options) {
|
|
285
|
+
if (options.limit !== undefined) url += `limit=${encode(options.limit)}`;
|
|
286
|
+
if (options.withMember !== undefined) {
|
|
287
|
+
url += `&with_member=${encode(options.withMember)}`;
|
|
288
|
+
}
|
|
289
|
+
if (options.after !== undefined) url += `&after=${encode(options.after)}`;
|
|
290
|
+
if (options.before !== undefined) url += `&before=${encode(options.before)}`;
|
|
291
|
+
}
|
|
292
|
+
return url;
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
guild (guildId, withCounts) {
|
|
296
|
+
let url = `/guilds/${encode(guildId)}?`;
|
|
297
|
+
if (withCounts !== undefined) {
|
|
298
|
+
url += `with_counts=${encode(withCounts)}`;
|
|
299
|
+
}
|
|
300
|
+
return url;
|
|
301
|
+
},
|
|
302
|
+
integration (guildId, integrationId) {
|
|
303
|
+
return `/guilds/${encode(guildId)}/integrations/${encode(integrationId)}`;
|
|
304
|
+
},
|
|
305
|
+
integrations: (guildId)=>{
|
|
306
|
+
return `/guilds/${encode(guildId)}/integrations?include_applications=true`;
|
|
307
|
+
},
|
|
308
|
+
invite (inviteCode, options) {
|
|
309
|
+
let url = `/invites/${encode(inviteCode)}?`;
|
|
310
|
+
if (options) {
|
|
311
|
+
if (options.withCounts !== undefined) {
|
|
312
|
+
url += `with_counts=${encode(options.withCounts)}`;
|
|
313
|
+
}
|
|
314
|
+
if (options.scheduledEventId) {
|
|
315
|
+
url += `&guild_scheduled_event_id=${encode(options.scheduledEventId)}`;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
return url;
|
|
319
|
+
},
|
|
320
|
+
inviteTargetUsers (inviteCode) {
|
|
321
|
+
return `/invites/${encode(inviteCode)}/target-users`;
|
|
322
|
+
},
|
|
323
|
+
inviteTargetUsersJobStatus (inviteCode) {
|
|
324
|
+
return `/invites/${encode(inviteCode)}/target-users/job-status`;
|
|
325
|
+
},
|
|
326
|
+
invites: (guildId)=>{
|
|
327
|
+
return `/guilds/${encode(guildId)}/invites`;
|
|
328
|
+
},
|
|
329
|
+
leave: (guildId)=>{
|
|
330
|
+
return `/users/@me/guilds/${encode(guildId)}`;
|
|
331
|
+
},
|
|
332
|
+
members: {
|
|
333
|
+
ban: (guildId, userId)=>{
|
|
334
|
+
return `/guilds/${encode(guildId)}/bans/${encode(userId)}`;
|
|
335
|
+
},
|
|
336
|
+
bans: (guildId, options)=>{
|
|
337
|
+
let url = `/guilds/${encode(guildId)}/bans?`;
|
|
338
|
+
if (options) {
|
|
339
|
+
if (options.limit) url += `limit=${encode(options.limit)}`;
|
|
340
|
+
if (options.after) url += `&after=${encode(options.after)}`;
|
|
341
|
+
if (options.before) url += `&before=${encode(options.before)}`;
|
|
342
|
+
}
|
|
343
|
+
return url;
|
|
344
|
+
},
|
|
345
|
+
bulkBan: (guildId)=>{
|
|
346
|
+
return `/guilds/${encode(guildId)}/bulk-ban`;
|
|
347
|
+
},
|
|
348
|
+
bot: (guildId)=>{
|
|
349
|
+
return `/guilds/${encode(guildId)}/members/@me`;
|
|
350
|
+
},
|
|
351
|
+
member: (guildId, userId)=>{
|
|
352
|
+
return `/guilds/${encode(guildId)}/members/${encode(userId)}`;
|
|
353
|
+
},
|
|
354
|
+
currentMember: (guildId)=>{
|
|
355
|
+
return `/users/@me/guilds/${encode(guildId)}/member`;
|
|
356
|
+
},
|
|
357
|
+
members: (guildId, options)=>{
|
|
358
|
+
let url = `/guilds/${encode(guildId)}/members?`;
|
|
359
|
+
if (options !== undefined) {
|
|
360
|
+
if (options.limit) url += `limit=${encode(options.limit)}`;
|
|
361
|
+
if (options.after) url += `&after=${encode(options.after)}`;
|
|
362
|
+
}
|
|
363
|
+
return url;
|
|
364
|
+
},
|
|
365
|
+
search: (guildId, query, options)=>{
|
|
366
|
+
let url = `/guilds/${encode(guildId)}/members/search?query=${encode(query)}`;
|
|
367
|
+
if (options) {
|
|
368
|
+
if (options.limit !== undefined) url += `&limit=${encode(options.limit)}`;
|
|
369
|
+
}
|
|
370
|
+
return url;
|
|
371
|
+
},
|
|
372
|
+
prune: (guildId, options)=>{
|
|
373
|
+
let url = `/guilds/${encode(guildId)}/prune?`;
|
|
374
|
+
if (options) {
|
|
375
|
+
if (options.days) url += `days=${encode(options.days)}`;
|
|
376
|
+
if (Array.isArray(options.includeRoles)) {
|
|
377
|
+
url += `&include_roles=${encode(options.includeRoles.join(','))}`;
|
|
378
|
+
} else if (options.includeRoles) {
|
|
379
|
+
url += `&include_roles=${encode(options.includeRoles)}`;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return url;
|
|
383
|
+
}
|
|
384
|
+
},
|
|
385
|
+
messagesSearch: (guildId, options)=>{
|
|
386
|
+
let url = `/guilds/${encode(guildId)}/messages/search?`;
|
|
387
|
+
if (options) {
|
|
388
|
+
for (const [key, value] of Object.entries(options)){
|
|
389
|
+
if (value === undefined) continue;
|
|
390
|
+
for (const item of Array.isArray(value) ? value : [
|
|
391
|
+
value
|
|
392
|
+
])url += `&${camelToSnakeCase(key)}=${encode(item)}`;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return url;
|
|
396
|
+
},
|
|
397
|
+
preview: (guildId)=>{
|
|
398
|
+
return `/guilds/${encode(guildId)}/preview`;
|
|
399
|
+
},
|
|
400
|
+
prune: (guildId, options)=>{
|
|
401
|
+
let url = `/guilds/${encode(guildId)}/prune?`;
|
|
402
|
+
if (options) {
|
|
403
|
+
if (options.days) url += `days=${encode(options.days)}`;
|
|
404
|
+
if (Array.isArray(options.includeRoles)) {
|
|
405
|
+
url += `&include_roles=${encode(options.includeRoles.join(','))}`;
|
|
406
|
+
} else if (options.includeRoles) {
|
|
407
|
+
url += `&include_roles=${encode(options.includeRoles)}`;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
return url;
|
|
411
|
+
},
|
|
412
|
+
roles: {
|
|
413
|
+
one: (guildId, roleId)=>{
|
|
414
|
+
return `/guilds/${encode(guildId)}/roles/${encode(roleId)}`;
|
|
415
|
+
},
|
|
416
|
+
all: (guildId)=>{
|
|
417
|
+
return `/guilds/${encode(guildId)}/roles`;
|
|
418
|
+
},
|
|
419
|
+
member: (guildId, memberId, roleId)=>{
|
|
420
|
+
return `/guilds/${encode(guildId)}/members/${encode(memberId)}/roles/${encode(roleId)}`;
|
|
421
|
+
},
|
|
422
|
+
memberCounts: (guildId)=>{
|
|
423
|
+
return `/guilds/${guildId}/roles/member-counts`;
|
|
424
|
+
}
|
|
425
|
+
},
|
|
426
|
+
stickers: (guildId)=>{
|
|
427
|
+
return `/guilds/${encode(guildId)}/stickers`;
|
|
428
|
+
},
|
|
429
|
+
sticker: (guildId, stickerId)=>{
|
|
430
|
+
return `/guilds/${encode(guildId)}/stickers/${encode(stickerId)}`;
|
|
431
|
+
},
|
|
432
|
+
voice: (guildId, userId)=>{
|
|
433
|
+
return `/guilds/${encode(guildId)}/voice-states/${encode(userId ?? '@me')}`;
|
|
434
|
+
},
|
|
435
|
+
templates: {
|
|
436
|
+
code: (code)=>{
|
|
437
|
+
return `/guilds/templates/${encode(code)}`;
|
|
438
|
+
},
|
|
439
|
+
guild: (guildId, code)=>{
|
|
440
|
+
return `/guilds/${encode(guildId)}/templates/${encode(code)}`;
|
|
441
|
+
},
|
|
442
|
+
all: (guildId)=>{
|
|
443
|
+
return `/guilds/${encode(guildId)}/templates`;
|
|
444
|
+
}
|
|
445
|
+
},
|
|
446
|
+
vanity: (guildId)=>{
|
|
447
|
+
return `/guilds/${encode(guildId)}/vanity-url`;
|
|
448
|
+
},
|
|
449
|
+
regions: (guildId)=>{
|
|
450
|
+
return `/guilds/${encode(guildId)}/regions`;
|
|
451
|
+
},
|
|
452
|
+
webhooks: (guildId)=>{
|
|
453
|
+
return `/guilds/${encode(guildId)}/webhooks`;
|
|
454
|
+
},
|
|
455
|
+
welcome: (guildId)=>{
|
|
456
|
+
return `/guilds/${encode(guildId)}/welcome-screen`;
|
|
457
|
+
},
|
|
458
|
+
widget: (guildId)=>{
|
|
459
|
+
return `/guilds/${encode(guildId)}/widget`;
|
|
460
|
+
},
|
|
461
|
+
widgetJson: (guildId)=>{
|
|
462
|
+
return `/guilds/${encode(guildId)}/widget.json`;
|
|
463
|
+
},
|
|
464
|
+
onboarding: (guildId)=>{
|
|
465
|
+
return `/guilds/${encode(guildId)}/onboarding`;
|
|
466
|
+
},
|
|
467
|
+
incidentActions: (guildId)=>{
|
|
468
|
+
return `/guilds/${encode(guildId)}/incident-actions`;
|
|
469
|
+
}
|
|
470
|
+
},
|
|
471
|
+
sticker: (stickerId)=>{
|
|
472
|
+
return `/stickers/${encode(stickerId)}`;
|
|
473
|
+
},
|
|
474
|
+
regions: ()=>{
|
|
475
|
+
return '/voice/regions';
|
|
476
|
+
},
|
|
477
|
+
// Interaction Endpoints
|
|
478
|
+
interactions: {
|
|
479
|
+
commands: {
|
|
480
|
+
// Application Endpoints
|
|
481
|
+
commands: (applicationId, withLocalizations)=>{
|
|
482
|
+
let url = `/applications/${encode(applicationId)}/commands?`;
|
|
483
|
+
if (withLocalizations !== undefined) {
|
|
484
|
+
url += `with_localizations=${encode(withLocalizations)}`;
|
|
485
|
+
}
|
|
486
|
+
return url;
|
|
487
|
+
},
|
|
488
|
+
guilds: {
|
|
489
|
+
all (applicationId, guildId, withLocalizations) {
|
|
490
|
+
let url = `/applications/${encode(applicationId)}/guilds/${encode(guildId)}/commands?`;
|
|
491
|
+
if (withLocalizations !== undefined) {
|
|
492
|
+
url += `with_localizations=${encode(withLocalizations)}`;
|
|
493
|
+
}
|
|
494
|
+
return url;
|
|
495
|
+
},
|
|
496
|
+
one (applicationId, guildId, commandId) {
|
|
497
|
+
return `/applications/${encode(applicationId)}/guilds/${encode(guildId)}/commands/${encode(commandId)}`;
|
|
498
|
+
}
|
|
499
|
+
},
|
|
500
|
+
permissions: (applicationId, guildId)=>{
|
|
501
|
+
return `/applications/${encode(applicationId)}/guilds/${encode(guildId)}/commands/permissions`;
|
|
502
|
+
},
|
|
503
|
+
permission: (applicationId, guildId, commandId)=>{
|
|
504
|
+
return `/applications/${encode(applicationId)}/guilds/${encode(guildId)}/commands/${encode(commandId)}/permissions`;
|
|
505
|
+
},
|
|
506
|
+
command: (applicationId, commandId, withLocalizations)=>{
|
|
507
|
+
let url = `/applications/${encode(applicationId)}/commands/${encode(commandId)}?`;
|
|
508
|
+
if (withLocalizations !== undefined) {
|
|
509
|
+
url += `withLocalizations=${encode(withLocalizations)}`;
|
|
510
|
+
}
|
|
511
|
+
return url;
|
|
512
|
+
}
|
|
513
|
+
},
|
|
514
|
+
responses: {
|
|
515
|
+
// Interaction Endpoints
|
|
516
|
+
callback: (interactionId, token, options)=>{
|
|
517
|
+
return `/interactions/${encode(interactionId)}/${encode(token)}/callback?with_response=${encode(!!options?.withResponse)}`;
|
|
518
|
+
},
|
|
519
|
+
original: (interactionId, token)=>{
|
|
520
|
+
return `/webhooks/${encode(interactionId)}/${encode(token)}/messages/@original`;
|
|
521
|
+
},
|
|
522
|
+
message: (applicationId, token, messageId)=>{
|
|
523
|
+
return `/webhooks/${encode(applicationId)}/${encode(token)}/messages/${encode(messageId)}`;
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
},
|
|
527
|
+
// OAuth2 endpoints
|
|
528
|
+
oauth2: {
|
|
529
|
+
tokenExchange: ()=>{
|
|
530
|
+
return '/oauth2/token';
|
|
531
|
+
},
|
|
532
|
+
tokenRevoke: ()=>{
|
|
533
|
+
return '/oauth2/token/revoke';
|
|
534
|
+
},
|
|
535
|
+
currentAuthorization: ()=>{
|
|
536
|
+
return '/oauth2/@me';
|
|
537
|
+
},
|
|
538
|
+
application: ()=>{
|
|
539
|
+
return '/oauth2/applications/@me';
|
|
540
|
+
},
|
|
541
|
+
connections: ()=>{
|
|
542
|
+
return '/users/@me/connections';
|
|
543
|
+
},
|
|
544
|
+
roleConnections: (applicationId)=>{
|
|
545
|
+
return `/users/@me/applications/${encode(applicationId)}/role-connection`;
|
|
546
|
+
}
|
|
547
|
+
},
|
|
548
|
+
monetization: {
|
|
549
|
+
entitlements: (applicationId, options)=>{
|
|
550
|
+
let url = `/applications/${encode(applicationId)}/entitlements?`;
|
|
551
|
+
if (options) {
|
|
552
|
+
if (options.after) url += `after=${encode(options.after)}`;
|
|
553
|
+
if (options.before) url += `&before=${encode(options.before)}`;
|
|
554
|
+
if (options.excludeEnded) url += `&exclude_ended=${encode(options.excludeEnded)}`;
|
|
555
|
+
if (options.guildId) url += `&guild_id=${encode(options.guildId)}`;
|
|
556
|
+
if (options.limit) url += `&limit=${encode(options.limit)}`;
|
|
557
|
+
if (options.skuIds) url += `&sku_ids=${encode(options.skuIds.join(','))}`;
|
|
558
|
+
if (options.userId) url += `&user_id=${encode(options.userId)}`;
|
|
559
|
+
}
|
|
560
|
+
return url;
|
|
561
|
+
},
|
|
562
|
+
entitlement: (applicationId, entitlementId)=>{
|
|
563
|
+
return `/applications/${encode(applicationId)}/entitlements/${encode(entitlementId)}`;
|
|
564
|
+
},
|
|
565
|
+
consumeEntitlement: (applicationId, entitlementId)=>{
|
|
566
|
+
return `/applications/${encode(applicationId)}/entitlements/${encode(entitlementId)}/consume`;
|
|
567
|
+
},
|
|
568
|
+
skus: (applicationId)=>{
|
|
569
|
+
return `/applications/${encode(applicationId)}/skus`;
|
|
570
|
+
},
|
|
571
|
+
subscription: (skuId, subscriptionId)=>{
|
|
572
|
+
return `/skus/${encode(skuId)}/subscriptions/${encode(subscriptionId)}`;
|
|
573
|
+
},
|
|
574
|
+
subscriptions: (skuId, options)=>{
|
|
575
|
+
let url = `/skus/${encode(skuId)}/subscriptions?`;
|
|
576
|
+
if (options) {
|
|
577
|
+
if (options.after) url += `after=${encode(options.after)}`;
|
|
578
|
+
if (options.before) url += `&before=${encode(options.before)}`;
|
|
579
|
+
if (options.userId) url += `&user_id=${encode(options.userId)}`;
|
|
580
|
+
if (options.limit) url += `&limit=${encode(options.limit)}`;
|
|
581
|
+
}
|
|
582
|
+
return url;
|
|
583
|
+
}
|
|
584
|
+
},
|
|
585
|
+
soundboard: {
|
|
586
|
+
sendSound: (channelId)=>{
|
|
587
|
+
return `/channels/${encode(channelId)}`;
|
|
588
|
+
},
|
|
589
|
+
listDefault: ()=>{
|
|
590
|
+
return `/soundboard-default-sounds`;
|
|
591
|
+
},
|
|
592
|
+
guildSounds: (guildId)=>{
|
|
593
|
+
return `/guilds/${encode(guildId)}/soundboard-sounds`;
|
|
594
|
+
},
|
|
595
|
+
guildSound: (guildId, soundId)=>{
|
|
596
|
+
return `/guilds/${encode(guildId)}/soundboard-sounds/${encode(soundId)}`;
|
|
597
|
+
}
|
|
598
|
+
},
|
|
599
|
+
lobby: {
|
|
600
|
+
create: ()=>{
|
|
601
|
+
return '/lobbies';
|
|
602
|
+
},
|
|
603
|
+
lobby: (lobbyId)=>{
|
|
604
|
+
return `/lobbies/${encode(lobbyId)}`;
|
|
605
|
+
},
|
|
606
|
+
member: (lobbyId, userId)=>{
|
|
607
|
+
return `/lobbies/${encode(lobbyId)}/members/${encode(userId)}`;
|
|
608
|
+
},
|
|
609
|
+
leave: (lobbyId)=>{
|
|
610
|
+
return `/lobbies/${encode(lobbyId)}/members/@me`;
|
|
611
|
+
},
|
|
612
|
+
link: (lobbyId)=>{
|
|
613
|
+
return `/lobbies/${encode(lobbyId)}/channel-linking`;
|
|
614
|
+
},
|
|
615
|
+
membersBulk: (lobbyId)=>{
|
|
616
|
+
return `/lobbies/${encode(lobbyId)}/members/bulk`;
|
|
617
|
+
},
|
|
618
|
+
moderationMetadata: (lobbyId, messageId)=>{
|
|
619
|
+
return `/lobbies/${encode(lobbyId)}/messages/${encode(messageId)}/moderation-metadata`;
|
|
620
|
+
},
|
|
621
|
+
messages: (lobbyId, options)=>{
|
|
622
|
+
let url = `/lobbies/${encode(lobbyId)}/messages?`;
|
|
623
|
+
if (options) {
|
|
624
|
+
if (options.limit) url += `limit=${encode(options.limit)}`;
|
|
625
|
+
}
|
|
626
|
+
return url;
|
|
627
|
+
},
|
|
628
|
+
inviteSelf: (lobbyId)=>{
|
|
629
|
+
return `/lobbies/${encode(lobbyId)}/members/@me/invites`;
|
|
630
|
+
},
|
|
631
|
+
inviteUser: (lobbyId, userId)=>{
|
|
632
|
+
return `/lobbies/${encode(lobbyId)}/members/${encode(userId)}/invites`;
|
|
633
|
+
}
|
|
634
|
+
},
|
|
635
|
+
applicationEmoji (applicationId, emojiId) {
|
|
636
|
+
return `/applications/${encode(applicationId)}/emojis/${encode(emojiId)}`;
|
|
637
|
+
},
|
|
638
|
+
applicationEmojis (applicationId) {
|
|
639
|
+
return `/applications/${encode(applicationId)}/emojis`;
|
|
640
|
+
},
|
|
641
|
+
applicationRoleConnectionMetadata (applicationId) {
|
|
642
|
+
return `/applications/${encode(applicationId)}/role-connections/metadata`;
|
|
643
|
+
},
|
|
644
|
+
// User endpoints
|
|
645
|
+
user (userId) {
|
|
646
|
+
return `/users/${encode(userId)}`;
|
|
647
|
+
},
|
|
648
|
+
application () {
|
|
649
|
+
return '/applications/@me';
|
|
650
|
+
},
|
|
651
|
+
applicationActivityInstance (applicationId, instanceId) {
|
|
652
|
+
return `/applications/${encode(applicationId)}/activity-instances/${encode(instanceId)}`;
|
|
653
|
+
},
|
|
654
|
+
currentUser () {
|
|
655
|
+
return '/users/@me';
|
|
656
|
+
},
|
|
657
|
+
gatewayBot () {
|
|
658
|
+
return '/gateway/bot';
|
|
659
|
+
},
|
|
660
|
+
stickerPack (stickerPackId) {
|
|
661
|
+
return `/sticker-packs/${encode(stickerPackId)}`;
|
|
662
|
+
},
|
|
663
|
+
stickerPacks () {
|
|
664
|
+
return '/sticker-packs';
|
|
665
|
+
}
|
|
666
|
+
};
|
|
667
|
+
}
|
|
668
|
+
function encodeComponent(uriComponent) {
|
|
669
|
+
if (typeof uriComponent !== 'string') return uriComponent.toString();
|
|
670
|
+
if (/^\d+$/.test(uriComponent)) return uriComponent;
|
|
671
|
+
return encodeURIComponent(uriComponent);
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yb3V0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBHZXRNZXNzYWdlc09wdGlvbnMsIEdldFNjaGVkdWxlZEV2ZW50VXNlcnMsIFNlYXJjaEd1aWxkTWVzc2FnZXNPcHRpb25zIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnO1xuaW1wb3J0IHsgY2FtZWxUb1NuYWtlQ2FzZSwgaXNHZXRNZXNzYWdlc0FmdGVyLCBpc0dldE1lc3NhZ2VzQXJvdW5kLCBpc0dldE1lc3NhZ2VzQmVmb3JlLCBpc0dldE1lc3NhZ2VzTGltaXQgfSBmcm9tICdAZGlzY29yZGVuby91dGlscyc7XG5pbXBvcnQgdHlwZSB7IFJlc3RSb3V0ZXMgfSBmcm9tICcuL3R5cGluZ3Mvcm91dGVzLmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBhdmFpbGFibGUgZGlzY29yZCBBUEkgcm91dGVzXG4gKlxuICogQHBhcmFtIGRpc2FibGVVUklFbmNvZGUgRG9uJ3QgZW5jb2RlIHN0cmluZ3MsIGV4Y2VwdCB3aGVyZSByZXF1aXJlZCAtIERhbmdlcjogZGlzYWJsaW5nIFVSSSBlbmNvZGluZyBtYXkgbGVhZCB0byBwYXRoIHRyYXZlcnNhbCBpZiB1bnNhZmUgc3RyaW5ncyBhcmUgdXNlZFxuICogQHJldHVybnMgVGhlIGF2YWlsYWJsZSBkaXNjb3JkIEFQSSByb3V0ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJvdXRlcyhkaXNhYmxlVVJJRW5jb2RlOiBib29sZWFuID0gZmFsc2UpOiBSZXN0Um91dGVzIHtcbiAgY29uc3QgZW5jb2RlOiB0eXBlb2YgZW5jb2RlQ29tcG9uZW50ID0gZGlzYWJsZVVSSUVuY29kZSA/ICh4KSA9PiB4LnRvU3RyaW5nKCkgOiBlbmNvZGVDb21wb25lbnQ7XG5cbiAgcmV0dXJuIHtcbiAgICB3ZWJob29rczoge1xuICAgICAgaWQ6ICh3ZWJob29rSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvd2ViaG9va3MvJHtlbmNvZGUod2ViaG9va0lkKX1gO1xuICAgICAgfSxcbiAgICAgIG1lc3NhZ2U6ICh3ZWJob29rSWQsIHRva2VuLCBtZXNzYWdlSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvd2ViaG9va3MvJHtlbmNvZGUod2ViaG9va0lkKX0vJHtlbmNvZGUodG9rZW4pfS9tZXNzYWdlcy8ke2VuY29kZShtZXNzYWdlSWQpfT9gO1xuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMudGhyZWFkSWQpIHVybCArPSBgdGhyZWFkX2lkPSR7ZW5jb2RlKG9wdGlvbnMudGhyZWFkSWQpfWA7XG4gICAgICAgICAgaWYgKG9wdGlvbnMud2l0aENvbXBvbmVudHMpIHVybCArPSBgJndpdGhfY29tcG9uZW50cz0ke2VuY29kZShvcHRpb25zLndpdGhDb21wb25lbnRzKX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgIH0sXG4gICAgICB3ZWJob29rOiAod2ViaG9va0lkLCB0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC93ZWJob29rcy8ke2VuY29kZSh3ZWJob29rSWQpfS8ke2VuY29kZSh0b2tlbil9P2A7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucz8ud2FpdCAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYHdhaXQ9JHtlbmNvZGUob3B0aW9ucy53YWl0KX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLnRocmVhZElkKSB1cmwgKz0gYCZ0aHJlYWRfaWQ9JHtlbmNvZGUob3B0aW9ucy50aHJlYWRJZCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy53aXRoQ29tcG9uZW50cykgdXJsICs9IGAmd2l0aF9jb21wb25lbnRzPSR7ZW5jb2RlKG9wdGlvbnMud2l0aENvbXBvbmVudHMpfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gQ2hhbm5lbCBFbmRwb2ludHNcbiAgICBjaGFubmVsczoge1xuICAgICAgYnVsazogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9tZXNzYWdlcy9idWxrLWRlbGV0ZWA7XG4gICAgICB9LFxuICAgICAgZG06ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvdXNlcnMvQG1lL2NoYW5uZWxzJztcbiAgICAgIH0sXG4gICAgICBkbVJlY2lwaWVudDogKGNoYW5uZWxJZCwgdXNlcklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3JlY2lwaWVudHMvJHtlbmNvZGUodXNlcklkKX1gO1xuICAgICAgfSxcbiAgICAgIHBpbjogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3BpbnMvJHtlbmNvZGUobWVzc2FnZUlkKX1gO1xuICAgICAgfSxcbiAgICAgIHBpbnM6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vcGluc2A7XG4gICAgICB9LFxuICAgICAgbWVzc2FnZVBpbnM6IChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vbWVzc2FnZXMvcGlucz9gO1xuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYGJlZm9yZT0ke2VuY29kZShvcHRpb25zLmJlZm9yZSl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgICB9LFxuICAgICAgbWVzc2FnZVBpbjogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L21lc3NhZ2VzL3BpbnMvJHtlbmNvZGUobWVzc2FnZUlkKX1gO1xuICAgICAgfSxcbiAgICAgIHJlYWN0aW9uczoge1xuICAgICAgICBib3Q6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamkpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9tZXNzYWdlcy8ke2VuY29kZShtZXNzYWdlSWQpfS9yZWFjdGlvbnMvJHtlbmNvZGVVUklDb21wb25lbnQoZW1vamkpfS9AbWVgO1xuICAgICAgICB9LFxuICAgICAgICB1c2VyOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIGVtb2ppLCB1c2VySWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9tZXNzYWdlcy8ke2VuY29kZShtZXNzYWdlSWQpfS9yZWFjdGlvbnMvJHtlbmNvZGVVUklDb21wb25lbnQoZW1vamkpfS8ke2VuY29kZSh1c2VySWQpfWA7XG4gICAgICAgIH0sXG4gICAgICAgIGFsbDogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vbWVzc2FnZXMvJHtlbmNvZGUobWVzc2FnZUlkKX0vcmVhY3Rpb25zYDtcbiAgICAgICAgfSxcbiAgICAgICAgZW1vamk6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9tZXNzYWdlcy8ke2VuY29kZShtZXNzYWdlSWQpfS9yZWFjdGlvbnMvJHtlbmNvZGVVUklDb21wb25lbnQoZW1vamkpfT9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnR5cGUpIHVybCArPSBgdHlwZT0ke2VuY29kZShvcHRpb25zLnR5cGUpfWA7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGAmYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIG1lc3NhZ2U6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9tZXNzYWdlcy8ke2VuY29kZShtZXNzYWdlSWQpfS9yZWFjdGlvbnMvJHtlbmNvZGVVUklDb21wb25lbnQoZW1vamkpfT9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnR5cGUpIHVybCArPSBgdHlwZT0ke2VuY29kZShvcHRpb25zLnR5cGUpfWA7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke2VuY29kZShvcHRpb25zLmFmdGVyKX1gO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB3ZWJob29rczogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS93ZWJob29rc2A7XG4gICAgICB9LFxuXG4gICAgICBjaGFubmVsOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9YDtcbiAgICAgIH0sXG5cbiAgICAgIGZvbGxvdzogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS9mb2xsb3dlcnNgO1xuICAgICAgfSxcblxuICAgICAgZm9ydW06IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vdGhyZWFkc2A7XG4gICAgICB9LFxuXG4gICAgICBpbnZpdGVzOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L2ludml0ZXNgO1xuICAgICAgfSxcblxuICAgICAgbWVzc2FnZTogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L21lc3NhZ2VzLyR7ZW5jb2RlKG1lc3NhZ2VJZCl9YDtcbiAgICAgIH0sXG5cbiAgICAgIG1lc3NhZ2VzOiAoY2hhbm5lbElkLCBvcHRpb25zPzogR2V0TWVzc2FnZXNPcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L21lc3NhZ2VzP2A7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAoaXNHZXRNZXNzYWdlc0FmdGVyKG9wdGlvbnMpICYmIG9wdGlvbnMuYWZ0ZXIpIHtcbiAgICAgICAgICAgIHVybCArPSBgYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNCZWZvcmUob3B0aW9ucykgJiYgb3B0aW9ucy5iZWZvcmUpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmJlZm9yZT0ke2VuY29kZShvcHRpb25zLmJlZm9yZSl9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNBcm91bmQob3B0aW9ucykgJiYgb3B0aW9ucy5hcm91bmQpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmFyb3VuZD0ke2VuY29kZShvcHRpb25zLmFyb3VuZCl9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNMaW1pdChvcHRpb25zKSAmJiBvcHRpb25zLmxpbWl0KSB7XG4gICAgICAgICAgICB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgICB9LFxuXG4gICAgICBvdmVyd3JpdGU6IChjaGFubmVsSWQsIG92ZXJ3cml0ZUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3Blcm1pc3Npb25zLyR7ZW5jb2RlKG92ZXJ3cml0ZUlkKX1gO1xuICAgICAgfSxcblxuICAgICAgY3Jvc3Nwb3N0OiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vbWVzc2FnZXMvJHtlbmNvZGUobWVzc2FnZUlkKX0vY3Jvc3Nwb3N0YDtcbiAgICAgIH0sXG5cbiAgICAgIHN0YWdlczogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9zdGFnZS1pbnN0YW5jZXMnO1xuICAgICAgfSxcblxuICAgICAgc3RhZ2U6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvc3RhZ2UtaW5zdGFuY2VzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9YDtcbiAgICAgIH0sXG5cbiAgICAgIC8vIFRocmVhZCBFbmRwb2ludHNcbiAgICAgIHRocmVhZHM6IHtcbiAgICAgICAgbWVzc2FnZTogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vbWVzc2FnZXMvJHtlbmNvZGUobWVzc2FnZUlkKX0vdGhyZWFkc2A7XG4gICAgICAgIH0sXG4gICAgICAgIGFsbDogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3RocmVhZHNgO1xuICAgICAgICB9LFxuICAgICAgICBhY3RpdmU6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS90aHJlYWRzL2FjdGl2ZWA7XG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlcnM6IChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS90aHJlYWQtbWVtYmVycz9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLndpdGhNZW1iZXIpIHVybCArPSBgd2l0aF9tZW1iZXI9JHtlbmNvZGUob3B0aW9ucy53aXRoTWVtYmVyKX1gO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGAmYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgICB9LFxuICAgICAgICBtZTogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3RocmVhZC1tZW1iZXJzL0BtZWA7XG4gICAgICAgIH0sXG4gICAgICAgIGdldFVzZXIoY2hhbm5lbElkLCB1c2VySWQsIG9wdGlvbnMpIHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS90aHJlYWQtbWVtYmVycy8ke2VuY29kZSh1c2VySWQpfT9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLndpdGhNZW1iZXIpIHVybCArPSBgd2l0aF9tZW1iZXI9JHtlbmNvZGUob3B0aW9ucy53aXRoTWVtYmVyKX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIHVzZXI6IChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3RocmVhZC1tZW1iZXJzLyR7ZW5jb2RlKHVzZXJJZCl9YDtcbiAgICAgICAgfSxcbiAgICAgICAgYXJjaGl2ZWQ6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS90aHJlYWRzL2FyY2hpdmVkYDtcbiAgICAgICAgfSxcbiAgICAgICAgcHVibGljOiAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vdGhyZWFkcy9hcmNoaXZlZC9wdWJsaWM/YDtcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHtcbiAgICAgICAgICAgICAgY29uc3QgaXNvID0gbmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7ZW5jb2RlKGlzbyl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIHByaXZhdGU6IChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2VuY29kZShjaGFubmVsSWQpfS90aHJlYWRzL2FyY2hpdmVkL3ByaXZhdGU/YDtcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHtcbiAgICAgICAgICAgICAgY29uc3QgaXNvID0gbmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7ZW5jb2RlKGlzbyl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIGpvaW5lZDogKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7ZW5jb2RlKGNoYW5uZWxJZCl9L3VzZXJzL0BtZS90aHJlYWRzL2FyY2hpdmVkL3ByaXZhdGU/YDtcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHtcbiAgICAgICAgICAgICAgY29uc3QgaXNvID0gbmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7ZW5jb2RlKGlzbyl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICB9LFxuXG4gICAgICB0eXBpbmc6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vdHlwaW5nYDtcbiAgICAgIH0sXG5cbiAgICAgIHBvbGxzOiB7XG4gICAgICAgIHZvdGVzOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIGFuc3dlcklkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vcG9sbHMvJHtlbmNvZGUobWVzc2FnZUlkKX0vYW5zd2Vycy8ke2VuY29kZShhbnN3ZXJJZCl9P2A7XG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIGV4cGlyZTogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX0vcG9sbHMvJHtlbmNvZGUobWVzc2FnZUlkKX0vZXhwaXJlYDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIEd1aWxkIEVuZHBvaW50c1xuICAgIGd1aWxkczoge1xuICAgICAgYWxsOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL2d1aWxkcyc7XG4gICAgICB9LFxuICAgICAgdXNlckd1aWxkczogKG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9ICcvdXNlcnMvQG1lL2d1aWxkcz8nO1xuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHVybCArPSBgJmJlZm9yZT0ke2VuY29kZShvcHRpb25zLmJlZm9yZSl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy53aXRoQ291bnRzKSB1cmwgKz0gYCZ3aXRoX2NvdW50cz0ke2VuY29kZShvcHRpb25zLndpdGhDb3VudHMpfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgfSxcbiAgICAgIGF1ZGl0bG9nczogKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9hdWRpdC1sb2dzP2A7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5hY3Rpb25UeXBlKSB1cmwgKz0gYGFjdGlvbl90eXBlPSR7ZW5jb2RlKG9wdGlvbnMuYWN0aW9uVHlwZSl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHVybCArPSBgJmJlZm9yZT0ke2VuY29kZShvcHRpb25zLmJlZm9yZSl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGAmYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy51c2VySWQpIHVybCArPSBgJnVzZXJfaWQ9JHtlbmNvZGUob3B0aW9ucy51c2VySWQpfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgfSxcbiAgICAgIGF1dG9tb2Q6IHtcbiAgICAgICAgcnVsZTogKGd1aWxkSWQsIHJ1bGVJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vYXV0by1tb2RlcmF0aW9uL3J1bGVzLyR7ZW5jb2RlKHJ1bGVJZCl9YDtcbiAgICAgICAgfSxcbiAgICAgICAgcnVsZXM6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9hdXRvLW1vZGVyYXRpb24vcnVsZXNgO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNoYW5uZWxzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2NoYW5uZWxzYDtcbiAgICAgIH0sXG4gICAgICBlbW9qaTogKGd1aWxkSWQsIGVtb2ppSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9lbW9qaXMvJHtlbmNvZGUoZW1vamlJZCl9YDtcbiAgICAgIH0sXG4gICAgICBlbW9qaXM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vZW1vamlzYDtcbiAgICAgIH0sXG4gICAgICBldmVudHM6IHtcbiAgICAgICAgZXZlbnRzOiAoZ3VpbGRJZCwgd2l0aFVzZXJDb3VudD86IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3NjaGVkdWxlZC1ldmVudHM/YDtcblxuICAgICAgICAgIGlmICh3aXRoVXNlckNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgd2l0aF91c2VyX2NvdW50PSR7ZW5jb2RlKHdpdGhVc2VyQ291bnQpfWA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIGV2ZW50OiAoZ3VpbGRJZCwgZXZlbnRJZCwgd2l0aFVzZXJDb3VudD86IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3NjaGVkdWxlZC1ldmVudHMvJHtlbmNvZGUoZXZlbnRJZCl9YDtcblxuICAgICAgICAgIGlmICh3aXRoVXNlckNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgd2l0aF91c2VyX2NvdW50PSR7ZW5jb2RlKHdpdGhVc2VyQ291bnQpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgICAgdXNlcnM6IChndWlsZElkLCBldmVudElkLCBvcHRpb25zPzogR2V0U2NoZWR1bGVkRXZlbnRVc2VycykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vc2NoZWR1bGVkLWV2ZW50cy8ke2VuY29kZShldmVudElkKX0vdXNlcnM/YDtcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYGxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy53aXRoTWVtYmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgdXJsICs9IGAmd2l0aF9tZW1iZXI9JHtlbmNvZGUob3B0aW9ucy53aXRoTWVtYmVyKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIgIT09IHVuZGVmaW5lZCkgdXJsICs9IGAmYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYCZiZWZvcmU9JHtlbmNvZGUob3B0aW9ucy5iZWZvcmUpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBndWlsZChndWlsZElkLCB3aXRoQ291bnRzKSB7XG4gICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0/YDtcblxuICAgICAgICBpZiAod2l0aENvdW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdXJsICs9IGB3aXRoX2NvdW50cz0ke2VuY29kZSh3aXRoQ291bnRzKX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgIH0sXG4gICAgICBpbnRlZ3JhdGlvbihndWlsZElkLCBpbnRlZ3JhdGlvbklkKSB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vaW50ZWdyYXRpb25zLyR7ZW5jb2RlKGludGVncmF0aW9uSWQpfWA7XG4gICAgICB9LFxuICAgICAgaW50ZWdyYXRpb25zOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2ludGVncmF0aW9ucz9pbmNsdWRlX2FwcGxpY2F0aW9ucz10cnVlYDtcbiAgICAgIH0sXG4gICAgICBpbnZpdGUoaW52aXRlQ29kZSwgb3B0aW9ucykge1xuICAgICAgICBsZXQgdXJsID0gYC9pbnZpdGVzLyR7ZW5jb2RlKGludml0ZUNvZGUpfT9gO1xuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMud2l0aENvdW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB1cmwgKz0gYHdpdGhfY291bnRzPSR7ZW5jb2RlKG9wdGlvbnMud2l0aENvdW50cyl9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9wdGlvbnMuc2NoZWR1bGVkRXZlbnRJZCkge1xuICAgICAgICAgICAgdXJsICs9IGAmZ3VpbGRfc2NoZWR1bGVkX2V2ZW50X2lkPSR7ZW5jb2RlKG9wdGlvbnMuc2NoZWR1bGVkRXZlbnRJZCl9YDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgfSxcbiAgICAgIGludml0ZVRhcmdldFVzZXJzKGludml0ZUNvZGUpIHtcbiAgICAgICAgcmV0dXJuIGAvaW52aXRlcy8ke2VuY29kZShpbnZpdGVDb2RlKX0vdGFyZ2V0LXVzZXJzYDtcbiAgICAgIH0sXG4gICAgICBpbnZpdGVUYXJnZXRVc2Vyc0pvYlN0YXR1cyhpbnZpdGVDb2RlKSB7XG4gICAgICAgIHJldHVybiBgL2ludml0ZXMvJHtlbmNvZGUoaW52aXRlQ29kZSl9L3RhcmdldC11c2Vycy9qb2Itc3RhdHVzYDtcbiAgICAgIH0sXG4gICAgICBpbnZpdGVzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2ludml0ZXNgO1xuICAgICAgfSxcbiAgICAgIGxlYXZlOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC91c2Vycy9AbWUvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfWA7XG4gICAgICB9LFxuICAgICAgbWVtYmVyczoge1xuICAgICAgICBiYW46IChndWlsZElkLCB1c2VySWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2JhbnMvJHtlbmNvZGUodXNlcklkKX1gO1xuICAgICAgICB9LFxuICAgICAgICBiYW5zOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vYmFucz9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYGxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGAmYWZ0ZXI9JHtlbmNvZGUob3B0aW9ucy5hZnRlcil9YDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkgdXJsICs9IGAmYmVmb3JlPSR7ZW5jb2RlKG9wdGlvbnMuYmVmb3JlKX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIGJ1bGtCYW46IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9idWxrLWJhbmA7XG4gICAgICAgIH0sXG4gICAgICAgIGJvdDogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L21lbWJlcnMvQG1lYDtcbiAgICAgICAgfSxcbiAgICAgICAgbWVtYmVyOiAoZ3VpbGRJZCwgdXNlcklkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9tZW1iZXJzLyR7ZW5jb2RlKHVzZXJJZCl9YDtcbiAgICAgICAgfSxcbiAgICAgICAgY3VycmVudE1lbWJlcjogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC91c2Vycy9AbWUvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9tZW1iZXJgO1xuICAgICAgICB9LFxuICAgICAgICBtZW1iZXJzOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vbWVtYmVycz9gO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYCZhZnRlcj0ke2VuY29kZShvcHRpb25zLmFmdGVyKX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIHNlYXJjaDogKGd1aWxkSWQsIHF1ZXJ5LCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9tZW1iZXJzL3NlYXJjaD9xdWVyeT0ke2VuY29kZShxdWVyeSl9YDtcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYCZsaW1pdD0ke2VuY29kZShvcHRpb25zLmxpbWl0KX1gO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICAgIHBydW5lOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vcHJ1bmU/YDtcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5kYXlzKSB1cmwgKz0gYGRheXM9JHtlbmNvZGUob3B0aW9ucy5kYXlzKX1gO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy5pbmNsdWRlUm9sZXMpKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgJmluY2x1ZGVfcm9sZXM9JHtlbmNvZGUob3B0aW9ucy5pbmNsdWRlUm9sZXMuam9pbignLCcpKX1gO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmluY2x1ZGVSb2xlcykge1xuICAgICAgICAgICAgICB1cmwgKz0gYCZpbmNsdWRlX3JvbGVzPSR7ZW5jb2RlKG9wdGlvbnMuaW5jbHVkZVJvbGVzKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmw7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWVzc2FnZXNTZWFyY2g6IChndWlsZElkLCBvcHRpb25zPzogU2VhcmNoR3VpbGRNZXNzYWdlc09wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9tZXNzYWdlcy9zZWFyY2g/YDtcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSkgdXJsICs9IGAmJHtjYW1lbFRvU25ha2VDYXNlKGtleSl9PSR7ZW5jb2RlKGl0ZW0pfWA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgIH0sXG4gICAgICBwcmV2aWV3OiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3ByZXZpZXdgO1xuICAgICAgfSxcbiAgICAgIHBydW5lOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3BydW5lP2A7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5kYXlzKSB1cmwgKz0gYGRheXM9JHtlbmNvZGUob3B0aW9ucy5kYXlzKX1gO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMuaW5jbHVkZVJvbGVzKSkge1xuICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke2VuY29kZShvcHRpb25zLmluY2x1ZGVSb2xlcy5qb2luKCcsJykpfWA7XG4gICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmluY2x1ZGVSb2xlcykge1xuICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke2VuY29kZShvcHRpb25zLmluY2x1ZGVSb2xlcyl9YDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgfSxcbiAgICAgIHJvbGVzOiB7XG4gICAgICAgIG9uZTogKGd1aWxkSWQsIHJvbGVJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vcm9sZXMvJHtlbmNvZGUocm9sZUlkKX1gO1xuICAgICAgICB9LFxuICAgICAgICBhbGw6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9yb2xlc2A7XG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlcjogKGd1aWxkSWQsIG1lbWJlcklkLCByb2xlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L21lbWJlcnMvJHtlbmNvZGUobWVtYmVySWQpfS9yb2xlcy8ke2VuY29kZShyb2xlSWQpfWA7XG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlckNvdW50czogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9yb2xlcy9tZW1iZXItY291bnRzYDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzdGlja2VyczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9zdGlja2Vyc2A7XG4gICAgICB9LFxuICAgICAgc3RpY2tlcjogKGd1aWxkSWQsIHN0aWNrZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3N0aWNrZXJzLyR7ZW5jb2RlKHN0aWNrZXJJZCl9YDtcbiAgICAgIH0sXG4gICAgICB2b2ljZTogKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3ZvaWNlLXN0YXRlcy8ke2VuY29kZSh1c2VySWQgPz8gJ0BtZScpfWA7XG4gICAgICB9LFxuICAgICAgdGVtcGxhdGVzOiB7XG4gICAgICAgIGNvZGU6IChjb2RlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzL3RlbXBsYXRlcy8ke2VuY29kZShjb2RlKX1gO1xuICAgICAgICB9LFxuICAgICAgICBndWlsZDogKGd1aWxkSWQsIGNvZGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3RlbXBsYXRlcy8ke2VuY29kZShjb2RlKX1gO1xuICAgICAgICB9LFxuICAgICAgICBhbGw6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS90ZW1wbGF0ZXNgO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZhbml0eTogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS92YW5pdHktdXJsYDtcbiAgICAgIH0sXG4gICAgICByZWdpb25zOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3JlZ2lvbnNgO1xuICAgICAgfSxcbiAgICAgIHdlYmhvb2tzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3dlYmhvb2tzYDtcbiAgICAgIH0sXG4gICAgICB3ZWxjb21lOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3dlbGNvbWUtc2NyZWVuYDtcbiAgICAgIH0sXG4gICAgICB3aWRnZXQ6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vd2lkZ2V0YDtcbiAgICAgIH0sXG4gICAgICB3aWRnZXRKc29uOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3dpZGdldC5qc29uYDtcbiAgICAgIH0sXG4gICAgICBvbmJvYXJkaW5nOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L29uYm9hcmRpbmdgO1xuICAgICAgfSxcbiAgICAgIGluY2lkZW50QWN0aW9uczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9pbmNpZGVudC1hY3Rpb25zYDtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIHN0aWNrZXI6IChzdGlja2VySWQpID0+IHtcbiAgICAgIHJldHVybiBgL3N0aWNrZXJzLyR7ZW5jb2RlKHN0aWNrZXJJZCl9YDtcbiAgICB9LFxuXG4gICAgcmVnaW9uczogKCkgPT4ge1xuICAgICAgcmV0dXJuICcvdm9pY2UvcmVnaW9ucyc7XG4gICAgfSxcblxuICAgIC8vIEludGVyYWN0aW9uIEVuZHBvaW50c1xuICAgIGludGVyYWN0aW9uczoge1xuICAgICAgY29tbWFuZHM6IHtcbiAgICAgICAgLy8gQXBwbGljYXRpb24gRW5kcG9pbnRzXG4gICAgICAgIGNvbW1hbmRzOiAoYXBwbGljYXRpb25JZCwgd2l0aExvY2FsaXphdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L2NvbW1hbmRzP2A7XG5cbiAgICAgICAgICBpZiAod2l0aExvY2FsaXphdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXJsICs9IGB3aXRoX2xvY2FsaXphdGlvbnM9JHtlbmNvZGUod2l0aExvY2FsaXphdGlvbnMpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfSxcblxuICAgICAgICBndWlsZHM6IHtcbiAgICAgICAgICBhbGwoYXBwbGljYXRpb25JZCwgZ3VpbGRJZCwgd2l0aExvY2FsaXphdGlvbnMpIHtcbiAgICAgICAgICAgIGxldCB1cmwgPSBgL2FwcGxpY2F0aW9ucy8ke2VuY29kZShhcHBsaWNhdGlvbklkKX0vZ3VpbGRzLyR7ZW5jb2RlKGd1aWxkSWQpfS9jb21tYW5kcz9gO1xuXG4gICAgICAgICAgICBpZiAod2l0aExvY2FsaXphdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICB1cmwgKz0gYHdpdGhfbG9jYWxpemF0aW9ucz0ke2VuY29kZSh3aXRoTG9jYWxpemF0aW9ucyl9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgICB9LFxuXG4gICAgICAgICAgb25lKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQsIGNvbW1hbmRJZCkge1xuICAgICAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7ZW5jb2RlKGFwcGxpY2F0aW9uSWQpfS9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2NvbW1hbmRzLyR7ZW5jb2RlKGNvbW1hbmRJZCl9YDtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uczogKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L2d1aWxkcy8ke2VuY29kZShndWlsZElkKX0vY29tbWFuZHMvcGVybWlzc2lvbnNgO1xuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uOiAoYXBwbGljYXRpb25JZCwgZ3VpbGRJZCwgY29tbWFuZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7ZW5jb2RlKGFwcGxpY2F0aW9uSWQpfS9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L2NvbW1hbmRzLyR7ZW5jb2RlKGNvbW1hbmRJZCl9L3Blcm1pc3Npb25zYDtcbiAgICAgICAgfSxcbiAgICAgICAgY29tbWFuZDogKGFwcGxpY2F0aW9uSWQsIGNvbW1hbmRJZCwgd2l0aExvY2FsaXphdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L2NvbW1hbmRzLyR7ZW5jb2RlKGNvbW1hbmRJZCl9P2A7XG5cbiAgICAgICAgICBpZiAod2l0aExvY2FsaXphdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXJsICs9IGB3aXRoTG9jYWxpemF0aW9ucz0ke2VuY29kZSh3aXRoTG9jYWxpemF0aW9ucyl9YDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgcmVzcG9uc2VzOiB7XG4gICAgICAgIC8vIEludGVyYWN0aW9uIEVuZHBvaW50c1xuICAgICAgICBjYWxsYmFjazogKGludGVyYWN0aW9uSWQsIHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvaW50ZXJhY3Rpb25zLyR7ZW5jb2RlKGludGVyYWN0aW9uSWQpfS8ke2VuY29kZSh0b2tlbil9L2NhbGxiYWNrP3dpdGhfcmVzcG9uc2U9JHtlbmNvZGUoISFvcHRpb25zPy53aXRoUmVzcG9uc2UpfWA7XG4gICAgICAgIH0sXG4gICAgICAgIG9yaWdpbmFsOiAoaW50ZXJhY3Rpb25JZCwgdG9rZW4pID0+IHtcbiAgICAgICAgICByZXR1cm4gYC93ZWJob29rcy8ke2VuY29kZShpbnRlcmFjdGlvbklkKX0vJHtlbmNvZGUodG9rZW4pfS9tZXNzYWdlcy9Ab3JpZ2luYWxgO1xuICAgICAgICB9LFxuICAgICAgICBtZXNzYWdlOiAoYXBwbGljYXRpb25JZCwgdG9rZW4sIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL3dlYmhvb2tzLyR7ZW5jb2RlKGFwcGxpY2F0aW9uSWQpfS8ke2VuY29kZSh0b2tlbil9L21lc3NhZ2VzLyR7ZW5jb2RlKG1lc3NhZ2VJZCl9YDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIE9BdXRoMiBlbmRwb2ludHNcbiAgICBvYXV0aDI6IHtcbiAgICAgIHRva2VuRXhjaGFuZ2U6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvb2F1dGgyL3Rva2VuJztcbiAgICAgIH0sXG4gICAgICB0b2tlblJldm9rZTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvdG9rZW4vcmV2b2tlJztcbiAgICAgIH0sXG4gICAgICBjdXJyZW50QXV0aG9yaXphdGlvbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvQG1lJztcbiAgICAgIH0sXG4gICAgICBhcHBsaWNhdGlvbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvYXBwbGljYXRpb25zL0BtZSc7XG4gICAgICB9LFxuICAgICAgY29ubmVjdGlvbnM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvdXNlcnMvQG1lL2Nvbm5lY3Rpb25zJztcbiAgICAgIH0sXG4gICAgICByb2xlQ29ubmVjdGlvbnM6IChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3VzZXJzL0BtZS9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L3JvbGUtY29ubmVjdGlvbmA7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBtb25ldGl6YXRpb246IHtcbiAgICAgIGVudGl0bGVtZW50czogKGFwcGxpY2F0aW9uSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvYXBwbGljYXRpb25zLyR7ZW5jb2RlKGFwcGxpY2F0aW9uSWQpfS9lbnRpdGxlbWVudHM/YDtcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYGFmdGVyPSR7ZW5jb2RlKG9wdGlvbnMuYWZ0ZXIpfWA7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYCZiZWZvcmU9JHtlbmNvZGUob3B0aW9ucy5iZWZvcmUpfWA7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuZXhjbHVkZUVuZGVkKSB1cmwgKz0gYCZleGNsdWRlX2VuZGVkPSR7ZW5jb2RlKG9wdGlvbnMuZXhjbHVkZUVuZGVkKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLmd1aWxkSWQpIHVybCArPSBgJmd1aWxkX2lkPSR7ZW5jb2RlKG9wdGlvbnMuZ3VpbGRJZCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5za3VJZHMpIHVybCArPSBgJnNrdV9pZHM9JHtlbmNvZGUob3B0aW9ucy5za3VJZHMuam9pbignLCcpKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLnVzZXJJZCkgdXJsICs9IGAmdXNlcl9pZD0ke2VuY29kZShvcHRpb25zLnVzZXJJZCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgICB9LFxuICAgICAgZW50aXRsZW1lbnQ6IChhcHBsaWNhdGlvbklkLCBlbnRpdGxlbWVudElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2VuY29kZShhcHBsaWNhdGlvbklkKX0vZW50aXRsZW1lbnRzLyR7ZW5jb2RlKGVudGl0bGVtZW50SWQpfWA7XG4gICAgICB9LFxuICAgICAgY29uc3VtZUVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZCwgZW50aXRsZW1lbnRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L2VudGl0bGVtZW50cy8ke2VuY29kZShlbnRpdGxlbWVudElkKX0vY29uc3VtZWA7XG4gICAgICB9LFxuXG4gICAgICBza3VzOiAoYXBwbGljYXRpb25JZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHtlbmNvZGUoYXBwbGljYXRpb25JZCl9L3NrdXNgO1xuICAgICAgfSxcblxuICAgICAgc3Vic2NyaXB0aW9uOiAoc2t1SWQsIHN1YnNjcmlwdGlvbklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3NrdXMvJHtlbmNvZGUoc2t1SWQpfS9zdWJzY3JpcHRpb25zLyR7ZW5jb2RlKHN1YnNjcmlwdGlvbklkKX1gO1xuICAgICAgfSxcblxuICAgICAgc3Vic2NyaXB0aW9uczogKHNrdUlkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL3NrdXMvJHtlbmNvZGUoc2t1SWQpfS9zdWJzY3JpcHRpb25zP2A7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke2VuY29kZShvcHRpb25zLmFmdGVyKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkgdXJsICs9IGAmYmVmb3JlPSR7ZW5jb2RlKG9wdGlvbnMuYmVmb3JlKX1gO1xuICAgICAgICAgIGlmIChvcHRpb25zLnVzZXJJZCkgdXJsICs9IGAmdXNlcl9pZD0ke2VuY29kZShvcHRpb25zLnVzZXJJZCl9YDtcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtlbmNvZGUob3B0aW9ucy5saW1pdCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBzb3VuZGJvYXJkOiB7XG4gICAgICBzZW5kU291bmQ6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtlbmNvZGUoY2hhbm5lbElkKX1gO1xuICAgICAgfSxcbiAgICAgIGxpc3REZWZhdWx0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3NvdW5kYm9hcmQtZGVmYXVsdC1zb3VuZHNgO1xuICAgICAgfSxcbiAgICAgIGd1aWxkU291bmRzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3NvdW5kYm9hcmQtc291bmRzYDtcbiAgICAgIH0sXG4gICAgICBndWlsZFNvdW5kOiAoZ3VpbGRJZCwgc291bmRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtlbmNvZGUoZ3VpbGRJZCl9L3NvdW5kYm9hcmQtc291bmRzLyR7ZW5jb2RlKHNvdW5kSWQpfWA7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBsb2JieToge1xuICAgICAgY3JlYXRlOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL2xvYmJpZXMnO1xuICAgICAgfSxcblxuICAgICAgbG9iYnk6IChsb2JieUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2xvYmJpZXMvJHtlbmNvZGUobG9iYnlJZCl9YDtcbiAgICAgIH0sXG5cbiAgICAgIG1lbWJlcjogKGxvYmJ5SWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9sb2JiaWVzLyR7ZW5jb2RlKGxvYmJ5SWQpfS9tZW1iZXJzLyR7ZW5jb2RlKHVzZXJJZCl9YDtcbiAgICAgIH0sXG5cbiAgICAgIGxlYXZlOiAobG9iYnlJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9sb2JiaWVzLyR7ZW5jb2RlKGxvYmJ5SWQpfS9tZW1iZXJzL0BtZWA7XG4gICAgICB9LFxuXG4gICAgICBsaW5rOiAobG9iYnlJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9sb2JiaWVzLyR7ZW5jb2RlKGxvYmJ5SWQpfS9jaGFubmVsLWxpbmtpbmdgO1xuICAgICAgfSxcblxuICAgICAgbWVtYmVyc0J1bGs6IChsb2JieUlkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2xvYmJpZXMvJHtlbmNvZGUobG9iYnlJZCl9L21lbWJlcnMvYnVsa2A7XG4gICAgICB9LFxuXG4gICAgICBtb2RlcmF0aW9uTWV0YWRhdGE6IChsb2JieUlkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvbG9iYmllcy8ke2VuY29kZShsb2JieUlkKX0vbWVzc2FnZXMvJHtlbmNvZGUobWVzc2FnZUlkKX0vbW9kZXJhdGlvbi1tZXRhZGF0YWA7XG4gICAgICB9LFxuXG4gICAgICBtZXNzYWdlczogKGxvYmJ5SWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvbG9iYmllcy8ke2VuY29kZShsb2JieUlkKX0vbWVzc2FnZXM/YDtcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYGxpbWl0PSR7ZW5jb2RlKG9wdGlvbnMubGltaXQpfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgfSxcblxuICAgICAgaW52aXRlU2VsZjogKGxvYmJ5SWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvbG9iYmllcy8ke2VuY29kZShsb2JieUlkKX0vbWVtYmVycy9AbWUvaW52aXRlc2A7XG4gICAgICB9LFxuXG4gICAgICBpbnZpdGVVc2VyOiAobG9iYnlJZCwgdXNlcklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2xvYmJpZXMvJHtlbmNvZGUobG9iYnlJZCl9L21lbWJlcnMvJHtlbmNvZGUodXNlcklkKX0vaW52aXRlc2A7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBhcHBsaWNhdGlvbkVtb2ppKGFwcGxpY2F0aW9uSWQsIGVtb2ppSWQpIHtcbiAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2VuY29kZShhcHBsaWNhdGlvbklkKX0vZW1vamlzLyR7ZW5jb2RlKGVtb2ppSWQpfWA7XG4gICAgfSxcblxuICAgIGFwcGxpY2F0aW9uRW1vamlzKGFwcGxpY2F0aW9uSWQpIHtcbiAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2VuY29kZShhcHBsaWNhdGlvbklkKX0vZW1vamlzYDtcbiAgICB9LFxuXG4gICAgYXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbk1ldGFkYXRhKGFwcGxpY2F0aW9uSWQpIHtcbiAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2VuY29kZShhcHBsaWNhdGlvbklkKX0vcm9sZS1jb25uZWN0aW9ucy9tZXRhZGF0YWA7XG4gICAgfSxcblxuICAgIC8vIFVzZXIgZW5kcG9pbnRzXG4gICAgdXNlcih1c2VySWQpIHtcbiAgICAgIHJldHVybiBgL3VzZXJzLyR7ZW5jb2RlKHVzZXJJZCl9YDtcbiAgICB9LFxuXG4gICAgYXBwbGljYXRpb24oKSB7XG4gICAgICByZXR1cm4gJy9hcHBsaWNhdGlvbnMvQG1lJztcbiAgICB9LFxuXG4gICAgYXBwbGljYXRpb25BY3Rpdml0eUluc3RhbmNlKGFwcGxpY2F0aW9uSWQsIGluc3RhbmNlSWQpIHtcbiAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2VuY29kZShhcHBsaWNhdGlvbklkKX0vYWN0aXZpdHktaW5zdGFuY2VzLyR7ZW5jb2RlKGluc3RhbmNlSWQpfWA7XG4gICAgfSxcblxuICAgIGN1cnJlbnRVc2VyKCkge1xuICAgICAgcmV0dXJuICcvdXNlcnMvQG1lJztcbiAgICB9LFxuXG4gICAgZ2F0ZXdheUJvdCgpIHtcbiAgICAgIHJldHVybiAnL2dhdGV3YXkvYm90JztcbiAgICB9LFxuXG4gICAgc3RpY2tlclBhY2soc3RpY2tlclBhY2tJZCkge1xuICAgICAgcmV0dXJuIGAvc3RpY2tlci1wYWNrcy8ke2VuY29kZShzdGlja2VyUGFja0lkKX1gO1xuICAgIH0sXG5cbiAgICBzdGlja2VyUGFja3MoKSB7XG4gICAgICByZXR1cm4gJy9zdGlja2VyLXBhY2tzJztcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBlbmNvZGVDb21wb25lbnQodXJpQ29tcG9uZW50OiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQgfCBib29sZWFuKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB1cmlDb21wb25lbnQgIT09ICdzdHJpbmcnKSByZXR1cm4gdXJpQ29tcG9uZW50LnRvU3RyaW5nKCk7XG4gIGlmICgvXlxcZCskLy50ZXN0KHVyaUNvbXBvbmVudCkpIHJldHVybiB1cmlDb21wb25lbnQ7XG5cbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh1cmlDb21wb25lbnQpO1xufVxuIl0sIm5hbWVzIjpbImNhbWVsVG9TbmFrZUNhc2UiLCJpc0dldE1lc3NhZ2VzQWZ0ZXIiLCJpc0dldE1lc3NhZ2VzQXJvdW5kIiwiaXNHZXRNZXNzYWdlc0JlZm9yZSIsImlzR2V0TWVzc2FnZXNMaW1pdCIsImNyZWF0ZVJvdXRlcyIsImRpc2FibGVVUklFbmNvZGUiLCJlbmNvZGUiLCJ4IiwidG9TdHJpbmciLCJlbmNvZGVDb21wb25lbnQiLCJ3ZWJob29rcyIsImlkIiwid2ViaG9va0lkIiwibWVzc2FnZSIsInRva2VuIiwibWVzc2FnZUlkIiwib3B0aW9ucyIsInVybCIsInRocmVhZElkIiwid2l0aENvbXBvbmVudHMiLCJ3ZWJob29rIiwid2FpdCIsInVuZGVmaW5lZCIsImNoYW5uZWxzIiwiYnVsayIsImNoYW5uZWxJZCIsImRtIiwiZG1SZWNpcGllbnQiLCJ1c2VySWQiLCJwaW4iLCJwaW5zIiwibWVzc2FnZVBpbnMiLCJiZWZvcmUiLCJsaW1pdCIsIm1lc3NhZ2VQaW4iLCJyZWFjdGlvbnMiLCJib3QiLCJlbW9qaSIsImVuY29kZVVSSUNvbXBvbmVudCIsInVzZXIiLCJhbGwiLCJ0eXBlIiwiYWZ0ZXIiLCJjaGFubmVsIiwiZm9sbG93IiwiZm9ydW0iLCJpbnZpdGVzIiwibWVzc2FnZXMiLCJhcm91bmQiLCJvdmVyd3JpdGUiLCJvdmVyd3JpdGVJZCIsImNyb3NzcG9zdCIsInN0YWdlcyIsInN0YWdlIiwidGhyZWFkcyIsImFjdGl2ZSIsImd1aWxkSWQiLCJtZW1iZXJzIiwid2l0aE1lbWJlciIsIm1lIiwiZ2V0VXNlciIsImFyY2hpdmVkIiwicHVibGljIiwiaXNvIiwiRGF0ZSIsInRvSVNPU3RyaW5nIiwicHJpdmF0ZSIsImpvaW5lZCIsInR5cGluZyIsInBvbGxzIiwidm90ZXMiLCJhbnN3ZXJJZCIsImV4cGlyZSIsImd1aWxkcyIsInVzZXJHdWlsZHMiLCJ3aXRoQ291bnRzIiwiYXVkaXRsb2dzIiwiYWN0aW9uVHlwZSIsImF1dG9tb2QiLCJydWxlIiwicnVsZUlkIiwicnVsZXMiLCJlbW9qaUlkIiwiZW1vamlzIiwiZXZlbnRzIiwid2l0aFVzZXJDb3VudCIsImV2ZW50IiwiZXZlbnRJZCIsInVzZXJzIiwiZ3VpbGQiLCJpbnRlZ3JhdGlvbiIsImludGVncmF0aW9uSWQiLCJpbnRlZ3JhdGlvbnMiLCJpbnZpdGUiLCJpbnZpdGVDb2RlIiwic2NoZWR1bGVkRXZlbnRJZCIsImludml0ZVRhcmdldFVzZXJzIiwiaW52aXRlVGFyZ2V0VXNlcnNKb2JTdGF0dXMiLCJsZWF2ZSIsImJhbiIsImJhbnMiLCJidWxrQmFuIiwibWVtYmVyIiwiY3VycmVudE1lbWJlciIsInNlYXJjaCIsInF1ZXJ5IiwicHJ1bmUiLCJkYXlzIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5jbHVkZVJvbGVzIiwiam9pbiIsIm1lc3NhZ2VzU2VhcmNoIiwia2V5IiwidmFsdWUiLCJPYmplY3QiLCJlbnRyaWVzIiwiaXRlbSIsInByZXZpZXciLCJyb2xlcyIsIm9uZSIsInJvbGVJZCIsIm1lbWJlcklkIiwibWVtYmVyQ291bnRzIiwic3RpY2tlcnMiLCJzdGlja2VyIiwic3RpY2tlcklkIiwidm9pY2UiLCJ0ZW1wbGF0ZXMiLCJjb2RlIiwidmFuaXR5IiwicmVnaW9ucyIsIndlbGNvbWUiLCJ3aWRnZXQiLCJ3aWRnZXRKc29uIiwib25ib2FyZGluZyIsImluY2lkZW50QWN0aW9ucyIsImludGVyYWN0aW9ucyIsImNvbW1hbmRzIiwiYXBwbGljYXRpb25JZCIsIndpdGhMb2NhbGl6YXRpb25zIiwiY29tbWFuZElkIiwicGVybWlzc2lvbnMiLCJwZXJtaXNzaW9uIiwiY29tbWFuZCIsInJlc3BvbnNlcyIsImNhbGxiYWNrIiwiaW50ZXJhY3Rpb25JZCIsIndpdGhSZXNwb25zZSIsIm9yaWdpbmFsIiwib2F1dGgyIiwidG9rZW5FeGNoYW5nZSIsInRva2VuUmV2b2tlIiwiY3VycmVudEF1dGhvcml6YXRpb24iLCJhcHBsaWNhdGlvbiIsImNvbm5lY3Rpb25zIiwicm9sZUNvbm5lY3Rpb25zIiwibW9uZXRpemF0aW9uIiwiZW50aXRsZW1lbnRzIiwiZXhjbHVkZUVuZGVkIiwic2t1SWRzIiwiZW50aXRsZW1lbnQiLCJlbnRpdGxlbWVudElkIiwiY29uc3VtZUVudGl0bGVtZW50Iiwic2t1cyIsInN1YnNjcmlwdGlvbiIsInNrdUlkIiwic3Vic2NyaXB0aW9uSWQiLCJzdWJzY3JpcHRpb25zIiwic291bmRib2FyZCIsInNlbmRTb3VuZCIsImxpc3REZWZhdWx0IiwiZ3VpbGRTb3VuZHMiLCJndWlsZFNvdW5kIiwic291bmRJZCIsImxvYmJ5IiwiY3JlYXRlIiwibG9iYnlJZCIsImxpbmsiLCJtZW1iZXJzQnVsayIsIm1vZGVyYXRpb25NZXRhZGF0YSIsImludml0ZVNlbGYiLCJpbnZpdGVVc2VyIiwiYXBwbGljYXRpb25FbW9qaSIsImFwcGxpY2F0aW9uRW1vamlzIiwiYXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbk1ldGFkYXRhIiwiYXBwbGljYXRpb25BY3Rpdml0eUluc3RhbmNlIiwiaW5zdGFuY2VJZCIsImN1cnJlbnRVc2VyIiwiZ2F0ZXdheUJvdCIsInN0aWNrZXJQYWNrIiwic3RpY2tlclBhY2tJZCIsInN0aWNrZXJQYWNrcyIsInVyaUNvbXBvbmVudCIsInRlc3QiXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLGdCQUFnQixFQUFFQyxrQkFBa0IsRUFBRUMsbUJBQW1CLEVBQUVDLG1CQUFtQixFQUFFQyxrQkFBa0IsUUFBUSxvQkFBb0I7QUFHdkk7Ozs7O0NBS0MsR0FDRCxPQUFPLFNBQVNDLGFBQWFDLG1CQUE0QixLQUFLO0lBQzVELE1BQU1DLFNBQWlDRCxtQkFBbUIsQ0FBQ0UsSUFB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
|