@discordeno/bot 19.0.0-next.aecc55d → 19.0.0-next.af6ffc3
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/README.md +30 -0
- package/dist/cjs/handlers/interactions/INTERACTION_CREATE.cjs +6 -3
- package/dist/cjs/transformers/channel.cjs +29 -2
- package/dist/cjs/transformers/emoji.cjs +19 -4
- package/dist/cjs/transformers/interaction.cjs +36 -31
- package/dist/cjs/transformers/toggles/Permissions.cjs +2 -2
- package/dist/cjs/transformers/toggles/channel.cjs +7 -2
- package/dist/cjs/transformers/toggles/guild.cjs +74 -52
- package/dist/cjs/transformers.cjs +33 -3
- package/dist/esm/handlers/interactions/INTERACTION_CREATE.js +6 -3
- package/dist/esm/transformers/channel.js +27 -3
- package/dist/esm/transformers/emoji.js +8 -1
- package/dist/esm/transformers/interaction.js +36 -31
- package/dist/esm/transformers/toggles/Permissions.js +2 -2
- package/dist/esm/transformers/toggles/channel.js +7 -2
- package/dist/esm/transformers/toggles/guild.js +74 -52
- package/dist/esm/transformers.js +35 -5
- package/dist/types/handlers/interactions/INTERACTION_CREATE.d.ts +1 -1
- package/dist/types/handlers/interactions/INTERACTION_CREATE.d.ts.map +1 -1
- package/dist/types/transformers/channel.d.ts +38 -4
- package/dist/types/transformers/channel.d.ts.map +1 -1
- package/dist/types/transformers/emoji.d.ts +8 -1
- package/dist/types/transformers/emoji.d.ts.map +1 -1
- package/dist/types/transformers/interaction.d.ts +7 -2
- package/dist/types/transformers/interaction.d.ts.map +1 -1
- package/dist/types/transformers/toggles/Permissions.d.ts +4 -4
- package/dist/types/transformers/toggles/Permissions.d.ts.map +1 -1
- package/dist/types/transformers/toggles/channel.d.ts +3 -0
- package/dist/types/transformers/toggles/channel.d.ts.map +1 -1
- package/dist/types/transformers/toggles/guild.d.ts +48 -36
- package/dist/types/transformers/toggles/guild.d.ts.map +1 -1
- package/dist/types/transformers.d.ts +38 -6
- package/dist/types/transformers.d.ts.map +1 -1
- package/package.json +11 -11
- package/dist/tsconfig.tsbuildinfo +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Discordeno
|
|
2
|
+
|
|
3
|
+
<img align="right" src="https://raw.githubusercontent.com/discordeno/discordeno/main/website/static/img/logo.png" height="150px" />
|
|
4
|
+
|
|
5
|
+
Discord API library for [Node.JS](https://nodejs.org), [Deno](https://deno.land) & [Bun](https://bun.sh/)
|
|
6
|
+
|
|
7
|
+
[](https://discord.com/invite/5vBgXk3UcZ)
|
|
8
|
+
[](https://codecov.io/gh/discordeno/discordeno)
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
Discordeno is actively maintained to guarantee **excellent performance, latest features, and ease of use.**
|
|
12
|
+
|
|
13
|
+
- **Simple, Efficient, and Lightweight**: Discordeno is lightweight, simple to use, and adaptable.
|
|
14
|
+
- By default: No caching.
|
|
15
|
+
- **Functional API**:
|
|
16
|
+
- The functional API eliminates the challenges of extending built-in classes and inheritance while ensuring overall simple but performant code.
|
|
17
|
+
- **Cross Runtime**: Supports the Node.js, Deno, and Bun runtimes.
|
|
18
|
+
- **Standalone components**: Discordeno offers the option to have practically any component of a bot as a separate
|
|
19
|
+
piece, including standalone REST, gateways, custom caches, and more.
|
|
20
|
+
- **Flexibility/Scalability:** Remove any properties, if your bot doesn't need them. For instance, remove `Channel.topic` if your bot doesn't require it. You may save GBs of RAM in this way. A few lines of code are all that are needed to accomplish this for any property on any object.
|
|
21
|
+
|
|
22
|
+
### Custom Cache
|
|
23
|
+
|
|
24
|
+
Have your cache setup in any way you like. Redis, PGSQL or any cache layer you would like.
|
|
25
|
+
|
|
26
|
+
## Links
|
|
27
|
+
|
|
28
|
+
- [Website](https://discordeno.js.org/)
|
|
29
|
+
- [Documentation](https://doc.deno.land/https/deno.land/x/discordeno/mod.ts)
|
|
30
|
+
- [Discord](https://discord.com/invite/5vBgXk3UcZ)
|
|
@@ -8,9 +8,12 @@ Object.defineProperty(exports, "handleInteractionCreate", {
|
|
|
8
8
|
return handleInteractionCreate;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
async function handleInteractionCreate(bot, data) {
|
|
11
|
+
async function handleInteractionCreate(bot, data, shardId) {
|
|
12
12
|
if (!bot.events.interactionCreate) return;
|
|
13
|
-
bot.events.interactionCreate(bot.transformers.interaction(bot,
|
|
13
|
+
bot.events.interactionCreate(bot.transformers.interaction(bot, {
|
|
14
|
+
interaction: data.d,
|
|
15
|
+
shardId
|
|
16
|
+
}));
|
|
14
17
|
}
|
|
15
18
|
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9oYW5kbGVycy9pbnRlcmFjdGlvbnMvSU5URVJBQ1RJT05fQ1JFQVRFLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzY29yZEdhdGV3YXlQYXlsb2FkLCBEaXNjb3JkSW50ZXJhY3Rpb24gfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB0eXBlIHsgQm90IH0gZnJvbSAnLi4vLi4vaW5kZXguanMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVJbnRlcmFjdGlvbkNyZWF0ZShib3Q6IEJvdCwgZGF0YTogRGlzY29yZEdhdGV3YXlQYXlsb2FkLCBzaGFyZElkOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFib3QuZXZlbnRzLmludGVyYWN0aW9uQ3JlYXRlKSByZXR1cm5cblxuICBib3QuZXZlbnRzLmludGVyYWN0aW9uQ3JlYXRlKFxuICAgIGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb24oYm90LCB7XG4gICAgICBpbnRlcmFjdGlvbjogZGF0YS5kIGFzIERpc2NvcmRJbnRlcmFjdGlvbixcbiAgICAgIHNoYXJkSWQsXG4gICAgfSksXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJoYW5kbGVJbnRlcmFjdGlvbkNyZWF0ZSIsImJvdCIsImRhdGEiLCJzaGFyZElkIiwiZXZlbnRzIiwiaW50ZXJhY3Rpb25DcmVhdGUiLCJ0cmFuc2Zvcm1lcnMiLCJpbnRlcmFjdGlvbiIsImQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBR3NCQTs7O2VBQUFBOzs7QUFBZixlQUFlQSx3QkFBd0JDLEdBQVEsRUFBRUMsSUFBMkIsRUFBRUMsT0FBZTtJQUNsRyxJQUFJLENBQUNGLElBQUlHLE1BQU0sQ0FBQ0MsaUJBQWlCLEVBQUU7SUFFbkNKLElBQUlHLE1BQU0sQ0FBQ0MsaUJBQWlCLENBQzFCSixJQUFJSyxZQUFZLENBQUNDLFdBQVcsQ0FBQ04sS0FBSztRQUNoQ00sYUFBYUwsS0FBS00sQ0FBQztRQUNuQkw7SUFDRjtBQUVKIn0=
|
|
@@ -20,6 +20,9 @@ _export(exports, {
|
|
|
20
20
|
},
|
|
21
21
|
transformChannel: function() {
|
|
22
22
|
return transformChannel;
|
|
23
|
+
},
|
|
24
|
+
transformForumTag: function() {
|
|
25
|
+
return transformForumTag;
|
|
23
26
|
}
|
|
24
27
|
});
|
|
25
28
|
const _index = require("../index.cjs");
|
|
@@ -61,6 +64,9 @@ const baseChannel = {
|
|
|
61
64
|
get newlyCreated () {
|
|
62
65
|
return !!this.toggles?.newlyCreated;
|
|
63
66
|
},
|
|
67
|
+
get managed () {
|
|
68
|
+
return !!this.toggles?.managed;
|
|
69
|
+
},
|
|
64
70
|
get permissionOverwrites () {
|
|
65
71
|
return this.internalOverwrites?.map((overwrite)=>{
|
|
66
72
|
const [type, id, allow, deny] = separateOverwrites(overwrite);
|
|
@@ -109,12 +115,33 @@ function transformChannel(bot, payload) {
|
|
|
109
115
|
if (props.createTimestamp && payload.channel.thread_metadata?.create_timestamp) channel.internalThreadMetadata.createTimestamp = Date.parse(payload.channel.thread_metadata.create_timestamp);
|
|
110
116
|
if (props.autoArchiveDuration && payload.channel.thread_metadata?.auto_archive_duration) channel.internalThreadMetadata.autoArchiveDuration = payload.channel.thread_metadata.auto_archive_duration;
|
|
111
117
|
}
|
|
112
|
-
if (props.
|
|
118
|
+
if (props.defaultAutoArchiveDuration && payload.channel.default_auto_archive_duration) channel.defaultAutoArchiveDuration = payload.channel.default_auto_archive_duration;
|
|
113
119
|
if (props.permissions && payload.channel.permissions) channel.permissions = new _Permissions.Permissions(payload.channel.permissions);
|
|
114
120
|
if (props.flags) channel.flags = payload.channel.flags;
|
|
115
121
|
if (props.permissionOverwrites && payload.channel.permission_overwrites) channel.internalOverwrites = payload.channel.permission_overwrites.map((o)=>packOverwrites(o.allow ?? '0', o.deny ?? '0', o.id, o.type));
|
|
116
122
|
if (props.parentId && payload.channel.parent_id) channel.parentId = bot.transformers.snowflake(payload.channel.parent_id);
|
|
123
|
+
if (props.recipients && payload.channel.recipients) channel.recipients = payload.channel.recipients.map((u)=>bot.transformers.user(bot, u));
|
|
124
|
+
if (props.icon && payload.channel.icon) channel.icon = (0, _index.iconHashToBigInt)(payload.channel.icon);
|
|
125
|
+
if (props.applicationId && payload.channel.application_id) channel.applicationId = bot.transformers.snowflake(payload.channel.application_id);
|
|
126
|
+
if (props.member && payload.channel.member) channel.member = bot.transformers.threadMember(bot, payload.channel.member);
|
|
127
|
+
if (props.totalMessageSent && payload.channel.total_message_sent !== undefined) channel.totalMessageSent = payload.channel.total_message_sent;
|
|
128
|
+
if (props.availableTags && payload.channel.available_tags) channel.availableTags = payload.channel.available_tags.map((x)=>bot.transformers.forumTag(bot, x));
|
|
129
|
+
if (props.appliedTags && payload.channel.applied_tags) channel.appliedTags = payload.channel.applied_tags.map((x)=>bot.transformers.snowflake(x));
|
|
130
|
+
if (props.defaultReactionEmoji && payload.channel.default_reaction_emoji) channel.defaultReactionEmoji = bot.transformers.defaultReactionEmoji(bot, payload.channel.default_reaction_emoji);
|
|
131
|
+
if (props.defaultThreadRateLimitPerUser && payload.channel.default_thread_rate_limit_per_user) channel.defaultThreadRateLimitPerUser = payload.channel.default_thread_rate_limit_per_user;
|
|
132
|
+
if (props.defaultSortOrder && payload.channel.default_sort_order !== undefined) channel.defaultSortOrder = payload.channel.default_sort_order;
|
|
133
|
+
if (props.defaultForumLayout && payload.channel.default_forum_layout !== undefined) channel.defaultForumLayout = payload.channel.default_forum_layout;
|
|
117
134
|
return bot.transformers.customizers.channel(bot, payload.channel, channel);
|
|
118
135
|
}
|
|
136
|
+
function transformForumTag(bot, payload) {
|
|
137
|
+
const props = bot.transformers.desiredProperties.forumTag;
|
|
138
|
+
const forumTag = {};
|
|
139
|
+
if (props.id && payload.id) forumTag.id = bot.transformers.snowflake(payload.id);
|
|
140
|
+
if (props.name && payload.name) forumTag.name = payload.name;
|
|
141
|
+
if (props.moderated && payload.moderated) forumTag.moderated = payload.moderated;
|
|
142
|
+
if (props.emojiId && payload.emoji_id) forumTag.emojiId = bot.transformers.snowflake(payload.emoji_id);
|
|
143
|
+
if (props.emojiName && payload.emoji_name) forumTag.emojiName = payload.emoji_name;
|
|
144
|
+
return bot.transformers.customizers.forumTag(bot, payload, forumTag);
|
|
145
|
+
}
|
|
119
146
|
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvY2hhbm5lbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50ICovXG5pbXBvcnQgdHlwZSB7IEJpZ1N0cmluZywgQ2hhbm5lbFR5cGVzLCBEaXNjb3JkQ2hhbm5lbCwgRGlzY29yZFRocmVhZE1lbWJlciwgT3ZlcndyaXRlUmVhZGFibGUsIFZpZGVvUXVhbGl0eU1vZGVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBjYWxjdWxhdGVQZXJtaXNzaW9ucywgdHlwZSBCb3QgfSBmcm9tICcuLi9pbmRleC5qcydcbmltcG9ydCB7IFBlcm1pc3Npb25zIH0gZnJvbSAnLi90b2dnbGVzL1Blcm1pc3Npb25zLmpzJ1xuaW1wb3J0IHsgQ2hhbm5lbFRvZ2dsZXMgfSBmcm9tICcuL3RvZ2dsZXMvY2hhbm5lbC5qcydcblxuY29uc3QgTWFzayA9ICgxbiA8PCA2NG4pIC0gMW5cblxuZXhwb3J0IGZ1bmN0aW9uIHBhY2tPdmVyd3JpdGVzKGFsbG93OiBzdHJpbmcsIGRlbnk6IHN0cmluZywgaWQ6IHN0cmluZywgdHlwZTogbnVtYmVyKTogYmlnaW50IHtcbiAgcmV0dXJuIHBhY2s2NChhbGxvdywgMCkgfCBwYWNrNjQoZGVueSwgMSkgfCBwYWNrNjQoaWQsIDIpIHwgcGFjazY0KHR5cGUsIDMpXG59XG5mdW5jdGlvbiB1bnBhY2s2NCh2OiBiaWdpbnQsIHNoaWZ0OiBudW1iZXIpOiBiaWdpbnQge1xuICByZXR1cm4gKHYgPj4gQmlnSW50KHNoaWZ0ICogNjQpKSAmIE1hc2tcbn1cbmZ1bmN0aW9uIHBhY2s2NCh2OiBzdHJpbmcgfCBudW1iZXIsIHNoaWZ0OiBudW1iZXIpOiBiaWdpbnQge1xuICBjb25zdCBiID0gQmlnSW50KHYpXG4gIGlmIChiIDwgMCB8fCBiID4gTWFzaykgdGhyb3cgbmV3IEVycm9yKCdzaG91bGQgaGF2ZSBiZWVuIGEgNjQgYml0IHVuc2lnbmVkIGludGVnZXI6ICcgKyB2LnRvU3RyaW5nKCkpXG4gIHJldHVybiBiIDw8IEJpZ0ludChzaGlmdCAqIDY0KVxufVxuZXhwb3J0IGZ1bmN0aW9uIHNlcGFyYXRlT3ZlcndyaXRlcyh2OiBiaWdpbnQpOiBbbnVtYmVyLCBiaWdpbnQsIGJpZ2ludCwgYmlnaW50XSB7XG4gIHJldHVybiBbTnVtYmVyKHVucGFjazY0KHYsIDMpKSwgdW5wYWNrNjQodiwgMiksIHVucGFjazY0KHYsIDApLCB1bnBhY2s2NCh2LCAxKV0gYXMgW251bWJlciwgYmlnaW50LCBiaWdpbnQsIGJpZ2ludF1cbn1cblxuZXhwb3J0IGNvbnN0IGJhc2VDaGFubmVsOiBQYXJ0aWFsPENoYW5uZWw+ICYgQmFzZUNoYW5uZWwgPSB7XG4gIGdldCBhcmNoaXZlZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/LmFyY2hpdmVkXG4gIH0sXG4gIGdldCBpbnZpdGFibGUoKSB7XG4gICAgcmV0dXJuICEhdGhpcy50b2dnbGVzPy5pbnZpdGFibGVcbiAgfSxcbiAgZ2V0IGxvY2tlZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/LmxvY2tlZFxuICB9LFxuICBnZXQgbnNmdygpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/Lm5zZndcbiAgfSxcbiAgZ2V0IG5ld2x5Q3JlYXRlZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/Lm5ld2x5Q3JlYXRlZFxuICB9LFxuICBnZXQgcGVybWlzc2lvbk92ZXJ3cml0ZXMoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaW50ZXJuYWxPdmVyd3JpdGVzPy5tYXAoKG92ZXJ3cml0ZSkgPT4ge1xuICAgICAgICBjb25zdCBbdHlwZSwgaWQsIGFsbG93LCBkZW55XSA9IHNlcGFyYXRlT3ZlcndyaXRlcyhvdmVyd3JpdGUpXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBhbGxvdzogY2FsY3VsYXRlUGVybWlzc2lvbnMoYWxsb3cpLFxuICAgICAgICAgIGRlbnk6IGNhbGN1bGF0ZVBlcm1pc3Npb25zKGRlbnkpLFxuICAgICAgICB9XG4gICAgICB9KSA/PyBbXVxuICAgIClcbiAgfSxcbiAgZ2V0IHRocmVhZE1ldGFkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBhcmNoaXZlVGltZXN0YW1wOiB0aGlzLmludGVybmFsVGhyZWFkTWV0YWRhdGE/LmFyY2hpdmVUaW1lc3RhbXAsXG4gICAgICBjcmVhdGVUaW1lc3RhbXA6IHRoaXMuaW50ZXJuYWxUaHJlYWRNZXRhZGF0YT8uY3JlYXRlVGltZXN0YW1wLFxuICAgICAgYXV0b0FyY2hpdmVEdXJhdGlvbjogdGhpcy5pbnRlcm5hbFRocmVhZE1ldGFkYXRhPy5hdXRvQXJjaGl2ZUR1cmF0aW9uLFxuICAgICAgbG9ja2VkOiB0aGlzLmxvY2tlZCxcbiAgICAgIGludml0YWJsZTogdGhpcy5pbnZpdGFibGUsXG4gICAgICBhcmNoaXZlZDogdGhpcy5hcmNoaXZlZCxcbiAgICB9XG4gIH0sXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1DaGFubmVsKGJvdDogQm90LCBwYXlsb2FkOiB7IGNoYW5uZWw6IERpc2NvcmRDaGFubmVsIH0gJiB7IGd1aWxkSWQ/OiBCaWdTdHJpbmcgfSk6IENoYW5uZWwge1xuICBjb25zdCBjaGFubmVsID0gT2JqZWN0LmNyZWF0ZShiYXNlQ2hhbm5lbCkgYXMgQ2hhbm5lbFxuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY2hhbm5lbFxuICBjaGFubmVsLnRvZ2dsZXMgPSBuZXcgQ2hhbm5lbFRvZ2dsZXMocGF5bG9hZC5jaGFubmVsKVxuXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmNoYW5uZWwuaWQpIGNoYW5uZWwuaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmNoYW5uZWwuaWQpXG4gIGlmIChwcm9wcy5ndWlsZElkICYmIChwYXlsb2FkLmd1aWxkSWQgPz8gcGF5bG9hZC5jaGFubmVsLmd1aWxkX2lkKSlcbiAgICBjaGFubmVsLmd1aWxkSWQgPSBwYXlsb2FkLmd1aWxkSWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmd1aWxkSWQpIDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5jaGFubmVsLmd1aWxkX2lkISlcbiAgaWYgKHByb3BzLnR5cGUpIGNoYW5uZWwudHlwZSA9IHBheWxvYWQuY2hhbm5lbC50eXBlXG4gIGlmIChwcm9wcy5wb3NpdGlvbikgY2hhbm5lbC5wb3NpdGlvbiA9IHBheWxvYWQuY2hhbm5lbC5wb3NpdGlvblxuICBpZiAocHJvcHMubmFtZSAmJiBwYXlsb2FkLmNoYW5uZWwubmFtZSkgY2hhbm5lbC5uYW1lID0gcGF5bG9hZC5jaGFubmVsLm5hbWVcbiAgaWYgKHByb3BzLnRvcGljICYmIHBheWxvYWQuY2hhbm5lbC50b3BpYykgY2hhbm5lbC50b3BpYyA9IHBheWxvYWQuY2hhbm5lbC50b3BpY1xuICBpZiAocHJvcHMubGFzdE1lc3NhZ2VJZCAmJiBwYXlsb2FkLmNoYW5uZWwubGFzdF9tZXNzYWdlX2lkKSBjaGFubmVsLmxhc3RNZXNzYWdlSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmNoYW5uZWwubGFzdF9tZXNzYWdlX2lkKVxuICBpZiAocHJvcHMuYml0cmF0ZSAmJiBwYXlsb2FkLmNoYW5uZWwuYml0cmF0ZSkgY2hhbm5lbC5iaXRyYXRlID0gcGF5bG9hZC5jaGFubmVsLmJpdHJhdGVcbiAgaWYgKHByb3BzLnVzZXJMaW1pdCkgY2hhbm5lbC51c2VyTGltaXQgPSBwYXlsb2FkLmNoYW5uZWwudXNlcl9saW1pdFxuICBpZiAocHJvcHMucmF0ZUxpbWl0UGVyVXNlcikgY2hhbm5lbC5yYXRlTGltaXRQZXJVc2VyID0gcGF5bG9hZC5jaGFubmVsLnJhdGVfbGltaXRfcGVyX3VzZXJcbiAgaWYgKHByb3BzLm93bmVySWQgJiYgcGF5bG9hZC5jaGFubmVsLm93bmVyX2lkKSBjaGFubmVsLm93bmVySWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmNoYW5uZWwub3duZXJfaWQpXG4gIGlmIChwcm9wcy5sYXN0UGluVGltZXN0YW1wICYmIHBheWxvYWQuY2hhbm5lbC5sYXN0X3Bpbl90aW1lc3RhbXApIGNoYW5uZWwubGFzdFBpblRpbWVzdGFtcCA9IERhdGUucGFyc2UocGF5bG9hZC5jaGFubmVsLmxhc3RfcGluX3RpbWVzdGFtcClcbiAgaWYgKHByb3BzLnJ0Y1JlZ2lvbiAmJiBwYXlsb2FkLmNoYW5uZWwucnRjX3JlZ2lvbikgY2hhbm5lbC5ydGNSZWdpb24gPSBwYXlsb2FkLmNoYW5uZWwucnRjX3JlZ2lvblxuICBpZiAocHJvcHMudmlkZW9RdWFsaXR5TW9kZSAmJiBwYXlsb2FkLmNoYW5uZWwudmlkZW9fcXVhbGl0eV9tb2RlKSBjaGFubmVsLnZpZGVvUXVhbGl0eU1vZGUgPSBwYXlsb2FkLmNoYW5uZWwudmlkZW9fcXVhbGl0eV9tb2RlXG4gIGlmIChwcm9wcy5tZXNzYWdlQ291bnQpIGNoYW5uZWwubWVzc2FnZUNvdW50ID0gcGF5bG9hZC5jaGFubmVsLm1lc3NhZ2VfY291bnRcbiAgaWYgKHByb3BzLm1lbWJlckNvdW50KSBjaGFubmVsLm1lbWJlckNvdW50ID0gcGF5bG9hZC5jaGFubmVsLm1lbWJlcl9jb3VudFxuICBpZiAocHJvcHMuYXJjaGl2ZVRpbWVzdGFtcCB8fCBwcm9wcy5jcmVhdGVUaW1lc3RhbXAgfHwgcHJvcHMuYXV0b0FyY2hpdmVEdXJhdGlvbikge1xuICAgIGNoYW5uZWwuaW50ZXJuYWxUaHJlYWRNZXRhZGF0YSA9IHt9IGFzIE5vbk51bGxhYmxlPENoYW5uZWxbJ2ludGVybmFsVGhyZWFkTWV0YWRhdGEnXT5cbiAgICBpZiAocHJvcHMuYXJjaGl2ZVRpbWVzdGFtcCAmJiBwYXlsb2FkLmNoYW5uZWwudGhyZWFkX21ldGFkYXRhPy5hcmNoaXZlX3RpbWVzdGFtcClcbiAgICAgIGNoYW5uZWwuaW50ZXJuYWxUaHJlYWRNZXRhZGF0YS5hcmNoaXZlVGltZXN0YW1wID0gRGF0ZS5wYXJzZShwYXlsb2FkLmNoYW5uZWwudGhyZWFkX21ldGFkYXRhLmFyY2hpdmVfdGltZXN0YW1wKVxuICAgIGlmIChwcm9wcy5jcmVhdGVUaW1lc3RhbXAgJiYgcGF5bG9hZC5jaGFubmVsLnRocmVhZF9tZXRhZGF0YT8uY3JlYXRlX3RpbWVzdGFtcClcbiAgICAgIGNoYW5uZWwuaW50ZXJuYWxUaHJlYWRNZXRhZGF0YS5jcmVhdGVUaW1lc3RhbXAgPSBEYXRlLnBhcnNlKHBheWxvYWQuY2hhbm5lbC50aHJlYWRfbWV0YWRhdGEuY3JlYXRlX3RpbWVzdGFtcClcbiAgICBpZiAocHJvcHMuYXV0b0FyY2hpdmVEdXJhdGlvbiAmJiBwYXlsb2FkLmNoYW5uZWwudGhyZWFkX21ldGFkYXRhPy5hdXRvX2FyY2hpdmVfZHVyYXRpb24pXG4gICAgICBjaGFubmVsLmludGVybmFsVGhyZWFkTWV0YWRhdGEuYXV0b0FyY2hpdmVEdXJhdGlvbiA9IHBheWxvYWQuY2hhbm5lbC50aHJlYWRfbWV0YWRhdGEuYXV0b19hcmNoaXZlX2R1cmF0aW9uXG4gIH1cbiAgaWYgKHByb3BzLmF1dG9BcmNoaXZlRHVyYXRpb24gJiYgcGF5bG9hZC5jaGFubmVsLmRlZmF1bHRfYXV0b19hcmNoaXZlX2R1cmF0aW9uKVxuICAgIGNoYW5uZWwuYXV0b0FyY2hpdmVEdXJhdGlvbiA9IHBheWxvYWQuY2hhbm5lbC5kZWZhdWx0X2F1dG9fYXJjaGl2ZV9kdXJhdGlvblxuICBpZiAocHJvcHMucGVybWlzc2lvbnMgJiYgcGF5bG9hZC5jaGFubmVsLnBlcm1pc3Npb25zKSBjaGFubmVsLnBlcm1pc3Npb25zID0gbmV3IFBlcm1pc3Npb25zKHBheWxvYWQuY2hhbm5lbC5wZXJtaXNzaW9ucylcbiAgaWYgKHByb3BzLmZsYWdzKSBjaGFubmVsLmZsYWdzID0gcGF5bG9hZC5jaGFubmVsLmZsYWdzXG4gIGlmIChwcm9wcy5wZXJtaXNzaW9uT3ZlcndyaXRlcyAmJiBwYXlsb2FkLmNoYW5uZWwucGVybWlzc2lvbl9vdmVyd3JpdGVzKVxuICAgIGNoYW5uZWwuaW50ZXJuYWxPdmVyd3JpdGVzID0gcGF5bG9hZC5jaGFubmVsLnBlcm1pc3Npb25fb3ZlcndyaXRlcy5tYXAoKG8pID0+IHBhY2tPdmVyd3JpdGVzKG8uYWxsb3cgPz8gJzAnLCBvLmRlbnkgPz8gJzAnLCBvLmlkLCBvLnR5cGUpKVxuICBpZiAocHJvcHMucGFyZW50SWQgJiYgcGF5bG9hZC5jaGFubmVsLnBhcmVudF9pZCkgY2hhbm5lbC5wYXJlbnRJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuY2hhbm5lbC5wYXJlbnRfaWQpXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuY2hhbm5lbChib3QsIHBheWxvYWQuY2hhbm5lbCwgY2hhbm5lbClcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlQ2hhbm5lbCB7XG4gIC8qKiBXaGV0aGVyIHRoZSBjaGFubmVsIGlzIG5zZncgKi9cbiAgbnNmdzogYm9vbGVhblxuICAvKiogVGhyZWFkLXNwZWNpZmljIGZpZWxkcyBub3QgbmVlZGVkIGJ5IG90aGVyIGNoYW5uZWxzICovXG4gIHRocmVhZE1ldGFkYXRhPzoge1xuICAgIC8qKiBUaW1lc3RhbXAgd2hlbiB0aGUgdGhyZWFkJ3MgYXJjaGl2ZSBzdGF0dXMgd2FzIGxhc3QgY2hhbmdlZCwgdXNlZCBmb3IgY2FsY3VsYXRpbmcgcmVjZW50IGFjdGl2aXR5ICovXG4gICAgYXJjaGl2ZVRpbWVzdGFtcD86IG51bWJlclxuICAgIC8qKiBUaW1lc3RhbXAgd2hlbiB0aGUgdGhyZWFkIHdhcyBjcmVhdGVkOyBvbmx5IHBvcHVsYXRlZCBmb3IgdGhyZWFkcyBjcmVhdGVkIGFmdGVyIDIwMjItMDEtMDkgKi9cbiAgICBjcmVhdGVUaW1lc3RhbXA/OiBudW1iZXJcbiAgICAvKiogRHVyYXRpb24gaW4gbWludXRlcyB0byBhdXRvbWF0aWNhbGx5IGFyY2hpdmUgdGhlIHRocmVhZCBhZnRlciByZWNlbnQgYWN0aXZpdHkgKi9cbiAgICBhdXRvQXJjaGl2ZUR1cmF0aW9uPzogNjAgfCAxNDQwIHwgNDMyMCB8IDEwMDgwXG4gICAgLyoqIFdoZW4gYSB0aHJlYWQgaXMgbG9ja2VkLCBvbmx5IHVzZXJzIHdpdGggYE1BTkFHRV9USFJFQURTYCBjYW4gdW5hcmNoaXZlIGl0ICovXG4gICAgbG9ja2VkOiBib29sZWFuXG4gICAgLyoqIHdoZXRoZXIgbm9uLW1vZGVyYXRvcnMgY2FuIGFkZCBvdGhlciBub24tbW9kZXJhdG9ycyB0byBhIHRocmVhZDsgb25seSBhdmFpbGFibGUgb24gcHJpdmF0ZSB0aHJlYWRzICovXG4gICAgaW52aXRhYmxlOiBib29sZWFuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRocmVhZCBpcyBhcmNoaXZlZCAqL1xuICAgIGFyY2hpdmVkOiBib29sZWFuXG4gIH1cbiAgLyoqIFdoZW4gYSB0aHJlYWQgaXMgY3JlYXRlZCB0aGlzIHdpbGwgYmUgdHJ1ZSBvbiB0aGF0IGNoYW5uZWwgcGF5bG9hZCBmb3IgdGhlIHRocmVhZC4gKi9cbiAgbmV3bHlDcmVhdGVkOiBib29sZWFuXG4gIC8qKiBXaGVuIGEgdGhyZWFkIGlzIGxvY2tlZCwgb25seSB1c2VycyB3aXRoIGBNQU5BR0VfVEhSRUFEU2AgY2FuIHVuYXJjaGl2ZSBpdCAqL1xuICBsb2NrZWQ6IGJvb2xlYW5cbiAgLyoqIHdoZXRoZXIgbm9uLW1vZGVyYXRvcnMgY2FuIGFkZCBvdGhlciBub24tbW9kZXJhdG9ycyB0byBhIHRocmVhZDsgb25seSBhdmFpbGFibGUgb24gcHJpdmF0ZSB0aHJlYWRzICovXG4gIGludml0YWJsZTogYm9vbGVhblxuICAvKiogV2hldGhlciB0aGUgdGhyZWFkIGlzIGFyY2hpdmVkICovXG4gIGFyY2hpdmVkOiBib29sZWFuXG4gIC8qKiBFeHBsaWNpdCBwZXJtaXNzaW9uIG92ZXJ3cml0ZXMgZm9yIG1lbWJlcnMgYW5kIHJvbGVzLiAqL1xuICBwZXJtaXNzaW9uT3ZlcndyaXRlczogT3ZlcndyaXRlUmVhZGFibGVbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYW5uZWwgZXh0ZW5kcyBCYXNlQ2hhbm5lbCB7XG4gIC8qKiBUaGUgaWQgb2YgdGhlIGNoYW5uZWwgKi9cbiAgaWQ6IGJpZ2ludFxuICAvKiogVGhlIGNvbXByZXNzZWQgZm9ybSBvZiBhbGwgdGhlIGJvb2xlYW4gdmFsdWVzIG9uIHRoaXMgY2hhbm5lbC4gKi9cbiAgdG9nZ2xlczogQ2hhbm5lbFRvZ2dsZXNcbiAgLyoqIFRoZSB0eXBlIG9mIGNoYW5uZWwgKi9cbiAgdHlwZTogQ2hhbm5lbFR5cGVzXG4gIC8qKiBUaGUgaWQgb2YgdGhlIGd1aWxkICovXG4gIGd1aWxkSWQ/OiBiaWdpbnRcbiAgLyoqIFNvcnRpbmcgcG9zaXRpb24gb2YgdGhlIGNoYW5uZWwgKi9cbiAgcG9zaXRpb24/OiBudW1iZXJcbiAgLyoqIFRoZSBuYW1lIG9mIHRoZSBjaGFubmVsICgxLTEwMCBjaGFyYWN0ZXJzKSAqL1xuICBuYW1lPzogc3RyaW5nXG4gIC8qKiBUaGUgY2hhbm5lbCB0b3BpYyAoMC00MDk2IGNoYXJhY3RlcnMgZm9yIEdVSUxEX0ZPUlVNIGNoYW5uZWxzLCAwLTEwMjQgY2hhcmFjdGVycyBmb3IgYWxsIG90aGVycykgKi9cbiAgdG9waWM/OiBzdHJpbmdcbiAgLyoqIFRoZSBpZCBvZiB0aGUgbGFzdCBtZXNzYWdlIHNlbnQgaW4gdGhpcyBjaGFubmVsIChtYXkgbm90IHBvaW50IHRvIGFuIGV4aXN0aW5nIG9yIHZhbGlkIG1lc3NhZ2UpICovXG4gIGxhc3RNZXNzYWdlSWQ/OiBiaWdpbnRcbiAgLyoqIFRoZSBiaXRyYXRlIChpbiBiaXRzKSBvZiB0aGUgdm9pY2Ugb3Igc3RhZ2UgY2hhbm5lbCAqL1xuICBiaXRyYXRlPzogbnVtYmVyXG4gIC8qKiBUaGUgdXNlciBsaW1pdCBvZiB0aGUgdm9pY2Ugb3Igc3RhZ2UgY2hhbm5lbCAqL1xuICB1c2VyTGltaXQ/OiBudW1iZXJcbiAgLyoqIEFtb3VudCBvZiBzZWNvbmRzIGEgdXNlciBoYXMgdG8gd2FpdCBiZWZvcmUgc2VuZGluZyBhbm90aGVyIG1lc3NhZ2UgKDAtMjE2MDApOyBib3RzLCBhcyB3ZWxsIGFzIHVzZXJzIHdpdGggdGhlIHBlcm1pc3Npb24gYG1hbmFnZV9tZXNzYWdlc2Agb3IgYG1hbmFnZV9jaGFubmVsYCwgYXJlIHVuYWZmZWN0ZWQgKi9cbiAgcmF0ZUxpbWl0UGVyVXNlcj86IG51bWJlclxuICAvKiogSWQgb2YgdGhlIGNyZWF0b3Igb2YgdGhlIHRocmVhZCAqL1xuICBvd25lcklkPzogYmlnaW50XG4gIC8qKiBGb3IgZ3VpbGQgY2hhbm5lbHM6IElkIG9mIHRoZSBwYXJlbnQgY2F0ZWdvcnkgZm9yIGEgY2hhbm5lbCAoZWFjaCBwYXJlbnQgY2F0ZWdvcnkgY2FuIGNvbnRhaW4gdXAgdG8gNTAgY2hhbm5lbHMpLCBmb3IgdGhyZWFkczogaWQgb2YgdGhlIHRleHQgY2hhbm5lbCB0aGlzIHRocmVhZCB3YXMgY3JlYXRlZCAqL1xuICBwYXJlbnRJZD86IGJpZ2ludFxuICAvKiogV2hlbiB0aGUgbGFzdCBwaW5uZWQgbWVzc2FnZSB3YXMgcGlubmVkLiBUaGlzIG1heSBiZSBudWxsIGluIGV2ZW50cyBzdWNoIGFzIEdVSUxEX0NSRUFURSB3aGVuIGEgbWVzc2FnZSBpcyBub3QgcGlubmVkLiAqL1xuICBsYXN0UGluVGltZXN0YW1wPzogbnVtYmVyXG4gIC8qKiBWb2ljZSByZWdpb24gaWQgZm9yIHRoZSB2b2ljZSBvciBzdGFnZSBjaGFubmVsLCBhdXRvbWF0aWMgd2hlbiBzZXQgdG8gbnVsbCAqL1xuICBydGNSZWdpb24/OiBzdHJpbmdcbiAgLyoqIFRoZSBjYW1lcmEgdmlkZW8gcXVhbGl0eSBtb2RlIG9mIHRoZSB2b2ljZSBjaGFubmVsLCAxIHdoZW4gbm90IHByZXNlbnQgKi9cbiAgdmlkZW9RdWFsaXR5TW9kZT86IFZpZGVvUXVhbGl0eU1vZGVzXG4gIC8qKiBBbiBhcHByb3hpbWF0ZSBjb3VudCBvZiBtZXNzYWdlcyBpbiBhIHRocmVhZCwgc3RvcHMgY291bnRpbmcgYXQgNTAgKi9cbiAgbWVzc2FnZUNvdW50PzogbnVtYmVyXG4gIC8qKiBBbiBhcHByb3hpbWF0ZSBjb3VudCBvZiB1c2VycyBpbiBhIHRocmVhZCwgc3RvcHMgY291bnRpbmcgYXQgNTAgKi9cbiAgbWVtYmVyQ291bnQ/OiBudW1iZXJcbiAgLyoqXG4gICAqIFRocmVhZC1zcGVjaWZpYyBmaWVsZHMgbm90IG5lZWRlZCBieSBvdGhlciBjaGFubmVscy5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGNoYW5uZWwudGhyZWFkTWV0YWRhdGFcbiAgICogQHByaXZhdGUgVGhpcyBmaWVsZCBpcyBhbiBpbnRlcm5hbCBmaWVsZCwgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzLlxuICAgKi9cbiAgaW50ZXJuYWxUaHJlYWRNZXRhZGF0YT86IHtcbiAgICAvKiogVGltZXN0YW1wIHdoZW4gdGhlIHRocmVhZCdzIGFyY2hpdmUgc3RhdHVzIHdhcyBsYXN0IGNoYW5nZWQsIHVzZWQgZm9yIGNhbGN1bGF0aW5nIHJlY2VudCBhY3Rpdml0eSAqL1xuICAgIGFyY2hpdmVUaW1lc3RhbXA6IG51bWJlclxuICAgIC8qKiBUaW1lc3RhbXAgd2hlbiB0aGUgdGhyZWFkIHdhcyBjcmVhdGVkOyBvbmx5IHBvcHVsYXRlZCBmb3IgdGhyZWFkcyBjcmVhdGVkIGFmdGVyIDIwMjItMDEtMDkgKi9cbiAgICBjcmVhdGVUaW1lc3RhbXA/OiBudW1iZXJcbiAgICAvKiogRHVyYXRpb24gaW4gbWludXRlcyB0byBhdXRvbWF0aWNhbGx5IGFyY2hpdmUgdGhlIHRocmVhZCBhZnRlciByZWNlbnQgYWN0aXZpdHkgKi9cbiAgICBhdXRvQXJjaGl2ZUR1cmF0aW9uOiA2MCB8IDE0NDAgfCA0MzIwIHwgMTAwODBcbiAgfVxuICAvKiogVGhyZWFkIG1lbWJlciBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHVzZXIsIGlmIHRoZXkgaGF2ZSBqb2luZWQgdGhlIHRocmVhZCwgb25seSBpbmNsdWRlZCBvbiBjZXJ0YWluIEFQSSBlbmRwb2ludHMgKi9cbiAgbWVtYmVyPzogRGlzY29yZFRocmVhZE1lbWJlclxuICAvKiogRGVmYXVsdCBkdXJhdGlvbiBmb3IgbmV3bHkgY3JlYXRlZCB0aHJlYWRzLCBpbiBtaW51dGVzLCB0byBhdXRvbWF0aWNhbGx5IGFyY2hpdmUgdGhlIHRocmVhZCBhZnRlciByZWNlbnQgYWN0aXZpdHksIGNhbiBiZSBzZXQgdG86IDYwLCAxNDQwLCA0MzIwLCAxMDA4MCAqL1xuICBhdXRvQXJjaGl2ZUR1cmF0aW9uPzogbnVtYmVyXG4gIC8qKiBjb21wdXRlZCBwZXJtaXNzaW9ucyBmb3IgdGhlIGludm9raW5nIHVzZXIgaW4gdGhlIGNoYW5uZWwsIGluY2x1ZGluZyBvdmVyd3JpdGVzLCBvbmx5IGluY2x1ZGVkIHdoZW4gcGFydCBvZiB0aGUgcmVzb2x2ZWQgZGF0YSByZWNlaXZlZCBvbiBhIHNsYXNoIGNvbW1hbmQgaW50ZXJhY3Rpb24uIFRoaXMgZG9lcyBub3QgaW5jbHVkZSBpbXBsaWNpdCBwZXJtaXNzaW9ucywgd2hpY2ggbWF5IG5lZWQgdG8gYmUgY2hlY2tlZCBzZXBhcmF0ZWx5LiAqL1xuICBwZXJtaXNzaW9ucz86IFBlcm1pc3Npb25zXG4gIC8qKiBUaGUgZmxhZ3Mgb2YgdGhlIGNoYW5uZWwgKi9cbiAgZmxhZ3M/OiBudW1iZXJcbiAgLyoqXG4gICAqIEV4cGxpY2l0IHBlcm1pc3Npb24gb3ZlcndyaXRlcyBmb3IgbWVtYmVycyBhbmQgcm9sZXNcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGNoYW5uZWwucGVybWlzc2lvbk92ZXJ3cml0ZXNcbiAgICogQHByaXZhdGUgVGhpcyBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHksIGFuZCBwcm9uZSB0byBicmVha2luZyBjaGFuZ2VzLlxuICAgKi9cbiAgaW50ZXJuYWxPdmVyd3JpdGVzPzogYmlnaW50W11cbn1cbiJdLCJuYW1lcyI6WyJiYXNlQ2hhbm5lbCIsInBhY2tPdmVyd3JpdGVzIiwic2VwYXJhdGVPdmVyd3JpdGVzIiwidHJhbnNmb3JtQ2hhbm5lbCIsIk1hc2siLCJhbGxvdyIsImRlbnkiLCJpZCIsInR5cGUiLCJwYWNrNjQiLCJ1bnBhY2s2NCIsInYiLCJzaGlmdCIsIkJpZ0ludCIsImIiLCJFcnJvciIsInRvU3RyaW5nIiwiTnVtYmVyIiwiYXJjaGl2ZWQiLCJ0b2dnbGVzIiwiaW52aXRhYmxlIiwibG9ja2VkIiwibnNmdyIsIm5ld2x5Q3JlYXRlZCIsInBlcm1pc3Npb25PdmVyd3JpdGVzIiwiaW50ZXJuYWxPdmVyd3JpdGVzIiwibWFwIiwib3ZlcndyaXRlIiwiY2FsY3VsYXRlUGVybWlzc2lvbnMiLCJ0aHJlYWRNZXRhZGF0YSIsImFyY2hpdmVUaW1lc3RhbXAiLCJpbnRlcm5hbFRocmVhZE1ldGFkYXRhIiwiY3JlYXRlVGltZXN0YW1wIiwiYXV0b0FyY2hpdmVEdXJhdGlvbiIsImJvdCIsInBheWxvYWQiLCJjaGFubmVsIiwiT2JqZWN0IiwiY3JlYXRlIiwicHJvcHMiLCJ0cmFuc2Zvcm1lcnMiLCJkZXNpcmVkUHJvcGVydGllcyIsIkNoYW5uZWxUb2dnbGVzIiwic25vd2ZsYWtlIiwiZ3VpbGRJZCIsImd1aWxkX2lkIiwicG9zaXRpb24iLCJuYW1lIiwidG9waWMiLCJsYXN0TWVzc2FnZUlkIiwibGFzdF9tZXNzYWdlX2lkIiwiYml0cmF0ZSIsInVzZXJMaW1pdCIsInVzZXJfbGltaXQiLCJyYXRlTGltaXRQZXJVc2VyIiwicmF0ZV9saW1pdF9wZXJfdXNlciIsIm93bmVySWQiLCJvd25lcl9pZCIsImxhc3RQaW5UaW1lc3RhbXAiLCJsYXN0X3Bpbl90aW1lc3RhbXAiLCJEYXRlIiwicGFyc2UiLCJydGNSZWdpb24iLCJydGNfcmVnaW9uIiwidmlkZW9RdWFsaXR5TW9kZSIsInZpZGVvX3F1YWxpdHlfbW9kZSIsIm1lc3NhZ2VDb3VudCIsIm1lc3NhZ2VfY291bnQiLCJtZW1iZXJDb3VudCIsIm1lbWJlcl9jb3VudCIsInRocmVhZF9tZXRhZGF0YSIsImFyY2hpdmVfdGltZXN0YW1wIiwiY3JlYXRlX3RpbWVzdGFtcCIsImF1dG9fYXJjaGl2ZV9kdXJhdGlvbiIsImRlZmF1bHRfYXV0b19hcmNoaXZlX2R1cmF0aW9uIiwicGVybWlzc2lvbnMiLCJQZXJtaXNzaW9ucyIsImZsYWdzIiwicGVybWlzc2lvbl9vdmVyd3JpdGVzIiwibyIsInBhcmVudElkIiwicGFyZW50X2lkIiwiY3VzdG9taXplcnMiXSwibWFwcGluZ3MiOiJBQUFBLHdEQUF3RDs7Ozs7Ozs7Ozs7SUF1QjNDQSxXQUFXO2VBQVhBOztJQWZHQyxjQUFjO2VBQWRBOztJQVdBQyxrQkFBa0I7ZUFBbEJBOztJQTZDQUMsZ0JBQWdCO2VBQWhCQTs7O3VCQTlEK0I7NkJBQ25CO3lCQUNHO0FBRS9CLE1BQU1DLE9BQU8sQUFBQyxDQUFBLEVBQUUsSUFBSSxHQUFHLEFBQUQsSUFBSyxFQUFFO0FBRXRCLFNBQVNILGVBQWVJLEtBQWEsRUFBRUMsSUFBWSxFQUFFQyxFQUFVLEVBQUVDLElBQVk7SUFDbEYsT0FBT0MsT0FBT0osT0FBTyxLQUFLSSxPQUFPSCxNQUFNLEtBQUtHLE9BQU9GLElBQUksS0FBS0UsT0FBT0QsTUFBTTtBQUMzRTtBQUNBLFNBQVNFLFNBQVNDLENBQVMsRUFBRUMsS0FBYTtJQUN4QyxPQUFPLEFBQUNELEtBQUtFLE9BQU9ELFFBQVEsTUFBT1I7QUFDckM7QUFDQSxTQUFTSyxPQUFPRSxDQUFrQixFQUFFQyxLQUFhO0lBQy9DLE1BQU1FLElBQUlELE9BQU9GO0lBQ2pCLElBQUlHLElBQUksS0FBS0EsSUFBSVYsTUFBTSxNQUFNLElBQUlXLE1BQU0saURBQWlESixFQUFFSyxRQUFRO0lBQ2xHLE9BQU9GLEtBQUtELE9BQU9ELFFBQVE7QUFDN0I7QUFDTyxTQUFTVixtQkFBbUJTLENBQVM7SUFDMUMsT0FBTztRQUFDTSxPQUFPUCxTQUFTQyxHQUFHO1FBQUtELFNBQVNDLEdBQUc7UUFBSUQsU0FBU0MsR0FBRztRQUFJRCxTQUFTQyxHQUFHO0tBQUc7QUFDakY7QUFFTyxNQUFNWCxjQUE4QztJQUN6RCxJQUFJa0IsWUFBVztR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
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvY2hhbm5lbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50ICovXG5pbXBvcnQgdHlwZSB7XG4gIEJpZ1N0cmluZyxcbiAgQ2hhbm5lbFR5cGVzLFxuICBEaXNjb3JkQ2hhbm5lbCxcbiAgRGlzY29yZEZvcnVtVGFnLFxuICBGb3J1bUxheW91dCxcbiAgT3ZlcndyaXRlUmVhZGFibGUsXG4gIFNvcnRPcmRlclR5cGVzLFxuICBWaWRlb1F1YWxpdHlNb2Rlcyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBjYWxjdWxhdGVQZXJtaXNzaW9ucywgaWNvbkhhc2hUb0JpZ0ludCwgdHlwZSBCb3QsIHR5cGUgRGVmYXVsdFJlYWN0aW9uRW1vamksIHR5cGUgVGhyZWFkTWVtYmVyLCB0eXBlIFVzZXIgfSBmcm9tICcuLi9pbmRleC5qcydcbmltcG9ydCB7IFBlcm1pc3Npb25zIH0gZnJvbSAnLi90b2dnbGVzL1Blcm1pc3Npb25zLmpzJ1xuaW1wb3J0IHsgQ2hhbm5lbFRvZ2dsZXMgfSBmcm9tICcuL3RvZ2dsZXMvY2hhbm5lbC5qcydcblxuY29uc3QgTWFzayA9ICgxbiA8PCA2NG4pIC0gMW5cblxuZXhwb3J0IGZ1bmN0aW9uIHBhY2tPdmVyd3JpdGVzKGFsbG93OiBzdHJpbmcsIGRlbnk6IHN0cmluZywgaWQ6IHN0cmluZywgdHlwZTogbnVtYmVyKTogYmlnaW50IHtcbiAgcmV0dXJuIHBhY2s2NChhbGxvdywgMCkgfCBwYWNrNjQoZGVueSwgMSkgfCBwYWNrNjQoaWQsIDIpIHwgcGFjazY0KHR5cGUsIDMpXG59XG5mdW5jdGlvbiB1bnBhY2s2NCh2OiBiaWdpbnQsIHNoaWZ0OiBudW1iZXIpOiBiaWdpbnQge1xuICByZXR1cm4gKHYgPj4gQmlnSW50KHNoaWZ0ICogNjQpKSAmIE1hc2tcbn1cbmZ1bmN0aW9uIHBhY2s2NCh2OiBzdHJpbmcgfCBudW1iZXIsIHNoaWZ0OiBudW1iZXIpOiBiaWdpbnQge1xuICBjb25zdCBiID0gQmlnSW50KHYpXG4gIGlmIChiIDwgMCB8fCBiID4gTWFzaykgdGhyb3cgbmV3IEVycm9yKCdzaG91bGQgaGF2ZSBiZWVuIGEgNjQgYml0IHVuc2lnbmVkIGludGVnZXI6ICcgKyB2LnRvU3RyaW5nKCkpXG4gIHJldHVybiBiIDw8IEJpZ0ludChzaGlmdCAqIDY0KVxufVxuZXhwb3J0IGZ1bmN0aW9uIHNlcGFyYXRlT3ZlcndyaXRlcyh2OiBiaWdpbnQpOiBbbnVtYmVyLCBiaWdpbnQsIGJpZ2ludCwgYmlnaW50XSB7XG4gIHJldHVybiBbTnVtYmVyKHVucGFjazY0KHYsIDMpKSwgdW5wYWNrNjQodiwgMiksIHVucGFjazY0KHYsIDApLCB1bnBhY2s2NCh2LCAxKV0gYXMgW251bWJlciwgYmlnaW50LCBiaWdpbnQsIGJpZ2ludF1cbn1cblxuZXhwb3J0IGNvbnN0IGJhc2VDaGFubmVsOiBQYXJ0aWFsPENoYW5uZWw+ICYgQmFzZUNoYW5uZWwgPSB7XG4gIGdldCBhcmNoaXZlZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/LmFyY2hpdmVkXG4gIH0sXG4gIGdldCBpbnZpdGFibGUoKSB7XG4gICAgcmV0dXJuICEhdGhpcy50b2dnbGVzPy5pbnZpdGFibGVcbiAgfSxcbiAgZ2V0IGxvY2tlZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/LmxvY2tlZFxuICB9LFxuICBnZXQgbnNmdygpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/Lm5zZndcbiAgfSxcbiAgZ2V0IG5ld2x5Q3JlYXRlZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/Lm5ld2x5Q3JlYXRlZFxuICB9LFxuICBnZXQgbWFuYWdlZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/Lm1hbmFnZWRcbiAgfSxcbiAgZ2V0IHBlcm1pc3Npb25PdmVyd3JpdGVzKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmludGVybmFsT3ZlcndyaXRlcz8ubWFwKChvdmVyd3JpdGUpID0+IHtcbiAgICAgICAgY29uc3QgW3R5cGUsIGlkLCBhbGxvdywgZGVueV0gPSBzZXBhcmF0ZU92ZXJ3cml0ZXMob3ZlcndyaXRlKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgaWQsXG4gICAgICAgICAgYWxsb3c6IGNhbGN1bGF0ZVBlcm1pc3Npb25zKGFsbG93KSxcbiAgICAgICAgICBkZW55OiBjYWxjdWxhdGVQZXJtaXNzaW9ucyhkZW55KSxcbiAgICAgICAgfVxuICAgICAgfSkgPz8gW11cbiAgICApXG4gIH0sXG4gIGdldCB0aHJlYWRNZXRhZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYXJjaGl2ZVRpbWVzdGFtcDogdGhpcy5pbnRlcm5hbFRocmVhZE1ldGFkYXRhPy5hcmNoaXZlVGltZXN0YW1wLFxuICAgICAgY3JlYXRlVGltZXN0YW1wOiB0aGlzLmludGVybmFsVGhyZWFkTWV0YWRhdGE/LmNyZWF0ZVRpbWVzdGFtcCxcbiAgICAgIGF1dG9BcmNoaXZlRHVyYXRpb246IHRoaXMuaW50ZXJuYWxUaHJlYWRNZXRhZGF0YT8uYXV0b0FyY2hpdmVEdXJhdGlvbixcbiAgICAgIGxvY2tlZDogdGhpcy5sb2NrZWQsXG4gICAgICBpbnZpdGFibGU6IHRoaXMuaW52aXRhYmxlLFxuICAgICAgYXJjaGl2ZWQ6IHRoaXMuYXJjaGl2ZWQsXG4gICAgfVxuICB9LFxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtQ2hhbm5lbChib3Q6IEJvdCwgcGF5bG9hZDogeyBjaGFubmVsOiBEaXNjb3JkQ2hhbm5lbCB9ICYgeyBndWlsZElkPzogQmlnU3RyaW5nIH0pOiBDaGFubmVsIHtcbiAgY29uc3QgY2hhbm5lbCA9IE9iamVjdC5jcmVhdGUoYmFzZUNoYW5uZWwpIGFzIENoYW5uZWxcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNoYW5uZWxcbiAgY2hhbm5lbC50b2dnbGVzID0gbmV3IENoYW5uZWxUb2dnbGVzKHBheWxvYWQuY2hhbm5lbClcblxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5jaGFubmVsLmlkKSBjaGFubmVsLmlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5jaGFubmVsLmlkKVxuICBpZiAocHJvcHMuZ3VpbGRJZCAmJiAocGF5bG9hZC5ndWlsZElkID8/IHBheWxvYWQuY2hhbm5lbC5ndWlsZF9pZCkpXG4gICAgY2hhbm5lbC5ndWlsZElkID0gcGF5bG9hZC5ndWlsZElkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5ndWlsZElkKSA6IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuY2hhbm5lbC5ndWlsZF9pZCEpXG4gIGlmIChwcm9wcy50eXBlKSBjaGFubmVsLnR5cGUgPSBwYXlsb2FkLmNoYW5uZWwudHlwZVxuICBpZiAocHJvcHMucG9zaXRpb24pIGNoYW5uZWwucG9zaXRpb24gPSBwYXlsb2FkLmNoYW5uZWwucG9zaXRpb25cbiAgaWYgKHByb3BzLm5hbWUgJiYgcGF5bG9hZC5jaGFubmVsLm5hbWUpIGNoYW5uZWwubmFtZSA9IHBheWxvYWQuY2hhbm5lbC5uYW1lXG4gIGlmIChwcm9wcy50b3BpYyAmJiBwYXlsb2FkLmNoYW5uZWwudG9waWMpIGNoYW5uZWwudG9waWMgPSBwYXlsb2FkLmNoYW5uZWwudG9waWNcbiAgaWYgKHByb3BzLmxhc3RNZXNzYWdlSWQgJiYgcGF5bG9hZC5jaGFubmVsLmxhc3RfbWVzc2FnZV9pZCkgY2hhbm5lbC5sYXN0TWVzc2FnZUlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5jaGFubmVsLmxhc3RfbWVzc2FnZV9pZClcbiAgaWYgKHByb3BzLmJpdHJhdGUgJiYgcGF5bG9hZC5jaGFubmVsLmJpdHJhdGUpIGNoYW5uZWwuYml0cmF0ZSA9IHBheWxvYWQuY2hhbm5lbC5iaXRyYXRlXG4gIGlmIChwcm9wcy51c2VyTGltaXQpIGNoYW5uZWwudXNlckxpbWl0ID0gcGF5bG9hZC5jaGFubmVsLnVzZXJfbGltaXRcbiAgaWYgKHByb3BzLnJhdGVMaW1pdFBlclVzZXIpIGNoYW5uZWwucmF0ZUxpbWl0UGVyVXNlciA9IHBheWxvYWQuY2hhbm5lbC5yYXRlX2xpbWl0X3Blcl91c2VyXG4gIGlmIChwcm9wcy5vd25lcklkICYmIHBheWxvYWQuY2hhbm5lbC5vd25lcl9pZCkgY2hhbm5lbC5vd25lcklkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5jaGFubmVsLm93bmVyX2lkKVxuICBpZiAocHJvcHMubGFzdFBpblRpbWVzdGFtcCAmJiBwYXlsb2FkLmNoYW5uZWwubGFzdF9waW5fdGltZXN0YW1wKSBjaGFubmVsLmxhc3RQaW5UaW1lc3RhbXAgPSBEYXRlLnBhcnNlKHBheWxvYWQuY2hhbm5lbC5sYXN0X3Bpbl90aW1lc3RhbXApXG4gIGlmIChwcm9wcy5ydGNSZWdpb24gJiYgcGF5bG9hZC5jaGFubmVsLnJ0Y19yZWdpb24pIGNoYW5uZWwucnRjUmVnaW9uID0gcGF5bG9hZC5jaGFubmVsLnJ0Y19yZWdpb25cbiAgaWYgKHByb3BzLnZpZGVvUXVhbGl0eU1vZGUgJiYgcGF5bG9hZC5jaGFubmVsLnZpZGVvX3F1YWxpdHlfbW9kZSkgY2hhbm5lbC52aWRlb1F1YWxpdHlNb2RlID0gcGF5bG9hZC5jaGFubmVsLnZpZGVvX3F1YWxpdHlfbW9kZVxuICBpZiAocHJvcHMubWVzc2FnZUNvdW50KSBjaGFubmVsLm1lc3NhZ2VDb3VudCA9IHBheWxvYWQuY2hhbm5lbC5tZXNzYWdlX2NvdW50XG4gIGlmIChwcm9wcy5tZW1iZXJDb3VudCkgY2hhbm5lbC5tZW1iZXJDb3VudCA9IHBheWxvYWQuY2hhbm5lbC5tZW1iZXJfY291bnRcbiAgaWYgKHByb3BzLmFyY2hpdmVUaW1lc3RhbXAgfHwgcHJvcHMuY3JlYXRlVGltZXN0YW1wIHx8IHByb3BzLmF1dG9BcmNoaXZlRHVyYXRpb24pIHtcbiAgICBjaGFubmVsLmludGVybmFsVGhyZWFkTWV0YWRhdGEgPSB7fSBhcyBOb25OdWxsYWJsZTxDaGFubmVsWydpbnRlcm5hbFRocmVhZE1ldGFkYXRhJ10+XG4gICAgaWYgKHByb3BzLmFyY2hpdmVUaW1lc3RhbXAgJiYgcGF5bG9hZC5jaGFubmVsLnRocmVhZF9tZXRhZGF0YT8uYXJjaGl2ZV90aW1lc3RhbXApXG4gICAgICBjaGFubmVsLmludGVybmFsVGhyZWFkTWV0YWRhdGEuYXJjaGl2ZVRpbWVzdGFtcCA9IERhdGUucGFyc2UocGF5bG9hZC5jaGFubmVsLnRocmVhZF9tZXRhZGF0YS5hcmNoaXZlX3RpbWVzdGFtcClcbiAgICBpZiAocHJvcHMuY3JlYXRlVGltZXN0YW1wICYmIHBheWxvYWQuY2hhbm5lbC50aHJlYWRfbWV0YWRhdGE/LmNyZWF0ZV90aW1lc3RhbXApXG4gICAgICBjaGFubmVsLmludGVybmFsVGhyZWFkTWV0YWRhdGEuY3JlYXRlVGltZXN0YW1wID0gRGF0ZS5wYXJzZShwYXlsb2FkLmNoYW5uZWwudGhyZWFkX21ldGFkYXRhLmNyZWF0ZV90aW1lc3RhbXApXG4gICAgaWYgKHByb3BzLmF1dG9BcmNoaXZlRHVyYXRpb24gJiYgcGF5bG9hZC5jaGFubmVsLnRocmVhZF9tZXRhZGF0YT8uYXV0b19hcmNoaXZlX2R1cmF0aW9uKVxuICAgICAgY2hhbm5lbC5pbnRlcm5hbFRocmVhZE1ldGFkYXRhLmF1dG9BcmNoaXZlRHVyYXRpb24gPSBwYXlsb2FkLmNoYW5uZWwudGhyZWFkX21ldGFkYXRhLmF1dG9fYXJjaGl2ZV9kdXJhdGlvblxuICB9XG4gIGlmIChwcm9wcy5kZWZhdWx0QXV0b0FyY2hpdmVEdXJhdGlvbiAmJiBwYXlsb2FkLmNoYW5uZWwuZGVmYXVsdF9hdXRvX2FyY2hpdmVfZHVyYXRpb24pXG4gICAgY2hhbm5lbC5kZWZhdWx0QXV0b0FyY2hpdmVEdXJhdGlvbiA9IHBheWxvYWQuY2hhbm5lbC5kZWZhdWx0X2F1dG9fYXJjaGl2ZV9kdXJhdGlvblxuICBpZiAocHJvcHMucGVybWlzc2lvbnMgJiYgcGF5bG9hZC5jaGFubmVsLnBlcm1pc3Npb25zKSBjaGFubmVsLnBlcm1pc3Npb25zID0gbmV3IFBlcm1pc3Npb25zKHBheWxvYWQuY2hhbm5lbC5wZXJtaXNzaW9ucylcbiAgaWYgKHByb3BzLmZsYWdzKSBjaGFubmVsLmZsYWdzID0gcGF5bG9hZC5jaGFubmVsLmZsYWdzXG4gIGlmIChwcm9wcy5wZXJtaXNzaW9uT3ZlcndyaXRlcyAmJiBwYXlsb2FkLmNoYW5uZWwucGVybWlzc2lvbl9vdmVyd3JpdGVzKVxuICAgIGNoYW5uZWwuaW50ZXJuYWxPdmVyd3JpdGVzID0gcGF5bG9hZC5jaGFubmVsLnBlcm1pc3Npb25fb3ZlcndyaXRlcy5tYXAoKG8pID0+IHBhY2tPdmVyd3JpdGVzKG8uYWxsb3cgPz8gJzAnLCBvLmRlbnkgPz8gJzAnLCBvLmlkLCBvLnR5cGUpKVxuICBpZiAocHJvcHMucGFyZW50SWQgJiYgcGF5bG9hZC5jaGFubmVsLnBhcmVudF9pZCkgY2hhbm5lbC5wYXJlbnRJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuY2hhbm5lbC5wYXJlbnRfaWQpXG4gIGlmIChwcm9wcy5yZWNpcGllbnRzICYmIHBheWxvYWQuY2hhbm5lbC5yZWNpcGllbnRzKSBjaGFubmVsLnJlY2lwaWVudHMgPSBwYXlsb2FkLmNoYW5uZWwucmVjaXBpZW50cy5tYXAoKHUpID0+IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHUpKVxuICBpZiAocHJvcHMuaWNvbiAmJiBwYXlsb2FkLmNoYW5uZWwuaWNvbikgY2hhbm5lbC5pY29uID0gaWNvbkhhc2hUb0JpZ0ludChwYXlsb2FkLmNoYW5uZWwuaWNvbilcbiAgaWYgKHByb3BzLmFwcGxpY2F0aW9uSWQgJiYgcGF5bG9hZC5jaGFubmVsLmFwcGxpY2F0aW9uX2lkKSBjaGFubmVsLmFwcGxpY2F0aW9uSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmNoYW5uZWwuYXBwbGljYXRpb25faWQpXG4gIGlmIChwcm9wcy5tZW1iZXIgJiYgcGF5bG9hZC5jaGFubmVsLm1lbWJlcikgY2hhbm5lbC5tZW1iZXIgPSBib3QudHJhbnNmb3JtZXJzLnRocmVhZE1lbWJlcihib3QsIHBheWxvYWQuY2hhbm5lbC5tZW1iZXIpXG4gIGlmIChwcm9wcy50b3RhbE1lc3NhZ2VTZW50ICYmIHBheWxvYWQuY2hhbm5lbC50b3RhbF9tZXNzYWdlX3NlbnQgIT09IHVuZGVmaW5lZCkgY2hhbm5lbC50b3RhbE1lc3NhZ2VTZW50ID0gcGF5bG9hZC5jaGFubmVsLnRvdGFsX21lc3NhZ2Vfc2VudFxuICBpZiAocHJvcHMuYXZhaWxhYmxlVGFncyAmJiBwYXlsb2FkLmNoYW5uZWwuYXZhaWxhYmxlX3RhZ3MpXG4gICAgY2hhbm5lbC5hdmFpbGFibGVUYWdzID0gcGF5bG9hZC5jaGFubmVsLmF2YWlsYWJsZV90YWdzLm1hcCgoeCkgPT4gYm90LnRyYW5zZm9ybWVycy5mb3J1bVRhZyhib3QsIHgpKVxuICBpZiAocHJvcHMuYXBwbGllZFRhZ3MgJiYgcGF5bG9hZC5jaGFubmVsLmFwcGxpZWRfdGFncykgY2hhbm5lbC5hcHBsaWVkVGFncyA9IHBheWxvYWQuY2hhbm5lbC5hcHBsaWVkX3RhZ3MubWFwKCh4KSA9PiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZSh4KSlcbiAgaWYgKHByb3BzLmRlZmF1bHRSZWFjdGlvbkVtb2ppICYmIHBheWxvYWQuY2hhbm5lbC5kZWZhdWx0X3JlYWN0aW9uX2Vtb2ppKVxuICAgIGNoYW5uZWwuZGVmYXVsdFJlYWN0aW9uRW1vamkgPSBib3QudHJhbnNmb3JtZXJzLmRlZmF1bHRSZWFjdGlvbkVtb2ppKGJvdCwgcGF5bG9hZC5jaGFubmVsLmRlZmF1bHRfcmVhY3Rpb25fZW1vamkpXG4gIGlmIChwcm9wcy5kZWZhdWx0VGhyZWFkUmF0ZUxpbWl0UGVyVXNlciAmJiBwYXlsb2FkLmNoYW5uZWwuZGVmYXVsdF90aHJlYWRfcmF0ZV9saW1pdF9wZXJfdXNlcilcbiAgICBjaGFubmVsLmRlZmF1bHRUaHJlYWRSYXRlTGltaXRQZXJVc2VyID0gcGF5bG9hZC5jaGFubmVsLmRlZmF1bHRfdGhyZWFkX3JhdGVfbGltaXRfcGVyX3VzZXJcbiAgaWYgKHByb3BzLmRlZmF1bHRTb3J0T3JkZXIgJiYgcGF5bG9hZC5jaGFubmVsLmRlZmF1bHRfc29ydF9vcmRlciAhPT0gdW5kZWZpbmVkKSBjaGFubmVsLmRlZmF1bHRTb3J0T3JkZXIgPSBwYXlsb2FkLmNoYW5uZWwuZGVmYXVsdF9zb3J0X29yZGVyXG4gIGlmIChwcm9wcy5kZWZhdWx0Rm9ydW1MYXlvdXQgJiYgcGF5bG9hZC5jaGFubmVsLmRlZmF1bHRfZm9ydW1fbGF5b3V0ICE9PSB1bmRlZmluZWQpXG4gICAgY2hhbm5lbC5kZWZhdWx0Rm9ydW1MYXlvdXQgPSBwYXlsb2FkLmNoYW5uZWwuZGVmYXVsdF9mb3J1bV9sYXlvdXRcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5jaGFubmVsKGJvdCwgcGF5bG9hZC5jaGFubmVsLCBjaGFubmVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRm9ydW1UYWcoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRGb3J1bVRhZyk6IEZvcnVtVGFnIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmZvcnVtVGFnXG4gIGNvbnN0IGZvcnVtVGFnID0ge30gYXMgRm9ydW1UYWdcblxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgZm9ydW1UYWcuaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmlkKVxuICBpZiAocHJvcHMubmFtZSAmJiBwYXlsb2FkLm5hbWUpIGZvcnVtVGFnLm5hbWUgPSBwYXlsb2FkLm5hbWVcbiAgaWYgKHByb3BzLm1vZGVyYXRlZCAmJiBwYXlsb2FkLm1vZGVyYXRlZCkgZm9ydW1UYWcubW9kZXJhdGVkID0gcGF5bG9hZC5tb2RlcmF0ZWRcbiAgaWYgKHByb3BzLmVtb2ppSWQgJiYgcGF5bG9hZC5lbW9qaV9pZCkgZm9ydW1UYWcuZW1vamlJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZW1vamlfaWQpXG4gIGlmIChwcm9wcy5lbW9qaU5hbWUgJiYgcGF5bG9hZC5lbW9qaV9uYW1lKSBmb3J1bVRhZy5lbW9qaU5hbWUgPSBwYXlsb2FkLmVtb2ppX25hbWVcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5mb3J1bVRhZyhib3QsIHBheWxvYWQsIGZvcnVtVGFnKVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VDaGFubmVsIHtcbiAgLyoqIFdoZXRoZXIgdGhlIGNoYW5uZWwgaXMgbnNmdyAqL1xuICBuc2Z3OiBib29sZWFuXG4gIC8qKiBUaHJlYWQtc3BlY2lmaWMgZmllbGRzIG5vdCBuZWVkZWQgYnkgb3RoZXIgY2hhbm5lbHMgKi9cbiAgdGhyZWFkTWV0YWRhdGE/OiB7XG4gICAgLyoqIFRpbWVzdGFtcCB3aGVuIHRoZSB0aHJlYWQncyBhcmNoaXZlIHN0YXR1cyB3YXMgbGFzdCBjaGFuZ2VkLCB1c2VkIGZvciBjYWxjdWxhdGluZyByZWNlbnQgYWN0aXZpdHkgKi9cbiAgICBhcmNoaXZlVGltZXN0YW1wPzogbnVtYmVyXG4gICAgLyoqIFRpbWVzdGFtcCB3aGVuIHRoZSB0aHJlYWQgd2FzIGNyZWF0ZWQ7IG9ubHkgcG9wdWxhdGVkIGZvciB0aHJlYWRzIGNyZWF0ZWQgYWZ0ZXIgMjAyMi0wMS0wOSAqL1xuICAgIGNyZWF0ZVRpbWVzdGFtcD86IG51bWJlclxuICAgIC8qKiBEdXJhdGlvbiBpbiBtaW51dGVzIHRvIGF1dG9tYXRpY2FsbHkgYXJjaGl2ZSB0aGUgdGhyZWFkIGFmdGVyIHJlY2VudCBhY3Rpdml0eSAqL1xuICAgIGF1dG9BcmNoaXZlRHVyYXRpb24/OiA2MCB8IDE0NDAgfCA0MzIwIHwgMTAwODBcbiAgICAvKiogV2hlbiBhIHRocmVhZCBpcyBsb2NrZWQsIG9ubHkgdXNlcnMgd2l0aCBgTUFOQUdFX1RIUkVBRFNgIGNhbiB1bmFyY2hpdmUgaXQgKi9cbiAgICBsb2NrZWQ6IGJvb2xlYW5cbiAgICAvKiogd2hldGhlciBub24tbW9kZXJhdG9ycyBjYW4gYWRkIG90aGVyIG5vbi1tb2RlcmF0b3JzIHRvIGEgdGhyZWFkOyBvbmx5IGF2YWlsYWJsZSBvbiBwcml2YXRlIHRocmVhZHMgKi9cbiAgICBpbnZpdGFibGU6IGJvb2xlYW5cbiAgICAvKiogV2hldGhlciB0aGUgdGhyZWFkIGlzIGFyY2hpdmVkICovXG4gICAgYXJjaGl2ZWQ6IGJvb2xlYW5cbiAgfVxuICAvKiogV2hlbiBhIHRocmVhZCBpcyBjcmVhdGVkIHRoaXMgd2lsbCBiZSB0cnVlIG9uIHRoYXQgY2hhbm5lbCBwYXlsb2FkIGZvciB0aGUgdGhyZWFkLiAqL1xuICBuZXdseUNyZWF0ZWQ6IGJvb2xlYW5cbiAgLyoqIFdoZW4gYSB0aHJlYWQgaXMgbG9ja2VkLCBvbmx5IHVzZXJzIHdpdGggYE1BTkFHRV9USFJFQURTYCBjYW4gdW5hcmNoaXZlIGl0ICovXG4gIGxvY2tlZDogYm9vbGVhblxuICAvKiogd2hldGhlciBub24tbW9kZXJhdG9ycyBjYW4gYWRkIG90aGVyIG5vbi1tb2RlcmF0b3JzIHRvIGEgdGhyZWFkOyBvbmx5IGF2YWlsYWJsZSBvbiBwcml2YXRlIHRocmVhZHMgKi9cbiAgaW52aXRhYmxlOiBib29sZWFuXG4gIC8qKiBXaGV0aGVyIHRoZSB0aHJlYWQgaXMgYXJjaGl2ZWQgKi9cbiAgYXJjaGl2ZWQ6IGJvb2xlYW5cbiAgLyoqIGZvciBncm91cCBETSBjaGFubmVsczogd2hldGhlciB0aGUgY2hhbm5lbCBpcyBtYW5hZ2VkIGJ5IGFuIGFwcGxpY2F0aW9uIHZpYSB0aGUgYGdkbS5qb2luYCBPQXV0aDIgc2NvcGUgKi9cbiAgbWFuYWdlZDogYm9vbGVhblxuICAvKiogRXhwbGljaXQgcGVybWlzc2lvbiBvdmVyd3JpdGVzIGZvciBtZW1iZXJzIGFuZCByb2xlcy4gKi9cbiAgcGVybWlzc2lvbk92ZXJ3cml0ZXM6IE92ZXJ3cml0ZVJlYWRhYmxlW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFubmVsIGV4dGVuZHMgQmFzZUNoYW5uZWwge1xuICAvKiogVGhlIGlkIG9mIHRoZSBjaGFubmVsICovXG4gIGlkOiBiaWdpbnRcbiAgLyoqIFRoZSBjb21wcmVzc2VkIGZvcm0gb2YgYWxsIHRoZSBib29sZWFuIHZhbHVlcyBvbiB0aGlzIGNoYW5uZWwuICovXG4gIHRvZ2dsZXM6IENoYW5uZWxUb2dnbGVzXG4gIC8qKiBUaGUgdHlwZSBvZiBjaGFubmVsICovXG4gIHR5cGU6IENoYW5uZWxUeXBlc1xuICAvKiogVGhlIGlkIG9mIHRoZSBndWlsZCAqL1xuICBndWlsZElkPzogYmlnaW50XG4gIC8qKiBTb3J0aW5nIHBvc2l0aW9uIG9mIHRoZSBjaGFubmVsICovXG4gIHBvc2l0aW9uPzogbnVtYmVyXG4gIC8qKiBUaGUgbmFtZSBvZiB0aGUgY2hhbm5lbCAoMS0xMDAgY2hhcmFjdGVycykgKi9cbiAgbmFtZT86IHN0cmluZ1xuICAvKiogVGhlIGNoYW5uZWwgdG9waWMgKDAtNDA5NiBjaGFyYWN0ZXJzIGZvciBHVUlMRF9GT1JVTSBjaGFubmVscywgMC0xMDI0IGNoYXJhY3RlcnMgZm9yIGFsbCBvdGhlcnMpICovXG4gIHRvcGljPzogc3RyaW5nXG4gIC8qKiBUaGUgaWQgb2YgdGhlIGxhc3QgbWVzc2FnZSBzZW50IGluIHRoaXMgY2hhbm5lbCAobWF5IG5vdCBwb2ludCB0byBhbiBleGlzdGluZyBvciB2YWxpZCBtZXNzYWdlKSAqL1xuICBsYXN0TWVzc2FnZUlkPzogYmlnaW50XG4gIC8qKiBUaGUgYml0cmF0ZSAoaW4gYml0cykgb2YgdGhlIHZvaWNlIG9yIHN0YWdlIGNoYW5uZWwgKi9cbiAgYml0cmF0ZT86IG51bWJlclxuICAvKiogVGhlIHVzZXIgbGltaXQgb2YgdGhlIHZvaWNlIG9yIHN0YWdlIGNoYW5uZWwgKi9cbiAgdXNlckxpbWl0PzogbnVtYmVyXG4gIC8qKiBBbW91bnQgb2Ygc2Vjb25kcyBhIHVzZXIgaGFzIHRvIHdhaXQgYmVmb3JlIHNlbmRpbmcgYW5vdGhlciBtZXNzYWdlICgwLTIxNjAwKTsgYm90cywgYXMgd2VsbCBhcyB1c2VycyB3aXRoIHRoZSBwZXJtaXNzaW9uIGBtYW5hZ2VfbWVzc2FnZXNgIG9yIGBtYW5hZ2VfY2hhbm5lbGAsIGFyZSB1bmFmZmVjdGVkICovXG4gIHJhdGVMaW1pdFBlclVzZXI/OiBudW1iZXJcbiAgLyoqIElkIG9mIHRoZSBjcmVhdG9yIG9mIHRoZSB0aHJlYWQgKi9cbiAgb3duZXJJZD86IGJpZ2ludFxuICAvKiogRm9yIGd1aWxkIGNoYW5uZWxzOiBJZCBvZiB0aGUgcGFyZW50IGNhdGVnb3J5IGZvciBhIGNoYW5uZWwgKGVhY2ggcGFyZW50IGNhdGVnb3J5IGNhbiBjb250YWluIHVwIHRvIDUwIGNoYW5uZWxzKSwgZm9yIHRocmVhZHM6IGlkIG9mIHRoZSB0ZXh0IGNoYW5uZWwgdGhpcyB0aHJlYWQgd2FzIGNyZWF0ZWQgKi9cbiAgcGFyZW50SWQ/OiBiaWdpbnRcbiAgLyoqIFdoZW4gdGhlIGxhc3QgcGlubmVkIG1lc3NhZ2Ugd2FzIHBpbm5lZC4gVGhpcyBtYXkgYmUgbnVsbCBpbiBldmVudHMgc3VjaCBhcyBHVUlMRF9DUkVBVEUgd2hlbiBhIG1lc3NhZ2UgaXMgbm90IHBpbm5lZC4gKi9cbiAgbGFzdFBpblRpbWVzdGFtcD86IG51bWJlclxuICAvKiogVm9pY2UgcmVnaW9uIGlkIGZvciB0aGUgdm9pY2Ugb3Igc3RhZ2UgY2hhbm5lbCwgYXV0b21hdGljIHdoZW4gc2V0IHRvIG51bGwgKi9cbiAgcnRjUmVnaW9uPzogc3RyaW5nXG4gIC8qKiBUaGUgY2FtZXJhIHZpZGVvIHF1YWxpdHkgbW9kZSBvZiB0aGUgdm9pY2UgY2hhbm5lbCwgMSB3aGVuIG5vdCBwcmVzZW50ICovXG4gIHZpZGVvUXVhbGl0eU1vZGU/OiBWaWRlb1F1YWxpdHlNb2Rlc1xuICAvKiogQW4gYXBwcm94aW1hdGUgY291bnQgb2YgbWVzc2FnZXMgaW4gYSB0aHJlYWQsIHN0b3BzIGNvdW50aW5nIGF0IDUwICovXG4gIG1lc3NhZ2VDb3VudD86IG51bWJlclxuICAvKiogQW4gYXBwcm94aW1hdGUgY291bnQgb2YgdXNlcnMgaW4gYSB0aHJlYWQsIHN0b3BzIGNvdW50aW5nIGF0IDUwICovXG4gIG1lbWJlckNvdW50PzogbnVtYmVyXG4gIC8qKlxuICAgKiBUaHJlYWQtc3BlY2lmaWMgZmllbGRzIG5vdCBuZWVkZWQgYnkgb3RoZXIgY2hhbm5lbHMuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBjaGFubmVsLnRocmVhZE1ldGFkYXRhXG4gICAqIEBwcml2YXRlIFRoaXMgZmllbGQgaXMgYW4gaW50ZXJuYWwgZmllbGQsIHN1YmplY3QgdG8gYnJlYWtpbmcgY2hhbmdlcy5cbiAgICovXG4gIGludGVybmFsVGhyZWFkTWV0YWRhdGE/OiB7XG4gICAgLyoqIFRpbWVzdGFtcCB3aGVuIHRoZSB0aHJlYWQncyBhcmNoaXZlIHN0YXR1cyB3YXMgbGFzdCBjaGFuZ2VkLCB1c2VkIGZvciBjYWxjdWxhdGluZyByZWNlbnQgYWN0aXZpdHkgKi9cbiAgICBhcmNoaXZlVGltZXN0YW1wOiBudW1iZXJcbiAgICAvKiogVGltZXN0YW1wIHdoZW4gdGhlIHRocmVhZCB3YXMgY3JlYXRlZDsgb25seSBwb3B1bGF0ZWQgZm9yIHRocmVhZHMgY3JlYXRlZCBhZnRlciAyMDIyLTAxLTA5ICovXG4gICAgY3JlYXRlVGltZXN0YW1wPzogbnVtYmVyXG4gICAgLyoqIER1cmF0aW9uIGluIG1pbnV0ZXMgdG8gYXV0b21hdGljYWxseSBhcmNoaXZlIHRoZSB0aHJlYWQgYWZ0ZXIgcmVjZW50IGFjdGl2aXR5ICovXG4gICAgYXV0b0FyY2hpdmVEdXJhdGlvbjogNjAgfCAxNDQwIHwgNDMyMCB8IDEwMDgwXG4gIH1cbiAgLyoqIFRocmVhZCBtZW1iZXIgb2JqZWN0IGZvciB0aGUgY3VycmVudCB1c2VyLCBpZiB0aGV5IGhhdmUgam9pbmVkIHRoZSB0aHJlYWQsIG9ubHkgaW5jbHVkZWQgb24gY2VydGFpbiBBUEkgZW5kcG9pbnRzICovXG4gIG1lbWJlcj86IFRocmVhZE1lbWJlclxuICAvKiogRGVmYXVsdCBkdXJhdGlvbiBmb3IgbmV3bHkgY3JlYXRlZCB0aHJlYWRzLCBpbiBtaW51dGVzLCB0byBhdXRvbWF0aWNhbGx5IGFyY2hpdmUgdGhlIHRocmVhZCBhZnRlciByZWNlbnQgYWN0aXZpdHksIGNhbiBiZSBzZXQgdG86IDYwLCAxNDQwLCA0MzIwLCAxMDA4MCAqL1xuICBkZWZhdWx0QXV0b0FyY2hpdmVEdXJhdGlvbj86IG51bWJlclxuICAvKiogY29tcHV0ZWQgcGVybWlzc2lvbnMgZm9yIHRoZSBpbnZva2luZyB1c2VyIGluIHRoZSBjaGFubmVsLCBpbmNsdWRpbmcgb3ZlcndyaXRlcywgb25seSBpbmNsdWRlZCB3aGVuIHBhcnQgb2YgdGhlIHJlc29sdmVkIGRhdGEgcmVjZWl2ZWQgb24gYSBzbGFzaCBjb21tYW5kIGludGVyYWN0aW9uLiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgaW1wbGljaXQgcGVybWlzc2lvbnMsIHdoaWNoIG1heSBuZWVkIHRvIGJlIGNoZWNrZWQgc2VwYXJhdGVseS4gKi9cbiAgcGVybWlzc2lvbnM/OiBQZXJtaXNzaW9uc1xuICAvKiogVGhlIGZsYWdzIG9mIHRoZSBjaGFubmVsICovXG4gIGZsYWdzPzogbnVtYmVyXG4gIC8qKlxuICAgKiBFeHBsaWNpdCBwZXJtaXNzaW9uIG92ZXJ3cml0ZXMgZm9yIG1lbWJlcnMgYW5kIHJvbGVzXG4gICAqIEBkZXByZWNhdGVkIFVzZSBjaGFubmVsLnBlcm1pc3Npb25PdmVyd3JpdGVzXG4gICAqIEBwcml2YXRlIFRoaXMgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5LCBhbmQgcHJvbmUgdG8gYnJlYWtpbmcgY2hhbmdlcy5cbiAgICovXG4gIGludGVybmFsT3ZlcndyaXRlcz86IGJpZ2ludFtdXG4gIC8qKiBUaGUgcmVjaXBpZW50cyBvZiBhIGdyb3VwIGRtICovXG4gIHJlY2lwaWVudHM/OiBVc2VyW11cbiAgLyoqIEljb24gaGFzaCBvZiB0aGUgZ3JvdXAgZG0gKi9cbiAgaWNvbj86IGJpZ2ludFxuICAvKiogQXBwbGljYXRpb24gaWQgb2YgdGhlIGdyb3VwIERNIGNyZWF0b3IgaWYgaXQgaXMgYm90LWNyZWF0ZWQgKi9cbiAgYXBwbGljYXRpb25JZD86IGJpZ2ludFxuICAvKiogTnVtYmVyIG9mIG1lc3NhZ2VzIGV2ZXIgc2VudCBpbiBhIHRocmVhZCwgaXQncyBzaW1pbGFyIHRvIGBtZXNzYWdlX2NvdW50YCBvbiBtZXNzYWdlIGNyZWF0aW9uLCBidXQgd2lsbCBub3QgZGVjcmVtZW50IHRoZSBudW1iZXIgd2hlbiBhIG1lc3NhZ2UgaXMgZGVsZXRlZCAqL1xuICB0b3RhbE1lc3NhZ2VTZW50PzogbnVtYmVyXG4gIC8qKiBUaGUgc2V0IG9mIHRhZ3MgdGhhdCBjYW4gYmUgdXNlZCBpbiBhIGBHVUlMRF9GT1JVTWAgb3IgYSBgR1VJTERfTUVESUFgIGNoYW5uZWwgKi9cbiAgYXZhaWxhYmxlVGFncz86IEZvcnVtVGFnW11cbiAgLyoqIFRoZSBJRHMgb2YgdGhlIHNldCBvZiB0YWdzIHRoYXQgaGF2ZSBiZWVuIGFwcGxpZWQgdG8gYSB0aHJlYWQgaW4gYSBgR1VJTERfRk9SVU1gIG9yIGEgYEdVSUxEX01FRElBYCBjaGFubmVsICovXG4gIGFwcGxpZWRUYWdzPzogYmlnaW50W11cbiAgLyoqIFRoZSBlbW9qaSB0byBzaG93IGluIHRoZSBhZGQgcmVhY3Rpb24gYnV0dG9uIG9uIGEgdGhyZWFkIGluIGEgYEdVSUxEX0ZPUlVNYCBvciBhIGBHVUlMRF9NRURJQWAgY2hhbm5lbCAqL1xuICBkZWZhdWx0UmVhY3Rpb25FbW9qaT86IERlZmF1bHRSZWFjdGlvbkVtb2ppXG4gIC8qKiB0aGUgaW5pdGlhbCBgcmF0ZUxpbWl0UGVyVXNlcmAgdG8gc2V0IG9uIG5ld2x5IGNyZWF0ZWQgdGhyZWFkcyBpbiBhIGNoYW5uZWwuIHRoaXMgZmllbGQgaXMgY29waWVkIHRvIHRoZSB0aHJlYWQgYXQgY3JlYXRpb24gdGltZSBhbmQgZG9lcyBub3QgbGl2ZSB1cGRhdGUuICovXG4gIGRlZmF1bHRUaHJlYWRSYXRlTGltaXRQZXJVc2VyPzogbnVtYmVyXG4gIC8qKiBUaGUgZGVmYXVsdCBzb3J0IG9yZGVyIHR5cGUgdXNlZCB0byBvcmRlciBwb3N0cyBpbiBgR1VJTERfRk9SVU1gIGFuZCBgR1VJTERfTUVESUFgIGNoYW5uZWxzLiBEZWZhdWx0cyB0byBudWxsLCB3aGljaCBpbmRpY2F0ZXMgYSBwcmVmZXJyZWQgc29ydCBvcmRlciBoYXNuJ3QgYmVlbiBzZXQgYnkgYSBjaGFubmVsIGFkbWluICovXG4gIGRlZmF1bHRTb3J0T3JkZXI/OiBTb3J0T3JkZXJUeXBlcyB8IG51bGxcbiAgZGVmYXVsdEZvcnVtTGF5b3V0PzogRm9ydW1MYXlvdXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3J1bVRhZyB7XG4gIC8qKiBUaGUgaWQgb2YgdGhlIHRhZyAqL1xuICBpZDogYmlnaW50XG4gIC8qKiBUaGUgbmFtZSBvZiB0aGUgdGFnICgwLTIwIGNoYXJhY3RlcnMpICovXG4gIG5hbWU6IHN0cmluZ1xuICAvKiogV2hldGhlciB0aGlzIHRhZyBjYW4gb25seSBiZSBhZGRlZCB0byBvciByZW1vdmVkIGZyb20gdGhyZWFkcyBieSBhIG1lbWJlciB3aXRoIHRoZSBNQU5BR0VfVEhSRUFEUyBwZXJtaXNzaW9uICovXG4gIG1vZGVyYXRlZDogYm9vbGVhblxuICAvKiogVGhlIGlkIG9mIGEgZ3VpbGQncyBjdXN0b20gZW1vamkgQXQgbW9zdCBvbmUgb2YgZW1vamlfaWQgYW5kIGVtb2ppX25hbWUgbWF5IGJlIHNldC4gKi9cbiAgZW1vamlJZDogYmlnaW50XG4gIC8qKiBUaGUgdW5pY29kZSBjaGFyYWN0ZXIgb2YgdGhlIGVtb2ppICovXG4gIGVtb2ppTmFtZTogc3RyaW5nIHwgbnVsbFxufVxuIl0sIm5hbWVzIjpbImJhc2VDaGFubmVsIiwicGFja092ZXJ3cml0ZXMiLCJzZXBhcmF0ZU92ZXJ3cml0ZXMiLCJ0cmFuc2Zvcm1DaGFubmVsIiwidHJhbnNmb3JtRm9ydW1UYWciLCJNYXNrIiwiYWxsb3ciLCJkZW55IiwiaWQiLCJ0eXBlIiwicGFjazY0IiwidW5wYWNrNjQiLCJ2Iiwic2hpZnQiLCJCaWdJbnQiLCJiIiwiRXJyb3IiLCJ0b1N0cmluZyIsIk51bWJlciIsImFyY2hpdmVkIiwidG9nZ2xlcyIsImludml0YWJsZSIsImxvY2tlZCIsIm5zZnciLCJuZXdseUNyZWF0ZWQiLCJtYW5hZ2VkIiwicGVybWlzc2lvbk92ZXJ3cml0ZXMiLCJpbnRlcm5hbE92ZXJ3cml0ZXMiLCJtYXAiLCJvdmVyd3JpdGUiLCJjYWxjdWxhdGVQZXJtaXNzaW9ucyIsInRocmVhZE1ldGFkYXRhIiwiYXJjaGl2ZVRpbWVzdGFtcCIsImludGVybmFsVGhyZWFkTWV0YWRhdGEiLCJjcmVhdGVUaW1lc3RhbXAiLCJhdXRvQXJjaGl2ZUR1cmF0aW9uIiwiYm90IiwicGF5bG9hZCIsImNoYW5uZWwiLCJPYmplY3QiLCJjcmVhdGUiLCJwcm9wcyIsInRyYW5zZm9ybWVycyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwiQ2hhbm5lbFRvZ2dsZXMiLCJzbm93Zmxha2UiLCJndWlsZElkIiwiZ3VpbGRfaWQiLCJwb3NpdGlvbiIsIm5hbWUiLCJ0b3BpYyIsImxhc3RNZXNzYWdlSWQiLCJsYXN0X21lc3NhZ2VfaWQiLCJiaXRyYXRlIiwidXNlckxpbWl0IiwidXNlcl9saW1pdCIsInJhdGVMaW1pdFBlclVzZXIiLCJyYXRlX2xpbWl0X3Blcl91c2VyIiwib3duZXJJZCIsIm93bmVyX2lkIiwibGFzdFBpblRpbWVzdGFtcCIsImxhc3RfcGluX3RpbWVzdGFtcCIsIkRhdGUiLCJwYXJzZSIsInJ0Y1JlZ2lvbiIsInJ0Y19yZWdpb24iLCJ2aWRlb1F1YWxpdHlNb2RlIiwidmlkZW9fcXVhbGl0eV9tb2RlIiwibWVzc2FnZUNvdW50IiwibWVzc2FnZV9jb3VudCIsIm1lbWJlckNvdW50IiwibWVtYmVyX2NvdW50IiwidGhyZWFkX21ldGFkYXRhIiwiYXJjaGl2ZV90aW1lc3RhbXAiLCJjcmVhdGVfdGltZXN0YW1wIiwiYXV0b19hcmNoaXZlX2R1cmF0aW9uIiwiZGVmYXVsdEF1dG9BcmNoaXZlRHVyYXRpb24iLCJkZWZhdWx0X2F1dG9fYXJjaGl2ZV9kdXJhdGlvbiIsInBlcm1pc3Npb25zIiwiUGVybWlzc2lvbnMiLCJmbGFncyIsInBlcm1pc3Npb25fb3ZlcndyaXRlcyIsIm8iLCJwYXJlbnRJZCIsInBhcmVudF9pZCIsInJlY2lwaWVudHMiLCJ1IiwidXNlciIsImljb24iLCJpY29uSGFzaFRvQmlnSW50IiwiYXBwbGljYXRpb25JZCIsImFwcGxpY2F0aW9uX2lkIiwibWVtYmVyIiwidGhyZWFkTWVtYmVyIiwidG90YWxNZXNzYWdlU2VudCIsInRvdGFsX21lc3NhZ2Vfc2VudCIsInVuZGVmaW5lZCIsImF2YWlsYWJsZVRhZ3MiLCJhdmFpbGFibGVfdGFncyIsIngiLCJmb3J1bVRhZyIsImFwcGxpZWRUYWdzIiwiYXBwbGllZF90YWdzIiwiZGVmYXVsdFJlYWN0aW9uRW1vamkiLCJkZWZhdWx0X3JlYWN0aW9uX2Vtb2ppIiwiZGVmYXVsdFRocmVhZFJhdGVMaW1pdFBlclVzZXIiLCJkZWZhdWx0X3RocmVhZF9yYXRlX2xpbWl0X3Blcl91c2VyIiwiZGVmYXVsdFNvcnRPcmRlciIsImRlZmF1bHRfc29ydF9vcmRlciIsImRlZmF1bHRGb3J1bUxheW91dCIsImRlZmF1bHRfZm9ydW1fbGF5b3V0IiwiY3VzdG9taXplcnMiLCJtb2RlcmF0ZWQiLCJlbW9qaUlkIiwiZW1vamlfaWQiLCJlbW9qaU5hbWUiLCJlbW9qaV9uYW1lIl0sIm1hcHBpbmdzIjoiQUFBQSx3REFBd0Q7Ozs7Ozs7Ozs7O0lBZ0MzQ0EsV0FBVztlQUFYQTs7SUFmR0MsY0FBYztlQUFkQTs7SUFXQUMsa0JBQWtCO2VBQWxCQTs7SUFnREFDLGdCQUFnQjtlQUFoQkE7O0lBeURBQyxpQkFBaUI7ZUFBakJBOzs7dUJBMUgwRzs2QkFDOUY7eUJBQ0c7QUFFL0IsTUFBTUMsT0FBTyxBQUFDLENBQUEsRUFBRSxJQUFJLEdBQUcsQUFBRCxJQUFL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
|
|
@@ -2,9 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
transformDefaultReactionEmoji: function() {
|
|
13
|
+
return transformDefaultReactionEmoji;
|
|
14
|
+
},
|
|
15
|
+
transformEmoji: function() {
|
|
8
16
|
return transformEmoji;
|
|
9
17
|
}
|
|
10
18
|
});
|
|
@@ -19,5 +27,12 @@ function transformEmoji(bot, payload) {
|
|
|
19
27
|
emoji.toggles = new _emoji.EmojiToggles(payload);
|
|
20
28
|
return bot.transformers.customizers.emoji(bot, payload, emoji);
|
|
21
29
|
}
|
|
30
|
+
function transformDefaultReactionEmoji(bot, payload) {
|
|
31
|
+
const props = bot.transformers.desiredProperties.defaultReactionEmoji;
|
|
32
|
+
const defaultReactionEmoji = {};
|
|
33
|
+
if (props.emojiId && payload.emoji_id) defaultReactionEmoji.emojiId = bot.transformers.snowflake(payload.emoji_id);
|
|
34
|
+
if (props.emojiName && payload.emoji_name) defaultReactionEmoji.emojiName = payload.emoji_name;
|
|
35
|
+
return bot.transformers.customizers.defaultReactionEmoji(bot, payload, defaultReactionEmoji);
|
|
36
|
+
}
|
|
22
37
|
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvZW1vamkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEaXNjb3JkRGVmYXVsdFJlYWN0aW9uRW1vamksIERpc2NvcmRFbW9qaSB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCb3QsIFVzZXIgfSBmcm9tICcuLi9pbmRleC5qcydcbmltcG9ydCB7IEVtb2ppVG9nZ2xlcyB9IGZyb20gJy4vdG9nZ2xlcy9lbW9qaS5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUVtb2ppKGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkRW1vamkpOiBFbW9qaSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5lbW9qaVxuICBjb25zdCBlbW9qaSA9IHt9IGFzIEVtb2ppXG5cbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGVtb2ppLmlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pZClcbiAgaWYgKHByb3BzLm5hbWUgJiYgcGF5bG9hZC5uYW1lKSBlbW9qaS5uYW1lID0gcGF5bG9hZC5uYW1lXG4gIGlmIChwcm9wcy5yb2xlcyAmJiBwYXlsb2FkLnJvbGVzKSBlbW9qaS5yb2xlcyA9IHBheWxvYWQucm9sZXMubWFwKChpZCkgPT4gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoaWQpKVxuICBpZiAocHJvcHMudXNlciAmJiBwYXlsb2FkLnVzZXIpIGVtb2ppLnVzZXIgPSBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCBwYXlsb2FkLnVzZXIpXG5cbiAgZW1vamkudG9nZ2xlcyA9IG5ldyBFbW9qaVRvZ2dsZXMocGF5bG9hZClcblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5lbW9qaShib3QsIHBheWxvYWQsIGVtb2ppKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRGVmYXVsdFJlYWN0aW9uRW1vamkoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmREZWZhdWx0UmVhY3Rpb25FbW9qaSk6IERlZmF1bHRSZWFjdGlvbkVtb2ppIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmRlZmF1bHRSZWFjdGlvbkVtb2ppXG4gIGNvbnN0IGRlZmF1bHRSZWFjdGlvbkVtb2ppID0ge30gYXMgRGVmYXVsdFJlYWN0aW9uRW1vamlcblxuICBpZiAocHJvcHMuZW1vamlJZCAmJiBwYXlsb2FkLmVtb2ppX2lkKSBkZWZhdWx0UmVhY3Rpb25FbW9qaS5lbW9qaUlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5lbW9qaV9pZClcbiAgaWYgKHByb3BzLmVtb2ppTmFtZSAmJiBwYXlsb2FkLmVtb2ppX25hbWUpIGRlZmF1bHRSZWFjdGlvbkVtb2ppLmVtb2ppTmFtZSA9IHBheWxvYWQuZW1vamlfbmFtZVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmRlZmF1bHRSZWFjdGlvbkVtb2ppKGJvdCwgcGF5bG9hZCwgZGVmYXVsdFJlYWN0aW9uRW1vamkpXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1vamkge1xuICAvKiogRW1vamkgbmFtZSAoY2FuIG9ubHkgYmUgbnVsbCBpbiByZWFjdGlvbiBlbW9qaSBvYmplY3RzKSAqL1xuICBuYW1lPzogc3RyaW5nXG4gIC8qKiBFbW9qaSBpZCAqL1xuICBpZD86IGJpZ2ludFxuICAvKiogUm9sZXMgYWxsb3dlZCB0byB1c2UgdGhpcyBlbW9qaSAqL1xuICByb2xlcz86IGJpZ2ludFtdXG4gIC8qKiBVc2VyIHRoYXQgY3JlYXRlZCB0aGlzIGVtb2ppICovXG4gIHVzZXI/OiBVc2VyXG4gIC8qKiBXaGV0aGVyIHRoaXMgZW1vamkgbXVzdCBiZSB3cmFwcGVkIGluIGNvbG9ucyAqL1xuICByZXF1aXJlQ29sb25zPzogYm9vbGVhblxuICAvKiogV2hldGhlciB0aGlzIGVtb2ppIGlzIG1hbmFnZWQgKi9cbiAgbWFuYWdlZD86IGJvb2xlYW5cbiAgLyoqIFdoZXRoZXIgdGhpcyBlbW9qaSBpcyBhbmltYXRlZCAqL1xuICBhbmltYXRlZD86IGJvb2xlYW5cbiAgLyoqIFdoZXRoZXIgdGhpcyBlbW9qaSBjYW4gYmUgdXNlZCwgbWF5IGJlIGZhbHNlIGR1ZSB0byBsb3NzIG9mIFNlcnZlciBCb29zdHMgKi9cbiAgYXZhaWxhYmxlPzogYm9vbGVhblxuICB0b2dnbGVzOiBFbW9qaVRvZ2dsZXNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0UmVhY3Rpb25FbW9qaSB7XG4gIC8qKiBUaGUgaWQgb2YgYSBndWlsZCdzIGN1c3RvbSBlbW9qaSAqL1xuICBlbW9qaUlkOiBiaWdpbnRcbiAgLyoqIFRoZSB1bmljb2RlIGNoYXJhY3RlciBvZiB0aGUgZW1vamkgKi9cbiAgZW1vamlOYW1lPzogc3RyaW5nXG59XG4iXSwibmFtZXMiOlsidHJhbnNmb3JtRGVmYXVsdFJlYWN0aW9uRW1vamkiLCJ0cmFuc2Zvcm1FbW9qaSIsImJvdCIsInBheWxvYWQiLCJwcm9wcyIsInRyYW5zZm9ybWVycyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwiZW1vamkiLCJpZCIsInNub3dmbGFrZSIsIm5hbWUiLCJyb2xlcyIsIm1hcCIsInVzZXIiLCJ0b2dnbGVzIiwiRW1vamlUb2dnbGVzIiwiY3VzdG9taXplcnMiLCJkZWZhdWx0UmVhY3Rpb25FbW9qaSIsImVtb2ppSWQiLCJlbW9qaV9pZCIsImVtb2ppTmFtZSIsImVtb2ppX25hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBa0JnQkEsNkJBQTZCO2VBQTdCQTs7SUFkQUMsY0FBYztlQUFkQTs7O3VCQUZhO0FBRXRCLFNBQVNBLGVBQWVDLEdBQVEsRUFBRUMsT0FBcUI7SUFDNUQsTUFBTUMsUUFBUUYsSUFBSUcsWUFBWSxDQUFDQyxpQkFBaUIsQ0FBQ0MsS0FBSztJQUN0RCxNQUFNQSxRQUFRLENBQUM7SUFFZixJQUFJSCxNQUFNSSxFQUFFLElBQUlMLFFBQVFLLEVBQUUsRUFBRUQsTUFBTUMsRUFBRSxHQUFHTixJQUFJRyxZQUFZLENBQUNJLFNBQVMsQ0FBQ04sUUFBUUssRUFBRTtJQUM1RSxJQUFJSixNQUFNTSxJQUFJLElBQUlQLFFBQVFPLElBQUksRUFBRUgsTUFBTUcsSUFBSSxHQUFHUCxRQUFRTyxJQUFJO0lBQ3pELElBQUlOLE1BQU1PLEtBQUssSUFBSVIsUUFBUVEsS0FBSyxFQUFFSixNQUFNSSxLQUFLLEdBQUdSLFFBQVFRLEtBQUssQ0FBQ0MsR0FBRyxDQUFDLENBQUNKLEtBQU9OLElBQUlHLFlBQVksQ0FBQ0ksU0FBUyxDQUFDRDtJQUNyRyxJQUFJSixNQUFNUyxJQUFJLElBQUlWLFFBQVFVLElBQUksRUFBRU4sTUFBTU0sSUFBSSxHQUFHWCxJQUFJRyxZQUFZLENBQUNRLElBQUksQ0FBQ1gsS0FBS0MsUUFBUVUsSUFBSTtJQUVwRk4sTUFBTU8sT0FBTyxHQUFHLElBQUlDLG1CQUFZLENBQUNaO0lBRWpDLE9BQU9ELElBQUlHLFlBQVksQ0FBQ1csV0FBVyxDQUFDVCxLQUFLLENBQUNMLEtBQUtDLFNBQVNJO0FBQzFEO0FBRU8sU0FBU1AsOEJBQThCRSxHQUFRLEVBQUVDLE9BQW9DO0lBQzFGLE1BQU1DLFFBQVFGLElBQUlHLFlBQVksQ0FBQ0MsaUJBQWlCLENBQUNXLG9CQUFvQjtJQUNyRSxNQUFNQSx1QkFBdUIsQ0FBQztJQUU5QixJQUFJYixNQUFNYyxPQUFPLElBQUlmLFFBQVFnQixRQUFRLEVBQUVGLHFCQUFxQkMsT0FBTyxHQUFHaEIsSUFBSUcsWUFBWSxDQUFDSSxTQUFTLENBQUNOLFFBQVFnQixRQUFRO0lBQ2pILElBQUlmLE1BQU1nQixTQUFTLElBQUlqQixRQUFRa0IsVUFBVSxFQUFFSixxQkFBcUJHLFNBQVMsR0FBR2pCLFFBQVFrQixVQUFVO0lBRTlGLE9BQU9uQixJQUFJRyxZQUFZLENBQUNXLFdBQVcsQ0FBQ0Msb0JBQW9CLENBQUNmLEtBQUtDLFNBQVNjO0FBQ3pFIn0=
|
|
@@ -88,47 +88,52 @@ const baseInteraction = {
|
|
|
88
88
|
}
|
|
89
89
|
};
|
|
90
90
|
function transformInteraction(bot, payload) {
|
|
91
|
-
const guildId = payload.guild_id ? bot.transformers.snowflake(payload.guild_id) : undefined;
|
|
92
|
-
const user = bot.transformers.user(bot, payload.member?.user ?? payload.user);
|
|
91
|
+
const guildId = payload.interaction.guild_id ? bot.transformers.snowflake(payload.interaction.guild_id) : undefined;
|
|
92
|
+
const user = bot.transformers.user(bot, payload.interaction.member?.user ?? payload.interaction.user);
|
|
93
93
|
const interaction = Object.create(baseInteraction);
|
|
94
94
|
const props = bot.transformers.desiredProperties.interaction;
|
|
95
95
|
interaction.bot = bot;
|
|
96
96
|
interaction.acknowledged = false;
|
|
97
|
-
if (props.id && payload.id) interaction.id = bot.transformers.snowflake(payload.id);
|
|
98
|
-
if (props.applicationId && payload.application_id) interaction.applicationId = bot.transformers.snowflake(payload.application_id);
|
|
99
|
-
if (props.type && payload.type) interaction.type = payload.type;
|
|
100
|
-
if (props.token && payload.token) interaction.token = payload.token;
|
|
101
|
-
if (props.version && payload.version) interaction.version = payload.version;
|
|
102
|
-
if (props.locale && payload.locale) interaction.locale = payload.locale;
|
|
103
|
-
if (props.guildLocale && payload.guild_locale) interaction.guildLocale = payload.guild_locale;
|
|
97
|
+
if (props.id && payload.interaction.id) interaction.id = bot.transformers.snowflake(payload.interaction.id);
|
|
98
|
+
if (props.applicationId && payload.interaction.application_id) interaction.applicationId = bot.transformers.snowflake(payload.interaction.application_id);
|
|
99
|
+
if (props.type && payload.interaction.type) interaction.type = payload.interaction.type;
|
|
100
|
+
if (props.token && payload.interaction.token) interaction.token = payload.interaction.token;
|
|
101
|
+
if (props.version && payload.interaction.version) interaction.version = payload.interaction.version;
|
|
102
|
+
if (props.locale && payload.interaction.locale) interaction.locale = payload.interaction.locale;
|
|
103
|
+
if (props.guildLocale && payload.interaction.guild_locale) interaction.guildLocale = payload.interaction.guild_locale;
|
|
104
|
+
if (props.guild && payload.interaction.guild) // @ts-expect-error payload.interaction.guild is a Partial<DiscordGuild>
|
|
105
|
+
interaction.guild = bot.transformers.guild(bot, {
|
|
106
|
+
guild: payload.interaction.guild,
|
|
107
|
+
shardId: payload.shardId
|
|
108
|
+
});
|
|
104
109
|
if (props.guildId && guildId) interaction.guildId = guildId;
|
|
105
110
|
if (props.user && user) interaction.user = user;
|
|
106
|
-
if (props.appPermissions && payload.app_permissions) interaction.appPermissions = bot.transformers.snowflake(payload.app_permissions);
|
|
107
|
-
if (props.message && payload.message) interaction.message = bot.transformers.message(bot, payload.message);
|
|
108
|
-
if (props.channel && payload.channel) interaction.channel = bot.transformers.channel(bot, {
|
|
109
|
-
channel: payload.channel,
|
|
111
|
+
if (props.appPermissions && payload.interaction.app_permissions) interaction.appPermissions = bot.transformers.snowflake(payload.interaction.app_permissions);
|
|
112
|
+
if (props.message && payload.interaction.message) interaction.message = bot.transformers.message(bot, payload.interaction.message);
|
|
113
|
+
if (props.channel && payload.interaction.channel) interaction.channel = bot.transformers.channel(bot, {
|
|
114
|
+
channel: payload.interaction.channel,
|
|
110
115
|
guildId
|
|
111
116
|
});
|
|
112
|
-
if (props.channelId && payload.channel_id) interaction.channelId = bot.transformers.snowflake(payload.channel_id);
|
|
113
|
-
if (props.member && guildId && payload.member) interaction.member = bot.transformers.member(bot, payload.member, guildId, user.id);
|
|
114
|
-
if (props.authorizingIntegrationOwners && payload.authorizing_integration_owners) {
|
|
117
|
+
if (props.channelId && payload.interaction.channel_id) interaction.channelId = bot.transformers.snowflake(payload.interaction.channel_id);
|
|
118
|
+
if (props.member && guildId && payload.interaction.member) interaction.member = bot.transformers.member(bot, payload.interaction.member, guildId, user.id);
|
|
119
|
+
if (props.authorizingIntegrationOwners && payload.interaction.authorizing_integration_owners) {
|
|
115
120
|
interaction.authorizingIntegrationOwners = {};
|
|
116
|
-
if (payload.authorizing_integration_owners['0']) interaction.authorizingIntegrationOwners[_index.DiscordApplicationIntegrationType.GuildInstall] = bot.transformers.snowflake(payload.authorizing_integration_owners['0']);
|
|
117
|
-
if (payload.authorizing_integration_owners['1']) interaction.authorizingIntegrationOwners[_index.DiscordApplicationIntegrationType.UserInstall] = bot.transformers.snowflake(payload.authorizing_integration_owners['1']);
|
|
121
|
+
if (payload.interaction.authorizing_integration_owners['0']) interaction.authorizingIntegrationOwners[_index.DiscordApplicationIntegrationType.GuildInstall] = bot.transformers.snowflake(payload.interaction.authorizing_integration_owners['0']);
|
|
122
|
+
if (payload.interaction.authorizing_integration_owners['1']) interaction.authorizingIntegrationOwners[_index.DiscordApplicationIntegrationType.UserInstall] = bot.transformers.snowflake(payload.interaction.authorizing_integration_owners['1']);
|
|
118
123
|
}
|
|
119
|
-
if (props.context && payload.context) interaction.context = payload.context;
|
|
120
|
-
if (props.data && payload.data) {
|
|
124
|
+
if (props.context && payload.interaction.context) interaction.context = payload.interaction.context;
|
|
125
|
+
if (props.data && payload.interaction.data) {
|
|
121
126
|
interaction.data = {
|
|
122
|
-
type: payload.data.type,
|
|
123
|
-
componentType: payload.data.component_type,
|
|
124
|
-
customId: payload.data.custom_id,
|
|
125
|
-
components: payload.data.components?.map((component)=>bot.transformers.component(bot, component)),
|
|
126
|
-
values: payload.data.values,
|
|
127
|
-
id: payload.data.id ? bot.transformers.snowflake(payload.data.id) : undefined,
|
|
128
|
-
name: payload.data.name,
|
|
129
|
-
resolved: payload.data.resolved ? transformInteractionDataResolved(bot, payload.data.resolved, guildId) : undefined,
|
|
130
|
-
options: payload.data.options?.map((opt)=>bot.transformers.interactionDataOptions(bot, opt)),
|
|
131
|
-
targetId: payload.data.target_id ? bot.transformers.snowflake(payload.data.target_id) : undefined
|
|
127
|
+
type: payload.interaction.data.type,
|
|
128
|
+
componentType: payload.interaction.data.component_type,
|
|
129
|
+
customId: payload.interaction.data.custom_id,
|
|
130
|
+
components: payload.interaction.data.components?.map((component)=>bot.transformers.component(bot, component)),
|
|
131
|
+
values: payload.interaction.data.values,
|
|
132
|
+
id: payload.interaction.data.id ? bot.transformers.snowflake(payload.interaction.data.id) : undefined,
|
|
133
|
+
name: payload.interaction.data.name,
|
|
134
|
+
resolved: payload.interaction.data.resolved ? transformInteractionDataResolved(bot, payload.interaction.data.resolved, guildId) : undefined,
|
|
135
|
+
options: payload.interaction.data.options?.map((opt)=>bot.transformers.interactionDataOptions(bot, opt)),
|
|
136
|
+
targetId: payload.interaction.data.target_id ? bot.transformers.snowflake(payload.interaction.data.target_id) : undefined
|
|
132
137
|
};
|
|
133
138
|
}
|
|
134
139
|
return bot.transformers.customizers.interaction(bot, payload, interaction);
|
|
@@ -211,4 +216,4 @@ function transformInteractionDataResolved(bot, resolved, guildId) {
|
|
|
211
216
|
return transformed;
|
|
212
217
|
}
|
|
213
218
|
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW50ZXJhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLFxuICBJbnRlcmFjdGlvblR5cGVzLFxuICBNZXNzYWdlRmxhZ3MsXG4gIHR5cGUgQXBwbGljYXRpb25Db21tYW5kT3B0aW9uVHlwZXMsXG4gIHR5cGUgQXBwbGljYXRpb25Db21tYW5kVHlwZXMsXG4gIHR5cGUgQmlnU3RyaW5nLFxuICB0eXBlIENoYW5uZWxUeXBlcyxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb24sXG4gIHR5cGUgRGlzY29yZEludGVyYWN0aW9uRGF0YU9wdGlvbixcbiAgdHlwZSBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSxcbiAgdHlwZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMsXG59IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJ0BkaXNjb3JkZW5vL3V0aWxzJ1xuaW1wb3J0IHtcbiAgRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLFxuICB0eXBlIEJvdCxcbiAgdHlwZSBDaGFubmVsLFxuICB0eXBlIENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkQ2hhbm5lbCxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25Db250ZXh0VHlwZSxcbn0gZnJvbSAnLi4vaW5kZXguanMnXG5pbXBvcnQgdHlwZSB7IERpc2NvcmRJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCB9IGZyb20gJy4uL3R5cGluZ3MuanMnXG5pbXBvcnQgdHlwZSB7IEF0dGFjaG1lbnQgfSBmcm9tICcuL2F0dGFjaG1lbnQuanMnXG5pbXBvcnQgdHlwZSB7IE1lbWJlciB9IGZyb20gJy4vbWVtYmVyLmpzJ1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlIH0gZnJvbSAnLi9tZXNzYWdlLmpzJ1xuaW1wb3J0IHR5cGUgeyBSb2xlIH0gZnJvbSAnLi9yb2xlLmpzJ1xuaW1wb3J0IHR5cGUgeyBVc2VyIH0gZnJvbSAnLi91c2VyLmpzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyYWN0aW9uIGV4dGVuZHMgQmFzZUludGVyYWN0aW9uIHtcbiAgLyoqIFRoZSBib3Qgb2JqZWN0ICovXG4gIGJvdDogQm90XG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGlzIGludGVyYWN0aW9uIGhhcyBiZWVuIHJlc3BvbmRlZCB0by4gKi9cbiAgYWNrbm93bGVkZ2VkOiBib29sZWFuXG4gIC8qKiBJZCBvZiB0aGUgaW50ZXJhY3Rpb24gKi9cbiAgaWQ6IGJpZ2ludFxuICAvKiogSWQgb2YgdGhlIGFwcGxpY2F0aW9uIHRoaXMgaW50ZXJhY3Rpb24gaXMgZm9yICovXG4gIGFwcGxpY2F0aW9uSWQ6IGJpZ2ludFxuICAvKiogVGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gKi9cbiAgdHlwZTogSW50ZXJhY3Rpb25UeXBlc1xuICAvKiogVGhlIGd1aWxkIGl0IHdhcyBzZW50IGZyb20gKi9cbiAgZ3VpbGRJZD86IGJpZ2ludFxuICAvKiogVGhlIGNoYW5uZWwgaXQgd2FzIHNlbnQgZnJvbSAqL1xuICBjaGFubmVsOiBQYXJ0aWFsPENoYW5uZWw+XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgY2hhbm5lbCBpdCB3YXMgc2VudCBmcm9tXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGJlZ2luIHVzaW5nIHRoaXMgY2hhbm5lbCBmaWVsZCB0byBpZGVudGlmeSB0aGUgc291cmNlIGNoYW5uZWwgb2YgdGhlIGludGVyYWN0aW9uIGFzIHRoZXkgbWF5IGRlcHJlY2F0ZSB0aGUgZXhpc3RpbmcgY2hhbm5lbF9pZCBmaWVsZCBpbiB0aGUgZnV0dXJlLlxuICAgKi9cbiAgY2hhbm5lbElkPzogYmlnaW50XG4gIC8qKiBHdWlsZCBtZW1iZXIgZGF0YSBmb3IgdGhlIGludm9raW5nIHVzZXIsIGluY2x1ZGluZyBwZXJtaXNzaW9ucyAqL1xuICBtZW1iZXI/OiBNZW1iZXJcbiAgLyoqIFVzZXIgb2JqZWN0IGZvciB0aGUgaW52b2tpbmcgdXNlciwgaWYgaW52b2tlZCBpbiBhIERNICovXG4gIHVzZXI6IFVzZXJcbiAgLyoqIEEgY29udGludWF0aW9uIHRva2VuIGZvciByZXNwb25kaW5nIHRvIHRoZSBpbnRlcmFjdGlvbiAqL1xuICB0b2tlbjogc3RyaW5nXG4gIC8qKiBSZWFkLW9ubHkgcHJvcGVydHksIGFsd2F5cyBgMWAgKi9cbiAgdmVyc2lvbjogMVxuICAvKiogRm9yIHRoZSBtZXNzYWdlIHRoZSBidXR0b24gd2FzIGF0dGFjaGVkIHRvICovXG4gIG1lc3NhZ2U/OiBNZXNzYWdlXG4gIC8qKiB0aGUgY29tbWFuZCBkYXRhIHBheWxvYWQgKi9cbiAgZGF0YT86IHtcbiAgICB0eXBlPzogQXBwbGljYXRpb25Db21tYW5kVHlwZXNcbiAgICBjb21wb25lbnRUeXBlPzogTWVzc2FnZUNvbXBvbmVudFR5cGVzXG4gICAgY3VzdG9tSWQ/OiBzdHJpbmdcbiAgICBjb21wb25lbnRzPzogQ29tcG9uZW50W11cbiAgICB2YWx1ZXM/OiBzdHJpbmdbXVxuICAgIG5hbWU6IHN0cmluZ1xuICAgIHJlc29sdmVkPzogSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWRcbiAgICBvcHRpb25zPzogSW50ZXJhY3Rpb25EYXRhT3B0aW9uW11cbiAgICBpZD86IGJpZ2ludFxuICAgIHRhcmdldElkPzogYmlnaW50XG4gICAgLy8gZ3VpbGRJZD86IGJpZ2ludFxuICB9XG4gIC8qKiBUaGUgc2VsZWN0ZWQgbGFuZ3VhZ2Ugb2YgdGhlIGludm9raW5nIHVzZXIgKi9cbiAgbG9jYWxlPzogc3RyaW5nXG4gIC8qKiBUaGUgZ3VpbGQncyBwcmVmZXJyZWQgbG9jYWxlLCBpZiBpbnZva2VkIGluIGEgZ3VpbGQgKi9cbiAgZ3VpbGRMb2NhbGU/OiBzdHJpbmdcbiAgLyoqIFRoZSBjb21wdXRlZCBwZXJtaXNzaW9ucyBmb3IgYSBib3Qgb3IgYXBwIGluIHRoZSBjb250ZXh0IG9mIGEgc3BlY2lmaWMgaW50ZXJhY3Rpb24gKGluY2x1ZGluZyBjaGFubmVsIG92ZXJ3cml0ZXMpICovXG4gIGFwcFBlcm1pc3Npb25zOiBiaWdpbnRcbiAgLyoqIE1hcHBpbmcgb2YgaW5zdGFsbGF0aW9uIGNvbnRleHRzIHRoYXQgdGhlIGludGVyYWN0aW9uIHdhcyBhdXRob3JpemVkIGZvciB0byByZWxhdGVkIHVzZXIgb3IgZ3VpbGQgSURzLiAqL1xuICBhdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzOiBQYXJ0aWFsPFJlY29yZDxEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUsIGJpZ2ludD4+XG4gIC8qKiBDb250ZXh0IHdoZXJlIHRoZSBpbnRlcmFjdGlvbiB3YXMgdHJpZ2dlcmVkIGZyb20gKi9cbiAgY29udGV4dD86IERpc2NvcmRJbnRlcmFjdGlvbkNvbnRleHRUeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUludGVyYWN0aW9uIHtcbiAgLyoqXG4gICAqIFNlbmRzIGEgcmVzcG9uc2UgdG8gYW4gaW50ZXJhY3Rpb24uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgd2lsbCBzZW5kIGEge0BsaW5rIEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5DaGFubmVsTWVzc2FnZVdpdGhTb3VyY2V9LCB7QGxpbmsgSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZVJlc3VsdH0gb3Ige0BsaW5rIEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5Nb2RhbH0gcmVzcG9uc2UgYmFzZWQgb24gdGhlIHR5cGUgb2YgdGhlIGludGVyYWN0aW9uIHlvdSBhcmUgcmVzcG9uZGluZyB0by5cbiAgICpcbiAgICogSWYgdGhlIGludGVyYWN0aW9uIGhhcyBiZWVuIGFscmVhZHkgYWNrbm93bGVkZ2VkLCBpbmRpY2F0ZWQgYnkge0BsaW5rIEludGVyYWN0aW9uLmFja25vd2xlZGdlZH0sIGl0IHdpbGwgc2VuZCBhIGZvbGxvd3VwIG1lc3NhZ2UgaW5zdGVhZC5cbiAgICpcbiAgICogVXNlcyBgaW50ZXJhY3Rpb24udHlwZWAsIGBpbnRlcmFjdGlvbi50b2tlbmAgYW5kIGBpbnRlcmFjdGlvbi5pZGAsIG1pc3Npbmcgb25lIG9mIHRoZXNlIGluIHRoZSBkZXNpcmVkIHByb3ByaWV0aWVzIG1heSBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuICAgKi9cbiAgcmVzcG9uZDogKHJlc3BvbnNlOiBzdHJpbmcgfCBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSwgb3B0aW9ucz86IHsgaXNQcml2YXRlPzogYm9vbGVhbiB9KSA9PiBQcm9taXNlPE1lc3NhZ2UgfCB2b2lkPlxuICAvKipcbiAgICogRWRpdCB0aGUgb3JpZ2luYWwgcmVzcG9uc2Ugb2YgYW4gaW50ZXJhY3Rpb24gb3IgYSBmb2xsb3d1cCBpZiB0aGUgbWVzc2FnZSBpZCBpcyBwcm92aWRlZC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyB3aWxsIGVkaXQgdGhlIG9yaWdpbmFsIGludGVyYWN0aW9uIHJlc3BvbnNlIG9yLCBpZiB0aGUgaW50ZXJhY3Rpb24gaGFzIG5vdCB5ZXQgYmVlbiBhY2tub3dsZWRnZWQgYW5kIHRoZSB0eXBlIG9mIHRoZSBpbnRlcmFjdGlvbiBpcyB7QGxpbmsgSW50ZXJhY3Rpb25UeXBlcy5NZXNzYWdlQ29tcG9uZW50fSBpdCB3aWxsIGluc3RlYWQgc2VuZCBhIHtAbGluayBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuVXBkYXRlTWVzc2FnZX0gcmVzcG9uc2UgaW5zdGVhZC5cbiAgICpcbiAgICogVXNlcyBgaW50ZXJhY3Rpb24udHlwZWAsIGBpbnRlcmFjdGlvbi50b2tlbmAgYW5kIGBpbnRlcmFjdGlvbi5pZGAsIG1pc3Npbmcgb25lIG9mIHRoZXNlIGluIHRoZSBkZXNpcmVkIHByb3ByaWV0aWVzIG1heSBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuICAgKi9cbiAgZWRpdDogKHJlc3BvbnNlOiBzdHJpbmcgfCBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSwgbWVzc2FnZUlkPzogQmlnU3RyaW5nKSA9PiBQcm9taXNlPE1lc3NhZ2UgfCB2b2lkPlxuICAvKipcbiAgICogRGVmZXIgdGhlIGludGVyYWN0aW9uIGZvciB1cGRhdGluZyB0aGUgcmVmZXJlbmNlZCBtZXNzYWdlIGF0IGEgbGF0ZXIgdGltZSB3aXRoIHtAbGluayBlZGl0fS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyB3aWxsIHNlbmQgYSB7QGxpbmsgSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkRlZmVycmVkVXBkYXRlTWVzc2FnZX0gcmVzcG9uc2UuXG4gICAqXG4gICAqIFVzZXMgYGludGVyYWN0aW9uLnR5cGVgLCBgaW50ZXJhY3Rpb24udG9rZW5gIGFuZCBgaW50ZXJhY3Rpb24uaWRgLCBtaXNzaW5nIG9uZSBvZiB0aGVzZSBpbiB0aGUgZGVzaXJlZCBwcm9wcmlldGllcyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvci5cbiAgICovXG4gIGRlZmVyRWRpdDogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVmZXIgdGhlIGludGVyYWN0aW9uIGZvciB1cGRhdGluZyB0aGUgcmVzcG9uc2UgYXQgYSBsYXRlciB0aW1lIHdpdGgge0BsaW5rIGVkaXR9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIHdpbGwgc2VuZCBhIHtAbGluayBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuRGVmZXJyZWRDaGFubmVsTWVzc2FnZVdpdGhTb3VyY2V9IHJlc3BvbnNlLlxuICAgKlxuICAgKiBVc2VzIGBpbnRlcmFjdGlvbi50eXBlYCwgYGludGVyYWN0aW9uLnRva2VuYCBhbmQgYGludGVyYWN0aW9uLmlkYCwgbWlzc2luZyBvbmUgb2YgdGhlc2UgaW4gdGhlIGRlc2lyZWQgcHJvcHJpZXRpZXMgbWF5IGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG4gICAqL1xuICBkZWZlcjogKGlzUHJpdmF0ZT86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZSB0aGUgb3JpZ2luYWwgaW50ZXJhY3Rpb24gcmVzcG9uc2Ugb3IgYSBmb2xsb3d1cCBpZiB0aGUgbWVzc2FnZSBpZCBpcyBwcm92aWRlZC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVXNlcyBgaW50ZXJhY3Rpb24udHlwZWAgYW5kIGBpbnRlcmFjdGlvbi50b2tlbmAsIG1pc3Npbmcgb25lIG9mIHRoZXNlIGluIHRoZSBkZXNpcmVkIHByb3ByaWV0aWVzIG1heSBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuICAgKi9cbiAgZGVsZXRlOiAobWVzc2FnZUlkPzogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmNvbnN0IGJhc2VJbnRlcmFjdGlvbjogUGFydGlhbDxJbnRlcmFjdGlvbj4gJiBCYXNlSW50ZXJhY3Rpb24gPSB7XG4gIGFzeW5jIHJlc3BvbmQocmVzcG9uc2UsIG9wdGlvbnMpIHtcbiAgICBsZXQgdHlwZSA9IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5DaGFubmVsTWVzc2FnZVdpdGhTb3VyY2VcblxuICAgIC8vIElmIHVzZXIgcHJvdmlkZXMgYSBzdHJpbmcsIGNoYW5nZSBpdCB0byBhIHJlc3BvbnNlIG9iamVjdFxuICAgIGlmICh0eXBlb2YgcmVzcG9uc2UgPT09ICdzdHJpbmcnKSByZXNwb25zZSA9IHsgY29udGVudDogcmVzcG9uc2UgfVxuXG4gICAgLy8gSWYgdXNlciBwcm92aWRlcyBhbiBvYmplY3QsIGRldGVybWluZSBpZiBpdCBzaG91bGQgYmUgYW4gYXV0b2NvbXBsZXRlIG9yIGEgbW9kYWwgcmVzcG9uc2VcbiAgICBpZiAocmVzcG9uc2UudGl0bGUpIHR5cGUgPSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuTW9kYWxcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdHlwZSA9IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGVSZXN1bHRcbiAgICBpZiAodHlwZSA9PT0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkNoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZSAmJiBvcHRpb25zPy5pc1ByaXZhdGUpIHJlc3BvbnNlLmZsYWdzID0gTWVzc2FnZUZsYWdzLkVwaGVtZXJhbFxuXG4gICAgLy8gU2luY2UgdGhpcyBoYXMgYWxyZWFkeSBiZWVuIGdpdmVuIGEgcmVzcG9uc2UsIGFueSBmdXJ0aGVyIHJlc3BvbnNlcyBtdXN0IGJlIGZvbGxvd3Vwcy5cbiAgICBpZiAodGhpcy5hY2tub3dsZWRnZWQpIHJldHVybiBhd2FpdCB0aGlzLmJvdCEuaGVscGVycy5zZW5kRm9sbG93dXBNZXNzYWdlKHRoaXMudG9rZW4hLCByZXNwb25zZSlcblxuICAgIC8vIE1vZGFscyBjYW5ub3QgYmUgY2hhaW5lZFxuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuTW9kYWxTdWJtaXQgJiYgdHlwZSA9PT0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLk1vZGFsKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcmVzcG9uZCB0byBhIG1vZGFsIGludGVyYWN0aW9uIHdpdGggYW5vdGhlciBtb2RhbC4nKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90IS5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKHRoaXMuaWQhLCB0aGlzLnRva2VuISwgeyB0eXBlLCBkYXRhOiByZXNwb25zZSB9KVxuICB9LFxuICBhc3luYyBlZGl0KHJlc3BvbnNlLCBtZXNzYWdlSWQpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZWRpdCBhbiBhdXRvY29tcGxldGUgaW50ZXJhY3Rpb24uJylcblxuICAgIC8vIElmIHVzZXIgcHJvdmlkZXMgYSBzdHJpbmcsIGNoYW5nZSBpdCB0byBhIHJlc3BvbnNlIG9iamVjdFxuICAgIGlmICh0eXBlb2YgcmVzcG9uc2UgPT09ICdzdHJpbmcnKSByZXNwb25zZSA9IHsgY29udGVudDogcmVzcG9uc2UgfVxuXG4gICAgaWYgKG1lc3NhZ2VJZCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90Py5oZWxwZXJzLmVkaXRGb2xsb3d1cE1lc3NhZ2UodGhpcy50b2tlbiEsIG1lc3NhZ2VJZCwgcmVzcG9uc2UpXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFja25vd2xlZGdlZCkge1xuICAgICAgaWYgKHRoaXMudHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlcy5NZXNzYWdlQ29tcG9uZW50KVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIGludGVyYWN0aW9uIGhhcyBub3QgYmVlbiByZXNwb25kZWQgdG8geWV0IGFuZCB0aGlzIGlzbid0IGEgTWVzc2FnZUNvbXBvbmVudCBpbnRlcmFjdGlvbi5cIilcblxuICAgICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3QhLmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy5pZCEsIHRoaXMudG9rZW4hLCB7IHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5VcGRhdGVNZXNzYWdlLCBkYXRhOiByZXNwb25zZSB9KVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdCEuaGVscGVycy5lZGl0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlKHRoaXMudG9rZW4hLCByZXNwb25zZSlcbiAgfSxcbiAgYXN5bmMgZGVmZXJFZGl0KCkge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBlZGl0IGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbi4nKVxuICAgIGlmICh0aGlzLmFja25vd2xlZGdlZCkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVmZXIgYW4gYWxyZWFkeSByZXNwb25kZWQgaW50ZXJhY3Rpb24uJylcblxuICAgIGlmICh0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTWVzc2FnZUNvbXBvbmVudClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBkZWZlciB0byB0aGVuIGVkaXQgYW4gaW50ZXJhY3Rpb24gdGhhdCBpc24ndCBhIE1lc3NhZ2VDb21wb25lbnQgaW50ZXJhY3Rpb24uXCIpXG5cbiAgICB0aGlzLmFja25vd2xlZGdlZCA9IHRydWVcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3QhLmhlbHBlcnMuc2VuZEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy5pZCEsIHRoaXMudG9rZW4hLCB7IHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5EZWZlcnJlZFVwZGF0ZU1lc3NhZ2UgfSlcbiAgfSxcbiAgYXN5bmMgZGVmZXIoaXNQcml2YXRlKSB7XG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VkKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWZlciBhbiBhbHJlYWR5IHJlc3BvbmRlZCBpbnRlcmFjdGlvbi4nKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90IS5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKHRoaXMuaWQhLCB0aGlzLnRva2VuISwge1xuICAgICAgdHlwZTogSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkRlZmVycmVkQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlLFxuICAgICAgZGF0YToge1xuICAgICAgICBmbGFnczogaXNQcml2YXRlID8gTWVzc2FnZUZsYWdzLkVwaGVtZXJhbCA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgfSlcbiAgfSxcbiAgYXN5bmMgZGVsZXRlKG1lc3NhZ2VJZCkge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IEludGVyYWN0aW9uVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWxldGUgYW4gYXV0b2NvbXBsZXRlIGludGVyYWN0aW9uJylcblxuICAgIGlmIChtZXNzYWdlSWQpIHJldHVybiBhd2FpdCB0aGlzLmJvdD8uaGVscGVycy5kZWxldGVGb2xsb3d1cE1lc3NhZ2UodGhpcy50b2tlbiEsIG1lc3NhZ2VJZClcbiAgICBlbHNlIHJldHVybiBhd2FpdCB0aGlzLmJvdD8uaGVscGVycy5kZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UodGhpcy50b2tlbiEpXG4gIH0sXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbihib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZEludGVyYWN0aW9uKTogSW50ZXJhY3Rpb24ge1xuICBjb25zdCBndWlsZElkID0gcGF5bG9hZC5ndWlsZF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZ3VpbGRfaWQpIDogdW5kZWZpbmVkXG4gIGNvbnN0IHVzZXIgPSBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCBwYXlsb2FkLm1lbWJlcj8udXNlciA/PyBwYXlsb2FkLnVzZXIhKVxuXG4gIGNvbnN0IGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbiA9IE9iamVjdC5jcmVhdGUoYmFzZUludGVyYWN0aW9uKVxuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuaW50ZXJhY3Rpb25cbiAgaW50ZXJhY3Rpb24uYm90ID0gYm90XG4gIGludGVyYWN0aW9uLmFja25vd2xlZGdlZCA9IGZhbHNlXG5cbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGludGVyYWN0aW9uLmlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pZClcbiAgaWYgKHByb3BzLmFwcGxpY2F0aW9uSWQgJiYgcGF5bG9hZC5hcHBsaWNhdGlvbl9pZCkgaW50ZXJhY3Rpb24uYXBwbGljYXRpb25JZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuYXBwbGljYXRpb25faWQpXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgaW50ZXJhY3Rpb24udHlwZSA9IHBheWxvYWQudHlwZVxuICBpZiAocHJvcHMudG9rZW4gJiYgcGF5bG9hZC50b2tlbikgaW50ZXJhY3Rpb24udG9rZW4gPSBwYXlsb2FkLnRva2VuXG4gIGlmIChwcm9wcy52ZXJzaW9uICYmIHBheWxvYWQudmVyc2lvbikgaW50ZXJhY3Rpb24udmVyc2lvbiA9IHBheWxvYWQudmVyc2lvblxuICBpZiAocHJvcHMubG9jYWxlICYmIHBheWxvYWQubG9jYWxlKSBpbnRlcmFjdGlvbi5sb2NhbGUgPSBwYXlsb2FkLmxvY2FsZVxuICBpZiAocHJvcHMuZ3VpbGRMb2NhbGUgJiYgcGF5bG9hZC5ndWlsZF9sb2NhbGUpIGludGVyYWN0aW9uLmd1aWxkTG9jYWxlID0gcGF5bG9hZC5ndWlsZF9sb2NhbGVcbiAgaWYgKHByb3BzLmd1aWxkSWQgJiYgZ3VpbGRJZCkgaW50ZXJhY3Rpb24uZ3VpbGRJZCA9IGd1aWxkSWRcbiAgaWYgKHByb3BzLnVzZXIgJiYgdXNlcikgaW50ZXJhY3Rpb24udXNlciA9IHVzZXJcbiAgaWYgKHByb3BzLmFwcFBlcm1pc3Npb25zICYmIHBheWxvYWQuYXBwX3Blcm1pc3Npb25zKSBpbnRlcmFjdGlvbi5hcHBQZXJtaXNzaW9ucyA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuYXBwX3Blcm1pc3Npb25zKVxuICBpZiAocHJvcHMubWVzc2FnZSAmJiBwYXlsb2FkLm1lc3NhZ2UpIGludGVyYWN0aW9uLm1lc3NhZ2UgPSBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCBwYXlsb2FkLm1lc3NhZ2UpXG4gIGlmIChwcm9wcy5jaGFubmVsICYmIHBheWxvYWQuY2hhbm5lbCkgaW50ZXJhY3Rpb24uY2hhbm5lbCA9IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHsgY2hhbm5lbDogcGF5bG9hZC5jaGFubmVsIGFzIERpc2NvcmRDaGFubmVsLCBndWlsZElkIH0pXG4gIGlmIChwcm9wcy5jaGFubmVsSWQgJiYgcGF5bG9hZC5jaGFubmVsX2lkKSBpbnRlcmFjdGlvbi5jaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmNoYW5uZWxfaWQpXG4gIGlmIChwcm9wcy5tZW1iZXIgJiYgZ3VpbGRJZCAmJiBwYXlsb2FkLm1lbWJlcikgaW50ZXJhY3Rpb24ubWVtYmVyID0gYm90LnRyYW5zZm9ybWVycy5tZW1iZXIoYm90LCBwYXlsb2FkLm1lbWJlciwgZ3VpbGRJZCwgdXNlci5pZClcbiAgaWYgKHByb3BzLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnMgJiYgcGF5bG9hZC5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnMpIHtcbiAgICBpbnRlcmFjdGlvbi5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzID0ge31cblxuICAgIGlmIChwYXlsb2FkLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVyc1snMCddKVxuICAgICAgaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVyc1tEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUuR3VpbGRJbnN0YWxsXSA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKFxuICAgICAgICBwYXlsb2FkLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVyc1snMCddLFxuICAgICAgKVxuICAgIGlmIChwYXlsb2FkLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVyc1snMSddKVxuICAgICAgaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVyc1tEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUuVXNlckluc3RhbGxdID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoXG4gICAgICAgIHBheWxvYWQuYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycxJ10sXG4gICAgICApXG4gIH1cbiAgaWYgKHByb3BzLmNvbnRleHQgJiYgcGF5bG9hZC5jb250ZXh0KSBpbnRlcmFjdGlvbi5jb250ZXh0ID0gcGF5bG9hZC5jb250ZXh0XG4gIGlmIChwcm9wcy5kYXRhICYmIHBheWxvYWQuZGF0YSkge1xuICAgIGludGVyYWN0aW9uLmRhdGEgPSB7XG4gICAgICB0eXBlOiBwYXlsb2FkLmRhdGEudHlwZSxcbiAgICAgIGNvbXBvbmVudFR5cGU6IHBheWxvYWQuZGF0YS5jb21wb25lbnRfdHlwZSxcbiAgICAgIGN1c3RvbUlkOiBwYXlsb2FkLmRhdGEuY3VzdG9tX2lkLFxuICAgICAgY29tcG9uZW50czogcGF5bG9hZC5kYXRhLmNvbXBvbmVudHM/Lm1hcCgoY29tcG9uZW50KSA9PiBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIGNvbXBvbmVudCkpLFxuICAgICAgdmFsdWVzOiBwYXlsb2FkLmRhdGEudmFsdWVzLFxuICAgICAgaWQ6IHBheWxvYWQuZGF0YS5pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZGF0YS5pZCkgOiB1bmRlZmluZWQsXG4gICAgICBuYW1lOiBwYXlsb2FkLmRhdGEubmFtZSxcbiAgICAgIHJlc29sdmVkOiBwYXlsb2FkLmRhdGEucmVzb2x2ZWQgPyB0cmFuc2Zvcm1JbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHBheWxvYWQuZGF0YS5yZXNvbHZlZCwgZ3VpbGRJZCkgOiB1bmRlZmluZWQsXG4gICAgICBvcHRpb25zOiBwYXlsb2FkLmRhdGEub3B0aW9ucz8ubWFwKChvcHQpID0+IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25EYXRhT3B0aW9ucyhib3QsIG9wdCkpLFxuICAgICAgdGFyZ2V0SWQ6IHBheWxvYWQuZGF0YS50YXJnZXRfaWQgPyBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmRhdGEudGFyZ2V0X2lkKSA6IHVuZGVmaW5lZCxcbiAgICAgIC8vIGd1aWxkSWQ6IHBheWxvYWQuZGF0YS5ndWlsZF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuZGF0YS5ndWlsZF9pZCkgOiB1bmRlZmluZWQsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb24oYm90LCBwYXlsb2FkLCBpbnRlcmFjdGlvbilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUludGVyYWN0aW9uRGF0YU9wdGlvbihib3Q6IEJvdCwgb3B0aW9uOiBEaXNjb3JkSW50ZXJhY3Rpb25EYXRhT3B0aW9uKTogSW50ZXJhY3Rpb25EYXRhT3B0aW9uIHtcbiAgY29uc3Qgb3B0ID0ge1xuICAgIG5hbWU6IG9wdGlvbi5uYW1lLFxuICAgIHR5cGU6IG9wdGlvbi50eXBlLFxuICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgb3B0aW9uczogb3B0aW9uLm9wdGlvbnMsXG4gICAgZm9jdXNlZDogb3B0aW9uLmZvY3VzZWQsXG4gIH0gYXMgSW50ZXJhY3Rpb25EYXRhT3B0aW9uXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMuaW50ZXJhY3Rpb25EYXRhT3B0aW9ucyhib3QsIG9wdGlvbiwgb3B0KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoYm90OiBCb3QsIHJlc29sdmVkOiBEaXNjb3JkSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQsIGd1aWxkSWQ/OiBiaWdpbnQpOiBJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCB7XG4gIGNvbnN0IHRyYW5zZm9ybWVkOiBJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCA9IHt9XG5cbiAgaWYgKHJlc29sdmVkLm1lc3NhZ2VzKSB7XG4gICAgdHJhbnNmb3JtZWQubWVzc2FnZXMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc29sdmVkLm1lc3NhZ2VzKS5tYXAoKFtpZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2U6IE1lc3NhZ2UgPSBib3QudHJhbnNmb3JtZXJzLm1lc3NhZ2UoYm90LCB2YWx1ZSlcbiAgICAgICAgcmV0dXJuIFttZXNzYWdlLmlkLCBtZXNzYWdlXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKHJlc29sdmVkLnVzZXJzKSB7XG4gICAgdHJhbnNmb3JtZWQudXNlcnMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc29sdmVkLnVzZXJzKS5tYXAoKFtpZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSBib3QudHJhbnNmb3JtZXJzLnVzZXIoYm90LCB2YWx1ZSlcbiAgICAgICAgcmV0dXJuIFt1c2VyLmlkLCB1c2VyXVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgaWYgKGd1aWxkSWQgJiYgcmVzb2x2ZWQubWVtYmVycykge1xuICAgIHRyYW5zZm9ybWVkLm1lbWJlcnMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc29sdmVkLm1lbWJlcnMpLm1hcCgoW2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgbWVtYmVyOiBNZW1iZXIgPSBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHZhbHVlLCBndWlsZElkLCBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShpZCkpXG4gICAgICAgIHJldHVybiBbbWVtYmVyLmlkLCBtZW1iZXJdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAoZ3VpbGRJZCAmJiByZXNvbHZlZC5yb2xlcykge1xuICAgIHRyYW5zZm9ybWVkLnJvbGVzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhyZXNvbHZlZC5yb2xlcykubWFwKChbaWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICBjb25zdCByb2xlID0gYm90LnRyYW5zZm9ybWVycy5yb2xlKGJvdCwgeyByb2xlOiB2YWx1ZSwgZ3VpbGRJZCB9KVxuICAgICAgICByZXR1cm4gW3JvbGUuaWQsIHJvbGVdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAocmVzb2x2ZWQuY2hhbm5lbHMpIHtcbiAgICB0cmFuc2Zvcm1lZC5jaGFubmVscyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocmVzb2x2ZWQuY2hhbm5lbHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2Uoa2V5KVxuICAgICAgICBjb25zdCBjaGFubmVsID0gdmFsdWUgYXMge1xuICAgICAgICAgIGlkOiBzdHJpbmdcbiAgICAgICAgICBuYW1lOiBzdHJpbmdcbiAgICAgICAgICB0eXBlOiBDaGFubmVsVHlwZXNcbiAgICAgICAgICBwZXJtaXNzaW9uczogc3RyaW5nXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIG5hbWU6IGNoYW5uZWwubmFtZSxcbiAgICAgICAgICAgIHR5cGU6IGNoYW5uZWwudHlwZSxcbiAgICAgICAgICAgIHBlcm1pc3Npb25zOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShjaGFubmVsLnBlcm1pc3Npb25zKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAocmVzb2x2ZWQuYXR0YWNobWVudHMpIHtcbiAgICB0cmFuc2Zvcm1lZC5hdHRhY2htZW50cyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocmVzb2x2ZWQuYXR0YWNobWVudHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2Uoa2V5KVxuICAgICAgICByZXR1cm4gW2lkLCBib3QudHJhbnNmb3JtZXJzLmF0dGFjaG1lbnQoYm90LCB2YWx1ZSldXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICByZXR1cm4gdHJhbnNmb3JtZWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCB7XG4gIG1lc3NhZ2VzPzogQ29sbGVjdGlvbjxiaWdpbnQsIE1lc3NhZ2U+XG4gIHVzZXJzPzogQ29sbGVjdGlvbjxiaWdpbnQsIFVzZXI+XG4gIG1lbWJlcnM/OiBDb2xsZWN0aW9uPGJpZ2ludCwgTWVtYmVyPlxuICByb2xlcz86IENvbGxlY3Rpb248YmlnaW50LCBSb2xlPlxuICBjaGFubmVscz86IENvbGxlY3Rpb248YmlnaW50LCB7IGlkOiBiaWdpbnQ7IG5hbWU6IHN0cmluZzsgdHlwZTogQ2hhbm5lbFR5cGVzOyBwZXJtaXNzaW9uczogYmlnaW50IH0+XG4gIGF0dGFjaG1lbnRzPzogQ29sbGVjdGlvbjxiaWdpbnQsIEF0dGFjaG1lbnQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJhY3Rpb25EYXRhT3B0aW9uIHtcbiAgbmFtZTogc3RyaW5nXG4gIHR5cGU6IEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhblxuICBvcHRpb25zPzogSW50ZXJhY3Rpb25EYXRhT3B0aW9uW11cbiAgZm9jdXNlZD86IGJvb2xlYW5cbn1cbiJdLCJuYW1lcyI6WyJ0cmFuc2Zvcm1JbnRlcmFjdGlvbiIsInRyYW5zZm9ybUludGVyYWN0aW9uRGF0YU9wdGlvbiIsInRyYW5zZm9ybUludGVyYWN0aW9uRGF0YVJlc29sdmVkIiwiYmFzZUludGVyYWN0aW9uIiwicmVzcG9uZCIsInJlc3BvbnNlIiwib3B0aW9ucyIsInR5cGUiLCJJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMiLCJDaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UiLCJjb250ZW50IiwidGl0bGUiLCJNb2RhbCIsIkludGVyYWN0aW9uVHlwZXMiLCJBcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUiLCJBcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGVSZXN1bHQiLCJpc1ByaXZhdGUiLCJmbGFncyIsIk1lc3NhZ2VGbGFncyIsIkVwaGVtZXJhbCIsImFja25vd2xlZGdlZCIsImJvdCIsImhlbHBlcnMiLCJzZW5kRm9sbG93dXBNZXNzYWdlIiwidG9rZW4iLCJNb2RhbFN1Ym1pdCIsIkVycm9yIiwic2VuZEludGVyYWN0aW9uUmVzcG9uc2UiLCJpZCIsImRhdGEiLCJlZGl0IiwibWVzc2FnZUlkIiwiZWRpdEZvbGxvd3VwTWVzc2FnZSIsIk1lc3NhZ2VDb21wb25lbnQiLCJVcGRhdGVNZXNzYWdlIiwiZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSIsImRlZmVyRWRpdCIsIkRlZmVycmVkVXBkYXRlTWVzc2FnZSIsImRlZmVyIiwiRGVmZXJyZWRDaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UiLCJ1bmRlZmluZWQiLCJkZWxldGUiLCJkZWxldGVGb2xsb3d1cE1lc3NhZ2UiLCJkZWxldGVPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2UiLCJwYXlsb2FkIiwiZ3VpbGRJZCIsImd1aWxkX2lkIiwidHJhbnNmb3JtZXJzIiwic25vd2ZsYWtlIiwidXNlciIsIm1lbWJlciIsImludGVyYWN0aW9uIiwiT2JqZWN0IiwiY3JlYXRlIiwicHJvcHMiLCJkZXNpcmVkUHJvcGVydGllcyIsImFwcGxpY2F0aW9uSWQiLCJhcHBsaWNhdGlvbl9pZCIsInZlcnNpb24iLCJsb2NhbGUiLCJndWlsZExvY2FsZSIsImd1aWxkX2xvY2FsZSIsImFwcFBlcm1pc3Npb25zIiwiYXBwX3Blcm1pc3Npb25zIiwibWVzc2FnZSIsImNoYW5uZWwiLCJjaGFubmVsSWQiLCJjaGFubmVsX2lkIiwiYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVycyIsImF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVycyIsIkRpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZSIsIkd1aWxkSW5zdGFsbCIsIlVzZXJJbnN0YWxsIiwiY29udGV4dCIsImNvbXBvbmVudFR5cGUiLCJjb21wb25lbnRfdHlwZSIsImN1c3RvbUlkIiwiY3VzdG9tX2lkIiwiY29tcG9uZW50cyIsIm1hcCIsImNvbXBvbmVudCIsInZhbHVlcyIsIm5hbWUiLCJyZXNvbHZlZCIsIm9wdCIsImludGVyYWN0aW9uRGF0YU9wdGlvbnMiLCJ0YXJnZXRJZCIsInRhcmdldF9pZCIsImN1c3RvbWl6ZXJzIiwib3B0aW9uIiwidmFsdWUiLCJmb2N1c2VkIiwidHJhbnNmb3JtZWQiLCJtZXNzYWdlcyIsIkNvbGxlY3Rpb24iLCJlbnRyaWVzIiwidXNlcnMiLCJtZW1iZXJzIiwicm9sZXMiLCJyb2xlIiwiY2hhbm5lbHMiLCJrZXkiLCJwZXJtaXNzaW9ucyIsImF0dGFjaG1lbnRzIiwiYXR0YWNobWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUE4TWdCQSxvQkFBb0I7ZUFBcEJBOztJQXVEQUMsOEJBQThCO2VBQTlCQTs7SUFZQUMsZ0NBQWdDO2VBQWhDQTs7O3VCQXJRVDt1QkFDb0I7dUJBUXBCO0FBa0hQLE1BQU1DLGtCQUEwRDtJQUM5RCxNQUFNQyxTQUFRQyxRQUFRLEVBQUVDLE9BQU87UUFDN0IsSUFBSUMsT0FBT0MsK0JBQXdCLENBQUNDLHdCQUF3QjtRQUU1RCw0REFBNEQ7UUFDNUQsSUFBSSxPQUFPSixhQUFhLFVBQVVBLFdBQVc7WUFBRUssU0FBU0w7UUFBUztRQUVqRSw0RkFBNEY7UUFDNUYsSUFBSUEsU0FBU00sS0FBSyxFQUFFSixPQUFPQywrQkFBd0IsQ0FBQ0ksS0FBSztRQUN6RCxJQUFJLElBQUksQ0FBQ0wsSUFBSSxLQUFLTSx1QkFBZ0IsQ0FBQ0MsOEJBQThCLEVBQUVQLE9BQU9DLCtCQUF3QixDQUFDTyxvQ0FBb0M7UUFDdkksSUFBSVIs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
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvaW50ZXJhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLFxuICBJbnRlcmFjdGlvblR5cGVzLFxuICBNZXNzYWdlRmxhZ3MsXG4gIHR5cGUgQXBwbGljYXRpb25Db21tYW5kT3B0aW9uVHlwZXMsXG4gIHR5cGUgQXBwbGljYXRpb25Db21tYW5kVHlwZXMsXG4gIHR5cGUgQmlnU3RyaW5nLFxuICB0eXBlIENoYW5uZWxUeXBlcyxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb24sXG4gIHR5cGUgRGlzY29yZEludGVyYWN0aW9uRGF0YU9wdGlvbixcbiAgdHlwZSBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSxcbiAgdHlwZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMsXG59IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJ0BkaXNjb3JkZW5vL3V0aWxzJ1xuaW1wb3J0IHtcbiAgRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLFxuICB0eXBlIEJvdCxcbiAgdHlwZSBDaGFubmVsLFxuICB0eXBlIENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkQ2hhbm5lbCxcbiAgdHlwZSBEaXNjb3JkSW50ZXJhY3Rpb25Db250ZXh0VHlwZSxcbiAgdHlwZSBHdWlsZCxcbn0gZnJvbSAnLi4vaW5kZXguanMnXG5pbXBvcnQgdHlwZSB7IERpc2NvcmRJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCB9IGZyb20gJy4uL3R5cGluZ3MuanMnXG5pbXBvcnQgdHlwZSB7IEF0dGFjaG1lbnQgfSBmcm9tICcuL2F0dGFjaG1lbnQuanMnXG5pbXBvcnQgdHlwZSB7IE1lbWJlciB9IGZyb20gJy4vbWVtYmVyLmpzJ1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlIH0gZnJvbSAnLi9tZXNzYWdlLmpzJ1xuaW1wb3J0IHR5cGUgeyBSb2xlIH0gZnJvbSAnLi9yb2xlLmpzJ1xuaW1wb3J0IHR5cGUgeyBVc2VyIH0gZnJvbSAnLi91c2VyLmpzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyYWN0aW9uIGV4dGVuZHMgQmFzZUludGVyYWN0aW9uIHtcbiAgLyoqIFRoZSBib3Qgb2JqZWN0ICovXG4gIGJvdDogQm90XG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGlzIGludGVyYWN0aW9uIGhhcyBiZWVuIHJlc3BvbmRlZCB0by4gKi9cbiAgYWNrbm93bGVkZ2VkOiBib29sZWFuXG4gIC8qKiBJZCBvZiB0aGUgaW50ZXJhY3Rpb24gKi9cbiAgaWQ6IGJpZ2ludFxuICAvKiogSWQgb2YgdGhlIGFwcGxpY2F0aW9uIHRoaXMgaW50ZXJhY3Rpb24gaXMgZm9yICovXG4gIGFwcGxpY2F0aW9uSWQ6IGJpZ2ludFxuICAvKiogVGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gKi9cbiAgdHlwZTogSW50ZXJhY3Rpb25UeXBlc1xuICAvKiogR3VpbGQgdGhhdCB0aGUgaW50ZXJhY3Rpb24gd2FzIHNlbnQgZnJvbSAqL1xuICBndWlsZDogR3VpbGRcbiAgLyoqIFRoZSBndWlsZCBpdCB3YXMgc2VudCBmcm9tICovXG4gIGd1aWxkSWQ/OiBiaWdpbnRcbiAgLyoqIFRoZSBjaGFubmVsIGl0IHdhcyBzZW50IGZyb20gKi9cbiAgY2hhbm5lbDogUGFydGlhbDxDaGFubmVsPlxuICAvKipcbiAgICogVGhlIElEIG9mIGNoYW5uZWwgaXQgd2FzIHNlbnQgZnJvbVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBiZWdpbiB1c2luZyB0aGlzIGNoYW5uZWwgZmllbGQgdG8gaWRlbnRpZnkgdGhlIHNvdXJjZSBjaGFubmVsIG9mIHRoZSBpbnRlcmFjdGlvbiBhcyB0aGV5IG1heSBkZXByZWNhdGUgdGhlIGV4aXN0aW5nIGNoYW5uZWxfaWQgZmllbGQgaW4gdGhlIGZ1dHVyZS5cbiAgICovXG4gIGNoYW5uZWxJZD86IGJpZ2ludFxuICAvKiogR3VpbGQgbWVtYmVyIGRhdGEgZm9yIHRoZSBpbnZva2luZyB1c2VyLCBpbmNsdWRpbmcgcGVybWlzc2lvbnMgKi9cbiAgbWVtYmVyPzogTWVtYmVyXG4gIC8qKiBVc2VyIG9iamVjdCBmb3IgdGhlIGludm9raW5nIHVzZXIsIGlmIGludm9rZWQgaW4gYSBETSAqL1xuICB1c2VyOiBVc2VyXG4gIC8qKiBBIGNvbnRpbnVhdGlvbiB0b2tlbiBmb3IgcmVzcG9uZGluZyB0byB0aGUgaW50ZXJhY3Rpb24gKi9cbiAgdG9rZW46IHN0cmluZ1xuICAvKiogUmVhZC1vbmx5IHByb3BlcnR5LCBhbHdheXMgYDFgICovXG4gIHZlcnNpb246IDFcbiAgLyoqIEZvciB0aGUgbWVzc2FnZSB0aGUgYnV0dG9uIHdhcyBhdHRhY2hlZCB0byAqL1xuICBtZXNzYWdlPzogTWVzc2FnZVxuICAvKiogdGhlIGNvbW1hbmQgZGF0YSBwYXlsb2FkICovXG4gIGRhdGE/OiB7XG4gICAgdHlwZT86IEFwcGxpY2F0aW9uQ29tbWFuZFR5cGVzXG4gICAgY29tcG9uZW50VHlwZT86IE1lc3NhZ2VDb21wb25lbnRUeXBlc1xuICAgIGN1c3RvbUlkPzogc3RyaW5nXG4gICAgY29tcG9uZW50cz86IENvbXBvbmVudFtdXG4gICAgdmFsdWVzPzogc3RyaW5nW11cbiAgICBuYW1lOiBzdHJpbmdcbiAgICByZXNvbHZlZD86IEludGVyYWN0aW9uRGF0YVJlc29sdmVkXG4gICAgb3B0aW9ucz86IEludGVyYWN0aW9uRGF0YU9wdGlvbltdXG4gICAgaWQ/OiBiaWdpbnRcbiAgICB0YXJnZXRJZD86IGJpZ2ludFxuICAgIC8vIGd1aWxkSWQ/OiBiaWdpbnRcbiAgfVxuICAvKiogVGhlIHNlbGVjdGVkIGxhbmd1YWdlIG9mIHRoZSBpbnZva2luZyB1c2VyICovXG4gIGxvY2FsZT86IHN0cmluZ1xuICAvKiogVGhlIGd1aWxkJ3MgcHJlZmVycmVkIGxvY2FsZSwgaWYgaW52b2tlZCBpbiBhIGd1aWxkICovXG4gIGd1aWxkTG9jYWxlPzogc3RyaW5nXG4gIC8qKiBUaGUgY29tcHV0ZWQgcGVybWlzc2lvbnMgZm9yIGEgYm90IG9yIGFwcCBpbiB0aGUgY29udGV4dCBvZiBhIHNwZWNpZmljIGludGVyYWN0aW9uIChpbmNsdWRpbmcgY2hhbm5lbCBvdmVyd3JpdGVzKSAqL1xuICBhcHBQZXJtaXNzaW9uczogYmlnaW50XG4gIC8qKiBNYXBwaW5nIG9mIGluc3RhbGxhdGlvbiBjb250ZXh0cyB0aGF0IHRoZSBpbnRlcmFjdGlvbiB3YXMgYXV0aG9yaXplZCBmb3IgdG8gcmVsYXRlZCB1c2VyIG9yIGd1aWxkIElEcy4gKi9cbiAgYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVyczogUGFydGlhbDxSZWNvcmQ8RGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLCBiaWdpbnQ+PlxuICAvKiogQ29udGV4dCB3aGVyZSB0aGUgaW50ZXJhY3Rpb24gd2FzIHRyaWdnZXJlZCBmcm9tICovXG4gIGNvbnRleHQ/OiBEaXNjb3JkSW50ZXJhY3Rpb25Db250ZXh0VHlwZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VJbnRlcmFjdGlvbiB7XG4gIC8qKlxuICAgKiBTZW5kcyBhIHJlc3BvbnNlIHRvIGFuIGludGVyYWN0aW9uLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIHdpbGwgc2VuZCBhIHtAbGluayBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlfSwge0BsaW5rIEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGVSZXN1bHR9IG9yIHtAbGluayBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuTW9kYWx9IHJlc3BvbnNlIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZSBpbnRlcmFjdGlvbiB5b3UgYXJlIHJlc3BvbmRpbmcgdG8uXG4gICAqXG4gICAqIElmIHRoZSBpbnRlcmFjdGlvbiBoYXMgYmVlbiBhbHJlYWR5IGFja25vd2xlZGdlZCwgaW5kaWNhdGVkIGJ5IHtAbGluayBJbnRlcmFjdGlvbi5hY2tub3dsZWRnZWR9LCBpdCB3aWxsIHNlbmQgYSBmb2xsb3d1cCBtZXNzYWdlIGluc3RlYWQuXG4gICAqXG4gICAqIFVzZXMgYGludGVyYWN0aW9uLnR5cGVgLCBgaW50ZXJhY3Rpb24udG9rZW5gIGFuZCBgaW50ZXJhY3Rpb24uaWRgLCBtaXNzaW5nIG9uZSBvZiB0aGVzZSBpbiB0aGUgZGVzaXJlZCBwcm9wcmlldGllcyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvci5cbiAgICovXG4gIHJlc3BvbmQ6IChyZXNwb25zZTogc3RyaW5nIHwgSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEsIG9wdGlvbnM/OiB7IGlzUHJpdmF0ZT86IGJvb2xlYW4gfSkgPT4gUHJvbWlzZTxNZXNzYWdlIHwgdm9pZD5cbiAgLyoqXG4gICAqIEVkaXQgdGhlIG9yaWdpbmFsIHJlc3BvbnNlIG9mIGFuIGludGVyYWN0aW9uIG9yIGEgZm9sbG93dXAgaWYgdGhlIG1lc3NhZ2UgaWQgaXMgcHJvdmlkZWQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgd2lsbCBlZGl0IHRoZSBvcmlnaW5hbCBpbnRlcmFjdGlvbiByZXNwb25zZSBvciwgaWYgdGhlIGludGVyYWN0aW9uIGhhcyBub3QgeWV0IGJlZW4gYWNrbm93bGVkZ2VkIGFuZCB0aGUgdHlwZSBvZiB0aGUgaW50ZXJhY3Rpb24gaXMge0BsaW5rIEludGVyYWN0aW9uVHlwZXMuTWVzc2FnZUNvbXBvbmVudH0gaXQgd2lsbCBpbnN0ZWFkIHNlbmQgYSB7QGxpbmsgSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLlVwZGF0ZU1lc3NhZ2V9IHJlc3BvbnNlIGluc3RlYWQuXG4gICAqXG4gICAqIFVzZXMgYGludGVyYWN0aW9uLnR5cGVgLCBgaW50ZXJhY3Rpb24udG9rZW5gIGFuZCBgaW50ZXJhY3Rpb24uaWRgLCBtaXNzaW5nIG9uZSBvZiB0aGVzZSBpbiB0aGUgZGVzaXJlZCBwcm9wcmlldGllcyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvci5cbiAgICovXG4gIGVkaXQ6IChyZXNwb25zZTogc3RyaW5nIHwgSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEsIG1lc3NhZ2VJZD86IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxNZXNzYWdlIHwgdm9pZD5cbiAgLyoqXG4gICAqIERlZmVyIHRoZSBpbnRlcmFjdGlvbiBmb3IgdXBkYXRpbmcgdGhlIHJlZmVyZW5jZWQgbWVzc2FnZSBhdCBhIGxhdGVyIHRpbWUgd2l0aCB7QGxpbmsgZWRpdH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgd2lsbCBzZW5kIGEge0BsaW5rIEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5EZWZlcnJlZFVwZGF0ZU1lc3NhZ2V9IHJlc3BvbnNlLlxuICAgKlxuICAgKiBVc2VzIGBpbnRlcmFjdGlvbi50eXBlYCwgYGludGVyYWN0aW9uLnRva2VuYCBhbmQgYGludGVyYWN0aW9uLmlkYCwgbWlzc2luZyBvbmUgb2YgdGhlc2UgaW4gdGhlIGRlc2lyZWQgcHJvcHJpZXRpZXMgbWF5IGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG4gICAqL1xuICBkZWZlckVkaXQ6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlZmVyIHRoZSBpbnRlcmFjdGlvbiBmb3IgdXBkYXRpbmcgdGhlIHJlc3BvbnNlIGF0IGEgbGF0ZXIgdGltZSB3aXRoIHtAbGluayBlZGl0fS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyB3aWxsIHNlbmQgYSB7QGxpbmsgSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLkRlZmVycmVkQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlfSByZXNwb25zZS5cbiAgICpcbiAgICogVXNlcyBgaW50ZXJhY3Rpb24udHlwZWAsIGBpbnRlcmFjdGlvbi50b2tlbmAgYW5kIGBpbnRlcmFjdGlvbi5pZGAsIG1pc3Npbmcgb25lIG9mIHRoZXNlIGluIHRoZSBkZXNpcmVkIHByb3ByaWV0aWVzIG1heSBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuICAgKi9cbiAgZGVmZXI6IChpc1ByaXZhdGU/OiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIG9yaWdpbmFsIGludGVyYWN0aW9uIHJlc3BvbnNlIG9yIGEgZm9sbG93dXAgaWYgdGhlIG1lc3NhZ2UgaWQgaXMgcHJvdmlkZWQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFVzZXMgYGludGVyYWN0aW9uLnR5cGVgIGFuZCBgaW50ZXJhY3Rpb24udG9rZW5gLCBtaXNzaW5nIG9uZSBvZiB0aGVzZSBpbiB0aGUgZGVzaXJlZCBwcm9wcmlldGllcyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvci5cbiAgICovXG4gIGRlbGV0ZTogKG1lc3NhZ2VJZD86IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5jb25zdCBiYXNlSW50ZXJhY3Rpb246IFBhcnRpYWw8SW50ZXJhY3Rpb24+ICYgQmFzZUludGVyYWN0aW9uID0ge1xuICBhc3luYyByZXNwb25kKHJlc3BvbnNlLCBvcHRpb25zKSB7XG4gICAgbGV0IHR5cGUgPSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuQ2hhbm5lbE1lc3NhZ2VXaXRoU291cmNlXG5cbiAgICAvLyBJZiB1c2VyIHByb3ZpZGVzIGEgc3RyaW5nLCBjaGFuZ2UgaXQgdG8gYSByZXNwb25zZSBvYmplY3RcbiAgICBpZiAodHlwZW9mIHJlc3BvbnNlID09PSAnc3RyaW5nJykgcmVzcG9uc2UgPSB7IGNvbnRlbnQ6IHJlc3BvbnNlIH1cblxuICAgIC8vIElmIHVzZXIgcHJvdmlkZXMgYW4gb2JqZWN0LCBkZXRlcm1pbmUgaWYgaXQgc2hvdWxkIGJlIGFuIGF1dG9jb21wbGV0ZSBvciBhIG1vZGFsIHJlc3BvbnNlXG4gICAgaWYgKHJlc3BvbnNlLnRpdGxlKSB0eXBlID0gSW50ZXJhY3Rpb25SZXNwb25zZVR5cGVzLk1vZGFsXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUpIHR5cGUgPSBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuQXBwbGljYXRpb25Db21tYW5kQXV0b2NvbXBsZXRlUmVzdWx0XG4gICAgaWYgKHR5cGUgPT09IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5DaGFubmVsTWVzc2FnZVdpdGhTb3VyY2UgJiYgb3B0aW9ucz8uaXNQcml2YXRlKSByZXNwb25zZS5mbGFncyA9IE1lc3NhZ2VGbGFncy5FcGhlbWVyYWxcblxuICAgIC8vIFNpbmNlIHRoaXMgaGFzIGFscmVhZHkgYmVlbiBnaXZlbiBhIHJlc3BvbnNlLCBhbnkgZnVydGhlciByZXNwb25zZXMgbXVzdCBiZSBmb2xsb3d1cHMuXG4gICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VkKSByZXR1cm4gYXdhaXQgdGhpcy5ib3QhLmhlbHBlcnMuc2VuZEZvbGxvd3VwTWVzc2FnZSh0aGlzLnRva2VuISwgcmVzcG9uc2UpXG5cbiAgICAvLyBNb2RhbHMgY2Fubm90IGJlIGNoYWluZWRcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLk1vZGFsU3VibWl0ICYmIHR5cGUgPT09IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5Nb2RhbClcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHJlc3BvbmQgdG8gYSBtb2RhbCBpbnRlcmFjdGlvbiB3aXRoIGFub3RoZXIgbW9kYWwuJylcblxuICAgIHRoaXMuYWNrbm93bGVkZ2VkID0gdHJ1ZVxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdCEuaGVscGVycy5zZW5kSW50ZXJhY3Rpb25SZXNwb25zZSh0aGlzLmlkISwgdGhpcy50b2tlbiEsIHsgdHlwZSwgZGF0YTogcmVzcG9uc2UgfSlcbiAgfSxcbiAgYXN5bmMgZWRpdChyZXNwb25zZSwgbWVzc2FnZUlkKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlcy5BcHBsaWNhdGlvbkNvbW1hbmRBdXRvY29tcGxldGUpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGVkaXQgYW4gYXV0b2NvbXBsZXRlIGludGVyYWN0aW9uLicpXG5cbiAgICAvLyBJZiB1c2VyIHByb3ZpZGVzIGEgc3RyaW5nLCBjaGFuZ2UgaXQgdG8gYSByZXNwb25zZSBvYmplY3RcbiAgICBpZiAodHlwZW9mIHJlc3BvbnNlID09PSAnc3RyaW5nJykgcmVzcG9uc2UgPSB7IGNvbnRlbnQ6IHJlc3BvbnNlIH1cblxuICAgIGlmIChtZXNzYWdlSWQpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdD8uaGVscGVycy5lZGl0Rm9sbG93dXBNZXNzYWdlKHRoaXMudG9rZW4hLCBtZXNzYWdlSWQsIHJlc3BvbnNlKVxuICAgIH1cblxuICAgIGlmICghdGhpcy5hY2tub3dsZWRnZWQpIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgIT09IEludGVyYWN0aW9uVHlwZXMuTWVzc2FnZUNvbXBvbmVudClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBpbnRlcmFjdGlvbiBoYXMgbm90IGJlZW4gcmVzcG9uZGVkIHRvIHlldCBhbmQgdGhpcyBpc24ndCBhIE1lc3NhZ2VDb21wb25lbnQgaW50ZXJhY3Rpb24uXCIpXG5cbiAgICAgIHRoaXMuYWNrbm93bGVkZ2VkID0gdHJ1ZVxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90IS5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKHRoaXMuaWQhLCB0aGlzLnRva2VuISwgeyB0eXBlOiBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuVXBkYXRlTWVzc2FnZSwgZGF0YTogcmVzcG9uc2UgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib3QhLmhlbHBlcnMuZWRpdE9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSh0aGlzLnRva2VuISwgcmVzcG9uc2UpXG4gIH0sXG4gIGFzeW5jIGRlZmVyRWRpdCgpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZWRpdCBhbiBhdXRvY29tcGxldGUgaW50ZXJhY3Rpb24uJylcbiAgICBpZiAodGhpcy5hY2tub3dsZWRnZWQpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGRlZmVyIGFuIGFscmVhZHkgcmVzcG9uZGVkIGludGVyYWN0aW9uLicpXG5cbiAgICBpZiAodGhpcy50eXBlICE9PSBJbnRlcmFjdGlvblR5cGVzLk1lc3NhZ2VDb21wb25lbnQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZGVmZXIgdG8gdGhlbiBlZGl0IGFuIGludGVyYWN0aW9uIHRoYXQgaXNuJ3QgYSBNZXNzYWdlQ29tcG9uZW50IGludGVyYWN0aW9uLlwiKVxuXG4gICAgdGhpcy5hY2tub3dsZWRnZWQgPSB0cnVlXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm90IS5oZWxwZXJzLnNlbmRJbnRlcmFjdGlvblJlc3BvbnNlKHRoaXMuaWQhLCB0aGlzLnRva2VuISwgeyB0eXBlOiBJbnRlcmFjdGlvblJlc3BvbnNlVHlwZXMuRGVmZXJyZWRVcGRhdGVNZXNzYWdlIH0pXG4gIH0sXG4gIGFzeW5jIGRlZmVyKGlzUHJpdmF0ZSkge1xuICAgIGlmICh0aGlzLmFja25vd2xlZGdlZCkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVmZXIgYW4gYWxyZWFkeSByZXNwb25kZWQgaW50ZXJhY3Rpb24uJylcblxuICAgIHRoaXMuYWNrbm93bGVkZ2VkID0gdHJ1ZVxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvdCEuaGVscGVycy5zZW5kSW50ZXJhY3Rpb25SZXNwb25zZSh0aGlzLmlkISwgdGhpcy50b2tlbiEsIHtcbiAgICAgIHR5cGU6IEludGVyYWN0aW9uUmVzcG9uc2VUeXBlcy5EZWZlcnJlZENoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZmxhZ3M6IGlzUHJpdmF0ZSA/IE1lc3NhZ2VGbGFncy5FcGhlbWVyYWwgOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgIH0pXG4gIH0sXG4gIGFzeW5jIGRlbGV0ZShtZXNzYWdlSWQpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBJbnRlcmFjdGlvblR5cGVzLkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVsZXRlIGFuIGF1dG9jb21wbGV0ZSBpbnRlcmFjdGlvbicpXG5cbiAgICBpZiAobWVzc2FnZUlkKSByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZGVsZXRlRm9sbG93dXBNZXNzYWdlKHRoaXMudG9rZW4hLCBtZXNzYWdlSWQpXG4gICAgZWxzZSByZXR1cm4gYXdhaXQgdGhpcy5ib3Q/LmhlbHBlcnMuZGVsZXRlT3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlKHRoaXMudG9rZW4hKVxuICB9LFxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb24oYm90OiBCb3QsIHBheWxvYWQ6IHsgaW50ZXJhY3Rpb246IERpc2NvcmRJbnRlcmFjdGlvbjsgc2hhcmRJZDogbnVtYmVyIH0pOiBJbnRlcmFjdGlvbiB7XG4gIGNvbnN0IGd1aWxkSWQgPSBwYXlsb2FkLmludGVyYWN0aW9uLmd1aWxkX2lkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZF9pZCkgOiB1bmRlZmluZWRcbiAgY29uc3QgdXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVtYmVyPy51c2VyID8/IHBheWxvYWQuaW50ZXJhY3Rpb24udXNlciEpXG5cbiAgY29uc3QgaW50ZXJhY3Rpb246IEludGVyYWN0aW9uID0gT2JqZWN0LmNyZWF0ZShiYXNlSW50ZXJhY3Rpb24pXG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5pbnRlcmFjdGlvblxuICBpbnRlcmFjdGlvbi5ib3QgPSBib3RcbiAgaW50ZXJhY3Rpb24uYWNrbm93bGVkZ2VkID0gZmFsc2VcblxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5pZCkgaW50ZXJhY3Rpb24uaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmlkKVxuICBpZiAocHJvcHMuYXBwbGljYXRpb25JZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmFwcGxpY2F0aW9uX2lkKVxuICAgIGludGVyYWN0aW9uLmFwcGxpY2F0aW9uSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmFwcGxpY2F0aW9uX2lkKVxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLnR5cGUpIGludGVyYWN0aW9uLnR5cGUgPSBwYXlsb2FkLmludGVyYWN0aW9uLnR5cGVcbiAgaWYgKHByb3BzLnRva2VuICYmIHBheWxvYWQuaW50ZXJhY3Rpb24udG9rZW4pIGludGVyYWN0aW9uLnRva2VuID0gcGF5bG9hZC5pbnRlcmFjdGlvbi50b2tlblxuICBpZiAocHJvcHMudmVyc2lvbiAmJiBwYXlsb2FkLmludGVyYWN0aW9uLnZlcnNpb24pIGludGVyYWN0aW9uLnZlcnNpb24gPSBwYXlsb2FkLmludGVyYWN0aW9uLnZlcnNpb25cbiAgaWYgKHByb3BzLmxvY2FsZSAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmxvY2FsZSkgaW50ZXJhY3Rpb24ubG9jYWxlID0gcGF5bG9hZC5pbnRlcmFjdGlvbi5sb2NhbGVcbiAgaWYgKHByb3BzLmd1aWxkTG9jYWxlICYmIHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGRfbG9jYWxlKSBpbnRlcmFjdGlvbi5ndWlsZExvY2FsZSA9IHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGRfbG9jYWxlXG4gIGlmIChwcm9wcy5ndWlsZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmd1aWxkKVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgcGF5bG9hZC5pbnRlcmFjdGlvbi5ndWlsZCBpcyBhIFBhcnRpYWw8RGlzY29yZEd1aWxkPlxuICAgIGludGVyYWN0aW9uLmd1aWxkID0gYm90LnRyYW5zZm9ybWVycy5ndWlsZChib3QsIHsgZ3VpbGQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZ3VpbGQsIHNoYXJkSWQ6IHBheWxvYWQuc2hhcmRJZCB9KVxuICBpZiAocHJvcHMuZ3VpbGRJZCAmJiBndWlsZElkKSBpbnRlcmFjdGlvbi5ndWlsZElkID0gZ3VpbGRJZFxuICBpZiAocHJvcHMudXNlciAmJiB1c2VyKSBpbnRlcmFjdGlvbi51c2VyID0gdXNlclxuICBpZiAocHJvcHMuYXBwUGVybWlzc2lvbnMgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5hcHBfcGVybWlzc2lvbnMpXG4gICAgaW50ZXJhY3Rpb24uYXBwUGVybWlzc2lvbnMgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmFwcF9wZXJtaXNzaW9ucylcbiAgaWYgKHByb3BzLm1lc3NhZ2UgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5tZXNzYWdlKSBpbnRlcmFjdGlvbi5tZXNzYWdlID0gYm90LnRyYW5zZm9ybWVycy5tZXNzYWdlKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbi5tZXNzYWdlKVxuICBpZiAocHJvcHMuY2hhbm5lbCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWwpXG4gICAgaW50ZXJhY3Rpb24uY2hhbm5lbCA9IGJvdC50cmFuc2Zvcm1lcnMuY2hhbm5lbChib3QsIHsgY2hhbm5lbDogcGF5bG9hZC5pbnRlcmFjdGlvbi5jaGFubmVsIGFzIERpc2NvcmRDaGFubmVsLCBndWlsZElkIH0pXG4gIGlmIChwcm9wcy5jaGFubmVsSWQgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5jaGFubmVsX2lkKSBpbnRlcmFjdGlvbi5jaGFubmVsSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmludGVyYWN0aW9uLmNoYW5uZWxfaWQpXG4gIGlmIChwcm9wcy5tZW1iZXIgJiYgZ3VpbGRJZCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLm1lbWJlcilcbiAgICBpbnRlcmFjdGlvbi5tZW1iZXIgPSBib3QudHJhbnNmb3JtZXJzLm1lbWJlcihib3QsIHBheWxvYWQuaW50ZXJhY3Rpb24ubWVtYmVyLCBndWlsZElkLCB1c2VyLmlkKVxuICBpZiAocHJvcHMuYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVycyAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmF1dGhvcml6aW5nX2ludGVncmF0aW9uX293bmVycykge1xuICAgIGludGVyYWN0aW9uLmF1dGhvcml6aW5nSW50ZWdyYXRpb25Pd25lcnMgPSB7fVxuXG4gICAgaWYgKHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycwJ10pXG4gICAgICBpbnRlcmFjdGlvbi5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzW0Rpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZS5HdWlsZEluc3RhbGxdID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoXG4gICAgICAgIHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycwJ10sXG4gICAgICApXG4gICAgaWYgKHBheWxvYWQuaW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzWycxJ10pXG4gICAgICBpbnRlcmFjdGlvbi5hdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzW0Rpc2NvcmRBcHBsaWNhdGlvbkludGVncmF0aW9uVHlwZS5Vc2VySW5zdGFsbF0gPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShcbiAgICAgICAgcGF5bG9hZC5pbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnNbJzEnXSxcbiAgICAgIClcbiAgfVxuICBpZiAocHJvcHMuY29udGV4dCAmJiBwYXlsb2FkLmludGVyYWN0aW9uLmNvbnRleHQpIGludGVyYWN0aW9uLmNvbnRleHQgPSBwYXlsb2FkLmludGVyYWN0aW9uLmNvbnRleHRcbiAgaWYgKHByb3BzLmRhdGEgJiYgcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhKSB7XG4gICAgaW50ZXJhY3Rpb24uZGF0YSA9IHtcbiAgICAgIHR5cGU6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS50eXBlLFxuICAgICAgY29tcG9uZW50VHlwZTogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmNvbXBvbmVudF90eXBlLFxuICAgICAgY3VzdG9tSWQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5jdXN0b21faWQsXG4gICAgICBjb21wb25lbnRzOiBwYXlsb2FkLmludGVyYWN0aW9uLmRhdGEuY29tcG9uZW50cz8ubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSksXG4gICAgICB2YWx1ZXM6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS52YWx1ZXMsXG4gICAgICBpZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmlkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmlkKSA6IHVuZGVmaW5lZCxcbiAgICAgIG5hbWU6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5uYW1lLFxuICAgICAgcmVzb2x2ZWQ6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZCA/IHRyYW5zZm9ybUludGVyYWN0aW9uRGF0YVJlc29sdmVkKGJvdCwgcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnJlc29sdmVkLCBndWlsZElkKSA6IHVuZGVmaW5lZCxcbiAgICAgIG9wdGlvbnM6IHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS5vcHRpb25zPy5tYXAoKG9wdCkgPT4gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFPcHRpb25zKGJvdCwgb3B0KSksXG4gICAgICB0YXJnZXRJZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLnRhcmdldF9pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaW50ZXJhY3Rpb24uZGF0YS50YXJnZXRfaWQpIDogdW5kZWZpbmVkLFxuICAgICAgLy8gZ3VpbGRJZDogcGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmd1aWxkX2lkID8gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5pbnRlcmFjdGlvbi5kYXRhLmd1aWxkX2lkKSA6IHVuZGVmaW5lZCxcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbihib3QsIHBheWxvYWQsIGludGVyYWN0aW9uKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhT3B0aW9uKGJvdDogQm90LCBvcHRpb246IERpc2NvcmRJbnRlcmFjdGlvbkRhdGFPcHRpb24pOiBJbnRlcmFjdGlvbkRhdGFPcHRpb24ge1xuICBjb25zdCBvcHQgPSB7XG4gICAgbmFtZTogb3B0aW9uLm5hbWUsXG4gICAgdHlwZTogb3B0aW9uLnR5cGUsXG4gICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICBvcHRpb25zOiBvcHRpb24ub3B0aW9ucyxcbiAgICBmb2N1c2VkOiBvcHRpb24uZm9jdXNlZCxcbiAgfSBhcyBJbnRlcmFjdGlvbkRhdGFPcHRpb25cblxuICByZXR1cm4gYm90LnRyYW5zZm9ybWVycy5jdXN0b21pemVycy5pbnRlcmFjdGlvbkRhdGFPcHRpb25zKGJvdCwgb3B0aW9uLCBvcHQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1JbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3Q6IEJvdCwgcmVzb2x2ZWQ6IERpc2NvcmRJbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCwgZ3VpbGRJZD86IGJpZ2ludCk6IEludGVyYWN0aW9uRGF0YVJlc29sdmVkIHtcbiAgY29uc3QgdHJhbnNmb3JtZWQ6IEludGVyYWN0aW9uRGF0YVJlc29sdmVkID0ge31cblxuICBpZiAocmVzb2x2ZWQubWVzc2FnZXMpIHtcbiAgICB0cmFuc2Zvcm1lZC5tZXNzYWdlcyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocmVzb2x2ZWQubWVzc2FnZXMpLm1hcCgoW2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZTogTWVzc2FnZSA9IGJvdC50cmFuc2Zvcm1lcnMubWVzc2FnZShib3QsIHZhbHVlKVxuICAgICAgICByZXR1cm4gW21lc3NhZ2UuaWQsIG1lc3NhZ2VdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAocmVzb2x2ZWQudXNlcnMpIHtcbiAgICB0cmFuc2Zvcm1lZC51c2VycyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocmVzb2x2ZWQudXNlcnMpLm1hcCgoW2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgdXNlciA9IGJvdC50cmFuc2Zvcm1lcnMudXNlcihib3QsIHZhbHVlKVxuICAgICAgICByZXR1cm4gW3VzZXIuaWQsIHVzZXJdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBpZiAoZ3VpbGRJZCAmJiByZXNvbHZlZC5tZW1iZXJzKSB7XG4gICAgdHJhbnNmb3JtZWQubWVtYmVycyA9IG5ldyBDb2xsZWN0aW9uKFxuICAgICAgT2JqZWN0LmVudHJpZXMocmVzb2x2ZWQubWVtYmVycykubWFwKChbaWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICBjb25zdCBtZW1iZXI6IE1lbWJlciA9IGJvdC50cmFuc2Zvcm1lcnMubWVtYmVyKGJvdCwgdmFsdWUsIGd1aWxkSWQsIGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKGlkKSlcbiAgICAgICAgcmV0dXJuIFttZW1iZXIuaWQsIG1lbWJlcl1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChndWlsZElkICYmIHJlc29sdmVkLnJvbGVzKSB7XG4gICAgdHJhbnNmb3JtZWQucm9sZXMgPSBuZXcgQ29sbGVjdGlvbihcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc29sdmVkLnJvbGVzKS5tYXAoKFtpZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvbGUgPSBib3QudHJhbnNmb3JtZXJzLnJvbGUoYm90LCB7IHJvbGU6IHZhbHVlLCBndWlsZElkIH0pXG4gICAgICAgIHJldHVybiBbcm9sZS5pZCwgcm9sZV1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChyZXNvbHZlZC5jaGFubmVscykge1xuICAgIHRyYW5zZm9ybWVkLmNoYW5uZWxzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhyZXNvbHZlZC5jaGFubmVscykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShrZXkpXG4gICAgICAgIGNvbnN0IGNoYW5uZWwgPSB2YWx1ZSBhcyB7XG4gICAgICAgICAgaWQ6IHN0cmluZ1xuICAgICAgICAgIG5hbWU6IHN0cmluZ1xuICAgICAgICAgIHR5cGU6IENoYW5uZWxUeXBlc1xuICAgICAgICAgIHBlcm1pc3Npb25zOiBzdHJpbmdcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgbmFtZTogY2hhbm5lbC5uYW1lLFxuICAgICAgICAgICAgdHlwZTogY2hhbm5lbC50eXBlLFxuICAgICAgICAgICAgcGVybWlzc2lvbnM6IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKGNoYW5uZWwucGVybWlzc2lvbnMpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmIChyZXNvbHZlZC5hdHRhY2htZW50cykge1xuICAgIHRyYW5zZm9ybWVkLmF0dGFjaG1lbnRzID0gbmV3IENvbGxlY3Rpb24oXG4gICAgICBPYmplY3QuZW50cmllcyhyZXNvbHZlZC5hdHRhY2htZW50cykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShrZXkpXG4gICAgICAgIHJldHVybiBbaWQsIGJvdC50cmFuc2Zvcm1lcnMuYXR0YWNobWVudChib3QsIHZhbHVlKV1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiB0cmFuc2Zvcm1lZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyYWN0aW9uRGF0YVJlc29sdmVkIHtcbiAgbWVzc2FnZXM/OiBDb2xsZWN0aW9uPGJpZ2ludCwgTWVzc2FnZT5cbiAgdXNlcnM/OiBDb2xsZWN0aW9uPGJpZ2ludCwgVXNlcj5cbiAgbWVtYmVycz86IENvbGxlY3Rpb248YmlnaW50LCBNZW1iZXI+XG4gIHJvbGVzPzogQ29sbGVjdGlvbjxiaWdpbnQsIFJvbGU+XG4gIGNoYW5uZWxzPzogQ29sbGVjdGlvbjxiaWdpbnQsIHsgaWQ6IGJpZ2ludDsgbmFtZTogc3RyaW5nOyB0eXBlOiBDaGFubmVsVHlwZXM7IHBlcm1pc3Npb25zOiBiaWdpbnQgfT5cbiAgYXR0YWNobWVudHM/OiBDb2xsZWN0aW9uPGJpZ2ludCwgQXR0YWNobWVudD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmFjdGlvbkRhdGFPcHRpb24ge1xuICBuYW1lOiBzdHJpbmdcbiAgdHlwZTogQXBwbGljYXRpb25Db21tYW5kT3B0aW9uVHlwZXNcbiAgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuXG4gIG9wdGlvbnM/OiBJbnRlcmFjdGlvbkRhdGFPcHRpb25bXVxuICBmb2N1c2VkPzogYm9vbGVhblxufVxuIl0sIm5hbWVzIjpbInRyYW5zZm9ybUludGVyYWN0aW9uIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhT3B0aW9uIiwidHJhbnNmb3JtSW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQiLCJiYXNlSW50ZXJhY3Rpb24iLCJyZXNwb25kIiwicmVzcG9uc2UiLCJvcHRpb25zIiwidHlwZSIsIkludGVyYWN0aW9uUmVzcG9uc2VUeXBlcyIsIkNoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZSIsImNvbnRlbnQiLCJ0aXRsZSIsIk1vZGFsIiwiSW50ZXJhY3Rpb25UeXBlcyIsIkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZSIsIkFwcGxpY2F0aW9uQ29tbWFuZEF1dG9jb21wbGV0ZVJlc3VsdCIsImlzUHJpdmF0ZSIsImZsYWdzIiwiTWVzc2FnZUZsYWdzIiwiRXBoZW1lcmFsIiwiYWNrbm93bGVkZ2VkIiwiYm90IiwiaGVscGVycyIsInNlbmRGb2xsb3d1cE1lc3NhZ2UiLCJ0b2tlbiIsIk1vZGFsU3VibWl0IiwiRXJyb3IiLCJzZW5kSW50ZXJhY3Rpb25SZXNwb25zZSIsImlkIiwiZGF0YSIsImVkaXQiLCJtZXNzYWdlSWQiLCJlZGl0Rm9sbG93dXBNZXNzYWdlIiwiTWVzc2FnZUNvbXBvbmVudCIsIlVwZGF0ZU1lc3NhZ2UiLCJlZGl0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlIiwiZGVmZXJFZGl0IiwiRGVmZXJyZWRVcGRhdGVNZXNzYWdlIiwiZGVmZXIiLCJEZWZlcnJlZENoYW5uZWxNZXNzYWdlV2l0aFNvdXJjZSIsInVuZGVmaW5lZCIsImRlbGV0ZSIsImRlbGV0ZUZvbGxvd3VwTWVzc2FnZSIsImRlbGV0ZU9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZSIsInBheWxvYWQiLCJndWlsZElkIiwiaW50ZXJhY3Rpb24iLCJndWlsZF9pZCIsInRyYW5zZm9ybWVycyIsInNub3dmbGFrZSIsInVzZXIiLCJtZW1iZXIiLCJPYmplY3QiLCJjcmVhdGUiLCJwcm9wcyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwiYXBwbGljYXRpb25JZCIsImFwcGxpY2F0aW9uX2lkIiwidmVyc2lvbiIsImxvY2FsZSIsImd1aWxkTG9jYWxlIiwiZ3VpbGRfbG9jYWxlIiwiZ3VpbGQiLCJzaGFyZElkIiwiYXBwUGVybWlzc2lvbnMiLCJhcHBfcGVybWlzc2lvbnMiLCJtZXNzYWdlIiwiY2hhbm5lbCIsImNoYW5uZWxJZCIsImNoYW5uZWxfaWQiLCJhdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzIiwiYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzIiwiRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlIiwiR3VpbGRJbnN0YWxsIiwiVXNlckluc3RhbGwiLCJjb250ZXh0IiwiY29tcG9uZW50VHlwZSIsImNvbXBvbmVudF90eXBlIiwiY3VzdG9tSWQiLCJjdXN0b21faWQiLCJjb21wb25lbnRzIiwibWFwIiwiY29tcG9uZW50IiwidmFsdWVzIiwibmFtZSIsInJlc29sdmVkIiwib3B0IiwiaW50ZXJhY3Rpb25EYXRhT3B0aW9ucyIsInRhcmdldElkIiwidGFyZ2V0X2lkIiwiY3VzdG9taXplcnMiLCJvcHRpb24iLCJ2YWx1ZSIsImZvY3VzZWQiLCJ0cmFuc2Zvcm1lZCIsIm1lc3NhZ2VzIiwiQ29sbGVjdGlvbiIsImVudHJpZXMiLCJ1c2VycyIsIm1lbWJlcnMiLCJyb2xlcyIsInJvbGUiLCJjaGFubmVscyIsImtleSIsInBlcm1pc3Npb25zIiwiYXR0YWNobWVudHMiLCJhdHRhY2htZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQWlOZ0JBLG9CQUFvQjtlQUFwQkE7O0lBOERBQyw4QkFBOEI7ZUFBOUJBOztJQVlBQyxnQ0FBZ0M7ZUFBaENBOzs7dUJBL1FUO3VCQUNvQjt1QkFTcEI7QUFvSFAsTUFBTUMsa0JBQTBEO0lBQzlELE1BQU1DLFNBQVFDLFFBQVEsRUFBRUMsT0FBTztRQUM3QixJQUFJQyxPQUFPQywrQkFBd0IsQ0FBQ0Msd0JBQXdCO1FBRTVELDREQUE0RDtRQUM1RCxJQUFJLE9BQU9KLGFBQWEsVUFBVUEsV0FBVztZQUFFSyxTQUFTTDtRQUFTO1FBRWpFLDRGQUE0RjtRQUM1RixJQUFJQSxTQUFTTSxLQUFLLEVBQUVKLE9BQU9DLCtCQUF3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
|
|
@@ -15,7 +15,7 @@ let Permissions = class Permissions extends _ToggleBitfield.ToggleBitfieldBigint
|
|
|
15
15
|
super(BigInt(bits));
|
|
16
16
|
}
|
|
17
17
|
has(permission) {
|
|
18
|
-
return this.contains(
|
|
18
|
+
return this.contains(_types.BitwisePermissionFlags[permission]);
|
|
19
19
|
}
|
|
20
20
|
hasAll(permissions) {
|
|
21
21
|
return permissions.every((key)=>this.has(key));
|
|
@@ -25,4 +25,4 @@ let Permissions = class Permissions extends _ToggleBitfield.ToggleBitfieldBigint
|
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy9QZXJtaXNzaW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFBlcm1pc3Npb25TdHJpbmdzLCBCaXR3aXNlUGVybWlzc2lvbkZsYWdzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBUb2dnbGVCaXRmaWVsZEJpZ2ludCB9IGZyb20gJy4vVG9nZ2xlQml0ZmllbGQuanMnXG5cbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9ucyBleHRlbmRzIFRvZ2dsZUJpdGZpZWxkQmlnaW50IHtcbiAgY29uc3RydWN0b3IoYml0czogc3RyaW5nIHwgYmlnaW50KSB7XG4gICAgc3VwZXIoQmlnSW50KGJpdHMpKVxuICB9XG5cbiAgaGFzKHBlcm1pc3Npb246IFBlcm1pc3Npb25TdHJpbmdzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbnMoQml0d2lzZVBlcm1pc3Npb25GbGFnc1twZXJtaXNzaW9uXSlcbiAgfVxuXG4gIGhhc0FsbChwZXJtaXNzaW9uczogUGVybWlzc2lvblN0cmluZ3NbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwZXJtaXNzaW9ucy5ldmVyeSgoa2V5KSA9PiB0aGlzLmhhcyhrZXkpKVxuICB9XG5cbiAgbWlzc2luZyhwZXJtaXNzaW9uczogUGVybWlzc2lvblN0cmluZ3NbXSk6IFBlcm1pc3Npb25TdHJpbmdzW10ge1xuICAgIHJldHVybiBwZXJtaXNzaW9ucy5maWx0ZXIoKGtleSkgPT4gIXRoaXMuaGFzKGtleSkpXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJQZXJtaXNzaW9ucyIsIlRvZ2dsZUJpdGZpZWxkQmlnaW50IiwiY29uc3RydWN0b3IiLCJiaXRzIiwiQmlnSW50IiwiaGFzIiwicGVybWlzc2lvbiIsImNvbnRhaW5zIiwiQml0d2lzZVBlcm1pc3Npb25GbGFncyIsImhhc0FsbCIsInBlcm1pc3Npb25zIiwiZXZlcnkiLCJrZXkiLCJtaXNzaW5nIiwiZmlsdGVyIl0sIm1hcHBpbmdzIjoiOzs7OytCQUdhQTs7O2VBQUFBOzs7dUJBSGtEO2dDQUMxQjtBQUU5QixJQUFBLEFBQU1BLGNBQU4sTUFBTUEsb0JBQW9CQyxvQ0FBb0I7SUFDbkRDLFlBQVlDLElBQXFCLENBQUU7UUFDakMsS0FBSyxDQUFDQyxPQUFPRDtJQUNmO0lBRUFFLElBQUlDLFVBQTZCLEVBQVc7UUFDMUMsT0FBTyxJQUFJLENBQUNDLFFBQVEsQ0FBQ0MsNkJBQXNCLENBQUNGLFdBQVc7SUFDekQ7SUFFQUcsT0FBT0MsV0FBZ0MsRUFBVztRQUNoRCxPQUFPQSxZQUFZQyxLQUFLLENBQUMsQ0FBQ0MsTUFBUSxJQUFJLENBQUNQLEdBQUcsQ0FBQ087SUFDN0M7SUFFQUMsUUFBUUgsV0FBZ0MsRUFBdUI7UUFDN0QsT0FBT0EsWUFBWUksTUFBTSxDQUFDLENBQUNGLE1BQVEsQ0FBQyxJQUFJLENBQUNQLEdBQUcsQ0FBQ087SUFDL0M7QUFDRiJ9
|