@discordeno/rest 19.0.0-next.f9bdfce → 19.0.0-next.faaa8af
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/invalidBucket.cjs +1 -2
- package/dist/cjs/manager.cjs +58 -26
- package/dist/cjs/queue.cjs +15 -17
- package/dist/cjs/routes.cjs +7 -33
- package/dist/esm/invalidBucket.js +1 -2
- package/dist/esm/manager.js +59 -27
- package/dist/esm/queue.js +15 -17
- package/dist/esm/routes.js +7 -33
- package/dist/esm/types.js +1 -1
- package/dist/esm/typings/routes.js +1 -1
- package/dist/types/invalidBucket.d.ts.map +1 -1
- package/dist/types/manager.d.ts.map +1 -1
- package/dist/types/queue.d.ts +5 -5
- package/dist/types/queue.d.ts.map +1 -1
- package/dist/types/routes.d.ts.map +1 -1
- package/dist/types/types.d.ts +58 -6
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/typings/routes.d.ts +5 -1
- package/dist/types/typings/routes.d.ts.map +1 -1
- package/package.json +10 -11
package/dist/esm/queue.js
CHANGED
|
@@ -13,7 +13,7 @@ export class Queue {
|
|
|
13
13
|
/** The time in milliseconds to wait before deleting this queue if it is empty. Defaults to 60000(one minute). */ this.deleteQueueDelay = 60000;
|
|
14
14
|
this.rest = rest;
|
|
15
15
|
this.url = options.url;
|
|
16
|
-
this.
|
|
16
|
+
this.identifier = options.identifier;
|
|
17
17
|
if (options.interval) this.interval = options.interval;
|
|
18
18
|
if (options.max) this.max = options.max;
|
|
19
19
|
if (options.remaining) this.remaining = options.remaining;
|
|
@@ -24,7 +24,6 @@ export class Queue {
|
|
|
24
24
|
return this.remaining > 0;
|
|
25
25
|
}
|
|
26
26
|
/** Pauses the execution until a request is allowed to be made. */ async waitUntilRequestAvailable() {
|
|
27
|
-
// eslint-disable-next-line no-async-promise-executor
|
|
28
27
|
return await new Promise(async (resolve)=>{
|
|
29
28
|
// If whatever amount of requests is left is more than the safety margin, allow the request
|
|
30
29
|
if (this.isRequestAllowed()) {
|
|
@@ -42,7 +41,7 @@ export class Queue {
|
|
|
42
41
|
// Mark as processing so other loops don't start
|
|
43
42
|
this.processing = true;
|
|
44
43
|
while(this.waiting.length > 0){
|
|
45
|
-
this.rest.logger.debug(`[Queue] ${this.
|
|
44
|
+
this.rest.logger.debug(`[Queue] ${this.queueType} ${this.url} process waiting while loop ran.`);
|
|
46
45
|
if (this.isRequestAllowed()) {
|
|
47
46
|
// Resolve the next item in the queue
|
|
48
47
|
this.waiting.shift()?.();
|
|
@@ -59,7 +58,7 @@ export class Queue {
|
|
|
59
58
|
// Mark as processing so other loops don't start
|
|
60
59
|
this.processingPending = true;
|
|
61
60
|
while(this.pending.length > 0){
|
|
62
|
-
this.rest.logger.debug(`Queue ${this.
|
|
61
|
+
this.rest.logger.debug(`Queue ${this.queueType} ${this.url} process pending while loop ran with ${this.pending.length}.`);
|
|
63
62
|
if (!this.firstRequest && !this.isRequestAllowed()) {
|
|
64
63
|
const now = Date.now();
|
|
65
64
|
const future = this.frozenAt + this.interval;
|
|
@@ -70,10 +69,10 @@ export class Queue {
|
|
|
70
69
|
if (request) {
|
|
71
70
|
const basicURL = this.rest.simplifyUrl(request.route, request.method);
|
|
72
71
|
// If this url is still rate limited, try again
|
|
73
|
-
const urlResetIn = this.rest.checkRateLimits(basicURL, this.
|
|
72
|
+
const urlResetIn = this.rest.checkRateLimits(basicURL, this.identifier);
|
|
74
73
|
if (urlResetIn) await delay(urlResetIn);
|
|
75
74
|
// IF A BUCKET EXISTS, CHECK THE BUCKET'S RATE LIMITS
|
|
76
|
-
const bucketResetIn = request.bucketId ? this.rest.checkRateLimits(request.bucketId, this.
|
|
75
|
+
const bucketResetIn = request.bucketId ? this.rest.checkRateLimits(request.bucketId, this.identifier) : false;
|
|
77
76
|
if (bucketResetIn) await delay(bucketResetIn);
|
|
78
77
|
this.firstRequest = false;
|
|
79
78
|
this.remaining--;
|
|
@@ -87,12 +86,11 @@ export class Queue {
|
|
|
87
86
|
this.pending.shift();
|
|
88
87
|
// Check if this request is able to be made globally
|
|
89
88
|
await this.rest.invalidBucket.waitUntilRequestAvailable();
|
|
90
|
-
if (request.requestBodyOptions?.headers?.authorization) request.requestBodyOptions.headers.authorization = this.requestAuthorization;
|
|
91
89
|
await this.rest.sendRequest(request)// Should be handled in sendRequest, this catch just prevents bots from dying
|
|
92
90
|
.catch(()=>null);
|
|
93
91
|
}
|
|
94
92
|
}
|
|
95
|
-
this.rest.logger.debug(`Queue ${this.
|
|
93
|
+
this.rest.logger.debug(`Queue ${this.queueType} ${this.url} process pending while loop exited with ${this.pending.length}.`);
|
|
96
94
|
// Mark as false so next pending request can be triggered by new loop.
|
|
97
95
|
this.processingPending = false;
|
|
98
96
|
this.cleanup();
|
|
@@ -122,22 +120,22 @@ export class Queue {
|
|
|
122
120
|
this.processPending();
|
|
123
121
|
return;
|
|
124
122
|
}
|
|
125
|
-
this.rest.logger.debug(`[Queue] ${this.
|
|
123
|
+
this.rest.logger.debug(`[Queue] ${this.queueType} ${this.url}. Delaying delete for ${this.deleteQueueDelay}ms`);
|
|
126
124
|
// Delete in a minute giving a bit of time to allow new requests that may reuse this queue
|
|
127
125
|
clearTimeout(this.deleteQueueTimeout);
|
|
128
126
|
this.deleteQueueTimeout = setTimeout(()=>{
|
|
129
127
|
if (!this.isQueueClearable()) {
|
|
130
|
-
this.rest.logger.debug(`[Queue] ${this.
|
|
128
|
+
this.rest.logger.debug(`[Queue] ${this.queueType} ${this.url}. is not clearable. Restarting processing of queue.`);
|
|
131
129
|
this.processPending();
|
|
132
130
|
return;
|
|
133
131
|
}
|
|
134
|
-
this.rest.logger.debug(`[Queue] ${this.
|
|
132
|
+
this.rest.logger.debug(`[Queue] ${this.queueType} ${this.url}. Deleting`);
|
|
135
133
|
if (this.timeoutId) clearTimeout(this.timeoutId);
|
|
136
134
|
// No requests have been requested for this queue so we nuke this queue
|
|
137
|
-
this.rest.queues.delete(`${this.
|
|
138
|
-
this.rest.logger.debug(`[Queue] ${this.
|
|
135
|
+
this.rest.queues.delete(`${this.identifier}${this.url}`);
|
|
136
|
+
this.rest.logger.debug(`[Queue] ${this.queueType} ${this.url}. Deleted! Remaining: (${this.rest.queues.size})`, [
|
|
139
137
|
...this.rest.queues.values()
|
|
140
|
-
].map((queue)=>`${queue.
|
|
138
|
+
].map((queue)=>`${queue.queueType}${queue.url}`));
|
|
141
139
|
}, this.deleteQueueDelay);
|
|
142
140
|
}
|
|
143
141
|
/** Simply checks if the queue is able to be cleared or it has requests pending. */ isQueueClearable() {
|
|
@@ -148,9 +146,9 @@ export class Queue {
|
|
|
148
146
|
if (this.processingPending) return false;
|
|
149
147
|
return true;
|
|
150
148
|
}
|
|
151
|
-
|
|
152
|
-
return this.
|
|
149
|
+
get queueType() {
|
|
150
|
+
return this.identifier.slice(0, this.identifier.indexOf(' '));
|
|
153
151
|
}
|
|
154
152
|
}
|
|
155
153
|
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWV1ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWxheSB9IGZyb20gJ0BkaXNjb3JkZW5vL3V0aWxzJ1xuaW1wb3J0IHR5cGUgeyBSZXN0TWFuYWdlciwgU2VuZFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi90eXBlcy5qcydcblxuZXhwb3J0IGNsYXNzIFF1ZXVlIHtcbiAgLyoqIFRoZSByZXN0IG1hbmFnZXIgKi9cbiAgcmVzdDogUmVzdE1hbmFnZXJcbiAgLyoqIEFtb3VudCBvZiByZXF1ZXN0cyB0aGF0IGhhdmUgYXJlIHJlbWFpbmluZy4gRGVmYXVsdHMgdG8gMS4gKi9cbiAgcmVtYWluaW5nOiBudW1iZXIgPSAxXG4gIC8qKiBNYXggcmVxdWVzdHMgZm9yIHRoaXMgdGhpcy4gRGVmYXVsdHMgdG8gMS4gKi9cbiAgbWF4OiBudW1iZXIgPSAxXG4gIC8qKiBUaGUgdGltZSB0aGF0IGRpc2NvcmQgYWxsb3dzIHRvIG1ha2UgdGhlIG1heCBudW1iZXIgb2YgcmVxdWVzdHMuIERlZmF1bHRzIHRvIDAgKi9cbiAgaW50ZXJ2YWw6IG51bWJlciA9IDBcbiAgLyoqIHRpbWVyIHRvIHJlc2V0IHRvIDAgKi9cbiAgdGltZW91dElkOiBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZFxuICAvKiogVGhlIHJlcXVlc3RzIHRoYXQgYXJlIGN1cnJlbnRseSBwZW5kaW5nLiAqL1xuICB3YWl0aW5nOiBBcnJheTwodmFsdWU6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPikgPT4gdm9pZD4gPSBbXVxuICAvKiogVGhlIHJlcXVlc3RzIHRoYXQgYXJlIGN1cnJlbnRseSBwZW5kaW5nLiAqL1xuICBwZW5kaW5nOiBTZW5kUmVxdWVzdE9wdGlvbnNbXSA9IFtdXG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGUgd2FpdGluZyBxdWV1ZSBpcyBhbHJlYWR5IHByb2Nlc3NpbmcuICovXG4gIHByb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZVxuICAvKiogV2hldGhlciBvciBub3QgdGhlIHBlbmRpbmcgcXVldWUgaXMgYWxyZWFkeSBwcm9jZXNzaW5nLiAqL1xuICBwcm9jZXNzaW5nUGVuZGluZzogYm9vbGVhbiA9IGZhbHNlXG4gIC8qKiBXaGV0aGVyIHRoZSBmaXJzdCByZXF1ZXN0IGlzIHBlbmRpbmcuICovXG4gIGZpcnN0UmVxdWVzdDogYm9vbGVhbiA9IGZhbHNlXG4gIC8qKiBUaGUgdXJsIHRoYXQgYWxsIHRoZSByZXF1ZXN0cyBpbiB0aGlzIHF1ZXVlIGFyZSBzZW50IHRvLiAqL1xuICB1cmw6IHN0cmluZ1xuICAvKiogV2hlbiByZXF1ZXN0cyBzdGFydGVkIGJlaW5nIG1hZGUgdG8gZGV0ZXJtaW5lIHdoZW4gdGhlIGludGVydmFsIHdpbGwgcmVzZXQgaXQuICovXG4gIGZyb3plbkF0OiBudW1iZXIgPSAwXG4gIC8qKiBUaGUgdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgZGVsZXRpbmcgdGhpcyBxdWV1ZSBpZiBpdCBpcyBlbXB0eS4gRGVmYXVsdHMgdG8gNjAwMDAob25lIG1pbnV0ZSkuICovXG4gIGRlbGV0ZVF1ZXVlRGVsYXk6IG51bWJlciA9IDYwMDAwXG4gIC8qKiBUaGUgdGltZW91dCBmb3IgdGhlIGRlbGV0aW9uIG9mIHRoaXMgcXVldWUgKi9cbiAgZGVsZXRlUXVldWVUaW1lb3V0PzogTm9kZUpTLlRpbWVvdXRcbiAgLyoqXG4gICAqIFRoZSBhdXRob3JpemF0aW9uIGJlaW5nIHVzZWQgZm9yIHRoZSByZXF1ZXN0cyBpbiB0aGlzIHF1ZXVlXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgaXMgYWxzbyB1c2VkIHRvIGdldCB0aGUga2V5IHRoaXMgcXVldWUgaXMgc3RvcmVkIGFzIGluIHRoZSBxdWV1ZSBtYXBwaW5nIG9mIHRoZSByZXN0IG1hbmFnZXJcbiAgICovXG4gIHJlcXVlc3RBdXRob3JpemF0aW9uOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihyZXN0OiBSZXN0TWFuYWdlciwgb3B0aW9uczogUXVldWVPcHRpb25zKSB7XG4gICAgdGhpcy5yZXN0ID0gcmVzdFxuICAgIHRoaXMudXJsID0gb3B0aW9ucy51cmxcbiAgICB0aGlzLnJlcXVlc3RBdXRob3JpemF0aW9uID0gb3B0aW9ucy5yZXF1ZXN0QXV0aG9yaXphdGlvblxuXG4gICAgaWYgKG9wdGlvbnMuaW50ZXJ2YWwpIHRoaXMuaW50ZXJ2YWwgPSBvcHRpb25zLmludGVydmFsXG4gICAgaWYgKG9wdGlvbnMubWF4KSB0aGlzLm1heCA9IG9wdGlvbnMubWF4XG4gICAgaWYgKG9wdGlvbnMucmVtYWluaW5nKSB0aGlzLnJlbWFpbmluZyA9IG9wdGlvbnMucmVtYWluaW5nXG4gICAgaWYgKG9wdGlvbnMudGltZW91dElkKSB0aGlzLnRpbWVvdXRJZCA9IG9wdGlvbnMudGltZW91dElkXG4gICAgaWYgKG9wdGlvbnMuZGVsZXRlUXVldWVEZWxheSkgdGhpcy5kZWxldGVRdWV1ZURlbGF5ID0gb3B0aW9ucy5kZWxldGVRdWV1ZURlbGF5XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgdGhlcmUgaXMgYW55IHJlbWFpbmluZyByZXF1ZXN0cyB0aGF0IGFyZSBhbGxvd2VkLiAqL1xuICBpc1JlcXVlc3RBbGxvd2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlbWFpbmluZyA+IDBcbiAgfVxuXG4gIC8qKiBQYXVzZXMgdGhlIGV4ZWN1dGlvbiB1bnRpbCBhIHJlcXVlc3QgaXMgYWxsb3dlZCB0byBiZSBtYWRlLiAqL1xuICBhc3luYyB3YWl0VW50aWxSZXF1ZXN0QXZhaWxhYmxlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hc3luYy1wcm9taXNlLWV4ZWN1dG9yXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICAvLyBJZiB3aGF0ZXZlciBhbW91bnQgb2YgcmVxdWVzdHMgaXMgbGVmdCBpcyBtb3JlIHRoYW4gdGhlIHNhZmV0eSBtYXJnaW4sIGFsbG93IHRoZSByZXF1ZXN0XG4gICAgICBpZiAodGhpcy5pc1JlcXVlc3RBbGxvd2VkKCkpIHtcbiAgICAgICAgLy8gdGhpcy5yZW1haW5pbmcrKztcbiAgICAgICAgcmVzb2x2ZSgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndhaXRpbmcucHVzaChyZXNvbHZlKVxuICAgICAgICBhd2FpdCB0aGlzLnByb2Nlc3NXYWl0aW5nKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqIFByb2Nlc3MgdGhlIHF1ZXVlIG9mIHJlcXVlc3RzIHdhaXRpbmcgdG8gYmUgaGFuZGxlZC4gKi9cbiAgYXN5bmMgcHJvY2Vzc1dhaXRpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gSWYgYWxyZWFkeSBwcm9jZXNzaW5nLCB0aGF0IGxvb3Agd2lsbCBoYW5kbGUgYWxsIHdhaXRpbmcgcmVxdWVzdHMuXG4gICAgaWYgKHRoaXMucHJvY2Vzc2luZykgcmV0dXJuXG4gICAgLy8gTWFyayBhcyBwcm9jZXNzaW5nIHNvIG90aGVyIGxvb3BzIGRvbid0IHN0YXJ0XG4gICAgdGhpcy5wcm9jZXNzaW5nID0gdHJ1ZVxuXG4gICAgd2hpbGUgKHRoaXMud2FpdGluZy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlc3QubG9nZ2VyLmRlYnVnKGBbUXVldWVdICR7dGhpcy5nZXRRdWV1ZVR5cGUoKX0gJHt0aGlzLnVybH0gcHJvY2VzcyB3YWl0aW5nIHdoaWxlIGxvb3AgcmFuLmApXG4gICAgICBpZiAodGhpcy5pc1JlcXVlc3RBbGxvd2VkKCkpIHtcbiAgICAgICAgLy8gUmVzb2x2ZSB0aGUgbmV4dCBpdGVtIGluIHRoZSBxdWV1ZVxuICAgICAgICB0aGlzLndhaXRpbmcuc2hpZnQoKT8uKClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IGRlbGF5KDEwMDApXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWFyayBhcyBmYWxzZSBzbyBuZXh0IHBlbmRpbmcgcmVxdWVzdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IG5ldyBsb29wLlxuICAgIHRoaXMucHJvY2Vzc2luZyA9IGZhbHNlXG4gIH1cblxuICAvKiogUHJvY2VzcyB0aGUgcXVldWUgb2YgYWxsIHJlcXVlc3RzIHBlbmRpbmcgdG8gYmUgc2VudC4gKi9cbiAgYXN5bmMgcHJvY2Vzc1BlbmRpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gSWYgYWxyZWFkeSBwcm9jZXNzaW5nLCB0aGF0IGxvb3Agd2lsbCBoYW5kbGUgYWxsIHBlbmRpbmcgcmVxdWVzdHMuXG4gICAgaWYgKHRoaXMucHJvY2Vzc2luZ1BlbmRpbmcgfHwgIXRoaXMucGVuZGluZy5sZW5ndGgpIHJldHVyblxuXG4gICAgLy8gTWFyayBhcyBwcm9jZXNzaW5nIHNvIG90aGVyIGxvb3BzIGRvbid0IHN0YXJ0XG4gICAgdGhpcy5wcm9jZXNzaW5nUGVuZGluZyA9IHRydWVcblxuICAgIHdoaWxlICh0aGlzLnBlbmRpbmcubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5yZXN0LmxvZ2dlci5kZWJ1ZyhgUXVldWUgJHt0aGlzLmdldFF1ZXVlVHlwZSgpfSAke3RoaXMudXJsfSBwcm9jZXNzIHBlbmRpbmcgd2hpbGUgbG9vcCByYW4gd2l0aCAke3RoaXMucGVuZGluZy5sZW5ndGh9LmApXG4gICAgICBpZiAoIXRoaXMuZmlyc3RSZXF1ZXN0ICYmICF0aGlzLmlzUmVxdWVzdEFsbG93ZWQoKSkge1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpXG4gICAgICAgIGNvbnN0IGZ1dHVyZSA9IHRoaXMuZnJvemVuQXQgKyB0aGlzLmludGVydmFsXG4gICAgICAgIGF3YWl0IGRlbGF5KGZ1dHVyZSA+IG5vdyA/IGZ1dHVyZSAtIG5vdyA6IDEwMDApXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnBlbmRpbmdbMF1cbiAgICAgIGlmIChyZXF1ZXN0KSB7XG4gICAgICAgIGNvbnN0IGJhc2ljVVJMID0gdGhpcy5yZXN0LnNpbXBsaWZ5VXJsKHJlcXVlc3Qucm91dGUsIHJlcXVlc3QubWV0aG9kKVxuXG4gICAgICAgIC8vIElmIHRoaXMgdXJsIGlzIHN0aWxsIHJhdGUgbGltaXRlZCwgdHJ5IGFnYWluXG4gICAgICAgIGNvbnN0IHVybFJlc2V0SW4gPSB0aGlzLnJlc3QuY2hlY2tSYXRlTGltaXRzKGJhc2ljVVJMLCB0aGlzLnJlcXVlc3RBdXRob3JpemF0aW9uKVxuICAgICAgICBpZiAodXJsUmVzZXRJbikgYXdhaXQgZGVsYXkodXJsUmVzZXRJbilcblxuICAgICAgICAvLyBJRiBBIEJVQ0tFVCBFWElTVFMsIENIRUNLIFRIRSBCVUNLRVQnUyBSQVRFIExJTUlUU1xuICAgICAgICBjb25zdCBidWNrZXRSZXNldEluID0gcmVxdWVzdC5idWNrZXRJZCA/IHRoaXMucmVzdC5jaGVja1JhdGVMaW1pdHMocmVxdWVzdC5idWNrZXRJZCwgdGhpcy5yZXF1ZXN0QXV0aG9yaXphdGlvbikgOiBmYWxzZVxuICAgICAgICBpZiAoYnVja2V0UmVzZXRJbikgYXdhaXQgZGVsYXkoYnVja2V0UmVzZXRJbilcblxuICAgICAgICB0aGlzLmZpcnN0UmVxdWVzdCA9IGZhbHNlXG4gICAgICAgIHRoaXMucmVtYWluaW5nLS1cblxuICAgICAgICBpZiAodGhpcy5yZW1haW5pbmcgPT09IDAgJiYgdGhpcy5pbnRlcnZhbCAhPT0gMCkge1xuICAgICAgICAgIHRoaXMudGltZW91dElkID8/PSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVtYWluaW5nID0gdGhpcy5tYXhcbiAgICAgICAgICAgIHRoaXMudGltZW91dElkID0gdW5kZWZpbmVkXG4gICAgICAgICAgfSwgdGhpcy5pbnRlcnZhbClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92ZSBmcm9tIHF1ZXVlLCB3ZSBhcmUgZXhlY3V0aW5nIGl0LlxuICAgICAgICB0aGlzLnBlbmRpbmcuc2hpZnQoKVxuICAgICAgICAvLyBDaGVjayBpZiB0aGlzIHJlcXVlc3QgaXMgYWJsZSB0byBiZSBtYWRlIGdsb2JhbGx5XG4gICAgICAgIGF3YWl0IHRoaXMucmVzdC5pbnZhbGlkQnVja2V0LndhaXRVbnRpbFJlcXVlc3RBdmFpbGFibGUoKVxuXG4gICAgICAgIGlmIChyZXF1ZXN0LnJlcXVlc3RCb2R5T3B0aW9ucz8uaGVhZGVycz8uYXV0aG9yaXphdGlvbikgcmVxdWVzdC5yZXF1ZXN0Qm9keU9wdGlvbnMuaGVhZGVycy5hdXRob3JpemF0aW9uID0gdGhpcy5yZXF1ZXN0QXV0aG9yaXphdGlvblxuXG4gICAgICAgIGF3YWl0IHRoaXMucmVzdFxuICAgICAgICAgIC5zZW5kUmVxdWVzdChyZXF1ZXN0KVxuICAgICAgICAgIC8vIFNob3VsZCBiZSBoYW5kbGVkIGluIHNlbmRSZXF1ZXN0LCB0aGlzIGNhdGNoIGp1c3QgcHJldmVudHMgYm90cyBmcm9tIGR5aW5nXG4gICAgICAgICAgLmNhdGNoKCgpID0+IG51bGwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZXN0LmxvZ2dlci5kZWJ1ZyhgUXVldWUgJHt0aGlzLmdldFF1ZXVlVHlwZSgpfSAke3RoaXMudXJsfSBwcm9jZXNzIHBlbmRpbmcgd2hpbGUgbG9vcCBleGl0ZWQgd2l0aCAke3RoaXMucGVuZGluZy5sZW5ndGh9LmApXG5cbiAgICAvLyBNYXJrIGFzIGZhbHNlIHNvIG5leHQgcGVuZGluZyByZXF1ZXN0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgbmV3IGxvb3AuXG4gICAgdGhpcy5wcm9jZXNzaW5nUGVuZGluZyA9IGZhbHNlXG4gICAgdGhpcy5jbGVhbnVwKClcbiAgfVxuXG4gIGhhbmRsZUNvbXBsZXRlZFJlcXVlc3QoaGVhZGVyczogeyBtYXg/OiBudW1iZXI7IGludGVydmFsPzogbnVtYmVyOyByZW1haW5pbmc/OiBudW1iZXIgfSk6IHZvaWQge1xuICAgIGlmIChoZWFkZXJzLm1heCA9PT0gMCkge1xuICAgICAgdGhpcy5yZW1haW5pbmcrK1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZyb3plbkF0KSB0aGlzLmZyb3plbkF0ID0gRGF0ZS5ub3coKVxuICAgIGlmIChoZWFkZXJzLmludGVydmFsICE9PSB1bmRlZmluZWQpIHRoaXMuaW50ZXJ2YWwgPSBoZWFkZXJzLmludGVydmFsXG4gICAgaWYgKGhlYWRlcnMucmVtYWluaW5nICE9PSB1bmRlZmluZWQpIHRoaXMucmVtYWluaW5nID0gaGVhZGVycy5yZW1haW5pbmdcblxuICAgIGlmICh0aGlzLnJlbWFpbmluZyA8PSAxKSB7XG4gICAgICB0aGlzLnRpbWVvdXRJZCA/Pz0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVtYWluaW5nID0gdGhpcy5tYXhcbiAgICAgICAgdGhpcy50aW1lb3V0SWQgPSB1bmRlZmluZWRcbiAgICAgIH0sIGhlYWRlcnMuaW50ZXJ2YWwpXG4gICAgfVxuICB9XG5cbiAgLyoqIENoZWNrcyBpZiBhIHJlcXVlc3QgaXMgYXZhaWxhYmxlIGFuZCBhZGRzIGl0IHRvIHRoZSBxdWV1ZS4gQWxzbyB0cmlnZ2VycyBxdWV1ZSBwcm9jZXNzaW5nIGlmIG5vdCBhbHJlYWR5IHByb2Nlc3NpbmcuICovXG4gIGFzeW5jIG1ha2VSZXF1ZXN0KG9wdGlvbnM6IFNlbmRSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMud2FpdFVudGlsUmVxdWVzdEF2YWlsYWJsZSgpXG4gICAgdGhpcy5wZW5kaW5nLnB1c2gob3B0aW9ucylcbiAgICB0aGlzLnByb2Nlc3NQZW5kaW5nKClcbiAgfVxuXG4gIC8qKiBDbGVhbnMgdXAgdGhlIHF1ZXVlIGJ5IGNoZWNraW5nIGlmIHRoZXJlIGlzIG5vdGhpbmcgbGVmdCBhbmQgcmVtb3ZpbmcgaXQuICovXG4gIGNsZWFudXAoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzUXVldWVDbGVhcmFibGUoKSkge1xuICAgICAgdGhpcy5wcm9jZXNzUGVuZGluZygpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLnJlc3QubG9nZ2VyLmRlYnVnKGBbUXVldWVdICR7dGhpcy5nZXRRdWV1ZVR5cGUoKX0gJHt0aGlzLnVybH0uIERlbGF5aW5nIGRlbGV0ZSBmb3IgJHt0aGlzLmRlbGV0ZVF1ZXVlRGVsYXl9bXNgKVxuXG4gICAgLy8gRGVsZXRlIGluIGEgbWludXRlIGdpdmluZyBhIGJpdCBvZiB0aW1lIHRvIGFsbG93IG5ldyByZXF1ZXN0cyB0aGF0IG1heSByZXVzZSB0aGlzIHF1ZXVlXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsZXRlUXVldWVUaW1lb3V0KVxuICAgIHRoaXMuZGVsZXRlUXVldWVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXNRdWV1ZUNsZWFyYWJsZSgpKSB7XG4gICAgICAgIHRoaXMucmVzdC5sb2dnZXIuZGVidWcoYFtRdWV1ZV0gJHt0aGlzLmdldFF1ZXVlVHlwZSgpfSAke3RoaXMudXJsfS4gaXMgbm90IGNsZWFyYWJsZS4gUmVzdGFydGluZyBwcm9jZXNzaW5nIG9mIHF1ZXVlLmApXG4gICAgICAgIHRoaXMucHJvY2Vzc1BlbmRpbmcoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgdGhpcy5yZXN0LmxvZ2dlci5kZWJ1ZyhgW1F1ZXVlXSAke3RoaXMuZ2V0UXVldWVUeXBlKCl9ICR7dGhpcy51cmx9LiBEZWxldGluZ2ApXG5cbiAgICAgIGlmICh0aGlzLnRpbWVvdXRJZCkgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dElkKVxuXG4gICAgICAvLyBObyByZXF1ZXN0cyBoYXZlIGJlZW4gcmVxdWVzdGVkIGZvciB0aGlzIHF1ZXVlIHNvIHdlIG51a2UgdGhpcyBxdWV1ZVxuICAgICAgdGhpcy5yZXN0LnF1ZXVlcy5kZWxldGUoYCR7dGhpcy5yZXF1ZXN0QXV0aG9yaXphdGlvbn0ke3RoaXMudXJsfWApXG4gICAgICB0aGlzLnJlc3QubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgW1F1ZXVlXSAke3RoaXMuZ2V0UXVldWVUeXBlKCl9ICR7dGhpcy51cmx9LiBEZWxldGVkISBSZW1haW5pbmc6ICgke3RoaXMucmVzdC5xdWV1ZXMuc2l6ZX0pYCxcbiAgICAgICAgWy4uLnRoaXMucmVzdC5xdWV1ZXMudmFsdWVzKCldLm1hcCgocXVldWUpID0+IGAke3F1ZXVlLmdldFF1ZXVlVHlwZSgpfSR7cXVldWUudXJsfWApLFxuICAgICAgKVxuICAgIH0sIHRoaXMuZGVsZXRlUXVldWVEZWxheSlcbiAgfVxuXG4gIC8qKiBTaW1wbHkgY2hlY2tzIGlmIHRoZSBxdWV1ZSBpcyBhYmxlIHRvIGJlIGNsZWFyZWQgb3IgaXQgaGFzIHJlcXVlc3RzIHBlbmRpbmcuICovXG4gIGlzUXVldWVDbGVhcmFibGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZmlyc3RSZXF1ZXN0KSByZXR1cm4gZmFsc2VcbiAgICBpZiAodGhpcy53YWl0aW5nLmxlbmd0aCA+IDApIHJldHVybiBmYWxzZVxuICAgIGlmICh0aGlzLnBlbmRpbmcubGVuZ3RoID4gMCkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKHRoaXMucHJvY2Vzc2luZykgcmV0dXJuIGZhbHNlXG4gICAgaWYgKHRoaXMucHJvY2Vzc2luZ1BlbmRpbmcpIHJldHVybiBmYWxzZVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGdldFF1ZXVlVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3RBdXRob3JpemF0aW9uLnNwbGl0KCcgJylbMF1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXVlT3B0aW9ucyB7XG4gIC8qKiBIb3cgbWFueSByZXF1ZXN0cyBhcmUgcmVtYWluaW5nLiBEZWZhdWx0cyB0byAxICovXG4gIHJlbWFpbmluZz86IG51bWJlclxuICAvKiogTWF4IG51bWJlciBvZiByZXF1ZXN0cyBhbGxvd2VkIGluIHRoaXMgdGhpcy4gRGVmYXVsdHMgdG8gMS4gKi9cbiAgbWF4PzogbnVtYmVyXG4gIC8qKiBUaGUgdGltZSBpbiBtaWxsaXNlY29uZHMgdGhhdCBkaXNjb3JkIGFsbG93cyB0byBtYWtlIHRoZSBtYXggbnVtYmVyIG9mIGludmFsaWQgcmVxdWVzdHMuIERlZmF1bHRzIHRvIDAgKi9cbiAgaW50ZXJ2YWw/OiBudW1iZXJcbiAgLyoqIHRpbWVyIHRvIHJlc2V0IHRvIDAgKi9cbiAgdGltZW91dElkPzogTm9kZUpTLlRpbWVvdXRcbiAgLyoqIFRoZSB1cmwgdGhpcyBxdWV1ZSB3aWxsIGJlIGhhbmRsaW5nLiAqL1xuICB1cmw6IHN0cmluZ1xuICAvKiogVGhlIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGRlbGV0aW5nIHRoaXMgcXVldWUgaWYgaXQgaXMgZW1wdHkuIERlZmF1bHRzIHRvIDYwMDAwKG9uZSBtaW51dGUpLiAqL1xuICBkZWxldGVRdWV1ZURlbGF5PzogbnVtYmVyXG4gIC8qKiBUaGUgYmFzZSBrZXkgdGhhdCBpZGVudGlmaWVzIHRoaXMgcXVldWUgaW4gdGhlIHJlc3QgbWFuYWdlciAqL1xuICByZXF1ZXN0QXV0aG9yaXphdGlvbjogc3RyaW5nXG59XG4iXSwibmFtZXMiOlsiZGVsYXkiLCJRdWV1ZSIsImNvbnN0cnVjdG9yIiwicmVzdCIsIm9wdGlvbnMiLCJyZW1haW5pbmciLCJtYXgiLCJpbnRlcnZhbCIsIndhaXRpbmciLCJwZW5kaW5nIiwicHJvY2Vzc2luZyIsInByb2Nlc3NpbmdQZW5kaW5nIiwiZmlyc3RSZXF1ZXN0IiwiZnJvemVuQXQiLCJkZWxldGVRdWV1ZURlbGF5IiwidXJsIiwicmVxdWVzdEF1dGhvcml6YXRpb24iLCJ0aW1lb3V0SWQiLCJpc1JlcXVlc3RBbGxvd2VkIiwid2FpdFVudGlsUmVxdWVzdEF2YWlsYWJsZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicHVzaCIsInByb2Nlc3NXYWl0aW5nIiwibGVuZ3RoIiwibG9nZ2VyIiwiZGVidWciLCJnZXRRdWV1ZVR5cGUiLCJzaGlmdCIsInByb2Nlc3NQZW5kaW5nIiwibm93IiwiRGF0ZSIsImZ1dHVyZSIsInJlcXVlc3QiLCJiYXNpY1VSTCIsInNpbXBsaWZ5VXJsIiwicm91dGUiLCJtZXRob2QiLCJ1cmxSZXNldEluIiwiY2hlY2tSYXRlTGltaXRzIiwiYnVja2V0UmVzZXRJbiIsImJ1Y2tldElkIiwic2V0VGltZW91dCIsInVuZGVmaW5lZCIsImludmFsaWRCdWNrZXQiLCJyZXF1ZXN0Qm9keU9wdGlvbnMiLCJoZWFkZXJzIiwiYXV0aG9yaXphdGlvbiIsInNlbmRSZXF1ZXN0IiwiY2F0Y2giLCJjbGVhbnVwIiwiaGFuZGxlQ29tcGxldGVkUmVxdWVzdCIsIm1ha2VSZXF1ZXN0IiwiaXNRdWV1ZUNsZWFyYWJsZSIsImNsZWFyVGltZW91dCIsImRlbGV0ZVF1ZXVlVGltZW91dCIsInF1ZXVlcyIsImRlbGV0ZSIsInNpemUiLCJ2YWx1ZXMiLCJtYXAiLCJxdWV1ZSIsInNwbGl0Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxLQUFLLFFBQVEsb0JBQW1CO0FBR3pDLE9BQU8sTUFBTUM7SUFxQ1hDLFlBQVlDLElBQWlCLEVBQUVDLE9BQXFCLENBQUU7UUFsQ3RELCtEQUErRCxRQUMvREMsWUFBb0I7UUFDcEIsK0NBQStDLFFBQy9DQyxNQUFjO1FBQ2QsbUZBQW1GLFFBQ25GQyxXQUFtQjtRQUduQiw2Q0FBNkMsUUFDN0NDLFVBQTRELEVBQUU7UUFDOUQsNkNBQTZDLFFBQzdDQyxVQUFnQyxFQUFFO1FBQ2xDLDREQUE0RCxRQUM1REMsYUFBc0I7UUFDdEIsNERBQTRELFFBQzVEQyxvQkFBNkI7UUFDN0IsMENBQTBDLFFBQzFDQyxlQUF3QjtRQUd4QixtRkFBbUYsUUFDbkZDLFdBQW1CO1FBQ25CLCtHQUErRyxRQUMvR0MsbUJBQTJCO1FBWXpCLElBQUksQ0FBQ1gsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ1ksR0FBRyxHQUFHWCxRQUFRVyxHQUFHO1FBQ3RCLElBQUksQ0FBQ0Msb0JBQW9CLEdBQUdaLFFBQVFZLG9CQUFvQjtRQUV4RCxJQUFJWixRQUFRRyxRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFRLEdBQUdILFFBQVFHLFFBQVE7UUFDdEQsSUFB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
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWV1ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWxheSB9IGZyb20gJ0BkaXNjb3JkZW5vL3V0aWxzJ1xuaW1wb3J0IHR5cGUgeyBSZXN0TWFuYWdlciwgU2VuZFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi90eXBlcy5qcydcblxuZXhwb3J0IGNsYXNzIFF1ZXVlIHtcbiAgLyoqIFRoZSByZXN0IG1hbmFnZXIgKi9cbiAgcmVzdDogUmVzdE1hbmFnZXJcbiAgLyoqIEFtb3VudCBvZiByZXF1ZXN0cyB0aGF0IGhhdmUgYXJlIHJlbWFpbmluZy4gRGVmYXVsdHMgdG8gMS4gKi9cbiAgcmVtYWluaW5nOiBudW1iZXIgPSAxXG4gIC8qKiBNYXggcmVxdWVzdHMgZm9yIHRoaXMgdGhpcy4gRGVmYXVsdHMgdG8gMS4gKi9cbiAgbWF4OiBudW1iZXIgPSAxXG4gIC8qKiBUaGUgdGltZSB0aGF0IGRpc2NvcmQgYWxsb3dzIHRvIG1ha2UgdGhlIG1heCBudW1iZXIgb2YgcmVxdWVzdHMuIERlZmF1bHRzIHRvIDAgKi9cbiAgaW50ZXJ2YWw6IG51bWJlciA9IDBcbiAgLyoqIHRpbWVyIHRvIHJlc2V0IHRvIDAgKi9cbiAgdGltZW91dElkOiBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZFxuICAvKiogVGhlIHJlcXVlc3RzIHRoYXQgYXJlIGN1cnJlbnRseSBwZW5kaW5nLiAqL1xuICB3YWl0aW5nOiBBcnJheTwodmFsdWU6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPikgPT4gdm9pZD4gPSBbXVxuICAvKiogVGhlIHJlcXVlc3RzIHRoYXQgYXJlIGN1cnJlbnRseSBwZW5kaW5nLiAqL1xuICBwZW5kaW5nOiBTZW5kUmVxdWVzdE9wdGlvbnNbXSA9IFtdXG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGUgd2FpdGluZyBxdWV1ZSBpcyBhbHJlYWR5IHByb2Nlc3NpbmcuICovXG4gIHByb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZVxuICAvKiogV2hldGhlciBvciBub3QgdGhlIHBlbmRpbmcgcXVldWUgaXMgYWxyZWFkeSBwcm9jZXNzaW5nLiAqL1xuICBwcm9jZXNzaW5nUGVuZGluZzogYm9vbGVhbiA9IGZhbHNlXG4gIC8qKiBXaGV0aGVyIHRoZSBmaXJzdCByZXF1ZXN0IGlzIHBlbmRpbmcuICovXG4gIGZpcnN0UmVxdWVzdDogYm9vbGVhbiA9IGZhbHNlXG4gIC8qKiBUaGUgdXJsIHRoYXQgYWxsIHRoZSByZXF1ZXN0cyBpbiB0aGlzIHF1ZXVlIGFyZSBzZW50IHRvLiAqL1xuICB1cmw6IHN0cmluZ1xuICAvKiogV2hlbiByZXF1ZXN0cyBzdGFydGVkIGJlaW5nIG1hZGUgdG8gZGV0ZXJtaW5lIHdoZW4gdGhlIGludGVydmFsIHdpbGwgcmVzZXQgaXQuICovXG4gIGZyb3plbkF0OiBudW1iZXIgPSAwXG4gIC8qKiBUaGUgdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgZGVsZXRpbmcgdGhpcyBxdWV1ZSBpZiBpdCBpcyBlbXB0eS4gRGVmYXVsdHMgdG8gNjAwMDAob25lIG1pbnV0ZSkuICovXG4gIGRlbGV0ZVF1ZXVlRGVsYXk6IG51bWJlciA9IDYwMDAwXG4gIC8qKiBUaGUgdGltZW91dCBmb3IgdGhlIGRlbGV0aW9uIG9mIHRoaXMgcXVldWUgKi9cbiAgZGVsZXRlUXVldWVUaW1lb3V0PzogTm9kZUpTLlRpbWVvdXRcbiAgLyoqXG4gICAqIFRoZSBpZGVudGlmaWVyIGZvciB0aGlzIHJlcXVlc3QsIG1heSBiZSB0aGUgcmVxdWVzdCBhdXRob3JpemF0aW9uIG9yIGZhbGxiYWNrIHRvIHRoZSBib3QgYXV0aFxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIGlzIHVzZWQgdG8gZ2V0IHRoZSBpZGVudGlmeSB0aGlzIHF1ZXVlIGZyb20gdGhlIHF1ZXVlIG1hcHBpbmcgb2YgdGhlIHJlc3QgbWFuYWdlclxuICAgKi9cbiAgaWRlbnRpZmllcjogc3RyaW5nXG5cbiAgY29uc3RydWN0b3IocmVzdDogUmVzdE1hbmFnZXIsIG9wdGlvbnM6IFF1ZXVlT3B0aW9ucykge1xuICAgIHRoaXMucmVzdCA9IHJlc3RcbiAgICB0aGlzLnVybCA9IG9wdGlvbnMudXJsXG4gICAgdGhpcy5pZGVudGlmaWVyID0gb3B0aW9ucy5pZGVudGlmaWVyXG5cbiAgICBpZiAob3B0aW9ucy5pbnRlcnZhbCkgdGhpcy5pbnRlcnZhbCA9IG9wdGlvbnMuaW50ZXJ2YWxcbiAgICBpZiAob3B0aW9ucy5tYXgpIHRoaXMubWF4ID0gb3B0aW9ucy5tYXhcbiAgICBpZiAob3B0aW9ucy5yZW1haW5pbmcpIHRoaXMucmVtYWluaW5nID0gb3B0aW9ucy5yZW1haW5pbmdcbiAgICBpZiAob3B0aW9ucy50aW1lb3V0SWQpIHRoaXMudGltZW91dElkID0gb3B0aW9ucy50aW1lb3V0SWRcbiAgICBpZiAob3B0aW9ucy5kZWxldGVRdWV1ZURlbGF5KSB0aGlzLmRlbGV0ZVF1ZXVlRGVsYXkgPSBvcHRpb25zLmRlbGV0ZVF1ZXVlRGVsYXlcbiAgfVxuXG4gIC8qKiBDaGVjayBpZiB0aGVyZSBpcyBhbnkgcmVtYWluaW5nIHJlcXVlc3RzIHRoYXQgYXJlIGFsbG93ZWQuICovXG4gIGlzUmVxdWVzdEFsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVtYWluaW5nID4gMFxuICB9XG5cbiAgLyoqIFBhdXNlcyB0aGUgZXhlY3V0aW9uIHVudGlsIGEgcmVxdWVzdCBpcyBhbGxvd2VkIHRvIGJlIG1hZGUuICovXG4gIGFzeW5jIHdhaXRVbnRpbFJlcXVlc3RBdmFpbGFibGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICAvLyBJZiB3aGF0ZXZlciBhbW91bnQgb2YgcmVxdWVzdHMgaXMgbGVmdCBpcyBtb3JlIHRoYW4gdGhlIHNhZmV0eSBtYXJnaW4sIGFsbG93IHRoZSByZXF1ZXN0XG4gICAgICBpZiAodGhpcy5pc1JlcXVlc3RBbGxvd2VkKCkpIHtcbiAgICAgICAgLy8gdGhpcy5yZW1haW5pbmcrKztcbiAgICAgICAgcmVzb2x2ZSgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndhaXRpbmcucHVzaChyZXNvbHZlKVxuICAgICAgICBhd2FpdCB0aGlzLnByb2Nlc3NXYWl0aW5nKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqIFByb2Nlc3MgdGhlIHF1ZXVlIG9mIHJlcXVlc3RzIHdhaXRpbmcgdG8gYmUgaGFuZGxlZC4gKi9cbiAgYXN5bmMgcHJvY2Vzc1dhaXRpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gSWYgYWxyZWFkeSBwcm9jZXNzaW5nLCB0aGF0IGxvb3Agd2lsbCBoYW5kbGUgYWxsIHdhaXRpbmcgcmVxdWVzdHMuXG4gICAgaWYgKHRoaXMucHJvY2Vzc2luZykgcmV0dXJuXG4gICAgLy8gTWFyayBhcyBwcm9jZXNzaW5nIHNvIG90aGVyIGxvb3BzIGRvbid0IHN0YXJ0XG4gICAgdGhpcy5wcm9jZXNzaW5nID0gdHJ1ZVxuXG4gICAgd2hpbGUgKHRoaXMud2FpdGluZy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlc3QubG9nZ2VyLmRlYnVnKGBbUXVldWVdICR7dGhpcy5xdWV1ZVR5cGV9ICR7dGhpcy51cmx9IHByb2Nlc3Mgd2FpdGluZyB3aGlsZSBsb29wIHJhbi5gKVxuICAgICAgaWYgKHRoaXMuaXNSZXF1ZXN0QWxsb3dlZCgpKSB7XG4gICAgICAgIC8vIFJlc29sdmUgdGhlIG5leHQgaXRlbSBpbiB0aGUgcXVldWVcbiAgICAgICAgdGhpcy53YWl0aW5nLnNoaWZ0KCk/LigpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBkZWxheSgxMDAwKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1hcmsgYXMgZmFsc2Ugc28gbmV4dCBwZW5kaW5nIHJlcXVlc3QgY2FuIGJlIHRyaWdnZXJlZCBieSBuZXcgbG9vcC5cbiAgICB0aGlzLnByb2Nlc3NpbmcgPSBmYWxzZVxuICB9XG5cbiAgLyoqIFByb2Nlc3MgdGhlIHF1ZXVlIG9mIGFsbCByZXF1ZXN0cyBwZW5kaW5nIHRvIGJlIHNlbnQuICovXG4gIGFzeW5jIHByb2Nlc3NQZW5kaW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIElmIGFscmVhZHkgcHJvY2Vzc2luZywgdGhhdCBsb29wIHdpbGwgaGFuZGxlIGFsbCBwZW5kaW5nIHJlcXVlc3RzLlxuICAgIGlmICh0aGlzLnByb2Nlc3NpbmdQZW5kaW5nIHx8ICF0aGlzLnBlbmRpbmcubGVuZ3RoKSByZXR1cm5cblxuICAgIC8vIE1hcmsgYXMgcHJvY2Vzc2luZyBzbyBvdGhlciBsb29wcyBkb24ndCBzdGFydFxuICAgIHRoaXMucHJvY2Vzc2luZ1BlbmRpbmcgPSB0cnVlXG5cbiAgICB3aGlsZSAodGhpcy5wZW5kaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucmVzdC5sb2dnZXIuZGVidWcoYFF1ZXVlICR7dGhpcy5xdWV1ZVR5cGV9ICR7dGhpcy51cmx9IHByb2Nlc3MgcGVuZGluZyB3aGlsZSBsb29wIHJhbiB3aXRoICR7dGhpcy5wZW5kaW5nLmxlbmd0aH0uYClcbiAgICAgIGlmICghdGhpcy5maXJzdFJlcXVlc3QgJiYgIXRoaXMuaXNSZXF1ZXN0QWxsb3dlZCgpKSB7XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KClcbiAgICAgICAgY29uc3QgZnV0dXJlID0gdGhpcy5mcm96ZW5BdCArIHRoaXMuaW50ZXJ2YWxcbiAgICAgICAgYXdhaXQgZGVsYXkoZnV0dXJlID4gbm93ID8gZnV0dXJlIC0gbm93IDogMTAwMClcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMucGVuZGluZ1swXVxuICAgICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgICAgY29uc3QgYmFzaWNVUkwgPSB0aGlzLnJlc3Quc2ltcGxpZnlVcmwocmVxdWVzdC5yb3V0ZSwgcmVxdWVzdC5tZXRob2QpXG5cbiAgICAgICAgLy8gSWYgdGhpcyB1cmwgaXMgc3RpbGwgcmF0ZSBsaW1pdGVkLCB0cnkgYWdhaW5cbiAgICAgICAgY29uc3QgdXJsUmVzZXRJbiA9IHRoaXMucmVzdC5jaGVja1JhdGVMaW1pdHMoYmFzaWNVUkwsIHRoaXMuaWRlbnRpZmllcilcbiAgICAgICAgaWYgKHVybFJlc2V0SW4pIGF3YWl0IGRlbGF5KHVybFJlc2V0SW4pXG5cbiAgICAgICAgLy8gSUYgQSBCVUNLRVQgRVhJU1RTLCBDSEVDSyBUSEUgQlVDS0VUJ1MgUkFURSBMSU1JVFNcbiAgICAgICAgY29uc3QgYnVja2V0UmVzZXRJbiA9IHJlcXVlc3QuYnVja2V0SWQgPyB0aGlzLnJlc3QuY2hlY2tSYXRlTGltaXRzKHJlcXVlc3QuYnVja2V0SWQsIHRoaXMuaWRlbnRpZmllcikgOiBmYWxzZVxuICAgICAgICBpZiAoYnVja2V0UmVzZXRJbikgYXdhaXQgZGVsYXkoYnVja2V0UmVzZXRJbilcblxuICAgICAgICB0aGlzLmZpcnN0UmVxdWVzdCA9IGZhbHNlXG4gICAgICAgIHRoaXMucmVtYWluaW5nLS1cblxuICAgICAgICBpZiAodGhpcy5yZW1haW5pbmcgPT09IDAgJiYgdGhpcy5pbnRlcnZhbCAhPT0gMCkge1xuICAgICAgICAgIHRoaXMudGltZW91dElkID8/PSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVtYWluaW5nID0gdGhpcy5tYXhcbiAgICAgICAgICAgIHRoaXMudGltZW91dElkID0gdW5kZWZpbmVkXG4gICAgICAgICAgfSwgdGhpcy5pbnRlcnZhbClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92ZSBmcm9tIHF1ZXVlLCB3ZSBhcmUgZXhlY3V0aW5nIGl0LlxuICAgICAgICB0aGlzLnBlbmRpbmcuc2hpZnQoKVxuICAgICAgICAvLyBDaGVjayBpZiB0aGlzIHJlcXVlc3QgaXMgYWJsZSB0byBiZSBtYWRlIGdsb2JhbGx5XG4gICAgICAgIGF3YWl0IHRoaXMucmVzdC5pbnZhbGlkQnVja2V0LndhaXRVbnRpbFJlcXVlc3RBdmFpbGFibGUoKVxuXG4gICAgICAgIGF3YWl0IHRoaXMucmVzdFxuICAgICAgICAgIC5zZW5kUmVxdWVzdChyZXF1ZXN0KVxuICAgICAgICAgIC8vIFNob3VsZCBiZSBoYW5kbGVkIGluIHNlbmRSZXF1ZXN0LCB0aGlzIGNhdGNoIGp1c3QgcHJldmVudHMgYm90cyBmcm9tIGR5aW5nXG4gICAgICAgICAgLmNhdGNoKCgpID0+IG51bGwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZXN0LmxvZ2dlci5kZWJ1ZyhgUXVldWUgJHt0aGlzLnF1ZXVlVHlwZX0gJHt0aGlzLnVybH0gcHJvY2VzcyBwZW5kaW5nIHdoaWxlIGxvb3AgZXhpdGVkIHdpdGggJHt0aGlzLnBlbmRpbmcubGVuZ3RofS5gKVxuXG4gICAgLy8gTWFyayBhcyBmYWxzZSBzbyBuZXh0IHBlbmRpbmcgcmVxdWVzdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IG5ldyBsb29wLlxuICAgIHRoaXMucHJvY2Vzc2luZ1BlbmRpbmcgPSBmYWxzZVxuICAgIHRoaXMuY2xlYW51cCgpXG4gIH1cblxuICBoYW5kbGVDb21wbGV0ZWRSZXF1ZXN0KGhlYWRlcnM6IHsgbWF4PzogbnVtYmVyOyBpbnRlcnZhbD86IG51bWJlcjsgcmVtYWluaW5nPzogbnVtYmVyIH0pOiB2b2lkIHtcbiAgICBpZiAoaGVhZGVycy5tYXggPT09IDApIHtcbiAgICAgIHRoaXMucmVtYWluaW5nKytcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghdGhpcy5mcm96ZW5BdCkgdGhpcy5mcm96ZW5BdCA9IERhdGUubm93KClcbiAgICBpZiAoaGVhZGVycy5pbnRlcnZhbCAhPT0gdW5kZWZpbmVkKSB0aGlzLmludGVydmFsID0gaGVhZGVycy5pbnRlcnZhbFxuICAgIGlmIChoZWFkZXJzLnJlbWFpbmluZyAhPT0gdW5kZWZpbmVkKSB0aGlzLnJlbWFpbmluZyA9IGhlYWRlcnMucmVtYWluaW5nXG5cbiAgICBpZiAodGhpcy5yZW1haW5pbmcgPD0gMSkge1xuICAgICAgdGhpcy50aW1lb3V0SWQgPz89IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbWFpbmluZyA9IHRoaXMubWF4XG4gICAgICAgIHRoaXMudGltZW91dElkID0gdW5kZWZpbmVkXG4gICAgICB9LCBoZWFkZXJzLmludGVydmFsKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBDaGVja3MgaWYgYSByZXF1ZXN0IGlzIGF2YWlsYWJsZSBhbmQgYWRkcyBpdCB0byB0aGUgcXVldWUuIEFsc28gdHJpZ2dlcnMgcXVldWUgcHJvY2Vzc2luZyBpZiBub3QgYWxyZWFkeSBwcm9jZXNzaW5nLiAqL1xuICBhc3luYyBtYWtlUmVxdWVzdChvcHRpb25zOiBTZW5kUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLndhaXRVbnRpbFJlcXVlc3RBdmFpbGFibGUoKVxuICAgIHRoaXMucGVuZGluZy5wdXNoKG9wdGlvbnMpXG4gICAgdGhpcy5wcm9jZXNzUGVuZGluZygpXG4gIH1cblxuICAvKiogQ2xlYW5zIHVwIHRoZSBxdWV1ZSBieSBjaGVja2luZyBpZiB0aGVyZSBpcyBub3RoaW5nIGxlZnQgYW5kIHJlbW92aW5nIGl0LiAqL1xuICBjbGVhbnVwKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1F1ZXVlQ2xlYXJhYmxlKCkpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1BlbmRpbmcoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5yZXN0LmxvZ2dlci5kZWJ1ZyhgW1F1ZXVlXSAke3RoaXMucXVldWVUeXBlfSAke3RoaXMudXJsfS4gRGVsYXlpbmcgZGVsZXRlIGZvciAke3RoaXMuZGVsZXRlUXVldWVEZWxheX1tc2ApXG5cbiAgICAvLyBEZWxldGUgaW4gYSBtaW51dGUgZ2l2aW5nIGEgYml0IG9mIHRpbWUgdG8gYWxsb3cgbmV3IHJlcXVlc3RzIHRoYXQgbWF5IHJldXNlIHRoaXMgcXVldWVcbiAgICBjbGVhclRpbWVvdXQodGhpcy5kZWxldGVRdWV1ZVRpbWVvdXQpXG4gICAgdGhpcy5kZWxldGVRdWV1ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5pc1F1ZXVlQ2xlYXJhYmxlKCkpIHtcbiAgICAgICAgdGhpcy5yZXN0LmxvZ2dlci5kZWJ1ZyhgW1F1ZXVlXSAke3RoaXMucXVldWVUeXBlfSAke3RoaXMudXJsfS4gaXMgbm90IGNsZWFyYWJsZS4gUmVzdGFydGluZyBwcm9jZXNzaW5nIG9mIHF1ZXVlLmApXG4gICAgICAgIHRoaXMucHJvY2Vzc1BlbmRpbmcoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgdGhpcy5yZXN0LmxvZ2dlci5kZWJ1ZyhgW1F1ZXVlXSAke3RoaXMucXVldWVUeXBlfSAke3RoaXMudXJsfS4gRGVsZXRpbmdgKVxuXG4gICAgICBpZiAodGhpcy50aW1lb3V0SWQpIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJZClcblxuICAgICAgLy8gTm8gcmVxdWVzdHMgaGF2ZSBiZWVuIHJlcXVlc3RlZCBmb3IgdGhpcyBxdWV1ZSBzbyB3ZSBudWtlIHRoaXMgcXVldWVcbiAgICAgIHRoaXMucmVzdC5xdWV1ZXMuZGVsZXRlKGAke3RoaXMuaWRlbnRpZmllcn0ke3RoaXMudXJsfWApXG4gICAgICB0aGlzLnJlc3QubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgW1F1ZXVlXSAke3RoaXMucXVldWVUeXBlfSAke3RoaXMudXJsfS4gRGVsZXRlZCEgUmVtYWluaW5nOiAoJHt0aGlzLnJlc3QucXVldWVzLnNpemV9KWAsXG4gICAgICAgIFsuLi50aGlzLnJlc3QucXVldWVzLnZhbHVlcygpXS5tYXAoKHF1ZXVlKSA9PiBgJHtxdWV1ZS5xdWV1ZVR5cGV9JHtxdWV1ZS51cmx9YCksXG4gICAgICApXG4gICAgfSwgdGhpcy5kZWxldGVRdWV1ZURlbGF5KVxuICB9XG5cbiAgLyoqIFNpbXBseSBjaGVja3MgaWYgdGhlIHF1ZXVlIGlzIGFibGUgdG8gYmUgY2xlYXJlZCBvciBpdCBoYXMgcmVxdWVzdHMgcGVuZGluZy4gKi9cbiAgaXNRdWV1ZUNsZWFyYWJsZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5maXJzdFJlcXVlc3QpIHJldHVybiBmYWxzZVxuICAgIGlmICh0aGlzLndhaXRpbmcubGVuZ3RoID4gMCkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKHRoaXMucGVuZGluZy5sZW5ndGggPiAwKSByZXR1cm4gZmFsc2VcbiAgICBpZiAodGhpcy5wcm9jZXNzaW5nKSByZXR1cm4gZmFsc2VcbiAgICBpZiAodGhpcy5wcm9jZXNzaW5nUGVuZGluZykgcmV0dXJuIGZhbHNlXG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZ2V0IHF1ZXVlVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkZW50aWZpZXIuc2xpY2UoMCwgdGhpcy5pZGVudGlmaWVyLmluZGV4T2YoJyAnKSlcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXVlT3B0aW9ucyB7XG4gIC8qKiBIb3cgbWFueSByZXF1ZXN0cyBhcmUgcmVtYWluaW5nLiBEZWZhdWx0cyB0byAxICovXG4gIHJlbWFpbmluZz86IG51bWJlclxuICAvKiogTWF4IG51bWJlciBvZiByZXF1ZXN0cyBhbGxvd2VkIGluIHRoaXMgdGhpcy4gRGVmYXVsdHMgdG8gMS4gKi9cbiAgbWF4PzogbnVtYmVyXG4gIC8qKiBUaGUgdGltZSBpbiBtaWxsaXNlY29uZHMgdGhhdCBkaXNjb3JkIGFsbG93cyB0byBtYWtlIHRoZSBtYXggbnVtYmVyIG9mIGludmFsaWQgcmVxdWVzdHMuIERlZmF1bHRzIHRvIDAgKi9cbiAgaW50ZXJ2YWw/OiBudW1iZXJcbiAgLyoqIHRpbWVyIHRvIHJlc2V0IHRvIDAgKi9cbiAgdGltZW91dElkPzogTm9kZUpTLlRpbWVvdXRcbiAgLyoqIFRoZSB1cmwgdGhpcyBxdWV1ZSB3aWxsIGJlIGhhbmRsaW5nLiAqL1xuICB1cmw6IHN0cmluZ1xuICAvKiogVGhlIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGRlbGV0aW5nIHRoaXMgcXVldWUgaWYgaXQgaXMgZW1wdHkuIERlZmF1bHRzIHRvIDYwMDAwKG9uZSBtaW51dGUpLiAqL1xuICBkZWxldGVRdWV1ZURlbGF5PzogbnVtYmVyXG4gIC8qKiBUaGUgYmFzZSBrZXkgdGhhdCBpZGVudGlmaWVzIHRoaXMgcXVldWUgaW4gdGhlIHJlc3QgbWFuYWdlciAqL1xuICBpZGVudGlmaWVyOiBzdHJpbmdcbn1cbiJdLCJuYW1lcyI6WyJkZWxheSIsIlF1ZXVlIiwiY29uc3RydWN0b3IiLCJyZXN0Iiwib3B0aW9ucyIsInJlbWFpbmluZyIsIm1heCIsImludGVydmFsIiwid2FpdGluZyIsInBlbmRpbmciLCJwcm9jZXNzaW5nIiwicHJvY2Vzc2luZ1BlbmRpbmciLCJmaXJzdFJlcXVlc3QiLCJmcm96ZW5BdCIsImRlbGV0ZVF1ZXVlRGVsYXkiLCJ1cmwiLCJpZGVudGlmaWVyIiwidGltZW91dElkIiwiaXNSZXF1ZXN0QWxsb3dlZCIsIndhaXRVbnRpbFJlcXVlc3RBdmFpbGFibGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInB1c2giLCJwcm9jZXNzV2FpdGluZyIsImxlbmd0aCIsImxvZ2dlciIsImRlYnVnIiwicXVldWVUeXBlIiwic2hpZnQiLCJwcm9jZXNzUGVuZGluZyIsIm5vdyIsIkRhdGUiLCJmdXR1cmUiLCJyZXF1ZXN0IiwiYmFzaWNVUkwiLCJzaW1wbGlmeVVybCIsInJvdXRlIiwibWV0aG9kIiwidXJsUmVzZXRJbiIsImNoZWNrUmF0ZUxpbWl0cyIsImJ1Y2tldFJlc2V0SW4iLCJidWNrZXRJZCIsInNldFRpbWVvdXQiLCJ1bmRlZmluZWQiLCJpbnZhbGlkQnVja2V0Iiwic2VuZFJlcXVlc3QiLCJjYXRjaCIsImNsZWFudXAiLCJoYW5kbGVDb21wbGV0ZWRSZXF1ZXN0IiwiaGVhZGVycyIsIm1ha2VSZXF1ZXN0IiwiaXNRdWV1ZUNsZWFyYWJsZSIsImNsZWFyVGltZW91dCIsImRlbGV0ZVF1ZXVlVGltZW91dCIsInF1ZXVlcyIsImRlbGV0ZSIsInNpemUiLCJ2YWx1ZXMiLCJtYXAiLCJxdWV1ZSIsInNsaWNlIiwiaW5kZXhPZiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsS0FBSyxRQUFRLG9CQUFtQjtBQUd6QyxPQUFPLE1BQU1DO0lBcUNYQyxZQUFZQyxJQUFpQixFQUFFQyxPQUFxQixDQUFFO1FBbEN0RCwrREFBK0QsUUFDL0RDLFlBQW9CO1FBQ3BCLCtDQUErQyxRQUMvQ0MsTUFBYztRQUNkLG1GQUFtRixRQUNuRkMsV0FBbUI7UUFHbkIsNkNBQTZDLFFBQzdDQyxVQUE0RCxFQUFFO1FBQzlELDZDQUE2QyxRQUM3Q0MsVUFBZ0MsRUFBRTtRQUNsQyw0REFBNEQsUUFDNURDLGFBQXNCO1FBQ3RCLDREQUE0RCxRQUM1REMsb0JBQTZCO1FBQzdCLDBDQUEwQyxRQUMxQ0MsZUFBd0I7UUFHeEIsbUZBQW1GLFFBQ25GQyxXQUFtQjtRQUNuQiwrR0FBK0csUUFDL0dDLG1CQUEyQjtRQVl6QixJQUFJLENBQUNYLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNZLEdBQUcsR0FBR1gsUUFBUVcsR0FBRztRQUN0QixJQUFJLENBQUNDLFVBQVUsR0FBR1osUUFBUVksVUFBVTtRQUVwQyxJQUFJWixRQUFRRyxRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFRLEdBQUdILFFBQVFHLFFBQVE7UUFDdEQsSUFBSUgsUUFBUUUsR0FBRyxFQUFFLElBQUksQ0FBQ0EsR0FBRyxHQUFHRixRQUFRRSxHQUFHO1FBQ3ZDLElBQUlGLFFBQVFDLFNBQVMsRUFBRSxJQUFJLENBQUNBLFNBQVMsR0FBR0QsUUFBUUMsU0FBUztRQUN6RCxJQUFJRCxRQUFRYSxTQUFTLEVBQUUsSUFBSSxDQUFDQSxTQUFTLEdBQUdiLFFBQVFhLFNBQVM7UUFDekQsSUFBSWIsUUFBUVUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDQSxnQkFBZ0IsR0FBR1YsUUFBUVUsZ0JBQWdCO0lBQ2hGO0lBRUEsK0RBQStELEdBQy9ESSxtQkFBNEI7UUFDMUIsT0FBTyxJQUFJLENBQUNiLFNBQVMsR0FBRztJQUMxQjtJQUVBLGdFQUFnRSxHQUNoRSxNQUFNYyw0QkFBMkM7UUFDL0MsT0FBTyxNQUFNLElBQUlDLFFBQVEsT0FBT0M7WUFDOUIsMkZBQTJGO1lBQzNGLElBQUksSUFBSSxDQUFDSCxnQkFBZ0IsSUFBSTtnQkFDM0Isb0JBQW9CO2dCQUNwQkc7WUFDRixPQUFPO2dCQUNMLElBQUksQ0FBQ2IsT0FBTyxDQUFDYyxJQUFJLENBQUNEO2dCQUNsQixNQUFNLElBQUksQ0FBQ0UsY0FBYztZQUMzQjtRQUNGO0lBQ0Y7SUFFQSx5REFBeUQsR0FDekQsTUFBTUEsaUJBQWdDO1FBQ3BDLHFFQUFxRTtRQUNyRSxJQUFJLElBQUksQ0FBQ2IsVUFBVSxFQUFFO1FBQ3JCLGdEQUFnRDtRQUNoRCxJQUFJLENBQUNBLFVBQVUsR0FBRztRQUVsQixNQUFPLElBQUksQ0FBQ0YsT0FBTyxDQUFDZ0IsTUFBTSxHQUFHLEVBQUc7WUFDOUIsSUFBSSxDQUFDckIsSUFBSSxDQUFDc0IsTUFBTSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQ1osR0FBRyxDQUFDLGdDQUFnQyxDQUFDO1lBQzlGLElBQUksSUFBSSxDQUFDRyxnQkFBZ0IsSUFBSTtnQkFDM0IscUNBQXFDO2dCQUNyQyxJQUFJLENBQUNWLE9BQU8sQ0FBQ29CLEtBQUs7WUFDcEIsT0FBTztnQkFDTCxNQUFNNUIsTUFBTTtZQUNkO1FBQ0Y7UUFFQSxzRUFBc0U7UUFDdEUsSUFBSSxDQUFDVSxVQUFVLEdBQUc7SUFDcEI7SUFFQSwwREFBMEQsR0FDMUQsTUFBTW1CLGlCQUFnQztRQUNwQyxxRUFBcUU7UUFDckUsSUFBSSxJQUFJLENBQUNsQixpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQ0YsT0FBTyxDQUFDZSxNQUFNLEVBQUU7UUFFcEQsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQ2IsaUJBQWlCLEdBQUc7UUFFekIsTUFBTyxJQUFJLENBQUNGLE9BQU8sQ0FBQ2UsTUFBTSxHQUFHLEVBQUc7WUFDOUIsSUFBSSxDQUFDckIsSUFBSSxDQUFDc0IsTUFBTSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQ1osR0FBRyxDQUFDLHFDQUFxQyxFQUFFLElBQUksQ0FBQ04sT0FBTyxDQUFDZSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3hILElBQUksQ0FBQyxJQUFJLENBQUNaLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQ00sZ0JBQWdCLElBQUk7Z0JBQ2xELE1BQU1ZLE1BQU1DLEtBQUtELEdBQUc7Z0JBQ3BCLE1BQU1FLFNBQVMsSUFBSSxDQUFDbkIsUUFBUSxHQUFHLElBQUksQ0FBQ04sUUFBUTtnQkFDNUMsTUFBTVAsTUFBTWdDLFNBQVNGLE1BQU1FLFNBQVNGLE1BQU07Z0JBQzFDO1lBQ0Y7WUFFQSxNQUFNRyxVQUFVLElBQUksQ0FBQ3hCLE9BQU8sQ0FBQyxFQUFFO1lBQy9CLElBQUl3QixTQUFTO2dCQUNYLE1BQU1DLFdBQVcsSUFBSSxDQUFDL0IsSUFBSSxDQUFDZ0MsV0FBVyxDQUFDRixRQUFRRyxLQUFLLEVBQUVILFFBQVFJLE1BQU07Z0JBRXBFLCtDQUErQztnQkFDL0MsTUFBTUMsYUFBYSxJQUFJLENBQUNuQyxJQUFJLENBQUNvQyxlQUFlLENBQUNMLFVBQVUsSUFBSSxDQUFDbEIsVUFBVTtnQkFDdEUsSUFBSXNCLFlBQVksTUFBTXRDLE1BQU1zQztnQkFFNUIscURBQXFEO2dCQUNyRCxNQUFNRSxnQkFBZ0JQLFFBQVFRLFFBQVEsR0FBRyxJQUFJLENBQUN0QyxJQUFJLENBQUNvQyxlQUFlLENBQUNOLFFBQVFRLFFBQVEsRUFBRSxJQUFJLENBQUN6QixVQUFVLElBQUk7Z0JBQ3hHLElBQUl3QixlQUFlLE1BQU14QyxNQUFNd0M7Z0JBRS9CLElBQUksQ0FBQzVCLFlBQVksR0FBRztnQkFDcEIsSUFBSSxDQUFDUCxTQUFTO2dCQUVkLElBQUksSUFBSSxDQUFDQSxTQUFTLEtBQUssS0FBSyxJQUFJLENBQUNFLFFBQVEsS0FBSyxHQUFHO29CQUMvQyxJQUFJLENBQUNVLFNBQVMsS0FBS3lCLFdBQVc7d0JBQzVCLElBQUksQ0FBQ3JDLFNBQVMsR0FBRyxJQUFJLENBQUNDLEdBQUc7d0JBQ3pCLElBQUksQ0FBQ1csU0FBUyxHQUFHMEI7b0JBQ25CLEdBQUcsSUFBSSxDQUFDcEMsUUFBUTtnQkFDbEI7Z0JBRUEsMENBQTBDO2dCQUMxQyxJQUFJLENBQUNFLE9BQU8sQ0FBQ21CLEtBQUs7Z0JBQ2xCLG9EQUFvRDtnQkFDcEQsTUFBTSxJQUFJLENBQUN6QixJQUFJLENBQUN5QyxhQUFhLENBQUN6Qix5QkFBeUI7Z0JBRXZELE1BQU0sSUFBSSxDQUFDaEIsSUFBSSxDQUNaMEMsV0FBVyxDQUFDWixRQUNiLDZFQUE2RTtpQkFDNUVhLEtBQUssQ0FBQyxJQUFNO1lBQ2pCO1FBQ0Y7UUFFQSxJQUFJLENBQUMzQyxJQUFJLENBQUNzQixNQUFNLENBQUNDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDWixHQUFHLENBQUMsd0NBQXdDLEVBQUUsSUFBSSxDQUFDTixPQUFPLENBQUNlLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFM0gsc0VBQXNFO1FBQ3RFLElBQUksQ0FBQ2IsaUJBQWlCLEdBQUc7UUFDekIsSUFBSSxDQUFDb0MsT0FBTztJQUNkO0lBRUFDLHVCQUF1QkMsT0FBZ0UsRUFBUTtRQUM3RixJQUFJQSxRQUFRM0MsR0FBRyxLQUFLLEdBQUc7WUFDckIsSUFBSSxDQUFDRCxTQUFTO1lBQ2Q7UUFDRjtRQUVBLElBQUksQ0FBQyxJQUFJLENBQUNRLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVEsR0FBR2tCLEtBQUtELEdBQUc7UUFDNUMsSUFBSW1CLFFBQVExQyxRQUFRLEtBQUtvQyxXQUFXLElBQUksQ0FBQ3BDLFFBQVEsR0FBRzBDLFFBQVExQyxRQUFRO1FBQ3BFLElBQUkwQyxRQUFRNUMsU0FBUyxLQUFLc0MsV0FBVyxJQUFJLENBQUN0QyxTQUFTLEdBQUc0QyxRQUFRNUMsU0FBUztRQUV2RSxJQUFJLElBQUksQ0FBQ0EsU0FBUyxJQUFJLEdBQUc7WUFDdkIsSUFBSSxDQUFDWSxTQUFTLEtBQUt5QixXQUFXO2dCQUM1QixJQUFJLENBQUNyQyxTQUFTLEdBQUcsSUFBSSxDQUFDQyxHQUFHO2dCQUN6QixJQUFJLENBQUNXLFNBQVMsR0FBRzBCO1lBQ25CLEdBQUdNLFFBQVExQyxRQUFRO1FBQ3JCO0lBQ0Y7SUFFQSx5SEFBeUgsR0FDekgsTUFBTTJDLFlBQVk5QyxPQUEyQixFQUFpQjtRQUM1RCxNQUFNLElBQUksQ0FBQ2UseUJBQXlCO1FBQ3BDLElBQUksQ0FBQ1YsT0FBTyxDQUFDYSxJQUFJLENBQUNsQjtRQUNsQixJQUFJLENBQUN5QixjQUFjO0lBQ3JCO0lBRUEsOEVBQThFLEdBQzlFa0IsVUFBZ0I7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDSSxnQkFBZ0IsSUFBSTtZQUM1QixJQUFJLENBQUN0QixjQUFjO1lBQ25CO1FBQ0Y7UUFFQSxJQUFJLENBQUMxQixJQUFJLENBQUNzQixNQUFNLENBQUNDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDWixHQUFHLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDRCxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFFOUcsMEZBQTBGO1FBQzFGc0MsYUFBYSxJQUFJLENBQUNDLGtCQUFrQjtRQUNwQyxJQUFJLENBQUNBLGtCQUFrQixHQUFHWCxXQUFXO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUNTLGdCQUFnQixJQUFJO2dCQUM1QixJQUFJLENBQUNoRCxJQUFJLENBQUNzQixNQUFNLENBQUNDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDWixHQUFHLENBQUMsbURBQW1ELENBQUM7Z0JBQ2pILElBQUksQ0FBQ2MsY0FBYztnQkFDbkI7WUFDRjtZQUVBLElBQUksQ0FBQzFCLElBQUksQ0FBQ3NCLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQ0MsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUNaLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFFeEUsSUFBSSxJQUFJLENBQUNFLFNBQVMsRUFBRW1DLGFBQWEsSUFBSSxDQUFDbkMsU0FBUztZQUUvQyx1RUFBdUU7WUFDdkUsSUFBSSxDQUFDZCxJQUFJLENBQUNtRCxNQUFNLENBQUNDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDdkMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDRCxHQUFHLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUNaLElBQUksQ0FBQ3NCLE1BQU0sQ0FBQ0MsS0FBSyxDQUNwQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUNDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDWixHQUFHLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDWixJQUFJLENBQUNtRCxNQUFNLENBQUNFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDdkY7bUJBQUksSUFBSSxDQUFDckQsSUFBSSxDQUFDbUQsTUFBTSxDQUFDRyxNQUFNO2FBQUcsQ0FBQ0MsR0FBRyxDQUFDLENBQUNDLFFBQVUsQ0FBQyxFQUFFQSxNQUFNaEMsU0FBUyxDQUFDLEVBQUVnQyxNQUFNNUMsR0FBRyxDQUFDLENBQUM7UUFFbEYsR0FBRyxJQUFJLENBQUNELGdCQUFnQjtJQUMxQjtJQUVBLGlGQUFpRixHQUNqRnFDLG1CQUE0QjtRQUMxQixJQUFJLElBQUksQ0FBQ3ZDLFlBQVksRUFBRSxPQUFPO1FBQzlCLElBQUksSUFBSSxDQUFDSixPQUFPLENBQUNnQixNQUFNLEdBQUcsR0FBRyxPQUFPO1FBQ3BDLElBQUksSUFBSSxDQUFDZixPQUFPLENBQUNlLE1BQU0sR0FBRyxHQUFHLE9BQU87UUFDcEMsSUFBSSxJQUFJLENBQUNkLFVBQVUsRUFBRSxPQUFPO1FBQzVCLElBQUksSUFBSSxDQUFDQyxpQkFBaUIsRUFBRSxPQUFPO1FBRW5DLE9BQU87SUFDVDtJQUVBLElBQUlnQixZQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQ1gsVUFBVSxDQUFDNEMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDNUMsVUFBVSxDQUFDNkMsT0FBTyxDQUFDO0lBQzFEO0FBQ0YifQ==
|
package/dist/esm/routes.js
CHANGED
|
@@ -69,9 +69,7 @@ export function createRoutes() {
|
|
|
69
69
|
message: (channelId, messageId, emoji, options)=>{
|
|
70
70
|
let url = `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent(emoji)}?`;
|
|
71
71
|
if (options) {
|
|
72
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
73
72
|
if (options.after) url += `after=${options.after}`;
|
|
74
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
75
73
|
if (options.limit) url += `&limit=${options.limit}`;
|
|
76
74
|
}
|
|
77
75
|
return url;
|
|
@@ -154,7 +152,6 @@ export function createRoutes() {
|
|
|
154
152
|
if (options.before) {
|
|
155
153
|
url += `before=${new Date(options.before).toISOString()}`;
|
|
156
154
|
}
|
|
157
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
158
155
|
if (options.limit) url += `&limit=${options.limit}`;
|
|
159
156
|
}
|
|
160
157
|
return url;
|
|
@@ -165,7 +162,6 @@ export function createRoutes() {
|
|
|
165
162
|
if (options.before) {
|
|
166
163
|
url += `before=${new Date(options.before).toISOString()}`;
|
|
167
164
|
}
|
|
168
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
169
165
|
if (options.limit) url += `&limit=${options.limit}`;
|
|
170
166
|
}
|
|
171
167
|
return url;
|
|
@@ -176,7 +172,6 @@ export function createRoutes() {
|
|
|
176
172
|
if (options.before) {
|
|
177
173
|
url += `before=${new Date(options.before).toISOString()}`;
|
|
178
174
|
}
|
|
179
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
180
175
|
if (options.limit) url += `&limit=${options.limit}`;
|
|
181
176
|
}
|
|
182
177
|
return url;
|
|
@@ -207,13 +202,9 @@ export function createRoutes() {
|
|
|
207
202
|
userGuilds: (options)=>{
|
|
208
203
|
let url = '/users/@me/guilds?';
|
|
209
204
|
if (options) {
|
|
210
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
211
205
|
if (options.after) url += `after=${options.after}`;
|
|
212
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
213
206
|
if (options.before) url += `&before=${options.before}`;
|
|
214
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
215
207
|
if (options.limit) url += `&limit=${options.limit}`;
|
|
216
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
217
208
|
if (options.withCounts) url += `&with_counts=${options.withCounts}`;
|
|
218
209
|
}
|
|
219
210
|
return url;
|
|
@@ -221,15 +212,10 @@ export function createRoutes() {
|
|
|
221
212
|
auditlogs: (guildId, options)=>{
|
|
222
213
|
let url = `/guilds/${guildId}/audit-logs?`;
|
|
223
214
|
if (options) {
|
|
224
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
225
215
|
if (options.actionType) url += `action_type=${options.actionType}`;
|
|
226
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
227
216
|
if (options.before) url += `&before=${options.before}`;
|
|
228
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
229
217
|
if (options.after) url += `&after=${options.after}`;
|
|
230
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
231
218
|
if (options.limit) url += `&limit=${options.limit}`;
|
|
232
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
233
219
|
if (options.userId) url += `&user_id=${options.userId}`;
|
|
234
220
|
}
|
|
235
221
|
return url;
|
|
@@ -269,15 +255,11 @@ export function createRoutes() {
|
|
|
269
255
|
users: (guildId, eventId, options)=>{
|
|
270
256
|
let url = `/guilds/${guildId}/scheduled-events/${eventId}/users?`;
|
|
271
257
|
if (options) {
|
|
272
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
273
258
|
if (options.limit !== undefined) url += `limit=${options.limit}`;
|
|
274
259
|
if (options.withMember !== undefined) {
|
|
275
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
276
260
|
url += `&with_member=${options.withMember.toString()}`;
|
|
277
261
|
}
|
|
278
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
279
262
|
if (options.after !== undefined) url += `&after=${options.after}`;
|
|
280
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
281
263
|
if (options.before !== undefined) url += `&before=${options.before}`;
|
|
282
264
|
}
|
|
283
265
|
return url;
|
|
@@ -300,15 +282,12 @@ export function createRoutes() {
|
|
|
300
282
|
let url = `/invites/${inviteCode}?`;
|
|
301
283
|
if (options) {
|
|
302
284
|
if (options.withCounts !== undefined) {
|
|
303
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
304
285
|
url += `with_counts=${options.withCounts.toString()}`;
|
|
305
286
|
}
|
|
306
287
|
if (options.withExpiration !== undefined) {
|
|
307
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
308
288
|
url += `&with_expiration=${options.withExpiration.toString()}`;
|
|
309
289
|
}
|
|
310
290
|
if (options.scheduledEventId) {
|
|
311
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
312
291
|
url += `&guild_scheduled_event_id=${options.scheduledEventId}`;
|
|
313
292
|
}
|
|
314
293
|
}
|
|
@@ -327,11 +306,8 @@ export function createRoutes() {
|
|
|
327
306
|
bans: (guildId, options)=>{
|
|
328
307
|
let url = `/guilds/${guildId}/bans?`;
|
|
329
308
|
if (options) {
|
|
330
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
331
309
|
if (options.limit) url += `limit=${options.limit}`;
|
|
332
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
333
310
|
if (options.after) url += `&after=${options.after}`;
|
|
334
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
335
311
|
if (options.before) url += `&before=${options.before}`;
|
|
336
312
|
}
|
|
337
313
|
return url;
|
|
@@ -351,9 +327,7 @@ export function createRoutes() {
|
|
|
351
327
|
members: (guildId, options)=>{
|
|
352
328
|
let url = `/guilds/${guildId}/members?`;
|
|
353
329
|
if (options !== undefined) {
|
|
354
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
355
330
|
if (options.limit) url += `limit=${options.limit}`;
|
|
356
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
357
331
|
if (options.after) url += `&after=${options.after}`;
|
|
358
332
|
}
|
|
359
333
|
return url;
|
|
@@ -368,13 +342,10 @@ export function createRoutes() {
|
|
|
368
342
|
prune: (guildId, options)=>{
|
|
369
343
|
let url = `/guilds/${guildId}/prune?`;
|
|
370
344
|
if (options) {
|
|
371
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
372
345
|
if (options.days) url += `days=${options.days}`;
|
|
373
346
|
if (Array.isArray(options.includeRoles)) {
|
|
374
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
375
347
|
url += `&include_roles=${options.includeRoles.join(',')}`;
|
|
376
348
|
} else if (options.includeRoles) {
|
|
377
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
378
349
|
url += `&include_roles=${options.includeRoles}`;
|
|
379
350
|
}
|
|
380
351
|
}
|
|
@@ -388,13 +359,10 @@ export function createRoutes() {
|
|
|
388
359
|
prune: (guildId, options)=>{
|
|
389
360
|
let url = `/guilds/${guildId}/prune?`;
|
|
390
361
|
if (options) {
|
|
391
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
392
362
|
if (options.days) url += `days=${options.days}`;
|
|
393
363
|
if (Array.isArray(options.includeRoles)) {
|
|
394
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
395
364
|
url += `&include_roles=${options.includeRoles.join(',')}`;
|
|
396
365
|
} else if (options.includeRoles) {
|
|
397
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
398
366
|
url += `&include_roles=${options.includeRoles}`;
|
|
399
367
|
}
|
|
400
368
|
}
|
|
@@ -550,6 +518,12 @@ export function createRoutes() {
|
|
|
550
518
|
return `/applications/${applicationId}/skus`;
|
|
551
519
|
}
|
|
552
520
|
},
|
|
521
|
+
applicationEmoji (applicationId, emojiId) {
|
|
522
|
+
return `/applications/${applicationId}/emojis/${emojiId}`;
|
|
523
|
+
},
|
|
524
|
+
applicationEmojis (applicationId) {
|
|
525
|
+
return `/applications/${applicationId}/emojis`;
|
|
526
|
+
},
|
|
553
527
|
// User endpoints
|
|
554
528
|
user (userId) {
|
|
555
529
|
return `/users/${userId}`;
|
|
@@ -569,4 +543,4 @@ export function createRoutes() {
|
|
|
569
543
|
};
|
|
570
544
|
}
|
|
571
545
|
|
|
572
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb3V0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBHZXRNZXNzYWdlc09wdGlvbnMsIEdldFNjaGVkdWxlZEV2ZW50VXNlcnMgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IGlzR2V0TWVzc2FnZXNBZnRlciwgaXNHZXRNZXNzYWdlc0Fyb3VuZCwgaXNHZXRNZXNzYWdlc0JlZm9yZSwgaXNHZXRNZXNzYWdlc0xpbWl0IH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IFJlc3RSb3V0ZXMgfSBmcm9tICcuL3R5cGluZ3Mvcm91dGVzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUm91dGVzKCk6IFJlc3RSb3V0ZXMge1xuICByZXR1cm4ge1xuICAgIHdlYmhvb2tzOiB7XG4gICAgICBpZDogKHdlYmhvb2tJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC93ZWJob29rcy8ke3dlYmhvb2tJZH1gXG4gICAgICB9LFxuICAgICAgbWVzc2FnZTogKHdlYmhvb2tJZCwgdG9rZW4sIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC93ZWJob29rcy8ke3dlYmhvb2tJZH0vJHt0b2tlbn0vbWVzc2FnZXMvJHttZXNzYWdlSWR9P2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLnRocmVhZElkKSB1cmwgKz0gYHRocmVhZF9pZD0ke29wdGlvbnMudGhyZWFkSWR9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIG9yaWdpbmFsOiAod2ViaG9va0lkLCB0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC93ZWJob29rcy8ke3dlYmhvb2tJZH0vJHt0b2tlbn0vbWVzc2FnZXMvQG9yaWdpbmFsP2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLnRocmVhZElkKSB1cmwgKz0gYHRocmVhZF9pZD0ke29wdGlvbnMudGhyZWFkSWR9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIHdlYmhvb2s6ICh3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL3dlYmhvb2tzLyR7d2ViaG9va0lkfS8ke3Rva2VufT9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucz8ud2FpdCAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYHdhaXQ9JHtvcHRpb25zLndhaXQudG9TdHJpbmcoKX1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMudGhyZWFkSWQpIHVybCArPSBgdGhyZWFkX2lkPSR7b3B0aW9ucy50aHJlYWRJZH1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBDaGFubmVsIEVuZHBvaW50c1xuICAgIGNoYW5uZWxzOiB7XG4gICAgICBidWxrOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcy9idWxrLWRlbGV0ZWBcbiAgICAgIH0sXG4gICAgICBkbTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy91c2Vycy9AbWUvY2hhbm5lbHMnXG4gICAgICB9LFxuICAgICAgZG1SZWNpcGllbnQ6IChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vcmVjaXBpZW50cy8ke3VzZXJJZH1gXG4gICAgICB9LFxuICAgICAgcGluOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3BpbnMvJHttZXNzYWdlSWR9YFxuICAgICAgfSxcbiAgICAgIHBpbnM6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3BpbnNgXG4gICAgICB9LFxuICAgICAgcmVhY3Rpb25zOiB7XG4gICAgICAgIGJvdDogKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBlbW9qaSkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcy8ke21lc3NhZ2VJZH0vcmVhY3Rpb25zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGVtb2ppKX0vQG1lYFxuICAgICAgICB9LFxuICAgICAgICB1c2VyOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIGVtb2ppLCB1c2VySWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9LyR7dXNlcklkfWBcbiAgICAgICAgfSxcbiAgICAgICAgYWxsOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9uc2BcbiAgICAgICAgfSxcbiAgICAgICAgZW1vamk6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9P2BcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy50eXBlKSB1cmwgKz0gYHR5cGU9JHtvcHRpb25zLnR5cGV9YFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgJmFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICAgIG1lc3NhZ2U6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9P2BcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHdlYmhvb2tzOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS93ZWJob29rc2BcbiAgICAgIH0sXG5cbiAgICAgIGNoYW5uZWw6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9YFxuICAgICAgfSxcblxuICAgICAgZm9sbG93OiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9mb2xsb3dlcnNgXG4gICAgICB9LFxuXG4gICAgICBmb3J1bTogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdGhyZWFkc2BcbiAgICAgIH0sXG5cbiAgICAgIGludml0ZXM6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L2ludml0ZXNgXG4gICAgICB9LFxuXG4gICAgICBtZXNzYWdlOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfWBcbiAgICAgIH0sXG5cbiAgICAgIG1lc3NhZ2VzOiAoY2hhbm5lbElkLCBvcHRpb25zPzogR2V0TWVzc2FnZXNPcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcz9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAoaXNHZXRNZXNzYWdlc0FmdGVyKG9wdGlvbnMpICYmIG9wdGlvbnMuYWZ0ZXIpIHtcbiAgICAgICAgICAgIHVybCArPSBgYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNCZWZvcmUob3B0aW9ucykgJiYgb3B0aW9ucy5iZWZvcmUpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmJlZm9yZT0ke29wdGlvbnMuYmVmb3JlfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNBcm91bmQob3B0aW9ucykgJiYgb3B0aW9ucy5hcm91bmQpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmFyb3VuZD0ke29wdGlvbnMuYXJvdW5kfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNMaW1pdChvcHRpb25zKSAmJiBvcHRpb25zLmxpbWl0KSB7XG4gICAgICAgICAgICB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG5cbiAgICAgIG92ZXJ3cml0ZTogKGNoYW5uZWxJZCwgb3ZlcndyaXRlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3Blcm1pc3Npb25zLyR7b3ZlcndyaXRlSWR9YFxuICAgICAgfSxcblxuICAgICAgY3Jvc3Nwb3N0OiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfS9jcm9zc3Bvc3RgXG4gICAgICB9LFxuXG4gICAgICBzdGFnZXM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvc3RhZ2UtaW5zdGFuY2VzJ1xuICAgICAgfSxcblxuICAgICAgc3RhZ2U6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvc3RhZ2UtaW5zdGFuY2VzLyR7Y2hhbm5lbElkfWBcbiAgICAgIH0sXG5cbiAgICAgIC8vIFRocmVhZCBFbmRwb2ludHNcbiAgICAgIHRocmVhZHM6IHtcbiAgICAgICAgbWVzc2FnZTogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfS90aHJlYWRzYFxuICAgICAgICB9LFxuICAgICAgICBhbGw6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdGhyZWFkc2BcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZlOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3RocmVhZHMvYWN0aXZlYFxuICAgICAgICB9LFxuICAgICAgICBtZW1iZXJzOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZC1tZW1iZXJzYFxuICAgICAgICB9LFxuICAgICAgICBtZTogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWQtbWVtYmVycy9AbWVgXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXI6IChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWQtbWVtYmVycy8ke3VzZXJJZH1gXG4gICAgICAgIH0sXG4gICAgICAgIGFyY2hpdmVkOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZHMvYXJjaGl2ZWRgXG4gICAgICAgIH0sXG4gICAgICAgIHB1YmxpYzogKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWRzL2FyY2hpdmVkL3B1YmxpYz9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7bmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBwcml2YXRlOiAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZHMvYXJjaGl2ZWQvcHJpdmF0ZT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7bmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBqb2luZWQ6IChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdXNlcnMvQG1lL3RocmVhZHMvYXJjaGl2ZWQvcHJpdmF0ZT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7bmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgdHlwaW5nOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90eXBpbmdgXG4gICAgICB9LFxuXG4gICAgICBwb2xsczoge1xuICAgICAgICB2b3RlczogKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBhbnN3ZXJJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9wb2xscy8ke21lc3NhZ2VJZH0vYW5zd2Vycy8ke2Fuc3dlcklkfT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwaXJlOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vcG9sbHMvJHttZXNzYWdlSWR9L2V4cGlyZWBcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIEd1aWxkIEVuZHBvaW50c1xuICAgIGd1aWxkczoge1xuICAgICAgYWxsOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL2d1aWxkcydcbiAgICAgIH0sXG4gICAgICB1c2VyR3VpbGRzOiAob3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gJy91c2Vycy9AbWUvZ3VpbGRzPydcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHVybCArPSBgJmJlZm9yZT0ke29wdGlvbnMuYmVmb3JlfWBcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIGlmIChvcHRpb25zLndpdGhDb3VudHMpIHVybCArPSBgJndpdGhfY291bnRzPSR7b3B0aW9ucy53aXRoQ291bnRzfWBcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG4gICAgICBhdWRpdGxvZ3M6IChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L2F1ZGl0LWxvZ3M/YFxuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIGlmIChvcHRpb25zLmFjdGlvblR5cGUpIHVybCArPSBgYWN0aW9uX3R5cGU9JHtvcHRpb25zLmFjdGlvblR5cGV9YFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHVybCArPSBgJmJlZm9yZT0ke29wdGlvbnMuYmVmb3JlfWBcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgJmFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICBpZiAob3B0aW9ucy51c2VySWQpIHVybCArPSBgJnVzZXJfaWQ9JHtvcHRpb25zLnVzZXJJZH1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgICAgYXV0b21vZDoge1xuICAgICAgICBydWxlOiAoZ3VpbGRJZCwgcnVsZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYXV0by1tb2RlcmF0aW9uL3J1bGVzLyR7cnVsZUlkfWBcbiAgICAgICAgfSxcbiAgICAgICAgcnVsZXM6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYXV0by1tb2RlcmF0aW9uL3J1bGVzYFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNoYW5uZWxzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9jaGFubmVsc2BcbiAgICAgIH0sXG4gICAgICBlbW9qaTogKGd1aWxkSWQsIGVtb2ppSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vZW1vamlzLyR7ZW1vamlJZH1gXG4gICAgICB9LFxuICAgICAgZW1vamlzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9lbW9qaXNgXG4gICAgICB9LFxuICAgICAgZXZlbnRzOiB7XG4gICAgICAgIGV2ZW50czogKGd1aWxkSWQsIHdpdGhVc2VyQ291bnQ/OiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vc2NoZWR1bGVkLWV2ZW50cz9gXG5cbiAgICAgICAgICBpZiAod2l0aFVzZXJDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB1cmwgKz0gYHdpdGhfdXNlcl9jb3VudD0ke3dpdGhVc2VyQ291bnQudG9TdHJpbmcoKX1gXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnQ6IChndWlsZElkLCBldmVudElkLCB3aXRoVXNlckNvdW50PzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L3NjaGVkdWxlZC1ldmVudHMvJHtldmVudElkfWBcblxuICAgICAgICAgIGlmICh3aXRoVXNlckNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgd2l0aF91c2VyX2NvdW50PSR7d2l0aFVzZXJDb3VudC50b1N0cmluZygpfWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXJzOiAoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucz86IEdldFNjaGVkdWxlZEV2ZW50VXNlcnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtndWlsZElkfS9zY2hlZHVsZWQtZXZlbnRzLyR7ZXZlbnRJZH0vdXNlcnM/YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0ICE9PSB1bmRlZmluZWQpIHVybCArPSBgbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICAgIGlmIChvcHRpb25zLndpdGhNZW1iZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICAgIHVybCArPSBgJndpdGhfbWVtYmVyPSR7b3B0aW9ucy53aXRoTWVtYmVyLnRvU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIgIT09IHVuZGVmaW5lZCkgdXJsICs9IGAmYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYCZiZWZvcmU9JHtvcHRpb25zLmJlZm9yZX1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGd1aWxkKGd1aWxkSWQsIHdpdGhDb3VudHMpIHtcbiAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0/YFxuXG4gICAgICAgIGlmICh3aXRoQ291bnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB1cmwgKz0gYHdpdGhfY291bnRzPSR7d2l0aENvdW50cy50b1N0cmluZygpfWBcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG4gICAgICBpbnRlZ3JhdGlvbihndWlsZElkLCBpbnRlZ3JhdGlvbklkKSB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2ludGVncmF0aW9ucy8ke2ludGVncmF0aW9uSWR9YFxuICAgICAgfSxcbiAgICAgIGludGVncmF0aW9uczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vaW50ZWdyYXRpb25zP2luY2x1ZGVfYXBwbGljYXRpb25zPXRydWVgXG4gICAgICB9LFxuICAgICAgaW52aXRlKGludml0ZUNvZGUsIG9wdGlvbnMpIHtcbiAgICAgICAgbGV0IHVybCA9IGAvaW52aXRlcy8ke2ludml0ZUNvZGV9P2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLndpdGhDb3VudHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgdXJsICs9IGB3aXRoX2NvdW50cz0ke29wdGlvbnMud2l0aENvdW50cy50b1N0cmluZygpfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9wdGlvbnMud2l0aEV4cGlyYXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgdXJsICs9IGAmd2l0aF9leHBpcmF0aW9uPSR7b3B0aW9ucy53aXRoRXhwaXJhdGlvbi50b1N0cmluZygpfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9wdGlvbnMuc2NoZWR1bGVkRXZlbnRJZCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgdXJsICs9IGAmZ3VpbGRfc2NoZWR1bGVkX2V2ZW50X2lkPSR7b3B0aW9ucy5zY2hlZHVsZWRFdmVudElkfWBcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgICAgaW52aXRlczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vaW52aXRlc2BcbiAgICAgIH0sXG4gICAgICBsZWF2ZTogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvdXNlcnMvQG1lL2d1aWxkcy8ke2d1aWxkSWR9YFxuICAgICAgfSxcbiAgICAgIG1lbWJlcnM6IHtcbiAgICAgICAgYmFuOiAoZ3VpbGRJZCwgdXNlcklkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYmFucy8ke3VzZXJJZH1gXG4gICAgICAgIH0sXG4gICAgICAgIGJhbnM6IChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYmFucz9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYCZhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYCZiZWZvcmU9JHtvcHRpb25zLmJlZm9yZX1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBidWxrQmFuOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2J1bGstYmFuYFxuICAgICAgICB9LFxuICAgICAgICBib3Q6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vbWVtYmVycy9AbWVgXG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlcjogKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L21lbWJlcnMvJHt1c2VySWR9YFxuICAgICAgICB9LFxuICAgICAgICBjdXJyZW50TWVtYmVyOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL3VzZXJzL0BtZS9ndWlsZHMvJHtndWlsZElkfS9tZW1iZXJgXG4gICAgICAgIH0sXG4gICAgICAgIG1lbWJlcnM6IChndWlsZElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vbWVtYmVycz9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGBsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgJmFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBzZWFyY2g6IChndWlsZElkLCBxdWVyeSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L21lbWJlcnMvc2VhcmNoP3F1ZXJ5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5KX1gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQgIT09IHVuZGVmaW5lZCkgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICAgIHBydW5lOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L3BydW5lP2BcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5kYXlzKSB1cmwgKz0gYGRheXM9JHtvcHRpb25zLmRheXN9YFxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy5pbmNsdWRlUm9sZXMpKSB7XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke29wdGlvbnMuaW5jbHVkZVJvbGVzLmpvaW4oJywnKX1gXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuaW5jbHVkZVJvbGVzKSB7XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtdGVtcGxhdGUtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke29wdGlvbnMuaW5jbHVkZVJvbGVzfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWZhOiAoZ3VpbGRJZCkgPT4gYC9ndWlsZHMvJHtndWlsZElkfS9tZmFgLFxuICAgICAgcHJldmlldzogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vcHJldmlld2BcbiAgICAgIH0sXG4gICAgICBwcnVuZTogKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vcHJ1bmU/YFxuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgIGlmIChvcHRpb25zLmRheXMpIHVybCArPSBgZGF5cz0ke29wdGlvbnMuZGF5c31gXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy5pbmNsdWRlUm9sZXMpKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICB1cmwgKz0gYCZpbmNsdWRlX3JvbGVzPSR7b3B0aW9ucy5pbmNsdWRlUm9sZXMuam9pbignLCcpfWBcbiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuaW5jbHVkZVJvbGVzKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICB1cmwgKz0gYCZpbmNsdWRlX3JvbGVzPSR7b3B0aW9ucy5pbmNsdWRlUm9sZXN9YFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG4gICAgICByb2xlczoge1xuICAgICAgICBvbmU6IChndWlsZElkLCByb2xlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9yb2xlcy8ke3JvbGVJZH1gXG4gICAgICAgIH0sXG4gICAgICAgIGFsbDogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9yb2xlc2BcbiAgICAgICAgfSxcbiAgICAgICAgbWVtYmVyOiAoZ3VpbGRJZCwgbWVtYmVySWQsIHJvbGVJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L21lbWJlcnMvJHttZW1iZXJJZH0vcm9sZXMvJHtyb2xlSWR9YFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0aWNrZXJzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9zdGlja2Vyc2BcbiAgICAgIH0sXG4gICAgICBzdGlja2VyOiAoZ3VpbGRJZCwgc3RpY2tlcklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3N0aWNrZXJzLyR7c3RpY2tlcklkfWBcbiAgICAgIH0sXG4gICAgICB2b2ljZTogKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS92b2ljZS1zdGF0ZXMvJHt1c2VySWQgPz8gJ0BtZSd9YFxuICAgICAgfSxcbiAgICAgIHRlbXBsYXRlczoge1xuICAgICAgICBjb2RlOiAoY29kZSkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy90ZW1wbGF0ZXMvJHtjb2RlfWBcbiAgICAgICAgfSxcbiAgICAgICAgZ3VpbGQ6IChndWlsZElkLCBjb2RlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vdGVtcGxhdGVzLyR7Y29kZX1gXG4gICAgICAgIH0sXG4gICAgICAgIGFsbDogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS90ZW1wbGF0ZXNgXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmFuaXR5OiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS92YW5pdHktdXJsYFxuICAgICAgfSxcbiAgICAgIHJlZ2lvbnM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3JlZ2lvbnNgXG4gICAgICB9LFxuICAgICAgd2ViaG9va3M6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3dlYmhvb2tzYFxuICAgICAgfSxcbiAgICAgIHdlbGNvbWU6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3dlbGNvbWUtc2NyZWVuYFxuICAgICAgfSxcbiAgICAgIHdpZGdldDogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vd2lkZ2V0YFxuICAgICAgfSxcbiAgICAgIHdpZGdldEpzb246IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3dpZGdldC5qc29uYFxuICAgICAgfSxcbiAgICAgIG9uYm9hcmRpbmc6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L29uYm9hcmRpbmdgXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBzdGlja2VyOiAoc3RpY2tlcklkKSA9PiB7XG4gICAgICByZXR1cm4gYC9zdGlja2Vycy8ke3N0aWNrZXJJZH1gXG4gICAgfSxcblxuICAgIHJlZ2lvbnM6ICgpID0+IHtcbiAgICAgIHJldHVybiAnL3ZvaWNlL3JlZ2lvbnMnXG4gICAgfSxcblxuICAgIC8vIEludGVyYWN0aW9uIEVuZHBvaW50c1xuICAgIGludGVyYWN0aW9uczoge1xuICAgICAgY29tbWFuZHM6IHtcbiAgICAgICAgLy8gQXBwbGljYXRpb24gRW5kcG9pbnRzXG4gICAgICAgIGNvbW1hbmRzOiAoYXBwbGljYXRpb25JZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2NvbW1hbmRzYFxuICAgICAgICB9LFxuXG4gICAgICAgIGd1aWxkczoge1xuICAgICAgICAgIGFsbChhcHBsaWNhdGlvbklkLCBndWlsZElkKSB7XG4gICAgICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9ndWlsZHMvJHtndWlsZElkfS9jb21tYW5kc2BcbiAgICAgICAgICB9LFxuXG4gICAgICAgICAgb25lKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQsIGNvbW1hbmRJZCwgd2l0aExvY2FsaXphdGlvbnMpIHtcbiAgICAgICAgICAgIGxldCB1cmwgPSBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2d1aWxkcy8ke2d1aWxkSWR9L2NvbW1hbmRzLyR7Y29tbWFuZElkfT9gXG5cbiAgICAgICAgICAgIGlmICh3aXRoTG9jYWxpemF0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgd2l0aF9sb2NhbGl6YXRpb25zPSR7d2l0aExvY2FsaXphdGlvbnMudG9TdHJpbmcoKX1gXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uczogKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9ndWlsZHMvJHtndWlsZElkfS9jb21tYW5kcy9wZXJtaXNzaW9uc2BcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbjogKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQsIGNvbW1hbmRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2d1aWxkcy8ke2d1aWxkSWR9L2NvbW1hbmRzLyR7Y29tbWFuZElkfS9wZXJtaXNzaW9uc2BcbiAgICAgICAgfSxcbiAgICAgICAgY29tbWFuZDogKGFwcGxpY2F0aW9uSWQsIGNvbW1hbmRJZCwgd2l0aExvY2FsaXphdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9jb21tYW5kcy8ke2NvbW1hbmRJZH0/YFxuXG4gICAgICAgICAgaWYgKHdpdGhMb2NhbGl6YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgd2l0aExvY2FsaXphdGlvbnM9JHt3aXRoTG9jYWxpemF0aW9ucy50b1N0cmluZygpfWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICB9LFxuXG4gICAgICByZXNwb25zZXM6IHtcbiAgICAgICAgLy8gSW50ZXJhY3Rpb24gRW5kcG9pbnRzXG4gICAgICAgIGNhbGxiYWNrOiAoaW50ZXJhY3Rpb25JZCwgdG9rZW4pID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9pbnRlcmFjdGlvbnMvJHtpbnRlcmFjdGlvbklkfS8ke3Rva2VufS9jYWxsYmFja2BcbiAgICAgICAgfSxcbiAgICAgICAgb3JpZ2luYWw6IChpbnRlcmFjdGlvbklkLCB0b2tlbikgPT4ge1xuICAgICAgICAgIHJldHVybiBgL3dlYmhvb2tzLyR7aW50ZXJhY3Rpb25JZH0vJHt0b2tlbn0vbWVzc2FnZXMvQG9yaWdpbmFsYFxuICAgICAgICB9LFxuICAgICAgICBtZXNzYWdlOiAoYXBwbGljYXRpb25JZCwgdG9rZW4sIG1lc3NhZ2VJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL3dlYmhvb2tzLyR7YXBwbGljYXRpb25JZH0vJHt0b2tlbn0vbWVzc2FnZXMvJHttZXNzYWdlSWR9YFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gT0F1dGgyIGVuZHBvaW50c1xuICAgIG9hdXRoMjoge1xuICAgICAgdG9rZW5FeGNoYW5nZTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvdG9rZW4nXG4gICAgICB9LFxuICAgICAgdG9rZW5SZXZva2U6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvb2F1dGgyL3Rva2VuL3Jldm9rZSdcbiAgICAgIH0sXG4gICAgICBjdXJyZW50QXV0aG9yaXphdGlvbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvQG1lJ1xuICAgICAgfSxcbiAgICAgIGFwcGxpY2F0aW9uOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL29hdXRoMi9hcHBsaWNhdGlvbnMvQG1lJ1xuICAgICAgfSxcbiAgICAgIGNvbm5lY3Rpb25zOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL3VzZXJzL0BtZS9jb25uZWN0aW9ucydcbiAgICAgIH0sXG4gICAgICByb2xlQ29ubmVjdGlvbnM6IChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3VzZXJzL0BtZS9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9yb2xlLWNvbm5lY3Rpb25gXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBtb25ldGl6YXRpb246IHtcbiAgICAgIGVudGl0bGVtZW50czogKGFwcGxpY2F0aW9uSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vZW50aXRsZW1lbnRzP2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYGFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYCZiZWZvcmU9JHtvcHRpb25zLmJlZm9yZX1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMuZXhjbHVkZUVuZGVkKSB1cmwgKz0gYCZleGNsdWRlX2VuZGVkPSR7b3B0aW9ucy5leGNsdWRlRW5kZWR9YFxuICAgICAgICAgIGlmIChvcHRpb25zLmd1aWxkSWQpIHVybCArPSBgJmd1aWxkX2lkPSR7b3B0aW9ucy5ndWlsZElkfWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5za3VJZHMpIHVybCArPSBgJnNrdV9pZHM9JHtvcHRpb25zLnNrdUlkcy5qb2luKCcsJyl9YFxuICAgICAgICAgIGlmIChvcHRpb25zLnVzZXJJZCkgdXJsICs9IGAmdXNlcl9pZD0ke29wdGlvbnMudXNlcklkfWBcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG4gICAgICBlbnRpdGxlbWVudDogKGFwcGxpY2F0aW9uSWQsIGVudGl0bGVtZW50SWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vZW50aXRsZW1lbnRzLyR7ZW50aXRsZW1lbnRJZH1gXG4gICAgICB9LFxuICAgICAgY29uc3VtZUVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZCwgZW50aXRsZW1lbnRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9lbnRpdGxlbWVudHMvJHtlbnRpdGxlbWVudElkfS9jb25zdW1lYFxuICAgICAgfSxcblxuICAgICAgc2t1czogKGFwcGxpY2F0aW9uSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vc2t1c2BcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIFVzZXIgZW5kcG9pbnRzXG4gICAgdXNlcih1c2VySWQpIHtcbiAgICAgIHJldHVybiBgL3VzZXJzLyR7dXNlcklkfWBcbiAgICB9LFxuXG4gICAgYXBwbGljYXRpb24oKSB7XG4gICAgICByZXR1cm4gJy9hcHBsaWNhdGlvbnMvQG1lJ1xuICAgIH0sXG5cbiAgICBjdXJyZW50VXNlcigpIHtcbiAgICAgIHJldHVybiAnL3VzZXJzL0BtZSdcbiAgICB9LFxuXG4gICAgZ2F0ZXdheUJvdCgpIHtcbiAgICAgIHJldHVybiAnL2dhdGV3YXkvYm90J1xuICAgIH0sXG5cbiAgICBzdGlja2VyUGFja3MoKSB7XG4gICAgICByZXR1cm4gJy9zdGlja2VyLXBhY2tzJ1xuICAgIH0sXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJpc0dldE1lc3NhZ2VzQWZ0ZXIiLCJpc0dldE1lc3NhZ2VzQXJvdW5kIiwiaXNHZXRNZXNzYWdlc0JlZm9yZSIsImlzR2V0TWVzc2FnZXNMaW1pdCIsImNyZWF0ZVJvdXRlcyIsIndlYmhvb2tzIiwiaWQiLCJ3ZWJob29rSWQiLCJtZXNzYWdlIiwidG9rZW4iLCJtZXNzYWdlSWQiLCJvcHRpb25zIiwidXJsIiwidGhyZWFkSWQiLCJvcmlnaW5hbCIsIndlYmhvb2siLCJ3YWl0IiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJjaGFubmVscyIsImJ1bGsiLCJjaGFubmVsSWQiLCJkbSIsImRtUmVjaXBpZW50IiwidXNlcklkIiwicGluIiwicGlucyIsInJlYWN0aW9ucyIsImJvdCIsImVtb2ppIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwidXNlciIsImFsbCIsInR5cGUiLCJhZnRlciIsImxpbWl0IiwiY2hhbm5lbCIsImZvbGxvdyIsImZvcnVtIiwiaW52aXRlcyIsIm1lc3NhZ2VzIiwiYmVmb3JlIiwiYXJvdW5kIiwib3ZlcndyaXRlIiwib3ZlcndyaXRlSWQiLCJjcm9zc3Bvc3QiLCJzdGFnZXMiLCJzdGFnZSIsInRocmVhZHMiLCJhY3RpdmUiLCJndWlsZElkIiwibWVtYmVycyIsIm1lIiwiYXJjaGl2ZWQiLCJwdWJsaWMiLCJEYXRlIiwidG9JU09TdHJpbmciLCJwcml2YXRlIiwiam9pbmVkIiwidHlwaW5nIiwicG9sbHMiLCJ2b3RlcyIsImFuc3dlcklkIiwiZXhwaXJlIiwiZ3VpbGRzIiwidXNlckd1aWxkcyIsIndpdGhDb3VudHMiLCJhdWRpdGxvZ3MiLCJhY3Rpb25UeXBlIiwiYXV0b21vZCIsInJ1bGUiLCJydWxlSWQiLCJydWxlcyIsImVtb2ppSWQiLCJlbW9qaXMiLCJldmVudHMiLCJ3aXRoVXNlckNvdW50IiwiZXZlbnQiLCJldmVudElkIiwidXNlcnMiLCJ3aXRoTWVtYmVyIiwiZ3VpbGQiLCJpbnRlZ3JhdGlvbiIsImludGVncmF0aW9uSWQiLCJpbnRlZ3JhdGlvbnMiLCJpbnZpdGUiLCJpbnZpdGVDb2RlIiwid2l0aEV4cGlyYXRpb24iLCJzY2hlZHVsZWRFdmVudElkIiwibGVhdmUiLCJiYW4iLCJiYW5zIiwiYnVsa0JhbiIsIm1lbWJlciIsImN1cnJlbnRNZW1iZXIiLCJzZWFyY2giLCJxdWVyeSIsInBydW5lIiwiZGF5cyIsIkFycmF5IiwiaXNBcnJheSIsImluY2x1ZGVSb2xlcyIsImpvaW4iLCJtZmEiLCJwcmV2aWV3Iiwicm9sZXMiLCJvbmUiLCJyb2xlSWQiLCJtZW1iZXJJZCIsInN0aWNrZXJzIiwic3RpY2tlciIsInN0aWNrZXJJZCIsInZvaWNlIiwidGVtcGxhdGVzIiwiY29kZSIsInZhbml0eSIsInJlZ2lvbnMiLCJ3ZWxjb21lIiwid2lkZ2V0Iiwid2lkZ2V0SnNvbiIsIm9uYm9hcmRpbmciLCJpbnRlcmFjdGlvbnMiLCJjb21tYW5kcyIsImFwcGxpY2F0aW9uSWQiLCJjb21tYW5kSWQiLCJ3aXRoTG9jYWxpemF0aW9ucyIsInBlcm1pc3Npb25zIiwicGVybWlzc2lvbiIsImNvbW1hbmQiLCJyZXNwb25zZXMiLCJjYWxsYmFjayIsImludGVyYWN0aW9uSWQiLCJvYXV0aDIiLCJ0b2tlbkV4Y2hhbmdlIiwidG9rZW5SZXZva2UiLCJjdXJyZW50QXV0aG9yaXphdGlvbiIsImFwcGxpY2F0aW9uIiwiY29ubmVjdGlvbnMiLCJyb2xlQ29ubmVjdGlvbnMiLCJtb25ldGl6YXRpb24iLCJlbnRpdGxlbWVudHMiLCJleGNsdWRlRW5kZWQiLCJza3VJZHMiLCJlbnRpdGxlbWVudCIsImVudGl0bGVtZW50SWQiLCJjb25zdW1l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
|
|
546
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb3V0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBHZXRNZXNzYWdlc09wdGlvbnMsIEdldFNjaGVkdWxlZEV2ZW50VXNlcnMgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IGlzR2V0TWVzc2FnZXNBZnRlciwgaXNHZXRNZXNzYWdlc0Fyb3VuZCwgaXNHZXRNZXNzYWdlc0JlZm9yZSwgaXNHZXRNZXNzYWdlc0xpbWl0IH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IFJlc3RSb3V0ZXMgfSBmcm9tICcuL3R5cGluZ3Mvcm91dGVzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUm91dGVzKCk6IFJlc3RSb3V0ZXMge1xuICByZXR1cm4ge1xuICAgIHdlYmhvb2tzOiB7XG4gICAgICBpZDogKHdlYmhvb2tJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC93ZWJob29rcy8ke3dlYmhvb2tJZH1gXG4gICAgICB9LFxuICAgICAgbWVzc2FnZTogKHdlYmhvb2tJZCwgdG9rZW4sIG1lc3NhZ2VJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC93ZWJob29rcy8ke3dlYmhvb2tJZH0vJHt0b2tlbn0vbWVzc2FnZXMvJHttZXNzYWdlSWR9P2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLnRocmVhZElkKSB1cmwgKz0gYHRocmVhZF9pZD0ke29wdGlvbnMudGhyZWFkSWR9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIG9yaWdpbmFsOiAod2ViaG9va0lkLCB0b2tlbiwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC93ZWJob29rcy8ke3dlYmhvb2tJZH0vJHt0b2tlbn0vbWVzc2FnZXMvQG9yaWdpbmFsP2BcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLnRocmVhZElkKSB1cmwgKz0gYHRocmVhZF9pZD0ke29wdGlvbnMudGhyZWFkSWR9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIHdlYmhvb2s6ICh3ZWJob29rSWQsIHRva2VuLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL3dlYmhvb2tzLyR7d2ViaG9va0lkfS8ke3Rva2VufT9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucz8ud2FpdCAhPT0gdW5kZWZpbmVkKSB1cmwgKz0gYHdhaXQ9JHtvcHRpb25zLndhaXQudG9TdHJpbmcoKX1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMudGhyZWFkSWQpIHVybCArPSBgdGhyZWFkX2lkPSR7b3B0aW9ucy50aHJlYWRJZH1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBDaGFubmVsIEVuZHBvaW50c1xuICAgIGNoYW5uZWxzOiB7XG4gICAgICBidWxrOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcy9idWxrLWRlbGV0ZWBcbiAgICAgIH0sXG4gICAgICBkbTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy91c2Vycy9AbWUvY2hhbm5lbHMnXG4gICAgICB9LFxuICAgICAgZG1SZWNpcGllbnQ6IChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vcmVjaXBpZW50cy8ke3VzZXJJZH1gXG4gICAgICB9LFxuICAgICAgcGluOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3BpbnMvJHttZXNzYWdlSWR9YFxuICAgICAgfSxcbiAgICAgIHBpbnM6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3BpbnNgXG4gICAgICB9LFxuICAgICAgcmVhY3Rpb25zOiB7XG4gICAgICAgIGJvdDogKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBlbW9qaSkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcy8ke21lc3NhZ2VJZH0vcmVhY3Rpb25zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGVtb2ppKX0vQG1lYFxuICAgICAgICB9LFxuICAgICAgICB1c2VyOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQsIGVtb2ppLCB1c2VySWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9LyR7dXNlcklkfWBcbiAgICAgICAgfSxcbiAgICAgICAgYWxsOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9uc2BcbiAgICAgICAgfSxcbiAgICAgICAgZW1vamk6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9P2BcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy50eXBlKSB1cmwgKz0gYHR5cGU9JHtvcHRpb25zLnR5cGV9YFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9yZXN0cmljdC10ZW1wbGF0ZS1leHByZXNzaW9uc1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgJmFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICAgIG1lc3NhZ2U6IChjaGFubmVsSWQsIG1lc3NhZ2VJZCwgZW1vamksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vbWVzc2FnZXMvJHttZXNzYWdlSWR9L3JlYWN0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChlbW9qaSl9P2BcblxuICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGBhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHdlYmhvb2tzOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS93ZWJob29rc2BcbiAgICAgIH0sXG5cbiAgICAgIGNoYW5uZWw6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9YFxuICAgICAgfSxcblxuICAgICAgZm9sbG93OiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9mb2xsb3dlcnNgXG4gICAgICB9LFxuXG4gICAgICBmb3J1bTogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdGhyZWFkc2BcbiAgICAgIH0sXG5cbiAgICAgIGludml0ZXM6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L2ludml0ZXNgXG4gICAgICB9LFxuXG4gICAgICBtZXNzYWdlOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfWBcbiAgICAgIH0sXG5cbiAgICAgIG1lc3NhZ2VzOiAoY2hhbm5lbElkLCBvcHRpb25zPzogR2V0TWVzc2FnZXNPcHRpb25zKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9tZXNzYWdlcz9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAoaXNHZXRNZXNzYWdlc0FmdGVyKG9wdGlvbnMpICYmIG9wdGlvbnMuYWZ0ZXIpIHtcbiAgICAgICAgICAgIHVybCArPSBgYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNCZWZvcmUob3B0aW9ucykgJiYgb3B0aW9ucy5iZWZvcmUpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmJlZm9yZT0ke29wdGlvbnMuYmVmb3JlfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNBcm91bmQob3B0aW9ucykgJiYgb3B0aW9ucy5hcm91bmQpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmFyb3VuZD0ke29wdGlvbnMuYXJvdW5kfWBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzR2V0TWVzc2FnZXNMaW1pdChvcHRpb25zKSAmJiBvcHRpb25zLmxpbWl0KSB7XG4gICAgICAgICAgICB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH0sXG5cbiAgICAgIG92ZXJ3cml0ZTogKGNoYW5uZWxJZCwgb3ZlcndyaXRlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3Blcm1pc3Npb25zLyR7b3ZlcndyaXRlSWR9YFxuICAgICAgfSxcblxuICAgICAgY3Jvc3Nwb3N0OiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfS9jcm9zc3Bvc3RgXG4gICAgICB9LFxuXG4gICAgICBzdGFnZXM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvc3RhZ2UtaW5zdGFuY2VzJ1xuICAgICAgfSxcblxuICAgICAgc3RhZ2U6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvc3RhZ2UtaW5zdGFuY2VzLyR7Y2hhbm5lbElkfWBcbiAgICAgIH0sXG5cbiAgICAgIC8vIFRocmVhZCBFbmRwb2ludHNcbiAgICAgIHRocmVhZHM6IHtcbiAgICAgICAgbWVzc2FnZTogKGNoYW5uZWxJZCwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L21lc3NhZ2VzLyR7bWVzc2FnZUlkfS90aHJlYWRzYFxuICAgICAgICB9LFxuICAgICAgICBhbGw6IChjaGFubmVsSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdGhyZWFkc2BcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZlOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3RocmVhZHMvYWN0aXZlYFxuICAgICAgICB9LFxuICAgICAgICBtZW1iZXJzOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZC1tZW1iZXJzYFxuICAgICAgICB9LFxuICAgICAgICBtZTogKGNoYW5uZWxJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWQtbWVtYmVycy9AbWVgXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXI6IChjaGFubmVsSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWQtbWVtYmVycy8ke3VzZXJJZH1gXG4gICAgICAgIH0sXG4gICAgICAgIGFyY2hpdmVkOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZHMvYXJjaGl2ZWRgXG4gICAgICAgIH0sXG4gICAgICAgIHB1YmxpYzogKGNoYW5uZWxJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90aHJlYWRzL2FyY2hpdmVkL3B1YmxpYz9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7bmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBwcml2YXRlOiAoY2hhbm5lbElkLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvY2hhbm5lbHMvJHtjaGFubmVsSWR9L3RocmVhZHMvYXJjaGl2ZWQvcHJpdmF0ZT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7bmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBqb2luZWQ6IChjaGFubmVsSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vdXNlcnMvQG1lL3RocmVhZHMvYXJjaGl2ZWQvcHJpdmF0ZT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB7XG4gICAgICAgICAgICAgIHVybCArPSBgYmVmb3JlPSR7bmV3IERhdGUob3B0aW9ucy5iZWZvcmUpLnRvSVNPU3RyaW5nKCl9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgdHlwaW5nOiAoY2hhbm5lbElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS90eXBpbmdgXG4gICAgICB9LFxuXG4gICAgICBwb2xsczoge1xuICAgICAgICB2b3RlczogKGNoYW5uZWxJZCwgbWVzc2FnZUlkLCBhbnN3ZXJJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2NoYW5uZWxzLyR7Y2hhbm5lbElkfS9wb2xscy8ke21lc3NhZ2VJZH0vYW5zd2Vycy8ke2Fuc3dlcklkfT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwaXJlOiAoY2hhbm5lbElkLCBtZXNzYWdlSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9jaGFubmVscy8ke2NoYW5uZWxJZH0vcG9sbHMvJHttZXNzYWdlSWR9L2V4cGlyZWBcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIEd1aWxkIEVuZHBvaW50c1xuICAgIGd1aWxkczoge1xuICAgICAgYWxsOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL2d1aWxkcydcbiAgICAgIH0sXG4gICAgICB1c2VyR3VpbGRzOiAob3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gJy91c2Vycy9AbWUvZ3VpbGRzPydcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYGFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMuYmVmb3JlKSB1cmwgKz0gYCZiZWZvcmU9JHtvcHRpb25zLmJlZm9yZX1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMud2l0aENvdW50cykgdXJsICs9IGAmd2l0aF9jb3VudHM9JHtvcHRpb25zLndpdGhDb3VudHN9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIGF1ZGl0bG9nczogKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYXVkaXQtbG9ncz9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5hY3Rpb25UeXBlKSB1cmwgKz0gYGFjdGlvbl90eXBlPSR7b3B0aW9ucy5hY3Rpb25UeXBlfWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHVybCArPSBgJmJlZm9yZT0ke29wdGlvbnMuYmVmb3JlfWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGAmYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5saW1pdCkgdXJsICs9IGAmbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICBpZiAob3B0aW9ucy51c2VySWQpIHVybCArPSBgJnVzZXJfaWQ9JHtvcHRpb25zLnVzZXJJZH1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgICAgYXV0b21vZDoge1xuICAgICAgICBydWxlOiAoZ3VpbGRJZCwgcnVsZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYXV0by1tb2RlcmF0aW9uL3J1bGVzLyR7cnVsZUlkfWBcbiAgICAgICAgfSxcbiAgICAgICAgcnVsZXM6IChndWlsZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vYXV0by1tb2RlcmF0aW9uL3J1bGVzYFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNoYW5uZWxzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9jaGFubmVsc2BcbiAgICAgIH0sXG4gICAgICBlbW9qaTogKGd1aWxkSWQsIGVtb2ppSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vZW1vamlzLyR7ZW1vamlJZH1gXG4gICAgICB9LFxuICAgICAgZW1vamlzOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9lbW9qaXNgXG4gICAgICB9LFxuICAgICAgZXZlbnRzOiB7XG4gICAgICAgIGV2ZW50czogKGd1aWxkSWQsIHdpdGhVc2VyQ291bnQ/OiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vc2NoZWR1bGVkLWV2ZW50cz9gXG5cbiAgICAgICAgICBpZiAod2l0aFVzZXJDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB1cmwgKz0gYHdpdGhfdXNlcl9jb3VudD0ke3dpdGhVc2VyQ291bnQudG9TdHJpbmcoKX1gXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnQ6IChndWlsZElkLCBldmVudElkLCB3aXRoVXNlckNvdW50PzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L3NjaGVkdWxlZC1ldmVudHMvJHtldmVudElkfWBcblxuICAgICAgICAgIGlmICh3aXRoVXNlckNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgd2l0aF91c2VyX2NvdW50PSR7d2l0aFVzZXJDb3VudC50b1N0cmluZygpfWBcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXJzOiAoZ3VpbGRJZCwgZXZlbnRJZCwgb3B0aW9ucz86IEdldFNjaGVkdWxlZEV2ZW50VXNlcnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtndWlsZElkfS9zY2hlZHVsZWQtZXZlbnRzLyR7ZXZlbnRJZH0vdXNlcnM/YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0ICE9PSB1bmRlZmluZWQpIHVybCArPSBgbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICAgIGlmIChvcHRpb25zLndpdGhNZW1iZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICB1cmwgKz0gYCZ3aXRoX21lbWJlcj0ke29wdGlvbnMud2l0aE1lbWJlci50b1N0cmluZygpfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyICE9PSB1bmRlZmluZWQpIHVybCArPSBgJmFmdGVyPSR7b3B0aW9ucy5hZnRlcn1gXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUgIT09IHVuZGVmaW5lZCkgdXJsICs9IGAmYmVmb3JlPSR7b3B0aW9ucy5iZWZvcmV9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBndWlsZChndWlsZElkLCB3aXRoQ291bnRzKSB7XG4gICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9P2BcblxuICAgICAgICBpZiAod2l0aENvdW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdXJsICs9IGB3aXRoX2NvdW50cz0ke3dpdGhDb3VudHMudG9TdHJpbmcoKX1gXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9LFxuICAgICAgaW50ZWdyYXRpb24oZ3VpbGRJZCwgaW50ZWdyYXRpb25JZCkge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9pbnRlZ3JhdGlvbnMvJHtpbnRlZ3JhdGlvbklkfWBcbiAgICAgIH0sXG4gICAgICBpbnRlZ3JhdGlvbnM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2ludGVncmF0aW9ucz9pbmNsdWRlX2FwcGxpY2F0aW9ucz10cnVlYFxuICAgICAgfSxcbiAgICAgIGludml0ZShpbnZpdGVDb2RlLCBvcHRpb25zKSB7XG4gICAgICAgIGxldCB1cmwgPSBgL2ludml0ZXMvJHtpbnZpdGVDb2RlfT9gXG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy53aXRoQ291bnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgd2l0aF9jb3VudHM9JHtvcHRpb25zLndpdGhDb3VudHMudG9TdHJpbmcoKX1gXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvcHRpb25zLndpdGhFeHBpcmF0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgJndpdGhfZXhwaXJhdGlvbj0ke29wdGlvbnMud2l0aEV4cGlyYXRpb24udG9TdHJpbmcoKX1gXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvcHRpb25zLnNjaGVkdWxlZEV2ZW50SWQpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmd1aWxkX3NjaGVkdWxlZF9ldmVudF9pZD0ke29wdGlvbnMuc2NoZWR1bGVkRXZlbnRJZH1gXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIGludml0ZXM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2ludml0ZXNgXG4gICAgICB9LFxuICAgICAgbGVhdmU6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL3VzZXJzL0BtZS9ndWlsZHMvJHtndWlsZElkfWBcbiAgICAgIH0sXG4gICAgICBtZW1iZXJzOiB7XG4gICAgICAgIGJhbjogKGd1aWxkSWQsIHVzZXJJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L2JhbnMvJHt1c2VySWR9YFxuICAgICAgICB9LFxuICAgICAgICBiYW5zOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L2JhbnM/YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYGxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hZnRlcikgdXJsICs9IGAmYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmJlZm9yZSkgdXJsICs9IGAmYmVmb3JlPSR7b3B0aW9ucy5iZWZvcmV9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgYnVsa0JhbjogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9idWxrLWJhbmBcbiAgICAgICAgfSxcbiAgICAgICAgYm90OiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L21lbWJlcnMvQG1lYFxuICAgICAgICB9LFxuICAgICAgICBtZW1iZXI6IChndWlsZElkLCB1c2VySWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS9tZW1iZXJzLyR7dXNlcklkfWBcbiAgICAgICAgfSxcbiAgICAgICAgY3VycmVudE1lbWJlcjogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC91c2Vycy9AbWUvZ3VpbGRzLyR7Z3VpbGRJZH0vbWVtYmVyYFxuICAgICAgICB9LFxuICAgICAgICBtZW1iZXJzOiAoZ3VpbGRJZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2d1aWxkcy8ke2d1aWxkSWR9L21lbWJlcnM/YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXQpIHVybCArPSBgbGltaXQ9JHtvcHRpb25zLmxpbWl0fWBcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFmdGVyKSB1cmwgKz0gYCZhZnRlcj0ke29wdGlvbnMuYWZ0ZXJ9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgICAgc2VhcmNoOiAoZ3VpbGRJZCwgcXVlcnksIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtndWlsZElkfS9tZW1iZXJzL3NlYXJjaD9xdWVyeT0ke2VuY29kZVVSSUNvbXBvbmVudChxdWVyeSl9YFxuXG4gICAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0ICE9PSB1bmRlZmluZWQpIHVybCArPSBgJmxpbWl0PSR7b3B0aW9ucy5saW1pdH1gXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICB9LFxuICAgICAgICBwcnVuZTogKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICBsZXQgdXJsID0gYC9ndWlsZHMvJHtndWlsZElkfS9wcnVuZT9gXG5cbiAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGF5cykgdXJsICs9IGBkYXlzPSR7b3B0aW9ucy5kYXlzfWBcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMuaW5jbHVkZVJvbGVzKSkge1xuICAgICAgICAgICAgICB1cmwgKz0gYCZpbmNsdWRlX3JvbGVzPSR7b3B0aW9ucy5pbmNsdWRlUm9sZXMuam9pbignLCcpfWBcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5pbmNsdWRlUm9sZXMpIHtcbiAgICAgICAgICAgICAgdXJsICs9IGAmaW5jbHVkZV9yb2xlcz0ke29wdGlvbnMuaW5jbHVkZVJvbGVzfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXJsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWZhOiAoZ3VpbGRJZCkgPT4gYC9ndWlsZHMvJHtndWlsZElkfS9tZmFgLFxuICAgICAgcHJldmlldzogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vcHJldmlld2BcbiAgICAgIH0sXG4gICAgICBwcnVuZTogKGd1aWxkSWQsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IGAvZ3VpbGRzLyR7Z3VpbGRJZH0vcHJ1bmU/YFxuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuZGF5cykgdXJsICs9IGBkYXlzPSR7b3B0aW9ucy5kYXlzfWBcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLmluY2x1ZGVSb2xlcykpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmluY2x1ZGVfcm9sZXM9JHtvcHRpb25zLmluY2x1ZGVSb2xlcy5qb2luKCcsJyl9YFxuICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5pbmNsdWRlUm9sZXMpIHtcbiAgICAgICAgICAgIHVybCArPSBgJmluY2x1ZGVfcm9sZXM9JHtvcHRpb25zLmluY2x1ZGVSb2xlc31gXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIHJvbGVzOiB7XG4gICAgICAgIG9uZTogKGd1aWxkSWQsIHJvbGVJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3JvbGVzLyR7cm9sZUlkfWBcbiAgICAgICAgfSxcbiAgICAgICAgYWxsOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3JvbGVzYFxuICAgICAgICB9LFxuICAgICAgICBtZW1iZXI6IChndWlsZElkLCBtZW1iZXJJZCwgcm9sZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vbWVtYmVycy8ke21lbWJlcklkfS9yb2xlcy8ke3JvbGVJZH1gXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc3RpY2tlcnM6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3N0aWNrZXJzYFxuICAgICAgfSxcbiAgICAgIHN0aWNrZXI6IChndWlsZElkLCBzdGlja2VySWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vc3RpY2tlcnMvJHtzdGlja2VySWR9YFxuICAgICAgfSxcbiAgICAgIHZvaWNlOiAoZ3VpbGRJZCwgdXNlcklkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3ZvaWNlLXN0YXRlcy8ke3VzZXJJZCA/PyAnQG1lJ31gXG4gICAgICB9LFxuICAgICAgdGVtcGxhdGVzOiB7XG4gICAgICAgIGNvZGU6IChjb2RlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvZ3VpbGRzL3RlbXBsYXRlcy8ke2NvZGV9YFxuICAgICAgICB9LFxuICAgICAgICBndWlsZDogKGd1aWxkSWQsIGNvZGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS90ZW1wbGF0ZXMvJHtjb2RlfWBcbiAgICAgICAgfSxcbiAgICAgICAgYWxsOiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3RlbXBsYXRlc2BcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2YW5pdHk6IChndWlsZElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2d1aWxkcy8ke2d1aWxkSWR9L3Zhbml0eS11cmxgXG4gICAgICB9LFxuICAgICAgcmVnaW9uczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vcmVnaW9uc2BcbiAgICAgIH0sXG4gICAgICB3ZWJob29rczogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vd2ViaG9va3NgXG4gICAgICB9LFxuICAgICAgd2VsY29tZTogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vd2VsY29tZS1zY3JlZW5gXG4gICAgICB9LFxuICAgICAgd2lkZ2V0OiAoZ3VpbGRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9ndWlsZHMvJHtndWlsZElkfS93aWRnZXRgXG4gICAgICB9LFxuICAgICAgd2lkZ2V0SnNvbjogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vd2lkZ2V0Lmpzb25gXG4gICAgICB9LFxuICAgICAgb25ib2FyZGluZzogKGd1aWxkSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvZ3VpbGRzLyR7Z3VpbGRJZH0vb25ib2FyZGluZ2BcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIHN0aWNrZXI6IChzdGlja2VySWQpID0+IHtcbiAgICAgIHJldHVybiBgL3N0aWNrZXJzLyR7c3RpY2tlcklkfWBcbiAgICB9LFxuXG4gICAgcmVnaW9uczogKCkgPT4ge1xuICAgICAgcmV0dXJuICcvdm9pY2UvcmVnaW9ucydcbiAgICB9LFxuXG4gICAgLy8gSW50ZXJhY3Rpb24gRW5kcG9pbnRzXG4gICAgaW50ZXJhY3Rpb25zOiB7XG4gICAgICBjb21tYW5kczoge1xuICAgICAgICAvLyBBcHBsaWNhdGlvbiBFbmRwb2ludHNcbiAgICAgICAgY29tbWFuZHM6IChhcHBsaWNhdGlvbklkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vY29tbWFuZHNgXG4gICAgICAgIH0sXG5cbiAgICAgICAgZ3VpbGRzOiB7XG4gICAgICAgICAgYWxsKGFwcGxpY2F0aW9uSWQsIGd1aWxkSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2d1aWxkcy8ke2d1aWxkSWR9L2NvbW1hbmRzYFxuICAgICAgICAgIH0sXG5cbiAgICAgICAgICBvbmUoYXBwbGljYXRpb25JZCwgZ3VpbGRJZCwgY29tbWFuZElkLCB3aXRoTG9jYWxpemF0aW9ucykge1xuICAgICAgICAgICAgbGV0IHVybCA9IGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vZ3VpbGRzLyR7Z3VpbGRJZH0vY29tbWFuZHMvJHtjb21tYW5kSWR9P2BcblxuICAgICAgICAgICAgaWYgKHdpdGhMb2NhbGl6YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgdXJsICs9IGB3aXRoX2xvY2FsaXphdGlvbnM9JHt3aXRoTG9jYWxpemF0aW9ucy50b1N0cmluZygpfWBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVybFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHBlcm1pc3Npb25zOiAoYXBwbGljYXRpb25JZCwgZ3VpbGRJZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2d1aWxkcy8ke2d1aWxkSWR9L2NvbW1hbmRzL3Blcm1pc3Npb25zYFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uOiAoYXBwbGljYXRpb25JZCwgZ3VpbGRJZCwgY29tbWFuZElkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vZ3VpbGRzLyR7Z3VpbGRJZH0vY29tbWFuZHMvJHtjb21tYW5kSWR9L3Blcm1pc3Npb25zYFxuICAgICAgICB9LFxuICAgICAgICBjb21tYW5kOiAoYXBwbGljYXRpb25JZCwgY29tbWFuZElkLCB3aXRoTG9jYWxpemF0aW9ucykgPT4ge1xuICAgICAgICAgIGxldCB1cmwgPSBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2NvbW1hbmRzLyR7Y29tbWFuZElkfT9gXG5cbiAgICAgICAgICBpZiAod2l0aExvY2FsaXphdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXJsICs9IGB3aXRoTG9jYWxpemF0aW9ucz0ke3dpdGhMb2NhbGl6YXRpb25zLnRvU3RyaW5nKCl9YFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cmxcbiAgICAgICAgfSxcbiAgICAgIH0sXG5cbiAgICAgIHJlc3BvbnNlczoge1xuICAgICAgICAvLyBJbnRlcmFjdGlvbiBFbmRwb2ludHNcbiAgICAgICAgY2FsbGJhY2s6IChpbnRlcmFjdGlvbklkLCB0b2tlbikgPT4ge1xuICAgICAgICAgIHJldHVybiBgL2ludGVyYWN0aW9ucy8ke2ludGVyYWN0aW9uSWR9LyR7dG9rZW59L2NhbGxiYWNrYFxuICAgICAgICB9LFxuICAgICAgICBvcmlnaW5hbDogKGludGVyYWN0aW9uSWQsIHRva2VuKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvd2ViaG9va3MvJHtpbnRlcmFjdGlvbklkfS8ke3Rva2VufS9tZXNzYWdlcy9Ab3JpZ2luYWxgXG4gICAgICAgIH0sXG4gICAgICAgIG1lc3NhZ2U6IChhcHBsaWNhdGlvbklkLCB0b2tlbiwgbWVzc2FnZUlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAvd2ViaG9va3MvJHthcHBsaWNhdGlvbklkfS8ke3Rva2VufS9tZXNzYWdlcy8ke21lc3NhZ2VJZH1gXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBPQXV0aDIgZW5kcG9pbnRzXG4gICAgb2F1dGgyOiB7XG4gICAgICB0b2tlbkV4Y2hhbmdlOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL29hdXRoMi90b2tlbidcbiAgICAgIH0sXG4gICAgICB0b2tlblJldm9rZTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJy9vYXV0aDIvdG9rZW4vcmV2b2tlJ1xuICAgICAgfSxcbiAgICAgIGN1cnJlbnRBdXRob3JpemF0aW9uOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAnL29hdXRoMi9AbWUnXG4gICAgICB9LFxuICAgICAgYXBwbGljYXRpb246ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvb2F1dGgyL2FwcGxpY2F0aW9ucy9AbWUnXG4gICAgICB9LFxuICAgICAgY29ubmVjdGlvbnM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICcvdXNlcnMvQG1lL2Nvbm5lY3Rpb25zJ1xuICAgICAgfSxcbiAgICAgIHJvbGVDb25uZWN0aW9uczogKGFwcGxpY2F0aW9uSWQpID0+IHtcbiAgICAgICAgcmV0dXJuIGAvdXNlcnMvQG1lL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L3JvbGUtY29ubmVjdGlvbmBcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIG1vbmV0aXphdGlvbjoge1xuICAgICAgZW50aXRsZW1lbnRzOiAoYXBwbGljYXRpb25JZCwgb3B0aW9ucykgPT4ge1xuICAgICAgICBsZXQgdXJsID0gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9lbnRpdGxlbWVudHM/YFxuXG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuYWZ0ZXIpIHVybCArPSBgYWZ0ZXI9JHtvcHRpb25zLmFmdGVyfWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5iZWZvcmUpIHVybCArPSBgJmJlZm9yZT0ke29wdGlvbnMuYmVmb3JlfWBcbiAgICAgICAgICBpZiAob3B0aW9ucy5leGNsdWRlRW5kZWQpIHVybCArPSBgJmV4Y2x1ZGVfZW5kZWQ9JHtvcHRpb25zLmV4Y2x1ZGVFbmRlZH1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMuZ3VpbGRJZCkgdXJsICs9IGAmZ3VpbGRfaWQ9JHtvcHRpb25zLmd1aWxkSWR9YFxuICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0KSB1cmwgKz0gYCZsaW1pdD0ke29wdGlvbnMubGltaXR9YFxuICAgICAgICAgIGlmIChvcHRpb25zLnNrdUlkcykgdXJsICs9IGAmc2t1X2lkcz0ke29wdGlvbnMuc2t1SWRzLmpvaW4oJywnKX1gXG4gICAgICAgICAgaWYgKG9wdGlvbnMudXNlcklkKSB1cmwgKz0gYCZ1c2VyX2lkPSR7b3B0aW9ucy51c2VySWR9YFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfSxcbiAgICAgIGVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZCwgZW50aXRsZW1lbnRJZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9lbnRpdGxlbWVudHMvJHtlbnRpdGxlbWVudElkfWBcbiAgICAgIH0sXG4gICAgICBjb25zdW1lRW50aXRsZW1lbnQ6IChhcHBsaWNhdGlvbklkLCBlbnRpdGxlbWVudElkKSA9PiB7XG4gICAgICAgIHJldHVybiBgL2FwcGxpY2F0aW9ucy8ke2FwcGxpY2F0aW9uSWR9L2VudGl0bGVtZW50cy8ke2VudGl0bGVtZW50SWR9L2NvbnN1bWVgXG4gICAgICB9LFxuXG4gICAgICBza3VzOiAoYXBwbGljYXRpb25JZCkgPT4ge1xuICAgICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9za3VzYFxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgYXBwbGljYXRpb25FbW9qaShhcHBsaWNhdGlvbklkLCBlbW9qaUlkKSB7XG4gICAgICByZXR1cm4gYC9hcHBsaWNhdGlvbnMvJHthcHBsaWNhdGlvbklkfS9lbW9qaXMvJHtlbW9qaUlkfWBcbiAgICB9LFxuXG4gICAgYXBwbGljYXRpb25FbW9qaXMoYXBwbGljYXRpb25JZCkge1xuICAgICAgcmV0dXJuIGAvYXBwbGljYXRpb25zLyR7YXBwbGljYXRpb25JZH0vZW1vamlzYFxuICAgIH0sXG5cbiAgICAvLyBVc2VyIGVuZHBvaW50c1xuICAgIHVzZXIodXNlcklkKSB7XG4gICAgICByZXR1cm4gYC91c2Vycy8ke3VzZXJJZH1gXG4gICAgfSxcblxuICAgIGFwcGxpY2F0aW9uKCkge1xuICAgICAgcmV0dXJuICcvYXBwbGljYXRpb25zL0BtZSdcbiAgICB9LFxuXG4gICAgY3VycmVudFVzZXIoKSB7XG4gICAgICByZXR1cm4gJy91c2Vycy9AbWUnXG4gICAgfSxcblxuICAgIGdhdGV3YXlCb3QoKSB7XG4gICAgICByZXR1cm4gJy9nYXRld2F5L2JvdCdcbiAgICB9LFxuXG4gICAgc3RpY2tlclBhY2tzKCkge1xuICAgICAgcmV0dXJuICcvc3RpY2tlci1wYWNrcydcbiAgICB9LFxuICB9XG59XG4iXSwibmFtZXMiOlsiaXNHZXRNZXNzYWdlc0FmdGVyIiwiaXNHZXRNZXNzYWdlc0Fyb3VuZCIsImlzR2V0TWVzc2FnZXNCZWZvcmUiLCJpc0dldE1lc3NhZ2VzTGltaXQiLCJjcmVhdGVSb3V0ZXMiLCJ3ZWJob29rcyIsImlkIiwid2ViaG9va0lkIiwibWVzc2FnZSIsInRva2VuIiwibWVzc2FnZUlkIiwib3B0aW9ucyIsInVybCIsInRocmVhZElkIiwib3JpZ2luYWwiLCJ3ZWJob29rIiwid2FpdCIsInVuZGVmaW5lZCIsInRvU3RyaW5nIiwiY2hhbm5lbHMiLCJidWxrIiwiY2hhbm5lbElkIiwiZG0iLCJkbVJlY2lwaWVudCIsInVzZXJJZCIsInBpbiIsInBpbnMiLCJyZWFjdGlvbnMiLCJib3QiLCJlbW9qaSIsImVuY29kZVVSSUNvbXBvbmVudCIsInVzZXIiLCJhbGwiLCJ0eXBlIiwiYWZ0ZXIiLCJsaW1pdCIsImNoYW5uZWwiLCJmb2xsb3ciLCJmb3J1bSIsImludml0ZXMiLCJtZXNzYWdlcyIsImJlZm9yZSIsImFyb3VuZCIsIm92ZXJ3cml0ZSIsIm92ZXJ3cml0ZUlkIiwiY3Jvc3Nwb3N0Iiwic3RhZ2VzIiwic3RhZ2UiLCJ0aHJlYWRzIiwiYWN0aXZlIiwiZ3VpbGRJZCIsIm1lbWJlcnMiLCJtZSIsImFyY2hpdmVkIiwicHVibGljIiwiRGF0ZSIsInRvSVNPU3RyaW5nIiwicHJpdmF0ZSIsImpvaW5lZCIsInR5cGluZyIsInBvbGxzIiwidm90ZXMiLCJhbnN3ZXJJZCIsImV4cGlyZSIsImd1aWxkcyIsInVzZXJHdWlsZHMiLCJ3aXRoQ291bnRzIiwiYXVkaXRsb2dzIiwiYWN0aW9uVHlwZSIsImF1dG9tb2QiLCJydWxlIiwicnVsZUlkIiwicnVsZXMiLCJlbW9qaUlkIiwiZW1vamlzIiwiZXZlbnRzIiwid2l0aFVzZXJDb3VudCIsImV2ZW50IiwiZXZlbnRJZCIsInVzZXJzIiwid2l0aE1lbWJlciIsImd1aWxkIiwiaW50ZWdyYXRpb24iLCJpbnRlZ3JhdGlvbklkIiwiaW50ZWdyYXRpb25zIiwiaW52aXRlIiwiaW52aXRlQ29kZSIsIndpdGhFeHBpcmF0aW9uIiwic2NoZWR1bGVkRXZlbnRJZCIsImxlYXZlIiwiYmFuIiwiYmFucyIsImJ1bGtCYW4iLCJtZW1iZXIiLCJjdXJyZW50TWVtYmVyIiwic2VhcmNoIiwicXVlcnkiLCJwcnVuZSIsImRheXMiLCJBcnJheSIsImlzQXJyYXkiLCJpbmNsdWRlUm9sZXMiLCJqb2luIiwibWZhIiwicHJldmlldyIsInJvbGVzIiwib25lIiwicm9sZUlkIiwibWVtYmVySWQiLCJzdGlja2VycyIsInN0aWNrZXIiLCJzdGlja2VySWQiLCJ2b2ljZSIsInRlbXBsYXRlcyIsImNvZGUiLCJ2YW5pdHkiLCJyZWdpb25zIiwid2VsY29tZSIsIndpZGdldCIsIndpZGdldEpzb24iLCJvbmJvYXJkaW5nIiwiaW50ZXJhY3Rpb25zIiwiY29tbWFuZHMiLCJhcHBsaWNhdGlvbklkIiwiY29tbWFuZElkIiwid2l0aExvY2FsaXphdGlvbnMiLCJwZXJtaXNzaW9ucyIsInBlcm1pc3Npb24iLCJjb21tYW5kIiwicmVzcG9uc2VzIiwiY2FsbGJhY2siLCJpbnRlcmFjdGlvbklkIiwib2F1dGgyIiwidG9rZW5FeGNoYW5nZSIsInRva2VuUmV2b2tlIiwiY3VycmVudEF1dGhvcml6YXRpb24iLCJhcHBsaWNhdGlvbiIsImNvbm5lY3Rpb25zIiwicm9sZUNvbm5lY3Rpb25zIiwibW9uZXRpemF0aW9uIiwiZW50aXRsZW1lbnRzIiwiZXhjbHVkZUVuZGVkIiwic2t1SWRzIiwiZW50aXRsZW1lbnQiLCJlbnRpdGxlbWVudElkIiwiY29uc3VtZUVudGl0bGVtZW50Iiwic2t1cyIsImFwcGxpY2F0aW9uRW1vamkiLCJhcHBsaWNhdGlvbkVtb2ppcyIsImN1cnJlbnRVc2VyIiwiZ2F0ZXdheUJvdCIsInN0aWNrZXJQYWNrcyJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0Esa0JBQWtCLEVBQUVDLG1CQUFtQixFQUFFQyxtQkFBbUIsRUFBRUMsa0JBQWtCLFFBQVEsb0JBQW1CO0FBR3BILE9BQU8sU0FBU0M7SUFDZCxPQUFPO1FBQ0xDLFVBQVU7WUFDUkMsSUFBSSxDQUFDQztnQkFDSCxPQUFPLENBQUMsVUFBVSxFQUFFQSxVQUFVLENBQUM7WUFDakM7WUFDQUMsU0FBUyxDQUFDRCxXQUFXRSxPQUFPQyxXQUFXQztnQkFDckMsSUFBSUMsTUFBTSxDQUFDLFVBQVUsRUFBRUwsVUFBVSxDQUFDLEVBQUVFLE1BQU0sVUFBVSxFQUFFQyxVQUFVLENBQUMsQ0FBQztnQkFFbEUsSUFBSUMsU0FBUztvQkFDWCxJQUFJQSxRQUFRRSxRQUFRLEVBQUVELE9BQU8sQ0FBQyxVQUFVLEVBQUVELFFBQVFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM5RDtnQkFFQSxPQUFPRDtZQUNUO1lBQ0FFLFVBQVUsQ0FBQ1AsV0FBV0UsT0FBT0U7Z0JBQzNCLElBQUlDLE1BQU0sQ0FBQyxVQUFVLEVBQUVMLFVBQVUsQ0FBQyxFQUFFRSxNQUFNLG9CQUFvQixDQUFDO2dCQUUvRCxJQUFJRSxTQUFTO29CQUNYLElBQUlBLFFBQVFFLFFBQVEsRUFBRUQsT0FBTyxDQUFDLFVBQVUsRUFBRUQsUUFBUUUsUUFBUSxDQUFDLENBQUM7Z0JBQzlEO2dCQUVBLE9BQU9EO1lBQ1Q7WUFDQUcsU0FBUyxDQUFDUixXQUFXRSxPQUFPRTtnQkFDMUIsSUFBSUMsTUFBTSxDQUFDLFVBQVUsRUFBRUwsVUFBVSxDQUFDLEVBQUVFLE1BQU0sQ0FBQyxDQUFDO2dCQUU1QyxJQUFJRSxTQUFTO29CQUNYLElBQUlBLFNBQVNLLFNBQVNDLFdBQVdMLE9BQU8sQ0FBQyxLQUFLLEVBQUVELFFBQVFLLElBQUksQ0FBQ0UsUUFBUSxHQUFHLENBQUM7b0JBQ3pFLElBQUlQLFFBQVFFLFFBQVEsRUFBRUQsT0FBTyxDQUFDLFVBQVUsRUFBRUQsUUFBUUUsUUFBUSxDQUFDLENBQUM7Z0JBQzlEO2dCQUVBLE9BQU9EO1lBQ1Q7UUFDRjtRQUVBLG9CQUFvQjtRQUNwQk8sVUFBVTtZQUNSQyxNQUFNLENBQUNDO2dCQUNMLE9BQU8sQ0FBQyxVQUFVLEVBQUVBLFVBQVUscUJBQXFCLENBQUM7WUFDdEQ7WUFDQUMsSUFBSTtnQkFDRixPQUFPO1lBQ1Q7WUFDQUMsYUFBYSxDQUFDRixXQUFXRztnQkFDdkIsT0FBTyxDQUFDLFVBQVUsRUFBRUgsVUFBVSxZQUFZLEVBQUVHLE9BQU8sQ0FBQztZQUN0RDtZQUNBQyxLQUFLLENBQUNKLFdBQVdYO2dCQUNmLE9BQU8sQ0FBQyxVQUFVLEVBQUVXLFVBQVUsTUFBTSxFQUFFWCxVQUFVLENBQUM7WUFDbkQ7WUFDQWdCLE1BQU0sQ0FBQ0w7Z0JBQ0wsT0FBTyxDQUFDLFVBQVUsRUFBRUEsVUFBVSxLQUFLLENBQUM7WUFDdEM7WUFDQU0sV0FBVztnQkFDVEMsS0FBSyxDQUFDUCxXQUFXWCxXQUFXbUI7b0JBQzFCLE9BQU8sQ0FBQyxVQUFVLEVBQUVSLFVBQVUsVUFBVSxFQUFFWCxVQUFVLFdBQVcsRUFBRW9CLG1CQUFtQkQsT0FBTyxJQUFJLENBQUM7Z0JBQ2xHO2dCQUNBRSxNQUFNLENBQUNWLFdBQVdYLFdBQVdtQixPQUFPTDtvQkFDbEMsT0FBTyxDQUFDLFVBQVUsRUFBRUgsVUFBVSxVQUFVLEVBQUVYLFVBQVUsV0FBVyxFQUFFb0IsbUJBQW1CRCxPQUFPLENBQUMsRUFBRUwsT0FBTyxDQUFDO2dCQUN4RztnQkFDQVEsS0FBSyxDQUFDWCxXQUFXWDtvQkFDZixPQUFPLENBQUMsVUFBVSxFQUFFVyxVQUFVLFVBQVUsRUFBRVgsVUFBVSxVQUFVLENBQUM7Z0JBQ2pFO2dCQUNBbUIsT0FBTyxDQUFDUixXQUFXWCxXQUFXbUIsT0FBT2xCO29CQUNuQyxJQUFJQyxNQUFNLENBQUMsVUFBVSxFQUFFUyxVQUFVLFVBQVUsRUFBRVgsVUFBVSxXQUFXLEVBQUVvQixtQkFBbUJELE9BQU8sQ0FBQyxDQUFDO29CQUVoRyxJQUFJbEIsU0FBUzt3QkFDWCxJQUFJQSxRQUFRc0IsSUFBSSxFQUFFckIsT0FBTyxDQUFDLEtBQUssRUFBRUQsUUFBUXNCLElBQUksQ0FBQyxDQUFDO3dCQUMvQyw0RUFBNEU7d0JBQzVFLElBQUl0QixRQUFRdUIsS0FBSyxFQUFFdEIsT0FBTyxDQUFDLE9BQU8sRUFBRUQsUUFBUXVCLEtBQUssQ0FBQyxDQUFDO3dCQUNuRCw0RUFBNEU7d0JBQzVFLElBQUl2QixRQUFRd0IsS0FBSyxFQUFFdkIsT0FBTyxDQUFDLE9BQU8sRUFBRUQsUUFBUXdCLEtBQUssQ0FBQyxDQUFDO29CQUNyRDtvQkFFQSxPQUFPdkI7Z0JBQ1Q7Z0JBQ0FKLFNBQVMsQ0FBQ2EsV0FBV1gsV0FBV21CLE9BQU9sQjtvQkFDckMsSUFBSUMsTUFBTSxDQUFDLFVBQVUsRUFBRVMsVUFBVSxVQUFVLEVBQUVYLFVBQVUsV0FBVyxFQUFFb0IsbUJBQW1CRCxPQUFPLENBQUMsQ0FBQztvQkFFaEcsSUFBSWxCLFNBQVM7d0JBQ1gsSUFBSUEsUUFBUXVCLEtBQUssRUFBRXRCLE9BQU8sQ0FBQyxNQUFNLEVBQUVELFFBQVF1QixLQUFLLENBQUMsQ0FBQzt3QkFDbEQsSUFBSXZCLFFBQVF3QixLQUFLLEVBQUV2QixPQUFPLENBQUMsT0FBTyxFQUFFRCxRQUFRd0IsS0FBSyxDQUFDLENBQUM7b0JBQ3JEO29CQUVBLE9BQU92QjtnQkFDVDtZQUNGO1lBQ0FQLFVBQVUsQ0FBQ2dCO2dCQUNULE9BQU8sQ0FBQyxVQUFVLEVBQUVBLFVBQVUsU0FBUyxDQUFDO1lBQzFDO1lBRUFlLFNBQVMsQ0FBQ2Y7Z0JBQ1IsT0FBTyxDQUFDLFVBQVUsRUFBRUEsVUFBVSxDQUFDO1lBQ2pDO1lBRUFnQixRQUFRLENBQUNoQjtnQkFDUCxPQUFPLENBQUMsVUFBVSxFQUFFQSxVQUFVLFVBQVUsQ0FBQztZQUMzQztZQUVBaUIsT0FBTyxDQUFDakI7Z0JBQ04sT0FBTyxDQUFDLFVBQVUsRUFBRUEsVUFBVSxRQUFRLENBQUM7WUFDekM7WUFFQWtCLFNBQVMsQ0FBQ2xCO2dCQUNSLE9BQU8sQ0FBQyxVQUFVLEVBQUVBLFVBQVUsUUFBUSxDQUFDO1lBQ3pDO1lBRUFiLFNBQVMsQ0FBQ2EsV0FBV1g7Z0JBQ25CLE9BQU8sQ0FBQyxVQUFVLEVBQUVXLFVBQVUsVUFBVSxFQUFFWCxVQUFVLENBQUM7WUFDdkQ7WUFFQThCLFVBQVUsQ0FBQ25CLFdBQVdWO2dCQUNwQixJQUFJQyxNQUFNLENBQUMsVUFBVSxFQUFFUyxVQUFVLFVBQVUsQ0FBQztnQkFFNUMsSUFBSVYsU0FBUztvQkFDWCxJQUFJWCxtQkFBbUJXLFlBQVlBLFFBQVF1QixLQUFLLEVBQUU7d0JBQ2hEdEIsT0FBTyxDQUFDLE1BQU0sRUFBRUQsUUFBUXVCLEtBQUssQ0FBQyxDQUFDO29CQUNqQztvQkFDQSxJQUFJaEMsb0JBQW9CUyxZQUFZQSxRQUFROEIsTUFBTSxFQUFFO3dCQUNsRDdCLE9BQU8sQ0FBQyxRQUFRLEVBQUVELFFBQVE4QixNQUFNLENBQUMsQ0FBQztvQkFDcEM7b0JBQ0EsSUFBSXhDLG9CQUFvQlUsWUFBWUEsUUFBUStCLE1BQU0sRUFBRTt3QkFDbEQ5QixPQUFPLENBQUMsUUFBUSxFQUFFRCxRQUFRK0IsTUFBTSxDQUFDLENBQUM7b0JBQ3BDO29CQUNBLElBQUl2QyxtQkFBbUJRLFlBQVlBLFFBQVF3QixLQUFLLEVBQUU7d0JBQ2hEdkIsT0FBTyxDQUFDLE9BQU8sRUFBRUQsUUFBUXdCLEtBQUssQ0FBQyxDQUFDO29CQUNsQztnQkFDRjtnQkFFQSxPQUFPdkI7WUFDVDtZQUVBK0IsV0FBVyxDQUFDdEIsV0FBV3VCO2dCQUNyQixPQUFPLENBQUMsVUFBVSxFQUFFdkIsVUFBVSxhQUFhLEVBQUV1QixZQUFZLENBQUM7WUFDNUQ7WUFFQUMsV0FBVyxDQUFDeEIsV0FBV1g7Z0JBQ3JCLE9BQU8sQ0FBQyxVQUFVLEVBQUVXLFVBQVUsVUFBVSxFQUFFWCxVQUFVLFVBQVUsQ0FBQztZQUNqRTtZQUVBb0MsUUFBUTtnQkFDTixPQUFPO1lBQ1Q7WUFFQUMsT0FBTyxDQUFDMUI7Z0JBQ04sT0FBTyxDQUFDLGlCQUFpQixFQUFFQSxVQUFVLENBQUM7WUFDeEM7WUFFQSxtQkFBbUI7WUFDbkIyQixTQUFTO2dCQUNQeEMsU0FBUyxDQUFDYSxXQUFXWDtvQkFDbkIsT0FBTyxDQUFDLFVBQVUsRUFBRVcsVUFBVSxVQUFVLEVBQUVYLFVBQVUsUUFBUSxDQUFDO2dCQUMvRDtnQkFDQXNCLEtBQUssQ0FBQ1g7b0JBQ0osT0FBTyxDQUFDLFVBQVUsRUFBRUEsVUFBVSxRQUFRLENBQUM7Z0JBQ3pDO2dCQUNBNEIsUUFBUSxDQUFDQztvQkFDUCxPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLGVBQWUsQ0FBQztnQkFDNUM7Z0JBQ0FDLFNBQVMsQ0FBQzlCO29CQUNSLE9BQU8sQ0FBQyxVQUFVLEVBQUVBLFVBQVUsZUFBZSxDQUFDO2dCQUNoRDtnQkFDQStCLElBQUksQ0FBQy9CO29CQUNILE9BQU8sQ0FBQyxVQUFVLEVBQUVBLFVBQVUsbUJBQW1CLENBQUM7Z0JBQ3BEO2dCQUNBVSxNQUFNLENBQUNWLFdBQVdHO29CQUNoQixPQUFPLENBQUMsVUFBVSxFQUFFSCxVQUFVLGdCQUFnQixFQUFFRyxPQUFPLENBQUM7Z0JBQzFEO2dCQUNBNkIsVUFBVSxDQUFDaEM7b0JBQ1QsT0FBTyxDQUFDLFVBQVUsRUFBRUEsVUFBVSxpQkFBaUIsQ0FBQztnQkFDbEQ7Z0JBQ0FpQyxRQUFRLENBQUNqQyxXQUFXVjtvQkFDbEIsSUFBSUMsTUFBTSxDQUFDLFVBQVUsRUFBRVMsVUFBVSx5QkFBeUIsQ0FBQztvQkFFM0QsSUFBSVYsU0FBUzt3QkFDWCxJQUFJQSxRQUFROEIsTUFBTSxFQUFFOzRCQUNsQjdCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSTJDLEtBQUs1QyxRQUFROEIsTUFBTSxFQUFFZSxXQUFXLEdBQUcsQ0FBQzt3QkFDM0Q7d0JBQ0EsSUFBSTdDLFFBQVF3QixLQUFLLEVBQUV2QixPQUFPLENBQUMsT0FBTyxFQUFFRCxRQUFRd0IsS0FBSyxDQUFDLENBQUM7b0JBQ3JEO29CQUVBLE9BQU92QjtnQkFDVDtnQkFDQTZDLFNBQVMsQ0FBQ3BDLFdBQVdWO29CQUNuQixJQUFJQyxNQUFNLENBQUMsVUFBVSxFQUFFUyxVQUFVLDBCQUEwQixDQUFDO29CQUU1RCxJQUFJVixTQUFTO3dCQUNYLElBQUlBLFFBQVE4QixNQUFNLEVBQUU7NEJBQ2xCN0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJMkMsS0FBSzVDLFFBQVE4QixNQUFNLEVBQUVlLFdBQVcsR0FBRyxDQUFDO3dCQUMzRDt3QkFDQSxJQUFJN0MsUUFBUXdCLEtBQUssRUFBRXZCLE9BQU8sQ0FBQyxPQUFPLEVBQUVELFFBQVF3QixLQUFLLENBQUMsQ0FBQztvQkFDckQ7b0JBRUEsT0FBT3ZCO2dCQUNUO2dCQUNBOEMsUUFBUSxDQUFDckMsV0FBV1Y7b0JBQ2xCLElBQUlDLE1BQU0sQ0FBQyxVQUFVLEVBQUVTLFVBQVUsb0NBQW9DLENBQUM7b0JBRXRFLElBQUlWLFNBQVM7d0JBQ1gsSUFBSUEsUUFBUThCLE1BQU0sRUFBRTs0QkFDbEI3QixPQUFPLENBQUMsT0FBTyxFQUFFLElBQUkyQyxLQUFLNUMsUUFBUThCLE1BQU0sRUFBRWUsV0FBVyxHQUFHLENBQUM7d0JBQzNEO3dCQUNBLElBQUk3QyxRQUFRd0IsS0FBSyxFQUFFdkIsT0FBTyxDQUFDLE9BQU8sRUFBRUQsUUFBUXdCLEtBQUssQ0FBQyxDQUFDO29CQUNyRDtvQkFFQSxPQUFPdkI7Z0JBQ1Q7WUFDRjtZQUVBK0MsUUFBUSxDQUFDdEM7Z0JBQ1AsT0FBTyxDQUFDLFVBQVUsRUFBRUEsVUFBVSxPQUFPLENBQUM7WUFDeEM7WUFFQXVDLE9BQU87Z0JBQ0xDLE9BQU8sQ0FBQ3hDLFdBQVdYLFdBQVdvRCxVQUFVbkQ7b0JBQ3RDLElBQUlDLE1BQU0sQ0FBQyxVQUFVLEVBQUVTLFVBQVUsT0FBTyxFQUFFWCxVQUFVLFNBQVMsRUFBRW9ELFNBQVMsQ0FBQyxDQUFDO29CQUUxRSxJQUFJbkQsU0FBUzt3QkFDWCxJQUFJQSxRQUFRdUIsS0FBSyxFQUFFdEIsT0FBTyxDQUFDLE1BQU0sRUFBRUQsUUFBUXVCLEtBQUssQ0FBQyxDQUFDO3dCQUNsRCxJQUFJdkIsUUFBUXdCLEtBQUssRUFBRXZCLE9BQU8sQ0FBQyxPQUFPLEVBQUVELFFBQVF3QixLQUFLLENBQUMsQ0FBQztvQkFDckQ7b0JBRUEsT0FBT3ZCO2dCQUNUO2dCQUNBbUQsUUFBUSxDQUFDMUMsV0FBV1g7b0JBQ2xCLE9BQU8sQ0FBQyxVQUFVLEVBQUVXLFVBQVUsT0FBTyxFQUFFWCxVQUFVLE9BQU8sQ0FBQztnQkFDM0Q7WUFDRjtRQUNGO1FBRUEsa0JBQWtCO1FBQ2xCc0QsUUFBUTtZQUNOaEMsS0FBSztnQkFDSCxPQUFPO1lBQ1Q7WUFDQWlDLFlBQVksQ0FBQ3REO2dCQUNYLElBQUlDLE1BQU07Z0JBRVYsSUFBSUQsU0FBUztvQkFDWCxJQUFJQSxRQUFRdUIsS0FBSyxFQUFFdEIsT0FBTyxDQUFDLE1BQU0sRUFBRUQsUUFBUXVCLEtBQUssQ0FBQyxDQUFDO29CQUNsRCxJQUFJdkIsUUFBUThCLE1BQU0sRUFBRTdCLE9BQU8sQ0FBQyxRQUFRLEVBQUVELFFBQVE4QixNQUFNLENBQUMsQ0FBQztvQkFDdEQsSUFBSTlCLFFBQVF3QixLQUFLLEVBQUV2QixPQUFPLENBQUMsT0FBTyxFQUFFRCxRQUFRd0IsS0FBSyxDQUFDLENBQUM7b0JBQ25ELElBQUl4QixRQUFRdUQsVUFBVSxFQUFFdEQsT0FBTyxDQUFDLGFBQWEsRUFBRUQsUUFBUXVELFVBQVUsQ0FBQyxDQUFDO2dCQUNyRTtnQkFFQSxPQUFPdEQ7WUFDVDtZQUNBdUQsV0FBVyxDQUFDakIsU0FBU3ZDO2dCQUNuQixJQUFJQyxNQUFNLENBQUMsUUFBUSxFQUFFc0MsUUFBUSxZQUFZLENBQUM7Z0JBRTFDLElBQUl2QyxTQUFTO29CQUNYLElBQUlBLFFBQVF5RCxVQUFVLEVBQUV4RCxPQUFPLENBQUMsWUFBWSxFQUFFRCxRQUFReUQsVUFBVSxDQUFDLENBQUM7b0JBQ2xFLElBQUl6RCxRQUFROEIsTUFBTSxFQUFFN0IsT0FBTyxDQUFDLFFBQVEsRUFBRUQsUUFBUThCLE1BQU0sQ0FBQyxDQUFDO29CQUN0RCxJQUFJOUIsUUFBUXVCLEtBQUssRUFBRXRCLE9BQU8sQ0FBQyxPQUFPLEVBQUVELFFBQVF1QixLQUFLLENBQUMsQ0FBQztvQkFDbkQsSUFBSXZCLFFBQVF3QixLQUFLLEVBQUV2QixPQUFPLENBQUMsT0FBTyxFQUFFRCxRQUFRd0IsS0FBSyxDQUFDLENBQUM7b0JBQ25ELElBQUl4QixRQUFRYSxNQUFNLEVBQUVaLE9BQU8sQ0FBQyxTQUFTLEVBQUVELFFBQVFhLE1BQU0sQ0FBQyxDQUFDO2dCQUN6RDtnQkFFQSxPQUFPWjtZQUNUO1lBQ0F5RCxTQUFTO2dCQUNQQyxNQUFNLENBQUNwQixTQUFTcUI7b0JBQ2QsT0FBTyxDQUFDLFFBQVEsRUFBRXJCLFFBQVEsdUJBQXVCLEVBQUVxQixPQUFPLENBQUM7Z0JBQzdEO2dCQUNBQyxPQUFPLENBQUN0QjtvQkFDTixPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLHNCQUFzQixDQUFDO2dCQUNuRDtZQUNGO1lBQ0EvQixVQUFVLENBQUMrQjtnQkFDVCxPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLFNBQVMsQ0FBQztZQUN0QztZQUNBckIsT0FBTyxDQUFDcUIsU0FBU3VCO2dCQUNmLE9BQU8sQ0FBQyxRQUFRLEVBQUV2QixRQUFRLFFBQVEsRUFBRXVCLFFBQVEsQ0FBQztZQUMvQztZQUNBQyxRQUFRLENBQUN4QjtnQkFDUCxPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLE9BQU8sQ0FBQztZQUNwQztZQUNBeUIsUUFBUTtnQkFDTkEsUUFBUSxDQUFDekIsU0FBUzBCO29CQUNoQixJQUFJaEUsTUFBTSxDQUFDLFFBQVEsRUFBRXNDLFFBQVEsa0JBQWtCLENBQUM7b0JBRWhELElBQUkwQixrQkFBa0IzRCxXQUFXO3dCQUMvQkwsT0FBTyxDQUFDLGdCQUFnQixFQUFFZ0UsY0FBYzFELFFBQVEsR0FBRyxDQUFDO29CQUN0RDtvQkFDQSxPQUFPTjtnQkFDVDtnQkFDQWlFLE9BQU8sQ0FBQzNCLFNBQVM0QixTQUFTRjtvQkFDeEIsSUFBSWhFLE1BQU0sQ0FBQyxRQUFRLEVBQUVzQyxRQUFRLGtCQUFrQixFQUFFNEIsUUFBUSxDQUFDO29CQUUxRCxJQUFJRixrQkFBa0IzRCxXQUFXO3dCQUMvQkwsT0FBTyxDQUFDLGdCQUFnQixFQUFFZ0UsY0FBYzFELFFBQVEsR0FBRyxDQUFDO29CQUN0RDtvQkFFQSxPQUFPTjtnQkFDVDtnQkFDQW1FLE9BQU8sQ0FBQzdCLFNBQVM0QixTQUFTbkU7b0JBQ3hCLElBQUlDLE1BQU0sQ0FBQyxRQUFRLEVBQUVzQyxRQUFRLGtCQUFrQixFQUFFNEIsUUFBUSxPQUFPLENBQUM7b0JBRWpFLElBQUluRSxTQUFTO3dCQUNYLElBQUlBLFFBQVF3QixLQUFLLEtBQUtsQixXQUFXTCxPQUFPLENBQUMsTUFBTSxFQUFFRCxRQUFRd0IsS0FBSyxDQUFDLENBQUM7d0JBQ2hFLElBQUl4QixRQUFRcUUsVUFBVSxLQUFLL0QsV0FBVzs0QkFDcENMLE9BQU8sQ0FBQyxhQUFhLEVBQUVELFFBQVFxRSxVQUFVLENBQUM5RCxRQUFRLEdBQUcsQ0FBQzt3QkFDeEQ7d0JBQ0EsSUFBSVAsUUFBUXVCLEtBQUssS0FBS2pCLFdBQVdMLE9BQU8sQ0FBQyxPQUFPLEVBQUVELFFBQVF1QixLQUFLLENBQUMsQ0FBQzt3QkFDakUsSUFBSXZCLFFBQVE4QixNQUFNLEtBQUt4QixXQUFXTCxPQUFPLENBQUMsUUFBUSxFQUFFRCxRQUFROEIsTUFBTSxDQUFDLENBQUM7b0JBQ3RFO29CQUVBLE9BQU83QjtnQkFDVDtZQUNGO1lBQ0FxRSxPQUFNL0IsT0FBTyxFQUFFZ0IsVUFBVTtnQkFDdkIsSUFBSXRELE1BQU0sQ0FBQyxRQUFRLEVBQUVzQyxRQUFRLENBQUMsQ0FBQztnQkFFL0IsSUFBSWdCLGVBQWVqRCxXQUFXO29CQUM1QkwsT0FBTyxDQUFDLFlBQVksRUFBRXNELFdBQVdoRCxRQUFRLEdBQUcsQ0FBQztnQkFDL0M7Z0JBRUEsT0FBT047WUFDVDtZQUNBc0UsYUFBWWhDLE9BQU8sRUFBRWlDLGFBQWE7Z0JBQ2hDLE9BQU8sQ0FBQyxRQUFRLEVBQUVqQyxRQUFRLGNBQWMsRUFBRWlDLGNBQWMsQ0FBQztZQUMzRDtZQUNBQyxjQUFjLENBQUNsQztnQkFDYixPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLHVDQUF1QyxDQUFDO1lBQ3BFO1lBQ0FtQyxRQUFPQyxVQUFVLEVBQUUzRSxPQUFPO2dCQUN4QixJQUFJQyxNQUFNLENBQUMsU0FBUyxFQUFFMEUsV0FBVyxDQUFDLENBQUM7Z0JBRW5DLElBQUkzRSxTQUFTO29CQUNYLElBQUlBLFFBQVF1RCxVQUFVLEtBQUtqRCxXQUFXO3dCQUNwQ0wsT0FBTyxDQUFDLFlBQVksRUFBRUQsUUFBUXVELFVBQVUsQ0FBQ2hELFFBQVEsR0FBRyxDQUFDO29CQUN2RDtvQkFDQSxJQUFJUCxRQUFRNEUsY0FBYyxLQUFLdEUsV0FBVzt3QkFDeENMLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRUQsUUFBUTRFLGNBQWMsQ0FBQ3JFLFFBQVEsR0FBRyxDQUFDO29CQUNoRTtvQkFDQSxJQUFJUCxRQUFRNkUsZ0JBQWdCLEVBQUU7d0JBQzVCNUUsT0FBTyxDQUFDLDBCQUEwQixFQUFFRCxRQUFRNkUsZ0JBQWdCLENBQUMsQ0FBQztvQkFDaEU7Z0JBQ0Y7Z0JBRUEsT0FBTzVFO1lBQ1Q7WUFDQTJCLFNBQVMsQ0FBQ1c7Z0JBQ1IsT0FBTyxDQUFDLFFBQVEsRUFBRUEsUUFBUSxRQUFRLENBQUM7WUFDckM7WUFDQXVDLE9BQU8sQ0FBQ3ZDO2dCQUNOLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRUEsUUFBUSxDQUFDO1lBQ3ZDO1lBQ0FDLFNBQVM7Z0JBQ1B1QyxLQUFLLENBQUN4QyxTQUFTMUI7b0JBQ2IsT0FBTyxDQUFDLFFBQVEsRUFBRTBCLFFBQVEsTUFBTSxFQUFFMUIsT0FBTyxDQUFDO2dCQUM1QztnQkFDQW1FLE1BQU0sQ0FBQ3pDLFNBQVN2QztvQkFDZCxJQUFJQyxNQUFNLENBQUMsUUFBUSxFQUFFc0MsUUFBUSxNQUFNLENBQUM7b0JBRXBDLElBQUl2QyxTQUFTO3dCQUNYLElBQUlBLFFBQVF3QixLQUFLLEVBQUV2QixPQUFPLENBQUMsTUFBTSxFQUFFRCxRQUFRd0IsS0FBSyxDQUFDLENBQUM7d0JBQ2xELElBQUl4QixRQUFRdUIsS0FBSyxFQUFFdEIsT0FBTyxDQUFDLE9BQU8sRUFBRUQsUUFBUXVCLEtBQUssQ0FBQyxDQUFDO3dCQUNuRCxJQUFJdkIsUUFBUThCLE1BQU0sRUFBRTdCLE9BQU8sQ0FBQyxRQUFRLEVBQUVELFFBQVE4QixNQUFNLENBQUMsQ0FBQztvQkFDeEQ7b0JBRUEsT0FBTzdCO2dCQUNUO2dCQUNBZ0YsU0FBUyxDQUFDMUM7b0JBQ1IsT0FBTyxDQUFDLFFBQVEsRUFBRUEsUUFBUSxTQUFTLENBQUM7Z0JBQ3RDO2dCQUNBdEIsS0FBSyxDQUFDc0I7b0JBQ0osT0FBTyxDQUFDLFFBQVEsRUFBRUEsUUFBUSxZQUFZLENBQUM7Z0JBQ3pDO2dCQUNBMkMsUUFBUSxDQUFDM0MsU0FBUzFCO29CQUNoQixPQUFPLENBQUMsUUFBUSxFQUFFMEIsUUFBUSxTQUFTLEVBQUUxQixPQUFPLENBQUM7Z0JBQy9DO2dCQUNBc0UsZUFBZSxDQUFDNUM7b0JBQ2QsT0FBTyxDQUFDLGtCQUFrQixFQUFFQSxRQUFRLE9BQU8sQ0FBQztnQkFDOUM7Z0JBQ0FDLFNBQVMsQ0FBQ0QsU0FBU3ZDO29CQUNqQixJQUFJQyxNQUFNLENBQUMsUUFBUSxFQUFFc0MsUUFBUSxTQUFTLENBQUM7b0JBRXZDLElBQUl2QyxZQUFZTSxXQUFXO3dCQUN6QixJQUFJTixRQUFRd0IsS0FBSyxFQUFFdkIsT0FBTyxDQUFDLE1BQU0sRUFBRUQsUUFBUXdCLEtBQUssQ0FBQyxDQUFDO3dCQUNsRCxJQUFJeEIsUUFBUXVCLEtBQUssRUFBRXRCLE9BQU8sQ0FBQyxPQUFPLEVBQUVELFFBQVF1QixLQUFLLENBQUMsQ0FBQztvQkFDckQ7b0JBRUEsT0FBT3RCO2dCQUNUO2dCQUNBbUYsUUFBUSxDQUFDN0MsU0FBUzhDLE9BQU9yRjtvQkFDdkIsSUFBSUMsTUFBTSxDQUFDLFFBQVEsRUFBRXNDLFFBQVEsc0JBQXNCLEVBQUVwQixtQkFBbUJrRSxPQUFPLENBQUM7b0JBRWhGLElBQUlyRixTQUFTO3dCQUNYLElBQUlBLFFBQVF3QixLQUFLLEtBQUtsQixXQUFXTCxPQUFPLENBQUMsT0FBTyxFQUFFRCxRQUFRd0IsS0FBSyxDQUFDLENBQUM7b0JBQ25FO29CQUVBLE9BQU92QjtnQkFDVDtnQkFDQXFGLE9BQU8sQ0FBQy9DLFNBQVN2QztvQkFDZixJQUFJQyxNQUFNLENBQUMsUUFBUSxFQUFFc0MsUUFBUSxPQUFPLENBQUM7b0JBRXJDLElBQUl2QyxTQUFTO3dCQUNYLElBQUlBLFFBQVF1RixJQUFJLEVBQUV0RixPQUFPLENBQUMsS0FBSyxFQUFFRCxRQUFRdUYsSUFBSSxDQUFDLENBQUM7d0JBQy9DLElBQUlDLE1BQU1DLE9BQU8sQ0FBQ3pGLFFBQVEwRixZQUFZLEdBQUc7NEJBQ3ZDekYsT0FBTyxDQUFDLGVBQWUsRUFBRUQsUUFBUTBGLFlBQVksQ0FBQ0MsSUFBSSxDQUFDLEtBQUssQ0FBQzt3QkFDM0QsT0FBTyxJQUFJM0YsUUFBUTBGLFlBQVksRUFBRTs0QkFDL0J6RixPQUFPLENBQUMsZUFBZSxFQUFFRCxRQUFRMEYsWUFBWSxDQUFDLENBQUM7d0JBQ2pEO29CQUNGO29CQUVBLE9BQU96RjtnQkFDVDtZQUNGO1lBQ0EyRixLQUFLLENBQUNyRCxVQUFZLENBQUMsUUFBUSxFQUFFQSxRQUFRLElBQUksQ0FBQztZQUMxQ3NELFNBQVMsQ0FBQ3REO2dCQUNSLE9BQU8sQ0FBQyxRQUFRLEVBQUVBLFFBQVEsUUFBUSxDQUFDO1lBQ3JDO1lBQ0ErQyxPQUFPLENBQUMvQyxTQUFTdkM7Z0JBQ2YsSUFBSUMsTUFBTSxDQUFDLFFBQVEsRUFBRXNDLFFBQVEsT0FBTyxDQUFDO2dCQUVyQyxJQUFJdkMsU0FBUztvQkFDWCxJQUFJQSxRQUFRdUYsSUFBSSxFQUFFdEYsT0FBTyxDQUFDLEtBQUssRUFBRUQsUUFBUXVGLElBQUksQ0FBQyxDQUFDO29CQUMvQyxJQUFJQyxNQUFNQyxPQUFPLENBQUN6RixRQUFRMEYsWUFBWSxHQUFHO3dCQUN2Q3pGLE9BQU8sQ0FBQyxlQUFlLEVBQUVELFFBQVEwRixZQUFZLENBQUNDLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQzNELE9BQU8sSUFBSTNGLFFBQVEwRixZQUFZLEVBQUU7d0JBQy9CekYsT0FBTyxDQUFDLGVBQWUsRUFBRUQsUUFBUTBGLFlBQVksQ0FBQyxDQUFDO29CQUNqRDtnQkFDRjtnQkFFQSxPQUFPekY7WUFDVDtZQUNBNkYsT0FBTztnQkFDTEMsS0FBSyxDQUFDeEQsU0FBU3lEO29CQUNiLE9BQU8sQ0FBQyxRQUFRLEVBQUV6RCxRQUFRLE9BQU8sRUFBRXlELE9BQU8sQ0FBQztnQkFDN0M7Z0JBQ0EzRSxLQUFLLENBQUNrQjtvQkFDSixPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLE1BQU0sQ0FBQztnQkFDbkM7Z0JBQ0EyQyxRQUFRLENBQUMzQyxTQUFTMEQsVUFBVUQ7b0JBQzFCLE9BQU8sQ0FBQyxRQUFRLEVBQUV6RCxRQUFRLFNBQVMsRUFBRTBELFNBQVMsT0FBTyxFQUFFRCxPQUFPLENBQUM7Z0JBQ2pFO1lBQ0Y7WUFDQUUsVUFBVSxDQUFDM0Q7Z0JBQ1QsT0FBTyxDQUFDLFFBQVEsRUFBRUEsUUFBUSxTQUFTLENBQUM7WUFDdEM7WUFDQTRELFNBQVMsQ0FBQzVELFNBQVM2RDtnQkFDakIsT0FBTyxDQUFDLFFBQVEsRUFBRTdELFFBQVEsVUFBVSxFQUFFNkQsVUFBVSxDQUFDO1lBQ25EO1lBQ0FDLE9BQU8sQ0FBQzlELFNBQVMxQjtnQkFDZixPQUFPLENBQUMsUUFBUSxFQUFFMEIsUUFBUSxjQUFjLEVBQUUxQixVQUFVLE1BQU0sQ0FBQztZQUM3RDtZQUNBeUYsV0FBVztnQkFDVEMsTUFBTSxDQUFDQTtvQkFDTCxPQUFPLENBQUMsa0JBQWtCLEVBQUVBLEtBQUssQ0FBQztnQkFDcEM7Z0JBQ0FqQyxPQUFPLENBQUMvQixTQUFTZ0U7b0JBQ2YsT0FBTyxDQUFDLFFBQVEsRUFBRWhFLFFBQVEsV0FBVyxFQUFFZ0UsS0FBSyxDQUFDO2dCQUMvQztnQkFDQWxGLEtBQUssQ0FBQ2tCO29CQUNKLE9BQU8sQ0FBQyxRQUFRLEVBQUVBLFFBQVEsVUFBVSxDQUFDO2dCQUN2QztZQUNGO1lBQ0FpRSxRQUFRLENBQUNqRTtnQkFDUCxPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLFdBQVcsQ0FBQztZQUN4QztZQUNBa0UsU0FBUyxDQUFDbEU7Z0JBQ1IsT0FBTyxDQUFDLFFBQVEsRUFBRUEsUUFBUSxRQUFRLENBQUM7WUFDckM7WUFDQTdDLFVBQVUsQ0FBQzZDO2dCQUNULE9BQU8sQ0FBQyxRQUFRLEVBQUVBLFFBQVEsU0FBUyxDQUFDO1lBQ3RDO1lBQ0FtRSxTQUFTLENBQUNuRTtnQkFDUixPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLGVBQWUsQ0FBQztZQUM1QztZQUNBb0UsUUFBUSxDQUFDcEU7Z0JBQ1AsT0FBTyxDQUFDLFFBQVEsRUFBRUEsUUFBUSxPQUFPLENBQUM7WUFDcEM7WUFDQXFFLFlBQVksQ0FBQ3JFO2dCQUNYLE9BQU8sQ0FBQyxRQUFRLEVBQUVBLFFBQVEsWUFBWSxDQUFDO1lBQ3pDO1lBQ0FzRSxZQUFZLENBQUN0RTtnQkFDWCxPQUFPLENBQUMsUUFBUSxFQUFFQSxRQUFRLFdBQVcsQ0FBQztZQUN4QztRQUNGO1FBRUE0RCxTQUFTLENBQUNDO1lBQ1IsT0FBTyxDQUFDLFVBQVUsRUFBRUEsVUFBVSxDQUFDO1FBQ2pDO1FBRUFLLFNBQVM7WUFDUCxPQUFPO1FBQ1Q7UUFFQSx3QkFBd0I7UUFDeEJLLGNBQWM7WUFDWkMsVUFBVTtnQkFDUix3QkFBd0I7Z0JBQ3hCQSxVQUFVLENBQUNDO29CQUNULE9BQU8sQ0FBQyxjQUFjLEVBQUVBLGNBQWMsU0FBUyxDQUFDO2dCQUNsRDtnQkFFQTNELFFBQVE7b0JBQ05oQyxLQUFJMkYsYUFBYSxFQUFFekUsT0FBTzt3QkFDeEIsT0FBTyxDQUFDLGNBQWMsRUFBRXlFLGNBQWMsUUFBUSxFQUFFekUsUUFBUSxTQUFTLENBQUM7b0JBQ3BFO29CQUVBd0QsS0FBSWlCLGFBQWEsRUFBRXpFLE9BQU8sRUFBRTBFLFNBQVMsRUFBRUMsaUJBQWlCO3dCQUN0RCxJQUFJakgsTUFBTSxDQUFDLGNBQWMsRUFBRStHLGNBQWMsUUFBUSxFQUFFekUsUUFBUSxVQUFVLEVBQUUwRSxVQUFVLENBQUMsQ0FBQzt3QkFFbkYsSUFBSUMsc0JBQXNCNUcsV0FBVzs0QkFDbkNMLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRWlILGtCQUFrQjNHLFFBQVEsR0FBRyxDQUFDO3dCQUM3RDt3QkFFQSxPQUFPTjtvQkFDVDtnQkFDRjtnQkFDQWtILGFBQWEsQ0FBQ0gsZUFBZXpFO29CQUMzQixPQUFPLENBQUMsY0FBYyxFQUFFeUUsY0FBYyxRQUFRLEVBQUV6RSxRQUFRLHFCQUFxQixDQUFDO2dCQUNoRjtnQkFDQTZFLFlBQVksQ0FBQ0osZUFBZXpFLFNBQVMwRTtvQkFDbkMsT0FBTyxDQUFDLGNBQWMsRUFBRUQsY0FBYyxRQUFRLEVBQUV6RSxRQUFRLFVBQVUsRUFBRTBFLFVBQVUsWUFBWSxDQUFDO2dCQUM3RjtnQkFDQUksU0FBUyxDQUFDTCxlQUFlQyxXQUFXQztvQkFDbEMsSUFBSWpILE1BQU0sQ0FBQyxjQUFjLEVBQUUrRyxjQUFjLFVBQVUsRUFBRUMsVUFBVSxDQUFDLENBQUM7b0JBRWpFLElBQUlDLHNCQUFzQjVHLFdBQVc7d0JBQ25DTCxPQUFPLENBQUMsa0JBQWtCLEVBQUVpSCxrQkFBa0IzRyxRQUFRLEdBQUcsQ0FBQztvQkFDNUQ7b0JBRUEsT0FBT047Z0JBQ1Q7WUFDRjtZQUVBcUgsV0FBVztnQkFDVCx3QkFBd0I7Z0JBQ3hCQyxVQUFVLENBQUNDLGVBQWUxSDtvQkFDeEIsT0FBTyxDQUFDLGNBQWMsRUFBRTBILGNBQWMsQ0FBQyxFQUFFMUgsTUFBTSxTQUFTLENBQUM7Z0JBQzNEO2dCQUNBSyxVQUFVLENBQUNxSCxlQUFlMUg7b0JBQ3hCLE9BQU8sQ0FBQyxVQUFVLEVBQUUwSCxjQUFjLENBQUMsRUFBRTFILE1BQU0sbUJBQW1CLENBQUM7Z0JBQ2pFO2dCQUNBRCxTQUFTLENBQUNtSCxlQUFlbEgsT0FBT0M7b0JBQzlCLE9BQU8sQ0FBQyxVQUFVLEVBQUVpSCxjQUFjLENBQUMsRUFBRWxILE1BQU0sVUFBVSxFQUFFQyxVQUFVLENBQUM7Z0JBQ3BFO1lBQ0Y7UUFDRjtRQUVBLG1CQUFtQjtRQUNuQjBILFFBQVE7WUFDTkMsZUFBZTtnQkFDYixPQUFPO1lBQ1Q7WUFDQUMsYUFBYTtnQkFDWCxPQUFPO1lBQ1Q7WUFDQUMsc0JBQXNCO2dCQUNwQixPQUFPO1lBQ1Q7WUFDQUMsYUFBYTtnQkFDWCxPQUFPO1lBQ1Q7WUFDQUMsYUFBYTtnQkFDWCxPQUFPO1lBQ1Q7WUFDQUMsaUJBQWlCLENBQUNmO2dCQUNoQixPQUFPLENBQUMsd0JBQXdCLEVBQUVBLGNBQWMsZ0JBQWdCLENBQUM7WUFDbkU7UUFDRjtRQUVBZ0IsY0FBYztZQUNaQyxjQUFjLENBQUNqQixlQUFlaEg7Z0JBQzVCLElBQUlDLE1BQU0sQ0FBQyxjQUFjLEVBQUUrRyxjQUFjLGNBQWMsQ0FBQztnQkFFeEQsSUFBSWhILFNBQVM7b0JBQ1gsSUFBSUEsUUFBUXVCLEtBQUssRUFBRXRCLE9BQU8sQ0FBQyxNQUFNLEVBQUVELFFBQVF1QixLQUFLLENBQUMsQ0FBQztvQkFDbEQsSUFBSXZCLFFBQVE4QixNQUFNLEVBQUU3QixPQUFPLENBQUMsUUFBUSxFQUFFRCxRQUFROEIsTUFBTSxDQUFDLENBQUM7b0JBQ3RELElBQUk5QixRQUFRa0ksWUFBWSxFQUFFakksT0FBTyxDQUFDLGVBQWUsRUFBRUQsUUFBUWtJLFlBQVksQ0FBQyxDQUFDO29CQUN6RSxJQUFJbEksUUFBUXVDLE9BQU8sRUFBRXRDLE9BQU8sQ0FBQyxVQUFVLEVBQUVELFFBQVF1QyxPQUFPLENBQUMsQ0FBQztvQkFDMUQsSUFBSXZDLFFBQVF3QixLQUFLLEVBQUV2QixPQUFPLENBQUMsT0FBTyxFQUFFRCxRQUFRd0IsS0FBSyxDQUFDLENBQUM7b0JBQ25ELElBQUl4QixRQUFRbUksTUFBTSxFQUFFbEksT0FBTyxDQUFDLFNBQVMsRUFBRUQsUUFBUW1JLE1BQU0sQ0FBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQ2pFLElBQUkzRixRQUFRYSxNQUFNLEVBQUVaLE9BQU8sQ0FBQyxTQUFTLEVBQUVELFFBQVFhLE1BQU0sQ0FBQyxDQUFDO2dCQUN6RDtnQkFFQSxPQUFPWjtZQUNUO1lBQ0FtSSxhQUFhLENBQUNwQixlQUFlcUI7Z0JBQzNCLE9BQU8sQ0FBQyxjQUFjLEVBQUVyQixjQUFjLGNBQWMsRUFBRXFCLGNBQWMsQ0FBQztZQUN2RTtZQUNBQyxvQkFBb0IsQ0FBQ3RCLGVBQWVxQjtnQkFDbEMsT0FBTyxDQUFDLGNBQWMsRUFBRXJCLGNBQWMsY0FBYyxFQUFFcUIsY0FBYyxRQUFRLENBQUM7WUFDL0U7WUFFQUUsTUFBTSxDQUFDdkI7Z0JBQ0wsT0FBTyxDQUFDLGNBQWMsRUFBRUEsY0FBYyxLQUFLLENBQUM7WUFDOUM7UUFDRjtRQUVBd0Isa0JBQWlCeEIsYUFBYSxFQUFFbEQsT0FBTztZQUNyQyxPQUFPLENBQUMsY0FBYyxFQUFFa0QsY0FBYyxRQUFRLEVBQUVsRCxRQUFRLENBQUM7UUFDM0Q7UUFFQTJFLG1CQUFrQnpCLGFBQWE7WUFDN0IsT0FBTyxDQUFDLGNBQWMsRUFBRUEsY0FBYyxPQUFPLENBQUM7UUFDaEQ7UUFFQSxpQkFBaUI7UUFDakI1RixNQUFLUCxNQUFNO1lBQ1QsT0FBTyxDQUFDLE9BQU8sRUFBRUEsT0FBTyxDQUFDO1FBQzNCO1FBRUFnSDtZQUNFLE9BQU87UUFDVDtRQUVBYTtZQUNFLE9BQU87UUFDVDtRQUVBQztZQUNFLE9BQU87UUFDVDtRQUVBQztZQUNFLE9BQU87UUFDVDtJQUNGO0FBQ0YifQ==
|