@discordeno/rest 19.0.0-next.e2d86ea → 19.0.0-next.e30e5a2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +15 -1
  2. package/dist/cjs/index.cjs +25 -0
  3. package/dist/cjs/invalidBucket.cjs +87 -0
  4. package/dist/cjs/manager.cjs +1446 -0
  5. package/dist/cjs/queue.cjs +166 -0
  6. package/dist/cjs/routes.cjs +582 -0
  7. package/dist/cjs/types.cjs +6 -0
  8. package/dist/cjs/typings/routes.cjs +6 -0
  9. package/dist/esm/index.js +8 -0
  10. package/dist/esm/invalidBucket.js +83 -0
  11. package/dist/esm/manager.js +1404 -0
  12. package/dist/esm/queue.js +156 -0
  13. package/dist/esm/routes.js +572 -0
  14. package/dist/esm/types.js +3 -0
  15. package/dist/esm/typings/routes.js +3 -0
  16. package/dist/types/index.d.ts.map +1 -0
  17. package/dist/{invalidBucket.d.ts → types/invalidBucket.d.ts} +5 -0
  18. package/dist/types/invalidBucket.d.ts.map +1 -0
  19. package/dist/types/manager.d.ts.map +1 -0
  20. package/dist/{queue.d.ts → types/queue.d.ts} +12 -1
  21. package/dist/types/queue.d.ts.map +1 -0
  22. package/dist/types/routes.d.ts.map +1 -0
  23. package/dist/{types.d.ts → types/types.d.ts} +448 -109
  24. package/dist/types/types.d.ts.map +1 -0
  25. package/dist/{typings → types/typings}/routes.d.ts +46 -5
  26. package/dist/types/typings/routes.d.ts.map +1 -0
  27. package/package.json +30 -25
  28. package/dist/index.d.ts.map +0 -1
  29. package/dist/index.js +0 -8
  30. package/dist/index.js.map +0 -1
  31. package/dist/invalidBucket.d.ts.map +0 -1
  32. package/dist/invalidBucket.js +0 -82
  33. package/dist/invalidBucket.js.map +0 -1
  34. package/dist/manager.d.ts.map +0 -1
  35. package/dist/manager.js +0 -1112
  36. package/dist/manager.js.map +0 -1
  37. package/dist/queue.d.ts.map +0 -1
  38. package/dist/queue.js +0 -153
  39. package/dist/queue.js.map +0 -1
  40. package/dist/routes.d.ts.map +0 -1
  41. package/dist/routes.js +0 -487
  42. package/dist/routes.js.map +0 -1
  43. package/dist/types.d.ts.map +0 -1
  44. package/dist/types.js +0 -3
  45. package/dist/types.js.map +0 -1
  46. package/dist/typings/routes.d.ts.map +0 -1
  47. package/dist/typings/routes.js +0 -3
  48. package/dist/typings/routes.js.map +0 -1
  49. /package/dist/{index.d.ts → types/index.d.ts} +0 -0
  50. /package/dist/{manager.d.ts → types/manager.d.ts} +0 -0
  51. /package/dist/{routes.d.ts → types/routes.d.ts} +0 -0
@@ -0,0 +1,572 @@
1
+ import { isGetMessagesAfter, isGetMessagesAround, isGetMessagesBefore, isGetMessagesLimit } from '@discordeno/utils';
2
+ export function createRoutes() {
3
+ return {
4
+ webhooks: {
5
+ id: (webhookId)=>{
6
+ return `/webhooks/${webhookId}`;
7
+ },
8
+ message: (webhookId, token, messageId, options)=>{
9
+ let url = `/webhooks/${webhookId}/${token}/messages/${messageId}?`;
10
+ if (options) {
11
+ if (options.threadId) url += `thread_id=${options.threadId}`;
12
+ }
13
+ return url;
14
+ },
15
+ original: (webhookId, token, options)=>{
16
+ let url = `/webhooks/${webhookId}/${token}/messages/@original?`;
17
+ if (options) {
18
+ if (options.threadId) url += `thread_id=${options.threadId}`;
19
+ }
20
+ return url;
21
+ },
22
+ webhook: (webhookId, token, options)=>{
23
+ let url = `/webhooks/${webhookId}/${token}?`;
24
+ if (options) {
25
+ if (options?.wait !== undefined) url += `wait=${options.wait.toString()}`;
26
+ if (options.threadId) url += `thread_id=${options.threadId}`;
27
+ }
28
+ return url;
29
+ }
30
+ },
31
+ // Channel Endpoints
32
+ channels: {
33
+ bulk: (channelId)=>{
34
+ return `/channels/${channelId}/messages/bulk-delete`;
35
+ },
36
+ dm: ()=>{
37
+ return '/users/@me/channels';
38
+ },
39
+ dmRecipient: (channelId, userId)=>{
40
+ return `/channels/${channelId}/recipients/${userId}`;
41
+ },
42
+ pin: (channelId, messageId)=>{
43
+ return `/channels/${channelId}/pins/${messageId}`;
44
+ },
45
+ pins: (channelId)=>{
46
+ return `/channels/${channelId}/pins`;
47
+ },
48
+ reactions: {
49
+ bot: (channelId, messageId, emoji)=>{
50
+ return `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}/@me`;
51
+ },
52
+ user: (channelId, messageId, emoji, userId)=>{
53
+ return `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}/${userId}`;
54
+ },
55
+ all: (channelId, messageId)=>{
56
+ return `/channels/${channelId}/messages/${messageId}/reactions`;
57
+ },
58
+ emoji: (channelId, messageId, emoji, options)=>{
59
+ let url = `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}?`;
60
+ if (options) {
61
+ if (options.type) url += `type=${options.type}`;
62
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
63
+ if (options.after) url += `&after=${options.after}`;
64
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
65
+ if (options.limit) url += `&limit=${options.limit}`;
66
+ }
67
+ return url;
68
+ },
69
+ message: (channelId, messageId, emoji, options)=>{
70
+ let url = `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}?`;
71
+ if (options) {
72
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
73
+ if (options.after) url += `after=${options.after}`;
74
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
75
+ if (options.limit) url += `&limit=${options.limit}`;
76
+ }
77
+ return url;
78
+ }
79
+ },
80
+ webhooks: (channelId)=>{
81
+ return `/channels/${channelId}/webhooks`;
82
+ },
83
+ channel: (channelId)=>{
84
+ return `/channels/${channelId}`;
85
+ },
86
+ follow: (channelId)=>{
87
+ return `/channels/${channelId}/followers`;
88
+ },
89
+ forum: (channelId)=>{
90
+ return `/channels/${channelId}/threads`;
91
+ },
92
+ invites: (channelId)=>{
93
+ return `/channels/${channelId}/invites`;
94
+ },
95
+ message: (channelId, messageId)=>{
96
+ return `/channels/${channelId}/messages/${messageId}`;
97
+ },
98
+ messages: (channelId, options)=>{
99
+ let url = `/channels/${channelId}/messages?`;
100
+ if (options) {
101
+ if (isGetMessagesAfter(options) && options.after) {
102
+ url += `after=${options.after}`;
103
+ }
104
+ if (isGetMessagesBefore(options) && options.before) {
105
+ url += `&before=${options.before}`;
106
+ }
107
+ if (isGetMessagesAround(options) && options.around) {
108
+ url += `&around=${options.around}`;
109
+ }
110
+ if (isGetMessagesLimit(options) && options.limit) {
111
+ url += `&limit=${options.limit}`;
112
+ }
113
+ }
114
+ return url;
115
+ },
116
+ overwrite: (channelId, overwriteId)=>{
117
+ return `/channels/${channelId}/permissions/${overwriteId}`;
118
+ },
119
+ crosspost: (channelId, messageId)=>{
120
+ return `/channels/${channelId}/messages/${messageId}/crosspost`;
121
+ },
122
+ stages: ()=>{
123
+ return '/stage-instances';
124
+ },
125
+ stage: (channelId)=>{
126
+ return `/stage-instances/${channelId}`;
127
+ },
128
+ // Thread Endpoints
129
+ threads: {
130
+ message: (channelId, messageId)=>{
131
+ return `/channels/${channelId}/messages/${messageId}/threads`;
132
+ },
133
+ all: (channelId)=>{
134
+ return `/channels/${channelId}/threads`;
135
+ },
136
+ active: (guildId)=>{
137
+ return `/guilds/${guildId}/threads/active`;
138
+ },
139
+ members: (channelId)=>{
140
+ return `/channels/${channelId}/thread-members`;
141
+ },
142
+ me: (channelId)=>{
143
+ return `/channels/${channelId}/thread-members/@me`;
144
+ },
145
+ user: (channelId, userId)=>{
146
+ return `/channels/${channelId}/thread-members/${userId}`;
147
+ },
148
+ archived: (channelId)=>{
149
+ return `/channels/${channelId}/threads/archived`;
150
+ },
151
+ public: (channelId, options)=>{
152
+ let url = `/channels/${channelId}/threads/archived/public?`;
153
+ if (options) {
154
+ if (options.before) {
155
+ url += `before=${new Date(options.before).toISOString()}`;
156
+ }
157
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
158
+ if (options.limit) url += `&limit=${options.limit}`;
159
+ }
160
+ return url;
161
+ },
162
+ private: (channelId, options)=>{
163
+ let url = `/channels/${channelId}/threads/archived/private?`;
164
+ if (options) {
165
+ if (options.before) {
166
+ url += `before=${new Date(options.before).toISOString()}`;
167
+ }
168
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
169
+ if (options.limit) url += `&limit=${options.limit}`;
170
+ }
171
+ return url;
172
+ },
173
+ joined: (channelId, options)=>{
174
+ let url = `/channels/${channelId}/users/@me/threads/archived/private?`;
175
+ if (options) {
176
+ if (options.before) {
177
+ url += `before=${new Date(options.before).toISOString()}`;
178
+ }
179
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
180
+ if (options.limit) url += `&limit=${options.limit}`;
181
+ }
182
+ return url;
183
+ }
184
+ },
185
+ typing: (channelId)=>{
186
+ return `/channels/${channelId}/typing`;
187
+ },
188
+ polls: {
189
+ votes: (channelId, messageId, answerId, options)=>{
190
+ let url = `/channels/${channelId}/polls/${messageId}/answers/${answerId}?`;
191
+ if (options) {
192
+ if (options.after) url += `after=${options.after}`;
193
+ if (options.limit) url += `&limit=${options.limit}`;
194
+ }
195
+ return url;
196
+ },
197
+ expire: (channelId, messageId)=>{
198
+ return `/channels/${channelId}/polls/${messageId}/expire`;
199
+ }
200
+ }
201
+ },
202
+ // Guild Endpoints
203
+ guilds: {
204
+ all: ()=>{
205
+ return '/guilds';
206
+ },
207
+ userGuilds: (options)=>{
208
+ let url = '/users/@me/guilds?';
209
+ if (options) {
210
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
211
+ if (options.after) url += `after=${options.after}`;
212
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
213
+ if (options.before) url += `&before=${options.before}`;
214
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
215
+ if (options.limit) url += `&limit=${options.limit}`;
216
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
217
+ if (options.withCounts) url += `&with_counts=${options.withCounts}`;
218
+ }
219
+ return url;
220
+ },
221
+ auditlogs: (guildId, options)=>{
222
+ let url = `/guilds/${guildId}/audit-logs?`;
223
+ if (options) {
224
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
225
+ if (options.actionType) url += `action_type=${options.actionType}`;
226
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
227
+ if (options.before) url += `&before=${options.before}`;
228
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
229
+ if (options.after) url += `&after=${options.after}`;
230
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
231
+ if (options.limit) url += `&limit=${options.limit}`;
232
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
233
+ if (options.userId) url += `&user_id=${options.userId}`;
234
+ }
235
+ return url;
236
+ },
237
+ automod: {
238
+ rule: (guildId, ruleId)=>{
239
+ return `/guilds/${guildId}/auto-moderation/rules/${ruleId}`;
240
+ },
241
+ rules: (guildId)=>{
242
+ return `/guilds/${guildId}/auto-moderation/rules`;
243
+ }
244
+ },
245
+ channels: (guildId)=>{
246
+ return `/guilds/${guildId}/channels`;
247
+ },
248
+ emoji: (guildId, emojiId)=>{
249
+ return `/guilds/${guildId}/emojis/${emojiId}`;
250
+ },
251
+ emojis: (guildId)=>{
252
+ return `/guilds/${guildId}/emojis`;
253
+ },
254
+ events: {
255
+ events: (guildId, withUserCount)=>{
256
+ let url = `/guilds/${guildId}/scheduled-events?`;
257
+ if (withUserCount !== undefined) {
258
+ url += `with_user_count=${withUserCount.toString()}`;
259
+ }
260
+ return url;
261
+ },
262
+ event: (guildId, eventId, withUserCount)=>{
263
+ let url = `/guilds/${guildId}/scheduled-events/${eventId}`;
264
+ if (withUserCount !== undefined) {
265
+ url += `with_user_count=${withUserCount.toString()}`;
266
+ }
267
+ return url;
268
+ },
269
+ users: (guildId, eventId, options)=>{
270
+ let url = `/guilds/${guildId}/scheduled-events/${eventId}/users?`;
271
+ if (options) {
272
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
273
+ if (options.limit !== undefined) url += `limit=${options.limit}`;
274
+ if (options.withMember !== undefined) {
275
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
276
+ url += `&with_member=${options.withMember.toString()}`;
277
+ }
278
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
279
+ if (options.after !== undefined) url += `&after=${options.after}`;
280
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
281
+ if (options.before !== undefined) url += `&before=${options.before}`;
282
+ }
283
+ return url;
284
+ }
285
+ },
286
+ guild (guildId, withCounts) {
287
+ let url = `/guilds/${guildId}?`;
288
+ if (withCounts !== undefined) {
289
+ url += `with_counts=${withCounts.toString()}`;
290
+ }
291
+ return url;
292
+ },
293
+ integration (guildId, integrationId) {
294
+ return `/guilds/${guildId}/integrations/${integrationId}`;
295
+ },
296
+ integrations: (guildId)=>{
297
+ return `/guilds/${guildId}/integrations?include_applications=true`;
298
+ },
299
+ invite (inviteCode, options) {
300
+ let url = `/invites/${inviteCode}?`;
301
+ if (options) {
302
+ if (options.withCounts !== undefined) {
303
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
304
+ url += `with_counts=${options.withCounts.toString()}`;
305
+ }
306
+ if (options.withExpiration !== undefined) {
307
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
308
+ url += `&with_expiration=${options.withExpiration.toString()}`;
309
+ }
310
+ if (options.scheduledEventId) {
311
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
312
+ url += `&guild_scheduled_event_id=${options.scheduledEventId}`;
313
+ }
314
+ }
315
+ return url;
316
+ },
317
+ invites: (guildId)=>{
318
+ return `/guilds/${guildId}/invites`;
319
+ },
320
+ leave: (guildId)=>{
321
+ return `/users/@me/guilds/${guildId}`;
322
+ },
323
+ members: {
324
+ ban: (guildId, userId)=>{
325
+ return `/guilds/${guildId}/bans/${userId}`;
326
+ },
327
+ bans: (guildId, options)=>{
328
+ let url = `/guilds/${guildId}/bans?`;
329
+ if (options) {
330
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
331
+ if (options.limit) url += `limit=${options.limit}`;
332
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
333
+ if (options.after) url += `&after=${options.after}`;
334
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
335
+ if (options.before) url += `&before=${options.before}`;
336
+ }
337
+ return url;
338
+ },
339
+ bulkBan: (guildId)=>{
340
+ return `/guilds/${guildId}/bulk-ban`;
341
+ },
342
+ bot: (guildId)=>{
343
+ return `/guilds/${guildId}/members/@me`;
344
+ },
345
+ member: (guildId, userId)=>{
346
+ return `/guilds/${guildId}/members/${userId}`;
347
+ },
348
+ currentMember: (guildId)=>{
349
+ return `/users/@me/guilds/${guildId}/member`;
350
+ },
351
+ members: (guildId, options)=>{
352
+ let url = `/guilds/${guildId}/members?`;
353
+ if (options !== undefined) {
354
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
355
+ if (options.limit) url += `limit=${options.limit}`;
356
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
357
+ if (options.after) url += `&after=${options.after}`;
358
+ }
359
+ return url;
360
+ },
361
+ search: (guildId, query, options)=>{
362
+ let url = `/guilds/${guildId}/members/search?query=${encodeURIComponent(query)}`;
363
+ if (options) {
364
+ if (options.limit !== undefined) url += `&limit=${options.limit}`;
365
+ }
366
+ return url;
367
+ },
368
+ prune: (guildId, options)=>{
369
+ let url = `/guilds/${guildId}/prune?`;
370
+ if (options) {
371
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
372
+ if (options.days) url += `days=${options.days}`;
373
+ if (Array.isArray(options.includeRoles)) {
374
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
375
+ url += `&include_roles=${options.includeRoles.join(',')}`;
376
+ } else if (options.includeRoles) {
377
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
378
+ url += `&include_roles=${options.includeRoles}`;
379
+ }
380
+ }
381
+ return url;
382
+ }
383
+ },
384
+ mfa: (guildId)=>`/guilds/${guildId}/mfa`,
385
+ preview: (guildId)=>{
386
+ return `/guilds/${guildId}/preview`;
387
+ },
388
+ prune: (guildId, options)=>{
389
+ let url = `/guilds/${guildId}/prune?`;
390
+ if (options) {
391
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
392
+ if (options.days) url += `days=${options.days}`;
393
+ if (Array.isArray(options.includeRoles)) {
394
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
395
+ url += `&include_roles=${options.includeRoles.join(',')}`;
396
+ } else if (options.includeRoles) {
397
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
398
+ url += `&include_roles=${options.includeRoles}`;
399
+ }
400
+ }
401
+ return url;
402
+ },
403
+ roles: {
404
+ one: (guildId, roleId)=>{
405
+ return `/guilds/${guildId}/roles/${roleId}`;
406
+ },
407
+ all: (guildId)=>{
408
+ return `/guilds/${guildId}/roles`;
409
+ },
410
+ member: (guildId, memberId, roleId)=>{
411
+ return `/guilds/${guildId}/members/${memberId}/roles/${roleId}`;
412
+ }
413
+ },
414
+ stickers: (guildId)=>{
415
+ return `/guilds/${guildId}/stickers`;
416
+ },
417
+ sticker: (guildId, stickerId)=>{
418
+ return `/guilds/${guildId}/stickers/${stickerId}`;
419
+ },
420
+ voice: (guildId, userId)=>{
421
+ return `/guilds/${guildId}/voice-states/${userId ?? '@me'}`;
422
+ },
423
+ templates: {
424
+ code: (code)=>{
425
+ return `/guilds/templates/${code}`;
426
+ },
427
+ guild: (guildId, code)=>{
428
+ return `/guilds/${guildId}/templates/${code}`;
429
+ },
430
+ all: (guildId)=>{
431
+ return `/guilds/${guildId}/templates`;
432
+ }
433
+ },
434
+ vanity: (guildId)=>{
435
+ return `/guilds/${guildId}/vanity-url`;
436
+ },
437
+ regions: (guildId)=>{
438
+ return `/guilds/${guildId}/regions`;
439
+ },
440
+ webhooks: (guildId)=>{
441
+ return `/guilds/${guildId}/webhooks`;
442
+ },
443
+ welcome: (guildId)=>{
444
+ return `/guilds/${guildId}/welcome-screen`;
445
+ },
446
+ widget: (guildId)=>{
447
+ return `/guilds/${guildId}/widget`;
448
+ },
449
+ widgetJson: (guildId)=>{
450
+ return `/guilds/${guildId}/widget.json`;
451
+ },
452
+ onboarding: (guildId)=>{
453
+ return `/guilds/${guildId}/onboarding`;
454
+ }
455
+ },
456
+ sticker: (stickerId)=>{
457
+ return `/stickers/${stickerId}`;
458
+ },
459
+ regions: ()=>{
460
+ return '/voice/regions';
461
+ },
462
+ // Interaction Endpoints
463
+ interactions: {
464
+ commands: {
465
+ // Application Endpoints
466
+ commands: (applicationId)=>{
467
+ return `/applications/${applicationId}/commands`;
468
+ },
469
+ guilds: {
470
+ all (applicationId, guildId) {
471
+ return `/applications/${applicationId}/guilds/${guildId}/commands`;
472
+ },
473
+ one (applicationId, guildId, commandId, withLocalizations) {
474
+ let url = `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}?`;
475
+ if (withLocalizations !== undefined) {
476
+ url += `with_localizations=${withLocalizations.toString()}`;
477
+ }
478
+ return url;
479
+ }
480
+ },
481
+ permissions: (applicationId, guildId)=>{
482
+ return `/applications/${applicationId}/guilds/${guildId}/commands/permissions`;
483
+ },
484
+ permission: (applicationId, guildId, commandId)=>{
485
+ return `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}/permissions`;
486
+ },
487
+ command: (applicationId, commandId, withLocalizations)=>{
488
+ let url = `/applications/${applicationId}/commands/${commandId}?`;
489
+ if (withLocalizations !== undefined) {
490
+ url += `withLocalizations=${withLocalizations.toString()}`;
491
+ }
492
+ return url;
493
+ }
494
+ },
495
+ responses: {
496
+ // Interaction Endpoints
497
+ callback: (interactionId, token)=>{
498
+ return `/interactions/${interactionId}/${token}/callback`;
499
+ },
500
+ original: (interactionId, token)=>{
501
+ return `/webhooks/${interactionId}/${token}/messages/@original`;
502
+ },
503
+ message: (applicationId, token, messageId)=>{
504
+ return `/webhooks/${applicationId}/${token}/messages/${messageId}`;
505
+ }
506
+ }
507
+ },
508
+ // OAuth2 endpoints
509
+ oauth2: {
510
+ tokenExchange: ()=>{
511
+ return '/oauth2/token';
512
+ },
513
+ tokenRevoke: ()=>{
514
+ return '/oauth2/token/revoke';
515
+ },
516
+ currentAuthorization: ()=>{
517
+ return '/oauth2/@me';
518
+ },
519
+ application: ()=>{
520
+ return '/oauth2/applications/@me';
521
+ },
522
+ connections: ()=>{
523
+ return '/users/@me/connections';
524
+ },
525
+ roleConnections: (applicationId)=>{
526
+ return `/users/@me/applications/${applicationId}/role-connection`;
527
+ }
528
+ },
529
+ monetization: {
530
+ entitlements: (applicationId, options)=>{
531
+ let url = `/applications/${applicationId}/entitlements?`;
532
+ if (options) {
533
+ if (options.after) url += `after=${options.after}`;
534
+ if (options.before) url += `&before=${options.before}`;
535
+ if (options.excludeEnded) url += `&exclude_ended=${options.excludeEnded}`;
536
+ if (options.guildId) url += `&guild_id=${options.guildId}`;
537
+ if (options.limit) url += `&limit=${options.limit}`;
538
+ if (options.skuIds) url += `&sku_ids=${options.skuIds.join(',')}`;
539
+ if (options.userId) url += `&user_id=${options.userId}`;
540
+ }
541
+ return url;
542
+ },
543
+ entitlement: (applicationId, entitlementId)=>{
544
+ return `/applications/${applicationId}/entitlements/${entitlementId}`;
545
+ },
546
+ consumeEntitlement: (applicationId, entitlementId)=>{
547
+ return `/applications/${applicationId}/entitlements/${entitlementId}/consume`;
548
+ },
549
+ skus: (applicationId)=>{
550
+ return `/applications/${applicationId}/skus`;
551
+ }
552
+ },
553
+ // User endpoints
554
+ user (userId) {
555
+ return `/users/${userId}`;
556
+ },
557
+ application () {
558
+ return '/applications/@me';
559
+ },
560
+ currentUser () {
561
+ return '/users/@me';
562
+ },
563
+ gatewayBot () {
564
+ return '/gateway/bot';
565
+ },
566
+ stickerPacks () {
567
+ return '/sticker-packs';
568
+ }
569
+ };
570
+ }
571
+
572
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb3V0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBHZXRNZXNzYWdlc09wdGlvbnMsIEdldFNjaGVkdWxlZEV2ZW50VXNlcnMgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IGlzR2V0TWVzc2FnZXNBZnRlciwgaXNHZXRNZXNzYWdlc0Fyb3VuZCwgaXNHZXRNZXNzYWdlc0JlZm9yZSwgaXNHZXRNZXNzYWdlc0xpbWl0IH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IFJlc3RSb3V0ZXMgfSBmcm9tICcuL3R5cGluZ3Mvcm91dGVzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUm91dGVzKCk6IFJlc3RSb3V0ZXMge1xuICByZXR1cm4ge1xuICAgIHdlYmhvb2tzOiB7XG4gICAgICBpZDogKHdlYmhvb2tJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC93ZWJob29rcy8ke3dlYmhvb2tJZH1gXG4gICAgICB9LFxuICAgICAgbWVzc2FnZTogKHdlYmhvb2tJZCwgdG9rZW4sIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC93ZWJob29rcy8ke3dlYmhvb2tJZH0vJHt0b2tlbn0vbWVzc2FnZXMvJHttZXNzYWdlSWR9P2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLnRocmVhZElkKSB1cmwgKz0gYHRocmVhZF9pZD0ke29wdGlvbnMudGhyZWFkSWR9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIG9yaWdpbmFsOiAod2ViaG9va0lkLCB0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC93ZWJob29rcy8ke3dlYmhvb2tJZH0vJHt0b2tlbn0vbWVzc2FnZXMvQG9yaWdpbmFsP2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLnRocmVhZElkKSB1cmwgKz0gYHRocmVhZF9pZD0ke29wdGlvbnMudGhyZWFkSWR9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIHdlYmhvb2s6ICh3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL3dlYmhvb2tzLyR7d2ViaG9va0lkfS8ke3Rva2VufT9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucz8ud2FpdCAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYHdhaXQ9JHtvcHRpb25zLndhaXQudG9TdHJpbmcoKX1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMudGhyZWFkSWQpIHVybCArPSBgdGhyZWFkX2lkPSR7b3B0aW9ucy50aHJlYWRJZH1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBDaGFubmVsIEVuZHBvaW50c1xuICAgIGNoYW5uZWxzOiB7XG4gICAgICBidWxrOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcy9idWxrLWRlbGV0ZWBcbiAgICAgIH0sXG4gICAgICBkbTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy91c2Vycy9AbWUvY2hhbm5lbHMnXG4gICAgICB9LFxuICAgICAgZG1SZWNpcGllbnQ6IChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vcmVjaXBpZW50cy8ke3VzZXJJZH1gXG4gICAgICB9LFxuICAgICAgcGluOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3BpbnMvJHttZXNzYWdlSWR9YFxuICAgICAgfSxcbiAgICAgIHBpbnM6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3BpbnNgXG4gICAgICB9LFxuICAgICAgcmVhY3Rpb25zOiB7XG4gICAgICAgIGJvdDogKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBlbW9qaSkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcy8ke21lc3NhZ2VJZH0vcmVhY3Rpb25zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGVtb2ppKX0vQG1lYFxuICAgICAgICB9LFxuICAgICAgICB1c2VyOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIGVtb2ppLCB1c2VySWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9LyR7dXNlcklkfWBcbiAgICAgICAgfSxcbiAgICAgICAgYWxsOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9uc2BcbiAgICAgICAgfSxcbiAgICAgICAgZW1vamk6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9P2BcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy50eXBlKSB1cmwgKz0gYHR5cGU9JHtvcHRpb25zLnR5cGV9YFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgJmFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICAgIG1lc3NhZ2U6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9P2BcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHdlYmhvb2tzOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS93ZWJob29rc2BcbiAgICAgIH0sXG5cbiAgICAgIGNoYW5uZWw6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9YFxuICAgICAgfSxcblxuICAgICAgZm9sbG93OiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9mb2xsb3dlcnNgXG4gICAgICB9LFxuXG4gICAgICBmb3J1bTogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdGhyZWFkc2BcbiAgICAgIH0sXG5cbiAgICAgIGludml0ZXM6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L2ludml0ZXNgXG4gICAgICB9LFxuXG4gICAgICBtZXNzYWdlOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfWBcbiAgICAgIH0sXG5cbiAgICAgIG1lc3NhZ2VzOiAoY2hhbm5lbElkLCBvcHRpb25zPzogR2V0TWVzc2FnZXNPcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcz9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAoaXNHZXRNZXNzYWdlc0FmdGVyKG9wdGlvbnMpICYmIG9wdGlvbnMuYWZ0ZXIpIHtcbiAgICAgICAgICAgIHVybCArPSBgYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNCZWZvcmUob3B0aW9ucykgJiYgb3B0aW9ucy5iZWZvcmUpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmJlZm9yZT0ke29wdGlvbnMuYmVmb3JlfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNBcm91bmQob3B0aW9ucykgJiYgb3B0aW9ucy5hcm91bmQpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmFyb3VuZD0ke29wdGlvbnMuYXJvdW5kfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNMaW1pdChvcHRpb25zKSAmJiBvcHRpb25zLmxpbWl0KSB7XG4gICAgICAgICAgICB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG5cbiAgICAgIG92ZXJ3cml0ZTogKGNoYW5uZWxJZCwgb3ZlcndyaXRlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3Blcm1pc3Npb25zLyR7b3ZlcndyaXRlSWR9YFxuICAgICAgfSxcblxuICAgICAgY3Jvc3Nwb3N0OiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfS9jcm9zc3Bvc3RgXG4gICAgICB9LFxuXG4gICAgICBzdGFnZXM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvc3RhZ2UtaW5zdGFuY2VzJ1xuICAgICAgfSxcblxuICAgICAgc3RhZ2U6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvc3RhZ2UtaW5zdGFuY2VzLyR7Y2hhbm5lbElkfWBcbiAgICAgIH0sXG5cbiAgICAgIC8vIFRocmVhZCBFbmRwb2ludHNcbiAgICAgIHRocmVhZHM6IHtcbiAgICAgICAgbWVzc2FnZTogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfS90aHJlYWRzYFxuICAgICAgICB9LFxuICAgICAgICBhbGw6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdGhyZWFkc2BcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZlOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3RocmVhZHMvYWN0aXZlYFxuICAgICAgICB9LFxuICAgICAgICBtZW1iZXJzOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZC1tZW1iZXJzYFxuICAgICAgICB9LFxuICAgICAgICBtZTogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWQtbWVtYmVycy9AbWVgXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXI6IChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWQtbWVtYmVycy8ke3VzZXJJZH1gXG4gICAgICAgIH0sXG4gICAgICAgIGFyY2hpdmVkOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZHMvYXJjaGl2ZWRgXG4gICAgICAgIH0sXG4gICAgICAgIHB1YmxpYzogKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWRzL2FyY2hpdmVkL3B1YmxpYz9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7bmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBwcml2YXRlOiAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZHMvYXJjaGl2ZWQvcHJpdmF0ZT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7bmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBqb2luZWQ6IChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdXNlcnMvQG1lL3RocmVhZHMvYXJjaGl2ZWQvcHJpdmF0ZT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7bmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgdHlwaW5nOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90eXBpbmdgXG4gICAgICB9LFxuXG4gICAgICBwb2xsczoge1xuICAgICAgICB2b3RlczogKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBhbnN3ZXJJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9wb2xscy8ke21lc3NhZ2VJZH0vYW5zd2Vycy8ke2Fuc3dlcklkfT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwaXJlOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vcG9sbHMvJHttZXNzYWdlSWR9L2V4cGlyZWBcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIEd1aWxkIEVuZHBvaW50c1xuICAgIGd1aWxkczoge1xuICAgICAgYWxsOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL2d1aWxkcydcbiAgICAgIH0sXG4gICAgICB1c2VyR3VpbGRzOiAob3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gJy91c2Vycy9AbWUvZ3VpbGRzPydcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHVybCArPSBgJmJlZm9yZT0ke29wdGlvbnMuYmVmb3JlfWBcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIGlmIChvcHRpb25zLndpdGhDb3VudHMpIHVybCArPSBgJndpdGhfY291bnRzPSR7b3B0aW9ucy53aXRoQ291bnRzfWBcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG4gICAgICBhdWRpdGxvZ3M6IChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L2F1ZGl0LWxvZ3M/YFxuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIGlmIChvcHRpb25zLmFjdGlvblR5cGUpIHVybCArPSBgYWN0aW9uX3R5cGU9JHtvcHRpb25zLmFjdGlvblR5cGV9YFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHVybCArPSBgJmJlZm9yZT0ke29wdGlvbnMuYmVmb3JlfWBcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgJmFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy51c2VySWQpIHVybCArPSBgJnVzZXJfaWQ9JHtvcHRpb25zLnVzZXJJZH1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgICAgYXV0b21vZDoge1xuICAgICAgICBydWxlOiAoZ3VpbGRJZCwgcnVsZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYXV0by1tb2RlcmF0aW9uL3J1bGVzLyR7cnVsZUlkfWBcbiAgICAgICAgfSxcbiAgICAgICAgcnVsZXM6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYXV0by1tb2RlcmF0aW9uL3J1bGVzYFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNoYW5uZWxzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9jaGFubmVsc2BcbiAgICAgIH0sXG4gICAgICBlbW9qaTogKGd1aWxkSWQsIGVtb2ppSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vZW1vamlzLyR7ZW1vamlJZH1gXG4gICAgICB9LFxuICAgICAgZW1vamlzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9lbW9qaXNgXG4gICAgICB9LFxuICAgICAgZXZlbnRzOiB7XG4gICAgICAgIGV2ZW50czogKGd1aWxkSWQsIHdpdGhVc2VyQ291bnQ/OiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vc2NoZWR1bGVkLWV2ZW50cz9gXG5cbiAgICAgICAgICBpZiAod2l0aFVzZXJDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB1cmwgKz0gYHdpdGhfdXNlcl9jb3VudD0ke3dpdGhVc2VyQ291bnQudG9TdHJpbmcoKX1gXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnQ6IChndWlsZElkLCBldmVudElkLCB3aXRoVXNlckNvdW50PzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L3NjaGVkdWxlZC1ldmVudHMvJHtldmVudElkfWBcblxuICAgICAgICAgIGlmICh3aXRoVXNlckNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgd2l0aF91c2VyX2NvdW50PSR7d2l0aFVzZXJDb3VudC50b1N0cmluZygpfWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXJzOiAoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucz86IEdldFNjaGVkdWxlZEV2ZW50VXNlcnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtndWlsZElkfS9zY2hlZHVsZWQtZXZlbnRzLyR7ZXZlbnRJZH0vdXNlcnM/YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0ICE9PSB1bmRlZmluZWQpIHVybCArPSBgbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICAgIGlmIChvcHRpb25zLndpdGhNZW1iZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICAgIHVybCArPSBgJndpdGhfbWVtYmVyPSR7b3B0aW9ucy53aXRoTWVtYmVyLnRvU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIgIT09IHVuZGVmaW5lZCkgdXJsICs9IGAmYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYCZiZWZvcmU9JHtvcHRpb25zLmJlZm9yZX1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGd1aWxkKGd1aWxkSWQsIHdpdGhDb3VudHMpIHtcbiAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0/YFxuXG4gICAgICAgIGlmICh3aXRoQ291bnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB1cmwgKz0gYHdpdGhfY291bnRzPSR7d2l0aENvdW50cy50b1N0cmluZygpfWBcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG4gICAgICBpbnRlZ3JhdGlvbihndWlsZElkLCBpbnRlZ3JhdGlvbklkKSB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2ludGVncmF0aW9ucy8ke2ludGVncmF0aW9uSWR9YFxuICAgICAgfSxcbiAgICAgIGludGVncmF0aW9uczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vaW50ZWdyYXRpb25zP2luY2x1ZGVfYXBwbGljYXRpb25zPXRydWVgXG4gICAgICB9LFxuICAgICAgaW52aXRlKGludml0ZUNvZGUsIG9wdGlvbnMpIHtcbiAgICAgICAgbGV0IHVybCA9IGAvaW52aXRlcy8ke2ludml0ZUNvZGV9P2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLndpdGhDb3VudHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgdXJsICs9IGB3aXRoX2NvdW50cz0ke29wdGlvbnMud2l0aENvdW50cy50b1N0cmluZygpfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9wdGlvbnMud2l0aEV4cGlyYXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgdXJsICs9IGAmd2l0aF9leHBpcmF0aW9uPSR7b3B0aW9ucy53aXRoRXhwaXJhdGlvbi50b1N0cmluZygpfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9wdGlvbnMuc2NoZWR1bGVkRXZlbnRJZCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgdXJsICs9IGAmZ3VpbGRfc2NoZWR1bGVkX2V2ZW50X2lkPSR7b3B0aW9ucy5zY2hlZHVsZWRFdmVudElkfWBcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgICAgaW52aXRlczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vaW52aXRlc2BcbiAgICAgIH0sXG4gICAgICBsZWF2ZTogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvdXNlcnMvQG1lL2d1aWxkcy8ke2d1aWxkSWR9YFxuICAgICAgfSxcbiAgICAgIG1lbWJlcnM6IHtcbiAgICAgICAgYmFuOiAoZ3VpbGRJZCwgdXNlcklkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYmFucy8ke3VzZXJJZH1gXG4gICAgICAgIH0sXG4gICAgICAgIGJhbnM6IChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYmFucz9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYCZhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYCZiZWZvcmU9JHtvcHRpb25zLmJlZm9yZX1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBidWxrQmFuOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2J1bGstYmFuYFxuICAgICAgICB9LFxuICAgICAgICBib3Q6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vbWVtYmVycy9AbWVgXG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlcjogKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L21lbWJlcnMvJHt1c2VySWR9YFxuICAgICAgICB9LFxuICAgICAgICBjdXJyZW50TWVtYmVyOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL3VzZXJzL0BtZS9ndWlsZHMvJHtndWlsZElkfS9tZW1iZXJgXG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlcnM6IChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vbWVtYmVycz9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGBsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgJmFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBzZWFyY2g6IChndWlsZElkLCBxdWVyeSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L21lbWJlcnMvc2VhcmNoP3F1ZXJ5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5KX1gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQgIT09IHVuZGVmaW5lZCkgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICAgIHBydW5lOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L3BydW5lP2BcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5kYXlzKSB1cmwgKz0gYGRheXM9JHtvcHRpb25zLmRheXN9YFxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy5pbmNsdWRlUm9sZXMpKSB7XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke29wdGlvbnMuaW5jbHVkZVJvbGVzLmpvaW4oJywnKX1gXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuaW5jbHVkZVJvbGVzKSB7XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke29wdGlvbnMuaW5jbHVkZVJvbGVzfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWZhOiAoZ3VpbGRJZCkgPT4gYC9ndWlsZHMvJHtndWlsZElkfS9tZmFgLFxuICAgICAgcHJldmlldzogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vcHJldmlld2BcbiAgICAgIH0sXG4gICAgICBwcnVuZTogKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vcHJ1bmU/YFxuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIGlmIChvcHRpb25zLmRheXMpIHVybCArPSBgZGF5cz0ke29wdGlvbnMuZGF5c31gXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy5pbmNsdWRlUm9sZXMpKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICB1cmwgKz0gYCZpbmNsdWRlX3JvbGVzPSR7b3B0aW9ucy5pbmNsdWRlUm9sZXMuam9pbignLCcpfWBcbiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuaW5jbHVkZVJvbGVzKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICB1cmwgKz0gYCZpbmNsdWRlX3JvbGVzPSR7b3B0aW9ucy5pbmNsdWRlUm9sZXN9YFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG4gICAgICByb2xlczoge1xuICAgICAgICBvbmU6IChndWlsZElkLCByb2xlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9yb2xlcy8ke3JvbGVJZH1gXG4gICAgICAgIH0sXG4gICAgICAgIGFsbDogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9yb2xlc2BcbiAgICAgICAgfSxcbiAgICAgICAgbWVtYmVyOiAoZ3VpbGRJZCwgbWVtYmVySWQsIHJvbGVJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L21lbWJlcnMvJHttZW1iZXJJZH0vcm9sZXMvJHtyb2xlSWR9YFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0aWNrZXJzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9zdGlja2Vyc2BcbiAgICAgIH0sXG4gICAgICBzdGlja2VyOiAoZ3VpbGRJZCwgc3RpY2tlcklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3N0aWNrZXJzLyR7c3RpY2tlcklkfWBcbiAgICAgIH0sXG4gICAgICB2b2ljZTogKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS92b2ljZS1zdGF0ZXMvJHt1c2VySWQgPz8gJ0BtZSd9YFxuICAgICAgfSxcbiAgICAgIHRlbXBsYXRlczoge1xuICAgICAgICBjb2RlOiAoY29kZSkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy90ZW1wbGF0ZXMvJHtjb2RlfWBcbiAgICAgICAgfSxcbiAgICAgICAgZ3VpbGQ6IChndWlsZElkLCBjb2RlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vdGVtcGxhdGVzLyR7Y29kZX1gXG4gICAgICAgIH0sXG4gICAgICAgIGFsbDogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS90ZW1wbGF0ZXNgXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmFuaXR5OiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS92YW5pdHktdXJsYFxuICAgICAgfSxcbiAgICAgIHJlZ2lvbnM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3JlZ2lvbnNgXG4gICAgICB9LFxuICAgICAgd2ViaG9va3M6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3dlYmhvb2tzYFxuICAgICAgfSxcbiAgICAgIHdlbGNvbWU6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3dlbGNvbWUtc2NyZWVuYFxuICAgICAgfSxcbiAgICAgIHdpZGdldDogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vd2lkZ2V0YFxuICAgICAgfSxcbiAgICAgIHdpZGdldEpzb246IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3dpZGdldC5qc29uYFxuICAgICAgfSxcbiAgICAgIG9uYm9hcmRpbmc6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L29uYm9hcmRpbmdgXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBzdGlja2VyOiAoc3RpY2tlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYC9zdGlja2Vycy8ke3N0aWNrZXJJZH1gXG4gICAgfSxcblxuICAgIHJlZ2lvbnM6ICgpID0+IHtcbiAgICAgIHJldHVybiAnL3ZvaWNlL3JlZ2lvbnMnXG4gICAgfSxcblxuICAgIC8vIEludGVyYWN0aW9uIEVuZHBvaW50c1xuICAgIGludGVyYWN0aW9uczoge1xuICAgICAgY29tbWFuZHM6IHtcbiAgICAgICAgLy8gQXBwbGljYXRpb24gRW5kcG9pbnRzXG4gICAgICAgIGNvbW1hbmRzOiAoYXBwbGljYXRpb25JZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2NvbW1hbmRzYFxuICAgICAgICB9LFxuXG4gICAgICAgIGd1aWxkczoge1xuICAgICAgICAgIGFsbChhcHBsaWNhdGlvbklkLCBndWlsZElkKSB7XG4gICAgICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9ndWlsZHMvJHtndWlsZElkfS9jb21tYW5kc2BcbiAgICAgICAgICB9LFxuXG4gICAgICAgICAgb25lKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQsIGNvbW1hbmRJZCwgd2l0aExvY2FsaXphdGlvbnMpIHtcbiAgICAgICAgICAgIGxldCB1cmwgPSBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2d1aWxkcy8ke2d1aWxkSWR9L2NvbW1hbmRzLyR7Y29tbWFuZElkfT9gXG5cbiAgICAgICAgICAgIGlmICh3aXRoTG9jYWxpemF0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgd2l0aF9sb2NhbGl6YXRpb25zPSR7d2l0aExvY2FsaXphdGlvbnMudG9TdHJpbmcoKX1gXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uczogKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9ndWlsZHMvJHtndWlsZElkfS9jb21tYW5kcy9wZXJtaXNzaW9uc2BcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbjogKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQsIGNvbW1hbmRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2d1aWxkcy8ke2d1aWxkSWR9L2NvbW1hbmRzLyR7Y29tbWFuZElkfS9wZXJtaXNzaW9uc2BcbiAgICAgICAgfSxcbiAgICAgICAgY29tbWFuZDogKGFwcGxpY2F0aW9uSWQsIGNvbW1hbmRJZCwgd2l0aExvY2FsaXphdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9jb21tYW5kcy8ke2NvbW1hbmRJZH0/YFxuXG4gICAgICAgICAgaWYgKHdpdGhMb2NhbGl6YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgd2l0aExvY2FsaXphdGlvbnM9JHt3aXRoTG9jYWxpemF0aW9ucy50b1N0cmluZygpfWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICB9LFxuXG4gICAgICByZXNwb25zZXM6IHtcbiAgICAgICAgLy8gSW50ZXJhY3Rpb24gRW5kcG9pbnRzXG4gICAgICAgIGNhbGxiYWNrOiAoaW50ZXJhY3Rpb25JZCwgdG9rZW4pID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9pbnRlcmFjdGlvbnMvJHtpbnRlcmFjdGlvbklkfS8ke3Rva2VufS9jYWxsYmFja2BcbiAgICAgICAgfSxcbiAgICAgICAgb3JpZ2luYWw6IChpbnRlcmFjdGlvbklkLCB0b2tlbikgPT4ge1xuICAgICAgICAgIHJldHVybiBgL3dlYmhvb2tzLyR7aW50ZXJhY3Rpb25JZH0vJHt0b2tlbn0vbWVzc2FnZXMvQG9yaWdpbmFsYFxuICAgICAgICB9LFxuICAgICAgICBtZXNzYWdlOiAoYXBwbGljYXRpb25JZCwgdG9rZW4sIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL3dlYmhvb2tzLyR7YXBwbGljYXRpb25JZH0vJHt0b2tlbn0vbWVzc2FnZXMvJHttZXNzYWdlSWR9YFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gT0F1dGgyIGVuZHBvaW50c1xuICAgIG9hdXRoMjoge1xuICAgICAgdG9rZW5FeGNoYW5nZTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvdG9rZW4nXG4gICAgICB9LFxuICAgICAgdG9rZW5SZXZva2U6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvb2F1dGgyL3Rva2VuL3Jldm9rZSdcbiAgICAgIH0sXG4gICAgICBjdXJyZW50QXV0aG9yaXphdGlvbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvQG1lJ1xuICAgICAgfSxcbiAgICAgIGFwcGxpY2F0aW9uOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL29hdXRoMi9hcHBsaWNhdGlvbnMvQG1lJ1xuICAgICAgfSxcbiAgICAgIGNvbm5lY3Rpb25zOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL3VzZXJzL0BtZS9jb25uZWN0aW9ucydcbiAgICAgIH0sXG4gICAgICByb2xlQ29ubmVjdGlvbnM6IChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3VzZXJzL0BtZS9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9yb2xlLWNvbm5lY3Rpb25gXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBtb25ldGl6YXRpb246IHtcbiAgICAgIGVudGl0bGVtZW50czogKGFwcGxpY2F0aW9uSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vZW50aXRsZW1lbnRzP2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYGFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYCZiZWZvcmU9JHtvcHRpb25zLmJlZm9yZX1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMuZXhjbHVkZUVuZGVkKSB1cmwgKz0gYCZleGNsdWRlX2VuZGVkPSR7b3B0aW9ucy5leGNsdWRlRW5kZWR9YFxuICAgICAgICAgIGlmIChvcHRpb25zLmd1aWxkSWQpIHVybCArPSBgJmd1aWxkX2lkPSR7b3B0aW9ucy5ndWlsZElkfWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5za3VJZHMpIHVybCArPSBgJnNrdV9pZHM9JHtvcHRpb25zLnNrdUlkcy5qb2luKCcsJyl9YFxuICAgICAgICAgIGlmIChvcHRpb25zLnVzZXJJZCkgdXJsICs9IGAmdXNlcl9pZD0ke29wdGlvbnMudXNlcklkfWBcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG4gICAgICBlbnRpdGxlbWVudDogKGFwcGxpY2F0aW9uSWQsIGVudGl0bGVtZW50SWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vZW50aXRsZW1lbnRzLyR7ZW50aXRsZW1lbnRJZH1gXG4gICAgICB9LFxuICAgICAgY29uc3VtZUVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZCwgZW50aXRsZW1lbnRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9lbnRpdGxlbWVudHMvJHtlbnRpdGxlbWVudElkfS9jb25zdW1lYFxuICAgICAgfSxcblxuICAgICAgc2t1czogKGFwcGxpY2F0aW9uSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vc2t1c2BcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIFVzZXIgZW5kcG9pbnRzXG4gICAgdXNlcih1c2VySWQpIHtcbiAgICAgIHJldHVybiBgL3VzZXJzLyR7dXNlcklkfWBcbiAgICB9LFxuXG4gICAgYXBwbGljYXRpb24oKSB7XG4gICAgICByZXR1cm4gJy9hcHBsaWNhdGlvbnMvQG1lJ1xuICAgIH0sXG5cbiAgICBjdXJyZW50VXNlcigpIHtcbiAgICAgIHJldHVybiAnL3VzZXJzL0BtZSdcbiAgICB9LFxuXG4gICAgZ2F0ZXdheUJvdCgpIHtcbiAgICAgIHJldHVybiAnL2dhdGV3YXkvYm90J1xuICAgIH0sXG5cbiAgICBzdGlja2VyUGFja3MoKSB7XG4gICAgICByZXR1cm4gJy9zdGlja2VyLXBhY2tzJ1xuICAgIH0sXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJpc0dldE1lc3NhZ2VzQWZ0ZXIiLCJpc0dldE1lc3NhZ2VzQXJvdW5kIiwiaXNHZXRNZXNzYWdlc0JlZm9yZSIsImlzR2V0TWVzc2FnZXNMaW1pdCIsImNyZWF0ZVJvdXRlcyIsIndlYmhvb2tzIiwiaWQiLCJ3ZWJob29rSWQiLCJtZXNzYWdlIiwidG9rZW4iLCJtZXNzYWdlSWQiLCJvcHRpb25zIiwidXJsIiwidGhyZWFkSWQiLCJvcmlnaW5hbCIsIndlYmhvb2siLCJ3YWl0IiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJjaGFubmVscyIsImJ1bGsiLCJjaGFubmVsSWQiLCJkbSIsImRtUmVjaXBpZW50IiwidXNlcklkIiwicGluIiwicGlucyIsInJlYWN0aW9ucyIsImJvdCIsImVtb2ppIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwidXNlciIsImFsbCIsInR5cGUiLCJhZnRlciIsImxpbWl0IiwiY2hhbm5lbCIsImZvbGxvdyIsImZvcnVtIiwiaW52aXRlcyIsIm1lc3NhZ2VzIiwiYmVmb3JlIiwiYXJvdW5kIiwib3ZlcndyaXRlIiwib3ZlcndyaXRlSWQiLCJjcm9zc3Bvc3QiLCJzdGFnZXMiLCJzdGFnZSIsInRocmVhZHMiLCJhY3RpdmUiLCJndWlsZElkIiwibWVtYmVycyIsIm1lIiwiYXJjaGl2ZWQiLCJwdWJsaWMiLCJEYXRlIiwidG9JU09TdHJpbmciLCJwcml2YXRlIiwiam9pbmVkIiwidHlwaW5nIiwicG9sbHMiLCJ2b3RlcyIsImFuc3dlcklkIiwiZXhwaXJlIiwiZ3VpbGRzIiwidXNlckd1aWxkcyIsIndpdGhDb3VudHMiLCJhdWRpdGxvZ3MiLCJhY3Rpb25UeXBlIiwiYXV0b21vZCIsInJ1bGUiLCJydWxlSWQiLCJydWxlcyIsImVtb2ppSWQiLCJlbW9qaXMiLCJldmVudHMiLCJ3aXRoVXNlckNvdW50IiwiZXZlbnQiLCJldmVudElkIiwidXNlcnMiLCJ3aXRoTWVtYmVyIiwiZ3VpbGQiLCJpbnRlZ3JhdGlvbiIsImludGVncmF0aW9uSWQiLCJpbnRlZ3JhdGlvbnMiLCJpbnZpdGUiLCJpbnZpdGVDb2RlIiwid2l0aEV4cGlyYXRpb24iLCJzY2hlZHVsZWRFdmVudElkIiwibGVhdmUiLCJiYW4iLCJiYW5zIiwiYnVsa0JhbiIsIm1lbWJlciIsImN1cnJlbnRNZW1iZXIiLCJzZWFyY2giLCJxdWVyeSIsInBydW5lIiwiZGF5cyIsIkFycmF5IiwiaXNBcnJheSIsImluY2x1ZGVSb2xlcyIsImpvaW4iLCJtZmEiLCJwcmV2aWV3Iiwicm9sZXMiLCJvbmUiLCJyb2xlSWQiLCJtZW1iZXJJZCIsInN0aWNrZXJzIiwic3RpY2tlciIsInN0aWNrZXJJZCIsInZvaWNlIiwidGVtcGxhdGVzIiwiY29kZSIsInZhbml0eSIsInJlZ2lvbnMiLCJ3ZWxjb21lIiwid2lkZ2V0Iiwid2lkZ2V0SnNvbiIsIm9uYm9hcmRpbmciLCJpbnRlcmFjdGlvbnMiLCJjb21tYW5kcyIsImFwcGxpY2F0aW9uSWQiLCJjb21tYW5kSWQiLCJ3aXRoTG9jYWxpemF0aW9ucyIsInBlcm1pc3Npb25zIiwicGVybWlzc2lvbiIsImNvbW1hbmQiLCJyZXNwb25zZXMiLCJjYWxsYmFjayIsImludGVyYWN0aW9uSWQiLCJvYXV0aDIiLCJ0b2tlbkV4Y2hhbmdlIiwidG9rZW5SZXZva2UiLCJjdXJyZW50QXV0aG9yaXphdGlvbiIsImFwcGxpY2F0aW9uIiwiY29ubmVjdGlvbnMiLCJyb2xlQ29ubmVjdGlvbnMiLCJtb25ldGl6YXRpb24iLCJlbnRpdGxlbWVudHMiLCJleGNsdWRlRW5kZWQiLCJza3VJZHMiLCJlbnRpdGxlbWVudCIsImVudGl0bGVtZW50SWQiLCJjb25zdW1lRW50aXRsZW1lbnQiLCJza3VzIiwiY3VycmVudFVzZXIiLCJnYXRld2F5Qm90Iiwic3RpY2tlclBhY2tzIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxrQkFBa0IsRUFBRUMsbUJBQW1CLEVBQUVDLG1CQUFtQixFQUFFQyxrQkFBa0IsUUFBUSxvQkFBbUI7QUFHcEgsT0FBTyxTQUFTQztJQUNkLE9BQU87UUFDTEMsVUFBVTtZQUNSQyxJQUFJLENBQUNDO2dCQUNILE9BQU8sQ0FBQyxVQUFVLEVBQUVBLFVBQVUsQ0FBQztZQUNqQztZQUNBQyxTQUFTLENBQUNELFdBQVdFLE9BQU9DLFdBQVdDO2dCQUNyQyxJQUFJQyxNQUFNLENBQUMsVUFBVSxFQUFFTCxVQUFVLENBQUMsRUFBRUUsTUFBTSxVQUFVLEVBQUVDLFVBQVUsQ0FBQyxDQUFDO2dCQUVsRSxJQUFJQyxTQUFTO29CQUNYLElBQUlBLFFBQVFFLFFBQVEsRUFBRUQsT0FBTyxDQUFDLFVBQVUsRUFBRUQsUUFBUUUsUUFBUSxDQUFDLENBQUM7Z0JBQzlEO2dCQUVBLE9BQU9EO1lBQ1Q7WUFDQUUsVUFBVSxDQUFDUCxXQUFXRSxPQUFPRTtnQkFDM0IsSUFBSUMsTUFBTSxDQUFDLFVBQVUsRUFBRUwsVUFBVSxDQUFDLEVBQUVFLE1BQU0sb0JBQW9CLENBQUM7Z0JBRS9ELElBQUlFLFNBQVM7b0JBQ1gsSUFBSUEsUUFBUUUsUUFBUSxFQUFFRCxPQUFPLENBQUMsVUFBVSxFQUFFRCxRQUFRRSxRQUFRLENBQUMsQ0FBQztnQkFDOUQ7Z0JBRUEsT0FBT0Q7WUFDVDtZQUNBRyxTQUFTLENBQUNSLFdBQVdFLE9BQU9FO2dCQUMxQixJQUFJQyxNQUFNLENBQUMsVUFBVSxFQUFFTCxVQUFVLENBQUMsRUFBRUUsTUFBTSxDQUFDLENBQUM7Z0JBRTVDLElBQUlFLFNBQVM7b0JBQ1gsSUFBSUEsU0FBU0ssU0FBU0MsV0FBV0wsT0FBTyxDQUFDLEtBQUssRUFBRUQsUUFBUUssSUFBSSxDQUFDRSxRQUFRLEdBQUcsQ0FBQztvQkFDekUsSUFBSVAsUUFBUUUsUUFBUSxFQUFFRCxPQUFPLENBQUMsVUFBVSxFQUFFRCxRQUFRRSxRQUFRLENBQUMsQ0FBQztnQkFDOUQ7Z0JBRUEsT0FBT0Q7WUFDVDtRQUNGO1FBRUEsb0JBQW9CO1FBQ3BCTyxVQUFVO1lBQ1JDLE1BQU0sQ0FBQ0M7Z0JBQ0wsT0FBTyxDQUFDLFVBQVUsRUFBRUEsVUFBVSxxQkFBcUIsQ0FBQztZQUN0RDtZQUNBQyxJQUFJO2dCQUNGLE9BQU87WUFDVDtZQUNBQyxhQUFhLENBQUNGLFdBQVdHO2dCQUN2QixPQUFPLENBQUMsVUFBVSxFQUFFSCxVQUFVLFlBQVksRUFBRUcsT0FBTyxDQUFDO1lBQ3REO1lBQ0FDLEtBQUssQ0FBQ0osV0FBV1g7Z0JBQ2YsT0FBTyxDQUFDLFVBQVUsRUFBRVcsVUFBVSxNQUFNLEVBQUVYLFVBQVUsQ0FBQztZQUNuRDtZQUNBZ0IsTUFBTSxDQUFDTDtnQkFDTCxPQUFPLENBQUMsVUFBVSxFQUFFQSxVQUFVLEtBQUssQ0FBQztZQUN0QztZQUNBTSxXQUFXO2dCQUNUQyxLQUFLLENBQUNQLFdBQVdYLFdBQVdtQjtvQkFDMUIsT0FBTyxDQUFDLFVBQVUsRUFBRVIsVUFBVSxVQUFVLEVBQUVYLFVBQVUsV0FBVyxFQUFFb0IsbUJBQW1CRCxPQUFPLElBQUksQ0FBQztnQkFDbEc7Z0JBQ0FFLE1BQU0sQ0FBQ1YsV0FBV1gsV0FBV21CLE9BQU9MO29CQUNsQyxPQUFPLENBQUMsVUFBVSxFQUFFSCxVQUFVLFVBQVUsRUFBRVgsVUFBVSxXQUFXLEVBQUVvQixtQkFBbUJELE9BQU8sQ0FBQyxFQUFFTCxPQUFPLENBQUM7Z0JBQ3hHO2dCQUNBUSxLQUFLLENBQUNYLFdBQVdYO29CQUNmLE9BQU8sQ0FBQyxVQUFVLEVBQUVXLFVBQVUsVUFBVSxFQUFFWCxVQUFVLFVBQVUsQ0FBQztnQkFDakU7Z0JBQ0FtQixPQUFPLENBQUNSLFdBQVdYLFdBQVdtQixPQUFPbEI7b0JBQ25DLElBQUlDLE1BQU0sQ0FBQyxVQUFVLEVBQUVTLFVBQVUsVUFBVSxFQUFFWCxVQUFVLFdBQVcsRUFBRW9CLG1CQUFtQkQsT0FBTyxDQUFDLENBQUM7b0JBRWhHLElBQUlsQixTQUFTO3dCQUNYLElBQUlBLFFBQVFzQixJQUFJLEVBQUVyQixPQUFPLENBQUMsS0FBSyxFQUFFRCxRQUFRc0IsSUFBSSxDQUFDLENBQUM7d0JBQy9DLDRFQUE0RTt3QkFDNUUsSUFBSXRCLFFBQVF1QixLQUFLLEVBQUV0QixPQUFPLENBQUMsT0FBTyxFQUFFRCxRQUFRdUIsS0FBSyxDQUFDLENBQUM7d0JBQ25ELDRFQUE0RTt3QkFDNUUsSUFBSXZCLFFBQVF3QixLQUFLLEVBQUV2QixPQUFPLENBQUMsT0FBTyxFQUFFRCxRQUFRd0IsS0FBSyxDQUFDLENBQUM7b0JBQ3JEO29CQUVBLE9BQU92QjtnQkFDVDtnQkFDQUosU0FBUyxDQUFDYSxXQUFXWCxXQUFXbUIsT0FBT2xCO29CQUNyQyxJQUFJQyxNQUFNLENBQUMsVUFBVSxFQUFFUyxVQUFVLFVBQVUsRUFBRVgsVUFBVSxXQUFXLEVBQUVvQixtQkFBbUJELE9BQU8sQ0FBQyxDQUFDO29CQUVoRyxJQUFJbEIsU0FBUzt3QkFDWCw0RUFBNEU7d0JBQzVFLElBQUlBLFFBQVF1QixLQUFLLEVBQUV0QixPQUFPLENBQUMsTUFBTSxFQUFFRCxRQUFRdUIsS0FBSyxDQUFDLENBQUM7d0JBQ2xELDRFQUE0RTt3QkFDNUUsSUFBSXZCLFFBQVF3QixLQUFLLEVBQUV2QixPQUFPLENBQUMsT0FBTyxFQUFFRCxRQUFRd0IsS0FBSyxDQUFDLENBQUM7b0JBQ3JEO29CQUVBLE9BQU92QjtnQkFDVDtZQUNGO1lBQ0FQLFVBQVUsQ0FBQ2dCO2dCQUNULE9BQU8sQ0FBQyxVQUFVLEVBQUVBLFVBQVUsU0FBUyxDQUFDO1lBQzFDO1lBRUFlLFNBQVMsQ0FBQ2Y7Z0JBQ1IsT0FBTyxDQUFDLFVBQVUsRUFBRUEsVUFBVSxDQUFDO1lBQ2pDO1lBRUFnQixRQUFRLENBQUNoQjtnQkFDUCxPQUFPLENBQUMsVUFBVSxFQUFFQSxVQUFVLFVBQVUsQ0FBQztZQUMzQztZQUVBaUIsT0FBTyxDQUFDakI7Z0JBQ04sT0FBTyxDQUFDLFVBQVUsRUFBRUEsVUFBVSxRQUFRLENBQUM7WUFDekM7WUFFQWtCLFNBQVMsQ0FBQ2xCO2dCQUNSLE9BQU8sQ0FBQyxVQUFVLEVBQUVBLFVBQVUsUUFBUSxDQUFDO1lBQ3pDO1lBRUFiLFNBQVMsQ0FBQ2EsV0FBV1g7Z0JBQ25CLE9BQU8sQ0FBQyxVQUFVLEVBQUVXLFVBQVUsVUFBVSxFQUFFWCxVQUFVLENBQUM7WUFDdkQ7WUFFQThCLFVBQVUsQ0FBQ25CLFdBQVdWO2dCQUNwQixJQUFJQyxNQUFNLENBQUMsVUFBVSxFQUFFUyxVQUFVLFVBQVUsQ0FBQztnQkFFNUMsSUFBSVYsU0FBUztvQkFDWCxJQUFJWCxtQkFBbUJXLFlBQVlBLFFBQVF1QixLQUFLLEVBQUU7d0JBQ2hEdEIsT0FBTyxDQUFDLE1BQU0sRUFBRUQsUUFBUXVCLEtBQUssQ0FBQyxDQUFDO29CQUNqQztvQkFDQSxJQUFJaEMsb0JBQW9CUyxZQUFZQSxRQUFROEIsTUFBTSxFQUFFO3dCQUNsRDdCLE9BQU8sQ0FBQyxRQUFRLEVBQUVELFFBQVE4QixNQUFNLENBQUMsQ0FBQztvQkFDcEM7b0JBQ0EsSUFBSXhDLG9CQUFvQlUsWUFBWUEsUUFBUStCLE1BQU0sRUFBRTt3QkFDbEQ5QixPQUFPLENBQUMsUUFBUSxFQUFFRCxRQUFRK0IsTUFBTSxDQUFDLENBQUM7b0JBQ3BDO29CQUNBLElBQUl2QyxtQkFBbUJRLFlBQVlBLFFBQVF3QixLQUFLLEVBQUU7d0JBQ2hEdkIsT0FBTyxDQUFDLE9BQU8sRUFBRUQsUUFBUXdCLEtBQUssQ0FBQyxDQUFDO29CQUNsQztnQkFDRjtnQkFFQSxPQUFPdkI7WUFDVDtZQUVBK0IsV0FBVyxDQUFDdEIsV0FBV3VCO2dCQUNyQixPQUFPLENBQUMsVUFBVSxFQUFFdkIsVUFBVSxhQUFhLEVBQUV1QixZQUFZLENBQUM7WUFDNUQ7WUFFQUMsV0FBVyxDQUFDeEIsV0FBV1g7Z0JBQ3JCLE9BQU8sQ0FBQyxVQUFVLEVBQUVXLFVBQVUsVUFBVSxFQUFFWCxVQUFVLFVBQVUsQ0FBQztZQUNqRTtZQUVBb0MsUUFBUTtnQkFDTixPQUFPO1lBQ1Q7WUFFQUMsT0FBTyxDQUFDMUI7Z0JBQ04sT0FBTyxDQUFDLGlCQUFpQixFQUFFQSxVQUFVLENBQUM7WUFDeEM7WUFFQSxtQkFBbUI7WUFDbkIyQixTQUFTO2dCQUNQeEMsU0FBUyxDQUFDYSxXQUFXWDtvQkFDbkIsT0FBTyxDQUFDLFVBQVUsRUFBRVcsVUFBVSxVQUFVLEVBQUVYLFVBQVUsUUFBUSxDQUFDO2dCQUMvRDtnQkFDQXNCLEtBQUssQ0FBQ1g7b0JBQ0osT0FBTyxDQUFDLFVBQVUsRUFBRUEsVUFBVSxRQUFRLENBQUM7Z0JBQ3pDO2dCQUNBNEIsUUFBUSxDQUFDQztvQkFDUCxPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLGVBQWUsQ0FBQztnQkFDNUM7Z0JBQ0FDLFNBQVMsQ0FBQzlCO29CQUNSLE9BQU8sQ0FBQyxVQUFVLEVBQUVBLFVBQVUsZUFBZSxDQUFDO2dCQUNoRDtnQkFDQStCLElBQUksQ0FBQy9CO29CQUNILE9BQU8sQ0FBQyxVQUFVLEVBQUVBLFVBQVUsbUJBQW1CLENBQUM7Z0JBQ3BEO2dCQUNBVSxNQUFNLENBQUNWLFdBQVdHO29CQUNoQixPQUFPLENBQUMsVUFBVSxFQUFFSCxVQUFVLGdCQUFnQixFQUFFRyxPQUFPLENBQUM7Z0JBQzFEO2dCQUNBNkIsVUFBVSxDQUFDaEM7b0JBQ1QsT0FBTyxDQUFDLFVBQVUsRUFBRUEsVUFBVSxpQkFBaUIsQ0FBQztnQkFDbEQ7Z0JBQ0FpQyxRQUFRLENBQUNqQyxXQUFXVjtvQkFDbEIsSUFBSUMsTUFBTSxDQUFDLFVBQVUsRUFBRVMsVUFBVSx5QkFBeUIsQ0FBQztvQkFFM0QsSUFBSVYsU0FBUzt3QkFDWCxJQUFJQSxRQUFROEIsTUFBTSxFQUFFOzRCQUNsQjdCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSTJDLEtBQUs1QyxRQUFROEIsTUFBTSxFQUFFZSxXQUFXLEdBQUcsQ0FBQzt3QkFDM0Q7d0JBQ0EsNEVBQTRFO3dCQUM1RSxJQUFJN0MsUUFBUXdCLEtBQUssRUFBRXZCLE9BQU8sQ0FBQyxPQUFPLEVBQUVELFFBQVF3QixLQUFLLENBQUMsQ0FBQztvQkFDckQ7b0JBRUEsT0FBT3ZCO2dCQUNUO2dCQUNBNkMsU0FBUyxDQUFDcEMsV0FBV1Y7b0JBQ25CLElBQUlDLE1BQU0sQ0FBQyxVQUFVLEVBQUVTLFVBQVUsMEJBQTBCLENBQUM7b0JBRTVELElBQUlWLFNBQVM7d0JBQ1gsSUFBSUEsUUFBUThCLE1BQU0sRUFBRTs0QkFDbEI3QixPQUFPLENBQUMsT0FBTyxFQUFFLElBQUkyQyxLQUFLNUMsUUFBUThCLE1BQU0sRUFBRWUsV0FBVyxHQUFHLENBQUM7d0JBQzNEO3dCQUNBLDRFQUE0RTt3QkFDNUUsSUFBSTdDLFFBQVF3QixLQUFLLEVBQUV2QixPQUFPLENBQUMsT0FBTyxFQUFFRCxRQUFRd0IsS0FBSyxDQUFDLENBQUM7b0JBQ3JEO29CQUVBLE9BQU92QjtnQkFDVDtnQkFDQThDLFFBQVEsQ0FBQ3JDLFdBQVdWO29CQUNsQixJQUFJQyxNQUFNLENBQUMsVUFBVSxFQUFFUyxVQUFVLG9DQUFvQyxDQUFDO29CQUV0RSxJQUFJVixTQUFTO3dCQUNYLElBQUlBLFFBQVE4QixNQUFNLEVBQUU7NEJBQ2xCN0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJMkMsS0FBSzVDLFFBQVE4QixNQUFNLEVBQUVlLFdBQVcsR0FBRyxDQUFDO3dCQUMzRDt3QkFDQSw0RUFBNEU7d0JBQzVFLElBQUk3QyxRQUFRd0IsS0FBSyxFQUFFdkIsT0FBTyxDQUFDLE9BQU8sRUFBRUQsUUFBUXdCLEtBQUssQ0FBQyxDQUFDO29CQUNyRDtvQkFFQSxPQUFPdkI7Z0JBQ1Q7WUFDRjtZQUVBK0MsUUFBUSxDQUFDdEM7Z0JBQ1AsT0FBTyxDQUFDLFVBQVUsRUFBRUEsVUFBVSxPQUFPLENBQUM7WUFDeEM7WUFFQXVDLE9BQU87Z0JBQ0xDLE9BQU8sQ0FBQ3hDLFdBQVdYLFdBQVdvRCxVQUFVbkQ7b0JBQ3RDLElBQUlDLE1BQU0sQ0FBQyxVQUFVLEVBQUVTLFVBQVUsT0FBTyxFQUFFWCxVQUFVLFNBQVMsRUFBRW9ELFNBQVMsQ0FBQyxDQUFDO29CQUUxRSxJQUFJbkQsU0FBUzt3QkFDWCxJQUFJQSxRQUFRdUIsS0FBSyxFQUFFdEIsT0FBTyxDQUFDLE1BQU0sRUFBRUQsUUFBUXVCLEtBQUssQ0FBQyxDQUFDO3dCQUNsRCxJQUFJdkIsUUFBUXdCLEtBQUssRUFBRXZCLE9BQU8sQ0FBQyxPQUFPLEVBQUVELFFBQVF3QixLQUFLLENBQUMsQ0FBQztvQkFDckQ7b0JBRUEsT0FBT3ZCO2dCQUNUO2dCQUNBbUQsUUFBUSxDQUFDMUMsV0FBV1g7b0JBQ2xCLE9BQU8sQ0FBQyxVQUFVLEVBQUVXLFVBQVUsT0FBTyxFQUFFWCxVQUFVLE9BQU8sQ0FBQztnQkFDM0Q7WUFDRjtRQUNGO1FBRUEsa0JBQWtCO1FBQ2xCc0QsUUFBUTtZQUNOaEMsS0FBSztnQkFDSCxPQUFPO1lBQ1Q7WUFDQWlDLFlBQVksQ0FBQ3REO2dCQUNYLElBQUlDLE1BQU07Z0JBRVYsSUFBSUQsU0FBUztvQkFDWCw0RUFBNEU7b0JBQzVFLElBQUlBLFFBQVF1QixLQUFLLEVBQUV0QixPQUFPLENBQUMsTUFBTSxFQUFFRCxRQUFRdUIsS0FBSyxDQUFDLENBQUM7b0JBQ2xELDRFQUE0RTtvQkFDNUUsSUFBSXZCLFFBQVE4QixNQUFNLEVBQUU3QixPQUFPLENBQUMsUUFBUSxFQUFFRCxRQUFROEIsTUFBTSxDQUFDLENBQUM7b0JBQ3RELDRFQUE0RTtvQkFDNUUsSUFBSTlCLFFBQVF3QixLQUFLLEVBQUV2QixPQUFPLENBQUMsT0FBTyxFQUFFRCxRQUFRd0IsS0FBSyxDQUFDLENBQUM7b0JBQ25ELDRFQUE0RTtvQkFDNUUsSUFBSXhCLFFBQVF1RCxVQUFVLEVBQUV0RCxPQUFPLENBQUMsYUFBYSxFQUFFRCxRQUFRdUQsVUFBVSxDQUFDLENBQUM7Z0JBQ3JFO2dCQUVBLE9BQU90RDtZQUNUO1lBQ0F1RCxXQUFXLENBQUNqQixTQUFTdkM7Z0JBQ25CLElBQUlDLE1BQU0sQ0FBQyxRQUFRLEVBQUVzQyxRQUFRLFlBQVksQ0FBQztnQkFFMUMsSUFBSXZDLFNBQVM7b0JBQ1gsNEVBQTRFO29CQUM1RSxJQUFJQSxRQUFReUQsVUFBVSxFQUFFeEQsT0FBTyxDQUFDLFlBQVksRUFBRUQsUUFBUXlELFVBQVUsQ0FBQyxDQUFDO29CQUNsRSw0RUFBNEU7b0JBQzVFLElBQUl6RCxRQUFROEIsTUFBTSxFQUFFN0IsT0FBTyxDQUFDLFFBQVEsRUFBRUQsUUFBUThCLE1BQU0sQ0FBQyxDQUFDO29CQUN0RCw0RUFBNEU7b0JBQzVFLElBQUk5QixRQUFRdUIsS0FBSyxFQUFFdEIsT0FBTyxDQUFDLE9BQU8sRUFBRUQsUUFBUXVCLEtBQUssQ0FBQyxDQUFDO29CQUNuRCw0RUFBNEU7b0JBQzVFLElBQUl2QixRQUFRd0IsS0FBSyxFQUFFdkIsT0FBTyxDQUFDLE9BQU8sRUFBRUQsUUFBUXdCLEtBQUssQ0FBQyxDQUFDO29CQUNuRCw0RUFBNEU7b0JBQzVFLElBQUl4QixRQUFRYSxNQUFNLEVBQUVaLE9BQU8sQ0FBQyxTQUFTLEVBQUVELFFBQVFhLE1BQU0sQ0FBQyxDQUFDO2dCQUN6RDtnQkFFQSxPQUFPWjtZQUNUO1lBQ0F5RCxTQUFTO2dCQUNQQyxNQUFNLENBQUNwQixTQUFTcUI7b0JBQ2QsT0FBTyxDQUFDLFFBQVEsRUFBRXJCLFFBQVEsdUJBQXVCLEVBQUVxQixPQUFPLENBQUM7Z0JBQzdEO2dCQUNBQyxPQUFPLENBQUN0QjtvQkFDTixPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLHNCQUFzQixDQUFDO2dCQUNuRDtZQUNGO1lBQ0EvQixVQUFVLENBQUMrQjtnQkFDVCxPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLFNBQVMsQ0FBQztZQUN0QztZQUNBckIsT0FBTyxDQUFDcUIsU0FBU3VCO2dCQUNmLE9BQU8sQ0FBQyxRQUFRLEVBQUV2QixRQUFRLFFBQVEsRUFBRXVCLFFBQVEsQ0FBQztZQUMvQztZQUNBQyxRQUFRLENBQUN4QjtnQkFDUCxPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLE9BQU8sQ0FBQztZQUNwQztZQUNBeUIsUUFBUTtnQkFDTkEsUUFBUSxDQUFDekIsU0FBUzBCO29CQUNoQixJQUFJaEUsTUFBTSxDQUFDLFFBQVEsRUFBRXNDLFFBQVEsa0JBQWtCLENBQUM7b0JBRWhELElBQUkwQixrQkFBa0IzRCxXQUFXO3dCQUMvQkwsT0FBTyxDQUFDLGdCQUFnQixFQUFFZ0UsY0FBYzFELFFBQVEsR0FBRyxDQUFDO29CQUN0RDtvQkFDQSxPQUFPTjtnQkFDVDtnQkFDQWlFLE9BQU8sQ0FBQzNCLFNBQVM0QixTQUFTRjtvQkFDeEIsSUFBSWhFLE1BQU0sQ0FBQyxRQUFRLEVBQUVzQyxRQUFRLGtCQUFrQixFQUFFNEIsUUFBUSxDQUFDO29CQUUxRCxJQUFJRixrQkFBa0IzRCxXQUFXO3dCQUMvQkwsT0FBTyxDQUFDLGdCQUFnQixFQUFFZ0UsY0FBYzFELFFBQVEsR0FBRyxDQUFDO29CQUN0RDtvQkFFQSxPQUFPTjtnQkFDVDtnQkFDQW1FLE9BQU8sQ0FBQzdCLFNBQVM0QixTQUFTbkU7b0JBQ3hCLElBQUlDLE1BQU0sQ0FBQyxRQUFRLEVBQUVzQyxRQUFRLGtCQUFrQixFQUFFNEIsUUFBUSxPQUFPLENBQUM7b0JBRWpFLElBQUluRSxTQUFTO3dCQUNYLDRFQUE0RTt3QkFDNUUsSUFBSUEsUUFBUXdCLEtBQUssS0FBS2xCLFdBQVdMLE9BQU8sQ0FBQyxNQUFNLEVBQUVELFFBQVF3QixLQUFLLENBQUMsQ0FBQzt3QkFDaEUsSUFBSXhCLFFBQVFxRSxVQUFVLEtBQUsvRCxXQUFXOzRCQUNwQyw0RUFBNEU7NEJBQzVFTCxPQUFPLENBQUMsYUFBYSxFQUFFRCxRQUFRcUUsVUFBVSxDQUFDOUQsUUFBUSxHQUFHLENBQUM7d0JBQ3hEO3dCQUNBLDRFQUE0RTt3QkFDNUUsSUFBSVAsUUFBUXVCLEtBQUssS0FBS2pCLFdBQVdMLE9BQU8sQ0FBQyxPQUFPLEVBQUVELFFBQVF1QixLQUFLLENBQUMsQ0FBQzt3QkFDakUsNEVBQTRFO3dCQUM1RSxJQUFJdkIsUUFBUThCLE1BQU0sS0FBS3hCLFdBQVdMLE9BQU8sQ0FBQyxRQUFRLEVBQUVELFFBQVE4QixNQUFNLENBQUMsQ0FBQztvQkFDdEU7b0JBRUEsT0FBTzdCO2dCQUNUO1lBQ0Y7WUFDQXFFLE9BQU0vQixPQUFPLEVBQUVnQixVQUFVO2dCQUN2QixJQUFJdEQsTUFBTSxDQUFDLFFBQVEsRUFBRXNDLFFBQVEsQ0FBQyxDQUFDO2dCQUUvQixJQUFJZ0IsZUFBZWpELFdBQVc7b0JBQzVCTCxPQUFPLENBQUMsWUFBWSxFQUFFc0QsV0FBV2hELFFBQVEsR0FBRyxDQUFDO2dCQUMvQztnQkFFQSxPQUFPTjtZQUNUO1lBQ0FzRSxhQUFZaEMsT0FBTyxFQUFFaUMsYUFBYTtnQkFDaEMsT0FBTyxDQUFDLFFBQVEsRUFBRWpDLFFBQVEsY0FBYyxFQUFFaUMsY0FBYyxDQUFDO1lBQzNEO1lBQ0FDLGNBQWMsQ0FBQ2xDO2dCQUNiLE9BQU8sQ0FBQyxRQUFRLEVBQUVBLFFBQVEsdUNBQXVDLENBQUM7WUFDcEU7WUFDQW1DLFFBQU9DLFVBQVUsRUFBRTNFLE9BQU87Z0JBQ3hCLElBQUlDLE1BQU0sQ0FBQyxTQUFTLEVBQUUwRSxXQUFXLENBQUMsQ0FBQztnQkFFbkMsSUFBSTNFLFNBQVM7b0JBQ1gsSUFBSUEsUUFBUXVELFVBQVUsS0FBS2pELFdBQVc7d0JBQ3BDLDRFQUE0RTt3QkFDNUVMLE9BQU8sQ0FBQyxZQUFZLEVBQUVELFFBQVF1RCxVQUFVLENBQUNoRCxRQUFRLEdBQUcsQ0FBQztvQkFDdkQ7b0JBQ0EsSUFBSVAsUUFBUTRFLGNBQWMsS0FBS3RFLFdBQVc7d0JBQ3hDLDRFQUE0RTt3QkFDNUVMLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRUQsUUFBUTRFLGNBQWMsQ0FBQ3JFLFFBQVEsR0FBRyxDQUFDO29CQUNoRTtvQkFDQSxJQUFJUCxRQUFRNkUsZ0JBQWdCLEVBQUU7d0JBQzVCLDRFQUE0RTt3QkFDNUU1RSxPQUFPLENBQUMsMEJBQTBCLEVBQUVELFFBQVE2RSxnQkFBZ0IsQ0FBQyxDQUFDO29CQUNoRTtnQkFDRjtnQkFFQSxPQUFPNUU7WUFDVDtZQUNBMkIsU0FBUyxDQUFDVztnQkFDUixPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLFFBQVEsQ0FBQztZQUNyQztZQUNBdUMsT0FBTyxDQUFDdkM7Z0JBQ04sT0FBTyxDQUFDLGtCQUFrQixFQUFFQSxRQUFRLENBQUM7WUFDdkM7WUFDQUMsU0FBUztnQkFDUHVDLEtBQUssQ0FBQ3hDLFNBQVMxQjtvQkFDYixPQUFPLENBQUMsUUFBUSxFQUFFMEIsUUFBUSxNQUFNLEVBQUUxQixPQUFPLENBQUM7Z0JBQzVDO2dCQUNBbUUsTUFBTSxDQUFDekMsU0FBU3ZDO29CQUNkLElBQUlDLE1BQU0sQ0FBQyxRQUFRLEVBQUVzQyxRQUFRLE1BQU0sQ0FBQztvQkFFcEMsSUFBSXZDLFNBQVM7d0JBQ1gsNEVBQTRFO3dCQUM1RSxJQUFJQSxRQUFRd0IsS0FBSyxFQUFFdkIsT0FBTyxDQUFDLE1BQU0sRUFBRUQsUUFBUXdCLEtBQUssQ0FBQyxDQUFDO3dCQUNsRCw0RUFBNEU7d0JBQzVFLElBQUl4QixRQUFRdUIsS0FBSyxFQUFFdEIsT0FBTyxDQUFDLE9BQU8sRUFBRUQsUUFBUXVCLEtBQUssQ0FBQyxDQUFDO3dCQUNuRCw0RUFBNEU7d0JBQzVFLElBQUl2QixRQUFROEIsTUFBTSxFQUFFN0IsT0FBTyxDQUFDLFFBQVEsRUFBRUQsUUFBUThCLE1BQU0sQ0FBQyxDQUFDO29CQUN4RDtvQkFFQSxPQUFPN0I7Z0JBQ1Q7Z0JBQ0FnRixTQUFTLENBQUMxQztvQkFDUixPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLFNBQVMsQ0FBQztnQkFDdEM7Z0JBQ0F0QixLQUFLLENBQUNzQjtvQkFDSixPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLFlBQVksQ0FBQztnQkFDekM7Z0JBQ0EyQyxRQUFRLENBQUMzQyxTQUFTMUI7b0JBQ2hCLE9BQU8sQ0FBQyxRQUFRLEVBQUUwQixRQUFRLFNBQVMsRUFBRTFCLE9BQU8sQ0FBQztnQkFDL0M7Z0JBQ0FzRSxlQUFlLENBQUM1QztvQkFDZCxPQUFPLENBQUMsa0JBQWtCLEVBQUVBLFFBQVEsT0FBTyxDQUFDO2dCQUM5QztnQkFDQUMsU0FBUyxDQUFDRCxTQUFTdkM7b0JBQ2pCLElBQUlDLE1BQU0sQ0FBQyxRQUFRLEVBQUVzQyxRQUFRLFNBQVMsQ0FBQztvQkFFdkMsSUFBSXZDLFlBQVlNLFdBQVc7d0JBQ3pCLDRFQUE0RTt3QkFDNUUsSUFBSU4sUUFBUXdCLEtBQUssRUFBRXZCLE9BQU8sQ0FBQyxNQUFNLEVBQUVELFFBQVF3QixLQUFLLENBQUMsQ0FBQzt3QkFDbEQsNEVBQTRFO3dCQUM1RSxJQUFJeEIsUUFBUXVCLEtBQUssRUFBRXRCLE9BQU8sQ0FBQyxPQUFPLEVBQUVELFFBQVF1QixLQUFLLENBQUMsQ0FBQztvQkFDckQ7b0JBRUEsT0FBT3RCO2dCQUNUO2dCQUNBbUYsUUFBUSxDQUFDN0MsU0FBUzhDLE9BQU9yRjtvQkFDdkIsSUFBSUMsTUFBTSxDQUFDLFFBQVEsRUFBRXNDLFFBQVEsc0JBQXNCLEVBQUVwQixtQkFBbUJrRSxPQUFPLENBQUM7b0JBRWhGLElBQUlyRixTQUFTO3dCQUNYLElBQUlBLFFBQVF3QixLQUFLLEtBQUtsQixXQUFXTCxPQUFPLENBQUMsT0FBTyxFQUFFRCxRQUFRd0IsS0FBSyxDQUFDLENBQUM7b0JBQ25FO29CQUVBLE9BQU92QjtnQkFDVDtnQkFDQXFGLE9BQU8sQ0FBQy9DLFNBQVN2QztvQkFDZixJQUFJQyxNQUFNLENBQUMsUUFBUSxFQUFFc0MsUUFBUSxPQUFPLENBQUM7b0JBRXJDLElBQUl2QyxTQUFTO3dCQUNYLDRFQUE0RTt3QkFDNUUsSUFBSUEsUUFBUXVGLElBQUksRUFBRXRGLE9BQU8sQ0FBQyxLQUFLLEVBQUVELFFBQVF1RixJQUFJLENBQUMsQ0FBQzt3QkFDL0MsSUFBSUMsTUFBTUMsT0FBTyxDQUFDekYsUUFBUTBGLFlBQVksR0FBRzs0QkFDdkMsNEVBQTRFOzRCQUM1RXpGLE9BQU8sQ0FBQyxlQUFlLEVBQUVELFFBQVEwRixZQUFZLENBQUNDLElBQUksQ0FBQyxLQUFLLENBQUM7d0JBQzNELE9BQU8sSUFBSTNGLFFBQVEwRixZQUFZLEVBQUU7NEJBQy9CLDRFQUE0RTs0QkFDNUV6RixPQUFPLENBQUMsZUFBZSxFQUFFRCxRQUFRMEYsWUFBWSxDQUFDLENBQUM7d0JBQ2pEO29CQUNGO29CQUVBLE9BQU96RjtnQkFDVDtZQUNGO1lBQ0EyRixLQUFLLENBQUNyRCxVQUFZLENBQUMsUUFBUSxFQUFFQSxRQUFRLElBQUksQ0FBQztZQUMxQ3NELFNBQVMsQ0FBQ3REO2dCQUNSLE9BQU8sQ0FBQyxRQUFRLEVBQUVBLFFBQVEsUUFBUSxDQUFDO1lBQ3JDO1lBQ0ErQyxPQUFPLENBQUMvQyxTQUFTdkM7Z0JBQ2YsSUFBSUMsTUFBTSxDQUFDLFFBQVEsRUFBRXNDLFFBQVEsT0FBTyxDQUFDO2dCQUVyQyxJQUFJdkMsU0FBUztvQkFDWCw0RUFBNEU7b0JBQzVFLElBQUlBLFFBQVF1RixJQUFJLEVBQUV0RixPQUFPLENBQUMsS0FBSyxFQUFFRCxRQUFRdUYsSUFBSSxDQUFDLENBQUM7b0JBQy9DLElBQUlDLE1BQU1DLE9BQU8sQ0FBQ3pGLFFBQVEwRixZQUFZLEdBQUc7d0JBQ3ZDLDRFQUE0RTt3QkFDNUV6RixPQUFPLENBQUMsZUFBZSxFQUFFRCxRQUFRMEYsWUFBWSxDQUFDQyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUMzRCxPQUFPLElBQUkzRixRQUFRMEYsWUFBWSxFQUFFO3dCQUMvQiw0RUFBNEU7d0JBQzVFekYsT0FBTyxDQUFDLGVBQWUsRUFBRUQsUUFBUTBGLFlBQVksQ0FBQyxDQUFDO29CQUNqRDtnQkFDRjtnQkFFQSxPQUFPekY7WUFDVDtZQUNBNkYsT0FBTztnQkFDTEMsS0FBSyxDQUFDeEQsU0FBU3lEO29CQUNiLE9BQU8sQ0FBQyxRQUFRLEVBQUV6RCxRQUFRLE9BQU8sRUFBRXlELE9BQU8sQ0FBQztnQkFDN0M7Z0JBQ0EzRSxLQUFLLENBQUNrQjtvQkFDSixPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLE1BQU0sQ0FBQztnQkFDbkM7Z0JBQ0EyQyxRQUFRLENBQUMzQyxTQUFTMEQsVUFBVUQ7b0JBQzFCLE9BQU8sQ0FBQyxRQUFRLEVBQUV6RCxRQUFRLFNBQVMsRUFBRTBELFNBQVMsT0FBTyxFQUFFRCxPQUFPLENBQUM7Z0JBQ2pFO1lBQ0Y7WUFDQUUsVUFBVSxDQUFDM0Q7Z0JBQ1QsT0FBTyxDQUFDLFFBQVEsRUFBRUEsUUFBUSxTQUFTLENBQUM7WUFDdEM7WUFDQTRELFNBQVMsQ0FBQzVELFNBQVM2RDtnQkFDakIsT0FBTyxDQUFDLFFBQVEsRUFBRTdELFFBQVEsVUFBVSxFQUFFNkQsVUFBVSxDQUFDO1lBQ25EO1lBQ0FDLE9BQU8sQ0FBQzlELFNBQVMxQjtnQkFDZixPQUFPLENBQUMsUUFBUSxFQUFFMEIsUUFBUSxjQUFjLEVBQUUxQixVQUFVLE1BQU0sQ0FBQztZQUM3RDtZQUNBeUYsV0FBVztnQkFDVEMsTUFBTSxDQUFDQTtvQkFDTCxPQUFPLENBQUMsa0JBQWtCLEVBQUVBLEtBQUssQ0FBQztnQkFDcEM7Z0JBQ0FqQyxPQUFPLENBQUMvQixTQUFTZ0U7b0JBQ2YsT0FBTyxDQUFDLFFBQVEsRUFBRWhFLFFBQVEsV0FBVyxFQUFFZ0UsS0FBSyxDQUFDO2dCQUMvQztnQkFDQWxGLEtBQUssQ0FBQ2tCO29CQUNKLE9BQU8sQ0FBQyxRQUFRLEVBQUVBLFFBQVEsVUFBVSxDQUFDO2dCQUN2QztZQUNGO1lBQ0FpRSxRQUFRLENBQUNqRTtnQkFDUCxPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLFdBQVcsQ0FBQztZQUN4QztZQUNBa0UsU0FBUyxDQUFDbEU7Z0JBQ1IsT0FBTyxDQUFDLFFBQVEsRUFBRUEsUUFBUSxRQUFRLENBQUM7WUFDckM7WUFDQTdDLFVBQVUsQ0FBQzZDO2dCQUNULE9BQU8sQ0FBQyxRQUFRLEVBQUVBLFFBQVEsU0FBUyxDQUFDO1lBQ3RDO1lBQ0FtRSxTQUFTLENBQUNuRTtnQkFDUixPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLGVBQWUsQ0FBQztZQUM1QztZQUNBb0UsUUFBUSxDQUFDcEU7Z0JBQ1AsT0FBTyxDQUFDLFFBQVEsRUFBRUEsUUFBUSxPQUFPLENBQUM7WUFDcEM7WUFDQXFFLFlBQVksQ0FBQ3JFO2dCQUNYLE9BQU8sQ0FBQyxRQUFRLEVBQUVBLFFBQVEsWUFBWSxDQUFDO1lBQ3pDO1lBQ0FzRSxZQUFZLENBQUN0RTtnQkFDWCxPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLFdBQVcsQ0FBQztZQUN4QztRQUNGO1FBRUE0RCxTQUFTLENBQUNDO1lBQ1IsT0FBTyxDQUFDLFVBQVUsRUFBRUEsVUFBVSxDQUFDO1FBQ2pDO1FBRUFLLFNBQVM7WUFDUCxPQUFPO1FBQ1Q7UUFFQSx3QkFBd0I7UUFDeEJLLGNBQWM7WUFDWkMsVUFBVTtnQkFDUix3QkFBd0I7Z0JBQ3hCQSxVQUFVLENBQUNDO29CQUNULE9BQU8sQ0FBQyxjQUFjLEVBQUVBLGNBQWMsU0FBUyxDQUFDO2dCQUNsRDtnQkFFQTNELFFBQVE7b0JBQ05oQyxLQUFJMkYsYUFBYSxFQUFFekUsT0FBTzt3QkFDeEIsT0FBTyxDQUFDLGNBQWMsRUFBRXlFLGNBQWMsUUFBUSxFQUFFekUsUUFBUSxTQUFTLENBQUM7b0JBQ3BFO29CQUVBd0QsS0FBSWlCLGFBQWEsRUFBRXpFLE9BQU8sRUFBRTBFLFNBQVMsRUFBRUMsaUJBQWlCO3dCQUN0RCxJQUFJakgsTUFBTSxDQUFDLGNBQWMsRUFBRStHLGNBQWMsUUFBUSxFQUFFekUsUUFBUSxVQUFVLEVBQUUwRSxVQUFVLENBQUMsQ0FBQzt3QkFFbkYsSUFBSUMsc0JBQXNCNUcsV0FBVzs0QkFDbkNMLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRWlILGtCQUFrQjNHLFFBQVEsR0FBRyxDQUFDO3dCQUM3RDt3QkFFQSxPQUFPTjtvQkFDVDtnQkFDRjtnQkFDQWtILGFBQWEsQ0FBQ0gsZUFBZXpFO29CQUMzQixPQUFPLENBQUMsY0FBYyxFQUFFeUUsY0FBYyxRQUFRLEVBQUV6RSxRQUFRLHFCQUFxQixDQUFDO2dCQUNoRjtnQkFDQTZFLFlBQVksQ0FBQ0osZUFBZXpFLFNBQVMwRTtvQkFDbkMsT0FBTyxDQUFDLGNBQWMsRUFBRUQsY0FBYyxRQUFRLEVBQUV6RSxRQUFRLFVBQVUsRUFBRTBFLFVBQVUsWUFBWSxDQUFDO2dCQUM3RjtnQkFDQUksU0FBUyxDQUFDTCxlQUFlQyxXQUFXQztvQkFDbEMsSUFBSWpILE1BQU0sQ0FBQyxjQUFjLEVBQUUrRyxjQUFjLFVBQVUsRUFBRUMsVUFBVSxDQUFDLENBQUM7b0JBRWpFLElBQUlDLHNCQUFzQjVHLFdBQVc7d0JBQ25DTCxPQUFPLENBQUMsa0JBQWtCLEVBQUVpSCxrQkFBa0IzRyxRQUFRLEdBQUcsQ0FBQztvQkFDNUQ7b0JBRUEsT0FBT047Z0JBQ1Q7WUFDRjtZQUVBcUgsV0FBVztnQkFDVCx3QkFBd0I7Z0JBQ3hCQyxVQUFVLENBQUNDLGVBQWUxSDtvQkFDeEIsT0FBTyxDQUFDLGNBQWMsRUFBRTBILGNBQWMsQ0FBQyxFQUFFMUgsTUFBTSxTQUFTLENBQUM7Z0JBQzNEO2dCQUNBSyxVQUFVLENBQUNxSCxlQUFlMUg7b0JBQ3hCLE9BQU8sQ0FBQyxVQUFVLEVBQUUwSCxjQUFjLENBQUMsRUFBRTFILE1BQU0sbUJBQW1CLENBQUM7Z0JBQ2pFO2dCQUNBRCxTQUFTLENBQUNtSCxlQUFlbEgsT0FBT0M7b0JBQzlCLE9BQU8sQ0FBQyxVQUFVLEVBQUVpSCxjQUFjLENBQUMsRUFBRWxILE1BQU0sVUFBVSxFQUFFQyxVQUFVLENBQUM7Z0JBQ3BFO1lBQ0Y7UUFDRjtRQUVBLG1CQUFtQjtRQUNuQjBILFFBQVE7WUFDTkMsZUFBZTtnQkFDYixPQUFPO1lBQ1Q7WUFDQUMsYUFBYTtnQkFDWCxPQUFPO1lBQ1Q7WUFDQUMsc0JBQXNCO2dCQUNwQixPQUFPO1lBQ1Q7WUFDQUMsYUFBYTtnQkFDWCxPQUFPO1lBQ1Q7WUFDQUMsYUFBYTtnQkFDWCxPQUFPO1lBQ1Q7WUFDQUMsaUJBQWlCLENBQUNmO2dCQUNoQixPQUFPLENBQUMsd0JBQXdCLEVBQUVBLGNBQWMsZ0JBQWdCLENBQUM7WUFDbkU7UUFDRjtRQUVBZ0IsY0FBYztZQUNaQyxjQUFjLENBQUNqQixlQUFlaEg7Z0JBQzVCLElBQUlDLE1BQU0sQ0FBQyxjQUFjLEVBQUUrRyxjQUFjLGNBQWMsQ0FBQztnQkFFeEQsSUFBSWhILFNBQVM7b0JBQ1gsSUFBSUEsUUFBUXVCLEtBQUssRUFBRXRCLE9BQU8sQ0FBQyxNQUFNLEVBQUVELFFBQVF1QixLQUFLLENBQUMsQ0FBQztvQkFDbEQsSUFBSXZCLFFBQVE4QixNQUFNLEVBQUU3QixPQUFPLENBQUMsUUFBUSxFQUFFRCxRQUFROEIsTUFBTSxDQUFDLENBQUM7b0JBQ3RELElBQUk5QixRQUFRa0ksWUFBWSxFQUFFakksT0FBTyxDQUFDLGVBQWUsRUFBRUQsUUFBUWtJLFlBQVksQ0FBQyxDQUFDO29CQUN6RSxJQUFJbEksUUFBUXVDLE9BQU8sRUFBRXRDLE9BQU8sQ0FBQyxVQUFVLEVBQUVELFFBQVF1QyxPQUFPLENBQUMsQ0FBQztvQkFDMUQsSUFBSXZDLFFBQVF3QixLQUFLLEVBQUV2QixPQUFPLENBQUMsT0FBTyxFQUFFRCxRQUFRd0IsS0FBSyxDQUFDLENBQUM7b0JBQ25ELElBQUl4QixRQUFRbUksTUFBTSxFQUFFbEksT0FBTyxDQUFDLFNBQVMsRUFBRUQsUUFBUW1JLE1BQU0sQ0FBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQ2pFLElBQUkzRixRQUFRYSxNQUFNLEVBQUVaLE9BQU8sQ0FBQyxTQUFTLEVBQUVELFFBQVFhLE1BQU0sQ0FBQyxDQUFDO2dCQUN6RDtnQkFFQSxPQUFPWjtZQUNUO1lBQ0FtSSxhQUFhLENBQUNwQixlQUFlcUI7Z0JBQzNCLE9BQU8sQ0FBQyxjQUFjLEVBQUVyQixjQUFjLGNBQWMsRUFBRXFCLGNBQWMsQ0FBQztZQUN2RTtZQUNBQyxvQkFBb0IsQ0FBQ3RCLGVBQWVxQjtnQkFDbEMsT0FBTyxDQUFDLGNBQWMsRUFBRXJCLGNBQWMsY0FBYyxFQUFFcUIsY0FBYyxRQUFRLENBQUM7WUFDL0U7WUFFQUUsTUFBTSxDQUFDdkI7Z0JBQ0wsT0FBTyxDQUFDLGNBQWMsRUFBRUEsY0FBYyxLQUFLLENBQUM7WUFDOUM7UUFDRjtRQUVBLGlCQUFpQjtRQUNqQjVGLE1BQUtQLE1BQU07WUFDVCxPQUFPLENBQUMsT0FBTyxFQUFFQSxPQUFPLENBQUM7UUFDM0I7UUFFQWdIO1lBQ0UsT0FBTztRQUNUO1FBRUFXO1lBQ0UsT0FBTztRQUNUO1FBRUFDO1lBQ0UsT0FBTztRQUNUO1FBRUFDO1lBQ0UsT0FBTztRQUNUO0lBQ0Y7QUFDRiJ9