@nlabs/metropolisjs 1.0.1 → 1.0.6

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 (230) hide show
  1. package/CHANGELOG.md +6 -109
  2. package/README.md +32 -22
  3. package/examples/content-actions-usage.ts +1 -2
  4. package/examples/factory-pattern-usage.ts +0 -18
  5. package/lib/actions/appActions/appActions.d.ts +0 -1
  6. package/lib/actions/awsRumActions/awsRumActions.d.ts +1 -2
  7. package/lib/actions/awsRumActions/awsRumActions.js +43 -22
  8. package/lib/actions/connectionActions/connectionActions.d.ts +0 -1
  9. package/lib/actions/contentActions/contentActions.d.ts +0 -1
  10. package/lib/actions/conversationActions/conversationActions.d.ts +0 -1
  11. package/lib/actions/crmActions/crmActions.d.ts +0 -1
  12. package/lib/actions/eventActions/eventActions.d.ts +0 -1
  13. package/lib/actions/groupActions/groupActions.d.ts +0 -1
  14. package/lib/actions/imageActions/imageActions.d.ts +0 -1
  15. package/lib/actions/imageActions/imageActions.js +5 -4
  16. package/lib/actions/index.d.ts +0 -1
  17. package/lib/actions/locationActions/locationActions.d.ts +0 -1
  18. package/lib/actions/messageActions/messageActions.d.ts +0 -1
  19. package/lib/actions/permissionActions/permissionActions.d.ts +0 -1
  20. package/lib/actions/personaActions/personaActions.d.ts +0 -1
  21. package/lib/actions/postActions/postActions.d.ts +0 -1
  22. package/lib/actions/reactionActions/reactionActions.d.ts +0 -1
  23. package/lib/actions/restActions/restActions.d.ts +0 -1
  24. package/lib/actions/sseActions/sseActions.d.ts +0 -1
  25. package/lib/actions/sseActions/sseActions.js +1 -1
  26. package/lib/actions/subscriptionActions/subscriptionActions.d.ts +0 -1
  27. package/lib/actions/tagActions/tagActions.d.ts +0 -1
  28. package/lib/actions/tagActions/tagActions.js +1 -1
  29. package/lib/actions/translationActions/translationActions.d.ts +0 -1
  30. package/lib/actions/userActions/userActions.d.ts +0 -3
  31. package/lib/actions/userActions/userActions.js +2 -7
  32. package/lib/actions/videoActions/videoActions.d.ts +0 -1
  33. package/lib/actions/websocketActions/websocketActions.d.ts +0 -1
  34. package/lib/adapters/appAdapter/appAdapter.d.ts +2 -3
  35. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts +2 -3
  36. package/lib/adapters/contentAdapter/contentAdapter.d.ts +2 -3
  37. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts +2 -3
  38. package/lib/adapters/eventAdapter/eventAdapter.d.ts +2 -3
  39. package/lib/adapters/fileAdapter/fileAdapter.d.ts +2 -3
  40. package/lib/adapters/groupAdapter/groupAdapter.d.ts +2 -3
  41. package/lib/adapters/imageAdapter/imageAdapter.d.ts +2 -3
  42. package/lib/adapters/index.d.ts +0 -1
  43. package/lib/adapters/locationAdapter/locationAdapter.d.ts +2 -3
  44. package/lib/adapters/messageAdapter/messageAdapter.d.ts +2 -3
  45. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts +2 -3
  46. package/lib/adapters/personaAdapter/personaAdapter.d.ts +2 -3
  47. package/lib/adapters/postAdapter/postAdapter.d.ts +2 -3
  48. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts +2 -3
  49. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts +2 -3
  50. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts +2 -3
  51. package/lib/adapters/tagAdapter/tagAdapter.d.ts +2 -4
  52. package/lib/adapters/tagAdapter/tagAdapter.js +1 -2
  53. package/lib/adapters/translationAdapter/translationAdapter.d.ts +2 -3
  54. package/lib/adapters/userAdapter/userAdapter.d.ts +2 -4
  55. package/lib/adapters/userAdapter/userAdapter.js +1 -2
  56. package/lib/adapters/videoAdapter/videoAdapter.d.ts +2 -3
  57. package/lib/config/index.d.ts +3 -3
  58. package/lib/config/index.js +7 -3
  59. package/lib/constants/Collections.d.ts +0 -1
  60. package/lib/constants/MetropolisConstants.d.ts +0 -1
  61. package/lib/graphql/message.d.ts +0 -1
  62. package/lib/graphql/notification.d.ts +0 -1
  63. package/lib/graphql/session.d.ts +0 -1
  64. package/lib/index.d.ts +4 -5
  65. package/lib/index.js +6 -5
  66. package/lib/stores/appStore.d.ts +0 -1
  67. package/lib/stores/contentStore.d.ts +0 -1
  68. package/lib/stores/conversationStore.d.ts +0 -1
  69. package/lib/stores/eventStore.d.ts +0 -1
  70. package/lib/stores/groupStore.d.ts +0 -1
  71. package/lib/stores/imageStore.d.ts +0 -1
  72. package/lib/stores/index.d.ts +0 -1
  73. package/lib/stores/locationStore.d.ts +0 -1
  74. package/lib/stores/messageStore.d.ts +0 -1
  75. package/lib/stores/notificationStore.d.ts +0 -1
  76. package/lib/stores/permissionStore.d.ts +0 -1
  77. package/lib/stores/personaStore.d.ts +0 -1
  78. package/lib/stores/postStore.d.ts +0 -1
  79. package/lib/stores/reactionStore.d.ts +0 -1
  80. package/lib/stores/subscriptionStore.d.ts +0 -1
  81. package/lib/stores/tagStore.d.ts +0 -1
  82. package/lib/stores/translationStore.d.ts +0 -1
  83. package/lib/stores/userStore.d.ts +2 -3
  84. package/lib/stores/userStore.js +7 -1
  85. package/lib/stores/videoStore.d.ts +0 -1
  86. package/lib/stores/websocketStore.d.ts +0 -1
  87. package/lib/types/apps.types.d.ts +0 -1
  88. package/lib/types/common.types.d.ts +0 -1
  89. package/lib/types/conversations.types.d.ts +0 -1
  90. package/lib/types/crm.types.d.ts +0 -1
  91. package/lib/types/edges.types.d.ts +0 -1
  92. package/lib/types/groups.types.d.ts +0 -1
  93. package/lib/types/index.d.ts +0 -1
  94. package/lib/types/subscriptions.types.d.ts +0 -1
  95. package/lib/types/videos.types.d.ts +0 -1
  96. package/lib/utils/{MetropolisProvider.d.ts → MetropolisContext.d.ts} +3 -15
  97. package/lib/utils/MetropolisContext.js +7 -0
  98. package/lib/utils/actionFactory.d.ts +2 -3
  99. package/lib/utils/actionFactory.js +2 -2
  100. package/lib/utils/api.d.ts +2 -2
  101. package/lib/utils/api.js +42 -18
  102. package/lib/utils/app.d.ts +0 -1
  103. package/lib/utils/baseActionFactory.d.ts +2 -3
  104. package/lib/utils/configUtils.d.ts +0 -1
  105. package/lib/utils/dateUtils.d.ts +0 -1
  106. package/lib/utils/file.d.ts +0 -1
  107. package/lib/utils/i18n.d.ts +0 -1
  108. package/lib/utils/index.d.ts +2 -3
  109. package/lib/utils/index.js +3 -3
  110. package/lib/utils/location.d.ts +1 -2
  111. package/lib/utils/permissionUtils.d.ts +0 -1
  112. package/lib/utils/requestCache.d.ts +1 -2
  113. package/lib/utils/session.d.ts +0 -1
  114. package/lib/utils/useConversationTyping.d.ts +0 -1
  115. package/lib/utils/useMetropolis.d.ts +2 -7
  116. package/lib/utils/useMetropolis.js +16 -30
  117. package/lib/utils/useTranslations.d.ts +0 -1
  118. package/lib/utils/useTranslations.js +4 -2
  119. package/lib/utils/validatorFactory.d.ts +1 -2
  120. package/package.json +7 -4
  121. package/tsconfig.test.json +4 -0
  122. package/lib/actions/appActions/appActions.d.ts.map +0 -1
  123. package/lib/actions/awsRumActions/awsRumActions.d.ts.map +0 -1
  124. package/lib/actions/connectionActions/connectionActions.d.ts.map +0 -1
  125. package/lib/actions/contentActions/contentActions.d.ts.map +0 -1
  126. package/lib/actions/conversationActions/conversationActions.d.ts.map +0 -1
  127. package/lib/actions/crmActions/crmActions.d.ts.map +0 -1
  128. package/lib/actions/eventActions/eventActions.d.ts.map +0 -1
  129. package/lib/actions/groupActions/groupActions.d.ts.map +0 -1
  130. package/lib/actions/imageActions/imageActions.d.ts.map +0 -1
  131. package/lib/actions/index.d.ts.map +0 -1
  132. package/lib/actions/locationActions/locationActions.d.ts.map +0 -1
  133. package/lib/actions/messageActions/messageActions.d.ts.map +0 -1
  134. package/lib/actions/permissionActions/permissionActions.d.ts.map +0 -1
  135. package/lib/actions/personaActions/personaActions.d.ts.map +0 -1
  136. package/lib/actions/postActions/postActions.d.ts.map +0 -1
  137. package/lib/actions/reactionActions/reactionActions.d.ts.map +0 -1
  138. package/lib/actions/restActions/restActions.d.ts.map +0 -1
  139. package/lib/actions/sseActions/sseActions.d.ts.map +0 -1
  140. package/lib/actions/subscriptionActions/subscriptionActions.d.ts.map +0 -1
  141. package/lib/actions/tagActions/tagActions.d.ts.map +0 -1
  142. package/lib/actions/translationActions/translationActions.d.ts.map +0 -1
  143. package/lib/actions/userActions/userActions.d.ts.map +0 -1
  144. package/lib/actions/videoActions/videoActions.d.ts.map +0 -1
  145. package/lib/actions/websocketActions/websocketActions.d.ts.map +0 -1
  146. package/lib/adapters/appAdapter/appAdapter.d.ts.map +0 -1
  147. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts.map +0 -1
  148. package/lib/adapters/contentAdapter/contentAdapter.d.ts.map +0 -1
  149. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts.map +0 -1
  150. package/lib/adapters/eventAdapter/eventAdapter.d.ts.map +0 -1
  151. package/lib/adapters/fileAdapter/fileAdapter.d.ts.map +0 -1
  152. package/lib/adapters/groupAdapter/groupAdapter.d.ts.map +0 -1
  153. package/lib/adapters/imageAdapter/imageAdapter.d.ts.map +0 -1
  154. package/lib/adapters/index.d.ts.map +0 -1
  155. package/lib/adapters/locationAdapter/locationAdapter.d.ts.map +0 -1
  156. package/lib/adapters/messageAdapter/messageAdapter.d.ts.map +0 -1
  157. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts.map +0 -1
  158. package/lib/adapters/personaAdapter/personaAdapter.d.ts.map +0 -1
  159. package/lib/adapters/postAdapter/postAdapter.d.ts.map +0 -1
  160. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts.map +0 -1
  161. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts.map +0 -1
  162. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts.map +0 -1
  163. package/lib/adapters/tagAdapter/tagAdapter.d.ts.map +0 -1
  164. package/lib/adapters/translationAdapter/translationAdapter.d.ts.map +0 -1
  165. package/lib/adapters/userAdapter/userAdapter.d.ts.map +0 -1
  166. package/lib/adapters/videoAdapter/videoAdapter.d.ts.map +0 -1
  167. package/lib/config/index.d.ts.map +0 -1
  168. package/lib/constants/Collections.d.ts.map +0 -1
  169. package/lib/constants/MetropolisConstants.d.ts.map +0 -1
  170. package/lib/graphql/message.d.ts.map +0 -1
  171. package/lib/graphql/notification.d.ts.map +0 -1
  172. package/lib/graphql/session.d.ts.map +0 -1
  173. package/lib/index.d.ts.map +0 -1
  174. package/lib/stores/appStore.d.ts.map +0 -1
  175. package/lib/stores/contentStore.d.ts.map +0 -1
  176. package/lib/stores/conversationStore.d.ts.map +0 -1
  177. package/lib/stores/eventStore.d.ts.map +0 -1
  178. package/lib/stores/groupStore.d.ts.map +0 -1
  179. package/lib/stores/imageStore.d.ts.map +0 -1
  180. package/lib/stores/index.d.ts.map +0 -1
  181. package/lib/stores/locationStore.d.ts.map +0 -1
  182. package/lib/stores/messageStore.d.ts.map +0 -1
  183. package/lib/stores/notificationStore.d.ts.map +0 -1
  184. package/lib/stores/permissionStore.d.ts.map +0 -1
  185. package/lib/stores/personaStore.d.ts.map +0 -1
  186. package/lib/stores/postStore.d.ts.map +0 -1
  187. package/lib/stores/reactionStore.d.ts.map +0 -1
  188. package/lib/stores/subscriptionStore.d.ts.map +0 -1
  189. package/lib/stores/tagStore.d.ts.map +0 -1
  190. package/lib/stores/translationStore.d.ts.map +0 -1
  191. package/lib/stores/userStore.d.ts.map +0 -1
  192. package/lib/stores/videoStore.d.ts.map +0 -1
  193. package/lib/stores/websocketStore.d.ts.map +0 -1
  194. package/lib/tests/actionTestScenarios.d.ts +0 -20
  195. package/lib/tests/actionTestScenarios.d.ts.map +0 -1
  196. package/lib/tests/actionTestScenarios.js +0 -851
  197. package/lib/tests/testGraphQLServer.d.ts +0 -22
  198. package/lib/tests/testGraphQLServer.d.ts.map +0 -1
  199. package/lib/tests/testGraphQLServer.js +0 -197
  200. package/lib/tests/testGraphQLServerSimple.d.ts +0 -3
  201. package/lib/tests/testGraphQLServerSimple.d.ts.map +0 -1
  202. package/lib/tests/testGraphQLServerSimple.js +0 -52
  203. package/lib/types/apps.types.d.ts.map +0 -1
  204. package/lib/types/common.types.d.ts.map +0 -1
  205. package/lib/types/conversations.types.d.ts.map +0 -1
  206. package/lib/types/crm.types.d.ts.map +0 -1
  207. package/lib/types/edges.types.d.ts.map +0 -1
  208. package/lib/types/groups.types.d.ts.map +0 -1
  209. package/lib/types/index.d.ts.map +0 -1
  210. package/lib/types/subscriptions.types.d.ts.map +0 -1
  211. package/lib/types/videos.types.d.ts.map +0 -1
  212. package/lib/utils/MetropolisProvider.d.ts.map +0 -1
  213. package/lib/utils/MetropolisProvider.js +0 -31
  214. package/lib/utils/actionFactory.d.ts.map +0 -1
  215. package/lib/utils/api.d.ts.map +0 -1
  216. package/lib/utils/app.d.ts.map +0 -1
  217. package/lib/utils/baseActionFactory.d.ts.map +0 -1
  218. package/lib/utils/configUtils.d.ts.map +0 -1
  219. package/lib/utils/dateUtils.d.ts.map +0 -1
  220. package/lib/utils/file.d.ts.map +0 -1
  221. package/lib/utils/i18n.d.ts.map +0 -1
  222. package/lib/utils/index.d.ts.map +0 -1
  223. package/lib/utils/location.d.ts.map +0 -1
  224. package/lib/utils/permissionUtils.d.ts.map +0 -1
  225. package/lib/utils/requestCache.d.ts.map +0 -1
  226. package/lib/utils/session.d.ts.map +0 -1
  227. package/lib/utils/useConversationTyping.d.ts.map +0 -1
  228. package/lib/utils/useMetropolis.d.ts.map +0 -1
  229. package/lib/utils/useTranslations.d.ts.map +0 -1
  230. package/lib/utils/validatorFactory.d.ts.map +0 -1
@@ -24,7 +24,7 @@ import { createWebsocketActions } from '../actions/websocketActions/websocketAct
24
24
  const awsRumActionCache = new WeakMap();
25
25
  const websocketActionCache = new WeakMap();
26
26
  const createAwsRumOptionsKey = (options = {})=>JSON.stringify({
27
- appId: options.appId,
27
+ analyticsId: options.analyticsId,
28
28
  debounceMs: options.debounceMs,
29
29
  dedupeMs: options.dedupeMs,
30
30
  enabled: options.enabled,
@@ -129,4 +129,4 @@ export const createAllActions = (flux, options)=>{
129
129
  return createActions(allActionTypes, flux, options);
130
130
  };
131
131
 
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvYWN0aW9uRmFjdG9yeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtjcmVhdGVDb250ZW50QWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9jb250ZW50QWN0aW9ucy9jb250ZW50QWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZUF3c1J1bUFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvYXdzUnVtQWN0aW9ucy9hd3NSdW1BY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlQ3JtQWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9jcm1BY3Rpb25zL2NybUFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVFdmVudEFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvZXZlbnRBY3Rpb25zL2V2ZW50QWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZUdyb3VwQWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9ncm91cEFjdGlvbnMvZ3JvdXBBY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlSW1hZ2VBY3Rpb25zfSBmcm9tICcuLi9hY3Rpb25zL2ltYWdlQWN0aW9ucy9pbWFnZUFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVMb2NhdGlvbkFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvbG9jYXRpb25BY3Rpb25zL2xvY2F0aW9uQWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZU1lc3NhZ2VBY3Rpb25zfSBmcm9tICcuLi9hY3Rpb25zL21lc3NhZ2VBY3Rpb25zL21lc3NhZ2VBY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlUGVybWlzc2lvbkFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvcGVybWlzc2lvbkFjdGlvbnMvcGVybWlzc2lvbkFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVQb3N0QWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9wb3N0QWN0aW9ucy9wb3N0QWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZVBlcnNvbmFBY3Rpb25zfSBmcm9tICcuLi9hY3Rpb25zL3BlcnNvbmFBY3Rpb25zL3BlcnNvbmFBY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlUmVhY3Rpb25BY3Rpb25zfSBmcm9tICcuLi9hY3Rpb25zL3JlYWN0aW9uQWN0aW9ucy9yZWFjdGlvbkFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVSZXN0QWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9yZXN0QWN0aW9ucy9yZXN0QWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNTRUFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvc3NlQWN0aW9ucy9zc2VBY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Vic2NyaXB0aW9uQWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9zdWJzY3JpcHRpb25BY3Rpb25zL3N1YnNjcmlwdGlvbkFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVUYWdBY3Rpb25zfSBmcm9tICcuLi9hY3Rpb25zL3RhZ0FjdGlvbnMvdGFnQWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZVRyYW5zbGF0aW9uQWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy90cmFuc2xhdGlvbkFjdGlvbnMvdHJhbnNsYXRpb25BY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlVXNlckFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvdXNlckFjdGlvbnMvdXNlckFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVWaWRlb0FjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvdmlkZW9BY3Rpb25zL3ZpZGVvQWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZVdlYnNvY2tldEFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvd2Vic29ja2V0QWN0aW9ucy93ZWJzb2NrZXRBY3Rpb25zLmpzJztcblxuaW1wb3J0IHR5cGUge0ZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7Q29udGVudEFjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL2NvbnRlbnRBY3Rpb25zL2NvbnRlbnRBY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtBd3NSdW1BY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9hd3NSdW1BY3Rpb25zL2F3c1J1bUFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge0NybUFjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL2NybUFjdGlvbnMvY3JtQWN0aW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7RXZlbnRBY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9ldmVudEFjdGlvbnMvZXZlbnRBY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtHcm91cEFjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL2dyb3VwQWN0aW9ucy9ncm91cEFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge0ltYWdlQWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvaW1hZ2VBY3Rpb25zL2ltYWdlQWN0aW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7TG9jYXRpb25BY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9sb2NhdGlvbkFjdGlvbnMvbG9jYXRpb25BY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtNZXNzYWdlQWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvbWVzc2FnZUFjdGlvbnMvbWVzc2FnZUFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge1Blcm1pc3Npb25BY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9wZXJtaXNzaW9uQWN0aW9ucy9wZXJtaXNzaW9uQWN0aW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7UG9zdEFjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL3Bvc3RBY3Rpb25zL3Bvc3RBY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtQZXJzb25hQWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvcGVyc29uYUFjdGlvbnMvcGVyc29uYUFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge1JlYWN0aW9uQWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvcmVhY3Rpb25BY3Rpb25zL3JlYWN0aW9uQWN0aW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7UmVzdEFjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL3Jlc3RBY3Rpb25zL3Jlc3RBY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtTU0VBY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9zc2VBY3Rpb25zL3NzZUFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge1RhZ0FjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL3RhZ0FjdGlvbnMvdGFnQWN0aW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7VHJhbnNsYXRpb25BY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy90cmFuc2xhdGlvbkFjdGlvbnMvdHJhbnNsYXRpb25BY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtVc2VyQWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvdXNlckFjdGlvbnMvdXNlckFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge1ZpZGVvQWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvdmlkZW9BY3Rpb25zL3ZpZGVvQWN0aW9ucy5qcyc7XG5cbmNvbnN0IGF3c1J1bUFjdGlvbkNhY2hlID0gbmV3IFdlYWtNYXA8Rmx1eEZyYW1ld29yaywge1xuICByZWFkb25seSBhY3Rpb25zOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVBd3NSdW1BY3Rpb25zPjtcbiAgcmVhZG9ubHkgb3B0aW9uc0tleTogc3RyaW5nO1xufT4oKTtcbmNvbnN0IHdlYnNvY2tldEFjdGlvbkNhY2hlID0gbmV3IFdlYWtNYXA8Rmx1eEZyYW1ld29yaywgUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlV2Vic29ja2V0QWN0aW9ucz4+KCk7XG5cbmNvbnN0IGNyZWF0ZUF3c1J1bU9wdGlvbnNLZXkgPSAob3B0aW9uczogQXdzUnVtQWN0aW9uc09wdGlvbnMgPSB7fSk6IHN0cmluZyA9PiBKU09OLnN0cmluZ2lmeSh7XG4gIGFwcElkOiBvcHRpb25zLmFwcElkLFxuICBkZWJvdW5jZU1zOiBvcHRpb25zLmRlYm91bmNlTXMsXG4gIGRlZHVwZU1zOiBvcHRpb25zLmRlZHVwZU1zLFxuICBlbmFibGVkOiBvcHRpb25zLmVuYWJsZWQsXG4gIHJlc3BlY3RQcml2YWN5U2lnbmFsczogb3B0aW9ucy5yZXNwZWN0UHJpdmFjeVNpZ25hbHMsXG4gIHRocm90dGxlTXM6IG9wdGlvbnMudGhyb3R0bGVNc1xufSk7XG5cbmV4cG9ydCB0eXBlIEFjdGlvblR5cGUgPVxuICB8ICdhd3NSdW0nXG4gIHwgJ2NvbnRlbnQnXG4gIHwgJ2NybSdcbiAgfCAnZXZlbnQnXG4gIHwgJ2dyb3VwJ1xuICB8ICdpbWFnZSdcbiAgfCAnbG9jYXRpb24nXG4gIHwgJ21lc3NhZ2UnXG4gIHwgJ3Blcm1pc3Npb24nXG4gIHwgJ3Bvc3QnXG4gIHwgJ3BlcnNvbmEnXG4gIHwgJ3JlYWN0aW9uJ1xuICB8ICdyZXN0J1xuICB8ICdzc2UnXG4gIHwgJ3N1YnNjcmlwdGlvbidcbiAgfCAndGFnJ1xuICB8ICd0cmFuc2xhdGlvbidcbiAgfCAndXNlcidcbiAgfCAndmlkZW8nXG4gIHwgJ3dlYnNvY2tldCc7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbk9wdGlvbnMgPVxuICB8IEF3c1J1bUFjdGlvbnNPcHRpb25zXG4gIHwgQ29udGVudEFjdGlvbnNPcHRpb25zXG4gIHwgQ3JtQWN0aW9uc09wdGlvbnNcbiAgfCBFdmVudEFjdGlvbnNPcHRpb25zXG4gIHwgR3JvdXBBY3Rpb25zT3B0aW9uc1xuICB8IEltYWdlQWN0aW9uc09wdGlvbnNcbiAgfCBMb2NhdGlvbkFjdGlvbnNPcHRpb25zXG4gIHwgTWVzc2FnZUFjdGlvbnNPcHRpb25zXG4gIHwgUGVybWlzc2lvbkFjdGlvbnNPcHRpb25zXG4gIHwgUG9zdEFjdGlvbnNPcHRpb25zXG4gIHwgUGVyc29uYUFjdGlvbnNPcHRpb25zXG4gIHwgUmVhY3Rpb25BY3Rpb25zT3B0aW9uc1xuICB8IFJlc3RBY3Rpb25zT3B0aW9uc1xuICB8IFNTRUFjdGlvbnNPcHRpb25zXG4gIHwgVGFnQWN0aW9uc09wdGlvbnNcbiAgfCBUcmFuc2xhdGlvbkFjdGlvbnNPcHRpb25zXG4gIHwgVXNlckFjdGlvbnNPcHRpb25zXG4gIHwgVmlkZW9BY3Rpb25zT3B0aW9uc1xuICB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGlvbiA9IDxUIGV4dGVuZHMgQWN0aW9uVHlwZT4oXG4gIGFjdGlvblR5cGU6IFQsXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG9wdGlvbnM/OiBBY3Rpb25PcHRpb25zXG4pID0+IHtcbiAgc3dpdGNoKGFjdGlvblR5cGUpIHtcbiAgICBjYXNlICdhd3NSdW0nOiB7XG4gICAgICBjb25zdCBhd3NSdW1PcHRpb25zID0gb3B0aW9ucyBhcyBBd3NSdW1BY3Rpb25zT3B0aW9ucztcbiAgICAgIGNvbnN0IG9wdGlvbnNLZXkgPSBjcmVhdGVBd3NSdW1PcHRpb25zS2V5KGF3c1J1bU9wdGlvbnMpO1xuICAgICAgY29uc3QgY2FjaGVkID0gYXdzUnVtQWN0aW9uQ2FjaGUuZ2V0KGZsdXgpO1xuXG4gICAgICBpZighY2FjaGVkIHx8IGNhY2hlZC5vcHRpb25zS2V5ICE9PSBvcHRpb25zS2V5KSB7XG4gICAgICAgIGlmKGNhY2hlZCkge1xuICAgICAgICAgIHZvaWQgY2FjaGVkLmFjdGlvbnMuZGVzdHJveSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWN0aW9ucyA9IGNyZWF0ZUF3c1J1bUFjdGlvbnMoZmx1eCwgYXdzUnVtT3B0aW9ucyk7XG4gICAgICAgIGF3c1J1bUFjdGlvbkNhY2hlLnNldChmbHV4LCB7YWN0aW9ucywgb3B0aW9uc0tleX0pO1xuICAgICAgICByZXR1cm4gYWN0aW9ucztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhY2hlZC5hY3Rpb25zO1xuICAgIH1cblxuICAgIGNhc2UgJ2NvbnRlbnQnOlxuICAgICAgcmV0dXJuIGNyZWF0ZUNvbnRlbnRBY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgQ29udGVudEFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ2NybSc6XG4gICAgICByZXR1cm4gY3JlYXRlQ3JtQWN0aW9ucyhmbHV4LCBvcHRpb25zIGFzIENybUFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ2V2ZW50JzpcbiAgICAgIHJldHVybiBjcmVhdGVFdmVudEFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBFdmVudEFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ2dyb3VwJzpcbiAgICAgIHJldHVybiBjcmVhdGVHcm91cEFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBHcm91cEFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ2ltYWdlJzpcbiAgICAgIHJldHVybiBjcmVhdGVJbWFnZUFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBJbWFnZUFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ2xvY2F0aW9uJzpcbiAgICAgIHJldHVybiBjcmVhdGVMb2NhdGlvbkFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBMb2NhdGlvbkFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgcmV0dXJuIGNyZWF0ZU1lc3NhZ2VBY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgTWVzc2FnZUFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3Blcm1pc3Npb24nOlxuICAgICAgcmV0dXJuIGNyZWF0ZVBlcm1pc3Npb25BY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgUGVybWlzc2lvbkFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3Bvc3QnOlxuICAgICAgcmV0dXJuIGNyZWF0ZVBvc3RBY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgUG9zdEFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3BlcnNvbmEnOlxuICAgICAgcmV0dXJuIGNyZWF0ZVBlcnNvbmFBY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgUGVyc29uYUFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3JlYWN0aW9uJzpcbiAgICAgIHJldHVybiBjcmVhdGVSZWFjdGlvbkFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBSZWFjdGlvbkFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3Jlc3QnOlxuICAgICAgcmV0dXJuIGNyZWF0ZVJlc3RBY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgUmVzdEFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3NzZSc6XG4gICAgICByZXR1cm4gY3JlYXRlU1NFQWN0aW9ucyhmbHV4LCBvcHRpb25zIGFzIFNTRUFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3N1YnNjcmlwdGlvbic6XG4gICAgICByZXR1cm4gY3JlYXRlU3Vic2NyaXB0aW9uQWN0aW9ucyhmbHV4KTtcblxuICAgIGNhc2UgJ3RhZyc6XG4gICAgICByZXR1cm4gY3JlYXRlVGFnQWN0aW9ucyhmbHV4LCBvcHRpb25zIGFzIFRhZ0FjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3RyYW5zbGF0aW9uJzpcbiAgICAgIHJldHVybiBjcmVhdGVUcmFuc2xhdGlvbkFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBUcmFuc2xhdGlvbkFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3VzZXInOlxuICAgICAgcmV0dXJuIGNyZWF0ZVVzZXJBY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgVXNlckFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgIHJldHVybiBjcmVhdGVWaWRlb0FjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBWaWRlb0FjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3dlYnNvY2tldCc6XG4gICAgICBpZighd2Vic29ja2V0QWN0aW9uQ2FjaGUuaGFzKGZsdXgpKSB7XG4gICAgICAgIHdlYnNvY2tldEFjdGlvbkNhY2hlLnNldChmbHV4LCBjcmVhdGVXZWJzb2NrZXRBY3Rpb25zKGZsdXgpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHdlYnNvY2tldEFjdGlvbkNhY2hlLmdldChmbHV4KSBhcyBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVXZWJzb2NrZXRBY3Rpb25zPjtcblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIHR5cGU6ICR7YWN0aW9uVHlwZX1gKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGlvbnMgPSAoXG4gIGFjdGlvblR5cGVzOiBBY3Rpb25UeXBlW10sXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG9wdGlvbnM/OiBQYXJ0aWFsPFJlY29yZDxBY3Rpb25UeXBlLCBBY3Rpb25PcHRpb25zPj5cbik6IFBhcnRpYWw8UmVjb3JkPEFjdGlvblR5cGUsIEFjdGlvblJldHVyblR5cGU8QWN0aW9uVHlwZT4+PiA9PiB7XG4gIGNvbnN0IGFjdGlvbnM6IFBhcnRpYWw8UmVjb3JkPEFjdGlvblR5cGUsIEFjdGlvblJldHVyblR5cGU8QWN0aW9uVHlwZT4+PiA9IHt9O1xuXG4gIGFjdGlvblR5cGVzLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICBhY3Rpb25zW3R5cGVdID0gY3JlYXRlQWN0aW9uKHR5cGUsIGZsdXgsIG9wdGlvbnM/Llt0eXBlXSkgYXMgQWN0aW9uUmV0dXJuVHlwZTxBY3Rpb25UeXBlPjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFjdGlvbnM7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQWxsQWN0aW9ucyA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgb3B0aW9ucz86IFBhcnRpYWw8UmVjb3JkPEFjdGlvblR5cGUsIEFjdGlvbk9wdGlvbnM+PlxuKSA9PiB7XG4gIGNvbnN0IGFsbEFjdGlvblR5cGVzOiBBY3Rpb25UeXBlW10gPSBbXG4gICAgJ2F3c1J1bScsXG4gICAgJ2NvbnRlbnQnLFxuICAgICdjcm0nLFxuICAgICdldmVudCcsXG4gICAgJ2dyb3VwJyxcbiAgICAnaW1hZ2UnLFxuICAgICdsb2NhdGlvbicsXG4gICAgJ21lc3NhZ2UnLFxuICAgICdwZXJtaXNzaW9uJyxcbiAgICAncG9zdCcsXG4gICAgJ3BlcnNvbmEnLFxuICAgICdyZWFjdGlvbicsXG4gICAgJ3Jlc3QnLFxuICAgICdzc2UnLFxuICAgICdzdWJzY3JpcHRpb24nLFxuICAgICd0YWcnLFxuICAgICd0cmFuc2xhdGlvbicsXG4gICAgJ3VzZXInLFxuICAgICd2aWRlbycsXG4gICAgJ3dlYnNvY2tldCdcbiAgXTtcblxuICByZXR1cm4gY3JlYXRlQWN0aW9ucyhhbGxBY3Rpb25UeXBlcywgZmx1eCwgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25UeXBlcyA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUFsbEFjdGlvbnM+O1xuZXhwb3J0IHR5cGUgQWN0aW9uUmV0dXJuVHlwZTxUIGV4dGVuZHMgQWN0aW9uVHlwZT4gPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVBY3Rpb248VD4+O1xuIl0sIm5hbWVzIjpbImNyZWF0ZUNvbnRlbnRBY3Rpb25zIiwiY3JlYXRlQXdzUnVtQWN0aW9ucyIsImNyZWF0ZUNybUFjdGlvbnMiLCJjcmVhdGVFdmVudEFjdGlvbnMiLCJjcmVhdGVHcm91cEFjdGlvbnMiLCJjcmVhdGVJbWFnZUFjdGlvbnMiLCJjcmVhdGVMb2NhdGlvbkFjdGlvbnMiLCJjcmVhdGVNZXNzYWdlQWN0aW9ucyIsImNyZWF0ZVBlcm1pc3Npb25BY3Rpb25zIiwiY3JlYXRlUG9zdEFjdGlvbnMiLCJjcmVhdGVQZXJzb25hQWN0aW9ucyIsImNyZWF0ZVJlYWN0aW9uQWN0aW9ucyIsImNyZWF0ZVJlc3RBY3Rpb25zIiwiY3JlYXRlU1NFQWN0aW9ucyIsImNyZWF0ZVN1YnNjcmlwdGlvbkFjdGlvbnMiLCJjcmVhdGVUYWdBY3Rpb25zIiwiY3JlYXRlVHJhbnNsYXRpb25BY3Rpb25zIiwiY3JlYXRlVXNlckFjdGlvbnMiLCJjcmVhdGVWaWRlb0FjdGlvbnMiLCJjcmVhdGVXZWJzb2NrZXRBY3Rpb25zIiwiYXdzUnVtQWN0aW9uQ2FjaGUiLCJXZWFrTWFwIiwid2Vic29ja2V0QWN0aW9uQ2FjaGUiLCJjcmVhdGVBd3NSdW1PcHRpb25zS2V5Iiwib3B0aW9ucyIsIkpTT04iLCJzdHJpbmdpZnkiLCJhcHBJZCIsImRlYm91bmNlTXMiLCJkZWR1cGVNcyIsImVuYWJsZWQiLCJyZXNwZWN0UHJpdmFjeVNpZ25hbHMiLCJ0aHJvdHRsZU1zIiwiY3JlYXRlQWN0aW9uIiwiYWN0aW9uVHlwZSIsImZsdXgiLCJhd3NSdW1PcHRpb25zIiwib3B0aW9uc0tleSIsImNhY2hlZCIsImdldCIsImFjdGlvbnMiLCJkZXN0cm95Iiwic2V0IiwiaGFzIiwiRXJyb3IiLCJjcmVhdGVBY3Rpb25zIiwiYWN0aW9uVHlwZXMiLCJmb3JFYWNoIiwidHlwZSIsImNyZWF0ZUFsbEFjdGlvbnMiLCJhbGxBY3Rpb25UeXBlcyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsb0JBQW9CLFFBQU8sOENBQThDO0FBQ2pGLFNBQVFDLG1CQUFtQixRQUFPLDRDQUE0QztBQUM5RSxTQUFRQyxnQkFBZ0IsUUFBTyxzQ0FBc0M7QUFDckUsU0FBUUMsa0JBQWtCLFFBQU8sMENBQTBDO0FBQzNFLFNBQVFDLGtCQUFrQixRQUFPLDBDQUEwQztBQUMzRSxTQUFRQyxrQkFBa0IsUUFBTywwQ0FBMEM7QUFDM0UsU0FBUUMscUJBQXFCLFFBQU8sZ0RBQWdEO0FBQ3BGLFNBQVFDLG9CQUFvQixRQUFPLDhDQUE4QztBQUNqRixTQUFRQyx1QkFBdUIsUUFBTyxvREFBb0Q7QUFDMUYsU0FBUUMsaUJBQWlCLFFBQU8sd0NBQXdDO0FBQ3hFLFNBQVFDLG9CQUFvQixRQUFPLDhDQUE4QztBQUNqRixTQUFRQyxxQkFBcUIsUUFBTyxnREFBZ0Q7QUFDcEYsU0FBUUMsaUJBQWlCLFFBQU8sd0NBQXdDO0FBQ3hFLFNBQVFDLGdCQUFnQixRQUFPLHNDQUFzQztBQUNyRSxTQUFRQyx5QkFBeUIsUUFBTyx3REFBd0Q7QUFDaEcsU0FBUUMsZ0JBQWdCLFFBQU8sc0NBQXNDO0FBQ3JFLFNBQVFDLHdCQUF3QixRQUFPLHNEQUFzRDtBQUM3RixTQUFRQyxpQkFBaUIsUUFBTyx3Q0FBd0M7QUFDeEUsU0FBUUMsa0JBQWtCLFFBQU8sMENBQTBDO0FBQzNFLFNBQVFDLHNCQUFzQixRQUFPLGtEQUFrRDtBQXNCdkYsTUFBTUMsb0JBQW9CLElBQUlDO0FBSTlCLE1BQU1DLHVCQUF1QixJQUFJRDtBQUVqQyxNQUFNRSx5QkFBeUIsQ0FBQ0MsVUFBZ0MsQ0FBQyxDQUFDLEdBQWFDLEtBQUtDLFNBQVMsQ0FBQztRQUM1RkMsT0FBT0gsUUFBUUcsS0FBSztRQUNwQkMsWUFBWUosUUFBUUksVUFBVTtRQUM5QkMsVUFBVUwsUUFBUUssUUFBUTtRQUMxQkMsU0FBU04sUUFBUU0sT0FBTztRQUN4QkMsdUJBQXVCUCxRQUFRTyxxQkFBcUI7UUFDcERDLFlBQVlSLFFBQVFRLFVBQVU7SUFDaEM7QUE2Q0EsT0FBTyxNQUFNQyxlQUFlLENBQzFCQyxZQUNBQyxNQUNBWDtJQUVBLE9BQU9VO1FBQ0wsS0FBSztZQUFVO2dCQUNiLE1BQU1FLGdCQUFnQlo7Z0JBQ3RCLE1BQU1hLGFBQWFkLHVCQUF1QmE7Z0JBQzFDLE1BQU1FLFNBQVNsQixrQkFBa0JtQixHQUFHLENBQUNKO2dCQUVyQyxJQUFHLENBQUNHLFVBQVVBLE9BQU9ELFVBQVUsS0FBS0EsWUFBWTtvQkFDOUMsSUFBR0MsUUFBUTt3QkFDVCxLQUFLQSxPQUFPRSxPQUFPLENBQUNDLE9BQU87b0JBQzdCO29CQUVBLE1BQU1ELFVBQVV2QyxvQkFBb0JrQyxNQUFNQztvQkFDMUNoQixrQkFBa0JzQixHQUFHLENBQUNQLE1BQU07d0JBQUNLO3dCQUFTSDtvQkFBVTtvQkFDaEQsT0FBT0c7Z0JBQ1Q7Z0JBRUEsT0FBT0YsT0FBT0UsT0FBTztZQUN2QjtRQUVBLEtBQUs7WUFDSCxPQUFPeEMscUJBQXFCbUMsTUFBTVg7UUFFcEMsS0FBSztZQUNILE9BQU90QixpQkFBaUJpQyxNQUFNWDtRQUVoQyxLQUFLO1lBQ0gsT0FBT3JCLG1CQUFtQmdDLE1BQU1YO1FBRWxDLEtBQUs7WUFDSCxPQUFPcEIsbUJBQW1CK0IsTUFBTVg7UUFFbEMsS0FBSztZQUNILE9BQU9uQixtQkFBbUI4QixNQUFNWDtRQUVsQyxLQUFLO1lBQ0gsT0FBT2xCLHNCQUFzQjZCLE1BQU1YO1FBRXJDLEtBQUs7WUFDSCxPQUFPakIscUJBQXFCNEIsTUFBTVg7UUFFcEMsS0FBSztZQUNILE9BQU9oQix3QkFBd0IyQixNQUFNWDtRQUV2QyxLQUFLO1lBQ0gsT0FBT2Ysa0JBQWtCMEIsTUFBTVg7UUFFakMsS0FBSztZQUNILE9BQU9kLHFCQUFxQnlCLE1BQU1YO1FBRXBDLEtBQUs7WUFDSCxPQUFPYixzQkFBc0J3QixNQUFNWDtRQUVyQyxLQUFLO1lBQ0gsT0FBT1osa0JBQWtCdUIsTUFBTVg7UUFFakMsS0FBSztZQUNILE9BQU9YLGlCQUFpQnNCLE1BQU1YO1FBRWhDLEtBQUs7WUFDSCxPQUFPViwwQkFBMEJxQjtRQUVuQyxLQUFLO1lBQ0gsT0FBT3BCLGlCQUFpQm9CLE1BQU1YO1FBRWhDLEtBQUs7WUFDSCxPQUFPUix5QkFBeUJtQixNQUFNWDtRQUV4QyxLQUFLO1lBQ0gsT0FBT1Asa0JBQWtCa0IsTUFBTVg7UUFFakMsS0FBSztZQUNILE9BQU9OLG1CQUFtQmlCLE1BQU1YO1FBRWxDLEtBQUs7WUFDSCxJQUFHLENBQUNGLHFCQUFxQnFCLEdBQUcsQ0FBQ1IsT0FBTztnQkFDbENiLHFCQUFxQm9CLEdBQUcsQ0FBQ1AsTUFBTWhCLHVCQUF1QmdCO1lBQ3hEO1lBRUEsT0FBT2IscUJBQXFCaUIsR0FBRyxDQUFDSjtRQUVsQztZQUNFLE1BQU0sSUFBSVMsTUFBTSxDQUFDLHFCQUFxQixFQUFFVixZQUFZO0lBQ3hEO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTVcsZ0JBQWdCLENBQzNCQyxhQUNBWCxNQUNBWDtJQUVBLE1BQU1nQixVQUFxRSxDQUFDO0lBRTVFTSxZQUFZQyxPQUFPLENBQUMsQ0FBQ0M7UUFDbkJSLE9BQU8sQ0FBQ1EsS0FBSyxHQUFHZixhQUFhZSxNQUFNYixNQUFNWCxTQUFTLENBQUN3QixLQUFLO0lBQzFEO0lBRUEsT0FBT1I7QUFDVCxFQUFFO0FBRUYsT0FBTyxNQUFNUyxtQkFBbUIsQ0FDOUJkLE1BQ0FYO0lBRUEsTUFBTTBCLGlCQUErQjtRQUNuQztRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFFRCxPQUFPTCxjQUFjSyxnQkFBZ0JmLE1BQU1YO0FBQzdDLEVBQUUifQ==
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvYWN0aW9uRmFjdG9yeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtjcmVhdGVDb250ZW50QWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9jb250ZW50QWN0aW9ucy9jb250ZW50QWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZUF3c1J1bUFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvYXdzUnVtQWN0aW9ucy9hd3NSdW1BY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlQ3JtQWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9jcm1BY3Rpb25zL2NybUFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVFdmVudEFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvZXZlbnRBY3Rpb25zL2V2ZW50QWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZUdyb3VwQWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9ncm91cEFjdGlvbnMvZ3JvdXBBY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlSW1hZ2VBY3Rpb25zfSBmcm9tICcuLi9hY3Rpb25zL2ltYWdlQWN0aW9ucy9pbWFnZUFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVMb2NhdGlvbkFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvbG9jYXRpb25BY3Rpb25zL2xvY2F0aW9uQWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZU1lc3NhZ2VBY3Rpb25zfSBmcm9tICcuLi9hY3Rpb25zL21lc3NhZ2VBY3Rpb25zL21lc3NhZ2VBY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlUGVybWlzc2lvbkFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvcGVybWlzc2lvbkFjdGlvbnMvcGVybWlzc2lvbkFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVQb3N0QWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9wb3N0QWN0aW9ucy9wb3N0QWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZVBlcnNvbmFBY3Rpb25zfSBmcm9tICcuLi9hY3Rpb25zL3BlcnNvbmFBY3Rpb25zL3BlcnNvbmFBY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlUmVhY3Rpb25BY3Rpb25zfSBmcm9tICcuLi9hY3Rpb25zL3JlYWN0aW9uQWN0aW9ucy9yZWFjdGlvbkFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVSZXN0QWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9yZXN0QWN0aW9ucy9yZXN0QWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNTRUFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvc3NlQWN0aW9ucy9zc2VBY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Vic2NyaXB0aW9uQWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9zdWJzY3JpcHRpb25BY3Rpb25zL3N1YnNjcmlwdGlvbkFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVUYWdBY3Rpb25zfSBmcm9tICcuLi9hY3Rpb25zL3RhZ0FjdGlvbnMvdGFnQWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZVRyYW5zbGF0aW9uQWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy90cmFuc2xhdGlvbkFjdGlvbnMvdHJhbnNsYXRpb25BY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlVXNlckFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvdXNlckFjdGlvbnMvdXNlckFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVWaWRlb0FjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvdmlkZW9BY3Rpb25zL3ZpZGVvQWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZVdlYnNvY2tldEFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvd2Vic29ja2V0QWN0aW9ucy93ZWJzb2NrZXRBY3Rpb25zLmpzJztcblxuaW1wb3J0IHR5cGUge0ZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7Q29udGVudEFjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL2NvbnRlbnRBY3Rpb25zL2NvbnRlbnRBY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtBd3NSdW1BY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9hd3NSdW1BY3Rpb25zL2F3c1J1bUFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge0NybUFjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL2NybUFjdGlvbnMvY3JtQWN0aW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7RXZlbnRBY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9ldmVudEFjdGlvbnMvZXZlbnRBY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtHcm91cEFjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL2dyb3VwQWN0aW9ucy9ncm91cEFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge0ltYWdlQWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvaW1hZ2VBY3Rpb25zL2ltYWdlQWN0aW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7TG9jYXRpb25BY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9sb2NhdGlvbkFjdGlvbnMvbG9jYXRpb25BY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtNZXNzYWdlQWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvbWVzc2FnZUFjdGlvbnMvbWVzc2FnZUFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge1Blcm1pc3Npb25BY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9wZXJtaXNzaW9uQWN0aW9ucy9wZXJtaXNzaW9uQWN0aW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7UG9zdEFjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL3Bvc3RBY3Rpb25zL3Bvc3RBY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtQZXJzb25hQWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvcGVyc29uYUFjdGlvbnMvcGVyc29uYUFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge1JlYWN0aW9uQWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvcmVhY3Rpb25BY3Rpb25zL3JlYWN0aW9uQWN0aW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7UmVzdEFjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL3Jlc3RBY3Rpb25zL3Jlc3RBY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtTU0VBY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9zc2VBY3Rpb25zL3NzZUFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge1RhZ0FjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL3RhZ0FjdGlvbnMvdGFnQWN0aW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7VHJhbnNsYXRpb25BY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy90cmFuc2xhdGlvbkFjdGlvbnMvdHJhbnNsYXRpb25BY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtVc2VyQWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvdXNlckFjdGlvbnMvdXNlckFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge1ZpZGVvQWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvdmlkZW9BY3Rpb25zL3ZpZGVvQWN0aW9ucy5qcyc7XG5cbmNvbnN0IGF3c1J1bUFjdGlvbkNhY2hlID0gbmV3IFdlYWtNYXA8Rmx1eEZyYW1ld29yaywge1xuICByZWFkb25seSBhY3Rpb25zOiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVBd3NSdW1BY3Rpb25zPjtcbiAgcmVhZG9ubHkgb3B0aW9uc0tleTogc3RyaW5nO1xufT4oKTtcbmNvbnN0IHdlYnNvY2tldEFjdGlvbkNhY2hlID0gbmV3IFdlYWtNYXA8Rmx1eEZyYW1ld29yaywgUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlV2Vic29ja2V0QWN0aW9ucz4+KCk7XG5cbmNvbnN0IGNyZWF0ZUF3c1J1bU9wdGlvbnNLZXkgPSAob3B0aW9uczogQXdzUnVtQWN0aW9uc09wdGlvbnMgPSB7fSk6IHN0cmluZyA9PiBKU09OLnN0cmluZ2lmeSh7XG4gIGFuYWx5dGljc0lkOiBvcHRpb25zLmFuYWx5dGljc0lkLFxuICBkZWJvdW5jZU1zOiBvcHRpb25zLmRlYm91bmNlTXMsXG4gIGRlZHVwZU1zOiBvcHRpb25zLmRlZHVwZU1zLFxuICBlbmFibGVkOiBvcHRpb25zLmVuYWJsZWQsXG4gIHJlc3BlY3RQcml2YWN5U2lnbmFsczogb3B0aW9ucy5yZXNwZWN0UHJpdmFjeVNpZ25hbHMsXG4gIHRocm90dGxlTXM6IG9wdGlvbnMudGhyb3R0bGVNc1xufSk7XG5cbmV4cG9ydCB0eXBlIEFjdGlvblR5cGUgPVxuICB8ICdhd3NSdW0nXG4gIHwgJ2NvbnRlbnQnXG4gIHwgJ2NybSdcbiAgfCAnZXZlbnQnXG4gIHwgJ2dyb3VwJ1xuICB8ICdpbWFnZSdcbiAgfCAnbG9jYXRpb24nXG4gIHwgJ21lc3NhZ2UnXG4gIHwgJ3Blcm1pc3Npb24nXG4gIHwgJ3Bvc3QnXG4gIHwgJ3BlcnNvbmEnXG4gIHwgJ3JlYWN0aW9uJ1xuICB8ICdyZXN0J1xuICB8ICdzc2UnXG4gIHwgJ3N1YnNjcmlwdGlvbidcbiAgfCAndGFnJ1xuICB8ICd0cmFuc2xhdGlvbidcbiAgfCAndXNlcidcbiAgfCAndmlkZW8nXG4gIHwgJ3dlYnNvY2tldCc7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbk9wdGlvbnMgPVxuICB8IEF3c1J1bUFjdGlvbnNPcHRpb25zXG4gIHwgQ29udGVudEFjdGlvbnNPcHRpb25zXG4gIHwgQ3JtQWN0aW9uc09wdGlvbnNcbiAgfCBFdmVudEFjdGlvbnNPcHRpb25zXG4gIHwgR3JvdXBBY3Rpb25zT3B0aW9uc1xuICB8IEltYWdlQWN0aW9uc09wdGlvbnNcbiAgfCBMb2NhdGlvbkFjdGlvbnNPcHRpb25zXG4gIHwgTWVzc2FnZUFjdGlvbnNPcHRpb25zXG4gIHwgUGVybWlzc2lvbkFjdGlvbnNPcHRpb25zXG4gIHwgUG9zdEFjdGlvbnNPcHRpb25zXG4gIHwgUGVyc29uYUFjdGlvbnNPcHRpb25zXG4gIHwgUmVhY3Rpb25BY3Rpb25zT3B0aW9uc1xuICB8IFJlc3RBY3Rpb25zT3B0aW9uc1xuICB8IFNTRUFjdGlvbnNPcHRpb25zXG4gIHwgVGFnQWN0aW9uc09wdGlvbnNcbiAgfCBUcmFuc2xhdGlvbkFjdGlvbnNPcHRpb25zXG4gIHwgVXNlckFjdGlvbnNPcHRpb25zXG4gIHwgVmlkZW9BY3Rpb25zT3B0aW9uc1xuICB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGlvbiA9IDxUIGV4dGVuZHMgQWN0aW9uVHlwZT4oXG4gIGFjdGlvblR5cGU6IFQsXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG9wdGlvbnM/OiBBY3Rpb25PcHRpb25zXG4pID0+IHtcbiAgc3dpdGNoKGFjdGlvblR5cGUpIHtcbiAgICBjYXNlICdhd3NSdW0nOiB7XG4gICAgICBjb25zdCBhd3NSdW1PcHRpb25zID0gb3B0aW9ucyBhcyBBd3NSdW1BY3Rpb25zT3B0aW9ucztcbiAgICAgIGNvbnN0IG9wdGlvbnNLZXkgPSBjcmVhdGVBd3NSdW1PcHRpb25zS2V5KGF3c1J1bU9wdGlvbnMpO1xuICAgICAgY29uc3QgY2FjaGVkID0gYXdzUnVtQWN0aW9uQ2FjaGUuZ2V0KGZsdXgpO1xuXG4gICAgICBpZighY2FjaGVkIHx8IGNhY2hlZC5vcHRpb25zS2V5ICE9PSBvcHRpb25zS2V5KSB7XG4gICAgICAgIGlmKGNhY2hlZCkge1xuICAgICAgICAgIHZvaWQgY2FjaGVkLmFjdGlvbnMuZGVzdHJveSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWN0aW9ucyA9IGNyZWF0ZUF3c1J1bUFjdGlvbnMoZmx1eCwgYXdzUnVtT3B0aW9ucyk7XG4gICAgICAgIGF3c1J1bUFjdGlvbkNhY2hlLnNldChmbHV4LCB7YWN0aW9ucywgb3B0aW9uc0tleX0pO1xuICAgICAgICByZXR1cm4gYWN0aW9ucztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhY2hlZC5hY3Rpb25zO1xuICAgIH1cblxuICAgIGNhc2UgJ2NvbnRlbnQnOlxuICAgICAgcmV0dXJuIGNyZWF0ZUNvbnRlbnRBY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgQ29udGVudEFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ2NybSc6XG4gICAgICByZXR1cm4gY3JlYXRlQ3JtQWN0aW9ucyhmbHV4LCBvcHRpb25zIGFzIENybUFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ2V2ZW50JzpcbiAgICAgIHJldHVybiBjcmVhdGVFdmVudEFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBFdmVudEFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ2dyb3VwJzpcbiAgICAgIHJldHVybiBjcmVhdGVHcm91cEFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBHcm91cEFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ2ltYWdlJzpcbiAgICAgIHJldHVybiBjcmVhdGVJbWFnZUFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBJbWFnZUFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ2xvY2F0aW9uJzpcbiAgICAgIHJldHVybiBjcmVhdGVMb2NhdGlvbkFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBMb2NhdGlvbkFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgcmV0dXJuIGNyZWF0ZU1lc3NhZ2VBY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgTWVzc2FnZUFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3Blcm1pc3Npb24nOlxuICAgICAgcmV0dXJuIGNyZWF0ZVBlcm1pc3Npb25BY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgUGVybWlzc2lvbkFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3Bvc3QnOlxuICAgICAgcmV0dXJuIGNyZWF0ZVBvc3RBY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgUG9zdEFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3BlcnNvbmEnOlxuICAgICAgcmV0dXJuIGNyZWF0ZVBlcnNvbmFBY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgUGVyc29uYUFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3JlYWN0aW9uJzpcbiAgICAgIHJldHVybiBjcmVhdGVSZWFjdGlvbkFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBSZWFjdGlvbkFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3Jlc3QnOlxuICAgICAgcmV0dXJuIGNyZWF0ZVJlc3RBY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgUmVzdEFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3NzZSc6XG4gICAgICByZXR1cm4gY3JlYXRlU1NFQWN0aW9ucyhmbHV4LCBvcHRpb25zIGFzIFNTRUFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3N1YnNjcmlwdGlvbic6XG4gICAgICByZXR1cm4gY3JlYXRlU3Vic2NyaXB0aW9uQWN0aW9ucyhmbHV4KTtcblxuICAgIGNhc2UgJ3RhZyc6XG4gICAgICByZXR1cm4gY3JlYXRlVGFnQWN0aW9ucyhmbHV4LCBvcHRpb25zIGFzIFRhZ0FjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3RyYW5zbGF0aW9uJzpcbiAgICAgIHJldHVybiBjcmVhdGVUcmFuc2xhdGlvbkFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBUcmFuc2xhdGlvbkFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3VzZXInOlxuICAgICAgcmV0dXJuIGNyZWF0ZVVzZXJBY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgVXNlckFjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgIHJldHVybiBjcmVhdGVWaWRlb0FjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBWaWRlb0FjdGlvbnNPcHRpb25zKTtcblxuICAgIGNhc2UgJ3dlYnNvY2tldCc6XG4gICAgICBpZighd2Vic29ja2V0QWN0aW9uQ2FjaGUuaGFzKGZsdXgpKSB7XG4gICAgICAgIHdlYnNvY2tldEFjdGlvbkNhY2hlLnNldChmbHV4LCBjcmVhdGVXZWJzb2NrZXRBY3Rpb25zKGZsdXgpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHdlYnNvY2tldEFjdGlvbkNhY2hlLmdldChmbHV4KSBhcyBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVXZWJzb2NrZXRBY3Rpb25zPjtcblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIHR5cGU6ICR7YWN0aW9uVHlwZX1gKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGlvbnMgPSAoXG4gIGFjdGlvblR5cGVzOiBBY3Rpb25UeXBlW10sXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG9wdGlvbnM/OiBQYXJ0aWFsPFJlY29yZDxBY3Rpb25UeXBlLCBBY3Rpb25PcHRpb25zPj5cbik6IFBhcnRpYWw8UmVjb3JkPEFjdGlvblR5cGUsIEFjdGlvblJldHVyblR5cGU8QWN0aW9uVHlwZT4+PiA9PiB7XG4gIGNvbnN0IGFjdGlvbnM6IFBhcnRpYWw8UmVjb3JkPEFjdGlvblR5cGUsIEFjdGlvblJldHVyblR5cGU8QWN0aW9uVHlwZT4+PiA9IHt9O1xuXG4gIGFjdGlvblR5cGVzLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICBhY3Rpb25zW3R5cGVdID0gY3JlYXRlQWN0aW9uKHR5cGUsIGZsdXgsIG9wdGlvbnM/Llt0eXBlXSkgYXMgQWN0aW9uUmV0dXJuVHlwZTxBY3Rpb25UeXBlPjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFjdGlvbnM7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQWxsQWN0aW9ucyA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgb3B0aW9ucz86IFBhcnRpYWw8UmVjb3JkPEFjdGlvblR5cGUsIEFjdGlvbk9wdGlvbnM+PlxuKSA9PiB7XG4gIGNvbnN0IGFsbEFjdGlvblR5cGVzOiBBY3Rpb25UeXBlW10gPSBbXG4gICAgJ2F3c1J1bScsXG4gICAgJ2NvbnRlbnQnLFxuICAgICdjcm0nLFxuICAgICdldmVudCcsXG4gICAgJ2dyb3VwJyxcbiAgICAnaW1hZ2UnLFxuICAgICdsb2NhdGlvbicsXG4gICAgJ21lc3NhZ2UnLFxuICAgICdwZXJtaXNzaW9uJyxcbiAgICAncG9zdCcsXG4gICAgJ3BlcnNvbmEnLFxuICAgICdyZWFjdGlvbicsXG4gICAgJ3Jlc3QnLFxuICAgICdzc2UnLFxuICAgICdzdWJzY3JpcHRpb24nLFxuICAgICd0YWcnLFxuICAgICd0cmFuc2xhdGlvbicsXG4gICAgJ3VzZXInLFxuICAgICd2aWRlbycsXG4gICAgJ3dlYnNvY2tldCdcbiAgXTtcblxuICByZXR1cm4gY3JlYXRlQWN0aW9ucyhhbGxBY3Rpb25UeXBlcywgZmx1eCwgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25UeXBlcyA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUFsbEFjdGlvbnM+O1xuZXhwb3J0IHR5cGUgQWN0aW9uUmV0dXJuVHlwZTxUIGV4dGVuZHMgQWN0aW9uVHlwZT4gPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVBY3Rpb248VD4+O1xuIl0sIm5hbWVzIjpbImNyZWF0ZUNvbnRlbnRBY3Rpb25zIiwiY3JlYXRlQXdzUnVtQWN0aW9ucyIsImNyZWF0ZUNybUFjdGlvbnMiLCJjcmVhdGVFdmVudEFjdGlvbnMiLCJjcmVhdGVHcm91cEFjdGlvbnMiLCJjcmVhdGVJbWFnZUFjdGlvbnMiLCJjcmVhdGVMb2NhdGlvbkFjdGlvbnMiLCJjcmVhdGVNZXNzYWdlQWN0aW9ucyIsImNyZWF0ZVBlcm1pc3Npb25BY3Rpb25zIiwiY3JlYXRlUG9zdEFjdGlvbnMiLCJjcmVhdGVQZXJzb25hQWN0aW9ucyIsImNyZWF0ZVJlYWN0aW9uQWN0aW9ucyIsImNyZWF0ZVJlc3RBY3Rpb25zIiwiY3JlYXRlU1NFQWN0aW9ucyIsImNyZWF0ZVN1YnNjcmlwdGlvbkFjdGlvbnMiLCJjcmVhdGVUYWdBY3Rpb25zIiwiY3JlYXRlVHJhbnNsYXRpb25BY3Rpb25zIiwiY3JlYXRlVXNlckFjdGlvbnMiLCJjcmVhdGVWaWRlb0FjdGlvbnMiLCJjcmVhdGVXZWJzb2NrZXRBY3Rpb25zIiwiYXdzUnVtQWN0aW9uQ2FjaGUiLCJXZWFrTWFwIiwid2Vic29ja2V0QWN0aW9uQ2FjaGUiLCJjcmVhdGVBd3NSdW1PcHRpb25zS2V5Iiwib3B0aW9ucyIsIkpTT04iLCJzdHJpbmdpZnkiLCJhbmFseXRpY3NJZCIsImRlYm91bmNlTXMiLCJkZWR1cGVNcyIsImVuYWJsZWQiLCJyZXNwZWN0UHJpdmFjeVNpZ25hbHMiLCJ0aHJvdHRsZU1zIiwiY3JlYXRlQWN0aW9uIiwiYWN0aW9uVHlwZSIsImZsdXgiLCJhd3NSdW1PcHRpb25zIiwib3B0aW9uc0tleSIsImNhY2hlZCIsImdldCIsImFjdGlvbnMiLCJkZXN0cm95Iiwic2V0IiwiaGFzIiwiRXJyb3IiLCJjcmVhdGVBY3Rpb25zIiwiYWN0aW9uVHlwZXMiLCJmb3JFYWNoIiwidHlwZSIsImNyZWF0ZUFsbEFjdGlvbnMiLCJhbGxBY3Rpb25UeXBlcyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsb0JBQW9CLFFBQU8sOENBQThDO0FBQ2pGLFNBQVFDLG1CQUFtQixRQUFPLDRDQUE0QztBQUM5RSxTQUFRQyxnQkFBZ0IsUUFBTyxzQ0FBc0M7QUFDckUsU0FBUUMsa0JBQWtCLFFBQU8sMENBQTBDO0FBQzNFLFNBQVFDLGtCQUFrQixRQUFPLDBDQUEwQztBQUMzRSxTQUFRQyxrQkFBa0IsUUFBTywwQ0FBMEM7QUFDM0UsU0FBUUMscUJBQXFCLFFBQU8sZ0RBQWdEO0FBQ3BGLFNBQVFDLG9CQUFvQixRQUFPLDhDQUE4QztBQUNqRixT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
@@ -52,6 +52,6 @@ export declare const appMutation: <T>(flux: FluxFramework, name: string, dataTyp
52
52
  export declare const publicQuery: <T>(flux: FluxFramework, name: string, dataType: ReaktorDbCollection, queryVariables: ApiQueryVariables, returnProperties: string[], options?: ApiOptions) => Promise<T>;
53
53
  export declare const publicMutation: <T>(flux: FluxFramework, name: string, dataType: ReaktorDbCollection, queryVariables: ApiQueryVariables, returnProperties: string[], options?: ApiOptions) => Promise<T>;
54
54
  export declare const rumMutation: <T>(flux: FluxFramework, name: string, dataType: ReaktorDbCollection, queryVariables: ApiQueryVariables, returnProperties: string[], options?: ApiOptions) => Promise<T>;
55
- export declare const uploadImage: (flux: FluxFramework, image: any, options?: HunterOptionsType) => Promise<ApiResultsType>;
55
+ export declare const rumRequest: <T>(flux: FluxFramework, batch: Record<string, unknown>, options?: RestApiOptions) => Promise<T>;
56
+ export declare const uploadImage: (flux: FluxFramework, image: FormData | Record<string, unknown>, options?: HunterOptionsType) => Promise<ApiResultsType>;
56
57
  export declare const refreshSession: (flux: FluxFramework, token?: string, expires?: number) => Promise<FluxAction | null>;
57
- //# sourceMappingURL=api.d.ts.map
package/lib/utils/api.js CHANGED
@@ -22,14 +22,18 @@ const resolveAuthToken = async (flux)=>{
22
22
  let token = hydratedToken || stateSession.token;
23
23
  if (!token) {
24
24
  throw new ApiError([
25
- 'invalid_session'
26
- ], 'invalid_session');
25
+ {
26
+ message: 'invalid_session'
27
+ }
28
+ ], new Error('invalid_session'));
27
29
  }
28
30
  const tokenExpiresAt = parseJwtExpiryMs(token);
29
31
  if (tokenExpiresAt > 0 && Date.now() >= tokenExpiresAt) {
30
32
  throw new ApiError([
31
- 'expired_session'
32
- ], 'expired_session');
33
+ {
34
+ message: 'expired_session'
35
+ }
36
+ ], new Error('expired_session'));
33
37
  }
34
38
  const config = getConfigFromFlux(flux);
35
39
  const minutesUntilExpiry = getMinutesUntil(Number(authExpires || 0));
@@ -41,8 +45,10 @@ const resolveAuthToken = async (flux)=>{
41
45
  const { token: newToken } = updatedSession || {};
42
46
  if (!newToken) {
43
47
  throw new ApiError([
44
- 'invalid_session'
45
- ], 'invalid_session');
48
+ {
49
+ message: 'invalid_session'
50
+ }
51
+ ], new Error('invalid_session'));
46
52
  }
47
53
  token = newToken;
48
54
  }
@@ -101,18 +107,22 @@ export const resolveRestEndpoint = (flux, endpoint)=>{
101
107
  const targetEndpoint = String(endpoint || '').trim();
102
108
  if (isEmpty(targetEndpoint)) {
103
109
  throw new ApiError([
104
- 'invalid_url'
105
- ], 'rest_endpoint_required');
110
+ {
111
+ message: 'invalid_url'
112
+ }
113
+ ], new Error('rest_endpoint_required'));
106
114
  }
107
- if (/^https?:\/\//i.test(targetEndpoint)) {
115
+ if (/^https?:\/\//i.test(targetEndpoint) || targetEndpoint.startsWith('/')) {
108
116
  return targetEndpoint;
109
117
  }
110
118
  const config = getConfigFromFlux(flux);
111
119
  const configuredEndpoint = config.app?.api?.endpoints?.[targetEndpoint] || '';
112
120
  if (isEmpty(configuredEndpoint)) {
113
121
  throw new ApiError([
114
- 'invalid_url'
115
- ], `rest_endpoint_not_configured:${targetEndpoint}`);
122
+ {
123
+ message: 'invalid_url'
124
+ }
125
+ ], new Error(`rest_endpoint_not_configured:${targetEndpoint}`));
116
126
  }
117
127
  return configuredEndpoint;
118
128
  };
@@ -238,19 +248,31 @@ export const rumMutation = (flux, name, dataType, queryVariables, returnProperti
238
248
  const rumUrl = config.app?.api?.rum || config.app?.api?.public || '';
239
249
  return getGraphql(flux, rumUrl, false, query, options);
240
250
  };
251
+ export const rumRequest = (flux, batch, options = {})=>{
252
+ const config = getConfigFromFlux(flux);
253
+ const rumUrl = config.app?.api?.endpoints?.rum || config.app?.api?.rum || '';
254
+ return restRequest(flux, rumUrl, 'POST', batch, {
255
+ ...options,
256
+ authenticate: false
257
+ });
258
+ };
241
259
  export const uploadImage = (flux, image, options = {})=>{
242
260
  const config = getConfigFromFlux(flux);
243
261
  const uploadImageUrl = config.app?.api?.uploadImage || '';
244
262
  const token = flux.getState('user.session.token');
245
263
  if (isEmpty(uploadImageUrl)) {
246
264
  return Promise.reject(new ApiError([
247
- 'invalid_url'
248
- ], 'upload_endpoint_not_configured'));
265
+ {
266
+ message: 'invalid_url'
267
+ }
268
+ ], new Error('upload_endpoint_not_configured')));
249
269
  }
250
270
  if (isEmpty(token)) {
251
271
  return Promise.reject(new ApiError([
252
- 'invalid_session'
253
- ], 'missing_auth_token'));
272
+ {
273
+ message: 'invalid_session'
274
+ }
275
+ ], new Error('missing_auth_token')));
254
276
  }
255
277
  const headers = new Headers();
256
278
  headers.set('Authorization', `Bearer ${token}`);
@@ -266,8 +288,10 @@ export const uploadImage = (flux, image, options = {})=>{
266
288
  if (!response.ok) {
267
289
  const message = typeof data === 'object' && data && 'error' in data ? String(data.error || response.statusText) : String(data || response.statusText);
268
290
  throw new ApiError([
269
- 'upload_error'
270
- ], message);
291
+ {
292
+ message: 'upload_error'
293
+ }
294
+ ], new Error(message));
271
295
  }
272
296
  return data;
273
297
  });
@@ -338,4 +362,4 @@ export const refreshSession = async (flux, token, expires)=>{
338
362
  }
339
363
  };
340
364
 
341
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvYXBpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBpRXJyb3IsIGFqYXgsIGRlbCwgZ2V0LCBncmFwaHFsUXVlcnksIHBvc3QsIHB1dH0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuaW1wb3J0IHtjYW1lbENhc2UsIGlzRW1wdHksIHVwcGVyRmlyc3R9IGZyb20gJ0BubGFicy91dGlscyc7XG5cbmltcG9ydCB7QVBQX0NPTlNUQU5UU30gZnJvbSAnLi4vc3RvcmVzL2FwcFN0b3JlLmpzJztcbmltcG9ydCB7VVNFUl9DT05TVEFOVFN9IGZyb20gJy4uL3N0b3Jlcy91c2VyU3RvcmUuanMnO1xuaW1wb3J0IHtnZXRDb25maWdGcm9tRmx1eH0gZnJvbSAnLi9jb25maWdVdGlscy5qcyc7XG5pbXBvcnQge2NsZWFyUGVyc2lzdGVkU2Vzc2lvbiwgZ2V0UmVmcmVzaFdpbmRvd01pbnV0ZXMsIGh5ZHJhdGVTZXNzaW9uRnJvbVN0b3JhZ2UsIHBhcnNlSnd0RXhwaXJ5TXMsIHN0b3JlU2Vzc2lvbn0gZnJvbSAnLi9zZXNzaW9uLmpzJztcblxuaW1wb3J0IHR5cGUge0ZsdXhBY3Rpb24sIEZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7SHVudGVyT3B0aW9uc1R5cGUsIEh1bnRlclF1ZXJ5VHlwZX0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaU9wdGlvbnMge1xuICByZWFkb25seSBvblN1Y2Nlc3M/OiAoZGF0YTogYW55KSA9PiBQcm9taXNlPEZsdXhBY3Rpb24+O1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IHR5cGUgUmVzdE1ldGhvZCA9ICdERUxFVEUnIHwgJ0dFVCcgfCAnUEFUQ0gnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAoc3RyaW5nICYge30pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RBcGlPcHRpb25zIGV4dGVuZHMgSHVudGVyT3B0aW9uc1R5cGUge1xuICByZWFkb25seSBhdXRoZW50aWNhdGU/OiBib29sZWFuO1xuICByZWFkb25seSBvblN1Y2Nlc3M/OiAoZGF0YTogYW55KSA9PiBhbnk7XG59XG5cbmV4cG9ydCB0eXBlIFJlYWt0b3JEYkNvbGxlY3Rpb24gPVxuICAnYXBwcycgfFxuICAnY29ubmVjdGlvbnMnIHxcbiAgJ2NvbnRlbnRzJyB8XG4gICdjb252ZXJzYXRpb25zJyB8XG4gICdjcm0nIHxcbiAgJ2V2ZW50cycgfFxuICAnZmlsZXMnIHxcbiAgJ2dyb3VwcycgfFxuICAnaW1hZ2VzJyB8XG4gICdsb2NhdGlvbnMnIHxcbiAgJ21lc3NhZ2VzJyB8XG4gICdub3RpZmljYXRpb25zJyB8XG4gICdwYXltZW50cycgfFxuICAncGVybWlzc2lvbnMnIHxcbiAgJ3Bvc3RzJyB8XG4gICdwZXJzb25hcycgfFxuICAncmVhY3Rpb25zJyB8XG4gICdydW0nIHxcbiAgJ3N1YnNjcmlwdGlvbnMnIHxcbiAgJ3RhZ3MnIHxcbiAgJ3RyYW5zbGF0aW9ucycgfFxuICAndXNlcnMnIHxcbiAgJ3ZpZGVvcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpUXVlcnlWYXJpYWJsZVR5cGUge1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZhbHVlOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVF1ZXJ5VmFyaWFibGVzIHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogQXBpUXVlcnlWYXJpYWJsZVR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpUmVzdWx0c1R5cGUge1xuICByZWFkb25seSBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5VHlwZSB7XG4gIHJlYWRvbmx5IHF1ZXJ5PzogSHVudGVyUXVlcnlUeXBlIHwgSHVudGVyUXVlcnlUeXBlW107XG4gIHJlYWRvbmx5IHJlcXVlc3Q/OiB7XG4gICAgcmVhZG9ubHkgbWV0aG9kOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcGFyYW1zPzogdW5rbm93bjtcbiAgICByZWFkb25seSB1cmw6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgcmVzcG9uc2VNZXRob2Q6IChyZXN1bHRzOiBBcGlSZXN1bHRzVHlwZSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uVHlwZSB7XG4gIHJlYWRvbmx5IGV4cGlyZXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGlzc3VlZD86IG51bWJlcjtcbiAgcmVhZG9ubHkgdG9rZW4/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlcm5hbWU/OiBzdHJpbmc7XG59XG5cbmNvbnN0IERFRkFVTFRfUkVGUkVTSF9XSU5ET1dfTUlOVVRFUyA9IDU7XG5jb25zdCBERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMgPSAxNTtcblxuY29uc3QgZ2V0TWludXRlc1VudGlsID0gKGV4cGlyZXNBdDogbnVtYmVyKTogbnVtYmVyID0+XG4gIE1hdGgucm91bmQoKGV4cGlyZXNBdCAtIERhdGUubm93KCkpIC8gKDEwMDAgKiA2MCkpO1xuXG5jb25zdCBjbGVhckludmFsaWRTZXNzaW9uU3RhdGUgPSBhc3luYyAoZmx1eDogRmx1eEZyYW1ld29yayk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBhd2FpdCBjbGVhclBlcnNpc3RlZFNlc3Npb24oZmx1eCk7XG4gIGF3YWl0IGZsdXguY2xlYXJBcHBEYXRhKCk7XG4gIGF3YWl0IGZsdXguZGlzcGF0Y2goe3Nlc3Npb246IHt9LCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5TSUdOX09VVF9TVUNDRVNTfSk7XG59O1xuXG5jb25zdCByZXNvbHZlQXV0aFRva2VuID0gYXN5bmMgKGZsdXg6IEZsdXhGcmFtZXdvcmspOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBzdGF0ZVNlc3Npb246IFNlc3Npb25UeXBlID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicpIHx8IHt9KSBhcyBTZXNzaW9uVHlwZTtcbiAgY29uc3QgaHlkcmF0ZWRTZXNzaW9uOiBTZXNzaW9uVHlwZSA9IHN0YXRlU2Vzc2lvbi50b2tlbiA/IHN0YXRlU2Vzc2lvbiA6IGF3YWl0IGh5ZHJhdGVTZXNzaW9uRnJvbVN0b3JhZ2UoZmx1eCk7XG4gIGNvbnN0IHtcbiAgICBleHBpcmVzOiBhdXRoRXhwaXJlcyA9IDAsXG4gICAgaXNzdWVkOiBhdXRoSXNzdWVkID0gMCxcbiAgICB0b2tlbjogaHlkcmF0ZWRUb2tlblxuICB9OiBTZXNzaW9uVHlwZSA9IGh5ZHJhdGVkU2Vzc2lvbiB8fCB7fTtcbiAgbGV0IHRva2VuID0gaHlkcmF0ZWRUb2tlbiB8fCBzdGF0ZVNlc3Npb24udG9rZW47XG5cbiAgaWYoIXRva2VuKSB7XG4gICAgdGhyb3cgbmV3IEFwaUVycm9yKFsnaW52YWxpZF9zZXNzaW9uJ10sICdpbnZhbGlkX3Nlc3Npb24nKTtcbiAgfVxuXG4gIGNvbnN0IHRva2VuRXhwaXJlc0F0ID0gcGFyc2VKd3RFeHBpcnlNcyh0b2tlbik7XG5cbiAgaWYodG9rZW5FeHBpcmVzQXQgPiAwICYmIERhdGUubm93KCkgPj0gdG9rZW5FeHBpcmVzQXQpIHtcbiAgICB0aHJvdyBuZXcgQXBpRXJyb3IoWydleHBpcmVkX3Nlc3Npb24nXSwgJ2V4cGlyZWRfc2Vzc2lvbicpO1xuICB9XG5cbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IG1pbnV0ZXNVbnRpbEV4cGlyeSA9IGdldE1pbnV0ZXNVbnRpbChOdW1iZXIoYXV0aEV4cGlyZXMgfHwgMCkpO1xuICBjb25zdCBzZXNzaW9uTGlmZXRpbWVNaW51dGVzID0gTWF0aC5yb3VuZCgoYXV0aEV4cGlyZXMgLSBhdXRoSXNzdWVkKSAvICgxMDAwICogNjApKTtcbiAgY29uc3QgcmVmcmVzaFdpbmRvd01pbnV0ZXMgPSBnZXRSZWZyZXNoV2luZG93TWludXRlcyhcbiAgICBzZXNzaW9uTGlmZXRpbWVNaW51dGVzIHx8IERFRkFVTFRfU0VTU0lPTl9NQVhfTUlOVVRFUyxcbiAgICBjb25maWcuYXBwPy5zZXNzaW9uIHx8IHt9XG4gICk7XG4gIGNvbnN0IHJlZnJlc2hFeHBpcmVzTWludXRlcyA9IE1hdGgubWF4KFxuICAgIDEsXG4gICAgTnVtYmVyKGNvbmZpZy5hcHA/LnNlc3Npb24/Lm1heE1pbnV0ZXMgfHwgc2Vzc2lvbkxpZmV0aW1lTWludXRlcyB8fCBERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMpXG4gICk7XG5cbiAgaWYobWludXRlc1VudGlsRXhwaXJ5ID4gMCAmJiBtaW51dGVzVW50aWxFeHBpcnkgPD0gcmVmcmVzaFdpbmRvd01pbnV0ZXMpIHtcbiAgICBjb25zdCB7XG4gICAgICBzZXNzaW9uOiB1cGRhdGVkU2Vzc2lvbiA9IHt9XG4gICAgfTogQXBpUmVzdWx0c1R5cGUgPSAoYXdhaXQgcmVmcmVzaFNlc3Npb24oZmx1eCwgdG9rZW4sIHJlZnJlc2hFeHBpcmVzTWludXRlcykpIHx8IHt9O1xuICAgIGNvbnN0IHt0b2tlbjogbmV3VG9rZW59OiBTZXNzaW9uVHlwZSA9ICh1cGRhdGVkU2Vzc2lvbiB8fCB7fSk7XG5cbiAgICBpZighbmV3VG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBBcGlFcnJvcihbJ2ludmFsaWRfc2Vzc2lvbiddLCAnaW52YWxpZF9zZXNzaW9uJyk7XG4gICAgfVxuXG4gICAgdG9rZW4gPSBuZXdUb2tlbjtcbiAgfVxuXG4gIHJldHVybiB0b2tlbjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHcmFwaHFsID0gYXN5bmMgKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICB1cmw6IHN0cmluZyxcbiAgYXV0aGVudGljYXRlOiBib29sZWFuLFxuICBxdWVyeTogSHVudGVyUXVlcnlUeXBlIHwgSHVudGVyUXVlcnlUeXBlW10sXG4gIG9wdGlvbnM6IEFwaU9wdGlvbnNcbik6IFByb21pc2U8QXBpUmVzdWx0c1R5cGU+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7b25TdWNjZXNzfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgcmV0cnk6IFJldHJ5VHlwZSA9IHtxdWVyeSwgcmVzcG9uc2VNZXRob2Q6IG9uU3VjY2VzcyB8fCAoKCkgPT4ge30pfTtcbiAgICBjb25zdCBuZXR3b3JrVHlwZTogc3RyaW5nID0gZmx1eC5nZXRTdGF0ZSgnYXBwLm5ldHdvcmtUeXBlJykgYXMgc3RyaW5nO1xuXG4gICAgaWYobmV0d29ya1R5cGUgPT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe3JldHJ5LCB0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX0VSUk9SfSk7XG4gICAgfVxuXG4gICAgbGV0IHRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBpZihhdXRoZW50aWNhdGUpIHtcbiAgICAgIHRva2VuID0gYXdhaXQgcmVzb2x2ZUF1dGhUb2tlbihmbHV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3JhcGhxbFF1ZXJ5KHVybCwgcXVlcnksIHt0b2tlbjogdG9rZW4gfHwgJyd9KVxuICAgICAgLnRoZW4oYXN5bmMgKHJlc3VsdHMpID0+IHtcbiAgICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7dHlwZTogQVBQX0NPTlNUQU5UUy5BUElfTkVUV09SS19TVUNDRVNTfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKGRhdGEpID0+IChvblN1Y2Nlc3MgPyBvblN1Y2Nlc3MoZGF0YSkgOiBkYXRhKSlcbiAgICAgIC5jYXRjaChhc3luYyAoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3Qge2Vycm9ycyA9IFtdfSA9IGVycm9yO1xuXG4gICAgICAgIGlmKG9uU3VjY2VzcyAmJiBlcnJvcnMuaW5jbHVkZXMoJ25ldHdvcmtfZXJyb3InKSkge1xuICAgICAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe3JldHJ5LCB0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX0VSUk9SfSk7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSBlbHNlIGlmKGVycm9ycy5pbmNsdWRlcygnaW52YWxpZF9zZXNzaW9uJykgfHwgZXJyb3JzLmluY2x1ZGVzKCdleHBpcmVkX3Nlc3Npb24nKSkge1xuICAgICAgICAgIGF3YWl0IGNsZWFySW52YWxpZFNlc3Npb25TdGF0ZShmbHV4KTtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGNvbnN0IGVycm9ycyA9IGVycm9yIGluc3RhbmNlb2YgQXBpRXJyb3IgPyBlcnJvci5lcnJvcnMgOiBbXTtcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnJztcblxuICAgIGlmKGVycm9ycy5pbmNsdWRlcygnaW52YWxpZF9zZXNzaW9uJykgfHwgZXJyb3JzLmluY2x1ZGVzKCdleHBpcmVkX3Nlc3Npb24nKSB8fCBtZXNzYWdlID09PSAnaW52YWxpZF9zZXNzaW9uJyB8fCBtZXNzYWdlID09PSAnZXhwaXJlZF9zZXNzaW9uJykge1xuICAgICAgYXdhaXQgY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlKGZsdXgpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVJlc3RFbmRwb2ludCA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgZW5kcG9pbnQ6IHN0cmluZ1xuKTogc3RyaW5nID0+IHtcbiAgY29uc3QgdGFyZ2V0RW5kcG9pbnQgPSBTdHJpbmcoZW5kcG9pbnQgfHwgJycpLnRyaW0oKTtcblxuICBpZihpc0VtcHR5KHRhcmdldEVuZHBvaW50KSkge1xuICAgIHRocm93IG5ldyBBcGlFcnJvcihbJ2ludmFsaWRfdXJsJ10sICdyZXN0X2VuZHBvaW50X3JlcXVpcmVkJyk7XG4gIH1cblxuICBpZigvXmh0dHBzPzpcXC9cXC8vaS50ZXN0KHRhcmdldEVuZHBvaW50KSkge1xuICAgIHJldHVybiB0YXJnZXRFbmRwb2ludDtcbiAgfVxuXG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBjb25maWd1cmVkRW5kcG9pbnQgPSBjb25maWcuYXBwPy5hcGk/LmVuZHBvaW50cz8uW3RhcmdldEVuZHBvaW50XSB8fCAnJztcblxuICBpZihpc0VtcHR5KGNvbmZpZ3VyZWRFbmRwb2ludCkpIHtcbiAgICB0aHJvdyBuZXcgQXBpRXJyb3IoWydpbnZhbGlkX3VybCddLCBgcmVzdF9lbmRwb2ludF9ub3RfY29uZmlndXJlZDoke3RhcmdldEVuZHBvaW50fWApO1xuICB9XG5cbiAgcmV0dXJuIGNvbmZpZ3VyZWRFbmRwb2ludDtcbn07XG5cbmV4cG9ydCBjb25zdCByZXN0UmVxdWVzdCA9IGFzeW5jIDxUID0gQXBpUmVzdWx0c1R5cGU+KFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBlbmRwb2ludDogc3RyaW5nLFxuICBtZXRob2Q6IFJlc3RNZXRob2QgPSAnR0VUJyxcbiAgcGFyYW1zPzogdW5rbm93bixcbiAgb3B0aW9uczogUmVzdEFwaU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHthdXRoZW50aWNhdGUgPSBmYWxzZSwgb25TdWNjZXNzLCAuLi5odW50ZXJPcHRpb25zfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHVybCA9IHJlc29sdmVSZXN0RW5kcG9pbnQoZmx1eCwgZW5kcG9pbnQpO1xuICBjb25zdCByZXF1ZXN0TWV0aG9kID0gU3RyaW5nKG1ldGhvZCB8fCAnR0VUJykudG9VcHBlckNhc2UoKTtcbiAgY29uc3QgcmV0cnk6IFJldHJ5VHlwZSA9IHtcbiAgICByZXF1ZXN0OiB7bWV0aG9kOiByZXF1ZXN0TWV0aG9kLCBwYXJhbXMsIHVybH0sXG4gICAgcmVzcG9uc2VNZXRob2Q6IG9uU3VjY2VzcyB8fCAoKCkgPT4ge30pXG4gIH07XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBuZXR3b3JrVHlwZTogc3RyaW5nID0gZmx1eC5nZXRTdGF0ZSgnYXBwLm5ldHdvcmtUeXBlJykgYXMgc3RyaW5nO1xuXG4gICAgaWYobmV0d29ya1R5cGUgPT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe3JldHJ5LCB0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX0VSUk9SfSkgYXMgUHJvbWlzZTxUPjtcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbiA9IGF1dGhlbnRpY2F0ZSA/IGF3YWl0IHJlc29sdmVBdXRoVG9rZW4oZmx1eCkgOiBodW50ZXJPcHRpb25zLnRva2VuO1xuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBIdW50ZXJPcHRpb25zVHlwZSA9IHtcbiAgICAgIC4uLmh1bnRlck9wdGlvbnMsXG4gICAgICAuLi4odG9rZW4gPyB7dG9rZW59IDoge30pXG4gICAgfTtcbiAgICBsZXQgZGF0YTogVDtcblxuICAgIHN3aXRjaChyZXF1ZXN0TWV0aG9kKSB7XG4gICAgICBjYXNlICdERUxFVEUnOlxuICAgICAgICBkYXRhID0gYXdhaXQgZGVsKHVybCwgcGFyYW1zLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdHRVQnOlxuICAgICAgICBkYXRhID0gYXdhaXQgZ2V0KHVybCwgcGFyYW1zLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdQT1NUJzpcbiAgICAgICAgZGF0YSA9IGF3YWl0IHBvc3QodXJsLCBwYXJhbXMsIHJlcXVlc3RPcHRpb25zKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ1BVVCc6XG4gICAgICAgIGRhdGEgPSBhd2FpdCBwdXQodXJsLCBwYXJhbXMsIHJlcXVlc3RPcHRpb25zKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGRhdGEgPSBhd2FpdCBhamF4KHVybCwgcmVxdWVzdE1ldGhvZCwgcGFyYW1zLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe3R5cGU6IEFQUF9DT05TVEFOVFMuQVBJX05FVFdPUktfU1VDQ0VTU30pO1xuXG4gICAgcmV0dXJuIG9uU3VjY2VzcyA/IG9uU3VjY2VzcyhkYXRhKSA6IGRhdGE7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBjb25zdCBlcnJvcnMgPSBlcnJvciBpbnN0YW5jZW9mIEFwaUVycm9yID8gZXJyb3IuZXJyb3JzIDogW107XG4gICAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJyc7XG5cbiAgICBpZihlcnJvcnMuaW5jbHVkZXMoJ2ludmFsaWRfc2Vzc2lvbicpIHx8IGVycm9ycy5pbmNsdWRlcygnZXhwaXJlZF9zZXNzaW9uJykgfHwgbWVzc2FnZSA9PT0gJ2ludmFsaWRfc2Vzc2lvbicgfHwgbWVzc2FnZSA9PT0gJ2V4cGlyZWRfc2Vzc2lvbicpIHtcbiAgICAgIGF3YWl0IGNsZWFySW52YWxpZFNlc3Npb25TdGF0ZShmbHV4KTtcbiAgICAgIHJldHVybiB7fSBhcyBUO1xuICAgIH1cblxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUXVlcnkgPSAoXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMgPSB7fSxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10gPSBbXSxcbiAgdHlwZSA9ICdxdWVyeSdcbikgPT4ge1xuICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHsuLi52YXJpYWJsZXMgfHwge319O1xuICBjb25zdCB2YXJpYWJsZUtleXMgPSBPYmplY3Qua2V5cyhxdWVyeVZhcmlhYmxlcyk7XG4gIGNvbnN0IHF1ZXJ5TmFtZSA9IG5hbWUucmVwbGFjZSgvIC9nLCAnJyk7XG4gIGxldCBxdWVyeTogc3RyaW5nO1xuXG4gIGlmKHR5cGUgPT09ICdtdXRhdGlvbicpIHtcbiAgICBjb25zdCBtdXRhdGlvbk5hbWUgPSB1cHBlckZpcnN0KGNhbWVsQ2FzZShkYXRhVHlwZSkpICsgdXBwZXJGaXJzdChjYW1lbENhc2UocXVlcnlOYW1lKSk7XG4gICAgcXVlcnkgPSBgJHt0eXBlfSAke211dGF0aW9uTmFtZX0ke1xuICAgICAgdmFyaWFibGVLZXlzLmxlbmd0aFxuICAgICAgICA/IGAoJHt2YXJpYWJsZUtleXMubWFwKChrZXkpID0+IGAkJHtrZXl9OiAke3F1ZXJ5VmFyaWFibGVzW2tleV0udHlwZX1gKS5qb2luKCcsICcpfSlgXG4gICAgICAgIDogJydcbiAgICB9IHtcbiAgICAgICR7ZGF0YVR5cGV9IHtcbiAgICAgICAgJHtjYW1lbENhc2UocXVlcnlOYW1lKX0ke1xuICAgICAgICAgIHZhcmlhYmxlS2V5cy5sZW5ndGhcbiAgICAgICAgICAgID8gYCgke3ZhcmlhYmxlS2V5cy5tYXAoKGtleSkgPT4gYCR7a2V5fTogJCR7a2V5fWApLmpvaW4oJywgJyl9KWBcbiAgICAgICAgICAgIDogJydcbiAgICAgICAgfVxuICAgICAgICAke3JldHVyblByb3BlcnRpZXM/Lmxlbmd0aCA/IGB7JHtyZXR1cm5Qcm9wZXJ0aWVzLmpvaW4oJywgJyl9fWAgOiAnJ31cbiAgICAgIH1cbiAgICB9YDtcbiAgfSBlbHNlIHtcbiAgICBxdWVyeSA9IGAke3R5cGV9ICR7cXVlcnlOYW1lfSR7XG4gICAgICB2YXJpYWJsZUtleXMubGVuZ3RoXG4gICAgICAgID8gYCgke3ZhcmlhYmxlS2V5cy5tYXAoKGtleSkgPT4gYCQke2tleX06ICR7cXVlcnlWYXJpYWJsZXNba2V5XS50eXBlfWApLmpvaW4oJywgJyl9KWBcbiAgICAgICAgOiAnJ1xuICAgIH0ge1xuICAgICAgJHtkYXRhVHlwZX0ge1xuICAgICAgICAke2NhbWVsQ2FzZShxdWVyeU5hbWUpfSR7XG4gICAgICAgICAgdmFyaWFibGVLZXlzLmxlbmd0aFxuICAgICAgICAgICAgPyBgKCR7dmFyaWFibGVLZXlzLm1hcCgoa2V5KSA9PiBgJHtrZXl9OiAkJHtrZXl9YCkuam9pbignLCAnKX0pYFxuICAgICAgICAgICAgOiAnJ1xuICAgICAgICB9XG4gICAgICAgICR7cmV0dXJuUHJvcGVydGllcz8ubGVuZ3RoID8gYHske3JldHVyblByb3BlcnRpZXMuam9pbignLCAnKX19YCA6ICcnfVxuICAgICAgfVxuICAgIH1gO1xuICB9XG5cbiAgY29uc3QgdXBkYXRlZFZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB2YXJpYWJsZUtleXMucmVkdWNlKChxdWVyeURhdGEsIGtleSkgPT4ge1xuICAgIHF1ZXJ5RGF0YVtrZXldID0gcXVlcnlWYXJpYWJsZXNba2V5XS52YWx1ZTtcbiAgICByZXR1cm4gcXVlcnlEYXRhO1xuICB9LCB7fSk7XG5cbiAgcmV0dXJuIHtxdWVyeSwgdmFyaWFibGVzOiB1cGRhdGVkVmFyaWFibGVzfTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNdXRhdGlvbiA9IChcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgdmFyaWFibGVzOiBBcGlRdWVyeVZhcmlhYmxlcyA9IHt9LFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdXG4pID0+IGNyZWF0ZVF1ZXJ5KG5hbWUsIGRhdGFUeXBlLCB2YXJpYWJsZXMsIHJldHVyblByb3BlcnRpZXMsICdtdXRhdGlvbicpO1xuXG5leHBvcnQgY29uc3QgYXBwUXVlcnkgPSA8VD4oXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHF1ZXJ5VmFyaWFibGVzOiBBcGlRdWVyeVZhcmlhYmxlcyxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IEFwaU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHF1ZXJ5ID0gY3JlYXRlUXVlcnkobmFtZSwgZGF0YVR5cGUsIHF1ZXJ5VmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzKTtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IGFwcFVybDogc3RyaW5nID0gY29uZmlnLmFwcD8uYXBpPy51cmwgfHwgJyc7XG4gIHJldHVybiBnZXRHcmFwaHFsKGZsdXgsIGFwcFVybCwgdHJ1ZSwgcXVlcnksIG9wdGlvbnMpIGFzIFByb21pc2U8VD47XG59O1xuXG5leHBvcnQgY29uc3QgYXBwTXV0YXRpb24gPSA8VD4oXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHF1ZXJ5VmFyaWFibGVzOiBBcGlRdWVyeVZhcmlhYmxlcyxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IEFwaU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHF1ZXJ5ID0gY3JlYXRlTXV0YXRpb24obmFtZSwgZGF0YVR5cGUsIHF1ZXJ5VmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzKTtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IGFwcFVybDogc3RyaW5nID0gY29uZmlnLmFwcD8uYXBpPy51cmwgfHwgJyc7XG4gIHJldHVybiBnZXRHcmFwaHFsKGZsdXgsIGFwcFVybCwgdHJ1ZSwgcXVlcnksIG9wdGlvbnMpIGFzIFByb21pc2U8VD47XG59O1xuXG5leHBvcnQgY29uc3QgcHVibGljUXVlcnkgPSA8VD4oXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHF1ZXJ5VmFyaWFibGVzOiBBcGlRdWVyeVZhcmlhYmxlcyxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IEFwaU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHF1ZXJ5ID0gY3JlYXRlUXVlcnkobmFtZSwgZGF0YVR5cGUsIHF1ZXJ5VmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzKTtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IHB1YmxpY1VybDogc3RyaW5nID0gY29uZmlnLmFwcD8uYXBpPy5wdWJsaWMgfHwgJyc7XG4gIHJldHVybiBnZXRHcmFwaHFsKGZsdXgsIHB1YmxpY1VybCwgZmFsc2UsIHF1ZXJ5LCBvcHRpb25zKSBhcyBQcm9taXNlPFQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IHB1YmxpY011dGF0aW9uID0gPFQ+KFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICBxdWVyeVZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMsXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBBcGlPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCBxdWVyeSA9IGNyZWF0ZU11dGF0aW9uKG5hbWUsIGRhdGFUeXBlLCBxdWVyeVZhcmlhYmxlcywgcmV0dXJuUHJvcGVydGllcyk7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBwdWJsaWNVcmw6IHN0cmluZyA9IGNvbmZpZy5hcHA/LmFwaT8ucHVibGljIHx8ICcnO1xuICByZXR1cm4gZ2V0R3JhcGhxbChmbHV4LCBwdWJsaWNVcmwsIGZhbHNlLCBxdWVyeSwgb3B0aW9ucykgYXMgUHJvbWlzZTxUPjtcbn07XG5cbmV4cG9ydCBjb25zdCBydW1NdXRhdGlvbiA9IDxUPihcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgcXVlcnlWYXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzLFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgcXVlcnkgPSBjcmVhdGVNdXRhdGlvbihuYW1lLCBkYXRhVHlwZSwgcXVlcnlWYXJpYWJsZXMsIHJldHVyblByb3BlcnRpZXMpO1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgcnVtVXJsOiBzdHJpbmcgPSBjb25maWcuYXBwPy5hcGk/LnJ1bSB8fCBjb25maWcuYXBwPy5hcGk/LnB1YmxpYyB8fCAnJztcbiAgcmV0dXJuIGdldEdyYXBocWwoZmx1eCwgcnVtVXJsLCBmYWxzZSwgcXVlcnksIG9wdGlvbnMpIGFzIFByb21pc2U8VD47XG59O1xuXG5leHBvcnQgY29uc3QgdXBsb2FkSW1hZ2UgPSAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIGltYWdlLFxuICBvcHRpb25zOiBIdW50ZXJPcHRpb25zVHlwZSA9IHt9XG4pOiBQcm9taXNlPEFwaVJlc3VsdHNUeXBlPiA9PiB7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCB1cGxvYWRJbWFnZVVybDogc3RyaW5nID0gY29uZmlnLmFwcD8uYXBpPy51cGxvYWRJbWFnZSB8fCAnJztcbiAgY29uc3QgdG9rZW4gPSBmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24udG9rZW4nKTtcblxuICBpZihpc0VtcHR5KHVwbG9hZEltYWdlVXJsKSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQXBpRXJyb3IoWydpbnZhbGlkX3VybCddLCAndXBsb2FkX2VuZHBvaW50X25vdF9jb25maWd1cmVkJykpO1xuICB9XG5cbiAgaWYoaXNFbXB0eSh0b2tlbikpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEFwaUVycm9yKFsnaW52YWxpZF9zZXNzaW9uJ10sICdtaXNzaW5nX2F1dGhfdG9rZW4nKSk7XG4gIH1cblxuICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKTtcbiAgaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCBgQmVhcmVyICR7dG9rZW59YCk7XG5cbiAgaWYodHlwZW9mIEZvcm1EYXRhICE9PSAndW5kZWZpbmVkJyAmJiBpbWFnZSBpbnN0YW5jZW9mIEZvcm1EYXRhKSB7XG4gICAgaGVhZGVycy5zZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJyk7XG5cbiAgICByZXR1cm4gZmV0Y2godXBsb2FkSW1hZ2VVcmwsIHtcbiAgICAgIGJvZHk6IGltYWdlLFxuICAgICAgaGVhZGVycyxcbiAgICAgIG1ldGhvZDogJ1BPU1QnXG4gICAgfSkudGhlbihhc3luYyAocmVzcG9uc2UpID0+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlVHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSB8fCAnJztcbiAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZVR5cGUuaW5jbHVkZXMoJ2FwcGxpY2F0aW9uL2pzb24nKVxuICAgICAgICA/IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICA6IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcblxuICAgICAgaWYoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgZGF0YSAmJiAnZXJyb3InIGluIGRhdGFcbiAgICAgICAgICA/IFN0cmluZygoZGF0YSBhcyB7ZXJyb3I/OiBzdHJpbmd9KS5lcnJvciB8fCByZXNwb25zZS5zdGF0dXNUZXh0KVxuICAgICAgICAgIDogU3RyaW5nKGRhdGEgfHwgcmVzcG9uc2Uuc3RhdHVzVGV4dCk7XG4gICAgICAgIHRocm93IG5ldyBBcGlFcnJvcihbJ3VwbG9hZF9lcnJvciddLCBtZXNzYWdlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGEgYXMgQXBpUmVzdWx0c1R5cGU7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcG9zdCh1cGxvYWRJbWFnZVVybCwgaW1hZ2UsIHtoZWFkZXJzLCAuLi5vcHRpb25zfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFNlc3Npb24gPSBhc3luYyAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIHRva2VuPzogc3RyaW5nLFxuICBleHBpcmVzPzogbnVtYmVyXG4pOiBQcm9taXNlPEZsdXhBY3Rpb24gfCBudWxsPiA9PiB7XG4gIGNvbnN0IHJlZnJlc2hUb2tlbiA9IGlzRW1wdHkodG9rZW4pID8gZmx1eC5nZXRTdGF0ZSgndXNlci5zZXNzaW9uLnRva2VuJykgOiB0b2tlbjtcblxuICBpZihpc0VtcHR5KHJlZnJlc2hUb2tlbikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHRva2VuRXhwaXJlc0F0ID0gcGFyc2VKd3RFeHBpcnlNcyhTdHJpbmcocmVmcmVzaFRva2VuKSk7XG5cbiAgaWYodG9rZW5FeHBpcmVzQXQgPiAwICYmIERhdGUubm93KCkgPj0gdG9rZW5FeHBpcmVzQXQpIHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignZXhwaXJlZF9zZXNzaW9uJyk7XG4gICAgYXdhaXQgY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlKGZsdXgpO1xuICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5HRVRfU0VTU0lPTl9FUlJPUn0pO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgICBjb25zdCByZXF1ZXN0ZWRFeHBpcmVzID0gTWF0aC5tYXgoXG4gICAgICAxLFxuICAgICAgTnVtYmVyKGV4cGlyZXMgfHwgY29uZmlnLmFwcD8uc2Vzc2lvbj8ubWF4TWludXRlcyB8fCBERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMpXG4gICAgKTtcbiAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgIGV4cGlyZXM6IHtcbiAgICAgICAgdHlwZTogJ0ludCcsXG4gICAgICAgIHZhbHVlOiByZXF1ZXN0ZWRFeHBpcmVzXG4gICAgICB9LFxuICAgICAgdG9rZW46IHtcbiAgICAgICAgdHlwZTogJ1N0cmluZyEnLFxuICAgICAgICB2YWx1ZTogcmVmcmVzaFRva2VuXG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogQXBpUmVzdWx0c1R5cGUgPSB7fSk6IFByb21pc2U8Rmx1eEFjdGlvbj4gPT4ge1xuICAgICAgY29uc3QgcmF3U2Vzc2lvbkRhdGEgPSAoZGF0YSBhcyB7dXNlcnM/OiB7cmVmcmVzaFNlc3Npb24/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn19KT8udXNlcnM/LnJlZnJlc2hTZXNzaW9uO1xuICAgICAgY29uc3Qgc2Vzc2lvbkRhdGEgPSByYXdTZXNzaW9uRGF0YSAmJiB0eXBlb2YgcmF3U2Vzc2lvbkRhdGEgPT09ICdvYmplY3QnXG4gICAgICAgID8gcmF3U2Vzc2lvbkRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgOiB7fTtcbiAgICAgIGNvbnN0IGN1cnJlbnRTZXNzaW9uID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicsIHt9KSB8fCB7fSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICBjb25zdCBtZXJnZWRTZXNzaW9uID0gYXdhaXQgc3RvcmVTZXNzaW9uKGZsdXgsIHsuLi5jdXJyZW50U2Vzc2lvbiwgLi4uc2Vzc2lvbkRhdGF9KTtcbiAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtzZXNzaW9uOiBtZXJnZWRTZXNzaW9uLCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5VUERBVEVfU0VTU0lPTl9TVUNDRVNTfSk7XG4gICAgfTtcblxuICAgIHJldHVybiBhd2FpdCBwdWJsaWNNdXRhdGlvbihmbHV4LCAncmVmcmVzaFNlc3Npb24nLCAndXNlcnMnLCBxdWVyeVZhcmlhYmxlcywgWydleHBpcmVzJywgJ2lzc3VlZCcsICd0b2tlbiddLCB7XG4gICAgICBvblN1Y2Nlc3NcbiAgICB9KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJyc7XG5cbiAgICBpZihlcnJvck1lc3NhZ2UgPT09ICdpbnZhbGlkX3Nlc3Npb24nIHx8IGVycm9yTWVzc2FnZSA9PT0gJ2V4cGlyZWRfc2Vzc2lvbicpIHtcbiAgICAgIGF3YWl0IGNsZWFySW52YWxpZFNlc3Npb25TdGF0ZShmbHV4KTtcbiAgICB9XG5cbiAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVVNFUl9DT05TVEFOVFMuR0VUX1NFU1NJT05fRVJST1J9KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcbiJdLCJuYW1lcyI6WyJBcGlFcnJvciIsImFqYXgiLCJkZWwiLCJnZXQiLCJncmFwaHFsUXVlcnkiLCJwb3N0IiwicHV0IiwiY2FtZWxDYXNlIiwiaXNFbXB0eSIsInVwcGVyRmlyc3QiLCJBUFBfQ09OU1RBTlRTIiwiVVNFUl9DT05TVEFOVFMiLCJnZXRDb25maWdGcm9tRmx1eCIsImNsZWFyUGVyc2lzdGVkU2Vzc2lvbiIsImdldFJlZnJlc2hXaW5kb3dNaW51dGVzIiwiaHlkcmF0ZVNlc3Npb25Gcm9tU3RvcmFnZSIsInBhcnNlSnd0RXhwaXJ5TXMiLCJzdG9yZVNlc3Npb24iLCJERUZBVUxUX1JFRlJFU0hfV0lORE9XX01JTlVURVMiLCJERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMiLCJnZXRNaW51dGVzVW50aWwiLCJleHBpcmVzQXQiLCJNYXRoIiwicm91bmQiLCJEYXRlIiwibm93IiwiY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlIiwiZmx1eCIsImNsZWFyQXBwRGF0YSIsImRpc3BhdGNoIiwic2Vzc2lvbiIsInR5cGUiLCJTSUdOX09VVF9TVUNDRVNTIiwicmVzb2x2ZUF1dGhUb2tlbiIsInN0YXRlU2Vzc2lvbiIsImdldFN0YXRlIiwiaHlkcmF0ZWRTZXNzaW9uIiwidG9rZW4iLCJleHBpcmVzIiwiYXV0aEV4cGlyZXMiLCJpc3N1ZWQiLCJhdXRoSXNzdWVkIiwiaHlkcmF0ZWRUb2tlbiIsInRva2VuRXhwaXJlc0F0IiwiY29uZmlnIiwibWludXRlc1VudGlsRXhwaXJ5IiwiTnVtYmVyIiwic2Vzc2lvbkxpZmV0aW1lTWludXRlcyIsInJlZnJlc2hXaW5kb3dNaW51dGVzIiwiYXBwIiwicmVmcmVzaEV4cGlyZXNNaW51dGVzIiwibWF4IiwibWF4TWludXRlcyIsInVwZGF0ZWRTZXNzaW9uIiwicmVmcmVzaFNlc3Npb24iLCJuZXdUb2tlbiIsImdldEdyYXBocWwiLCJ1cmwiLCJhdXRoZW50aWNhdGUiLCJxdWVyeSIsIm9wdGlvbnMiLCJvblN1Y2Nlc3MiLCJyZXRyeSIsInJlc3BvbnNlTWV0aG9kIiwibmV0d29ya1R5cGUiLCJBUElfTkVUV09SS19FUlJPUiIsInRoZW4iLCJyZXN1bHRzIiwiQVBJX05FVFdPUktfU1VDQ0VTUyIsImRhdGEiLCJjYXRjaCIsImVycm9yIiwiZXJyb3JzIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVqZWN0IiwicmVzb2x2ZSIsIm1lc3NhZ2UiLCJFcnJvciIsInJlc29sdmVSZXN0RW5kcG9pbnQiLCJlbmRwb2ludCIsInRhcmdldEVuZHBvaW50IiwiU3RyaW5nIiwidHJpbSIsInRlc3QiLCJjb25maWd1cmVkRW5kcG9pbnQiLCJhcGkiLCJlbmRwb2ludHMiLCJyZXN0UmVxdWVzdCIsIm1ldGhvZCIsInBhcmFtcyIsImh1bnRlck9wdGlvbnMiLCJyZXF1ZXN0TWV0aG9kIiwidG9VcHBlckNhc2UiLCJyZXF1ZXN0IiwicmVxdWVzdE9wdGlvbnMiLCJjcmVhdGVRdWVyeSIsIm5hbWUiLCJkYXRhVHlwZSIsInZhcmlhYmxlcyIsInJldHVyblByb3BlcnRpZXMiLCJxdWVyeVZhcmlhYmxlcyIsInZhcmlhYmxlS2V5cyIsIk9iamVjdCIsImtleXMiLCJxdWVyeU5hbWUiLCJyZXBsYWNlIiwibXV0YXRpb25OYW1lIiwibGVuZ3RoIiwibWFwIiwia2V5Iiwiam9pbiIsInVwZGF0ZWRWYXJpYWJsZXMiLCJyZWR1Y2UiLCJxdWVyeURhdGEiLCJ2YWx1ZSIsImNyZWF0ZU11dGF0aW9uIiwiYXBwUXVlcnkiLCJhcHBVcmwiLCJhcHBNdXRhdGlvbiIsInB1YmxpY1F1ZXJ5IiwicHVibGljVXJsIiwicHVibGljIiwicHVibGljTXV0YXRpb24iLCJydW1NdXRhdGlvbiIsInJ1bVVybCIsInJ1bSIsInVwbG9hZEltYWdlIiwiaW1hZ2UiLCJ1cGxvYWRJbWFnZVVybCIsImhlYWRlcnMiLCJIZWFkZXJzIiwic2V0IiwiRm9ybURhdGEiLCJmZXRjaCIsImJvZHkiLCJyZXNwb25zZSIsInJlc3BvbnNlVHlwZSIsImpzb24iLCJ0ZXh0Iiwib2siLCJzdGF0dXNUZXh0IiwicmVmcmVzaFRva2VuIiwiR0VUX1NFU1NJT05fRVJST1IiLCJyZXF1ZXN0ZWRFeHBpcmVzIiwicmF3U2Vzc2lvbkRhdGEiLCJ1c2VycyIsInNlc3Npb25EYXRhIiwiY3VycmVudFNlc3Npb24iLCJtZXJnZWRTZXNzaW9uIiwiVVBEQVRFX1NFU1NJT05fU1VDQ0VTUyIsImVycm9yTWVzc2FnZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsUUFBUSxFQUFFQyxJQUFJLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxZQUFZLEVBQUVDLElBQUksRUFBRUMsR0FBRyxRQUFPLG9CQUFvQjtBQUNwRixTQUFRQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsVUFBVSxRQUFPLGVBQWU7QUFFNUQsU0FBUUMsYUFBYSxRQUFPLHdCQUF3QjtBQUNwRCxTQUFRQyxjQUFjLFFBQU8seUJBQXlCO0FBQ3RELFNBQVFDLGlCQUFpQixRQUFPLG1CQUFtQjtBQUNuRCxTQUFRQyxxQkFBcUIsRUFBRUMsdUJBQXVCLEVBQUVDLHlCQUF5QixFQUFFQyxnQkFBZ0IsRUFBRUMsWUFBWSxRQUFPLGVBQWU7QUF5RXZJLE1BQU1DLGlDQUFpQztBQUN2QyxNQUFNQyw4QkFBOEI7QUFFcEMsTUFBTUMsa0JBQWtCLENBQUNDLFlBQ3ZCQyxLQUFLQyxLQUFLLENBQUMsQUFBQ0YsQ0FBQUEsWUFBWUcsS0FBS0MsR0FBRyxFQUFDLElBQU0sQ0FBQSxPQUFPLEVBQUM7QUFFakQsTUFBTUMsMkJBQTJCLE9BQU9DO0lBQ3RDLE1BQU1kLHNCQUFzQmM7SUFDNUIsTUFBTUEsS0FBS0MsWUFBWTtJQUN2QixNQUFNRCxLQUFLRSxRQUFRLENBQUM7UUFBQ0MsU0FBUyxDQUFDO1FBQUdDLE1BQU1wQixlQUFlcUIsZ0JBQWdCO0lBQUE7QUFDekU7QUFFQSxNQUFNQyxtQkFBbUIsT0FBT047SUFDOUIsTUFBTU8sZUFBNkJQLEtBQUtRLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQztJQUNyRSxNQUFNQyxrQkFBK0JGLGFBQWFHLEtBQUssR0FBR0gsZUFBZSxNQUFNbkIsMEJBQTBCWTtJQUN6RyxNQUFNLEVBQ0pXLFNBQVNDLGNBQWMsQ0FBQyxFQUN4QkMsUUFBUUMsYUFBYSxDQUFDLEVBQ3RCSixPQUFPSyxhQUFhLEVBQ3JCLEdBQWdCTixtQkFBbUIsQ0FBQztJQUNyQyxJQUFJQyxRQUFRSyxpQkFBaUJSLGFBQWFHLEtBQUs7SUFFL0MsSUFBRyxDQUFDQSxPQUFPO1FBQ1QsTUFBTSxJQUFJckMsU0FBUztZQUFDO1NBQWtCLEVBQUU7SUFDMUM7SUFFQSxNQUFNMkMsaUJBQWlCM0IsaUJBQWlCcUI7SUFFeEMsSUFBR00saUJBQWlCLEtBQUtuQixLQUFLQyxHQUFHLE1BQU1rQixnQkFBZ0I7UUFDckQsTUFBTSxJQUFJM0MsU0FBUztZQUFDO1NBQWtCLEVBQUU7SUFDMUM7SUFFQSxNQUFNNEMsU0FBU2hDLGtCQUFrQmU7SUFDakMsTUFBTWtCLHFCQUFxQnpCLGdCQUFnQjBCLE9BQU9QLGVBQWU7SUFDakUsTUFBTVEseUJBQXlCekIsS0FBS0MsS0FBSyxDQUFDLEFBQUNnQixDQUFBQSxjQUFjRSxVQUFTLElBQU0sQ0FBQSxPQUFPLEVBQUM7SUFDaEYsTUFBTU8sdUJBQXVCbEMsd0JBQzNCaUMsMEJBQTBCNUIsNkJBQzFCeUIsT0FBT0ssR0FBRyxFQUFFbkIsV0FBVyxDQUFDO0lBRTFCLE1BQU1vQix3QkFBd0I1QixLQUFLNkIsR0FBRyxDQUNwQyxHQUNBTCxPQUFPRixPQUFPSyxHQUFHLEVBQUVuQixTQUFTc0IsY0FBY0wsMEJBQTBCNUI7SUFHdEUsSUFBRzBCLHFCQUFxQixLQUFLQSxzQkFBc0JHLHNCQUFzQjtRQUN2RSxNQUFNLEVBQ0psQixTQUFTdUIsaUJBQWlCLENBQUMsQ0FBQyxFQUM3QixHQUFtQixBQUFDLE1BQU1DLGVBQWUzQixNQUFNVSxPQUFPYSwwQkFBMkIsQ0FBQztRQUNuRixNQUFNLEVBQUNiLE9BQU9rQixRQUFRLEVBQUMsR0FBaUJGLGtCQUFrQixDQUFDO1FBRTNELElBQUcsQ0FBQ0UsVUFBVTtZQUNaLE1BQU0sSUFBSXZELFNBQVM7Z0JBQUM7YUFBa0IsRUFBRTtRQUMxQztRQUVBcUMsUUFBUWtCO0lBQ1Y7SUFFQSxPQUFPbEI7QUFDVDtBQUVBLE9BQU8sTUFBTW1CLGFBQWEsT0FDeEI3QixNQUNBOEIsS0FDQUMsY0FDQUMsT0FDQUM7SUFFQSxJQUFJO1FBQ0YsTUFBTSxFQUFDQyxTQUFTLEVBQUMsR0FBR0Q7UUFDcEIsTUFBTUUsUUFBbUI7WUFBQ0g7WUFBT0ksZ0JBQWdCRixhQUFjLENBQUEsS0FBTyxDQUFBO1FBQUU7UUFDeEUsTUFBTUcsY0FBc0JyQyxLQUFLUSxRQUFRLENBQUM7UUFFMUMsSUFBRzZCLGdCQUFnQixRQUFRO1lBQ3pCLE9BQU9yQyxLQUFLRSxRQUFRLENBQUM7Z0JBQUNpQztnQkFBTy9CLE1BQU1yQixjQUFjdUQsaUJBQWlCO1lBQUE7UUFDcEU7UUFFQSxJQUFJNUI7UUFFSixJQUFHcUIsY0FBYztZQUNmckIsUUFBUSxNQUFNSixpQkFBaUJOO1FBQ2pDO1FBRUEsT0FBT3ZCLGFBQWFxRCxLQUFLRSxPQUFPO1lBQUN0QixPQUFPQSxTQUFTO1FBQUUsR0FDaEQ2QixJQUFJLENBQUMsT0FBT0M7WUFDWCxNQUFNeEMsS0FBS0UsUUFBUSxDQUFDO2dCQUFDRSxNQUFNckIsY0FBYzBELG1CQUFtQjtZQUFBO1lBRTVELE9BQU9EO1FBQ1QsR0FDQ0QsSUFBSSxDQUFDLENBQUNHLE9BQVVSLFlBQVlBLFVBQVVRLFFBQVFBLE1BQzlDQyxLQUFLLENBQUMsT0FBT0M7WUFDWixNQUFNLEVBQUNDLFNBQVMsRUFBRSxFQUFDLEdBQUdEO1lBRXRCLElBQUdWLGFBQWFXLE9BQU9DLFFBQVEsQ0FBQyxrQkFBa0I7Z0JBQ2hELE1BQU05QyxLQUFLRSxRQUFRLENBQUM7b0JBQUNpQztvQkFBTy9CLE1BQU1yQixjQUFjdUQsaUJBQWlCO2dCQUFBO2dCQUNqRSxPQUFPUyxRQUFRQyxNQUFNLENBQUNKO1lBQ3hCLE9BQU8sSUFBR0MsT0FBT0MsUUFBUSxDQUFDLHNCQUFzQkQsT0FBT0MsUUFBUSxDQUFDLG9CQUFvQjtnQkFDbEYsTUFBTS9DLHlCQUF5QkM7Z0JBQy9CLE9BQU8rQyxRQUFRRSxPQUFPLENBQUMsQ0FBQztZQUMxQjtZQUVBLE9BQU9GLFFBQVFDLE1BQU0sQ0FBQ0o7UUFDeEI7SUFDSixFQUFFLE9BQU1BLE9BQU87UUFDYixNQUFNQyxTQUFTRCxpQkFBaUJ2RSxXQUFXdUUsTUFBTUMsTUFBTSxHQUFHLEVBQUU7UUFDNUQsTUFBTUssVUFBVU4saUJBQWlCTyxRQUFRUCxNQUFNTSxPQUFPLEdBQUc7UUFFekQsSUFBR0wsT0FBT0MsUUFBUSxDQUFDLHNCQUFzQkQsT0FBT0MsUUFBUSxDQUFDLHNCQUFzQkksWUFBWSxxQkFBcUJBLFlBQVksbUJBQW1CO1lBQzdJLE1BQU1uRCx5QkFBeUJDO1lBQy9CLE9BQU8sQ0FBQztRQUNWO1FBRUEsTUFBTTRDO0lBQ1I7QUFDRixFQUFFO0FBRUYsT0FBTyxNQUFNUSxzQkFBc0IsQ0FDakNwRCxNQUNBcUQ7SUFFQSxNQUFNQyxpQkFBaUJDLE9BQU9GLFlBQVksSUFBSUcsSUFBSTtJQUVsRCxJQUFHM0UsUUFBUXlFLGlCQUFpQjtRQUMxQixNQUFNLElBQUlqRixTQUFTO1lBQUM7U0FBYyxFQUFFO0lBQ3RDO0lBRUEsSUFBRyxnQkFBZ0JvRixJQUFJLENBQUNILGlCQUFpQjtRQUN2QyxPQUFPQTtJQUNUO0lBRUEsTUFBTXJDLFNBQVNoQyxrQkFBa0JlO0lBQ2pDLE1BQU0wRCxxQkFBcUJ6QyxPQUFPSyxHQUFHLEVBQUVxQyxLQUFLQyxXQUFXLENBQUNOLGVBQWUsSUFBSTtJQUUzRSxJQUFHekUsUUFBUTZFLHFCQUFxQjtRQUM5QixNQUFNLElBQUlyRixTQUFTO1lBQUM7U0FBYyxFQUFFLENBQUMsNkJBQTZCLEVBQUVpRixnQkFBZ0I7SUFDdEY7SUFFQSxPQUFPSTtBQUNULEVBQUU7QUFFRixPQUFPLE1BQU1HLGNBQWMsT0FDekI3RCxNQUNBcUQsVUFDQVMsU0FBcUIsS0FBSyxFQUMxQkMsUUFDQTlCLFVBQTBCLENBQUMsQ0FBQztJQUU1QixNQUFNLEVBQUNGLGVBQWUsS0FBSyxFQUFFRyxTQUFTLEVBQUUsR0FBRzhCLGVBQWMsR0FBRy9CO0lBQzVELE1BQU1ILE1BQU1zQixvQkFBb0JwRCxNQUFNcUQ7SUFDdEMsTUFBTVksZ0JBQWdCVixPQUFPTyxVQUFVLE9BQU9JLFdBQVc7SUFDekQsTUFBTS9CLFFBQW1CO1FBQ3ZCZ0MsU0FBUztZQUFDTCxRQUFRRztZQUFlRjtZQUFRakM7UUFBRztRQUM1Q00sZ0JBQWdCRixhQUFjLENBQUEsS0FBTyxDQUFBO0lBQ3ZDO0lBRUEsSUFBSTtRQUNGLE1BQU1HLGNBQXNCckMsS0FBS1EsUUFBUSxDQUFDO1FBRTFDLElBQUc2QixnQkFBZ0IsUUFBUTtZQUN6QixPQUFPckMsS0FBS0UsUUFBUSxDQUFDO2dCQUFDaUM7Z0JBQU8vQixNQUFNckIsY0FBY3VELGlCQUFpQjtZQUFBO1FBQ3BFO1FBRUEsTUFBTTVCLFFBQVFxQixlQUFlLE1BQU16QixpQkFBaUJOLFFBQVFnRSxjQUFjdEQsS0FBSztRQUMvRSxNQUFNMEQsaUJBQW9DO1lBQ3hDLEdBQUdKLGFBQWE7WUFDaEIsR0FBSXRELFFBQVE7Z0JBQUNBO1lBQUssSUFBSSxDQUFDLENBQUM7UUFDMUI7UUFDQSxJQUFJZ0M7UUFFSixPQUFPdUI7WUFDTCxLQUFLO2dCQUNIdkIsT0FBTyxNQUFNbkUsSUFBSXVELEtBQUtpQyxRQUFRSztnQkFDOUI7WUFFRixLQUFLO2dCQUNIMUIsT0FBTyxNQUFNbEUsSUFBSXNELEtBQUtpQyxRQUFRSztnQkFDOUI7WUFFRixLQUFLO2dCQUNIMUIsT0FBTyxNQUFNaEUsS0FBS29ELEtBQUtpQyxRQUFRSztnQkFDL0I7WUFFRixLQUFLO2dCQUNIMUIsT0FBTyxNQUFNL0QsSUFBSW1ELEtBQUtpQyxRQUFRSztnQkFDOUI7WUFFRjtnQkFDRTFCLE9BQU8sTUFBTXBFLEtBQUt3RCxLQUFLbUMsZUFBZUYsUUFBUUs7Z0JBQzlDO1FBQ0o7UUFFQSxNQUFNcEUsS0FBS0UsUUFBUSxDQUFDO1lBQUNFLE1BQU1yQixjQUFjMEQsbUJBQW1CO1FBQUE7UUFFNUQsT0FBT1AsWUFBWUEsVUFBVVEsUUFBUUE7SUFDdkMsRUFBRSxPQUFNRSxPQUFPO1FBQ2IsTUFBTUMsU0FBU0QsaUJBQWlCdkUsV0FBV3VFLE1BQU1DLE1BQU0sR0FBRyxFQUFFO1FBQzVELE1BQU1LLFVBQVVOLGlCQUFpQk8sUUFBUVAsTUFBTU0sT0FBTyxHQUFHO1FBRXpELElBQUdMLE9BQU9DLFFBQVEsQ0FBQyxzQkFBc0JELE9BQU9DLFFBQVEsQ0FBQyxzQkFBc0JJLFlBQVkscUJBQXFCQSxZQUFZLG1CQUFtQjtZQUM3SSxNQUFNbkQseUJBQXlCQztZQUMvQixPQUFPLENBQUM7UUFDVjtRQUVBLE1BQU00QztJQUNSO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTXlCLGNBQWMsQ0FDekJDLE1BQ0FDLFVBQ0FDLFlBQStCLENBQUMsQ0FBQyxFQUNqQ0MsbUJBQTZCLEVBQUUsRUFDL0JyRSxPQUFPLE9BQU87SUFFZCxNQUFNc0UsaUJBQWlCO1FBQUMsR0FBR0YsYUFBYSxDQUFDLENBQUM7SUFBQTtJQUMxQyxNQUFNRyxlQUFlQyxPQUFPQyxJQUFJLENBQUNIO0lBQ2pDLE1BQU1JLFlBQVlSLEtBQUtTLE9BQU8sQ0FBQyxNQUFNO0lBQ3JDLElBQUkvQztJQUVKLElBQUc1QixTQUFTLFlBQVk7UUFDdEIsTUFBTTRFLGVBQWVsRyxXQUFXRixVQUFVMkYsYUFBYXpGLFdBQVdGLFVBQVVrRztRQUM1RTlDLFFBQVEsR0FBRzVCLEtBQUssQ0FBQyxFQUFFNEUsZUFDakJMLGFBQWFNLE1BQU0sR0FDZixDQUFDLENBQUMsRUFBRU4sYUFBYU8sR0FBRyxDQUFDLENBQUNDLE1BQVEsQ0FBQyxDQUFDLEVBQUVBLElBQUksRUFBRSxFQUFFVCxjQUFjLENBQUNTLElBQUksQ0FBQy9FLElBQUksRUFBRSxFQUFFZ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQ25GLEdBQ0w7TUFDQyxFQUFFYixTQUFTO1FBQ1QsRUFBRTNGLFVBQVVrRyxhQUNWSCxhQUFhTSxNQUFNLEdBQ2YsQ0FBQyxDQUFDLEVBQUVOLGFBQWFPLEdBQUcsQ0FBQyxDQUFDQyxNQUFRLEdBQUdBLElBQUksR0FBRyxFQUFFQSxLQUFLLEVBQUVDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUM5RCxHQUNMO1FBQ0QsRUFBRVgsa0JBQWtCUSxTQUFTLENBQUMsQ0FBQyxFQUFFUixpQkFBaUJXLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEdBQUc7O0tBRXhFLENBQUM7SUFDSixPQUFPO1FBQ0xwRCxRQUFRLEdBQUc1QixLQUFLLENBQUMsRUFBRTBFLFlBQ2pCSCxhQUFhTSxNQUFNLEdBQ2YsQ0FBQyxDQUFDLEVBQUVOLGFBQWFPLEdBQUcsQ0FBQyxDQUFDQyxNQUFRLENBQUMsQ0FBQyxFQUFFQSxJQUFJLEVBQUUsRUFBRVQsY0FBYyxDQUFDUyxJQUFJLENBQUMvRSxJQUFJLEVBQUUsRUFBRWdGLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUNuRixHQUNMO01BQ0MsRUFBRWIsU0FBUztRQUNULEVBQUUzRixVQUFVa0csYUFDVkgsYUFBYU0sTUFBTSxHQUNmLENBQUMsQ0FBQyxFQUFFTixhQUFhTyxHQUFHLENBQUMsQ0FBQ0MsTUFBUSxHQUFHQSxJQUFJLEdBQUcsRUFBRUEsS0FBSyxFQUFFQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FDOUQsR0FDTDtRQUNELEVBQUVYLGtCQUFrQlEsU0FBUyxDQUFDLENBQUMsRUFBRVIsaUJBQWlCVyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFHOztLQUV4RSxDQUFDO0lBQ0o7SUFFQSxNQUFNQyxtQkFBNENWLGFBQWFXLE1BQU0sQ0FBQyxDQUFDQyxXQUFXSjtRQUNoRkksU0FBUyxDQUFDSixJQUFJLEdBQUdULGNBQWMsQ0FBQ1MsSUFBSSxDQUFDSyxLQUFLO1FBQzFDLE9BQU9EO0lBQ1QsR0FBRyxDQUFDO0lBRUosT0FBTztRQUFDdkQ7UUFBT3dDLFdBQVdhO0lBQWdCO0FBQzVDLEVBQUU7QUFFRixPQUFPLE1BQU1JLGlCQUFpQixDQUM1Qm5CLE1BQ0FDLFVBQ0FDLFlBQStCLENBQUMsQ0FBQyxFQUNqQ0MsbUJBQTZCLEVBQUUsR0FDNUJKLFlBQVlDLE1BQU1DLFVBQVVDLFdBQVdDLGtCQUFrQixZQUFZO0FBRTFFLE9BQU8sTUFBTWlCLFdBQVcsQ0FDdEIxRixNQUNBc0UsTUFDQUMsVUFDQUcsZ0JBQ0FELGtCQUNBeEMsVUFBc0IsQ0FBQyxDQUFDO0lBRXhCLE1BQU1ELFFBQVFxQyxZQUFZQyxNQUFNQyxVQUFVRyxnQkFBZ0JEO0lBQzFELE1BQU14RCxTQUFTaEMsa0JBQWtCZTtJQUNqQyxNQUFNMkYsU0FBaUIxRSxPQUFPSyxHQUFHLEVBQUVxQyxLQUFLN0IsT0FBTztJQUMvQyxPQUFPRCxXQUFXN0IsTUFBTTJGLFFBQVEsTUFBTTNELE9BQU9DO0FBQy9DLEVBQUU7QUFFRixPQUFPLE1BQU0yRCxjQUFjLENBQ3pCNUYsTUFDQXNFLE1BQ0FDLFVBQ0FHLGdCQUNBRCxrQkFDQXhDLFVBQXNCLENBQUMsQ0FBQztJQUV4QixNQUFNRCxRQUFReUQsZUFBZW5CLE1BQU1DLFVBQVVHLGdCQUFnQkQ7SUFDN0QsTUFBTXhELFNBQVNoQyxrQkFBa0JlO0lBQ2pDLE1BQU0yRixTQUFpQjFFLE9BQU9LLEdBQUcsRUFBRXFDLEtBQUs3QixPQUFPO0lBQy9DLE9BQU9ELFdBQVc3QixNQUFNMkYsUUFBUSxNQUFNM0QsT0FBT0M7QUFDL0MsRUFBRTtBQUVGLE9BQU8sTUFBTTRELGNBQWMsQ0FDekI3RixNQUNBc0UsTUFDQUMsVUFDQUcsZ0JBQ0FELGtCQUNBeEMsVUFBc0IsQ0FBQyxDQUFDO0lBRXhCLE1BQU1ELFFBQVFxQyxZQUFZQyxNQUFNQyxVQUFVRyxnQkFBZ0JEO0lBQzFELE1BQU14RCxTQUFTaEMsa0JBQWtCZTtJQUNqQyxNQUFNOEYsWUFBb0I3RSxPQUFPSyxHQUFHLEVBQUVxQyxLQUFLb0MsVUFBVTtJQUNyRCxPQUFPbEUsV0FBVzdCLE1BQU04RixXQUFXLE9BQU85RCxPQUFPQztBQUNuRCxFQUFFO0FBRUYsT0FBTyxNQUFNK0QsaUJBQWlCLENBQzVCaEcsTUFDQXNFLE1BQ0FDLFVBQ0FHLGdCQUNBRCxrQkFDQXhDLFVBQXNCLENBQUMsQ0FBQztJQUV4QixNQUFNRCxRQUFReUQsZUFBZW5CLE1BQU1DLFVBQVVHLGdCQUFnQkQ7SUFDN0QsTUFBTXhELFNBQVNoQyxrQkFBa0JlO0lBQ2pDLE1BQU04RixZQUFvQjdFLE9BQU9LLEdBQUcsRUFBRXFDLEtBQUtvQyxVQUFVO0lBQ3JELE9BQU9sRSxXQUFXN0IsTUFBTThGLFdBQVcsT0FBTzlELE9BQU9DO0FBQ25ELEVBQUU7QUFFRixPQUFPLE1BQU1nRSxjQUFjLENBQ3pCakcsTUFDQXNFLE1BQ0FDLFVBQ0FHLGdCQUNBRCxrQkFDQXhDLFVBQXNCLENBQUMsQ0FBQztJQUV4QixNQUFNRCxRQUFReUQsZUFBZW5CLE1BQU1DLFVBQVVHLGdCQUFnQkQ7SUFDN0QsTUFBTXhELFNBQVNoQyxrQkFBa0JlO0lBQ2pDLE1BQU1rRyxTQUFpQmpGLE9BQU9LLEdBQUcsRUFBRXFDLEtBQUt3QyxPQUFPbEYsT0FBT0ssR0FBRyxFQUFFcUMsS0FBS29DLFVBQVU7SUFDMUUsT0FBT2xFLFdBQVc3QixNQUFNa0csUUFBUSxPQUFPbEUsT0FBT0M7QUFDaEQsRUFBRTtBQUVGLE9BQU8sTUFBTW1FLGNBQWMsQ0FDekJwRyxNQUNBcUcsT0FDQXBFLFVBQTZCLENBQUMsQ0FBQztJQUUvQixNQUFNaEIsU0FBU2hDLGtCQUFrQmU7SUFDakMsTUFBTXNHLGlCQUF5QnJGLE9BQU9LLEdBQUcsRUFBRXFDLEtBQUt5QyxlQUFlO0lBQy9ELE1BQU0xRixRQUFRVixLQUFLUSxRQUFRLENBQUM7SUFFNUIsSUFBRzNCLFFBQVF5SCxpQkFBaUI7UUFDMUIsT0FBT3ZELFFBQVFDLE1BQU0sQ0FBQyxJQUFJM0UsU0FBUztZQUFDO1NBQWMsRUFBRTtJQUN0RDtJQUVBLElBQUdRLFFBQVE2QixRQUFRO1FBQ2pCLE9BQU9xQyxRQUFRQyxNQUFNLENBQUMsSUFBSTNFLFNBQVM7WUFBQztTQUFrQixFQUFFO0lBQzFEO0lBRUEsTUFBTWtJLFVBQVUsSUFBSUM7SUFDcEJELFFBQVFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUvRixPQUFPO0lBRTlDLElBQUcsT0FBT2dHLGFBQWEsZUFBZUwsaUJBQWlCSyxVQUFVO1FBQy9ESCxRQUFRRSxHQUFHLENBQUMsVUFBVTtRQUV0QixPQUFPRSxNQUFNTCxnQkFBZ0I7WUFDM0JNLE1BQU1QO1lBQ05FO1lBQ0F6QyxRQUFRO1FBQ1YsR0FBR3ZCLElBQUksQ0FBQyxPQUFPc0U7WUFDYixNQUFNQyxlQUFlRCxTQUFTTixPQUFPLENBQUMvSCxHQUFHLENBQUMsbUJBQW1CO1lBQzdELE1BQU1rRSxPQUFPb0UsYUFBYWhFLFFBQVEsQ0FBQyxzQkFDL0IsTUFBTStELFNBQVNFLElBQUksS0FDbkIsTUFBTUYsU0FBU0csSUFBSTtZQUV2QixJQUFHLENBQUNILFNBQVNJLEVBQUUsRUFBRTtnQkFDZixNQUFNL0QsVUFBVSxPQUFPUixTQUFTLFlBQVlBLFFBQVEsV0FBV0EsT0FDM0RhLE9BQU8sQUFBQ2IsS0FBMEJFLEtBQUssSUFBSWlFLFNBQVNLLFVBQVUsSUFDOUQzRCxPQUFPYixRQUFRbUUsU0FBU0ssVUFBVTtnQkFDdEMsTUFBTSxJQUFJN0ksU0FBUztvQkFBQztpQkFBZSxFQUFFNkU7WUFDdkM7WUFFQSxPQUFPUjtRQUNUO0lBQ0Y7SUFFQSxPQUFPaEUsS0FBSzRILGdCQUFnQkQsT0FBTztRQUFDRTtRQUFTLEdBQUd0RSxPQUFPO0lBQUE7QUFDekQsRUFBRTtBQUVGLE9BQU8sTUFBTU4saUJBQWlCLE9BQzVCM0IsTUFDQVUsT0FDQUM7SUFFQSxNQUFNd0csZUFBZXRJLFFBQVE2QixTQUFTVixLQUFLUSxRQUFRLENBQUMsd0JBQXdCRTtJQUU1RSxJQUFHN0IsUUFBUXNJLGVBQWU7UUFDeEIsT0FBTztJQUNUO0lBRUEsTUFBTW5HLGlCQUFpQjNCLGlCQUFpQmtFLE9BQU80RDtJQUUvQyxJQUFHbkcsaUJBQWlCLEtBQUtuQixLQUFLQyxHQUFHLE1BQU1rQixnQkFBZ0I7UUFDckQsTUFBTTRCLFFBQVEsSUFBSU8sTUFBTTtRQUN4QixNQUFNcEQseUJBQXlCQztRQUMvQkEsS0FBS0UsUUFBUSxDQUFDO1lBQUMwQztZQUFPeEMsTUFBTXBCLGVBQWVvSSxpQkFBaUI7UUFBQTtRQUM1RCxPQUFPO0lBQ1Q7SUFFQSxJQUFJO1FBQ0YsTUFBTW5HLFNBQVNoQyxrQkFBa0JlO1FBQ2pDLE1BQU1xSCxtQkFBbUIxSCxLQUFLNkIsR0FBRyxDQUMvQixHQUNBTCxPQUFPUixXQUFXTSxPQUFPSyxHQUFHLEVBQUVuQixTQUFTc0IsY0FBY2pDO1FBRXZELE1BQU1rRixpQkFBaUI7WUFDckIvRCxTQUFTO2dCQUNQUCxNQUFNO2dCQUNOb0YsT0FBTzZCO1lBQ1Q7WUFDQTNHLE9BQU87Z0JBQ0xOLE1BQU07Z0JBQ05vRixPQUFPMkI7WUFDVDtRQUNGO1FBQ0EsTUFBTWpGLFlBQVksT0FBT1EsT0FBdUIsQ0FBQyxDQUFDO1lBQ2hELE1BQU00RSxpQkFBa0I1RSxNQUErRDZFLE9BQU81RjtZQUM5RixNQUFNNkYsY0FBY0Ysa0JBQWtCLE9BQU9BLG1CQUFtQixXQUM1REEsaUJBQ0EsQ0FBQztZQUNMLE1BQU1HLGlCQUFrQnpILEtBQUtRLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7WUFDOUQsTUFBTWtILGdCQUFnQixNQUFNcEksYUFBYVUsTUFBTTtnQkFBQyxHQUFHeUgsY0FBYztnQkFBRSxHQUFHRCxXQUFXO1lBQUE7WUFDakYsT0FBT3hILEtBQUtFLFFBQVEsQ0FBQztnQkFBQ0MsU0FBU3VIO2dCQUFldEgsTUFBTXBCLGVBQWUySSxzQkFBc0I7WUFBQTtRQUMzRjtRQUVBLE9BQU8sTUFBTTNCLGVBQWVoRyxNQUFNLGtCQUFrQixTQUFTMEUsZ0JBQWdCO1lBQUM7WUFBVztZQUFVO1NBQVEsRUFBRTtZQUMzR3hDO1FBQ0Y7SUFDRixFQUFFLE9BQU1VLE9BQU87UUFDYixNQUFNZ0YsZUFBZWhGLGlCQUFpQk8sUUFBUVAsTUFBTU0sT0FBTyxHQUFHO1FBRTlELElBQUcwRSxpQkFBaUIscUJBQXFCQSxpQkFBaUIsbUJBQW1CO1lBQzNFLE1BQU03SCx5QkFBeUJDO1FBQ2pDO1FBRUFBLEtBQUtFLFFBQVEsQ0FBQztZQUFDMEM7WUFBT3hDLE1BQU1wQixlQUFlb0ksaUJBQWlCO1FBQUE7UUFDNUQsT0FBTztJQUNUO0FBQ0YsRUFBRSJ9
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvYXBpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBpRXJyb3IsIGFqYXgsIGRlbCwgZ2V0LCBncmFwaHFsUXVlcnksIHBvc3QsIHB1dH0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuaW1wb3J0IHtjYW1lbENhc2UsIGlzRW1wdHksIHVwcGVyRmlyc3R9IGZyb20gJ0BubGFicy91dGlscyc7XG5cbmltcG9ydCB7QVBQX0NPTlNUQU5UU30gZnJvbSAnLi4vc3RvcmVzL2FwcFN0b3JlLmpzJztcbmltcG9ydCB7VVNFUl9DT05TVEFOVFN9IGZyb20gJy4uL3N0b3Jlcy91c2VyU3RvcmUuanMnO1xuaW1wb3J0IHtnZXRDb25maWdGcm9tRmx1eH0gZnJvbSAnLi9jb25maWdVdGlscy5qcyc7XG5pbXBvcnQge2NsZWFyUGVyc2lzdGVkU2Vzc2lvbiwgZ2V0UmVmcmVzaFdpbmRvd01pbnV0ZXMsIGh5ZHJhdGVTZXNzaW9uRnJvbVN0b3JhZ2UsIHBhcnNlSnd0RXhwaXJ5TXMsIHN0b3JlU2Vzc2lvbn0gZnJvbSAnLi9zZXNzaW9uLmpzJztcblxuaW1wb3J0IHR5cGUge0ZsdXhBY3Rpb24sIEZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7SHVudGVyT3B0aW9uc1R5cGUsIEh1bnRlclF1ZXJ5VHlwZX0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaU9wdGlvbnMge1xuICByZWFkb25seSBvblN1Y2Nlc3M/OiAoZGF0YTogYW55KSA9PiBQcm9taXNlPEZsdXhBY3Rpb24+O1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IHR5cGUgUmVzdE1ldGhvZCA9ICdERUxFVEUnIHwgJ0dFVCcgfCAnUEFUQ0gnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAoc3RyaW5nICYge30pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RBcGlPcHRpb25zIGV4dGVuZHMgSHVudGVyT3B0aW9uc1R5cGUge1xuICByZWFkb25seSBhdXRoZW50aWNhdGU/OiBib29sZWFuO1xuICByZWFkb25seSBvblN1Y2Nlc3M/OiAoZGF0YTogYW55KSA9PiBhbnk7XG59XG5cbmV4cG9ydCB0eXBlIFJlYWt0b3JEYkNvbGxlY3Rpb24gPVxuICAnYXBwcycgfFxuICAnY29ubmVjdGlvbnMnIHxcbiAgJ2NvbnRlbnRzJyB8XG4gICdjb252ZXJzYXRpb25zJyB8XG4gICdjcm0nIHxcbiAgJ2V2ZW50cycgfFxuICAnZmlsZXMnIHxcbiAgJ2dyb3VwcycgfFxuICAnaW1hZ2VzJyB8XG4gICdsb2NhdGlvbnMnIHxcbiAgJ21lc3NhZ2VzJyB8XG4gICdub3RpZmljYXRpb25zJyB8XG4gICdwYXltZW50cycgfFxuICAncGVybWlzc2lvbnMnIHxcbiAgJ3Bvc3RzJyB8XG4gICdwZXJzb25hcycgfFxuICAncmVhY3Rpb25zJyB8XG4gICdydW0nIHxcbiAgJ3N1YnNjcmlwdGlvbnMnIHxcbiAgJ3RhZ3MnIHxcbiAgJ3RyYW5zbGF0aW9ucycgfFxuICAndXNlcnMnIHxcbiAgJ3ZpZGVvcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpUXVlcnlWYXJpYWJsZVR5cGUge1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZhbHVlOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVF1ZXJ5VmFyaWFibGVzIHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogQXBpUXVlcnlWYXJpYWJsZVR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpUmVzdWx0c1R5cGUge1xuICByZWFkb25seSBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5VHlwZSB7XG4gIHJlYWRvbmx5IHF1ZXJ5PzogSHVudGVyUXVlcnlUeXBlIHwgSHVudGVyUXVlcnlUeXBlW107XG4gIHJlYWRvbmx5IHJlcXVlc3Q/OiB7XG4gICAgcmVhZG9ubHkgbWV0aG9kOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcGFyYW1zPzogdW5rbm93bjtcbiAgICByZWFkb25seSB1cmw6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgcmVzcG9uc2VNZXRob2Q6IChyZXN1bHRzOiBBcGlSZXN1bHRzVHlwZSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uVHlwZSB7XG4gIHJlYWRvbmx5IGV4cGlyZXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGlzc3VlZD86IG51bWJlcjtcbiAgcmVhZG9ubHkgdG9rZW4/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlcm5hbWU/OiBzdHJpbmc7XG59XG5cbmNvbnN0IERFRkFVTFRfUkVGUkVTSF9XSU5ET1dfTUlOVVRFUyA9IDU7XG5jb25zdCBERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMgPSAxNTtcblxuY29uc3QgZ2V0TWludXRlc1VudGlsID0gKGV4cGlyZXNBdDogbnVtYmVyKTogbnVtYmVyID0+XG4gIE1hdGgucm91bmQoKGV4cGlyZXNBdCAtIERhdGUubm93KCkpIC8gKDEwMDAgKiA2MCkpO1xuXG5jb25zdCBjbGVhckludmFsaWRTZXNzaW9uU3RhdGUgPSBhc3luYyAoZmx1eDogRmx1eEZyYW1ld29yayk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBhd2FpdCBjbGVhclBlcnNpc3RlZFNlc3Npb24oZmx1eCk7XG4gIGF3YWl0IGZsdXguY2xlYXJBcHBEYXRhKCk7XG4gIGF3YWl0IGZsdXguZGlzcGF0Y2goe3Nlc3Npb246IHt9LCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5TSUdOX09VVF9TVUNDRVNTfSk7XG59O1xuXG5jb25zdCByZXNvbHZlQXV0aFRva2VuID0gYXN5bmMgKGZsdXg6IEZsdXhGcmFtZXdvcmspOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBzdGF0ZVNlc3Npb246IFNlc3Npb25UeXBlID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicpIHx8IHt9KSBhcyBTZXNzaW9uVHlwZTtcbiAgY29uc3QgaHlkcmF0ZWRTZXNzaW9uOiBTZXNzaW9uVHlwZSA9IHN0YXRlU2Vzc2lvbi50b2tlbiA/IHN0YXRlU2Vzc2lvbiA6IGF3YWl0IGh5ZHJhdGVTZXNzaW9uRnJvbVN0b3JhZ2UoZmx1eCk7XG4gIGNvbnN0IHtcbiAgICBleHBpcmVzOiBhdXRoRXhwaXJlcyA9IDAsXG4gICAgaXNzdWVkOiBhdXRoSXNzdWVkID0gMCxcbiAgICB0b2tlbjogaHlkcmF0ZWRUb2tlblxuICB9OiBTZXNzaW9uVHlwZSA9IGh5ZHJhdGVkU2Vzc2lvbiB8fCB7fTtcbiAgbGV0IHRva2VuID0gaHlkcmF0ZWRUb2tlbiB8fCBzdGF0ZVNlc3Npb24udG9rZW47XG5cbiAgaWYoIXRva2VuKSB7XG4gICAgdGhyb3cgbmV3IEFwaUVycm9yKFt7IG1lc3NhZ2U6ICdpbnZhbGlkX3Nlc3Npb24nIH1dLCBuZXcgRXJyb3IoJ2ludmFsaWRfc2Vzc2lvbicpKTtcbiAgfVxuXG4gIGNvbnN0IHRva2VuRXhwaXJlc0F0ID0gcGFyc2VKd3RFeHBpcnlNcyh0b2tlbik7XG5cbiAgaWYodG9rZW5FeHBpcmVzQXQgPiAwICYmIERhdGUubm93KCkgPj0gdG9rZW5FeHBpcmVzQXQpIHtcbiAgICB0aHJvdyBuZXcgQXBpRXJyb3IoW3sgbWVzc2FnZTogJ2V4cGlyZWRfc2Vzc2lvbicgfV0sIG5ldyBFcnJvcignZXhwaXJlZF9zZXNzaW9uJykpO1xuICB9XG5cbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IG1pbnV0ZXNVbnRpbEV4cGlyeSA9IGdldE1pbnV0ZXNVbnRpbChOdW1iZXIoYXV0aEV4cGlyZXMgfHwgMCkpO1xuICBjb25zdCBzZXNzaW9uTGlmZXRpbWVNaW51dGVzID0gTWF0aC5yb3VuZCgoYXV0aEV4cGlyZXMgLSBhdXRoSXNzdWVkKSAvICgxMDAwICogNjApKTtcbiAgY29uc3QgcmVmcmVzaFdpbmRvd01pbnV0ZXMgPSBnZXRSZWZyZXNoV2luZG93TWludXRlcyhcbiAgICBzZXNzaW9uTGlmZXRpbWVNaW51dGVzIHx8IERFRkFVTFRfU0VTU0lPTl9NQVhfTUlOVVRFUyxcbiAgICBjb25maWcuYXBwPy5zZXNzaW9uIHx8IHt9XG4gICk7XG4gIGNvbnN0IHJlZnJlc2hFeHBpcmVzTWludXRlcyA9IE1hdGgubWF4KFxuICAgIDEsXG4gICAgTnVtYmVyKGNvbmZpZy5hcHA/LnNlc3Npb24/Lm1heE1pbnV0ZXMgfHwgc2Vzc2lvbkxpZmV0aW1lTWludXRlcyB8fCBERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMpXG4gICk7XG5cbiAgaWYobWludXRlc1VudGlsRXhwaXJ5ID4gMCAmJiBtaW51dGVzVW50aWxFeHBpcnkgPD0gcmVmcmVzaFdpbmRvd01pbnV0ZXMpIHtcbiAgICBjb25zdCB7XG4gICAgICBzZXNzaW9uOiB1cGRhdGVkU2Vzc2lvbiA9IHt9XG4gICAgfTogQXBpUmVzdWx0c1R5cGUgPSAoYXdhaXQgcmVmcmVzaFNlc3Npb24oZmx1eCwgdG9rZW4sIHJlZnJlc2hFeHBpcmVzTWludXRlcykpIHx8IHt9O1xuICAgIGNvbnN0IHt0b2tlbjogbmV3VG9rZW59OiBTZXNzaW9uVHlwZSA9ICh1cGRhdGVkU2Vzc2lvbiB8fCB7fSk7XG5cbiAgICBpZighbmV3VG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBBcGlFcnJvcihbeyBtZXNzYWdlOiAnaW52YWxpZF9zZXNzaW9uJyB9XSwgbmV3IEVycm9yKCdpbnZhbGlkX3Nlc3Npb24nKSk7XG4gICAgfVxuXG4gICAgdG9rZW4gPSBuZXdUb2tlbjtcbiAgfVxuXG4gIHJldHVybiB0b2tlbjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHcmFwaHFsID0gYXN5bmMgKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICB1cmw6IHN0cmluZyxcbiAgYXV0aGVudGljYXRlOiBib29sZWFuLFxuICBxdWVyeTogSHVudGVyUXVlcnlUeXBlIHwgSHVudGVyUXVlcnlUeXBlW10sXG4gIG9wdGlvbnM6IEFwaU9wdGlvbnNcbik6IFByb21pc2U8QXBpUmVzdWx0c1R5cGU+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7b25TdWNjZXNzfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgcmV0cnk6IFJldHJ5VHlwZSA9IHtxdWVyeSwgcmVzcG9uc2VNZXRob2Q6IG9uU3VjY2VzcyB8fCAoKCkgPT4ge30pfTtcbiAgICBjb25zdCBuZXR3b3JrVHlwZTogc3RyaW5nID0gZmx1eC5nZXRTdGF0ZSgnYXBwLm5ldHdvcmtUeXBlJykgYXMgc3RyaW5nO1xuXG4gICAgaWYobmV0d29ya1R5cGUgPT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe3JldHJ5LCB0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX0VSUk9SfSk7XG4gICAgfVxuXG4gICAgbGV0IHRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBpZihhdXRoZW50aWNhdGUpIHtcbiAgICAgIHRva2VuID0gYXdhaXQgcmVzb2x2ZUF1dGhUb2tlbihmbHV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3JhcGhxbFF1ZXJ5KHVybCwgcXVlcnksIHt0b2tlbjogdG9rZW4gfHwgJyd9KVxuICAgICAgLnRoZW4oYXN5bmMgKHJlc3VsdHMpID0+IHtcbiAgICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7dHlwZTogQVBQX0NPTlNUQU5UUy5BUElfTkVUV09SS19TVUNDRVNTfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKGRhdGEpID0+IChvblN1Y2Nlc3MgPyBvblN1Y2Nlc3MoZGF0YSkgOiBkYXRhKSlcbiAgICAgIC5jYXRjaChhc3luYyAoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3Qge2Vycm9ycyA9IFtdfSA9IGVycm9yO1xuXG4gICAgICAgIGlmKG9uU3VjY2VzcyAmJiBlcnJvcnMuaW5jbHVkZXMoJ25ldHdvcmtfZXJyb3InKSkge1xuICAgICAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe3JldHJ5LCB0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX0VSUk9SfSk7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSBlbHNlIGlmKGVycm9ycy5pbmNsdWRlcygnaW52YWxpZF9zZXNzaW9uJykgfHwgZXJyb3JzLmluY2x1ZGVzKCdleHBpcmVkX3Nlc3Npb24nKSkge1xuICAgICAgICAgIGF3YWl0IGNsZWFySW52YWxpZFNlc3Npb25TdGF0ZShmbHV4KTtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGNvbnN0IGVycm9ycyA9IGVycm9yIGluc3RhbmNlb2YgQXBpRXJyb3IgPyBlcnJvci5lcnJvcnMgOiBbXTtcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnJztcblxuICAgIGlmKGVycm9ycy5pbmNsdWRlcygnaW52YWxpZF9zZXNzaW9uJykgfHwgZXJyb3JzLmluY2x1ZGVzKCdleHBpcmVkX3Nlc3Npb24nKSB8fCBtZXNzYWdlID09PSAnaW52YWxpZF9zZXNzaW9uJyB8fCBtZXNzYWdlID09PSAnZXhwaXJlZF9zZXNzaW9uJykge1xuICAgICAgYXdhaXQgY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlKGZsdXgpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVJlc3RFbmRwb2ludCA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgZW5kcG9pbnQ6IHN0cmluZ1xuKTogc3RyaW5nID0+IHtcbiAgY29uc3QgdGFyZ2V0RW5kcG9pbnQgPSBTdHJpbmcoZW5kcG9pbnQgfHwgJycpLnRyaW0oKTtcblxuICBpZihpc0VtcHR5KHRhcmdldEVuZHBvaW50KSkge1xuICAgIHRocm93IG5ldyBBcGlFcnJvcihbeyBtZXNzYWdlOiAnaW52YWxpZF91cmwnIH1dLCBuZXcgRXJyb3IoJ3Jlc3RfZW5kcG9pbnRfcmVxdWlyZWQnKSk7XG4gIH1cblxuICBpZigvXmh0dHBzPzpcXC9cXC8vaS50ZXN0KHRhcmdldEVuZHBvaW50KSB8fCB0YXJnZXRFbmRwb2ludC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICByZXR1cm4gdGFyZ2V0RW5kcG9pbnQ7XG4gIH1cblxuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgY29uZmlndXJlZEVuZHBvaW50ID0gY29uZmlnLmFwcD8uYXBpPy5lbmRwb2ludHM/Llt0YXJnZXRFbmRwb2ludF0gfHwgJyc7XG5cbiAgaWYoaXNFbXB0eShjb25maWd1cmVkRW5kcG9pbnQpKSB7XG4gICAgdGhyb3cgbmV3IEFwaUVycm9yKFt7IG1lc3NhZ2U6ICdpbnZhbGlkX3VybCcgfV0sIG5ldyBFcnJvcihgcmVzdF9lbmRwb2ludF9ub3RfY29uZmlndXJlZDoke3RhcmdldEVuZHBvaW50fWApKTtcbiAgfVxuXG4gIHJldHVybiBjb25maWd1cmVkRW5kcG9pbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzdFJlcXVlc3QgPSBhc3luYyA8VCA9IEFwaVJlc3VsdHNUeXBlPihcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgZW5kcG9pbnQ6IHN0cmluZyxcbiAgbWV0aG9kOiBSZXN0TWV0aG9kID0gJ0dFVCcsXG4gIHBhcmFtcz86IHVua25vd24sXG4gIG9wdGlvbnM6IFJlc3RBcGlPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCB7YXV0aGVudGljYXRlID0gZmFsc2UsIG9uU3VjY2VzcywgLi4uaHVudGVyT3B0aW9uc30gPSBvcHRpb25zO1xuICBjb25zdCB1cmwgPSByZXNvbHZlUmVzdEVuZHBvaW50KGZsdXgsIGVuZHBvaW50KTtcbiAgY29uc3QgcmVxdWVzdE1ldGhvZCA9IFN0cmluZyhtZXRob2QgfHwgJ0dFVCcpLnRvVXBwZXJDYXNlKCk7XG4gIGNvbnN0IHJldHJ5OiBSZXRyeVR5cGUgPSB7XG4gICAgcmVxdWVzdDoge21ldGhvZDogcmVxdWVzdE1ldGhvZCwgcGFyYW1zLCB1cmx9LFxuICAgIHJlc3BvbnNlTWV0aG9kOiBvblN1Y2Nlc3MgfHwgKCgpID0+IHt9KVxuICB9O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgbmV0d29ya1R5cGU6IHN0cmluZyA9IGZsdXguZ2V0U3RhdGUoJ2FwcC5uZXR3b3JrVHlwZScpIGFzIHN0cmluZztcblxuICAgIGlmKG5ldHdvcmtUeXBlID09PSAnbm9uZScpIHtcbiAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtyZXRyeSwgdHlwZTogQVBQX0NPTlNUQU5UUy5BUElfTkVUV09SS19FUlJPUn0pIGFzIFByb21pc2U8VD47XG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW4gPSBhdXRoZW50aWNhdGUgPyBhd2FpdCByZXNvbHZlQXV0aFRva2VuKGZsdXgpIDogaHVudGVyT3B0aW9ucy50b2tlbjtcbiAgICBjb25zdCByZXF1ZXN0T3B0aW9uczogSHVudGVyT3B0aW9uc1R5cGUgPSB7XG4gICAgICAuLi5odW50ZXJPcHRpb25zLFxuICAgICAgLi4uKHRva2VuID8ge3Rva2VufSA6IHt9KVxuICAgIH07XG4gICAgbGV0IGRhdGE6IFQ7XG5cbiAgICBzd2l0Y2gocmVxdWVzdE1ldGhvZCkge1xuICAgICAgY2FzZSAnREVMRVRFJzpcbiAgICAgICAgZGF0YSA9IGF3YWl0IGRlbCh1cmwsIHBhcmFtcywgcmVxdWVzdE9wdGlvbnMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnR0VUJzpcbiAgICAgICAgZGF0YSA9IGF3YWl0IGdldCh1cmwsIHBhcmFtcywgcmVxdWVzdE9wdGlvbnMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnUE9TVCc6XG4gICAgICAgIGRhdGEgPSBhd2FpdCBwb3N0KHVybCwgcGFyYW1zLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdQVVQnOlxuICAgICAgICBkYXRhID0gYXdhaXQgcHV0KHVybCwgcGFyYW1zLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBkYXRhID0gYXdhaXQgYWpheCh1cmwsIHJlcXVlc3RNZXRob2QsIHBhcmFtcywgcmVxdWVzdE9wdGlvbnMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX1NVQ0NFU1N9KTtcblxuICAgIHJldHVybiBvblN1Y2Nlc3MgPyBvblN1Y2Nlc3MoZGF0YSkgOiBkYXRhO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc3QgZXJyb3JzID0gZXJyb3IgaW5zdGFuY2VvZiBBcGlFcnJvciA/IGVycm9yLmVycm9ycyA6IFtdO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICcnO1xuXG4gICAgaWYoZXJyb3JzLmluY2x1ZGVzKCdpbnZhbGlkX3Nlc3Npb24nKSB8fCBlcnJvcnMuaW5jbHVkZXMoJ2V4cGlyZWRfc2Vzc2lvbicpIHx8IG1lc3NhZ2UgPT09ICdpbnZhbGlkX3Nlc3Npb24nIHx8IG1lc3NhZ2UgPT09ICdleHBpcmVkX3Nlc3Npb24nKSB7XG4gICAgICBhd2FpdCBjbGVhckludmFsaWRTZXNzaW9uU3RhdGUoZmx1eCk7XG4gICAgICByZXR1cm4ge30gYXMgVDtcbiAgICB9XG5cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVF1ZXJ5ID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICB2YXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzID0ge30sXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdID0gW10sXG4gIHR5cGUgPSAncXVlcnknXG4pID0+IHtcbiAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7Li4udmFyaWFibGVzIHx8IHt9fTtcbiAgY29uc3QgdmFyaWFibGVLZXlzID0gT2JqZWN0LmtleXMocXVlcnlWYXJpYWJsZXMpO1xuICBjb25zdCBxdWVyeU5hbWUgPSBuYW1lLnJlcGxhY2UoLyAvZywgJycpO1xuICBsZXQgcXVlcnk6IHN0cmluZztcblxuICBpZih0eXBlID09PSAnbXV0YXRpb24nKSB7XG4gICAgY29uc3QgbXV0YXRpb25OYW1lID0gdXBwZXJGaXJzdChjYW1lbENhc2UoZGF0YVR5cGUpKSArIHVwcGVyRmlyc3QoY2FtZWxDYXNlKHF1ZXJ5TmFtZSkpO1xuICAgIHF1ZXJ5ID0gYCR7dHlwZX0gJHttdXRhdGlvbk5hbWV9JHtcbiAgICAgIHZhcmlhYmxlS2V5cy5sZW5ndGhcbiAgICAgICAgPyBgKCR7dmFyaWFibGVLZXlzLm1hcCgoa2V5KSA9PiBgJCR7a2V5fTogJHtxdWVyeVZhcmlhYmxlc1trZXldLnR5cGV9YCkuam9pbignLCAnKX0pYFxuICAgICAgICA6ICcnXG4gICAgfSB7XG4gICAgICAke2RhdGFUeXBlfSB7XG4gICAgICAgICR7Y2FtZWxDYXNlKHF1ZXJ5TmFtZSl9JHtcbiAgICAgICAgICB2YXJpYWJsZUtleXMubGVuZ3RoXG4gICAgICAgICAgICA/IGAoJHt2YXJpYWJsZUtleXMubWFwKChrZXkpID0+IGAke2tleX06ICQke2tleX1gKS5qb2luKCcsICcpfSlgXG4gICAgICAgICAgICA6ICcnXG4gICAgICAgIH1cbiAgICAgICAgJHtyZXR1cm5Qcm9wZXJ0aWVzPy5sZW5ndGggPyBgeyR7cmV0dXJuUHJvcGVydGllcy5qb2luKCcsICcpfX1gIDogJyd9XG4gICAgICB9XG4gICAgfWA7XG4gIH0gZWxzZSB7XG4gICAgcXVlcnkgPSBgJHt0eXBlfSAke3F1ZXJ5TmFtZX0ke1xuICAgICAgdmFyaWFibGVLZXlzLmxlbmd0aFxuICAgICAgICA/IGAoJHt2YXJpYWJsZUtleXMubWFwKChrZXkpID0+IGAkJHtrZXl9OiAke3F1ZXJ5VmFyaWFibGVzW2tleV0udHlwZX1gKS5qb2luKCcsICcpfSlgXG4gICAgICAgIDogJydcbiAgICB9IHtcbiAgICAgICR7ZGF0YVR5cGV9IHtcbiAgICAgICAgJHtjYW1lbENhc2UocXVlcnlOYW1lKX0ke1xuICAgICAgICAgIHZhcmlhYmxlS2V5cy5sZW5ndGhcbiAgICAgICAgICAgID8gYCgke3ZhcmlhYmxlS2V5cy5tYXAoKGtleSkgPT4gYCR7a2V5fTogJCR7a2V5fWApLmpvaW4oJywgJyl9KWBcbiAgICAgICAgICAgIDogJydcbiAgICAgICAgfVxuICAgICAgICAke3JldHVyblByb3BlcnRpZXM/Lmxlbmd0aCA/IGB7JHtyZXR1cm5Qcm9wZXJ0aWVzLmpvaW4oJywgJyl9fWAgOiAnJ31cbiAgICAgIH1cbiAgICB9YDtcbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWRWYXJpYWJsZXMgPSB2YXJpYWJsZUtleXMucmVkdWNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigocXVlcnlEYXRhLCBrZXkpID0+IHtcbiAgICBxdWVyeURhdGFba2V5XSA9IHF1ZXJ5VmFyaWFibGVzW2tleV0udmFsdWU7XG4gICAgcmV0dXJuIHF1ZXJ5RGF0YTtcbiAgfSwge30pO1xuXG4gIHJldHVybiB7cXVlcnksIHZhcmlhYmxlczogdXBkYXRlZFZhcmlhYmxlc307XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTXV0YXRpb24gPSAoXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMgPSB7fSxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10gPSBbXVxuKSA9PiBjcmVhdGVRdWVyeShuYW1lLCBkYXRhVHlwZSwgdmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzLCAnbXV0YXRpb24nKTtcblxuZXhwb3J0IGNvbnN0IGFwcFF1ZXJ5ID0gPFQ+KFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICBxdWVyeVZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMsXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBBcGlPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCBxdWVyeSA9IGNyZWF0ZVF1ZXJ5KG5hbWUsIGRhdGFUeXBlLCBxdWVyeVZhcmlhYmxlcywgcmV0dXJuUHJvcGVydGllcyk7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBhcHBVcmw6IHN0cmluZyA9IGNvbmZpZy5hcHA/LmFwaT8udXJsIHx8ICcnO1xuICByZXR1cm4gZ2V0R3JhcGhxbChmbHV4LCBhcHBVcmwsIHRydWUsIHF1ZXJ5LCBvcHRpb25zKSBhcyBQcm9taXNlPFQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IGFwcE11dGF0aW9uID0gPFQ+KFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICBxdWVyeVZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMsXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBBcGlPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCBxdWVyeSA9IGNyZWF0ZU11dGF0aW9uKG5hbWUsIGRhdGFUeXBlLCBxdWVyeVZhcmlhYmxlcywgcmV0dXJuUHJvcGVydGllcyk7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBhcHBVcmw6IHN0cmluZyA9IGNvbmZpZy5hcHA/LmFwaT8udXJsIHx8ICcnO1xuICByZXR1cm4gZ2V0R3JhcGhxbChmbHV4LCBhcHBVcmwsIHRydWUsIHF1ZXJ5LCBvcHRpb25zKSBhcyBQcm9taXNlPFQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IHB1YmxpY1F1ZXJ5ID0gPFQ+KFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICBxdWVyeVZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMsXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBBcGlPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCBxdWVyeSA9IGNyZWF0ZVF1ZXJ5KG5hbWUsIGRhdGFUeXBlLCBxdWVyeVZhcmlhYmxlcywgcmV0dXJuUHJvcGVydGllcyk7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBwdWJsaWNVcmw6IHN0cmluZyA9IGNvbmZpZy5hcHA/LmFwaT8ucHVibGljIHx8ICcnO1xuICByZXR1cm4gZ2V0R3JhcGhxbChmbHV4LCBwdWJsaWNVcmwsIGZhbHNlLCBxdWVyeSwgb3B0aW9ucykgYXMgUHJvbWlzZTxUPjtcbn07XG5cbmV4cG9ydCBjb25zdCBwdWJsaWNNdXRhdGlvbiA9IDxUPihcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgcXVlcnlWYXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzLFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgcXVlcnkgPSBjcmVhdGVNdXRhdGlvbihuYW1lLCBkYXRhVHlwZSwgcXVlcnlWYXJpYWJsZXMsIHJldHVyblByb3BlcnRpZXMpO1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgcHVibGljVXJsOiBzdHJpbmcgPSBjb25maWcuYXBwPy5hcGk/LnB1YmxpYyB8fCAnJztcbiAgcmV0dXJuIGdldEdyYXBocWwoZmx1eCwgcHVibGljVXJsLCBmYWxzZSwgcXVlcnksIG9wdGlvbnMpIGFzIFByb21pc2U8VD47XG59O1xuXG5leHBvcnQgY29uc3QgcnVtTXV0YXRpb24gPSA8VD4oXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHF1ZXJ5VmFyaWFibGVzOiBBcGlRdWVyeVZhcmlhYmxlcyxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IEFwaU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHF1ZXJ5ID0gY3JlYXRlTXV0YXRpb24obmFtZSwgZGF0YVR5cGUsIHF1ZXJ5VmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzKTtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IHJ1bVVybDogc3RyaW5nID0gY29uZmlnLmFwcD8uYXBpPy5ydW0gfHwgY29uZmlnLmFwcD8uYXBpPy5wdWJsaWMgfHwgJyc7XG4gIHJldHVybiBnZXRHcmFwaHFsKGZsdXgsIHJ1bVVybCwgZmFsc2UsIHF1ZXJ5LCBvcHRpb25zKSBhcyBQcm9taXNlPFQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IHJ1bVJlcXVlc3QgPSA8VD4oXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIGJhdGNoOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgb3B0aW9uczogUmVzdEFwaU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBydW1Vcmw6IHN0cmluZyA9IGNvbmZpZy5hcHA/LmFwaT8uZW5kcG9pbnRzPy5ydW0gfHwgY29uZmlnLmFwcD8uYXBpPy5ydW0gfHwgJyc7XG5cbiAgcmV0dXJuIHJlc3RSZXF1ZXN0PFQ+KGZsdXgsIHJ1bVVybCwgJ1BPU1QnLCBiYXRjaCwgey4uLm9wdGlvbnMsIGF1dGhlbnRpY2F0ZTogZmFsc2V9KTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRJbWFnZSA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgaW1hZ2U6IEZvcm1EYXRhIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIG9wdGlvbnM6IEh1bnRlck9wdGlvbnNUeXBlID0ge31cbik6IFByb21pc2U8QXBpUmVzdWx0c1R5cGU+ID0+IHtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IHVwbG9hZEltYWdlVXJsOiBzdHJpbmcgPSBjb25maWcuYXBwPy5hcGk/LnVwbG9hZEltYWdlIHx8ICcnO1xuICBjb25zdCB0b2tlbiA9IGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbi50b2tlbicpO1xuXG4gIGlmKGlzRW1wdHkodXBsb2FkSW1hZ2VVcmwpKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBBcGlFcnJvcihbeyBtZXNzYWdlOiAnaW52YWxpZF91cmwnIH1dLCBuZXcgRXJyb3IoJ3VwbG9hZF9lbmRwb2ludF9ub3RfY29uZmlndXJlZCcpKSk7XG4gIH1cblxuICBpZihpc0VtcHR5KHRva2VuKSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQXBpRXJyb3IoW3sgbWVzc2FnZTogJ2ludmFsaWRfc2Vzc2lvbicgfV0sIG5ldyBFcnJvcignbWlzc2luZ19hdXRoX3Rva2VuJykpKTtcbiAgfVxuXG4gIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycygpO1xuICBoZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsIGBCZWFyZXIgJHt0b2tlbn1gKTtcblxuICBpZih0eXBlb2YgRm9ybURhdGEgIT09ICd1bmRlZmluZWQnICYmIGltYWdlIGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICBoZWFkZXJzLnNldCgnQWNjZXB0JywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcblxuICAgIHJldHVybiBmZXRjaCh1cGxvYWRJbWFnZVVybCwge1xuICAgICAgYm9keTogaW1hZ2UsXG4gICAgICBoZWFkZXJzLFxuICAgICAgbWV0aG9kOiAnUE9TVCdcbiAgICB9KS50aGVuKGFzeW5jIChyZXNwb25zZSkgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2VUeXBlID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpIHx8ICcnO1xuICAgICAgY29uc3QgZGF0YSA9IHJlc3BvbnNlVHlwZS5pbmNsdWRlcygnYXBwbGljYXRpb24vanNvbicpXG4gICAgICAgID8gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgIDogYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuXG4gICAgICBpZighcmVzcG9uc2Uub2spIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiBkYXRhICYmICdlcnJvcicgaW4gZGF0YVxuICAgICAgICAgID8gU3RyaW5nKChkYXRhIGFzIHtlcnJvcj86IHN0cmluZ30pLmVycm9yIHx8IHJlc3BvbnNlLnN0YXR1c1RleHQpXG4gICAgICAgICAgOiBTdHJpbmcoZGF0YSB8fCByZXNwb25zZS5zdGF0dXNUZXh0KTtcbiAgICAgICAgdGhyb3cgbmV3IEFwaUVycm9yKFt7IG1lc3NhZ2U6ICd1cGxvYWRfZXJyb3InIH1dLCBuZXcgRXJyb3IobWVzc2FnZSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGF0YSBhcyBBcGlSZXN1bHRzVHlwZTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBwb3N0KHVwbG9hZEltYWdlVXJsLCBpbWFnZSwge2hlYWRlcnMsIC4uLm9wdGlvbnN9KTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoU2Vzc2lvbiA9IGFzeW5jIChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgdG9rZW4/OiBzdHJpbmcsXG4gIGV4cGlyZXM/OiBudW1iZXJcbik6IFByb21pc2U8Rmx1eEFjdGlvbiB8IG51bGw+ID0+IHtcbiAgY29uc3QgcmVmcmVzaFRva2VuID0gaXNFbXB0eSh0b2tlbikgPyBmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24udG9rZW4nKSA6IHRva2VuO1xuXG4gIGlmKGlzRW1wdHkocmVmcmVzaFRva2VuKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgdG9rZW5FeHBpcmVzQXQgPSBwYXJzZUp3dEV4cGlyeU1zKFN0cmluZyhyZWZyZXNoVG9rZW4pKTtcblxuICBpZih0b2tlbkV4cGlyZXNBdCA+IDAgJiYgRGF0ZS5ub3coKSA+PSB0b2tlbkV4cGlyZXNBdCkge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdleHBpcmVkX3Nlc3Npb24nKTtcbiAgICBhd2FpdCBjbGVhckludmFsaWRTZXNzaW9uU3RhdGUoZmx1eCk7XG4gICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFVTRVJfQ09OU1RBTlRTLkdFVF9TRVNTSU9OX0VSUk9SfSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICAgIGNvbnN0IHJlcXVlc3RlZEV4cGlyZXMgPSBNYXRoLm1heChcbiAgICAgIDEsXG4gICAgICBOdW1iZXIoZXhwaXJlcyB8fCBjb25maWcuYXBwPy5zZXNzaW9uPy5tYXhNaW51dGVzIHx8IERFRkFVTFRfU0VTU0lPTl9NQVhfTUlOVVRFUylcbiAgICApO1xuICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgZXhwaXJlczoge1xuICAgICAgICB0eXBlOiAnSW50JyxcbiAgICAgICAgdmFsdWU6IHJlcXVlc3RlZEV4cGlyZXNcbiAgICAgIH0sXG4gICAgICB0b2tlbjoge1xuICAgICAgICB0eXBlOiAnU3RyaW5nIScsXG4gICAgICAgIHZhbHVlOiByZWZyZXNoVG9rZW5cbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG9uU3VjY2VzcyA9IGFzeW5jIChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KTogUHJvbWlzZTxGbHV4QWN0aW9uPiA9PiB7XG4gICAgICBjb25zdCByYXdTZXNzaW9uRGF0YSA9IChkYXRhIGFzIHt1c2Vycz86IHtyZWZyZXNoU2Vzc2lvbj86IFJlY29yZDxzdHJpbmcsIHVua25vd24+fX0pPy51c2Vycz8ucmVmcmVzaFNlc3Npb247XG4gICAgICBjb25zdCBzZXNzaW9uRGF0YSA9IHJhd1Nlc3Npb25EYXRhICYmIHR5cGVvZiByYXdTZXNzaW9uRGF0YSA9PT0gJ29iamVjdCdcbiAgICAgICAgPyByYXdTZXNzaW9uRGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICA6IHt9O1xuICAgICAgY29uc3QgY3VycmVudFNlc3Npb24gPSAoZmx1eC5nZXRTdGF0ZSgndXNlci5zZXNzaW9uJywge30pIHx8IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgIGNvbnN0IG1lcmdlZFNlc3Npb24gPSBhd2FpdCBzdG9yZVNlc3Npb24oZmx1eCwgey4uLmN1cnJlbnRTZXNzaW9uLCAuLi5zZXNzaW9uRGF0YX0pO1xuICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe3Nlc3Npb246IG1lcmdlZFNlc3Npb24sIHR5cGU6IFVTRVJfQ09OU1RBTlRTLlVQREFURV9TRVNTSU9OX1NVQ0NFU1N9KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGF3YWl0IHB1YmxpY011dGF0aW9uKGZsdXgsICdyZWZyZXNoU2Vzc2lvbicsICd1c2VycycsIHF1ZXJ5VmFyaWFibGVzLCBbJ2V4cGlyZXMnLCAnaXNzdWVkJywgJ3Rva2VuJ10sIHtcbiAgICAgIG9uU3VjY2Vzc1xuICAgIH0pO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnJztcblxuICAgIGlmKGVycm9yTWVzc2FnZSA9PT0gJ2ludmFsaWRfc2Vzc2lvbicgfHwgZXJyb3JNZXNzYWdlID09PSAnZXhwaXJlZF9zZXNzaW9uJykge1xuICAgICAgYXdhaXQgY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlKGZsdXgpO1xuICAgIH1cblxuICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5HRVRfU0VTU0lPTl9FUlJPUn0pO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuIl0sIm5hbWVzIjpbIkFwaUVycm9yIiwiYWpheCIsImRlbCIsImdldCIsImdyYXBocWxRdWVyeSIsInBvc3QiLCJwdXQiLCJjYW1lbENhc2UiLCJpc0VtcHR5IiwidXBwZXJGaXJzdCIsIkFQUF9DT05TVEFOVFMiLCJVU0VSX0NPTlNUQU5UUyIsImdldENvbmZpZ0Zyb21GbHV4IiwiY2xlYXJQZXJzaXN0ZWRTZXNzaW9uIiwiZ2V0UmVmcmVzaFdpbmRvd01pbnV0ZXMiLCJoeWRyYXRlU2Vzc2lvbkZyb21TdG9yYWdlIiwicGFyc2VKd3RFeHBpcnlNcyIsInN0b3JlU2Vzc2lvbiIsIkRFRkFVTFRfUkVGUkVTSF9XSU5ET1dfTUlOVVRFUyIsIkRFRkFVTFRfU0VTU0lPTl9NQVhfTUlOVVRFUyIsImdldE1pbnV0ZXNVbnRpbCIsImV4cGlyZXNBdCIsIk1hdGgiLCJyb3VuZCIsIkRhdGUiLCJub3ciLCJjbGVhckludmFsaWRTZXNzaW9uU3RhdGUiLCJmbHV4IiwiY2xlYXJBcHBEYXRhIiwiZGlzcGF0Y2giLCJzZXNzaW9uIiwidHlwZSIsIlNJR05fT1VUX1NVQ0NFU1MiLCJyZXNvbHZlQXV0aFRva2VuIiwic3RhdGVTZXNzaW9uIiwiZ2V0U3RhdGUiLCJoeWRyYXRlZFNlc3Npb24iLCJ0b2tlbiIsImV4cGlyZXMiLCJhdXRoRXhwaXJlcyIsImlzc3VlZCIsImF1dGhJc3N1ZWQiLCJoeWRyYXRlZFRva2VuIiwibWVzc2FnZSIsIkVycm9yIiwidG9rZW5FeHBpcmVzQXQiLCJjb25maWciLCJtaW51dGVzVW50aWxFeHBpcnkiLCJOdW1iZXIiLCJzZXNzaW9uTGlmZXRpbWVNaW51dGVzIiwicmVmcmVzaFdpbmRvd01pbnV0ZXMiLCJhcHAiLCJyZWZyZXNoRXhwaXJlc01pbnV0ZXMiLCJtYXgiLCJtYXhNaW51dGVzIiwidXBkYXRlZFNlc3Npb24iLCJyZWZyZXNoU2Vzc2lvbiIsIm5ld1Rva2VuIiwiZ2V0R3JhcGhxbCIsInVybCIsImF1dGhlbnRpY2F0ZSIsInF1ZXJ5Iiwib3B0aW9ucyIsIm9uU3VjY2VzcyIsInJldHJ5IiwicmVzcG9uc2VNZXRob2QiLCJuZXR3b3JrVHlwZSIsIkFQSV9ORVRXT1JLX0VSUk9SIiwidGhlbiIsInJlc3VsdHMiLCJBUElfTkVUV09SS19TVUNDRVNTIiwiZGF0YSIsImNhdGNoIiwiZXJyb3IiLCJlcnJvcnMiLCJpbmNsdWRlcyIsIlByb21pc2UiLCJyZWplY3QiLCJyZXNvbHZlIiwicmVzb2x2ZVJlc3RFbmRwb2ludCIsImVuZHBvaW50IiwidGFyZ2V0RW5kcG9pbnQiLCJTdHJpbmciLCJ0cmltIiwidGVzdCIsInN0YXJ0c1dpdGgiLCJjb25maWd1cmVkRW5kcG9pbnQiLCJhcGkiLCJlbmRwb2ludHMiLCJyZXN0UmVxdWVzdCIsIm1ldGhvZCIsInBhcmFtcyIsImh1bnRlck9wdGlvbnMiLCJyZXF1ZXN0TWV0aG9kIiwidG9VcHBlckNhc2UiLCJyZXF1ZXN0IiwicmVxdWVzdE9wdGlvbnMiLCJjcmVhdGVRdWVyeSIsIm5hbWUiLCJkYXRhVHlwZSIsInZhcmlhYmxlcyIsInJldHVyblByb3BlcnRpZXMiLCJxdWVyeVZhcmlhYmxlcyIsInZhcmlhYmxlS2V5cyIsIk9iamVjdCIsImtleXMiLCJxdWVyeU5hbWUiLCJyZXBsYWNlIiwibXV0YXRpb25OYW1lIiwibGVuZ3RoIiwibWFwIiwia2V5Iiwiam9pbiIsInVwZGF0ZWRWYXJpYWJsZXMiLCJyZWR1Y2UiLCJxdWVyeURhdGEiLCJ2YWx1ZSIsImNyZWF0ZU11dGF0aW9uIiwiYXBwUXVlcnkiLCJhcHBVcmwiLCJhcHBNdXRhdGlvbiIsInB1YmxpY1F1ZXJ5IiwicHVibGljVXJsIiwicHVibGljIiwicHVibGljTXV0YXRpb24iLCJydW1NdXRhdGlvbiIsInJ1bVVybCIsInJ1bSIsInJ1bVJlcXVlc3QiLCJiYXRjaCIsInVwbG9hZEltYWdlIiwiaW1hZ2UiLCJ1cGxvYWRJbWFnZVVybCIsImhlYWRlcnMiLCJIZWFkZXJzIiwic2V0IiwiRm9ybURhdGEiLCJmZXRjaCIsImJvZHkiLCJyZXNwb25zZSIsInJlc3BvbnNlVHlwZSIsImpzb24iLCJ0ZXh0Iiwib2siLCJzdGF0dXNUZXh0IiwicmVmcmVzaFRva2VuIiwiR0VUX1NFU1NJT05fRVJST1IiLCJyZXF1ZXN0ZWRFeHBpcmVzIiwicmF3U2Vzc2lvbkRhdGEiLCJ1c2VycyIsInNlc3Npb25EYXRhIiwiY3VycmVudFNlc3Npb24iLCJtZXJnZWRTZXNzaW9uIiwiVVBEQVRFX1NFU1NJT05fU1VDQ0VTUyIsImVycm9yTWVzc2FnZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsUUFBUSxFQUFFQyxJQUFJLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxZQUFZLEVBQUVDLElBQUksRUFBRUMsR0FBRyxRQUFPLG9CQUFvQjtBQUNwRixTQUFRQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsVUFBVSxRQUFPLGVBQWU7QUFFNUQsU0FBUUMsYUFBYSxRQUFPLHdCQUF3QjtBQUNwRCxTQUFRQyxjQUFjLFFBQU8seUJBQXlCO0FBQ3RELFNBQVFDLGlCQUFpQixRQUFPLG1CQUFtQjtBQUNuRCxTQUFRQyxxQkFBcUIsRUFBRUMsdUJBQXVCLEVBQUVDLHlCQUF5QixFQUFFQyxnQkFBZ0IsRUFBRUMsWUFBWSxRQUFPLGVBQWU7QUF5RXZJLE1BQU1DLGlDQUFpQztBQUN2QyxNQUFNQyw4QkFB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
@@ -4,4 +4,3 @@ export interface ColumnSize {
4
4
  }
5
5
  export declare const getColumnSize: (width: number, maxItemWidth: number, containerPadding?: number) => ColumnSize;
6
6
  export declare const isExpired: (expires: number, limitInMin: number) => boolean;
7
- //# sourceMappingURL=app.d.ts.map
@@ -8,9 +8,8 @@ export declare const createBaseActions: <T extends BaseAdapterOptions>(flux: Flu
8
8
  createMutationAction: <R = any>(mutationName: string, dataType: string, queryVariables: Record<string, any>, props: string[], successType: string, errorType: string, mutationFn: any) => (input?: unknown) => Promise<R>;
9
9
  createQueryAction: <R = any>(queryName: string, dataType: string, queryVariables: Record<string, any>, props: string[], successType: string, errorType: string, queryFn: any) => () => Promise<R>;
10
10
  flux: FluxFramework;
11
- updateAdapter: (adapter: (input: unknown, options?: T | undefined) => any) => void;
11
+ updateAdapter: (adapter: (input: unknown, options?: T) => any) => void;
12
12
  updateOptions: (options: T) => void;
13
13
  updateAdapterOptions: (options: T) => void;
14
- validator: (input: unknown, validatorOptions?: T | undefined) => any;
14
+ validator: (input: unknown, validatorOptions?: T) => any;
15
15
  };
16
- //# sourceMappingURL=baseActionFactory.d.ts.map
@@ -8,4 +8,3 @@ import type { MetropolisEnvironmentConfiguration } from '../config/index.js';
8
8
  * @returns The resolved environment configuration
9
9
  */
10
10
  export declare const getConfigFromFlux: (flux: FluxFramework) => MetropolisEnvironmentConfiguration;
11
- //# sourceMappingURL=configUtils.d.ts.map
@@ -1,3 +1,2 @@
1
1
  import { DateTime } from 'luxon';
2
2
  export declare const parseDateTime: (value: string | number | DateTime) => number;
3
- //# sourceMappingURL=dateUtils.d.ts.map
@@ -1,3 +1,2 @@
1
1
  export declare const convertFileToUploadFile: (file: File, maxSize: number, maxBytes?: number) => Promise<File>;
2
2
  export declare const convertFileToBase64: (file: File, maxSize: number, maxBytes?: number) => Promise<string>;
3
- //# sourceMappingURL=file.d.ts.map
@@ -4,4 +4,3 @@ export declare const buildSimpleI18nResources: (translations: SimpleTranslations
4
4
  export declare const initI18n: (translations: SimpleTranslations | ComplexTranslations) => void;
5
5
  export declare const updateI18nResources: (translations: ComplexTranslations) => void;
6
6
  export declare const i18n: (key: string, params?: Record<string, any>, lng?: string, ns?: string) => string;
7
- //# sourceMappingURL=i18n.d.ts.map
@@ -2,11 +2,11 @@
2
2
  * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */
5
- export { appMutation, appQuery, getGraphql, publicMutation, publicQuery, rumMutation, refreshSession, resolveRestEndpoint, restRequest, uploadImage, type ApiResultsType, type ReaktorDbCollection, type RestApiOptions, type RestMethod, type SessionType } from './api.js';
5
+ export { appMutation, appQuery, getGraphql, publicMutation, publicQuery, rumMutation, rumRequest, refreshSession, resolveRestEndpoint, restRequest, uploadImage, type ApiResultsType, type ReaktorDbCollection, type RestApiOptions, type RestMethod, type SessionType } from './api.js';
6
6
  export { createAction, createActions, createAllActions, type ActionOptions, type ActionReturnType, type ActionType, type ActionTypes } from './actionFactory.js';
7
7
  export { createBaseActions, type BaseActionOptions } from './baseActionFactory.js';
8
8
  export { createValidatorFactory, createValidatorManager, type BaseAdapterOptions } from './validatorFactory.js';
9
- export { MetropolisContext, MetropolisProvider } from './MetropolisProvider.js';
9
+ export { MetropolisContext } from './MetropolisContext.js';
10
10
  export { PermissionGuard, PermissionLevel, usePermissions, type Permission, type PermissionGuardProps, type UsePermissionsReturn } from './permissionUtils.js';
11
11
  export { useContentActions, useAwsRum, useCrmActions, useEventActions, useGroupActions, useImageActions, useLocationActions, useMessageActions, useMetropolis, useMetropolisConfig, useMetropolisFlux, usePermissionActions, usePersonaActions, usePostActions, useReactionActions, useRestActions, useTagActions, useTranslationActions, useUserActions, useVideoActions, useWebsocketActions } from './useMetropolis.js';
12
12
  export { useConversationTyping, type ConversationTypingOptions, type UseConversationTypingOptions } from './useConversationTyping.js';
@@ -17,4 +17,3 @@ export * from './file.js';
17
17
  export * from './i18n.js';
18
18
  export * from './location.js';
19
19
  export * from './session.js';
20
- //# sourceMappingURL=index.d.ts.map
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */ // Export API utilities
5
- export { appMutation, appQuery, getGraphql, publicMutation, publicQuery, rumMutation, refreshSession, resolveRestEndpoint, restRequest, uploadImage } from './api.js';
5
+ export { appMutation, appQuery, getGraphql, publicMutation, publicQuery, rumMutation, rumRequest, refreshSession, resolveRestEndpoint, restRequest, uploadImage } from './api.js';
6
6
  // Export action factory
7
7
  export { createAction, createActions, createAllActions } from './actionFactory.js';
8
8
  // Export base action factory
@@ -10,7 +10,7 @@ export { createBaseActions } from './baseActionFactory.js';
10
10
  // Export validator factory
11
11
  export { createValidatorFactory, createValidatorManager } from './validatorFactory.js';
12
12
  // Export React hooks
13
- export { MetropolisContext, MetropolisProvider } from './MetropolisProvider.js';
13
+ export { MetropolisContext } from './MetropolisContext.js';
14
14
  export { PermissionGuard, PermissionLevel, usePermissions } from './permissionUtils.js';
15
15
  export { useContentActions, useAwsRum, useCrmActions, useEventActions, useGroupActions, useImageActions, useLocationActions, useMessageActions, useMetropolis, useMetropolisConfig, useMetropolisFlux, usePermissionActions, usePersonaActions, usePostActions, useReactionActions, useRestActions, useTagActions, useTranslationActions, useUserActions, useVideoActions, useWebsocketActions } from './useMetropolis.js';
16
16
  export { useConversationTyping } from './useConversationTyping.js';
@@ -23,4 +23,4 @@ export * from './i18n.js';
23
23
  export * from './location.js';
24
24
  export * from './session.js';
25
25
 
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuLy8gRXhwb3J0IEFQSSB1dGlsaXRpZXNcbmV4cG9ydCB7XG4gIGFwcE11dGF0aW9uLFxuICBhcHBRdWVyeSxcbiAgZ2V0R3JhcGhxbCxcbiAgcHVibGljTXV0YXRpb24sXG4gIHB1YmxpY1F1ZXJ5LFxuICBydW1NdXRhdGlvbixcbiAgcmVmcmVzaFNlc3Npb24sXG4gIHJlc29sdmVSZXN0RW5kcG9pbnQsXG4gIHJlc3RSZXF1ZXN0LFxuICB1cGxvYWRJbWFnZSxcbiAgdHlwZSBBcGlSZXN1bHRzVHlwZSxcbiAgdHlwZSBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICB0eXBlIFJlc3RBcGlPcHRpb25zLFxuICB0eXBlIFJlc3RNZXRob2QsXG4gIHR5cGUgU2Vzc2lvblR5cGVcbn0gZnJvbSAnLi9hcGkuanMnO1xuXG4vLyBFeHBvcnQgYWN0aW9uIGZhY3RvcnlcbmV4cG9ydCB7XG4gIGNyZWF0ZUFjdGlvbixcbiAgY3JlYXRlQWN0aW9ucyxcbiAgY3JlYXRlQWxsQWN0aW9ucyxcbiAgdHlwZSBBY3Rpb25PcHRpb25zLFxuICB0eXBlIEFjdGlvblJldHVyblR5cGUsXG4gIHR5cGUgQWN0aW9uVHlwZSxcbiAgdHlwZSBBY3Rpb25UeXBlc1xufSBmcm9tICcuL2FjdGlvbkZhY3RvcnkuanMnO1xuXG4vLyBFeHBvcnQgYmFzZSBhY3Rpb24gZmFjdG9yeVxuZXhwb3J0IHtcbiAgY3JlYXRlQmFzZUFjdGlvbnMsXG4gIHR5cGUgQmFzZUFjdGlvbk9wdGlvbnNcbn0gZnJvbSAnLi9iYXNlQWN0aW9uRmFjdG9yeS5qcyc7XG5cbi8vIEV4cG9ydCB2YWxpZGF0b3IgZmFjdG9yeVxuZXhwb3J0IHtcbiAgY3JlYXRlVmFsaWRhdG9yRmFjdG9yeSxcbiAgY3JlYXRlVmFsaWRhdG9yTWFuYWdlcixcbiAgdHlwZSBCYXNlQWRhcHRlck9wdGlvbnNcbn0gZnJvbSAnLi92YWxpZGF0b3JGYWN0b3J5LmpzJztcblxuLy8gRXhwb3J0IFJlYWN0IGhvb2tzXG5leHBvcnQge01ldHJvcG9saXNDb250ZXh0LCBNZXRyb3BvbGlzUHJvdmlkZXJ9IGZyb20gJy4vTWV0cm9wb2xpc1Byb3ZpZGVyLmpzJztcbmV4cG9ydCB7XG4gIFBlcm1pc3Npb25HdWFyZCxcbiAgUGVybWlzc2lvbkxldmVsLFxuICB1c2VQZXJtaXNzaW9ucyxcbiAgdHlwZSBQZXJtaXNzaW9uLFxuICB0eXBlIFBlcm1pc3Npb25HdWFyZFByb3BzLFxuICB0eXBlIFVzZVBlcm1pc3Npb25zUmV0dXJuXG59IGZyb20gJy4vcGVybWlzc2lvblV0aWxzLmpzJztcbmV4cG9ydCB7XG4gIHVzZUNvbnRlbnRBY3Rpb25zLFxuICB1c2VBd3NSdW0sXG4gIHVzZUNybUFjdGlvbnMsXG4gIHVzZUV2ZW50QWN0aW9ucyxcbiAgdXNlR3JvdXBBY3Rpb25zLFxuICB1c2VJbWFnZUFjdGlvbnMsXG4gIHVzZUxvY2F0aW9uQWN0aW9ucyxcbiAgdXNlTWVzc2FnZUFjdGlvbnMsXG4gIHVzZU1ldHJvcG9saXMsXG4gIHVzZU1ldHJvcG9saXNDb25maWcsXG4gIHVzZU1ldHJvcG9saXNGbHV4LFxuICB1c2VQZXJtaXNzaW9uQWN0aW9ucyxcbiAgdXNlUGVyc29uYUFjdGlvbnMsXG4gIHVzZVBvc3RBY3Rpb25zLFxuICB1c2VSZWFjdGlvbkFjdGlvbnMsXG4gIHVzZVJlc3RBY3Rpb25zLFxuICB1c2VUYWdBY3Rpb25zLFxuICB1c2VUcmFuc2xhdGlvbkFjdGlvbnMsXG4gIHVzZVVzZXJBY3Rpb25zLFxuICB1c2VWaWRlb0FjdGlvbnMsXG4gIHVzZVdlYnNvY2tldEFjdGlvbnNcbn0gZnJvbSAnLi91c2VNZXRyb3BvbGlzLmpzJztcbmV4cG9ydCB7dXNlQ29udmVyc2F0aW9uVHlwaW5nLCB0eXBlIENvbnZlcnNhdGlvblR5cGluZ09wdGlvbnMsIHR5cGUgVXNlQ29udmVyc2F0aW9uVHlwaW5nT3B0aW9uc30gZnJvbSAnLi91c2VDb252ZXJzYXRpb25UeXBpbmcuanMnO1xuZXhwb3J0IHt1c2VUcmFuc2xhdGlvbnN9IGZyb20gJy4vdXNlVHJhbnNsYXRpb25zLmpzJztcblxuLy8gRXhwb3J0IHV0aWxpdHkgZnVuY3Rpb25zXG5leHBvcnQgKiBmcm9tICcuL2FwcC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGVVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9pMThuLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYXRpb24uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXNzaW9uLmpzJztcbiJdLCJuYW1lcyI6WyJhcHBNdXRhdGlvbiIsImFwcFF1ZXJ5IiwiZ2V0R3JhcGhxbCIsInB1YmxpY011dGF0aW9uIiwicHVibGljUXVlcnkiLCJydW1NdXRhdGlvbiIsInJlZnJlc2hTZXNzaW9uIiwicmVzb2x2ZVJlc3RFbmRwb2ludCIsInJlc3RSZXF1ZXN0IiwidXBsb2FkSW1hZ2UiLCJjcmVhdGVBY3Rpb24iLCJjcmVhdGVBY3Rpb25zIiwiY3JlYXRlQWxsQWN0aW9ucyIsImNyZWF0ZUJhc2VBY3Rpb25zIiwiY3JlYXRlVmFsaWRhdG9yRmFjdG9yeSIsImNyZWF0ZVZhbGlkYXRvck1hbmFnZXIiLCJNZXRyb3BvbGlzQ29udGV4dCIsIk1ldHJvcG9saXNQcm92aWRlciIsIlBlcm1pc3Npb25HdWFyZCIsIlBlcm1pc3Npb25MZXZlbCIsInVzZVBlcm1pc3Npb25zIiwidXNlQ29udGVudEFjdGlvbnMiLCJ1c2VBd3NSdW0iLCJ1c2VDcm1BY3Rpb25zIiwidXNlRXZlbnRBY3Rpb25zIiwidXNlR3JvdXBBY3Rpb25zIiwidXNlSW1hZ2VBY3Rpb25zIiwidXNlTG9jYXRpb25BY3Rpb25zIiwidXNlTWVzc2FnZUFjdGlvbnMiLCJ1c2VNZXRyb3BvbGlzIiwidXNlTWV0cm9wb2xpc0NvbmZpZyIsInVzZU1ldHJvcG9saXNGbHV4IiwidXNlUGVybWlzc2lvbkFjdGlvbnMiLCJ1c2VQZXJzb25hQWN0aW9ucyIsInVzZVBvc3RBY3Rpb25zIiwidXNlUmVhY3Rpb25BY3Rpb25zIiwidXNlUmVzdEFjdGlvbnMiLCJ1c2VUYWdBY3Rpb25zIiwidXNlVHJhbnNsYXRpb25BY3Rpb25zIiwidXNlVXNlckFjdGlvbnMiLCJ1c2VWaWRlb0FjdGlvbnMiLCJ1c2VXZWJzb2NrZXRBY3Rpb25zIiwidXNlQ29udmVyc2F0aW9uVHlwaW5nIiwidXNlVHJhbnNsYXRpb25zIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FFRCx1QkFBdUI7QUFDdkIsU0FDRUEsV0FBVyxFQUNYQyxRQUFRLEVBQ1JDLFVBQVUsRUFDVkMsY0FBYyxFQUNkQyxXQUFXLEVBQ1hDLFdBQVcsRUFDWEMsY0FBYyxFQUNkQyxtQkFBbUIsRUFDbkJDLFdBQVcsRUFDWEMsV0FBVyxRQU1OLFdBQVc7QUFFbEIsd0JBQXdCO0FBQ3hCLFNBQ0VDLFlBQVksRUFDWkMsYUFBYSxFQUNiQyxnQkFBZ0IsUUFLWCxxQkFBcUI7QUFFNUIsNkJBQTZCO0FBQzdCLFNBQ0VDLGlCQUFpQixRQUVaLHlCQUF5QjtBQUVoQywyQkFBMkI7QUFDM0IsU0FDRUMsc0JBQXNCLEVBQ3RCQyxzQkFBc0IsUUFFakIsd0JBQXdCO0FBRS9CLHFCQUFxQjtBQUNyQixTQUFRQyxpQkFBaUIsRUFBRUMsa0JBQWtCLFFBQU8sMEJBQTBCO0FBQzlFLFNBQ0VDLGVBQWUsRUFDZkMsZUFBZSxFQUNmQyxjQUFjLFFBSVQsdUJBQXVCO0FBQzlCLFNBQ0VDLGlCQUFpQixFQUNqQkMsU0FBUyxFQUNUQyxhQUFhLEVBQ2JDLGVBQWUsRUFDZkMsZUFBZSxFQUNmQyxlQUFlLEVBQ2ZDLGtCQUFrQixFQUNsQkMsaUJBQWlCLEVBQ2pCQyxhQUFhLEVBQ2JDLG1CQUFtQixFQUNuQkMsaUJBQWlCLEVBQ2pCQyxvQkFBb0IsRUFDcEJDLGlCQUFpQixFQUNqQkMsY0FBYyxFQUNkQyxrQkFBa0IsRUFDbEJDLGNBQWMsRUFDZEMsYUFBYSxFQUNiQyxxQkFBcUIsRUFDckJDLGNBQWMsRUFDZEMsZUFBZSxFQUNmQyxtQkFBbUIsUUFDZCxxQkFBcUI7QUFDNUIsU0FBUUMscUJBQXFCLFFBQTBFLDZCQUE2QjtBQUNwSSxTQUFRQyxlQUFlLFFBQU8sdUJBQXVCO0FBRXJELDJCQUEyQjtBQUMzQixjQUFjLFdBQVc7QUFDekIsY0FBYyxpQkFBaUI7QUFDL0IsY0FBYyxZQUFZO0FBQzFCLGNBQWMsWUFBWTtBQUMxQixjQUFjLGdCQUFnQjtBQUM5QixjQUFjLGVBQWUifQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuLy8gRXhwb3J0IEFQSSB1dGlsaXRpZXNcbmV4cG9ydCB7XG4gIGFwcE11dGF0aW9uLFxuICBhcHBRdWVyeSxcbiAgZ2V0R3JhcGhxbCxcbiAgcHVibGljTXV0YXRpb24sXG4gIHB1YmxpY1F1ZXJ5LFxuICBydW1NdXRhdGlvbixcbiAgcnVtUmVxdWVzdCxcbiAgcmVmcmVzaFNlc3Npb24sXG4gIHJlc29sdmVSZXN0RW5kcG9pbnQsXG4gIHJlc3RSZXF1ZXN0LFxuICB1cGxvYWRJbWFnZSxcbiAgdHlwZSBBcGlSZXN1bHRzVHlwZSxcbiAgdHlwZSBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICB0eXBlIFJlc3RBcGlPcHRpb25zLFxuICB0eXBlIFJlc3RNZXRob2QsXG4gIHR5cGUgU2Vzc2lvblR5cGVcbn0gZnJvbSAnLi9hcGkuanMnO1xuXG4vLyBFeHBvcnQgYWN0aW9uIGZhY3RvcnlcbmV4cG9ydCB7XG4gIGNyZWF0ZUFjdGlvbixcbiAgY3JlYXRlQWN0aW9ucyxcbiAgY3JlYXRlQWxsQWN0aW9ucyxcbiAgdHlwZSBBY3Rpb25PcHRpb25zLFxuICB0eXBlIEFjdGlvblJldHVyblR5cGUsXG4gIHR5cGUgQWN0aW9uVHlwZSxcbiAgdHlwZSBBY3Rpb25UeXBlc1xufSBmcm9tICcuL2FjdGlvbkZhY3RvcnkuanMnO1xuXG4vLyBFeHBvcnQgYmFzZSBhY3Rpb24gZmFjdG9yeVxuZXhwb3J0IHtcbiAgY3JlYXRlQmFzZUFjdGlvbnMsXG4gIHR5cGUgQmFzZUFjdGlvbk9wdGlvbnNcbn0gZnJvbSAnLi9iYXNlQWN0aW9uRmFjdG9yeS5qcyc7XG5cbi8vIEV4cG9ydCB2YWxpZGF0b3IgZmFjdG9yeVxuZXhwb3J0IHtcbiAgY3JlYXRlVmFsaWRhdG9yRmFjdG9yeSxcbiAgY3JlYXRlVmFsaWRhdG9yTWFuYWdlcixcbiAgdHlwZSBCYXNlQWRhcHRlck9wdGlvbnNcbn0gZnJvbSAnLi92YWxpZGF0b3JGYWN0b3J5LmpzJztcblxuLy8gRXhwb3J0IFJlYWN0IGhvb2tzXG5leHBvcnQge01ldHJvcG9saXNDb250ZXh0fSBmcm9tICcuL01ldHJvcG9saXNDb250ZXh0LmpzJztcbmV4cG9ydCB7XG4gIFBlcm1pc3Npb25HdWFyZCxcbiAgUGVybWlzc2lvbkxldmVsLFxuICB1c2VQZXJtaXNzaW9ucyxcbiAgdHlwZSBQZXJtaXNzaW9uLFxuICB0eXBlIFBlcm1pc3Npb25HdWFyZFByb3BzLFxuICB0eXBlIFVzZVBlcm1pc3Npb25zUmV0dXJuXG59IGZyb20gJy4vcGVybWlzc2lvblV0aWxzLmpzJztcbmV4cG9ydCB7XG4gIHVzZUNvbnRlbnRBY3Rpb25zLFxuICB1c2VBd3NSdW0sXG4gIHVzZUNybUFjdGlvbnMsXG4gIHVzZUV2ZW50QWN0aW9ucyxcbiAgdXNlR3JvdXBBY3Rpb25zLFxuICB1c2VJbWFnZUFjdGlvbnMsXG4gIHVzZUxvY2F0aW9uQWN0aW9ucyxcbiAgdXNlTWVzc2FnZUFjdGlvbnMsXG4gIHVzZU1ldHJvcG9saXMsXG4gIHVzZU1ldHJvcG9saXNDb25maWcsXG4gIHVzZU1ldHJvcG9saXNGbHV4LFxuICB1c2VQZXJtaXNzaW9uQWN0aW9ucyxcbiAgdXNlUGVyc29uYUFjdGlvbnMsXG4gIHVzZVBvc3RBY3Rpb25zLFxuICB1c2VSZWFjdGlvbkFjdGlvbnMsXG4gIHVzZVJlc3RBY3Rpb25zLFxuICB1c2VUYWdBY3Rpb25zLFxuICB1c2VUcmFuc2xhdGlvbkFjdGlvbnMsXG4gIHVzZVVzZXJBY3Rpb25zLFxuICB1c2VWaWRlb0FjdGlvbnMsXG4gIHVzZVdlYnNvY2tldEFjdGlvbnNcbn0gZnJvbSAnLi91c2VNZXRyb3BvbGlzLmpzJztcbmV4cG9ydCB7dXNlQ29udmVyc2F0aW9uVHlwaW5nLCB0eXBlIENvbnZlcnNhdGlvblR5cGluZ09wdGlvbnMsIHR5cGUgVXNlQ29udmVyc2F0aW9uVHlwaW5nT3B0aW9uc30gZnJvbSAnLi91c2VDb252ZXJzYXRpb25UeXBpbmcuanMnO1xuZXhwb3J0IHt1c2VUcmFuc2xhdGlvbnN9IGZyb20gJy4vdXNlVHJhbnNsYXRpb25zLmpzJztcblxuLy8gRXhwb3J0IHV0aWxpdHkgZnVuY3Rpb25zXG5leHBvcnQgKiBmcm9tICcuL2FwcC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGVVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9pMThuLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYXRpb24uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXNzaW9uLmpzJztcbiJdLCJuYW1lcyI6WyJhcHBNdXRhdGlvbiIsImFwcFF1ZXJ5IiwiZ2V0R3JhcGhxbCIsInB1YmxpY011dGF0aW9uIiwicHVibGljUXVlcnkiLCJydW1NdXRhdGlvbiIsInJ1bVJlcXVlc3QiLCJyZWZyZXNoU2Vzc2lvbiIsInJlc29sdmVSZXN0RW5kcG9pbnQiLCJyZXN0UmVxdWVzdCIsInVwbG9hZEltYWdlIiwiY3JlYXRlQWN0aW9uIiwiY3JlYXRlQWN0aW9ucyIsImNyZWF0ZUFsbEFjdGlvbnMiLCJjcmVhdGVCYXNlQWN0aW9ucyIsImNyZWF0ZVZhbGlkYXRvckZhY3RvcnkiLCJjcmVhdGVWYWxpZGF0b3JNYW5hZ2VyIiwiTWV0cm9wb2xpc0NvbnRleHQiLCJQZXJtaXNzaW9uR3VhcmQiLCJQZXJtaXNzaW9uTGV2ZWwiLCJ1c2VQZXJtaXNzaW9ucyIsInVzZUNvbnRlbnRBY3Rpb25zIiwidXNlQXdzUnVtIiwidXNlQ3JtQWN0aW9ucyIsInVzZUV2ZW50QWN0aW9ucyIsInVzZUdyb3VwQWN0aW9ucyIsInVzZUltYWdlQWN0aW9ucyIsInVzZUxvY2F0aW9uQWN0aW9ucyIsInVzZU1lc3NhZ2VBY3Rpb25zIiwidXNlTWV0cm9wb2xpcyIsInVzZU1ldHJvcG9saXNDb25maWciLCJ1c2VNZXRyb3BvbGlzRmx1eCIsInVzZVBlcm1pc3Npb25BY3Rpb25zIiwidXNlUGVyc29uYUFjdGlvbnMiLCJ1c2VQb3N0QWN0aW9ucyIsInVzZVJlYWN0aW9uQWN0aW9ucyIsInVzZVJlc3RBY3Rpb25zIiwidXNlVGFnQWN0aW9ucyIsInVzZVRyYW5zbGF0aW9uQWN0aW9ucyIsInVzZVVzZXJBY3Rpb25zIiwidXNlVmlkZW9BY3Rpb25zIiwidXNlV2Vic29ja2V0QWN0aW9ucyIsInVzZUNvbnZlcnNhdGlvblR5cGluZyIsInVzZVRyYW5zbGF0aW9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBRUQsdUJBQXVCO0FBQ3ZCLFNBQ0VBLFdBQVcsRUFDWEMsUUFBUSxFQUNSQyxVQUFVLEVBQ1ZDLGNBQWMsRUFDZEMsV0FBVyxFQUNYQyxXQUFXLEVBQ1hDLFVBQVUsRUFDVkMsY0FBYyxFQUNkQyxtQkFBbUIsRUFDbkJDLFdBQVcsRUFDWEMsV0FBVyxRQU1OLFdBQVc7QUFFbEIsd0JBQXdCO0FBQ3hCLFNBQ0VDLFlBQVksRUFDWkMsYUFBYSxFQUNiQyxnQkFBZ0IsUUFLWCxxQkFBcUI7QUFFNUIsNkJBQTZCO0FBQzdCLFNBQ0VDLGlCQUFpQixRQUVaLHlCQUF5QjtBQUVoQywyQkFBMkI7QUFDM0IsU0FDRUMsc0JBQXNCLEVBQ3RCQyxzQkFBc0IsUUFFakIsd0JBQXdCO0FBRS9CLHFCQUFxQjtBQUNyQixTQUFRQyxpQkFBaUIsUUFBTyx5QkFBeUI7QUFDekQsU0FDRUMsZUFBZSxFQUNmQyxlQUFlLEVBQ2ZDLGNBQWMsUUFJVCx1QkFBdUI7QUFDOUIsU0FDRUMsaUJBQWlCLEVBQ2pCQyxTQUFTLEVBQ1RDLGFBQWEsRUFDYkMsZUFBZSxFQUNmQyxlQUFlLEVBQ2ZDLGVBQWUsRUFDZkMsa0JBQWtCLEVBQ2xCQyxpQkFBaUIsRUFDakJDLGFBQWEsRUFDYkMsbUJBQW1CLEVBQ25CQyxpQkFBaUIsRUFDakJDLG9CQUFvQixFQUNwQkMsaUJBQWlCLEVBQ2pCQyxjQUFjLEVBQ2RDLGtCQUFrQixFQUNsQkMsY0FBYyxFQUNkQyxhQUFhLEVBQ2JDLHFCQUFxQixFQUNyQkMsY0FBYyxFQUNkQyxlQUFlLEVBQ2ZDLG1CQUFtQixRQUNkLHFCQUFxQjtBQUM1QixTQUFRQyxxQkFBcUIsUUFBMEUsNkJBQTZCO0FBQ3BJLFNBQVFDLGVBQWUsUUFBTyx1QkFBdUI7QUFFckQsMkJBQTJCO0FBQzNCLGNBQWMsV0FBVztBQUN6QixjQUFjLGlCQUFpQjtBQUMvQixjQUFjLFlBQVk7QUFDMUIsY0FBYyxZQUFZO0FBQzFCLGNBQWMsZ0JBQWdCO0FBQzlCLGNBQWMsZUFBZSJ9
@@ -5,6 +5,5 @@
5
5
  import { FluxFramework } from '@nlabs/arkhamjs';
6
6
  import { parseLocation } from '../adapters/locationAdapter/locationAdapter.js';
7
7
  import type { LocationType } from '../adapters/locationAdapter/locationAdapter.js';
8
- export declare const autoCompleteLocation: (this: unknown, flux: FluxFramework, address: string, latitude?: number | undefined, longitude?: number | undefined, locationProps?: string[] | undefined, CustomClass?: typeof parseLocation | undefined) => Promise<LocationType[]>;
8
+ export declare const autoCompleteLocation: (this: unknown, flux: FluxFramework, address: string, latitude?: number, longitude?: number, locationProps?: string[], CustomClass?: typeof parseLocation) => Promise<LocationType[]>;
9
9
  export declare const searchLocations: (flux: FluxFramework, address: string, latitude?: number, longitude?: number, locationProps?: string[], CustomClass?: typeof parseLocation) => Promise<LocationType[]>;
10
- //# sourceMappingURL=location.d.ts.map
@@ -19,4 +19,3 @@ export declare const usePermissions: () => UsePermissionsReturn;
19
19
  export declare const PermissionGuard: React.FC<PermissionGuardProps>;
20
20
  export { PermissionLevel } from '../adapters/permissionAdapter/permissionAdapter.js';
21
21
  export type { Permission } from '../adapters/permissionAdapter/permissionAdapter.js';
22
- //# sourceMappingURL=permissionUtils.d.ts.map
@@ -3,6 +3,5 @@ export interface ActionRequestOptions {
3
3
  readonly cacheTimeout?: number;
4
4
  }
5
5
  export declare const getCachedRequest: <T>(flux: FluxFramework, scope: string, payload?: Record<string, unknown>, options?: ActionRequestOptions) => T | undefined;
6
- export declare const setCachedRequest: <T>(flux: FluxFramework, scope: string, payload: Record<string, unknown> | undefined, data: T, options?: ActionRequestOptions) => Promise<T>;
6
+ export declare const setCachedRequest: <T>(flux: FluxFramework, scope: string, payload: Record<string, unknown>, data: T, options?: ActionRequestOptions) => Promise<T>;
7
7
  export declare const clearCachedRequest: (flux: FluxFramework, scope: string) => Promise<void>;
8
- //# sourceMappingURL=requestCache.d.ts.map
@@ -11,4 +11,3 @@ export declare const readStoredSession: (flux: FluxFramework) => Promise<Session
11
11
  export declare const clearPersistedSession: (flux: FluxFramework) => Promise<void>;
12
12
  export declare const hydrateSessionFromStorage: (flux: FluxFramework) => Promise<SessionType>;
13
13
  export declare const isLoggedIn: (flux: FluxFramework) => boolean;
14
- //# sourceMappingURL=session.d.ts.map
@@ -23,4 +23,3 @@ export declare const useConversationTyping: ({ debounceMs, idleMs }?: UseConvers
23
23
  syncDraft: (conversationId: string, draft: string, options?: ConversationTypingOptions) => void;
24
24
  };
25
25
  export {};
26
- //# sourceMappingURL=useConversationTyping.d.ts.map
@@ -4,20 +4,16 @@ import type { ActionType } from '../utils/actionFactory.js';
4
4
  /**
5
5
  * Main hook to access Metropolis actions.
6
6
  *
7
- * @param actionTypes - Optional array of action types to create. If not provided, creates all actions.
7
+ * @param actionTypes - Action types to create.
8
8
  * @returns Object containing the requested actions
9
9
  *
10
10
  * @example
11
11
  * ```tsx
12
- * // Get all actions (default behavior)
13
- * const {userActions, postActions} = useMetropolis();
14
- *
15
- * // Get only specific actions (more performant)
16
12
  * const {userActions} = useMetropolis(['user']);
17
13
  * const {userActions, postActions} = useMetropolis(['user', 'post']);
18
14
  * ```
19
15
  */
20
- export declare const useMetropolis: <T extends ActionType[] = ActionType[]>(actionTypes?: T) => Record<string, any>;
16
+ export declare const useMetropolis: <T extends ActionType[]>(actionTypes: T) => Record<string, any>;
21
17
  /**
22
18
  * Hook to access the Metropolis configuration from context.
23
19
  *
@@ -67,4 +63,3 @@ export declare const useVideoActions: () => any;
67
63
  export declare const useTranslationActions: () => any;
68
64
  export declare const useUserActions: () => any;
69
65
  export declare const useWebsocketActions: () => any;
70
- //# sourceMappingURL=useMetropolis.d.ts.map