@discordeno/gateway 19.0.0-next.fd518cb → 19.0.0-next.fda3003

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.
@@ -0,0 +1,288 @@
1
+ /* eslint-disable @typescript-eslint/no-confusing-void-expression */ import { GatewayIntents, GatewayOpcodes } from '@discordeno/types';
2
+ import { Collection, delay, logger } from '@discordeno/utils';
3
+ import Shard from './Shard.js';
4
+ export function createGatewayManager(options) {
5
+ const connectionOptions = options.connection ?? {
6
+ url: 'wss://gateway.discord.gg',
7
+ shards: 1,
8
+ sessionStartLimit: {
9
+ maxConcurrency: 1,
10
+ remaining: 1000,
11
+ total: 1000,
12
+ resetAfter: 1000 * 60 * 60 * 24
13
+ }
14
+ };
15
+ const gateway = {
16
+ events: options.events ?? {},
17
+ compress: options.compress ?? false,
18
+ intents: options.intents ?? 0,
19
+ properties: {
20
+ os: options.properties?.os ?? process.platform,
21
+ browser: options.properties?.browser ?? 'Discordeno',
22
+ device: options.properties?.device ?? 'Discordeno'
23
+ },
24
+ token: options.token,
25
+ url: options.url ?? connectionOptions.url ?? 'wss://gateway.discord.gg',
26
+ version: options.version ?? 10,
27
+ connection: connectionOptions,
28
+ totalShards: options.totalShards ?? connectionOptions.shards ?? 1,
29
+ lastShardId: options.lastShardId ?? (options.totalShards ? options.totalShards - 1 : connectionOptions ? connectionOptions.shards - 1 : 0),
30
+ firstShardId: options.firstShardId ?? 0,
31
+ totalWorkers: options.totalWorkers ?? 4,
32
+ shardsPerWorker: options.shardsPerWorker ?? 25,
33
+ spawnShardDelay: options.spawnShardDelay ?? 5300,
34
+ preferSnakeCase: options.preferSnakeCase ?? false,
35
+ shards: new Map(),
36
+ buckets: new Map(),
37
+ cache: {
38
+ requestMembers: {
39
+ enabled: options.cache?.requestMembers?.enabled ?? false,
40
+ pending: new Collection()
41
+ }
42
+ },
43
+ logger: options.logger ?? logger,
44
+ calculateTotalShards () {
45
+ // Bots under 100k servers do not have access to total shards.
46
+ if (gateway.totalShards < 100) {
47
+ gateway.logger.debug(`[Gateway] Calculating total shards: ${gateway.totalShards}`);
48
+ return gateway.totalShards;
49
+ }
50
+ gateway.logger.debug(`[Gateway] Calculating total shards`, gateway.totalShards, gateway.connection.sessionStartLimit.maxConcurrency);
51
+ // Calculate a multiple of `maxConcurrency` which can be used to connect to the gateway.
52
+ return Math.ceil(gateway.totalShards / // If `maxConcurrency` is 1 we can safely use 16.
53
+ (gateway.connection.sessionStartLimit.maxConcurrency === 1 ? 16 : gateway.connection.sessionStartLimit.maxConcurrency)) * gateway.connection.sessionStartLimit.maxConcurrency;
54
+ },
55
+ calculateWorkerId (shardId) {
56
+ const workerId = Math.min(shardId % gateway.shardsPerWorker, gateway.totalWorkers - 1);
57
+ gateway.logger.debug(`[Gateway] Calculating workerId: Shard: ${shardId} -> Worker: ${workerId} -> Per Worker: ${gateway.shardsPerWorker} -> Total: ${gateway.totalWorkers}`);
58
+ return workerId;
59
+ },
60
+ prepareBuckets () {
61
+ for(let i = 0; i < gateway.connection.sessionStartLimit.maxConcurrency; ++i){
62
+ gateway.logger.debug(`[Gateway] Preparing buckets for concurrency: ${i}`);
63
+ gateway.buckets.set(i, {
64
+ workers: [],
65
+ identifyRequests: []
66
+ });
67
+ }
68
+ // ORGANIZE ALL SHARDS INTO THEIR OWN BUCKETS
69
+ for(let shardId = gateway.firstShardId; shardId <= gateway.lastShardId; ++shardId){
70
+ gateway.logger.debug(`[Gateway] Preparing buckets for shard: ${shardId}`);
71
+ if (shardId >= gateway.totalShards) {
72
+ throw new Error(`Shard (id: ${shardId}) is bigger or equal to the used amount of used shards which is ${gateway.totalShards}`);
73
+ }
74
+ const bucketId = shardId % gateway.connection.sessionStartLimit.maxConcurrency;
75
+ const bucket = gateway.buckets.get(bucketId);
76
+ if (!bucket) {
77
+ throw new Error(`Shard (id: ${shardId}) got assigned to an illegal bucket id: ${bucketId}, expected a bucket id between 0 and ${gateway.connection.sessionStartLimit.maxConcurrency - 1}`);
78
+ }
79
+ // FIND A QUEUE IN THIS BUCKET THAT HAS SPACE
80
+ // const worker = bucket.workers.find((w) => w.queue.length < gateway.shardsPerWorker);
81
+ const workerId = gateway.calculateWorkerId(shardId);
82
+ const worker = bucket.workers.find((w)=>w.id === workerId);
83
+ if (worker) {
84
+ // IF THE QUEUE HAS SPACE JUST ADD IT TO THIS QUEUE
85
+ worker.queue.push(shardId);
86
+ } else {
87
+ bucket.workers.push({
88
+ id: workerId,
89
+ queue: [
90
+ shardId
91
+ ]
92
+ });
93
+ }
94
+ }
95
+ for (const bucket of gateway.buckets.values()){
96
+ for (const worker of bucket.workers.values()){
97
+ // eslint-disable-next-line @typescript-eslint/require-array-sort-compare
98
+ worker.queue = worker.queue.sort((a, b)=>a - b);
99
+ }
100
+ }
101
+ },
102
+ async spawnShards () {
103
+ // PREPARES ALL SHARDS IN SPECIFIC BUCKETS
104
+ gateway.prepareBuckets();
105
+ // Prefer concurrency of forEach instead of forof
106
+ await Promise.all([
107
+ ...gateway.buckets.entries()
108
+ ].map(async ([bucketId, bucket])=>{
109
+ for (const worker of bucket.workers){
110
+ for (const shardId of worker.queue){
111
+ await gateway.tellWorkerToIdentify(worker.id, shardId, bucketId);
112
+ }
113
+ }
114
+ }));
115
+ },
116
+ async shutdown (code, reason) {
117
+ gateway.shards.forEach((shard)=>shard.close(code, reason));
118
+ await delay(5000);
119
+ },
120
+ async sendPayload (shardId, payload) {
121
+ const shard = gateway.shards.get(shardId);
122
+ if (!shard) {
123
+ throw new Error(`Shard (id: ${shardId} not found`);
124
+ }
125
+ await shard.send(payload);
126
+ },
127
+ async tellWorkerToIdentify (workerId, shardId, bucketId) {
128
+ gateway.logger.debug(`[Gateway] tell worker to identify (${workerId}, ${shardId}, ${bucketId})`);
129
+ await gateway.identify(shardId);
130
+ },
131
+ async identify (shardId) {
132
+ let shard = this.shards.get(shardId);
133
+ gateway.logger.debug(`[Gateway] identifying ${shard ? 'existing' : 'new'} shard (${shardId})`);
134
+ if (!shard) {
135
+ shard = new Shard({
136
+ id: shardId,
137
+ connection: {
138
+ compress: this.compress,
139
+ intents: this.intents,
140
+ properties: this.properties,
141
+ token: this.token,
142
+ totalShards: this.totalShards,
143
+ url: this.url,
144
+ version: this.version
145
+ },
146
+ events: options.events ?? {},
147
+ logger: this.logger,
148
+ requestIdentify: async ()=>{
149
+ await gateway.identify(shardId);
150
+ },
151
+ shardIsReady: async ()=>{
152
+ gateway.logger.debug(`[Shard] Shard #${shardId} is ready`);
153
+ await delay(gateway.spawnShardDelay);
154
+ gateway.logger.debug(`[Shard] Resolving shard identify request`);
155
+ gateway.buckets.get(shardId % gateway.connection.sessionStartLimit.maxConcurrency).identifyRequests.shift()?.();
156
+ }
157
+ });
158
+ if (this.preferSnakeCase) {
159
+ shard.forwardToBot = async (payload)=>{
160
+ shard.events.message?.(shard, payload);
161
+ };
162
+ }
163
+ this.shards.set(shardId, shard);
164
+ }
165
+ const bucket = gateway.buckets.get(shardId % gateway.connection.sessionStartLimit.maxConcurrency);
166
+ if (!bucket) return;
167
+ return await new Promise((resolve)=>{
168
+ // Mark that we are making an identify request so another is not made.
169
+ bucket.identifyRequests.push(resolve);
170
+ gateway.logger.debug(`[Gateway] identifying shard #(${shardId}).`);
171
+ // This will trigger identify and when READY is received it will resolve the above request.
172
+ shard?.identify();
173
+ });
174
+ },
175
+ async kill (shardId) {
176
+ const shard = this.shards.get(shardId);
177
+ if (!shard) {
178
+ return gateway.logger.debug(`[Gateway] kill shard but not found (${shardId})`);
179
+ }
180
+ gateway.logger.debug(`[Gateway] kill shard (${shardId})`);
181
+ this.shards.delete(shardId);
182
+ await shard.shutdown();
183
+ },
184
+ async requestIdentify (shardId) {
185
+ gateway.logger.debug(`[Gateway] requesting identify`);
186
+ // const bucket = gateway.buckets.get(shardId % gateway.connection.sessionStartLimit.maxConcurrency)
187
+ // if (!bucket) return
188
+ // return await new Promise((resolve) => {
189
+ // bucket.identifyRequests.push(resolve)
190
+ // })
191
+ },
192
+ // Helpers methods below this
193
+ calculateShardId (guildId, totalShards) {
194
+ // If none is provided, use the total shards number from gateway object.
195
+ if (!totalShards) totalShards = gateway.totalShards;
196
+ // If it is only 1 shard, it will always be shard id 0
197
+ if (totalShards === 1) {
198
+ gateway.logger.debug(`[Gateway] calculateShardId (1 shard)`);
199
+ return 0;
200
+ }
201
+ gateway.logger.debug(`[Gateway] calculateShardId (guildId: ${guildId}, totalShards: ${totalShards})`);
202
+ return Number((BigInt(guildId) >> 22n) % BigInt(totalShards));
203
+ },
204
+ async joinVoiceChannel (guildId, channelId, options) {
205
+ const shardId = gateway.calculateShardId(guildId);
206
+ gateway.logger.debug(`[Gateway] joinVoiceChannel guildId: ${guildId} channelId: ${channelId}`);
207
+ await gateway.sendPayload(shardId, {
208
+ op: GatewayOpcodes.VoiceStateUpdate,
209
+ d: {
210
+ guild_id: guildId.toString(),
211
+ channel_id: channelId.toString(),
212
+ self_mute: options?.selfMute ?? false,
213
+ self_deaf: options?.selfDeaf ?? true
214
+ }
215
+ });
216
+ },
217
+ async editBotStatus (data) {
218
+ gateway.logger.debug(`[Gateway] editBotStatus data: ${JSON.stringify(data)}`);
219
+ await Promise.all([
220
+ ...gateway.shards.values()
221
+ ].map(async (shard)=>{
222
+ gateway.editShardStatus(shard.id, data);
223
+ }));
224
+ },
225
+ async editShardStatus (shardId, data) {
226
+ gateway.logger.debug(`[Gateway] editShardStatus shardId: ${shardId} -> data: ${JSON.stringify(data)}`);
227
+ await gateway.sendPayload(shardId, {
228
+ op: GatewayOpcodes.PresenceUpdate,
229
+ d: {
230
+ since: null,
231
+ afk: false,
232
+ activities: data.activities,
233
+ status: data.status
234
+ }
235
+ });
236
+ },
237
+ async requestMembers (guildId, options) {
238
+ const shardId = gateway.calculateShardId(guildId);
239
+ if (gateway.intents && (!options?.limit || options.limit > 1) && !(gateway.intents & GatewayIntents.GuildMembers)) throw new Error('Cannot fetch more then 1 member without the GUILD_MEMBERS intent');
240
+ gateway.logger.debug(`[Gateway] requestMembers guildId: ${guildId} -> data: ${JSON.stringify(options)}`);
241
+ if (options?.userIds?.length) {
242
+ gateway.logger.debug(`[Gateway] requestMembers guildId: ${guildId} -> setting user limit based on userIds length: ${options.userIds.length}`);
243
+ options.limit = options.userIds.length;
244
+ }
245
+ const members = !gateway.cache.requestMembers.enabled || !options?.nonce ? [] : new Promise((resolve, reject)=>{
246
+ // Should never happen.
247
+ if (!gateway.cache.requestMembers.enabled || !options?.nonce) {
248
+ reject(new Error("Can't request the members without the nonce or with the feature disabled."));
249
+ return;
250
+ }
251
+ gateway.cache.requestMembers.pending.set(options.nonce, {
252
+ nonce: options.nonce,
253
+ resolve,
254
+ members: []
255
+ });
256
+ });
257
+ await gateway.sendPayload(shardId, {
258
+ op: GatewayOpcodes.RequestGuildMembers,
259
+ d: {
260
+ guild_id: guildId.toString(),
261
+ // If a query is provided use it, OR if a limit is NOT provided use ""
262
+ query: options?.query ?? (options?.limit ? undefined : ''),
263
+ limit: options?.limit ?? 0,
264
+ presences: options?.presences ?? false,
265
+ user_ids: options?.userIds?.map((id)=>id.toString()),
266
+ nonce: options?.nonce
267
+ }
268
+ });
269
+ return await members;
270
+ },
271
+ async leaveVoiceChannel (guildId) {
272
+ const shardId = gateway.calculateShardId(guildId);
273
+ gateway.logger.debug(`[Gateway] leaveVoiceChannel guildId: ${guildId} Shard ${shardId}`);
274
+ await gateway.sendPayload(shardId, {
275
+ op: GatewayOpcodes.VoiceStateUpdate,
276
+ d: {
277
+ guild_id: guildId.toString(),
278
+ channel_id: null,
279
+ self_mute: false,
280
+ self_deaf: false
281
+ }
282
+ });
283
+ }
284
+ };
285
+ return gateway;
286
+ }
287
+
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1jb25mdXNpbmctdm9pZC1leHByZXNzaW9uICovXG5pbXBvcnQge1xuICBHYXRld2F5SW50ZW50cyxcbiAgR2F0ZXdheU9wY29kZXMsXG4gIHR5cGUgQXRMZWFzdE9uZSxcbiAgdHlwZSBCaWdTdHJpbmcsXG4gIHR5cGUgQ2FtZWxpemUsXG4gIHR5cGUgRGlzY29yZEdldEdhdGV3YXlCb3QsXG4gIHR5cGUgRGlzY29yZE1lbWJlcldpdGhVc2VyLFxuICB0eXBlIFJlcXVlc3RHdWlsZE1lbWJlcnMsXG59IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgQ29sbGVjdGlvbiwgZGVsYXksIGxvZ2dlciB9IGZyb20gJ0BkaXNjb3JkZW5vL3V0aWxzJ1xuaW1wb3J0IFNoYXJkIGZyb20gJy4vU2hhcmQuanMnXG5pbXBvcnQgdHlwZSB7IFNoYXJkRXZlbnRzLCBTaGFyZFNvY2tldFJlcXVlc3QsIFN0YXR1c1VwZGF0ZSwgVXBkYXRlVm9pY2VTdGF0ZSB9IGZyb20gJy4vdHlwZXMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHYXRld2F5TWFuYWdlcihvcHRpb25zOiBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnMpOiBHYXRld2F5TWFuYWdlciB7XG4gIGNvbnN0IGNvbm5lY3Rpb25PcHRpb25zID0gb3B0aW9ucy5jb25uZWN0aW9uID8/IHtcbiAgICB1cmw6ICd3c3M6Ly9nYXRld2F5LmRpc2NvcmQuZ2cnLFxuICAgIHNoYXJkczogMSxcbiAgICBzZXNzaW9uU3RhcnRMaW1pdDoge1xuICAgICAgbWF4Q29uY3VycmVuY3k6IDEsXG4gICAgICByZW1haW5pbmc6IDEwMDAsXG4gICAgICB0b3RhbDogMTAwMCxcbiAgICAgIHJlc2V0QWZ0ZXI6IDEwMDAgKiA2MCAqIDYwICogMjQsXG4gICAgfSxcbiAgfVxuXG4gIGNvbnN0IGdhdGV3YXk6IEdhdGV3YXlNYW5hZ2VyID0ge1xuICAgIGV2ZW50czogb3B0aW9ucy5ldmVudHMgPz8ge30sXG4gICAgY29tcHJlc3M6IG9wdGlvbnMuY29tcHJlc3MgPz8gZmFsc2UsXG4gICAgaW50ZW50czogb3B0aW9ucy5pbnRlbnRzID8/IDAsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgb3M6IG9wdGlvbnMucHJvcGVydGllcz8ub3MgPz8gcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICAgIGJyb3dzZXI6IG9wdGlvbnMucHJvcGVydGllcz8uYnJvd3NlciA/PyAnRGlzY29yZGVubycsXG4gICAgICBkZXZpY2U6IG9wdGlvbnMucHJvcGVydGllcz8uZGV2aWNlID8/ICdEaXNjb3JkZW5vJyxcbiAgICB9LFxuICAgIHRva2VuOiBvcHRpb25zLnRva2VuLFxuICAgIHVybDogb3B0aW9ucy51cmwgPz8gY29ubmVjdGlvbk9wdGlvbnMudXJsID8/ICd3c3M6Ly9nYXRld2F5LmRpc2NvcmQuZ2cnLFxuICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbiA/PyAxMCxcbiAgICBjb25uZWN0aW9uOiBjb25uZWN0aW9uT3B0aW9ucyxcbiAgICB0b3RhbFNoYXJkczogb3B0aW9ucy50b3RhbFNoYXJkcyA/PyBjb25uZWN0aW9uT3B0aW9ucy5zaGFyZHMgPz8gMSxcbiAgICBsYXN0U2hhcmRJZDogb3B0aW9ucy5sYXN0U2hhcmRJZCA/PyAob3B0aW9ucy50b3RhbFNoYXJkcyA/IG9wdGlvbnMudG90YWxTaGFyZHMgLSAxIDogY29ubmVjdGlvbk9wdGlvbnMgPyBjb25uZWN0aW9uT3B0aW9ucy5zaGFyZHMgLSAxIDogMCksXG4gICAgZmlyc3RTaGFyZElkOiBvcHRpb25zLmZpcnN0U2hhcmRJZCA/PyAwLFxuICAgIHRvdGFsV29ya2Vyczogb3B0aW9ucy50b3RhbFdvcmtlcnMgPz8gNCxcbiAgICBzaGFyZHNQZXJXb3JrZXI6IG9wdGlvbnMuc2hhcmRzUGVyV29ya2VyID8/IDI1LFxuICAgIHNwYXduU2hhcmREZWxheTogb3B0aW9ucy5zcGF3blNoYXJkRGVsYXkgPz8gNTMwMCxcbiAgICBwcmVmZXJTbmFrZUNhc2U6IG9wdGlvbnMucHJlZmVyU25ha2VDYXNlID8/IGZhbHNlLFxuICAgIHNoYXJkczogbmV3IE1hcCgpLFxuICAgIGJ1Y2tldHM6IG5ldyBNYXAoKSxcbiAgICBjYWNoZToge1xuICAgICAgcmVxdWVzdE1lbWJlcnM6IHtcbiAgICAgICAgZW5hYmxlZDogb3B0aW9ucy5jYWNoZT8ucmVxdWVzdE1lbWJlcnM/LmVuYWJsZWQgPz8gZmFsc2UsXG4gICAgICAgIHBlbmRpbmc6IG5ldyBDb2xsZWN0aW9uKCksXG4gICAgICB9LFxuICAgIH0sXG4gICAgbG9nZ2VyOiBvcHRpb25zLmxvZ2dlciA/PyBsb2dnZXIsXG5cbiAgICBjYWxjdWxhdGVUb3RhbFNoYXJkcygpIHtcbiAgICAgIC8vIEJvdHMgdW5kZXIgMTAwayBzZXJ2ZXJzIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0b3RhbCBzaGFyZHMuXG4gICAgICBpZiAoZ2F0ZXdheS50b3RhbFNoYXJkcyA8IDEwMCkge1xuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIENhbGN1bGF0aW5nIHRvdGFsIHNoYXJkczogJHtnYXRld2F5LnRvdGFsU2hhcmRzfWApXG4gICAgICAgIHJldHVybiBnYXRld2F5LnRvdGFsU2hhcmRzXG4gICAgICB9XG5cbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gQ2FsY3VsYXRpbmcgdG90YWwgc2hhcmRzYCwgZ2F0ZXdheS50b3RhbFNoYXJkcywgZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5KVxuICAgICAgLy8gQ2FsY3VsYXRlIGEgbXVsdGlwbGUgb2YgYG1heENvbmN1cnJlbmN5YCB3aGljaCBjYW4gYmUgdXNlZCB0byBjb25uZWN0IHRvIHRoZSBnYXRld2F5LlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgTWF0aC5jZWlsKFxuICAgICAgICAgIGdhdGV3YXkudG90YWxTaGFyZHMgL1xuICAgICAgICAgICAgLy8gSWYgYG1heENvbmN1cnJlbmN5YCBpcyAxIHdlIGNhbiBzYWZlbHkgdXNlIDE2LlxuICAgICAgICAgICAgKGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSA9PT0gMSA/IDE2IDogZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5KSxcbiAgICAgICAgKSAqIGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeVxuICAgICAgKVxuICAgIH0sXG4gICAgY2FsY3VsYXRlV29ya2VySWQoc2hhcmRJZCkge1xuICAgICAgY29uc3Qgd29ya2VySWQgPSBNYXRoLm1pbihzaGFyZElkICUgZ2F0ZXdheS5zaGFyZHNQZXJXb3JrZXIsIGdhdGV3YXkudG90YWxXb3JrZXJzIC0gMSlcbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgW0dhdGV3YXldIENhbGN1bGF0aW5nIHdvcmtlcklkOiBTaGFyZDogJHtzaGFyZElkfSAtPiBXb3JrZXI6ICR7d29ya2VySWR9IC0+IFBlciBXb3JrZXI6ICR7Z2F0ZXdheS5zaGFyZHNQZXJXb3JrZXJ9IC0+IFRvdGFsOiAke2dhdGV3YXkudG90YWxXb3JrZXJzfWAsXG4gICAgICApXG4gICAgICByZXR1cm4gd29ya2VySWRcbiAgICB9LFxuICAgIHByZXBhcmVCdWNrZXRzKCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3k7ICsraSkge1xuICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIFByZXBhcmluZyBidWNrZXRzIGZvciBjb25jdXJyZW5jeTogJHtpfWApXG4gICAgICAgIGdhdGV3YXkuYnVja2V0cy5zZXQoaSwge1xuICAgICAgICAgIHdvcmtlcnM6IFtdLFxuICAgICAgICAgIGlkZW50aWZ5UmVxdWVzdHM6IFtdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAvLyBPUkdBTklaRSBBTEwgU0hBUkRTIElOVE8gVEhFSVIgT1dOIEJVQ0tFVFNcbiAgICAgIGZvciAobGV0IHNoYXJkSWQgPSBnYXRld2F5LmZpcnN0U2hhcmRJZDsgc2hhcmRJZCA8PSBnYXRld2F5Lmxhc3RTaGFyZElkOyArK3NoYXJkSWQpIHtcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBQcmVwYXJpbmcgYnVja2V0cyBmb3Igc2hhcmQ6ICR7c2hhcmRJZH1gKVxuICAgICAgICBpZiAoc2hhcmRJZCA+PSBnYXRld2F5LnRvdGFsU2hhcmRzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaGFyZCAoaWQ6ICR7c2hhcmRJZH0pIGlzIGJpZ2dlciBvciBlcXVhbCB0byB0aGUgdXNlZCBhbW91bnQgb2YgdXNlZCBzaGFyZHMgd2hpY2ggaXMgJHtnYXRld2F5LnRvdGFsU2hhcmRzfWApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBidWNrZXRJZCA9IHNoYXJkSWQgJSBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3lcbiAgICAgICAgY29uc3QgYnVja2V0ID0gZ2F0ZXdheS5idWNrZXRzLmdldChidWNrZXRJZClcbiAgICAgICAgaWYgKCFidWNrZXQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgU2hhcmQgKGlkOiAke3NoYXJkSWR9KSBnb3QgYXNzaWduZWQgdG8gYW4gaWxsZWdhbCBidWNrZXQgaWQ6ICR7YnVja2V0SWR9LCBleHBlY3RlZCBhIGJ1Y2tldCBpZCBiZXR3ZWVuIDAgYW5kICR7XG4gICAgICAgICAgICAgIGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSAtIDFcbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZJTkQgQSBRVUVVRSBJTiBUSElTIEJVQ0tFVCBUSEFUIEhBUyBTUEFDRVxuICAgICAgICAvLyBjb25zdCB3b3JrZXIgPSBidWNrZXQud29ya2Vycy5maW5kKCh3KSA9PiB3LnF1ZXVlLmxlbmd0aCA8IGdhdGV3YXkuc2hhcmRzUGVyV29ya2VyKTtcbiAgICAgICAgY29uc3Qgd29ya2VySWQgPSBnYXRld2F5LmNhbGN1bGF0ZVdvcmtlcklkKHNoYXJkSWQpXG4gICAgICAgIGNvbnN0IHdvcmtlciA9IGJ1Y2tldC53b3JrZXJzLmZpbmQoKHcpID0+IHcuaWQgPT09IHdvcmtlcklkKVxuICAgICAgICBpZiAod29ya2VyKSB7XG4gICAgICAgICAgLy8gSUYgVEhFIFFVRVVFIEhBUyBTUEFDRSBKVVNUIEFERCBJVCBUTyBUSElTIFFVRVVFXG4gICAgICAgICAgd29ya2VyLnF1ZXVlLnB1c2goc2hhcmRJZClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBidWNrZXQud29ya2Vycy5wdXNoKHsgaWQ6IHdvcmtlcklkLCBxdWV1ZTogW3NoYXJkSWRdIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBidWNrZXQgb2YgZ2F0ZXdheS5idWNrZXRzLnZhbHVlcygpKSB7XG4gICAgICAgIGZvciAoY29uc3Qgd29ya2VyIG9mIGJ1Y2tldC53b3JrZXJzLnZhbHVlcygpKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXF1aXJlLWFycmF5LXNvcnQtY29tcGFyZVxuICAgICAgICAgIHdvcmtlci5xdWV1ZSA9IHdvcmtlci5xdWV1ZS5zb3J0KChhLCBiKSA9PiBhIC0gYilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgc3Bhd25TaGFyZHMoKSB7XG4gICAgICAvLyBQUkVQQVJFUyBBTEwgU0hBUkRTIElOIFNQRUNJRklDIEJVQ0tFVFNcbiAgICAgIGdhdGV3YXkucHJlcGFyZUJ1Y2tldHMoKVxuXG4gICAgICAvLyBQcmVmZXIgY29uY3VycmVuY3kgb2YgZm9yRWFjaCBpbnN0ZWFkIG9mIGZvcm9mXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgWy4uLmdhdGV3YXkuYnVja2V0cy5lbnRyaWVzKCldLm1hcChhc3luYyAoW2J1Y2tldElkLCBidWNrZXRdKSA9PiB7XG4gICAgICAgICAgZm9yIChjb25zdCB3b3JrZXIgb2YgYnVja2V0LndvcmtlcnMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2hhcmRJZCBvZiB3b3JrZXIucXVldWUpIHtcbiAgICAgICAgICAgICAgYXdhaXQgZ2F0ZXdheS50ZWxsV29ya2VyVG9JZGVudGlmeSh3b3JrZXIuaWQsIHNoYXJkSWQsIGJ1Y2tldElkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfSxcbiAgICBhc3luYyBzaHV0ZG93bihjb2RlLCByZWFzb24pIHtcbiAgICAgIGdhdGV3YXkuc2hhcmRzLmZvckVhY2goKHNoYXJkKSA9PiBzaGFyZC5jbG9zZShjb2RlLCByZWFzb24pKVxuXG4gICAgICBhd2FpdCBkZWxheSg1MDAwKVxuICAgIH0sXG4gICAgYXN5bmMgc2VuZFBheWxvYWQoc2hhcmRJZCwgcGF5bG9hZCkge1xuICAgICAgY29uc3Qgc2hhcmQgPSBnYXRld2F5LnNoYXJkcy5nZXQoc2hhcmRJZClcblxuICAgICAgaWYgKCFzaGFyZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNoYXJkIChpZDogJHtzaGFyZElkfSBub3QgZm91bmRgKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBzaGFyZC5zZW5kKHBheWxvYWQpXG4gICAgfSxcbiAgICBhc3luYyB0ZWxsV29ya2VyVG9JZGVudGlmeSh3b3JrZXJJZCwgc2hhcmRJZCwgYnVja2V0SWQpIHtcbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gdGVsbCB3b3JrZXIgdG8gaWRlbnRpZnkgKCR7d29ya2VySWR9LCAke3NoYXJkSWR9LCAke2J1Y2tldElkfSlgKVxuICAgICAgYXdhaXQgZ2F0ZXdheS5pZGVudGlmeShzaGFyZElkKVxuICAgIH0sXG4gICAgYXN5bmMgaWRlbnRpZnkoc2hhcmRJZDogbnVtYmVyKSB7XG4gICAgICBsZXQgc2hhcmQgPSB0aGlzLnNoYXJkcy5nZXQoc2hhcmRJZClcbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gaWRlbnRpZnlpbmcgJHtzaGFyZCA/ICdleGlzdGluZycgOiAnbmV3J30gc2hhcmQgKCR7c2hhcmRJZH0pYClcblxuICAgICAgaWYgKCFzaGFyZCkge1xuICAgICAgICBzaGFyZCA9IG5ldyBTaGFyZCh7XG4gICAgICAgICAgaWQ6IHNoYXJkSWQsXG4gICAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgY29tcHJlc3M6IHRoaXMuY29tcHJlc3MsXG4gICAgICAgICAgICBpbnRlbnRzOiB0aGlzLmludGVudHMsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB0aGlzLnByb3BlcnRpZXMsXG4gICAgICAgICAgICB0b2tlbjogdGhpcy50b2tlbixcbiAgICAgICAgICAgIHRvdGFsU2hhcmRzOiB0aGlzLnRvdGFsU2hhcmRzLFxuICAgICAgICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGV2ZW50czogb3B0aW9ucy5ldmVudHMgPz8ge30sXG4gICAgICAgICAgbG9nZ2VyOiB0aGlzLmxvZ2dlcixcbiAgICAgICAgICByZXF1ZXN0SWRlbnRpZnk6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGdhdGV3YXkuaWRlbnRpZnkoc2hhcmRJZClcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNoYXJkSXNSZWFkeTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtTaGFyZF0gU2hhcmQgIyR7c2hhcmRJZH0gaXMgcmVhZHlgKVxuICAgICAgICAgICAgYXdhaXQgZGVsYXkoZ2F0ZXdheS5zcGF3blNoYXJkRGVsYXkpXG4gICAgICAgICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW1NoYXJkXSBSZXNvbHZpbmcgc2hhcmQgaWRlbnRpZnkgcmVxdWVzdGApXG4gICAgICAgICAgICBnYXRld2F5LmJ1Y2tldHMuZ2V0KHNoYXJkSWQgJSBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kpIS5pZGVudGlmeVJlcXVlc3RzLnNoaWZ0KCk/LigpXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAodGhpcy5wcmVmZXJTbmFrZUNhc2UpIHtcbiAgICAgICAgICBzaGFyZC5mb3J3YXJkVG9Cb3QgPSBhc3luYyAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgc2hhcmQhLmV2ZW50cy5tZXNzYWdlPy4oc2hhcmQhLCBwYXlsb2FkKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hhcmRzLnNldChzaGFyZElkLCBzaGFyZClcbiAgICAgIH1cblxuICAgICAgY29uc3QgYnVja2V0ID0gZ2F0ZXdheS5idWNrZXRzLmdldChzaGFyZElkICUgZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5KVxuICAgICAgaWYgKCFidWNrZXQpIHJldHVyblxuXG4gICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgLy8gTWFyayB0aGF0IHdlIGFyZSBtYWtpbmcgYW4gaWRlbnRpZnkgcmVxdWVzdCBzbyBhbm90aGVyIGlzIG5vdCBtYWRlLlxuICAgICAgICBidWNrZXQuaWRlbnRpZnlSZXF1ZXN0cy5wdXNoKHJlc29sdmUpXG4gICAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gaWRlbnRpZnlpbmcgc2hhcmQgIygke3NoYXJkSWR9KS5gKVxuICAgICAgICAvLyBUaGlzIHdpbGwgdHJpZ2dlciBpZGVudGlmeSBhbmQgd2hlbiBSRUFEWSBpcyByZWNlaXZlZCBpdCB3aWxsIHJlc29sdmUgdGhlIGFib3ZlIHJlcXVlc3QuXG4gICAgICAgIHNoYXJkPy5pZGVudGlmeSgpXG4gICAgICB9KVxuICAgIH0sXG4gICAgYXN5bmMga2lsbChzaGFyZElkOiBudW1iZXIpIHtcbiAgICAgIGNvbnN0IHNoYXJkID0gdGhpcy5zaGFyZHMuZ2V0KHNoYXJkSWQpXG4gICAgICBpZiAoIXNoYXJkKSB7XG4gICAgICAgIHJldHVybiBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGtpbGwgc2hhcmQgYnV0IG5vdCBmb3VuZCAoJHtzaGFyZElkfSlgKVxuICAgICAgfVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGtpbGwgc2hhcmQgKCR7c2hhcmRJZH0pYClcbiAgICAgIHRoaXMuc2hhcmRzLmRlbGV0ZShzaGFyZElkKVxuICAgICAgYXdhaXQgc2hhcmQuc2h1dGRvd24oKVxuICAgIH0sXG4gICAgYXN5bmMgcmVxdWVzdElkZW50aWZ5KHNoYXJkSWQ6IG51bWJlcikge1xuICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSByZXF1ZXN0aW5nIGlkZW50aWZ5YClcbiAgICAgIC8vIGNvbnN0IGJ1Y2tldCA9IGdhdGV3YXkuYnVja2V0cy5nZXQoc2hhcmRJZCAlIGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSlcbiAgICAgIC8vIGlmICghYnVja2V0KSByZXR1cm5cblxuICAgICAgLy8gcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAvLyAgIGJ1Y2tldC5pZGVudGlmeVJlcXVlc3RzLnB1c2gocmVzb2x2ZSlcbiAgICAgIC8vIH0pXG4gICAgfSxcblxuICAgIC8vIEhlbHBlcnMgbWV0aG9kcyBiZWxvdyB0aGlzXG5cbiAgICBjYWxjdWxhdGVTaGFyZElkKGd1aWxkSWQsIHRvdGFsU2hhcmRzKSB7XG4gICAgICAvLyBJZiBub25lIGlzIHByb3ZpZGVkLCB1c2UgdGhlIHRvdGFsIHNoYXJkcyBudW1iZXIgZnJvbSBnYXRld2F5IG9iamVjdC5cbiAgICAgIGlmICghdG90YWxTaGFyZHMpIHRvdGFsU2hhcmRzID0gZ2F0ZXdheS50b3RhbFNoYXJkc1xuICAgICAgLy8gSWYgaXQgaXMgb25seSAxIHNoYXJkLCBpdCB3aWxsIGFsd2F5cyBiZSBzaGFyZCBpZCAwXG4gICAgICBpZiAodG90YWxTaGFyZHMgPT09IDEpIHtcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBjYWxjdWxhdGVTaGFyZElkICgxIHNoYXJkKWApXG4gICAgICAgIHJldHVybiAwXG4gICAgICB9XG5cbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gY2FsY3VsYXRlU2hhcmRJZCAoZ3VpbGRJZDogJHtndWlsZElkfSwgdG90YWxTaGFyZHM6ICR7dG90YWxTaGFyZHN9KWApXG4gICAgICByZXR1cm4gTnVtYmVyKChCaWdJbnQoZ3VpbGRJZCkgPj4gMjJuKSAlIEJpZ0ludCh0b3RhbFNoYXJkcykpXG4gICAgfSxcblxuICAgIGFzeW5jIGpvaW5Wb2ljZUNoYW5uZWwoZ3VpbGRJZCwgY2hhbm5lbElkLCBvcHRpb25zKSB7XG4gICAgICBjb25zdCBzaGFyZElkID0gZ2F0ZXdheS5jYWxjdWxhdGVTaGFyZElkKGd1aWxkSWQpXG5cbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gam9pblZvaWNlQ2hhbm5lbCBndWlsZElkOiAke2d1aWxkSWR9IGNoYW5uZWxJZDogJHtjaGFubmVsSWR9YClcblxuICAgICAgYXdhaXQgZ2F0ZXdheS5zZW5kUGF5bG9hZChzaGFyZElkLCB7XG4gICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5Wb2ljZVN0YXRlVXBkYXRlLFxuICAgICAgICBkOiB7XG4gICAgICAgICAgZ3VpbGRfaWQ6IGd1aWxkSWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjaGFubmVsX2lkOiBjaGFubmVsSWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBzZWxmX211dGU6IG9wdGlvbnM/LnNlbGZNdXRlID8/IGZhbHNlLFxuICAgICAgICAgIHNlbGZfZGVhZjogb3B0aW9ucz8uc2VsZkRlYWYgPz8gdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSxcblxuICAgIGFzeW5jIGVkaXRCb3RTdGF0dXMoZGF0YSkge1xuICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSBlZGl0Qm90U3RhdHVzIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YClcblxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIFsuLi5nYXRld2F5LnNoYXJkcy52YWx1ZXMoKV0ubWFwKGFzeW5jIChzaGFyZCkgPT4ge1xuICAgICAgICAgIGdhdGV3YXkuZWRpdFNoYXJkU3RhdHVzKHNoYXJkLmlkLCBkYXRhKVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICB9LFxuXG4gICAgYXN5bmMgZWRpdFNoYXJkU3RhdHVzKHNoYXJkSWQsIGRhdGEpIHtcbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gZWRpdFNoYXJkU3RhdHVzIHNoYXJkSWQ6ICR7c2hhcmRJZH0gLT4gZGF0YTogJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gKVxuXG4gICAgICBhd2FpdCBnYXRld2F5LnNlbmRQYXlsb2FkKHNoYXJkSWQsIHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlByZXNlbmNlVXBkYXRlLFxuICAgICAgICBkOiB7XG4gICAgICAgICAgc2luY2U6IG51bGwsXG4gICAgICAgICAgYWZrOiBmYWxzZSxcbiAgICAgICAgICBhY3Rpdml0aWVzOiBkYXRhLmFjdGl2aXRpZXMsXG4gICAgICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSxcblxuICAgIGFzeW5jIHJlcXVlc3RNZW1iZXJzKGd1aWxkSWQsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHNoYXJkSWQgPSBnYXRld2F5LmNhbGN1bGF0ZVNoYXJkSWQoZ3VpbGRJZClcblxuICAgICAgaWYgKGdhdGV3YXkuaW50ZW50cyAmJiAoIW9wdGlvbnM/LmxpbWl0IHx8IG9wdGlvbnMubGltaXQgPiAxKSAmJiAhKGdhdGV3YXkuaW50ZW50cyAmIEdhdGV3YXlJbnRlbnRzLkd1aWxkTWVtYmVycykpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGZldGNoIG1vcmUgdGhlbiAxIG1lbWJlciB3aXRob3V0IHRoZSBHVUlMRF9NRU1CRVJTIGludGVudCcpXG5cbiAgICAgIGdhdGV3YXkubG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gcmVxdWVzdE1lbWJlcnMgZ3VpbGRJZDogJHtndWlsZElkfSAtPiBkYXRhOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfWApXG5cbiAgICAgIGlmIChvcHRpb25zPy51c2VySWRzPy5sZW5ndGgpIHtcbiAgICAgICAgZ2F0ZXdheS5sb2dnZXIuZGVidWcoYFtHYXRld2F5XSByZXF1ZXN0TWVtYmVycyBndWlsZElkOiAke2d1aWxkSWR9IC0+IHNldHRpbmcgdXNlciBsaW1pdCBiYXNlZCBvbiB1c2VySWRzIGxlbmd0aDogJHtvcHRpb25zLnVzZXJJZHMubGVuZ3RofWApXG5cbiAgICAgICAgb3B0aW9ucy5saW1pdCA9IG9wdGlvbnMudXNlcklkcy5sZW5ndGhcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWVtYmVycyA9XG4gICAgICAgICFnYXRld2F5LmNhY2hlLnJlcXVlc3RNZW1iZXJzLmVuYWJsZWQgfHwgIW9wdGlvbnM/Lm5vbmNlXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogbmV3IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lbWJlcldpdGhVc2VyW10+PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uXG4gICAgICAgICAgICAgIGlmICghZ2F0ZXdheS5jYWNoZS5yZXF1ZXN0TWVtYmVycy5lbmFibGVkIHx8ICFvcHRpb25zPy5ub25jZSkge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJDYW4ndCByZXF1ZXN0IHRoZSBtZW1iZXJzIHdpdGhvdXQgdGhlIG5vbmNlIG9yIHdpdGggdGhlIGZlYXR1cmUgZGlzYWJsZWQuXCIpKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZ2F0ZXdheS5jYWNoZS5yZXF1ZXN0TWVtYmVycy5wZW5kaW5nLnNldChvcHRpb25zLm5vbmNlLCB7XG4gICAgICAgICAgICAgICAgbm9uY2U6IG9wdGlvbnMubm9uY2UsXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICBtZW1iZXJzOiBbXSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG5cbiAgICAgIGF3YWl0IGdhdGV3YXkuc2VuZFBheWxvYWQoc2hhcmRJZCwge1xuICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuUmVxdWVzdEd1aWxkTWVtYmVycyxcbiAgICAgICAgZDoge1xuICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgLy8gSWYgYSBxdWVyeSBpcyBwcm92aWRlZCB1c2UgaXQsIE9SIGlmIGEgbGltaXQgaXMgTk9UIHByb3ZpZGVkIHVzZSBcIlwiXG4gICAgICAgICAgcXVlcnk6IG9wdGlvbnM/LnF1ZXJ5ID8/IChvcHRpb25zPy5saW1pdCA/IHVuZGVmaW5lZCA6ICcnKSxcbiAgICAgICAgICBsaW1pdDogb3B0aW9ucz8ubGltaXQgPz8gMCxcbiAgICAgICAgICBwcmVzZW5jZXM6IG9wdGlvbnM/LnByZXNlbmNlcyA/PyBmYWxzZSxcbiAgICAgICAgICB1c2VyX2lkczogb3B0aW9ucz8udXNlcklkcz8ubWFwKChpZCkgPT4gaWQudG9TdHJpbmcoKSksXG4gICAgICAgICAgbm9uY2U6IG9wdGlvbnM/Lm5vbmNlLFxuICAgICAgICB9LFxuICAgICAgfSlcblxuICAgICAgcmV0dXJuIGF3YWl0IG1lbWJlcnNcbiAgICB9LFxuXG4gICAgYXN5bmMgbGVhdmVWb2ljZUNoYW5uZWwoZ3VpbGRJZCkge1xuICAgICAgY29uc3Qgc2hhcmRJZCA9IGdhdGV3YXkuY2FsY3VsYXRlU2hhcmRJZChndWlsZElkKVxuXG4gICAgICBnYXRld2F5LmxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGxlYXZlVm9pY2VDaGFubmVsIGd1aWxkSWQ6ICR7Z3VpbGRJZH0gU2hhcmQgJHtzaGFyZElkfWApXG5cbiAgICAgIGF3YWl0IGdhdGV3YXkuc2VuZFBheWxvYWQoc2hhcmRJZCwge1xuICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuVm9pY2VTdGF0ZVVwZGF0ZSxcbiAgICAgICAgZDoge1xuICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgY2hhbm5lbF9pZDogbnVsbCxcbiAgICAgICAgICBzZWxmX211dGU6IGZhbHNlLFxuICAgICAgICAgIHNlbGZfZGVhZjogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0sXG4gIH1cblxuICByZXR1cm4gZ2F0ZXdheVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUdhdGV3YXlNYW5hZ2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJZCBvZiB0aGUgZmlyc3QgU2hhcmQgd2hpY2ggc2hvdWxkIGdldCBjb250cm9sbGVkIGJ5IHRoaXMgbWFuYWdlci5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgZmlyc3RTaGFyZElkPzogbnVtYmVyXG4gIC8qKlxuICAgKiBJZCBvZiB0aGUgbGFzdCBTaGFyZCB3aGljaCBzaG91bGQgZ2V0IGNvbnRyb2xsZWQgYnkgdGhpcyBtYW5hZ2VyLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBsYXN0U2hhcmRJZD86IG51bWJlclxuICAvKipcbiAgICogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHNwYXduaW5nIG5leHQgc2hhcmQuIE9QVElNQUwgSVMgQUJPVkUgNTEwMC4gWU9VIERPTidUIFdBTlQgVE8gSElUIFRIRSBSQVRFIExJTUlUISEhXG4gICAqIEBkZWZhdWx0IDUzMDBcbiAgICovXG4gIHNwYXduU2hhcmREZWxheT86IG51bWJlclxuICAvKipcbiAgICogV2hldGhlciB0byBzZW5kIHRoZSBkaXNjb3JkIHBhY2tldHMgaW4gc25ha2UgY2FzZSBmb3JtLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHJlZmVyU25ha2VDYXNlPzogYm9vbGVhblxuICAvKipcbiAgICogVG90YWwgYW1vdW50IG9mIHNoYXJkcyB5b3VyIGJvdCB1c2VzLiBVc2VmdWwgZm9yIHplcm8tZG93bnRpbWUgdXBkYXRlcyBvciByZXNoYXJkaW5nLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICB0b3RhbFNoYXJkcz86IG51bWJlclxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiBzaGFyZHMgdG8gbG9hZCBwZXIgd29ya2VyLlxuICAgKiBAZGVmYXVsdCAyNVxuICAgKi9cbiAgc2hhcmRzUGVyV29ya2VyPzogbnVtYmVyXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgYW1vdW50IG9mIHdvcmtlcnMgdG8gdXNlIGZvciB5b3VyIGJvdC5cbiAgICogQGRlZmF1bHQgNFxuICAgKi9cbiAgdG90YWxXb3JrZXJzPzogbnVtYmVyXG4gIC8qKiBJbXBvcnRhbnQgZGF0YSB3aGljaCBpcyB1c2VkIGJ5IHRoZSBtYW5hZ2VyIHRvIGNvbm5lY3Qgc2hhcmRzIHRvIHRoZSBnYXRld2F5LiAqL1xuICBjb25uZWN0aW9uPzogQ2FtZWxpemU8RGlzY29yZEdldEdhdGV3YXlCb3Q+XG4gIC8qKiBXaGV0aGVyIGluY29taW5nIHBheWxvYWRzIGFyZSBjb21wcmVzc2VkIHVzaW5nIHpsaWIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjb21wcmVzcz86IGJvb2xlYW5cbiAgLyoqIFRoZSBjYWxjdWxhdGVkIGludGVudCB2YWx1ZSBvZiB0aGUgZXZlbnRzIHdoaWNoIHRoZSBzaGFyZCBzaG91bGQgcmVjZWl2ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgaW50ZW50cz86IG51bWJlclxuICAvKiogSWRlbnRpZnkgcHJvcGVydGllcyB0byB1c2UgKi9cbiAgcHJvcGVydGllcz86IHtcbiAgICAvKiogT3BlcmF0aW5nIHN5c3RlbSB0aGUgc2hhcmQgcnVucyBvbi5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiZGFyd2luXCIgfCBcImxpbnV4XCIgfCBcIndpbmRvd3NcIlxuICAgICAqL1xuICAgIG9zOiBzdHJpbmdcbiAgICAvKiogVGhlIFwiYnJvd3NlclwiIHdoZXJlIHRoaXMgc2hhcmQgaXMgcnVubmluZyBvbi5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiRGlzY29yZGVub1wiXG4gICAgICovXG4gICAgYnJvd3Nlcjogc3RyaW5nXG4gICAgLyoqIFRoZSBkZXZpY2Ugb24gd2hpY2ggdGhlIHNoYXJkIGlzIHJ1bm5pbmcuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcIkRpc2NvcmRlbm9cIlxuICAgICAqL1xuICAgIGRldmljZTogc3RyaW5nXG4gIH1cbiAgLyoqIEJvdCB0b2tlbiB3aGljaCBpcyB1c2VkIHRvIGNvbm5lY3QgdG8gRGlzY29yZCAqL1xuICB0b2tlbjogc3RyaW5nXG4gIC8qKiBUaGUgVVJMIG9mIHRoZSBnYXRld2F5IHdoaWNoIHNob3VsZCBiZSBjb25uZWN0ZWQgdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IFwid3NzOi8vZ2F0ZXdheS5kaXNjb3JkLmdnXCJcbiAgICovXG4gIHVybD86IHN0cmluZ1xuICAvKiogVGhlIGdhdGV3YXkgdmVyc2lvbiB3aGljaCBzaG91bGQgYmUgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHZlcnNpb24/OiBudW1iZXJcbiAgLyoqIFRoZSBldmVudHMgaGFuZGxlcnMgKi9cbiAgZXZlbnRzPzogU2hhcmRFdmVudHNcbiAgLyoqIFRoaXMgbWFuYWdlcnMgY2FjaGUgcmVsYXRlZCBzZXR0aW5ncy4gKi9cbiAgY2FjaGU/OiB7XG4gICAgcmVxdWVzdE1lbWJlcnM/OiB7XG4gICAgICAvKipcbiAgICAgICAqIFdoZXRoZXIgb3Igbm90IHJlcXVlc3QgbWVtYmVyIHJlcXVlc3RzIHNob3VsZCBiZSBjYWNoZWQuXG4gICAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAgICovXG4gICAgICBlbmFibGVkPzogYm9vbGVhblxuICAgIH1cbiAgfVxuICAvKipcbiAgICogVGhlIGxvZ2dlciB0aGF0IHRoZSBnYXRld2F5IG1hbmFnZXIgd2lsbCB1c2VcbiAgICogQGRlZmF1bHQgbG9nZ2VyIC8vIFRoZSBsb2dnZXIgZXhwb3J0ZWQgYnkgYEBkaXNjb3JkZW5vL3V0aWxzYFxuICAgKi9cbiAgbG9nZ2VyPzogUGljazx0eXBlb2YgbG9nZ2VyLCAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Vycm9yJyB8ICdmYXRhbCc+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheU1hbmFnZXIgZXh0ZW5kcyBSZXF1aXJlZDxDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnM+IHtcbiAgLyoqIFRoZSBtYXggY29uY3VycmVuY3kgYnVja2V0cy4gVGhvc2Ugd2lsbCBiZSBjcmVhdGVkIHdoZW4gdGhlIGBzcGF3blNoYXJkc2AgKHdoaWNoIGNhbGxzIGBwcmVwYXJlQnVja2V0c2AgdW5kZXIgdGhlIGhvb2QpIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiAqL1xuICBidWNrZXRzOiBNYXA8XG4gICAgbnVtYmVyLFxuICAgIHtcbiAgICAgIHdvcmtlcnM6IEFycmF5PHsgaWQ6IG51bWJlcjsgcXVldWU6IG51bWJlcltdIH0+XG4gICAgICAvKiogUmVxdWVzdHMgdG8gaWRlbnRpZnkgc2hhcmRzIGFyZSBtYWRlIGJhc2VkIG9uIHdoZXRoZXIgaXQgaXMgYXZhaWxhYmxlIHRvIGJlIG1hZGUuICovXG4gICAgICBpZGVudGlmeVJlcXVlc3RzOiBBcnJheTwodmFsdWU6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPikgPT4gdm9pZD5cbiAgICB9XG4gID5cbiAgLyoqIFRoZSBzaGFyZHMgdGhhdCBhcmUgY3JlYXRlZC4gKi9cbiAgc2hhcmRzOiBNYXA8bnVtYmVyLCBTaGFyZD5cbiAgLyoqIFRoZSBsb2dnZXIgZm9yIHRoZSBnYXRld2F5IG1hbmFnZXIgKi9cbiAgbG9nZ2VyOiBQaWNrPHR5cGVvZiBsb2dnZXIsICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InIHwgJ2ZhdGFsJz5cbiAgLyoqIERldGVybWluZSBtYXggbnVtYmVyIG9mIHNoYXJkcyB0byB1c2UgYmFzZWQgdXBvbiB0aGUgbWF4IGNvbmN1cnJlbmN5LiAqL1xuICBjYWxjdWxhdGVUb3RhbFNoYXJkczogKCkgPT4gbnVtYmVyXG4gIC8qKiBEZXRlcm1pbmUgdGhlIGlkIG9mIHRoZSB3b3JrZXIgd2hpY2ggaXMgaGFuZGxpbmcgYSBzaGFyZC4gKi9cbiAgY2FsY3VsYXRlV29ya2VySWQ6IChzaGFyZElkOiBudW1iZXIpID0+IG51bWJlclxuICAvKiogUHJlcGFyZXMgYWxsIHRoZSBidWNrZXRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgaWRlbnRpZnlpbmcgdGhlIHNoYXJkcy4gKi9cbiAgcHJlcGFyZUJ1Y2tldHM6ICgpID0+IHZvaWRcbiAgLyoqIFN0YXJ0IGlkZW50aWZ5aW5nIGFsbCB0aGUgc2hhcmRzLiAqL1xuICBzcGF3blNoYXJkczogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogU2h1dGRvd24gYWxsIHNoYXJkcy4gKi9cbiAgc2h1dGRvd246IChjb2RlOiBudW1iZXIsIHJlYXNvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNlbmRQYXlsb2FkOiAoc2hhcmRJZDogbnVtYmVyLCBwYXlsb2FkOiBTaGFyZFNvY2tldFJlcXVlc3QpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIEFsbG93cyB1c2VycyB0byBob29rIGluIGFuZCBjaGFuZ2UgdG8gY29tbXVuaWNhdGUgdG8gZGlmZmVyZW50IHdvcmtlcnMgYWNyb3NzIGRpZmZlcmVudCBzZXJ2ZXJzIG9yIGFueXRoaW5nIHRoZXkgbGlrZS4gRm9yIGV4YW1wbGUgdXNpbmcgcmVkaXMgcHVic3ViIHRvIHRhbGsgdG8gb3RoZXIgc2VydmVycy4gKi9cbiAgdGVsbFdvcmtlclRvSWRlbnRpZnk6ICh3b3JrZXJJZDogbnVtYmVyLCBzaGFyZElkOiBudW1iZXIsIGJ1Y2tldElkOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFRlbGwgdGhlIG1hbmFnZXIgdG8gaWRlbnRpZnkgYSBTaGFyZC4gSWYgdGhpcyBTaGFyZCBpcyBub3QgYWxyZWFkeSBtYW5hZ2VkIHRoaXMgd2lsbCBhbHNvIGFkZCB0aGUgU2hhcmQgdG8gdGhlIG1hbmFnZXIuICovXG4gIGlkZW50aWZ5OiAoc2hhcmRJZDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBLaWxsIGEgc2hhcmQuIENsb3NlIGEgc2hhcmRzIGNvbm5lY3Rpb24gdG8gRGlzY29yZCdzIGdhdGV3YXkgKGlmIGFueSkgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBtYW5hZ2VyLiAqL1xuICBraWxsOiAoc2hhcmRJZDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBUaGlzIGZ1bmN0aW9uIG1ha2VzIHN1cmUgdGhhdCB0aGUgYnVja2V0IGlzIGFsbG93ZWQgdG8gbWFrZSB0aGUgbmV4dCBpZGVudGlmeSByZXF1ZXN0LiAqL1xuICByZXF1ZXN0SWRlbnRpZnk6IChzaGFyZElkOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIENhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiBzaGFyZHMgYmFzZWQgb24gdGhlIGd1aWxkIGlkIGFuZCB0b3RhbCBzaGFyZHMuICovXG4gIGNhbGN1bGF0ZVNoYXJkSWQ6IChndWlsZElkOiBCaWdTdHJpbmcsIHRvdGFsU2hhcmRzPzogbnVtYmVyKSA9PiBudW1iZXJcbiAgLyoqXG4gICAqIENvbm5lY3RzIHRoZSBib3QgdXNlciB0byBhIHZvaWNlIG9yIHN0YWdlIGNoYW5uZWwuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gc2VuZHMgdGhlIF9VcGRhdGUgVm9pY2UgU3RhdGVfIGdhdGV3YXkgY29tbWFuZCBvdmVyIHRoZSBnYXRld2F5IGJlaGluZCB0aGUgc2NlbmVzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdGhlIHZvaWNlIGNoYW5uZWwgdG8gbGVhdmUgaXMgaW4uXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgeW91IHdhbnQgdG8gam9pbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBDT05ORUNUYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9Wb2ljZSBTdGF0ZSBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3VwZGF0ZS12b2ljZS1zdGF0ZX1cbiAgICovXG4gIGpvaW5Wb2ljZUNoYW5uZWw6IChndWlsZElkOiBCaWdTdHJpbmcsIGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogQXRMZWFzdE9uZTxPbWl0PFVwZGF0ZVZvaWNlU3RhdGUsICdndWlsZElkJyB8ICdjaGFubmVsSWQnPj4pID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBib3Qgc3RhdHVzIGluIGFsbCBzaGFyZHMgdGhhdCB0aGlzIGdhdGV3YXkgbWFuYWdlcy5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgVGhlIHN0YXR1cyBkYXRhIHRvIHNldCB0aGUgYm90cyBzdGF0dXMgdG8uXG4gICAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cbiAgICovXG4gIGVkaXRCb3RTdGF0dXM6IChkYXRhOiBTdGF0dXNVcGRhdGUpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBib3QncyBzdGF0dXMgb24gb25lIHNoYXJkLlxuICAgKlxuICAgKiBAcGFyYW0gc2hhcmRJZCBUaGUgc2hhcmQgaWQgdG8gZWRpdCB0aGUgc3RhdHVzIGZvci5cbiAgICogQHBhcmFtIGRhdGEgVGhlIHN0YXR1cyBkYXRhIHRvIHNldCB0aGUgYm90cyBzdGF0dXMgdG8uXG4gICAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cbiAgICovXG4gIGVkaXRTaGFyZFN0YXR1czogKHNoYXJkSWQ6IG51bWJlciwgZGF0YTogU3RhdHVzVXBkYXRlKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBsaXN0IG9mIG1lbWJlcnMgZm9yIGEgZ3VpbGQgb3ZlciB0aGUgZ2F0ZXdheS5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGlzdCBvZiBtZW1iZXJzIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBtZW1iZXJzLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiByZXF1ZXN0aW5nIHRoZSBlbnRpcmUgbWVtYmVyIGxpc3Q6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBHVUlMRF9NRU1CRVJTYCBpbnRlbnQuXG4gICAqXG4gICAqIElmIHJlcXVlc3RpbmcgcHJlc2VuY2VzICh7QGxpbmsgUmVxdWVzdEd1aWxkTWVtYmVycy5wcmVzZW5jZXMgfCBwcmVzZW5jZXN9IHNldCB0byBgdHJ1ZWApOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgR1VJTERfUFJFU0VOQ0VTYCBpbnRlbnQuXG4gICAqXG4gICAqIElmIHJlcXVlc3RpbmcgYSBwcmVmaXggKHtAbGluayBSZXF1ZXN0R3VpbGRNZW1iZXJzLnF1ZXJ5IHwgcXVlcnl9IG5vbi1gdW5kZWZpbmVkYCk6XG4gICAqIC0gUmV0dXJucyBhIG1heGltdW0gb2YgMTAwIG1lbWJlcnMuXG4gICAqXG4gICAqIElmIHJlcXVlc3RpbmcgYSB1c2VycyBieSBJRCAoe0BsaW5rIFJlcXVlc3RHdWlsZE1lbWJlcnMudXNlcklkcyB8IHVzZXJJZHN9IG5vbi1gdW5kZWZpbmVkYCk6XG4gICAqIC0gUmV0dXJucyBhIG1heGltdW0gb2YgMTAwIG1lbWJlcnMuXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIE1lbWJlcnMgQ2h1bmtfIGdhdGV3YXkgZXZlbnQgZm9yIGV2ZXJ5IDEwMDAgbWVtYmVycyBmZXRjaGVkLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheSNyZXF1ZXN0LWd1aWxkLW1lbWJlcnN9XG4gICAqL1xuICByZXF1ZXN0TWVtYmVyczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IE9taXQ8UmVxdWVzdEd1aWxkTWVtYmVycywgJ2d1aWxkSWQnPikgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyV2l0aFVzZXJbXT4+XG4gIC8qKlxuICAgKiBMZWF2ZXMgdGhlIHZvaWNlIGNoYW5uZWwgdGhlIGJvdCB1c2VyIGlzIGN1cnJlbnRseSBpbi5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBzZW5kcyB0aGUgX1VwZGF0ZSBWb2ljZSBTdGF0ZV8gZ2F0ZXdheSBjb21tYW5kIG92ZXIgdGhlIGdhdGV3YXkgYmVoaW5kIHRoZSBzY2VuZXMuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgdm9pY2UgY2hhbm5lbCB0byBsZWF2ZSBpcyBpbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYSBfVm9pY2UgU3RhdGUgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheSN1cGRhdGUtdm9pY2Utc3RhdGV9XG4gICAqL1xuICBsZWF2ZVZvaWNlQ2hhbm5lbDogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogVGhpcyBtYW5hZ2VycyBjYWNoZSByZWxhdGVkIHNldHRpbmdzLiAqL1xuICBjYWNoZToge1xuICAgIHJlcXVlc3RNZW1iZXJzOiB7XG4gICAgICAvKipcbiAgICAgICAqIFdoZXRoZXIgb3Igbm90IHJlcXVlc3QgbWVtYmVyIHJlcXVlc3RzIHNob3VsZCBiZSBjYWNoZWQuXG4gICAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAgICovXG4gICAgICBlbmFibGVkOiBib29sZWFuXG4gICAgICAvKiogVGhlIHBlbmRpbmcgcmVxdWVzdHMuICovXG4gICAgICBwZW5kaW5nOiBDb2xsZWN0aW9uPHN0cmluZywgUmVxdWVzdE1lbWJlclJlcXVlc3Q+XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdE1lbWJlclJlcXVlc3Qge1xuICAvKiogVGhlIHVuaXF1ZSBub25jZSBmb3IgdGhpcyByZXF1ZXN0LiAqL1xuICBub25jZTogc3RyaW5nXG4gIC8qKiBUaGUgcmVzb2x2ZXIgaGFuZGxlciB0byBydW4gd2hlbiBhbGwgbWVtYmVycyBhcnJpdmUuICovXG4gIHJlc29sdmU6ICh2YWx1ZTogQ2FtZWxpemU8RGlzY29yZE1lbWJlcldpdGhVc2VyW10+IHwgUHJvbWlzZUxpa2U8Q2FtZWxpemU8RGlzY29yZE1lbWJlcldpdGhVc2VyW10+PikgPT4gdm9pZFxuICAvKiogVGhlIG1lbWJlcnMgdGhhdCBoYXZlIGFscmVhZHkgYXJyaXZlZCBmb3IgdGhpcyByZXF1ZXN0LiAqL1xuICBtZW1iZXJzOiBEaXNjb3JkTWVtYmVyV2l0aFVzZXJbXVxufVxuIl0sIm5hbWVzIjpbIkdhdGV3YXlJbnRlbnRzIiwiR2F0ZXdheU9wY29kZXMiLCJDb2xsZWN0aW9uIiwiZGVsYXkiLCJsb2dnZXIiLCJTaGFyZCIsImNyZWF0ZUdhdGV3YXlNYW5hZ2VyIiwib3B0aW9ucyIsImNvbm5lY3Rpb25PcHRpb25zIiwiY29ubmVjdGlvbiIsInVybCIsInNoYXJkcyIsInNlc3Npb25TdGFydExpbWl0IiwibWF4Q29uY3VycmVuY3kiLCJyZW1haW5pbmciLCJ0b3RhbCIsInJlc2V0QWZ0ZXIiLCJnYXRld2F5IiwiZXZlbnRzIiwiY29tcHJlc3MiLCJpbnRlbnRzIiwicHJvcGVydGllcyIsIm9zIiwicHJvY2VzcyIsInBsYXRmb3JtIiwiYnJvd3NlciIsImRldmljZSIsInRva2VuIiwidmVyc2lvbiIsInRvdGFsU2hhcmRzIiwibGFzdFNoYXJkSWQiLCJmaXJzdFNoYXJkSWQiLCJ0b3RhbFdvcmtlcnMiLCJzaGFyZHNQZXJXb3JrZXIiLCJzcGF3blNoYXJkRGVsYXkiLCJwcmVmZXJTbmFrZUNhc2UiLCJNYXAiLCJidWNrZXRzIiwiY2FjaGUiLCJyZXF1ZXN0TWVtYmVycyIsImVuYWJsZWQiLCJwZW5kaW5nIiwiY2FsY3VsYXRlVG90YWxTaGFyZHMiLCJkZWJ1ZyIsIk1hdGgiLCJjZWlsIiwiY2FsY3VsYXRlV29ya2VySWQiLCJzaGFyZElkIiwid29ya2VySWQiLCJtaW4iLCJwcmVwYXJlQnVja2V0cyIsImkiLCJzZXQiLCJ3b3JrZXJzIiwiaWRlbnRpZnlSZXF1ZXN0cyIsIkVycm9yIiwiYnVja2V0SWQiLCJidWNrZXQiLCJnZXQiLCJ3b3JrZXIiLCJmaW5kIiwidyIsImlkIiwicXVldWUiLCJwdXNoIiwidmFsdWVzIiwic29ydCIsImEiLCJiIiwic3Bhd25TaGFyZHMiLCJQcm9taXNlIiwiYWxsIiwiZW50cmllcyIsIm1hcCIsInRlbGxXb3JrZXJUb0lkZW50aWZ5Iiwic2h1dGRvd24iLCJjb2RlIiwicmVhc29uIiwiZm9yRWFjaCIsInNoYXJkIiwiY2xvc2UiLCJzZW5kUGF5bG9hZCIsInBheWxvYWQiLCJzZW5kIiwiaWRlbnRpZnkiLCJyZXF1ZXN0SWRlbnRpZnkiLCJzaGFyZElzUmVhZHkiLCJzaGlmdCIsImZvcndhcmRUb0JvdCIsIm1lc3NhZ2UiLCJyZXNvbHZlIiwia2lsbCIsImRlbGV0ZSIsImNhbGN1bGF0ZVNoYXJkSWQiLCJndWlsZElkIiwiTnVtYmVyIiwiQmlnSW50Iiwiam9pblZvaWNlQ2hhbm5lbCIsImNoYW5uZWxJZCIsIm9wIiwiVm9pY2VTdGF0ZVVwZGF0ZSIsImQiLCJndWlsZF9pZCIsInRvU3RyaW5nIiwiY2hhbm5lbF9pZCIsInNlbGZfbXV0ZSIsInNlbGZNdXRlIiwic2VsZl9kZWFmIiwic2VsZkRlYWYiLCJlZGl0Qm90U3RhdHVzIiwiZGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJlZGl0U2hhcmRTdGF0dXMiLCJQcmVzZW5jZVVwZGF0ZSIsInNpbmNlIiwiYWZrIiwiYWN0aXZpdGllcyIsInN0YXR1cyIsImxpbWl0IiwiR3VpbGRNZW1iZXJzIiwidXNlcklkcyIsImxlbmd0aCIsIm1lbWJlcnMiLCJub25jZSIsInJlamVjdCIsIlJlcXVlc3RHdWlsZE1lbWJlcnMiLCJxdWVyeSIsInVuZGVmaW5lZCIsInByZXNlbmNlcyIsInVzZXJfaWRzIiwibGVhdmVWb2ljZUNoYW5uZWwiXSwibWFwcGluZ3MiOiJBQUFBLGtFQUFrRSxHQUNsRSxTQUNFQSxjQUFjLEVBQ2RDLGNBQWMsUUFPVCxvQkFBbUI7QUFDMUIsU0FBU0MsVUFBVSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sUUFBUSxvQkFBbUI7QUFDN0QsT0FBT0MsV0FBVyxhQUFZO0FBRzlCLE9BQU8sU0FBU0MscUJBQXFCQyxPQUFvQztJQUN2RSxNQUFNQyxvQkFBb0JELFFBQVFFLFVBQVUsSUFBSTtRQUM5Q0MsS0FBSztRQUNMQyxRQUFRO1FBQ1JDLG1CQUFtQjtZQUNqQkMsZ0JBQWdCO1lBQ2hCQyxXQUFXO1lBQ1hDLE9BQU87WUFDUEMsWUFBWSxPQUFPLEtB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
@@ -0,0 +1,23 @@
1
+ export var ShardState;
2
+ (function(ShardState) {
3
+ /** Shard is fully connected to the gateway and receiving events from Discord. */ ShardState[ShardState["Connected"] = 0] = "Connected";
4
+ /** Shard started to connect to the gateway. This is only used if the shard is not currently trying to identify or resume. */ ShardState[ShardState["Connecting"] = 1] = "Connecting";
5
+ /** Shard got disconnected and reconnection actions have been started. */ ShardState[ShardState["Disconnected"] = 2] = "Disconnected";
6
+ /** The shard is connected to the gateway but only heartbeating. At this state the shard has not been identified with discord. */ ShardState[ShardState["Unidentified"] = 3] = "Unidentified";
7
+ /** Shard is trying to identify with the gateway to create a new session. */ ShardState[ShardState["Identifying"] = 4] = "Identifying";
8
+ /** Shard is trying to resume a session with the gateway. */ ShardState[ShardState["Resuming"] = 5] = "Resuming";
9
+ /** Shard got shut down studied or due to a not (self) fixable error and may not attempt to reconnect on its own. */ ShardState[ShardState["Offline"] = 6] = "Offline";
10
+ })(ShardState || (ShardState = {}));
11
+ export var ShardSocketCloseCodes;
12
+ (function(ShardSocketCloseCodes) {
13
+ /** A regular Shard shutdown. */ ShardSocketCloseCodes[ShardSocketCloseCodes["Shutdown"] = 3000] = "Shutdown";
14
+ /** A resume has been requested and therefore the old connection needs to be closed. */ ShardSocketCloseCodes[ShardSocketCloseCodes["ResumeClosingOldConnection"] = 3024] = "ResumeClosingOldConnection";
15
+ /** Did not receive a heartbeat ACK in time.
16
+ * Closing the shard and creating a new session.
17
+ */ ShardSocketCloseCodes[ShardSocketCloseCodes["ZombiedConnection"] = 3010] = "ZombiedConnection";
18
+ /** Discordeno's gateway tests hae been finished, therefore the Shard can be turned off. */ ShardSocketCloseCodes[ShardSocketCloseCodes["TestingFinished"] = 3064] = "TestingFinished";
19
+ /** Special close code reserved for Discordeno's zero-downtime resharding system. */ ShardSocketCloseCodes[ShardSocketCloseCodes["Resharded"] = 3065] = "Resharded";
20
+ /** Shard is re-identifying therefore the old connection needs to be closed. */ ShardSocketCloseCodes[ShardSocketCloseCodes["ReIdentifying"] = 3066] = "ReIdentifying";
21
+ })(ShardSocketCloseCodes || (ShardSocketCloseCodes = {}));
22
+
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjdGl2aXR5VHlwZXMsIENhbWVsaXplLCBEaXNjb3JkQWN0aXZpdHksIERpc2NvcmRHYXRld2F5UGF5bG9hZCwgR2F0ZXdheU9wY29kZXMsIFByZXNlbmNlU3RhdHVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgdHlwZSBTaGFyZCBmcm9tICcuL1NoYXJkLmpzJ1xuXG5leHBvcnQgZW51bSBTaGFyZFN0YXRlIHtcbiAgLyoqIFNoYXJkIGlzIGZ1bGx5IGNvbm5lY3RlZCB0byB0aGUgZ2F0ZXdheSBhbmQgcmVjZWl2aW5nIGV2ZW50cyBmcm9tIERpc2NvcmQuICovXG4gIENvbm5lY3RlZCA9IDAsXG4gIC8qKiBTaGFyZCBzdGFydGVkIHRvIGNvbm5lY3QgdG8gdGhlIGdhdGV3YXkuIFRoaXMgaXMgb25seSB1c2VkIGlmIHRoZSBzaGFyZCBpcyBub3QgY3VycmVudGx5IHRyeWluZyB0byBpZGVudGlmeSBvciByZXN1bWUuICovXG4gIENvbm5lY3RpbmcgPSAxLFxuICAvKiogU2hhcmQgZ290IGRpc2Nvbm5lY3RlZCBhbmQgcmVjb25uZWN0aW9uIGFjdGlvbnMgaGF2ZSBiZWVuIHN0YXJ0ZWQuICovXG4gIERpc2Nvbm5lY3RlZCA9IDIsXG4gIC8qKiBUaGUgc2hhcmQgaXMgY29ubmVjdGVkIHRvIHRoZSBnYXRld2F5IGJ1dCBvbmx5IGhlYXJ0YmVhdGluZy4gQXQgdGhpcyBzdGF0ZSB0aGUgc2hhcmQgaGFzIG5vdCBiZWVuIGlkZW50aWZpZWQgd2l0aCBkaXNjb3JkLiAqL1xuICBVbmlkZW50aWZpZWQgPSAzLFxuICAvKiogU2hhcmQgaXMgdHJ5aW5nIHRvIGlkZW50aWZ5IHdpdGggdGhlIGdhdGV3YXkgdG8gY3JlYXRlIGEgbmV3IHNlc3Npb24uICovXG4gIElkZW50aWZ5aW5nID0gNCxcbiAgLyoqIFNoYXJkIGlzIHRyeWluZyB0byByZXN1bWUgYSBzZXNzaW9uIHdpdGggdGhlIGdhdGV3YXkuICovXG4gIFJlc3VtaW5nID0gNSxcbiAgLyoqIFNoYXJkIGdvdCBzaHV0IGRvd24gc3R1ZGllZCBvciBkdWUgdG8gYSBub3QgKHNlbGYpIGZpeGFibGUgZXJyb3IgYW5kIG1heSBub3QgYXR0ZW1wdCB0byByZWNvbm5lY3Qgb24gaXRzIG93bi4gKi9cbiAgT2ZmbGluZSA9IDYsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmRHYXRld2F5Q29uZmlnIHtcbiAgLyoqIFdoZXRoZXIgaW5jb21pbmcgcGF5bG9hZHMgYXJlIGNvbXByZXNzZWQgdXNpbmcgemxpYi5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNvbXByZXNzOiBib29sZWFuXG4gIC8qKiBUaGUgY2FsY3VsYXRlZCBpbnRlbnQgdmFsdWUgb2YgdGhlIGV2ZW50cyB3aGljaCB0aGUgc2hhcmQgc2hvdWxkIHJlY2VpdmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGludGVudHM6IG51bWJlclxuICAvKiogSWRlbnRpZnkgcHJvcGVydGllcyB0byB1c2UgKi9cbiAgcHJvcGVydGllczoge1xuICAgIC8qKiBPcGVyYXRpbmcgc3lzdGVtIHRoZSBzaGFyZCBydW5zIG9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJkYXJ3aW5cIiB8IFwibGludXhcIiB8IFwid2luZG93c1wiXG4gICAgICovXG4gICAgb3M6IHN0cmluZ1xuICAgIC8qKiBUaGUgXCJicm93c2VyXCIgd2hlcmUgdGhpcyBzaGFyZCBpcyBydW5uaW5nIG9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJEaXNjb3JkZW5vXCJcbiAgICAgKi9cbiAgICBicm93c2VyOiBzdHJpbmdcbiAgICAvKiogVGhlIGRldmljZSBvbiB3aGljaCB0aGUgc2hhcmQgaXMgcnVubmluZy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiRGlzY29yZGVub1wiXG4gICAgICovXG4gICAgZGV2aWNlOiBzdHJpbmdcbiAgfVxuICAvKiogQm90IHRva2VuIHdoaWNoIGlzIHVzZWQgdG8gY29ubmVjdCB0byBEaXNjb3JkICovXG4gIHRva2VuOiBzdHJpbmdcbiAgLyoqIFRoZSBVUkwgb2YgdGhlIGdhdGV3YXkgd2hpY2ggc2hvdWxkIGJlIGNvbm5lY3RlZCB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ3c3M6Ly9nYXRld2F5LmRpc2NvcmQuZ2dcIlxuICAgKi9cbiAgdXJsOiBzdHJpbmdcbiAgLyoqIFRoZSBnYXRld2F5IHZlcnNpb24gd2hpY2ggc2hvdWxkIGJlIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICB2ZXJzaW9uOiBudW1iZXJcbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2Ygc2hhcmRzIHRvIGNvbm5lY3QgdG8gYWNyb3NzIHRoZSBlbnRpcmUgYm90LlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICB0b3RhbFNoYXJkczogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmRIZWFydCB7XG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGUgaGVhcnRiZWF0IHdhcyBhY2tub3dsZWRnZWQgYnkgRGlzY29yZCBpbiB0aW1lLiAqL1xuICBhY2tub3dsZWRnZWQ6IGJvb2xlYW5cbiAgLyoqIEludGVydmFsIGJldHdlZW4gaGVhcnRiZWF0cyByZXF1ZXN0ZWQgYnkgRGlzY29yZC4gKi9cbiAgaW50ZXJ2YWw6IG51bWJlclxuICAvKiogSWQgb2YgdGhlIGludGVydmFsLCB3aGljaCBpcyB1c2VkIGZvciBzZW5kaW5nIHRoZSBoZWFydGJlYXRzLiAqL1xuICBpbnRlcnZhbElkPzogTm9kZUpTLlRpbWVvdXRcbiAgLyoqIFVuaXggKGluIG1pbGxpc2Vjb25kcykgdGltZXN0YW1wIHdoZW4gdGhlIGxhc3QgaGVhcnRiZWF0IEFDSyB3YXMgcmVjZWl2ZWQgZnJvbSBEaXNjb3JkLiAqL1xuICBsYXN0QWNrPzogbnVtYmVyXG4gIC8qKiBVbml4IHRpbWVzdGFtcCAoaW4gbWlsbGlzZWNvbmRzKSB3aGVuIHRoZSBsYXN0IGhlYXJ0YmVhdCB3YXMgc2VudC4gKi9cbiAgbGFzdEJlYXQ/OiBudW1iZXJcbiAgLyoqIFJvdW5kIHRyaXAgdGltZSAoaW4gbWlsbGlzZWNvbmRzKSBmcm9tIFNoYXJkIHRvIERpc2NvcmQgYW5kIGJhY2suXG4gICAqIENhbGN1bGF0ZWQgdXNpbmcgdGhlIGhlYXJ0YmVhdCBzeXN0ZW0uXG4gICAqIE5vdGU6IHRoaXMgdmFsdWUgaXMgdW5kZWZpbmVkIHVudGlsIHRoZSBmaXJzdCBoZWFydGJlYXQgdG8gRGlzY29yZCBoYXMgaGFwcGVuZWQuXG4gICAqL1xuICBydHQ/OiBudW1iZXJcbiAgLyoqIElkIG9mIHRoZSB0aW1lb3V0IHdoaWNoIGlzIHVzZWQgZm9yIHNlbmRpbmcgdGhlIGZpcnN0IGhlYXJ0YmVhdCB0byBEaXNjb3JkIHNpbmNlIGl0J3MgXCJzcGVjaWFsXCIuICovXG4gIHRpbWVvdXRJZD86IE5vZGVKUy5UaW1lb3V0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmRFdmVudHMge1xuICAvKiogQSBoZWFydGJlYXQgaGFzIGJlZW4gc2VuZC4gKi9cbiAgaGVhcnRiZWF0PzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogQSBoZWFydGJlYXQgQUNLIHdhcyByZWNlaXZlZC4gKi9cbiAgaGVhcnRiZWF0QWNrPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogU2hhcmQgaGFzIHJlY2VpdmVkIGEgSGVsbG8gcGF5bG9hZC4gKi9cbiAgaGVsbG8/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgU2hhcmRzIHNlc3Npb24gaGFzIGJlZW4gaW52YWxpZGF0ZWQuICovXG4gIGludmFsaWRTZXNzaW9uPzogKHNoYXJkOiBTaGFyZCwgcmVzdW1hYmxlOiBib29sZWFuKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgaGFzIHN0YXJ0ZWQgYSByZXN1bWUgYWN0aW9uLiAqL1xuICByZXN1bWluZz86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBoYXMgc3VjY2Vzc2Z1bGx5IHJlc3VtZWQgYW4gb2xkIHNlc3Npb24uICovXG4gIHJlc3VtZWQ/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBEaXNjb3JkIGhhcyByZXF1ZXN0ZWQgdGhlIFNoYXJkIHRvIHJlY29ubmVjdC4gKi9cbiAgcmVxdWVzdGVkUmVjb25uZWN0PzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIHN0YXJ0ZWQgdG8gY29ubmVjdCB0byBEaXNjb3JkJ3MgZ2F0ZXdheS4gKi9cbiAgY29ubmVjdGluZz86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBpcyBjb25uZWN0ZWQgd2l0aCBEaXNjb3JkJ3MgZ2F0ZXdheS4gKi9cbiAgY29ubmVjdGVkPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGhhcyBiZWVuIGRpc2Nvbm5lY3RlZCBmcm9tIERpc2NvcmQncyBnYXRld2F5LiAqL1xuICBkaXNjb25uZWN0ZWQ/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgaGFzIHN0YXJ0ZWQgdG8gaWRlbnRpZnkgaXRzZWxmIHRvIERpc2NvcmQuICovXG4gIGlkZW50aWZ5aW5nPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGhhcyBzdWNjZXNzZnVsbHkgYmVlbiBpZGVudGlmaWVkIGl0c2VsZiB3aXRoIERpc2NvcmQuICovXG4gIGlkZW50aWZpZWQ/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgaGFzIHJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIERpc2NvcmQuICovXG4gIG1lc3NhZ2U/OiAoc2hhcmQ6IFNoYXJkLCBwYXlsb2FkOiBDYW1lbGl6ZTxEaXNjb3JkR2F0ZXdheVBheWxvYWQ+KSA9PiB1bmtub3duXG59XG5cbmV4cG9ydCBlbnVtIFNoYXJkU29ja2V0Q2xvc2VDb2RlcyB7XG4gIC8qKiBBIHJlZ3VsYXIgU2hhcmQgc2h1dGRvd24uICovXG4gIFNodXRkb3duID0gMzAwMCxcbiAgLyoqIEEgcmVzdW1lIGhhcyBiZWVuIHJlcXVlc3RlZCBhbmQgdGhlcmVmb3JlIHRoZSBvbGQgY29ubmVjdGlvbiBuZWVkcyB0byBiZSBjbG9zZWQuICovXG4gIFJlc3VtZUNsb3NpbmdPbGRDb25uZWN0aW9uID0gMzAyNCxcbiAgLyoqIERpZCBub3QgcmVjZWl2ZSBhIGhlYXJ0YmVhdCBBQ0sgaW4gdGltZS5cbiAgICogQ2xvc2luZyB0aGUgc2hhcmQgYW5kIGNyZWF0aW5nIGEgbmV3IHNlc3Npb24uXG4gICAqL1xuICBab21iaWVkQ29ubmVjdGlvbiA9IDMwMTAsXG4gIC8qKiBEaXNjb3JkZW5vJ3MgZ2F0ZXdheSB0ZXN0cyBoYWUgYmVlbiBmaW5pc2hlZCwgdGhlcmVmb3JlIHRoZSBTaGFyZCBjYW4gYmUgdHVybmVkIG9mZi4gKi9cbiAgVGVzdGluZ0ZpbmlzaGVkID0gMzA2NCxcbiAgLyoqIFNwZWNpYWwgY2xvc2UgY29kZSByZXNlcnZlZCBmb3IgRGlzY29yZGVubydzIHplcm8tZG93bnRpbWUgcmVzaGFyZGluZyBzeXN0ZW0uICovXG4gIFJlc2hhcmRlZCA9IDMwNjUsXG4gIC8qKiBTaGFyZCBpcyByZS1pZGVudGlmeWluZyB0aGVyZWZvcmUgdGhlIG9sZCBjb25uZWN0aW9uIG5lZWRzIHRvIGJlIGNsb3NlZC4gKi9cbiAgUmVJZGVudGlmeWluZyA9IDMwNjYsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmRTb2NrZXRSZXF1ZXN0IHtcbiAgLyoqIFRoZSBPUC1Db2RlIGZvciB0aGUgcGF5bG9hZCB0byBzZW5kLiAqL1xuICBvcDogR2F0ZXdheU9wY29kZXNcbiAgLyoqIFBheWxvYWQgZGF0YS4gKi9cbiAgZDogdW5rbm93blxufVxuXG4vKiogaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXktZXZlbnRzI3VwZGF0ZS1wcmVzZW5jZSAqL1xuZXhwb3J0IGludGVyZmFjZSBCb3RTdGF0dXNVcGRhdGUge1xuICAvLyAvKiogVW5peCB0aW1lIChpbiBtaWxsaXNlY29uZHMpIG9mIHdoZW4gdGhlIGNsaWVudCB3ZW50IGlkbGUsIG9yIG51bGwgaWYgdGhlIGNsaWVudCBpcyBub3QgaWRsZSAqL1xuICBzaW5jZTogbnVtYmVyIHwgbnVsbFxuICAvKiogVGhlIHVzZXIncyBhY3Rpdml0aWVzICovXG4gIGFjdGl2aXRpZXM6IEJvdEFjdGl2aXR5W11cbiAgLyoqIFRoZSB1c2VyJ3MgbmV3IHN0YXR1cyAqL1xuICBzdGF0dXM6IGtleW9mIHR5cGVvZiBQcmVzZW5jZVN0YXR1c1xufVxuXG4vKiogaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXktZXZlbnRzI2FjdGl2aXR5LW9iamVjdCAqL1xuZXhwb3J0IGludGVyZmFjZSBCb3RBY3Rpdml0eSB7XG4gIG5hbWU6IHN0cmluZ1xuICB0eXBlOiBBY3Rpdml0eVR5cGVzXG4gIHVybD86IHN0cmluZ1xufVxuXG4vKiogaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXkjdXBkYXRlLXZvaWNlLXN0YXRlICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVZvaWNlU3RhdGUge1xuICAvKiogaWQgb2YgdGhlIGd1aWxkICovXG4gIGd1aWxkSWQ6IHN0cmluZ1xuICAvKiogaWQgb2YgdGhlIHZvaWNlIGNoYW5uZWwgY2xpZW50IHdhbnRzIHRvIGpvaW4gKG51bGwgaWYgZGlzY29ubmVjdGluZykgKi9cbiAgY2hhbm5lbElkOiBzdHJpbmcgfCBudWxsXG4gIC8qKiBJcyB0aGUgY2xpZW50IG11dGVkICovXG4gIHNlbGZNdXRlOiBib29sZWFuXG4gIC8qKiBJcyB0aGUgY2xpZW50IGRlYWZlbmVkICovXG4gIHNlbGZEZWFmOiBib29sZWFuXG59XG5cbi8qKiBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheS1ldmVudHMjdXBkYXRlLXByZXNlbmNlICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YXR1c1VwZGF0ZSB7XG4gIC8vIC8qKiBVbml4IHRpbWUgKGluIG1pbGxpc2Vjb25kcykgb2Ygd2hlbiB0aGUgY2xpZW50IHdlbnQgaWRsZSwgb3IgbnVsbCBpZiB0aGUgY2xpZW50IGlzIG5vdCBpZGxlICovXG4gIC8vIHNpbmNlOiBudW1iZXIgfCBudWxsO1xuICAvKiogVGhlIHVzZXIncyBhY3Rpdml0aWVzICovXG4gIGFjdGl2aXRpZXM/OiBDYW1lbGl6ZTxBcnJheTxPbWl0PERpc2NvcmRBY3Rpdml0eSwgJ2NyZWF0ZWRfYXQnPj4+XG4gIC8qKiBUaGUgdXNlcidzIG5ldyBzdGF0dXMgKi9cbiAgc3RhdHVzOiBrZXlvZiB0eXBlb2YgUHJlc2VuY2VTdGF0dXNcbiAgLy8gLyoqIFdoZXRoZXIgb3Igbm90IHRoZSBjbGllbnQgaXMgYWZrICovXG4gIC8vIGFmazogYm9vbGVhbjtcbn1cbiJdLCJuYW1lcyI6WyJTaGFyZFN0YXRlIiwiU2hhcmRTb2NrZXRDbG9zZUNvZGVzIl0sIm1hcHBpbmdzIjoiO1VBR1lBO0lBQ1YsK0VBQStFO0lBRS9FLDJIQUEySDtJQUUzSCx1RUFBdUU7SUFFdkUsK0hBQStIO0lBRS9ILDBFQUEwRTtJQUUxRSwwREFBMEQ7SUFFMUQsa0hBQWtIO0dBYnhHQSxlQUFBQTs7VUFrSEFDO0lBQ1YsOEJBQThCO0lBRTlCLHFGQUFxRjtJQUVyRjs7R0FFQztJQUVELHlGQUF5RjtJQUV6RixrRkFBa0Y7SUFFbEYsNkVBQTZFO0dBYm5FQSwwQkFBQUEifQ==
@@ -0,0 +1 @@
1
+ {"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.es2022.full.d.ts","../../types/dist/types/shared.d.ts","../../types/dist/types/discord.d.ts","../../types/dist/types/camel.d.ts","../../types/dist/types/discordeno.d.ts","../../types/dist/types/index.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../utils/dist/types/Collection.d.ts","../../utils/dist/types/base64.d.ts","../../utils/dist/types/logger.d.ts","../../utils/dist/types/bucket.d.ts","../../utils/dist/types/builders/embeds.d.ts","../../utils/dist/types/builders.d.ts","../../utils/dist/types/casing.d.ts","../../utils/dist/types/colors.d.ts","../../utils/dist/types/hash.d.ts","../../utils/dist/types/images.d.ts","../../utils/dist/types/oauth2.d.ts","../../utils/dist/types/permissions.d.ts","../../utils/dist/types/reactions.d.ts","../../utils/dist/types/token.d.ts","../../utils/dist/types/typeguards.d.ts","../../utils/dist/types/urlToBase64.d.ts","../../utils/dist/types/utils.d.ts","../../utils/dist/types/index.d.ts","../../../node_modules/@types/ws/index.d.ts","../src/types.ts","../src/Shard.ts","../src/manager.ts","../src/index.ts","../../../node_modules/@types/benchmark/index.d.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/chai-as-promised/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/mocha/index.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts"],"fileInfos":[{"version":"824cb491a40f7e8fdeb56f1df5edf91b23f3e3ee6b4cde84d4a99be32338faee","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc",{"version":"87d693a4920d794a73384b3c779cadcb8548ac6945aa7a925832fe2418c9527a","affectsGlobalScope":true},{"version":"76f838d5d49b65de83bc345c04aa54c62a3cfdb72a477dc0c0fce89a30596c30","affectsGlobalScope":true},{"version":"73e370058f82add1fdbc78ef3d1aab110108f2d5d9c857cb55d3361982347ace","affectsGlobalScope":true},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"d8670852241d4c6e03f2b89d67497a4bbefe29ecaa5a444e2c11a9b05e6fccc6","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","11149487ae8b36e8a3fec292a47363e37bfb7e6e5f9de01d9ebd6a0719eea141","1528b3b5e5ff45558688385c66486f8b36c2898596ce978cb811e78c5346b2fc","67ed38d0774a50a8fed0b216c90e28cb24c4d19ca4f78a514e229016e6cd51a7","07582cbfb5db069d688245f1b0a7b4c5f6816feafc37fa1e0faf68fa6f5740d8","c100bea1b5caf946651a87e05e736d9626e32c23f9461ecaeebcf52f88c0c2d7","efc7d584a33fe3422847783d228f315c4cd1afe74bd7cf8e3f0e4c1125129fef","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"a14ed46fa3f5ffc7a8336b497cd07b45c2084213aaca933a22443fcb2eef0d07","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"7fd7fcbf021a5845bdd9397d4649fcf2fe17152d2098140fc723099a215d19ad","affectsGlobalScope":true},"df3389f71a71a38bc931aaf1ef97a65fada98f0a27f19dd12f8b8de2b0f4e461","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"41fb2a1c108fbf46609ce5a451b7ec78eb9b5ada95fd5b94643e4b26397de0b3","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"a1d2988ad9d2aef7b9915a22b5e52c165c83a878f2851c35621409046bbe3c05","affectsGlobalScope":true},"bd3f5d05b6b5e4bfcea7739a45f3ffb4a7f4a3442ba7baf93e0200799285b8f1","4c775c2fccabf49483c03cd5e3673f87c1ffb6079d98e7b81089c3def79e29c6","8806ae97308ef26363bd7ec8071bca4d07fb575f905ee3d8a91aff226df6d618","af5bf1db6f1804fb0069039ae77a05d60133c77a2158d9635ea27b6bb2828a8f","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"674168aa3db414ea0a19b2a31d901b2d49705c7a495e43ffdc96928543010f8c","affectsGlobalScope":true},"fe1fd6afdfe77976d4c702f3746c05fb05a7e566845c890e0e970fe9376d6a90","313a0b063f5188037db113509de1b934a0e286f14e9479af24fada241435e707","afb1701fd4be413a8a5a88df6befdd4510c30a31372c07a4138facf61594c66d","87ef1a23caa071b07157c72077fa42b86d30568f9dc9e31eed24d5d14fc30ba8","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"c07146dbbbd8b347241b5df250a51e48f2d7bef19b1e187b1a3f20c849988ff1","45b1053e691c5af9bfe85060a3e1542835f8d84a7e6e2e77ca305251eda0cb3c","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"ae5507fc333d637dec9f37c6b3f4d423105421ea2820a64818de55db85214d66","affectsGlobalScope":true},{"version":"0666f4c99b8688c7be5956df8fecf5d1779d3b22f8f2a88258ae7072c7b6026f","affectsGlobalScope":true},"8abd0566d2854c4bd1c5e48e05df5c74927187f1541e6770001d9637ac41542e","54e854615c4eafbdd3fd7688bd02a3aafd0ccf0e87c98f79d3e9109f047ce6b8","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","8221b00f271cf7f535a8eeec03b0f80f0929c7a16116e2d2df089b41066de69b","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","7424817d5eb498771e6d1808d726ec38f75d2eaf3fa359edd5c0c540c52725c1","9a9634296cca836c3308923ba7aa094fa6ed76bb1e366d8ddcf5c65888ab1024",{"version":"bddce945d552a963c9733db106b17a25474eefcab7fc990157a2134ef55d4954","affectsGlobalScope":true},{"version":"7052b7b0c3829df3b4985bab2fd74531074b4835d5a7b263b75c82f0916ad62f","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","4b55240c2a03b2c71e98a7fc528b16136faa762211c92e781a01c37821915ea6","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"94c086dff8dbc5998749326bc69b520e8e4273fb5b7b58b50e0210e0885dfcde","affectsGlobalScope":true},{"version":"f5b5dc128973498b75f52b1b8c2d5f8629869104899733ae485100c2309b4c12","affectsGlobalScope":true},"ebe5facd12fd7745cda5f4bc3319f91fb29dc1f96e57e9c6f8b260a7cc5b67ee","79bad8541d5779c85e82a9fb119c1fe06af77a71cc40f869d62ad379473d4b75","37dc027f781c75f0f546e329cfac7cf92a6b289f42458f47a9adc25e516b6839",{"version":"629d20681ca284d9e38c0a019f647108f5fe02f9c59ac164d56f5694fc3faf4d","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","4634bf89fdcff293ecd8a355d9a9cd204de3dcd33cf6ed8b22b816e82c992050","dc1fefa18b09770dc6273150870fa47eb83905a28d811a7061894759dde56c94","cc8b2fc214effbe74eabdc71fd1890d42f0eb5ef872c146fe864e37410f45730","695d8c5610e24852fbc069eae7c9b189d91053a53f6660808b817f8a077526bd","ab6a6f7b4edeeea5656e295d97f5826fe6e48d6146cba1bc4b1c790a8b41f5a8","44917309cc4ead1c03f35d08efcfdc157ce9a5979e4d0e090aa53473fa4b7924","ee8f05b51381454341e7478c29b42b6fdda4af970f12184db36b083c9886a87b","2aa24fd580be092d96f4db06145942ba629937dbcc180c074c9e0585b430d762","18989e1ceb0573592f338b5db276858a48a1a9bcdf35972ba5b0d4afc2537aa6","0753f9b7e67b44e5162f0fac98bbb0ab8ca304476ba39c37bfc18ae59b559da2","9e7530754fad674397c173c775a6c6cd18e0188185981d00fbce07e51dfa0dd8","a86e34c3f985e61ca0779ebaa7fb0bbbdabd5ed65cd4adf1347b12b907b0db71","e160ddf2eb3b0dd861f5ee354b44eb4fd71da9b1e69ecee8558eda9bd7a1cb41","d7d37e6764bf8c56790def2f45b2719272f4d5436a4cce1e0ab8027e06661226","37ccf4d7dcb25b151f2440e3d6aa9a0ac343a7f55a575d14d825a174f8239e22","5f4003b2979f1876ec7cb61d3509ab9bedc943806d7a278114da9d46e4068f4c","41afeea97765dd34106dbbf75cef29cef4942d9868824c3147c9fec21cd2d589","cbfdb1789f46395d753d00912a169a43e77b1c9f8c02c1eeec23594910d66257","f7163a5d37d21f636f6a5cd1c064ce95fada21917859a64b6cc49a8b6fd5c1a8",{"version":"5536f23e5d312f3acaca9841a143c4d67d894b40941895dbd25a95b2fe261f49","signature":"dd1a7bfabf8df8ffeae280c6d7f9ee2f1030208dd4ba1e6803c762007d609ded"},{"version":"b188eba53d0964e31f229fbec5653df12be1ae70f57c7cf25f766ed3a0a9c728","signature":"dee7eb4177c5c6d723580b0b4b162684b3f92a7feafe33382eab39530524e339"},{"version":"3d5f6c6e6c6e49181eca6efc588b0f5bc5d3c36ec1fba947ea3c805100c18ec7","signature":"5a880ffe4aa47f005100da0d6402cfdf1569a19897a2c9ae88fcfddb00203a75"},{"version":"648f9ab16e1c2a253d72d83fba3ffffa6e057dbe1c02c9297611b36ce35877a4","signature":"92de9433b18fccee3d003563194f573e9f9d0a36943ba1b70b1dbbb4536176e1"},"d64fc2b6e71cc0aa542509bf15c62001e4b57a2a45a22c730fafbb58e192a91c","92edb6e257fa64d3baae647490e041912684f5dc1f243d0aedd60b4b383ff50b","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"4a2c144ea6f441e9616ec77fe9b1009b0cdf6db0cd9727b8d99623975cd6c693","affectsGlobalScope":true},{"version":"86e56d97b13ef0a58bc9c59aee782ae7d47d63802b5b32129ec5e5d62c20dbfa","affectsGlobalScope":true},"8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4",{"version":"90ebf5865e27d8966ef44b073e6e83b0ddd45058bab1d58b1e4b5a47d36396c4","affectsGlobalScope":true},"5b5337f28573ffdbc95c3653c4a7961d0f02fdf4788888253bf74a3b5a05443e","9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","85f8ebd7f245e8bf29da270e8b53dcdd17528826ffd27176c5fc7e426213ef5a","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","8e87660f5170c195ade218937e360484775be6a4e75a098665d9ba5a2e4cdc15"],"root":[[175,178]],"options":{"composite":false,"declaration":true,"declarationDir":"./types","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"inlineSources":false,"module":7,"noUnusedLocals":false,"noUnusedParameters":false,"outDir":"./","skipLibCheck":true,"strict":true,"target":9},"fileIdsList":[[118,121,147,155,180,181,182],[184],[118,155],[70],[105],[106,111,139],[107,118,119,126,136,147],[107,108,118,126],[109,148],[110,111,119,127],[111,136,144],[112,114,118,126],[105,113],[114,115],[118],[116,118],[105,118],[118,119,120,136,147],[118,119,120,133,136,139],[103,106,152],[114,118,121,126,136,147],[118,119,121,122,126,136,144,147],[121,123,136,144,147],[70,71,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154],[118,124],[125,147,152],[114,118,126,136],[127],[128],[105,129],[130,146,152],[131],[132],[118,133,134],[133,135,148,150],[106,118,136,137,138,139],[106,136,138],[136,137],[139],[140],[105,136],[118,142,143],[142,143],[111,126,136,144],[145],[126,146],[106,121,132,147],[111,148],[136,149],[125,150],[151],[106,111,118,120,129,136,147,150,152],[136,153],[121,136,155],[191,230],[191,215,230],[230],[191],[191,216,230],[191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229],[216,230],[231],[118,121,123,136,144,147,153,155],[80,84,147],[80,136,147],[75],[77,80,144,147],[126,144],[155],[75,155],[77,80,126,147],[72,73,76,79,106,118,136,147],[72,78],[76,80,106,139,147,155],[106,155],[96,106,155],[74,75,155],[80],[74,75,76,77,78,79,80,81,82,84,85,86,87,88,89,90,91,92,93,94,95,97,98,99,100,101,102],[80,87,88],[78,80,88,89],[79],[72,75,80],[80,84,88,89],[84],[78,80,83,147],[72,77,78,80,84,87],[106,136],[75,80,96,106,152,155],[69,153,173,174,175],[175,176,177],[69,173,175,176],[69,176],[65,66],[65],[65,66,67,68],[155,158],[160],[69],[156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172],[69,173,174,175]],"referencedMap":[[183,1],[185,2],[189,3],[70,4],[71,4],[105,5],[106,6],[107,7],[108,8],[109,9],[110,10],[111,11],[112,12],[113,13],[114,14],[115,14],[117,15],[116,16],[118,17],[119,18],[120,19],[104,20],[121,21],[122,22],[123,23],[155,24],[124,25],[125,26],[126,27],[127,28],[128,29],[129,30],[130,31],[131,32],[132,33],[133,34],[134,34],[135,35],[136,36],[138,37],[137,38],[139,39],[140,40],[141,41],[142,42],[143,43],[144,44],[145,45],[146,46],[147,47],[148,48],[149,49],[150,50],[151,51],[152,52],[153,53],[182,54],[215,55],[216,56],[191,57],[194,57],[213,55],[214,55],[204,55],[203,58],[201,55],[196,55],[209,55],[207,55],[211,55],[195,55],[208,55],[212,55],[197,55],[198,55],[210,55],[192,55],[199,55],[200,55],[202,55],[206,55],[217,59],[205,55],[193,55],[230,60],[224,59],[226,61],[225,59],[218,59],[219,59],[221,59],[223,59],[227,61],[228,61],[220,61],[222,61],[232,62],[174,63],[180,15],[87,64],[94,65],[86,64],[101,66],[78,67],[77,68],[100,69],[95,70],[98,71],[80,72],[79,73],[75,74],[74,75],[97,76],[76,77],[81,78],[85,78],[103,79],[102,78],[89,80],[90,81],[92,82],[88,83],[91,84],[96,69],[83,85],[84,86],[93,87],[73,88],[99,89],[176,90],[178,91],[177,92],[175,93],[67,94],[66,95],[68,94],[69,96],[156,69],[159,97],[161,98],[160,99],[162,99],[165,99],[173,100],[166,99],[167,99],[170,99]],"exportedModulesMap":[[183,1],[185,2],[189,3],[70,4],[71,4],[105,5],[106,6],[107,7],[108,8],[109,9],[110,10],[111,11],[112,12],[113,13],[114,14],[115,14],[117,15],[116,16],[118,17],[119,18],[120,19],[104,20],[121,21],[122,22],[123,23],[155,24],[124,25],[125,26],[126,27],[127,28],[128,29],[129,30],[130,31],[131,32],[132,33],[133,34],[134,34],[135,35],[136,36],[138,37],[137,38],[139,39],[140,40],[141,41],[142,42],[143,43],[144,44],[145,45],[146,46],[147,47],[148,48],[149,49],[150,50],[151,51],[152,52],[153,53],[182,54],[215,55],[216,56],[191,57],[194,57],[213,55],[214,55],[204,55],[203,58],[201,55],[196,55],[209,55],[207,55],[211,55],[195,55],[208,55],[212,55],[197,55],[198,55],[210,55],[192,55],[199,55],[200,55],[202,55],[206,55],[217,59],[205,55],[193,55],[230,60],[224,59],[226,61],[225,59],[218,59],[219,59],[221,59],[223,59],[227,61],[228,61],[220,61],[222,61],[232,62],[174,63],[180,15],[87,64],[94,65],[86,64],[101,66],[78,67],[77,68],[100,69],[95,70],[98,71],[80,72],[79,73],[75,74],[74,75],[97,76],[76,77],[81,78],[85,78],[103,79],[102,78],[89,80],[90,81],[92,82],[88,83],[91,84],[96,69],[83,85],[84,86],[93,87],[73,88],[99,89],[176,101],[178,91],[177,92],[175,93],[67,94],[66,95],[68,94],[69,96],[156,69],[159,97],[161,98],[160,99],[162,99],[165,99],[173,100],[166,99],[167,99],[170,99]],"semanticDiagnosticsPerFile":[179,183,185,184,181,186,187,188,189,190,70,71,105,106,107,108,109,110,111,112,113,114,115,117,116,118,119,120,104,154,121,122,123,155,124,125,126,127,128,129,130,131,132,133,134,135,136,138,137,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,182,215,216,191,194,213,214,204,203,201,196,209,207,211,195,208,212,197,198,210,192,199,200,202,206,217,205,193,230,229,224,226,225,218,219,221,223,227,228,220,222,232,231,174,180,62,63,12,10,11,16,15,2,17,18,19,20,21,22,23,24,3,25,4,26,30,27,28,29,31,32,33,5,34,35,36,37,6,41,38,39,40,42,7,43,48,49,44,45,46,47,8,53,50,51,52,54,9,55,64,56,57,60,58,59,1,61,14,13,87,94,86,101,78,77,100,95,98,80,79,75,74,97,76,81,82,85,72,103,102,89,90,92,88,91,96,83,84,93,73,99,176,178,177,175,67,66,68,69,65,156,157,159,161,160,162,163,164,165,173,158,166,167,168,169,170,171,172]},"version":"5.4.5"}