@nlabs/metropolisjs 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/lib/actions/appActions/appActions.d.ts +0 -1
  2. package/lib/actions/awsRumActions/awsRumActions.d.ts +0 -1
  3. package/lib/actions/awsRumActions/awsRumActions.js +32 -3
  4. package/lib/actions/connectionActions/connectionActions.d.ts +0 -1
  5. package/lib/actions/contentActions/contentActions.d.ts +0 -1
  6. package/lib/actions/conversationActions/conversationActions.d.ts +0 -1
  7. package/lib/actions/crmActions/crmActions.d.ts +0 -1
  8. package/lib/actions/eventActions/eventActions.d.ts +0 -1
  9. package/lib/actions/groupActions/groupActions.d.ts +0 -1
  10. package/lib/actions/imageActions/imageActions.d.ts +0 -1
  11. package/lib/actions/imageActions/imageActions.js +5 -4
  12. package/lib/actions/index.d.ts +0 -1
  13. package/lib/actions/locationActions/locationActions.d.ts +0 -1
  14. package/lib/actions/messageActions/messageActions.d.ts +0 -1
  15. package/lib/actions/permissionActions/permissionActions.d.ts +0 -1
  16. package/lib/actions/personaActions/personaActions.d.ts +0 -1
  17. package/lib/actions/postActions/postActions.d.ts +0 -1
  18. package/lib/actions/reactionActions/reactionActions.d.ts +0 -1
  19. package/lib/actions/restActions/restActions.d.ts +0 -1
  20. package/lib/actions/sseActions/sseActions.d.ts +0 -1
  21. package/lib/actions/sseActions/sseActions.js +1 -1
  22. package/lib/actions/subscriptionActions/subscriptionActions.d.ts +0 -1
  23. package/lib/actions/tagActions/tagActions.d.ts +0 -1
  24. package/lib/actions/tagActions/tagActions.js +1 -1
  25. package/lib/actions/translationActions/translationActions.d.ts +0 -1
  26. package/lib/actions/userActions/userActions.d.ts +0 -1
  27. package/lib/actions/videoActions/videoActions.d.ts +0 -1
  28. package/lib/actions/websocketActions/websocketActions.d.ts +0 -1
  29. package/lib/adapters/appAdapter/appAdapter.d.ts +2 -3
  30. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts +2 -3
  31. package/lib/adapters/contentAdapter/contentAdapter.d.ts +2 -3
  32. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts +2 -3
  33. package/lib/adapters/eventAdapter/eventAdapter.d.ts +2 -3
  34. package/lib/adapters/fileAdapter/fileAdapter.d.ts +2 -3
  35. package/lib/adapters/groupAdapter/groupAdapter.d.ts +2 -3
  36. package/lib/adapters/imageAdapter/imageAdapter.d.ts +2 -3
  37. package/lib/adapters/index.d.ts +0 -1
  38. package/lib/adapters/locationAdapter/locationAdapter.d.ts +2 -3
  39. package/lib/adapters/messageAdapter/messageAdapter.d.ts +2 -3
  40. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts +2 -3
  41. package/lib/adapters/personaAdapter/personaAdapter.d.ts +2 -3
  42. package/lib/adapters/postAdapter/postAdapter.d.ts +2 -3
  43. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts +2 -3
  44. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts +2 -3
  45. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts +2 -3
  46. package/lib/adapters/tagAdapter/tagAdapter.d.ts +2 -3
  47. package/lib/adapters/translationAdapter/translationAdapter.d.ts +2 -3
  48. package/lib/adapters/userAdapter/userAdapter.d.ts +2 -3
  49. package/lib/adapters/videoAdapter/videoAdapter.d.ts +2 -3
  50. package/lib/config/index.d.ts +1 -1
  51. package/lib/config/index.js +7 -3
  52. package/lib/constants/Collections.d.ts +0 -1
  53. package/lib/constants/MetropolisConstants.d.ts +0 -1
  54. package/lib/graphql/message.d.ts +0 -1
  55. package/lib/graphql/notification.d.ts +0 -1
  56. package/lib/graphql/session.d.ts +0 -1
  57. package/lib/index.d.ts +0 -1
  58. package/lib/index.js +2 -1
  59. package/lib/stores/appStore.d.ts +0 -1
  60. package/lib/stores/contentStore.d.ts +0 -1
  61. package/lib/stores/conversationStore.d.ts +0 -1
  62. package/lib/stores/eventStore.d.ts +0 -1
  63. package/lib/stores/groupStore.d.ts +0 -1
  64. package/lib/stores/imageStore.d.ts +0 -1
  65. package/lib/stores/index.d.ts +0 -1
  66. package/lib/stores/locationStore.d.ts +0 -1
  67. package/lib/stores/messageStore.d.ts +0 -1
  68. package/lib/stores/notificationStore.d.ts +0 -1
  69. package/lib/stores/permissionStore.d.ts +0 -1
  70. package/lib/stores/personaStore.d.ts +0 -1
  71. package/lib/stores/postStore.d.ts +0 -1
  72. package/lib/stores/reactionStore.d.ts +0 -1
  73. package/lib/stores/subscriptionStore.d.ts +0 -1
  74. package/lib/stores/tagStore.d.ts +0 -1
  75. package/lib/stores/translationStore.d.ts +0 -1
  76. package/lib/stores/userStore.d.ts +2 -3
  77. package/lib/stores/userStore.js +7 -1
  78. package/lib/stores/videoStore.d.ts +0 -1
  79. package/lib/stores/websocketStore.d.ts +0 -1
  80. package/lib/types/apps.types.d.ts +0 -1
  81. package/lib/types/common.types.d.ts +0 -1
  82. package/lib/types/conversations.types.d.ts +0 -1
  83. package/lib/types/crm.types.d.ts +0 -1
  84. package/lib/types/edges.types.d.ts +0 -1
  85. package/lib/types/groups.types.d.ts +0 -1
  86. package/lib/types/index.d.ts +0 -1
  87. package/lib/types/subscriptions.types.d.ts +0 -1
  88. package/lib/types/videos.types.d.ts +0 -1
  89. package/lib/utils/MetropolisProvider.d.ts +0 -1
  90. package/lib/utils/actionFactory.d.ts +2 -3
  91. package/lib/utils/api.d.ts +1 -2
  92. package/lib/utils/api.js +33 -17
  93. package/lib/utils/app.d.ts +0 -1
  94. package/lib/utils/baseActionFactory.d.ts +2 -3
  95. package/lib/utils/configUtils.d.ts +0 -1
  96. package/lib/utils/dateUtils.d.ts +0 -1
  97. package/lib/utils/file.d.ts +0 -1
  98. package/lib/utils/i18n.d.ts +0 -1
  99. package/lib/utils/index.d.ts +0 -1
  100. package/lib/utils/location.d.ts +1 -2
  101. package/lib/utils/permissionUtils.d.ts +0 -1
  102. package/lib/utils/requestCache.d.ts +1 -2
  103. package/lib/utils/session.d.ts +0 -1
  104. package/lib/utils/useConversationTyping.d.ts +0 -1
  105. package/lib/utils/useMetropolis.d.ts +0 -1
  106. package/lib/utils/useTranslations.d.ts +0 -1
  107. package/lib/utils/useTranslations.js +1 -1
  108. package/lib/utils/validatorFactory.d.ts +1 -2
  109. package/package.json +3 -3
  110. package/tsconfig.test.json +4 -0
  111. package/lib/actions/appActions/appActions.d.ts.map +0 -1
  112. package/lib/actions/awsRumActions/awsRumActions.d.ts.map +0 -1
  113. package/lib/actions/connectionActions/connectionActions.d.ts.map +0 -1
  114. package/lib/actions/contentActions/contentActions.d.ts.map +0 -1
  115. package/lib/actions/conversationActions/conversationActions.d.ts.map +0 -1
  116. package/lib/actions/crmActions/crmActions.d.ts.map +0 -1
  117. package/lib/actions/eventActions/eventActions.d.ts.map +0 -1
  118. package/lib/actions/groupActions/groupActions.d.ts.map +0 -1
  119. package/lib/actions/imageActions/imageActions.d.ts.map +0 -1
  120. package/lib/actions/index.d.ts.map +0 -1
  121. package/lib/actions/locationActions/locationActions.d.ts.map +0 -1
  122. package/lib/actions/messageActions/messageActions.d.ts.map +0 -1
  123. package/lib/actions/permissionActions/permissionActions.d.ts.map +0 -1
  124. package/lib/actions/personaActions/personaActions.d.ts.map +0 -1
  125. package/lib/actions/postActions/postActions.d.ts.map +0 -1
  126. package/lib/actions/reactionActions/reactionActions.d.ts.map +0 -1
  127. package/lib/actions/restActions/restActions.d.ts.map +0 -1
  128. package/lib/actions/sseActions/sseActions.d.ts.map +0 -1
  129. package/lib/actions/subscriptionActions/subscriptionActions.d.ts.map +0 -1
  130. package/lib/actions/tagActions/tagActions.d.ts.map +0 -1
  131. package/lib/actions/translationActions/translationActions.d.ts.map +0 -1
  132. package/lib/actions/userActions/userActions.d.ts.map +0 -1
  133. package/lib/actions/videoActions/videoActions.d.ts.map +0 -1
  134. package/lib/actions/websocketActions/websocketActions.d.ts.map +0 -1
  135. package/lib/adapters/appAdapter/appAdapter.d.ts.map +0 -1
  136. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts.map +0 -1
  137. package/lib/adapters/contentAdapter/contentAdapter.d.ts.map +0 -1
  138. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts.map +0 -1
  139. package/lib/adapters/eventAdapter/eventAdapter.d.ts.map +0 -1
  140. package/lib/adapters/fileAdapter/fileAdapter.d.ts.map +0 -1
  141. package/lib/adapters/groupAdapter/groupAdapter.d.ts.map +0 -1
  142. package/lib/adapters/imageAdapter/imageAdapter.d.ts.map +0 -1
  143. package/lib/adapters/index.d.ts.map +0 -1
  144. package/lib/adapters/locationAdapter/locationAdapter.d.ts.map +0 -1
  145. package/lib/adapters/messageAdapter/messageAdapter.d.ts.map +0 -1
  146. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts.map +0 -1
  147. package/lib/adapters/personaAdapter/personaAdapter.d.ts.map +0 -1
  148. package/lib/adapters/postAdapter/postAdapter.d.ts.map +0 -1
  149. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts.map +0 -1
  150. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts.map +0 -1
  151. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts.map +0 -1
  152. package/lib/adapters/tagAdapter/tagAdapter.d.ts.map +0 -1
  153. package/lib/adapters/translationAdapter/translationAdapter.d.ts.map +0 -1
  154. package/lib/adapters/userAdapter/userAdapter.d.ts.map +0 -1
  155. package/lib/adapters/videoAdapter/videoAdapter.d.ts.map +0 -1
  156. package/lib/config/index.d.ts.map +0 -1
  157. package/lib/constants/Collections.d.ts.map +0 -1
  158. package/lib/constants/MetropolisConstants.d.ts.map +0 -1
  159. package/lib/graphql/message.d.ts.map +0 -1
  160. package/lib/graphql/notification.d.ts.map +0 -1
  161. package/lib/graphql/session.d.ts.map +0 -1
  162. package/lib/index.d.ts.map +0 -1
  163. package/lib/stores/appStore.d.ts.map +0 -1
  164. package/lib/stores/contentStore.d.ts.map +0 -1
  165. package/lib/stores/conversationStore.d.ts.map +0 -1
  166. package/lib/stores/eventStore.d.ts.map +0 -1
  167. package/lib/stores/groupStore.d.ts.map +0 -1
  168. package/lib/stores/imageStore.d.ts.map +0 -1
  169. package/lib/stores/index.d.ts.map +0 -1
  170. package/lib/stores/locationStore.d.ts.map +0 -1
  171. package/lib/stores/messageStore.d.ts.map +0 -1
  172. package/lib/stores/notificationStore.d.ts.map +0 -1
  173. package/lib/stores/permissionStore.d.ts.map +0 -1
  174. package/lib/stores/personaStore.d.ts.map +0 -1
  175. package/lib/stores/postStore.d.ts.map +0 -1
  176. package/lib/stores/reactionStore.d.ts.map +0 -1
  177. package/lib/stores/subscriptionStore.d.ts.map +0 -1
  178. package/lib/stores/tagStore.d.ts.map +0 -1
  179. package/lib/stores/translationStore.d.ts.map +0 -1
  180. package/lib/stores/userStore.d.ts.map +0 -1
  181. package/lib/stores/videoStore.d.ts.map +0 -1
  182. package/lib/stores/websocketStore.d.ts.map +0 -1
  183. package/lib/tests/actionTestScenarios.d.ts +0 -20
  184. package/lib/tests/actionTestScenarios.d.ts.map +0 -1
  185. package/lib/tests/actionTestScenarios.js +0 -851
  186. package/lib/tests/testGraphQLServer.d.ts +0 -22
  187. package/lib/tests/testGraphQLServer.d.ts.map +0 -1
  188. package/lib/tests/testGraphQLServer.js +0 -197
  189. package/lib/tests/testGraphQLServerSimple.d.ts +0 -3
  190. package/lib/tests/testGraphQLServerSimple.d.ts.map +0 -1
  191. package/lib/tests/testGraphQLServerSimple.js +0 -52
  192. package/lib/types/apps.types.d.ts.map +0 -1
  193. package/lib/types/common.types.d.ts.map +0 -1
  194. package/lib/types/conversations.types.d.ts.map +0 -1
  195. package/lib/types/crm.types.d.ts.map +0 -1
  196. package/lib/types/edges.types.d.ts.map +0 -1
  197. package/lib/types/groups.types.d.ts.map +0 -1
  198. package/lib/types/index.d.ts.map +0 -1
  199. package/lib/types/subscriptions.types.d.ts.map +0 -1
  200. package/lib/types/videos.types.d.ts.map +0 -1
  201. package/lib/utils/MetropolisProvider.d.ts.map +0 -1
  202. package/lib/utils/actionFactory.d.ts.map +0 -1
  203. package/lib/utils/api.d.ts.map +0 -1
  204. package/lib/utils/app.d.ts.map +0 -1
  205. package/lib/utils/baseActionFactory.d.ts.map +0 -1
  206. package/lib/utils/configUtils.d.ts.map +0 -1
  207. package/lib/utils/dateUtils.d.ts.map +0 -1
  208. package/lib/utils/file.d.ts.map +0 -1
  209. package/lib/utils/i18n.d.ts.map +0 -1
  210. package/lib/utils/index.d.ts.map +0 -1
  211. package/lib/utils/location.d.ts.map +0 -1
  212. package/lib/utils/permissionUtils.d.ts.map +0 -1
  213. package/lib/utils/requestCache.d.ts.map +0 -1
  214. package/lib/utils/session.d.ts.map +0 -1
  215. package/lib/utils/useConversationTyping.d.ts.map +0 -1
  216. package/lib/utils/useMetropolis.d.ts.map +0 -1
  217. package/lib/utils/useTranslations.d.ts.map +0 -1
  218. package/lib/utils/validatorFactory.d.ts.map +0 -1
@@ -344,4 +344,4 @@ export const createTagActions = (flux, options)=>{
344
344
  };
345
345
  };
346
346
 
347
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy90YWdBY3Rpb25zL3RhZ0FjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7dmFsaWRhdGVUYWdJbnB1dH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvdGFnQWRhcHRlci90YWdBZGFwdGVyLmpzJztcbmltcG9ydCB7VEFHX0NPTlNUQU5UU30gZnJvbSAnLi4vLi4vc3RvcmVzL3RhZ1N0b3JlLmpzJztcbmltcG9ydCB7YXBwTXV0YXRpb24sIGFwcFF1ZXJ5fSBmcm9tICcuLi8uLi91dGlscy9hcGkuanMnO1xuaW1wb3J0IHtjbGVhckNhY2hlZFJlcXVlc3QsIGdldENhY2hlZFJlcXVlc3QsIHNldENhY2hlZFJlcXVlc3R9IGZyb20gJy4uLy4uL3V0aWxzL3JlcXVlc3RDYWNoZS5qcyc7XG5cbmltcG9ydCB0eXBlIHtGbHV4QWN0aW9uLCBGbHV4RnJhbWV3b3JrfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuaW1wb3J0IHR5cGUge1RhZ1R5cGV9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL3RhZ0FkYXB0ZXIvdGFnQWRhcHRlci5qcyc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uUmVxdWVzdE9wdGlvbnN9IGZyb20gJy4uLy4uL3V0aWxzL3JlcXVlc3RDYWNoZS5qcyc7XG5cbmNvbnN0IERBVEFfVFlQRSA9ICd0YWdzJztcbmNvbnN0IERFRkFVTFRfVEFHX1BST1BTID0gWydhZGRlZCcsICdjYXRlZ29yeScsICdkZXNjcmlwdGlvbicsICdtb2RpZmllZCcsICduYW1lJywgJ3RhZ0lkJ107XG5jb25zdCBERUxFVEVfVEFHX1BST1BTID0gREVGQVVMVF9UQUdfUFJPUFMuZmlsdGVyKChmaWVsZCkgPT4gZmllbGQgIT09ICd0YWdJZCcpO1xuXG5jb25zdCBzYW5pdGl6ZVRhZ1Byb3BzID0gKHRhZ1Byb3BzOiBzdHJpbmdbXSA9IFtdLCBiYXNlUHJvcHM6IHN0cmluZ1tdID0gREVGQVVMVF9UQUdfUFJPUFMpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IGZpZWxkcyA9IFsuLi5iYXNlUHJvcHMsIC4uLnRhZ1Byb3BzXTtcbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIHJldHVybiBmaWVsZHMucmVkdWNlKChyZXN1bHQ6IHN0cmluZ1tdLCBmaWVsZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbmV4dEZpZWxkID0gU3RyaW5nKGZpZWxkIHx8ICcnKS50cmltKCk7XG5cbiAgICBpZighbmV4dEZpZWxkIHx8IHNlZW4uaGFzKG5leHRGaWVsZCkpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgc2Vlbi5hZGQobmV4dEZpZWxkKTtcbiAgICByZXN1bHQucHVzaChuZXh0RmllbGQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIFtdKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnQWRhcHRlck9wdGlvbnMge1xuICBzdHJpY3Q/OiBib29sZWFuO1xuICBhbGxvd1BhcnRpYWw/OiBib29sZWFuO1xuICBlbnZpcm9ubWVudD86ICdkZXZlbG9wbWVudCcgfCAncHJvZHVjdGlvbicgfCAndGVzdCc7XG4gIGN1c3RvbVZhbGlkYXRpb24/OiAoaW5wdXQ6IHVua25vd24pID0+IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnQWN0aW9uc09wdGlvbnMge1xuICB0YWdBZGFwdGVyPzogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogVGFnQWRhcHRlck9wdGlvbnMpID0+IGFueTtcbiAgdGFnQWRhcHRlck9wdGlvbnM/OiBUYWdBZGFwdGVyT3B0aW9ucztcbn1cblxuZXhwb3J0IHR5cGUgVGFnQXBpUmVzdWx0c1R5cGUgPSB7XG4gIHRhZ3M6IHtcbiAgICBhZGRUYWc6IFRhZ1R5cGU7XG4gICAgYWRkVGFnVG9JdGVtOiBUYWdUeXBlO1xuICAgIGRlbGV0ZVRhZzogVGFnVHlwZTtcbiAgICBkZWxldGVUYWdGcm9tSXRlbTogYm9vbGVhbjtcbiAgICBnZXRUYWdzQnlJdGVtOiBUYWdUeXBlW107XG4gICAgZ2V0VGFnczogVGFnVHlwZVtdO1xuICAgIHVwZGF0ZVRhZzogVGFnVHlwZTtcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnQWN0aW9ucyB7XG4gIGFkZFRhZzogKHRhZzogUGFydGlhbDxUYWdUeXBlPiwgdGFnUHJvcHM/OiBzdHJpbmdbXSwgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxUYWdUeXBlPjtcbiAgYWRkVGFnVG9JdGVtOiAodGFnSWQ6IHN0cmluZywgaXRlbURvY0lkPzogc3RyaW5nLCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGU+O1xuICBkZWxldGVUYWc6ICh0YWdJZDogc3RyaW5nLCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGU+O1xuICBkZWxldGVUYWdGcm9tSXRlbTogKHRhZ0lkOiBzdHJpbmcsIGl0ZW1Eb2NJZD86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgZ2V0VGFnc0J5SXRlbTogKGl0ZW1Eb2NJZDogc3RyaW5nLCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGVbXT47XG4gIGdldFRhZ3M6IChcbiAgICBzZWFyY2hRdWVyeT86IHN0cmluZyxcbiAgICB0YWdQcm9wcz86IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9uc1xuICApID0+IFByb21pc2U8VGFnVHlwZVtdPjtcbiAgdXBkYXRlVGFnOiAodGFnOiBQYXJ0aWFsPFRhZ1R5cGU+LCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGU+O1xuICB1cGRhdGVUYWdBZGFwdGVyOiAoYWRhcHRlcjogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogVGFnQWRhcHRlck9wdGlvbnMpID0+IGFueSkgPT4gdm9pZDtcbiAgdXBkYXRlVGFnQWRhcHRlck9wdGlvbnM6IChvcHRpb25zOiBUYWdBZGFwdGVyT3B0aW9ucykgPT4gdm9pZDtcbn1cblxuY29uc3QgZGVmYXVsdFRhZ1ZhbGlkYXRvciA9IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFRhZ0FkYXB0ZXJPcHRpb25zKSA9PiB2YWxpZGF0ZVRhZ0lucHV0KGlucHV0KTtcblxuY29uc3QgY3JlYXRlVGFnVmFsaWRhdG9yID0gKFxuICBjdXN0b21BZGFwdGVyPzogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogVGFnQWRhcHRlck9wdGlvbnMpID0+IGFueSxcbiAgb3B0aW9ucz86IFRhZ0FkYXB0ZXJPcHRpb25zXG4pID0+IChpbnB1dDogdW5rbm93biwgdmFsaWRhdG9yT3B0aW9ucz86IFRhZ0FkYXB0ZXJPcHRpb25zKSA9PiB7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7Li4ub3B0aW9ucywgLi4udmFsaWRhdG9yT3B0aW9uc307XG4gIGxldCB2YWxpZGF0ZWQgPSBkZWZhdWx0VGFnVmFsaWRhdG9yKGlucHV0LCBtZXJnZWRPcHRpb25zKTtcblxuICBpZihjdXN0b21BZGFwdGVyKSB7XG4gICAgdmFsaWRhdGVkID0gY3VzdG9tQWRhcHRlcih2YWxpZGF0ZWQsIG1lcmdlZE9wdGlvbnMpO1xuICB9XG5cbiAgaWYobWVyZ2VkT3B0aW9ucz8uY3VzdG9tVmFsaWRhdGlvbikge1xuICAgIHZhbGlkYXRlZCA9IG1lcmdlZE9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbih2YWxpZGF0ZWQpIGFzIFRhZ1R5cGU7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVRhZ0FjdGlvbnMgPSAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG9wdGlvbnM/OiBUYWdBY3Rpb25zT3B0aW9uc1xuKTogVGFnQWN0aW9ucyA9PiB7XG4gIGxldCB0YWdBZGFwdGVyT3B0aW9ucyA9IG9wdGlvbnM/LnRhZ0FkYXB0ZXJPcHRpb25zIHx8IHt9O1xuICBsZXQgY3VzdG9tVGFnQWRhcHRlciA9IG9wdGlvbnM/LnRhZ0FkYXB0ZXI7XG4gIGxldCB2YWxpZGF0ZVRhZyA9IGNyZWF0ZVRhZ1ZhbGlkYXRvcihjdXN0b21UYWdBZGFwdGVyLCB0YWdBZGFwdGVyT3B0aW9ucyk7XG5cbiAgY29uc3QgdXBkYXRlVGFnQWRhcHRlciA9IChhZGFwdGVyOiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBUYWdBZGFwdGVyT3B0aW9ucykgPT4gYW55KTogdm9pZCA9PiB7XG4gICAgY3VzdG9tVGFnQWRhcHRlciA9IGFkYXB0ZXI7XG4gICAgdmFsaWRhdGVUYWcgPSBjcmVhdGVUYWdWYWxpZGF0b3IoY3VzdG9tVGFnQWRhcHRlciwgdGFnQWRhcHRlck9wdGlvbnMpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVRhZ0FkYXB0ZXJPcHRpb25zID0gKG9wdGlvbnM6IFRhZ0FkYXB0ZXJPcHRpb25zKTogdm9pZCA9PiB7XG4gICAgdGFnQWRhcHRlck9wdGlvbnMgPSB7Li4udGFnQWRhcHRlck9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuICAgIHZhbGlkYXRlVGFnID0gY3JlYXRlVGFnVmFsaWRhdG9yKGN1c3RvbVRhZ0FkYXB0ZXIsIHRhZ0FkYXB0ZXJPcHRpb25zKTtcbiAgfTtcblxuICBjb25zdCBhZGRUYWcgPSBhc3luYyAodGFnOiBQYXJ0aWFsPFRhZ1R5cGU+LCB0YWdQcm9wczogc3RyaW5nW10gPSBbXSwgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge30pOiBQcm9taXNlPFRhZ1R5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdGVkVGFnUHJvcHMgPSBzYW5pdGl6ZVRhZ1Byb3BzKHRhZ1Byb3BzKTtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICB0YWc6IHtcbiAgICAgICAgICB0eXBlOiAnVGFnSW5wdXQhJyxcbiAgICAgICAgICB2YWx1ZTogdmFsaWRhdGVUYWcodGFnLCB0YWdBZGFwdGVyT3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gYXN5bmMgKGRhdGE6IFRhZ0FwaVJlc3VsdHNUeXBlKTogUHJvbWlzZTxGbHV4QWN0aW9uPiA9PiB7XG4gICAgICAgIGNvbnN0IHRhZyA9IGRhdGE/LnRhZ3M/LmFkZFRhZyB8fCB7fTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGZsdXguZGlzcGF0Y2goe3RhZywgdHlwZTogVEFHX0NPTlNUQU5UUy5BRERfSVRFTV9TVUNDRVNTfSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gYXdhaXQgYXBwTXV0YXRpb248VGFnVHlwZT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdhZGRUYWcnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICByZXF1ZXN0ZWRUYWdQcm9wcyxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFRBR19DT05TVEFOVFMuQUREX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgJ3RhZy5nZXRUYWdzJyk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZFRhZ1RvSXRlbSA9IGFzeW5jIChcbiAgICB0YWdJZDogc3RyaW5nLFxuICAgIGl0ZW1Eb2NJZCA9ICcnLFxuICAgIHRhZ1Byb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8VGFnVHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicsIHt9KSB8fCB7fSkgYXMge3BlcnNvbmFJZD86IHN0cmluZzsgdGFncz86IFRhZ1R5cGVbXX07XG4gICAgICBjb25zdCBzZXNzaW9uUGVyc29uYURvY0lkID0gc2Vzc2lvbj8ucGVyc29uYUlkID8gYHBlcnNvbmFzLyR7c2Vzc2lvbi5wZXJzb25hSWR9YCA6ICcnO1xuICAgICAgY29uc3QgZXhpc3RpbmdQZXJzb25hVGFnID0gaXRlbURvY0lkID09PSBzZXNzaW9uUGVyc29uYURvY0lkXG4gICAgICAgID8gKHNlc3Npb24/LnRhZ3MgfHwgW10pLmZpbmQoKHRhZykgPT4gU3RyaW5nKHRhZz8udGFnSWQgfHwgJycpLnRyaW0oKSA9PT0gU3RyaW5nKHRhZ0lkIHx8ICcnKS50cmltKCkpXG4gICAgICAgIDogbnVsbDtcblxuICAgICAgaWYoZXhpc3RpbmdQZXJzb25hVGFnKSB7XG4gICAgICAgIHJldHVybiBleGlzdGluZ1BlcnNvbmFUYWc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcXVlc3RlZFRhZ1Byb3BzID0gc2FuaXRpemVUYWdQcm9wcyh0YWdQcm9wcyk7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgaXRlbURvY0lkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IGl0ZW1Eb2NJZFxuICAgICAgICB9LFxuICAgICAgICB0YWdJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiB0YWdJZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgdGFnID0gZGF0YT8udGFncz8uYWRkVGFnVG9JdGVtIHx8IHt9O1xuXG4gICAgICAgIGlmKGl0ZW1Eb2NJZC5zdGFydHNXaXRoKCdwZXJzb25hcy8nKSkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0YWcsIHR5cGU6IFRBR19DT05TVEFOVFMuQUREX1BFUlNPTkFfU1VDQ0VTU30pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IGZsdXguZGlzcGF0Y2goe2l0ZW1Eb2NJZCwgdGFnLCB0eXBlOiBUQUdfQ09OU1RBTlRTLkFERF9MSU5LX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxUYWdUeXBlPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2FkZFRhZ1RvSXRlbScsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIHJlcXVlc3RlZFRhZ1Byb3BzLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVEFHX0NPTlNUQU5UUy5BRERfUEVSU09OQV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAndGFnLmdldFRhZ3MnKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCBgdGFnLmdldFRhZ3NCeUl0ZW06JHtpdGVtRG9jSWR9YCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGRlbGV0ZVRhZyA9IGFzeW5jICh0YWdJZDogc3RyaW5nLCB0YWdQcm9wczogc3RyaW5nW10gPSBbXSwgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge30pOiBQcm9taXNlPFRhZ1R5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdGVkVGFnUHJvcHMgPSBzYW5pdGl6ZVRhZ1Byb3BzKHRhZ1Byb3BzLCBERUxFVEVfVEFHX1BST1BTKTtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICB0YWdJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiB0YWdJZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgdGFnID0gZGF0YT8udGFncz8uZGVsZXRlVGFnIHx8IHt9O1xuICAgICAgICBjb25zdCBkZWxldGVkVGFnID0ge1xuICAgICAgICAgIC4uLnRhZyxcbiAgICAgICAgICAuLi4odGFnSWQgPyB7dGFnSWR9IDoge30pXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0YWc6IGRlbGV0ZWRUYWcsIHR5cGU6IFRBR19DT05TVEFOVFMuUkVNT1ZFX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGF3YWl0IGFwcE11dGF0aW9uPFRhZ1R5cGU+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnZGVsZXRlVGFnJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgcmVxdWVzdGVkVGFnUHJvcHMsXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUQUdfQ09OU1RBTlRTLlJFTU9WRV9JVEVNX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsICd0YWcuZ2V0VGFncycpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZWxldGVUYWdGcm9tSXRlbSA9IGFzeW5jIChcbiAgICB0YWdJZDogc3RyaW5nLFxuICAgIGl0ZW1Eb2NJZCA9ICcnLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgaXRlbURvY0lkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IGl0ZW1Eb2NJZFxuICAgICAgICB9LFxuICAgICAgICB0YWdJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiB0YWdJZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgcmVtb3ZlZCA9IGRhdGE/LnRhZ3M/LmRlbGV0ZVRhZ0Zyb21JdGVtID8/IGZhbHNlO1xuXG4gICAgICAgIGlmKHJlbW92ZWQgJiYgaXRlbURvY0lkLnN0YXJ0c1dpdGgoJ3BlcnNvbmFzLycpKSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGZsdXguZGlzcGF0Y2goe1xuICAgICAgICAgICAgdGFnOiB7dGFnSWR9LFxuICAgICAgICAgICAgdHlwZTogVEFHX0NPTlNUQU5UUy5SRU1PVkVfUEVSU09OQV9TVUNDRVNTXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXdhaXQgZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgICAgaXRlbURvY0lkLFxuICAgICAgICAgIHJlbW92ZWQsXG4gICAgICAgICAgdGFnOiB7dGFnSWR9LFxuICAgICAgICAgIHR5cGU6IFRBR19DT05TVEFOVFMuUkVNT1ZFX0xJTktfU1VDQ0VTU1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxib29sZWFuPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2RlbGV0ZVRhZ0Zyb21JdGVtJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgW10sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUQUdfQ09OU1RBTlRTLlJFTU9WRV9QRVJTT05BX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsIGB0YWcuZ2V0VGFnc0J5SXRlbToke2l0ZW1Eb2NJZH1gKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0VGFncyA9IGFzeW5jIChcbiAgICBzZWFyY2hRdWVyeSA9ICcnLFxuICAgIHRhZ1Byb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIG9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxUYWdUeXBlW10+ID0+IHtcbiAgICBjb25zdCBpbml0aWFsVGFncyA9IGZsdXguZ2V0U3RhdGUoJ3RhZy5saXN0JywgW10pIGFzIFRhZ1R5cGVbXTtcbiAgICBjb25zdCBjYWNoZUV4cGlyZXMgPSBmbHV4LmdldFN0YXRlKCd0YWcuZXhwaXJlcycsIDApIGFzIG51bWJlcjtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlcXVlc3RlZFRhZ1Byb3BzID0gc2FuaXRpemVUYWdQcm9wcyh0YWdQcm9wcyk7XG4gICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gZ2V0Q2FjaGVkUmVxdWVzdDxUYWdUeXBlW10gfCBGbHV4QWN0aW9uPihcbiAgICAgIGZsdXgsXG4gICAgICAndGFnLmdldFRhZ3MnLFxuICAgICAge3NlYXJjaFF1ZXJ5LCB0YWdQcm9wczogcmVxdWVzdGVkVGFnUHJvcHN9LFxuICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBpZihjYWNoZWRSZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdCBhcyBUYWdUeXBlW107XG4gICAgfVxuXG4gICAgaWYoaW5pdGlhbFRhZ3MubGVuZ3RoICYmIG5vdyA8IGNhY2hlRXhwaXJlcyAmJiAhc2VhcmNoUXVlcnkgJiYgIW9wdGlvbnM/LmNhY2hlVGltZW91dCkge1xuICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7dGFnczogaW5pdGlhbFRhZ3MsIHR5cGU6IFRBR19DT05TVEFOVFMuR0VUX0xJU1RfU1VDQ0VTU30pO1xuICAgICAgcmV0dXJuIGluaXRpYWxUYWdzO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHNlYXJjaFF1ZXJ5XG4gICAgICAgID8ge1xuICAgICAgICAgIHNlYXJjaFF1ZXJ5OiB7XG4gICAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICAgIHZhbHVlOiBzZWFyY2hRdWVyeVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICA6IHt9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgZ2V0VGFncyA9IGRhdGE/LnRhZ3M/LmdldFRhZ3MgfHwgW107XG4gICAgICAgIHJldHVybiBhd2FpdCBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgICB0YWdzOiBnZXRUYWdzLFxuICAgICAgICAgIHR5cGU6IFRBR19DT05TVEFOVFMuR0VUX0xJU1RfU1VDQ0VTU1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcFF1ZXJ5PFRhZ1R5cGVbXT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdnZXRUYWdzJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgcmVxdWVzdGVkVGFnUHJvcHMsXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgJ3RhZy5nZXRUYWdzJywge3NlYXJjaFF1ZXJ5LCB0YWdQcm9wczogcmVxdWVzdGVkVGFnUHJvcHN9LCByZXN1bHQsIG9wdGlvbnMpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUQUdfQ09OU1RBTlRTLkdFVF9MSVNUX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0VGFnc0J5SXRlbSA9IGFzeW5jIChcbiAgICBpdGVtRG9jSWQ6IHN0cmluZyxcbiAgICB0YWdQcm9wczogc3RyaW5nW10gPSBbXSxcbiAgICByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPFRhZ1R5cGVbXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXF1ZXN0ZWRUYWdQcm9wcyA9IHNhbml0aXplVGFnUHJvcHModGFnUHJvcHMpO1xuICAgICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gZ2V0Q2FjaGVkUmVxdWVzdDxUYWdUeXBlW10gfCBGbHV4QWN0aW9uPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgYHRhZy5nZXRUYWdzQnlJdGVtOiR7aXRlbURvY0lkfWAsXG4gICAgICAgIHtpdGVtRG9jSWQsIHRhZ1Byb3BzOiByZXF1ZXN0ZWRUYWdQcm9wc30sXG4gICAgICAgIHJlcXVlc3RPcHRpb25zXG4gICAgICApO1xuXG4gICAgICBpZihjYWNoZWRSZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0IGFzIFRhZ1R5cGVbXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGl0ZW1Eb2NJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiBpdGVtRG9jSWRcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gYXN5bmMgKGRhdGE6IFRhZ0FwaVJlc3VsdHNUeXBlKTogUHJvbWlzZTxGbHV4QWN0aW9uPiA9PiB7XG4gICAgICAgIGNvbnN0IHRhZ3MgPSBkYXRhPy50YWdzPy5nZXRUYWdzQnlJdGVtIHx8IFtdO1xuXG4gICAgICAgIHJldHVybiBhd2FpdCBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgICB0YWdzLFxuICAgICAgICAgIHR5cGU6IFRBR19DT05TVEFOVFMuR0VUX0xJU1RfU1VDQ0VTU1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcFF1ZXJ5PFRhZ1R5cGVbXT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdnZXRUYWdzQnlJdGVtJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgcmVxdWVzdGVkVGFnUHJvcHMsXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgYHRhZy5nZXRUYWdzQnlJdGVtOiR7aXRlbURvY0lkfWAsIHtpdGVtRG9jSWQsIHRhZ1Byb3BzOiByZXF1ZXN0ZWRUYWdQcm9wc30sIHJlc3VsdCwgcmVxdWVzdE9wdGlvbnMpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUQUdfQ09OU1RBTlRTLkdFVF9MSVNUX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlVGFnID0gYXN5bmMgKHRhZzogUGFydGlhbDxUYWdUeXBlPiwgdGFnUHJvcHM6IHN0cmluZ1tdID0gW10sIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9KTogUHJvbWlzZTxUYWdUeXBlPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcXVlc3RlZFRhZ1Byb3BzID0gc2FuaXRpemVUYWdQcm9wcyh0YWdQcm9wcyk7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgdGFnOiB7XG4gICAgICAgICAgdHlwZTogJ1RhZ0lucHV0IScsXG4gICAgICAgICAgdmFsdWU6IHZhbGlkYXRlVGFnKHRhZywgdGFnQWRhcHRlck9wdGlvbnMpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IGFzeW5jIChkYXRhOiBUYWdBcGlSZXN1bHRzVHlwZSk6IFByb21pc2U8Rmx1eEFjdGlvbj4gPT4ge1xuICAgICAgICBjb25zdCB0YWcgPSBkYXRhPy50YWdzPy51cGRhdGVUYWcgfHwge307XG4gICAgICAgIHJldHVybiBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0YWcsIHR5cGU6IFRBR19DT05TVEFOVFMuVVBEQVRFX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGF3YWl0IGFwcE11dGF0aW9uPFRhZ1R5cGU+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAndXBkYXRlVGFnJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgcmVxdWVzdGVkVGFnUHJvcHMsXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUQUdfQ09OU1RBTlRTLlVQREFURV9JVEVNX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsICd0YWcuZ2V0VGFncycpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFkZFRhZyxcbiAgICBhZGRUYWdUb0l0ZW0sXG4gICAgZGVsZXRlVGFnLFxuICAgIGRlbGV0ZVRhZ0Zyb21JdGVtLFxuICAgIGdldFRhZ3NCeUl0ZW0sXG4gICAgZ2V0VGFncyxcbiAgICB1cGRhdGVUYWcsXG4gICAgdXBkYXRlVGFnQWRhcHRlcixcbiAgICB1cGRhdGVUYWdBZGFwdGVyT3B0aW9uc1xuICB9O1xufTtcbiJdLCJuYW1lcyI6WyJ2YWxpZGF0ZVRhZ0lucHV0IiwiVEFHX0NPTlNUQU5UUyIsImFwcE11dGF0aW9uIiwiYXBwUXVlcnkiLCJjbGVhckNhY2hlZFJlcXVlc3QiLCJnZXRDYWNoZWRSZXF1ZXN0Iiwic2V0Q2FjaGVkUmVxdWVzdCIsIkRBVEFfVFlQRSIsIkRFRkFVTFRfVEFHX1BST1BTIiwiREVMRVRFX1RBR19QUk9QUyIsImZpbHRlciIsImZpZWxkIiwic2FuaXRpemVUYWdQcm9wcyIsInRhZ1Byb3BzIiwiYmFzZVByb3BzIiwiZmllbGRzIiwic2VlbiIsIlNldCIsInJlZHVjZSIsInJlc3VsdCIsIm5leHRGaWVsZCIsIlN0cmluZyIsInRyaW0iLCJoYXMiLCJhZGQiLCJwdXNoIiwiZGVmYXVsdFRhZ1ZhbGlkYXRvciIsImlucHV0Iiwib3B0aW9ucyIsImNyZWF0ZVRhZ1ZhbGlkYXRvciIsImN1c3RvbUFkYXB0ZXIiLCJ2YWxpZGF0b3JPcHRpb25zIiwibWVyZ2VkT3B0aW9ucyIsInZhbGlkYXRlZCIsImN1c3RvbVZhbGlkYXRpb24iLCJjcmVhdGVUYWdBY3Rpb25zIiwiZmx1eCIsInRhZ0FkYXB0ZXJPcHRpb25zIiwiY3VzdG9tVGFnQWRhcHRlciIsInRhZ0FkYXB0ZXIiLCJ2YWxpZGF0ZVRhZyIsInVwZGF0ZVRhZ0FkYXB0ZXIiLCJhZGFwdGVyIiwidXBkYXRlVGFnQWRhcHRlck9wdGlvbnMiLCJhZGRUYWciLCJ0YWciLCJyZXF1ZXN0T3B0aW9ucyIsInJlcXVlc3RlZFRhZ1Byb3BzIiwicXVlcnlWYXJpYWJsZXMiLCJ0eXBlIiwidmFsdWUiLCJvblN1Y2Nlc3MiLCJkYXRhIiwidGFncyIsImRpc3BhdGNoIiwiQUREX0lURU1fU1VDQ0VTUyIsImVycm9yIiwiQUREX0lURU1fRVJST1IiLCJhZGRUYWdUb0l0ZW0iLCJ0YWdJZCIsIml0ZW1Eb2NJZCIsInNlc3Npb24iLCJnZXRTdGF0ZSIsInNlc3Npb25QZXJzb25hRG9jSWQiLCJwZXJzb25hSWQiLCJleGlzdGluZ1BlcnNvbmFUYWciLCJmaW5kIiwic3RhcnRzV2l0aCIsIkFERF9QRVJTT05BX1NVQ0NFU1MiLCJBRERfTElOS19TVUNDRVNTIiwiQUREX1BFUlNPTkFfRVJST1IiLCJkZWxldGVUYWciLCJkZWxldGVkVGFnIiwiUkVNT1ZFX0lURU1fU1VDQ0VTUyIsIlJFTU9WRV9JVEVNX0VSUk9SIiwiZGVsZXRlVGFnRnJvbUl0ZW0iLCJyZW1vdmVkIiwiUkVNT1ZFX1BFUlNPTkFfU1VDQ0VTUyIsIlJFTU9WRV9MSU5LX1NVQ0NFU1MiLCJSRU1PVkVfUEVSU09OQV9FUlJPUiIsImdldFRhZ3MiLCJzZWFyY2hRdWVyeSIsImluaXRpYWxUYWdzIiwiY2FjaGVFeHBpcmVzIiwibm93IiwiRGF0ZSIsImNhY2hlZFJlc3VsdCIsInVuZGVmaW5lZCIsImxlbmd0aCIsImNhY2hlVGltZW91dCIsIkdFVF9MSVNUX1NVQ0NFU1MiLCJHRVRfTElTVF9FUlJPUiIsImdldFRhZ3NCeUl0ZW0iLCJ1cGRhdGVUYWciLCJVUERB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
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy90YWdBY3Rpb25zL3RhZ0FjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7dmFsaWRhdGVUYWdJbnB1dH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvdGFnQWRhcHRlci90YWdBZGFwdGVyLmpzJztcbmltcG9ydCB7VEFHX0NPTlNUQU5UU30gZnJvbSAnLi4vLi4vc3RvcmVzL3RhZ1N0b3JlLmpzJztcbmltcG9ydCB7YXBwTXV0YXRpb24sIGFwcFF1ZXJ5fSBmcm9tICcuLi8uLi91dGlscy9hcGkuanMnO1xuaW1wb3J0IHtjbGVhckNhY2hlZFJlcXVlc3QsIGdldENhY2hlZFJlcXVlc3QsIHNldENhY2hlZFJlcXVlc3R9IGZyb20gJy4uLy4uL3V0aWxzL3JlcXVlc3RDYWNoZS5qcyc7XG5cbmltcG9ydCB0eXBlIHtGbHV4QWN0aW9uLCBGbHV4RnJhbWV3b3JrfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuaW1wb3J0IHR5cGUge1RhZ1R5cGV9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL3RhZ0FkYXB0ZXIvdGFnQWRhcHRlci5qcyc7XG5pbXBvcnQgdHlwZSB7QXBpUXVlcnlWYXJpYWJsZXN9IGZyb20gJy4uLy4uL3V0aWxzL2FwaS5qcyc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uUmVxdWVzdE9wdGlvbnN9IGZyb20gJy4uLy4uL3V0aWxzL3JlcXVlc3RDYWNoZS5qcyc7XG5cbmNvbnN0IERBVEFfVFlQRSA9ICd0YWdzJztcbmNvbnN0IERFRkFVTFRfVEFHX1BST1BTID0gWydhZGRlZCcsICdjYXRlZ29yeScsICdkZXNjcmlwdGlvbicsICdtb2RpZmllZCcsICduYW1lJywgJ3RhZ0lkJ107XG5jb25zdCBERUxFVEVfVEFHX1BST1BTID0gREVGQVVMVF9UQUdfUFJPUFMuZmlsdGVyKChmaWVsZCkgPT4gZmllbGQgIT09ICd0YWdJZCcpO1xuXG5jb25zdCBzYW5pdGl6ZVRhZ1Byb3BzID0gKHRhZ1Byb3BzOiBzdHJpbmdbXSA9IFtdLCBiYXNlUHJvcHM6IHN0cmluZ1tdID0gREVGQVVMVF9UQUdfUFJPUFMpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IGZpZWxkcyA9IFsuLi5iYXNlUHJvcHMsIC4uLnRhZ1Byb3BzXTtcbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIHJldHVybiBmaWVsZHMucmVkdWNlKChyZXN1bHQ6IHN0cmluZ1tdLCBmaWVsZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbmV4dEZpZWxkID0gU3RyaW5nKGZpZWxkIHx8ICcnKS50cmltKCk7XG5cbiAgICBpZighbmV4dEZpZWxkIHx8IHNlZW4uaGFzKG5leHRGaWVsZCkpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgc2Vlbi5hZGQobmV4dEZpZWxkKTtcbiAgICByZXN1bHQucHVzaChuZXh0RmllbGQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIFtdKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnQWRhcHRlck9wdGlvbnMge1xuICBzdHJpY3Q/OiBib29sZWFuO1xuICBhbGxvd1BhcnRpYWw/OiBib29sZWFuO1xuICBlbnZpcm9ubWVudD86ICdkZXZlbG9wbWVudCcgfCAncHJvZHVjdGlvbicgfCAndGVzdCc7XG4gIGN1c3RvbVZhbGlkYXRpb24/OiAoaW5wdXQ6IHVua25vd24pID0+IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnQWN0aW9uc09wdGlvbnMge1xuICB0YWdBZGFwdGVyPzogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogVGFnQWRhcHRlck9wdGlvbnMpID0+IGFueTtcbiAgdGFnQWRhcHRlck9wdGlvbnM/OiBUYWdBZGFwdGVyT3B0aW9ucztcbn1cblxuZXhwb3J0IHR5cGUgVGFnQXBpUmVzdWx0c1R5cGUgPSB7XG4gIHRhZ3M6IHtcbiAgICBhZGRUYWc6IFRhZ1R5cGU7XG4gICAgYWRkVGFnVG9JdGVtOiBUYWdUeXBlO1xuICAgIGRlbGV0ZVRhZzogVGFnVHlwZTtcbiAgICBkZWxldGVUYWdGcm9tSXRlbTogYm9vbGVhbjtcbiAgICBnZXRUYWdzQnlJdGVtOiBUYWdUeXBlW107XG4gICAgZ2V0VGFnczogVGFnVHlwZVtdO1xuICAgIHVwZGF0ZVRhZzogVGFnVHlwZTtcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnQWN0aW9ucyB7XG4gIGFkZFRhZzogKHRhZzogUGFydGlhbDxUYWdUeXBlPiwgdGFnUHJvcHM/OiBzdHJpbmdbXSwgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxUYWdUeXBlPjtcbiAgYWRkVGFnVG9JdGVtOiAodGFnSWQ6IHN0cmluZywgaXRlbURvY0lkPzogc3RyaW5nLCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGU+O1xuICBkZWxldGVUYWc6ICh0YWdJZDogc3RyaW5nLCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGU+O1xuICBkZWxldGVUYWdGcm9tSXRlbTogKHRhZ0lkOiBzdHJpbmcsIGl0ZW1Eb2NJZD86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgZ2V0VGFnc0J5SXRlbTogKGl0ZW1Eb2NJZDogc3RyaW5nLCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGVbXT47XG4gIGdldFRhZ3M6IChcbiAgICBzZWFyY2hRdWVyeT86IHN0cmluZyxcbiAgICB0YWdQcm9wcz86IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9uc1xuICApID0+IFByb21pc2U8VGFnVHlwZVtdPjtcbiAgdXBkYXRlVGFnOiAodGFnOiBQYXJ0aWFsPFRhZ1R5cGU+LCB0YWdQcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRhZ1R5cGU+O1xuICB1cGRhdGVUYWdBZGFwdGVyOiAoYWRhcHRlcjogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogVGFnQWRhcHRlck9wdGlvbnMpID0+IGFueSkgPT4gdm9pZDtcbiAgdXBkYXRlVGFnQWRhcHRlck9wdGlvbnM6IChvcHRpb25zOiBUYWdBZGFwdGVyT3B0aW9ucykgPT4gdm9pZDtcbn1cblxuY29uc3QgZGVmYXVsdFRhZ1ZhbGlkYXRvciA9IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFRhZ0FkYXB0ZXJPcHRpb25zKSA9PiB2YWxpZGF0ZVRhZ0lucHV0KGlucHV0KTtcblxuY29uc3QgY3JlYXRlVGFnVmFsaWRhdG9yID0gKFxuICBjdXN0b21BZGFwdGVyPzogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogVGFnQWRhcHRlck9wdGlvbnMpID0+IGFueSxcbiAgb3B0aW9ucz86IFRhZ0FkYXB0ZXJPcHRpb25zXG4pID0+IChpbnB1dDogdW5rbm93biwgdmFsaWRhdG9yT3B0aW9ucz86IFRhZ0FkYXB0ZXJPcHRpb25zKSA9PiB7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7Li4ub3B0aW9ucywgLi4udmFsaWRhdG9yT3B0aW9uc307XG4gIGxldCB2YWxpZGF0ZWQgPSBkZWZhdWx0VGFnVmFsaWRhdG9yKGlucHV0LCBtZXJnZWRPcHRpb25zKTtcblxuICBpZihjdXN0b21BZGFwdGVyKSB7XG4gICAgdmFsaWRhdGVkID0gY3VzdG9tQWRhcHRlcih2YWxpZGF0ZWQsIG1lcmdlZE9wdGlvbnMpO1xuICB9XG5cbiAgaWYobWVyZ2VkT3B0aW9ucz8uY3VzdG9tVmFsaWRhdGlvbikge1xuICAgIHZhbGlkYXRlZCA9IG1lcmdlZE9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvbih2YWxpZGF0ZWQpIGFzIFRhZ1R5cGU7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVRhZ0FjdGlvbnMgPSAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG9wdGlvbnM/OiBUYWdBY3Rpb25zT3B0aW9uc1xuKTogVGFnQWN0aW9ucyA9PiB7XG4gIGxldCB0YWdBZGFwdGVyT3B0aW9ucyA9IG9wdGlvbnM/LnRhZ0FkYXB0ZXJPcHRpb25zIHx8IHt9O1xuICBsZXQgY3VzdG9tVGFnQWRhcHRlciA9IG9wdGlvbnM/LnRhZ0FkYXB0ZXI7XG4gIGxldCB2YWxpZGF0ZVRhZyA9IGNyZWF0ZVRhZ1ZhbGlkYXRvcihjdXN0b21UYWdBZGFwdGVyLCB0YWdBZGFwdGVyT3B0aW9ucyk7XG5cbiAgY29uc3QgdXBkYXRlVGFnQWRhcHRlciA9IChhZGFwdGVyOiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBUYWdBZGFwdGVyT3B0aW9ucykgPT4gYW55KTogdm9pZCA9PiB7XG4gICAgY3VzdG9tVGFnQWRhcHRlciA9IGFkYXB0ZXI7XG4gICAgdmFsaWRhdGVUYWcgPSBjcmVhdGVUYWdWYWxpZGF0b3IoY3VzdG9tVGFnQWRhcHRlciwgdGFnQWRhcHRlck9wdGlvbnMpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVRhZ0FkYXB0ZXJPcHRpb25zID0gKG9wdGlvbnM6IFRhZ0FkYXB0ZXJPcHRpb25zKTogdm9pZCA9PiB7XG4gICAgdGFnQWRhcHRlck9wdGlvbnMgPSB7Li4udGFnQWRhcHRlck9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuICAgIHZhbGlkYXRlVGFnID0gY3JlYXRlVGFnVmFsaWRhdG9yKGN1c3RvbVRhZ0FkYXB0ZXIsIHRhZ0FkYXB0ZXJPcHRpb25zKTtcbiAgfTtcblxuICBjb25zdCBhZGRUYWcgPSBhc3luYyAodGFnOiBQYXJ0aWFsPFRhZ1R5cGU+LCB0YWdQcm9wczogc3RyaW5nW10gPSBbXSwgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge30pOiBQcm9taXNlPFRhZ1R5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdGVkVGFnUHJvcHMgPSBzYW5pdGl6ZVRhZ1Byb3BzKHRhZ1Byb3BzKTtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICB0YWc6IHtcbiAgICAgICAgICB0eXBlOiAnVGFnSW5wdXQhJyxcbiAgICAgICAgICB2YWx1ZTogdmFsaWRhdGVUYWcodGFnLCB0YWdBZGFwdGVyT3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gYXN5bmMgKGRhdGE6IFRhZ0FwaVJlc3VsdHNUeXBlKTogUHJvbWlzZTxGbHV4QWN0aW9uPiA9PiB7XG4gICAgICAgIGNvbnN0IHRhZyA9IGRhdGE/LnRhZ3M/LmFkZFRhZyB8fCB7fTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGZsdXguZGlzcGF0Y2goe3RhZywgdHlwZTogVEFHX0NPTlNUQU5UUy5BRERfSVRFTV9TVUNDRVNTfSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gYXdhaXQgYXBwTXV0YXRpb248VGFnVHlwZT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdhZGRUYWcnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICByZXF1ZXN0ZWRUYWdQcm9wcyxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFRBR19DT05TVEFOVFMuQUREX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBjbGVhckNhY2hlZFJlcXVlc3QoZmx1eCwgJ3RhZy5nZXRUYWdzJyk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZFRhZ1RvSXRlbSA9IGFzeW5jIChcbiAgICB0YWdJZDogc3RyaW5nLFxuICAgIGl0ZW1Eb2NJZCA9ICcnLFxuICAgIHRhZ1Byb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8VGFnVHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicsIHt9KSB8fCB7fSkgYXMge3BlcnNvbmFJZD86IHN0cmluZzsgdGFncz86IFRhZ1R5cGVbXX07XG4gICAgICBjb25zdCBzZXNzaW9uUGVyc29uYURvY0lkID0gc2Vzc2lvbj8ucGVyc29uYUlkID8gYHBlcnNvbmFzLyR7c2Vzc2lvbi5wZXJzb25hSWR9YCA6ICcnO1xuICAgICAgY29uc3QgZXhpc3RpbmdQZXJzb25hVGFnID0gaXRlbURvY0lkID09PSBzZXNzaW9uUGVyc29uYURvY0lkXG4gICAgICAgID8gKHNlc3Npb24/LnRhZ3MgfHwgW10pLmZpbmQoKHRhZykgPT4gU3RyaW5nKHRhZz8udGFnSWQgfHwgJycpLnRyaW0oKSA9PT0gU3RyaW5nKHRhZ0lkIHx8ICcnKS50cmltKCkpXG4gICAgICAgIDogbnVsbDtcblxuICAgICAgaWYoZXhpc3RpbmdQZXJzb25hVGFnKSB7XG4gICAgICAgIHJldHVybiBleGlzdGluZ1BlcnNvbmFUYWc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcXVlc3RlZFRhZ1Byb3BzID0gc2FuaXRpemVUYWdQcm9wcyh0YWdQcm9wcyk7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgaXRlbURvY0lkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IGl0ZW1Eb2NJZFxuICAgICAgICB9LFxuICAgICAgICB0YWdJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiB0YWdJZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgdGFnID0gZGF0YT8udGFncz8uYWRkVGFnVG9JdGVtIHx8IHt9O1xuXG4gICAgICAgIGlmKGl0ZW1Eb2NJZC5zdGFydHNXaXRoKCdwZXJzb25hcy8nKSkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0YWcsIHR5cGU6IFRBR19DT05TVEFOVFMuQUREX1BFUlNPTkFfU1VDQ0VTU30pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IGZsdXguZGlzcGF0Y2goe2l0ZW1Eb2NJZCwgdGFnLCB0eXBlOiBUQUdfQ09OU1RBTlRTLkFERF9MSU5LX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxUYWdUeXBlPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2FkZFRhZ1RvSXRlbScsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIHJlcXVlc3RlZFRhZ1Byb3BzLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVEFHX0NPTlNUQU5UUy5BRERfUEVSU09OQV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAndGFnLmdldFRhZ3MnKTtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCBgdGFnLmdldFRhZ3NCeUl0ZW06JHtpdGVtRG9jSWR9YCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGRlbGV0ZVRhZyA9IGFzeW5jICh0YWdJZDogc3RyaW5nLCB0YWdQcm9wczogc3RyaW5nW10gPSBbXSwgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge30pOiBQcm9taXNlPFRhZ1R5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdGVkVGFnUHJvcHMgPSBzYW5pdGl6ZVRhZ1Byb3BzKHRhZ1Byb3BzLCBERUxFVEVfVEFHX1BST1BTKTtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICB0YWdJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiB0YWdJZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgdGFnID0gZGF0YT8udGFncz8uZGVsZXRlVGFnIHx8IHt9O1xuICAgICAgICBjb25zdCBkZWxldGVkVGFnID0ge1xuICAgICAgICAgIC4uLnRhZyxcbiAgICAgICAgICAuLi4odGFnSWQgPyB7dGFnSWR9IDoge30pXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0YWc6IGRlbGV0ZWRUYWcsIHR5cGU6IFRBR19DT05TVEFOVFMuUkVNT1ZFX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGF3YWl0IGFwcE11dGF0aW9uPFRhZ1R5cGU+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnZGVsZXRlVGFnJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgcmVxdWVzdGVkVGFnUHJvcHMsXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUQUdfQ09OU1RBTlRTLlJFTU9WRV9JVEVNX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsICd0YWcuZ2V0VGFncycpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZWxldGVUYWdGcm9tSXRlbSA9IGFzeW5jIChcbiAgICB0YWdJZDogc3RyaW5nLFxuICAgIGl0ZW1Eb2NJZCA9ICcnLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgaXRlbURvY0lkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IGl0ZW1Eb2NJZFxuICAgICAgICB9LFxuICAgICAgICB0YWdJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiB0YWdJZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgcmVtb3ZlZCA9IGRhdGE/LnRhZ3M/LmRlbGV0ZVRhZ0Zyb21JdGVtID8/IGZhbHNlO1xuXG4gICAgICAgIGlmKHJlbW92ZWQgJiYgaXRlbURvY0lkLnN0YXJ0c1dpdGgoJ3BlcnNvbmFzLycpKSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGZsdXguZGlzcGF0Y2goe1xuICAgICAgICAgICAgdGFnOiB7dGFnSWR9LFxuICAgICAgICAgICAgdHlwZTogVEFHX0NPTlNUQU5UUy5SRU1PVkVfUEVSU09OQV9TVUNDRVNTXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXdhaXQgZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgICAgaXRlbURvY0lkLFxuICAgICAgICAgIHJlbW92ZWQsXG4gICAgICAgICAgdGFnOiB7dGFnSWR9LFxuICAgICAgICAgIHR5cGU6IFRBR19DT05TVEFOVFMuUkVNT1ZFX0xJTktfU1VDQ0VTU1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxib29sZWFuPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2RlbGV0ZVRhZ0Zyb21JdGVtJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgW10sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUQUdfQ09OU1RBTlRTLlJFTU9WRV9QRVJTT05BX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsIGB0YWcuZ2V0VGFnc0J5SXRlbToke2l0ZW1Eb2NJZH1gKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0VGFncyA9IGFzeW5jIChcbiAgICBzZWFyY2hRdWVyeSA9ICcnLFxuICAgIHRhZ1Byb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIG9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxUYWdUeXBlW10+ID0+IHtcbiAgICBjb25zdCBpbml0aWFsVGFncyA9IGZsdXguZ2V0U3RhdGUoJ3RhZy5saXN0JywgW10pIGFzIFRhZ1R5cGVbXTtcbiAgICBjb25zdCBjYWNoZUV4cGlyZXMgPSBmbHV4LmdldFN0YXRlKCd0YWcuZXhwaXJlcycsIDApIGFzIG51bWJlcjtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlcXVlc3RlZFRhZ1Byb3BzID0gc2FuaXRpemVUYWdQcm9wcyh0YWdQcm9wcyk7XG4gICAgY29uc3QgY2FjaGVkUmVzdWx0ID0gZ2V0Q2FjaGVkUmVxdWVzdDxUYWdUeXBlW10gfCBGbHV4QWN0aW9uPihcbiAgICAgIGZsdXgsXG4gICAgICAndGFnLmdldFRhZ3MnLFxuICAgICAge3NlYXJjaFF1ZXJ5LCB0YWdQcm9wczogcmVxdWVzdGVkVGFnUHJvcHN9LFxuICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBpZihjYWNoZWRSZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdCBhcyBUYWdUeXBlW107XG4gICAgfVxuXG4gICAgaWYoaW5pdGlhbFRhZ3MubGVuZ3RoICYmIG5vdyA8IGNhY2hlRXhwaXJlcyAmJiAhc2VhcmNoUXVlcnkgJiYgIW9wdGlvbnM/LmNhY2hlVGltZW91dCkge1xuICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7dGFnczogaW5pdGlhbFRhZ3MsIHR5cGU6IFRBR19DT05TVEFOVFMuR0VUX0xJU1RfU1VDQ0VTU30pO1xuICAgICAgcmV0dXJuIGluaXRpYWxUYWdzO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMgPSBzZWFyY2hRdWVyeVxuICAgICAgICA/IHtcbiAgICAgICAgICBzZWFyY2hRdWVyeToge1xuICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICB2YWx1ZTogc2VhcmNoUXVlcnlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgOiB7fTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gYXN5bmMgKGRhdGE6IFRhZ0FwaVJlc3VsdHNUeXBlKTogUHJvbWlzZTxGbHV4QWN0aW9uPiA9PiB7XG4gICAgICAgIGNvbnN0IGdldFRhZ3MgPSBkYXRhPy50YWdzPy5nZXRUYWdzIHx8IFtdO1xuICAgICAgICByZXR1cm4gYXdhaXQgZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgICAgdGFnczogZ2V0VGFncyxcbiAgICAgICAgICB0eXBlOiBUQUdfQ09OU1RBTlRTLkdFVF9MSVNUX1NVQ0NFU1NcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcHBRdWVyeTxUYWdUeXBlW10+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnZ2V0VGFncycsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIHJlcXVlc3RlZFRhZ1Byb3BzLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBhd2FpdCBzZXRDYWNoZWRSZXF1ZXN0KGZsdXgsICd0YWcuZ2V0VGFncycsIHtzZWFyY2hRdWVyeSwgdGFnUHJvcHM6IHJlcXVlc3RlZFRhZ1Byb3BzfSwgcmVzdWx0LCBvcHRpb25zKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVEFHX0NPTlNUQU5UUy5HRVRfTElTVF9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldFRhZ3NCeUl0ZW0gPSBhc3luYyAoXG4gICAgaXRlbURvY0lkOiBzdHJpbmcsXG4gICAgdGFnUHJvcHM6IHN0cmluZ1tdID0gW10sXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTxUYWdUeXBlW10+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdGVkVGFnUHJvcHMgPSBzYW5pdGl6ZVRhZ1Byb3BzKHRhZ1Byb3BzKTtcbiAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGdldENhY2hlZFJlcXVlc3Q8VGFnVHlwZVtdIHwgRmx1eEFjdGlvbj4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgIGB0YWcuZ2V0VGFnc0J5SXRlbToke2l0ZW1Eb2NJZH1gLFxuICAgICAgICB7aXRlbURvY0lkLCB0YWdQcm9wczogcmVxdWVzdGVkVGFnUHJvcHN9LFxuICAgICAgICByZXF1ZXN0T3B0aW9uc1xuICAgICAgKTtcblxuICAgICAgaWYoY2FjaGVkUmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFJlc3VsdCBhcyBUYWdUeXBlW107XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBpdGVtRG9jSWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQhJyxcbiAgICAgICAgICB2YWx1ZTogaXRlbURvY0lkXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IGFzeW5jIChkYXRhOiBUYWdBcGlSZXN1bHRzVHlwZSk6IFByb21pc2U8Rmx1eEFjdGlvbj4gPT4ge1xuICAgICAgICBjb25zdCB0YWdzID0gZGF0YT8udGFncz8uZ2V0VGFnc0J5SXRlbSB8fCBbXTtcblxuICAgICAgICByZXR1cm4gYXdhaXQgZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgICAgdGFncyxcbiAgICAgICAgICB0eXBlOiBUQUdfQ09OU1RBTlRTLkdFVF9MSVNUX1NVQ0NFU1NcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcHBRdWVyeTxUYWdUeXBlW10+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnZ2V0VGFnc0J5SXRlbScsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIHJlcXVlc3RlZFRhZ1Byb3BzLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBhd2FpdCBzZXRDYWNoZWRSZXF1ZXN0KGZsdXgsIGB0YWcuZ2V0VGFnc0J5SXRlbToke2l0ZW1Eb2NJZH1gLCB7aXRlbURvY0lkLCB0YWdQcm9wczogcmVxdWVzdGVkVGFnUHJvcHN9LCByZXN1bHQsIHJlcXVlc3RPcHRpb25zKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVEFHX0NPTlNUQU5UUy5HRVRfTElTVF9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVRhZyA9IGFzeW5jICh0YWc6IFBhcnRpYWw8VGFnVHlwZT4sIHRhZ1Byb3BzOiBzdHJpbmdbXSA9IFtdLCByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fSk6IFByb21pc2U8VGFnVHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXF1ZXN0ZWRUYWdQcm9wcyA9IHNhbml0aXplVGFnUHJvcHModGFnUHJvcHMpO1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIHRhZzoge1xuICAgICAgICAgIHR5cGU6ICdUYWdJbnB1dCEnLFxuICAgICAgICAgIHZhbHVlOiB2YWxpZGF0ZVRhZyh0YWcsIHRhZ0FkYXB0ZXJPcHRpb25zKVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgICAgY29uc3QgdGFnID0gZGF0YT8udGFncz8udXBkYXRlVGFnIHx8IHt9O1xuICAgICAgICByZXR1cm4gYXdhaXQgZmx1eC5kaXNwYXRjaCh7dGFnLCB0eXBlOiBUQUdfQ09OU1RBTlRTLlVQREFURV9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhd2FpdCBhcHBNdXRhdGlvbjxUYWdUeXBlPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ3VwZGF0ZVRhZycsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIHJlcXVlc3RlZFRhZ1Byb3BzLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVEFHX0NPTlNUQU5UUy5VUERBVEVfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGNsZWFyQ2FjaGVkUmVxdWVzdChmbHV4LCAndGFnLmdldFRhZ3MnKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRUYWcsXG4gICAgYWRkVGFnVG9JdGVtLFxuICAgIGRlbGV0ZVRhZyxcbiAgICBkZWxldGVUYWdGcm9tSXRlbSxcbiAgICBnZXRUYWdzQnlJdGVtLFxuICAgIGdldFRhZ3MsXG4gICAgdXBkYXRlVGFnLFxuICAgIHVwZGF0ZVRhZ0FkYXB0ZXIsXG4gICAgdXBkYXRlVGFnQWRhcHRlck9wdGlvbnNcbiAgfTtcbn07XG4iXSwibmFtZXMiOlsidmFsaWRhdGVUYWdJbnB1dCIsIlRBR19DT05TVEFOVFMiLCJhcHBNdXRhdGlvbiIsImFwcFF1ZXJ5IiwiY2xlYXJDYWNoZWRSZXF1ZXN0IiwiZ2V0Q2FjaGVkUmVxdWVzdCIsInNldENhY2hlZFJlcXVlc3QiLCJEQVRBX1RZUEUiLCJERUZBVUxUX1RBR19QUk9QUyIsIkRFTEVURV9UQUdfUFJPUFMiLCJmaWx0ZXIiLCJmaWVsZCIsInNhbml0aXplVGFnUHJvcHMiLCJ0YWdQcm9wcyIsImJhc2VQcm9wcyIsImZpZWxkcyIsInNlZW4iLCJTZXQiLCJyZWR1Y2UiLCJyZXN1bHQiLCJuZXh0RmllbGQiLCJTdHJpbmciLCJ0cmltIiwiaGFzIiwiYWRkIiwicHVzaCIsImRlZmF1bHRUYWdWYWxpZGF0b3IiLCJpbnB1dCIsIm9wdGlvbnMiLCJjcmVhdGVUYWdWYWxpZGF0b3IiLCJjdXN0b21BZGFwdGVyIiwidmFsaWRhdG9yT3B0aW9ucyIsIm1lcmdlZE9wdGlvbnMiLCJ2YWxpZGF0ZWQiLCJjdXN0b21WYWxpZGF0aW9uIiwiY3JlYXRlVGFnQWN0aW9ucyIsImZsdXgiLCJ0YWdBZGFwdGVyT3B0aW9ucyIsImN1c3RvbVRhZ0FkYXB0ZXIiLCJ0YWdBZGFwdGVyIiwidmFsaWRhdGVUYWciLCJ1cGRhdGVUYWdBZGFwdGVyIiwiYWRhcHRlciIsInVwZGF0ZVRhZ0FkYXB0ZXJPcHRpb25zIiwiYWRkVGFnIiwidGFnIiwicmVxdWVzdE9wdGlvbnMiLCJyZXF1ZXN0ZWRUYWdQcm9wcyIsInF1ZXJ5VmFyaWFibGVzIiwidHlwZSIsInZhbHVlIiwib25TdWNjZXNzIiwiZGF0YSIsInRhZ3MiLCJkaXNwYXRjaCIsIkFERF9JVEVNX1NVQ0NFU1MiLCJlcnJvciIsIkFERF9JVEVNX0VSUk9SIiwiYWRkVGFnVG9JdGVtIiwidGFnSWQiLCJpdGVtRG9jSWQiLCJzZXNzaW9uIiwiZ2V0U3RhdGUiLCJzZXNzaW9uUGVyc29uYURvY0lkIiwicGVyc29uYUlkIiwiZXhpc3RpbmdQZXJzb25hVGFnIiwiZmluZCIsInN0YXJ0c1dpdGgiLCJBRERfUEVSU09OQV9TVUNDRVNTIiwiQUREX0xJTktfU1VDQ0VTUyIsIkFERF9QRVJTT05BX0VSUk9SIiwiZGVsZXRlVGFnIiwiZGVsZXRlZFRhZyIsIlJFTU9WRV9JVEVNX1NVQ0NFU1MiLCJSRU1PVkVfSVRFTV9FUlJPUiIsImRlbGV0ZVRhZ0Zyb21JdGVtIiwicmVtb3ZlZCIsIlJFTU9WRV9QRVJTT05BX1NVQ0NFU1MiLCJSRU1PVkVfTElOS19TVUNDRVNTIiwiUkVNT1ZFX1BFUlNPTkFfRVJST1IiLCJnZXRUYWdzIiwic2VhcmNoUXVlcnkiLCJpbml0aWFsVGFncyIsImNhY2hlRXhwaXJlcyIsIm5vdyIsIkRhdGUiLCJjYWNoZWRSZXN1bHQiLCJ1bmRlZmluZWQiLCJsZW5ndGgiLCJjYWNoZVRpbWVvdXQiLCJHRVRfTElTVF9TVUNDRVNTIiwiR0VUX0xJU1RfRVJST1IiLCJnZXRUYWdzQnlJdGVtIiwidXBkYXRlVGFnIiwiVVBEQVRFX0lURU1fU1VDQ0VTUyIsIlVQREFURV9JVEVNX0VSUk9SIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxnQkFBZ0IsUUFBTywwQ0FBMEM7QUFDekUsU0FBUUMsYUFBYSxRQUFPLDJCQUEyQjtBQUN2RCxTQUFRQyxXQUFXLEVBQUVDLFFBQVEsUUFBTyxxQkFBcUI7QUFDekQsU0FBUUMsa0JBQWtCLEVBQUVDLGdCQUFnQixFQUFFQyxnQkFBZ0IsUUFBTyw4QkFBOEI7QUFPbkcsTUFBTUMsWUFBWTtBQUNsQixNQUFNQyxvQkFBb0I7SUFBQztJQUFTO0lBQVk7SUFBZTtJQUFZO0lBQVE7Q0FBUTtBQUMzRixNQUFNQyxtQkFBbUJELGtCQUFrQkUsTUFBTSxDQUFDLENBQUNDLFFBQVVBLFVBQVU7QUFFdkUsTUFBTUMsbUJBQW1CLENBQUNDLFdBQXFCLEVBQUUsRUFBRUMsWUFBc0JOLGlCQUFpQjtJQUN4RixNQUFNTyxTQUFTO1dBQUlEO1dBQWNEO0tBQVM7SUFDMUMsTUFBTUcsT0FBTyxJQUFJQztJQUVqQixPQUFPRixPQUFPRyxNQUFNLENBQUMsQ0FBQ0MsUUFBa0JSO1FBQ3RDLE1BQU1TLFlBQVlDLE9BQU9WLFNBQVMsSUFBSVcsSUFBSTtRQUUxQyxJQUFHLENBQUNGLGFBQWFKLEtBQUtPLEdBQUcsQ0FBQ0gsWUFBWTtZQUNwQyxPQUFPRDtRQUNUO1FBRUFILEtBQUtRLEdBQUcsQ0FBQ0o7UUFDVEQsT0FBT00sSUFBSSxDQUFDTDtRQUNaLE9BQU9EO0lBQ1QsR0FBRyxFQUFFO0FBQ1A7QUEwQ0EsTUFBTU8sc0JBQXNCLENBQUNDLE9BQWdCQyxVQUFnQzVCLGlCQUFpQjJCO0FBRTlGLE1BQU1FLHFCQUFxQixDQUN6QkMsZUFDQUYsVUFDRyxDQUFDRCxPQUFnQkk7UUFDcEIsTUFBTUMsZ0JBQWdCO1lBQUMsR0FBR0osT0FBTztZQUFFLEdBQUdH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
@@ -35,4 +35,3 @@ export interface TranslationActions {
35
35
  updateTranslationAdapterOptions: (options: BaseAdapterOptions) => void;
36
36
  }
37
37
  export declare const createTranslationActions: (flux: FluxFramework, options?: TranslationActionsOptions) => TranslationActions;
38
- //# sourceMappingURL=translationActions.d.ts.map
@@ -96,4 +96,3 @@ export interface userActions {
96
96
  updateUserAdapterOptions: (options: UserAdapterOptions) => void;
97
97
  }
98
98
  export declare const createUserActions: (flux: FluxFramework, options?: UserActionsOptions) => userActions;
99
- //# sourceMappingURL=userActions.d.ts.map
@@ -38,4 +38,3 @@ export interface VideoActions {
38
38
  readonly updateVideoAdapterOptions: (options: VideoAdapterOptions) => void;
39
39
  }
40
40
  export declare const createVideoActions: (flux: FluxFramework, options?: VideoActionsOptions) => VideoActions;
41
- //# sourceMappingURL=videoActions.d.ts.map
@@ -27,4 +27,3 @@ export interface WebsocketActions {
27
27
  readonly wsInit: (token?: string, personaId?: string) => Sockette | null;
28
28
  }
29
29
  export declare const createWebsocketActions: (flux: FluxFramework) => WebsocketActions;
30
- //# sourceMappingURL=websocketActions.d.ts.map
@@ -1,8 +1,7 @@
1
1
  import type { AppType } from '../../types/apps.types.js';
2
2
  export declare class AppValidationError extends Error {
3
- field?: string | undefined;
4
- constructor(message: string, field?: string | undefined);
3
+ field?: string;
4
+ constructor(message: string, field?: string);
5
5
  }
6
6
  export declare const validateAppInput: (app: unknown) => AppType;
7
7
  export declare const parseApp: (app: AppType) => AppType;
8
- //# sourceMappingURL=appAdapter.d.ts.map
@@ -11,11 +11,10 @@ export interface DocumentType {
11
11
  [key: string]: any;
12
12
  }
13
13
  export declare class ArangoValidationError extends Error {
14
- field?: string | undefined;
15
- constructor(message: string, field?: string | undefined);
14
+ field?: string;
15
+ constructor(message: string, field?: string);
16
16
  }
17
17
  export declare const validateDocumentInput: (doc: unknown) => DocumentType;
18
18
  export declare const formatDocumentOutput: (doc: DocumentType) => DocumentType;
19
19
  export declare const parseDocument: (doc: DocumentType) => DocumentType;
20
20
  export declare const removeEmptyKeys: <T extends Record<string, any>>(obj: T) => T;
21
- //# sourceMappingURL=arangoAdapter.d.ts.map
@@ -23,10 +23,9 @@ export interface ContentInputType {
23
23
  [key: string]: any;
24
24
  }
25
25
  export declare class ContentValidationError extends Error {
26
- field?: string | undefined;
27
- constructor(message: string, field?: string | undefined);
26
+ field?: string;
27
+ constructor(message: string, field?: string);
28
28
  }
29
29
  export declare const parseContent: (content: ContentType) => ContentType;
30
30
  export declare const parseContentInput: (content: ContentInputType) => ContentInputType;
31
31
  export declare const parseContentFromDb: (content: ContentType) => ContentType;
32
- //# sourceMappingURL=contentAdapter.d.ts.map
@@ -15,10 +15,9 @@ export interface ConversationType {
15
15
  [key: string]: any;
16
16
  }
17
17
  export declare class ConversationValidationError extends Error {
18
- field?: string | undefined;
19
- constructor(message: string, field?: string | undefined);
18
+ field?: string;
19
+ constructor(message: string, field?: string);
20
20
  }
21
21
  export declare const validateConversationInput: (conversation: unknown) => ConversationType;
22
22
  export declare const formatConversationOutput: (conversation: ConversationType) => ConversationType;
23
23
  export declare const parseConversation: (conversation: ConversationType) => ConversationType;
24
- //# sourceMappingURL=conversationAdapter.d.ts.map
@@ -37,10 +37,9 @@ export interface EventType {
37
37
  [key: string]: any;
38
38
  }
39
39
  export declare class EventValidationError extends Error {
40
- field?: string | undefined;
41
- constructor(message: string, field?: string | undefined);
40
+ field?: string;
41
+ constructor(message: string, field?: string);
42
42
  }
43
43
  export declare const validateEventInput: (event: unknown) => EventType;
44
44
  export declare const formatEventOutput: (event: EventType) => EventType;
45
45
  export declare const parseEvent: (event: EventType) => EventType;
46
- //# sourceMappingURL=eventAdapter.d.ts.map
@@ -20,11 +20,10 @@ export interface FileType {
20
20
  [key: string]: any;
21
21
  }
22
22
  export declare class FileValidationError extends Error {
23
- field?: string | undefined;
24
- constructor(message: string, field?: string | undefined);
23
+ field?: string;
24
+ constructor(message: string, field?: string);
25
25
  }
26
26
  export declare const validateFileInput: (file: unknown) => FileType;
27
27
  export declare const formatFileOutput: (file: FileType) => FileType;
28
28
  export declare const getFileType: (file: FileType) => string;
29
29
  export declare const parseFile: (file: FileType) => FileType;
30
- //# sourceMappingURL=fileAdapter.d.ts.map
@@ -20,9 +20,8 @@ export interface Group {
20
20
  userCount?: number;
21
21
  }
22
22
  export declare class GroupValidationError extends Error {
23
- field?: string | undefined;
24
- constructor(message: string, field?: string | undefined);
23
+ field?: string;
24
+ constructor(message: string, field?: string);
25
25
  }
26
26
  export declare const validateGroupInput: (group: unknown) => Group;
27
27
  export declare const parseGroup: (item: any) => Group;
28
- //# sourceMappingURL=groupAdapter.d.ts.map
@@ -29,10 +29,9 @@ export interface ImageType {
29
29
  [key: string]: any;
30
30
  }
31
31
  export declare class ImageValidationError extends Error {
32
- field?: string | undefined;
33
- constructor(message: string, field?: string | undefined);
32
+ field?: string;
33
+ constructor(message: string, field?: string);
34
34
  }
35
35
  export declare const validateImageInput: (image: unknown) => ImageType;
36
36
  export declare const formatImageOutput: (image: ImageType) => ImageType;
37
37
  export declare const parseImage: (image: ImageType) => ImageType;
38
- //# sourceMappingURL=imageAdapter.d.ts.map
@@ -31,4 +31,3 @@ export type { TagType } from './tagAdapter/tagAdapter.js';
31
31
  export type { TranslationType, TranslationInputType } from './translationAdapter/translationAdapter.js';
32
32
  export type { User } from './userAdapter/userAdapter.js';
33
33
  export type { VideoType } from '../types/videos.types.js';
34
- //# sourceMappingURL=index.d.ts.map
@@ -19,10 +19,9 @@ export interface LocationType {
19
19
  [key: string]: any;
20
20
  }
21
21
  export declare class LocationValidationError extends Error {
22
- field?: string | undefined;
23
- constructor(message: string, field?: string | undefined);
22
+ field?: string;
23
+ constructor(message: string, field?: string);
24
24
  }
25
25
  export declare const validateLocationInput: (location: unknown) => LocationType;
26
26
  export declare const formatLocationOutput: (location: LocationType) => LocationType;
27
27
  export declare const parseLocation: (location: LocationType) => LocationType;
28
- //# sourceMappingURL=locationAdapter.d.ts.map
@@ -22,10 +22,9 @@ export interface MessageType {
22
22
  [key: string]: any;
23
23
  }
24
24
  export declare class MessageValidationError extends Error {
25
- field?: string | undefined;
26
- constructor(message: string, field?: string | undefined);
25
+ field?: string;
26
+ constructor(message: string, field?: string);
27
27
  }
28
28
  export declare const validateMessageInput: (message: unknown) => MessageType;
29
29
  export declare const formatMessageOutput: (message: MessageType) => MessageType;
30
30
  export declare const parseMessage: (message: MessageType) => MessageType;
31
- //# sourceMappingURL=messageAdapter.d.ts.map
@@ -25,8 +25,8 @@ export interface Permission {
25
25
  [key: string]: any;
26
26
  }
27
27
  export declare class PermissionValidationError extends Error {
28
- field?: string | undefined;
29
- constructor(message: string, field?: string | undefined);
28
+ field?: string;
29
+ constructor(message: string, field?: string);
30
30
  }
31
31
  export declare const validatePermissionInput: (permission: unknown) => Permission;
32
32
  export declare const formatPermissionOutput: (permission: Permission) => Permission;
@@ -38,4 +38,3 @@ export declare const isUser: (userLevel: number) => boolean;
38
38
  export declare const isModerator: (userLevel: number) => boolean;
39
39
  export declare const isAdmin: (userLevel: number) => boolean;
40
40
  export declare const isSuperAdmin: (userLevel: number) => boolean;
41
- //# sourceMappingURL=permissionAdapter.d.ts.map
@@ -35,10 +35,9 @@ export interface PersonaType {
35
35
  [key: string]: any;
36
36
  }
37
37
  export declare class PersonaValidationError extends Error {
38
- field?: string | undefined;
39
- constructor(message: string, field?: string | undefined);
38
+ field?: string;
39
+ constructor(message: string, field?: string);
40
40
  }
41
41
  export declare const validatePersonaInput: (persona: unknown) => PersonaType;
42
42
  export declare const formatPersonaOutput: (persona: PersonaType) => PersonaType;
43
43
  export declare const parsePersona: (persona: PersonaType) => PersonaType;
44
- //# sourceMappingURL=personaAdapter.d.ts.map
@@ -24,10 +24,9 @@ export interface PostType {
24
24
  [key: string]: any;
25
25
  }
26
26
  export declare class PostValidationError extends Error {
27
- field?: string | undefined;
28
- constructor(message: string, field?: string | undefined);
27
+ field?: string;
28
+ constructor(message: string, field?: string);
29
29
  }
30
30
  export declare const validatePostInput: (post: unknown) => PostType;
31
31
  export declare const formatPostOutput: (post: PostType) => PostType;
32
32
  export declare const parsePost: (post: PostType) => PostType;
33
- //# sourceMappingURL=postAdapter.d.ts.map
@@ -14,10 +14,9 @@ export interface ReactionType {
14
14
  [key: string]: any;
15
15
  }
16
16
  export declare class ReactionValidationError extends Error {
17
- field?: string | undefined;
18
- constructor(message: string, field?: string | undefined);
17
+ field?: string;
18
+ constructor(message: string, field?: string);
19
19
  }
20
20
  export declare const validateReactionInput: (reaction: unknown) => ReactionType;
21
21
  export declare const formatReactionOutput: (reaction: ReactionType) => ReactionType;
22
22
  export declare const parseReaction: (reaction: ReactionType) => ReactionType;
23
- //# sourceMappingURL=reactionAdapter.d.ts.map
@@ -1,6 +1,6 @@
1
1
  export declare class ReaktorValidationError extends Error {
2
- field?: string | undefined;
3
- constructor(message: string, field?: string | undefined);
2
+ field?: string;
3
+ constructor(message: string, field?: string);
4
4
  }
5
5
  export declare const validateReaktorContent: (content?: string, length?: number) => string | undefined;
6
6
  export declare const validateReaktorDate: (date?: number) => number | undefined;
@@ -14,4 +14,3 @@ export declare const parseReaktorItemId: (itemId?: string) => string | undefined
14
14
  export declare const parseReaktorName: (name?: string) => string | undefined;
15
15
  export declare const parseReaktorType: (type?: string) => string | undefined;
16
16
  export declare const parseReaktorUrl: (url?: string) => string | undefined;
17
- //# sourceMappingURL=reaktorAdapter.d.ts.map
@@ -15,10 +15,9 @@ export interface SessionType {
15
15
  [key: string]: any;
16
16
  }
17
17
  export declare class SessionValidationError extends Error {
18
- field?: string | undefined;
19
- constructor(message: string, field?: string | undefined);
18
+ field?: string;
19
+ constructor(message: string, field?: string);
20
20
  }
21
21
  export declare const validateSessionInput: (session: unknown) => SessionType;
22
22
  export declare const formatSessionOutput: (session: SessionType) => SessionType;
23
23
  export declare const parseSession: (session: SessionType) => SessionType;
24
- //# sourceMappingURL=sessionAdapter.d.ts.map
@@ -11,11 +11,10 @@ export interface TagType {
11
11
  [key: string]: any;
12
12
  }
13
13
  export declare class TagValidationError extends Error {
14
- field?: string | undefined;
15
- constructor(message: string, field?: string | undefined);
14
+ field?: string;
15
+ constructor(message: string, field?: string);
16
16
  }
17
17
  export declare const validateTagInput: (tag: unknown) => TagType;
18
18
  export declare const formatTagOutput: (tag: TagType) => TagType;
19
19
  export declare const parseTag: (tag: TagType) => TagType;
20
20
  export declare const parseTagLegacy: (tag: TagType) => TagType;
21
- //# sourceMappingURL=tagAdapter.d.ts.map
@@ -12,10 +12,9 @@ export interface TranslationInputType {
12
12
  readonly namespace?: string;
13
13
  }
14
14
  export declare class TranslationValidationError extends Error {
15
- field?: string | undefined;
16
- constructor(message: string, field?: string | undefined);
15
+ field?: string;
16
+ constructor(message: string, field?: string);
17
17
  }
18
18
  export declare const parseTranslation: (translation: TranslationType) => TranslationType;
19
19
  export declare const parseTranslationInput: (translation: TranslationInputType) => TranslationInputType;
20
20
  export declare const validateTranslationInput: (input: unknown) => TranslationInputType;
21
- //# sourceMappingURL=translationAdapter.d.ts.map
@@ -53,8 +53,8 @@ export interface User {
53
53
  zip?: string;
54
54
  }
55
55
  export declare class UserValidationError extends Error {
56
- field?: string | undefined;
57
- constructor(message: string, field?: string | undefined);
56
+ field?: string;
57
+ constructor(message: string, field?: string);
58
58
  }
59
59
  declare const userCache: Map<string, User>;
60
60
  export declare const validateUserInput: (user: unknown) => User;
@@ -64,4 +64,3 @@ export declare const clearUserCache: () => void;
64
64
  export declare const getUserCacheSize: () => number;
65
65
  export { userCache };
66
66
  export declare const parseUserLegacy: (user: User) => User;
67
- //# sourceMappingURL=userAdapter.d.ts.map
@@ -1,8 +1,7 @@
1
1
  import type { VideoType } from '../../types/videos.types.js';
2
2
  export declare class VideoValidationError extends Error {
3
- field?: string | undefined;
4
- constructor(message: string, field?: string | undefined);
3
+ field?: string;
4
+ constructor(message: string, field?: string);
5
5
  }
6
6
  export declare const validateVideoInput: (video: unknown) => VideoType;
7
7
  export declare const parseVideo: (video: VideoType) => VideoType;
8
- //# sourceMappingURL=videoAdapter.d.ts.map
@@ -30,6 +30,7 @@ export interface ConfigAppType {
30
30
  readonly version?: string;
31
31
  }
32
32
  export interface MetropolisConfiguration {
33
+ readonly [environment: string]: MetropolisEnvironmentConfiguration | undefined;
33
34
  readonly local?: MetropolisEnvironmentConfiguration;
34
35
  readonly development?: MetropolisEnvironmentConfiguration;
35
36
  readonly production?: MetropolisEnvironmentConfiguration;
@@ -51,4 +52,3 @@ export declare const getDefaultConfig: (environment?: string) => MetropolisEnvir
51
52
  * the appropriate configuration.
52
53
  */
53
54
  export declare const resolveEnvironmentConfig: (config: MetropolisConfiguration, environment?: string) => MetropolisEnvironmentConfiguration;
54
- //# sourceMappingURL=index.d.ts.map
@@ -2,6 +2,10 @@
2
2
  * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */ import { merge } from '@nlabs/utils';
5
+ const getRuntimeEnvironment = ()=>{
6
+ const runtimeProcess = globalThis.process;
7
+ return runtimeProcess?.env?.stage || runtimeProcess?.env?.NODE_ENV;
8
+ };
5
9
  /**
6
10
  * Default configuration values for all environments.
7
11
  */ const DEFAULT_CONFIG = {
@@ -65,7 +69,7 @@
65
69
  /**
66
70
  * Gets the default configuration for a specific environment.
67
71
  */ export const getDefaultConfig = (environment)=>{
68
- const targetEnvironment = environment || process.env.stage || process.env.NODE_ENV || 'local';
72
+ const targetEnvironment = environment || getRuntimeEnvironment() || 'local';
69
73
  const envConfig = DEFAULT_CONFIG[targetEnvironment] || DEFAULT_CONFIG.local || {};
70
74
  const localConfig = DEFAULT_CONFIG.local || {};
71
75
  return merge({}, localConfig, envConfig);
@@ -75,7 +79,7 @@
75
79
  * This function determines which environment to use based on process.env and merges
76
80
  * the appropriate configuration.
77
81
  */ export const resolveEnvironmentConfig = (config, environment)=>{
78
- const targetEnvironment = environment || process.env.stage || process.env.NODE_ENV || 'local';
82
+ const targetEnvironment = environment || getRuntimeEnvironment() || 'local';
79
83
  const baseConfig = DEFAULT_CONFIG;
80
84
  // Merge base config with provided config
81
85
  const mergedConfig = merge({}, baseConfig, config);
@@ -94,4 +98,4 @@
94
98
  return resolved;
95
99
  };
96
100
 
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvY29uZmlnL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHttZXJnZX0gZnJvbSAnQG5sYWJzL3V0aWxzJztcblxuaW1wb3J0IHR5cGUge01ldHJvcG9saXNBZGFwdGVyc30gZnJvbSAnLi4vdXRpbHMvTWV0cm9wb2xpc1Byb3ZpZGVyLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb25maWdBcHBTZXNzaW9uVHlwZSB7XG4gIHJlYWRvbmx5IG1heE1pbnV0ZXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1pbk1pbnV0ZXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHJlZnJlc2hBZnRlclJhdGlvPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ0FwcFVybHMge1xuICByZWFkb25seSB3ZWJzb2NrZXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnQXBwQXBpVHlwZSB7XG4gIHJlYWRvbmx5IGVuZHBvaW50cz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHJlYWRvbmx5IHB1YmxpYz86IHN0cmluZztcbiAgcmVhZG9ubHkgcnVtPzogc3RyaW5nO1xuICByZWFkb25seSB1cmw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVwbG9hZEltYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ0FwcFR5cGUge1xuICByZWFkb25seSBhcGk/OiBDb25maWdBcHBBcGlUeXBlO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBydW0/OiB7XG4gICAgcmVhZG9ubHkgYXBwSWQ/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZGVib3VuY2VNcz86IG51bWJlcjtcbiAgICByZWFkb25seSBkZWR1cGVNcz86IG51bWJlcjtcbiAgICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcbiAgICByZWFkb25seSByZXNwZWN0UHJpdmFjeVNpZ25hbHM/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IHRocm90dGxlTXM/OiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNlc3Npb24/OiBDb25maWdBcHBTZXNzaW9uVHlwZTtcbiAgcmVhZG9ubHkgdXJscz86IENvbmZpZ0FwcFVybHM7XG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWV0cm9wb2xpc0NvbmZpZ3VyYXRpb24ge1xuICByZWFkb25seSBsb2NhbD86IE1ldHJvcG9saXNFbnZpcm9ubWVudENvbmZpZ3VyYXRpb247XG4gIHJlYWRvbmx5IGRldmVsb3BtZW50PzogTWV0cm9wb2xpc0Vudmlyb25tZW50Q29uZmlndXJhdGlvbjtcbiAgcmVhZG9ubHkgcHJvZHVjdGlvbj86IE1ldHJvcG9saXNFbnZpcm9ubWVudENvbmZpZ3VyYXRpb247XG4gIHJlYWRvbmx5IHRlc3Q/OiBNZXRyb3BvbGlzRW52aXJvbm1lbnRDb25maWd1cmF0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJvcG9saXNFbnZpcm9ubWVudENvbmZpZ3VyYXRpb24ge1xuICByZWFkb25seSBhZGFwdGVycz86IE1ldHJvcG9saXNBZGFwdGVycztcbiAgcmVhZG9ubHkgYXBwPzogUGFydGlhbDxDb25maWdBcHBUeXBlPjtcbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzQXV0aD86ICgpID0+IGJvb2xlYW47XG59XG5cbi8qKlxuICogRGVmYXVsdCBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3IgYWxsIGVudmlyb25tZW50cy5cbiAqL1xuY29uc3QgREVGQVVMVF9DT05GSUc6IE1ldHJvcG9saXNDb25maWd1cmF0aW9uID0ge1xuICBkZXZlbG9wbWVudDoge1xuICAgIGFwcDoge1xuICAgICAgYXBpOiB7XG4gICAgICAgIHB1YmxpYzogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9wdWJsaWMnLFxuICAgICAgICB1cmw6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBwJ1xuICAgICAgfSxcbiAgICAgIHNlc3Npb246IHtcbiAgICAgICAgbWF4TWludXRlczogMTUsXG4gICAgICAgIG1pbk1pbnV0ZXM6IDVcbiAgICAgIH1cbiAgICB9LFxuICAgIGVudmlyb25tZW50OiAnZGV2ZWxvcG1lbnQnLFxuICAgIGlzQXV0aDogKCkgPT4gdHJ1ZVxuICB9LFxuICBsb2NhbDoge1xuICAgIGFwcDoge1xuICAgICAgYXBpOiB7XG4gICAgICAgIHB1YmxpYzogJ2h0dHBzOi8vZGV2LWFwaS50b3JjaC5vbmUvcHVibGljJyxcbiAgICAgICAgdXJsOiAnaHR0cHM6Ly9kZXYtYXBpLnRvcmNoLm9uZS9hcHAnXG4gICAgICB9LFxuICAgICAgc2Vzc2lvbjoge1xuICAgICAgICBtYXhNaW51dGVzOiAxNSxcbiAgICAgICAgbWluTWludXRlczogNVxuICAgICAgfVxuICAgIH0sXG4gICAgZW52aXJvbm1lbnQ6ICdsb2NhbCcsXG4gICAgaXNBdXRoOiAoKSA9PiB0cnVlXG4gIH0sXG4gIHByb2R1Y3Rpb246IHtcbiAgICBhcHA6IHtcbiAgICAgIGFwaToge1xuICAgICAgICBwdWJsaWM6ICdodHRwczovL2FwaS50b3JjaC5vbmUvcHVibGljJyxcbiAgICAgICAgdXJsOiAnaHR0cHM6Ly9hcGkudG9yY2gub25lL2FwcCdcbiAgICAgIH0sXG4gICAgICBzZXNzaW9uOiB7XG4gICAgICAgIG1heE1pbnV0ZXM6IDE1LFxuICAgICAgICBtaW5NaW51dGVzOiA1XG4gICAgICB9XG4gICAgfSxcbiAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgIGlzQXV0aDogKCkgPT4gdHJ1ZVxuICB9LFxuICB0ZXN0OiB7XG4gICAgYXBwOiB7XG4gICAgICBhcGk6IHtcbiAgICAgICAgcHVibGljOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwL3B1YmxpYycsXG4gICAgICAgIHVybDogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcHAnXG4gICAgICB9LFxuICAgICAgc2Vzc2lvbjoge1xuICAgICAgICBtYXhNaW51dGVzOiAxNSxcbiAgICAgICAgbWluTWludXRlczogNVxuICAgICAgfVxuICAgIH0sXG4gICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICBpc0F1dGg6ICgpID0+IHRydWVcbiAgfVxufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIGEgc3BlY2lmaWMgZW52aXJvbm1lbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0Q29uZmlnID0gKGVudmlyb25tZW50Pzogc3RyaW5nKTogTWV0cm9wb2xpc0Vudmlyb25tZW50Q29uZmlndXJhdGlvbiA9PiB7XG4gIGNvbnN0IHRhcmdldEVudmlyb25tZW50ID0gZW52aXJvbm1lbnQgfHwgcHJvY2Vzcy5lbnYuc3RhZ2UgfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgJ2xvY2FsJztcbiAgY29uc3QgZW52Q29uZmlnID0gREVGQVVMVF9DT05GSUdbdGFyZ2V0RW52aXJvbm1lbnRdIHx8IERFRkFVTFRfQ09ORklHLmxvY2FsIHx8IHt9O1xuICBjb25zdCBsb2NhbENvbmZpZyA9IERFRkFVTFRfQ09ORklHLmxvY2FsIHx8IHt9O1xuICByZXR1cm4gbWVyZ2Uoe30sIGxvY2FsQ29uZmlnLCBlbnZDb25maWcpO1xufTtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZW52aXJvbm1lbnQtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmcm9tIGEgTWV0cm9wb2xpc0NvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICogVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIHdoaWNoIGVudmlyb25tZW50IHRvIHVzZSBiYXNlZCBvbiBwcm9jZXNzLmVudiBhbmQgbWVyZ2VzXG4gKiB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVFbnZpcm9ubWVudENvbmZpZyA9IChcbiAgY29uZmlnOiBNZXRyb3BvbGlzQ29uZmlndXJhdGlvbixcbiAgZW52aXJvbm1lbnQ/OiBzdHJpbmdcbik6IE1ldHJvcG9saXNFbnZpcm9ubWVudENvbmZpZ3VyYXRpb24gPT4ge1xuICBjb25zdCB0YXJnZXRFbnZpcm9ubWVudCA9IGVudmlyb25tZW50IHx8IHByb2Nlc3MuZW52LnN0YWdlIHx8IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8ICdsb2NhbCc7XG4gIGNvbnN0IGJhc2VDb25maWcgPSBERUZBVUxUX0NPTkZJRztcblxuICAvLyBNZXJnZSBiYXNlIGNvbmZpZyB3aXRoIHByb3ZpZGVkIGNvbmZpZ1xuICBjb25zdCBtZXJnZWRDb25maWcgPSBtZXJnZSh7fSwgYmFzZUNvbmZpZywgY29uZmlnKTtcblxuICAvLyBHZXQgdGhlIHRhcmdldCBlbnZpcm9ubWVudCBjb25maWdcbiAgY29uc3QgZW52Q29uZmlnID0gbWVyZ2VkQ29uZmlnW3RhcmdldEVudmlyb25tZW50XSB8fCBtZXJnZWRDb25maWcubG9jYWwgfHwge307XG5cbiAgLy8gTWVyZ2Ugd2l0aCBsb2NhbCBhcyBmYWxsYmFja1xuICBjb25zdCBsb2NhbENvbmZpZyA9IG1lcmdlZENvbmZpZy5sb2NhbCB8fCB7fTtcbiAgY29uc3QgcmVzb2x2ZWQgPSBtZXJnZSh7fSwgbG9jYWxDb25maWcsIGVudkNvbmZpZyk7XG5cbiAgLy8gRW5zdXJlIGVudmlyb25tZW50IGlzIHNldCAoY3JlYXRlIG5ldyBvYmplY3QgdG8gYXZvaWQgbXV0YXRpbmcgcmVhZG9ubHkpXG4gIGlmICghcmVzb2x2ZWQuZW52aXJvbm1lbnQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucmVzb2x2ZWQsXG4gICAgICBlbnZpcm9ubWVudDogdGFyZ2V0RW52aXJvbm1lbnRcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc29sdmVkO1xufTtcbiJdLCJuYW1lcyI6WyJtZXJnZSIsIkRFRkFVTFRfQ09ORklHIiwiZGV2ZWxvcG1lbnQiLCJhcHAiLCJhcGkiLCJwdWJsaWMiLCJ1cmwiLCJzZXNzaW9uIiwibWF4TWludXRlcyIsIm1pbk1pbnV0ZXMiLCJlbnZpcm9ubWVudCIsImlzQXV0aCIsImxvY2FsIiwicHJvZHVjdGlvbiIsInRlc3QiLCJnZXREZWZhdWx0Q29uZmlnIiwidGFyZ2V0RW52aXJvbm1lbnQiLCJwcm9jZXNzIiwiZW52Iiwic3RhZ2UiLCJOT0RFX0VOViIsImVudkNvbmZpZyIsImxvY2FsQ29uZmlnIiwicmVzb2x2ZUVudmlyb25tZW50Q29uZmlnIiwiY29uZmlnIiwiYmFzZUNvbmZpZyIsIm1lcmdlZENvbmZpZyIsInJlc29sdmVkIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxLQUFLLFFBQU8sZUFBZTtBQW9EbkM7O0NBRUMsR0FDRCxNQUFNQyxpQkFBMEM7SUFDOUNDLGFBQWE7UUFDWEMsS0FBSztZQUNIQyxLQUFLO2dCQUNIQyxRQUFRO2dCQUNSQyxLQUFLO1lBQ1A7WUFDQUMsU0FBUztnQkFDUEMsWUFBWTtnQkFDWkMsWUFBWTtZQUNkO1FBQ0Y7UUFDQUMsYUFBYTtRQUNiQyxRQUFRLElBQU07SUFDaEI7SUFDQUMsT0FBTztRQUNMVCxLQUFLO1lBQ0hDLEtBQUs7Z0JBQ0hDLFFBQVE7Z0JBQ1JDLEtBQUs7WUFDUDtZQUNBQyxTQUFTO2dCQUNQQyxZQUFZO2dCQUNaQyxZQUFZO1lBQ2Q7UUFDRjtRQUNBQyxhQUFhO1FBQ2JDLFFBQVEsSUFBTTtJQUNoQjtJQUNBRSxZQUFZO1FBQ1ZWLEtBQUs7WUFDSEMsS0FBSztnQkFDSEMsUUFBUTtnQkFDUkMsS0FBSztZQUNQO1lBQ0FDLFNBQVM7Z0JBQ1BDLFlBQVk7Z0JBQ1pDLFlBQVk7WUFDZDtRQUNGO1FBQ0FDLGFBQWE7UUFDYkMsUUFBUSxJQUFNO0lBQ2hCO0lBQ0FHLE1BQU07UUFDSlgsS0FBSztZQUNIQyxLQUFLO2dCQUNIQyxRQUFRO2dCQUNSQyxLQUFLO1lBQ1A7WUFDQUMsU0FBUztnQkFDUEMsWUFBWTtnQkFDWkMsWUFBWTtZQUNkO1FBQ0Y7UUFDQUMsYUFBYTtRQUNiQyxRQUFRLElBQU07SUFDaEI7QUFDRjtBQUVBOztDQUVDLEdBQ0QsT0FBTyxNQUFNSSxtQkFBbUIsQ0FBQ0w7SUFDL0IsTUFBTU0sb0JBQW9CTixlQUFlTyxRQUFRQyxHQUFHLENBQUNDLEtBQUssSUFBSUYsUUFBUUMsR0FBRyxDQUFDRSxRQUFRLElBQUk7SUFDdEYsTUFBTUMsWUFBWXBCLGNBQWMsQ0FBQ2Usa0JBQWtCLElBQUlmLGVBQWVXLEtBQUssSUFBSSxDQUFDO0lBQ2hGLE1BQU1VLGNBQWNyQixlQUFlVyxLQUFLLElBQUksQ0FBQztJQUM3QyxPQUFPWixNQUFNLENBQUMsR0FBR3NCLGFBQWFEO0FBQ2hDLEVBQUU7QUFFRjs7OztDQUlDLEdBQ0QsT0FBTyxNQUFNRSwyQkFBMkIsQ0FDdENDLFFBQ0FkO0lBRUEsTUFBTU0sb0JBQW9CTixlQUFlTyxRQUFRQyxHQUFHLENBQUNDLEtBQUssSUFBSUYsUUFBUUMsR0FBRyxDQUFDRSxRQUFRLElBQUk7SUFDdEYsTUFBTUssYUFBYXhCO0lBRW5CLHlDQUF5QztJQUN6QyxNQUFNeUIsZUFBZTFCLE1BQU0sQ0FBQyxHQUFHeUIsWUFBWUQ7SUFFM0Msb0NBQW9DO0lBQ3BDLE1BQU1ILFlBQVlLLFlBQVksQ0FBQ1Ysa0JBQWtCLElBQUlVLGFBQWFkLEtBQUssSUFBSSxDQUFDO0lBRTVFLCtCQUErQjtJQUMvQixNQUFNVSxjQUFjSSxhQUFhZCxLQUFLLElBQUksQ0FBQztJQUMzQyxNQUFNZSxXQUFXM0IsTUFBTSxDQUFDLEdBQUdzQixhQUFhRDtJQUV4QywyRUFBMkU7SUFDM0UsSUFBSSxDQUFDTSxTQUFTakIsV0FBVyxFQUFFO1FBQ3pCLE9BQU87WUFDTCxHQUFHaUIsUUFBUTtZQUNYakIsYUFBYU07UUFDZjtJQUNGO0lBRUEsT0FBT1c7QUFDVCxFQUFFIn0=
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvY29uZmlnL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHttZXJnZX0gZnJvbSAnQG5sYWJzL3V0aWxzJztcblxuaW1wb3J0IHR5cGUge01ldHJvcG9saXNBZGFwdGVyc30gZnJvbSAnLi4vdXRpbHMvTWV0cm9wb2xpc1Byb3ZpZGVyLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb25maWdBcHBTZXNzaW9uVHlwZSB7XG4gIHJlYWRvbmx5IG1heE1pbnV0ZXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1pbk1pbnV0ZXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHJlZnJlc2hBZnRlclJhdGlvPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ0FwcFVybHMge1xuICByZWFkb25seSB3ZWJzb2NrZXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnQXBwQXBpVHlwZSB7XG4gIHJlYWRvbmx5IGVuZHBvaW50cz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHJlYWRvbmx5IHB1YmxpYz86IHN0cmluZztcbiAgcmVhZG9ubHkgcnVtPzogc3RyaW5nO1xuICByZWFkb25seSB1cmw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVwbG9hZEltYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ0FwcFR5cGUge1xuICByZWFkb25seSBhcGk/OiBDb25maWdBcHBBcGlUeXBlO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBydW0/OiB7XG4gICAgcmVhZG9ubHkgYXBwSWQ/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZGVib3VuY2VNcz86IG51bWJlcjtcbiAgICByZWFkb25seSBkZWR1cGVNcz86IG51bWJlcjtcbiAgICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcbiAgICByZWFkb25seSByZXNwZWN0UHJpdmFjeVNpZ25hbHM/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IHRocm90dGxlTXM/OiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNlc3Npb24/OiBDb25maWdBcHBTZXNzaW9uVHlwZTtcbiAgcmVhZG9ubHkgdXJscz86IENvbmZpZ0FwcFVybHM7XG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWV0cm9wb2xpc0NvbmZpZ3VyYXRpb24ge1xuICByZWFkb25seSBbZW52aXJvbm1lbnQ6IHN0cmluZ106IE1ldHJvcG9saXNFbnZpcm9ubWVudENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGxvY2FsPzogTWV0cm9wb2xpc0Vudmlyb25tZW50Q29uZmlndXJhdGlvbjtcbiAgcmVhZG9ubHkgZGV2ZWxvcG1lbnQ/OiBNZXRyb3BvbGlzRW52aXJvbm1lbnRDb25maWd1cmF0aW9uO1xuICByZWFkb25seSBwcm9kdWN0aW9uPzogTWV0cm9wb2xpc0Vudmlyb25tZW50Q29uZmlndXJhdGlvbjtcbiAgcmVhZG9ubHkgdGVzdD86IE1ldHJvcG9saXNFbnZpcm9ubWVudENvbmZpZ3VyYXRpb247XG59XG5cbmNvbnN0IGdldFJ1bnRpbWVFbnZpcm9ubWVudCA9ICgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBydW50aW1lUHJvY2VzcyA9IChnbG9iYWxUaGlzIGFzIHtcbiAgICBwcm9jZXNzPzoge2Vudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD59O1xuICB9KS5wcm9jZXNzO1xuICByZXR1cm4gcnVudGltZVByb2Nlc3M/LmVudj8uc3RhZ2UgfHwgcnVudGltZVByb2Nlc3M/LmVudj8uTk9ERV9FTlY7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJvcG9saXNFbnZpcm9ubWVudENvbmZpZ3VyYXRpb24ge1xuICByZWFkb25seSBhZGFwdGVycz86IE1ldHJvcG9saXNBZGFwdGVycztcbiAgcmVhZG9ubHkgYXBwPzogUGFydGlhbDxDb25maWdBcHBUeXBlPjtcbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzQXV0aD86ICgpID0+IGJvb2xlYW47XG59XG5cbi8qKlxuICogRGVmYXVsdCBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3IgYWxsIGVudmlyb25tZW50cy5cbiAqL1xuY29uc3QgREVGQVVMVF9DT05GSUc6IE1ldHJvcG9saXNDb25maWd1cmF0aW9uID0ge1xuICBkZXZlbG9wbWVudDoge1xuICAgIGFwcDoge1xuICAgICAgYXBpOiB7XG4gICAgICAgIHB1YmxpYzogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9wdWJsaWMnLFxuICAgICAgICB1cmw6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBwJ1xuICAgICAgfSxcbiAgICAgIHNlc3Npb246IHtcbiAgICAgICAgbWF4TWludXRlczogMTUsXG4gICAgICAgIG1pbk1pbnV0ZXM6IDVcbiAgICAgIH1cbiAgICB9LFxuICAgIGVudmlyb25tZW50OiAnZGV2ZWxvcG1lbnQnLFxuICAgIGlzQXV0aDogKCkgPT4gdHJ1ZVxuICB9LFxuICBsb2NhbDoge1xuICAgIGFwcDoge1xuICAgICAgYXBpOiB7XG4gICAgICAgIHB1YmxpYzogJ2h0dHBzOi8vZGV2LWFwaS50b3JjaC5vbmUvcHVibGljJyxcbiAgICAgICAgdXJsOiAnaHR0cHM6Ly9kZXYtYXBpLnRvcmNoLm9uZS9hcHAnXG4gICAgICB9LFxuICAgICAgc2Vzc2lvbjoge1xuICAgICAgICBtYXhNaW51dGVzOiAxNSxcbiAgICAgICAgbWluTWludXRlczogNVxuICAgICAgfVxuICAgIH0sXG4gICAgZW52aXJvbm1lbnQ6ICdsb2NhbCcsXG4gICAgaXNBdXRoOiAoKSA9PiB0cnVlXG4gIH0sXG4gIHByb2R1Y3Rpb246IHtcbiAgICBhcHA6IHtcbiAgICAgIGFwaToge1xuICAgICAgICBwdWJsaWM6ICdodHRwczovL2FwaS50b3JjaC5vbmUvcHVibGljJyxcbiAgICAgICAgdXJsOiAnaHR0cHM6Ly9hcGkudG9yY2gub25lL2FwcCdcbiAgICAgIH0sXG4gICAgICBzZXNzaW9uOiB7XG4gICAgICAgIG1heE1pbnV0ZXM6IDE1LFxuICAgICAgICBtaW5NaW51dGVzOiA1XG4gICAgICB9XG4gICAgfSxcbiAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgIGlzQXV0aDogKCkgPT4gdHJ1ZVxuICB9LFxuICB0ZXN0OiB7XG4gICAgYXBwOiB7XG4gICAgICBhcGk6IHtcbiAgICAgICAgcHVibGljOiAnaHR0cDovL2xvY2FsaG9zdDozMDAwL3B1YmxpYycsXG4gICAgICAgIHVybDogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcHAnXG4gICAgICB9LFxuICAgICAgc2Vzc2lvbjoge1xuICAgICAgICBtYXhNaW51dGVzOiAxNSxcbiAgICAgICAgbWluTWludXRlczogNVxuICAgICAgfVxuICAgIH0sXG4gICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICBpc0F1dGg6ICgpID0+IHRydWVcbiAgfVxufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIGEgc3BlY2lmaWMgZW52aXJvbm1lbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0Q29uZmlnID0gKGVudmlyb25tZW50Pzogc3RyaW5nKTogTWV0cm9wb2xpc0Vudmlyb25tZW50Q29uZmlndXJhdGlvbiA9PiB7XG4gIGNvbnN0IHRhcmdldEVudmlyb25tZW50ID0gZW52aXJvbm1lbnQgfHwgZ2V0UnVudGltZUVudmlyb25tZW50KCkgfHwgJ2xvY2FsJztcbiAgY29uc3QgZW52Q29uZmlnID0gREVGQVVMVF9DT05GSUdbdGFyZ2V0RW52aXJvbm1lbnRdIHx8IERFRkFVTFRfQ09ORklHLmxvY2FsIHx8IHt9O1xuICBjb25zdCBsb2NhbENvbmZpZyA9IERFRkFVTFRfQ09ORklHLmxvY2FsIHx8IHt9O1xuICByZXR1cm4gbWVyZ2Uoe30sIGxvY2FsQ29uZmlnLCBlbnZDb25maWcpO1xufTtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZW52aXJvbm1lbnQtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmcm9tIGEgTWV0cm9wb2xpc0NvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICogVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIHdoaWNoIGVudmlyb25tZW50IHRvIHVzZSBiYXNlZCBvbiBwcm9jZXNzLmVudiBhbmQgbWVyZ2VzXG4gKiB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVFbnZpcm9ubWVudENvbmZpZyA9IChcbiAgY29uZmlnOiBNZXRyb3BvbGlzQ29uZmlndXJhdGlvbixcbiAgZW52aXJvbm1lbnQ/OiBzdHJpbmdcbik6IE1ldHJvcG9saXNFbnZpcm9ubWVudENvbmZpZ3VyYXRpb24gPT4ge1xuICBjb25zdCB0YXJnZXRFbnZpcm9ubWVudCA9IGVudmlyb25tZW50IHx8IGdldFJ1bnRpbWVFbnZpcm9ubWVudCgpIHx8ICdsb2NhbCc7XG4gIGNvbnN0IGJhc2VDb25maWcgPSBERUZBVUxUX0NPTkZJRztcblxuICAvLyBNZXJnZSBiYXNlIGNvbmZpZyB3aXRoIHByb3ZpZGVkIGNvbmZpZ1xuICBjb25zdCBtZXJnZWRDb25maWcgPSBtZXJnZSh7fSwgYmFzZUNvbmZpZywgY29uZmlnKTtcblxuICAvLyBHZXQgdGhlIHRhcmdldCBlbnZpcm9ubWVudCBjb25maWdcbiAgY29uc3QgZW52Q29uZmlnID0gbWVyZ2VkQ29uZmlnW3RhcmdldEVudmlyb25tZW50XSB8fCBtZXJnZWRDb25maWcubG9jYWwgfHwge307XG5cbiAgLy8gTWVyZ2Ugd2l0aCBsb2NhbCBhcyBmYWxsYmFja1xuICBjb25zdCBsb2NhbENvbmZpZyA9IG1lcmdlZENvbmZpZy5sb2NhbCB8fCB7fTtcbiAgY29uc3QgcmVzb2x2ZWQgPSBtZXJnZSh7fSwgbG9jYWxDb25maWcsIGVudkNvbmZpZyk7XG5cbiAgLy8gRW5zdXJlIGVudmlyb25tZW50IGlzIHNldCAoY3JlYXRlIG5ldyBvYmplY3QgdG8gYXZvaWQgbXV0YXRpbmcgcmVhZG9ubHkpXG4gIGlmICghcmVzb2x2ZWQuZW52aXJvbm1lbnQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucmVzb2x2ZWQsXG4gICAgICBlbnZpcm9ubWVudDogdGFyZ2V0RW52aXJvbm1lbnRcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc29sdmVkO1xufTtcbiJdLCJuYW1lcyI6WyJtZXJnZSIsImdldFJ1bnRpbWVFbnZpcm9ubWVudCIsInJ1bnRpbWVQcm9jZXNzIiwiZ2xvYmFsVGhpcyIsInByb2Nlc3MiLCJlbnYiLCJzdGFnZSIsIk5PREVfRU5WIiwiREVGQVVMVF9DT05GSUciLCJkZXZlbG9wbWVudCIsImFwcCIsImFwaSIsInB1YmxpYyIsInVybCIsInNlc3Npb24iLCJtYXhNaW51dGVzIiwibWluTWludXRlcyIsImVudmlyb25tZW50IiwiaXNBdXRoIiwibG9jYWwiLCJwcm9kdWN0aW9uIiwidGVzdCIsImdldERlZmF1bHRDb25maWciLCJ0YXJnZXRFbnZpcm9ubWVudCIsImVudkNvbmZpZyIsImxvY2FsQ29uZmlnIiwicmVzb2x2ZUVudmlyb25tZW50Q29uZmlnIiwiY29uZmlnIiwiYmFzZUNvbmZpZyIsIm1lcmdlZENvbmZpZyIsInJlc29sdmVkIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxLQUFLLFFBQU8sZUFBZTtBQThDbkMsTUFBTUMsd0JBQXdCO0lBQzVCLE1BQU1DLGlCQUFpQixBQUFDQyxXQUVyQkMsT0FBTztJQUNWLE9BQU9GLGdCQUFnQkcsS0FBS0MsU0FBU0osZ0JBQWdCRyxLQUFLRTtBQUM1RDtBQVNBOztDQUVDLEdBQ0QsTUFBTUMsaUJBQTBDO0lBQzlDQyxhQUFhO1FBQ1hDLEtBQUs7WUFDSEMsS0FBSztnQkFDSEMsUUFBUTtnQkFDUkMsS0FBSztZQUNQO1lBQ0FDLFNBQVM7Z0JBQ1BDLFlBQVk7Z0JBQ1pDLFlBQVk7WUFDZDtRQUNGO1FBQ0FDLGFBQWE7UUFDYkMsUUFBUSxJQUFNO0lBQ2hCO0lBQ0FDLE9BQU87UUFDTFQsS0FBSztZQUNIQyxLQUFLO2dCQUNIQyxRQUFRO2dCQUNSQyxLQUFLO1lBQ1A7WUFDQUMsU0FBUztnQkFDUEMsWUFBWTtnQkFDWkMsWUFBWTtZQUNkO1FBQ0Y7UUFDQUMsYUFBYTtRQUNiQyxRQUFRLElBQU07SUFDaEI7SUFDQUUsWUFBWTtRQUNWVixLQUFLO1lBQ0hDLEtBQUs7Z0JBQ0hDLFFBQVE7Z0JBQ1JDLEtBQUs7WUFDUDtZQUNBQyxTQUFTO2dCQUNQQyxZQUFZO2dCQUNaQyxZQUFZO1lBQ2Q7UUFDRjtRQUNBQyxhQUFhO1FBQ2JDLFFBQVEsSUFBTTtJQUNoQjtJQUNBRyxNQUFNO1FBQ0pYLEtBQUs7WUFDSEMsS0FBSztnQkFDSEMsUUFBUTtnQkFDUkMsS0FBSztZQUNQO1lBQ0FDLFNBQVM7Z0JBQ1BDLFlBQVk7Z0JBQ1pDLFlBQVk7WUFDZDtRQUNGO1FBQ0FDLGFBQWE7UUFDYkMsUUFBUSxJQUFNO0lBQ2hCO0FBQ0Y7QUFFQTs7Q0FFQyxHQUNELE9BQU8sTUFBTUksbUJBQW1CLENBQUNMO0lBQy9CLE1BQU1NLG9CQUFvQk4sZUFBZWhCLDJCQUEyQjtJQUNwRSxNQUFNdUIsWUFBWWhCLGNBQWMsQ0FBQ2Usa0JBQWtCLElBQUlmLGVBQWVXLEtBQUssSUFBSSxDQUFDO0lBQ2hGLE1BQU1NLGNBQWNqQixlQUFlVyxLQUFLLElBQUksQ0FBQztJQUM3QyxPQUFPbkIsTUFBTSxDQUFDLEdBQUd5QixhQUFhRDtBQUNoQyxFQUFFO0FBRUY7Ozs7Q0FJQyxHQUNELE9BQU8sTUFBTUUsMkJBQTJCLENBQ3RDQyxRQUNBVjtJQUVBLE1BQU1NLG9CQUFvQk4sZUFBZWhCLDJCQUEyQjtJQUNwRSxNQUFNMkIsYUFBYXBCO0lBRW5CLHlDQUF5QztJQUN6QyxNQUFNcUIsZUFBZTdCLE1BQU0sQ0FBQyxHQUFHNEIsWUFBWUQ7SUFFM0Msb0NBQW9DO0lBQ3BDLE1BQU1ILFlBQVlLLFlBQVksQ0FBQ04sa0JBQWtCLElBQUlNLGFBQWFWLEtBQUssSUFBSSxDQUFDO0lBRTVFLCtCQUErQjtJQUMvQixNQUFNTSxjQUFjSSxhQUFhVixLQUFLLElBQUksQ0FBQztJQUMzQyxNQUFNVyxXQUFXOUIsTUFBTSxDQUFDLEdBQUd5QixhQUFhRDtJQUV4QywyRUFBMkU7SUFDM0UsSUFBSSxDQUFDTSxTQUFTYixXQUFXLEVBQUU7UUFDekIsT0FBTztZQUNMLEdBQUdhLFFBQVE7WUFDWGIsYUFBYU07UUFDZjtJQUNGO0lBRUEsT0FBT087QUFDVCxFQUFFIn0=
@@ -57,4 +57,3 @@ export declare const REACTION_TYPES: {
57
57
  readonly VIEW: 'view';
58
58
  };
59
59
  export type ReactionType = typeof REACTION_TYPES[keyof typeof REACTION_TYPES];
60
- //# sourceMappingURL=Collections.d.ts.map
@@ -12,4 +12,3 @@ export declare const MetropolisConstants: {
12
12
  UPDATE_NOTIFICATIONS: string;
13
13
  UPDATE_SESSION: string;
14
14
  };
15
- //# sourceMappingURL=MetropolisConstants.d.ts.map
@@ -1,3 +1,2 @@
1
1
  export declare const MessageUpdate = "mutate MessageUpdate($message: MessageInput) {\n onUpdateMessage(message: $message) {\n added\n content\n from\n modified\n to\n }\n}";
2
2
  export declare const MessageSubscription = "subscription MessageSubscription {\n onUpdateMessage(message: $message) {\n added\n content\n from\n modified\n to\n }\n}";
3
- //# sourceMappingURL=message.d.ts.map
@@ -1,3 +1,2 @@
1
1
  export declare const NotificationUpdate = "mutate NotificationUpdate($notification: NotificationInput) {\n onUpdateNotification(notification: $notification) {\n added\n content\n from\n modified\n to\n }\n}";
2
2
  export declare const NotificationSubscription = "subscription NotificationSubscription {\n onUpdateNotification(notification: $notification) {\n added\n content\n from\n modified\n to\n }\n}";
3
- //# sourceMappingURL=notification.d.ts.map
@@ -1,2 +1 @@
1
1
  export declare const SessionSubscription = "subscription SessionSubscription {\n onUpdateSession {\n active\n added\n email\n id\n latitude\n longitude\n location\n modified\n phone\n username\n userAccess\n }\n}";
2
- //# sourceMappingURL=session.d.ts.map
package/lib/index.d.ts CHANGED
@@ -53,4 +53,3 @@ export * from './actions/restActions/restActions.js';
53
53
  export * from './actions/videoActions/videoActions.js';
54
54
  export * from './constants/Collections.js';
55
55
  export * from './types/index.js';
56
- //# sourceMappingURL=index.d.ts.map