@nlabs/reaktor 1.9.0 → 1.10.0

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 (301) hide show
  1. package/README.md +59 -73
  2. package/docs/GENERATION.md +63 -0
  3. package/lib/actions/analytics.js +1 -1
  4. package/lib/actions/apps.d.ts +2 -2
  5. package/lib/actions/apps.js +1 -1
  6. package/lib/actions/connections.js +1 -1
  7. package/lib/actions/content.js +1 -1
  8. package/lib/actions/contentGeneration.d.ts +40 -0
  9. package/lib/actions/contentGeneration.js +206 -0
  10. package/lib/actions/conversations.js +1 -1
  11. package/lib/actions/crm.js +1 -1
  12. package/lib/actions/crud.d.ts +2 -2
  13. package/lib/actions/crud.js +1 -1
  14. package/lib/actions/dynamodb.js +1 -1
  15. package/lib/actions/email.js +1 -1
  16. package/lib/actions/files.d.ts +42 -4
  17. package/lib/actions/files.js +1 -1
  18. package/lib/actions/flags.js +1 -1
  19. package/lib/actions/geminiVideo.d.ts +19 -0
  20. package/lib/actions/geminiVideo.js +161 -0
  21. package/lib/actions/groups.js +1 -1
  22. package/lib/actions/higgsfield.d.ts +20 -0
  23. package/lib/actions/higgsfield.js +148 -0
  24. package/lib/actions/imageGeneration.d.ts +37 -0
  25. package/lib/actions/imageGeneration.js +121 -0
  26. package/lib/actions/images.js +1 -1
  27. package/lib/actions/index.d.ts +5 -0
  28. package/lib/actions/index.js +6 -1
  29. package/lib/actions/ios.js +1 -1
  30. package/lib/actions/locations.js +1 -1
  31. package/lib/actions/messages.js +1 -1
  32. package/lib/actions/notifications.js +1 -1
  33. package/lib/actions/payments.js +27 -26
  34. package/lib/actions/personas.d.ts +4 -4
  35. package/lib/actions/personas.js +1 -1
  36. package/lib/actions/posts.js +1 -1
  37. package/lib/actions/query.js +1 -1
  38. package/lib/actions/reactions.d.ts +6 -6
  39. package/lib/actions/reactions.js +1 -1
  40. package/lib/actions/rum.js +1 -1
  41. package/lib/actions/s3.d.ts +4 -4
  42. package/lib/actions/s3.js +22 -6
  43. package/lib/actions/search.js +1 -1
  44. package/lib/actions/sms.js +1 -1
  45. package/lib/actions/statistics.js +1 -1
  46. package/lib/actions/subscriptions.js +1 -1
  47. package/lib/actions/tags.d.ts +2 -2
  48. package/lib/actions/tags.js +1 -1
  49. package/lib/actions/users.d.ts +2 -2
  50. package/lib/actions/users.js +1 -1
  51. package/lib/actions/videoGeneration.d.ts +20 -0
  52. package/lib/actions/videoGeneration.js +32 -0
  53. package/lib/actions/videos.js +1 -1
  54. package/lib/adapters/arangoAdapter.js +1 -1
  55. package/lib/adapters/contentAdapter.js +1 -1
  56. package/lib/adapters/fileAdapter.js +1 -1
  57. package/lib/adapters/geminiGenerationAdapter.d.ts +34 -0
  58. package/lib/adapters/geminiGenerationAdapter.js +41 -0
  59. package/lib/adapters/higgsfieldAdapter.d.ts +120 -0
  60. package/lib/adapters/higgsfieldAdapter.js +131 -0
  61. package/lib/adapters/imageAdapter.js +1 -1
  62. package/lib/adapters/imageGenerationAdapter.d.ts +17 -0
  63. package/lib/adapters/imageGenerationAdapter.js +18 -0
  64. package/lib/adapters/index.d.ts +3 -0
  65. package/lib/adapters/index.js +4 -1
  66. package/lib/adapters/messageAdapter.js +1 -1
  67. package/lib/adapters/postAdapter.js +1 -1
  68. package/lib/adapters/reaktorAdapter.js +1 -1
  69. package/lib/adapters/tagAdapter.js +1 -1
  70. package/lib/adapters/userAdapter.d.ts +76 -1
  71. package/lib/adapters/userAdapter.js +1 -1
  72. package/lib/config.d.ts +19 -14
  73. package/lib/config.js +9 -1
  74. package/lib/constants/collections.js +1 -1
  75. package/lib/handlers/graphqlHandler.js +1 -1
  76. package/lib/index.d.ts +1 -1
  77. package/lib/index.js +2 -2
  78. package/lib/lambdas/actions/websockets.d.ts +5 -0
  79. package/lib/lambdas/actions/websockets.js +16 -1
  80. package/lib/lambdas/authorizer.js +1 -1
  81. package/lib/lambdas/connection.d.ts +2 -2
  82. package/lib/lambdas/connection.js +1 -1
  83. package/lib/lambdas/utils/message.js +1 -1
  84. package/lib/lambdas/utils/websocket.d.ts +4 -4
  85. package/lib/lambdas/utils/websocket.js +1 -1
  86. package/lib/mocks/conversation.js +1 -1
  87. package/lib/mocks/file.js +1 -1
  88. package/lib/mocks/group.js +1 -1
  89. package/lib/mocks/image.js +1 -1
  90. package/lib/mocks/post.js +1 -1
  91. package/lib/mocks/tag.js +1 -1
  92. package/lib/mocks/user.js +1 -1
  93. package/lib/mocks/video.js +1 -1
  94. package/lib/mutations/analytics/analytics.js +1 -1
  95. package/lib/mutations/content/content.js +15 -1
  96. package/lib/mutations/crm/crm.js +1 -1
  97. package/lib/mutations/events/events.js +1 -1
  98. package/lib/mutations/flags/flags.js +1 -1
  99. package/lib/mutations/groups/groups.js +1 -1
  100. package/lib/mutations/higgsfield/higgsfield.d.ts +1 -0
  101. package/lib/mutations/higgsfield/higgsfield.js +62 -0
  102. package/lib/mutations/images/images.js +10 -1
  103. package/lib/mutations/index.d.ts +2 -1
  104. package/lib/mutations/index.js +11 -2
  105. package/lib/mutations/locations/locations.js +1 -1
  106. package/lib/mutations/messages/messages.js +1 -1
  107. package/lib/mutations/personas/personas.js +1 -1
  108. package/lib/mutations/posts/posts.js +1 -1
  109. package/lib/mutations/reactions/reactions.js +1 -1
  110. package/lib/mutations/rum/rum.js +1 -1
  111. package/lib/mutations/statistics/statistics.js +1 -1
  112. package/lib/mutations/subscriptions/subscriptions.js +1 -1
  113. package/lib/mutations/tags/tags.js +1 -1
  114. package/lib/mutations/users/users.js +1 -1
  115. package/lib/mutations/videos/videos.js +24 -10
  116. package/lib/objectTypes/analytics.js +1 -1
  117. package/lib/objectTypes/app.js +1 -1
  118. package/lib/objectTypes/bankAccount.js +1 -1
  119. package/lib/objectTypes/connection.js +1 -1
  120. package/lib/objectTypes/content.js +1 -1
  121. package/lib/objectTypes/contentGeneration.d.ts +2 -0
  122. package/lib/objectTypes/contentGeneration.js +30 -0
  123. package/lib/objectTypes/conversation.js +1 -1
  124. package/lib/objectTypes/creditCard.js +1 -1
  125. package/lib/objectTypes/crm.js +1 -1
  126. package/lib/objectTypes/document.js +1 -1
  127. package/lib/objectTypes/error.js +1 -1
  128. package/lib/objectTypes/event.js +1 -1
  129. package/lib/objectTypes/external.js +1 -1
  130. package/lib/objectTypes/file.js +1 -1
  131. package/lib/objectTypes/filter.js +1 -1
  132. package/lib/objectTypes/flag.js +1 -1
  133. package/lib/objectTypes/group.js +1 -1
  134. package/lib/objectTypes/higgsfield.d.ts +5 -0
  135. package/lib/objectTypes/higgsfield.js +149 -0
  136. package/lib/objectTypes/iapSubscription.js +1 -1
  137. package/lib/objectTypes/image.js +1 -1
  138. package/lib/objectTypes/imageGeneration.d.ts +2 -0
  139. package/lib/objectTypes/imageGeneration.js +33 -0
  140. package/lib/objectTypes/index.d.ts +2 -0
  141. package/lib/objectTypes/index.js +3 -1
  142. package/lib/objectTypes/location.js +1 -1
  143. package/lib/objectTypes/message.js +1 -1
  144. package/lib/objectTypes/passcode.js +1 -1
  145. package/lib/objectTypes/persona.d.ts +37 -2
  146. package/lib/objectTypes/persona.js +1 -1
  147. package/lib/objectTypes/plan.js +1 -1
  148. package/lib/objectTypes/post.js +1 -1
  149. package/lib/objectTypes/query.js +1 -1
  150. package/lib/objectTypes/reaction.js +1 -1
  151. package/lib/objectTypes/relation.js +1 -1
  152. package/lib/objectTypes/rum.js +1 -1
  153. package/lib/objectTypes/search.js +1 -1
  154. package/lib/objectTypes/statistics.js +1 -1
  155. package/lib/objectTypes/subscription.js +1 -1
  156. package/lib/objectTypes/tag.js +1 -1
  157. package/lib/objectTypes/user.js +1 -1
  158. package/lib/objectTypes/video.js +1 -1
  159. package/lib/objectTypes/videoGeneration.d.ts +2 -0
  160. package/lib/objectTypes/videoGeneration.js +31 -0
  161. package/lib/queries/analytics/analytics.js +1 -1
  162. package/lib/queries/content/content.js +1 -1
  163. package/lib/queries/crm/crm.js +1 -1
  164. package/lib/queries/events/events.js +1 -1
  165. package/lib/queries/flags/flags.js +1 -1
  166. package/lib/queries/groups/groups.js +1 -1
  167. package/lib/queries/higgsfield/higgsfield.d.ts +1 -0
  168. package/lib/queries/higgsfield/higgsfield.js +22 -0
  169. package/lib/queries/images/images.js +1 -1
  170. package/lib/queries/index.d.ts +2 -1
  171. package/lib/queries/index.js +7 -2
  172. package/lib/queries/locations/locations.js +1 -1
  173. package/lib/queries/messages/messages.js +1 -1
  174. package/lib/queries/personas/personas.js +1 -1
  175. package/lib/queries/posts/posts.js +1 -1
  176. package/lib/queries/query/query.js +1 -1
  177. package/lib/queries/reactions/reactions.js +1 -1
  178. package/lib/queries/statistics/statistics.js +1 -1
  179. package/lib/queries/subscriptions/subscriptions.js +1 -1
  180. package/lib/queries/tags/tags.js +1 -1
  181. package/lib/queries/users/users.js +1 -1
  182. package/lib/queries/videos/videos.js +1 -1
  183. package/lib/templates/email/layout.js +1 -1
  184. package/lib/templates/email/passwordForgot.js +1 -1
  185. package/lib/templates/email/passwordRecovery.js +1 -1
  186. package/lib/templates/email/verifyEmail.js +1 -1
  187. package/lib/templates/email/welcome.js +1 -1
  188. package/lib/templates/sms/passwordForgot.js +1 -1
  189. package/lib/templates/sms/passwordRecovery.js +1 -1
  190. package/lib/templates/sms/verifyEmail.js +1 -1
  191. package/lib/templates/sms/verifyPhone.js +1 -1
  192. package/lib/templates/sms/welcome.js +1 -1
  193. package/lib/types/analytics.types.d.ts +16 -16
  194. package/lib/types/analytics.types.js +1 -1
  195. package/lib/types/apps.types.d.ts +4 -4
  196. package/lib/types/apps.types.js +1 -1
  197. package/lib/types/arangodb.types.d.ts +20 -20
  198. package/lib/types/arangodb.types.js +1 -1
  199. package/lib/types/auth.types.js +1 -1
  200. package/lib/types/connections.types.d.ts +2 -2
  201. package/lib/types/connections.types.js +1 -1
  202. package/lib/types/content.types.d.ts +6 -6
  203. package/lib/types/content.types.js +1 -1
  204. package/lib/types/conversations.types.d.ts +2 -2
  205. package/lib/types/conversations.types.js +1 -1
  206. package/lib/types/crm.types.d.ts +30 -30
  207. package/lib/types/crm.types.js +1 -1
  208. package/lib/types/email.types.d.ts +2 -2
  209. package/lib/types/email.types.js +1 -1
  210. package/lib/types/error.types.d.ts +1 -0
  211. package/lib/types/error.types.js +2 -1
  212. package/lib/types/files.types.d.ts +2 -2
  213. package/lib/types/files.types.js +1 -1
  214. package/lib/types/flags.types.d.ts +8 -8
  215. package/lib/types/flags.types.js +1 -1
  216. package/lib/types/google.types.js +1 -1
  217. package/lib/types/groups.types.d.ts +2 -2
  218. package/lib/types/groups.types.js +1 -1
  219. package/lib/types/images.types.d.ts +2 -2
  220. package/lib/types/images.types.js +1 -1
  221. package/lib/types/index.js +1 -1
  222. package/lib/types/locations.types.d.ts +2 -2
  223. package/lib/types/locations.types.js +1 -1
  224. package/lib/types/messages.types.d.ts +2 -2
  225. package/lib/types/messages.types.js +1 -1
  226. package/lib/types/notifications.types.js +1 -1
  227. package/lib/types/payments.types.d.ts +14 -14
  228. package/lib/types/payments.types.js +1 -1
  229. package/lib/types/personas.types.d.ts +2 -2
  230. package/lib/types/personas.types.js +1 -1
  231. package/lib/types/posts.types.d.ts +2 -2
  232. package/lib/types/posts.types.js +1 -1
  233. package/lib/types/rum.types.d.ts +6 -6
  234. package/lib/types/rum.types.js +1 -1
  235. package/lib/types/statistics.types.js +1 -1
  236. package/lib/types/tags.types.d.ts +4 -4
  237. package/lib/types/tags.types.js +1 -1
  238. package/lib/types/users.types.d.ts +2 -2
  239. package/lib/types/users.types.js +1 -1
  240. package/lib/types/videos.types.d.ts +2 -2
  241. package/lib/types/videos.types.js +1 -1
  242. package/lib/types/websockets.types.d.ts +4 -4
  243. package/lib/types/websockets.types.js +1 -1
  244. package/lib/upload.js +1 -1
  245. package/lib/utils/adapterUtils.js +1 -1
  246. package/lib/utils/analyticsUtils.js +1 -1
  247. package/lib/utils/appContext.js +1 -1
  248. package/lib/utils/aqlHelpers.js +1 -1
  249. package/lib/utils/arangodbUtils.js +1 -1
  250. package/lib/utils/authUtils.js +1 -1
  251. package/lib/utils/awsUtils.js +1 -1
  252. package/lib/utils/collectionRegistry.d.ts +2 -2
  253. package/lib/utils/collectionRegistry.js +1 -1
  254. package/lib/utils/contextUtils.js +1 -1
  255. package/lib/utils/dbI18n.example.js +1 -1
  256. package/lib/utils/dbI18n.js +1 -1
  257. package/lib/utils/googleTranslate.js +1 -1
  258. package/lib/utils/graphqlUtils.js +1 -1
  259. package/lib/utils/imageUtils.js +1 -1
  260. package/lib/utils/index.d.ts +3 -0
  261. package/lib/utils/index.js +4 -1
  262. package/lib/utils/languageDetection.js +1 -1
  263. package/lib/utils/localeUtils.example.js +1 -1
  264. package/lib/utils/localeUtils.js +1 -1
  265. package/lib/utils/mediaAccess.d.ts +5 -0
  266. package/lib/utils/mediaAccess.js +57 -0
  267. package/lib/utils/middlewareUtils.js +1 -1
  268. package/lib/utils/nodeRealtime.d.ts +14 -0
  269. package/lib/utils/nodeRealtime.js +84 -0
  270. package/lib/utils/opaqueToken.d.ts +4 -0
  271. package/lib/utils/opaqueToken.js +7 -0
  272. package/lib/utils/queryBuilder.js +1 -1
  273. package/lib/utils/schemaUtils.js +1 -1
  274. package/lib/utils/sessionUtils.js +1 -1
  275. package/lib/utils/stripeUtils.d.ts +1 -1
  276. package/lib/utils/stripeUtils.js +2 -3
  277. package/lib/utils/stripeUtils.ts.bak +12 -0
  278. package/lib/utils/templateUtils.js +1 -1
  279. package/lib/utils/testUtils.js +1 -1
  280. package/lib/utils/translationQueue.example.js +1 -1
  281. package/lib/utils/translationQueue.js +1 -1
  282. package/lib/videoProcessing.js +1 -1
  283. package/package.json +24 -23
  284. package/lib/durableChat/conversations.d.ts +0 -62
  285. package/lib/durableChat/conversations.js +0 -729
  286. package/lib/durableChat/errors.d.ts +0 -6
  287. package/lib/durableChat/errors.js +0 -11
  288. package/lib/durableChat/events.d.ts +0 -22
  289. package/lib/durableChat/events.js +0 -50
  290. package/lib/durableChat/index.d.ts +0 -8
  291. package/lib/durableChat/index.js +0 -10
  292. package/lib/durableChat/membership.d.ts +0 -24
  293. package/lib/durableChat/membership.js +0 -85
  294. package/lib/durableChat/messageTypes.d.ts +0 -76
  295. package/lib/durableChat/messageTypes.js +0 -3
  296. package/lib/durableChat/messages.d.ts +0 -16
  297. package/lib/durableChat/messages.js +0 -257
  298. package/lib/durableChat/transaction.d.ts +0 -10
  299. package/lib/durableChat/transaction.js +0 -53
  300. package/lib/durableChat/types.d.ts +0 -81
  301. package/lib/durableChat/types.js +0 -3
@@ -410,4 +410,4 @@ const eventCategory = 'crud';
410
410
  return count > 0;
411
411
  };
412
412
 
413
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvY3J1ZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7bGl0ZXJhbH0gZnJvbSAnYXJhbmdvanMvYXFsJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHtidWlsZEZpbHRlckNsYXVzZX0gZnJvbSAnLi4vdXRpbHMvYXFsSGVscGVycy5qcyc7XG5pbXBvcnQge3VzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzLmpzJztcbmltcG9ydCB7cmVnaXN0cnl9IGZyb20gJy4uL3V0aWxzL2NvbGxlY3Rpb25SZWdpc3RyeS5qcyc7XG5cbmltcG9ydCB0eXBlIHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcbmltcG9ydCB0eXBlIHtGaWx0ZXJHcm91cH0gZnJvbSAnLi4vdHlwZXMvYXJhbmdvZGIudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5ID0gJ2NydWQnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIENSVUQgb3BlcmF0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENydWRPcHRpb25zIHtcbiAgcmVhZG9ubHkgc29ydD86IFJlYWRvbmx5QXJyYXk8e3JlYWRvbmx5IGZpZWxkOiBzdHJpbmc7IHJlYWRvbmx5IGRpcmVjdGlvbjogJ0FTQycgfCAnREVTQyd9PjtcbiAgcmVhZG9ubHkgbGltaXQ/OiB7cmVhZG9ubHkgZnJvbTogbnVtYmVyOyByZWFkb25seSB0bzogbnVtYmVyfTtcbiAgcmVhZG9ubHkgZmllbGRzPzogUmVhZG9ubHlBcnJheTxzdHJpbmc+OyAvLyBTZWxlY3Qgc3BlY2lmaWMgZmllbGRzXG4gIHJlYWRvbmx5IGluY2x1ZGVFZGdlcz86IFJlYWRvbmx5QXJyYXk8c3RyaW5nPjsgLy8gSW5jbHVkZSByZWxhdGVkIGRvY3VtZW50cyB2aWEgZWRnZXNcbiAgcmVhZG9ubHkgcHJpdmFjeT86IGJvb2xlYW47IC8vIEFwcGx5IHByaXZhY3kgY2hlY2tzIChkZWZhdWx0OiB0cnVlKVxuICByZWFkb25seSBvd25lcnNoaXA/OiBib29sZWFuOyAvLyBBcHBseSBvd25lcnNoaXAgY2hlY2tzIChkZWZhdWx0OiBmYWxzZSlcbiAgcmVhZG9ubHkgY3VzdG9tUXVlcmllcz86IFJlYWRvbmx5QXJyYXk8c3RyaW5nPjsgLy8gQWRkaXRpb25hbCBjdXN0b20gcXVlcnkgc3RyaW5nc1xuICByZWFkb25seSBjdXN0b21PYmplY3RzPzogUmVhZG9ubHlBcnJheTxzdHJpbmc+OyAvLyBBZGRpdGlvbmFsIGN1c3RvbSBvYmplY3Qgc2VsZWN0aW9uc1xufVxuXG4vKipcbiAqIEJ1aWxkIGZpbHRlciBjbGF1c2UgZnJvbSBmaWx0ZXJzIG9iamVjdCBvciBGaWx0ZXJHcm91cFxuICovXG5jb25zdCBidWlsZEZpbHRlcnMgPSAoXG4gIGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBGaWx0ZXJHcm91cCxcbiAgdmFyTmFtZTogc3RyaW5nID0gJ2RvYydcbik6IHN0cmluZyA9PiB7XG4gIC8vIElmIGl0J3MgYSBGaWx0ZXJHcm91cCB3aXRoIGxvZ2ljIGFuZCBjb25kaXRpb25zXG4gIGlmICgnbG9naWMnIGluIGZpbHRlcnMgJiYgJ2NvbmRpdGlvbnMnIGluIGZpbHRlcnMpIHtcbiAgICByZXR1cm4gYnVpbGRGaWx0ZXJDbGF1c2UoZmlsdGVycyBhcyBGaWx0ZXJHcm91cCwgdmFyTmFtZSk7XG4gIH1cblxuICAvLyBTaW1wbGUgb2JqZWN0IGZpbHRlcnNcbiAgY29uc3Qgc2ltcGxlRmlsdGVycyA9IGZpbHRlcnMgYXMgUmVjb3JkPHN0cmluZywgYW55PjtcbiAgY29uc3QgY29uZGl0aW9uczogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhzaW1wbGVGaWx0ZXJzKSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgY29uZGl0aW9ucy5wdXNoKGAke3Zhck5hbWV9LiR7a2V5fSA9PSBudWxsYCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25kaXRpb25zLnB1c2goYCR7dmFyTmFtZX0uJHtrZXl9ID09IFwiJHt2YWx1ZX1cImApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25kaXRpb25zLnB1c2goYCR7dmFyTmFtZX0uJHtrZXl9ID09ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25kaXRpb25zLmpvaW4oJyAmJiAnKTtcbn07XG5cbi8qKlxuICogQnVpbGQgc29ydCBjbGF1c2VcbiAqL1xuY29uc3QgYnVpbGRTb3J0ID0gKFxuICBzb3J0OiBSZWFkb25seUFycmF5PHtyZWFkb25seSBmaWVsZDogc3RyaW5nOyByZWFkb25seSBkaXJlY3Rpb246ICdBU0MnIHwgJ0RFU0MnfT4sXG4gIHZhck5hbWU6IHN0cmluZyA9ICdkb2MnXG4pOiBzdHJpbmcgPT4ge1xuICBpZiAoIXNvcnQgfHwgc29ydC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCBzb3J0UGFydHMgPSBzb3J0Lm1hcCgoe2ZpZWxkLCBkaXJlY3Rpb259KSA9PiBgJHt2YXJOYW1lfS4ke2ZpZWxkfSAke2RpcmVjdGlvbn1gKTtcbiAgcmV0dXJuIGBTT1JUICR7c29ydFBhcnRzLmpvaW4oJywgJyl9YDtcbn07XG5cbi8qKlxuICogQnVpbGQgbGltaXQgY2xhdXNlXG4gKi9cbmNvbnN0IGJ1aWxkTGltaXQgPSAobGltaXQ/OiB7cmVhZG9ubHkgZnJvbTogbnVtYmVyOyByZWFkb25seSB0bzogbnVtYmVyfSk6IHN0cmluZyA9PiB7XG4gIGlmICghbGltaXQpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCB7ZnJvbSwgdG99ID0gbGltaXQ7XG4gIGNvbnN0IGNvdW50ID0gdG8gLSBmcm9tO1xuICByZXR1cm4gYExJTUlUICR7ZnJvbX0sICR7Y291bnR9YDtcbn07XG5cbi8qKlxuICogQXBwbHkgcHJpdmFjeSBmaWx0ZXIgaWYgY29sbGVjdGlvbiBoYXMgcHJpdmFjeVxuICovXG5jb25zdCBhcHBseVByaXZhY3lGaWx0ZXIgPSAoXG4gIGNvbGxlY3Rpb246IHN0cmluZyxcbiAgc2Vzc2lvbklkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHZhck5hbWU6IHN0cmluZyA9ICdkb2MnXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBjb25maWcgPSByZWdpc3RyeS5nZXQoY29sbGVjdGlvbik7XG5cbiAgaWYgKCFjb25maWcgfHwgIWNvbmZpZy5oYXNQcml2YWN5KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLy8gSWYgbm8gc2Vzc2lvbiwgb25seSByZXR1cm4gcHVibGljIGl0ZW1zXG4gIGlmICghc2Vzc2lvbklkKSB7XG4gICAgcmV0dXJuIGAke3Zhck5hbWV9LnByaXZhY3kgPT0gXCJwdWJsaWNcImA7XG4gIH1cblxuICAvLyBSZXR1cm4gaXRlbXMgdGhhdCBhcmUgcHVibGljIE9SIG93bmVkIGJ5IHRoZSB1c2VyXG4gIHJldHVybiBgKCR7dmFyTmFtZX0ucHJpdmFjeSA9PSBcInB1YmxpY1wiIHx8ICR7dmFyTmFtZX0udXNlcklkID09IFwiJHtzZXNzaW9uSWR9XCIpYDtcbn07XG5cbi8qKlxuICogQXBwbHkgb3duZXJzaGlwIGZpbHRlclxuICovXG5jb25zdCBhcHBseU93bmVyc2hpcEZpbHRlciA9IChcbiAgc2Vzc2lvbklkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHZhck5hbWU6IHN0cmluZyA9ICdkb2MnXG4pOiBzdHJpbmcgPT4ge1xuICBpZiAoIXNlc3Npb25JZCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHJldHVybiBgJHt2YXJOYW1lfS51c2VySWQgPT0gXCIke3Nlc3Npb25JZH1cImA7XG59O1xuXG4vKipcbiAqIEdldCBhIHNpbmdsZSBpdGVtIGZyb20gYW55IGNvbGxlY3Rpb24gYnkgZmlsdGVyc1xuICovXG5leHBvcnQgY29uc3QgZ2V0SXRlbUJ5ID0gYXN5bmMgPFQgPSBhbnk+KFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBjb2xsZWN0aW9uOiBzdHJpbmcsXG4gIGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBGaWx0ZXJHcm91cCxcbiAgb3B0aW9uczogQ3J1ZE9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUIHwgbnVsbD4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0SXRlbUJ5JztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfSA9IHt9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtwcml2YWN5ID0gZmFsc2UsIG93bmVyc2hpcCA9IGZhbHNlLCBjdXN0b21RdWVyaWVzID0gW10sIGN1c3RvbU9iamVjdHMgPSBbXX0gPSBvcHRpb25zO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZU5hbWUpO1xuICAgIGNvbnN0IGZpbHRlckNsYXVzZSA9IGJ1aWxkRmlsdGVycyhmaWx0ZXJzLCAnZG9jJyk7XG4gICAgY29uc3QgY29uZGl0aW9uczogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmIChmaWx0ZXJDbGF1c2UpIHtcbiAgICAgIGNvbmRpdGlvbnMucHVzaChmaWx0ZXJDbGF1c2UpO1xuICAgIH1cblxuICAgIGlmIChwcml2YWN5KSB7XG4gICAgICBjb25zdCBwcml2YWN5RmlsdGVyID0gYXBwbHlQcml2YWN5RmlsdGVyKGNvbGxlY3Rpb24sIHNlc3Npb25JZCwgJ2RvYycpO1xuICAgICAgaWYgKHByaXZhY3lGaWx0ZXIpIHtcbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKHByaXZhY3lGaWx0ZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvd25lcnNoaXApIHtcbiAgICAgIGNvbnN0IG93bmVyc2hpcEZpbHRlciA9IGFwcGx5T3duZXJzaGlwRmlsdGVyKHNlc3Npb25JZCwgJ2RvYycpO1xuICAgICAgaWYgKG93bmVyc2hpcEZpbHRlcikge1xuICAgICAgICBjb25kaXRpb25zLnB1c2gob3duZXJzaGlwRmlsdGVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb2xsZWN0aW9uTGl0ZXJhbCA9IGxpdGVyYWwoY29sbGVjdGlvbik7XG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBjb25kaXRpb25zLmxlbmd0aCA+IDAgPyBsaXRlcmFsKGBGSUxURVIgJHtjb25kaXRpb25zLmpvaW4oJyAmJiAnKX1gKSA6IGxpdGVyYWwoJycpO1xuICAgIGNvbnN0IGN1c3RvbVF1ZXJpZXNMaXRlcmFsID0gY3VzdG9tUXVlcmllcy5sZW5ndGggPiAwID8gbGl0ZXJhbChjdXN0b21RdWVyaWVzLmpvaW4oJ1xcbicpKSA6IGxpdGVyYWwoJycpO1xuICAgIGNvbnN0IHJldHVyblZhbHVlID0gY3VzdG9tT2JqZWN0cy5sZW5ndGggPiAwXG4gICAgICA/IGxpdGVyYWwoYE1FUkdFKGRvYywgeyR7Y3VzdG9tT2JqZWN0cy5qb2luKCcsICcpfX0pYClcbiAgICAgIDogbGl0ZXJhbCgnZG9jJyk7XG5cbiAgICBjb25zdCBhcWxRdWVyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgICBGT1IgZG9jIElOICR7Y29sbGVjdGlvbkxpdGVyYWx9XG4gICAgICAgICR7d2hlcmVDbGF1c2V9XG4gICAgICAgICR7Y3VzdG9tUXVlcmllc0xpdGVyYWx9XG4gICAgICAgIExJTUlUIDFcbiAgICAgICAgUkVUVVJOICR7cmV0dXJuVmFsdWV9XG4gICAgYDtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KTtcbiAgICBjb25zdCBpdGVtID0gYXdhaXQgcmVzdWx0Lm5leHQoKTtcblxuICAgIHJldHVybiBpdGVtIHx8IG51bGw7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgIHBhcmFtczoge2NvbGxlY3Rpb24sIGZpbHRlcnN9XG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG4vKipcbiAqIEdldCBtdWx0aXBsZSBpdGVtcyBmcm9tIGFueSBjb2xsZWN0aW9uIGJ5IGZpbHRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGdldExpc3RCeSA9IGFzeW5jIDxUID0gYW55PihcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29sbGVjdGlvbjogc3RyaW5nLFxuICBmaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgRmlsdGVyR3JvdXAgPSB7fSxcbiAgb3B0aW9uczogQ3J1ZE9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldExpc3RCeSc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH0gPSB7fX0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgcHJpdmFjeSA9IGZhbHNlLFxuICAgIG93bmVyc2hpcCA9IGZhbHNlLFxuICAgIHNvcnQsXG4gICAgbGltaXQsXG4gICAgY3VzdG9tUXVlcmllcyA9IFtdLFxuICAgIGN1c3RvbU9iamVjdHMgPSBbXVxuICB9ID0gb3B0aW9ucztcblxuICB0cnkge1xuICAgIGNvbnN0IGRhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2VOYW1lKTtcbiAgICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlcnMoZmlsdGVycywgJ2RvYycpO1xuICAgIGNvbnN0IGNvbmRpdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAoZmlsdGVyQ2xhdXNlKSB7XG4gICAgICBjb25kaXRpb25zLnB1c2goZmlsdGVyQ2xhdXNlKTtcbiAgICB9XG5cbiAgICBpZiAocHJpdmFjeSkge1xuICAgICAgY29uc3QgcHJpdmFjeUZpbHRlciA9IGFwcGx5UHJpdmFjeUZpbHRlcihjb2xsZWN0aW9uLCBzZXNzaW9uSWQsICdkb2MnKTtcbiAgICAgIGlmIChwcml2YWN5RmlsdGVyKSB7XG4gICAgICAgIGNvbmRpdGlvbnMucHVzaChwcml2YWN5RmlsdGVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3duZXJzaGlwKSB7XG4gICAgICBjb25zdCBvd25lcnNoaXBGaWx0ZXIgPSBhcHBseU93bmVyc2hpcEZpbHRlcihzZXNzaW9uSWQsICdkb2MnKTtcbiAgICAgIGlmIChvd25lcnNoaXBGaWx0ZXIpIHtcbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKG93bmVyc2hpcEZpbHRlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29sbGVjdGlvbkxpdGVyYWwgPSBsaXRlcmFsKGNvbGxlY3Rpb24pO1xuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gY29uZGl0aW9ucy5sZW5ndGggPiAwID8gbGl0ZXJhbChgRklMVEVSICR7Y29uZGl0aW9ucy5qb2luKCcgJiYgJyl9YCkgOiBsaXRlcmFsKCcnKTtcbiAgICBjb25zdCBzb3J0Q2xhdXNlID0gc29ydCA/IGxpdGVyYWwoYnVpbGRTb3J0KHNvcnQsICdkb2MnKSkgOiBsaXRlcmFsKCcnKTtcbiAgICBjb25zdCBsaW1pdENsYXVzZSA9IGxpbWl0ID8gbGl0ZXJhbChidWlsZExpbWl0KGxpbWl0KSkgOiBsaXRlcmFsKCcnKTtcbiAgICBjb25zdCBjdXN0b21RdWVyaWVzTGl0ZXJhbCA9IGN1c3RvbVF1ZXJpZXMubGVuZ3RoID4gMCA/IGxpdGVyYWwoY3VzdG9tUXVlcmllcy5qb2luKCdcXG4nKSkgOiBsaXRlcmFsKCcnKTtcbiAgICBjb25zdCByZXR1cm5WYWx1ZSA9IGN1c3RvbU9iamVjdHMubGVuZ3RoID4gMFxuICAgICAgPyBsaXRlcmFsKGBNRVJHRShkb2MsIHske2N1c3RvbU9iamVjdHMuam9pbignLCAnKX19KWApXG4gICAgICA6IGxpdGVyYWwoJ2RvYycpO1xuXG4gICAgY29uc3QgYXFsUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgICAgRk9SIGRvYyBJTiAke2NvbGxlY3Rpb25MaXRlcmFsfVxuICAgICAgICAke3doZXJlQ2xhdXNlfVxuICAgICAgICAke2N1c3RvbVF1ZXJpZXNMaXRlcmFsfVxuICAgICAgICAke3NvcnRDbGF1c2V9XG4gICAgICAgICR7bGltaXRDbGF1c2V9XG4gICAgICAgIFJFVFVSTiAke3JldHVyblZhbHVlfVxuICAgIGA7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSk7XG4gICAgcmV0dXJuIGF3YWl0IHJlc3VsdC5hbGwoKSBhcyBUW107XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgIHBhcmFtczoge2NvbGxlY3Rpb24sIGZpbHRlcnN9XG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG4vKipcbiAqIEFkZCBhIG5ldyBpdGVtIHRvIGFueSBjb2xsZWN0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRJdGVtID0gYXN5bmMgPFQgPSBhbnk+KFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBjb2xsZWN0aW9uOiBzdHJpbmcsXG4gIGRhdGE6IFBhcnRpYWw8VD4sXG4gIG9wdGlvbnM6IHtyZWFkb25seSBob29rcz86IGJvb2xlYW59ID0ge31cbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkSXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3Qge2hvb2tzID0gZmFsc2V9ID0gb3B0aW9ucztcblxuICB0cnkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHJlZ2lzdHJ5LmdldChjb2xsZWN0aW9uKTtcbiAgICBsZXQgaW5zZXJ0RGF0YTogYW55ID0gey4uLmRhdGF9O1xuXG4gICAgLy8gQXBwbHkgcGFyc2UgYWRhcHRlciBpZiBhdmFpbGFibGVcbiAgICBpZiAoY29uZmlnPy5hZGFwdGVycz8ucGFyc2UpIHtcbiAgICAgIGluc2VydERhdGEgPSBjb25maWcuYWRhcHRlcnMucGFyc2UoaW5zZXJ0RGF0YSk7XG4gICAgfVxuXG4gICAgLy8gQ2FsbCBiZWZvcmVJbnNlcnQgaG9va1xuICAgIGlmIChob29rcyAmJiBjb25maWc/Lmhvb2tzPy5iZWZvcmVJbnNlcnQpIHtcbiAgICAgIGluc2VydERhdGEgPSBhd2FpdCBjb25maWcuaG9va3MuYmVmb3JlSW5zZXJ0KGNvbnRleHQsIGluc2VydERhdGEpO1xuICAgIH1cblxuICAgIC8vIEFkZCB0aW1lc3RhbXBzICh0eXBlLXNhZmUgYXBwcm9hY2gpXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAoY29uZmlnPy50aW1lc3RhbXBzPy5jcmVhdGVkKSB7XG4gICAgICBpbnNlcnREYXRhID0gey4uLmluc2VydERhdGEsIFtjb25maWcudGltZXN0YW1wcy5jcmVhdGVkXTogbm93fTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZz8udGltZXN0YW1wcz8udXBkYXRlZCkge1xuICAgICAgaW5zZXJ0RGF0YSA9IHsuLi5pbnNlcnREYXRhLCBbY29uZmlnLnRpbWVzdGFtcHMudXBkYXRlZF06IG5vd307XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZU5hbWUpO1xuICAgIGNvbnN0IGNvbGxlY3Rpb25SZWYgPSBkYXRhYmFzZS5jb2xsZWN0aW9uKGNvbGxlY3Rpb24pO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbGxlY3Rpb25SZWYuc2F2ZShpbnNlcnREYXRhIGFzIGFueSwge3JldHVybk5ldzogdHJ1ZX0pO1xuICAgIGxldCBpdGVtID0gcmVzdWx0Lm5ldyBhcyBUO1xuXG4gICAgLy8gQ2FsbCBhZnRlckluc2VydCBob29rXG4gICAgaWYgKGhvb2tzICYmIGNvbmZpZz8uaG9va3M/LmFmdGVySW5zZXJ0KSB7XG4gICAgICBpdGVtID0gYXdhaXQgY29uZmlnLmhvb2tzLmFmdGVySW5zZXJ0KGNvbnRleHQsIGl0ZW0pO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtjb2xsZWN0aW9ufVxuICAgIH0sIGVycm9yIGFzIEVycm9yLCBjb250ZXh0KTtcbiAgfVxufTtcblxuLyoqXG4gKiBVcGRhdGUgYW4gaXRlbSBpbiBhbnkgY29sbGVjdGlvblxuICovXG5leHBvcnQgY29uc3QgdXBkYXRlSXRlbSA9IGFzeW5jIDxUID0gYW55PihcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29sbGVjdGlvbjogc3RyaW5nLFxuICBpZDogc3RyaW5nLFxuICB1cGRhdGVzOiBQYXJ0aWFsPFQ+LFxuICBvcHRpb25zOiB7cmVhZG9ubHkgaG9va3M/OiBib29sZWFuOyByZWFkb25seSBvd25lcnNoaXA/OiBib29sZWFufSA9IHt9XG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ3VwZGF0ZUl0ZW0nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9ID0ge319ID0gY29udGV4dDtcbiAgY29uc3Qge2hvb2tzID0gZmFsc2UsIG93bmVyc2hpcCA9IGZhbHNlfSA9IG9wdGlvbnM7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjb25maWcgPSByZWdpc3RyeS5nZXQoY29sbGVjdGlvbik7XG4gICAgbGV0IHVwZGF0ZURhdGE6IGFueSA9IHsuLi51cGRhdGVzfTtcblxuICAgIC8vIEFwcGx5IHBhcnNlIGFkYXB0ZXIgaWYgYXZhaWxhYmxlXG4gICAgaWYgKGNvbmZpZz8uYWRhcHRlcnM/LnBhcnNlKSB7XG4gICAgICB1cGRhdGVEYXRhID0gY29uZmlnLmFkYXB0ZXJzLnBhcnNlKHVwZGF0ZURhdGEpO1xuICAgIH1cblxuICAgIC8vIENhbGwgYmVmb3JlVXBkYXRlIGhvb2tcbiAgICBpZiAoaG9va3MgJiYgY29uZmlnPy5ob29rcz8uYmVmb3JlVXBkYXRlKSB7XG4gICAgICB1cGRhdGVEYXRhID0gYXdhaXQgY29uZmlnLmhvb2tzLmJlZm9yZVVwZGF0ZShjb250ZXh0LCBpZCwgdXBkYXRlRGF0YSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHVwZGF0ZWQgdGltZXN0YW1wICh0eXBlLXNhZmUgYXBwcm9hY2gpXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAoY29uZmlnPy50aW1lc3RhbXBzPy51cGRhdGVkKSB7XG4gICAgICB1cGRhdGVEYXRhID0gey4uLnVwZGF0ZURhdGEsIFtjb25maWcudGltZXN0YW1wcy51cGRhdGVkXTogbm93fTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlTmFtZSk7XG4gICAgY29uc3QgZG9jSWQgPSBpZC5pbmNsdWRlcygnLycpID8gaWQgOiBgJHtjb2xsZWN0aW9ufS8ke2lkfWA7XG5cbiAgICAvLyBCdWlsZCBxdWVyeSB3aXRoIG93bmVyc2hpcCBjaGVjayBpZiBuZWVkZWRcbiAgICBsZXQgYXFsUXVlcnk6IEFxbFF1ZXJ5O1xuICAgIGNvbnN0IGNvbGxlY3Rpb25MaXRlcmFsID0gbGl0ZXJhbChjb2xsZWN0aW9uKTtcbiAgICBpZiAob3duZXJzaGlwICYmIHNlc3Npb25JZCkge1xuICAgICAgYXFsUXVlcnkgPSBhcWxgRk9SIGRvYyBJTiAke2NvbGxlY3Rpb25MaXRlcmFsfVxuICAgICAgICBGSUxURVIgZG9jLl9pZCA9PSAke2RvY0lkfSAmJiBkb2MudXNlcklkID09ICR7c2Vzc2lvbklkfVxuICAgICAgICBMSU1JVCAxXG4gICAgICAgIFVQREFURSBkb2MgV0lUSCAke3VwZGF0ZURhdGF9IElOICR7Y29sbGVjdGlvbkxpdGVyYWx9XG4gICAgICAgIFJFVFVSTiBORVdgO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcWxRdWVyeSA9IGFxbGBGT1IgZG9jIElOICR7Y29sbGVjdGlvbkxpdGVyYWx9XG4gICAgICAgIEZJTFRFUiBkb2MuX2lkID09ICR7ZG9jSWR9XG4gICAgICAgIExJTUlUIDFcbiAgICAgICAgVVBEQVRFIGRvYyBXSVRIICR7dXBkYXRlRGF0YX0gSU4gJHtjb2xsZWN0aW9uTGl0ZXJhbH1cbiAgICAgICAgUkVUVVJOIE5FV2A7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGF0YWJhc2UucXVlcnkoYXFsUXVlcnkpO1xuICAgIGxldCBpdGVtID0gYXdhaXQgcmVzdWx0Lm5leHQoKTtcblxuICAgIC8vIENhbGwgYWZ0ZXJVcGRhdGUgaG9va1xuICAgIGlmIChob29rcyAmJiBjb25maWc/Lmhvb2tzPy5hZnRlclVwZGF0ZSkge1xuICAgICAgaXRlbSA9IGF3YWl0IGNvbmZpZy5ob29rcy5hZnRlclVwZGF0ZShjb250ZXh0LCBpdGVtKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SLFxuICAgICAgcGFyYW1zOiB7Y29sbGVjdGlvbiwgaWR9XG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG4vKipcbiAqIERlbGV0ZSBhbiBpdGVtIGZyb20gYW55IGNvbGxlY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGRlbGV0ZUl0ZW0gPSBhc3luYyA8VCA9IGFueT4oXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGNvbGxlY3Rpb246IHN0cmluZyxcbiAgaWQ6IHN0cmluZyxcbiAgb3B0aW9uczoge1xuICAgIHJlYWRvbmx5IHNvZnQ/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IGNhc2NhZGU/OiBSZWFkb25seUFycmF5PHN0cmluZz47XG4gICAgcmVhZG9ubHkgb3duZXJzaGlwPzogYm9vbGVhbjtcbiAgfSA9IHt9XG4pOiBQcm9taXNlPFQgfCBudWxsPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdkZWxldGVJdGVtJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfSA9IHt9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtzb2Z0ID0gZmFsc2UsIGNhc2NhZGUgPSBbXSwgb3duZXJzaGlwID0gZmFsc2V9ID0gb3B0aW9ucztcblxuICB0cnkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHJlZ2lzdHJ5LmdldChjb2xsZWN0aW9uKTtcbiAgICBjb25zdCBkYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlTmFtZSk7XG4gICAgY29uc3QgZG9jSWQgPSBpZC5pbmNsdWRlcygnLycpID8gaWQgOiBgJHtjb2xsZWN0aW9ufS8ke2lkfWA7XG4gICAgY29uc3QgZG9jS2V5ID0gaWQuaW5jbHVkZXMoJy8nKSA/IGlkLnNwbGl0KCcvJykucG9wKCkgfHwgJycgOiBpZDtcbiAgICBsZXQgZGVsZXRlZEl0ZW06IFQgfCBudWxsID0gbnVsbDtcblxuICAgIC8vIENhbGwgYmVmb3JlRGVsZXRlIGhvb2tcbiAgICBpZiAoY29uZmlnPy5ob29rcz8uYmVmb3JlRGVsZXRlKSB7XG4gICAgICBhd2FpdCBjb25maWcuaG9va3MuYmVmb3JlRGVsZXRlKGNvbnRleHQsIGRvY0lkKTtcbiAgICB9XG5cbiAgICAvLyBTb2Z0IGRlbGV0ZVxuICAgIGlmIChzb2Z0KSB7XG4gICAgICBjb25zdCB1cGRhdGUgPSB7ZGVsZXRlZDogdHJ1ZSwgZGVsZXRlZEF0OiBEYXRlLm5vdygpfTtcbiAgICAgIGNvbnN0IGNvbGxlY3Rpb25MaXRlcmFsID0gbGl0ZXJhbChjb2xsZWN0aW9uKTtcbiAgICAgIGNvbnN0IGFxbFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgZG9jIElOICR7Y29sbGVjdGlvbkxpdGVyYWx9XG4gICAgICAgIEZJTFRFUiBkb2MuX2lkID09ICR7ZG9jSWR9XG4gICAgICAgIExJTUlUIDFcbiAgICAgICAgVVBEQVRFIGRvYyBXSVRIICR7dXBkYXRlfSBJTiAke2NvbGxlY3Rpb25MaXRlcmFsfVxuICAgICAgICBSRVRVUk4gTkVXYDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KTtcbiAgICAgIGRlbGV0ZWRJdGVtID0gYXdhaXQgcmVzdWx0Lm5leHQoKSBhcyBUIHwgbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSGFyZCBkZWxldGUgd2l0aCBjYXNjYWRlXG4gICAgICBjb25zdCBlZGdlc1RvQ2FzY2FkZSA9IGNhc2NhZGUubGVuZ3RoID4gMCA/IGNhc2NhZGUgOiAoY29uZmlnPy5jYXNjYWRlRWRnZXMgfHwgW10pO1xuXG4gICAgICAvLyBEZWxldGUgdGhlIGRvY3VtZW50XG4gICAgICBpZiAob3duZXJzaGlwICYmIHNlc3Npb25JZCkge1xuICAgICAgICBjb25zdCBhcWxRdWVyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgICAgICAgRk9SIGRvYyBJTiAke2xpdGVyYWwoY29sbGVjdGlvbil9XG4gICAgICAgICAgICBGSUxURVIgZG9jLl9pZCA9PSAke2RvY0lkfSAmJiBkb2MudXNlcklkID09ICR7c2Vzc2lvbklkfVxuICAgICAgICAgICAgUkVNT1ZFIGRvYyBJTiAke2xpdGVyYWwoY29sbGVjdGlvbil9XG4gICAgICAgICAgICBSRVRVUk4gT0xEXG4gICAgICAgIGA7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KTtcbiAgICAgICAgZGVsZXRlZEl0ZW0gPSBhd2FpdCByZXN1bHQubmV4dCgpIGFzIFQgfCBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYXFsUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYFJFTU9WRSAke2RvY0tleX0gSU4gJHtsaXRlcmFsKGNvbGxlY3Rpb24pfSBSRVRVUk4gT0xEYDtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGF0YWJhc2UucXVlcnkoYXFsUXVlcnkpO1xuICAgICAgICBkZWxldGVkSXRlbSA9IGF3YWl0IHJlc3VsdC5uZXh0KCkgYXMgVCB8IG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIERlbGV0ZSByZWxhdGVkIGVkZ2VzIG9ubHkgYWZ0ZXIgdGhlIGRvY3VtZW50IGRlbGV0ZSBzdWNjZWVkcywgc28gb3duZXJzaGlwIGNoZWNrcyBwcm90ZWN0IGNhc2NhZGVzIHRvby5cbiAgICAgIGlmIChkZWxldGVkSXRlbSkge1xuICAgICAgICBmb3IgKGNvbnN0IGVkZ2VUeXBlIG9mIGVkZ2VzVG9DYXNjYWRlKSB7XG4gICAgICAgICAgLy8gVXNlIHN0cmluZyBmb3IgZWRnZSBjb2xsZWN0aW9uIG5hbWUgKHNhZmUpXG4gICAgICAgICAgY29uc3QgZWRnZVF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICAgICAgICAgIEZPUiBlIElOICR7bGl0ZXJhbChlZGdlVHlwZSl9XG4gICAgICAgICAgICAgIEZJTFRFUiBlLl90byA9PSAke2RvY0lkfSB8fCBlLl9mcm9tID09ICR7ZG9jSWR9XG4gICAgICAgICAgICAgIFJFTU9WRSBlIElOICR7bGl0ZXJhbChlZGdlVHlwZSl9XG4gICAgICAgICAgYDtcbiAgICAgICAgICBhd2FpdCBkYXRhYmFzZS5xdWVyeShlZGdlUXVlcnkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2FsbCBhZnRlckRlbGV0ZSBob29rXG4gICAgaWYgKGNvbmZpZz8uaG9va3M/LmFmdGVyRGVsZXRlKSB7XG4gICAgICBhd2FpdCBjb25maWcuaG9va3MuYWZ0ZXJEZWxldGUoY29udGV4dCwgZG9jSWQpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVkSXRlbTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SLFxuICAgICAgcGFyYW1zOiB7Y29sbGVjdGlvbiwgaWR9XG4gICAgfSwgZXJyb3IgYXMgRXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG4vKipcbiAqIENvdW50IGl0ZW1zIGluIGFueSBjb2xsZWN0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBjb3VudEl0ZW1zID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBjb2xsZWN0aW9uOiBzdHJpbmcsXG4gIGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBGaWx0ZXJHcm91cCA9IHt9XG4pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnY291bnRJdGVtcyc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcblxuICB0cnkge1xuICAgIGNvbnN0IGRhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2VOYW1lKTtcbiAgICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlcnMoZmlsdGVycywgJ2RvYycpO1xuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gZmlsdGVyQ2xhdXNlID8gbGl0ZXJhbChgRklMVEVSICR7ZmlsdGVyQ2xhdXNlfWApIDogbGl0ZXJhbCgnJyk7XG5cbiAgICBjb25zdCBhcWxRdWVyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgICBMRVQgaXRlbXMgPSAoXG4gICAgICAgIEZPUiBkb2MgSU4gJHtsaXRlcmFsKGNvbGxlY3Rpb24pfVxuICAgICAgICAgICR7d2hlcmVDbGF1c2V9XG4gICAgICAgICAgUkVUVVJOIGRvY1xuICAgICAgKVxuICAgICAgUkVUVVJOIExFTkdUSChpdGVtcylcbiAgICBgO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGF0YWJhc2UucXVlcnkoYXFsUXVlcnkpO1xuICAgIHJldHVybiBhd2FpdCByZXN1bHQubmV4dCgpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtjb2xsZWN0aW9uLCBmaWx0ZXJzfVxuICAgIH0sIGVycm9yIGFzIEVycm9yLCBjb250ZXh0KTtcbiAgfVxufTtcblxuLyoqXG4gKiBDaGVjayBpZiBpdGVtIGV4aXN0c1xuICovXG5leHBvcnQgY29uc3QgaXRlbUV4aXN0cyA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29sbGVjdGlvbjogc3RyaW5nLFxuICBmaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgRmlsdGVyR3JvdXBcbik6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBjb3VudCA9IGF3YWl0IGNvdW50SXRlbXMoY29udGV4dCwgY29sbGVjdGlvbiwgZmlsdGVycyk7XG4gIHJldHVybiBjb3VudCA+IDA7XG59O1xuIl0sIm5hbWVzIjpbImFxbCIsImxpdGVyYWwiLCJFcnJvclR5cGVzIiwibG9nRXJyb3IiLCJidWlsZEZpbHRlckNsYXVzZSIsInVzZURiIiwicmVnaXN0cnkiLCJldmVudENhdGVnb3J5IiwiYnVpbGRGaWx0ZXJzIiwiZmlsdGVycyIsInZhck5hbWUiLCJzaW1wbGVGaWx0ZXJzIiwiY29uZGl0aW9ucyIsImtleSIsInZhbHVlIiwiT2JqZWN0IiwiZW50cmllcyIsInB1c2giLCJKU09OIiwic3RyaW5naWZ5Iiwiam9pbiIsImJ1aWxkU29ydCIsInNvcnQiLCJsZW5ndGgiLCJzb3J0UGFydHMiLCJtYXAiLCJmaWVsZCIsImRpcmVjdGlvbiIsImJ1aWxkTGltaXQiLCJsaW1pdCIsImZyb20iLCJ0byIsImNvdW50IiwiYXBwbHlQcml2YWN5RmlsdGVyIiwiY29sbGVjdGlvbiIsInNlc3Npb25JZCIsImNvbmZpZyIsImdldCIsImhhc1ByaXZhY3kiLCJhcHBseU93bmVyc2hpcEZpbHRlciIsImdldEl0ZW1CeSIsImNvbnRleHQiLCJvcHRpb25zIiwiYWN0aW9uIiwiZGF0YWJhc2VOYW1lIiwic2Vzc2lvbiIsInVzZXJJZCIsInByaXZhY3kiLCJvd25lcnNoaXAiLCJjdXN0b21RdWVyaWVzIiwiY3VzdG9tT2JqZWN0cyIsImRhdGFiYXNlIiwiZmlsdGVyQ2xhdXNlIiwicHJpdmFjeUZpbHRlciIsIm93bmVyc2hpcEZpbHRlciIsImNvbGxlY3Rpb25MaXRlcmFsIiwid2hlcmVDbGF1c2UiLCJjdXN0b21RdWVyaWVzTGl0ZXJhbCIsInJldHVyblZhbHVlIiwiYXFsUXVlcnkiLCJyZXN1bHQiLCJxdWVyeSIsIml0ZW0iLCJuZXh0IiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIiwiREFUQUJBU0VfRVJST1IiLCJwYXJhbXMiLCJnZXRMaXN0QnkiLCJzb3J0Q2xhdXNlIiwibGltaXRDbGF1c2UiLCJhbGwiLCJhZGRJdGVtIiwiZGF0YSIsImhvb2tzIiwiaW5zZXJ0RGF0YSIsImFkYXB0ZXJzIiwicGFyc2UiLCJiZWZvcmVJbnNlcnQiLCJub3ciLCJEYXRlIiwidGltZXN0YW1wcyIsImNyZWF0ZWQiLCJ1cGRhdGVkIiwiY29sbGVjdGlvblJlZiIsInNhdmUiLCJyZXR1cm5OZXciLCJuZXciLCJhZnRlckluc2VydCIsInVwZGF0ZUl0ZW0iLCJpZCIsInVwZGF0ZXMiLCJ1cGRhdGVEYXRhIiwiYmVmb3JlVXBkYXRlIiwiZG9jSWQiLCJpbmNsdWRlcyIsImFmdGVyVXBkYXRlIiwiZGVsZXRlSXRlbSIsInNvZnQiLCJjYXNjYWRlIiwiZG9jS2V5Iiwic3BsaXQiLCJwb3AiLCJkZWxldGVkSXRlbSIsImJlZm9yZURlbGV0ZSIsInVwZGF0ZSIsImRlbGV0ZWQiLCJkZWxldGVkQXQiLCJlZGdlc1RvQ2FzY2FkZSIsImNhc2NhZGVFZGdlcyIsImVkZ2VUeXBlIiwiZWRnZVF1ZXJ5IiwiYWZ0ZXJEZWxldGUiLCJjb3VudEl0ZW1zIiwiaXRlbUV4aXN0cyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsR0FBRyxRQUFPLFdBQVc7QUFDN0IsU0FBUUMsT0FBTyxRQUFPLGVBQWU7QUFDckMsU0FBUUMsVUFBVSxRQUFPLDBCQUEwQjtBQUNuRCxTQUFRQyxRQUFRLFFBQU8sNkJBQTZCO0FBQ3BELFNBQVFDLGlCQUFpQixRQUFPLHlCQUF5QjtBQUN6RCxTQUFRQyxLQUFLLFFBQU8sNEJBQTRCO0FBQ2hELFNBQVFDLFFBQVEsUUFBTyxpQ0FBaUM7QUFNeEQsTUFBTUMsZ0JBQWdCO0FBZ0J0Qjs7Q0FFQyxHQUNELE1BQU1DLGVBQWUsQ0FDbkJDLFNBQ0FDLFVBQWtCLEtBQUs7SUFFdkIsa0RBQWtEO0lBQ2xELElBQUksV0FBV0QsV0FBVyxnQkFBZ0JBLFNBQVM7UUFDakQsT0FBT0wsa0JBQWtCSyxTQUF3QkM7SUFDbkQ7SUFFQSx3QkFBd0I7SUFDeEIsTUFBTUMsZ0JBQWdCRjtJQUN0QixNQUFNRyxhQUF1QixFQUFFO0lBRS9CLEtBQUssTUFBTSxDQUFDQyxLQUFLQyxNQUFNLElBQUlDLE9BQU9DLE9B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
413
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9jcnVkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtsaXRlcmFsfSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tICcuLi90eXBlcy9lcnJvci50eXBlcy5qcyc7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5pbXBvcnQge2J1aWxkRmlsdGVyQ2xhdXNlfSBmcm9tICcuLi91dGlscy9hcWxIZWxwZXJzLmpzJztcbmltcG9ydCB7dXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuaW1wb3J0IHtyZWdpc3RyeX0gZnJvbSAnLi4vdXRpbHMvY29sbGVjdGlvblJlZ2lzdHJ5LmpzJztcblxuaW1wb3J0IHR5cGUge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuaW1wb3J0IHR5cGUge0ZpbHRlckdyb3VwfSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYi50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnkgPSAnY3J1ZCc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgQ1JVRCBvcGVyYXRpb25zXG4gKi9cbmV4cG9ydCB0eXBlIENydWRPcHRpb25zID0gUmVhZG9ubHk8e1xuICByZWFkb25seSBzb3J0PzogUmVhZG9ubHlBcnJheTx7cmVhZG9ubHkgZmllbGQ6IHN0cmluZzsgcmVhZG9ubHkgZGlyZWN0aW9uOiAnQVNDJyB8ICdERVNDJ30+O1xuICByZWFkb25seSBsaW1pdD86IHtyZWFkb25seSBmcm9tOiBudW1iZXI7IHJlYWRvbmx5IHRvOiBudW1iZXJ9O1xuICByZWFkb25seSBmaWVsZHM/OiBSZWFkb25seUFycmF5PHN0cmluZz47IC8vIFNlbGVjdCBzcGVjaWZpYyBmaWVsZHNcbiAgcmVhZG9ubHkgaW5jbHVkZUVkZ2VzPzogUmVhZG9ubHlBcnJheTxzdHJpbmc+OyAvLyBJbmNsdWRlIHJlbGF0ZWQgZG9jdW1lbnRzIHZpYSBlZGdlc1xuICByZWFkb25seSBwcml2YWN5PzogYm9vbGVhbjsgLy8gQXBwbHkgcHJpdmFjeSBjaGVja3MgKGRlZmF1bHQ6IHRydWUpXG4gIHJlYWRvbmx5IG93bmVyc2hpcD86IGJvb2xlYW47IC8vIEFwcGx5IG93bmVyc2hpcCBjaGVja3MgKGRlZmF1bHQ6IGZhbHNlKVxuICByZWFkb25seSBjdXN0b21RdWVyaWVzPzogUmVhZG9ubHlBcnJheTxzdHJpbmc+OyAvLyBBZGRpdGlvbmFsIGN1c3RvbSBxdWVyeSBzdHJpbmdzXG4gIHJlYWRvbmx5IGN1c3RvbU9iamVjdHM/OiBSZWFkb25seUFycmF5PHN0cmluZz47IC8vIEFkZGl0aW9uYWwgY3VzdG9tIG9iamVjdCBzZWxlY3Rpb25zXG59PjtcblxuLyoqXG4gKiBCdWlsZCBmaWx0ZXIgY2xhdXNlIGZyb20gZmlsdGVycyBvYmplY3Qgb3IgRmlsdGVyR3JvdXBcbiAqL1xuY29uc3QgYnVpbGRGaWx0ZXJzID0gKFxuICBmaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgRmlsdGVyR3JvdXAsXG4gIHZhck5hbWU6IHN0cmluZyA9ICdkb2MnXG4pOiBzdHJpbmcgPT4ge1xuICAvLyBJZiBpdCdzIGEgRmlsdGVyR3JvdXAgd2l0aCBsb2dpYyBhbmQgY29uZGl0aW9uc1xuICBpZiAoJ2xvZ2ljJyBpbiBmaWx0ZXJzICYmICdjb25kaXRpb25zJyBpbiBmaWx0ZXJzKSB7XG4gICAgcmV0dXJuIGJ1aWxkRmlsdGVyQ2xhdXNlKGZpbHRlcnMgYXMgRmlsdGVyR3JvdXAsIHZhck5hbWUpO1xuICB9XG5cbiAgLy8gU2ltcGxlIG9iamVjdCBmaWx0ZXJzXG4gIGNvbnN0IHNpbXBsZUZpbHRlcnMgPSBmaWx0ZXJzIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGNvbnN0IGNvbmRpdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc2ltcGxlRmlsdGVycykpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgIGNvbmRpdGlvbnMucHVzaChgJHt2YXJOYW1lfS4ke2tleX0gPT0gbnVsbGApO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uZGl0aW9ucy5wdXNoKGAke3Zhck5hbWV9LiR7a2V5fSA9PSBcIiR7dmFsdWV9XCJgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZGl0aW9ucy5wdXNoKGAke3Zhck5hbWV9LiR7a2V5fSA9PSAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uZGl0aW9ucy5qb2luKCcgJiYgJyk7XG59O1xuXG4vKipcbiAqIEJ1aWxkIHNvcnQgY2xhdXNlXG4gKi9cbmNvbnN0IGJ1aWxkU29ydCA9IChcbiAgc29ydDogUmVhZG9ubHlBcnJheTx7cmVhZG9ubHkgZmllbGQ6IHN0cmluZzsgcmVhZG9ubHkgZGlyZWN0aW9uOiAnQVNDJyB8ICdERVNDJ30+LFxuICB2YXJOYW1lOiBzdHJpbmcgPSAnZG9jJ1xuKTogc3RyaW5nID0+IHtcbiAgaWYgKCFzb3J0IHx8IHNvcnQubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3Qgc29ydFBhcnRzID0gc29ydC5tYXAoKHtmaWVsZCwgZGlyZWN0aW9ufSkgPT4gYCR7dmFyTmFtZX0uJHtmaWVsZH0gJHtkaXJlY3Rpb259YCk7XG4gIHJldHVybiBgU09SVCAke3NvcnRQYXJ0cy5qb2luKCcsICcpfWA7XG59O1xuXG4vKipcbiAqIEJ1aWxkIGxpbWl0IGNsYXVzZVxuICovXG5jb25zdCBidWlsZExpbWl0ID0gKGxpbWl0Pzoge3JlYWRvbmx5IGZyb206IG51bWJlcjsgcmVhZG9ubHkgdG86IG51bWJlcn0pOiBzdHJpbmcgPT4ge1xuICBpZiAoIWxpbWl0KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3Qge2Zyb20sIHRvfSA9IGxpbWl0O1xuICBjb25zdCBjb3VudCA9IHRvIC0gZnJvbTtcbiAgcmV0dXJuIGBMSU1JVCAke2Zyb219LCAke2NvdW50fWA7XG59O1xuXG4vKipcbiAqIEFwcGx5IHByaXZhY3kgZmlsdGVyIGlmIGNvbGxlY3Rpb24gaGFzIHByaXZhY3lcbiAqL1xuY29uc3QgYXBwbHlQcml2YWN5RmlsdGVyID0gKFxuICBjb2xsZWN0aW9uOiBzdHJpbmcsXG4gIHNlc3Npb25JZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICB2YXJOYW1lOiBzdHJpbmcgPSAnZG9jJ1xuKTogc3RyaW5nID0+IHtcbiAgY29uc3QgY29uZmlnID0gcmVnaXN0cnkuZ2V0KGNvbGxlY3Rpb24pO1xuXG4gIGlmICghY29uZmlnIHx8ICFjb25maWcuaGFzUHJpdmFjeSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIElmIG5vIHNlc3Npb24sIG9ubHkgcmV0dXJuIHB1YmxpYyBpdGVtc1xuICBpZiAoIXNlc3Npb25JZCkge1xuICAgIHJldHVybiBgJHt2YXJOYW1lfS5wcml2YWN5ID09IFwicHVibGljXCJgO1xuICB9XG5cbiAgLy8gUmV0dXJuIGl0ZW1zIHRoYXQgYXJlIHB1YmxpYyBPUiBvd25lZCBieSB0aGUgdXNlclxuICByZXR1cm4gYCgke3Zhck5hbWV9LnByaXZhY3kgPT0gXCJwdWJsaWNcIiB8fCAke3Zhck5hbWV9LnVzZXJJZCA9PSBcIiR7c2Vzc2lvbklkfVwiKWA7XG59O1xuXG4vKipcbiAqIEFwcGx5IG93bmVyc2hpcCBmaWx0ZXJcbiAqL1xuY29uc3QgYXBwbHlPd25lcnNoaXBGaWx0ZXIgPSAoXG4gIHNlc3Npb25JZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICB2YXJOYW1lOiBzdHJpbmcgPSAnZG9jJ1xuKTogc3RyaW5nID0+IHtcbiAgaWYgKCFzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZXR1cm4gYCR7dmFyTmFtZX0udXNlcklkID09IFwiJHtzZXNzaW9uSWR9XCJgO1xufTtcblxuLyoqXG4gKiBHZXQgYSBzaW5nbGUgaXRlbSBmcm9tIGFueSBjb2xsZWN0aW9uIGJ5IGZpbHRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEl0ZW1CeSA9IGFzeW5jIDxUID0gYW55PihcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29sbGVjdGlvbjogc3RyaW5nLFxuICBmaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgRmlsdGVyR3JvdXAsXG4gIG9wdGlvbnM6IENydWRPcHRpb25zID0ge31cbik6IFByb21pc2U8VCB8IG51bGw+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldEl0ZW1CeSc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH0gPSB7fX0gPSBjb250ZXh0O1xuICBjb25zdCB7cHJpdmFjeSA9IGZhbHNlLCBvd25lcnNoaXAgPSBmYWxzZSwgY3VzdG9tUXVlcmllcyA9IFtdLCBjdXN0b21PYmplY3RzID0gW119ID0gb3B0aW9ucztcblxuICB0cnkge1xuICAgIGNvbnN0IGRhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2VOYW1lKTtcbiAgICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlcnMoZmlsdGVycywgJ2RvYycpO1xuICAgIGNvbnN0IGNvbmRpdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAoZmlsdGVyQ2xhdXNlKSB7XG4gICAgICBjb25kaXRpb25zLnB1c2goZmlsdGVyQ2xhdXNlKTtcbiAgICB9XG5cbiAgICBpZiAocHJpdmFjeSkge1xuICAgICAgY29uc3QgcHJpdmFjeUZpbHRlciA9IGFwcGx5UHJpdmFjeUZpbHRlcihjb2xsZWN0aW9uLCBzZXNzaW9uSWQsICdkb2MnKTtcbiAgICAgIGlmIChwcml2YWN5RmlsdGVyKSB7XG4gICAgICAgIGNvbmRpdGlvbnMucHVzaChwcml2YWN5RmlsdGVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3duZXJzaGlwKSB7XG4gICAgICBjb25zdCBvd25lcnNoaXBGaWx0ZXIgPSBhcHBseU93bmVyc2hpcEZpbHRlcihzZXNzaW9uSWQsICdkb2MnKTtcbiAgICAgIGlmIChvd25lcnNoaXBGaWx0ZXIpIHtcbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKG93bmVyc2hpcEZpbHRlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29sbGVjdGlvbkxpdGVyYWwgPSBsaXRlcmFsKGNvbGxlY3Rpb24pO1xuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gY29uZGl0aW9ucy5sZW5ndGggPiAwID8gbGl0ZXJhbChgRklMVEVSICR7Y29uZGl0aW9ucy5qb2luKCcgJiYgJyl9YCkgOiBsaXRlcmFsKCcnKTtcbiAgICBjb25zdCBjdXN0b21RdWVyaWVzTGl0ZXJhbCA9IGN1c3RvbVF1ZXJpZXMubGVuZ3RoID4gMCA/IGxpdGVyYWwoY3VzdG9tUXVlcmllcy5qb2luKCdcXG4nKSkgOiBsaXRlcmFsKCcnKTtcbiAgICBjb25zdCByZXR1cm5WYWx1ZSA9IGN1c3RvbU9iamVjdHMubGVuZ3RoID4gMFxuICAgICAgPyBsaXRlcmFsKGBNRVJHRShkb2MsIHske2N1c3RvbU9iamVjdHMuam9pbignLCAnKX19KWApXG4gICAgICA6IGxpdGVyYWwoJ2RvYycpO1xuXG4gICAgY29uc3QgYXFsUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgICAgRk9SIGRvYyBJTiAke2NvbGxlY3Rpb25MaXRlcmFsfVxuICAgICAgICAke3doZXJlQ2xhdXNlfVxuICAgICAgICAke2N1c3RvbVF1ZXJpZXNMaXRlcmFsfVxuICAgICAgICBMSU1JVCAxXG4gICAgICAgIFJFVFVSTiAke3JldHVyblZhbHVlfVxuICAgIGA7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSk7XG4gICAgY29uc3QgaXRlbSA9IGF3YWl0IHJlc3VsdC5uZXh0KCk7XG5cbiAgICByZXR1cm4gaXRlbSB8fCBudWxsO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtjb2xsZWN0aW9uLCBmaWx0ZXJzfVxuICAgIH0sIGVycm9yIGFzIEVycm9yLCBjb250ZXh0KTtcbiAgfVxufTtcblxuLyoqXG4gKiBHZXQgbXVsdGlwbGUgaXRlbXMgZnJvbSBhbnkgY29sbGVjdGlvbiBieSBmaWx0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRMaXN0QnkgPSBhc3luYyA8VCA9IGFueT4oXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGNvbGxlY3Rpb246IHN0cmluZyxcbiAgZmlsdGVyczogUmVjb3JkPHN0cmluZywgYW55PiB8IEZpbHRlckdyb3VwID0ge30sXG4gIG9wdGlvbnM6IENydWRPcHRpb25zID0ge31cbik6IFByb21pc2U8VFtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdnZXRMaXN0QnknO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9ID0ge319ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIHByaXZhY3kgPSBmYWxzZSxcbiAgICBvd25lcnNoaXAgPSBmYWxzZSxcbiAgICBzb3J0LFxuICAgIGxpbWl0LFxuICAgIGN1c3RvbVF1ZXJpZXMgPSBbXSxcbiAgICBjdXN0b21PYmplY3RzID0gW11cbiAgfSA9IG9wdGlvbnM7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlTmFtZSk7XG4gICAgY29uc3QgZmlsdGVyQ2xhdXNlID0gYnVpbGRGaWx0ZXJzKGZpbHRlcnMsICdkb2MnKTtcbiAgICBjb25zdCBjb25kaXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKGZpbHRlckNsYXVzZSkge1xuICAgICAgY29uZGl0aW9ucy5wdXNoKGZpbHRlckNsYXVzZSk7XG4gICAgfVxuXG4gICAgaWYgKHByaXZhY3kpIHtcbiAgICAgIGNvbnN0IHByaXZhY3lGaWx0ZXIgPSBhcHBseVByaXZhY3lGaWx0ZXIoY29sbGVjdGlvbiwgc2Vzc2lvbklkLCAnZG9jJyk7XG4gICAgICBpZiAocHJpdmFjeUZpbHRlcikge1xuICAgICAgICBjb25kaXRpb25zLnB1c2gocHJpdmFjeUZpbHRlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG93bmVyc2hpcCkge1xuICAgICAgY29uc3Qgb3duZXJzaGlwRmlsdGVyID0gYXBwbHlPd25lcnNoaXBGaWx0ZXIoc2Vzc2lvbklkLCAnZG9jJyk7XG4gICAgICBpZiAob3duZXJzaGlwRmlsdGVyKSB7XG4gICAgICAgIGNvbmRpdGlvbnMucHVzaChvd25lcnNoaXBGaWx0ZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbGxlY3Rpb25MaXRlcmFsID0gbGl0ZXJhbChjb2xsZWN0aW9uKTtcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IGNvbmRpdGlvbnMubGVuZ3RoID4gMCA/IGxpdGVyYWwoYEZJTFRFUiAke2NvbmRpdGlvbnMuam9pbignICYmICcpfWApIDogbGl0ZXJhbCgnJyk7XG4gICAgY29uc3Qgc29ydENsYXVzZSA9IHNvcnQgPyBsaXRlcmFsKGJ1aWxkU29ydChzb3J0LCAnZG9jJykpIDogbGl0ZXJhbCgnJyk7XG4gICAgY29uc3QgbGltaXRDbGF1c2UgPSBsaW1pdCA/IGxpdGVyYWwoYnVpbGRMaW1pdChsaW1pdCkpIDogbGl0ZXJhbCgnJyk7XG4gICAgY29uc3QgY3VzdG9tUXVlcmllc0xpdGVyYWwgPSBjdXN0b21RdWVyaWVzLmxlbmd0aCA+IDAgPyBsaXRlcmFsKGN1c3RvbVF1ZXJpZXMuam9pbignXFxuJykpIDogbGl0ZXJhbCgnJyk7XG4gICAgY29uc3QgcmV0dXJuVmFsdWUgPSBjdXN0b21PYmplY3RzLmxlbmd0aCA+IDBcbiAgICAgID8gbGl0ZXJhbChgTUVSR0UoZG9jLCB7JHtjdXN0b21PYmplY3RzLmpvaW4oJywgJyl9fSlgKVxuICAgICAgOiBsaXRlcmFsKCdkb2MnKTtcblxuICAgIGNvbnN0IGFxbFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICAgIEZPUiBkb2MgSU4gJHtjb2xsZWN0aW9uTGl0ZXJhbH1cbiAgICAgICAgJHt3aGVyZUNsYXVzZX1cbiAgICAgICAgJHtjdXN0b21RdWVyaWVzTGl0ZXJhbH1cbiAgICAgICAgJHtzb3J0Q2xhdXNlfVxuICAgICAgICAke2xpbWl0Q2xhdXNlfVxuICAgICAgICBSRVRVUk4gJHtyZXR1cm5WYWx1ZX1cbiAgICBgO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGF0YWJhc2UucXVlcnkoYXFsUXVlcnkpO1xuICAgIHJldHVybiBhd2FpdCByZXN1bHQuYWxsKCkgYXMgVFtdO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtjb2xsZWN0aW9uLCBmaWx0ZXJzfVxuICAgIH0sIGVycm9yIGFzIEVycm9yLCBjb250ZXh0KTtcbiAgfVxufTtcblxuLyoqXG4gKiBBZGQgYSBuZXcgaXRlbSB0byBhbnkgY29sbGVjdGlvblxuICovXG5leHBvcnQgY29uc3QgYWRkSXRlbSA9IGFzeW5jIDxUID0gYW55PihcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29sbGVjdGlvbjogc3RyaW5nLFxuICBkYXRhOiBQYXJ0aWFsPFQ+LFxuICBvcHRpb25zOiB7cmVhZG9ubHkgaG9va3M/OiBib29sZWFufSA9IHt9XG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2FkZEl0ZW0nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtob29rcyA9IGZhbHNlfSA9IG9wdGlvbnM7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjb25maWcgPSByZWdpc3RyeS5nZXQoY29sbGVjdGlvbik7XG4gICAgbGV0IGluc2VydERhdGE6IGFueSA9IHsuLi5kYXRhfTtcblxuICAgIC8vIEFwcGx5IHBhcnNlIGFkYXB0ZXIgaWYgYXZhaWxhYmxlXG4gICAgaWYgKGNvbmZpZz8uYWRhcHRlcnM/LnBhcnNlKSB7XG4gICAgICBpbnNlcnREYXRhID0gY29uZmlnLmFkYXB0ZXJzLnBhcnNlKGluc2VydERhdGEpO1xuICAgIH1cblxuICAgIC8vIENhbGwgYmVmb3JlSW5zZXJ0IGhvb2tcbiAgICBpZiAoaG9va3MgJiYgY29uZmlnPy5ob29rcz8uYmVmb3JlSW5zZXJ0KSB7XG4gICAgICBpbnNlcnREYXRhID0gYXdhaXQgY29uZmlnLmhvb2tzLmJlZm9yZUluc2VydChjb250ZXh0LCBpbnNlcnREYXRhKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdGltZXN0YW1wcyAodHlwZS1zYWZlIGFwcHJvYWNoKVxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKGNvbmZpZz8udGltZXN0YW1wcz8uY3JlYXRlZCkge1xuICAgICAgaW5zZXJ0RGF0YSA9IHsuLi5pbnNlcnREYXRhLCBbY29uZmlnLnRpbWVzdGFtcHMuY3JlYXRlZF06IG5vd307XG4gICAgfVxuICAgIGlmIChjb25maWc/LnRpbWVzdGFtcHM/LnVwZGF0ZWQpIHtcbiAgICAgIGluc2VydERhdGEgPSB7Li4uaW5zZXJ0RGF0YSwgW2NvbmZpZy50aW1lc3RhbXBzLnVwZGF0ZWRdOiBub3d9O1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2VOYW1lKTtcbiAgICBjb25zdCBjb2xsZWN0aW9uUmVmID0gZGF0YWJhc2UuY29sbGVjdGlvbihjb2xsZWN0aW9uKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb2xsZWN0aW9uUmVmLnNhdmUoaW5zZXJ0RGF0YSBhcyBhbnksIHtyZXR1cm5OZXc6IHRydWV9KTtcbiAgICBsZXQgaXRlbSA9IHJlc3VsdC5uZXcgYXMgVDtcblxuICAgIC8vIENhbGwgYWZ0ZXJJbnNlcnQgaG9va1xuICAgIGlmIChob29rcyAmJiBjb25maWc/Lmhvb2tzPy5hZnRlckluc2VydCkge1xuICAgICAgaXRlbSA9IGF3YWl0IGNvbmZpZy5ob29rcy5hZnRlckluc2VydChjb250ZXh0LCBpdGVtKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SLFxuICAgICAgcGFyYW1zOiB7Y29sbGVjdGlvbn1cbiAgICB9LCBlcnJvciBhcyBFcnJvciwgY29udGV4dCk7XG4gIH1cbn07XG5cbi8qKlxuICogVXBkYXRlIGFuIGl0ZW0gaW4gYW55IGNvbGxlY3Rpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHVwZGF0ZUl0ZW0gPSBhc3luYyA8VCA9IGFueT4oXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGNvbGxlY3Rpb246IHN0cmluZyxcbiAgaWQ6IHN0cmluZyxcbiAgdXBkYXRlczogUGFydGlhbDxUPixcbiAgb3B0aW9uczoge3JlYWRvbmx5IGhvb2tzPzogYm9vbGVhbjsgcmVhZG9ubHkgb3duZXJzaGlwPzogYm9vbGVhbn0gPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICd1cGRhdGVJdGVtJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfSA9IHt9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtob29rcyA9IGZhbHNlLCBvd25lcnNoaXAgPSBmYWxzZX0gPSBvcHRpb25zO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgY29uZmlnID0gcmVnaXN0cnkuZ2V0KGNvbGxlY3Rpb24pO1xuICAgIGxldCB1cGRhdGVEYXRhOiBhbnkgPSB7Li4udXBkYXRlc307XG5cbiAgICAvLyBBcHBseSBwYXJzZSBhZGFwdGVyIGlmIGF2YWlsYWJsZVxuICAgIGlmIChjb25maWc/LmFkYXB0ZXJzPy5wYXJzZSkge1xuICAgICAgdXBkYXRlRGF0YSA9IGNvbmZpZy5hZGFwdGVycy5wYXJzZSh1cGRhdGVEYXRhKTtcbiAgICB9XG5cbiAgICAvLyBDYWxsIGJlZm9yZVVwZGF0ZSBob29rXG4gICAgaWYgKGhvb2tzICYmIGNvbmZpZz8uaG9va3M/LmJlZm9yZVVwZGF0ZSkge1xuICAgICAgdXBkYXRlRGF0YSA9IGF3YWl0IGNvbmZpZy5ob29rcy5iZWZvcmVVcGRhdGUoY29udGV4dCwgaWQsIHVwZGF0ZURhdGEpO1xuICAgIH1cblxuICAgIC8vIEFkZCB1cGRhdGVkIHRpbWVzdGFtcCAodHlwZS1zYWZlIGFwcHJvYWNoKVxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKGNvbmZpZz8udGltZXN0YW1wcz8udXBkYXRlZCkge1xuICAgICAgdXBkYXRlRGF0YSA9IHsuLi51cGRhdGVEYXRhLCBbY29uZmlnLnRpbWVzdGFtcHMudXBkYXRlZF06IG5vd307XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZU5hbWUpO1xuICAgIGNvbnN0IGRvY0lkID0gaWQuaW5jbHVkZXMoJy8nKSA/IGlkIDogYCR7Y29sbGVjdGlvbn0vJHtpZH1gO1xuXG4gICAgLy8gQnVpbGQgcXVlcnkgd2l0aCBvd25lcnNoaXAgY2hlY2sgaWYgbmVlZGVkXG4gICAgbGV0IGFxbFF1ZXJ5OiBBcWxRdWVyeTtcbiAgICBjb25zdCBjb2xsZWN0aW9uTGl0ZXJhbCA9IGxpdGVyYWwoY29sbGVjdGlvbik7XG4gICAgaWYgKG93bmVyc2hpcCAmJiBzZXNzaW9uSWQpIHtcbiAgICAgIGFxbFF1ZXJ5ID0gYXFsYEZPUiBkb2MgSU4gJHtjb2xsZWN0aW9uTGl0ZXJhbH1cbiAgICAgICAgRklMVEVSIGRvYy5faWQgPT0gJHtkb2NJZH0gJiYgZG9jLnVzZXJJZCA9PSAke3Nlc3Npb25JZH1cbiAgICAgICAgTElNSVQgMVxuICAgICAgICBVUERBVEUgZG9jIFdJVEggJHt1cGRhdGVEYXRhfSBJTiAke2NvbGxlY3Rpb25MaXRlcmFsfVxuICAgICAgICBSRVRVUk4gTkVXYDtcbiAgICB9IGVsc2Uge1xuICAgICAgYXFsUXVlcnkgPSBhcWxgRk9SIGRvYyBJTiAke2NvbGxlY3Rpb25MaXRlcmFsfVxuICAgICAgICBGSUxURVIgZG9jLl9pZCA9PSAke2RvY0lkfVxuICAgICAgICBMSU1JVCAxXG4gICAgICAgIFVQREFURSBkb2MgV0lUSCAke3VwZGF0ZURhdGF9IElOICR7Y29sbGVjdGlvbkxpdGVyYWx9XG4gICAgICAgIFJFVFVSTiBORVdgO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KTtcbiAgICBsZXQgaXRlbSA9IGF3YWl0IHJlc3VsdC5uZXh0KCk7XG5cbiAgICAvLyBDYWxsIGFmdGVyVXBkYXRlIGhvb2tcbiAgICBpZiAoaG9va3MgJiYgY29uZmlnPy5ob29rcz8uYWZ0ZXJVcGRhdGUpIHtcbiAgICAgIGl0ZW0gPSBhd2FpdCBjb25maWcuaG9va3MuYWZ0ZXJVcGRhdGUoY29udGV4dCwgaXRlbSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgIHBhcmFtczoge2NvbGxlY3Rpb24sIGlkfVxuICAgIH0sIGVycm9yIGFzIEVycm9yLCBjb250ZXh0KTtcbiAgfVxufTtcblxuLyoqXG4gKiBEZWxldGUgYW4gaXRlbSBmcm9tIGFueSBjb2xsZWN0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBkZWxldGVJdGVtID0gYXN5bmMgPFQgPSBhbnk+KFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBjb2xsZWN0aW9uOiBzdHJpbmcsXG4gIGlkOiBzdHJpbmcsXG4gIG9wdGlvbnM6IHtcbiAgICByZWFkb25seSBzb2Z0PzogYm9vbGVhbjtcbiAgICByZWFkb25seSBjYXNjYWRlPzogUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xuICAgIHJlYWRvbmx5IG93bmVyc2hpcD86IGJvb2xlYW47XG4gIH0gPSB7fVxuKTogUHJvbWlzZTxUIHwgbnVsbD4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZGVsZXRlSXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH0gPSB7fX0gPSBjb250ZXh0O1xuICBjb25zdCB7c29mdCA9IGZhbHNlLCBjYXNjYWRlID0gW10sIG93bmVyc2hpcCA9IGZhbHNlfSA9IG9wdGlvbnM7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjb25maWcgPSByZWdpc3RyeS5nZXQoY29sbGVjdGlvbik7XG4gICAgY29uc3QgZGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZU5hbWUpO1xuICAgIGNvbnN0IGRvY0lkID0gaWQuaW5jbHVkZXMoJy8nKSA/IGlkIDogYCR7Y29sbGVjdGlvbn0vJHtpZH1gO1xuICAgIGNvbnN0IGRvY0tleSA9IGlkLmluY2x1ZGVzKCcvJykgPyBpZC5zcGxpdCgnLycpLnBvcCgpIHx8ICcnIDogaWQ7XG4gICAgbGV0IGRlbGV0ZWRJdGVtOiBUIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvLyBDYWxsIGJlZm9yZURlbGV0ZSBob29rXG4gICAgaWYgKGNvbmZpZz8uaG9va3M/LmJlZm9yZURlbGV0ZSkge1xuICAgICAgYXdhaXQgY29uZmlnLmhvb2tzLmJlZm9yZURlbGV0ZShjb250ZXh0LCBkb2NJZCk7XG4gICAgfVxuXG4gICAgLy8gU29mdCBkZWxldGVcbiAgICBpZiAoc29mdCkge1xuICAgICAgY29uc3QgdXBkYXRlID0ge2RlbGV0ZWQ6IHRydWUsIGRlbGV0ZWRBdDogRGF0ZS5ub3coKX07XG4gICAgICBjb25zdCBjb2xsZWN0aW9uTGl0ZXJhbCA9IGxpdGVyYWwoY29sbGVjdGlvbik7XG4gICAgICBjb25zdCBhcWxRdWVyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGRvYyBJTiAke2NvbGxlY3Rpb25MaXRlcmFsfVxuICAgICAgICBGSUxURVIgZG9jLl9pZCA9PSAke2RvY0lkfVxuICAgICAgICBMSU1JVCAxXG4gICAgICAgIFVQREFURSBkb2MgV0lUSCAke3VwZGF0ZX0gSU4gJHtjb2xsZWN0aW9uTGl0ZXJhbH1cbiAgICAgICAgUkVUVVJOIE5FV2A7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSk7XG4gICAgICBkZWxldGVkSXRlbSA9IGF3YWl0IHJlc3VsdC5uZXh0KCkgYXMgVCB8IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhhcmQgZGVsZXRlIHdpdGggY2FzY2FkZVxuICAgICAgY29uc3QgZWRnZXNUb0Nhc2NhZGUgPSBjYXNjYWRlLmxlbmd0aCA+IDAgPyBjYXNjYWRlIDogKGNvbmZpZz8uY2FzY2FkZUVkZ2VzIHx8IFtdKTtcblxuICAgICAgLy8gRGVsZXRlIHRoZSBkb2N1bWVudFxuICAgICAgaWYgKG93bmVyc2hpcCAmJiBzZXNzaW9uSWQpIHtcbiAgICAgICAgY29uc3QgYXFsUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgICAgICAgIEZPUiBkb2MgSU4gJHtsaXRlcmFsKGNvbGxlY3Rpb24pfVxuICAgICAgICAgICAgRklMVEVSIGRvYy5faWQgPT0gJHtkb2NJZH0gJiYgZG9jLnVzZXJJZCA9PSAke3Nlc3Npb25JZH1cbiAgICAgICAgICAgIFJFTU9WRSBkb2MgSU4gJHtsaXRlcmFsKGNvbGxlY3Rpb24pfVxuICAgICAgICAgICAgUkVUVVJOIE9MRFxuICAgICAgICBgO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSk7XG4gICAgICAgIGRlbGV0ZWRJdGVtID0gYXdhaXQgcmVzdWx0Lm5leHQoKSBhcyBUIHwgbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFxbFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBSRU1PVkUgJHtkb2NLZXl9IElOICR7bGl0ZXJhbChjb2xsZWN0aW9uKX0gUkVUVVJOIE9MRGA7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KTtcbiAgICAgICAgZGVsZXRlZEl0ZW0gPSBhd2FpdCByZXN1bHQubmV4dCgpIGFzIFQgfCBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBEZWxldGUgcmVsYXRlZCBlZGdlcyBvbmx5IGFmdGVyIHRoZSBkb2N1bWVudCBkZWxldGUgc3VjY2VlZHMsIHNvIG93bmVyc2hpcCBjaGVja3MgcHJvdGVjdCBjYXNjYWRlcyB0b28uXG4gICAgICBpZiAoZGVsZXRlZEl0ZW0pIHtcbiAgICAgICAgZm9yIChjb25zdCBlZGdlVHlwZSBvZiBlZGdlc1RvQ2FzY2FkZSkge1xuICAgICAgICAgIC8vIFVzZSBzdHJpbmcgZm9yIGVkZ2UgY29sbGVjdGlvbiBuYW1lIChzYWZlKVxuICAgICAgICAgIGNvbnN0IGVkZ2VRdWVyeTogQXFsUXVlcnkgPSBhcWxgXG4gICAgICAgICAgICBGT1IgZSBJTiAke2xpdGVyYWwoZWRnZVR5cGUpfVxuICAgICAgICAgICAgICBGSUxURVIgZS5fdG8gPT0gJHtkb2NJZH0gfHwgZS5fZnJvbSA9PSAke2RvY0lkfVxuICAgICAgICAgICAgICBSRU1PVkUgZSBJTiAke2xpdGVyYWwoZWRnZVR5cGUpfVxuICAgICAgICAgIGA7XG4gICAgICAgICAgYXdhaXQgZGF0YWJhc2UucXVlcnkoZWRnZVF1ZXJ5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENhbGwgYWZ0ZXJEZWxldGUgaG9va1xuICAgIGlmIChjb25maWc/Lmhvb2tzPy5hZnRlckRlbGV0ZSkge1xuICAgICAgYXdhaXQgY29uZmlnLmhvb2tzLmFmdGVyRGVsZXRlKGNvbnRleHQsIGRvY0lkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlZEl0ZW07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgIHBhcmFtczoge2NvbGxlY3Rpb24sIGlkfVxuICAgIH0sIGVycm9yIGFzIEVycm9yLCBjb250ZXh0KTtcbiAgfVxufTtcblxuLyoqXG4gKiBDb3VudCBpdGVtcyBpbiBhbnkgY29sbGVjdGlvblxuICovXG5leHBvcnQgY29uc3QgY291bnRJdGVtcyA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29sbGVjdGlvbjogc3RyaW5nLFxuICBmaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgRmlsdGVyR3JvdXAgPSB7fVxuKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2NvdW50SXRlbXMnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlTmFtZSk7XG4gICAgY29uc3QgZmlsdGVyQ2xhdXNlID0gYnVpbGRGaWx0ZXJzKGZpbHRlcnMsICdkb2MnKTtcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IGZpbHRlckNsYXVzZSA/IGxpdGVyYWwoYEZJTFRFUiAke2ZpbHRlckNsYXVzZX1gKSA6IGxpdGVyYWwoJycpO1xuXG4gICAgY29uc3QgYXFsUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgICAgTEVUIGl0ZW1zID0gKFxuICAgICAgICBGT1IgZG9jIElOICR7bGl0ZXJhbChjb2xsZWN0aW9uKX1cbiAgICAgICAgICAke3doZXJlQ2xhdXNlfVxuICAgICAgICAgIFJFVFVSTiBkb2NcbiAgICAgIClcbiAgICAgIFJFVFVSTiBMRU5HVEgoaXRlbXMpXG4gICAgYDtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KTtcbiAgICByZXR1cm4gYXdhaXQgcmVzdWx0Lm5leHQoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SLFxuICAgICAgcGFyYW1zOiB7Y29sbGVjdGlvbiwgZmlsdGVyc31cbiAgICB9LCBlcnJvciBhcyBFcnJvciwgY29udGV4dCk7XG4gIH1cbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgaXRlbSBleGlzdHNcbiAqL1xuZXhwb3J0IGNvbnN0IGl0ZW1FeGlzdHMgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGNvbGxlY3Rpb246IHN0cmluZyxcbiAgZmlsdGVyczogUmVjb3JkPHN0cmluZywgYW55PiB8IEZpbHRlckdyb3VwXG4pOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgY291bnQgPSBhd2FpdCBjb3VudEl0ZW1zKGNvbnRleHQsIGNvbGxlY3Rpb24sIGZpbHRlcnMpO1xuICByZXR1cm4gY291bnQgPiAwO1xufTtcbiJdLCJuYW1lcyI6WyJhcWwiLCJsaXRlcmFsIiwiRXJyb3JUeXBlcyIsImxvZ0Vycm9yIiwiYnVpbGRGaWx0ZXJDbGF1c2UiLCJ1c2VEYiIsInJlZ2lzdHJ5IiwiZXZlbnRDYXRlZ29yeSIsImJ1aWxkRmlsdGVycyIsImZpbHRlcnMiLCJ2YXJOYW1lIiwic2ltcGxlRmlsdGVycyIsImNvbmRpdGlvbnMiLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiLCJwdXNoIiwiSlNPTiIsInN0cmluZ2lmeSIsImpvaW4iLCJidWlsZFNvcnQiLCJzb3J0IiwibGVuZ3RoIiwic29ydFBhcnRzIiwibWFwIiwiZmllbGQiLCJkaXJlY3Rpb24iLCJidWlsZExpbWl0IiwibGltaXQiLCJmcm9tIiwidG8iLCJjb3VudCIsImFwcGx5UHJpdmFjeUZpbHRlciIsImNvbGxlY3Rpb24iLCJzZXNzaW9uSWQiLCJjb25maWciLCJnZXQiLCJoYXNQcml2YWN5IiwiYXBwbHlPd25lcnNoaXBGaWx0ZXIiLCJnZXRJdGVtQnkiLCJjb250ZXh0Iiwib3B0aW9ucyIsImFjdGlvbiIsImRhdGFiYXNlTmFtZSIsInNlc3Npb24iLCJ1c2VySWQiLCJwcml2YWN5Iiwib3duZXJzaGlwIiwiY3VzdG9tUXVlcmllcyIsImN1c3RvbU9iamVjdHMiLCJkYXRhYmFzZSIsImZpbHRlckNsYXVzZSIsInByaXZhY3lGaWx0ZXIiLCJvd25lcnNoaXBGaWx0ZXIiLCJjb2xsZWN0aW9uTGl0ZXJhbCIsIndoZXJlQ2xhdXNlIiwiY3VzdG9tUXVlcmllc0xpdGVyYWwiLCJyZXR1cm5WYWx1ZSIsImFxbFF1ZXJ5IiwicmVzdWx0IiwicXVlcnkiLCJpdGVtIiwibmV4dCIsImVycm9yIiwiY2F0ZWdvcnkiLCJsYWJlbCIsIkRBVEFCQVNFX0VSUk9SIiwicGFyYW1zIiwiZ2V0TGlzdEJ5Iiwic29ydENsYXVzZSIsImxpbWl0Q2xhdXNlIiwiYWxsIiwiYWRkSXRlbSIsImRhdGEiLCJob29rcyIsImluc2VydERhdGEiLCJhZGFwdGVycyIsInBhcnNlIiwiYmVmb3JlSW5zZXJ0Iiwibm93IiwiRGF0ZSIsInRpbWVzdGFtcHMiLCJjcmVhdGVkIiwidXBkYXRlZCIsImNvbGxlY3Rpb25SZWYiLCJzYXZlIiwicmV0dXJuTmV3IiwibmV3IiwiYWZ0ZXJJbnNlcnQiLCJ1cGRhdGVJdGVtIiwiaWQiLCJ1cGRhdGVzIiwidXBkYXRlRGF0YSIsImJlZm9yZVVwZGF0ZSIsImRvY0lkIiwiaW5jbHVkZXMiLCJhZnRlclVwZGF0ZSIsImRlbGV0ZUl0ZW0iLCJzb2Z0IiwiY2FzY2FkZSIsImRvY0tleSIsInNwbGl0IiwicG9wIiwiZGVsZXRlZEl0ZW0iLCJiZWZvcmVEZWxldGUiLCJ1cGRhdGUiLCJkZWxldGVkIiwiZGVsZXRlZEF0IiwiZWRnZXNUb0Nhc2NhZGUiLCJjYXNjYWRlRWRnZXMiLCJlZGdlVHlwZSIsImVkZ2VRdWVyeSIsImFmdGVyRGVsZXRlIiwiY291bnRJdGVtcyIsIml0ZW1FeGlzdHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLEdBQUcsUUFBTyxXQUFXO0FBQzdCLFNBQVFDLE9BQU8sUUFBTyxlQUFlO0FBQ3JDLFNBQVFDLFVBQVUsUUFBTywwQkFBMEI7QUFDbkQsU0FBUUMsUUFBUSxRQUFPLDZCQUE2QjtBQUNwRCxTQUFRQyxpQkFBaUIsUUFBTyx5QkFBeUI7QUFDekQsU0FBUUMsS0FBSyxRQUFPLDRCQUE0QjtBQUNoRCxTQUFRQyxRQUFRLFFBQU8saUNBQWlDO0FBTXhELE1BQU1DLGdCQUFnQjtBQWdCdEI7O0NBRUMsR0FDRCxNQUFNQyxlQUFlLENBQ25CQyxTQUNBQyxVQUFrQixLQUFLO0lBRXZCLGtEQUFrRDtJQUNsRCxJQUFJLFdBQVdELFdBQVcsZ0JBQWdCQSxTQUFTO1FBQ2pELE9BQU9MLGtCQUFrQkssU0FBd0JDO0lBQ25EO0lBRUEsd0JBQXdCO0lBQ3hCLE1BQU1DLGdCQUFnQkY7SUFDdEIsTUFBTUcsYUFBdUIsRUFBRTtJQUUvQixLQUFLLE1BQU0sQ0FBQ0MsS0FBS0MsTUFBTSxJQUFJQyxPQUFPQyxPQUFPLENBQUNMLGVBQWdCO1FBQ3hELElB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
@@ -116,4 +116,4 @@ export const dynamoDel = (params)=>new Promise((resolve, reject)=>{
116
116
  });
117
117
  });
118
118
 
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvZHluYW1vZGIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmltcG9ydCB7XG4gIEJhdGNoV3JpdGVJdGVtQ29tbWFuZElucHV0LFxuICBCYXRjaFdyaXRlSXRlbUNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUl0ZW1Db21tYW5kSW5wdXQsXG4gIERlbGV0ZUl0ZW1Db21tYW5kT3V0cHV0LFxuICBEeW5hbW9EQixcbiAgR2V0SXRlbUNvbW1hbmRJbnB1dCxcbiAgR2V0SXRlbUNvbW1hbmRPdXRwdXQsXG4gIFB1dEl0ZW1Db21tYW5kSW5wdXQsXG4gIFB1dEl0ZW1Db21tYW5kT3V0cHV0LFxuICBRdWVyeUNvbW1hbmRJbnB1dCxcbiAgUXVlcnlDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVJdGVtQ29tbWFuZElucHV0LFxuICBVcGRhdGVJdGVtQ29tbWFuZE91dHB1dFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtZHluYW1vZGInO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcblxuLy8gY29uc3QgZXZlbnRDYXRlZ29yeSA9ICdkeW5hbW9kYic7XG5leHBvcnQgY29uc3QgZHluYW1vR2V0ID0gKHBhcmFtczogR2V0SXRlbUNvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0SXRlbUNvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuICAgIHBhcmFtcy5Db25zaXN0ZW50UmVhZCA9IGZhbHNlO1xuXG4gICAgZHluYW1vZGIuZ2V0SXRlbShwYXJhbXMsIChlcnJvcjogRXJyb3IsIHJlc3VsdHM6IEdldEl0ZW1Db21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUocmVzdWx0cyk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgcGFyc2VEeW5hbW9MaXN0ID0gKHJlc3VsdHM6IFF1ZXJ5Q29tbWFuZE91dHB1dCk6IGFueVtdID0+IHtcbiAgY29uc3Qge0l0ZW1zOiBpdGVtcyA9IFtdfSA9IHJlc3VsdHM7XG4gIGNvbnN0IGRhdGE6IGFueVtdID0gW107XG5cblxuICBmb3IobGV0IGlkeCA9IDAsIGxlbiA9IGl0ZW1zLmxlbmd0aDsgaWR4IDwgbGVuOyBpZHgrKykge1xuICAgIGNvbnN0IHRtcCA9IGl0ZW1zW2lkeF07XG4gICAgY29uc3Qgb2JqID0ge307XG4gICAgbGV0IGtleTtcblxuICAgIGZvcihrZXkgaW4gdG1wKSB7XG4gICAgICBpZih0bXAuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBpZih0bXBba2V5XS5TKSB7XG4gICAgICAgICAgb2JqW2tleV0gPSB0bXBba2V5XS5TLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSBpZih0bXBba2V5XS5OKSB7XG4gICAgICAgICAgb2JqW2tleV0gPSBwYXJzZUZsb2F0KHRtcFtrZXldLk4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9ialtrZXldID0gdG1wW2tleV0uQjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGRhdGEucHVzaChvYmopO1xuICB9XG5cbiAgcmV0dXJuIGRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgZHluYW1vR2V0TGlzdCA9IChwYXJhbXM6IFF1ZXJ5Q29tbWFuZElucHV0LCBzdGFydEl0ZW0/KTogUHJvbWlzZTxHZXRJdGVtQ29tbWFuZE91dHB1dFtdPiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgZHluYW1vZGIgPSBuZXcgRHluYW1vREIoe1xuICAgICAgY3JlZGVudGlhbHM6IENvbmZpZy5nZXQoJ2F3cy5jcmVkZW50aWFscycpLFxuICAgICAgcmVnaW9uOiBDb25maWcuZ2V0KCdhd3MucmVnaW9uJylcbiAgICB9KTtcbiAgICBjb25zdCB7Q29uc2lzdGVudFJlYWQ6IGNvbnNpc3RlbnRSZWFkfSA9IHBhcmFtcztcbiAgICBjb25zdCB1cGRhdGVkUGFyYW1zID0gey4uLnBhcmFtc307XG5cbiAgICBpZihzdGFydEl0ZW0pIHtcbiAgICAgIHVwZGF0ZWRQYXJhbXMuRXhjbHVzaXZlU3RhcnRLZXkgPSBzdGFydEl0ZW07XG4gICAgfVxuXG4gICAgaWYoIWNvbnNpc3RlbnRSZWFkKSB7XG4gICAgICB1cGRhdGVkUGFyYW1zLkNvbnNpc3RlbnRSZWFkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9IFtdO1xuXG4gICAgZHluYW1vZGIucXVlcnkodXBkYXRlZFBhcmFtcywgKGVycm9yOiBFcnJvciwgb3V0cHV0OiBRdWVyeUNvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICBsaXN0LnB1c2goLi4uKHBhcnNlRHluYW1vTGlzdChvdXRwdXQpIHx8IFtdKSk7XG5cbiAgICAgIGNvbnN0IHtMYXN0RXZhbHVhdGVkS2V5OiBsYXN0S2V5fSA9IG91dHB1dDtcblxuICAgICAgaWYobGFzdEtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkeW5hbW9HZXRMaXN0KHBhcmFtcywgbGFzdEtleSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlKGxpc3QpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb1B1dCA9IChwYXJhbXM6IFB1dEl0ZW1Db21tYW5kSW5wdXQpOiBQcm9taXNlPFB1dEl0ZW1Db21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgZHluYW1vZGIgPSBuZXcgRHluYW1vREIoe1xuICAgICAgY3JlZGVudGlhbHM6IENvbmZpZy5nZXQoJ2F3cy5jcmVkZW50aWFscycpLFxuICAgICAgcmVnaW9uOiBDb25maWcuZ2V0KCdhd3MucmVnaW9uJylcbiAgICB9KTtcblxuICAgIGR5bmFtb2RiLnB1dEl0ZW0ocGFyYW1zLCAoZXJyb3IsIG91dHB1dDogUHV0SXRlbUNvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9VcGRhdGUgPSAocGFyYW1zOiBVcGRhdGVJdGVtQ29tbWFuZElucHV0KTogUHJvbWlzZTxVcGRhdGVJdGVtQ29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGR5bmFtb2RiID0gbmV3IER5bmFtb0RCKHtcbiAgICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgfSk7XG5cbiAgICBkeW5hbW9kYi51cGRhdGVJdGVtKHBhcmFtcywgKGVycm9yOiBFcnJvciwgb3V0cHV0OiBVcGRhdGVJdGVtQ29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb1B1dExpc3QgPSAocGFyYW1zOiBCYXRjaFdyaXRlSXRlbUNvbW1hbmRJbnB1dCk6IFByb21pc2U8QmF0Y2hXcml0ZUl0ZW1Db21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgZHluYW1vZGIgPSBuZXcgRHluYW1vREIoe1xuICAgICAgY3JlZGVudGlhbHM6IENvbmZpZy5nZXQoJ2F3cy5jcmVkZW50aWFscycpLFxuICAgICAgcmVnaW9uOiBDb25maWcuZ2V0KCdhd3MucmVnaW9uJylcbiAgICB9KTtcblxuICAgIGR5bmFtb2RiLmJhdGNoV3JpdGVJdGVtKHBhcmFtcywgKGVycm9yOiBFcnJvciwgb3V0cHV0OiBCYXRjaFdyaXRlSXRlbUNvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9EZWwgPSAocGFyYW1zOiBEZWxldGVJdGVtQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVJdGVtQ29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGR5bmFtb2RiID0gbmV3IER5bmFtb0RCKHtcbiAgICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgfSk7XG5cbiAgICBkeW5hbW9kYi5kZWxldGVJdGVtKHBhcmFtcywgKGVycm9yLCBvdXRwdXQ6IERlbGV0ZUl0ZW1Db21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuIl0sIm5hbWVzIjpbIkR5bmFtb0RCIiwiQ29uZmlnIiwiZHluYW1vR2V0IiwicGFyYW1zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJkeW5hbW9kYiIsImNyZWRlbnRpYWxzIiwiZ2V0IiwicmVnaW9uIiwiQ29uc2lzdGVudFJlYWQiLCJnZXRJdGVtIiwiZXJyb3IiLCJyZXN1bHRzIiwicGFyc2VEeW5hbW9MaXN0IiwiSXRlbXMiLCJpdGVtcyIsImRhdGEiLCJpZHgiLCJsZW4iLCJsZW5ndGgiLCJ0bXAiLCJvYmoiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsIlMiLCJ0b1N0cmluZyIsIk4iLCJwYXJzZUZsb2F0IiwiQiIsInB1c2giLCJkeW5hbW9HZXRMaXN0Iiwic3RhcnRJdGVtIiwiY29uc2lzdGVudFJlYWQiLCJ1cGRhdGVkUGFyYW1zIiwiRXhjbHVzaXZlU3RhcnRLZXkiLCJsaXN0IiwicXVlcnkiLCJvdXRwdXQiLCJMYXN0RXZhbHVhdGVkS2V5IiwibGFzdEtleSIsInVuZGVmaW5lZCIsImR5bmFtb1B1dCIsInB1dEl0ZW0iLCJkeW5hbW9VcGRhdGUiLCJ1cGRhdGVJdGVtIiwiZHluYW1vUHV0TGlzdCIsImJhdGNoV3JpdGVJdGVtIiwiZHluYW1vRGVsIiwiZGVsZXRlSXRlbSJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FLRUEsUUFBUSxRQVNILDJCQUEyQjtBQUVsQyxTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQUVwQyxvQ0FBb0M7QUFDcEMsT0FBTyxNQUFNQyxZQUFZLENBQUNDLFNBQ3hCLElBQUlDLFFBQVEsQ0FBQ0MsU0FBU0M7UUFDcEIsTUFBTUMs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
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9keW5hbW9kYi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuaW1wb3J0IHtcbiAgQmF0Y2hXcml0ZUl0ZW1Db21tYW5kSW5wdXQsXG4gIEJhdGNoV3JpdGVJdGVtQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlSXRlbUNvbW1hbmRJbnB1dCxcbiAgRGVsZXRlSXRlbUNvbW1hbmRPdXRwdXQsXG4gIER5bmFtb0RCLFxuICBHZXRJdGVtQ29tbWFuZElucHV0LFxuICBHZXRJdGVtQ29tbWFuZE91dHB1dCxcbiAgUHV0SXRlbUNvbW1hbmRJbnB1dCxcbiAgUHV0SXRlbUNvbW1hbmRPdXRwdXQsXG4gIFF1ZXJ5Q29tbWFuZElucHV0LFxuICBRdWVyeUNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUl0ZW1Db21tYW5kSW5wdXQsXG4gIFVwZGF0ZUl0ZW1Db21tYW5kT3V0cHV0XG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1keW5hbW9kYic7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuXG4vLyBjb25zdCBldmVudENhdGVnb3J5ID0gJ2R5bmFtb2RiJztcbmV4cG9ydCBjb25zdCBkeW5hbW9HZXQgPSAocGFyYW1zOiBHZXRJdGVtQ29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRJdGVtQ29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGR5bmFtb2RiID0gbmV3IER5bmFtb0RCKHtcbiAgICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgfSk7XG4gICAgcGFyYW1zLkNvbnNpc3RlbnRSZWFkID0gZmFsc2U7XG5cbiAgICBkeW5hbW9kYi5nZXRJdGVtKHBhcmFtcywgKGVycm9yOiBFcnJvciwgcmVzdWx0czogR2V0SXRlbUNvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShyZXN1bHRzKTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUR5bmFtb0xpc3QgPSAocmVzdWx0czogUXVlcnlDb21tYW5kT3V0cHV0KTogYW55W10gPT4ge1xuICBjb25zdCB7SXRlbXM6IGl0ZW1zID0gW119ID0gcmVzdWx0cztcbiAgY29uc3QgZGF0YTogYW55W10gPSBbXTtcblxuXG4gIGZvcihsZXQgaWR4ID0gMCwgbGVuID0gaXRlbXMubGVuZ3RoOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgY29uc3QgdG1wID0gaXRlbXNbaWR4XTtcbiAgICBjb25zdCBvYmogPSB7fTtcbiAgICBsZXQga2V5O1xuXG4gICAgZm9yKGtleSBpbiB0bXApIHtcbiAgICAgIGlmKHRtcC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGlmKHRtcFtrZXldLlMpIHtcbiAgICAgICAgICBvYmpba2V5XSA9IHRtcFtrZXldLlMudG9TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmKHRtcFtrZXldLk4pIHtcbiAgICAgICAgICBvYmpba2V5XSA9IHBhcnNlRmxvYXQodG1wW2tleV0uTik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2JqW2tleV0gPSB0bXBba2V5XS5CO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZGF0YS5wdXNoKG9iaik7XG4gIH1cblxuICByZXR1cm4gZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9HZXRMaXN0ID0gKHBhcmFtczogUXVlcnlDb21tYW5kSW5wdXQsIHN0YXJ0SXRlbT8pOiBQcm9taXNlPEdldEl0ZW1Db21tYW5kT3V0cHV0W10+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuICAgIGNvbnN0IHtDb25zaXN0ZW50UmVhZDogY29uc2lzdGVudFJlYWR9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHVwZGF0ZWRQYXJhbXMgPSB7Li4ucGFyYW1zfTtcblxuICAgIGlmKHN0YXJ0SXRlbSkge1xuICAgICAgdXBkYXRlZFBhcmFtcy5FeGNsdXNpdmVTdGFydEtleSA9IHN0YXJ0SXRlbTtcbiAgICB9XG5cbiAgICBpZighY29uc2lzdGVudFJlYWQpIHtcbiAgICAgIHVwZGF0ZWRQYXJhbXMuQ29uc2lzdGVudFJlYWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ID0gW107XG5cbiAgICBkeW5hbW9kYi5xdWVyeSh1cGRhdGVkUGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IFF1ZXJ5Q29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaCguLi4ocGFyc2VEeW5hbW9MaXN0KG91dHB1dCkgfHwgW10pKTtcblxuICAgICAgY29uc3Qge0xhc3RFdmFsdWF0ZWRLZXk6IGxhc3RLZXl9ID0gb3V0cHV0O1xuXG4gICAgICBpZihsYXN0S2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGR5bmFtb0dldExpc3QocGFyYW1zLCBsYXN0S2V5KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUobGlzdCk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgZHluYW1vUHV0ID0gKHBhcmFtczogUHV0SXRlbUNvbW1hbmRJbnB1dCk6IFByb21pc2U8UHV0SXRlbUNvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuXG4gICAgZHluYW1vZGIucHV0SXRlbShwYXJhbXMsIChlcnJvciwgb3V0cHV0OiBQdXRJdGVtQ29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb1VwZGF0ZSA9IChwYXJhbXM6IFVwZGF0ZUl0ZW1Db21tYW5kSW5wdXQpOiBQcm9taXNlPFVwZGF0ZUl0ZW1Db21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgZHluYW1vZGIgPSBuZXcgRHluYW1vREIoe1xuICAgICAgY3JlZGVudGlhbHM6IENvbmZpZy5nZXQoJ2F3cy5jcmVkZW50aWFscycpLFxuICAgICAgcmVnaW9uOiBDb25maWcuZ2V0KCdhd3MucmVnaW9uJylcbiAgICB9KTtcblxuICAgIGR5bmFtb2RiLnVwZGF0ZUl0ZW0ocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IFVwZGF0ZUl0ZW1Db21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgZHluYW1vUHV0TGlzdCA9IChwYXJhbXM6IEJhdGNoV3JpdGVJdGVtQ29tbWFuZElucHV0KTogUHJvbWlzZTxCYXRjaFdyaXRlSXRlbUNvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBkeW5hbW9kYiA9IG5ldyBEeW5hbW9EQih7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuXG4gICAgZHluYW1vZGIuYmF0Y2hXcml0ZUl0ZW0ocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IEJhdGNoV3JpdGVJdGVtQ29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb0RlbCA9IChwYXJhbXM6IERlbGV0ZUl0ZW1Db21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZUl0ZW1Db21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgZHluYW1vZGIgPSBuZXcgRHluYW1vREIoe1xuICAgICAgY3JlZGVudGlhbHM6IENvbmZpZy5nZXQoJ2F3cy5jcmVkZW50aWFscycpLFxuICAgICAgcmVnaW9uOiBDb25maWcuZ2V0KCdhd3MucmVnaW9uJylcbiAgICB9KTtcblxuICAgIGR5bmFtb2RiLmRlbGV0ZUl0ZW0ocGFyYW1zLCAoZXJyb3IsIG91dHB1dDogRGVsZXRlSXRlbUNvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG4iXSwibmFtZXMiOlsiRHluYW1vREIiLCJDb25maWciLCJkeW5hbW9HZXQiLCJwYXJhbXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImR5bmFtb2RiIiwiY3JlZGVudGlhbHMiLCJnZXQiLCJyZWdpb24iLCJDb25zaXN0ZW50UmVhZCIsImdldEl0ZW0iLCJlcnJvciIsInJlc3VsdHMiLCJwYXJzZUR5bmFtb0xpc3QiLCJJdGVtcyIsIml0ZW1zIiwiZGF0YSIsImlkeCIsImxlbiIsImxlbmd0aCIsInRtcCIsIm9iaiIsImtleSIsImhhc093blByb3BlcnR5IiwiUyIsInRvU3RyaW5nIiwiTiIsInBhcnNlRmxvYXQiLCJCIiwicHVzaCIsImR5bmFtb0dldExpc3QiLCJzdGFydEl0ZW0iLCJjb25zaXN0ZW50UmVhZCIsInVwZGF0ZWRQYXJhbXMiLCJFeGNsdXNpdmVTdGFydEtleSIsImxpc3QiLCJxdWVyeSIsIm91dHB1dCIsIkxhc3RFdmFsdWF0ZWRLZXkiLCJsYXN0S2V5IiwidW5kZWZpbmVkIiwiZHluYW1vUHV0IiwicHV0SXRlbSIsImR5bmFtb1VwZGF0ZSIsInVwZGF0ZUl0ZW0iLCJkeW5hbW9QdXRMaXN0IiwiYmF0Y2hXcml0ZUl0ZW0iLCJkeW5hbW9EZWwiLCJkZWxldGVJdGVtIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUtFQSxRQUFRLFFBU0gsMkJBQTJCO0FBRWxDLFNBQVFDLE1BQU0sUUFBTyxlQUFlO0FBRXBDLG9DQUFvQztBQUNwQyxPQUFPLE1BQU1DLFlBQVksQ0FBQ0MsU0FDeEIsSUFBSUMsUUFBUSxDQUFDQyxTQUFTQztRQUNwQixNQUFNQyxXQUFXLElBQUlQLFNBQVM7WUFDNUJRLGFBQWFQLE9B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
@@ -66,4 +66,4 @@ export const sendEmail = (params)=>{
66
66
  });
67
67
  };
68
68
 
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvZW1haWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmltcG9ydCB7U2VuZEVtYWlsQ29tbWFuZElucHV0LCBTZW5kRW1haWxDb21tYW5kT3V0cHV0LCBTRVN9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zZXMnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7RW1haWxUeXBlfSBmcm9tICcuLi90eXBlcy9lbWFpbC50eXBlcy5qcyc7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnkgPSAnZW1haWwnO1xuXG5leHBvcnQgY29uc3Qgc2VzU2VuZCA9IChwYXJhbXM6IFNlbmRFbWFpbENvbW1hbmRJbnB1dCk6IFByb21pc2U8U2VuZEVtYWlsQ29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc0tleUlkID0gQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzLmFjY2Vzc0tleUlkJyk7XG4gICAgY29uc3Qgc2VjcmV0QWNjZXNzS2V5ID0gQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzLnNlY3JldEFjY2Vzc0tleScpO1xuICAgIGNvbnN0IHNlc3Npb25Ub2tlbiA9IENvbmZpZy5nZXQoJ2F3cy5jcmVkZW50aWFscy5zZXNzaW9uVG9rZW4nKTtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IGFjY2Vzc0tleUlkICYmIHNlY3JldEFjY2Vzc0tleSA/IHtcbiAgICAgIGFjY2Vzc0tleUlkLFxuICAgICAgc2VjcmV0QWNjZXNzS2V5LFxuICAgICAgLi4uKHNlc3Npb25Ub2tlbiA/IHtzZXNzaW9uVG9rZW59IDoge30pXG4gICAgfSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzZXMgPSBuZXcgU0VTKHtcbiAgICAgIC4uLihjcmVkZW50aWFscyA/IHtjcmVkZW50aWFsc30gOiB7fSksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuXG4gICAgc2VzLnNlbmRFbWFpbChwYXJhbXMsIChlcnJvcjogRXJyb3IsIHJlc3BvbnNlOiBTZW5kRW1haWxDb21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHNlbmRFbWFpbCA9IChwYXJhbXM6IEVtYWlsVHlwZSk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCB7XG4gICAgY29udGV4dCxcbiAgICBodG1sLFxuICAgIHN1YmplY3QsXG4gICAgdGV4dCxcbiAgICB1c2VyXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgdG8gPSBbdXNlci5lbWFpbF07XG4gIGNvbnN0IGVtYWlsUGFyYW1zOiBTZW5kRW1haWxDb21tYW5kSW5wdXQgPSB7XG4gICAgRGVzdGluYXRpb246IHtUb0FkZHJlc3NlczogdG99LFxuICAgIE1lc3NhZ2U6IHtcbiAgICAgIEJvZHk6IHtcbiAgICAgICAgSHRtbDoge0RhdGE6IGh0bWx9LFxuICAgICAgICBUZXh0OiB7RGF0YTogdGV4dH1cbiAgICAgIH0sXG4gICAgICBTdWJqZWN0OiB7RGF0YTogc3ViamVjdH1cbiAgICB9LFxuICAgIFNvdXJjZTogYFwiJHtjb250ZXh0LmNvbmZpZy5kZXRhaWxzLnN1cHBvcnROYW1lfVwiIDwke2NvbnRleHQuY29uZmlnLmRldGFpbHMuc3VwcG9ydEVtYWlsfT5gXG4gIH07XG5cbiAgcmV0dXJuIHNlc1NlbmQoZW1haWxQYXJhbXMpXG4gICAgLnRoZW4oKCkgPT4gdHJ1ZSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbG9nRXJyb3IoXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uOiAnc2VuZEVtYWlsJyxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcixcbiAgICAgICAgICBjb250ZXh0XG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoKF9sb2dFcnJvcikge1xuICAgICAgICAvLyBsb2dFcnJvciByZXBvcnRzIHRoZSBTRVMgZmFpbHVyZSwgdGhlbiB0aHJvd3MgYnkgZGVzaWduLlxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG59O1xuIl0sIm5hbWVzIjpbIlNFUyIsIkNvbmZpZyIsImxvZ0Vycm9yIiwiZXZlbnRDYXRlZ29yeSIsInNlc1NlbmQiLCJwYXJhbXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImFjY2Vzc0tleUlkIiwiZ2V0Iiwic2VjcmV0QWNjZXNzS2V5Iiwic2Vzc2lvblRva2VuIiwiY3JlZGVudGlhbHMiLCJ1bmRlZmluZWQiLCJzZXMiLCJyZWdpb24iLCJzZW5kRW1haWwiLCJlcnJvciIsInJlc3BvbnNlIiwiY29udGV4dCIsImh0bWwiLCJzdWJqZWN0IiwidGV4dCIsInVzZXIiLCJ0byIsImVtYWlsIiwiZW1haWxQYXJhbXMiLCJEZXN0aW5hdGlvbiIsIlRvQWRkcmVzc2VzIiwiTWVzc2FnZSIsIkJvZHkiLCJIdG1sIiwiRGF0YSIsIlRleHQiLCJTdWJqZWN0IiwiU291cmNlIiwiY29uZmlnIiwiZGV0YWlscyIsInN1cHBvcnROYW1lIiwic3VwcG9ydEVtYWlsIiwidGhlbiIsImNhdGNoIiwiYWN0aW9uIiwiY2F0ZWdvcnkiLCJfbG9nRXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQXVEQSxHQUFHLFFBQU8sc0JBQXNCO0FBRXZGLFNBQVFDLE1BQU0sUUFBTyxlQUFlO0FBRXBDLFNBQVFDLFFBQVEsUUFBTyw2QkFBNkI7QUFFcEQsTUFBTUMsZ0JBQWdCO0FBRXRCLE9BQU8sTUFBTUMsVUFBVSxDQUFDQyxTQUN0QixJQUFJQyxRQUFRLENBQUNDLFNBQVNDO1FBQ3BCLE1BQU1DLGNBQWNSLE9BQU9TLEdBQUcsQ0FBQztRQUMvQixNQUFNQyxrQkFBa0JWLE9BQU9TLEdBQUcsQ0FBQztRQUNuQyxNQUFNRSxlQUFlWCxPQUFPUyxHQUFHLENBQUM7UUFDaEMsTUFBTUcsY0FBY0osZUFBZUUsa0JBQWtCO1lBQ25ERjtZQUNBRTtZQUNBLEdBQUlDLGVBQWU7Z0JBQUNBO1lBQVksSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSUU7UUFDSixNQUFNQyxNQUFNLElBQUlmLElBQUk7WUFDbEIsR0FBSWEsY0FBYztnQkFBQ0E7WUFBVyxJQUFJLENBQUMsQ0FBQztZQUNwQ0csUUFBUWYsT0FBT1MsR0FBRyxDQUFDO1FBQ3JCO1FBRUFLLElBQUlFLFNBQVMsQ0FBQ1osUUFBUSxDQUFDYSxPQUFjQztZQUNuQyxJQUFHRCxPQUFPO2dCQUNSLE9BQU9WLE9BQU9VO1lBQ2hCO1lBRUEsT0FBT1gsUUFBUVk7UUFDakI7SUFDRixHQUFHO0FBRUwsT0FBTyxNQUFNRixZQUFZLENBQUNaO0lBQ3hCLE1BQU0sRUFDSmUsT0FBTyxFQUNQQyxJQUFJLEVBQ0pDLE9BQU8sRUFDUEMsSUFBSSxFQUNKQyxJQUFJLEVBQ0wsR0FBR25CO0lBRUosTUFBTW9CLEtBQUs7UUFBQ0QsS0FBS0UsS0FBSztLQUFDO0lBQ3ZCLE1BQU1DLGNBQXFDO1FBQ3pDQyxhQUFhO1lBQUNDLGFBQWFKO1FBQUU7UUFDN0JLLFNBQVM7WUFDUEMsTUFBTTtnQkFDSkMsTUFBTTtvQkFBQ0MsTUFBTVo7Z0JBQUk7Z0JBQ2pCYSxNQUFNO29CQUFDRCxNQUFNVjtnQkFBSTtZQUNuQjtZQUNBWSxTQUFTO2dCQUFDRixNQUFNWDtZQUFPO1FBQ3pCO1FBQ0FjLFFBQVEsQ0FBQyxDQUFDLEVBQUVoQixRQUFRaUIsTUFBTSxDQUFDQyxPQUFPLENBQUNDLFdBQVcsQ0FBQyxHQUFHLEVBQUVuQixRQUFRaUIsTUFBTSxDQUFDQyxPQUFPLENBQUNFLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDNUY7SUFFQSxPQUFPcEMsUUFBUXVCLGFBQ1pjLElBQUksQ0FBQyxJQUFNLE1BQ1hDLEtBQUssQ0FBQyxDQUFDeEI7UUFDTixJQUFJO1lBQ0ZoQixTQUNFO2dCQUNFeUMsUUFBUTtnQkFDUkMsVUFBVXpDO1lBQ1osR0FDQWUsT0FDQUU7UUFFSixFQUFFLE9BQU15QixXQUFXO1FBQ2pCLDJEQUEyRDtRQUM3RDtRQUVBLE9BQU87SUFDVDtBQUNKLEVBQUUifQ==
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9lbWFpbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuaW1wb3J0IHtTZW5kRW1haWxDb21tYW5kSW5wdXQsIFNlbmRFbWFpbENvbW1hbmRPdXRwdXQsIFNFU30gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNlcyc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuaW1wb3J0IHtFbWFpbFR5cGV9IGZyb20gJy4uL3R5cGVzL2VtYWlsLnR5cGVzLmpzJztcbmltcG9ydCB7bG9nRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeSA9ICdlbWFpbCc7XG5cbmV4cG9ydCBjb25zdCBzZXNTZW5kID0gKHBhcmFtczogU2VuZEVtYWlsQ29tbWFuZElucHV0KTogUHJvbWlzZTxTZW5kRW1haWxDb21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzS2V5SWQgPSBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMuYWNjZXNzS2V5SWQnKTtcbiAgICBjb25zdCBzZWNyZXRBY2Nlc3NLZXkgPSBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMuc2VjcmV0QWNjZXNzS2V5Jyk7XG4gICAgY29uc3Qgc2Vzc2lvblRva2VuID0gQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzLnNlc3Npb25Ub2tlbicpO1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gYWNjZXNzS2V5SWQgJiYgc2VjcmV0QWNjZXNzS2V5ID8ge1xuICAgICAgYWNjZXNzS2V5SWQsXG4gICAgICBzZWNyZXRBY2Nlc3NLZXksXG4gICAgICAuLi4oc2Vzc2lvblRva2VuID8ge3Nlc3Npb25Ub2tlbn0gOiB7fSlcbiAgICB9IDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHNlcyA9IG5ldyBTRVMoe1xuICAgICAgLi4uKGNyZWRlbnRpYWxzID8ge2NyZWRlbnRpYWxzfSA6IHt9KSxcbiAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgfSk7XG5cbiAgICBzZXMuc2VuZEVtYWlsKHBhcmFtcywgKGVycm9yOiBFcnJvciwgcmVzcG9uc2U6IFNlbmRFbWFpbENvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3Qgc2VuZEVtYWlsID0gKHBhcmFtczogRW1haWxUeXBlKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb250ZXh0LFxuICAgIGh0bWwsXG4gICAgc3ViamVjdCxcbiAgICB0ZXh0LFxuICAgIHVzZXJcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCB0byA9IFt1c2VyLmVtYWlsXTtcbiAgY29uc3QgZW1haWxQYXJhbXM6IFNlbmRFbWFpbENvbW1hbmRJbnB1dCA9IHtcbiAgICBEZXN0aW5hdGlvbjoge1RvQWRkcmVzc2VzOiB0b30sXG4gICAgTWVzc2FnZToge1xuICAgICAgQm9keToge1xuICAgICAgICBIdG1sOiB7RGF0YTogaHRtbH0sXG4gICAgICAgIFRleHQ6IHtEYXRhOiB0ZXh0fVxuICAgICAgfSxcbiAgICAgIFN1YmplY3Q6IHtEYXRhOiBzdWJqZWN0fVxuICAgIH0sXG4gICAgU291cmNlOiBgXCIke2NvbnRleHQuY29uZmlnLmRldGFpbHMuc3VwcG9ydE5hbWV9XCIgPCR7Y29udGV4dC5jb25maWcuZGV0YWlscy5zdXBwb3J0RW1haWx9PmBcbiAgfTtcblxuICByZXR1cm4gc2VzU2VuZChlbWFpbFBhcmFtcylcbiAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBsb2dFcnJvcihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb246ICdzZW5kRW1haWwnLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnlcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yLFxuICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2goX2xvZ0Vycm9yKSB7XG4gICAgICAgIC8vIGxvZ0Vycm9yIHJlcG9ydHMgdGhlIFNFUyBmYWlsdXJlLCB0aGVuIHRocm93cyBieSBkZXNpZ24uXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbn07XG4iXSwibmFtZXMiOlsiU0VTIiwiQ29uZmlnIiwibG9nRXJyb3IiLCJldmVudENhdGVnb3J5Iiwic2VzU2VuZCIsInBhcmFtcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiYWNjZXNzS2V5SWQiLCJnZXQiLCJzZWNyZXRBY2Nlc3NLZXkiLCJzZXNzaW9uVG9rZW4iLCJjcmVkZW50aWFscyIsInVuZGVmaW5lZCIsInNlcyIsInJlZ2lvbiIsInNlbmRFbWFpbCIsImVycm9yIiwicmVzcG9uc2UiLCJjb250ZXh0IiwiaHRtbCIsInN1YmplY3QiLCJ0ZXh0IiwidXNlciIsInRvIiwiZW1haWwiLCJlbWFpbFBhcmFtcyIsIkRlc3RpbmF0aW9uIiwiVG9BZGRyZXNzZXMiLCJNZXNzYWdlIiwiQm9keSIsIkh0bWwiLCJEYXRhIiwiVGV4dCIsIlN1YmplY3QiLCJTb3VyY2UiLCJjb25maWciLCJkZXRhaWxzIiwic3VwcG9ydE5hbWUiLCJzdXBwb3J0RW1haWwiLCJ0aGVuIiwiY2F0Y2giLCJhY3Rpb24iLCJjYXRlZ29yeSIsIl9sb2dFcnJvciJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBdURBLEdBQUcsUUFBTyxzQkFBc0I7QUFFdkYsU0FBUUMsTUFBTSxRQUFPLGVBQWU7QUFFcEMsU0FBUUMsUUFBUSxRQUFPLDZCQUE2QjtBQUVwRCxNQUFNQyxnQkFBZ0I7QUFFdEIsT0FBTyxNQUFNQyxVQUFVLENBQUNDLFNBQ3RCLElBQUlDLFFBQVEsQ0FBQ0MsU0FBU0M7UUFDcEIsTUFBTUMsY0FBY1IsT0FBT1MsR0FBRyxDQUFDO1FBQy9CLE1BQU1DLGtCQUFrQlYsT0FBT1MsR0FBRyxDQUFDO1FBQ25DLE1BQU1FLGVBQWVYLE9BQU9TLEdBQUcsQ0FBQztRQUNoQyxNQUFNRyxjQUFjSixlQUFlRSxrQkFBa0I7WUFDbkRGO1lBQ0FFO1lBQ0EsR0FBSUMsZUFBZTtnQkFBQ0E7WUFBWSxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJRTtRQUNKLE1BQU1DLE1BQU0sSUFBSWYsSUFBSTtZQUNsQixHQUFJYSxjQUFjO2dCQUFDQTtZQUFXLElBQUksQ0FBQyxDQUFDO1lBQ3BDRyxRQUFRZixPQUFPUyxHQUFHLENBQUM7UUFDckI7UUFFQUssSUFBSUUsU0FBUyxDQUFDWixRQUFRLENBQUNhLE9BQWNDO1lBQ25DLElBQUdELE9BQU87Z0JBQ1IsT0FBT1YsT0FBT1U7WUFDaEI7WUFFQSxPQUFPWCxRQUFRWTtRQUNqQjtJQUNGLEdBQUc7QUFFTCxPQUFPLE1BQU1GLFlBQVksQ0FBQ1o7SUFDeEIsTUFBTSxFQUNKZSxPQUFPLEVBQ1BDLElBQUksRUFDSkMsT0FBTyxFQUNQQyxJQUFJLEVBQ0pDLElBQUksRUFDTCxHQUFHbkI7SUFFSixNQUFNb0IsS0FBSztRQUFDRCxLQUFLRSxLQUFLO0tBQUM7SUFDdkIsTUFBTUMsY0FBcUM7UUFDekNDLGFBQWE7WUFBQ0MsYUFBYUo7UUFBRTtRQUM3QkssU0FBUztZQUNQQyxNQUFNO2dCQUNKQyxNQUFNO29CQUFDQyxNQUFNWjtnQkFBSTtnQkFDakJhLE1BQU07b0JBQUNELE1BQU1WO2dCQUFJO1lBQ25CO1lBQ0FZLFNBQVM7Z0JBQUNGLE1BQU1YO1lBQU87UUFDekI7UUFDQWMsUUFBUSxDQUFDLENBQUMsRUFBRWhCLFFBQVFpQixNQUFNLENBQUNDLE9BQU8sQ0FBQ0MsV0FBVyxDQUFDLEdBQUcsRUFBRW5CLFFBQVFpQixNQUFNLENBQUNDLE9BQU8sQ0FBQ0UsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUM1RjtJQUVBLE9BQU9wQyxRQUFRdUIsYUFDWmMsSUFBSSxDQUFDLElBQU0sTUFDWEMsS0FBSyxDQUFDLENBQUN4QjtRQUNOLElBQUk7WUFDRmhCLFNBQ0U7Z0JBQ0V5QyxRQUFRO2dCQUNSQyxVQUFVekM7WUFDWixHQUNBZSxPQUNBRTtRQUVKLEVBQUUsT0FBTXlCLFdBQVc7UUFDakIsMkRBQTJEO1FBQzdEO1FBRUEsT0FBTztJQUNUO0FBQ0osRUFBRSJ9
@@ -3,7 +3,7 @@ import { FileType } from '../types/files.types.js';
3
3
  import { ImageType } from '../types/images.types.js';
4
4
  export declare const GIPHY_URL = "http://api.giphy.com/v1/gifs";
5
5
  export declare const YOUTUBE_URL = "https://www.googleapis.com/youtube/v3";
6
- interface YouTubeListResponse {
6
+ type YouTubeListResponse = Readonly<{
7
7
  readonly items?: Array<{
8
8
  readonly id?: string | {
9
9
  readonly videoId?: string;
@@ -16,7 +16,7 @@ interface YouTubeListResponse {
16
16
  };
17
17
  };
18
18
  }>;
19
- }
19
+ }>;
20
20
  type YouTubeListCallback = (error?: Error, data?: YouTubeListResponse) => void;
21
21
  export declare const getYouTube: () => {
22
22
  search: {
@@ -26,9 +26,47 @@ export declare const getYouTube: () => {
26
26
  list: (options: Readonly<Record<string, string | number | readonly string[]>>, callback: YouTubeListCallback) => void;
27
27
  };
28
28
  };
29
- export declare const insertFile: (context: ApiContext, file: FileType) => Promise<FileType>;
29
+ export declare const insertFile: (context: ApiContext, file: FileType) => Promise<Readonly<Readonly<{
30
+ readonly _id?: string;
31
+ readonly _key?: string;
32
+ readonly _rev?: string;
33
+ readonly added?: number;
34
+ readonly id?: string;
35
+ readonly modified?: number;
36
+ }> & {
37
+ readonly base64?: string;
38
+ readonly buffer?: Buffer;
39
+ readonly description?: string;
40
+ readonly fileId?: string;
41
+ fileSize?: number;
42
+ readonly fileType?: string;
43
+ readonly itemId?: string;
44
+ readonly itemType?: string;
45
+ readonly name?: string;
46
+ readonly url?: string;
47
+ readonly userId?: string;
48
+ }>>;
30
49
  export declare const upsertFile: (context: ApiContext, file: FileType) => Promise<FileType>;
31
- export declare const uploadFile: (context: any, file: FileType, buffer: Buffer) => Promise<FileType>;
50
+ export declare const uploadFile: (context: any, file: FileType, buffer: Buffer) => Promise<Readonly<Readonly<{
51
+ readonly _id?: string;
52
+ readonly _key?: string;
53
+ readonly _rev?: string;
54
+ readonly added?: number;
55
+ readonly id?: string;
56
+ readonly modified?: number;
57
+ }> & {
58
+ readonly base64?: string;
59
+ readonly buffer?: Buffer;
60
+ readonly description?: string;
61
+ readonly fileId?: string;
62
+ fileSize?: number;
63
+ readonly fileType?: string;
64
+ readonly itemId?: string;
65
+ readonly itemType?: string;
66
+ readonly name?: string;
67
+ readonly url?: string;
68
+ readonly userId?: string;
69
+ }>>;
32
70
  export declare const addFile: (context: ApiContext, file: FileType) => Promise<FileType>;
33
71
  export declare const parseGiphyItem: (gifImage: any) => ImageType;
34
72
  export declare const getGiphyTrends: (limit?: number) => Promise<ImageType[]>;
@@ -228,4 +228,4 @@ export const decodeBase64 = (dataString)=>{
228
228
  };
229
229
  };
230
230
 
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvZmlsZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmltcG9ydCB7Z2V0IGFzIGh0dHBHZXR9IGZyb20gJ0BubGFicy9yaXAtaHVudGVyJztcbmltcG9ydCB7Y3JlYXRlSGFzaH0gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtwYXJzZUZpbGV9IGZyb20gJy4uL2FkYXB0ZXJzL2ZpbGVBZGFwdGVyLmpzJztcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuaW1wb3J0IHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMuanMnO1xuaW1wb3J0IHtGaWxlVHlwZX0gZnJvbSAnLi4vdHlwZXMvZmlsZXMudHlwZXMuanMnO1xuaW1wb3J0IHtJbWFnZVR5cGV9IGZyb20gJy4uL3R5cGVzL2ltYWdlcy50eXBlcy5qcyc7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5pbXBvcnQge3VzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzLmpzJztcbmltcG9ydCB7YWRkSXRlbX0gZnJvbSAnLi9jcnVkLmpzJztcbmltcG9ydCB7cmVzaXplQW5kU2F2ZUltYWdlfSBmcm9tICcuL2ltYWdlcy5qcyc7XG5pbXBvcnQge2NyZWF0ZVBvc3RFZGdlfSBmcm9tICcuL3Bvc3RzLmpzJztcblxuaW1wb3J0IHR5cGUge0VkZ2VDb2xsZWN0aW9ufSBmcm9tICdhcmFuZ29qcy9jb2xsZWN0aW9ucyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnkgPSAnZmlsZXMnO1xuXG5leHBvcnQgY29uc3QgR0lQSFlfVVJMID0gJ2h0dHA6Ly9hcGkuZ2lwaHkuY29tL3YxL2dpZnMnO1xuZXhwb3J0IGNvbnN0IFlPVVRVQkVfVVJMID0gJ2h0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3lvdXR1YmUvdjMnO1xuXG5pbnRlcmZhY2UgWW91VHViZUxpc3RSZXNwb25zZSB7XG4gIHJlYWRvbmx5IGl0ZW1zPzogQXJyYXk8e1xuICAgIHJlYWRvbmx5IGlkPzogc3RyaW5nIHwge3JlYWRvbmx5IHZpZGVvSWQ/OiBzdHJpbmd9O1xuICAgIHJlYWRvbmx5IHNuaXBwZXQ/OiB7cmVhZG9ubHkgdGh1bWJuYWlscz86IHtyZWFkb25seSBoaWdoPzoge3JlYWRvbmx5IHVybD86IHN0cmluZ319fTtcbiAgfT47XG59XG5cbnR5cGUgWW91VHViZUxpc3RDYWxsYmFjayA9IChlcnJvcj86IEVycm9yLCBkYXRhPzogWW91VHViZUxpc3RSZXNwb25zZSkgPT4gdm9pZDtcblxuY29uc3QgY3JlYXRlWW91VHViZUxpc3QgPSAocmVzb3VyY2U6ICdzZWFyY2gnIHwgJ3ZpZGVvcycpID0+IChcbiAgb3B0aW9uczogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgcmVhZG9ubHkgc3RyaW5nW10+PixcbiAgY2FsbGJhY2s6IFlvdVR1YmVMaXN0Q2FsbGJhY2tcbik6IHZvaWQgPT4ge1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKGAke1lPVVRVQkVfVVJMfS8ke3Jlc291cmNlfWApO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgna2V5JywgQ29uZmlnLmdldCgnZ29vZ2xlLmtleScpKTtcblxuICBmb3IoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpKSB7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoa2V5LCBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLmpvaW4oJywnKSA6IFN0cmluZyh2YWx1ZSkpO1xuICB9XG5cbiAgdm9pZCBodHRwR2V0KHVybC50b1N0cmluZygpKVxuICAgIC50aGVuKChyZXNwb25zZTogUmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAudGhlbigoZGF0YTogWW91VHViZUxpc3RSZXNwb25zZSkgPT4gY2FsbGJhY2sodW5kZWZpbmVkLCBkYXRhKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gY2FsbGJhY2soZXJyb3IpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRZb3VUdWJlID0gKCkgPT4gKHtcbiAgc2VhcmNoOiB7bGlzdDogY3JlYXRlWW91VHViZUxpc3QoJ3NlYXJjaCcpfSxcbiAgdmlkZW9zOiB7bGlzdDogY3JlYXRlWW91VHViZUxpc3QoJ3ZpZGVvcycpfVxufSk7XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRGaWxlID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGZpbGU6IEZpbGVUeXBlKSA9PiB7XG4gIGNvbnN0IGZvcm1hdHRlZEZpbGUgPSBwYXJzZUZpbGUoZmlsZSk7XG4gIHJldHVybiBhZGRJdGVtPEZpbGVUeXBlPihjb250ZXh0LCAnZmlsZXMnLCBmb3JtYXR0ZWRGaWxlKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cHNlcnRGaWxlID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGZpbGU6IEZpbGVUeXBlKTogUHJvbWlzZTxGaWxlVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAndXBzZXJ0RmlsZSc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0dGVkRmlsZSA9IHBhcnNlRmlsZShmaWxlKTtcbiAgY29uc3Qge2ZpbGVJZH0gPSBmb3JtYXR0ZWRGaWxlO1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBjb25zdCBpbnNlcnQ6IGFueSA9IHtcbiAgICAuLi5mb3JtYXR0ZWRGaWxlLFxuICAgIF9rZXk6IGZpbGVJZCxcbiAgICBhZGRlZDogbm93LFxuICAgIG1vZGlmaWVkOiBub3dcbiAgfTtcbiAgY29uc3QgdXBkYXRlOiBhbnkgPSB7XG4gICAgLi4uZm9ybWF0dGVkRmlsZSxcbiAgICBfa2V5OiBmaWxlSWQsXG4gICAgbW9kaWZpZWQ6IG5vd1xuICB9O1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBTRVJUIHtfa2V5OiAke2ZpbGVJZH19XG4gICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICBJTiBmaWxlcyBSRVRVUk4gTkVXYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigodXBkYXRlZEZpbGU6IEZpbGVUeXBlKSA9PiB1cGRhdGVkRmlsZSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBsb2FkRmlsZSA9IChjb250ZXh0LCBmaWxlOiBGaWxlVHlwZSwgYnVmZmVyOiBCdWZmZXIpID0+IHtcbiAgY29uc3Qge3Nlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0dGVkRmlsZSA9IHBhcnNlRmlsZShmaWxlKTtcbiAgY29uc3Qge1xuICAgIGRlc2NyaXB0aW9uLFxuICAgIGZpbGVJZCxcbiAgICBmaWxlVHlwZSxcbiAgICBuYW1lLFxuICAgIHVybFxuICB9ID0gZm9ybWF0dGVkRmlsZTtcbiAgY29uc3QgZm9ybWF0RmlsZUlkID0gZmlsZUlkIHx8IGNyZWF0ZUhhc2goYGZpbGUtJHtzZXNzaW9uSWR9YCk7XG4gIGxldCB1cGRhdGVkTmFtZSA9IG5hbWU7XG5cbiAgaWYoIXVwZGF0ZWROYW1lICYmICEhdXJsKSB7XG4gICAgdXBkYXRlZE5hbWUgPSB1cmwuc3Vic3RyaW5nKHVybC5sYXN0SW5kZXhPZignLycpICsgMSk7XG4gIH1cblxuICBpZihmaWxlVHlwZSA9PT0gJ2ltYWdlL2pwZWcnIHx8IGZpbGVUeXBlID09PSAnaW1hZ2UvcG5nJykge1xuICAgIHJldHVybiByZXNpemVBbmRTYXZlSW1hZ2UoY29udGV4dCwgZm9ybWF0RmlsZUlkLCBidWZmZXIsIGZpbGVUeXBlKVxuICAgICAgLnRoZW4oKHJlc2l6ZWRJbWFnZTogRmlsZVR5cGUpID0+IGluc2VydEZpbGUoY29udGV4dCwge1xuICAgICAgICAuLi5yZXNpemVkSW1hZ2UsXG4gICAgICAgIF9rZXk6IGZvcm1hdEZpbGVJZCxcbiAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgIG5hbWU6IHVwZGF0ZWROYW1lLFxuICAgICAgICB1c2VySWQ6IHNlc3Npb25JZFxuICAgICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIGluc2VydEZpbGUoY29udGV4dCwge1xuICAgIC4uLmZvcm1hdHRlZEZpbGUsXG4gICAgdXNlcklkOiBzZXNzaW9uSWRcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkRmlsZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBmaWxlOiBGaWxlVHlwZSk6IFByb21pc2U8RmlsZVR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2FkZEZpbGUnO1xuICBjb25zdCB7YmFzZTY0LCB1cmx9ID0gZmlsZTtcblxuICBpZighIXVybCkge1xuICAgIHJldHVybiBodHRwR2V0KHVybClcbiAgICAgIC50aGVuKChib2R5KSA9PiB1cGxvYWRGaWxlKGNvbnRleHQsIGZpbGUsIEJ1ZmZlci5mcm9tKGJvZHksICdiaW5hcnknKSkpXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5GSUxFX1JFUVVFU1RcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG4gIH0gZWxzZSBpZighIWJhc2U2NCkge1xuICAgIGNvbnN0IGJ1ZmZlcjogQnVmZmVyID0gQnVmZmVyLmZyb20oYmFzZTY0KTtcbiAgICByZXR1cm4gdXBsb2FkRmlsZShjb250ZXh0LCBmaWxlLCBidWZmZXIpO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihFcnJvclR5cGVzLkZJTEVfUkVRVUlSRUQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUdpcGh5SXRlbSA9IChnaWZJbWFnZTogYW55KTogSW1hZ2VUeXBlID0+IHtcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIGltYWdlczoge1xuICAgICAgb3JpZ2luYWw6IHt1cmwgPSAnJ30gPSB7fSxcbiAgICAgIGZpeGVkX2hlaWdodF9zbWFsbDoge3VybDogdGh1bWIgPSAnJ30gPSB7fVxuICAgIH0gPSB7fVxuICB9ID0gZ2lmSW1hZ2U7XG5cbiAgaWYoIWlkIHx8ICF1cmwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaWQsXG4gICAgdGh1bWIsXG4gICAgdHlwZTogJ2dpcGh5JyxcbiAgICB1cmxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHaXBoeVRyZW5kcyA9IChsaW1pdDogbnVtYmVyID0gMzApOiBQcm9taXNlPEltYWdlVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGdpZlVybCA9IGAke0dJUEhZX1VSTH0vdHJlbmRpbmc/YXBpX2tleT0ke0NvbmZpZy5nZXQoJ2dpcGh5LmtleScpfSZsaW1pdD0ke2xpbWl0fWA7XG5cbiAgcmV0dXJuIGh0dHBHZXQoZ2lmVXJsKVxuICAgIC50aGVuKChyZXM6IFJlc3BvbnNlKSA9PiByZXMuanNvbigpKVxuICAgIC50aGVuKChqc29uOiBhbnkpID0+IGpzb24/LmRhdGE/Lm1hcChwYXJzZUdpcGh5SXRlbSkuZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHaXBoeVNlYXJjaCA9IChxdWVyeTogc3RyaW5nLCBsaW1pdDogbnVtYmVyID0gMzApOiBQcm9taXNlPEltYWdlVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGZvcm1hdFF1ZXJ5ID0gZW5jb2RlVVJJKHF1ZXJ5KTtcbiAgY29uc3QgZ2lmVXJsID0gYCR7R0lQSFlfVVJMfS9zZWFyY2g/cT0ke2Zvcm1hdFF1ZXJ5fSZhcGlfa2V5PSR7Q29uZmlnLmdldCgnZ2lwaHkua2V5Jyl9JmxpbWl0PSR7bGltaXR9YDtcblxuICByZXR1cm4gaHR0cEdldChnaWZVcmwpXG4gICAgLnRoZW4oKHJlczogUmVzcG9uc2UpID0+IHJlcy5qc29uKCkpXG4gICAgLnRoZW4oKGpzb246IGFueSkgPT4ganNvbj8uZGF0YT8ubWFwKHBhcnNlR2lwaHlJdGVtKS5maWx0ZXIoKGl0ZW0pID0+ICEhaXRlbSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFlvdVR1YmVUcmVuZHMgPSAobGltaXQ6IG51bWJlciA9IDMwKTogUHJvbWlzZTxhbnlbXT4gPT4ge1xuICAvLyBjb25zdCBhY3Rpb24gPSAnZ2V0WW91VHViZVRyZW5kcyc7XG4gIGNvbnN0IHlvdXR1YmUgPSBnZXRZb3VUdWJlKCk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB5b3V0dWJlLnZpZGVvcy5saXN0KHtcbiAgICAgIGNoYXJ0OiAnbW9zdFBvcHVsYXInLFxuICAgICAgbWF4UmVzdWx0czogbGltaXQsXG4gICAgICBwYXJ0OiBbJ3NuaXBwZXQnXSxcbiAgICAgIHJlZ2lvbkNvZGU6ICdVUydcbiAgICB9LCAoZXJyb3I6IEVycm9yLCBkYXRhOiBhbnkpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICByZWplY3QobmV3IEVycm9yKEVycm9yVHlwZXMuWU9VVFVCRV9FUlJPUikpO1xuICAgICAgfSBlbHNlIGlmKGRhdGEpIHtcbiAgICAgICAgY29uc3QgbGlzdCA9IGRhdGEuaXRlbXMubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgIHRodW1iOiBpdGVtLnNuaXBwZXQudGh1bWJuYWlscy5oaWdoLnVybCxcbiAgICAgICAgICB0eXBlOiAneW91dHViZScsXG4gICAgICAgICAgdXJsOiBgaHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8ke2l0ZW0uaWR9YFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgcmVzb2x2ZShsaXN0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0WW91VHViZVNlYXJjaCA9IChxdWVyeTogc3RyaW5nLCBsaW1pdDogbnVtYmVyID0gMzApOiBQcm9taXNlPGFueVtdPiA9PiB7XG4gIC8vIGNvbnN0IGFjdGlvbiA9ICdnZXRZb3VUdWJlU2VhcmNoJztcbiAgY29uc3QgeW91dHViZSA9IGdldFlvdVR1YmUoKTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHlvdXR1YmUuc2VhcmNoLmxpc3Qoe1xuICAgICAgbWF4UmVzdWx0czogbGltaXQsXG4gICAgICBwYXJ0OiBbJ3NuaXBwZXQnXSxcbiAgICAgIHE6IHF1ZXJ5LFxuICAgICAgcmVnaW9uQ29kZTogJ1VTJ1xuICAgIH0sIChlcnJvcjogRXJyb3IsIGRhdGE6IGFueSkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoRXJyb3JUeXBlcy5ZT1VUVUJFX0VSUk9SKSk7XG4gICAgICB9IGVsc2UgaWYoZGF0YSkge1xuICAgICAgICBjb25zdCB7aXRlbXN9ID0gZGF0YTtcbiAgICAgICAgY29uc3QgbGlzdCA9IGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkID0gdHlwZW9mIGl0ZW0uaWQgPT09ICdzdHJpbmcnID8gaXRlbS5pZCA6IGl0ZW0uaWQ/LnZpZGVvSWQ7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgdGh1bWI6IGl0ZW0uc25pcHBldC50aHVtYm5haWxzLmhpZ2gudXJsLFxuICAgICAgICAgICAgdHlwZTogJ3lvdXR1YmUnLFxuICAgICAgICAgICAgdXJsOiBgaHR0cDovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8ke2lkfWBcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXNvbHZlKGxpc3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQYXRoVXNlckZpbGVzID0gKHVzZXJJZDogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nID0+IGB1c2Vycy8ke3VzZXJJZH0vZmlsZXMvJHtmaWxlbmFtZX1gO1xuXG5leHBvcnQgY29uc3QgbGlua0ZpbGVzID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHBvc3REb2NJZDogc3RyaW5nLCBmaWxlczogRmlsZVR5cGVbXSk6IFByb21pc2U8YW55PiA9PlxuICBQcm9taXNlLmFsbChcbiAgICBmaWxlcy5tYXAoKGZpbGU6IEZpbGVUeXBlKSA9PiB1cHNlcnRGaWxlKGNvbnRleHQsIGZpbGUpXG4gICAgICAudGhlbigoZmlsZTogRmlsZVR5cGUpID0+IGNyZWF0ZVBvc3RFZGdlKGNvbnRleHQsIHBvc3REb2NJZCwgZmlsZS5pZCwgJ2lzUG9zdGVkJywge3R5cGU6IGZpbGUuZmlsZVR5cGV9KSkpXG4gICk7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVGaWxlcyA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBwb3N0RG9jSWQ6IHN0cmluZywgZmlsZXM6IEZpbGVUeXBlW10pOiBQcm9taXNlPGFueT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAndXBkYXRlRmlsZXMnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGVkZ2VDb2xsZWN0aW9uOiBFZGdlQ29sbGVjdGlvbiA9IHVzZURiKGRhdGFiYXNlTmFtZSkuY29sbGVjdGlvbignaXNQb3N0ZWQnKTtcblxuICByZXR1cm4gZWRnZUNvbGxlY3Rpb24uaW5FZGdlcyhwb3N0RG9jSWQsIHt9KVxuICAgIC50aGVuKChlZGdlczogYW55KSA9PiB7XG4gICAgICBpZihlZGdlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgICAgIGVkZ2VzLm1hcCgoZWRnZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge19rZXk6IGVkZ2VLZXl9ID0gZWRnZTtcbiAgICAgICAgICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgUkVNT1ZFIHtfa2V5OiR7ZWRnZUtleX19IElOIGlzUG9zdGVkYDtcblxuICAgICAgICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBpZihmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGxpbmtGaWxlcyhjb250ZXh0LCBwb3N0RG9jSWQsIGZpbGVzKS50aGVuKCgpID0+IGZpbGVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmKGZpbGVzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbGlua0ZpbGVzKGNvbnRleHQsIHBvc3REb2NJZCwgZmlsZXMpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gZmlsZXMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmlsZXM7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZW5jb2RlQmFzZTY0ID0gKGJ1ZmZlcjogQnVmZmVyKTogc3RyaW5nID0+IEJ1ZmZlci5mcm9tKGJ1ZmZlcikudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG5leHBvcnQgY29uc3QgZGVjb2RlQmFzZTY0ID0gKGRhdGFTdHJpbmc6IHN0cmluZyk6IGFueSA9PiB7XG4gIC8vIGNvbnN0IGFjdGlvbiA9ICdkZWNvZGVCYXNlNjQnO1xuICBjb25zdCBnZXREYXRhID0gKHN0cjogc3RyaW5nKSA9PiBzdHIubWF0Y2goL15kYXRhOihbQS1aYS16LSsvXSspO2Jhc2U2NCwoLispJC8pIHx8IFtdO1xuICBsZXQgbWF0Y2hlcyA9IGdldERhdGEoZGF0YVN0cmluZyk7XG5cbiAgaWYobWF0Y2hlcy5sZW5ndGggIT09IDMpIHtcbiAgICBtYXRjaGVzID0gZ2V0RGF0YShkZWNvZGVVUklDb21wb25lbnQoZGF0YVN0cmluZykpO1xuXG4gICAgaWYobWF0Y2hlcy5sZW5ndGggIT09IDMpIHtcbiAgICAgIHRocm93IEVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9JTlBVVCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkYXRhOiBCdWZmZXIuZnJvbShtYXRjaGVzWzJdLCAnYmFzZTY0JyksXG4gICAgdHlwZTogbWF0Y2hlc1sxXVxuICB9O1xufTtcbiJdLCJuYW1lcyI6WyJnZXQiLCJodHRwR2V0IiwiY3JlYXRlSGFzaCIsImFxbCIsInBhcnNlRmlsZSIsIkNvbmZpZyIsIkVycm9yVHlwZXMiLCJsb2dFcnJvciIsInVzZURiIiwiYWRkSXRlbSIsInJlc2l6ZUFuZFNhdmVJbWFnZSIsImNyZWF0ZVBvc3RFZGdlIiwiZXZlbnRDYXRlZ29yeSIsIkdJUEhZX1VSTCIsIllPVVRVQkVfVVJMIiwiY3JlYXRlWW91VHViZUxpc3QiLCJyZXNvdXJjZSIsIm9wdGlvbnMiLCJjYWxsYmFjayIsInVybCIsIlVSTCIsInNlYXJjaFBhcmFtcyIsInNldCIsImtleSIsInZhbHVlIiwiT2JqZWN0IiwiZW50cmllcyIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJTdHJpbmciLCJ0b1N0cmluZyIsInRoZW4iLCJyZXNwb25zZSIsImpzb24iLCJkYXRhIiwidW5kZWZpbmVkIiwiY2F0Y2giLCJlcnJvciIsImdldFlvdVR1YmUiLCJzZWFyY2giLCJsaXN0IiwidmlkZW9zIiwiaW5zZXJ0RmlsZSIsImNvbnRleHQiLCJmaWxlIiwiZm9ybWF0dGVkRmlsZSIsInVwc2VydEZpbGUiLCJhY3Rpb24iLCJkYXRhYmFzZU5hbWUiLCJmaWxlSWQiLCJub3ciLCJEYXRlIiwiaW5zZXJ0IiwiX2tleSIsImFkZGVkIiwibW9kaWZpZWQiLCJ1cGRhdGUiLCJhcWxRcnkiLCJxdWVyeSIsImN1cnNvciIsIm5leHQiLCJ1cGRhdGVkRmlsZSIsImNhdGVnb3J5IiwibGFiZWwiLCJEQVRBQkFTRV9FUlJPUiIsInVwbG9hZEZpbGUiLCJidWZmZXIiLCJzZXNzaW9uIiwidXNlcklkIiwic2Vzc2lvbklkIiwiZGVzY3JpcHRpb24iLCJmaWxlVHlwZSIsIm5hbWUiLCJmb3JtYXRGaWxlSWQiLCJ1cGRhdGVkTmFtZSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwicmVzaXplZEltYWdlIiwiYWRkRmlsZSIsImJhc2U2NCIsImJvZHkiLCJCdWZmZXIiLCJmcm9tIiwiRklMRV9SRVFVRVNUIiwiUHJvbWlzZSIsInJlamVjdCIsIkVycm9yIiwiRklMRV9SRVFVSVJFRCIsInBhcnNlR2lwaHlJdGVtIiwiZ2lmSW1hZ2UiLCJpZCIsImltYWdlcyIsIm9yaWdpbmFsIiwiZml4ZWRfaGVpZ2h0X3NtYWxsIiwidGh1bWIiLCJ0eXBlIiwiZ2V0R2lwaHlUcmVuZHMiLCJsaW1pdCIsImdpZlVybCIsInJlcyIsIm1hcCIsImZpbHRlciIsIml0ZW0iLCJnZXRHaXBoeVNlYXJjaCIsImZvcm1hdFF1ZXJ5IiwiZW5jb2RlVVJJIiwiZ2V0WW91VHViZVRyZW5kcyIsInlvdXR1YmUiLCJyZXNvbHZlIiwiY2hhcnQiLCJtYXhSZXN1bHRzIiwicGFydCIsInJlZ2lvbkNvZGUiLCJjb25zb2xlIiwiWU9VVFVCRV9FUlJPUiIsIml0ZW1zIiwic25pcHBldCIsInRodW1ibmFpbHMiLCJoaWdoIiwiZ2V0WW91VHViZVNlYXJjaCIsInEiLCJ2aWRlb0lkIiwiZ2V0UGF0aFVzZXJGaWxlcyIsImZpbGVuYW1lIiwibGlua0ZpbGVzIiwicG9zdERvY0lkIiwiZmlsZXMiLCJhbGwiLCJ1cGRhdGVGaWxlcyIsImVkZ2VDb2xsZWN0aW9uIiwiY29sbGVjdGlvbiIsImluRWRnZXMiLCJlZGdlcyIsImxlbmd0aCIsImVkZ2UiLCJlZGdlS2V5IiwiZW5jb2RlQmFzZTY0IiwiZGVjb2RlQmFzZTY0IiwiZGF0YVN0cmluZyIsImdldERhdGEiLCJzdHIiLCJtYXRjaCIsIm1hdGNoZXMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJJTlZBTElEX0lOUFVUIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxPQUFPQyxPQUFPLFFBQU8sb0JBQW9CO0FBQ2pELFNBQVFDLFVBQVUsUUFBTywrQkFBK0I7QUFDeEQsU0FBUUMsR0FBRyxRQUFPLFdBQVc7QUFHN0IsU0FBUUMsU0FBUyxRQUFPLDZCQUE2QjtBQUNyRCxTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQUVwQyxTQUFRQyxVQUFVLFFBQU8s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
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9maWxlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuaW1wb3J0IHtnZXQgYXMgaHR0cEdldH0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuaW1wb3J0IHtjcmVhdGVIYXNofSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9zdHJpbmdzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuXG5pbXBvcnQge3BhcnNlRmlsZX0gZnJvbSAnLi4vYWRhcHRlcnMvZmlsZUFkYXB0ZXIuanMnO1xuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5pbXBvcnQge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tICcuLi90eXBlcy9lcnJvci50eXBlcy5qcyc7XG5pbXBvcnQge0ZpbGVUeXBlfSBmcm9tICcuLi90eXBlcy9maWxlcy50eXBlcy5qcyc7XG5pbXBvcnQge0ltYWdlVHlwZX0gZnJvbSAnLi4vdHlwZXMvaW1hZ2VzLnR5cGVzLmpzJztcbmltcG9ydCB7bG9nRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcbmltcG9ydCB7dXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuaW1wb3J0IHthZGRJdGVtfSBmcm9tICcuL2NydWQuanMnO1xuaW1wb3J0IHtyZXNpemVBbmRTYXZlSW1hZ2V9IGZyb20gJy4vaW1hZ2VzLmpzJztcbmltcG9ydCB7Y3JlYXRlUG9zdEVkZ2V9IGZyb20gJy4vcG9zdHMuanMnO1xuXG5pbXBvcnQgdHlwZSB7RWRnZUNvbGxlY3Rpb259IGZyb20gJ2FyYW5nb2pzL2NvbGxlY3Rpb25zJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeSA9ICdmaWxlcyc7XG5cbmV4cG9ydCBjb25zdCBHSVBIWV9VUkwgPSAnaHR0cDovL2FwaS5naXBoeS5jb20vdjEvZ2lmcyc7XG5leHBvcnQgY29uc3QgWU9VVFVCRV9VUkwgPSAnaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20veW91dHViZS92Myc7XG5cbnR5cGUgWW91VHViZUxpc3RSZXNwb25zZSA9IFJlYWRvbmx5PHtcbiAgcmVhZG9ubHkgaXRlbXM/OiBBcnJheTx7XG4gICAgcmVhZG9ubHkgaWQ/OiBzdHJpbmcgfCB7cmVhZG9ubHkgdmlkZW9JZD86IHN0cmluZ307XG4gICAgcmVhZG9ubHkgc25pcHBldD86IHtyZWFkb25seSB0aHVtYm5haWxzPzoge3JlYWRvbmx5IGhpZ2g/OiB7cmVhZG9ubHkgdXJsPzogc3RyaW5nfX19O1xuICB9Pjtcbn0+O1xuXG50eXBlIFlvdVR1YmVMaXN0Q2FsbGJhY2sgPSAoZXJyb3I/OiBFcnJvciwgZGF0YT86IFlvdVR1YmVMaXN0UmVzcG9uc2UpID0+IHZvaWQ7XG5cbmNvbnN0IGNyZWF0ZVlvdVR1YmVMaXN0ID0gKHJlc291cmNlOiAnc2VhcmNoJyB8ICd2aWRlb3MnKSA9PiAoXG4gIG9wdGlvbnM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IHJlYWRvbmx5IHN0cmluZ1tdPj4sXG4gIGNhbGxiYWNrOiBZb3VUdWJlTGlzdENhbGxiYWNrXG4pOiB2b2lkID0+IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChgJHtZT1VUVUJFX1VSTH0vJHtyZXNvdXJjZX1gKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2tleScsIENvbmZpZy5nZXQoJ2dvb2dsZS5rZXknKSk7XG5cbiAgZm9yKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvcHRpb25zKSkge1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KGtleSwgQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5qb2luKCcsJykgOiBTdHJpbmcodmFsdWUpKTtcbiAgfVxuXG4gIHZvaWQgaHR0cEdldCh1cmwudG9TdHJpbmcoKSlcbiAgICAudGhlbigocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiByZXNwb25zZS5qc29uKCkpXG4gICAgLnRoZW4oKGRhdGE6IFlvdVR1YmVMaXN0UmVzcG9uc2UpID0+IGNhbGxiYWNrKHVuZGVmaW5lZCwgZGF0YSkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGNhbGxiYWNrKGVycm9yKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0WW91VHViZSA9ICgpID0+ICh7XG4gIHNlYXJjaDoge2xpc3Q6IGNyZWF0ZVlvdVR1YmVMaXN0KCdzZWFyY2gnKX0sXG4gIHZpZGVvczoge2xpc3Q6IGNyZWF0ZVlvdVR1YmVMaXN0KCd2aWRlb3MnKX1cbn0pO1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0RmlsZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBmaWxlOiBGaWxlVHlwZSkgPT4ge1xuICBjb25zdCBmb3JtYXR0ZWRGaWxlID0gcGFyc2VGaWxlKGZpbGUpO1xuICByZXR1cm4gYWRkSXRlbTxGaWxlVHlwZT4oY29udGV4dCwgJ2ZpbGVzJywgZm9ybWF0dGVkRmlsZSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0RmlsZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBmaWxlOiBGaWxlVHlwZSk6IFByb21pc2U8RmlsZVR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ3Vwc2VydEZpbGUnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdHRlZEZpbGUgPSBwYXJzZUZpbGUoZmlsZSk7XG4gIGNvbnN0IHtmaWxlSWR9ID0gZm9ybWF0dGVkRmlsZTtcbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgaW5zZXJ0OiBhbnkgPSB7XG4gICAgLi4uZm9ybWF0dGVkRmlsZSxcbiAgICBfa2V5OiBmaWxlSWQsXG4gICAgYWRkZWQ6IG5vdyxcbiAgICBtb2RpZmllZDogbm93XG4gIH07XG4gIGNvbnN0IHVwZGF0ZTogYW55ID0ge1xuICAgIC4uLmZvcm1hdHRlZEZpbGUsXG4gICAgX2tleTogZmlsZUlkLFxuICAgIG1vZGlmaWVkOiBub3dcbiAgfTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7X2tleTogJHtmaWxlSWR9fVxuICAgIElOU0VSVCAke2luc2VydH1cbiAgICBVUERBVEUgJHt1cGRhdGV9XG4gICAgSU4gZmlsZXMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHVwZGF0ZWRGaWxlOiBGaWxlVHlwZSkgPT4gdXBkYXRlZEZpbGUpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZEZpbGUgPSAoY29udGV4dCwgZmlsZTogRmlsZVR5cGUsIGJ1ZmZlcjogQnVmZmVyKSA9PiB7XG4gIGNvbnN0IHtzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdHRlZEZpbGUgPSBwYXJzZUZpbGUoZmlsZSk7XG4gIGNvbnN0IHtcbiAgICBkZXNjcmlwdGlvbixcbiAgICBmaWxlSWQsXG4gICAgZmlsZVR5cGUsXG4gICAgbmFtZSxcbiAgICB1cmxcbiAgfSA9IGZvcm1hdHRlZEZpbGU7XG4gIGNvbnN0IGZvcm1hdEZpbGVJZCA9IGZpbGVJZCB8fCBjcmVhdGVIYXNoKGBmaWxlLSR7c2Vzc2lvbklkfWApO1xuICBsZXQgdXBkYXRlZE5hbWUgPSBuYW1lO1xuXG4gIGlmKCF1cGRhdGVkTmFtZSAmJiAhIXVybCkge1xuICAgIHVwZGF0ZWROYW1lID0gdXJsLnN1YnN0cmluZyh1cmwubGFzdEluZGV4T2YoJy8nKSArIDEpO1xuICB9XG5cbiAgaWYoZmlsZVR5cGUgPT09ICdpbWFnZS9qcGVnJyB8fCBmaWxlVHlwZSA9PT0gJ2ltYWdlL3BuZycpIHtcbiAgICByZXR1cm4gcmVzaXplQW5kU2F2ZUltYWdlKGNvbnRleHQsIGZvcm1hdEZpbGVJZCwgYnVmZmVyLCBmaWxlVHlwZSlcbiAgICAgIC50aGVuKChyZXNpemVkSW1hZ2U6IEZpbGVUeXBlKSA9PiBpbnNlcnRGaWxlKGNvbnRleHQsIHtcbiAgICAgICAgLi4ucmVzaXplZEltYWdlLFxuICAgICAgICBfa2V5OiBmb3JtYXRGaWxlSWQsXG4gICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICBuYW1lOiB1cGRhdGVkTmFtZSxcbiAgICAgICAgdXNlcklkOiBzZXNzaW9uSWRcbiAgICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiBpbnNlcnRGaWxlKGNvbnRleHQsIHtcbiAgICAuLi5mb3JtYXR0ZWRGaWxlLFxuICAgIHVzZXJJZDogc2Vzc2lvbklkXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZEZpbGUgPSAoY29udGV4dDogQXBpQ29udGV4dCwgZmlsZTogRmlsZVR5cGUpOiBQcm9taXNlPEZpbGVUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdhZGRGaWxlJztcbiAgY29uc3Qge2Jhc2U2NCwgdXJsfSA9IGZpbGU7XG5cbiAgaWYoISF1cmwpIHtcbiAgICByZXR1cm4gaHR0cEdldCh1cmwpXG4gICAgICAudGhlbigoYm9keSkgPT4gdXBsb2FkRmlsZShjb250ZXh0LCBmaWxlLCBCdWZmZXIuZnJvbShib2R5LCAnYmluYXJ5JykpKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuRklMRV9SRVFVRVNUXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuICB9IGVsc2UgaWYoISFiYXNlNjQpIHtcbiAgICBjb25zdCBidWZmZXI6IEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJhc2U2NCk7XG4gICAgcmV0dXJuIHVwbG9hZEZpbGUoY29udGV4dCwgZmlsZSwgYnVmZmVyKTtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoRXJyb3JUeXBlcy5GSUxFX1JFUVVJUkVEKSk7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VHaXBoeUl0ZW0gPSAoZ2lmSW1hZ2U6IGFueSk6IEltYWdlVHlwZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICBpbWFnZXM6IHtcbiAgICAgIG9yaWdpbmFsOiB7dXJsID0gJyd9ID0ge30sXG4gICAgICBmaXhlZF9oZWlnaHRfc21hbGw6IHt1cmw6IHRodW1iID0gJyd9ID0ge31cbiAgICB9ID0ge31cbiAgfSA9IGdpZkltYWdlO1xuXG4gIGlmKCFpZCB8fCAhdXJsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGlkLFxuICAgIHRodW1iLFxuICAgIHR5cGU6ICdnaXBoeScsXG4gICAgdXJsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R2lwaHlUcmVuZHMgPSAobGltaXQ6IG51bWJlciA9IDMwKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICBjb25zdCBnaWZVcmwgPSBgJHtHSVBIWV9VUkx9L3RyZW5kaW5nP2FwaV9rZXk9JHtDb25maWcuZ2V0KCdnaXBoeS5rZXknKX0mbGltaXQ9JHtsaW1pdH1gO1xuXG4gIHJldHVybiBodHRwR2V0KGdpZlVybClcbiAgICAudGhlbigocmVzOiBSZXNwb25zZSkgPT4gcmVzLmpzb24oKSlcbiAgICAudGhlbigoanNvbjogYW55KSA9PiBqc29uPy5kYXRhPy5tYXAocGFyc2VHaXBoeUl0ZW0pLmZpbHRlcigoaXRlbSkgPT4gISFpdGVtKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R2lwaHlTZWFyY2ggPSAocXVlcnk6IHN0cmluZywgbGltaXQ6IG51bWJlciA9IDMwKTogUHJvbWlzZTxJbWFnZVR5cGVbXT4gPT4ge1xuICBjb25zdCBmb3JtYXRRdWVyeSA9IGVuY29kZVVSSShxdWVyeSk7XG4gIGNvbnN0IGdpZlVybCA9IGAke0dJUEhZX1VSTH0vc2VhcmNoP3E9JHtmb3JtYXRRdWVyeX0mYXBpX2tleT0ke0NvbmZpZy5nZXQoJ2dpcGh5LmtleScpfSZsaW1pdD0ke2xpbWl0fWA7XG5cbiAgcmV0dXJuIGh0dHBHZXQoZ2lmVXJsKVxuICAgIC50aGVuKChyZXM6IFJlc3BvbnNlKSA9PiByZXMuanNvbigpKVxuICAgIC50aGVuKChqc29uOiBhbnkpID0+IGpzb24/LmRhdGE/Lm1hcChwYXJzZUdpcGh5SXRlbSkuZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRZb3VUdWJlVHJlbmRzID0gKGxpbWl0OiBudW1iZXIgPSAzMCk6IFByb21pc2U8YW55W10+ID0+IHtcbiAgLy8gY29uc3QgYWN0aW9uID0gJ2dldFlvdVR1YmVUcmVuZHMnO1xuICBjb25zdCB5b3V0dWJlID0gZ2V0WW91VHViZSgpO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgeW91dHViZS52aWRlb3MubGlzdCh7XG4gICAgICBjaGFydDogJ21vc3RQb3B1bGFyJyxcbiAgICAgIG1heFJlc3VsdHM6IGxpbWl0LFxuICAgICAgcGFydDogWydzbmlwcGV0J10sXG4gICAgICByZWdpb25Db2RlOiAnVVMnXG4gICAgfSwgKGVycm9yOiBFcnJvciwgZGF0YTogYW55KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihFcnJvclR5cGVzLllPVVRVQkVfRVJST1IpKTtcbiAgICAgIH0gZWxzZSBpZihkYXRhKSB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBkYXRhLml0ZW1zLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICB0aHVtYjogaXRlbS5zbmlwcGV0LnRodW1ibmFpbHMuaGlnaC51cmwsXG4gICAgICAgICAgdHlwZTogJ3lvdXR1YmUnLFxuICAgICAgICAgIHVybDogYGh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQvJHtpdGVtLmlkfWBcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHJlc29sdmUobGlzdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFlvdVR1YmVTZWFyY2ggPSAocXVlcnk6IHN0cmluZywgbGltaXQ6IG51bWJlciA9IDMwKTogUHJvbWlzZTxhbnlbXT4gPT4ge1xuICAvLyBjb25zdCBhY3Rpb24gPSAnZ2V0WW91VHViZVNlYXJjaCc7XG4gIGNvbnN0IHlvdXR1YmUgPSBnZXRZb3VUdWJlKCk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB5b3V0dWJlLnNlYXJjaC5saXN0KHtcbiAgICAgIG1heFJlc3VsdHM6IGxpbWl0LFxuICAgICAgcGFydDogWydzbmlwcGV0J10sXG4gICAgICBxOiBxdWVyeSxcbiAgICAgIHJlZ2lvbkNvZGU6ICdVUydcbiAgICB9LCAoZXJyb3I6IEVycm9yLCBkYXRhOiBhbnkpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICByZWplY3QobmV3IEVycm9yKEVycm9yVHlwZXMuWU9VVFVCRV9FUlJPUikpO1xuICAgICAgfSBlbHNlIGlmKGRhdGEpIHtcbiAgICAgICAgY29uc3Qge2l0ZW1zfSA9IGRhdGE7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCBpZCA9IHR5cGVvZiBpdGVtLmlkID09PSAnc3RyaW5nJyA/IGl0ZW0uaWQgOiBpdGVtLmlkPy52aWRlb0lkO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIHRodW1iOiBpdGVtLnNuaXBwZXQudGh1bWJuYWlscy5oaWdoLnVybCxcbiAgICAgICAgICAgIHR5cGU6ICd5b3V0dWJlJyxcbiAgICAgICAgICAgIHVybDogYGh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQvJHtpZH1gXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmVzb2x2ZShsaXN0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UGF0aFVzZXJGaWxlcyA9ICh1c2VySWQ6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiBgdXNlcnMvJHt1c2VySWR9L2ZpbGVzLyR7ZmlsZW5hbWV9YDtcblxuZXhwb3J0IGNvbnN0IGxpbmtGaWxlcyA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBwb3N0RG9jSWQ6IHN0cmluZywgZmlsZXM6IEZpbGVUeXBlW10pOiBQcm9taXNlPGFueT4gPT5cbiAgUHJvbWlzZS5hbGwoXG4gICAgZmlsZXMubWFwKChmaWxlOiBGaWxlVHlwZSkgPT4gdXBzZXJ0RmlsZShjb250ZXh0LCBmaWxlKVxuICAgICAgLnRoZW4oKGZpbGU6IEZpbGVUeXBlKSA9PiBjcmVhdGVQb3N0RWRnZShjb250ZXh0LCBwb3N0RG9jSWQsIGZpbGUuaWQsICdpc1Bvc3RlZCcsIHt0eXBlOiBmaWxlLmZpbGVUeXBlfSkpKVxuICApO1xuXG5leHBvcnQgY29uc3QgdXBkYXRlRmlsZXMgPSAoY29udGV4dDogQXBpQ29udGV4dCwgcG9zdERvY0lkOiBzdHJpbmcsIGZpbGVzOiBGaWxlVHlwZVtdKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ3VwZGF0ZUZpbGVzJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBlZGdlQ29sbGVjdGlvbjogRWRnZUNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZU5hbWUpLmNvbGxlY3Rpb24oJ2lzUG9zdGVkJyk7XG5cbiAgcmV0dXJuIGVkZ2VDb2xsZWN0aW9uLmluRWRnZXMocG9zdERvY0lkLCB7fSlcbiAgICAudGhlbigoZWRnZXM6IGFueSkgPT4ge1xuICAgICAgaWYoZWRnZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgICAgICBlZGdlcy5tYXAoKGVkZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHtfa2V5OiBlZGdlS2V5fSA9IGVkZ2U7XG4gICAgICAgICAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFJFTU9WRSB7X2tleToke2VkZ2VLZXl9fSBJTiBpc1Bvc3RlZGA7XG5cbiAgICAgICAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSkpXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYoZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBsaW5rRmlsZXMoY29udGV4dCwgcG9zdERvY0lkLCBmaWxlcykudGhlbigoKSA9PiBmaWxlcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZihmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGxpbmtGaWxlcyhjb250ZXh0LCBwb3N0RG9jSWQsIGZpbGVzKVxuICAgICAgICAgIC50aGVuKCgpID0+IGZpbGVzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpbGVzO1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGVuY29kZUJhc2U2NCA9IChidWZmZXI6IEJ1ZmZlcik6IHN0cmluZyA9PiBCdWZmZXIuZnJvbShidWZmZXIpLnRvU3RyaW5nKCdiYXNlNjQnKTtcblxuZXhwb3J0IGNvbnN0IGRlY29kZUJhc2U2NCA9IChkYXRhU3RyaW5nOiBzdHJpbmcpOiBhbnkgPT4ge1xuICAvLyBjb25zdCBhY3Rpb24gPSAnZGVjb2RlQmFzZTY0JztcbiAgY29uc3QgZ2V0RGF0YSA9IChzdHI6IHN0cmluZykgPT4gc3RyLm1hdGNoKC9eZGF0YTooW0EtWmEtei0rL10rKTtiYXNlNjQsKC4rKSQvKSB8fCBbXTtcbiAgbGV0IG1hdGNoZXMgPSBnZXREYXRhKGRhdGFTdHJpbmcpO1xuXG4gIGlmKG1hdGNoZXMubGVuZ3RoICE9PSAzKSB7XG4gICAgbWF0Y2hlcyA9IGdldERhdGEoZGVjb2RlVVJJQ29tcG9uZW50KGRhdGFTdHJpbmcpKTtcblxuICAgIGlmKG1hdGNoZXMubGVuZ3RoICE9PSAzKSB7XG4gICAgICB0aHJvdyBFcnJvcihFcnJvclR5cGVzLklOVkFMSURfSU5QVVQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGF0YTogQnVmZmVyLmZyb20obWF0Y2hlc1syXSwgJ2Jhc2U2NCcpLFxuICAgIHR5cGU6IG1hdGNoZXNbMV1cbiAgfTtcbn07XG4iXSwibmFtZXMiOlsiZ2V0IiwiaHR0cEdldCIsImNyZWF0ZUhhc2giLCJhcWwiLCJwYXJzZUZpbGUiLCJDb25maWciLCJFcnJvclR5cGVzIiwibG9nRXJyb3IiLCJ1c2VEYiIsImFkZEl0ZW0iLCJyZXNpemVBbmRTYXZlSW1hZ2UiLCJjcmVhdGVQb3N0RWRnZSIsImV2ZW50Q2F0ZWdvcnkiLCJHSVBIWV9VUkwiLCJZT1VUVUJFX1VSTCIsImNyZWF0ZVlvdVR1YmVMaXN0IiwicmVzb3VyY2UiLCJvcHRpb25zIiwiY2FsbGJhY2siLCJ1cmwiLCJVUkwiLCJzZWFyY2hQYXJhbXMiLCJzZXQiLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwiU3RyaW5nIiwidG9TdHJpbmciLCJ0aGVuIiwicmVzcG9uc2UiLCJqc29uIiwiZGF0YSIsInVuZGVmaW5lZCIsImNhdGNoIiwiZXJyb3IiLCJnZXRZb3VUdWJlIiwic2VhcmNoIiwibGlzdCIsInZpZGVvcyIsImluc2VydEZpbGUiLCJjb250ZXh0IiwiZmlsZSIsImZvcm1hdHRlZEZpbGUiLCJ1cHNlcnRGaWxlIiwiYWN0aW9uIiwiZGF0YWJhc2VOYW1lIiwiZmlsZUlkIiwibm93IiwiRGF0ZSIsImluc2VydCIsIl9rZXkiLCJhZGRlZCIsIm1vZGlmaWVkIiwidXBkYXRlIiwiYXFsUXJ5IiwicXVlcnkiLCJjdXJzb3IiLCJuZXh0IiwidXBkYXRlZEZpbGUiLCJjYXRlZ29yeSIsImxhYmVsIiwiREFUQUJBU0VfRVJST1IiLCJ1cGxvYWRGaWxlIiwiYnVmZmVyIiwic2Vzc2lvbiIsInVzZXJJZCIsInNlc3Npb25JZCIsImRlc2NyaXB0aW9uIiwiZmlsZVR5cGUiLCJuYW1lIiwiZm9ybWF0RmlsZUlkIiwidXBkYXRlZE5hbWUiLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsInJlc2l6ZWRJbWFnZSIsImFkZEZpbGUiLCJiYXNlNjQiLCJib2R5IiwiQnVmZmVyIiwiZnJvbSIsIkZJTEVfUkVRVUVTVCIsIlByb21pc2UiLCJyZWplY3QiLCJFcnJvciIsIkZJTEVfUkVRVUlSRUQiLCJwYXJzZUdpcGh5SXRlbSIsImdpZkltYWdlIiwiaWQiLCJpbWFnZXMiLCJvcmlnaW5hbCIsImZpeGVkX2hlaWdodF9zbWFsbCIsInRodW1iIiwidHlwZSIsImdldEdpcGh5VHJlbmRzIiwibGltaXQiLCJnaWZVcmwiLCJyZXMiLCJtYXAiLCJmaWx0ZXIiLCJpdGVtIiwiZ2V0R2lwaHlTZWFyY2giLCJmb3JtYXRRdWVyeSIsImVuY29kZVVSSSIsImdldFlvdVR1YmVUcmVuZHMiLCJ5b3V0dWJlIiwicmVzb2x2ZSIsImNoYXJ0IiwibWF4UmVzdWx0cyIsInBhcnQiLCJyZWdpb25Db2RlIiwiY29uc29sZSIsIllPVVRVQkVfRVJST1IiLCJpdGVtcyIsInNuaXBwZXQiLCJ0aHVtYm5haWxzIiwiaGlnaCIsImdldFlvdVR1YmVTZWFyY2giLCJxIiwidmlkZW9JZCIsImdldFBhdGhVc2VyRmlsZXMiLCJmaWxlbmFtZSIsImxpbmtGaWxlcyIsInBvc3REb2NJZCIsImZpbGVzIiwiYWxsIiwidXBkYXRlRmlsZXMiLCJlZGdlQ29sbGVjdGlvbiIsImNvbGxlY3Rpb24iLCJpbkVkZ2VzIiwiZWRnZXMiLCJsZW5ndGgiLCJlZGdlIiwiZWRnZUtleSIsImVuY29kZUJhc2U2NCIsImRlY29kZUJhc2U2NCIsImRhdGFTdHJpbmciLCJnZXREYXRhIiwic3RyIiwibWF0Y2giLCJtYXRjaGVzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiSU5WQUxJRF9JTlBVVCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsT0FBT0MsT0FBTyxRQUFPLG9CQUFvQjtBQUNqRCxTQUFRQyxVQUFVLFFBQU8sK0JBQStCO0FBQ3hELFNBQVFDLEdBQUcsUUFBTyxXQUFXO0FBRzdCLFNBQVFDLFNBQVMsUUFBTyw2QkFBNkI7QUFDckQsU0FBUUMsTUFBTSxRQUFPLGVBQWU7QUFFcEMsU0FBUUMsVUFBVSxRQUFPLDBCQUEwQjtBQUduRCxTQUFRQyxRQUFR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
@@ -144,4 +144,4 @@ export const resetFlagOverride = async (context, key)=>{
144
144
  return toResolvedFlag(definition);
145
145
  };
146
146
 
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL2FjdGlvbnMvZmxhZ3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5cbmltcG9ydCB7aXNBZG1pblVzZXJ9IGZyb20gJy4uL3V0aWxzL3Nlc3Npb25VdGlscy5qcyc7XG5pbXBvcnQge3VzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzLmpzJztcblxuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0ZsYWdEZWZpbml0aW9uLCBGbGFnT3ZlcnJpZGUsIEZsYWdWYWx1ZSwgUmVzb2x2ZWRGbGFnfSBmcm9tICcuLi90eXBlcy9mbGFncy50eXBlcy5qcyc7XG5cbmNvbnN0IENPTExFQ1RJT04gPSAnZmxhZ3MnO1xuY29uc3QgRkxBR19LRVlfUEFUVEVSTiA9IC9eW0EtWmEtejAtOV1bQS1aYS16MC05Ll86LV17MCwxOTl9JC87XG5cbmNvbnN0IGdldERlZmluaXRpb25zID0gKGNvbnRleHQ6IEFwaUNvbnRleHQpOiByZWFkb25seSBGbGFnRGVmaW5pdGlvbltdID0+IGNvbnRleHQuZmxhZ0RlZmluaXRpb25zIHx8IFtdO1xuXG5jb25zdCB2YWxpZGF0ZURlZmluaXRpb24gPSAoZGVmaW5pdGlvbjogRmxhZ0RlZmluaXRpb24pOiB2b2lkID0+IHtcbiAgaWYoIUZMQUdfS0VZX1BBVFRFUk4udGVzdChkZWZpbml0aW9uLmtleSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWRfZmxhZ19rZXk6JHtkZWZpbml0aW9uLmtleX1gKTtcbiAgfVxuICBpZihkZWZpbml0aW9uLnR5cGUgPT09ICdib29sZWFuJyAmJiB0eXBlb2YgZGVmaW5pdGlvbi5kZWZhdWx0VmFsdWUgIT09ICdib29sZWFuJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZF9ib29sZWFuX2ZsYWdfZGVmYXVsdDoke2RlZmluaXRpb24ua2V5fWApO1xuICB9XG4gIGlmKGRlZmluaXRpb24udHlwZSA9PT0gJ3ZhcmlhbnQnKSB7XG4gICAgaWYodHlwZW9mIGRlZmluaXRpb24uZGVmYXVsdFZhbHVlICE9PSAnc3RyaW5nJyB8fCAhZGVmaW5pdGlvbi52YWx1ZXM/Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkX3ZhcmlhbnRfZmxhZzoke2RlZmluaXRpb24ua2V5fWApO1xuICAgIH1cbiAgICBpZighZGVmaW5pdGlvbi52YWx1ZXMuaW5jbHVkZXMoZGVmaW5pdGlvbi5kZWZhdWx0VmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHZhcmlhbnRfZGVmYXVsdF9ub3RfYWxsb3dlZDoke2RlZmluaXRpb24ua2V5fWApO1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgdmFsaWRhdGVWYWx1ZSA9IChkZWZpbml0aW9uOiBGbGFnRGVmaW5pdGlvbiwgdmFsdWU6IEZsYWdWYWx1ZSk6IHZvaWQgPT4ge1xuICBpZihkZWZpbml0aW9uLnR5cGUgPT09ICdib29sZWFuJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgZmxhZ192YWx1ZV9tdXN0X2JlX2Jvb2xlYW46JHtkZWZpbml0aW9uLmtleX1gKTtcbiAgfVxuICBpZihkZWZpbml0aW9uLnR5cGUgPT09ICd2YXJpYW50JyAmJiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCAhZGVmaW5pdGlvbi52YWx1ZXM/LmluY2x1ZGVzKHZhbHVlKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGZsYWdfdmFsdWVfbm90X2FsbG93ZWQ6JHtkZWZpbml0aW9uLmtleX1gKTtcbiAgfVxufTtcblxuY29uc3QgZ2V0RGVmaW5pdGlvbk1hcCA9IChjb250ZXh0OiBBcGlDb250ZXh0KTogTWFwPHN0cmluZywgRmxhZ0RlZmluaXRpb24+ID0+IHtcbiAgY29uc3QgZGVmaW5pdGlvbnMgPSBnZXREZWZpbml0aW9ucyhjb250ZXh0KTtcbiAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIEZsYWdEZWZpbml0aW9uPigpO1xuICBkZWZpbml0aW9ucy5mb3JFYWNoKChkZWZpbml0aW9uKSA9PiB7XG4gICAgdmFsaWRhdGVEZWZpbml0aW9uKGRlZmluaXRpb24pO1xuICAgIGlmKG1hcC5oYXMoZGVmaW5pdGlvbi5rZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGR1cGxpY2F0ZV9mbGFnX2tleToke2RlZmluaXRpb24ua2V5fWApO1xuICAgIH1cbiAgICBtYXAuc2V0KGRlZmluaXRpb24ua2V5LCBkZWZpbml0aW9uKTtcbiAgfSk7XG4gIHJldHVybiBtYXA7XG59O1xuXG5jb25zdCBnZXRPdmVycmlkZXMgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCk6IFByb21pc2U8RmxhZ092ZXJyaWRlW10+ID0+IHtcbiAgY29uc3QgZGF0YWJhc2UgPSB1c2VEYihjb250ZXh0LmRhdGFiYXNlTmFtZSk7XG4gIGNvbnN0IGNvbGxlY3Rpb24gPSBkYXRhYmFzZS5jb2xsZWN0aW9uKENPTExFQ1RJT04pO1xuICBpZighYXdhaXQgY29sbGVjdGlvbi5leGlzdHMoKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCBjdXJzb3IgPSBhd2FpdCBkYXRhYmFzZS5xdWVyeTxGbGFnT3ZlcnJpZGU+KHtcbiAgICBiaW5kVmFyczogeydAY29sbGVjdGlvbic6IENPTExFQ1RJT059LFxuICAgIHF1ZXJ5OiAnRk9SIGZsYWcgSU4gQEBjb2xsZWN0aW9uIFJFVFVSTiBmbGFnJ1xuICB9KTtcbiAgcmV0dXJuIGF3YWl0IGN1cnNvci5hbGwoKTtcbn07XG5cbmNvbnN0IHRvUmVzb2x2ZWRGbGFnID0gKGRlZmluaXRpb246IEZsYWdEZWZpbml0aW9uLCBvdmVycmlkZT86IEZsYWdPdmVycmlkZSk6IFJlc29sdmVkRmxhZyA9PiB7XG4gIGNvbnN0IGhhc1ZhbGlkT3ZlcnJpZGUgPSBvdmVycmlkZSA/ICgoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlVmFsdWUoZGVmaW5pdGlvbiwgb3ZlcnJpZGUudmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9KSgpIDogZmFsc2U7XG4gIHJldHVybiB7XG4gICAgLi4uZGVmaW5pdGlvbixcbiAgICBzb3VyY2U6IGhhc1ZhbGlkT3ZlcnJpZGUgPyAnZGF0YWJhc2UnIDogJ2RlZmF1bHQnLFxuICAgIC4uLihoYXNWYWxpZE92ZXJyaWRlICYmIG92ZXJyaWRlPy51cGRhdGVkQXQgPyB7dXBkYXRlZEF0OiBvdmVycmlkZS51cGRhdGVkQXR9IDoge30pLFxuICAgIC4uLihoYXNWYWxpZE92ZXJyaWRlICYmIG92ZXJyaWRlPy51cGRhdGVkQnkgPyB7dXBkYXRlZEJ5OiBvdmVycmlkZS51cGRhdGVkQnl9IDoge30pLFxuICAgIHZhbHVlOiBoYXNWYWxpZE92ZXJyaWRlICYmIG92ZXJyaWRlID8gb3ZlcnJpZGUudmFsdWUgOiBkZWZpbml0aW9uLmRlZmF1bHRWYWx1ZVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVGbGFncyA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0KTogUHJvbWlzZTxSZXNvbHZlZEZsYWdbXT4gPT4ge1xuICBjb25zdCBkZWZpbml0aW9ucyA9IFsuLi5nZXREZWZpbml0aW9uTWFwKGNvbnRleHQpLnZhbHVlcygpXTtcbiAgbGV0IG92ZXJyaWRlczogRmxhZ092ZXJyaWRlW10gPSBbXTtcbiAgdHJ5IHtcbiAgICBvdmVycmlkZXMgPSBhd2FpdCBnZXRPdmVycmlkZXMoY29udGV4dCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEZlYXR1cmUgZXZhbHVhdGlvbiBtdXN0IHJlbWFpbiBhdmFpbGFibGUgZnJvbSBjb2RlIGRlZmF1bHRzIHdoZW4gc3RvcmFnZSBpcyB1bmF2YWlsYWJsZS5cbiAgfVxuICBjb25zdCBvdmVycmlkZU1hcCA9IG5ldyBNYXAob3ZlcnJpZGVzLm1hcCgob3ZlcnJpZGUpID0+IFtvdmVycmlkZS5rZXksIG92ZXJyaWRlXSkpO1xuICByZXR1cm4gZGVmaW5pdGlvbnNcbiAgICAubWFwKChkZWZpbml0aW9uKSA9PiB0b1Jlc29sdmVkRmxhZyhkZWZpbml0aW9uLCBvdmVycmlkZU1hcC5nZXQoZGVmaW5pdGlvbi5rZXkpKSlcbiAgICAuc29ydCgobGVmdCwgcmlnaHQpID0+IGxlZnQua2V5LmxvY2FsZUNvbXBhcmUocmlnaHQua2V5KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZXZhbHVhdGVGbGFnID0gYXN5bmMgPFQgZXh0ZW5kcyBGbGFnVmFsdWU+KFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBrZXk6IHN0cmluZyxcbiAgZGVmYXVsdFZhbHVlOiBUXG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBmbGFnID0gKGF3YWl0IHJlc29sdmVGbGFncyhjb250ZXh0KSkuZmluZCgoaXRlbSkgPT4gaXRlbS5rZXkgPT09IGtleSk7XG4gICAgcmV0dXJuIGZsYWcgJiYgdHlwZW9mIGZsYWcudmFsdWUgPT09IHR5cGVvZiBkZWZhdWx0VmFsdWUgPyBmbGFnLnZhbHVlIGFzIFQgOiBkZWZhdWx0VmFsdWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzZXRGbGFnT3ZlcnJpZGUgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGtleTogc3RyaW5nLFxuICB2YWx1ZTogRmxhZ1ZhbHVlXG4pOiBQcm9taXNlPFJlc29sdmVkRmxhZz4gPT4ge1xuICBpZighaXNBZG1pblVzZXIoY29udGV4dC5zZXNzaW9uKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignYWRtaW5pc3RyYXRvcl9hY2Nlc3NfcmVxdWlyZWQnKTtcbiAgfVxuICBjb25zdCBkZWZpbml0aW9uID0gZ2V0RGVmaW5pdGlvbk1hcChjb250ZXh0KS5nZXQoa2V5KTtcbiAgaWYoIWRlZmluaXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVua25vd25fZmxhZzoke2tleX1gKTtcbiAgfVxuICB2YWxpZGF0ZVZhbHVlKGRlZmluaXRpb24sIHZhbHVlKTtcbiAgY29uc3QgZGF0YWJhc2UgPSB1c2VEYihjb250ZXh0LmRhdGFiYXNlTmFtZSk7XG4gIGNvbnN0IGNvbGxlY3Rpb24gPSBkYXRhYmFzZS5jb2xsZWN0aW9uKENPTExFQ1RJT04pO1xuICBpZighYXdhaXQgY29sbGVjdGlvbi5leGlzdHMoKSkge1xuICAgIGF3YWl0IGNvbGxlY3Rpb24uY3JlYXRlKCk7XG4gIH1cbiAgY29uc3QgdXBkYXRlZEF0ID0gRGF0ZS5ub3coKTtcbiAgY29uc3Qgb3ZlcnJpZGU6IEZsYWdPdmVycmlkZSA9IHtcbiAgICBfa2V5OiBjcmVhdGVIYXNoKGBmbGFnLSR7cGFyc2VTdHJpbmcoa2V5LCAyMDApfWApLFxuICAgIGtleSxcbiAgICB1cGRhdGVkQXQsXG4gICAgdXBkYXRlZEJ5OiBjb250ZXh0LnNlc3Npb24/LnVzZXJJZCxcbiAgICB2YWx1ZVxuICB9O1xuICBhd2FpdCBjb2xsZWN0aW9uLnNhdmUob3ZlcnJpZGUsIHtvdmVyd3JpdGVNb2RlOiAncmVwbGFjZSd9KTtcbiAgcmV0dXJuIHRvUmVzb2x2ZWRGbGFnKGRlZmluaXRpb24sIG92ZXJyaWRlKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZsYWdPdmVycmlkZSA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCBrZXk6IHN0cmluZyk6IFByb21pc2U8UmVzb2x2ZWRGbGFnPiA9PiB7XG4gIGlmKCFpc0FkbWluVXNlcihjb250ZXh0LnNlc3Npb24pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdhZG1pbmlzdHJhdG9yX2FjY2Vzc19yZXF1aXJlZCcpO1xuICB9XG4gIGNvbnN0IGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uTWFwKGNvbnRleHQpLmdldChrZXkpO1xuICBpZighZGVmaW5pdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5rbm93bl9mbGFnOiR7a2V5fWApO1xuICB9XG4gIGNvbnN0IGNvbGxlY3Rpb24gPSB1c2VEYihjb250ZXh0LmRhdGFiYXNlTmFtZSkuY29sbGVjdGlvbihDT0xMRUNUSU9OKTtcbiAgaWYoYXdhaXQgY29sbGVjdGlvbi5leGlzdHMoKSkge1xuICAgIGNvbnN0IGRvY3VtZW50S2V5ID0gY3JlYXRlSGFzaChgZmxhZy0ke3BhcnNlU3RyaW5nKGtleSwgMjAwKX1gKTtcbiAgICBpZihhd2FpdCBjb2xsZWN0aW9uLmRvY3VtZW50RXhpc3RzKGRvY3VtZW50S2V5KSkge1xuICAgICAgYXdhaXQgY29sbGVjdGlvbi5yZW1vdmUoZG9jdW1lbnRLZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdG9SZXNvbHZlZEZsYWcoZGVmaW5pdGlvbik7XG59O1xuIl0sIm5hbWVzIjpbImNyZWF0ZUhhc2giLCJwYXJzZVN0cmluZyIsImlzQWRtaW5Vc2VyIiwidXNlRGIiLCJDT0xMRUNUSU9OIiwiRkxBR19LRVlfUEFUVEVSTiIsImdldERlZmluaXRpb25zIiwiY29udGV4dCIsImZsYWdEZWZpbml0aW9ucyIsInZhbGlkYXRlRGVmaW5pdGlvbiIsImRlZmluaXRpb24iLCJ0ZXN0Iiwia2V5IiwiRXJyb3IiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwidmFsdWVzIiwibGVuZ3RoIiwiaW5jbHVkZXMiLCJ2YWxpZGF0ZVZhbHVlIiwidmFsdWUiLCJnZXREZWZpbml0aW9uTWFwIiwiZGVmaW5pdGlvbnMiLCJtYXAiLCJNYXAiLCJmb3JFYWNoIiwiaGFzIiwic2V0IiwiZ2V0T3ZlcnJpZGVzIiwiZGF0YWJhc2UiLCJkYXRhYmFzZU5hbWUiLCJjb2xsZWN0aW9uIiwiZXhpc3RzIiwiY3Vyc29yIiwicXVlcnkiLCJiaW5kVmFycyIsImFsbCIsInRvUmVzb2x2ZWRGbGFnIiwib3ZlcnJpZGUiLCJoYXNWYWxpZE92ZXJyaWRlIiwic291cmNlIiwidXBkYXRlZEF0IiwidXBkYXRlZEJ5IiwicmVzb2x2ZUZsYWdzIiwib3ZlcnJpZGVzIiwib3ZlcnJpZGVNYXAiLCJnZXQiLCJzb3J0IiwibGVmdCIsInJpZ2h0IiwibG9jYWxlQ29tcGFyZSIsImV2YWx1YXRlRmxhZyIsImZsYWciLCJmaW5kIiwiaXRlbSIsInNldEZsYWdPdmVycmlkZSIsInNlc3Npb24iLCJjcmVhdGUiLCJEYXRlIiwibm93IiwiX2tleSIsInVzZXJJZCIsInNhdmUiLCJvdmVyd3JpdGVNb2RlIiwicmVzZXRGbGFnT3ZlcnJpZGUiLCJkb2N1bWVudEtleSIsImRvY3VtZW50RXhpc3RzIiwicmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxVQUFVLEVBQUVDLFdBQVcsUUFBTywrQkFBK0I7QUFFckUsU0FBUUMsV0FBVyxRQUFPLDJCQUEyQjtBQUNyRCxTQUFRQyxLQUFLLFFBQU8sNEJBQTRCO0FBS2hELE1BQU1DLGFBQWE7QUFDbkIsTUFBTUMsbUJBQW1CO0FBRXpCLE1BQU1DLGlCQUFpQixDQUFDQyxVQUFtREEsUUFBUUMsZUFBZSxJQUFJLEVBQUU7QUFFeEcsTUFBTUMscUJBQXFCLENBQUNDO0lBQzFCLElBQUcsQ0FBQ0wsaUJBQWlCTSxJQUFJLENBQUNELFdBQVdFLEdBQUcsR0FBRztRQUN6QyxNQUFNLElBQUlDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRUgsV0FBV0UsR0FBRyxFQUFFO0lBQ3REO0lBQ0EsSUFBR0YsV0FBV0ksSUFBSSxLQUFLLGFBQWEsT0FBT0osV0FBV0ssWUFBWSxLQUFLLFdBQVc7UUFDaEYsTUFBTSxJQUFJRixNQUFNLENBQUMsNkJBQTZCLEVBQUVILFdBQVdFLEdBQUcsRUFBRTtJQUNsRTtJQUNBLElBQUdGLFdBQVdJLElBQUksS0FBSyxXQUFXO1FBQ2hDLElBQUcsT0FBT0osV0FBV0ssWUFBWSxLQUFLLFlBQVksQ0FB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
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9mbGFncy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9zdHJpbmdzJztcblxuaW1wb3J0IHtpc0FkbWluVXNlcn0gZnJvbSAnLi4vdXRpbHMvc2Vzc2lvblV0aWxzLmpzJztcbmltcG9ydCB7dXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7RmxhZ0RlZmluaXRpb24sIEZsYWdPdmVycmlkZSwgRmxhZ1ZhbHVlLCBSZXNvbHZlZEZsYWd9IGZyb20gJy4uL3R5cGVzL2ZsYWdzLnR5cGVzLmpzJztcblxuY29uc3QgQ09MTEVDVElPTiA9ICdmbGFncyc7XG5jb25zdCBGTEFHX0tFWV9QQVRURVJOID0gL15bQS1aYS16MC05XVtBLVphLXowLTkuXzotXXswLDE5OX0kLztcblxuY29uc3QgZ2V0RGVmaW5pdGlvbnMgPSAoY29udGV4dDogQXBpQ29udGV4dCk6IHJlYWRvbmx5IEZsYWdEZWZpbml0aW9uW10gPT4gY29udGV4dC5mbGFnRGVmaW5pdGlvbnMgfHwgW107XG5cbmNvbnN0IHZhbGlkYXRlRGVmaW5pdGlvbiA9IChkZWZpbml0aW9uOiBGbGFnRGVmaW5pdGlvbik6IHZvaWQgPT4ge1xuICBpZighRkxBR19LRVlfUEFUVEVSTi50ZXN0KGRlZmluaXRpb24ua2V5KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZF9mbGFnX2tleToke2RlZmluaXRpb24ua2V5fWApO1xuICB9XG4gIGlmKGRlZmluaXRpb24udHlwZSA9PT0gJ2Jvb2xlYW4nICYmIHR5cGVvZiBkZWZpbml0aW9uLmRlZmF1bHRWYWx1ZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkX2Jvb2xlYW5fZmxhZ19kZWZhdWx0OiR7ZGVmaW5pdGlvbi5rZXl9YCk7XG4gIH1cbiAgaWYoZGVmaW5pdGlvbi50eXBlID09PSAndmFyaWFudCcpIHtcbiAgICBpZih0eXBlb2YgZGVmaW5pdGlvbi5kZWZhdWx0VmFsdWUgIT09ICdzdHJpbmcnIHx8ICFkZWZpbml0aW9uLnZhbHVlcz8ubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWRfdmFyaWFudF9mbGFnOiR7ZGVmaW5pdGlvbi5rZXl9YCk7XG4gICAgfVxuICAgIGlmKCFkZWZpbml0aW9uLnZhbHVlcy5pbmNsdWRlcyhkZWZpbml0aW9uLmRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdmFyaWFudF9kZWZhdWx0X25vdF9hbGxvd2VkOiR7ZGVmaW5pdGlvbi5rZXl9YCk7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCB2YWxpZGF0ZVZhbHVlID0gKGRlZmluaXRpb246IEZsYWdEZWZpbml0aW9uLCB2YWx1ZTogRmxhZ1ZhbHVlKTogdm9pZCA9PiB7XG4gIGlmKGRlZmluaXRpb24udHlwZSA9PT0gJ2Jvb2xlYW4nICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBmbGFnX3ZhbHVlX211c3RfYmVfYm9vbGVhbjoke2RlZmluaXRpb24ua2V5fWApO1xuICB9XG4gIGlmKGRlZmluaXRpb24udHlwZSA9PT0gJ3ZhcmlhbnQnICYmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnIHx8ICFkZWZpbml0aW9uLnZhbHVlcz8uaW5jbHVkZXModmFsdWUpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgZmxhZ192YWx1ZV9ub3RfYWxsb3dlZDoke2RlZmluaXRpb24ua2V5fWApO1xuICB9XG59O1xuXG5jb25zdCBnZXREZWZpbml0aW9uTWFwID0gKGNvbnRleHQ6IEFwaUNvbnRleHQpOiBNYXA8c3RyaW5nLCBGbGFnRGVmaW5pdGlvbj4gPT4ge1xuICBjb25zdCBkZWZpbml0aW9ucyA9IGdldERlZmluaXRpb25zKGNvbnRleHQpO1xuICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgRmxhZ0RlZmluaXRpb24+KCk7XG4gIGRlZmluaXRpb25zLmZvckVhY2goKGRlZmluaXRpb24pID0+IHtcbiAgICB2YWxpZGF0ZURlZmluaXRpb24oZGVmaW5pdGlvbik7XG4gICAgaWYobWFwLmhhcyhkZWZpbml0aW9uLmtleSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZHVwbGljYXRlX2ZsYWdfa2V5OiR7ZGVmaW5pdGlvbi5rZXl9YCk7XG4gICAgfVxuICAgIG1hcC5zZXQoZGVmaW5pdGlvbi5rZXksIGRlZmluaXRpb24pO1xuICB9KTtcbiAgcmV0dXJuIG1hcDtcbn07XG5cbmNvbnN0IGdldE92ZXJyaWRlcyA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0KTogUHJvbWlzZTxGbGFnT3ZlcnJpZGVbXT4gPT4ge1xuICBjb25zdCBkYXRhYmFzZSA9IHVzZURiKGNvbnRleHQuZGF0YWJhc2VOYW1lKTtcbiAgY29uc3QgY29sbGVjdGlvbiA9IGRhdGFiYXNlLmNvbGxlY3Rpb24oQ09MTEVDVElPTik7XG4gIGlmKCFhd2FpdCBjb2xsZWN0aW9uLmV4aXN0cygpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IGN1cnNvciA9IGF3YWl0IGRhdGFiYXNlLnF1ZXJ5PEZsYWdPdmVycmlkZT4oe1xuICAgIGJpbmRWYXJzOiB7J0Bjb2xsZWN0aW9uJzogQ09MTEVDVElPTn0sXG4gICAgcXVlcnk6ICdGT1IgZmxhZyBJTiBAQGNvbGxlY3Rpb24gUkVUVVJOIGZsYWcnXG4gIH0pO1xuICByZXR1cm4gYXdhaXQgY3Vyc29yLmFsbCgpO1xufTtcblxuY29uc3QgdG9SZXNvbHZlZEZsYWcgPSAoZGVmaW5pdGlvbjogRmxhZ0RlZmluaXRpb24sIG92ZXJyaWRlPzogRmxhZ092ZXJyaWRlKTogUmVzb2x2ZWRGbGFnID0+IHtcbiAgY29uc3QgaGFzVmFsaWRPdmVycmlkZSA9IG92ZXJyaWRlID8gKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgdmFsaWRhdGVWYWx1ZShkZWZpbml0aW9uLCBvdmVycmlkZS52YWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pKCkgOiBmYWxzZTtcbiAgcmV0dXJuIHtcbiAgICAuLi5kZWZpbml0aW9uLFxuICAgIHNvdXJjZTogaGFzVmFsaWRPdmVycmlkZSA/ICdkYXRhYmFzZScgOiAnZGVmYXVsdCcsXG4gICAgLi4uKGhhc1ZhbGlkT3ZlcnJpZGUgJiYgb3ZlcnJpZGU/LnVwZGF0ZWRBdCA/IHt1cGRhdGVkQXQ6IG92ZXJyaWRlLnVwZGF0ZWRBdH0gOiB7fSksXG4gICAgLi4uKGhhc1ZhbGlkT3ZlcnJpZGUgJiYgb3ZlcnJpZGU/LnVwZGF0ZWRCeSA/IHt1cGRhdGVkQnk6IG92ZXJyaWRlLnVwZGF0ZWRCeX0gOiB7fSksXG4gICAgdmFsdWU6IGhhc1ZhbGlkT3ZlcnJpZGUgJiYgb3ZlcnJpZGUgPyBvdmVycmlkZS52YWx1ZSA6IGRlZmluaXRpb24uZGVmYXVsdFZhbHVlXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUZsYWdzID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQpOiBQcm9taXNlPFJlc29sdmVkRmxhZ1tdPiA9PiB7XG4gIGNvbnN0IGRlZmluaXRpb25zID0gWy4uLmdldERlZmluaXRpb25NYXAoY29udGV4dCkudmFsdWVzKCldO1xuICBsZXQgb3ZlcnJpZGVzOiBGbGFnT3ZlcnJpZGVbXSA9IFtdO1xuICB0cnkge1xuICAgIG92ZXJyaWRlcyA9IGF3YWl0IGdldE92ZXJyaWRlcyhjb250ZXh0KTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gRmVhdHVyZSBldmFsdWF0aW9uIG11c3QgcmVtYWluIGF2YWlsYWJsZSBmcm9tIGNvZGUgZGVmYXVsdHMgd2hlbiBzdG9yYWdlIGlzIHVuYXZhaWxhYmxlLlxuICB9XG4gIGNvbnN0IG92ZXJyaWRlTWFwID0gbmV3IE1hcChvdmVycmlkZXMubWFwKChvdmVycmlkZSkgPT4gW292ZXJyaWRlLmtleSwgb3ZlcnJpZGVdKSk7XG4gIHJldHVybiBkZWZpbml0aW9uc1xuICAgIC5tYXAoKGRlZmluaXRpb24pID0+IHRvUmVzb2x2ZWRGbGFnKGRlZmluaXRpb24sIG92ZXJyaWRlTWFwLmdldChkZWZpbml0aW9uLmtleSkpKVxuICAgIC5zb3J0KChsZWZ0LCByaWdodCkgPT4gbGVmdC5rZXkubG9jYWxlQ29tcGFyZShyaWdodC5rZXkpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBldmFsdWF0ZUZsYWcgPSBhc3luYyA8VCBleHRlbmRzIEZsYWdWYWx1ZT4oXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGtleTogc3RyaW5nLFxuICBkZWZhdWx0VmFsdWU6IFRcbik6IFByb21pc2U8VD4gPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGZsYWcgPSAoYXdhaXQgcmVzb2x2ZUZsYWdzKGNvbnRleHQpKS5maW5kKChpdGVtKSA9PiBpdGVtLmtleSA9PT0ga2V5KTtcbiAgICByZXR1cm4gZmxhZyAmJiB0eXBlb2YgZmxhZy52YWx1ZSA9PT0gdHlwZW9mIGRlZmF1bHRWYWx1ZSA/IGZsYWcudmFsdWUgYXMgVCA6IGRlZmF1bHRWYWx1ZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHNldEZsYWdPdmVycmlkZSA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAga2V5OiBzdHJpbmcsXG4gIHZhbHVlOiBGbGFnVmFsdWVcbik6IFByb21pc2U8UmVzb2x2ZWRGbGFnPiA9PiB7XG4gIGlmKCFpc0FkbWluVXNlcihjb250ZXh0LnNlc3Npb24pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdhZG1pbmlzdHJhdG9yX2FjY2Vzc19yZXF1aXJlZCcpO1xuICB9XG4gIGNvbnN0IGRlZmluaXRpb24gPSBnZXREZWZpbml0aW9uTWFwKGNvbnRleHQpLmdldChrZXkpO1xuICBpZighZGVmaW5pdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5rbm93bl9mbGFnOiR7a2V5fWApO1xuICB9XG4gIHZhbGlkYXRlVmFsdWUoZGVmaW5pdGlvbiwgdmFsdWUpO1xuICBjb25zdCBkYXRhYmFzZSA9IHVzZURiKGNvbnRleHQuZGF0YWJhc2VOYW1lKTtcbiAgY29uc3QgY29sbGVjdGlvbiA9IGRhdGFiYXNlLmNvbGxlY3Rpb24oQ09MTEVDVElPTik7XG4gIGlmKCFhd2FpdCBjb2xsZWN0aW9uLmV4aXN0cygpKSB7XG4gICAgYXdhaXQgY29sbGVjdGlvbi5jcmVhdGUoKTtcbiAgfVxuICBjb25zdCB1cGRhdGVkQXQgPSBEYXRlLm5vdygpO1xuICBjb25zdCBvdmVycmlkZTogRmxhZ092ZXJyaWRlID0ge1xuICAgIF9rZXk6IGNyZWF0ZUhhc2goYGZsYWctJHtwYXJzZVN0cmluZyhrZXksIDIwMCl9YCksXG4gICAga2V5LFxuICAgIHVwZGF0ZWRBdCxcbiAgICB1cGRhdGVkQnk6IGNvbnRleHQuc2Vzc2lvbj8udXNlcklkLFxuICAgIHZhbHVlXG4gIH07XG4gIGF3YWl0IGNvbGxlY3Rpb24uc2F2ZShvdmVycmlkZSwge292ZXJ3cml0ZU1vZGU6ICdyZXBsYWNlJ30pO1xuICByZXR1cm4gdG9SZXNvbHZlZEZsYWcoZGVmaW5pdGlvbiwgb3ZlcnJpZGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RmxhZ092ZXJyaWRlID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGtleTogc3RyaW5nKTogUHJvbWlzZTxSZXNvbHZlZEZsYWc+ID0+IHtcbiAgaWYoIWlzQWRtaW5Vc2VyKGNvbnRleHQuc2Vzc2lvbikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2FkbWluaXN0cmF0b3JfYWNjZXNzX3JlcXVpcmVkJyk7XG4gIH1cbiAgY29uc3QgZGVmaW5pdGlvbiA9IGdldERlZmluaXRpb25NYXAoY29udGV4dCkuZ2V0KGtleSk7XG4gIGlmKCFkZWZpbml0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duX2ZsYWc6JHtrZXl9YCk7XG4gIH1cbiAgY29uc3QgY29sbGVjdGlvbiA9IHVzZURiKGNvbnRleHQuZGF0YWJhc2VOYW1lKS5jb2xsZWN0aW9uKENPTExFQ1RJT04pO1xuICBpZihhd2FpdCBjb2xsZWN0aW9uLmV4aXN0cygpKSB7XG4gICAgY29uc3QgZG9jdW1lbnRLZXkgPSBjcmVhdGVIYXNoKGBmbGFnLSR7cGFyc2VTdHJpbmcoa2V5LCAyMDApfWApO1xuICAgIGlmKGF3YWl0IGNvbGxlY3Rpb24uZG9jdW1lbnRFeGlzdHMoZG9jdW1lbnRLZXkpKSB7XG4gICAgICBhd2FpdCBjb2xsZWN0aW9uLnJlbW92ZShkb2N1bWVudEtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0b1Jlc29sdmVkRmxhZyhkZWZpbml0aW9uKTtcbn07XG4iXSwibmFtZXMiOlsiY3JlYXRlSGFzaCIsInBhcnNlU3RyaW5nIiwiaXNBZG1pblVzZXIiLCJ1c2VEYiIsIkNPTExFQ1RJT04iLCJGTEFHX0tFWV9QQVRURVJOIiwiZ2V0RGVmaW5pdGlvbnMiLCJjb250ZXh0IiwiZmxhZ0RlZmluaXRpb25zIiwidmFsaWRhdGVEZWZpbml0aW9uIiwiZGVmaW5pdGlvbiIsInRlc3QiLCJrZXkiLCJFcnJvciIsInR5cGUiLCJkZWZhdWx0VmFsdWUiLCJ2YWx1ZXMiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInZhbGlkYXRlVmFsdWUiLCJ2YWx1ZSIsImdldERlZmluaXRpb25NYXAiLCJkZWZpbml0aW9ucyIsIm1hcCIsIk1hcCIsImZvckVhY2giLCJoYXMiLCJzZXQiLCJnZXRPdmVycmlkZXMiLCJkYXRhYmFzZSIsImRhdGFiYXNlTmFtZSIsImNvbGxlY3Rpb24iLCJleGlzdHMiLCJjdXJzb3IiLCJxdWVyeSIsImJpbmRWYXJzIiwiYWxsIiwidG9SZXNvbHZlZEZsYWciLCJvdmVycmlkZSIsImhhc1ZhbGlkT3ZlcnJpZGUiLCJzb3VyY2UiLCJ1cGRhdGVkQXQiLCJ1cGRhdGVkQnkiLCJyZXNvbHZlRmxhZ3MiLCJvdmVycmlkZXMiLCJvdmVycmlkZU1hcCIsImdldCIsInNvcnQiLCJsZWZ0IiwicmlnaHQiLCJsb2NhbGVDb21wYXJlIiwiZXZhbHVhdGVGbGFnIiwiZmxhZyIsImZpbmQiLCJpdGVtIiwic2V0RmxhZ092ZXJyaWRlIiwic2Vzc2lvbiIsImNyZWF0ZSIsIkRhdGUiLCJub3ciLCJfa2V5IiwidXNlcklkIiwic2F2ZSIsIm92ZXJ3cml0ZU1vZGUiLCJyZXNldEZsYWdPdmVycmlkZSIsImRvY3VtZW50S2V5IiwiZG9jdW1lbnRFeGlzdHMiLCJyZW1vdmUiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLFVBQVUsRUFBRUMsV0FBVyxRQUFPLCtCQUErQjtBQUVyRSxTQUFRQyxXQUFXLFFBQU8sMkJBQTJCO0FBQ3JELFNBQVFDLEtBQUssUUFBTyw0QkFBNEI7QUFLaEQsTUFBTUMsYUFBYTtBQUNuQixNQUFNQyxtQkFBbUI7QUFFekIsTUFBTUMsaUJBQWlCLENBQUNDLFVBQW1EQSxRQUFRQyxlQUFlLElBQUksRUFBRTtBQUV4RyxNQUFNQyxxQkFBcUIsQ0FBQ0M7SUFDMUIsSUFBRyxDQUFDTCxpQkFBaUJNLElBQUksQ0FBQ0QsV0FBV0UsR0FBRyxHQUFHO1FBQ3pDLE1BQU0sSUFBSUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFSCxXQUFXRSxHQUFHLEVBQUU7SUFDdEQ7SUFDQSxJQUFHRixXQUFXSSxJQUFJLEtBQUssYUFBYSxPQUFPSixXQUFXSyxZQUFZLEtBQUssV0FBVztRQUNoRixNQUFNLElBQUlGLE1BQU0sQ0FBQyw2QkFBNkIsRUFBRUgsV0FBV0UsR0FBRyxFQUFFO0lBQ2xFO0lBQ0EsSUFBR0YsV0FBV0ksSUFBSSxLQUFLLFdBQVc7UUFDaEMsSUFBRyxPQUFPSixXQUFXSyxZQUFZLEtBQUssWUFBWSxDQUFDTCxXQUFXTSxNQUFNLEVBQUVDLFFBQVE7WUFDNUUs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
@@ -0,0 +1,19 @@
1
+ import type { GeminiVideoInput } from '../adapters/geminiGenerationAdapter.js';
2
+ import type { ApiContext } from '../types/auth.types.js';
3
+ import type { VideoGenerationResult } from './videoGeneration.js';
4
+ export declare class GeminiGenerationRejectedError extends Error {
5
+ }
6
+ export interface GeminiVideoConfig {
7
+ key?: string;
8
+ model?: string;
9
+ }
10
+ export interface GeminiVideoStatus {
11
+ error?: string;
12
+ mediaUrl?: string;
13
+ status: 'failed' | 'processing' | 'succeeded';
14
+ }
15
+ /** Submit once; an unconfirmed response must be reconciled rather than retried. */
16
+ export declare const generateGeminiVideo: (_context: ApiContext, input: GeminiVideoInput, config?: GeminiVideoConfig) => Promise<VideoGenerationResult>;
17
+ export declare const getGeminiVideoStatus: (requestId: string, config?: GeminiVideoConfig) => Promise<GeminiVideoStatus>;
18
+ /** Binary downloads use HTTPS streams because Rip-Hunter currently decodes non-JSON bodies as text. */
19
+ export declare const downloadGeminiVideo: (mediaUrl: string, config?: GeminiVideoConfig) => Promise<Buffer>;