@discordeno/bot 19.0.0-next.a361a53 → 19.0.0-next.a3ab41d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (445) hide show
  1. package/README.md +30 -0
  2. package/dist/cjs/bot.cjs +9 -4
  3. package/dist/cjs/commandOptionsParser.cjs +1 -1
  4. package/dist/cjs/desiredProperties.cjs +541 -0
  5. package/dist/cjs/events.cjs +6 -0
  6. package/dist/cjs/handlers/channels/CHANNEL_CREATE.cjs +2 -2
  7. package/dist/cjs/handlers/channels/THREAD_MEMBERS_UPDATE.cjs +2 -2
  8. package/dist/cjs/handlers/channels/THREAD_MEMBER_UPDATE.cjs +2 -2
  9. package/dist/cjs/handlers/emojis/GUILD_EMOJIS_UPDATE.cjs +2 -2
  10. package/dist/cjs/handlers/guilds/GUILD_STICKERS_UPDATE.cjs +9 -6
  11. package/dist/cjs/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.cjs +2 -2
  12. package/dist/cjs/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.cjs +2 -2
  13. package/dist/cjs/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.cjs +2 -2
  14. package/dist/cjs/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.cjs +2 -2
  15. package/dist/cjs/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.cjs +2 -2
  16. package/dist/cjs/handlers/index.cjs +3 -1
  17. package/dist/cjs/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.cjs +2 -2
  18. package/dist/cjs/handlers/interactions/INTERACTION_CREATE.cjs +6 -3
  19. package/dist/cjs/handlers/members/GUILD_MEMBER_ADD.cjs +1 -1
  20. package/dist/cjs/handlers/members/GUILD_MEMBER_UPDATE.cjs +2 -1
  21. package/dist/cjs/handlers/messages/MESSAGE_CREATE.cjs +6 -3
  22. package/dist/cjs/handlers/messages/MESSAGE_REACTION_ADD.cjs +4 -2
  23. package/dist/cjs/handlers/messages/MESSAGE_REACTION_REMOVE.cjs +3 -2
  24. package/dist/cjs/handlers/messages/MESSAGE_UPDATE.cjs +6 -3
  25. package/dist/cjs/handlers/soundboard/GUILD_SOUNDBOARD_SOUNDS_UPDATE.cjs +20 -0
  26. package/dist/cjs/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_CREATE.cjs +17 -0
  27. package/dist/cjs/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_DELETE.cjs +20 -0
  28. package/dist/cjs/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_UPDATE.cjs +17 -0
  29. package/dist/cjs/handlers/soundboard/SOUNDBOARD_SOUNDS.cjs +20 -0
  30. package/dist/cjs/handlers/soundboard/index.cjs +24 -0
  31. package/dist/cjs/handlers/subscriptions/SUBSCRIPTION_CREATE.cjs +17 -0
  32. package/dist/cjs/handlers/subscriptions/SUBSCRIPTION_DELETE.cjs +17 -0
  33. package/dist/cjs/handlers/subscriptions/SUBSCRIPTION_UPDATE.cjs +17 -0
  34. package/dist/cjs/handlers/subscriptions/index.cjs +22 -0
  35. package/dist/cjs/handlers/voice/VOICE_CHANNEL_EFFECT_SEND.cjs +26 -0
  36. package/dist/cjs/handlers/voice/index.cjs +2 -1
  37. package/dist/cjs/handlers/webhooks/WEBHOOKS_UPDATE.cjs +2 -2
  38. package/dist/cjs/handlers.cjs +11 -2
  39. package/dist/cjs/helpers.cjs +146 -23
  40. package/dist/cjs/index.cjs +3 -3
  41. package/dist/cjs/transformers/activity.cjs +34 -4
  42. package/dist/cjs/transformers/application.cjs +14 -3
  43. package/dist/cjs/transformers/applicationCommand.cjs +1 -1
  44. package/dist/cjs/transformers/applicationCommandOption.cjs +1 -1
  45. package/dist/cjs/transformers/applicationCommandOptionChoice.cjs +1 -1
  46. package/dist/cjs/transformers/applicationCommandPermission.cjs +1 -1
  47. package/dist/cjs/transformers/attachment.cjs +2 -1
  48. package/dist/cjs/transformers/auditLogEntry.cjs +10 -118
  49. package/dist/cjs/transformers/automodActionExecution.cjs +1 -1
  50. package/dist/cjs/transformers/automodRule.cjs +1 -1
  51. package/dist/cjs/transformers/avatarDecorationData.cjs +20 -0
  52. package/dist/cjs/transformers/channel.cjs +39 -10
  53. package/dist/cjs/transformers/component.cjs +59 -13
  54. package/dist/cjs/transformers/embed.cjs +1 -1
  55. package/dist/cjs/transformers/emoji.cjs +34 -5
  56. package/dist/cjs/transformers/entitlement.cjs +2 -1
  57. package/dist/cjs/transformers/gatewayBot.cjs +1 -1
  58. package/dist/cjs/transformers/guild.cjs +8 -2
  59. package/dist/cjs/transformers/index.cjs +5 -1
  60. package/dist/cjs/transformers/integration.cjs +1 -1
  61. package/dist/cjs/transformers/interaction.cjs +123 -74
  62. package/dist/cjs/transformers/invite.cjs +2 -1
  63. package/dist/cjs/transformers/member.cjs +22 -5
  64. package/dist/cjs/transformers/message.cjs +138 -98
  65. package/dist/cjs/transformers/onboarding.cjs +7 -7
  66. package/dist/cjs/transformers/poll.cjs +4 -3
  67. package/dist/cjs/transformers/presence.cjs +1 -1
  68. package/dist/cjs/transformers/reverse/activity.cjs +2 -2
  69. package/dist/cjs/transformers/reverse/allowedMentions.cjs +2 -2
  70. package/dist/cjs/transformers/reverse/application.cjs +6 -2
  71. package/dist/cjs/transformers/reverse/applicationCommand.cjs +1 -1
  72. package/dist/cjs/transformers/reverse/applicationCommandOption.cjs +1 -1
  73. package/dist/cjs/transformers/reverse/applicationCommandOptionChoice.cjs +2 -2
  74. package/dist/cjs/transformers/reverse/applicationCommandPermission.cjs +1 -1
  75. package/dist/cjs/transformers/reverse/attachment.cjs +1 -1
  76. package/dist/cjs/transformers/reverse/auditLogEntry.cjs +11 -122
  77. package/dist/cjs/transformers/reverse/component.cjs +61 -14
  78. package/dist/cjs/transformers/reverse/createApplicationCommand.cjs +2 -3
  79. package/dist/cjs/transformers/reverse/embed.cjs +2 -2
  80. package/dist/cjs/transformers/reverse/emoji.cjs +1 -1
  81. package/dist/cjs/transformers/reverse/gatewayBot.cjs +1 -1
  82. package/dist/cjs/transformers/reverse/index.cjs +1 -2
  83. package/dist/cjs/transformers/reverse/member.cjs +9 -3
  84. package/dist/cjs/transformers/reverse/presence.cjs +1 -1
  85. package/dist/cjs/transformers/reverse/team.cjs +1 -1
  86. package/dist/cjs/transformers/reverse/widgetSettings.cjs +2 -2
  87. package/dist/cjs/transformers/role.cjs +9 -7
  88. package/dist/cjs/transformers/scheduledEvent.cjs +28 -4
  89. package/dist/cjs/transformers/sku.cjs +1 -1
  90. package/dist/cjs/transformers/soundboardSound.cjs +25 -0
  91. package/dist/cjs/transformers/stageInstance.cjs +1 -1
  92. package/dist/cjs/transformers/stageInviteInstance.cjs +1 -1
  93. package/dist/cjs/transformers/sticker.cjs +1 -1
  94. package/dist/cjs/transformers/subscription.cjs +26 -0
  95. package/dist/cjs/transformers/team.cjs +1 -1
  96. package/dist/cjs/transformers/template.cjs +1 -1
  97. package/dist/cjs/transformers/threadMember.cjs +1 -1
  98. package/dist/cjs/transformers/toggles/Permissions.cjs +2 -2
  99. package/dist/cjs/transformers/toggles/channel.cjs +7 -2
  100. package/dist/cjs/transformers/toggles/guild.cjs +85 -52
  101. package/dist/cjs/transformers/toggles/member.cjs +70 -2
  102. package/dist/cjs/transformers/types.cjs +6 -0
  103. package/dist/cjs/transformers/user.cjs +5 -6
  104. package/dist/cjs/transformers/voiceRegion.cjs +1 -1
  105. package/dist/cjs/transformers/voiceState.cjs +2 -2
  106. package/dist/cjs/transformers/webhook.cjs +1 -1
  107. package/dist/cjs/transformers/welcomeScreen.cjs +1 -1
  108. package/dist/cjs/transformers/widget.cjs +1 -1
  109. package/dist/cjs/transformers/widgetSettings.cjs +1 -1
  110. package/dist/cjs/transformers.cjs +147 -630
  111. package/dist/esm/bot.js +9 -4
  112. package/dist/esm/commandOptionsParser.js +1 -1
  113. package/dist/esm/desiredProperties.js +523 -0
  114. package/dist/esm/events.js +3 -0
  115. package/dist/esm/handlers/channels/CHANNEL_CREATE.js +2 -2
  116. package/dist/esm/handlers/channels/THREAD_MEMBERS_UPDATE.js +2 -2
  117. package/dist/esm/handlers/channels/THREAD_MEMBER_UPDATE.js +2 -2
  118. package/dist/esm/handlers/emojis/GUILD_EMOJIS_UPDATE.js +2 -2
  119. package/dist/esm/handlers/guilds/GUILD_STICKERS_UPDATE.js +9 -6
  120. package/dist/esm/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.js +2 -2
  121. package/dist/esm/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.js +2 -2
  122. package/dist/esm/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.js +2 -2
  123. package/dist/esm/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.js +2 -2
  124. package/dist/esm/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.js +2 -2
  125. package/dist/esm/handlers/index.js +3 -1
  126. package/dist/esm/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +2 -2
  127. package/dist/esm/handlers/interactions/INTERACTION_CREATE.js +6 -3
  128. package/dist/esm/handlers/members/GUILD_MEMBER_ADD.js +1 -1
  129. package/dist/esm/handlers/members/GUILD_MEMBER_UPDATE.js +2 -1
  130. package/dist/esm/handlers/messages/MESSAGE_CREATE.js +6 -3
  131. package/dist/esm/handlers/messages/MESSAGE_REACTION_ADD.js +4 -2
  132. package/dist/esm/handlers/messages/MESSAGE_REACTION_REMOVE.js +3 -2
  133. package/dist/esm/handlers/messages/MESSAGE_UPDATE.js +6 -3
  134. package/dist/esm/handlers/soundboard/GUILD_SOUNDBOARD_SOUNDS_UPDATE.js +10 -0
  135. package/dist/esm/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_CREATE.js +7 -0
  136. package/dist/esm/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_DELETE.js +10 -0
  137. package/dist/esm/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_UPDATE.js +7 -0
  138. package/dist/esm/handlers/soundboard/SOUNDBOARD_SOUNDS.js +10 -0
  139. package/dist/esm/handlers/soundboard/index.js +7 -0
  140. package/dist/esm/handlers/subscriptions/SUBSCRIPTION_CREATE.js +7 -0
  141. package/dist/esm/handlers/subscriptions/SUBSCRIPTION_DELETE.js +7 -0
  142. package/dist/esm/handlers/subscriptions/SUBSCRIPTION_UPDATE.js +7 -0
  143. package/dist/esm/handlers/subscriptions/index.js +5 -0
  144. package/dist/esm/handlers/voice/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
  145. package/dist/esm/handlers/voice/index.js +2 -1
  146. package/dist/esm/handlers/webhooks/WEBHOOKS_UPDATE.js +2 -2
  147. package/dist/esm/handlers.js +11 -2
  148. package/dist/esm/helpers.js +146 -23
  149. package/dist/esm/index.js +3 -3
  150. package/dist/esm/transformers/activity.js +20 -1
  151. package/dist/esm/transformers/application.js +14 -3
  152. package/dist/esm/transformers/applicationCommand.js +1 -1
  153. package/dist/esm/transformers/applicationCommandOption.js +1 -1
  154. package/dist/esm/transformers/applicationCommandOptionChoice.js +1 -1
  155. package/dist/esm/transformers/applicationCommandPermission.js +1 -1
  156. package/dist/esm/transformers/attachment.js +2 -1
  157. package/dist/esm/transformers/auditLogEntry.js +10 -118
  158. package/dist/esm/transformers/automodActionExecution.js +1 -1
  159. package/dist/esm/transformers/automodRule.js +1 -1
  160. package/dist/esm/transformers/avatarDecorationData.js +10 -0
  161. package/dist/esm/transformers/channel.js +36 -10
  162. package/dist/esm/transformers/component.js +59 -13
  163. package/dist/esm/transformers/embed.js +1 -1
  164. package/dist/esm/transformers/emoji.js +23 -2
  165. package/dist/esm/transformers/entitlement.js +2 -1
  166. package/dist/esm/transformers/gatewayBot.js +1 -1
  167. package/dist/esm/transformers/guild.js +8 -2
  168. package/dist/esm/transformers/index.js +6 -1
  169. package/dist/esm/transformers/integration.js +1 -1
  170. package/dist/esm/transformers/interaction.js +113 -73
  171. package/dist/esm/transformers/invite.js +2 -1
  172. package/dist/esm/transformers/member.js +22 -5
  173. package/dist/esm/transformers/message.js +103 -69
  174. package/dist/esm/transformers/onboarding.js +7 -7
  175. package/dist/esm/transformers/poll.js +4 -3
  176. package/dist/esm/transformers/presence.js +1 -1
  177. package/dist/esm/transformers/reverse/activity.js +2 -2
  178. package/dist/esm/transformers/reverse/allowedMentions.js +2 -2
  179. package/dist/esm/transformers/reverse/application.js +6 -2
  180. package/dist/esm/transformers/reverse/applicationCommand.js +1 -1
  181. package/dist/esm/transformers/reverse/applicationCommandOption.js +1 -1
  182. package/dist/esm/transformers/reverse/applicationCommandOptionChoice.js +2 -2
  183. package/dist/esm/transformers/reverse/applicationCommandPermission.js +1 -1
  184. package/dist/esm/transformers/reverse/attachment.js +1 -1
  185. package/dist/esm/transformers/reverse/auditLogEntry.js +11 -122
  186. package/dist/esm/transformers/reverse/component.js +61 -14
  187. package/dist/esm/transformers/reverse/createApplicationCommand.js +2 -3
  188. package/dist/esm/transformers/reverse/embed.js +2 -2
  189. package/dist/esm/transformers/reverse/emoji.js +1 -1
  190. package/dist/esm/transformers/reverse/gatewayBot.js +1 -1
  191. package/dist/esm/transformers/reverse/index.js +1 -2
  192. package/dist/esm/transformers/reverse/member.js +9 -3
  193. package/dist/esm/transformers/reverse/presence.js +1 -1
  194. package/dist/esm/transformers/reverse/team.js +1 -1
  195. package/dist/esm/transformers/reverse/widgetSettings.js +2 -2
  196. package/dist/esm/transformers/role.js +9 -7
  197. package/dist/esm/transformers/scheduledEvent.js +17 -1
  198. package/dist/esm/transformers/sku.js +1 -1
  199. package/dist/esm/transformers/soundboardSound.js +15 -0
  200. package/dist/esm/transformers/stageInstance.js +1 -1
  201. package/dist/esm/transformers/stageInviteInstance.js +1 -1
  202. package/dist/esm/transformers/sticker.js +1 -1
  203. package/dist/esm/transformers/subscription.js +16 -0
  204. package/dist/esm/transformers/team.js +1 -1
  205. package/dist/esm/transformers/template.js +1 -1
  206. package/dist/esm/transformers/threadMember.js +1 -1
  207. package/dist/esm/transformers/toggles/Permissions.js +2 -2
  208. package/dist/esm/transformers/toggles/channel.js +7 -2
  209. package/dist/esm/transformers/toggles/guild.js +85 -52
  210. package/dist/esm/transformers/toggles/member.js +70 -2
  211. package/dist/esm/transformers/types.js +3 -0
  212. package/dist/esm/transformers/user.js +5 -6
  213. package/dist/esm/transformers/voiceRegion.js +1 -1
  214. package/dist/esm/transformers/voiceState.js +2 -2
  215. package/dist/esm/transformers/webhook.js +1 -1
  216. package/dist/esm/transformers/welcomeScreen.js +1 -1
  217. package/dist/esm/transformers/widget.js +1 -1
  218. package/dist/esm/transformers/widgetSettings.js +1 -1
  219. package/dist/esm/transformers.js +120 -603
  220. package/dist/types/bot.d.ts +31 -235
  221. package/dist/types/bot.d.ts.map +1 -1
  222. package/dist/types/commandOptionsParser.d.ts +11 -2
  223. package/dist/types/commandOptionsParser.d.ts.map +1 -1
  224. package/dist/types/desiredProperties.d.ts +194 -0
  225. package/dist/types/desiredProperties.d.ts.map +1 -0
  226. package/dist/types/events.d.ts +231 -0
  227. package/dist/types/events.d.ts.map +1 -0
  228. package/dist/types/handlers/channels/CHANNEL_CREATE.d.ts +1 -1
  229. package/dist/types/handlers/channels/CHANNEL_CREATE.d.ts.map +1 -1
  230. package/dist/types/handlers/channels/THREAD_MEMBERS_UPDATE.d.ts +1 -1
  231. package/dist/types/handlers/channels/THREAD_MEMBERS_UPDATE.d.ts.map +1 -1
  232. package/dist/types/handlers/channels/THREAD_MEMBER_UPDATE.d.ts +1 -1
  233. package/dist/types/handlers/channels/THREAD_MEMBER_UPDATE.d.ts.map +1 -1
  234. package/dist/types/handlers/guilds/GUILD_STICKERS_UPDATE.d.ts +1 -1
  235. package/dist/types/handlers/guilds/GUILD_STICKERS_UPDATE.d.ts.map +1 -1
  236. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.d.ts +1 -1
  237. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.d.ts.map +1 -1
  238. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.d.ts +1 -1
  239. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.d.ts.map +1 -1
  240. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.d.ts +1 -1
  241. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.d.ts.map +1 -1
  242. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.d.ts +1 -1
  243. package/dist/types/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.d.ts.map +1 -1
  244. package/dist/types/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.d.ts +1 -1
  245. package/dist/types/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.d.ts.map +1 -1
  246. package/dist/types/handlers/index.d.ts +2 -0
  247. package/dist/types/handlers/index.d.ts.map +1 -1
  248. package/dist/types/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.d.ts +1 -1
  249. package/dist/types/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.d.ts.map +1 -1
  250. package/dist/types/handlers/interactions/INTERACTION_CREATE.d.ts +1 -1
  251. package/dist/types/handlers/interactions/INTERACTION_CREATE.d.ts.map +1 -1
  252. package/dist/types/handlers/members/GUILD_MEMBER_ADD.d.ts +2 -2
  253. package/dist/types/handlers/members/GUILD_MEMBER_ADD.d.ts.map +1 -1
  254. package/dist/types/handlers/members/GUILD_MEMBER_UPDATE.d.ts.map +1 -1
  255. package/dist/types/handlers/messages/MESSAGE_CREATE.d.ts +1 -1
  256. package/dist/types/handlers/messages/MESSAGE_CREATE.d.ts.map +1 -1
  257. package/dist/types/handlers/messages/MESSAGE_REACTION_ADD.d.ts.map +1 -1
  258. package/dist/types/handlers/messages/MESSAGE_REACTION_REMOVE.d.ts.map +1 -1
  259. package/dist/types/handlers/messages/MESSAGE_UPDATE.d.ts +1 -1
  260. package/dist/types/handlers/messages/MESSAGE_UPDATE.d.ts.map +1 -1
  261. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUNDS_UPDATE.d.ts +4 -0
  262. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUNDS_UPDATE.d.ts.map +1 -0
  263. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_CREATE.d.ts +4 -0
  264. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_CREATE.d.ts.map +1 -0
  265. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_DELETE.d.ts +4 -0
  266. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_DELETE.d.ts.map +1 -0
  267. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_UPDATE.d.ts +4 -0
  268. package/dist/types/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_UPDATE.d.ts.map +1 -0
  269. package/dist/types/handlers/soundboard/SOUNDBOARD_SOUNDS.d.ts +4 -0
  270. package/dist/types/handlers/soundboard/SOUNDBOARD_SOUNDS.d.ts.map +1 -0
  271. package/dist/types/handlers/soundboard/index.d.ts +6 -0
  272. package/dist/types/handlers/soundboard/index.d.ts.map +1 -0
  273. package/dist/types/handlers/subscriptions/SUBSCRIPTION_CREATE.d.ts +4 -0
  274. package/dist/types/handlers/subscriptions/SUBSCRIPTION_CREATE.d.ts.map +1 -0
  275. package/dist/types/handlers/subscriptions/SUBSCRIPTION_DELETE.d.ts +4 -0
  276. package/dist/types/handlers/subscriptions/SUBSCRIPTION_DELETE.d.ts.map +1 -0
  277. package/dist/types/handlers/subscriptions/SUBSCRIPTION_UPDATE.d.ts +4 -0
  278. package/dist/types/handlers/subscriptions/SUBSCRIPTION_UPDATE.d.ts.map +1 -0
  279. package/dist/types/handlers/subscriptions/index.d.ts +4 -0
  280. package/dist/types/handlers/subscriptions/index.d.ts.map +1 -0
  281. package/dist/types/handlers/voice/VOICE_CHANNEL_EFFECT_SEND.d.ts +4 -0
  282. package/dist/types/handlers/voice/VOICE_CHANNEL_EFFECT_SEND.d.ts.map +1 -0
  283. package/dist/types/handlers/voice/index.d.ts +1 -0
  284. package/dist/types/handlers/voice/index.d.ts.map +1 -1
  285. package/dist/types/handlers/webhooks/WEBHOOKS_UPDATE.d.ts +1 -1
  286. package/dist/types/handlers/webhooks/WEBHOOKS_UPDATE.d.ts.map +1 -1
  287. package/dist/types/handlers.d.ts +4 -5
  288. package/dist/types/handlers.d.ts.map +1 -1
  289. package/dist/types/helpers.d.ts +132 -133
  290. package/dist/types/helpers.d.ts.map +1 -1
  291. package/dist/types/index.d.ts +2 -2
  292. package/dist/types/index.d.ts.map +1 -1
  293. package/dist/types/transformers/activity.d.ts +3 -33
  294. package/dist/types/transformers/activity.d.ts.map +1 -1
  295. package/dist/types/transformers/application.d.ts +1 -35
  296. package/dist/types/transformers/application.d.ts.map +1 -1
  297. package/dist/types/transformers/applicationCommand.d.ts +2 -16
  298. package/dist/types/transformers/applicationCommand.d.ts.map +1 -1
  299. package/dist/types/transformers/applicationCommandOption.d.ts +2 -33
  300. package/dist/types/transformers/applicationCommandOption.d.ts.map +1 -1
  301. package/dist/types/transformers/applicationCommandOptionChoice.d.ts +2 -7
  302. package/dist/types/transformers/applicationCommandOptionChoice.d.ts.map +1 -1
  303. package/dist/types/transformers/applicationCommandPermission.d.ts +3 -13
  304. package/dist/types/transformers/applicationCommandPermission.d.ts.map +1 -1
  305. package/dist/types/transformers/attachment.d.ts +3 -35
  306. package/dist/types/transformers/attachment.d.ts.map +1 -1
  307. package/dist/types/transformers/auditLogEntry.d.ts +2 -43
  308. package/dist/types/transformers/auditLogEntry.d.ts.map +1 -1
  309. package/dist/types/transformers/automodActionExecution.d.ts +2 -22
  310. package/dist/types/transformers/automodActionExecution.d.ts.map +1 -1
  311. package/dist/types/transformers/automodRule.d.ts +2 -28
  312. package/dist/types/transformers/automodRule.d.ts.map +1 -1
  313. package/dist/types/transformers/avatarDecorationData.d.ts +3 -0
  314. package/dist/types/transformers/avatarDecorationData.d.ts.map +1 -0
  315. package/dist/types/transformers/channel.d.ts +6 -102
  316. package/dist/types/transformers/channel.d.ts.map +1 -1
  317. package/dist/types/transformers/component.d.ts +3 -47
  318. package/dist/types/transformers/component.d.ts.map +1 -1
  319. package/dist/types/transformers/embed.d.ts +2 -48
  320. package/dist/types/transformers/embed.d.ts.map +1 -1
  321. package/dist/types/transformers/emoji.d.ts +4 -23
  322. package/dist/types/transformers/emoji.d.ts.map +1 -1
  323. package/dist/types/transformers/entitlement.d.ts +3 -23
  324. package/dist/types/transformers/entitlement.d.ts.map +1 -1
  325. package/dist/types/transformers/gatewayBot.d.ts +1 -11
  326. package/dist/types/transformers/gatewayBot.d.ts.map +1 -1
  327. package/dist/types/transformers/guild.d.ts +4 -116
  328. package/dist/types/transformers/guild.d.ts.map +1 -1
  329. package/dist/types/transformers/index.d.ts +5 -0
  330. package/dist/types/transformers/index.d.ts.map +1 -1
  331. package/dist/types/transformers/integration.d.ts +2 -30
  332. package/dist/types/transformers/integration.d.ts.map +1 -1
  333. package/dist/types/transformers/interaction.d.ts +20 -147
  334. package/dist/types/transformers/interaction.d.ts.map +1 -1
  335. package/dist/types/transformers/invite.d.ts +3 -40
  336. package/dist/types/transformers/invite.d.ts.map +1 -1
  337. package/dist/types/transformers/member.d.ts +2 -37
  338. package/dist/types/transformers/member.d.ts.map +1 -1
  339. package/dist/types/transformers/message.d.ts +12 -166
  340. package/dist/types/transformers/message.d.ts.map +1 -1
  341. package/dist/types/transformers/onboarding.d.ts +5 -47
  342. package/dist/types/transformers/onboarding.d.ts.map +1 -1
  343. package/dist/types/transformers/poll.d.ts +4 -71
  344. package/dist/types/transformers/poll.d.ts.map +1 -1
  345. package/dist/types/transformers/presence.d.ts +3 -12
  346. package/dist/types/transformers/presence.d.ts.map +1 -1
  347. package/dist/types/transformers/reverse/activity.d.ts +2 -3
  348. package/dist/types/transformers/reverse/activity.d.ts.map +1 -1
  349. package/dist/types/transformers/reverse/allowedMentions.d.ts +1 -1
  350. package/dist/types/transformers/reverse/allowedMentions.d.ts.map +1 -1
  351. package/dist/types/transformers/reverse/application.d.ts +2 -3
  352. package/dist/types/transformers/reverse/application.d.ts.map +1 -1
  353. package/dist/types/transformers/reverse/applicationCommand.d.ts +1 -2
  354. package/dist/types/transformers/reverse/applicationCommand.d.ts.map +1 -1
  355. package/dist/types/transformers/reverse/applicationCommandOption.d.ts +1 -2
  356. package/dist/types/transformers/reverse/applicationCommandOption.d.ts.map +1 -1
  357. package/dist/types/transformers/reverse/applicationCommandOptionChoice.d.ts +2 -3
  358. package/dist/types/transformers/reverse/applicationCommandOptionChoice.d.ts.map +1 -1
  359. package/dist/types/transformers/reverse/applicationCommandPermission.d.ts +2 -3
  360. package/dist/types/transformers/reverse/applicationCommandPermission.d.ts.map +1 -1
  361. package/dist/types/transformers/reverse/attachment.d.ts +1 -2
  362. package/dist/types/transformers/reverse/attachment.d.ts.map +1 -1
  363. package/dist/types/transformers/reverse/auditLogEntry.d.ts +1 -2
  364. package/dist/types/transformers/reverse/auditLogEntry.d.ts.map +1 -1
  365. package/dist/types/transformers/reverse/component.d.ts +3 -4
  366. package/dist/types/transformers/reverse/component.d.ts.map +1 -1
  367. package/dist/types/transformers/reverse/createApplicationCommand.d.ts.map +1 -1
  368. package/dist/types/transformers/reverse/embed.d.ts +2 -3
  369. package/dist/types/transformers/reverse/embed.d.ts.map +1 -1
  370. package/dist/types/transformers/reverse/emoji.d.ts +2 -3
  371. package/dist/types/transformers/reverse/emoji.d.ts.map +1 -1
  372. package/dist/types/transformers/reverse/gatewayBot.d.ts +1 -1
  373. package/dist/types/transformers/reverse/gatewayBot.d.ts.map +1 -1
  374. package/dist/types/transformers/reverse/index.d.ts +0 -1
  375. package/dist/types/transformers/reverse/index.d.ts.map +1 -1
  376. package/dist/types/transformers/reverse/member.d.ts +4 -5
  377. package/dist/types/transformers/reverse/member.d.ts.map +1 -1
  378. package/dist/types/transformers/reverse/presence.d.ts +2 -3
  379. package/dist/types/transformers/reverse/presence.d.ts.map +1 -1
  380. package/dist/types/transformers/reverse/team.d.ts +2 -3
  381. package/dist/types/transformers/reverse/team.d.ts.map +1 -1
  382. package/dist/types/transformers/reverse/widgetSettings.d.ts +2 -3
  383. package/dist/types/transformers/reverse/widgetSettings.d.ts.map +1 -1
  384. package/dist/types/transformers/role.d.ts +4 -76
  385. package/dist/types/transformers/role.d.ts.map +1 -1
  386. package/dist/types/transformers/scheduledEvent.d.ts +4 -37
  387. package/dist/types/transformers/scheduledEvent.d.ts.map +1 -1
  388. package/dist/types/transformers/sku.d.ts +3 -17
  389. package/dist/types/transformers/sku.d.ts.map +1 -1
  390. package/dist/types/transformers/soundboardSound.d.ts +4 -0
  391. package/dist/types/transformers/soundboardSound.d.ts.map +1 -0
  392. package/dist/types/transformers/stageInstance.d.ts +2 -14
  393. package/dist/types/transformers/stageInstance.d.ts.map +1 -1
  394. package/dist/types/transformers/stageInviteInstance.d.ts +3 -13
  395. package/dist/types/transformers/stageInviteInstance.d.ts.map +1 -1
  396. package/dist/types/transformers/sticker.d.ts +4 -37
  397. package/dist/types/transformers/sticker.d.ts.map +1 -1
  398. package/dist/types/transformers/subscription.d.ts +4 -0
  399. package/dist/types/transformers/subscription.d.ts.map +1 -0
  400. package/dist/types/transformers/team.d.ts +3 -15
  401. package/dist/types/transformers/team.d.ts.map +1 -1
  402. package/dist/types/transformers/template.d.ts +2 -15
  403. package/dist/types/transformers/template.d.ts.map +1 -1
  404. package/dist/types/transformers/threadMember.d.ts +2 -12
  405. package/dist/types/transformers/threadMember.d.ts.map +1 -1
  406. package/dist/types/transformers/toggles/Permissions.d.ts +4 -4
  407. package/dist/types/transformers/toggles/Permissions.d.ts.map +1 -1
  408. package/dist/types/transformers/toggles/channel.d.ts +3 -0
  409. package/dist/types/transformers/toggles/channel.d.ts.map +1 -1
  410. package/dist/types/transformers/toggles/guild.d.ts +58 -35
  411. package/dist/types/transformers/toggles/guild.d.ts.map +1 -1
  412. package/dist/types/transformers/toggles/member.d.ts +41 -1
  413. package/dist/types/transformers/toggles/member.d.ts.map +1 -1
  414. package/dist/types/transformers/types.d.ts +1603 -0
  415. package/dist/types/transformers/types.d.ts.map +1 -0
  416. package/dist/types/transformers/user.d.ts +3 -45
  417. package/dist/types/transformers/user.d.ts.map +1 -1
  418. package/dist/types/transformers/voiceRegion.d.ts +1 -8
  419. package/dist/types/transformers/voiceRegion.d.ts.map +1 -1
  420. package/dist/types/transformers/voiceState.d.ts +5 -15
  421. package/dist/types/transformers/voiceState.d.ts.map +1 -1
  422. package/dist/types/transformers/webhook.d.ts +3 -29
  423. package/dist/types/transformers/webhook.d.ts.map +1 -1
  424. package/dist/types/transformers/welcomeScreen.d.ts +1 -10
  425. package/dist/types/transformers/welcomeScreen.d.ts.map +1 -1
  426. package/dist/types/transformers/widget.d.ts +1 -20
  427. package/dist/types/transformers/widget.d.ts.map +1 -1
  428. package/dist/types/transformers/widgetSettings.d.ts +1 -5
  429. package/dist/types/transformers/widgetSettings.d.ts.map +1 -1
  430. package/dist/types/transformers.d.ts +182 -548
  431. package/dist/types/transformers.d.ts.map +1 -1
  432. package/package.json +19 -20
  433. package/dist/cjs/optionalize.cjs +0 -7
  434. package/dist/cjs/transformers/reverse/interactionResponse.cjs +0 -34
  435. package/dist/cjs/typings.cjs +0 -38
  436. package/dist/esm/optionalize.js +0 -3
  437. package/dist/esm/transformers/reverse/interactionResponse.js +0 -24
  438. package/dist/esm/typings.js +0 -20
  439. package/dist/tsconfig.tsbuildinfo +0 -1
  440. package/dist/types/optionalize.d.ts +0 -46
  441. package/dist/types/optionalize.d.ts.map +0 -1
  442. package/dist/types/transformers/reverse/interactionResponse.d.ts +0 -4
  443. package/dist/types/transformers/reverse/interactionResponse.d.ts.map +0 -1
  444. package/dist/types/typings.d.ts +0 -203
  445. package/dist/types/typings.d.ts.map +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
+ [![Discord](https://img.shields.io/discord/785384884197392384?color=7289da&logo=discord&logoColor=dark)](https://discord.com/invite/5vBgXk3UcZ)
8
+ [![codecov](https://codecov.io/gh/discordeno/discordeno/branch/main/graph/badge.svg?token=SQI9OYJ7AK)](https://codecov.io/gh/discordeno/discordeno)
9
+ ![action status](https://github.com/discordeno/discordeno/actions/workflows/lib-check.yml/badge.svg?event=push)
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)
package/dist/cjs/bot.cjs CHANGED
@@ -15,6 +15,8 @@ const _handlers = require("./handlers.cjs");
15
15
  const _helpers = require("./helpers.cjs");
16
16
  const _transformers = require("./transformers.cjs");
17
17
  function createBot(options) {
18
+ if (!options.transformers) options.transformers = {};
19
+ if (!options.transformers.desiredProperties) options.transformers.desiredProperties = options.desiredProperties;
18
20
  if (!options.rest) options.rest = {
19
21
  token: options.token,
20
22
  applicationId: options.applicationId
@@ -43,9 +45,7 @@ function createBot(options) {
43
45
  const bot = {
44
46
  id,
45
47
  applicationId: id,
46
- transformers: (0, _transformers.createTransformers)(options.transformers ?? {}, {
47
- defaultDesiredPropertiesValue: options.defaultDesiredPropertiesValue ?? false
48
- }),
48
+ transformers: (0, _transformers.createTransformers)(options.transformers),
49
49
  handlers: (0, _handlers.createBotGatewayHandlers)(options.handlers ?? {}),
50
50
  rest: (0, _rest.createRestManager)(options.rest),
51
51
  gateway: (0, _gateway.createGatewayManager)(options.gateway),
@@ -63,6 +63,11 @@ function createBot(options) {
63
63
  if (!options.gateway?.totalShards) bot.gateway.totalShards = bot.gateway.connection.shards;
64
64
  if (!options.gateway?.lastShardId && !options.gateway?.totalShards) bot.gateway.lastShardId = bot.gateway.connection.shards - 1;
65
65
  }
66
+ if (!bot.gateway.resharding.getSessionInfo) {
67
+ bot.gateway.resharding.getSessionInfo = async ()=>{
68
+ return await bot.rest.getGatewayBot();
69
+ };
70
+ }
66
71
  await bot.gateway.spawnShards();
67
72
  },
68
73
  async shutdown () {
@@ -74,4 +79,4 @@ function createBot(options) {
74
79
  return bot;
75
80
  }
76
81
 
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ib3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnMsIEdhdGV3YXlNYW5hZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vZ2F0ZXdheSdcbmltcG9ydCB7IFNoYXJkU29ja2V0Q2xvc2VDb2RlcywgY3JlYXRlR2F0ZXdheU1hbmFnZXIgfSBmcm9tICdAZGlzY29yZGVuby9nYXRld2F5J1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVSZXN0TWFuYWdlck9wdGlvbnMsIFJlc3RNYW5hZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vcmVzdCdcbmltcG9ydCB7IGNyZWF0ZVJlc3RNYW5hZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vcmVzdCdcbmltcG9ydCB0eXBlIHsgQmlnU3RyaW5nLCBEaXNjb3JkRW1vamksIERpc2NvcmRHYXRld2F5UGF5bG9hZCwgRGlzY29yZFJlYWR5LCBHYXRld2F5SW50ZW50cyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyLCBnZXRCb3RJZEZyb21Ub2tlbiwgdHlwZSBDb2xsZWN0aW9uLCB0eXBlIGxvZ2dlciB9IGZyb20gJ0BkaXNjb3JkZW5vL3V0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlQm90R2F0ZXdheUhhbmRsZXJzIH0gZnJvbSAnLi9oYW5kbGVycy5qcydcbmltcG9ydCB7IGNyZWF0ZUJvdEhlbHBlcnMsIHR5cGUgQm90SGVscGVycyB9IGZyb20gJy4vaGVscGVycy5qcydcbmltcG9ydCB7IGNyZWF0ZVRyYW5zZm9ybWVycywgdHlwZSBUcmFuc2Zvcm1lcnMgfSBmcm9tICcuL3RyYW5zZm9ybWVycy5qcydcbmltcG9ydCB0eXBlIHsgQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbiB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL2FwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb24uanMnXG5pbXBvcnQgdHlwZSB7IEF1ZGl0TG9nRW50cnkgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9hdWRpdExvZ0VudHJ5LmpzJ1xuaW1wb3J0IHR5cGUgeyBBdXRvTW9kZXJhdGlvbkFjdGlvbkV4ZWN1dGlvbiB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL2F1dG9tb2RBY3Rpb25FeGVjdXRpb24uanMnXG5pbXBvcnQgdHlwZSB7IEF1dG9Nb2RlcmF0aW9uUnVsZSB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL2F1dG9tb2RSdWxlLmpzJ1xuaW1wb3J0IHR5cGUgeyBDaGFubmVsIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvY2hhbm5lbC5qcydcbmltcG9ydCB0eXBlIHsgRW1vamkgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9lbW9qaS5qcydcbmltcG9ydCB0eXBlIHsgRW50aXRsZW1lbnQgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9lbnRpdGxlbWVudC5qcydcbmltcG9ydCB0eXBlIHsgR3VpbGQgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9ndWlsZC5qcydcbmltcG9ydCB0eXBlIHsgSW50ZWdyYXRpb24gfSBmcm9tICcuL3RyYW5zZm9ybWVycy9pbnRlZ3JhdGlvbi5qcydcbmltcG9ydCB0eXBlIHsgSW50ZXJhY3Rpb24gfSBmcm9tICcuL3RyYW5zZm9ybWVycy9pbnRlcmFjdGlvbi5qcydcbmltcG9ydCB0eXBlIHsgSW52aXRlIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvaW52aXRlLmpzJ1xuaW1wb3J0IHR5cGUgeyBNZW1iZXIgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9tZW1iZXIuanMnXG5pbXBvcnQgdHlwZSB7IE1lc3NhZ2UgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9tZXNzYWdlLmpzJ1xuaW1wb3J0IHR5cGUgeyBQcmVzZW5jZVVwZGF0ZSB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3ByZXNlbmNlLmpzJ1xuaW1wb3J0IHR5cGUgeyBSb2xlIH0gZnJvbSAnLi90cmFuc2Zvcm1lcnMvcm9sZS5qcydcbmltcG9ydCB0eXBlIHsgU2NoZWR1bGVkRXZlbnQgfSBmcm9tICcuL3RyYW5zZm9ybWVycy9zY2hlZHVsZWRFdmVudC5qcydcbmltcG9ydCB0eXBlIHsgU3RpY2tlciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3N0aWNrZXIuanMnXG5pbXBvcnQgdHlwZSB7IFRocmVhZE1lbWJlciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3RocmVhZE1lbWJlci5qcydcbmltcG9ydCB0eXBlIHsgVXNlciB9IGZyb20gJy4vdHJhbnNmb3JtZXJzL3VzZXIuanMnXG5pbXBvcnQgdHlwZSB7IFZvaWNlU3RhdGUgfSBmcm9tICcuL3RyYW5zZm9ybWVycy92b2ljZVN0YXRlLmpzJ1xuaW1wb3J0IHR5cGUgeyBCb3RHYXRld2F5SGFuZGxlck9wdGlvbnMgfSBmcm9tICcuL3R5cGluZ3MuanMnXG5cbi8qKlxuICogQ3JlYXRlIGEgYm90IG9iamVjdCB0aGF0IHdpbGwgbWFpbnRhaW4gdGhlIHJlc3QgYW5kIGdhdGV3YXkgY29ubmVjdGlvbi5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9ucyBvcHRpb25zIHVzZWQgdG8gbWFuYWdlIHRoaXMgYm90LlxuICogQHJldHVybnMgQm90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCb3Qob3B0aW9uczogQ3JlYXRlQm90T3B0aW9ucyk6IEJvdCB7XG4gIGlmICghb3B0aW9ucy5yZXN0KSBvcHRpb25zLnJlc3QgPSB7IHRva2VuOiBvcHRpb25zLnRva2VuLCBhcHBsaWNhdGlvbklkOiBvcHRpb25zLmFwcGxpY2F0aW9uSWQgfVxuICBpZiAoIW9wdGlvbnMucmVzdC50b2tlbikgb3B0aW9ucy5yZXN0LnRva2VuID0gb3B0aW9ucy50b2tlblxuICBpZiAoIW9wdGlvbnMucmVzdC5sb2dnZXIgJiYgb3B0aW9ucy5sb2dnZXJGYWN0b3J5KSBvcHRpb25zLnJlc3QubG9nZ2VyID0gb3B0aW9ucy5sb2dnZXJGYWN0b3J5KCdSRVNUJylcbiAgaWYgKCFvcHRpb25zLmdhdGV3YXkpIG9wdGlvbnMuZ2F0ZXdheSA9IHsgdG9rZW46IG9wdGlvbnMudG9rZW4gfVxuICBpZiAoIW9wdGlvbnMuZ2F0ZXdheS50b2tlbikgb3B0aW9ucy5nYXRld2F5LnRva2VuID0gb3B0aW9ucy50b2tlblxuICBpZiAoIW9wdGlvbnMuZ2F0ZXdheS5ldmVudHMpIG9wdGlvbnMuZ2F0ZXdheS5ldmVudHMgPSB7fVxuICBpZiAoIW9wdGlvbnMuZ2F0ZXdheS5sb2dnZXIgJiYgb3B0aW9ucy5sb2dnZXJGYWN0b3J5KSBvcHRpb25zLmdhdGV3YXkubG9nZ2VyID0gb3B0aW9ucy5sb2dnZXJGYWN0b3J5KCdHQVRFV0FZJylcbiAgaWYgKCFvcHRpb25zLmdhdGV3YXkuZXZlbnRzLm1lc3NhZ2UpIHtcbiAgICBvcHRpb25zLmdhdGV3YXkuZXZlbnRzLm1lc3NhZ2UgPSBhc3luYyAoc2hhcmQsIGRhdGEpID0+IHtcbiAgICAgIC8vIFRSSUdHRVIgUkFXIEVWRU5UXG4gICAgICBib3QuZXZlbnRzLnJhdz8uKGRhdGEsIHNoYXJkLmlkKVxuXG4gICAgICBpZiAoIWRhdGEudCkgcmV0dXJuXG5cbiAgICAgIC8vIFJVTiBESVNQQVRDSCBDSEVDS1xuICAgICAgYXdhaXQgYm90LmV2ZW50cy5kaXNwYXRjaFJlcXVpcmVtZW50cz8uKGRhdGEsIHNoYXJkLmlkKVxuICAgICAgYm90LmhhbmRsZXJzW2RhdGEudCBhcyBrZXlvZiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVCb3RHYXRld2F5SGFuZGxlcnM+XT8uKGJvdCwgZGF0YSwgc2hhcmQuaWQpXG4gICAgfVxuICB9XG5cbiAgb3B0aW9ucy5nYXRld2F5LmludGVudHMgPSBvcHRpb25zLmludGVudHNcbiAgb3B0aW9ucy5nYXRld2F5LnByZWZlclNuYWtlQ2FzZSA9IHRydWVcblxuICBjb25zdCBpZCA9IGdldEJvdElkRnJvbVRva2VuKG9wdGlvbnMudG9rZW4pXG5cbiAgY29uc3QgYm90OiBCb3QgPSB7XG4gICAgaWQsXG4gICAgYXBwbGljYXRpb25JZDogaWQsXG4gICAgdHJhbnNmb3JtZXJzOiBjcmVhdGVUcmFuc2Zvcm1lcnMob3B0aW9ucy50cmFuc2Zvcm1lcnMgPz8ge30sIHsgZGVmYXVsdERlc2lyZWRQcm9wZXJ0aWVzVmFsdWU6IG9wdGlvbnMuZGVmYXVsdERlc2lyZWRQcm9wZXJ0aWVzVmFsdWUgPz8gZmFsc2UgfSksXG4gICAgaGFuZGxlcnM6IGNyZWF0ZUJvdEdhdGV3YXlIYW5kbGVycyhvcHRpb25zLmhhbmRsZXJzID8/IHt9KSxcbiAgICByZXN0OiBjcmVhdGVSZXN0TWFuYWdlcihvcHRpb25zLnJlc3QpLFxuICAgIGdhdGV3YXk6IGNyZWF0ZUdhdGV3YXlNYW5hZ2VyKG9wdGlvbnMuZ2F0ZXdheSksXG4gICAgZXZlbnRzOiBvcHRpb25zLmV2ZW50cyA/PyB7fSxcbiAgICBsb2dnZXI6IG9wdGlvbnMubG9nZ2VyRmFjdG9yeSA/IG9wdGlvbnMubG9nZ2VyRmFjdG9yeSgnQk9UJykgOiBjcmVhdGVMb2dnZXIoeyBuYW1lOiAnQk9UJyB9KSxcbiAgICAvLyBTZXQgdXAgaGVscGVycyBiZWxvdy5cbiAgICBoZWxwZXJzOiB7fSBhcyBCb3RIZWxwZXJzLFxuICAgIGFzeW5jIHN0YXJ0KCkge1xuICAgICAgaWYgKCFvcHRpb25zLmdhdGV3YXk/LmNvbm5lY3Rpb24pIHtcbiAgICAgICAgYm90LmdhdGV3YXkuY29ubmVjdGlvbiA9IGF3YWl0IGJvdC5yZXN0LmdldFNlc3Npb25JbmZvKClcblxuICAgICAgICAvLyBDaGVjayBmb3Igb3ZlcnJpZGVzIGluIHRoZSBjb25maWd1cmF0aW9uXG4gICAgICAgIGlmICghb3B0aW9ucy5nYXRld2F5Py51cmwpIGJvdC5nYXRld2F5LnVybCA9IGJvdC5nYXRld2F5LmNvbm5lY3Rpb24udXJsXG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmdhdGV3YXk/LnRvdGFsU2hhcmRzKSBib3QuZ2F0ZXdheS50b3RhbFNoYXJkcyA9IGJvdC5nYXRld2F5LmNvbm5lY3Rpb24uc2hhcmRzXG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmdhdGV3YXk/Lmxhc3RTaGFyZElkICYmICFvcHRpb25zLmdhdGV3YXk/LnRvdGFsU2hhcmRzKSBib3QuZ2F0ZXdheS5sYXN0U2hhcmRJZCA9IGJvdC5nYXRld2F5LmNvbm5lY3Rpb24uc2hhcmRzIC0gMVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBib3QuZ2F0ZXdheS5zcGF3blNoYXJkcygpXG4gICAgfSxcblxuICAgIGFzeW5jIHNodXRkb3duKCkge1xuICAgICAgcmV0dXJuIGF3YWl0IGJvdC5nYXRld2F5LnNodXRkb3duKFNoYXJkU29ja2V0Q2xvc2VDb2Rlcy5TaHV0ZG93biwgJ1VzZXIgcmVxdWVzdGVkIGJvdCBzdG9wJylcbiAgICB9LFxuICB9XG5cbiAgYm90LmhlbHBlcnMgPSBjcmVhdGVCb3RIZWxwZXJzKGJvdClcbiAgaWYgKG9wdGlvbnMuYXBwbGljYXRpb25JZCkgYm90LmFwcGxpY2F0aW9uSWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShvcHRpb25zLmFwcGxpY2F0aW9uSWQpXG5cbiAgcmV0dXJuIGJvdFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUJvdE9wdGlvbnMge1xuICAvKiogVGhlIGJvdCdzIHRva2VuLiAqL1xuICB0b2tlbjogc3RyaW5nXG4gIC8qKiBBcHBsaWNhdGlvbiBJZCBvZiB0aGUgYm90IGluY2FzZSBpdCBpcyBhbiBvbGQgYm90IHRva2VuLiAqL1xuICBhcHBsaWNhdGlvbklkPzogQmlnU3RyaW5nXG4gIC8qKiBUaGUgYm90J3MgaW50ZW50cyB0aGF0IHdpbGwgYmUgdXNlZCB0byBtYWtlIGEgY29ubmVjdGlvbiB3aXRoIGRpc2NvcmRzIGdhdGV3YXkuICovXG4gIGludGVudHM/OiBHYXRld2F5SW50ZW50c1xuICAvKiogQW55IG9wdGlvbnMgeW91IHdpc2ggdG8gcHJvdmlkZSB0byB0aGUgcmVzdCBtYW5hZ2VyLiAqL1xuICByZXN0PzogQ3JlYXRlUmVzdE1hbmFnZXJPcHRpb25zICYgUGFydGlhbDxQaWNrPENyZWF0ZVJlc3RNYW5hZ2VyT3B0aW9ucywgJ3Rva2VuJz4+XG4gIC8qKiBBbnkgb3B0aW9ucyB5b3Ugd2lzaCB0byBwcm92aWRlIHRvIHRoZSBnYXRld2F5IG1hbmFnZXIuICovXG4gIGdhdGV3YXk/OiBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnMgJiBQYXJ0aWFsPFBpY2s8Q3JlYXRlR2F0ZXdheU1hbmFnZXJPcHRpb25zLCAndG9rZW4nPj5cbiAgLyoqIFRoZSBldmVudCBoYW5kbGVycy4gKi9cbiAgZXZlbnRzPzogUGFydGlhbDxFdmVudEhhbmRsZXJzPlxuICAvKiogVGhlIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCB0cmFuc2Zvcm0gZGlzY29yZCBvYmplY3RzIHRvIGRpc2NvcmRlbm8gc2hhcGVkIG9iamVjdHMuICovXG4gIHRyYW5zZm9ybWVycz86IFBhcnRpYWw8VHJhbnNmb3JtZXJzPlxuICAvKiogVGhlIGhhbmRsZXIgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGhhbmRsZSBpbmNvbWluZyBkaXNjb3JkIHBheWxvYWRzIGZyb20gZ2F0ZXdheSBhbmQgY2FsbCBhbiBldmVudC4gKi9cbiAgaGFuZGxlcnM/OiBQYXJ0aWFsPEJvdEdhdGV3YXlIYW5kbGVyT3B0aW9ucz5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3aXRoIGNhdXRpb25cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIHdoZW4gdGhlIENMSSBpcyBjb21wbGV0ZS4gSXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB3aGF0c29ldmVyLlxuICAgKiBBbHRob3VnaCBpdCBpcyBoYXJkZXIgdG8gY3JlYXRlIHlvdXIgYm90IHdpdGhvdXQgdGhpcywgaXQgaXMgc3RpbGwgaGlnaGx5IHJlY29tbWVuZGVkIHRvIGRvIGl0IHRoYXQgd2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGVmYXVsdERlc2lyZWRQcm9wZXJ0aWVzVmFsdWU/OiBib29sZWFuXG4gIC8qKlxuICAgKiBUaGlzIGZhY3Rvcnkgd2lsbCBiZSBpbnZva2VkIHRvIGNyZWF0ZSB0aGUgbG9nZ2VyIGZvciBnYXRld2F5LCByZXN0IGFuZCBib3RcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSWYgbm90IHByb3ZpZGVkIHRoZSBkZWZhdWx0IGxvZ2dlciB3aWxsIGJlIHVzZWQgd2l0aCByZXN0IGFuZCBnYXRld2F5IHNoYXJpbmcgdGhlIHNhbWUgbG9nZ2VyXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBpbnZva2VkIDMgdGltZXMsIG9uZSB3aXRoIHRoZSBuYW1lIG9mIGBSRVNUYCwgb25lIHdpdGggYEdBVEVXQVlgIGFuZCB0aGUgdGhpcmQgb25lIHdpdGggbmFtZSBgQk9UYFxuICAgKi9cbiAgbG9nZ2VyRmFjdG9yeT86IChuYW1lOiAnUkVTVCcgfCAnR0FURVdBWScgfCAnQk9UJykgPT4gUGljazx0eXBlb2YgbG9nZ2VyLCAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Vycm9yJyB8ICdmYXRhbCc+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm90IHtcbiAgLyoqIFRoZSBpZCBvZiB0aGUgYm90LiAqL1xuICBpZDogYmlnaW50XG4gIC8qKiBUaGUgYXBwbGljYXRpb24gaWQgb2YgdGhlIGJvdC4gVGhpcyBpcyB1c3VhbGx5IHRoZSBzYW1lIGFzIGlkIGJ1dCBpbiB0aGUgY2FzZSBvZiBvbGQgYm90cyBjYW4gYmUgZGlmZmVyZW50LiAqL1xuICBhcHBsaWNhdGlvbklkOiBiaWdpbnRcbiAgLyoqIFRoZSByZXN0IG1hbmFnZXIuICovXG4gIHJlc3Q6IFJlc3RNYW5hZ2VyXG4gIC8qKiBUaGUgZ2F0ZXdheSBtYW5hZ2VyLiAqL1xuICBnYXRld2F5OiBHYXRld2F5TWFuYWdlclxuICAvKiogVGhlIGV2ZW50IGhhbmRsZXJzLiAqL1xuICBldmVudHM6IFBhcnRpYWw8RXZlbnRIYW5kbGVycz5cbiAgLyoqIEEgbG9nZ2VyIHV0aWxpdHkgdG8gbWFrZSBpdCBlYXN5IHRvIGxvZyBuaWNlIGFuZCB1c2VmdWwgdGhpbmdzIGluIHRoZSBib3QgY29kZS4gKi9cbiAgbG9nZ2VyOiBQaWNrPHR5cGVvZiBsb2dnZXIsICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InIHwgJ2ZhdGFsJz5cbiAgLyoqIFRoZSBmdW5jdGlvbnMgdGhhdCBzaG91bGQgdHJhbnNmb3JtIGRpc2NvcmQgb2JqZWN0cyB0byBkaXNjb3JkZW5vIHNoYXBlZCBvYmplY3RzLiAqL1xuICB0cmFuc2Zvcm1lcnM6IFRyYW5zZm9ybWVyc1xuICAvKiogVGhlIGhhbmRsZXIgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGhhbmRsZSBpbmNvbWluZyBkaXNjb3JkIHBheWxvYWRzIGZyb20gZ2F0ZXdheSBhbmQgY2FsbCBhbiBldmVudC4gKi9cbiAgaGFuZGxlcnM6IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUJvdEdhdGV3YXlIYW5kbGVycz5cbiAgaGVscGVyczogQm90SGVscGVyc1xuICAvKiogU3RhcnQgdGhlIGJvdCBjb25uZWN0aW9uIHRvIHRoZSBnYXRld2F5LiAqL1xuICBzdGFydDogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogU2h1dHMgZG93biBhbGwgdGhlIGJvdCBjb25uZWN0aW9ucyB0byB0aGUgZ2F0ZXdheS4gKi9cbiAgc2h1dGRvd246ICgpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmVudEhhbmRsZXJzIHtcbiAgZGVidWc6ICh0ZXh0OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSA9PiB1bmtub3duXG4gIGFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zVXBkYXRlOiAoY29tbWFuZDogQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbikgPT4gdW5rbm93blxuICBndWlsZEF1ZGl0TG9nRW50cnlDcmVhdGU6IChsb2c6IEF1ZGl0TG9nRW50cnksIGd1aWxkSWQ6IGJpZ2ludCkgPT4gdW5rbm93blxuICBhdXRvbW9kUnVsZUNyZWF0ZTogKHJ1bGU6IEF1dG9Nb2RlcmF0aW9uUnVsZSkgPT4gdW5rbm93blxuICBhdXRvbW9kUnVsZVVwZGF0ZTogKHJ1bGU6IEF1dG9Nb2RlcmF0aW9uUnVsZSkgPT4gdW5rbm93blxuICBhdXRvbW9kUnVsZURlbGV0ZTogKHJ1bGU6IEF1dG9Nb2RlcmF0aW9uUnVsZSkgPT4gdW5rbm93blxuICBhdXRvbW9kQWN0aW9uRXhlY3V0aW9uOiAocGF5bG9hZDogQXV0b01vZGVyYXRpb25BY3Rpb25FeGVjdXRpb24pID0+IHVua25vd25cbiAgdGhyZWFkQ3JlYXRlOiAodGhyZWFkOiBDaGFubmVsKSA9PiB1bmtub3duXG4gIHRocmVhZERlbGV0ZTogKHRocmVhZDogQ2hhbm5lbCkgPT4gdW5rbm93blxuICB0aHJlYWRMaXN0U3luYzogKHBheWxvYWQ6IHsgZ3VpbGRJZDogYmlnaW50OyBjaGFubmVsSWRzPzogYmlnaW50W107IHRocmVhZHM6IENoYW5uZWxbXTsgbWVtYmVyczogVGhyZWFkTWVtYmVyW10gfSkgPT4gdW5rbm93blxuICB0aHJlYWRNZW1iZXJVcGRhdGU6IChwYXlsb2FkOiB7IGlkOiBiaWdpbnQ7IGd1aWxkSWQ6IGJpZ2ludDsgam9pbmVkQXQ6IG51bWJlcjsgZmxhZ3M6IG51bWJlciB9KSA9PiB1bmtub3duXG4gIHRocmVhZE1lbWJlcnNVcGRhdGU6IChwYXlsb2FkOiB7IGlkOiBiaWdpbnQ7IGd1aWxkSWQ6IGJpZ2ludDsgYWRkZWRNZW1iZXJzPzogVGhyZWFkTWVtYmVyW107IHJlbW92ZWRNZW1iZXJJZHM/OiBiaWdpbnRbXSB9KSA9PiB1bmtub3duXG4gIHRocmVhZFVwZGF0ZTogKHRocmVhZDogQ2hhbm5lbCkgPT4gdW5rbm93blxuICBzY2hlZHVsZWRFdmVudENyZWF0ZTogKGV2ZW50OiBTY2hlZHVsZWRFdmVudCkgPT4gdW5rbm93blxuICBzY2hlZHVsZWRFdmVudFVwZGF0ZTogKGV2ZW50OiBTY2hlZHVsZWRFdmVudCkgPT4gdW5rbm93blxuICBzY2hlZHVsZWRFdmVudERlbGV0ZTogKGV2ZW50OiBTY2hlZHVsZWRFdmVudCkgPT4gdW5rbm93blxuICAvKiogU2VudCB3aGVuIGEgdXNlciBoYXMgc3Vic2NyaWJlZCB0byBhIGd1aWxkIHNjaGVkdWxlZCBldmVudC4gRVhQRVJJTUVOVEFMISAqL1xuICBzY2hlZHVsZWRFdmVudFVzZXJBZGQ6IChwYXlsb2FkOiB7IGd1aWxkU2NoZWR1bGVkRXZlbnRJZDogYmlnaW50OyBndWlsZElkOiBiaWdpbnQ7IHVzZXJJZDogYmlnaW50IH0pID0+IHVua25vd25cbiAgLyoqIFNlbnQgd2hlbiBhIHVzZXIgaGFzIHVuc3Vic2NyaWJlZCB0byBhIGd1aWxkIHNjaGVkdWxlZCBldmVudC4gRVhQRVJJTUVOVEFMISAqL1xuICBzY2hlZHVsZWRFdmVudFVzZXJSZW1vdmU6IChwYXlsb2FkOiB7IGd1aWxkU2NoZWR1bGVkRXZlbnRJZDogYmlnaW50OyBndWlsZElkOiBiaWdpbnQ7IHVzZXJJZDogYmlnaW50IH0pID0+IHVua25vd25cbiAgcmVhZHk6IChcbiAgICBwYXlsb2FkOiB7XG4gICAgICBzaGFyZElkOiBudW1iZXJcbiAgICAgIHY6IG51bWJlclxuICAgICAgdXNlcjogVXNlclxuICAgICAgZ3VpbGRzOiBiaWdpbnRbXVxuICAgICAgc2Vzc2lvbklkOiBzdHJpbmdcbiAgICAgIHNoYXJkPzogbnVtYmVyW11cbiAgICAgIGFwcGxpY2F0aW9uSWQ6IGJpZ2ludFxuICAgIH0sXG4gICAgcmF3UGF5bG9hZDogRGlzY29yZFJlYWR5LFxuICApID0+IHVua25vd25cbiAgaW50ZXJhY3Rpb25DcmVhdGU6IChpbnRlcmFjdGlvbjogSW50ZXJhY3Rpb24pID0+IHVua25vd25cbiAgaW50ZWdyYXRpb25DcmVhdGU6IChpbnRlZ3JhdGlvbjogSW50ZWdyYXRpb24pID0+IHVua25vd25cbiAgaW50ZWdyYXRpb25EZWxldGU6IChwYXlsb2FkOiB7IGlkOiBiaWdpbnQ7IGd1aWxkSWQ6IGJpZ2ludDsgYXBwbGljYXRpb25JZD86IGJpZ2ludCB9KSA9PiB1bmtub3duXG4gIGludGVncmF0aW9uVXBkYXRlOiAocGF5bG9hZDogeyBndWlsZElkOiBiaWdpbnQgfSkgPT4gdW5rbm93blxuICBpbnZpdGVDcmVhdGU6IChpbnZpdGU6IEludml0ZSkgPT4gdW5rbm93blxuICBpbnZpdGVEZWxldGU6IChwYXlsb2FkOiB7IGNoYW5uZWxJZDogYmlnaW50OyBndWlsZElkPzogYmlnaW50OyBjb2RlOiBzdHJpbmcgfSkgPT4gdW5rbm93blxuICBndWlsZE1lbWJlckFkZDogKG1lbWJlcjogTWVtYmVyLCB1c2VyOiBVc2VyKSA9PiB1bmtub3duXG4gIGd1aWxkTWVtYmVyUmVtb3ZlOiAodXNlcjogVXNlciwgZ3VpbGRJZDogYmlnaW50KSA9PiB1bmtub3duXG4gIGd1aWxkTWVtYmVyVXBkYXRlOiAobWVtYmVyOiBNZW1iZXIsIHVzZXI6IFVzZXIpID0+IHVua25vd25cbiAgZ3VpbGRTdGlja2Vyc1VwZGF0ZTogKHN0aWNrZXJzOiBTdGlja2VyW10pID0+IHVua25vd25cbiAgbWVzc2FnZUNyZWF0ZTogKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IHVua25vd25cbiAgbWVzc2FnZURlbGV0ZTogKHBheWxvYWQ6IHsgaWQ6IGJpZ2ludDsgY2hhbm5lbElkOiBiaWdpbnQ7IGd1aWxkSWQ/OiBiaWdpbnQgfSwgbWVzc2FnZT86IE1lc3NhZ2UpID0+IHVua25vd25cbiAgbWVzc2FnZURlbGV0ZUJ1bGs6IChwYXlsb2FkOiB7IGlkczogYmlnaW50W107IGNoYW5uZWxJZDogYmlnaW50OyBndWlsZElkPzogYmlnaW50IH0pID0+IHVua25vd25cbiAgbWVzc2FnZVVwZGF0ZTogKG1lc3NhZ2U6IE1lc3NhZ2UsIG9sZE1lc3NhZ2U/OiBNZXNzYWdlKSA9PiB1bmtub3duXG4gIHJlYWN0aW9uQWRkOiAocGF5bG9hZDoge1xuICAgIHVzZXJJZDogYmlnaW50XG4gICAgY2hhbm5lbElkOiBiaWdpbnRcbiAgICBtZXNzYWdlSWQ6IGJpZ2ludFxuICAgIGd1aWxkSWQ/OiBiaWdpbnRcbiAgICBtZW1iZXI/OiBNZW1iZXJcbiAgICB1c2VyPzogVXNlclxuICAgIGVtb2ppOiBFbW9qaVxuICAgIG1lc3NhZ2VBdXRob3JJZD86IGJpZ2ludFxuICB9KSA9PiB1bmtub3duXG4gIHJlYWN0aW9uUmVtb3ZlOiAocGF5bG9hZDogeyB1c2VySWQ6IGJpZ2ludDsgY2hhbm5lbElkOiBiaWdpbnQ7IG1lc3NhZ2VJZDogYmlnaW50OyBndWlsZElkPzogYmlnaW50OyBlbW9qaTogRW1vamkgfSkgPT4gdW5rbm93blxuICByZWFjdGlvblJlbW92ZUVtb2ppOiAocGF5bG9hZDogeyBjaGFubmVsSWQ6IGJpZ2ludDsgbWVzc2FnZUlkOiBiaWdpbnQ7IGd1aWxkSWQ/OiBiaWdpbnQ7IGVtb2ppOiBFbW9qaSB9KSA9PiB1bmtub3duXG4gIHJlYWN0aW9uUmVtb3ZlQWxsOiAocGF5bG9hZDogeyBjaGFubmVsSWQ6IGJpZ2ludDsgbWVzc2FnZUlkOiBiaWdpbnQ7IGd1aWxkSWQ/OiBiaWdpbnQgfSkgPT4gdW5rbm93blxuICBwcmVzZW5jZVVwZGF0ZTogKHByZXNlbmNlOiBQcmVzZW5jZVVwZGF0ZSwgb2xkUHJlc2VuY2U/OiBQcmVzZW5jZVVwZGF0ZSkgPT4gdW5rbm93blxuICB2b2ljZVNlcnZlclVwZGF0ZTogKHBheWxvYWQ6IHsgdG9rZW46IHN0cmluZzsgZW5kcG9pbnQ/OiBzdHJpbmc7IGd1aWxkSWQ6IGJpZ2ludCB9KSA9PiB1bmtub3duXG4gIHZvaWNlU3RhdGVVcGRhdGU6ICh2b2ljZVN0YXRlOiBWb2ljZVN0YXRlKSA9PiB1bmtub3duXG4gIGNoYW5uZWxDcmVhdGU6IChjaGFubmVsOiBDaGFubmVsKSA9PiB1bmtub3duXG4gIGRpc3BhdGNoUmVxdWlyZW1lbnRzOiAoZGF0YTogRGlzY29yZEdhdGV3YXlQYXlsb2FkLCBzaGFyZElkOiBudW1iZXIpID0+IHVua25vd25cbiAgY2hhbm5lbERlbGV0ZTogKGNoYW5uZWw6IENoYW5uZWwpID0+IHVua25vd25cbiAgY2hhbm5lbFBpbnNVcGRhdGU6IChkYXRhOiB7IGd1aWxkSWQ/OiBiaWdpbnQ7IGNoYW5uZWxJZDogYmlnaW50OyBsYXN0UGluVGltZXN0YW1wPzogbnVtYmVyIH0pID0+IHVua25vd25cbiAgY2hhbm5lbFVwZGF0ZTogKGNoYW5uZWw6IENoYW5uZWwpID0+IHVua25vd25cbiAgc3RhZ2VJbnN0YW5jZUNyZWF0ZTogKGRhdGE6IHsgaWQ6IGJpZ2ludDsgZ3VpbGRJZDogYmlnaW50OyBjaGFubmVsSWQ6IGJpZ2ludDsgdG9waWM6IHN0cmluZyB9KSA9PiB1bmtub3duXG4gIHN0YWdlSW5zdGFuY2VEZWxldGU6IChkYXRhOiB7IGlkOiBiaWdpbnQ7IGd1aWxkSWQ6IGJpZ2ludDsgY2hhbm5lbElkOiBiaWdpbnQ7IHRvcGljOiBzdHJpbmcgfSkgPT4gdW5rbm93blxuICBzdGFnZUluc3RhbmNlVXBkYXRlOiAoZGF0YTogeyBpZDogYmlnaW50OyBndWlsZElkOiBiaWdpbnQ7IGNoYW5uZWxJZDogYmlnaW50OyB0b3BpYzogc3RyaW5nIH0pID0+IHVua25vd25cbiAgZ3VpbGRFbW9qaXNVcGRhdGU6IChwYXlsb2FkOiB7IGd1aWxkSWQ6IGJpZ2ludDsgZW1vamlzOiBDb2xsZWN0aW9uPGJpZ2ludCwgRGlzY29yZEVtb2ppPiB9KSA9PiB1bmtub3duXG4gIGd1aWxkQmFuQWRkOiAodXNlcjogVXNlciwgZ3VpbGRJZDogYmlnaW50KSA9PiB1bmtub3duXG4gIGd1aWxkQmFuUmVtb3ZlOiAodXNlcjogVXNlciwgZ3VpbGRJZDogYmlnaW50KSA9PiB1bmtub3duXG4gIGd1aWxkQ3JlYXRlOiAoZ3VpbGQ6IEd1aWxkKSA9PiB1bmtub3duXG4gIGd1aWxkRGVsZXRlOiAoaWQ6IGJpZ2ludCwgc2hhcmRJZDogbnVtYmVyKSA9PiB1bmtub3duXG4gIGd1aWxkVW5hdmFpbGFibGU6IChpZDogYmlnaW50LCBzaGFyZElkOiBudW1iZXIpID0+IHVua25vd25cbiAgZ3VpbGRVcGRhdGU6IChndWlsZDogR3VpbGQpID0+IHVua25vd25cbiAgcmF3OiAoZGF0YTogRGlzY29yZEdhdGV3YXlQYXlsb2FkLCBzaGFyZElkOiBudW1iZXIpID0+IHVua25vd25cbiAgcm9sZUNyZWF0ZTogKHJvbGU6IFJvbGUpID0+IHVua25vd25cbiAgcm9sZURlbGV0ZTogKHBheWxvYWQ6IHsgZ3VpbGRJZDogYmlnaW50OyByb2xlSWQ6IGJpZ2ludCB9KSA9PiB1bmtub3duXG4gIHJvbGVVcGRhdGU6IChyb2xlOiBSb2xlKSA9PiB1bmtub3duXG4gIHdlYmhvb2tzVXBkYXRlOiAocGF5bG9hZDogeyBjaGFubmVsSWQ6IGJpZ2ludDsgZ3VpbGRJZDogYmlnaW50IH0pID0+IHVua25vd25cbiAgYm90VXBkYXRlOiAodXNlcjogVXNlcikgPT4gdW5rbm93blxuICB0eXBpbmdTdGFydDogKHBheWxvYWQ6IHsgZ3VpbGRJZDogYmlnaW50IHwgdW5kZWZpbmVkOyBjaGFubmVsSWQ6IGJpZ2ludDsgdXNlcklkOiBiaWdpbnQ7IHRpbWVzdGFtcDogbnVtYmVyOyBtZW1iZXI6IE1lbWJlciB8IHVuZGVmaW5lZCB9KSA9PiB1bmtub3duXG4gIGVudGl0bGVtZW50Q3JlYXRlOiAoZW50aXRsZW1lbnQ6IEVudGl0bGVtZW50KSA9PiB1bmtub3duXG4gIGVudGl0bGVtZW50VXBkYXRlOiAoZW50aXRsZW1lbnQ6IEVudGl0bGVtZW50KSA9PiB1bmtub3duXG4gIGVudGl0bGVtZW50RGVsZXRlOiAoZW50aXRsZW1lbnQ6IEVudGl0bGVtZW50KSA9PiB1bmtub3duXG4gIG1lc3NhZ2VQb2xsVm90ZUFkZDogKHBheWxvYWQ6IHsgdXNlcklkOiBiaWdpbnQ7IGNoYW5uZWxJZDogYmlnaW50OyBtZXNzYWdlSWQ6IGJpZ2ludDsgZ3VpbGRJZD86IGJpZ2ludDsgYW5zd2VySWQ6IG51bWJlciB9KSA9PiB1bmtub3duXG4gIG1lc3NhZ2VQb2xsVm90ZVJlbW92ZTogKHBheWxvYWQ6IHsgdXNlcklkOiBiaWdpbnQ7IGNoYW5uZWxJZDogYmlnaW50OyBtZXNzYWdlSWQ6IGJpZ2ludDsgZ3VpbGRJZD86IGJpZ2ludDsgYW5zd2VySWQ6IG51bWJlciB9KSA9PiB1bmtub3duXG59XG4iXSwibmFtZXMiOlsiY3JlYXRlQm90Iiwib3B0aW9ucyIsInJlc3QiLCJ0b2tlbiIsImFwcGxpY2F0aW9uSWQiLCJsb2dnZXIiLCJsb2dnZXJGYWN0b3J5IiwiZ2F0ZXdheSIsImV2ZW50cyIsIm1lc3NhZ2UiLCJzaGFyZCIsImRhdGEiLCJib3QiLCJyYXciLCJpZCIsInQiLCJkaXNwYXRjaFJlcXVpcmVtZW50cyIsImhhbmRsZXJzIiwiaW50ZW50cyIsInByZWZlclNuYWtlQ2FzZSIsImdldEJvdElkRnJvbVRva2VuIiwidHJhbnNmb3JtZXJzIiwiY3JlYXRlVHJhbnNmb3JtZXJzIiwiZGVmYXVsdERlc2lyZWRQcm9wZXJ0aWVzVmFsdWUiLCJjcmVhdGVCb3RHYXRld2F5SGFuZGxlcnMiLCJjcmVhdGVSZXN0TWFuYWdlciIsImNyZWF0ZUdhdGV3YXlNYW5hZ2VyIiwiY3JlYXRlTG9nZ2VyIiwibmFtZSIsImhlbHBlcnMiLCJzdGFydCIsImNvbm5lY3Rpb24iLCJnZXRTZXNzaW9uSW5mbyIsInVybCIsInRvdGFsU2hhcmRzIiwic2hhcmRzIiwibGFzdFNoYXJkSWQiLCJzcGF3blNoYXJkcyIsInNodXRkb3duIiwiU2hhcmRTb2NrZXRDbG9zZUNvZGVzIiwiU2h1dGRvd24iLCJjcmVhdGVCb3RIZWxwZXJzIiwic25vd2ZsYWtlIl0sIm1hcHBpbmdzIjoiOzs7OytCQXFDZ0JBOzs7ZUFBQUE7Ozt5QkFwQzRDO3NCQUUxQjt1QkFFNEM7MEJBQ3JDO3lCQUNTOzhCQUNJO0FBNkIvQyxTQUFTQSxVQUFVQyxPQUF5QjtJQUNqRCxJQUFJLENBQUNBLFFBQVFDLElBQUksRUFBRUQsUUFBUUMsSUFBSSxHQUFHO1FBQUVDLE9BQU9GLFFBQVFFLEtBQUs7UUFBRUMsZUFBZUgsUUFBUUcsYUFBYTtJQUFDO0lBQy9GLElBQUksQ0FBQ0gsUUFBUUMsSUFBSSxDQUFDQyxLQUFLLEVBQUVGLFFBQVFDLElBQUksQ0FBQ0MsS0FBSyxHQUFHRixRQUFRRSxLQUFLO0lBQzNELElBQUksQ0FBQ0YsUUFBUUMsSUFBSSxDQUFDRyxNQUFNLElBQUlKLFFBQVFLLGFB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
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ib3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnMsIEdhdGV3YXlNYW5hZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vZ2F0ZXdheSdcbmltcG9ydCB7IFNoYXJkU29ja2V0Q2xvc2VDb2RlcywgY3JlYXRlR2F0ZXdheU1hbmFnZXIgfSBmcm9tICdAZGlzY29yZGVuby9nYXRld2F5J1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVSZXN0TWFuYWdlck9wdGlvbnMsIFJlc3RNYW5hZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vcmVzdCdcbmltcG9ydCB7IGNyZWF0ZVJlc3RNYW5hZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vcmVzdCdcbmltcG9ydCB0eXBlIHsgQmlnU3RyaW5nLCBHYXRld2F5RGlzcGF0Y2hFdmVudE5hbWVzLCBHYXRld2F5SW50ZW50cywgUmVjdXJzaXZlUGFydGlhbCB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyLCBnZXRCb3RJZEZyb21Ub2tlbiwgdHlwZSBsb2dnZXIgfSBmcm9tICdAZGlzY29yZGVuby91dGlscydcbmltcG9ydCB0eXBlIHtcbiAgQ29tcGxldGVEZXNpcmVkUHJvcGVydGllcyxcbiAgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcixcbiAgU2V0dXBEZXNpcmVkUHJvcHMsXG4gIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLFxuICBUcmFuc2Zvcm1lcnNPYmplY3RzLFxufSBmcm9tICcuL2Rlc2lyZWRQcm9wZXJ0aWVzLmpzJ1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXJzIH0gZnJvbSAnLi9ldmVudHMuanMnXG5pbXBvcnQgeyB0eXBlIEJvdEdhdGV3YXlIYW5kbGVyLCB0eXBlIEdhdGV3YXlIYW5kbGVycywgY3JlYXRlQm90R2F0ZXdheUhhbmRsZXJzIH0gZnJvbSAnLi9oYW5kbGVycy5qcydcbmltcG9ydCB7IHR5cGUgQm90SGVscGVycywgY3JlYXRlQm90SGVscGVycyB9IGZyb20gJy4vaGVscGVycy5qcydcbmltcG9ydCB7IHR5cGUgVHJhbnNmb3JtZXJzLCBjcmVhdGVUcmFuc2Zvcm1lcnMgfSBmcm9tICcuL3RyYW5zZm9ybWVycy5qcydcblxuLyoqXG4gKiBDcmVhdGUgYSBib3Qgb2JqZWN0IHRoYXQgd2lsbCBtYWludGFpbiB0aGUgcmVzdCBhbmQgZ2F0ZXdheSBjb25uZWN0aW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb25zIG9wdGlvbnMgdXNlZCB0byBtYW5hZ2UgdGhpcyBib3QuXG4gKiBAcmV0dXJucyBCb3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJvdDxcbiAgVFByb3BzIGV4dGVuZHMgUmVjdXJzaXZlUGFydGlhbDxUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcz4sXG4gIFRCZWhhdmlvciBleHRlbmRzIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3IgPSBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yLlJlbW92ZUtleSxcbj4ob3B0aW9uczogQ3JlYXRlQm90T3B0aW9uczxUUHJvcHMsIFRCZWhhdmlvcj4pOiBCb3Q8Q29tcGxldGVEZXNpcmVkUHJvcGVydGllczxUUHJvcHM+LCBUQmVoYXZpb3I+IHtcbiAgdHlwZSBDb21wbGV0ZVByb3BzID0gQ29tcGxldGVEZXNpcmVkUHJvcGVydGllczxUUHJvcHM+XG4gIHR5cGUgVHlwZWRCb3QgPSBCb3Q8Q29tcGxldGVQcm9wcywgVEJlaGF2aW9yPlxuXG4gIGlmICghb3B0aW9ucy50cmFuc2Zvcm1lcnMpIG9wdGlvbnMudHJhbnNmb3JtZXJzID0ge31cbiAgaWYgKCFvcHRpb25zLnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcykgb3B0aW9ucy50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMgPSBvcHRpb25zLmRlc2lyZWRQcm9wZXJ0aWVzXG4gIGlmICghb3B0aW9ucy5yZXN0KSBvcHRpb25zLnJlc3QgPSB7IHRva2VuOiBvcHRpb25zLnRva2VuLCBhcHBsaWNhdGlvbklkOiBvcHRpb25zLmFwcGxpY2F0aW9uSWQgfVxuICBpZiAoIW9wdGlvbnMucmVzdC50b2tlbikgb3B0aW9ucy5yZXN0LnRva2VuID0gb3B0aW9ucy50b2tlblxuICBpZiAoIW9wdGlvbnMucmVzdC5sb2dnZXIgJiYgb3B0aW9ucy5sb2dnZXJGYWN0b3J5KSBvcHRpb25zLnJlc3QubG9nZ2VyID0gb3B0aW9ucy5sb2dnZXJGYWN0b3J5KCdSRVNUJylcbiAgaWYgKCFvcHRpb25zLmdhdGV3YXkpIG9wdGlvbnMuZ2F0ZXdheSA9IHsgdG9rZW46IG9wdGlvbnMudG9rZW4gfVxuICBpZiAoIW9wdGlvbnMuZ2F0ZXdheS50b2tlbikgb3B0aW9ucy5nYXRld2F5LnRva2VuID0gb3B0aW9ucy50b2tlblxuICBpZiAoIW9wdGlvbnMuZ2F0ZXdheS5ldmVudHMpIG9wdGlvbnMuZ2F0ZXdheS5ldmVudHMgPSB7fVxuICBpZiAoIW9wdGlvbnMuZ2F0ZXdheS5sb2dnZXIgJiYgb3B0aW9ucy5sb2dnZXJGYWN0b3J5KSBvcHRpb25zLmdhdGV3YXkubG9nZ2VyID0gb3B0aW9ucy5sb2dnZXJGYWN0b3J5KCdHQVRFV0FZJylcbiAgaWYgKCFvcHRpb25zLmdhdGV3YXkuZXZlbnRzLm1lc3NhZ2UpIHtcbiAgICBvcHRpb25zLmdhdGV3YXkuZXZlbnRzLm1lc3NhZ2UgPSBhc3luYyAoc2hhcmQsIGRhdGEpID0+IHtcbiAgICAgIC8vIFRSSUdHRVIgUkFXIEVWRU5UXG4gICAgICBib3QuZXZlbnRzLnJhdz8uKGRhdGEsIHNoYXJkLmlkKVxuXG4gICAgICBpZiAoIWRhdGEudCkgcmV0dXJuXG5cbiAgICAgIC8vIFJVTiBESVNQQVRDSCBDSEVDS1xuICAgICAgYXdhaXQgYm90LmV2ZW50cy5kaXNwYXRjaFJlcXVpcmVtZW50cz8uKGRhdGEsIHNoYXJkLmlkKVxuICAgICAgYm90LmhhbmRsZXJzW2RhdGEudCBhcyBHYXRld2F5RGlzcGF0Y2hFdmVudE5hbWVzXT8uKGJvdCwgZGF0YSwgc2hhcmQuaWQpXG4gICAgfVxuICB9XG5cbiAgb3B0aW9ucy5nYXRld2F5LmludGVudHMgPSBvcHRpb25zLmludGVudHNcbiAgb3B0aW9ucy5nYXRld2F5LnByZWZlclNuYWtlQ2FzZSA9IHRydWVcblxuICBjb25zdCBpZCA9IGdldEJvdElkRnJvbVRva2VuKG9wdGlvbnMudG9rZW4pXG5cbiAgY29uc3QgYm90OiBUeXBlZEJvdCA9IHtcbiAgICBpZCxcbiAgICBhcHBsaWNhdGlvbklkOiBpZCxcbiAgICB0cmFuc2Zvcm1lcnM6IGNyZWF0ZVRyYW5zZm9ybWVycyhvcHRpb25zLnRyYW5zZm9ybWVycykgYXMgVHlwZWRCb3RbJ3RyYW5zZm9ybWVycyddLFxuICAgIGhhbmRsZXJzOiBjcmVhdGVCb3RHYXRld2F5SGFuZGxlcnM8Q29tcGxldGVQcm9wcywgVEJlaGF2aW9yPihvcHRpb25zLmhhbmRsZXJzID8/IHt9KSxcbiAgICByZXN0OiBjcmVhdGVSZXN0TWFuYWdlcihvcHRpb25zLnJlc3QgYXMgQ3JlYXRlUmVzdE1hbmFnZXJPcHRpb25zKSxcbiAgICBnYXRld2F5OiBjcmVhdGVHYXRld2F5TWFuYWdlcihvcHRpb25zLmdhdGV3YXkgYXMgQ3JlYXRlR2F0ZXdheU1hbmFnZXJPcHRpb25zKSxcbiAgICBldmVudHM6IG9wdGlvbnMuZXZlbnRzID8/IHt9LFxuICAgIGxvZ2dlcjogb3B0aW9ucy5sb2dnZXJGYWN0b3J5ID8gb3B0aW9ucy5sb2dnZXJGYWN0b3J5KCdCT1QnKSA6IGNyZWF0ZUxvZ2dlcih7IG5hbWU6ICdCT1QnIH0pLFxuICAgIC8vIFNldCB1cCBoZWxwZXJzIGJlbG93LlxuICAgIGhlbHBlcnM6IHt9IGFzIEJvdEhlbHBlcnM8Q29tcGxldGVQcm9wcywgVEJlaGF2aW9yPixcbiAgICBhc3luYyBzdGFydCgpIHtcbiAgICAgIGlmICghb3B0aW9ucy5nYXRld2F5Py5jb25uZWN0aW9uKSB7XG4gICAgICAgIGJvdC5nYXRld2F5LmNvbm5lY3Rpb24gPSBhd2FpdCBib3QucmVzdC5nZXRTZXNzaW9uSW5mbygpXG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIG92ZXJyaWRlcyBpbiB0aGUgY29uZmlndXJhdGlvblxuICAgICAgICBpZiAoIW9wdGlvbnMuZ2F0ZXdheT8udXJsKSBib3QuZ2F0ZXdheS51cmwgPSBib3QuZ2F0ZXdheS5jb25uZWN0aW9uLnVybFxuXG4gICAgICAgIGlmICghb3B0aW9ucy5nYXRld2F5Py50b3RhbFNoYXJkcykgYm90LmdhdGV3YXkudG90YWxTaGFyZHMgPSBib3QuZ2F0ZXdheS5jb25uZWN0aW9uLnNoYXJkc1xuXG4gICAgICAgIGlmICghb3B0aW9ucy5nYXRld2F5Py5sYXN0U2hhcmRJZCAmJiAhb3B0aW9ucy5nYXRld2F5Py50b3RhbFNoYXJkcykgYm90LmdhdGV3YXkubGFzdFNoYXJkSWQgPSBib3QuZ2F0ZXdheS5jb25uZWN0aW9uLnNoYXJkcyAtIDFcbiAgICAgIH1cblxuICAgICAgaWYgKCFib3QuZ2F0ZXdheS5yZXNoYXJkaW5nLmdldFNlc3Npb25JbmZvKSB7XG4gICAgICAgIGJvdC5nYXRld2F5LnJlc2hhcmRpbmcuZ2V0U2Vzc2lvbkluZm8gPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGJvdC5yZXN0LmdldEdhdGV3YXlCb3QoKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGJvdC5nYXRld2F5LnNwYXduU2hhcmRzKClcbiAgICB9LFxuXG4gICAgYXN5bmMgc2h1dGRvd24oKSB7XG4gICAgICByZXR1cm4gYXdhaXQgYm90LmdhdGV3YXkuc2h1dGRvd24oU2hhcmRTb2NrZXRDbG9zZUNvZGVzLlNodXRkb3duLCAnVXNlciByZXF1ZXN0ZWQgYm90IHN0b3AnKVxuICAgIH0sXG4gIH1cblxuICBib3QuaGVscGVycyA9IGNyZWF0ZUJvdEhlbHBlcnMoYm90KVxuICBpZiAob3B0aW9ucy5hcHBsaWNhdGlvbklkKSBib3QuYXBwbGljYXRpb25JZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKG9wdGlvbnMuYXBwbGljYXRpb25JZClcblxuICByZXR1cm4gYm90XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQm90T3B0aW9uczxUUHJvcHMgZXh0ZW5kcyBSZWN1cnNpdmVQYXJ0aWFsPFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzPiwgVEJlaGF2aW9yIGV4dGVuZHMgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj4ge1xuICAvKiogVGhlIGJvdCdzIHRva2VuLiAqL1xuICB0b2tlbjogc3RyaW5nXG4gIC8qKiBBcHBsaWNhdGlvbiBJZCBvZiB0aGUgYm90IGluY2FzZSBpdCBpcyBhbiBvbGQgYm90IHRva2VuLiAqL1xuICBhcHBsaWNhdGlvbklkPzogQmlnU3RyaW5nXG4gIC8qKiBUaGUgYm90J3MgaW50ZW50cyB0aGF0IHdpbGwgYmUgdXNlZCB0byBtYWtlIGEgY29ubmVjdGlvbiB3aXRoIGRpc2NvcmRzIGdhdGV3YXkuICovXG4gIGludGVudHM/OiBHYXRld2F5SW50ZW50c1xuICAvKiogQW55IG9wdGlvbnMgeW91IHdpc2ggdG8gcHJvdmlkZSB0byB0aGUgcmVzdCBtYW5hZ2VyLiAqL1xuICByZXN0PzogT21pdDxDcmVhdGVSZXN0TWFuYWdlck9wdGlvbnMsICd0b2tlbic+ICYgUGFydGlhbDxQaWNrPENyZWF0ZVJlc3RNYW5hZ2VyT3B0aW9ucywgJ3Rva2VuJz4+XG4gIC8qKiBBbnkgb3B0aW9ucyB5b3Ugd2lzaCB0byBwcm92aWRlIHRvIHRoZSBnYXRld2F5IG1hbmFnZXIuICovXG4gIGdhdGV3YXk/OiBPbWl0PENyZWF0ZUdhdGV3YXlNYW5hZ2VyT3B0aW9ucywgJ3Rva2VuJz4gJiBQYXJ0aWFsPFBpY2s8Q3JlYXRlR2F0ZXdheU1hbmFnZXJPcHRpb25zLCAndG9rZW4nPj5cbiAgLyoqIFRoZSBldmVudCBoYW5kbGVycy4gKi9cbiAgZXZlbnRzPzogUGFydGlhbDxFdmVudEhhbmRsZXJzPENvbXBsZXRlRGVzaXJlZFByb3BlcnRpZXM8Tm9JbmZlcjxUUHJvcHM+PiwgVEJlaGF2aW9yPj5cbiAgLyoqIFRoZSBmdW5jdGlvbnMgdGhhdCBzaG91bGQgdHJhbnNmb3JtIGRpc2NvcmQgb2JqZWN0cyB0byBkaXNjb3JkZW5vIHNoYXBlZCBvYmplY3RzLiAqL1xuICB0cmFuc2Zvcm1lcnM/OiBSZWN1cnNpdmVQYXJ0aWFsPFRyYW5zZm9ybWVyczxDb21wbGV0ZURlc2lyZWRQcm9wZXJ0aWVzPE5vSW5mZXI8VFByb3BzPj4sIFRCZWhhdmlvcj4+XG4gIC8qKiBUaGUgaGFuZGxlciBmdW5jdGlvbnMgdGhhdCBzaG91bGQgaGFuZGxlIGluY29taW5nIGRpc2NvcmQgcGF5bG9hZHMgZnJvbSBnYXRld2F5IGFuZCBjYWxsIGFuIGV2ZW50LiAqL1xuICBoYW5kbGVycz86IFBhcnRpYWw8UmVjb3JkPEdhdGV3YXlEaXNwYXRjaEV2ZW50TmFtZXMsIEJvdEdhdGV3YXlIYW5kbGVyPENvbXBsZXRlRGVzaXJlZFByb3BlcnRpZXM8Tm9JbmZlcjxUUHJvcHM+PiwgVEJlaGF2aW9yPj4+XG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlc2lyZWQgcHJvcGVydGllcyBmb3IgdGhlIGJvdFxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgZGVzaXJlZFByb3BlcnRpZXM/OiBUUHJvcHNcbiAgLyoqXG4gICAqIFNldCB0aGUgZGVzaXJlZCBwcm9wZXJ0aWVzIGJlaGF2aW9yIGZvciB1bmRlc2lyZWQgcHJvcGVydGllc1xuICAgKlxuICAgKiBAZGVmYXVsdCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yLlJlbW92ZUtleVxuICAgKi9cbiAgZGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj86IFRCZWhhdmlvclxuICAvKipcbiAgICogVGhpcyBmYWN0b3J5IHdpbGwgYmUgaW52b2tlZCB0byBjcmVhdGUgdGhlIGxvZ2dlciBmb3IgZ2F0ZXdheSwgcmVzdCBhbmQgYm90XG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIG5vdCBwcm92aWRlZCB0aGUgZGVmYXVsdCBsb2dnZXIgd2lsbCBiZSB1c2VkIHdpdGggcmVzdCBhbmQgZ2F0ZXdheSBzaGFyaW5nIHRoZSBzYW1lIGxvZ2dlclxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgaW52b2tlZCAzIHRpbWVzLCBvbmUgd2l0aCB0aGUgbmFtZSBvZiBgUkVTVGAsIG9uZSB3aXRoIGBHQVRFV0FZYCBhbmQgdGhlIHRoaXJkIG9uZSB3aXRoIG5hbWUgYEJPVGBcbiAgICovXG4gIGxvZ2dlckZhY3Rvcnk/OiAobmFtZTogJ1JFU1QnIHwgJ0dBVEVXQVknIHwgJ0JPVCcpID0+IFBpY2s8dHlwZW9mIGxvZ2dlciwgJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicgfCAnZmF0YWwnPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvdDxcbiAgVFByb3BzIGV4dGVuZHMgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMgPSBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcyxcbiAgVEJlaGF2aW9yIGV4dGVuZHMgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvciA9IERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3IuUmVtb3ZlS2V5LFxuPiB7XG4gIC8qKiBUaGUgaWQgb2YgdGhlIGJvdC4gKi9cbiAgaWQ6IGJpZ2ludFxuICAvKiogVGhlIGFwcGxpY2F0aW9uIGlkIG9mIHRoZSBib3QuIFRoaXMgaXMgdXN1YWxseSB0aGUgc2FtZSBhcyBpZCBidXQgaW4gdGhlIGNhc2Ugb2Ygb2xkIGJvdHMgY2FuIGJlIGRpZmZlcmVudC4gKi9cbiAgYXBwbGljYXRpb25JZDogYmlnaW50XG4gIC8qKiBUaGUgcmVzdCBtYW5hZ2VyLiAqL1xuICByZXN0OiBSZXN0TWFuYWdlclxuICAvKiogVGhlIGdhdGV3YXkgbWFuYWdlci4gKi9cbiAgZ2F0ZXdheTogR2F0ZXdheU1hbmFnZXJcbiAgLyoqIFRoZSBldmVudCBoYW5kbGVycy4gKi9cbiAgZXZlbnRzOiBQYXJ0aWFsPEV2ZW50SGFuZGxlcnM8VFByb3BzLCBUQmVoYXZpb3I+PlxuICAvKiogQSBsb2dnZXIgdXRpbGl0eSB0byBtYWtlIGl0IGVhc3kgdG8gbG9nIG5pY2UgYW5kIHVzZWZ1bCB0aGluZ3MgaW4gdGhlIGJvdCBjb2RlLiAqL1xuICBsb2dnZXI6IFBpY2s8dHlwZW9mIGxvZ2dlciwgJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicgfCAnZmF0YWwnPlxuICAvKiogVGhlIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCB0cmFuc2Zvcm0gZGlzY29yZCBvYmplY3RzIHRvIGRpc2NvcmRlbm8gc2hhcGVkIG9iamVjdHMuICovXG4gIHRyYW5zZm9ybWVyczogVHJhbnNmb3JtZXJzPFRQcm9wcywgVEJlaGF2aW9yPiAmIHtcbiAgICAkaW5mZXJyZWRUeXBlczoge1xuICAgICAgW0sgaW4ga2V5b2YgVHJhbnNmb3JtZXJzT2JqZWN0c106IFNldHVwRGVzaXJlZFByb3BzPFRyYW5zZm9ybWVyc09iamVjdHNbS10sIFRQcm9wcywgVEJlaGF2aW9yPlxuICAgIH1cbiAgfVxuICAvKiogVGhlIGhhbmRsZXIgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGhhbmRsZSBpbmNvbWluZyBkaXNjb3JkIHBheWxvYWRzIGZyb20gZ2F0ZXdheSBhbmQgY2FsbCBhbiBldmVudC4gKi9cbiAgaGFuZGxlcnM6IEdhdGV3YXlIYW5kbGVyczxUUHJvcHMsIFRCZWhhdmlvcj5cbiAgaGVscGVyczogQm90SGVscGVyczxUUHJvcHMsIFRCZWhhdmlvcj5cbiAgLyoqIFN0YXJ0IHRoZSBib3QgY29ubmVjdGlvbiB0byB0aGUgZ2F0ZXdheS4gKi9cbiAgc3RhcnQ6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFNodXRzIGRvd24gYWxsIHRoZSBib3QgY29ubmVjdGlvbnMgdG8gdGhlIGdhdGV3YXkuICovXG4gIHNodXRkb3duOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbi8qKiBAaW50ZXJuYWwgVGhpcyBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgd2l0aG91dCBub3RpY2UgKi9cbmV4cG9ydCB0eXBlIEludGVybmFsQm90ID0gQm90PENvbXBsZXRlRGVzaXJlZFByb3BlcnRpZXM8e30sIHRydWU+LCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yLlJlbW92ZUtleT5cbiJdLCJuYW1lcyI6WyJjcmVhdGVCb3QiLCJvcHRpb25zIiwidHJhbnNmb3JtZXJzIiwiZGVzaXJlZFByb3BlcnRpZXMiLCJyZXN0IiwidG9rZW4iLCJhcHBsaWNhdGlvbklkIiwibG9nZ2VyIiwibG9nZ2VyRmFjdG9yeSIsImdhdGV3YXkiLCJldmVudHMiLCJtZXNzYWdlIiwic2hhcmQiLCJkYXRhIiwiYm90IiwicmF3IiwiaWQiLCJ0IiwiZGlzcGF0Y2hSZXF1aXJlbWVudHMiLCJoYW5kbGVycyIsImludGVudHMiLCJwcmVmZXJTbmFrZUNhc2UiLCJnZXRCb3RJZEZyb21Ub2tlbiIsImNyZWF0ZVRyYW5zZm9ybWVycyIsImNyZWF0ZUJvdEdhdGV3YXlIYW5kbGVycyIsImNyZWF0ZVJlc3RNYW5hZ2VyIiwiY3JlYXRlR2F0ZXdheU1hbmFnZXIiLCJjcmVhdGVMb2dnZXIiLCJuYW1lIiwiaGVscGVycyIsInN0YXJ0IiwiY29ubmVjdGlvbiIsImdldFNlc3Npb25JbmZvIiwidXJsIiwidG90YWxTaGFyZHMiLCJzaGFyZHMiLCJsYXN0U2hhcmRJZCIsInJlc2hhcmRpbmciLCJnZXRHYXRld2F5Qm90Iiwic3Bhd25TaGFyZHMiLCJzaHV0ZG93biIsIlNoYXJkU29ja2V0Q2xvc2VDb2RlcyIsIlNodXRkb3duIiwiY3JlYXRlQm90SGVscGVycyIsInNub3dmbGFrZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkF3QmdCQTs7O2VBQUFBOzs7eUJBdkI0QztzQkFFMUI7dUJBRTJCOzBCQVMwQjt5QkFDckM7OEJBQ0k7QUFRL0MsU0FBU0EsVUFHZEMsT0FBNEM7SUFJNUMsSUFBSSxDQUFDQSxRQUFRQyxZQUFZLEVBQUVELFFBQVFDLFlBQVksR0FBRyxDQUFDO0lBQ25ELElBQUksQ0FBQ0QsUUFBUUMsWUFBWSxDQUFDQyxpQkFB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
@@ -48,4 +48,4 @@ function commandOptionsParser(interaction, options) {
48
48
  return args;
49
49
  }
50
50
 
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kT3B0aW9uc1BhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBJbnRlcmFjdGlvbiwgSW50ZXJhY3Rpb25EYXRhT3B0aW9uIH0gZnJvbSAnLi9pbmRleC5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbW1hbmRPcHRpb25zUGFyc2VyKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbiwgb3B0aW9ucz86IEludGVyYWN0aW9uRGF0YU9wdGlvbltdKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIGlmICghaW50ZXJhY3Rpb24uZGF0YSkgcmV0dXJuIHt9XG4gIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IGludGVyYWN0aW9uLmRhdGEub3B0aW9ucyA/PyBbXVxuXG4gIGNvbnN0IGFyZ3M6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fVxuXG4gIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICBzd2l0Y2ggKG9wdGlvbi50eXBlKSB7XG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLlN1YkNvbW1hbmRHcm91cDpcbiAgICAgIGNhc2UgQXBwbGljYXRpb25Db21tYW5kT3B0aW9uVHlwZXMuU3ViQ29tbWFuZDpcbiAgICAgICAgYXJnc1tvcHRpb24ubmFtZV0gPSBjb21tYW5kT3B0aW9uc1BhcnNlcihpbnRlcmFjdGlvbiwgb3B0aW9uLm9wdGlvbnMpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLkNoYW5uZWw6XG4gICAgICAgIGFyZ3Nbb3B0aW9uLm5hbWVdID0gaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZD8uY2hhbm5lbHM/LmdldChCaWdJbnQob3B0aW9uLnZhbHVlISkpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLlJvbGU6XG4gICAgICAgIGFyZ3Nbb3B0aW9uLm5hbWVdID0gaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZD8ucm9sZXM/LmdldChCaWdJbnQob3B0aW9uLnZhbHVlISkpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLlVzZXI6XG4gICAgICAgIGFyZ3Nbb3B0aW9uLm5hbWVdID0ge1xuICAgICAgICAgIHVzZXI6IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/LnVzZXJzPy5nZXQoQmlnSW50KG9wdGlvbi52YWx1ZSEpKSxcbiAgICAgICAgICBtZW1iZXI6IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/Lm1lbWJlcnM/LmdldChCaWdJbnQob3B0aW9uLnZhbHVlISkpLFxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLkF0dGFjaG1lbnQ6XG4gICAgICAgIGFyZ3Nbb3B0aW9uLm5hbWVdID0gaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZD8uYXR0YWNobWVudHM/LmdldChCaWdJbnQob3B0aW9uLnZhbHVlISkpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLk1lbnRpb25hYmxlOlxuICAgICAgICAvLyBNZW50aW9uYWJsZSBhcmUgcm9sZXMgb3IgdXNlcnNcbiAgICAgICAgYXJnc1tvcHRpb24ubmFtZV0gPSBpbnRlcmFjdGlvbi5kYXRhLnJlc29sdmVkPy5yb2xlcz8uZ2V0KEJpZ0ludChvcHRpb24udmFsdWUhKSkgPz8ge1xuICAgICAgICAgIHVzZXI6IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/LnVzZXJzPy5nZXQoQmlnSW50KG9wdGlvbi52YWx1ZSEpKSxcbiAgICAgICAgICBtZW1iZXI6IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/Lm1lbWJlcnM/LmdldChCaWdJbnQob3B0aW9uLnZhbHVlISkpLFxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhcmdzW29wdGlvbi5uYW1lXSA9IG9wdGlvbi52YWx1ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmdzXG59XG4iXSwibmFtZXMiOlsiY29tbWFuZE9wdGlvbnNQYXJzZXIiLCJpbnRlcmFjdGlvbiIsIm9wdGlvbnMiLCJkYXRhIiwiYXJncyIsIm9wdGlvbiIsInR5cGUiLCJBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcyIsIlN1YkNvbW1hbmRHcm91cCIsIlN1YkNvbW1hbmQiLCJuYW1lIiwiQ2hhbm5lbCIsInJlc29sdmVkIiwiY2hhbm5lbHMiLCJnZXQiLCJCaWdJbnQiLCJ2YWx1ZSIsIlJvbGUiLCJyb2xlcyIsIlVzZXIiLCJ1c2VyIiwidXNlcnMiLCJtZW1iZXIiLCJtZW1iZXJzIiwiQXR0YWNobWVudCIsImF0dGFjaG1lbnRzIiwiTWVudGlvbmFibGUiXSwibWFwcGluZ3MiOiI7Ozs7K0JBR2dCQTs7O2VBQUFBOzs7dUJBSDhCO0FBR3ZDLFNBQVNBLHFCQUFxQkMsV0FBd0IsRUFBRUMsT0FBaUM7SUFDOUYsSUFBSSxDQUFDRCxZQUFZRSxJQUFJLEVBQUUsT0FBTyxDQUFDO0lBQy9CLElBQUksQ0FBQ0QsU0FBU0EsVUFBVUQsWUFBWUUsSUFBSSxDQUFDRCxPQUFPLElBQUksRUFBRTtJQUV0RCxNQUFNRSxPQUE0QixDQUFDO0lBRW5DLEtBQUssTUFBTUMsVUFBVUgsUUFBUztRQUM1QixPQUFRRyxPQUFPQyxJQUFJO1lBQ2pCLEtBQUtDLG9DQUE2QixDQUFDQyxlQUFlO1lBQ2xELEtBQUtELG9DQUE2QixDQUFDRSxVQUFVO2dCQUMzQ0wsSUFBSSxDQUFDQyxPQUFPSyxJQUFJLENBQUMsR0FBR1YscUJBQXFCQyxhQUFhSSxPQUFPSCxPQUFPO2dCQUNwRTtZQUNGLEtBQUtLLG9DQUE2QixDQUFDSSxPQUFPO2dCQUN4Q1AsSUFBSSxDQUFDQyxPQUFPSyxJQUFJLENBQUMsR0FBR1QsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVDLFVBQVVDLElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7Z0JBQ2hGO1lBQ0YsS0FBS1Qsb0NBQTZCLENBQUNVLElBQUk7Z0JBQ3JDYixJQUFJLENBQUNDLE9BQU9LLElBQUksQ0FBQyxHQUFHVCxZQUFZRSxJQUFJLENBQUNTLFFBQVEsRUFBRU0sT0FBT0osSUFBSUMsT0FBT1YsT0FBT1csS0FBSztnQkFDN0U7WUFDRixLQUFLVCxvQ0FBNkIsQ0FBQ1ksSUFBSTtnQkFDckNmLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUc7b0JBQ2xCVSxNQUFNbkIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVTLE9BQU9QLElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7b0JBQy9ETSxRQUFRckIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVXLFNBQVNULElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7Z0JBQ3JFO2dCQUNBO1lBQ0YsS0FBS1Qsb0NBQTZCLENBQUNpQixVQUFVO2dCQUMzQ3BCLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUdULFlBQVlFLElBQUksQ0FBQ1MsUUFBUSxFQUFFYSxhQUFhWCxJQUFJQyxPQUFPVixPQUFPVyxLQUFLO2dCQUNuRjtZQUNGLEtBQUtULG9DQUE2QixDQUFDbUIsV0FBVztnQkFDNUMsaUNBQWlDO2dCQUNqQ3RCLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUdULFlBQVlFLElBQUksQ0FBQ1MsUUFBUSxFQUFFTSxPQUFPSixJQUFJQyxPQUFPVixPQUFPVyxLQUFLLE1BQU87b0JBQ2xGSSxNQUFNbkIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVTLE9BQU9QLElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7b0JBQy9ETSxRQUFRckIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVXLFNBQVNULElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7Z0JBQ3JFO2dCQUNBO1lBQ0Y7Z0JBQ0VaLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUdMLE9BQU9XLEtBQUs7UUFDcEM7SUFDRjtJQUVBLE9BQU9aO0FBQ1QifQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kT3B0aW9uc1BhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBBdHRhY2htZW50LCBDaGFubmVsLCBJbnRlcmFjdGlvbiwgSW50ZXJhY3Rpb25EYXRhT3B0aW9uLCBNZW1iZXIsIFJvbGUsIFVzZXIgfSBmcm9tICcuL2luZGV4LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY29tbWFuZE9wdGlvbnNQYXJzZXIoaW50ZXJhY3Rpb246IEludGVyYWN0aW9uLCBvcHRpb25zPzogSW50ZXJhY3Rpb25EYXRhT3B0aW9uW10pOiBQYXJzZWRJbnRlcmFjdGlvbk9wdGlvbiB7XG4gIGlmICghaW50ZXJhY3Rpb24uZGF0YSkgcmV0dXJuIHt9XG4gIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IGludGVyYWN0aW9uLmRhdGEub3B0aW9ucyA/PyBbXVxuXG4gIGNvbnN0IGFyZ3M6IFBhcnNlZEludGVyYWN0aW9uT3B0aW9uID0ge31cblxuICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgc3dpdGNoIChvcHRpb24udHlwZSkge1xuICAgICAgY2FzZSBBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcy5TdWJDb21tYW5kR3JvdXA6XG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLlN1YkNvbW1hbmQ6XG4gICAgICAgIGFyZ3Nbb3B0aW9uLm5hbWVdID0gY29tbWFuZE9wdGlvbnNQYXJzZXIoaW50ZXJhY3Rpb24sIG9wdGlvbi5vcHRpb25zKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcy5DaGFubmVsOlxuICAgICAgICBhcmdzW29wdGlvbi5uYW1lXSA9IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/LmNoYW5uZWxzPy5nZXQoQmlnSW50KG9wdGlvbi52YWx1ZSEpKSBhcyBJbnRlcmFjdGlvblJlc29sdmVkQ2hhbm5lbFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcy5Sb2xlOlxuICAgICAgICBhcmdzW29wdGlvbi5uYW1lXSA9IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/LnJvbGVzPy5nZXQoQmlnSW50KG9wdGlvbi52YWx1ZSEpKSBhcyBSb2xlXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLlVzZXI6XG4gICAgICAgIGFyZ3Nbb3B0aW9uLm5hbWVdID0ge1xuICAgICAgICAgIHVzZXI6IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/LnVzZXJzPy5nZXQoQmlnSW50KG9wdGlvbi52YWx1ZSEpKSBhcyBVc2VyLFxuICAgICAgICAgIG1lbWJlcjogaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZD8ubWVtYmVycz8uZ2V0KEJpZ0ludChvcHRpb24udmFsdWUhKSkgYXMgSW50ZXJhY3Rpb25SZXNvbHZlZE1lbWJlcixcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcy5BdHRhY2htZW50OlxuICAgICAgICBhcmdzW29wdGlvbi5uYW1lXSA9IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/LmF0dGFjaG1lbnRzPy5nZXQoQmlnSW50KG9wdGlvbi52YWx1ZSEpKSBhcyBBdHRhY2htZW50XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvblR5cGVzLk1lbnRpb25hYmxlOlxuICAgICAgICAvLyBNZW50aW9uYWJsZSBhcmUgcm9sZXMgb3IgdXNlcnNcbiAgICAgICAgYXJnc1tvcHRpb24ubmFtZV0gPSAoaW50ZXJhY3Rpb24uZGF0YS5yZXNvbHZlZD8ucm9sZXM/LmdldChCaWdJbnQob3B0aW9uLnZhbHVlISkpIGFzIFJvbGUpID8/IHtcbiAgICAgICAgICB1c2VyOiBpbnRlcmFjdGlvbi5kYXRhLnJlc29sdmVkPy51c2Vycz8uZ2V0KEJpZ0ludChvcHRpb24udmFsdWUhKSkgYXMgVXNlcixcbiAgICAgICAgICBtZW1iZXI6IGludGVyYWN0aW9uLmRhdGEucmVzb2x2ZWQ/Lm1lbWJlcnM/LmdldChCaWdJbnQob3B0aW9uLnZhbHVlISkpIGFzIEludGVyYWN0aW9uUmVzb2x2ZWRNZW1iZXIsXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFyZ3Nbb3B0aW9uLm5hbWVdID0gb3B0aW9uLnZhbHVlIGFzIFBhcnNlZEludGVyYWN0aW9uT3B0aW9uW3N0cmluZ11cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJnc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZEludGVyYWN0aW9uT3B0aW9uIHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IEludGVyYWN0aW9uUmVzb2x2ZWRVc2VyIHwgSW50ZXJhY3Rpb25SZXNvbHZlZENoYW5uZWwgfCBSb2xlIHwgQXR0YWNobWVudCB8IFBhcnNlZEludGVyYWN0aW9uT3B0aW9uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJhY3Rpb25SZXNvbHZlZFVzZXIge1xuICB1c2VyOiBVc2VyXG4gIG1lbWJlcjogSW50ZXJhY3Rpb25SZXNvbHZlZE1lbWJlclxufVxuXG5leHBvcnQgdHlwZSBJbnRlcmFjdGlvblJlc29sdmVkQ2hhbm5lbCA9IFBpY2s8Q2hhbm5lbCwgJ2lkJyB8ICduYW1lJyB8ICd0eXBlJyB8ICdwZXJtaXNzaW9ucycgfCAndGhyZWFkTWV0YWRhdGEnIHwgJ3BhcmVudElkJz5cblxuZXhwb3J0IHR5cGUgSW50ZXJhY3Rpb25SZXNvbHZlZE1lbWJlciA9IE9taXQ8TWVtYmVyLCAndXNlcicgfCAnZGVhZicgfCAnbXV0ZSc+XG4iXSwibmFtZXMiOlsiY29tbWFuZE9wdGlvbnNQYXJzZXIiLCJpbnRlcmFjdGlvbiIsIm9wdGlvbnMiLCJkYXRhIiwiYXJncyIsIm9wdGlvbiIsInR5cGUiLCJBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25UeXBlcyIsIlN1YkNvbW1hbmRHcm91cCIsIlN1YkNvbW1hbmQiLCJuYW1lIiwiQ2hhbm5lbCIsInJlc29sdmVkIiwiY2hhbm5lbHMiLCJnZXQiLCJCaWdJbnQiLCJ2YWx1ZSIsIlJvbGUiLCJyb2xlcyIsIlVzZXIiLCJ1c2VyIiwidXNlcnMiLCJtZW1iZXIiLCJtZW1iZXJzIiwiQXR0YWNobWVudCIsImF0dGFjaG1lbnRzIiwiTWVudGlvbmFibGUiXSwibWFwcGluZ3MiOiI7Ozs7K0JBR2dCQTs7O2VBQUFBOzs7dUJBSDhCO0FBR3ZDLFNBQVNBLHFCQUFxQkMsV0FBd0IsRUFBRUMsT0FBaUM7SUFDOUYsSUFBSSxDQUFDRCxZQUFZRSxJQUFJLEVBQUUsT0FBTyxDQUFDO0lBQy9CLElBQUksQ0FBQ0QsU0FBU0EsVUFBVUQsWUFBWUUsSUFBSSxDQUFDRCxPQUFPLElBQUksRUFBRTtJQUV0RCxNQUFNRSxPQUFnQyxDQUFDO0lBRXZDLEtBQUssTUFBTUMsVUFBVUgsUUFBUztRQUM1QixPQUFRRyxPQUFPQyxJQUFJO1lBQ2pCLEtBQUtDLG9DQUE2QixDQUFDQyxlQUFlO1lBQ2xELEtBQUtELG9DQUE2QixDQUFDRSxVQUFVO2dCQUMzQ0wsSUFBSSxDQUFDQyxPQUFPSyxJQUFJLENBQUMsR0FBR1YscUJBQXFCQyxhQUFhSSxPQUFPSCxPQUFPO2dCQUNwRTtZQUNGLEtBQUtLLG9DQUE2QixDQUFDSSxPQUFPO2dCQUN4Q1AsSUFBSSxDQUFDQyxPQUFPSyxJQUFJLENBQUMsR0FBR1QsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVDLFVBQVVDLElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7Z0JBQ2hGO1lBQ0YsS0FBS1Qsb0NBQTZCLENBQUNVLElBQUk7Z0JBQ3JDYixJQUFJLENBQUNDLE9BQU9LLElBQUksQ0FBQyxHQUFHVCxZQUFZRSxJQUFJLENBQUNTLFFBQVEsRUFBRU0sT0FBT0osSUFBSUMsT0FBT1YsT0FBT1csS0FBSztnQkFDN0U7WUFDRixLQUFLVCxvQ0FBNkIsQ0FBQ1ksSUFBSTtnQkFDckNmLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUc7b0JBQ2xCVSxNQUFNbkIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVTLE9BQU9QLElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7b0JBQy9ETSxRQUFRckIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVXLFNBQVNULElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7Z0JBQ3JFO2dCQUNBO1lBQ0YsS0FBS1Qsb0NBQTZCLENBQUNpQixVQUFVO2dCQUMzQ3BCLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUdULFlBQVlFLElBQUksQ0FBQ1MsUUFBUSxFQUFFYSxhQUFhWCxJQUFJQyxPQUFPVixPQUFPVyxLQUFLO2dCQUNuRjtZQUNGLEtBQUtULG9DQUE2QixDQUFDbUIsV0FBVztnQkFDNUMsaUNBQWlDO2dCQUNqQ3RCLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUcsQUFBQ1QsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVNLE9BQU9KLElBQUlDLE9BQU9WLE9BQU9XLEtBQUssTUFBZ0I7b0JBQzVGSSxNQUFNbkIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVTLE9BQU9QLElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7b0JBQy9ETSxRQUFRckIsWUFBWUUsSUFBSSxDQUFDUyxRQUFRLEVBQUVXLFNBQVNULElBQUlDLE9BQU9WLE9BQU9XLEtBQUs7Z0JBQ3JFO2dCQUNBO1lBQ0Y7Z0JBQ0VaLElBQUksQ0FBQ0MsT0FBT0ssSUFBSSxDQUFDLEdBQUdMLE9BQU9XLEtBQUs7UUFDcEM7SUFDRjtJQUVBLE9BQU9aO0FBQ1QifQ==