@discordeno/bot 19.0.0-next.f8f976a → 19.0.0-next.f9bdfce
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/bot.cjs +1 -1
- package/dist/cjs/handlers/emojis/GUILD_EMOJIS_UPDATE.cjs +2 -2
- package/dist/cjs/handlers/guilds/GUILD_STICKERS_UPDATE.cjs +8 -5
- package/dist/cjs/handlers/interactions/INTERACTION_CREATE.cjs +6 -3
- package/dist/cjs/handlers/messages/MESSAGE_REACTION_ADD.cjs +4 -2
- package/dist/cjs/handlers/messages/MESSAGE_REACTION_REMOVE.cjs +3 -2
- package/dist/cjs/transformers/attachment.cjs +2 -1
- package/dist/cjs/transformers/avatarDecorationData.cjs +20 -0
- package/dist/cjs/transformers/channel.cjs +29 -2
- package/dist/cjs/transformers/emoji.cjs +19 -4
- package/dist/cjs/transformers/guild.cjs +5 -2
- package/dist/cjs/transformers/index.cjs +2 -1
- package/dist/cjs/transformers/interaction.cjs +38 -41
- package/dist/cjs/transformers/invite.cjs +2 -1
- package/dist/cjs/transformers/member.cjs +3 -2
- package/dist/cjs/transformers/message.cjs +32 -33
- package/dist/cjs/transformers/reverse/member.cjs +7 -2
- package/dist/cjs/transformers/sku.cjs +1 -1
- 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/user.cjs +2 -2
- package/dist/cjs/transformers.cjs +48 -7
- package/dist/cjs/typings.cjs +4 -26
- package/dist/esm/bot.js +1 -1
- package/dist/esm/handlers/emojis/GUILD_EMOJIS_UPDATE.js +2 -2
- package/dist/esm/handlers/guilds/GUILD_STICKERS_UPDATE.js +8 -5
- package/dist/esm/handlers/interactions/INTERACTION_CREATE.js +6 -3
- package/dist/esm/handlers/messages/MESSAGE_REACTION_ADD.js +4 -2
- package/dist/esm/handlers/messages/MESSAGE_REACTION_REMOVE.js +3 -2
- package/dist/esm/transformers/attachment.js +2 -1
- package/dist/esm/transformers/avatarDecorationData.js +10 -0
- package/dist/esm/transformers/channel.js +27 -3
- package/dist/esm/transformers/emoji.js +8 -1
- package/dist/esm/transformers/guild.js +5 -2
- package/dist/esm/transformers/index.js +2 -1
- package/dist/esm/transformers/interaction.js +37 -40
- package/dist/esm/transformers/invite.js +2 -1
- package/dist/esm/transformers/member.js +3 -2
- package/dist/esm/transformers/message.js +3 -4
- package/dist/esm/transformers/reverse/member.js +7 -2
- package/dist/esm/transformers/sku.js +1 -1
- 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/user.js +2 -2
- package/dist/esm/transformers.js +51 -10
- package/dist/esm/typings.js +1 -15
- package/dist/types/bot.d.ts +9 -3
- package/dist/types/bot.d.ts.map +1 -1
- package/dist/types/handlers/guilds/GUILD_STICKERS_UPDATE.d.ts.map +1 -1
- 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/handlers/messages/MESSAGE_REACTION_ADD.d.ts.map +1 -1
- package/dist/types/handlers/messages/MESSAGE_REACTION_REMOVE.d.ts.map +1 -1
- package/dist/types/transformers/attachment.d.ts +2 -0
- package/dist/types/transformers/attachment.d.ts.map +1 -1
- package/dist/types/transformers/avatarDecorationData.d.ts +9 -0
- package/dist/types/transformers/avatarDecorationData.d.ts.map +1 -0
- 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/guild.d.ts +3 -3
- package/dist/types/transformers/guild.d.ts.map +1 -1
- package/dist/types/transformers/index.d.ts +1 -0
- package/dist/types/transformers/index.d.ts.map +1 -1
- package/dist/types/transformers/interaction.d.ts +8 -14
- package/dist/types/transformers/interaction.d.ts.map +1 -1
- package/dist/types/transformers/invite.d.ts +3 -1
- package/dist/types/transformers/invite.d.ts.map +1 -1
- package/dist/types/transformers/member.d.ts +4 -1
- package/dist/types/transformers/member.d.ts.map +1 -1
- package/dist/types/transformers/message.d.ts +2 -2
- package/dist/types/transformers/message.d.ts.map +1 -1
- package/dist/types/transformers/reverse/member.d.ts.map +1 -1
- package/dist/types/transformers/sku.d.ts +2 -2
- package/dist/types/transformers/sku.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 +50 -35
- package/dist/types/transformers/toggles/guild.d.ts.map +1 -1
- package/dist/types/transformers/user.d.ts +3 -3
- package/dist/types/transformers/user.d.ts.map +1 -1
- package/dist/types/transformers.d.ts +50 -8
- package/dist/types/transformers.d.ts.map +1 -1
- package/dist/types/typings.d.ts +0 -24
- package/dist/types/typings.d.ts.map +1 -1
- package/package.json +13 -13
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -19,28 +19,33 @@ _export(exports, {
|
|
|
19
19
|
const _types = require("@discordeno/types");
|
|
20
20
|
const _ToggleBitfield = require("./ToggleBitfield.cjs");
|
|
21
21
|
const featureNames = [
|
|
22
|
-
'
|
|
23
|
-
'
|
|
24
|
-
'
|
|
25
|
-
'
|
|
26
|
-
'
|
|
22
|
+
'animatedBanner',
|
|
23
|
+
'animatedIcon',
|
|
24
|
+
'applicationCommandPermissionsV2',
|
|
25
|
+
'autoModeration',
|
|
26
|
+
'banner',
|
|
27
27
|
'community',
|
|
28
|
+
'creatorMonetizableProvisional',
|
|
29
|
+
'creatorStorePage',
|
|
28
30
|
'developerSupportServer',
|
|
29
|
-
'news',
|
|
30
31
|
'discoverable',
|
|
31
32
|
'featurable',
|
|
32
|
-
'
|
|
33
|
-
'
|
|
34
|
-
'welcomeScreenEnabled',
|
|
33
|
+
'invitesDisabled',
|
|
34
|
+
'inviteSplash',
|
|
35
35
|
'memberVerificationGateEnabled',
|
|
36
|
-
'previewEnabled',
|
|
37
|
-
'ticketedEventsEnabled',
|
|
38
|
-
'monetizationEnabled',
|
|
39
36
|
'moreStickers',
|
|
37
|
+
'news',
|
|
38
|
+
'partnered',
|
|
39
|
+
'previewEnabled',
|
|
40
|
+
'raidAlertsDisabled',
|
|
40
41
|
'roleIcons',
|
|
41
|
-
'
|
|
42
|
-
'
|
|
43
|
-
'
|
|
42
|
+
'roleSubscriptionsAvailableForPurchase',
|
|
43
|
+
'roleSubscriptionsEnabled',
|
|
44
|
+
'ticketedEventsEnabled',
|
|
45
|
+
'vanityUrl',
|
|
46
|
+
'verified',
|
|
47
|
+
'vipRegions',
|
|
48
|
+
'welcomeScreenEnabled'
|
|
44
49
|
];
|
|
45
50
|
const GuildToggle = {
|
|
46
51
|
/** Whether the bot is the owner of the guild */ owner: 1n << 0n,
|
|
@@ -49,32 +54,34 @@ const GuildToggle = {
|
|
|
49
54
|
/** Whether this guild is unavailable due to an outage */ unavailable: 1n << 3n,
|
|
50
55
|
/** Whether the guild has the boost progress bar enabled */ premiumProgressBarEnabled: 1n << 4n,
|
|
51
56
|
// GUILD FEATURES ARE BELOW THIS
|
|
52
|
-
|
|
53
|
-
/** Whether the guild has access to set
|
|
54
|
-
/** Whether the guild has access to set
|
|
55
|
-
/** Whether the guild is
|
|
56
|
-
/** Whether the guild
|
|
57
|
+
// MISSING VALUES IN THE BITFIELD: 24, 25, 26
|
|
58
|
+
/** Whether the guild has access to set an animated guild banner image */ animatedBanner: 1n << 11n,
|
|
59
|
+
/** Whether the guild has access to set an animated guild icon */ animatedIcon: 1n << 16n,
|
|
60
|
+
/** Whether the guild is using the old permissions configuration behavior */ applicationCommandPermissionsV2: 1n << 14n,
|
|
61
|
+
/** Whether the guild has set up auto moderation rules */ autoModeration: 1n << 28n,
|
|
62
|
+
/** Whether the guild has access to set a guild banner image */ banner: 1n << 17n,
|
|
57
63
|
/** Whether the guild can enable welcome screen, Membership Screening, stage channels and discovery, and receives community updates */ community: 1n << 10n,
|
|
58
64
|
/** Whether the guild has enabled monetization. */ creatorMonetizableProvisional: 1n << 31n,
|
|
59
65
|
/** Whether the guild has enabled the role subscription promo page. */ creatorStorePage: 1n << 32n,
|
|
60
|
-
/** Whether the guild has
|
|
61
|
-
/** Whether the guild has access to create news channels */ news: 1n << 12n,
|
|
66
|
+
/** Whether the guild has been set as a support server on the App Directory */ developerSupportServer: 1n << 30n,
|
|
62
67
|
/** Whether the guild is able to be discovered in the directory */ discoverable: 1n << 13n,
|
|
63
68
|
/** Whether the guild is able to be featured in the directory */ featurable: 1n << 15n,
|
|
64
|
-
/** Whether the guild has
|
|
65
|
-
/** Whether the guild has access to set
|
|
66
|
-
/** Whether the guild has enabled the welcome screen */ welcomeScreenEnabled: 1n << 18n,
|
|
69
|
+
/** Whether the guild has paused invites, preventing new users from joining */ invitesDisabled: 1n << 29n,
|
|
70
|
+
/** Whether the guild has access to set an invite splash background */ inviteSplash: 1n << 5n,
|
|
67
71
|
/** Whether the guild has enabled [Membership Screening](https://discord.com/developers/docs/resources/guild#membership-screening-object) */ memberVerificationGateEnabled: 1n << 19n,
|
|
68
|
-
/** Whether the guild can be previewed before joining via Membership Screening or the directory */ previewEnabled: 1n << 20n,
|
|
69
|
-
/** Whether the guild has enabled ticketed events */ ticketedEventsEnabled: 1n << 21n,
|
|
70
|
-
/** Whether the guild has enabled monetization */ monetizationEnabled: 1n << 22n,
|
|
71
72
|
/** Whether the guild has increased custom sticker slots */ moreStickers: 1n << 23n,
|
|
73
|
+
/** Whether the guild has access to create news channels */ news: 1n << 12n,
|
|
74
|
+
/** Whether the guild is partnered */ partnered: 1n << 9n,
|
|
75
|
+
/** Whether the guild can be previewed before joining via Membership Screening or the directory */ previewEnabled: 1n << 20n,
|
|
76
|
+
/** Whether the guild has disabled alerts for join raids in the configured safety alerts channel */ raidAlertsDisabled: 1n << 22n,
|
|
72
77
|
/** Whether the guild is able to set role icons */ roleIcons: 1n << 27n,
|
|
73
78
|
/** Whether the guild has role subscriptions that can be purchased. */ roleSubscriptionsAvailableForPurchase: 1n << 33n,
|
|
74
79
|
/** Whether the guild has enabled role subscriptions. */ roleSubscriptionsEnabled: 1n << 34n,
|
|
75
|
-
/** Whether the guild has
|
|
76
|
-
/** Whether the guild has
|
|
77
|
-
/** Whether the guild
|
|
80
|
+
/** Whether the guild has enabled ticketed events */ ticketedEventsEnabled: 1n << 21n,
|
|
81
|
+
/** Whether the guild has access to set a vanity URL */ vanityUrl: 1n << 7n,
|
|
82
|
+
/** Whether the guild is verified */ verified: 1n << 8n,
|
|
83
|
+
/** Whether the guild has access to set 384 kbps bitrate in voice (previously VIP voice servers) */ vipRegions: 1n << 6n,
|
|
84
|
+
/** Whether the guild has enabled the welcome screen */ welcomeScreenEnabled: 1n << 18n
|
|
78
85
|
};
|
|
79
86
|
let GuildToggles = class GuildToggles extends _ToggleBitfield.ToggleBitfieldBigint {
|
|
80
87
|
constructor(guildOrTogglesBigint){
|
|
@@ -89,33 +96,33 @@ let GuildToggles = class GuildToggles extends _ToggleBitfield.ToggleBitfieldBigi
|
|
|
89
96
|
if (guild.large) this.add(GuildToggle.large);
|
|
90
97
|
if (guild.unavailable) this.add(GuildToggle.unavailable);
|
|
91
98
|
if (guild.premium_progress_bar_enabled) this.add(GuildToggle.premiumProgressBarEnabled);
|
|
92
|
-
if (guild.features.includes(_types.GuildFeatures.
|
|
93
|
-
if (guild.features.includes(_types.GuildFeatures.
|
|
94
|
-
if (guild.features.includes(_types.GuildFeatures.
|
|
95
|
-
if (guild.features.includes(_types.GuildFeatures.
|
|
96
|
-
if (guild.features.includes(_types.GuildFeatures.
|
|
99
|
+
if (guild.features.includes(_types.GuildFeatures.AnimatedBanner)) this.add(GuildToggle.animatedBanner);
|
|
100
|
+
if (guild.features.includes(_types.GuildFeatures.AnimatedIcon)) this.add(GuildToggle.animatedIcon);
|
|
101
|
+
if (guild.features.includes(_types.GuildFeatures.ApplicationCommandPermissionsV2)) this.add(GuildToggle.applicationCommandPermissionsV2);
|
|
102
|
+
if (guild.features.includes(_types.GuildFeatures.AutoModeration)) this.add(GuildToggle.autoModeration);
|
|
103
|
+
if (guild.features.includes(_types.GuildFeatures.Banner)) this.add(GuildToggle.banner);
|
|
97
104
|
if (guild.features.includes(_types.GuildFeatures.Community)) this.add(GuildToggle.community);
|
|
98
105
|
if (guild.features.includes(_types.GuildFeatures.CreatorMonetizableProvisional)) this.add(GuildToggle.creatorMonetizableProvisional);
|
|
99
106
|
if (guild.features.includes(_types.GuildFeatures.CreatorStorePage)) this.add(GuildToggle.creatorStorePage);
|
|
100
107
|
if (guild.features.includes(_types.GuildFeatures.DeveloperSupportServer)) this.add(GuildToggle.developerSupportServer);
|
|
101
|
-
if (guild.features.includes(_types.GuildFeatures.AnimatedBanner)) this.add(GuildToggle.animatedBanner);
|
|
102
|
-
if (guild.features.includes(_types.GuildFeatures.News)) this.add(GuildToggle.news);
|
|
103
108
|
if (guild.features.includes(_types.GuildFeatures.Discoverable)) this.add(GuildToggle.discoverable);
|
|
104
109
|
if (guild.features.includes(_types.GuildFeatures.Featurable)) this.add(GuildToggle.featurable);
|
|
105
|
-
if (guild.features.includes(_types.GuildFeatures.
|
|
106
|
-
if (guild.features.includes(_types.GuildFeatures.
|
|
107
|
-
if (guild.features.includes(_types.GuildFeatures.
|
|
108
|
-
if (guild.features.includes(_types.GuildFeatures.MemberVerificationGateEnabled)) {
|
|
109
|
-
this.add(GuildToggle.memberVerificationGateEnabled);
|
|
110
|
-
}
|
|
111
|
-
if (guild.features.includes(_types.GuildFeatures.PreviewEnabled)) this.add(GuildToggle.previewEnabled);
|
|
112
|
-
if (guild.features.includes(_types.GuildFeatures.TicketedEventsEnabled)) this.add(GuildToggle.ticketedEventsEnabled);
|
|
110
|
+
if (guild.features.includes(_types.GuildFeatures.InvitesDisabled)) this.add(GuildToggle.invitesDisabled);
|
|
111
|
+
if (guild.features.includes(_types.GuildFeatures.InviteSplash)) this.add(GuildToggle.inviteSplash);
|
|
112
|
+
if (guild.features.includes(_types.GuildFeatures.MemberVerificationGateEnabled)) this.add(GuildToggle.memberVerificationGateEnabled);
|
|
113
113
|
if (guild.features.includes(_types.GuildFeatures.MoreStickers)) this.add(GuildToggle.moreStickers);
|
|
114
|
+
if (guild.features.includes(_types.GuildFeatures.News)) this.add(GuildToggle.news);
|
|
115
|
+
if (guild.features.includes(_types.GuildFeatures.Partnered)) this.add(GuildToggle.partnered);
|
|
116
|
+
if (guild.features.includes(_types.GuildFeatures.PreviewEnabled)) this.add(GuildToggle.previewEnabled);
|
|
117
|
+
if (guild.features.includes(_types.GuildFeatures.RaidAlertsDisabled)) this.add(GuildToggle.raidAlertsDisabled);
|
|
114
118
|
if (guild.features.includes(_types.GuildFeatures.RoleIcons)) this.add(GuildToggle.roleIcons);
|
|
115
119
|
if (guild.features.includes(_types.GuildFeatures.RoleSubscriptionsAvailableForPurchase)) this.add(GuildToggle.roleSubscriptionsAvailableForPurchase);
|
|
116
120
|
if (guild.features.includes(_types.GuildFeatures.RoleSubscriptionsEnabled)) this.add(GuildToggle.roleSubscriptionsEnabled);
|
|
117
|
-
if (guild.features.includes(_types.GuildFeatures.
|
|
118
|
-
if (guild.features.includes(_types.GuildFeatures.
|
|
121
|
+
if (guild.features.includes(_types.GuildFeatures.TicketedEventsEnabled)) this.add(GuildToggle.ticketedEventsEnabled);
|
|
122
|
+
if (guild.features.includes(_types.GuildFeatures.VanityUrl)) this.add(GuildToggle.vanityUrl);
|
|
123
|
+
if (guild.features.includes(_types.GuildFeatures.Verified)) this.add(GuildToggle.verified);
|
|
124
|
+
if (guild.features.includes(_types.GuildFeatures.VipRegions)) this.add(GuildToggle.vipRegions);
|
|
125
|
+
if (guild.features.includes(_types.GuildFeatures.WelcomeScreenEnabled)) this.add(GuildToggle.welcomeScreenEnabled);
|
|
119
126
|
}
|
|
120
127
|
}
|
|
121
128
|
get features() {
|
|
@@ -193,9 +200,6 @@ let GuildToggles = class GuildToggles extends _ToggleBitfield.ToggleBitfieldBigi
|
|
|
193
200
|
/** Whether the guild has enabled ticketed events */ get ticketedEventsEnabled() {
|
|
194
201
|
return this.has('ticketedEventsEnabled');
|
|
195
202
|
}
|
|
196
|
-
/** Whether the guild has enabled monetization */ get monetizationEnabled() {
|
|
197
|
-
return this.has('monetizationEnabled');
|
|
198
|
-
}
|
|
199
203
|
/** Whether the guild has increased custom sticker slots */ get moreStickers() {
|
|
200
204
|
return this.has('moreStickers');
|
|
201
205
|
}
|
|
@@ -208,6 +212,24 @@ let GuildToggles = class GuildToggles extends _ToggleBitfield.ToggleBitfieldBigi
|
|
|
208
212
|
/** Whether the guild has paused invites, preventing new users from joining */ get invitesDisabled() {
|
|
209
213
|
return this.has('invitesDisabled');
|
|
210
214
|
}
|
|
215
|
+
/** Whether the guild is using the old permissions configuration behavior */ get applicationCommandPermissionsV2() {
|
|
216
|
+
return this.has('applicationCommandPermissionsV2');
|
|
217
|
+
}
|
|
218
|
+
/** Whether the guild has enabled monetization. */ get creatorMonetizableProvisional() {
|
|
219
|
+
return this.has('creatorMonetizableProvisional');
|
|
220
|
+
}
|
|
221
|
+
/** Whether the guild has enabled the role subscription promo page. */ get creatorStorePage() {
|
|
222
|
+
return this.has('creatorStorePage');
|
|
223
|
+
}
|
|
224
|
+
/** Whether the guild has disabled alerts for join raids in the configured safety alerts channel */ get raidAlertsDisabled() {
|
|
225
|
+
return this.has('raidAlertsDisabled');
|
|
226
|
+
}
|
|
227
|
+
/** Whether the guild has role subscriptions that can be purchased. */ get roleSubscriptionsAvailableForPurchase() {
|
|
228
|
+
return this.has('roleSubscriptionsAvailableForPurchase');
|
|
229
|
+
}
|
|
230
|
+
/** Whether the guild has enabled role subscriptions. */ get roleSubscriptionsEnabled() {
|
|
231
|
+
return this.has('roleSubscriptionsEnabled');
|
|
232
|
+
}
|
|
211
233
|
/** Checks whether or not the permissions exist in this */ has(permissions) {
|
|
212
234
|
if (!Array.isArray(permissions)) return super.contains(GuildToggle[permissions]);
|
|
213
235
|
return super.contains(permissions.reduce((a, b)=>a |= GuildToggle[b], 0n));
|
|
@@ -221,4 +243,4 @@ let GuildToggles = class GuildToggles extends _ToggleBitfield.ToggleBitfieldBigi
|
|
|
221
243
|
}
|
|
222
244
|
};
|
|
223
245
|
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy9ndWlsZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHdWlsZEZlYXR1cmVzLCB0eXBlIERpc2NvcmRHdWlsZCB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgVG9nZ2xlQml0ZmllbGRCaWdpbnQgfSBmcm9tICcuL1RvZ2dsZUJpdGZpZWxkLmpzJ1xuXG5jb25zdCBmZWF0dXJlTmFtZXMgPSBbXG4gICdpbnZpdGVTcGxhc2gnLFxuICAndmlwUmVnaW9ucycsXG4gICd2YW5pdHlVcmwnLFxuICAndmVyaWZpZWQnLFxuICAncGFydG5lcmVkJyxcbiAgJ2NvbW11bml0eScsXG4gICdkZXZlbG9wZXJTdXBwb3J0U2VydmVyJyxcbiAgJ25ld3MnLFxuICAnZGlzY292ZXJhYmxlJyxcbiAgJ2ZlYXR1cmFibGUnLFxuICAnYW5pbWF0ZWRJY29uJyxcbiAgJ2Jhbm5lcicsXG4gICd3ZWxjb21lU2NyZWVuRW5hYmxlZCcsXG4gICdtZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCcsXG4gICdwcmV2aWV3RW5hYmxlZCcsXG4gICd0aWNrZXRlZEV2ZW50c0VuYWJsZWQnLFxuICAnbW9uZXRpemF0aW9uRW5hYmxlZCcsXG4gICdtb3JlU3RpY2tlcnMnLFxuICAncm9sZUljb25zJyxcbiAgJ2F1dG9Nb2RlcmF0aW9uJyxcbiAgJ2ludml0ZXNEaXNhYmxlZCcsXG4gICdhbmltYXRlZEJhbm5lcicsXG5dXG5cbmV4cG9ydCBjb25zdCBHdWlsZFRvZ2dsZSA9IHtcbiAgLyoqIFdoZXRoZXIgdGhlIGJvdCBpcyB0aGUgb3duZXIgb2YgdGhlIGd1aWxkICovXG4gIG93bmVyOiAxbiA8PCAwbixcbiAgLyoqIFdoZXRoZXIgdGhlIHNlcnZlciB3aWRnZXQgaXMgZW5hYmxlZCAqL1xuICB3aWRnZXRFbmFibGVkOiAxbiA8PCAxbixcbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBjb25zaWRlcmVkIGEgbGFyZ2UgZ3VpbGQgKi9cbiAgbGFyZ2U6IDFuIDw8IDJuLFxuICAvKiogV2hldGhlciB0aGlzIGd1aWxkIGlzIHVuYXZhaWxhYmxlIGR1ZSB0byBhbiBvdXRhZ2UgKi9cbiAgdW5hdmFpbGFibGU6IDFuIDw8IDNuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHRoZSBib29zdCBwcm9ncmVzcyBiYXIgZW5hYmxlZCAqL1xuICBwcmVtaXVtUHJvZ3Jlc3NCYXJFbmFibGVkOiAxbiA8PCA0bixcblxuICAvLyBHVUlMRCBGRUFUVVJFUyBBUkUgQkVMT1cgVEhJU1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhbiBpbnZpdGUgc3BsYXNoIGJhY2tncm91bmQgKi9cbiAgaW52aXRlU3BsYXNoOiAxbiA8PCA1bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IDM4NCBrYnBzIGJpdHJhdGUgaW4gdm9pY2UgKHByZXZpb3VzbHkgVklQIHZvaWNlIHNlcnZlcnMpICovXG4gIHZpcFJlZ2lvbnM6IDFuIDw8IDZuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYSB2YW5pdHkgVVJMICovXG4gIHZhbml0eVVybDogMW4gPDwgN24sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyB2ZXJpZmllZCAqL1xuICB2ZXJpZmllZDogMW4gPDwgOG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBwYXJ0bmVyZWQgKi9cbiAgcGFydG5lcmVkOiAxbiA8PCA5bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGNhbiBlbmFibGUgd2VsY29tZSBzY3JlZW4sIE1lbWJlcnNoaXAgU2NyZWVuaW5nLCBzdGFnZSBjaGFubmVscyBhbmQgZGlzY292ZXJ5LCBhbmQgcmVjZWl2ZXMgY29tbXVuaXR5IHVwZGF0ZXMgKi9cbiAgY29tbXVuaXR5OiAxbiA8PCAxMG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCBtb25ldGl6YXRpb24uICovXG4gIGNyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsOiAxbiA8PCAzMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCB0aGUgcm9sZSBzdWJzY3JpcHRpb24gcHJvbW8gcGFnZS4gKi9cbiAgY3JlYXRvclN0b3JlUGFnZTogMW4gPDwgMzJuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYW4gYW5pbWF0ZWQgZ3VpbGQgYmFubmVyIGltYWdlICovXG4gIGFuaW1hdGVkQmFubmVyOiAxbiA8PCAxMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIGNyZWF0ZSBuZXdzIGNoYW5uZWxzICovXG4gIG5ld3M6IDFuIDw8IDEybixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIGFibGUgdG8gYmUgZGlzY292ZXJlZCBpbiB0aGUgZGlyZWN0b3J5ICovXG4gIGRpc2NvdmVyYWJsZTogMW4gPDwgMTNuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgYWJsZSB0byBiZSBmZWF0dXJlZCBpbiB0aGUgZGlyZWN0b3J5ICovXG4gIGZlYXR1cmFibGU6IDFuIDw8IDE1bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGFuIGFuaW1hdGVkIGd1aWxkIGljb24gKi9cbiAgYW5pbWF0ZWRJY29uOiAxbiA8PCAxNm4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhIGd1aWxkIGJhbm5lciBpbWFnZSAqL1xuICBiYW5uZXI6IDFuIDw8IDE3bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIHRoZSB3ZWxjb21lIHNjcmVlbiAqL1xuICB3ZWxjb21lU2NyZWVuRW5hYmxlZDogMW4gPDwgMThuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgW01lbWJlcnNoaXAgU2NyZWVuaW5nXShodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjbWVtYmVyc2hpcC1zY3JlZW5pbmctb2JqZWN0KSAqL1xuICBtZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZDogMW4gPDwgMTluLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgY2FuIGJlIHByZXZpZXdlZCBiZWZvcmUgam9pbmluZyB2aWEgTWVtYmVyc2hpcCBTY3JlZW5pbmcgb3IgdGhlIGRpcmVjdG9yeSAqL1xuICBwcmV2aWV3RW5hYmxlZDogMW4gPDwgMjBuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgdGlja2V0ZWQgZXZlbnRzICovXG4gIHRpY2tldGVkRXZlbnRzRW5hYmxlZDogMW4gPDwgMjFuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgbW9uZXRpemF0aW9uICovXG4gIG1vbmV0aXphdGlvbkVuYWJsZWQ6IDFuIDw8IDIybixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBpbmNyZWFzZWQgY3VzdG9tIHN0aWNrZXIgc2xvdHMgKi9cbiAgbW9yZVN0aWNrZXJzOiAxbiA8PCAyM24sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBhYmxlIHRvIHNldCByb2xlIGljb25zICovXG4gIHJvbGVJY29uczogMW4gPDwgMjduLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHJvbGUgc3Vic2NyaXB0aW9ucyB0aGF0IGNhbiBiZSBwdXJjaGFzZWQuICovXG4gIHJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2U6IDFuIDw8IDMzbixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIHJvbGUgc3Vic2NyaXB0aW9ucy4gKi9cbiAgcm9sZVN1YnNjcmlwdGlvbnNFbmFibGVkOiAxbiA8PCAzNG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgc2V0IHVwIGF1dG8gbW9kZXJhdGlvbiBydWxlcyAqL1xuICBhdXRvTW9kZXJhdGlvbjogMW4gPDwgMjhuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHBhdXNlZCBpbnZpdGVzLCBwcmV2ZW50aW5nIG5ldyB1c2VycyBmcm9tIGpvaW5pbmcgKi9cbiAgaW52aXRlc0Rpc2FibGVkOiAxbiA8PCAyOW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYmVlbiBzZXQgYXMgYSBzdXBwb3J0IHNlcnZlciBvbiB0aGUgQXBwIERpcmVjdG9yeSAqL1xuICBkZXZlbG9wZXJTdXBwb3J0U2VydmVyOiAxbiA8PCAzMG4sXG59XG5cbmV4cG9ydCBjbGFzcyBHdWlsZFRvZ2dsZXMgZXh0ZW5kcyBUb2dnbGVCaXRmaWVsZEJpZ2ludCB7XG4gIGNvbnN0cnVjdG9yKGd1aWxkT3JUb2dnbGVzQmlnaW50OiBEaXNjb3JkR3VpbGQgfCBiaWdpbnQpIHtcbiAgICBzdXBlcigpXG5cbiAgICBpZiAodHlwZW9mIGd1aWxkT3JUb2dnbGVzQmlnaW50ID09PSAnYmlnaW50JykgdGhpcy5iaXRmaWVsZCA9IGd1aWxkT3JUb2dnbGVzQmlnaW50XG4gICAgZWxzZSB7XG4gICAgICBjb25zdCBndWlsZCA9IGd1aWxkT3JUb2dnbGVzQmlnaW50XG4gICAgICAvLyBDYXVzZSBkaXNjb3JkIGJlIHNtYXJ0IGxpa2UgdGhhdFxuICAgICAgaWYgKCFndWlsZC5mZWF0dXJlcykgZ3VpbGQuZmVhdHVyZXMgPSBbXVxuXG4gICAgICBpZiAoZ3VpbGQub3duZXIpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm93bmVyKVxuICAgICAgaWYgKGd1aWxkLndpZGdldF9lbmFibGVkKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS53aWRnZXRFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmxhcmdlKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5sYXJnZSlcbiAgICAgIGlmIChndWlsZC51bmF2YWlsYWJsZSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUudW5hdmFpbGFibGUpXG4gICAgICBpZiAoZ3VpbGQucHJlbWl1bV9wcm9ncmVzc19iYXJfZW5hYmxlZCkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZClcblxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuSW52aXRlU3BsYXNoKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuaW52aXRlU3BsYXNoKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuVmlwUmVnaW9ucykpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnZpcFJlZ2lvbnMpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5WYW5pdHlVcmwpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS52YW5pdHlVcmwpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5WZXJpZmllZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnZlcmlmaWVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUGFydG5lcmVkKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucGFydG5lcmVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuQ29tbXVuaXR5KSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuY29tbXVuaXR5KVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuQ3JlYXRvck1vbmV0aXphYmxlUHJvdmlzaW9uYWwpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5jcmVhdG9yTW9uZXRpemFibGVQcm92aXNpb25hbClcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkNyZWF0b3JTdG9yZVBhZ2UpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5jcmVhdG9yU3RvcmVQYWdlKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuRGV2ZWxvcGVyU3VwcG9ydFNlcnZlcikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmRldmVsb3BlclN1cHBvcnRTZXJ2ZXIpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5BbmltYXRlZEJhbm5lcikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmFuaW1hdGVkQmFubmVyKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuTmV3cykpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm5ld3MpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5EaXNjb3ZlcmFibGUpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5kaXNjb3ZlcmFibGUpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5GZWF0dXJhYmxlKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuZmVhdHVyYWJsZSlcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkFuaW1hdGVkSWNvbikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmFuaW1hdGVkSWNvbilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkJhbm5lcikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmJhbm5lcilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLldlbGNvbWVTY3JlZW5FbmFibGVkKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUud2VsY29tZVNjcmVlbkVuYWJsZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5NZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCkpIHtcbiAgICAgICAgdGhpcy5hZGQoR3VpbGRUb2dnbGUubWVtYmVyVmVyaWZpY2F0aW9uR2F0ZUVuYWJsZWQpXG4gICAgICB9XG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5QcmV2aWV3RW5hYmxlZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnByZXZpZXdFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuVGlja2V0ZWRFdmVudHNFbmFibGVkKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUudGlja2V0ZWRFdmVudHNFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuTW9yZVN0aWNrZXJzKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUubW9yZVN0aWNrZXJzKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUm9sZUljb25zKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucm9sZUljb25zKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUm9sZVN1YnNjcmlwdGlvbnNBdmFpbGFibGVGb3JQdXJjaGFzZSkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5Sb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5yb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5BdXRvTW9kZXJhdGlvbikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmF1dG9Nb2RlcmF0aW9uKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuSW52aXRlc0Rpc2FibGVkKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuaW52aXRlc0Rpc2FibGVkKVxuICAgIH1cbiAgfVxuXG4gIGdldCBmZWF0dXJlcygpOiBHdWlsZFRvZ2dsZUtleXNbXSB7XG4gICAgY29uc3QgZmVhdHVyZXM6IEd1aWxkVG9nZ2xlS2V5c1tdID0gW11cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhHdWlsZFRvZ2dsZSkpIHtcbiAgICAgIGlmICghZmVhdHVyZU5hbWVzLmluY2x1ZGVzKGtleSkpIGNvbnRpbnVlXG4gICAgICBpZiAoIXN1cGVyLmNvbnRhaW5zKEd1aWxkVG9nZ2xlW2tleSBhcyBHdWlsZFRvZ2dsZUtleXNdKSkgY29udGludWVcblxuICAgICAgZmVhdHVyZXMucHVzaChrZXkgYXMgR3VpbGRUb2dnbGVLZXlzKVxuICAgIH1cblxuICAgIHJldHVybiBmZWF0dXJlc1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGJvdCBpcyB0aGUgb3duZXIgb2YgdGhlIGd1aWxkICovXG4gIGdldCBvd25lcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ293bmVyJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBzZXJ2ZXIgd2lkZ2V0IGlzIGVuYWJsZWQgKi9cbiAgZ2V0IHdpZGdldEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCd3aWRnZXRFbmFibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoaXMgaXMgY29uc2lkZXJlZCBhIGxhcmdlIGd1aWxkICovXG4gIGdldCBsYXJnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2xhcmdlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoaXMgZ3VpbGQgaXMgdW5hdmFpbGFibGUgZHVlIHRvIGFuIG91dGFnZSAqL1xuICBnZXQgdW5hdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCd1bmF2YWlsYWJsZScpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHRoZSBib29zdCBwcm9ncmVzcyBiYXIgZW5hYmxlZCAqL1xuICBnZXQgcHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3ByZW1pdW1Qcm9ncmVzc0JhckVuYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGFuIGludml0ZSBzcGxhc2ggYmFja2dyb3VuZCAqL1xuICBnZXQgaW52aXRlU3BsYXNoKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnaW52aXRlU3BsYXNoJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCAzODQga2JwcyBiaXRyYXRlIGluIHZvaWNlIChwcmV2aW91c2x5IFZJUCB2b2ljZSBzZXJ2ZXJzKSAqL1xuICBnZXQgdmlwUmVnaW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3ZpcFJlZ2lvbnMnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGEgdmFuaXR5IFVSTCAqL1xuICBnZXQgdmFuaXR5VXJsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygndmFuaXR5VXJsJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyB2ZXJpZmllZCAqL1xuICBnZXQgdmVyaWZpZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCd2ZXJpZmllZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgcGFydG5lcmVkICovXG4gIGdldCBwYXJ0bmVyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdwYXJ0bmVyZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGNhbiBlbmFibGUgd2VsY29tZSBzY3JlZW4sIE1lbWJlcnNoaXAgU2NyZWVuaW5nLCBzdGFnZSBjaGFubmVscyBhbmQgZGlzY292ZXJ5LCBhbmQgcmVjZWl2ZXMgY29tbXVuaXR5IHVwZGF0ZXMgKi9cbiAgZ2V0IGNvbW11bml0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2NvbW11bml0eScpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgR3VpbGQgaGFzIGJlZW4gc2V0IGFzIGEgc3VwcG9ydCBzZXJ2ZXIgb24gdGhlIEFwcCBEaXJlY3RvcnkgKi9cbiAgZ2V0IGRldmVsb3BlclN1cHBvcnRTZXJ2ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdkZXZlbG9wZXJTdXBwb3J0U2VydmVyJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhbiBhbmltYXRlZCBndWlsZCBiYW5uZXIgaW1hZ2UgKi9cbiAgZ2V0IGFuaW1hdGVkQmFubmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnYW5pbWF0ZWRCYW5uZXInKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gY3JlYXRlIG5ld3MgY2hhbm5lbHMgKi9cbiAgZ2V0IG5ld3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCduZXdzJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBhYmxlIHRvIGJlIGRpc2NvdmVyZWQgaW4gdGhlIGRpcmVjdG9yeSAqL1xuICBnZXQgZGlzY292ZXJhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnZGlzY292ZXJhYmxlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBhYmxlIHRvIGJlIGZlYXR1cmVkIGluIHRoZSBkaXJlY3RvcnkgKi9cbiAgZ2V0IGZlYXR1cmFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdmZWF0dXJhYmxlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhbiBhbmltYXRlZCBndWlsZCBpY29uICovXG4gIGdldCBhbmltYXRlZEljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdhbmltYXRlZEljb24nKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGEgZ3VpbGQgYmFubmVyIGltYWdlICovXG4gIGdldCBiYW5uZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdiYW5uZXInKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIHRoZSB3ZWxjb21lIHNjcmVlbiAqL1xuICBnZXQgd2VsY29tZVNjcmVlbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCd3ZWxjb21lU2NyZWVuRW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgW01lbWJlcnNoaXAgU2NyZWVuaW5nXShodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjbWVtYmVyc2hpcC1zY3JlZW5pbmctb2JqZWN0KSAqL1xuICBnZXQgbWVtYmVyVmVyaWZpY2F0aW9uR2F0ZUVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdtZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgY2FuIGJlIHByZXZpZXdlZCBiZWZvcmUgam9pbmluZyB2aWEgTWVtYmVyc2hpcCBTY3JlZW5pbmcgb3IgdGhlIGRpcmVjdG9yeSAqL1xuICBnZXQgcHJldmlld0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdwcmV2aWV3RW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgdGlja2V0ZWQgZXZlbnRzICovXG4gIGdldCB0aWNrZXRlZEV2ZW50c0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCd0aWNrZXRlZEV2ZW50c0VuYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIG1vbmV0aXphdGlvbiAqL1xuICBnZXQgbW9uZXRpemF0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ21vbmV0aXphdGlvbkVuYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBpbmNyZWFzZWQgY3VzdG9tIHN0aWNrZXIgc2xvdHMgKi9cbiAgZ2V0IG1vcmVTdGlja2VycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ21vcmVTdGlja2VycycpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgYWJsZSB0byBzZXQgcm9sZSBpY29ucyAqL1xuICBnZXQgcm9sZUljb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygncm9sZUljb25zJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgc2V0IHVwIGF1dG8gbW9kZXJhdGlvbiBydWxlcyAqL1xuICBnZXQgYXV0b01vZGVyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdhdXRvTW9kZXJhdGlvbicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHBhdXNlZCBpbnZpdGVzLCBwcmV2ZW50aW5nIG5ldyB1c2VycyBmcm9tIGpvaW5pbmcgKi9cbiAgZ2V0IGludml0ZXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2ludml0ZXNEaXNhYmxlZCcpXG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoZSBwZXJtaXNzaW9ucyBleGlzdCBpbiB0aGlzICovXG4gIGhhcyhwZXJtaXNzaW9uczogR3VpbGRUb2dnbGVLZXlzIHwgR3VpbGRUb2dnbGVLZXlzW10pOiBib29sZWFuIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGVybWlzc2lvbnMpKSByZXR1cm4gc3VwZXIuY29udGFpbnMoR3VpbGRUb2dnbGVbcGVybWlzc2lvbnNdKVxuXG4gICAgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKHBlcm1pc3Npb25zLnJlZHVjZSgoYSwgYikgPT4gKGEgfD0gR3VpbGRUb2dnbGVbYl0pLCAwbikpXG4gIH1cblxuICAvKiogTGlzdHMgYWxsIHRoZSB0b2dnbGVzIGZvciB0aGUgcm9sZSBhbmQgd2hldGhlciBvciBub3QgZWFjaCBpcyB0cnVlIG9yIGZhbHNlLiAqL1xuICBsaXN0KCk6IFJlY29yZDxHdWlsZFRvZ2dsZUtleXMsIGJvb2xlYW4+IHtcbiAgICBjb25zdCBqc29uOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoR3VpbGRUb2dnbGUpKSB7XG4gICAgICBqc29uW2tleV0gPSBzdXBlci5jb250YWlucyh2YWx1ZSlcbiAgICB9XG5cbiAgICByZXR1cm4ganNvbiBhcyBSZWNvcmQ8R3VpbGRUb2dnbGVLZXlzLCBib29sZWFuPlxuICB9XG59XG5cbmV4cG9ydCB0eXBlIEd1aWxkVG9nZ2xlS2V5cyA9IGtleW9mIHR5cGVvZiBHdWlsZFRvZ2dsZVxuIl0sIm5hbWVzIjpbIkd1aWxkVG9nZ2xlIiwiR3VpbGRUb2dnbGVzIiwiZmVhdHVyZU5hbWVzIiwib3duZXIiLCJ3aWRnZXRFbmFibGVkIiwibGFyZ2UiLCJ1bmF2YWlsYWJsZSIsInByZW1pdW1Qcm9ncmVzc0JhckVuYWJsZWQiLCJpbnZpdGVTcGxhc2giLCJ2aXBSZWdpb25zIiwidmFuaXR5VXJsIiwidmVyaWZpZWQiLCJwYXJ0bmVyZWQiLCJjb21tdW5pdHkiLCJjcmVhdG9yTW9uZXRpemFibGVQcm92aXNpb25hbCIsImNyZWF0b3JTdG9yZVBhZ2UiLCJhbmltYXRlZEJhbm5lciIsIm5ld3MiLCJkaXNjb3ZlcmFibGUiLCJmZWF0dXJhYmxlIiwiYW5pbWF0ZWRJY29uIiwiYmFubmVyIiwid2VsY29tZVNjcmVlbkVuYWJsZWQiLCJtZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCIsInByZXZpZXdFbmFibGVkIiwidGlja2V0ZWRFdmVudHNFbmFibGVkIiwibW9uZXRpemF0aW9uRW5hYmxlZCIsIm1vcmVTdGlja2VycyIsInJvbGVJY29ucyIsInJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UiLCJyb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQiLCJhdXRvTW9kZXJhdGlvbiIsImludml0ZXNEaXNhYmxlZCIsImRldmVsb3BlclN1cHBvcnRTZXJ2ZXIiLCJUb2dnbGVCaXRmaWVsZEJpZ2ludCIsImNvbnN0cnVjdG9yIiwiZ3VpbGRPclRvZ2dsZXNCaWdpbnQiLCJiaXRmaWVsZCIsImd1aWxkIiwiZmVhdHVyZXMiLCJhZGQiLCJ3aWRnZXRfZW5hYmxlZCIsInByZW1pdW1fcHJvZ3Jlc3NfYmFyX2VuYWJsZWQiLCJpbmNsdWRlcyIsIkd1aWxkRmVhdHVyZXMiLCJJbnZpdGVTcGxhc2giLCJWaXBSZWdpb25zIiwiVmFuaXR5VXJsIiwiVmVyaWZpZWQiLCJQYXJ0bmVyZWQiLCJDb21tdW5pdHkiLCJDcmVhdG9yTW9uZXRpemFibGVQcm92aXNpb25hbCIsIkNyZWF0b3JTdG9yZVBhZ2UiLCJEZXZlbG9wZXJTdXBwb3J0U2VydmVyIiwiQW5pbWF0ZWRCYW5uZXIiLCJOZXdzIiwiRGlzY292ZXJhYmxlIiwiRmVhdHVyYWJsZSIsIkFuaW1hdGVkSWNvbiIsIkJhbm5lciIsIldlbGNvbWVTY3JlZW5FbmFibGVkIiwiTWVtYmVyVmVyaWZpY2F0aW9uR2F0ZUVuYWJsZWQiLCJQcmV2aWV3RW5hYmxlZCIsIlRpY2tldGVkRXZlbnRzRW5hYmxlZCIsIk1vcmVTdGlja2VycyIsIlJvbGVJY29ucyIsIlJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UiLCJSb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQiLCJBdXRvTW9kZXJhdGlvbiIsIkludml0ZXNEaXNhYmxlZCIsImtleSIsIk9iamVjdCIsImtleXMiLCJjb250YWlucyIsInB1c2giLCJoYXMiLCJwZXJtaXNzaW9ucyIsIkFycmF5IiwiaXNBcnJheSIsInJlZHVjZSIsImEiLCJiIiwibGlzdCIsImpzb24iLCJ2YWx1ZSIsImVudHJpZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBNEJhQSxXQUFXO2VBQVhBOztJQW9FQUMsWUFBWTtlQUFaQTs7O3VCQWhHb0M7Z0NBQ1o7QUFFckMsTUFBTUMsZUFBZTtJQUNuQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRU0sTUFBTUYsY0FBYztJQUN6Qiw4Q0FBOEMsR0FDOUNHLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDZix5Q0FBeUMsR0FDekNDLGVBQWUsRUFBRSxJQUFJLEVBQUU7SUFDdkIsNkNBQTZDLEdBQzdDQyxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQ2YsdURBQXVELEdBQ3ZEQyxhQUFhLEVBQUUsSUFBSSxFQUFFO0lBQ3JCLHlEQUF5RCxHQUN6REMsMkJBQTJCLEVBQUUsSUFBSSxFQUFFO0lBRW5DLGdDQUFnQztJQUVoQyxvRUFBb0UsR0FDcEVDLGNBQWMsRUFBRSxJQUFJLEVBQUU7SUFDdEIsaUdBQWlHLEdBQ2pHQyxZQUFZLEVBQUUsSUFBSSxFQUFFO0lBQ3BCLHFEQUFxRCxHQUNyREMsV0FBVyxFQUFFLElBQUksRUFBRTtJQUNuQixrQ0FBa0MsR0FDbENDLFVBQVUsRUFBRSxJQUFJLEVBQUU7SUFDbEIsbUNBQW1DLEdBQ25DQyxXQUFXLEVBQUUsSUFBSSxFQUFFO0lBQ25CLG9JQUFvSSxHQUNwSUMsV0FBVyxFQUFFLElBQUksR0FBRztJQUNwQixnREFBZ0QsR0FDaERDLCtCQUErQixFQUFFLElBQUks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
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdG9nZ2xlcy9ndWlsZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHdWlsZEZlYXR1cmVzLCB0eXBlIERpc2NvcmRHdWlsZCB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgVG9nZ2xlQml0ZmllbGRCaWdpbnQgfSBmcm9tICcuL1RvZ2dsZUJpdGZpZWxkLmpzJ1xuXG5jb25zdCBmZWF0dXJlTmFtZXMgPSBbXG4gICdhbmltYXRlZEJhbm5lcicsXG4gICdhbmltYXRlZEljb24nLFxuICAnYXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnNWMicsXG4gICdhdXRvTW9kZXJhdGlvbicsXG4gICdiYW5uZXInLFxuICAnY29tbXVuaXR5JyxcbiAgJ2NyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsJyxcbiAgJ2NyZWF0b3JTdG9yZVBhZ2UnLFxuICAnZGV2ZWxvcGVyU3VwcG9ydFNlcnZlcicsXG4gICdkaXNjb3ZlcmFibGUnLFxuICAnZmVhdHVyYWJsZScsXG4gICdpbnZpdGVzRGlzYWJsZWQnLFxuICAnaW52aXRlU3BsYXNoJyxcbiAgJ21lbWJlclZlcmlmaWNhdGlvbkdhdGVFbmFibGVkJyxcbiAgJ21vcmVTdGlja2VycycsXG4gICduZXdzJyxcbiAgJ3BhcnRuZXJlZCcsXG4gICdwcmV2aWV3RW5hYmxlZCcsXG4gICdyYWlkQWxlcnRzRGlzYWJsZWQnLFxuICAncm9sZUljb25zJyxcbiAgJ3JvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UnLFxuICAncm9sZVN1YnNjcmlwdGlvbnNFbmFibGVkJyxcbiAgJ3RpY2tldGVkRXZlbnRzRW5hYmxlZCcsXG4gICd2YW5pdHlVcmwnLFxuICAndmVyaWZpZWQnLFxuICAndmlwUmVnaW9ucycsXG4gICd3ZWxjb21lU2NyZWVuRW5hYmxlZCcsXG5dIGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBHdWlsZFRvZ2dsZSA9IHtcbiAgLyoqIFdoZXRoZXIgdGhlIGJvdCBpcyB0aGUgb3duZXIgb2YgdGhlIGd1aWxkICovXG4gIG93bmVyOiAxbiA8PCAwbixcbiAgLyoqIFdoZXRoZXIgdGhlIHNlcnZlciB3aWRnZXQgaXMgZW5hYmxlZCAqL1xuICB3aWRnZXRFbmFibGVkOiAxbiA8PCAxbixcbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBjb25zaWRlcmVkIGEgbGFyZ2UgZ3VpbGQgKi9cbiAgbGFyZ2U6IDFuIDw8IDJuLFxuICAvKiogV2hldGhlciB0aGlzIGd1aWxkIGlzIHVuYXZhaWxhYmxlIGR1ZSB0byBhbiBvdXRhZ2UgKi9cbiAgdW5hdmFpbGFibGU6IDFuIDw8IDNuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHRoZSBib29zdCBwcm9ncmVzcyBiYXIgZW5hYmxlZCAqL1xuICBwcmVtaXVtUHJvZ3Jlc3NCYXJFbmFibGVkOiAxbiA8PCA0bixcblxuICAvLyBHVUlMRCBGRUFUVVJFUyBBUkUgQkVMT1cgVEhJU1xuICAvLyBNSVNTSU5HIFZBTFVFUyBJTiBUSEUgQklURklFTEQ6IDI0LCAyNSwgMjZcblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYW4gYW5pbWF0ZWQgZ3VpbGQgYmFubmVyIGltYWdlICovXG4gIGFuaW1hdGVkQmFubmVyOiAxbiA8PCAxMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhbiBhbmltYXRlZCBndWlsZCBpY29uICovXG4gIGFuaW1hdGVkSWNvbjogMW4gPDwgMTZuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgdXNpbmcgdGhlIG9sZCBwZXJtaXNzaW9ucyBjb25maWd1cmF0aW9uIGJlaGF2aW9yICovXG4gIGFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zVjI6IDFuIDw8IDE0bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBzZXQgdXAgYXV0byBtb2RlcmF0aW9uIHJ1bGVzICovXG4gIGF1dG9Nb2RlcmF0aW9uOiAxbiA8PCAyOG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhIGd1aWxkIGJhbm5lciBpbWFnZSAqL1xuICBiYW5uZXI6IDFuIDw8IDE3bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGNhbiBlbmFibGUgd2VsY29tZSBzY3JlZW4sIE1lbWJlcnNoaXAgU2NyZWVuaW5nLCBzdGFnZSBjaGFubmVscyBhbmQgZGlzY292ZXJ5LCBhbmQgcmVjZWl2ZXMgY29tbXVuaXR5IHVwZGF0ZXMgKi9cbiAgY29tbXVuaXR5OiAxbiA8PCAxMG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCBtb25ldGl6YXRpb24uICovXG4gIGNyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsOiAxbiA8PCAzMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCB0aGUgcm9sZSBzdWJzY3JpcHRpb24gcHJvbW8gcGFnZS4gKi9cbiAgY3JlYXRvclN0b3JlUGFnZTogMW4gPDwgMzJuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGJlZW4gc2V0IGFzIGEgc3VwcG9ydCBzZXJ2ZXIgb24gdGhlIEFwcCBEaXJlY3RvcnkgKi9cbiAgZGV2ZWxvcGVyU3VwcG9ydFNlcnZlcjogMW4gPDwgMzBuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaXMgYWJsZSB0byBiZSBkaXNjb3ZlcmVkIGluIHRoZSBkaXJlY3RvcnkgKi9cbiAgZGlzY292ZXJhYmxlOiAxbiA8PCAxM24sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBhYmxlIHRvIGJlIGZlYXR1cmVkIGluIHRoZSBkaXJlY3RvcnkgKi9cbiAgZmVhdHVyYWJsZTogMW4gPDwgMTVuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHBhdXNlZCBpbnZpdGVzLCBwcmV2ZW50aW5nIG5ldyB1c2VycyBmcm9tIGpvaW5pbmcgKi9cbiAgaW52aXRlc0Rpc2FibGVkOiAxbiA8PCAyOW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhbiBpbnZpdGUgc3BsYXNoIGJhY2tncm91bmQgKi9cbiAgaW52aXRlU3BsYXNoOiAxbiA8PCA1bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIFtNZW1iZXJzaGlwIFNjcmVlbmluZ10oaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI21lbWJlcnNoaXAtc2NyZWVuaW5nLW9iamVjdCkgKi9cbiAgbWVtYmVyVmVyaWZpY2F0aW9uR2F0ZUVuYWJsZWQ6IDFuIDw8IDE5bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBpbmNyZWFzZWQgY3VzdG9tIHN0aWNrZXIgc2xvdHMgKi9cbiAgbW9yZVN0aWNrZXJzOiAxbiA8PCAyM24sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIGNyZWF0ZSBuZXdzIGNoYW5uZWxzICovXG4gIG5ld3M6IDFuIDw8IDEybixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIHBhcnRuZXJlZCAqL1xuICBwYXJ0bmVyZWQ6IDFuIDw8IDluLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgY2FuIGJlIHByZXZpZXdlZCBiZWZvcmUgam9pbmluZyB2aWEgTWVtYmVyc2hpcCBTY3JlZW5pbmcgb3IgdGhlIGRpcmVjdG9yeSAqL1xuICBwcmV2aWV3RW5hYmxlZDogMW4gPDwgMjBuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGRpc2FibGVkIGFsZXJ0cyBmb3Igam9pbiByYWlkcyBpbiB0aGUgY29uZmlndXJlZCBzYWZldHkgYWxlcnRzIGNoYW5uZWwgKi9cbiAgcmFpZEFsZXJ0c0Rpc2FibGVkOiAxbiA8PCAyMm4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBhYmxlIHRvIHNldCByb2xlIGljb25zICovXG4gIHJvbGVJY29uczogMW4gPDwgMjduLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIHJvbGUgc3Vic2NyaXB0aW9ucyB0aGF0IGNhbiBiZSBwdXJjaGFzZWQuICovXG4gIHJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2U6IDFuIDw8IDMzbixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBlbmFibGVkIHJvbGUgc3Vic2NyaXB0aW9ucy4gKi9cbiAgcm9sZVN1YnNjcmlwdGlvbnNFbmFibGVkOiAxbiA8PCAzNG4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCB0aWNrZXRlZCBldmVudHMgKi9cbiAgdGlja2V0ZWRFdmVudHNFbmFibGVkOiAxbiA8PCAyMW4sXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgYWNjZXNzIHRvIHNldCBhIHZhbml0eSBVUkwgKi9cbiAgdmFuaXR5VXJsOiAxbiA8PCA3bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIHZlcmlmaWVkICovXG4gIHZlcmlmaWVkOiAxbiA8PCA4bixcbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IDM4NCBrYnBzIGJpdHJhdGUgaW4gdm9pY2UgKHByZXZpb3VzbHkgVklQIHZvaWNlIHNlcnZlcnMpICovXG4gIHZpcFJlZ2lvbnM6IDFuIDw8IDZuLFxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgdGhlIHdlbGNvbWUgc2NyZWVuICovXG4gIHdlbGNvbWVTY3JlZW5FbmFibGVkOiAxbiA8PCAxOG4sXG59XG5cbmV4cG9ydCBjbGFzcyBHdWlsZFRvZ2dsZXMgZXh0ZW5kcyBUb2dnbGVCaXRmaWVsZEJpZ2ludCB7XG4gIGNvbnN0cnVjdG9yKGd1aWxkT3JUb2dnbGVzQmlnaW50OiBEaXNjb3JkR3VpbGQgfCBiaWdpbnQpIHtcbiAgICBzdXBlcigpXG5cbiAgICBpZiAodHlwZW9mIGd1aWxkT3JUb2dnbGVzQmlnaW50ID09PSAnYmlnaW50JykgdGhpcy5iaXRmaWVsZCA9IGd1aWxkT3JUb2dnbGVzQmlnaW50XG4gICAgZWxzZSB7XG4gICAgICBjb25zdCBndWlsZCA9IGd1aWxkT3JUb2dnbGVzQmlnaW50XG4gICAgICAvLyBDYXVzZSBkaXNjb3JkIGJlIHNtYXJ0IGxpa2UgdGhhdFxuICAgICAgaWYgKCFndWlsZC5mZWF0dXJlcykgZ3VpbGQuZmVhdHVyZXMgPSBbXVxuXG4gICAgICBpZiAoZ3VpbGQub3duZXIpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm93bmVyKVxuICAgICAgaWYgKGd1aWxkLndpZGdldF9lbmFibGVkKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS53aWRnZXRFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmxhcmdlKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5sYXJnZSlcbiAgICAgIGlmIChndWlsZC51bmF2YWlsYWJsZSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUudW5hdmFpbGFibGUpXG4gICAgICBpZiAoZ3VpbGQucHJlbWl1bV9wcm9ncmVzc19iYXJfZW5hYmxlZCkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZClcblxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuQW5pbWF0ZWRCYW5uZXIpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5hbmltYXRlZEJhbm5lcilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkFuaW1hdGVkSWNvbikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmFuaW1hdGVkSWNvbilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zVjIpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5hcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uc1YyKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuQXV0b01vZGVyYXRpb24pKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5hdXRvTW9kZXJhdGlvbilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkJhbm5lcikpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmJhbm5lcilcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkNvbW11bml0eSkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmNvbW11bml0eSlcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkNyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuY3JlYXRvck1vbmV0aXphYmxlUHJvdmlzaW9uYWwpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5DcmVhdG9yU3RvcmVQYWdlKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuY3JlYXRvclN0b3JlUGFnZSlcbiAgICAgIGlmIChndWlsZC5mZWF0dXJlcy5pbmNsdWRlcyhHdWlsZEZlYXR1cmVzLkRldmVsb3BlclN1cHBvcnRTZXJ2ZXIpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5kZXZlbG9wZXJTdXBwb3J0U2VydmVyKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuRGlzY292ZXJhYmxlKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUuZGlzY292ZXJhYmxlKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuRmVhdHVyYWJsZSkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLmZlYXR1cmFibGUpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5JbnZpdGVzRGlzYWJsZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5pbnZpdGVzRGlzYWJsZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5JbnZpdGVTcGxhc2gpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5pbnZpdGVTcGxhc2gpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5NZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm1lbWJlclZlcmlmaWNhdGlvbkdhdGVFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuTW9yZVN0aWNrZXJzKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUubW9yZVN0aWNrZXJzKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuTmV3cykpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLm5ld3MpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5QYXJ0bmVyZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5wYXJ0bmVyZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5QcmV2aWV3RW5hYmxlZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnByZXZpZXdFbmFibGVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUmFpZEFsZXJ0c0Rpc2FibGVkKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucmFpZEFsZXJ0c0Rpc2FibGVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUm9sZUljb25zKSkgdGhpcy5hZGQoR3VpbGRUb2dnbGUucm9sZUljb25zKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuUm9sZVN1YnNjcmlwdGlvbnNBdmFpbGFibGVGb3JQdXJjaGFzZSkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5Sb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS5yb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5UaWNrZXRlZEV2ZW50c0VuYWJsZWQpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS50aWNrZXRlZEV2ZW50c0VuYWJsZWQpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5WYW5pdHlVcmwpKSB0aGlzLmFkZChHdWlsZFRvZ2dsZS52YW5pdHlVcmwpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5WZXJpZmllZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnZlcmlmaWVkKVxuICAgICAgaWYgKGd1aWxkLmZlYXR1cmVzLmluY2x1ZGVzKEd1aWxkRmVhdHVyZXMuVmlwUmVnaW9ucykpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLnZpcFJlZ2lvbnMpXG4gICAgICBpZiAoZ3VpbGQuZmVhdHVyZXMuaW5jbHVkZXMoR3VpbGRGZWF0dXJlcy5XZWxjb21lU2NyZWVuRW5hYmxlZCkpIHRoaXMuYWRkKEd1aWxkVG9nZ2xlLndlbGNvbWVTY3JlZW5FbmFibGVkKVxuICAgIH1cbiAgfVxuXG4gIGdldCBmZWF0dXJlcygpOiBHdWlsZEZlYXR1cmVLZXlzW10ge1xuICAgIGNvbnN0IGZlYXR1cmVzOiBHdWlsZEZlYXR1cmVLZXlzW10gPSBbXVxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKEd1aWxkVG9nZ2xlKSkge1xuICAgICAgaWYgKCFmZWF0dXJlTmFtZXMuaW5jbHVkZXMoa2V5IGFzIEd1aWxkRmVhdHVyZUtleXMpKSBjb250aW51ZVxuICAgICAgaWYgKCFzdXBlci5jb250YWlucyhHdWlsZFRvZ2dsZVtrZXkgYXMgR3VpbGRUb2dnbGVLZXlzXSkpIGNvbnRpbnVlXG5cbiAgICAgIGZlYXR1cmVzLnB1c2goa2V5IGFzIEd1aWxkRmVhdHVyZUtleXMpXG4gICAgfVxuXG4gICAgcmV0dXJuIGZlYXR1cmVzXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgYm90IGlzIHRoZSBvd25lciBvZiB0aGUgZ3VpbGQgKi9cbiAgZ2V0IG93bmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnb3duZXInKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNlcnZlciB3aWRnZXQgaXMgZW5hYmxlZCAqL1xuICBnZXQgd2lkZ2V0RW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3dpZGdldEVuYWJsZWQnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBjb25zaWRlcmVkIGEgbGFyZ2UgZ3VpbGQgKi9cbiAgZ2V0IGxhcmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnbGFyZ2UnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBndWlsZCBpcyB1bmF2YWlsYWJsZSBkdWUgdG8gYW4gb3V0YWdlICovXG4gIGdldCB1bmF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3VuYXZhaWxhYmxlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgdGhlIGJvb3N0IHByb2dyZXNzIGJhciBlbmFibGVkICovXG4gIGdldCBwcmVtaXVtUHJvZ3Jlc3NCYXJFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygncHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYW4gaW52aXRlIHNwbGFzaCBiYWNrZ3JvdW5kICovXG4gIGdldCBpbnZpdGVTcGxhc2goKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdpbnZpdGVTcGxhc2gnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IDM4NCBrYnBzIGJpdHJhdGUgaW4gdm9pY2UgKHByZXZpb3VzbHkgVklQIHZvaWNlIHNlcnZlcnMpICovXG4gIGdldCB2aXBSZWdpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygndmlwUmVnaW9ucycpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYSB2YW5pdHkgVVJMICovXG4gIGdldCB2YW5pdHlVcmwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCd2YW5pdHlVcmwnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIHZlcmlmaWVkICovXG4gIGdldCB2ZXJpZmllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3ZlcmlmaWVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBwYXJ0bmVyZWQgKi9cbiAgZ2V0IHBhcnRuZXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3BhcnRuZXJlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgY2FuIGVuYWJsZSB3ZWxjb21lIHNjcmVlbiwgTWVtYmVyc2hpcCBTY3JlZW5pbmcsIHN0YWdlIGNoYW5uZWxzIGFuZCBkaXNjb3ZlcnksIGFuZCByZWNlaXZlcyBjb21tdW5pdHkgdXBkYXRlcyAqL1xuICBnZXQgY29tbXVuaXR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnY29tbXVuaXR5JylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBHdWlsZCBoYXMgYmVlbiBzZXQgYXMgYSBzdXBwb3J0IHNlcnZlciBvbiB0aGUgQXBwIERpcmVjdG9yeSAqL1xuICBnZXQgZGV2ZWxvcGVyU3VwcG9ydFNlcnZlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2RldmVsb3BlclN1cHBvcnRTZXJ2ZXInKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGFuIGFuaW1hdGVkIGd1aWxkIGJhbm5lciBpbWFnZSAqL1xuICBnZXQgYW5pbWF0ZWRCYW5uZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdhbmltYXRlZEJhbm5lcicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBjcmVhdGUgbmV3cyBjaGFubmVscyAqL1xuICBnZXQgbmV3cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ25ld3MnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIGFibGUgdG8gYmUgZGlzY292ZXJlZCBpbiB0aGUgZGlyZWN0b3J5ICovXG4gIGdldCBkaXNjb3ZlcmFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdkaXNjb3ZlcmFibGUnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGlzIGFibGUgdG8gYmUgZmVhdHVyZWQgaW4gdGhlIGRpcmVjdG9yeSAqL1xuICBnZXQgZmVhdHVyYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2ZlYXR1cmFibGUnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBhY2Nlc3MgdG8gc2V0IGFuIGFuaW1hdGVkIGd1aWxkIGljb24gKi9cbiAgZ2V0IGFuaW1hdGVkSWNvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2FuaW1hdGVkSWNvbicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGFjY2VzcyB0byBzZXQgYSBndWlsZCBiYW5uZXIgaW1hZ2UgKi9cbiAgZ2V0IGJhbm5lcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2Jhbm5lcicpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGVuYWJsZWQgdGhlIHdlbGNvbWUgc2NyZWVuICovXG4gIGdldCB3ZWxjb21lU2NyZWVuRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3dlbGNvbWVTY3JlZW5FbmFibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCBbTWVtYmVyc2hpcCBTY3JlZW5pbmddKGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNtZW1iZXJzaGlwLXNjcmVlbmluZy1vYmplY3QpICovXG4gIGdldCBtZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ21lbWJlclZlcmlmaWNhdGlvbkdhdGVFbmFibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBjYW4gYmUgcHJldmlld2VkIGJlZm9yZSBqb2luaW5nIHZpYSBNZW1iZXJzaGlwIFNjcmVlbmluZyBvciB0aGUgZGlyZWN0b3J5ICovXG4gIGdldCBwcmV2aWV3RW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3ByZXZpZXdFbmFibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCB0aWNrZXRlZCBldmVudHMgKi9cbiAgZ2V0IHRpY2tldGVkRXZlbnRzRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ3RpY2tldGVkRXZlbnRzRW5hYmxlZCcpXG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZ3VpbGQgaGFzIGluY3JlYXNlZCBjdXN0b20gc3RpY2tlciBzbG90cyAqL1xuICBnZXQgbW9yZVN0aWNrZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnbW9yZVN0aWNrZXJzJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyBhYmxlIHRvIHNldCByb2xlIGljb25zICovXG4gIGdldCByb2xlSWNvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdyb2xlSWNvbnMnKVxuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGd1aWxkIGhhcyBzZXQgdXAgYXV0byBtb2RlcmF0aW9uIHJ1bGVzICovXG4gIGdldCBhdXRvTW9kZXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2F1dG9Nb2RlcmF0aW9uJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgcGF1c2VkIGludml0ZXMsIHByZXZlbnRpbmcgbmV3IHVzZXJzIGZyb20gam9pbmluZyAqL1xuICBnZXQgaW52aXRlc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygnaW52aXRlc0Rpc2FibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBpcyB1c2luZyB0aGUgb2xkIHBlcm1pc3Npb25zIGNvbmZpZ3VyYXRpb24gYmVoYXZpb3IgKi9cbiAgZ2V0IGFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zVjIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdhcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uc1YyJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCBtb25ldGl6YXRpb24uICovXG4gIGdldCBjcmVhdG9yTW9uZXRpemFibGVQcm92aXNpb25hbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXMoJ2NyZWF0b3JNb25ldGl6YWJsZVByb3Zpc2lvbmFsJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCB0aGUgcm9sZSBzdWJzY3JpcHRpb24gcHJvbW8gcGFnZS4gKi9cbiAgZ2V0IGNyZWF0b3JTdG9yZVBhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdjcmVhdG9yU3RvcmVQYWdlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZGlzYWJsZWQgYWxlcnRzIGZvciBqb2luIHJhaWRzIGluIHRoZSBjb25maWd1cmVkIHNhZmV0eSBhbGVydHMgY2hhbm5lbCAqL1xuICBnZXQgcmFpZEFsZXJ0c0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhcygncmFpZEFsZXJ0c0Rpc2FibGVkJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgcm9sZSBzdWJzY3JpcHRpb25zIHRoYXQgY2FuIGJlIHB1cmNoYXNlZC4gKi9cbiAgZ2V0IHJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdyb2xlU3Vic2NyaXB0aW9uc0F2YWlsYWJsZUZvclB1cmNoYXNlJylcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBndWlsZCBoYXMgZW5hYmxlZCByb2xlIHN1YnNjcmlwdGlvbnMuICovXG4gIGdldCByb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzKCdyb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQnKVxuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGUgcGVybWlzc2lvbnMgZXhpc3QgaW4gdGhpcyAqL1xuICBoYXMocGVybWlzc2lvbnM6IEd1aWxkVG9nZ2xlS2V5cyB8IEd1aWxkVG9nZ2xlS2V5c1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBlcm1pc3Npb25zKSkgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKEd1aWxkVG9nZ2xlW3Blcm1pc3Npb25zXSlcblxuICAgIHJldHVybiBzdXBlci5jb250YWlucyhwZXJtaXNzaW9ucy5yZWR1Y2UoKGEsIGIpID0+IChhIHw9IEd1aWxkVG9nZ2xlW2JdKSwgMG4pKVxuICB9XG5cbiAgLyoqIExpc3RzIGFsbCB0aGUgdG9nZ2xlcyBmb3IgdGhlIHJvbGUgYW5kIHdoZXRoZXIgb3Igbm90IGVhY2ggaXMgdHJ1ZSBvciBmYWxzZS4gKi9cbiAgbGlzdCgpOiBSZWNvcmQ8R3VpbGRUb2dnbGVLZXlzLCBib29sZWFuPiB7XG4gICAgY29uc3QganNvbjogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKEd1aWxkVG9nZ2xlKSkge1xuICAgICAganNvbltrZXldID0gc3VwZXIuY29udGFpbnModmFsdWUpXG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb24gYXMgUmVjb3JkPEd1aWxkVG9nZ2xlS2V5cywgYm9vbGVhbj5cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBHdWlsZFRvZ2dsZUtleXMgPSBrZXlvZiB0eXBlb2YgR3VpbGRUb2dnbGVcblxuZXhwb3J0IHR5cGUgR3VpbGRGZWF0dXJlS2V5cyA9ICh0eXBlb2YgZmVhdHVyZU5hbWVzKVtudW1iZXJdXG4iXSwibmFtZXMiOlsiR3VpbGRUb2dnbGUiLCJHdWlsZFRvZ2dsZXMiLCJmZWF0dXJlTmFtZXMiLCJvd25lciIsIndpZGdldEVuYWJsZWQiLCJsYXJnZSIsInVuYXZhaWxhYmxlIiwicHJlbWl1bVByb2dyZXNzQmFyRW5hYmxlZCIsImFuaW1hdGVkQmFubmVyIiwiYW5pbWF0ZWRJY29uIiwiYXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnNWMiIsImF1dG9Nb2RlcmF0aW9uIiwiYmFubmVyIiwiY29tbXVuaXR5IiwiY3JlYXRvck1vbmV0aXphYmxlUHJvdmlzaW9uYWwiLCJjcmVhdG9yU3RvcmVQYWdlIiwiZGV2ZWxvcGVyU3VwcG9ydFNlcnZlciIsImRpc2NvdmVyYWJsZSIsImZlYXR1cmFibGUiLCJpbnZpdGVzRGlzYWJsZWQiLCJpbnZpdGVTcGxhc2giLCJtZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCIsIm1vcmVTdGlja2VycyIsIm5ld3MiLCJwYXJ0bmVyZWQiLCJwcmV2aWV3RW5hYmxlZCIsInJhaWRBbGVydHNEaXNhYmxlZCIsInJvbGVJY29ucyIsInJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UiLCJyb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQiLCJ0aWNrZXRlZEV2ZW50c0VuYWJsZWQiLCJ2YW5pdHlVcmwiLCJ2ZXJpZmllZCIsInZpcFJlZ2lvbnMiLCJ3ZWxjb21lU2NyZWVuRW5hYmxlZCIsIlRvZ2dsZUJpdGZpZWxkQmlnaW50IiwiY29uc3RydWN0b3IiLCJndWlsZE9yVG9nZ2xlc0JpZ2ludCIsImJpdGZpZWxkIiwiZ3VpbGQiLCJmZWF0dXJlcyIsImFkZCIsIndpZGdldF9lbmFibGVkIiwicHJlbWl1bV9wcm9ncmVzc19iYXJfZW5hYmxlZCIsImluY2x1ZGVzIiwiR3VpbGRGZWF0dXJlcyIsIkFuaW1hdGVkQmFubmVyIiwiQW5pbWF0ZWRJY29uIiwiQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnNWMiIsIkF1dG9Nb2RlcmF0aW9uIiwiQmFubmVyIiwiQ29tbXVuaXR5IiwiQ3JlYXRvck1vbmV0aXphYmxlUHJvdmlzaW9uYWwiLCJDcmVhdG9yU3RvcmVQYWdlIiwiRGV2ZWxvcGVyU3VwcG9ydFNlcnZlciIsIkRpc2NvdmVyYWJsZSIsIkZlYXR1cmFibGUiLCJJbnZpdGVzRGlzYWJsZWQiLCJJbnZpdGVTcGxhc2giLCJNZW1iZXJWZXJpZmljYXRpb25HYXRlRW5hYmxlZCIsIk1vcmVTdGlja2VycyIsIk5ld3MiLCJQYXJ0bmVyZWQiLCJQcmV2aWV3RW5hYmxlZCIsIlJhaWRBbGVydHNEaXNhYmxlZCIsIlJvbGVJY29ucyIsIlJvbGVTdWJzY3JpcHRpb25zQXZhaWxhYmxlRm9yUHVyY2hhc2UiLCJSb2xlU3Vic2NyaXB0aW9uc0VuYWJsZWQiLCJUaWNrZXRlZEV2ZW50c0VuYWJsZWQiLCJWYW5pdHlVcmwiLCJWZXJpZmllZCIsIlZpcFJlZ2lvbnMiLCJXZWxjb21lU2NyZWVuRW5hYmxlZCIsImtleSIsIk9iamVjdCIsImtleXMiLCJjb250YWlucyIsInB1c2giLCJoYXMiLCJwZXJtaXNzaW9ucyIsIkFycmF5IiwiaXNBcnJheSIsInJlZHVjZSIsImEiLCJiIiwibGlzdCIsImpzb24iLCJ2YWx1ZSIsImVudHJpZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBaUNhQSxXQUFXO2VBQVhBOztJQXVFQUMsWUFBWTtlQUFaQTs7O3VCQXhHb0M7Z0NBQ1o7QUFFckMsTUFBTUMsZUFBZTtJQUNuQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDRDtBQUVNLE1BQU1GLGNBQWM7SUFDekIsOENBQThDLEdBQzlDRyxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQ2YseUNBQXlDLEdBQ3pDQyxlQUFlLEVBQUUsSUFBSSxFQUFFO0lBQ3ZCLDZDQUE2QyxHQUM3Q0MsT0FBTyxFQUFFLElBQUksRUFBRTtJQUNmLHVEQUF1RCxHQUN2REMsYUFBYSxFQUFFLElBQUksRUFBRTtJQUNyQix5REFBeUQsR0FDekRDLDJCQUEyQixFQUFFLElBQUksRUFBRTtJQUVuQyxnQ0FBZ0M7SUFDaEMsNkNBQTZDO0lBRTdDLHVFQUF1RSxHQUN2RUMsZ0JBQWdCLEVBQUUsSUFBSSxHQUFHO0lBQ3pCLCtEQUErRCxHQUMvREMsY0FBYyxFQUFFLElBQUksR0FBRztJQUN2QiwwRUFBMEUsR0FDMUVDLGlDQUFpQyxFQUFFLElBQUksR0FBRztJQUMxQyx1REFBdUQsR0FDdkRDLGdCQUFnQixFQUFFLElBQUksR0FBRztJQUN6Qiw2REFBNkQsR0FDN0RDLFFBQVEsRUFBRSxJQUFJLEdBQUc7SUFDakIsb0lBQW9JLEdBQ3BJQyxXQUFXLEVBQUUsSUFBSSxHQUFHO0lBQ3BCLGdEQUFnRCxHQUNoREMsK0JBQStCLEVBQUUsSUFBSSxHQUFHO0lBQ3hDLG9FQUFvRSxH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
|
|
@@ -45,9 +45,9 @@ function transformUser(bot, payload) {
|
|
|
45
45
|
if (props.premiumType && payload.premium_type) user.premiumType = payload.premium_type;
|
|
46
46
|
if (props.avatar && payload.avatar) user.avatar = (0, _utils.iconHashToBigInt)(payload.avatar);
|
|
47
47
|
if (props.banner && payload.banner) user.banner = (0, _utils.iconHashToBigInt)(payload.banner);
|
|
48
|
-
if (props.avatarDecoration && payload.avatar_decoration) user.avatarDecoration = (0, _utils.iconHashToBigInt)(payload.avatar_decoration);
|
|
49
48
|
if (props.accentColor && payload.accent_color) user.accentColor = payload.accent_color;
|
|
49
|
+
if (props.avatarDecorationData && payload.avatar_decoration_data) user.avatarDecorationData = bot.transformers.avatarDecorationData(bot, payload.avatar_decoration_data);
|
|
50
50
|
return bot.transformers.customizers.user(bot, payload, user);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvdXNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERpc2NvcmRVc2VyLCBQcmVtaXVtVHlwZXMgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB7IGljb25IYXNoVG9CaWdJbnQgfSBmcm9tICdAZGlzY29yZGVuby91dGlscydcbmltcG9ydCB7IFRvZ2dsZUJpdGZpZWxkLCBVc2VyVG9nZ2xlcywgdHlwZSBBdmF0YXJEZWNvcmF0aW9uRGF0YSwgdHlwZSBCb3QgfSBmcm9tICcuLi9pbmRleC5qcydcblxuY29uc3QgYmFzZVVzZXI6IFBhcnRpYWw8VXNlcj4gJiBCYXNlVXNlciA9IHtcbiAgZ2V0IHRhZygpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zXG4gICAgcmV0dXJuIGAke3RoaXMudXNlcm5hbWV9IyR7dGhpcy5kaXNjcmltaW5hdG9yfWBcbiAgfSxcbiAgZ2V0IGJvdCgpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/LmhhcygnYm90JylcbiAgfSxcbiAgZ2V0IHN5c3RlbSgpIHtcbiAgICByZXR1cm4gISF0aGlzLnRvZ2dsZXM/Lmhhcygnc3lzdGVtJylcbiAgfSxcbiAgZ2V0IG1mYUVuYWJsZWQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy50b2dnbGVzPy5oYXMoJ21mYUVuYWJsZWQnKVxuICB9LFxuICBnZXQgdmVyaWZpZWQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy50b2dnbGVzPy5oYXMoJ3ZlcmlmaWVkJylcbiAgfSxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVVzZXIoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRVc2VyKTogVXNlciB7XG4gIGNvbnN0IHVzZXI6IFVzZXIgPSBPYmplY3QuY3JlYXRlKGJhc2VVc2VyKVxuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMudXNlclxuXG4gIGlmIChwcm9wcy5ib3QgfHwgcHJvcHMuc3lzdGVtIHx8IHByb3BzLm1mYUVuYWJsZWQgfHwgcHJvcHMudmVyaWZpZWQpIHtcbiAgICB1c2VyLnRvZ2dsZXMgPSBuZXcgVXNlclRvZ2dsZXMocGF5bG9hZClcbiAgfVxuICBpZiAocHJvcHMuZmxhZ3MpIHVzZXIuZmxhZ3MgPSBuZXcgVG9nZ2xlQml0ZmllbGQocGF5bG9hZC5mbGFncylcbiAgaWYgKHByb3BzLnB1YmxpY0ZsYWdzKSB1c2VyLnB1YmxpY0ZsYWdzID0gbmV3IFRvZ2dsZUJpdGZpZWxkKHBheWxvYWQucHVibGljX2ZsYWdzKVxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgdXNlci5pZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuaWQpXG4gIGlmIChwcm9wcy51c2VybmFtZSAmJiBwYXlsb2FkLnVzZXJuYW1lKSB1c2VyLnVzZXJuYW1lID0gcGF5bG9hZC51c2VybmFtZVxuICBpZiAocHJvcHMuZ2xvYmFsTmFtZSAmJiBwYXlsb2FkLmdsb2JhbF9uYW1lKSB1c2VyLmdsb2JhbE5hbWUgPSBwYXlsb2FkLmdsb2JhbF9uYW1lXG4gIGlmIChwcm9wcy5kaXNjcmltaW5hdG9yICYmIHBheWxvYWQuZGlzY3JpbWluYXRvcikgdXNlci5kaXNjcmltaW5hdG9yID0gcGF5bG9hZC5kaXNjcmltaW5hdG9yXG4gIGlmIChwcm9wcy5sb2NhbGUgJiYgcGF5bG9hZC5sb2NhbGUpIHVzZXIubG9jYWxlID0gcGF5bG9hZC5sb2NhbGVcbiAgaWYgKHByb3BzLmVtYWlsICYmIHBheWxvYWQuZW1haWwpIHVzZXIuZW1haWwgPSBwYXlsb2FkLmVtYWlsXG4gIGlmIChwcm9wcy5wcmVtaXVtVHlwZSAmJiBwYXlsb2FkLnByZW1pdW1fdHlwZSkgdXNlci5wcmVtaXVtVHlwZSA9IHBheWxvYWQucHJlbWl1bV90eXBlXG4gIGlmIChwcm9wcy5hdmF0YXIgJiYgcGF5bG9hZC5hdmF0YXIpIHVzZXIuYXZhdGFyID0gaWNvbkhhc2hUb0JpZ0ludChwYXlsb2FkLmF2YXRhcilcbiAgaWYgKHByb3BzLmJhbm5lciAmJiBwYXlsb2FkLmJhbm5lcikgdXNlci5iYW5uZXIgPSBpY29uSGFzaFRvQmlnSW50KHBheWxvYWQuYmFubmVyKVxuICBpZiAocHJvcHMuYWNjZW50Q29sb3IgJiYgcGF5bG9hZC5hY2NlbnRfY29sb3IpIHVzZXIuYWNjZW50Q29sb3IgPSBwYXlsb2FkLmFjY2VudF9jb2xvclxuICBpZiAocHJvcHMuYXZhdGFyRGVjb3JhdGlvbkRhdGEgJiYgcGF5bG9hZC5hdmF0YXJfZGVjb3JhdGlvbl9kYXRhKVxuICAgIHVzZXIuYXZhdGFyRGVjb3JhdGlvbkRhdGEgPSBib3QudHJhbnNmb3JtZXJzLmF2YXRhckRlY29yYXRpb25EYXRhKGJvdCwgcGF5bG9hZC5hdmF0YXJfZGVjb3JhdGlvbl9kYXRhKVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLnVzZXIoYm90LCBwYXlsb2FkLCB1c2VyKVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VVc2VyIHtcbiAgLyoqIFRoZSB1c2VyIHRhZyBpbiB0aGUgZm9ybSBvZiB1c2VybmFtZSNkaXNjcmltaW5hdG9yICovXG4gIHRhZzogc3RyaW5nXG4gIC8qKiBXaGV0aGVyIHRoZSB1c2VyIGJlbG9uZ3MgdG8gYW4gT0F1dGgyIGFwcGxpY2F0aW9uICovXG4gIGJvdDogYm9vbGVhblxuICAvKiogV2hldGhlciB0aGUgdXNlciBpcyBhbiBPZmZpY2lhbCBEaXNjb3JkIFN5c3RlbSB1c2VyIChwYXJ0IG9mIHRoZSB1cmdlbnQgbWVzc2FnZSBzeXN0ZW0pICovXG4gIHN5c3RlbTogYm9vbGVhblxuICAvKiogV2hldGhlciB0aGUgdXNlciBoYXMgdHdvIGZhY3RvciBlbmFibGVkIG9uIHRoZWlyIGFjY291bnQgKi9cbiAgbWZhRW5hYmxlZDogYm9vbGVhblxuICAvKiogV2hldGhlciB0aGUgZW1haWwgb24gdGhpcyBhY2NvdW50IGhhcyBiZWVuIHZlcmlmaWVkICovXG4gIHZlcmlmaWVkOiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciBleHRlbmRzIEJhc2VVc2VyIHtcbiAgLyoqIENvbXByZXNzZWQgdmVyc2lvbiBvZiBhbGwgdGhlIGJvb2xlYW5zIG9uIGEgdXNlci4gKi9cbiAgdG9nZ2xlcz86IFVzZXJUb2dnbGVzXG4gIC8qKiBUaGUgdXNlcidzIHVzZXJuYW1lLCBub3QgdW5pcXVlIGFjcm9zcyB0aGUgcGxhdGZvcm0gKi9cbiAgdXNlcm5hbWU6IHN0cmluZ1xuICAvKiogVGhlIHVzZXIncyBkaXNwbGF5IG5hbWUsIGlmIGl0IGlzIHNldC4gRm9yIGJvdHMsIHRoaXMgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUgKi9cbiAgZ2xvYmFsTmFtZT86IHN0cmluZ1xuICAvKiogVGhlIHVzZXIncyBjaG9zZW4gbGFuZ3VhZ2Ugb3B0aW9uICovXG4gIGxvY2FsZT86IHN0cmluZ1xuICAvKiogVGhlIGZsYWdzIG9uIGEgdXNlcidzIGFjY291bnQgKi9cbiAgZmxhZ3M/OiBUb2dnbGVCaXRmaWVsZFxuICAvKiogVGhlIHR5cGUgb2YgTml0cm8gc3Vic2NyaXB0aW9uIG9uIGEgdXNlcidzIGFjY291bnQgKi9cbiAgcHJlbWl1bVR5cGU/OiBQcmVtaXVtVHlwZXNcbiAgLyoqIFRoZSBwdWJsaWMgZmxhZ3Mgb24gYSB1c2VyJ3MgYWNjb3VudCAqL1xuICBwdWJsaWNGbGFncz86IFRvZ2dsZUJpdGZpZWxkXG4gIC8qKiB0aGUgdXNlcidzIGJhbm5lciBjb2xvciBlbmNvZGVkIGFzIGFuIGludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgaGV4YWRlY2ltYWwgY29sb3IgY29kZSAqL1xuICBhY2NlbnRDb2xvcj86IG51bWJlclxuICAvKiogVGhlIHVzZXIncyBpZCAqL1xuICBpZDogYmlnaW50XG4gIC8qKiBUaGUgdXNlcidzIGRpc2NvcmQtdGFnICovXG4gIGRpc2NyaW1pbmF0b3I6IHN0cmluZ1xuICAvKiogVGhlIHVzZXIncyBhdmF0YXIgaGFzaCAqL1xuICBhdmF0YXI/OiBiaWdpbnRcbiAgLyoqIFRoZSB1c2VyJ3MgZW1haWwgKi9cbiAgZW1haWw/OiBzdHJpbmdcbiAgLyoqIHRoZSB1c2VyJ3MgYmFubmVyLCBvciBudWxsIGlmIHVuc2V0ICovXG4gIGJhbm5lcj86IGJpZ2ludFxuICAvKiogZGF0YSBmb3IgdGhlIHVzZXIncyBhdmF0YXIgZGVjb3JhdGlvbiAqL1xuICBhdmF0YXJEZWNvcmF0aW9uRGF0YT86IEF2YXRhckRlY29yYXRpb25EYXRhXG59XG4iXSwibmFtZXMiOlsidHJhbnNmb3JtVXNlciIsImJhc2VVc2VyIiwidGFnIiwidXNlcm5hbWUiLCJkaXNjcmltaW5hdG9yIiwiYm90IiwidG9nZ2xlcyIsImhhcyIsInN5c3RlbSIsIm1mYUVuYWJsZWQiLCJ2ZXJpZmllZCIsInBheWxvYWQiLCJ1c2VyIiwiT2JqZWN0IiwiY3JlYXRlIiwicHJvcHMiLCJ0cmFuc2Zvcm1lcnMiLCJkZXNpcmVkUHJvcGVydGllcyIsIlVzZXJUb2dnbGVzIiwiZmxhZ3MiLCJUb2dnbGVCaXRmaWVsZCIsInB1YmxpY0ZsYWdzIiwicHVibGljX2ZsYWdzIiwiaWQiLCJzbm93Zmxha2UiLCJnbG9iYWxOYW1lIiwiZ2xvYmFsX25hbWUiLCJsb2NhbGUiLCJlbWFpbCIsInByZW1pdW1UeXBlIiwicHJlbWl1bV90eXBlIiwiYXZhdGFyIiwiaWNvbkhhc2hUb0JpZ0ludCIsImJhbm5lciIsImFjY2VudENvbG9yIiwiYWNjZW50X2NvbG9yIiwiYXZhdGFyRGVjb3JhdGlvbkRhdGEiLCJhdmF0YXJfZGVjb3JhdGlvbl9kYXRhIiwiY3VzdG9taXplcnMiXSwibWFwcGluZ3MiOiI7Ozs7K0JBdUJnQkE7OztlQUFBQTs7O3VCQXRCaUI7dUJBQ2dEO0FBRWpGLE1BQU1DLFdBQXFDO0lBQ3pDLElBQUlDLE9BQU07UUFDUiw0RUFBNEU7UUFDNUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDQyxRQUFRLENB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
|