@discordeno/bot 22.0.0-beta.1 → 22.0.0-beta.2

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 (488) hide show
  1. package/dist/bot.d.ts +4 -4
  2. package/dist/bot.d.ts.map +1 -1
  3. package/dist/bot.js +2 -3
  4. package/dist/commandOptionsParser.d.ts +4 -3
  5. package/dist/commandOptionsParser.d.ts.map +1 -1
  6. package/dist/commandOptionsParser.js +1 -1
  7. package/dist/constants.d.ts.map +1 -1
  8. package/dist/constants.js +1 -1
  9. package/dist/desiredProperties.d.ts +151 -100
  10. package/dist/desiredProperties.d.ts.map +1 -1
  11. package/dist/desiredProperties.js +290 -2
  12. package/dist/events.d.ts +34 -18
  13. package/dist/events.d.ts.map +1 -1
  14. package/dist/events.js +1 -1
  15. package/dist/handlers/channels/CHANNEL_CREATE.d.ts +2 -1
  16. package/dist/handlers/channels/CHANNEL_CREATE.d.ts.map +1 -1
  17. package/dist/handlers/channels/CHANNEL_CREATE.js +1 -1
  18. package/dist/handlers/channels/CHANNEL_DELETE.d.ts.map +1 -1
  19. package/dist/handlers/channels/CHANNEL_DELETE.js +1 -1
  20. package/dist/handlers/channels/CHANNEL_PINS_UPDATE.d.ts.map +1 -1
  21. package/dist/handlers/channels/CHANNEL_PINS_UPDATE.js +1 -1
  22. package/dist/handlers/channels/CHANNEL_UPDATE.d.ts.map +1 -1
  23. package/dist/handlers/channels/CHANNEL_UPDATE.js +1 -1
  24. package/dist/handlers/channels/STAGE_INSTANCE_CREATE.d.ts.map +1 -1
  25. package/dist/handlers/channels/STAGE_INSTANCE_CREATE.js +1 -1
  26. package/dist/handlers/channels/STAGE_INSTANCE_DELETE.d.ts.map +1 -1
  27. package/dist/handlers/channels/STAGE_INSTANCE_DELETE.js +1 -1
  28. package/dist/handlers/channels/STAGE_INSTANCE_UPDATE.d.ts.map +1 -1
  29. package/dist/handlers/channels/STAGE_INSTANCE_UPDATE.js +1 -1
  30. package/dist/handlers/channels/THREAD_CREATE.d.ts +1 -1
  31. package/dist/handlers/channels/THREAD_CREATE.d.ts.map +1 -1
  32. package/dist/handlers/channels/THREAD_CREATE.js +1 -1
  33. package/dist/handlers/channels/THREAD_DELETE.d.ts +1 -1
  34. package/dist/handlers/channels/THREAD_DELETE.d.ts.map +1 -1
  35. package/dist/handlers/channels/THREAD_DELETE.js +1 -1
  36. package/dist/handlers/channels/THREAD_LIST_SYNC.d.ts +1 -1
  37. package/dist/handlers/channels/THREAD_LIST_SYNC.d.ts.map +1 -1
  38. package/dist/handlers/channels/THREAD_LIST_SYNC.js +1 -1
  39. package/dist/handlers/channels/THREAD_MEMBERS_UPDATE.d.ts +1 -1
  40. package/dist/handlers/channels/THREAD_MEMBERS_UPDATE.d.ts.map +1 -1
  41. package/dist/handlers/channels/THREAD_MEMBERS_UPDATE.js +2 -2
  42. package/dist/handlers/channels/THREAD_MEMBER_UPDATE.d.ts +1 -1
  43. package/dist/handlers/channels/THREAD_MEMBER_UPDATE.d.ts.map +1 -1
  44. package/dist/handlers/channels/THREAD_MEMBER_UPDATE.js +1 -1
  45. package/dist/handlers/channels/THREAD_UPDATE.d.ts +1 -1
  46. package/dist/handlers/channels/THREAD_UPDATE.d.ts.map +1 -1
  47. package/dist/handlers/channels/THREAD_UPDATE.js +1 -1
  48. package/dist/handlers/channels/index.d.ts.map +1 -1
  49. package/dist/handlers/channels/index.js +1 -1
  50. package/dist/handlers/emojis/GUILD_EMOJIS_UPDATE.d.ts.map +1 -1
  51. package/dist/handlers/emojis/GUILD_EMOJIS_UPDATE.js +1 -1
  52. package/dist/handlers/emojis/index.d.ts.map +1 -1
  53. package/dist/handlers/emojis/index.js +1 -1
  54. package/dist/handlers/entitlements/ENTITLEMENT_CREATE.d.ts.map +1 -1
  55. package/dist/handlers/entitlements/ENTITLEMENT_CREATE.js +1 -1
  56. package/dist/handlers/entitlements/ENTITLEMENT_DELETE.d.ts.map +1 -1
  57. package/dist/handlers/entitlements/ENTITLEMENT_DELETE.js +1 -1
  58. package/dist/handlers/entitlements/ENTITLEMENT_UPDATE.d.ts.map +1 -1
  59. package/dist/handlers/entitlements/ENTITLEMENT_UPDATE.js +1 -1
  60. package/dist/handlers/entitlements/index.d.ts.map +1 -1
  61. package/dist/handlers/entitlements/index.js +1 -1
  62. package/dist/handlers/guilds/GUILD_AUDIT_LOG_ENTRY_CREATE.d.ts.map +1 -1
  63. package/dist/handlers/guilds/GUILD_AUDIT_LOG_ENTRY_CREATE.js +1 -1
  64. package/dist/handlers/guilds/GUILD_BAN_ADD.d.ts.map +1 -1
  65. package/dist/handlers/guilds/GUILD_BAN_ADD.js +1 -1
  66. package/dist/handlers/guilds/GUILD_BAN_REMOVE.d.ts.map +1 -1
  67. package/dist/handlers/guilds/GUILD_BAN_REMOVE.js +1 -1
  68. package/dist/handlers/guilds/GUILD_CREATE.d.ts.map +1 -1
  69. package/dist/handlers/guilds/GUILD_CREATE.js +1 -1
  70. package/dist/handlers/guilds/GUILD_DELETE.d.ts.map +1 -1
  71. package/dist/handlers/guilds/GUILD_DELETE.js +1 -1
  72. package/dist/handlers/guilds/GUILD_INTEGRATIONS_UPDATE.d.ts.map +1 -1
  73. package/dist/handlers/guilds/GUILD_INTEGRATIONS_UPDATE.js +1 -1
  74. package/dist/handlers/guilds/GUILD_STICKERS_UPDATE.d.ts +2 -1
  75. package/dist/handlers/guilds/GUILD_STICKERS_UPDATE.d.ts.map +1 -1
  76. package/dist/handlers/guilds/GUILD_STICKERS_UPDATE.js +1 -1
  77. package/dist/handlers/guilds/GUILD_UPDATE.d.ts.map +1 -1
  78. package/dist/handlers/guilds/GUILD_UPDATE.js +1 -1
  79. package/dist/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.d.ts.map +1 -1
  80. package/dist/handlers/guilds/automod/AUTO_MODERATION_ACTION_EXECUTION.js +1 -1
  81. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.d.ts.map +1 -1
  82. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_CREATE.js +1 -1
  83. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.d.ts.map +1 -1
  84. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_DELETE.js +1 -1
  85. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.d.ts.map +1 -1
  86. package/dist/handlers/guilds/automod/AUTO_MODERATION_RULE_UPDATE.js +1 -1
  87. package/dist/handlers/guilds/automod/index.d.ts.map +1 -1
  88. package/dist/handlers/guilds/automod/index.js +1 -1
  89. package/dist/handlers/guilds/index.d.ts.map +1 -1
  90. package/dist/handlers/guilds/index.js +1 -1
  91. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.d.ts.map +1 -1
  92. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_CREATE.js +1 -1
  93. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_DELETE.d.ts.map +1 -1
  94. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_DELETE.js +1 -1
  95. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_UPDATE.d.ts.map +1 -1
  96. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_UPDATE.js +1 -1
  97. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_ADD.d.ts.map +1 -1
  98. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_ADD.js +1 -1
  99. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_REMOVE.d.ts.map +1 -1
  100. package/dist/handlers/guilds/scheduledEvents/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +1 -1
  101. package/dist/handlers/guilds/scheduledEvents/index.d.ts.map +1 -1
  102. package/dist/handlers/guilds/scheduledEvents/index.js +1 -1
  103. package/dist/handlers/index.d.ts.map +1 -1
  104. package/dist/handlers/index.js +1 -1
  105. package/dist/handlers/integrations/INTEGRATION_CREATE.d.ts +1 -1
  106. package/dist/handlers/integrations/INTEGRATION_CREATE.d.ts.map +1 -1
  107. package/dist/handlers/integrations/INTEGRATION_CREATE.js +1 -1
  108. package/dist/handlers/integrations/INTEGRATION_DELETE.d.ts +1 -1
  109. package/dist/handlers/integrations/INTEGRATION_DELETE.d.ts.map +1 -1
  110. package/dist/handlers/integrations/INTEGRATION_DELETE.js +1 -1
  111. package/dist/handlers/integrations/INTEGRATION_UPDATE.d.ts +1 -1
  112. package/dist/handlers/integrations/INTEGRATION_UPDATE.d.ts.map +1 -1
  113. package/dist/handlers/integrations/INTEGRATION_UPDATE.js +1 -1
  114. package/dist/handlers/integrations/index.d.ts.map +1 -1
  115. package/dist/handlers/integrations/index.js +1 -1
  116. package/dist/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.d.ts +2 -1
  117. package/dist/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.d.ts.map +1 -1
  118. package/dist/handlers/interactions/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +1 -1
  119. package/dist/handlers/interactions/INTERACTION_CREATE.d.ts +1 -1
  120. package/dist/handlers/interactions/INTERACTION_CREATE.d.ts.map +1 -1
  121. package/dist/handlers/interactions/INTERACTION_CREATE.js +1 -1
  122. package/dist/handlers/interactions/index.d.ts.map +1 -1
  123. package/dist/handlers/interactions/index.js +1 -1
  124. package/dist/handlers/invites/INVITE_CREATE.d.ts +1 -1
  125. package/dist/handlers/invites/INVITE_CREATE.d.ts.map +1 -1
  126. package/dist/handlers/invites/INVITE_CREATE.js +20 -4
  127. package/dist/handlers/invites/INVITE_DELETE.d.ts +1 -1
  128. package/dist/handlers/invites/INVITE_DELETE.d.ts.map +1 -1
  129. package/dist/handlers/invites/INVITE_DELETE.js +4 -4
  130. package/dist/handlers/invites/index.d.ts.map +1 -1
  131. package/dist/handlers/invites/index.js +1 -1
  132. package/dist/handlers/members/GUILD_MEMBERS_CHUNK.d.ts +1 -1
  133. package/dist/handlers/members/GUILD_MEMBERS_CHUNK.d.ts.map +1 -1
  134. package/dist/handlers/members/GUILD_MEMBERS_CHUNK.js +1 -1
  135. package/dist/handlers/members/GUILD_MEMBER_ADD.d.ts +1 -1
  136. package/dist/handlers/members/GUILD_MEMBER_ADD.d.ts.map +1 -1
  137. package/dist/handlers/members/GUILD_MEMBER_ADD.js +1 -1
  138. package/dist/handlers/members/GUILD_MEMBER_REMOVE.d.ts +1 -1
  139. package/dist/handlers/members/GUILD_MEMBER_REMOVE.d.ts.map +1 -1
  140. package/dist/handlers/members/GUILD_MEMBER_REMOVE.js +1 -1
  141. package/dist/handlers/members/GUILD_MEMBER_UPDATE.d.ts +1 -1
  142. package/dist/handlers/members/GUILD_MEMBER_UPDATE.d.ts.map +1 -1
  143. package/dist/handlers/members/GUILD_MEMBER_UPDATE.js +4 -4
  144. package/dist/handlers/members/index.d.ts.map +1 -1
  145. package/dist/handlers/members/index.js +1 -1
  146. package/dist/handlers/messages/MESSAGE_CREATE.d.ts +1 -1
  147. package/dist/handlers/messages/MESSAGE_CREATE.d.ts.map +1 -1
  148. package/dist/handlers/messages/MESSAGE_CREATE.js +1 -1
  149. package/dist/handlers/messages/MESSAGE_DELETE.d.ts +1 -1
  150. package/dist/handlers/messages/MESSAGE_DELETE.d.ts.map +1 -1
  151. package/dist/handlers/messages/MESSAGE_DELETE.js +1 -1
  152. package/dist/handlers/messages/MESSAGE_DELETE_BULK.d.ts +1 -1
  153. package/dist/handlers/messages/MESSAGE_DELETE_BULK.d.ts.map +1 -1
  154. package/dist/handlers/messages/MESSAGE_DELETE_BULK.js +1 -1
  155. package/dist/handlers/messages/MESSAGE_REACTION_ADD.d.ts +1 -1
  156. package/dist/handlers/messages/MESSAGE_REACTION_ADD.d.ts.map +1 -1
  157. package/dist/handlers/messages/MESSAGE_REACTION_ADD.js +4 -3
  158. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE.d.ts +1 -1
  159. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE.d.ts.map +1 -1
  160. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE.js +4 -3
  161. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE_ALL.d.ts +1 -1
  162. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE_ALL.d.ts.map +1 -1
  163. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE_ALL.js +1 -1
  164. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE_EMOJI.d.ts +1 -1
  165. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE_EMOJI.d.ts.map +1 -1
  166. package/dist/handlers/messages/MESSAGE_REACTION_REMOVE_EMOJI.js +4 -3
  167. package/dist/handlers/messages/MESSAGE_UPDATE.d.ts +1 -1
  168. package/dist/handlers/messages/MESSAGE_UPDATE.d.ts.map +1 -1
  169. package/dist/handlers/messages/MESSAGE_UPDATE.js +1 -1
  170. package/dist/handlers/messages/index.d.ts.map +1 -1
  171. package/dist/handlers/messages/index.js +1 -1
  172. package/dist/handlers/misc/PRESENCE_UPDATE.d.ts +1 -1
  173. package/dist/handlers/misc/PRESENCE_UPDATE.d.ts.map +1 -1
  174. package/dist/handlers/misc/PRESENCE_UPDATE.js +1 -1
  175. package/dist/handlers/misc/RATE_LIMITED.d.ts +4 -0
  176. package/dist/handlers/misc/RATE_LIMITED.d.ts.map +1 -0
  177. package/dist/handlers/misc/RATE_LIMITED.js +7 -0
  178. package/dist/handlers/misc/READY.d.ts +1 -1
  179. package/dist/handlers/misc/READY.d.ts.map +1 -1
  180. package/dist/handlers/misc/READY.js +1 -1
  181. package/dist/handlers/misc/RESUMED.d.ts +4 -0
  182. package/dist/handlers/misc/RESUMED.d.ts.map +1 -0
  183. package/dist/handlers/misc/RESUMED.js +6 -0
  184. package/dist/handlers/misc/TYPING_START.d.ts +1 -1
  185. package/dist/handlers/misc/TYPING_START.d.ts.map +1 -1
  186. package/dist/handlers/misc/TYPING_START.js +1 -1
  187. package/dist/handlers/misc/USER_UPDATE.d.ts +1 -1
  188. package/dist/handlers/misc/USER_UPDATE.d.ts.map +1 -1
  189. package/dist/handlers/misc/USER_UPDATE.js +1 -1
  190. package/dist/handlers/misc/index.d.ts +2 -0
  191. package/dist/handlers/misc/index.d.ts.map +1 -1
  192. package/dist/handlers/misc/index.js +3 -1
  193. package/dist/handlers/poll/MESSAGE_POLL_VOTE_ADD.d.ts +1 -1
  194. package/dist/handlers/poll/MESSAGE_POLL_VOTE_ADD.d.ts.map +1 -1
  195. package/dist/handlers/poll/MESSAGE_POLL_VOTE_ADD.js +1 -1
  196. package/dist/handlers/poll/MESSAGE_POLL_VOTE_REMOVE.d.ts +1 -1
  197. package/dist/handlers/poll/MESSAGE_POLL_VOTE_REMOVE.d.ts.map +1 -1
  198. package/dist/handlers/poll/MESSAGE_POLL_VOTE_REMOVE.js +1 -1
  199. package/dist/handlers/poll/index.d.ts.map +1 -1
  200. package/dist/handlers/poll/index.js +1 -1
  201. package/dist/handlers/roles/GUILD_ROLE_CREATE.d.ts +1 -1
  202. package/dist/handlers/roles/GUILD_ROLE_CREATE.d.ts.map +1 -1
  203. package/dist/handlers/roles/GUILD_ROLE_CREATE.js +1 -1
  204. package/dist/handlers/roles/GUILD_ROLE_DELETE.d.ts +1 -1
  205. package/dist/handlers/roles/GUILD_ROLE_DELETE.d.ts.map +1 -1
  206. package/dist/handlers/roles/GUILD_ROLE_DELETE.js +1 -1
  207. package/dist/handlers/roles/GUILD_ROLE_UPDATE.d.ts +1 -1
  208. package/dist/handlers/roles/GUILD_ROLE_UPDATE.d.ts.map +1 -1
  209. package/dist/handlers/roles/GUILD_ROLE_UPDATE.js +1 -1
  210. package/dist/handlers/roles/index.d.ts.map +1 -1
  211. package/dist/handlers/roles/index.js +1 -1
  212. package/dist/handlers/soundboard/GUILD_SOUNDBOARD_SOUNDS_UPDATE.d.ts +1 -1
  213. package/dist/handlers/soundboard/GUILD_SOUNDBOARD_SOUNDS_UPDATE.d.ts.map +1 -1
  214. package/dist/handlers/soundboard/GUILD_SOUNDBOARD_SOUNDS_UPDATE.js +1 -1
  215. package/dist/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_CREATE.d.ts +1 -1
  216. package/dist/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_CREATE.d.ts.map +1 -1
  217. package/dist/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_CREATE.js +1 -1
  218. package/dist/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_DELETE.d.ts +1 -1
  219. package/dist/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_DELETE.d.ts.map +1 -1
  220. package/dist/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_DELETE.js +1 -1
  221. package/dist/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_UPDATE.d.ts +1 -1
  222. package/dist/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_UPDATE.d.ts.map +1 -1
  223. package/dist/handlers/soundboard/GUILD_SOUNDBOARD_SOUND_UPDATE.js +1 -1
  224. package/dist/handlers/soundboard/SOUNDBOARD_SOUNDS.d.ts +1 -1
  225. package/dist/handlers/soundboard/SOUNDBOARD_SOUNDS.d.ts.map +1 -1
  226. package/dist/handlers/soundboard/SOUNDBOARD_SOUNDS.js +1 -1
  227. package/dist/handlers/soundboard/index.d.ts.map +1 -1
  228. package/dist/handlers/soundboard/index.js +1 -1
  229. package/dist/handlers/subscriptions/SUBSCRIPTION_CREATE.d.ts.map +1 -1
  230. package/dist/handlers/subscriptions/SUBSCRIPTION_CREATE.js +1 -1
  231. package/dist/handlers/subscriptions/SUBSCRIPTION_DELETE.d.ts.map +1 -1
  232. package/dist/handlers/subscriptions/SUBSCRIPTION_DELETE.js +1 -1
  233. package/dist/handlers/subscriptions/SUBSCRIPTION_UPDATE.d.ts.map +1 -1
  234. package/dist/handlers/subscriptions/SUBSCRIPTION_UPDATE.js +1 -1
  235. package/dist/handlers/subscriptions/index.d.ts.map +1 -1
  236. package/dist/handlers/subscriptions/index.js +1 -1
  237. package/dist/handlers/voice/VOICE_CHANNEL_EFFECT_SEND.d.ts +1 -1
  238. package/dist/handlers/voice/VOICE_CHANNEL_EFFECT_SEND.d.ts.map +1 -1
  239. package/dist/handlers/voice/VOICE_CHANNEL_EFFECT_SEND.js +1 -1
  240. package/dist/handlers/voice/VOICE_SERVER_UPDATE.d.ts +1 -1
  241. package/dist/handlers/voice/VOICE_SERVER_UPDATE.d.ts.map +1 -1
  242. package/dist/handlers/voice/VOICE_SERVER_UPDATE.js +1 -1
  243. package/dist/handlers/voice/VOICE_STATE_UPDATE.d.ts +1 -1
  244. package/dist/handlers/voice/VOICE_STATE_UPDATE.d.ts.map +1 -1
  245. package/dist/handlers/voice/VOICE_STATE_UPDATE.js +2 -5
  246. package/dist/handlers/voice/index.d.ts.map +1 -1
  247. package/dist/handlers/voice/index.js +1 -1
  248. package/dist/handlers/webhooks/WEBHOOKS_UPDATE.d.ts +1 -1
  249. package/dist/handlers/webhooks/WEBHOOKS_UPDATE.d.ts.map +1 -1
  250. package/dist/handlers/webhooks/WEBHOOKS_UPDATE.js +1 -1
  251. package/dist/handlers/webhooks/index.d.ts.map +1 -1
  252. package/dist/handlers/webhooks/index.js +1 -1
  253. package/dist/handlers.d.ts +3 -1
  254. package/dist/handlers.d.ts.map +1 -1
  255. package/dist/handlers.js +78 -75
  256. package/dist/helpers.d.ts +62 -44
  257. package/dist/helpers.d.ts.map +1 -1
  258. package/dist/helpers.js +66 -15
  259. package/dist/index.d.ts.map +1 -1
  260. package/dist/index.js +1 -1
  261. package/dist/transformers/activity.d.ts +11 -4
  262. package/dist/transformers/activity.d.ts.map +1 -1
  263. package/dist/transformers/activity.js +34 -18
  264. package/dist/transformers/application.d.ts +5 -3
  265. package/dist/transformers/application.d.ts.map +1 -1
  266. package/dist/transformers/application.js +20 -8
  267. package/dist/transformers/applicationCommand.d.ts +2 -2
  268. package/dist/transformers/applicationCommand.d.ts.map +1 -1
  269. package/dist/transformers/applicationCommand.js +1 -1
  270. package/dist/transformers/applicationCommandOption.d.ts +2 -2
  271. package/dist/transformers/applicationCommandOption.d.ts.map +1 -1
  272. package/dist/transformers/applicationCommandOption.js +3 -2
  273. package/dist/transformers/applicationCommandOptionChoice.d.ts +2 -2
  274. package/dist/transformers/applicationCommandOptionChoice.d.ts.map +1 -1
  275. package/dist/transformers/applicationCommandOptionChoice.js +1 -1
  276. package/dist/transformers/applicationCommandPermission.d.ts +2 -2
  277. package/dist/transformers/applicationCommandPermission.d.ts.map +1 -1
  278. package/dist/transformers/applicationCommandPermission.js +1 -1
  279. package/dist/transformers/attachment.d.ts +4 -2
  280. package/dist/transformers/attachment.d.ts.map +1 -1
  281. package/dist/transformers/attachment.js +12 -4
  282. package/dist/transformers/auditLogEntry.d.ts +2 -2
  283. package/dist/transformers/auditLogEntry.d.ts.map +1 -1
  284. package/dist/transformers/auditLogEntry.js +3 -2
  285. package/dist/transformers/automodActionExecution.d.ts +2 -2
  286. package/dist/transformers/automodActionExecution.d.ts.map +1 -1
  287. package/dist/transformers/automodActionExecution.js +1 -1
  288. package/dist/transformers/automodRule.d.ts +2 -2
  289. package/dist/transformers/automodRule.d.ts.map +1 -1
  290. package/dist/transformers/automodRule.js +3 -2
  291. package/dist/transformers/avatarDecorationData.d.ts +5 -2
  292. package/dist/transformers/avatarDecorationData.d.ts.map +1 -1
  293. package/dist/transformers/avatarDecorationData.js +7 -4
  294. package/dist/transformers/channel.d.ts +7 -3
  295. package/dist/transformers/channel.d.ts.map +1 -1
  296. package/dist/transformers/channel.js +14 -9
  297. package/dist/transformers/component.d.ts +11 -5
  298. package/dist/transformers/component.d.ts.map +1 -1
  299. package/dist/transformers/component.js +253 -38
  300. package/dist/transformers/embed.d.ts +2 -2
  301. package/dist/transformers/embed.d.ts.map +1 -1
  302. package/dist/transformers/embed.js +22 -5
  303. package/dist/transformers/emoji.d.ts +8 -3
  304. package/dist/transformers/emoji.d.ts.map +1 -1
  305. package/dist/transformers/emoji.js +10 -5
  306. package/dist/transformers/entitlement.d.ts +4 -2
  307. package/dist/transformers/entitlement.d.ts.map +1 -1
  308. package/dist/transformers/entitlement.js +6 -3
  309. package/dist/transformers/gatewayBot.d.ts +2 -2
  310. package/dist/transformers/gatewayBot.d.ts.map +1 -1
  311. package/dist/transformers/gatewayBot.js +1 -1
  312. package/dist/transformers/guild.d.ts +5 -3
  313. package/dist/transformers/guild.d.ts.map +1 -1
  314. package/dist/transformers/guild.js +25 -25
  315. package/dist/transformers/incidentsData.d.ts +4 -2
  316. package/dist/transformers/incidentsData.d.ts.map +1 -1
  317. package/dist/transformers/incidentsData.js +6 -3
  318. package/dist/transformers/index.d.ts.map +1 -1
  319. package/dist/transformers/index.js +1 -1
  320. package/dist/transformers/integration.d.ts +2 -2
  321. package/dist/transformers/integration.d.ts.map +1 -1
  322. package/dist/transformers/integration.js +2 -2
  323. package/dist/transformers/interaction.d.ts +20 -12
  324. package/dist/transformers/interaction.d.ts.map +1 -1
  325. package/dist/transformers/interaction.js +67 -40
  326. package/dist/transformers/invite.d.ts +5 -4
  327. package/dist/transformers/invite.d.ts.map +1 -1
  328. package/dist/transformers/invite.js +27 -28
  329. package/dist/transformers/lobby.d.ts +14 -4
  330. package/dist/transformers/lobby.d.ts.map +1 -1
  331. package/dist/transformers/lobby.js +36 -6
  332. package/dist/transformers/member.d.ts +3 -2
  333. package/dist/transformers/member.d.ts.map +1 -1
  334. package/dist/transformers/member.js +6 -3
  335. package/dist/transformers/message.d.ts +21 -10
  336. package/dist/transformers/message.d.ts.map +1 -1
  337. package/dist/transformers/message.js +53 -26
  338. package/dist/transformers/onboarding.d.ts +10 -4
  339. package/dist/transformers/onboarding.d.ts.map +1 -1
  340. package/dist/transformers/onboarding.js +17 -10
  341. package/dist/transformers/poll.d.ts +7 -3
  342. package/dist/transformers/poll.d.ts.map +1 -1
  343. package/dist/transformers/poll.js +14 -7
  344. package/dist/transformers/presence.d.ts +4 -2
  345. package/dist/transformers/presence.d.ts.map +1 -1
  346. package/dist/transformers/presence.js +10 -6
  347. package/dist/transformers/reverse/activity.d.ts +5 -2
  348. package/dist/transformers/reverse/activity.d.ts.map +1 -1
  349. package/dist/transformers/reverse/activity.js +20 -24
  350. package/dist/transformers/reverse/allowedMentions.d.ts +2 -1
  351. package/dist/transformers/reverse/allowedMentions.d.ts.map +1 -1
  352. package/dist/transformers/reverse/allowedMentions.js +1 -1
  353. package/dist/transformers/reverse/application.d.ts +3 -1
  354. package/dist/transformers/reverse/application.d.ts.map +1 -1
  355. package/dist/transformers/reverse/application.js +2 -2
  356. package/dist/transformers/reverse/applicationCommand.d.ts +3 -1
  357. package/dist/transformers/reverse/applicationCommand.d.ts.map +1 -1
  358. package/dist/transformers/reverse/applicationCommand.js +2 -2
  359. package/dist/transformers/reverse/applicationCommandOption.d.ts +3 -1
  360. package/dist/transformers/reverse/applicationCommandOption.d.ts.map +1 -1
  361. package/dist/transformers/reverse/applicationCommandOption.js +1 -1
  362. package/dist/transformers/reverse/applicationCommandOptionChoice.d.ts +3 -1
  363. package/dist/transformers/reverse/applicationCommandOptionChoice.d.ts.map +1 -1
  364. package/dist/transformers/reverse/applicationCommandOptionChoice.js +1 -1
  365. package/dist/transformers/reverse/applicationCommandPermission.d.ts +3 -1
  366. package/dist/transformers/reverse/applicationCommandPermission.d.ts.map +1 -1
  367. package/dist/transformers/reverse/applicationCommandPermission.js +1 -1
  368. package/dist/transformers/reverse/attachment.d.ts +2 -1
  369. package/dist/transformers/reverse/attachment.d.ts.map +1 -1
  370. package/dist/transformers/reverse/attachment.js +1 -1
  371. package/dist/transformers/reverse/auditLogEntry.d.ts +2 -1
  372. package/dist/transformers/reverse/auditLogEntry.d.ts.map +1 -1
  373. package/dist/transformers/reverse/auditLogEntry.js +3 -2
  374. package/dist/transformers/reverse/component.d.ts +4 -3
  375. package/dist/transformers/reverse/component.d.ts.map +1 -1
  376. package/dist/transformers/reverse/component.js +185 -12
  377. package/dist/transformers/reverse/embed.d.ts +2 -1
  378. package/dist/transformers/reverse/embed.d.ts.map +1 -1
  379. package/dist/transformers/reverse/embed.js +19 -4
  380. package/dist/transformers/reverse/emoji.d.ts +2 -1
  381. package/dist/transformers/reverse/emoji.d.ts.map +1 -1
  382. package/dist/transformers/reverse/emoji.js +1 -1
  383. package/dist/transformers/reverse/gatewayBot.d.ts.map +1 -1
  384. package/dist/transformers/reverse/gatewayBot.js +1 -1
  385. package/dist/transformers/reverse/index.d.ts.map +1 -1
  386. package/dist/transformers/reverse/index.js +1 -1
  387. package/dist/transformers/reverse/member.d.ts.map +1 -1
  388. package/dist/transformers/reverse/member.js +4 -2
  389. package/dist/transformers/reverse/presence.d.ts +2 -1
  390. package/dist/transformers/reverse/presence.d.ts.map +1 -1
  391. package/dist/transformers/reverse/presence.js +3 -2
  392. package/dist/transformers/reverse/team.d.ts +2 -1
  393. package/dist/transformers/reverse/team.d.ts.map +1 -1
  394. package/dist/transformers/reverse/team.js +2 -2
  395. package/dist/transformers/reverse/user.d.ts +5 -0
  396. package/dist/transformers/reverse/user.d.ts.map +1 -0
  397. package/dist/transformers/reverse/user.js +17 -0
  398. package/dist/transformers/reverse/widgetSettings.d.ts +2 -1
  399. package/dist/transformers/reverse/widgetSettings.d.ts.map +1 -1
  400. package/dist/transformers/reverse/widgetSettings.js +1 -1
  401. package/dist/transformers/role.d.ts +8 -4
  402. package/dist/transformers/role.d.ts.map +1 -1
  403. package/dist/transformers/role.js +13 -8
  404. package/dist/transformers/scheduledEvent.d.ts +7 -3
  405. package/dist/transformers/scheduledEvent.d.ts.map +1 -1
  406. package/dist/transformers/scheduledEvent.js +11 -6
  407. package/dist/transformers/sku.d.ts +4 -2
  408. package/dist/transformers/sku.d.ts.map +1 -1
  409. package/dist/transformers/sku.js +6 -3
  410. package/dist/transformers/soundboardSound.d.ts +4 -2
  411. package/dist/transformers/soundboardSound.d.ts.map +1 -1
  412. package/dist/transformers/soundboardSound.js +6 -3
  413. package/dist/transformers/stageInstance.d.ts +4 -2
  414. package/dist/transformers/stageInstance.d.ts.map +1 -1
  415. package/dist/transformers/stageInstance.js +6 -3
  416. package/dist/transformers/stageInviteInstance.d.ts +4 -3
  417. package/dist/transformers/stageInviteInstance.d.ts.map +1 -1
  418. package/dist/transformers/stageInviteInstance.js +10 -8
  419. package/dist/transformers/sticker.d.ts +5 -3
  420. package/dist/transformers/sticker.d.ts.map +1 -1
  421. package/dist/transformers/sticker.js +6 -3
  422. package/dist/transformers/subscription.d.ts +4 -2
  423. package/dist/transformers/subscription.d.ts.map +1 -1
  424. package/dist/transformers/subscription.js +6 -3
  425. package/dist/transformers/team.d.ts +2 -2
  426. package/dist/transformers/team.d.ts.map +1 -1
  427. package/dist/transformers/team.js +2 -2
  428. package/dist/transformers/template.d.ts +2 -2
  429. package/dist/transformers/template.d.ts.map +1 -1
  430. package/dist/transformers/template.js +1 -1
  431. package/dist/transformers/threadMember.d.ts +3 -3
  432. package/dist/transformers/threadMember.d.ts.map +1 -1
  433. package/dist/transformers/threadMember.js +4 -2
  434. package/dist/transformers/toggles/Permissions.d.ts.map +1 -1
  435. package/dist/transformers/toggles/Permissions.js +1 -1
  436. package/dist/transformers/toggles/ToggleBitfield.d.ts.map +1 -1
  437. package/dist/transformers/toggles/ToggleBitfield.js +1 -1
  438. package/dist/transformers/toggles/channel.d.ts +2 -2
  439. package/dist/transformers/toggles/channel.d.ts.map +1 -1
  440. package/dist/transformers/toggles/channel.js +2 -2
  441. package/dist/transformers/toggles/emoji.d.ts +1 -1
  442. package/dist/transformers/toggles/emoji.d.ts.map +1 -1
  443. package/dist/transformers/toggles/emoji.js +1 -1
  444. package/dist/transformers/toggles/guild.d.ts +6 -6
  445. package/dist/transformers/toggles/guild.d.ts.map +1 -1
  446. package/dist/transformers/toggles/guild.js +5 -5
  447. package/dist/transformers/toggles/index.d.ts.map +1 -1
  448. package/dist/transformers/toggles/index.js +1 -1
  449. package/dist/transformers/toggles/member.d.ts +2 -2
  450. package/dist/transformers/toggles/member.d.ts.map +1 -1
  451. package/dist/transformers/toggles/member.js +2 -2
  452. package/dist/transformers/toggles/role.d.ts +1 -1
  453. package/dist/transformers/toggles/role.d.ts.map +1 -1
  454. package/dist/transformers/toggles/role.js +1 -1
  455. package/dist/transformers/toggles/user.d.ts +1 -1
  456. package/dist/transformers/toggles/user.d.ts.map +1 -1
  457. package/dist/transformers/toggles/user.js +1 -1
  458. package/dist/transformers/toggles/voice.d.ts +1 -1
  459. package/dist/transformers/toggles/voice.d.ts.map +1 -1
  460. package/dist/transformers/toggles/voice.js +1 -1
  461. package/dist/transformers/types.d.ts +321 -65
  462. package/dist/transformers/types.d.ts.map +1 -1
  463. package/dist/transformers/types.js +2 -2
  464. package/dist/transformers/user.d.ts +14 -5
  465. package/dist/transformers/user.d.ts.map +1 -1
  466. package/dist/transformers/user.js +39 -12
  467. package/dist/transformers/voiceRegion.d.ts +2 -2
  468. package/dist/transformers/voiceRegion.d.ts.map +1 -1
  469. package/dist/transformers/voiceRegion.js +1 -1
  470. package/dist/transformers/voiceState.d.ts +4 -3
  471. package/dist/transformers/voiceState.d.ts.map +1 -1
  472. package/dist/transformers/voiceState.js +6 -4
  473. package/dist/transformers/webhook.d.ts +4 -2
  474. package/dist/transformers/webhook.d.ts.map +1 -1
  475. package/dist/transformers/webhook.js +11 -8
  476. package/dist/transformers/welcomeScreen.d.ts +2 -2
  477. package/dist/transformers/welcomeScreen.d.ts.map +1 -1
  478. package/dist/transformers/welcomeScreen.js +1 -1
  479. package/dist/transformers/widget.d.ts +2 -2
  480. package/dist/transformers/widget.d.ts.map +1 -1
  481. package/dist/transformers/widget.js +7 -5
  482. package/dist/transformers/widgetSettings.d.ts +2 -2
  483. package/dist/transformers/widgetSettings.d.ts.map +1 -1
  484. package/dist/transformers/widgetSettings.js +1 -1
  485. package/dist/transformers.d.ts +220 -216
  486. package/dist/transformers.d.ts.map +1 -1
  487. package/dist/transformers.js +89 -3
  488. package/package.json +25 -27
@@ -1,6 +1,12 @@
1
1
  import { MessageComponentTypes } from '@discordeno/types';
2
- export function transformComponent(bot, payload) {
2
+ import { callCustomizer } from '../transformers.js';
3
+ import { ToggleBitfield } from './toggles/ToggleBitfield.js';
4
+ export function transformComponent(bot, payload, extra) {
3
5
  let component;
6
+ // There's nothing to do with a component without a type, as it means an issue on Discord, so we just throw an error
7
+ if (!payload.type) {
8
+ throw new Error(`[Discordeno] Received a component payload without a type in the component transformer.`);
9
+ }
4
10
  // This switch is exhaustive, so we dont need the default case and TS does not error out for the un-initialized component variable
5
11
  switch(payload.type){
6
12
  case MessageComponentTypes.ActionRow:
@@ -16,11 +22,19 @@ export function transformComponent(bot, payload) {
16
22
  component = transformInputTextComponent(bot, payload);
17
23
  break;
18
24
  case MessageComponentTypes.StringSelect:
25
+ component = transformStringSelectMenuComponent(bot, payload);
26
+ break;
19
27
  case MessageComponentTypes.UserSelect:
28
+ component = transformUserSelectMenuComponent(bot, payload);
29
+ break;
20
30
  case MessageComponentTypes.RoleSelect:
31
+ component = transformRoleSelectMenuComponent(bot, payload);
32
+ break;
21
33
  case MessageComponentTypes.MentionableSelect:
34
+ component = transformMentionableSelectMenuComponent(bot, payload);
35
+ break;
22
36
  case MessageComponentTypes.ChannelSelect:
23
- component = transformSelectMenuComponent(bot, payload);
37
+ component = transformChannelSelectMenuComponent(bot, payload);
24
38
  break;
25
39
  case MessageComponentTypes.Section:
26
40
  component = transformSectionComponent(bot, payload);
@@ -40,27 +54,51 @@ export function transformComponent(bot, payload) {
40
54
  case MessageComponentTypes.TextDisplay:
41
55
  component = transformTextDisplayComponent(bot, payload);
42
56
  break;
57
+ case MessageComponentTypes.Label:
58
+ component = transformLabelComponent(bot, payload);
59
+ break;
60
+ case MessageComponentTypes.FileUpload:
61
+ component = transformFileUploadComponent(bot, payload);
62
+ break;
63
+ case MessageComponentTypes.RadioGroup:
64
+ component = transformRadioGroupComponent(bot, payload);
65
+ break;
66
+ case MessageComponentTypes.CheckboxGroup:
67
+ component = transformCheckboxGroupComponent(bot, payload);
68
+ break;
69
+ case MessageComponentTypes.Checkbox:
70
+ component = transformCheckboxComponent(bot, payload);
71
+ break;
43
72
  }
44
- return bot.transformers.customizers.component(bot, payload, component);
73
+ return callCustomizer('component', bot, payload, component, {
74
+ partial: extra?.partial ?? false
75
+ });
45
76
  }
46
- export function transformUnfurledMediaItem(bot, payload) {
77
+ export function transformUnfurledMediaItem(bot, payload, extra) {
47
78
  const props = bot.transformers.desiredProperties.unfurledMediaItem;
48
79
  const mediaItem = {};
49
80
  if (props.url && payload.url) mediaItem.url = payload.url;
50
81
  if (props.proxyUrl && payload.proxy_url) mediaItem.proxyUrl = payload.proxy_url;
51
82
  if (props.height && payload.height) mediaItem.height = payload.height;
52
83
  if (props.width && payload.width) mediaItem.width = payload.width;
84
+ if (props.placeholder && payload.placeholder) mediaItem.placeholder = payload.placeholder;
85
+ if (props.placeholderVersion && payload.placeholder_version) mediaItem.placeholderVersion = payload.placeholder_version;
53
86
  if (props.contentType && payload.content_type) mediaItem.contentType = payload.content_type;
87
+ if (props.flags && payload.flags) mediaItem.flags = new ToggleBitfield(payload.flags);
54
88
  if (props.attachmentId && payload.attachment_id) mediaItem.attachmentId = bot.transformers.snowflake(payload.attachment_id);
55
- return bot.transformers.customizers.unfurledMediaItem(bot, payload, mediaItem);
89
+ return callCustomizer('unfurledMediaItem', bot, payload, mediaItem, {
90
+ partial: extra?.partial ?? false
91
+ });
56
92
  }
57
- export function transformMediaGalleryItem(bot, payload) {
93
+ export function transformMediaGalleryItem(bot, payload, extra) {
58
94
  const props = bot.transformers.desiredProperties.mediaGalleryItem;
59
95
  const galleryItem = {};
60
96
  if (props.media && payload.media) galleryItem.media = bot.transformers.unfurledMediaItem(bot, payload.media);
61
97
  if (props.description && payload.description) galleryItem.description = payload.description;
62
98
  if (props.spoiler && payload.spoiler) galleryItem.spoiler = payload.spoiler;
63
- return bot.transformers.customizers.mediaGalleryItem(bot, payload, galleryItem);
99
+ return callCustomizer('mediaGalleryItem', bot, payload, galleryItem, {
100
+ partial: extra?.partial ?? false
101
+ });
64
102
  }
65
103
  function transformActionRow(bot, payload) {
66
104
  const props = bot.transformers.desiredProperties.component;
@@ -88,7 +126,9 @@ function transformButtonComponent(bot, payload) {
88
126
  if (props.label && payload.label) button.label = payload.label;
89
127
  if (props.customId && payload.custom_id) button.customId = payload.custom_id;
90
128
  if (props.style && payload.style) button.style = payload.style;
91
- if (props.emoji && payload.emoji) button.emoji = bot.transformers.emoji(bot, payload.emoji);
129
+ if (props.emoji && payload.emoji) button.emoji = bot.transformers.emoji(bot, payload.emoji, {
130
+ partial: true
131
+ });
92
132
  if (props.url && payload.url) button.url = payload.url;
93
133
  if (props.disabled && payload.disabled) button.disabled = payload.disabled;
94
134
  if (props.skuId && payload.sku_id) button.skuId = bot.transformers.snowflake(payload.sku_id);
@@ -99,42 +139,139 @@ function transformInputTextComponent(bot, payload) {
99
139
  const input = {};
100
140
  if (props.type && payload.type) input.type = payload.type;
101
141
  if (props.id && payload.id) input.id = payload.id;
102
- if (props.style && payload.style) input.style = payload.style;
103
- if (props.required && payload.required) input.required = payload.required;
104
- if (props.customId && payload.custom_id) input.customId = payload.custom_id;
105
- if (props.label && payload.label) input.label = payload.label;
106
- if (props.placeholder && payload.placeholder) input.placeholder = payload.placeholder;
107
- if (props.minLength && payload.min_length) input.minLength = payload.min_length;
108
- if (props.maxLength && payload.max_length) input.maxLength = payload.max_length;
109
142
  if (props.value && payload.value) input.value = payload.value;
143
+ if (props.customId && payload.custom_id) input.customId = payload.custom_id;
144
+ // We assume that if we find 'values' it is the interaction response
145
+ if ('style' in payload) {
146
+ if (props.style && payload.style) input.style = payload.style;
147
+ if (props.required && payload.required) input.required = payload.required;
148
+ if (props.label && payload.label) input.label = payload.label;
149
+ if (props.placeholder && payload.placeholder) input.placeholder = payload.placeholder;
150
+ if (props.minLength && payload.min_length) input.minLength = payload.min_length;
151
+ if (props.maxLength && payload.max_length) input.maxLength = payload.max_length;
152
+ }
110
153
  return input;
111
154
  }
112
- function transformSelectMenuComponent(bot, payload) {
155
+ function transformStringSelectMenuComponent(bot, payload) {
113
156
  const props = bot.transformers.desiredProperties.component;
114
157
  const select = {};
115
158
  if (props.type && payload.type) select.type = payload.type;
116
159
  if (props.id && payload.id) select.id = payload.id;
117
160
  if (props.customId && payload.custom_id) select.customId = payload.custom_id;
118
- if (props.placeholder && payload.placeholder) select.placeholder = payload.placeholder;
119
- if (props.minValues && payload.min_values) select.minValues = payload.min_values;
120
- if (props.maxValues && payload.max_values) select.maxValues = payload.max_values;
121
- if (props.defaultValues && payload.default_values) select.defaultValues = payload.default_values.map((defaultValue)=>({
122
- id: bot.transformers.snowflake(defaultValue.id),
123
- type: defaultValue.type
124
- }));
125
- if (props.channelTypes && payload.channel_types) select.channelTypes = payload.channel_types;
126
- if (props.options && payload.options) select.options = payload.options.map((option)=>({
127
- label: option.label,
128
- value: option.value,
129
- description: option.description,
130
- emoji: option.emoji ? {
131
- id: option.emoji.id ? bot.transformers.snowflake(option.emoji.id) : undefined,
132
- name: option.emoji.name ?? undefined,
133
- animated: option.emoji.animated
134
- } : undefined,
135
- default: option.default
136
- }));
137
- if (props.disabled && payload.disabled) select.disabled = payload.disabled;
161
+ // We assume that if we find 'values' it is the interaction response
162
+ if ('values' in payload) {
163
+ if (props.values && payload.values) select.values = payload.values;
164
+ } else {
165
+ const _payload = payload;
166
+ if (props.placeholder && _payload.placeholder) select.placeholder = _payload.placeholder;
167
+ if (props.minValues && _payload.min_values) select.minValues = _payload.min_values;
168
+ if (props.maxValues && _payload.max_values) select.maxValues = _payload.max_values;
169
+ if (props.options && _payload.options) select.options = _payload.options.map((option)=>({
170
+ label: option.label,
171
+ value: option.value,
172
+ description: option.description,
173
+ emoji: option.emoji ? {
174
+ id: option.emoji.id ? bot.transformers.snowflake(option.emoji.id) : undefined,
175
+ name: option.emoji.name ?? undefined,
176
+ animated: option.emoji.animated
177
+ } : undefined,
178
+ default: option.default
179
+ }));
180
+ if (props.disabled && _payload.disabled) select.disabled = _payload.disabled;
181
+ }
182
+ return select;
183
+ }
184
+ function transformUserSelectMenuComponent(bot, payload) {
185
+ const props = bot.transformers.desiredProperties.component;
186
+ const select = {};
187
+ if (props.type && payload.type) select.type = payload.type;
188
+ if (props.id && payload.id) select.id = payload.id;
189
+ if (props.customId && payload.custom_id) select.customId = payload.custom_id;
190
+ // We assume that if we find 'values' it is the interaction response
191
+ if ('values' in payload) {
192
+ if (props.values && payload.values) select.values = payload.values;
193
+ if (props.resolved && payload.resolved) select.resolved = bot.transformers.interactionDataResolved(bot, payload.resolved);
194
+ } else {
195
+ const _payload = payload;
196
+ if (props.placeholder && _payload.placeholder) select.placeholder = _payload.placeholder;
197
+ if (props.minValues && _payload.min_values) select.minValues = _payload.min_values;
198
+ if (props.maxValues && _payload.max_values) select.maxValues = _payload.max_values;
199
+ if (props.defaultValues && _payload.default_values) select.defaultValues = _payload.default_values.map((defaultValue)=>({
200
+ id: bot.transformers.snowflake(defaultValue.id),
201
+ type: defaultValue.type
202
+ }));
203
+ if (props.disabled && _payload.disabled) select.disabled = _payload.disabled;
204
+ }
205
+ return select;
206
+ }
207
+ function transformRoleSelectMenuComponent(bot, payload) {
208
+ const props = bot.transformers.desiredProperties.component;
209
+ const select = {};
210
+ if (props.type && payload.type) select.type = payload.type;
211
+ if (props.id && payload.id) select.id = payload.id;
212
+ if (props.customId && payload.custom_id) select.customId = payload.custom_id;
213
+ // We assume that if we find 'values' it is the interaction response
214
+ if ('values' in payload) {
215
+ if (props.values && payload.values) select.values = payload.values;
216
+ if (props.resolved && payload.resolved) select.resolved = bot.transformers.interactionDataResolved(bot, payload.resolved);
217
+ } else {
218
+ const _payload = payload;
219
+ if (props.placeholder && _payload.placeholder) select.placeholder = _payload.placeholder;
220
+ if (props.minValues && _payload.min_values) select.minValues = _payload.min_values;
221
+ if (props.maxValues && _payload.max_values) select.maxValues = _payload.max_values;
222
+ if (props.defaultValues && _payload.default_values) select.defaultValues = _payload.default_values.map((defaultValue)=>({
223
+ id: bot.transformers.snowflake(defaultValue.id),
224
+ type: defaultValue.type
225
+ }));
226
+ if (props.disabled && _payload.disabled) select.disabled = _payload.disabled;
227
+ }
228
+ return select;
229
+ }
230
+ function transformMentionableSelectMenuComponent(bot, payload) {
231
+ const props = bot.transformers.desiredProperties.component;
232
+ const select = {};
233
+ if (props.type && payload.type) select.type = payload.type;
234
+ if (props.id && payload.id) select.id = payload.id;
235
+ if (props.customId && payload.custom_id) select.customId = payload.custom_id;
236
+ // We assume that if we find 'values' it is the interaction response
237
+ if ('values' in payload) {
238
+ if (props.values && payload.values) select.values = payload.values;
239
+ if (props.resolved && payload.resolved) select.resolved = bot.transformers.interactionDataResolved(bot, payload.resolved);
240
+ } else {
241
+ const _payload = payload;
242
+ if (props.placeholder && _payload.placeholder) select.placeholder = _payload.placeholder;
243
+ if (props.minValues && _payload.min_values) select.minValues = _payload.min_values;
244
+ if (props.maxValues && _payload.max_values) select.maxValues = _payload.max_values;
245
+ if (props.defaultValues && _payload.default_values) select.defaultValues = _payload.default_values.map((defaultValue)=>({
246
+ id: bot.transformers.snowflake(defaultValue.id),
247
+ type: defaultValue.type
248
+ }));
249
+ if (props.disabled && _payload.disabled) select.disabled = _payload.disabled;
250
+ }
251
+ return select;
252
+ }
253
+ function transformChannelSelectMenuComponent(bot, payload) {
254
+ const props = bot.transformers.desiredProperties.component;
255
+ const select = {};
256
+ if (props.type && payload.type) select.type = payload.type;
257
+ if (props.id && payload.id) select.id = payload.id;
258
+ if (props.customId && payload.custom_id) select.customId = payload.custom_id;
259
+ // We assume that if we find 'values' it is the interaction response
260
+ if ('values' in payload) {
261
+ if (props.values && payload.values) select.values = payload.values;
262
+ if (props.resolved && payload.resolved) select.resolved = bot.transformers.interactionDataResolved(bot, payload.resolved);
263
+ } else {
264
+ const _payload = payload;
265
+ if (props.placeholder && _payload.placeholder) select.placeholder = _payload.placeholder;
266
+ if (props.minValues && _payload.min_values) select.minValues = _payload.min_values;
267
+ if (props.maxValues && _payload.max_values) select.maxValues = _payload.max_values;
268
+ if (props.defaultValues && _payload.default_values) select.defaultValues = _payload.default_values.map((defaultValue)=>({
269
+ id: bot.transformers.snowflake(defaultValue.id),
270
+ type: defaultValue.type
271
+ }));
272
+ if (props.channelTypes && _payload.channel_types) select.channelTypes = _payload.channel_types;
273
+ if (props.disabled && _payload.disabled) select.disabled = _payload.disabled;
274
+ }
138
275
  return select;
139
276
  }
140
277
  function transformSectionComponent(bot, payload) {
@@ -180,7 +317,10 @@ function transformTextDisplayComponent(bot, payload) {
180
317
  const textDisplay = {};
181
318
  if (props.type && payload.type) textDisplay.type = payload.type;
182
319
  if (props.id && payload.id) textDisplay.id = payload.id;
183
- if (props.content && payload.content) textDisplay.content = payload.content;
320
+ // We assume that if we find 'content' it is the component
321
+ if ('content' in payload) {
322
+ if (props.content && payload.content) textDisplay.content = payload.content;
323
+ }
184
324
  return textDisplay;
185
325
  }
186
326
  function transformSeparatorComponent(bot, payload) {
@@ -192,5 +332,80 @@ function transformSeparatorComponent(bot, payload) {
192
332
  if (props.spacing && payload.spacing) separator.spacing = payload.spacing;
193
333
  return separator;
194
334
  }
335
+ function transformLabelComponent(bot, payload) {
336
+ const props = bot.transformers.desiredProperties.component;
337
+ const label = {};
338
+ if (props.type && payload.type) label.type = payload.type;
339
+ if (props.id && payload.id) label.id = payload.id;
340
+ // We assume that if we find 'label' it is the component
341
+ if ('label' in payload) {
342
+ if (props.label && payload.label) label.label = payload.label;
343
+ if (props.description && payload.description) label.description = payload.description;
344
+ }
345
+ if (props.component && payload.component) label.component = bot.transformers.component(bot, payload.component);
346
+ return label;
347
+ }
348
+ function transformFileUploadComponent(bot, payload) {
349
+ const props = bot.transformers.desiredProperties.component;
350
+ const fileUpload = {};
351
+ if (props.type && payload.type) fileUpload.type = payload.type;
352
+ if (props.id && payload.id) fileUpload.id = payload.id;
353
+ if (props.customId && payload.custom_id) fileUpload.customId = payload.custom_id;
354
+ // We assume that if we find 'values' it is the interaction response
355
+ if ('values' in payload) {
356
+ if (props.values && payload.values) fileUpload.values = payload.values;
357
+ } else {
358
+ const _payload = payload;
359
+ if (props.minValues && _payload.min_values) fileUpload.minValues = _payload.min_values;
360
+ if (props.maxValues && _payload.max_values) fileUpload.maxValues = _payload.max_values;
361
+ if (props.required && _payload.required) fileUpload.required = _payload.required;
362
+ if (props.fileTypes && _payload.file_types) fileUpload.fileTypes = _payload.file_types;
363
+ }
364
+ return fileUpload;
365
+ }
366
+ function transformRadioGroupComponent(bot, payload) {
367
+ const props = bot.transformers.desiredProperties.component;
368
+ const radioGroup = {};
369
+ if (props.type && payload.type) radioGroup.type = payload.type;
370
+ if (props.id && payload.id) radioGroup.id = payload.id;
371
+ if (props.customId && payload.custom_id) radioGroup.customId = payload.custom_id;
372
+ // We assume that if we find 'options' it is the component
373
+ if ('options' in payload) {
374
+ if (props.options && payload.options) radioGroup.options = payload.options;
375
+ if (props.required && payload.required !== undefined) radioGroup.required = payload.required;
376
+ } else {
377
+ const _payload = payload;
378
+ if (props.value) radioGroup.value = _payload.value ?? undefined;
379
+ }
380
+ return radioGroup;
381
+ }
382
+ function transformCheckboxGroupComponent(bot, payload) {
383
+ const props = bot.transformers.desiredProperties.component;
384
+ const checkboxGroup = {};
385
+ if (props.type && payload.type) checkboxGroup.type = payload.type;
386
+ if (props.id && payload.id) checkboxGroup.id = payload.id;
387
+ if (props.customId && payload.custom_id) checkboxGroup.customId = payload.custom_id;
388
+ // We assume that if we find 'options' it is the component
389
+ if ('options' in payload) {
390
+ if (props.options && payload.options) checkboxGroup.options = payload.options;
391
+ if (props.minValues && payload.min_values !== undefined) checkboxGroup.minValues = payload.min_values;
392
+ if (props.maxValues && payload.max_values !== undefined) checkboxGroup.maxValues = payload.max_values;
393
+ if (props.required && payload.required !== undefined) checkboxGroup.required = payload.required;
394
+ } else {
395
+ const _payload = payload;
396
+ if (props.values && _payload.values) checkboxGroup.values = _payload.values;
397
+ }
398
+ return checkboxGroup;
399
+ }
400
+ function transformCheckboxComponent(bot, payload) {
401
+ const props = bot.transformers.desiredProperties.component;
402
+ const checkbox = {};
403
+ if (props.type && payload.type) checkbox.type = payload.type;
404
+ if (props.id && payload.id) checkbox.id = payload.id;
405
+ if (props.customId && payload.custom_id) checkbox.customId = payload.custom_id;
406
+ if (props.value && 'value' in payload) checkbox.value = payload.value;
407
+ if (props.default && 'default' in payload) checkbox.default = payload.default;
408
+ return checkbox;
409
+ }
195
410
 
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgRGlzY29yZEFjdGlvblJvdyxcbiAgdHlwZSBEaXNjb3JkQnV0dG9uQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRGaWxlQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRNZWRpYUdhbGxlcnlDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZE1lc3NhZ2VDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFNlY3Rpb25Db21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFNlbGVjdE1lbnVDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFNlcGFyYXRvckNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkVGV4dERpc3BsYXlDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFRleHRJbnB1dENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkVGh1bWJuYWlsQ29tcG9uZW50LFxuICBNZXNzYWdlQ29tcG9uZW50VHlwZXMsXG59IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBCb3QsXG4gIENvbXBvbmVudCxcbiAgRGlzY29yZENvbnRhaW5lckNvbXBvbmVudCxcbiAgRGlzY29yZE1lZGlhR2FsbGVyeUl0ZW0sXG4gIERpc2NvcmRVbmZ1cmxlZE1lZGlhSXRlbSxcbiAgTWVkaWFHYWxsZXJ5SXRlbSxcbiAgVW5mdXJsZWRNZWRpYUl0ZW0sXG59IGZyb20gJy4uL2luZGV4LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudCk6IENvbXBvbmVudCB7XG4gIGxldCBjb21wb25lbnQ6IENvbXBvbmVudFxuXG4gIC8vIFRoaXMgc3dpdGNoIGlzIGV4aGF1c3RpdmUsIHNvIHdlIGRvbnQgbmVlZCB0aGUgZGVmYXVsdCBjYXNlIGFuZCBUUyBkb2VzIG5vdCBlcnJvciBvdXQgZm9yIHRoZSB1bi1pbml0aWFsaXplZCBjb21wb25lbnQgdmFyaWFibGVcbiAgc3dpdGNoIChwYXlsb2FkLnR5cGUpIHtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5BY3Rpb25Sb3c6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1BY3Rpb25Sb3coYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5CdXR0b246XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1CdXR0b25Db21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5Db250YWluZXI6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1Db250YWluZXJDb21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5UZXh0SW5wdXQ6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5TdHJpbmdTZWxlY3Q6XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuVXNlclNlbGVjdDpcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5Sb2xlU2VsZWN0OlxuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLk1lbnRpb25hYmxlU2VsZWN0OlxuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkNoYW5uZWxTZWxlY3Q6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1TZWxlY3RNZW51Q29tcG9uZW50KGJvdCwgcGF5bG9hZClcbiAgICAgIGJyZWFrXG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuU2VjdGlvbjpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVNlY3Rpb25Db21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5UaHVtYm5haWw6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1UaHVtYm5haWxDb21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5NZWRpYUdhbGxlcnk6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1NZWRpYUdhbGxlcnlDb21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5GaWxlOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtRmlsZUNvbXBvbmVudChib3QsIHBheWxvYWQpXG4gICAgICBicmVha1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlNlcGFyYXRvcjpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVNlcGFyYXRvckNvbXBvbmVudChib3QsIHBheWxvYWQpXG4gICAgICBicmVha1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlRleHREaXNwbGF5OlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtVGV4dERpc3BsYXlDb21wb25lbnQoYm90LCBwYXlsb2FkKVxuICAgICAgYnJlYWtcbiAgfVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLmNvbXBvbmVudChib3QsIHBheWxvYWQsIGNvbXBvbmVudClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVVuZnVybGVkTWVkaWFJdGVtKGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkVW5mdXJsZWRNZWRpYUl0ZW0pOiBVbmZ1cmxlZE1lZGlhSXRlbSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy51bmZ1cmxlZE1lZGlhSXRlbVxuICBjb25zdCBtZWRpYUl0ZW0gPSB7fSBhcyBVbmZ1cmxlZE1lZGlhSXRlbVxuXG4gIGlmIChwcm9wcy51cmwgJiYgcGF5bG9hZC51cmwpIG1lZGlhSXRlbS51cmwgPSBwYXlsb2FkLnVybFxuICBpZiAocHJvcHMucHJveHlVcmwgJiYgcGF5bG9hZC5wcm94eV91cmwpIG1lZGlhSXRlbS5wcm94eVVybCA9IHBheWxvYWQucHJveHlfdXJsXG4gIGlmIChwcm9wcy5oZWlnaHQgJiYgcGF5bG9hZC5oZWlnaHQpIG1lZGlhSXRlbS5oZWlnaHQgPSBwYXlsb2FkLmhlaWdodFxuICBpZiAocHJvcHMud2lkdGggJiYgcGF5bG9hZC53aWR0aCkgbWVkaWFJdGVtLndpZHRoID0gcGF5bG9hZC53aWR0aFxuICBpZiAocHJvcHMuY29udGVudFR5cGUgJiYgcGF5bG9hZC5jb250ZW50X3R5cGUpIG1lZGlhSXRlbS5jb250ZW50VHlwZSA9IHBheWxvYWQuY29udGVudF90eXBlXG4gIGlmIChwcm9wcy5hdHRhY2htZW50SWQgJiYgcGF5bG9hZC5hdHRhY2htZW50X2lkKSBtZWRpYUl0ZW0uYXR0YWNobWVudElkID0gYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UocGF5bG9hZC5hdHRhY2htZW50X2lkKVxuXG4gIHJldHVybiBib3QudHJhbnNmb3JtZXJzLmN1c3RvbWl6ZXJzLnVuZnVybGVkTWVkaWFJdGVtKGJvdCwgcGF5bG9hZCwgbWVkaWFJdGVtKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtTWVkaWFHYWxsZXJ5SXRlbShib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZE1lZGlhR2FsbGVyeUl0ZW0pOiBNZWRpYUdhbGxlcnlJdGVtIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLm1lZGlhR2FsbGVyeUl0ZW1cbiAgY29uc3QgZ2FsbGVyeUl0ZW0gPSB7fSBhcyBNZWRpYUdhbGxlcnlJdGVtXG5cbiAgaWYgKHByb3BzLm1lZGlhICYmIHBheWxvYWQubWVkaWEpIGdhbGxlcnlJdGVtLm1lZGlhID0gYm90LnRyYW5zZm9ybWVycy51bmZ1cmxlZE1lZGlhSXRlbShib3QsIHBheWxvYWQubWVkaWEpXG4gIGlmIChwcm9wcy5kZXNjcmlwdGlvbiAmJiBwYXlsb2FkLmRlc2NyaXB0aW9uKSBnYWxsZXJ5SXRlbS5kZXNjcmlwdGlvbiA9IHBheWxvYWQuZGVzY3JpcHRpb25cbiAgaWYgKHByb3BzLnNwb2lsZXIgJiYgcGF5bG9hZC5zcG9pbGVyKSBnYWxsZXJ5SXRlbS5zcG9pbGVyID0gcGF5bG9hZC5zcG9pbGVyXG5cbiAgcmV0dXJuIGJvdC50cmFuc2Zvcm1lcnMuY3VzdG9taXplcnMubWVkaWFHYWxsZXJ5SXRlbShib3QsIHBheWxvYWQsIGdhbGxlcnlJdGVtKVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1BY3Rpb25Sb3coYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRBY3Rpb25Sb3cpOiBDb21wb25lbnQge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50XG4gIGNvbnN0IGFjdGlvblJvdyA9IHt9IGFzIENvbXBvbmVudFxuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgYWN0aW9uUm93LnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGFjdGlvblJvdy5pZCA9IHBheWxvYWQuaWRcbiAgaWYgKHByb3BzLmNvbXBvbmVudHMgJiYgcGF5bG9hZC5jb21wb25lbnRzKSBhY3Rpb25Sb3cuY29tcG9uZW50cyA9IHBheWxvYWQuY29tcG9uZW50cy5tYXAoKGNvbXBvbmVudCkgPT4gYm90LnRyYW5zZm9ybWVycy5jb21wb25lbnQoYm90LCBjb21wb25lbnQpKVxuXG4gIHJldHVybiBhY3Rpb25Sb3dcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQ29udGFpbmVyQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkQ29udGFpbmVyQ29tcG9uZW50KTogQ29tcG9uZW50IHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudFxuICBjb25zdCBjb250YWluZXIgPSB7fSBhcyBDb21wb25lbnRcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGNvbnRhaW5lci50eXBlID0gcGF5bG9hZC50eXBlXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBjb250YWluZXIuaWQgPSBwYXlsb2FkLmlkXG4gIGlmIChwcm9wcy5hY2NlbnRDb2xvciAmJiBwYXlsb2FkLmFjY2VudF9jb2xvcikgY29udGFpbmVyLmFjY2VudENvbG9yID0gcGF5bG9hZC5hY2NlbnRfY29sb3JcbiAgaWYgKHByb3BzLnNwb2lsZXIgJiYgcGF5bG9hZC5zcG9pbGVyKSBjb250YWluZXIuc3BvaWxlciA9IHBheWxvYWQuc3BvaWxlclxuICBpZiAocHJvcHMuY29tcG9uZW50cyAmJiBwYXlsb2FkLmNvbXBvbmVudHMpIGNvbnRhaW5lci5jb21wb25lbnRzID0gcGF5bG9hZC5jb21wb25lbnRzLm1hcCgoY29tcG9uZW50KSA9PiBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIGNvbXBvbmVudCkpXG5cbiAgcmV0dXJuIGNvbnRhaW5lclxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1CdXR0b25Db21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRCdXR0b25Db21wb25lbnQpOiBDb21wb25lbnQge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50XG4gIGNvbnN0IGJ1dHRvbiA9IHt9IGFzIENvbXBvbmVudFxuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgYnV0dG9uLnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGJ1dHRvbi5pZCA9IHBheWxvYWQuaWRcbiAgaWYgKHByb3BzLmxhYmVsICYmIHBheWxvYWQubGFiZWwpIGJ1dHRvbi5sYWJlbCA9IHBheWxvYWQubGFiZWxcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBidXR0b24uY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZFxuICBpZiAocHJvcHMuc3R5bGUgJiYgcGF5bG9hZC5zdHlsZSkgYnV0dG9uLnN0eWxlID0gcGF5bG9hZC5zdHlsZVxuICBpZiAocHJvcHMuZW1vamkgJiYgcGF5bG9hZC5lbW9qaSkgYnV0dG9uLmVtb2ppID0gYm90LnRyYW5zZm9ybWVycy5lbW9qaShib3QsIHBheWxvYWQuZW1vamkpXG4gIGlmIChwcm9wcy51cmwgJiYgcGF5bG9hZC51cmwpIGJ1dHRvbi51cmwgPSBwYXlsb2FkLnVybFxuICBpZiAocHJvcHMuZGlzYWJsZWQgJiYgcGF5bG9hZC5kaXNhYmxlZCkgYnV0dG9uLmRpc2FibGVkID0gcGF5bG9hZC5kaXNhYmxlZFxuICBpZiAocHJvcHMuc2t1SWQgJiYgcGF5bG9hZC5za3VfaWQpIGJ1dHRvbi5za3VJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuc2t1X2lkKVxuXG4gIHJldHVybiBidXR0b25cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtSW5wdXRUZXh0Q29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBEaXNjb3JkVGV4dElucHV0Q29tcG9uZW50KTogQ29tcG9uZW50IHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudFxuICBjb25zdCBpbnB1dCA9IHt9IGFzIENvbXBvbmVudFxuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgaW5wdXQudHlwZSA9IHBheWxvYWQudHlwZVxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgaW5wdXQuaWQgPSBwYXlsb2FkLmlkXG4gIGlmIChwcm9wcy5zdHlsZSAmJiBwYXlsb2FkLnN0eWxlKSBpbnB1dC5zdHlsZSA9IHBheWxvYWQuc3R5bGVcbiAgaWYgKHByb3BzLnJlcXVpcmVkICYmIHBheWxvYWQucmVxdWlyZWQpIGlucHV0LnJlcXVpcmVkID0gcGF5bG9hZC5yZXF1aXJlZFxuICBpZiAocHJvcHMuY3VzdG9tSWQgJiYgcGF5bG9hZC5jdXN0b21faWQpIGlucHV0LmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWRcbiAgaWYgKHByb3BzLmxhYmVsICYmIHBheWxvYWQubGFiZWwpIGlucHV0LmxhYmVsID0gcGF5bG9hZC5sYWJlbFxuICBpZiAocHJvcHMucGxhY2Vob2xkZXIgJiYgcGF5bG9hZC5wbGFjZWhvbGRlcikgaW5wdXQucGxhY2Vob2xkZXIgPSBwYXlsb2FkLnBsYWNlaG9sZGVyXG4gIGlmIChwcm9wcy5taW5MZW5ndGggJiYgcGF5bG9hZC5taW5fbGVuZ3RoKSBpbnB1dC5taW5MZW5ndGggPSBwYXlsb2FkLm1pbl9sZW5ndGhcbiAgaWYgKHByb3BzLm1heExlbmd0aCAmJiBwYXlsb2FkLm1heF9sZW5ndGgpIGlucHV0Lm1heExlbmd0aCA9IHBheWxvYWQubWF4X2xlbmd0aFxuICBpZiAocHJvcHMudmFsdWUgJiYgcGF5bG9hZC52YWx1ZSkgaW5wdXQudmFsdWUgPSBwYXlsb2FkLnZhbHVlXG5cbiAgcmV0dXJuIGlucHV0XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVNlbGVjdE1lbnVDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRTZWxlY3RNZW51Q29tcG9uZW50KTogQ29tcG9uZW50IHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudFxuICBjb25zdCBzZWxlY3QgPSB7fSBhcyBDb21wb25lbnRcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlbGVjdC50eXBlID0gcGF5bG9hZC50eXBlXG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBzZWxlY3QuaWQgPSBwYXlsb2FkLmlkXG4gIGlmIChwcm9wcy5jdXN0b21JZCAmJiBwYXlsb2FkLmN1c3RvbV9pZCkgc2VsZWN0LmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWRcbiAgaWYgKHByb3BzLnBsYWNlaG9sZGVyICYmIHBheWxvYWQucGxhY2Vob2xkZXIpIHNlbGVjdC5wbGFjZWhvbGRlciA9IHBheWxvYWQucGxhY2Vob2xkZXJcbiAgaWYgKHByb3BzLm1pblZhbHVlcyAmJiBwYXlsb2FkLm1pbl92YWx1ZXMpIHNlbGVjdC5taW5WYWx1ZXMgPSBwYXlsb2FkLm1pbl92YWx1ZXNcbiAgaWYgKHByb3BzLm1heFZhbHVlcyAmJiBwYXlsb2FkLm1heF92YWx1ZXMpIHNlbGVjdC5tYXhWYWx1ZXMgPSBwYXlsb2FkLm1heF92YWx1ZXNcbiAgaWYgKHByb3BzLmRlZmF1bHRWYWx1ZXMgJiYgcGF5bG9hZC5kZWZhdWx0X3ZhbHVlcylcbiAgICBzZWxlY3QuZGVmYXVsdFZhbHVlcyA9IHBheWxvYWQuZGVmYXVsdF92YWx1ZXMubWFwKChkZWZhdWx0VmFsdWUpID0+ICh7XG4gICAgICBpZDogYm90LnRyYW5zZm9ybWVycy5zbm93Zmxha2UoZGVmYXVsdFZhbHVlLmlkKSxcbiAgICAgIHR5cGU6IGRlZmF1bHRWYWx1ZS50eXBlLFxuICAgIH0pKVxuICBpZiAocHJvcHMuY2hhbm5lbFR5cGVzICYmIHBheWxvYWQuY2hhbm5lbF90eXBlcykgc2VsZWN0LmNoYW5uZWxUeXBlcyA9IHBheWxvYWQuY2hhbm5lbF90eXBlc1xuICBpZiAocHJvcHMub3B0aW9ucyAmJiBwYXlsb2FkLm9wdGlvbnMpXG4gICAgc2VsZWN0Lm9wdGlvbnMgPSBwYXlsb2FkLm9wdGlvbnMubWFwKChvcHRpb24pID0+ICh7XG4gICAgICBsYWJlbDogb3B0aW9uLmxhYmVsLFxuICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb24uZGVzY3JpcHRpb24sXG4gICAgICBlbW9qaTogb3B0aW9uLmVtb2ppXG4gICAgICAgID8ge1xuICAgICAgICAgICAgaWQ6IG9wdGlvbi5lbW9qaS5pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKG9wdGlvbi5lbW9qaS5pZCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBuYW1lOiBvcHRpb24uZW1vamkubmFtZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICBhbmltYXRlZDogb3B0aW9uLmVtb2ppLmFuaW1hdGVkLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBkZWZhdWx0OiBvcHRpb24uZGVmYXVsdCxcbiAgICB9KSlcbiAgaWYgKHByb3BzLmRpc2FibGVkICYmIHBheWxvYWQuZGlzYWJsZWQpIHNlbGVjdC5kaXNhYmxlZCA9IHBheWxvYWQuZGlzYWJsZWRcblxuICByZXR1cm4gc2VsZWN0XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVNlY3Rpb25Db21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRTZWN0aW9uQ29tcG9uZW50KTogQ29tcG9uZW50IHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudFxuICBjb25zdCBzZWN0aW9uID0ge30gYXMgQ29tcG9uZW50XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBzZWN0aW9uLnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHNlY3Rpb24uaWQgPSBwYXlsb2FkLmlkXG4gIGlmIChwcm9wcy5jb21wb25lbnRzICYmIHBheWxvYWQuY29tcG9uZW50cykgc2VjdGlvbi5jb21wb25lbnRzID0gcGF5bG9hZC5jb21wb25lbnRzLm1hcCgoY29tcG9uZW50KSA9PiBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIGNvbXBvbmVudCkpXG4gIGlmIChwcm9wcy5hY2Nlc3NvcnkgJiYgcGF5bG9hZC5hY2Nlc3NvcnkpIHNlY3Rpb24uYWNjZXNzb3J5ID0gYm90LnRyYW5zZm9ybWVycy5jb21wb25lbnQoYm90LCBwYXlsb2FkLmFjY2Vzc29yeSlcblxuICByZXR1cm4gc2VjdGlvblxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1UaHVtYm5haWxDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRUaHVtYm5haWxDb21wb25lbnQpOiBDb21wb25lbnQge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50XG4gIGNvbnN0IHRodW1ibmFpbCA9IHt9IGFzIENvbXBvbmVudFxuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgdGh1bWJuYWlsLnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHRodW1ibmFpbC5pZCA9IHBheWxvYWQuaWRcbiAgaWYgKHByb3BzLm1lZGlhICYmIHBheWxvYWQubWVkaWEpIHRodW1ibmFpbC5tZWRpYSA9IGJvdC50cmFuc2Zvcm1lcnMudW5mdXJsZWRNZWRpYUl0ZW0oYm90LCBwYXlsb2FkLm1lZGlhKVxuICBpZiAocHJvcHMuZGVzY3JpcHRpb24gJiYgcGF5bG9hZC5kZXNjcmlwdGlvbikgdGh1bWJuYWlsLmRlc2NyaXB0aW9uID0gcGF5bG9hZC5kZXNjcmlwdGlvblxuICBpZiAocHJvcHMuc3BvaWxlciAmJiBwYXlsb2FkLnNwb2lsZXIpIHRodW1ibmFpbC5zcG9pbGVyID0gcGF5bG9hZC5zcG9pbGVyXG5cbiAgcmV0dXJuIHRodW1ibmFpbFxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1NZWRpYUdhbGxlcnlDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRNZWRpYUdhbGxlcnlDb21wb25lbnQpOiBDb21wb25lbnQge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50XG4gIGNvbnN0IG1lZGlhR2FsbGVyeSA9IHt9IGFzIENvbXBvbmVudFxuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgbWVkaWFHYWxsZXJ5LnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIG1lZGlhR2FsbGVyeS5pZCA9IHBheWxvYWQuaWRcbiAgaWYgKHByb3BzLml0ZW1zICYmIHBheWxvYWQuaXRlbXMpIG1lZGlhR2FsbGVyeS5pdGVtcyA9IHBheWxvYWQuaXRlbXMubWFwKChpdGVtKSA9PiBib3QudHJhbnNmb3JtZXJzLm1lZGlhR2FsbGVyeUl0ZW0oYm90LCBpdGVtKSlcblxuICByZXR1cm4gbWVkaWFHYWxsZXJ5XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUZpbGVDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRGaWxlQ29tcG9uZW50KTogQ29tcG9uZW50IHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudFxuICBjb25zdCBmaWxlID0ge30gYXMgQ29tcG9uZW50XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBmaWxlLnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGZpbGUuaWQgPSBwYXlsb2FkLmlkXG4gIGlmIChwcm9wcy5maWxlICYmIHBheWxvYWQuZmlsZSkgZmlsZS5maWxlID0gYm90LnRyYW5zZm9ybWVycy51bmZ1cmxlZE1lZGlhSXRlbShib3QsIHBheWxvYWQuZmlsZSlcbiAgaWYgKHByb3BzLnNwb2lsZXIgJiYgcGF5bG9hZC5zcG9pbGVyKSBmaWxlLnNwb2lsZXIgPSBwYXlsb2FkLnNwb2lsZXJcbiAgaWYgKHByb3BzLm5hbWUgJiYgcGF5bG9hZC5uYW1lKSBmaWxlLm5hbWUgPSBwYXlsb2FkLm5hbWVcbiAgaWYgKHByb3BzLnNpemUgJiYgcGF5bG9hZC5zaXplKSBmaWxlLnNpemUgPSBwYXlsb2FkLnNpemVcblxuICByZXR1cm4gZmlsZVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1UZXh0RGlzcGxheUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogRGlzY29yZFRleHREaXNwbGF5Q29tcG9uZW50KTogQ29tcG9uZW50IHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudFxuICBjb25zdCB0ZXh0RGlzcGxheSA9IHt9IGFzIENvbXBvbmVudFxuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgdGV4dERpc3BsYXkudHlwZSA9IHBheWxvYWQudHlwZVxuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgdGV4dERpc3BsYXkuaWQgPSBwYXlsb2FkLmlkXG4gIGlmIChwcm9wcy5jb250ZW50ICYmIHBheWxvYWQuY29udGVudCkgdGV4dERpc3BsYXkuY29udGVudCA9IHBheWxvYWQuY29udGVudFxuXG4gIHJldHVybiB0ZXh0RGlzcGxheVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1TZXBhcmF0b3JDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IERpc2NvcmRTZXBhcmF0b3JDb21wb25lbnQpOiBDb21wb25lbnQge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50XG4gIGNvbnN0IHNlcGFyYXRvciA9IHt9IGFzIENvbXBvbmVudFxuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgc2VwYXJhdG9yLnR5cGUgPSBwYXlsb2FkLnR5cGVcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHNlcGFyYXRvci5pZCA9IHBheWxvYWQuaWRcbiAgaWYgKHByb3BzLmRpdmlkZXIgJiYgcGF5bG9hZC5kaXZpZGVyKSBzZXBhcmF0b3IuZGl2aWRlciA9IHBheWxvYWQuZGl2aWRlclxuICBpZiAocHJvcHMuc3BhY2luZyAmJiBwYXlsb2FkLnNwYWNpbmcpIHNlcGFyYXRvci5zcGFjaW5nID0gcGF5bG9hZC5zcGFjaW5nXG5cbiAgcmV0dXJuIHNlcGFyYXRvclxufVxuIl0sIm5hbWVzIjpbIk1lc3NhZ2VDb21wb25lbnRUeXBlcyIsInRyYW5zZm9ybUNvbXBvbmVudCIsImJvdCIsInBheWxvYWQiLCJjb21wb25lbnQiLCJ0eXBlIiwiQWN0aW9uUm93IiwidHJhbnNmb3JtQWN0aW9uUm93IiwiQnV0dG9uIiwidHJhbnNmb3JtQnV0dG9uQ29tcG9uZW50IiwiQ29udGFpbmVyIiwidHJhbnNmb3JtQ29udGFpbmVyQ29tcG9uZW50IiwiVGV4dElucHV0IiwidHJhbnNmb3JtSW5wdXRUZXh0Q29tcG9uZW50IiwiU3RyaW5nU2VsZWN0IiwiVXNlclNlbGVjdCIsIlJvbGVTZWxlY3QiLCJNZW50aW9uYWJsZVNlbGVjdCIsIkNoYW5uZWxTZWxlY3QiLCJ0cmFuc2Zvcm1TZWxlY3RNZW51Q29tcG9uZW50IiwiU2VjdGlvbiIsInRyYW5zZm9ybVNlY3Rpb25Db21wb25lbnQiLCJUaHVtYm5haWwiLCJ0cmFuc2Zvcm1UaHVtYm5haWxDb21wb25lbnQiLCJNZWRpYUdhbGxlcnkiLCJ0cmFuc2Zvcm1NZWRpYUdhbGxlcnlDb21wb25lbnQiLCJGaWxlIiwidHJhbnNmb3JtRmlsZUNvbXBvbmVudCIsIlNlcGFyYXRvciIsInRyYW5zZm9ybVNlcGFyYXRvckNvbXBvbmVudCIsIlRleHREaXNwbGF5IiwidHJhbnNmb3JtVGV4dERpc3BsYXlDb21wb25lbnQiLCJ0cmFuc2Zvcm1lcnMiLCJjdXN0b21pemVycyIsInRyYW5zZm9ybVVuZnVybGVkTWVkaWFJdGVtIiwicHJvcHMiLCJkZXNpcmVkUHJvcGVydGllcyIsInVuZnVybGVkTWVkaWFJdGVtIiwibWVkaWFJdGVtIiwidXJsIiwicHJveHlVcmwiLCJwcm94eV91cmwiLCJoZWlnaHQiLCJ3aWR0aCIsImNvbnRlbnRUeXBlIiwiY29udGVudF90eXBlIiwiYXR0YWNobWVudElkIiwiYXR0YWNobWVudF9pZCIsInNub3dmbGFrZSIsInRyYW5zZm9ybU1lZGlhR2FsbGVyeUl0ZW0iLCJtZWRpYUdhbGxlcnlJdGVtIiwiZ2FsbGVyeUl0ZW0iLCJtZWRpYSIsImRlc2NyaXB0aW9uIiwic3BvaWxlciIsImFjdGlvblJvdyIsImlkIiwiY29tcG9uZW50cyIsIm1hcCIsImNvbnRhaW5lciIsImFjY2VudENvbG9yIiwiYWNjZW50X2NvbG9yIiwiYnV0dG9uIiwibGFiZWwiLCJjdXN0b21JZCIsImN1c3RvbV9pZCIsInN0eWxlIiwiZW1vamkiLCJkaXNhYmxlZCIsInNrdUlkIiwic2t1X2lkIiwiaW5wdXQiLCJyZXF1aXJlZCIsInBsYWNlaG9sZGVyIiwibWluTGVuZ3RoIiwibWluX2xlbmd0aCIsIm1heExlbmd0aCIsIm1heF9sZW5ndGgiLCJ2YWx1ZSIsInNlbGVjdCIsIm1pblZhbHVlcyIsIm1pbl92YWx1ZXMiLCJtYXhWYWx1ZXMiLCJtYXhfdmFsdWVzIiwiZGVmYXVsdFZhbHVlcyIsImRlZmF1bHRfdmFsdWVzIiwiZGVmYXVsdFZhbHVlIiwiY2hhbm5lbFR5cGVzIiwiY2hhbm5lbF90eXBlcyIsIm9wdGlvbnMiLCJvcHRpb24iLCJ1bmRlZmluZWQiLCJuYW1lIiwiYW5pbWF0ZWQiLCJkZWZhdWx0Iiwic2VjdGlvbiIsImFjY2Vzc29yeSIsInRodW1ibmFpbCIsIm1lZGlhR2FsbGVyeSIsIml0ZW1zIiwiaXRlbSIsImZpbGUiLCJzaXplIiwidGV4dERpc3BsYXkiLCJjb250ZW50Iiwic2VwYXJhdG9yIiwiZGl2aWRlciIsInNwYWNpbmciXSwibWFwcGluZ3MiOiJBQUFBLFNBWUVBLHFCQUFxQixRQUNoQixvQkFBbUI7QUFXMUIsT0FBTyxTQUFTQyxtQkFBbUJDLEdBQVEsRUFBRUMsT0FBZ0M7SUFDM0UsSUFBSUM7SUFFSixrSUFBa0k7SUFDbEksT0FBUUQsUUFBUUUsSUFBSTtRQUNsQixLQUFLTCxzQkFBc0JNLFNBQVM7WUFDbENGLFlBQVlHLG1CQUFtQkwsS0FBS0M7WUFDcEM7UUFDRixLQUFLSCxzQkFBc0JRLE1BQU07WUFDL0JKLFlB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
411
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm1lcnMvY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgRGlzY29yZEFjdGlvblJvdyxcbiAgdHlwZSBEaXNjb3JkQnV0dG9uQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRDaGFubmVsU2VsZWN0Q29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRDaGFubmVsU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbCxcbiAgdHlwZSBEaXNjb3JkQ2hlY2tib3hDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZENoZWNrYm94R3JvdXBDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZENoZWNrYm94R3JvdXBJbnRlcmFjdGlvblJlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRDaGVja2JveEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZENvbnRhaW5lckNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkRmlsZUNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkRmlsZVVwbG9hZEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZExhYmVsQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRMYWJlbEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZE1lZGlhR2FsbGVyeUNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkTWVkaWFHYWxsZXJ5SXRlbSxcbiAgdHlwZSBEaXNjb3JkTWVudGlvbmFibGVTZWxlY3RDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZE1lbnRpb25hYmxlU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbCxcbiAgdHlwZSBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudEZyb21Nb2RhbEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZFJhZGlvR3JvdXBDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFJhZGlvR3JvdXBJbnRlcmFjdGlvblJlc3BvbnNlLFxuICB0eXBlIERpc2NvcmRSb2xlU2VsZWN0Q29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRSb2xlU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbCxcbiAgdHlwZSBEaXNjb3JkU2VjdGlvbkNvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkU2VwYXJhdG9yQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRTdHJpbmdTZWxlY3RDb21wb25lbnQsXG4gIHR5cGUgRGlzY29yZFN0cmluZ1NlbGVjdEludGVyYWN0aW9uUmVzcG9uc2VGcm9tTW9kYWwsXG4gIHR5cGUgRGlzY29yZFRleHREaXNwbGF5Q29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRUZXh0RGlzcGxheUludGVyYWN0aW9uUmVzcG9uc2UsXG4gIHR5cGUgRGlzY29yZFRleHRJbnB1dENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkVGV4dElucHV0SW50ZXJhY3Rpb25SZXNwb25zZSxcbiAgdHlwZSBEaXNjb3JkVGh1bWJuYWlsQ29tcG9uZW50LFxuICB0eXBlIERpc2NvcmRVbmZ1cmxlZE1lZGlhSXRlbSxcbiAgdHlwZSBEaXNjb3JkVXNlclNlbGVjdENvbXBvbmVudCxcbiAgdHlwZSBEaXNjb3JkVXNlclNlbGVjdEludGVyYWN0aW9uUmVzcG9uc2VGcm9tTW9kYWwsXG4gIE1lc3NhZ2VDb21wb25lbnRUeXBlcyxcbn0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBCb3QgfSBmcm9tICcuLi9ib3QuanMnO1xuaW1wb3J0IHR5cGUgeyBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yLCBTZXR1cERlc2lyZWRQcm9wcywgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMgfSBmcm9tICcuLi9kZXNpcmVkUHJvcGVydGllcy5qcyc7XG5pbXBvcnQgeyBjYWxsQ3VzdG9taXplciB9IGZyb20gJy4uL3RyYW5zZm9ybWVycy5qcyc7XG5pbXBvcnQgeyBUb2dnbGVCaXRmaWVsZCB9IGZyb20gJy4vdG9nZ2xlcy9Ub2dnbGVCaXRmaWVsZC5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudCwgTWVkaWFHYWxsZXJ5SXRlbSwgVW5mdXJsZWRNZWRpYUl0ZW0gfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUNvbXBvbmVudChcbiAgYm90OiBCb3QsXG4gIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZE1lc3NhZ2VDb21wb25lbnQgfCBEaXNjb3JkTWVzc2FnZUNvbXBvbmVudEZyb21Nb2RhbEludGVyYWN0aW9uUmVzcG9uc2U+LFxuICBleHRyYT86IHsgcGFydGlhbD86IGJvb2xlYW4gfSxcbikge1xuICBsZXQgY29tcG9uZW50OiBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICAvLyBUaGVyZSdzIG5vdGhpbmcgdG8gZG8gd2l0aCBhIGNvbXBvbmVudCB3aXRob3V0IGEgdHlwZSwgYXMgaXQgbWVhbnMgYW4gaXNzdWUgb24gRGlzY29yZCwgc28gd2UganVzdCB0aHJvdyBhbiBlcnJvclxuICBpZiAoIXBheWxvYWQudHlwZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgW0Rpc2NvcmRlbm9dIFJlY2VpdmVkIGEgY29tcG9uZW50IHBheWxvYWQgd2l0aG91dCBhIHR5cGUgaW4gdGhlIGNvbXBvbmVudCB0cmFuc2Zvcm1lci5gKTtcbiAgfVxuXG4gIC8vIFRoaXMgc3dpdGNoIGlzIGV4aGF1c3RpdmUsIHNvIHdlIGRvbnQgbmVlZCB0aGUgZGVmYXVsdCBjYXNlIGFuZCBUUyBkb2VzIG5vdCBlcnJvciBvdXQgZm9yIHRoZSB1bi1pbml0aWFsaXplZCBjb21wb25lbnQgdmFyaWFibGVcbiAgc3dpdGNoIChwYXlsb2FkLnR5cGUpIHtcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5BY3Rpb25Sb3c6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1BY3Rpb25Sb3coYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkJ1dHRvbjpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUJ1dHRvbkNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuQ29udGFpbmVyOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtQ29udGFpbmVyQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5UZXh0SW5wdXQ6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlN0cmluZ1NlbGVjdDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVN0cmluZ1NlbGVjdE1lbnVDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlVzZXJTZWxlY3Q6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1Vc2VyU2VsZWN0TWVudUNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuUm9sZVNlbGVjdDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybVJvbGVTZWxlY3RNZW51Q29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5NZW50aW9uYWJsZVNlbGVjdDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybU1lbnRpb25hYmxlU2VsZWN0TWVudUNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuQ2hhbm5lbFNlbGVjdDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUNoYW5uZWxTZWxlY3RNZW51Q29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5TZWN0aW9uOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtU2VjdGlvbkNvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuVGh1bWJuYWlsOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtVGh1bWJuYWlsQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5NZWRpYUdhbGxlcnk6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1NZWRpYUdhbGxlcnlDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkZpbGU6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1GaWxlQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5TZXBhcmF0b3I6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1TZXBhcmF0b3JDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLlRleHREaXNwbGF5OlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtVGV4dERpc3BsYXlDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkxhYmVsOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtTGFiZWxDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkZpbGVVcGxvYWQ6XG4gICAgICBjb21wb25lbnQgPSB0cmFuc2Zvcm1GaWxlVXBsb2FkQ29tcG9uZW50KGJvdCwgcGF5bG9hZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1lc3NhZ2VDb21wb25lbnRUeXBlcy5SYWRpb0dyb3VwOlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtUmFkaW9Hcm91cENvbXBvbmVudChib3QsIHBheWxvYWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXNzYWdlQ29tcG9uZW50VHlwZXMuQ2hlY2tib3hHcm91cDpcbiAgICAgIGNvbXBvbmVudCA9IHRyYW5zZm9ybUNoZWNrYm94R3JvdXBDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWVzc2FnZUNvbXBvbmVudFR5cGVzLkNoZWNrYm94OlxuICAgICAgY29tcG9uZW50ID0gdHJhbnNmb3JtQ2hlY2tib3hDb21wb25lbnQoYm90LCBwYXlsb2FkKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIGNhbGxDdXN0b21pemVyKCdjb21wb25lbnQnLCBib3QsIHBheWxvYWQsIGNvbXBvbmVudCwge1xuICAgIHBhcnRpYWw6IGV4dHJhPy5wYXJ0aWFsID8/IGZhbHNlLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVVuZnVybGVkTWVkaWFJdGVtKGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRVbmZ1cmxlZE1lZGlhSXRlbT4sIGV4dHJhPzogeyBwYXJ0aWFsPzogYm9vbGVhbiB9KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy51bmZ1cmxlZE1lZGlhSXRlbTtcbiAgY29uc3QgbWVkaWFJdGVtID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8VW5mdXJsZWRNZWRpYUl0ZW0sIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudXJsICYmIHBheWxvYWQudXJsKSBtZWRpYUl0ZW0udXJsID0gcGF5bG9hZC51cmw7XG4gIGlmIChwcm9wcy5wcm94eVVybCAmJiBwYXlsb2FkLnByb3h5X3VybCkgbWVkaWFJdGVtLnByb3h5VXJsID0gcGF5bG9hZC5wcm94eV91cmw7XG4gIGlmIChwcm9wcy5oZWlnaHQgJiYgcGF5bG9hZC5oZWlnaHQpIG1lZGlhSXRlbS5oZWlnaHQgPSBwYXlsb2FkLmhlaWdodDtcbiAgaWYgKHByb3BzLndpZHRoICYmIHBheWxvYWQud2lkdGgpIG1lZGlhSXRlbS53aWR0aCA9IHBheWxvYWQud2lkdGg7XG4gIGlmIChwcm9wcy5wbGFjZWhvbGRlciAmJiBwYXlsb2FkLnBsYWNlaG9sZGVyKSBtZWRpYUl0ZW0ucGxhY2Vob2xkZXIgPSBwYXlsb2FkLnBsYWNlaG9sZGVyO1xuICBpZiAocHJvcHMucGxhY2Vob2xkZXJWZXJzaW9uICYmIHBheWxvYWQucGxhY2Vob2xkZXJfdmVyc2lvbikgbWVkaWFJdGVtLnBsYWNlaG9sZGVyVmVyc2lvbiA9IHBheWxvYWQucGxhY2Vob2xkZXJfdmVyc2lvbjtcbiAgaWYgKHByb3BzLmNvbnRlbnRUeXBlICYmIHBheWxvYWQuY29udGVudF90eXBlKSBtZWRpYUl0ZW0uY29udGVudFR5cGUgPSBwYXlsb2FkLmNvbnRlbnRfdHlwZTtcbiAgaWYgKHByb3BzLmZsYWdzICYmIHBheWxvYWQuZmxhZ3MpIG1lZGlhSXRlbS5mbGFncyA9IG5ldyBUb2dnbGVCaXRmaWVsZChwYXlsb2FkLmZsYWdzKTtcbiAgaWYgKHByb3BzLmF0dGFjaG1lbnRJZCAmJiBwYXlsb2FkLmF0dGFjaG1lbnRfaWQpIG1lZGlhSXRlbS5hdHRhY2htZW50SWQgPSBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShwYXlsb2FkLmF0dGFjaG1lbnRfaWQpO1xuXG4gIHJldHVybiBjYWxsQ3VzdG9taXplcigndW5mdXJsZWRNZWRpYUl0ZW0nLCBib3QsIHBheWxvYWQsIG1lZGlhSXRlbSwge1xuICAgIHBhcnRpYWw6IGV4dHJhPy5wYXJ0aWFsID8/IGZhbHNlLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1lZGlhR2FsbGVyeUl0ZW0oYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZE1lZGlhR2FsbGVyeUl0ZW0+LCBleHRyYT86IHsgcGFydGlhbD86IGJvb2xlYW4gfSkge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMubWVkaWFHYWxsZXJ5SXRlbTtcbiAgY29uc3QgZ2FsbGVyeUl0ZW0gPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxNZWRpYUdhbGxlcnlJdGVtLCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLm1lZGlhICYmIHBheWxvYWQubWVkaWEpIGdhbGxlcnlJdGVtLm1lZGlhID0gYm90LnRyYW5zZm9ybWVycy51bmZ1cmxlZE1lZGlhSXRlbShib3QsIHBheWxvYWQubWVkaWEpO1xuICBpZiAocHJvcHMuZGVzY3JpcHRpb24gJiYgcGF5bG9hZC5kZXNjcmlwdGlvbikgZ2FsbGVyeUl0ZW0uZGVzY3JpcHRpb24gPSBwYXlsb2FkLmRlc2NyaXB0aW9uO1xuICBpZiAocHJvcHMuc3BvaWxlciAmJiBwYXlsb2FkLnNwb2lsZXIpIGdhbGxlcnlJdGVtLnNwb2lsZXIgPSBwYXlsb2FkLnNwb2lsZXI7XG5cbiAgcmV0dXJuIGNhbGxDdXN0b21pemVyKCdtZWRpYUdhbGxlcnlJdGVtJywgYm90LCBwYXlsb2FkLCBnYWxsZXJ5SXRlbSwge1xuICAgIHBhcnRpYWw6IGV4dHJhPy5wYXJ0aWFsID8/IGZhbHNlLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQWN0aW9uUm93KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRBY3Rpb25Sb3c+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGFjdGlvblJvdyA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgYWN0aW9uUm93LnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBhY3Rpb25Sb3cuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY29tcG9uZW50cyAmJiBwYXlsb2FkLmNvbXBvbmVudHMpXG4gICAgYWN0aW9uUm93LmNvbXBvbmVudHMgPSBwYXlsb2FkLmNvbXBvbmVudHMubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSk7XG5cbiAgcmV0dXJuIGFjdGlvblJvdztcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQ29udGFpbmVyQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRDb250YWluZXJDb21wb25lbnQ+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGNvbnRhaW5lciA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgY29udGFpbmVyLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBjb250YWluZXIuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuYWNjZW50Q29sb3IgJiYgcGF5bG9hZC5hY2NlbnRfY29sb3IpIGNvbnRhaW5lci5hY2NlbnRDb2xvciA9IHBheWxvYWQuYWNjZW50X2NvbG9yO1xuICBpZiAocHJvcHMuc3BvaWxlciAmJiBwYXlsb2FkLnNwb2lsZXIpIGNvbnRhaW5lci5zcG9pbGVyID0gcGF5bG9hZC5zcG9pbGVyO1xuICBpZiAocHJvcHMuY29tcG9uZW50cyAmJiBwYXlsb2FkLmNvbXBvbmVudHMpXG4gICAgY29udGFpbmVyLmNvbXBvbmVudHMgPSBwYXlsb2FkLmNvbXBvbmVudHMubWFwKChjb21wb25lbnQpID0+IGJvdC50cmFuc2Zvcm1lcnMuY29tcG9uZW50KGJvdCwgY29tcG9uZW50KSk7XG5cbiAgcmV0dXJuIGNvbnRhaW5lcjtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQnV0dG9uQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRCdXR0b25Db21wb25lbnQ+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGJ1dHRvbiA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgYnV0dG9uLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBidXR0b24uaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMubGFiZWwgJiYgcGF5bG9hZC5sYWJlbCkgYnV0dG9uLmxhYmVsID0gcGF5bG9hZC5sYWJlbDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBidXR0b24uY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcbiAgaWYgKHByb3BzLnN0eWxlICYmIHBheWxvYWQuc3R5bGUpIGJ1dHRvbi5zdHlsZSA9IHBheWxvYWQuc3R5bGU7XG4gIGlmIChwcm9wcy5lbW9qaSAmJiBwYXlsb2FkLmVtb2ppKSBidXR0b24uZW1vamkgPSBib3QudHJhbnNmb3JtZXJzLmVtb2ppKGJvdCwgcGF5bG9hZC5lbW9qaSwgeyBwYXJ0aWFsOiB0cnVlIH0pO1xuICBpZiAocHJvcHMudXJsICYmIHBheWxvYWQudXJsKSBidXR0b24udXJsID0gcGF5bG9hZC51cmw7XG4gIGlmIChwcm9wcy5kaXNhYmxlZCAmJiBwYXlsb2FkLmRpc2FibGVkKSBidXR0b24uZGlzYWJsZWQgPSBwYXlsb2FkLmRpc2FibGVkO1xuICBpZiAocHJvcHMuc2t1SWQgJiYgcGF5bG9hZC5za3VfaWQpIGJ1dHRvbi5za3VJZCA9IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKHBheWxvYWQuc2t1X2lkKTtcblxuICByZXR1cm4gYnV0dG9uO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1JbnB1dFRleHRDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZFRleHRJbnB1dENvbXBvbmVudCB8IERpc2NvcmRUZXh0SW5wdXRJbnRlcmFjdGlvblJlc3BvbnNlPikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBpbnB1dCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgaW5wdXQudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGlucHV0LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLnZhbHVlICYmIHBheWxvYWQudmFsdWUpIGlucHV0LnZhbHVlID0gcGF5bG9hZC52YWx1ZTtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBpbnB1dC5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkO1xuXG4gIC8vIFdlIGFzc3VtZSB0aGF0IGlmIHdlIGZpbmQgJ3ZhbHVlcycgaXQgaXMgdGhlIGludGVyYWN0aW9uIHJlc3BvbnNlXG4gIGlmICgnc3R5bGUnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMuc3R5bGUgJiYgcGF5bG9hZC5zdHlsZSkgaW5wdXQuc3R5bGUgPSBwYXlsb2FkLnN0eWxlO1xuICAgIGlmIChwcm9wcy5yZXF1aXJlZCAmJiBwYXlsb2FkLnJlcXVpcmVkKSBpbnB1dC5yZXF1aXJlZCA9IHBheWxvYWQucmVxdWlyZWQ7XG4gICAgaWYgKHByb3BzLmxhYmVsICYmIHBheWxvYWQubGFiZWwpIGlucHV0LmxhYmVsID0gcGF5bG9hZC5sYWJlbDtcbiAgICBpZiAocHJvcHMucGxhY2Vob2xkZXIgJiYgcGF5bG9hZC5wbGFjZWhvbGRlcikgaW5wdXQucGxhY2Vob2xkZXIgPSBwYXlsb2FkLnBsYWNlaG9sZGVyO1xuICAgIGlmIChwcm9wcy5taW5MZW5ndGggJiYgcGF5bG9hZC5taW5fbGVuZ3RoKSBpbnB1dC5taW5MZW5ndGggPSBwYXlsb2FkLm1pbl9sZW5ndGg7XG4gICAgaWYgKHByb3BzLm1heExlbmd0aCAmJiBwYXlsb2FkLm1heF9sZW5ndGgpIGlucHV0Lm1heExlbmd0aCA9IHBheWxvYWQubWF4X2xlbmd0aDtcbiAgfVxuXG4gIHJldHVybiBpbnB1dDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU3RyaW5nU2VsZWN0TWVudUNvbXBvbmVudChcbiAgYm90OiBCb3QsXG4gIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZFN0cmluZ1NlbGVjdENvbXBvbmVudCB8IERpc2NvcmRTdHJpbmdTZWxlY3RJbnRlcmFjdGlvblJlc3BvbnNlRnJvbU1vZGFsPixcbikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBzZWxlY3QgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlbGVjdC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgc2VsZWN0LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBzZWxlY3QuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcblxuICAvLyBXZSBhc3N1bWUgdGhhdCBpZiB3ZSBmaW5kICd2YWx1ZXMnIGl0IGlzIHRoZSBpbnRlcmFjdGlvbiByZXNwb25zZVxuICBpZiAoJ3ZhbHVlcycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgcGF5bG9hZC52YWx1ZXMpIHNlbGVjdC52YWx1ZXMgPSBwYXlsb2FkLnZhbHVlcztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBfcGF5bG9hZCA9IHBheWxvYWQgYXMgUGFydGlhbDxEaXNjb3JkU3RyaW5nU2VsZWN0Q29tcG9uZW50PjtcblxuICAgIGlmIChwcm9wcy5wbGFjZWhvbGRlciAmJiBfcGF5bG9hZC5wbGFjZWhvbGRlcikgc2VsZWN0LnBsYWNlaG9sZGVyID0gX3BheWxvYWQucGxhY2Vob2xkZXI7XG4gICAgaWYgKHByb3BzLm1pblZhbHVlcyAmJiBfcGF5bG9hZC5taW5fdmFsdWVzKSBzZWxlY3QubWluVmFsdWVzID0gX3BheWxvYWQubWluX3ZhbHVlcztcbiAgICBpZiAocHJvcHMubWF4VmFsdWVzICYmIF9wYXlsb2FkLm1heF92YWx1ZXMpIHNlbGVjdC5tYXhWYWx1ZXMgPSBfcGF5bG9hZC5tYXhfdmFsdWVzO1xuICAgIGlmIChwcm9wcy5vcHRpb25zICYmIF9wYXlsb2FkLm9wdGlvbnMpXG4gICAgICBzZWxlY3Qub3B0aW9ucyA9IF9wYXlsb2FkLm9wdGlvbnMubWFwKChvcHRpb24pID0+ICh7XG4gICAgICAgIGxhYmVsOiBvcHRpb24ubGFiZWwsXG4gICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb24uZGVzY3JpcHRpb24sXG4gICAgICAgIGVtb2ppOiBvcHRpb24uZW1vamlcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgaWQ6IG9wdGlvbi5lbW9qaS5pZCA/IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKG9wdGlvbi5lbW9qaS5pZCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5lbW9qaS5uYW1lID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgYW5pbWF0ZWQ6IG9wdGlvbi5lbW9qaS5hbmltYXRlZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGVmYXVsdDogb3B0aW9uLmRlZmF1bHQsXG4gICAgICB9KSk7XG4gICAgaWYgKHByb3BzLmRpc2FibGVkICYmIF9wYXlsb2FkLmRpc2FibGVkKSBzZWxlY3QuZGlzYWJsZWQgPSBfcGF5bG9hZC5kaXNhYmxlZDtcbiAgfVxuXG4gIHJldHVybiBzZWxlY3Q7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVVzZXJTZWxlY3RNZW51Q29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRVc2VyU2VsZWN0Q29tcG9uZW50IHwgRGlzY29yZFVzZXJTZWxlY3RJbnRlcmFjdGlvblJlc3BvbnNlRnJvbU1vZGFsPikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBzZWxlY3QgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlbGVjdC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgc2VsZWN0LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBzZWxlY3QuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcblxuICAvLyBXZSBhc3N1bWUgdGhhdCBpZiB3ZSBmaW5kICd2YWx1ZXMnIGl0IGlzIHRoZSBpbnRlcmFjdGlvbiByZXNwb25zZVxuICBpZiAoJ3ZhbHVlcycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgcGF5bG9hZC52YWx1ZXMpIHNlbGVjdC52YWx1ZXMgPSBwYXlsb2FkLnZhbHVlcztcbiAgICBpZiAocHJvcHMucmVzb2x2ZWQgJiYgcGF5bG9hZC5yZXNvbHZlZCkgc2VsZWN0LnJlc29sdmVkID0gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHBheWxvYWQucmVzb2x2ZWQpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IF9wYXlsb2FkID0gcGF5bG9hZCBhcyBQYXJ0aWFsPERpc2NvcmRVc2VyU2VsZWN0Q29tcG9uZW50PjtcblxuICAgIGlmIChwcm9wcy5wbGFjZWhvbGRlciAmJiBfcGF5bG9hZC5wbGFjZWhvbGRlcikgc2VsZWN0LnBsYWNlaG9sZGVyID0gX3BheWxvYWQucGxhY2Vob2xkZXI7XG4gICAgaWYgKHByb3BzLm1pblZhbHVlcyAmJiBfcGF5bG9hZC5taW5fdmFsdWVzKSBzZWxlY3QubWluVmFsdWVzID0gX3BheWxvYWQubWluX3ZhbHVlcztcbiAgICBpZiAocHJvcHMubWF4VmFsdWVzICYmIF9wYXlsb2FkLm1heF92YWx1ZXMpIHNlbGVjdC5tYXhWYWx1ZXMgPSBfcGF5bG9hZC5tYXhfdmFsdWVzO1xuICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWVzICYmIF9wYXlsb2FkLmRlZmF1bHRfdmFsdWVzKVxuICAgICAgc2VsZWN0LmRlZmF1bHRWYWx1ZXMgPSBfcGF5bG9hZC5kZWZhdWx0X3ZhbHVlcy5tYXAoKGRlZmF1bHRWYWx1ZSkgPT4gKHtcbiAgICAgICAgaWQ6IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKGRlZmF1bHRWYWx1ZS5pZCksXG4gICAgICAgIHR5cGU6IGRlZmF1bHRWYWx1ZS50eXBlLFxuICAgICAgfSkpO1xuICAgIGlmIChwcm9wcy5kaXNhYmxlZCAmJiBfcGF5bG9hZC5kaXNhYmxlZCkgc2VsZWN0LmRpc2FibGVkID0gX3BheWxvYWQuZGlzYWJsZWQ7XG4gIH1cblxuICByZXR1cm4gc2VsZWN0O1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Sb2xlU2VsZWN0TWVudUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkUm9sZVNlbGVjdENvbXBvbmVudCB8IERpc2NvcmRSb2xlU2VsZWN0SW50ZXJhY3Rpb25SZXNwb25zZUZyb21Nb2RhbD4pIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3Qgc2VsZWN0ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBzZWxlY3QudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHNlbGVjdC5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5jdXN0b21JZCAmJiBwYXlsb2FkLmN1c3RvbV9pZCkgc2VsZWN0LmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWQ7XG5cbiAgLy8gV2UgYXNzdW1lIHRoYXQgaWYgd2UgZmluZCAndmFsdWVzJyBpdCBpcyB0aGUgaW50ZXJhY3Rpb24gcmVzcG9uc2VcbiAgaWYgKCd2YWx1ZXMnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMudmFsdWVzICYmIHBheWxvYWQudmFsdWVzKSBzZWxlY3QudmFsdWVzID0gcGF5bG9hZC52YWx1ZXM7XG4gICAgaWYgKHByb3BzLnJlc29sdmVkICYmIHBheWxvYWQucmVzb2x2ZWQpIHNlbGVjdC5yZXNvbHZlZCA9IGJvdC50cmFuc2Zvcm1lcnMuaW50ZXJhY3Rpb25EYXRhUmVzb2x2ZWQoYm90LCBwYXlsb2FkLnJlc29sdmVkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBfcGF5bG9hZCA9IHBheWxvYWQgYXMgUGFydGlhbDxEaXNjb3JkUm9sZVNlbGVjdENvbXBvbmVudD47XG5cbiAgICBpZiAocHJvcHMucGxhY2Vob2xkZXIgJiYgX3BheWxvYWQucGxhY2Vob2xkZXIpIHNlbGVjdC5wbGFjZWhvbGRlciA9IF9wYXlsb2FkLnBsYWNlaG9sZGVyO1xuICAgIGlmIChwcm9wcy5taW5WYWx1ZXMgJiYgX3BheWxvYWQubWluX3ZhbHVlcykgc2VsZWN0Lm1pblZhbHVlcyA9IF9wYXlsb2FkLm1pbl92YWx1ZXM7XG4gICAgaWYgKHByb3BzLm1heFZhbHVlcyAmJiBfcGF5bG9hZC5tYXhfdmFsdWVzKSBzZWxlY3QubWF4VmFsdWVzID0gX3BheWxvYWQubWF4X3ZhbHVlcztcbiAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlcyAmJiBfcGF5bG9hZC5kZWZhdWx0X3ZhbHVlcylcbiAgICAgIHNlbGVjdC5kZWZhdWx0VmFsdWVzID0gX3BheWxvYWQuZGVmYXVsdF92YWx1ZXMubWFwKChkZWZhdWx0VmFsdWUpID0+ICh7XG4gICAgICAgIGlkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShkZWZhdWx0VmFsdWUuaWQpLFxuICAgICAgICB0eXBlOiBkZWZhdWx0VmFsdWUudHlwZSxcbiAgICAgIH0pKTtcbiAgICBpZiAocHJvcHMuZGlzYWJsZWQgJiYgX3BheWxvYWQuZGlzYWJsZWQpIHNlbGVjdC5kaXNhYmxlZCA9IF9wYXlsb2FkLmRpc2FibGVkO1xuICB9XG5cbiAgcmV0dXJuIHNlbGVjdDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtTWVudGlvbmFibGVTZWxlY3RNZW51Q29tcG9uZW50KFxuICBib3Q6IEJvdCxcbiAgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkTWVudGlvbmFibGVTZWxlY3RDb21wb25lbnQgfCBEaXNjb3JkTWVudGlvbmFibGVTZWxlY3RJbnRlcmFjdGlvblJlc3BvbnNlRnJvbU1vZGFsPixcbikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBzZWxlY3QgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlbGVjdC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgc2VsZWN0LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBzZWxlY3QuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcblxuICAvLyBXZSBhc3N1bWUgdGhhdCBpZiB3ZSBmaW5kICd2YWx1ZXMnIGl0IGlzIHRoZSBpbnRlcmFjdGlvbiByZXNwb25zZVxuICBpZiAoJ3ZhbHVlcycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgcGF5bG9hZC52YWx1ZXMpIHNlbGVjdC52YWx1ZXMgPSBwYXlsb2FkLnZhbHVlcztcbiAgICBpZiAocHJvcHMucmVzb2x2ZWQgJiYgcGF5bG9hZC5yZXNvbHZlZCkgc2VsZWN0LnJlc29sdmVkID0gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHBheWxvYWQucmVzb2x2ZWQpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IF9wYXlsb2FkID0gcGF5bG9hZCBhcyBQYXJ0aWFsPERpc2NvcmRNZW50aW9uYWJsZVNlbGVjdENvbXBvbmVudD47XG5cbiAgICBpZiAocHJvcHMucGxhY2Vob2xkZXIgJiYgX3BheWxvYWQucGxhY2Vob2xkZXIpIHNlbGVjdC5wbGFjZWhvbGRlciA9IF9wYXlsb2FkLnBsYWNlaG9sZGVyO1xuICAgIGlmIChwcm9wcy5taW5WYWx1ZXMgJiYgX3BheWxvYWQubWluX3ZhbHVlcykgc2VsZWN0Lm1pblZhbHVlcyA9IF9wYXlsb2FkLm1pbl92YWx1ZXM7XG4gICAgaWYgKHByb3BzLm1heFZhbHVlcyAmJiBfcGF5bG9hZC5tYXhfdmFsdWVzKSBzZWxlY3QubWF4VmFsdWVzID0gX3BheWxvYWQubWF4X3ZhbHVlcztcbiAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlcyAmJiBfcGF5bG9hZC5kZWZhdWx0X3ZhbHVlcylcbiAgICAgIHNlbGVjdC5kZWZhdWx0VmFsdWVzID0gX3BheWxvYWQuZGVmYXVsdF92YWx1ZXMubWFwKChkZWZhdWx0VmFsdWUpID0+ICh7XG4gICAgICAgIGlkOiBib3QudHJhbnNmb3JtZXJzLnNub3dmbGFrZShkZWZhdWx0VmFsdWUuaWQpLFxuICAgICAgICB0eXBlOiBkZWZhdWx0VmFsdWUudHlwZSxcbiAgICAgIH0pKTtcbiAgICBpZiAocHJvcHMuZGlzYWJsZWQgJiYgX3BheWxvYWQuZGlzYWJsZWQpIHNlbGVjdC5kaXNhYmxlZCA9IF9wYXlsb2FkLmRpc2FibGVkO1xuICB9XG5cbiAgcmV0dXJuIHNlbGVjdDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtQ2hhbm5lbFNlbGVjdE1lbnVDb21wb25lbnQoXG4gIGJvdDogQm90LFxuICBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRDaGFubmVsU2VsZWN0Q29tcG9uZW50IHwgRGlzY29yZENoYW5uZWxTZWxlY3RJbnRlcmFjdGlvblJlc3BvbnNlRnJvbU1vZGFsPixcbikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBzZWxlY3QgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlbGVjdC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgc2VsZWN0LmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBzZWxlY3QuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcblxuICAvLyBXZSBhc3N1bWUgdGhhdCBpZiB3ZSBmaW5kICd2YWx1ZXMnIGl0IGlzIHRoZSBpbnRlcmFjdGlvbiByZXNwb25zZVxuICBpZiAoJ3ZhbHVlcycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgcGF5bG9hZC52YWx1ZXMpIHNlbGVjdC52YWx1ZXMgPSBwYXlsb2FkLnZhbHVlcztcbiAgICBpZiAocHJvcHMucmVzb2x2ZWQgJiYgcGF5bG9hZC5yZXNvbHZlZCkgc2VsZWN0LnJlc29sdmVkID0gYm90LnRyYW5zZm9ybWVycy5pbnRlcmFjdGlvbkRhdGFSZXNvbHZlZChib3QsIHBheWxvYWQucmVzb2x2ZWQpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IF9wYXlsb2FkID0gcGF5bG9hZCBhcyBQYXJ0aWFsPERpc2NvcmRDaGFubmVsU2VsZWN0Q29tcG9uZW50PjtcblxuICAgIGlmIChwcm9wcy5wbGFjZWhvbGRlciAmJiBfcGF5bG9hZC5wbGFjZWhvbGRlcikgc2VsZWN0LnBsYWNlaG9sZGVyID0gX3BheWxvYWQucGxhY2Vob2xkZXI7XG4gICAgaWYgKHByb3BzLm1pblZhbHVlcyAmJiBfcGF5bG9hZC5taW5fdmFsdWVzKSBzZWxlY3QubWluVmFsdWVzID0gX3BheWxvYWQubWluX3ZhbHVlcztcbiAgICBpZiAocHJvcHMubWF4VmFsdWVzICYmIF9wYXlsb2FkLm1heF92YWx1ZXMpIHNlbGVjdC5tYXhWYWx1ZXMgPSBfcGF5bG9hZC5tYXhfdmFsdWVzO1xuICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWVzICYmIF9wYXlsb2FkLmRlZmF1bHRfdmFsdWVzKVxuICAgICAgc2VsZWN0LmRlZmF1bHRWYWx1ZXMgPSBfcGF5bG9hZC5kZWZhdWx0X3ZhbHVlcy5tYXAoKGRlZmF1bHRWYWx1ZSkgPT4gKHtcbiAgICAgICAgaWQ6IGJvdC50cmFuc2Zvcm1lcnMuc25vd2ZsYWtlKGRlZmF1bHRWYWx1ZS5pZCksXG4gICAgICAgIHR5cGU6IGRlZmF1bHRWYWx1ZS50eXBlLFxuICAgICAgfSkpO1xuICAgIGlmIChwcm9wcy5jaGFubmVsVHlwZXMgJiYgX3BheWxvYWQuY2hhbm5lbF90eXBlcykgc2VsZWN0LmNoYW5uZWxUeXBlcyA9IF9wYXlsb2FkLmNoYW5uZWxfdHlwZXM7XG4gICAgaWYgKHByb3BzLmRpc2FibGVkICYmIF9wYXlsb2FkLmRpc2FibGVkKSBzZWxlY3QuZGlzYWJsZWQgPSBfcGF5bG9hZC5kaXNhYmxlZDtcbiAgfVxuXG4gIHJldHVybiBzZWxlY3Q7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVNlY3Rpb25Db21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZFNlY3Rpb25Db21wb25lbnQ+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IHNlY3Rpb24gPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlY3Rpb24udHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHNlY3Rpb24uaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY29tcG9uZW50cyAmJiBwYXlsb2FkLmNvbXBvbmVudHMpIHNlY3Rpb24uY29tcG9uZW50cyA9IHBheWxvYWQuY29tcG9uZW50cy5tYXAoKGNvbXBvbmVudCkgPT4gYm90LnRyYW5zZm9ybWVycy5jb21wb25lbnQoYm90LCBjb21wb25lbnQpKTtcbiAgaWYgKHByb3BzLmFjY2Vzc29yeSAmJiBwYXlsb2FkLmFjY2Vzc29yeSkgc2VjdGlvbi5hY2Nlc3NvcnkgPSBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIHBheWxvYWQuYWNjZXNzb3J5KTtcblxuICByZXR1cm4gc2VjdGlvbjtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtVGh1bWJuYWlsQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRUaHVtYm5haWxDb21wb25lbnQ+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IHRodW1ibmFpbCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgdGh1bWJuYWlsLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSB0aHVtYm5haWwuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMubWVkaWEgJiYgcGF5bG9hZC5tZWRpYSkgdGh1bWJuYWlsLm1lZGlhID0gYm90LnRyYW5zZm9ybWVycy51bmZ1cmxlZE1lZGlhSXRlbShib3QsIHBheWxvYWQubWVkaWEpO1xuICBpZiAocHJvcHMuZGVzY3JpcHRpb24gJiYgcGF5bG9hZC5kZXNjcmlwdGlvbikgdGh1bWJuYWlsLmRlc2NyaXB0aW9uID0gcGF5bG9hZC5kZXNjcmlwdGlvbjtcbiAgaWYgKHByb3BzLnNwb2lsZXIgJiYgcGF5bG9hZC5zcG9pbGVyKSB0aHVtYm5haWwuc3BvaWxlciA9IHBheWxvYWQuc3BvaWxlcjtcblxuICByZXR1cm4gdGh1bWJuYWlsO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1NZWRpYUdhbGxlcnlDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZE1lZGlhR2FsbGVyeUNvbXBvbmVudD4pIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3QgbWVkaWFHYWxsZXJ5ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBtZWRpYUdhbGxlcnkudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIG1lZGlhR2FsbGVyeS5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5pdGVtcyAmJiBwYXlsb2FkLml0ZW1zKSBtZWRpYUdhbGxlcnkuaXRlbXMgPSBwYXlsb2FkLml0ZW1zLm1hcCgoaXRlbSkgPT4gYm90LnRyYW5zZm9ybWVycy5tZWRpYUdhbGxlcnlJdGVtKGJvdCwgaXRlbSkpO1xuXG4gIHJldHVybiBtZWRpYUdhbGxlcnk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUZpbGVDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZEZpbGVDb21wb25lbnQ+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGZpbGUgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGZpbGUudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGZpbGUuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuZmlsZSAmJiBwYXlsb2FkLmZpbGUpIGZpbGUuZmlsZSA9IGJvdC50cmFuc2Zvcm1lcnMudW5mdXJsZWRNZWRpYUl0ZW0oYm90LCBwYXlsb2FkLmZpbGUpO1xuICBpZiAocHJvcHMuc3BvaWxlciAmJiBwYXlsb2FkLnNwb2lsZXIpIGZpbGUuc3BvaWxlciA9IHBheWxvYWQuc3BvaWxlcjtcbiAgaWYgKHByb3BzLm5hbWUgJiYgcGF5bG9hZC5uYW1lKSBmaWxlLm5hbWUgPSBwYXlsb2FkLm5hbWU7XG4gIGlmIChwcm9wcy5zaXplICYmIHBheWxvYWQuc2l6ZSkgZmlsZS5zaXplID0gcGF5bG9hZC5zaXplO1xuXG4gIHJldHVybiBmaWxlO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1UZXh0RGlzcGxheUNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkVGV4dERpc3BsYXlDb21wb25lbnQgfCBEaXNjb3JkVGV4dERpc3BsYXlJbnRlcmFjdGlvblJlc3BvbnNlPikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCB0ZXh0RGlzcGxheSA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgdGV4dERpc3BsYXkudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIHRleHREaXNwbGF5LmlkID0gcGF5bG9hZC5pZDtcbiAgLy8gV2UgYXNzdW1lIHRoYXQgaWYgd2UgZmluZCAnY29udGVudCcgaXQgaXMgdGhlIGNvbXBvbmVudFxuICBpZiAoJ2NvbnRlbnQnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMuY29udGVudCAmJiBwYXlsb2FkLmNvbnRlbnQpIHRleHREaXNwbGF5LmNvbnRlbnQgPSBwYXlsb2FkLmNvbnRlbnQ7XG4gIH1cblxuICByZXR1cm4gdGV4dERpc3BsYXk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVNlcGFyYXRvckNvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkU2VwYXJhdG9yQ29tcG9uZW50Pikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBzZXBhcmF0b3IgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIHNlcGFyYXRvci50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgc2VwYXJhdG9yLmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmRpdmlkZXIgJiYgcGF5bG9hZC5kaXZpZGVyKSBzZXBhcmF0b3IuZGl2aWRlciA9IHBheWxvYWQuZGl2aWRlcjtcbiAgaWYgKHByb3BzLnNwYWNpbmcgJiYgcGF5bG9hZC5zcGFjaW5nKSBzZXBhcmF0b3Iuc3BhY2luZyA9IHBheWxvYWQuc3BhY2luZztcblxuICByZXR1cm4gc2VwYXJhdG9yO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1MYWJlbENvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkTGFiZWxDb21wb25lbnQgfCBEaXNjb3JkTGFiZWxJbnRlcmFjdGlvblJlc3BvbnNlPikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBsYWJlbCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgbGFiZWwudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGxhYmVsLmlkID0gcGF5bG9hZC5pZDtcbiAgLy8gV2UgYXNzdW1lIHRoYXQgaWYgd2UgZmluZCAnbGFiZWwnIGl0IGlzIHRoZSBjb21wb25lbnRcbiAgaWYgKCdsYWJlbCcgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy5sYWJlbCAmJiBwYXlsb2FkLmxhYmVsKSBsYWJlbC5sYWJlbCA9IHBheWxvYWQubGFiZWw7XG4gICAgaWYgKHByb3BzLmRlc2NyaXB0aW9uICYmIHBheWxvYWQuZGVzY3JpcHRpb24pIGxhYmVsLmRlc2NyaXB0aW9uID0gcGF5bG9hZC5kZXNjcmlwdGlvbjtcbiAgfVxuICBpZiAocHJvcHMuY29tcG9uZW50ICYmIHBheWxvYWQuY29tcG9uZW50KSBsYWJlbC5jb21wb25lbnQgPSBib3QudHJhbnNmb3JtZXJzLmNvbXBvbmVudChib3QsIHBheWxvYWQuY29tcG9uZW50KTtcblxuICByZXR1cm4gbGFiZWw7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUZpbGVVcGxvYWRDb21wb25lbnQoYm90OiBCb3QsIHBheWxvYWQ6IFBhcnRpYWw8RGlzY29yZEZpbGVVcGxvYWRDb21wb25lbnQgfCBEaXNjb3JkRmlsZVVwbG9hZEludGVyYWN0aW9uUmVzcG9uc2U+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGZpbGVVcGxvYWQgPSB7fSBhcyBTZXR1cERlc2lyZWRQcm9wczxDb21wb25lbnQsIFRyYW5zZm9ybWVyc0Rlc2lyZWRQcm9wZXJ0aWVzLCBEZXNpcmVkUHJvcGVydGllc0JlaGF2aW9yPjtcblxuICBpZiAocHJvcHMudHlwZSAmJiBwYXlsb2FkLnR5cGUpIGZpbGVVcGxvYWQudHlwZSA9IHBheWxvYWQudHlwZTtcbiAgaWYgKHByb3BzLmlkICYmIHBheWxvYWQuaWQpIGZpbGVVcGxvYWQuaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY3VzdG9tSWQgJiYgcGF5bG9hZC5jdXN0b21faWQpIGZpbGVVcGxvYWQuY3VzdG9tSWQgPSBwYXlsb2FkLmN1c3RvbV9pZDtcblxuICAvLyBXZSBhc3N1bWUgdGhhdCBpZiB3ZSBmaW5kICd2YWx1ZXMnIGl0IGlzIHRoZSBpbnRlcmFjdGlvbiByZXNwb25zZVxuICBpZiAoJ3ZhbHVlcycgaW4gcGF5bG9hZCkge1xuICAgIGlmIChwcm9wcy52YWx1ZXMgJiYgcGF5bG9hZC52YWx1ZXMpIGZpbGVVcGxvYWQudmFsdWVzID0gcGF5bG9hZC52YWx1ZXM7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgX3BheWxvYWQgPSBwYXlsb2FkIGFzIFBhcnRpYWw8RGlzY29yZEZpbGVVcGxvYWRDb21wb25lbnQ+O1xuXG4gICAgaWYgKHByb3BzLm1pblZhbHVlcyAmJiBfcGF5bG9hZC5taW5fdmFsdWVzKSBmaWxlVXBsb2FkLm1pblZhbHVlcyA9IF9wYXlsb2FkLm1pbl92YWx1ZXM7XG4gICAgaWYgKHByb3BzLm1heFZhbHVlcyAmJiBfcGF5bG9hZC5tYXhfdmFsdWVzKSBmaWxlVXBsb2FkLm1heFZhbHVlcyA9IF9wYXlsb2FkLm1heF92YWx1ZXM7XG4gICAgaWYgKHByb3BzLnJlcXVpcmVkICYmIF9wYXlsb2FkLnJlcXVpcmVkKSBmaWxlVXBsb2FkLnJlcXVpcmVkID0gX3BheWxvYWQucmVxdWlyZWQ7XG4gICAgaWYgKHByb3BzLmZpbGVUeXBlcyAmJiBfcGF5bG9hZC5maWxlX3R5cGVzKSBmaWxlVXBsb2FkLmZpbGVUeXBlcyA9IF9wYXlsb2FkLmZpbGVfdHlwZXM7XG4gIH1cblxuICByZXR1cm4gZmlsZVVwbG9hZDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtUmFkaW9Hcm91cENvbXBvbmVudChib3Q6IEJvdCwgcGF5bG9hZDogUGFydGlhbDxEaXNjb3JkUmFkaW9Hcm91cENvbXBvbmVudCB8IERpc2NvcmRSYWRpb0dyb3VwSW50ZXJhY3Rpb25SZXNwb25zZT4pIHtcbiAgY29uc3QgcHJvcHMgPSBib3QudHJhbnNmb3JtZXJzLmRlc2lyZWRQcm9wZXJ0aWVzLmNvbXBvbmVudDtcbiAgY29uc3QgcmFkaW9Hcm91cCA9IHt9IGFzIFNldHVwRGVzaXJlZFByb3BzPENvbXBvbmVudCwgVHJhbnNmb3JtZXJzRGVzaXJlZFByb3BlcnRpZXMsIERlc2lyZWRQcm9wZXJ0aWVzQmVoYXZpb3I+O1xuXG4gIGlmIChwcm9wcy50eXBlICYmIHBheWxvYWQudHlwZSkgcmFkaW9Hcm91cC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgcmFkaW9Hcm91cC5pZCA9IHBheWxvYWQuaWQ7XG4gIGlmIChwcm9wcy5jdXN0b21JZCAmJiBwYXlsb2FkLmN1c3RvbV9pZCkgcmFkaW9Hcm91cC5jdXN0b21JZCA9IHBheWxvYWQuY3VzdG9tX2lkO1xuXG4gIC8vIFdlIGFzc3VtZSB0aGF0IGlmIHdlIGZpbmQgJ29wdGlvbnMnIGl0IGlzIHRoZSBjb21wb25lbnRcbiAgaWYgKCdvcHRpb25zJyBpbiBwYXlsb2FkKSB7XG4gICAgaWYgKHByb3BzLm9wdGlvbnMgJiYgcGF5bG9hZC5vcHRpb25zKSByYWRpb0dyb3VwLm9wdGlvbnMgPSBwYXlsb2FkLm9wdGlvbnM7XG4gICAgaWYgKHByb3BzLnJlcXVpcmVkICYmIHBheWxvYWQucmVxdWlyZWQgIT09IHVuZGVmaW5lZCkgcmFkaW9Hcm91cC5yZXF1aXJlZCA9IHBheWxvYWQucmVxdWlyZWQ7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgX3BheWxvYWQgPSBwYXlsb2FkIGFzIFBhcnRpYWw8RGlzY29yZFJhZGlvR3JvdXBJbnRlcmFjdGlvblJlc3BvbnNlPjtcblxuICAgIGlmIChwcm9wcy52YWx1ZSkgcmFkaW9Hcm91cC52YWx1ZSA9IF9wYXlsb2FkLnZhbHVlID8/IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiByYWRpb0dyb3VwO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1DaGVja2JveEdyb3VwQ29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRDaGVja2JveEdyb3VwQ29tcG9uZW50IHwgRGlzY29yZENoZWNrYm94R3JvdXBJbnRlcmFjdGlvblJlc3BvbnNlPikge1xuICBjb25zdCBwcm9wcyA9IGJvdC50cmFuc2Zvcm1lcnMuZGVzaXJlZFByb3BlcnRpZXMuY29tcG9uZW50O1xuICBjb25zdCBjaGVja2JveEdyb3VwID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBjaGVja2JveEdyb3VwLnR5cGUgPSBwYXlsb2FkLnR5cGU7XG4gIGlmIChwcm9wcy5pZCAmJiBwYXlsb2FkLmlkKSBjaGVja2JveEdyb3VwLmlkID0gcGF5bG9hZC5pZDtcbiAgaWYgKHByb3BzLmN1c3RvbUlkICYmIHBheWxvYWQuY3VzdG9tX2lkKSBjaGVja2JveEdyb3VwLmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWQ7XG5cbiAgLy8gV2UgYXNzdW1lIHRoYXQgaWYgd2UgZmluZCAnb3B0aW9ucycgaXQgaXMgdGhlIGNvbXBvbmVudFxuICBpZiAoJ29wdGlvbnMnIGluIHBheWxvYWQpIHtcbiAgICBpZiAocHJvcHMub3B0aW9ucyAmJiBwYXlsb2FkLm9wdGlvbnMpIGNoZWNrYm94R3JvdXAub3B0aW9ucyA9IHBheWxvYWQub3B0aW9ucztcbiAgICBpZiAocHJvcHMubWluVmFsdWVzICYmIHBheWxvYWQubWluX3ZhbHVlcyAhPT0gdW5kZWZpbmVkKSBjaGVja2JveEdyb3VwLm1pblZhbHVlcyA9IHBheWxvYWQubWluX3ZhbHVlcztcbiAgICBpZiAocHJvcHMubWF4VmFsdWVzICYmIHBheWxvYWQubWF4X3ZhbHVlcyAhPT0gdW5kZWZpbmVkKSBjaGVja2JveEdyb3VwLm1heFZhbHVlcyA9IHBheWxvYWQubWF4X3ZhbHVlcztcbiAgICBpZiAocHJvcHMucmVxdWlyZWQgJiYgcGF5bG9hZC5yZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSBjaGVja2JveEdyb3VwLnJlcXVpcmVkID0gcGF5bG9hZC5yZXF1aXJlZDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBfcGF5bG9hZCA9IHBheWxvYWQgYXMgUGFydGlhbDxEaXNjb3JkQ2hlY2tib3hHcm91cEludGVyYWN0aW9uUmVzcG9uc2U+O1xuXG4gICAgaWYgKHByb3BzLnZhbHVlcyAmJiBfcGF5bG9hZC52YWx1ZXMpIGNoZWNrYm94R3JvdXAudmFsdWVzID0gX3BheWxvYWQudmFsdWVzO1xuICB9XG5cbiAgcmV0dXJuIGNoZWNrYm94R3JvdXA7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUNoZWNrYm94Q29tcG9uZW50KGJvdDogQm90LCBwYXlsb2FkOiBQYXJ0aWFsPERpc2NvcmRDaGVja2JveENvbXBvbmVudCB8IERpc2NvcmRDaGVja2JveEludGVyYWN0aW9uUmVzcG9uc2U+KSB7XG4gIGNvbnN0IHByb3BzID0gYm90LnRyYW5zZm9ybWVycy5kZXNpcmVkUHJvcGVydGllcy5jb21wb25lbnQ7XG4gIGNvbnN0IGNoZWNrYm94ID0ge30gYXMgU2V0dXBEZXNpcmVkUHJvcHM8Q29tcG9uZW50LCBUcmFuc2Zvcm1lcnNEZXNpcmVkUHJvcGVydGllcywgRGVzaXJlZFByb3BlcnRpZXNCZWhhdmlvcj47XG5cbiAgaWYgKHByb3BzLnR5cGUgJiYgcGF5bG9hZC50eXBlKSBjaGVja2JveC50eXBlID0gcGF5bG9hZC50eXBlO1xuICBpZiAocHJvcHMuaWQgJiYgcGF5bG9hZC5pZCkgY2hlY2tib3guaWQgPSBwYXlsb2FkLmlkO1xuICBpZiAocHJvcHMuY3VzdG9tSWQgJiYgcGF5bG9hZC5jdXN0b21faWQpIGNoZWNrYm94LmN1c3RvbUlkID0gcGF5bG9hZC5jdXN0b21faWQ7XG5cbiAgaWYgKHByb3BzLnZhbHVlICYmICd2YWx1ZScgaW4gcGF5bG9hZCkgY2hlY2tib3gudmFsdWUgPSBwYXlsb2FkLnZhbHVlO1xuICBpZiAocHJvcHMuZGVmYXVsdCAmJiAnZGVmYXVsdCcgaW4gcGF5bG9hZCkgY2hlY2tib3guZGVmYXVsdCA9IHBheWxvYWQuZGVmYXVsdDtcblxuICByZXR1cm4gY2hlY2tib3g7XG59XG4iXSwibmFtZXMiOlsiTWVzc2FnZUNvbXBvbmVudFR5cGVzIiwiY2FsbEN1c3RvbWl6ZXIiLCJUb2dnbGVCaXRmaWVsZCIsInRyYW5zZm9ybUNvbXBvbmVudCIsImJvdCIsInBheWxvYWQiLCJleHRyYSIsImNvbXBvbmVudCIsInR5cGUiLCJFcnJvciIsIkFjdGlvblJvdyIsInRyYW5zZm9ybUFjdGlvblJvdyIsIkJ1dHRvbiIsInRyYW5zZm9ybUJ1dHRvbkNvbXBvbmVudCIsIkNvbnRhaW5lciIsInRyYW5zZm9ybUNvbnRhaW5lckNvbXBvbmVudCIsIlRleHRJbnB1dCIsInRyYW5zZm9ybUlucHV0VGV4dENvbXBvbmVudCIsIlN0cmluZ1NlbGVjdCIsInRyYW5zZm9ybVN0cmluZ1NlbGVjdE1lbnVDb21wb25lbnQiLCJVc2VyU2VsZWN0IiwidHJhbnNmb3JtVXNlclNlbGVjdE1lbnVDb21wb25lbnQiLCJSb2xlU2VsZWN0IiwidHJhbnNmb3JtUm9sZVNlbGVjdE1lbnVDb21wb25lbnQiLCJNZW50aW9uYWJsZVNlbGVjdCIsInRyYW5zZm9ybU1lbnRpb25hYmxlU2VsZWN0TWVudUNvbXBvbmVudCIsIkNoYW5uZWxTZWxlY3QiLCJ0cmFuc2Zvcm1DaGFubmVsU2VsZWN0TWVudUNvbXBvbmVudCIsIlNlY3Rpb24iLCJ0cmFuc2Zvcm1TZWN0aW9uQ29tcG9uZW50IiwiVGh1bWJuYWlsIiwidHJhbnNmb3JtVGh1bWJuYWlsQ29tcG9uZW50IiwiTWVkaWFHYWxsZXJ5IiwidHJhbnNmb3JtTWVkaWFHYWxsZXJ5Q29tcG9uZW50IiwiRmlsZSIsInRyYW5zZm9ybUZpbGVDb21wb25lbnQiLCJTZXBhcmF0b3IiLCJ0cmFuc2Zvcm1TZXBhcmF0b3JDb21wb25lbnQiLCJUZXh0RGlzcGxheSIsInRyYW5zZm9ybVRleHREaXNwbGF5Q29tcG9uZW50IiwiTGFiZWwiLCJ0cmFuc2Zvcm1MYWJlbENvbXBvbmVudCIsIkZpbGVVcGxvYWQiLCJ0cmFuc2Zvcm1GaWxlVXBsb2FkQ29tcG9uZW50IiwiUmFkaW9Hcm91cCIsInRyYW5zZm9ybVJhZGlvR3JvdXBDb21wb25lbnQiLCJDaGVja2JveEdyb3VwIiwidHJhbnNmb3JtQ2hlY2tib3hHcm91cENvbXBvbmVudCIsIkNoZWNrYm94IiwidHJhbnNmb3JtQ2hlY2tib3hDb21wb25lbnQiLCJwYXJ0aWFsIiwidHJhbnNmb3JtVW5mdXJsZWRNZWRpYUl0ZW0iLCJwcm9wcyIsInRyYW5zZm9ybWVycyIsImRlc2lyZWRQcm9wZXJ0aWVzIiwidW5mdXJsZWRNZWRpYUl0ZW0iLCJtZWRpYUl0ZW0iLCJ1cmwiLCJwcm94eVVybCIsInByb3h5X3VybCIsImhlaWdodCIsIndpZHRoIiwicGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlclZlcnNpb24iLCJwbGFjZWhvbGRlcl92ZXJzaW9uIiwiY29udGVudFR5cGUiLCJjb250ZW50X3R5cGUiLCJmbGFncyIsImF0dGFjaG1lbnRJZCIsImF0dGFjaG1lbnRfaWQiLCJzbm93Zmxha2UiLCJ0cmFuc2Zvcm1NZWRpYUdhbGxlcnlJdGVtIiwibWVkaWFHYWxsZXJ5SXRlbSIsImdhbGxlcnlJdGVtIiwibWVkaWEiLCJkZXNjcmlwdGlvbiIsInNwb2lsZXIiLCJhY3Rpb25Sb3ciLCJpZCIsImNvbXBvbmVudHMiLCJtYXAiLCJjb250YWluZXIiLCJhY2NlbnRDb2xvciIsImFjY2VudF9jb2xvciIsImJ1dHRvbiIsImxhYmVsIiwiY3VzdG9tSWQiLCJjdXN0b21faWQiLCJzdHlsZSIsImVtb2ppIiwiZGlzYWJsZWQiLCJza3VJZCIsInNrdV9pZCIsImlucHV0IiwidmFsdWUiLCJyZXF1aXJlZCIsIm1pbkxlbmd0aCIsIm1pbl9sZW5ndGgiLCJtYXhMZW5ndGgiLCJtYXhfbGVuZ3RoIiwic2VsZWN0IiwidmFsdWVzIiwiX3BheWxvYWQiLCJtaW5WYWx1ZXMiLCJtaW5fdmFsdWVzIiwibWF4VmFsdWVzIiwibWF4X3ZhbHVlcyIsIm9wdGlvbnMiLCJvcHRpb24iLCJ1bmRlZmluZWQiLCJuYW1lIiwiYW5pbWF0ZWQiLCJkZWZhdWx0IiwicmVzb2x2ZWQiLCJpbnRlcmFjdGlvbkRhdGFSZXNvbHZlZCIsImRlZmF1bHRWYWx1ZXMiLCJkZWZhdWx0X3ZhbHVlcyIsImRlZmF1bHRWYWx1ZSIsImNoYW5uZWxUeXBlcyIsImNoYW5uZWxfdHlwZXMiLCJzZWN0aW9uIiwiYWNjZXNzb3J5IiwidGh1bWJuYWlsIiwibWVkaWFHYWxsZXJ5IiwiaXRlbXMiLCJpdGVtIiwiZmlsZSIsInNpemUiLCJ0ZXh0RGlzcGxheSIsImNvbnRlbnQiLCJzZXBhcmF0b3IiLCJkaXZpZGVyIiwic3BhY2luZyIsImZpbGVVcGxvYWQiLCJm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
@@ -1,4 +1,4 @@
1
1
  import type { DiscordEmbed } from '@discordeno/types';
2
- import type { Bot, Embed } from '../index.js';
3
- export declare function transformEmbed(bot: Bot, payload: DiscordEmbed): Embed;
2
+ import type { Bot } from '../bot.js';
3
+ export declare function transformEmbed(bot: Bot, payload: DiscordEmbed): any;
4
4
  //# sourceMappingURL=embed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/transformers/embed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE7C,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,CAoDrE"}
1
+ {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/transformers/embed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIrC,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,OAoE7D"}