@nlabs/reaktor 1.6.3 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. package/LICENSE +74 -201
  2. package/README.md +48 -16
  3. package/lib/actions/analytics.d.ts +10 -0
  4. package/lib/actions/analytics.js +539 -0
  5. package/lib/actions/apps.js +2 -2
  6. package/lib/actions/connections.js +1 -1
  7. package/lib/actions/content.js +2 -2
  8. package/lib/actions/conversations.js +2 -2
  9. package/lib/actions/crm.d.ts +11 -1
  10. package/lib/actions/crm.js +443 -13
  11. package/lib/actions/crud.js +2 -2
  12. package/lib/actions/dynamodb.d.ts +1 -1
  13. package/lib/actions/dynamodb.js +2 -2
  14. package/lib/actions/email.d.ts +1 -1
  15. package/lib/actions/email.js +2 -2
  16. package/lib/actions/files.js +2 -2
  17. package/lib/actions/flags.d.ts +6 -0
  18. package/lib/actions/flags.js +147 -0
  19. package/lib/actions/groups.js +2 -2
  20. package/lib/actions/images.d.ts +1 -1
  21. package/lib/actions/images.js +2 -2
  22. package/lib/actions/index.d.ts +3 -2
  23. package/lib/actions/index.js +4 -3
  24. package/lib/actions/ios.js +1 -1
  25. package/lib/actions/locations.js +2 -2
  26. package/lib/actions/messages.js +2 -2
  27. package/lib/actions/notifications.d.ts +1 -1
  28. package/lib/actions/notifications.js +2 -2
  29. package/lib/actions/payments.d.ts +3 -3
  30. package/lib/actions/payments.js +144 -189
  31. package/lib/actions/personas.js +1 -1
  32. package/lib/actions/posts.d.ts +0 -4
  33. package/lib/actions/posts.js +2 -4
  34. package/lib/actions/query.js +2 -2
  35. package/lib/actions/reactions.js +2 -2
  36. package/lib/actions/rum.js +148 -45
  37. package/lib/actions/s3.d.ts +1 -1
  38. package/lib/actions/s3.js +2 -2
  39. package/lib/actions/search.js +2 -2
  40. package/lib/actions/sms.js +2 -2
  41. package/lib/actions/statistics.js +2 -2
  42. package/lib/actions/subscriptions.js +2 -2
  43. package/lib/actions/tags.js +2 -2
  44. package/lib/actions/users.d.ts +4 -1
  45. package/lib/actions/users.js +85 -11
  46. package/lib/actions/videos.js +2 -2
  47. package/lib/adapters/arangoAdapter.js +1 -1
  48. package/lib/adapters/contentAdapter.js +2 -2
  49. package/lib/adapters/fileAdapter.js +1 -1
  50. package/lib/adapters/imageAdapter.js +1 -1
  51. package/lib/adapters/index.js +1 -1
  52. package/lib/adapters/messageAdapter.js +1 -1
  53. package/lib/adapters/postAdapter.js +1 -1
  54. package/lib/adapters/reaktorAdapter.js +1 -1
  55. package/lib/adapters/tagAdapter.d.ts +0 -1
  56. package/lib/adapters/tagAdapter.js +1 -2
  57. package/lib/adapters/userAdapter.d.ts +0 -1
  58. package/lib/adapters/userAdapter.js +1 -2
  59. package/lib/config.js +8 -2
  60. package/lib/constants/collections.d.ts +17 -1
  61. package/lib/constants/collections.js +18 -2
  62. package/lib/handlers/graphqlHandler.d.ts +2 -2
  63. package/lib/handlers/graphqlHandler.js +2 -19
  64. package/lib/index.d.ts +4 -2
  65. package/lib/index.js +4 -3
  66. package/lib/lambdas/actions/websockets.js +2 -2
  67. package/lib/lambdas/authorizer.js +2 -2
  68. package/lib/lambdas/connection.js +2 -2
  69. package/lib/lambdas/utils/message.js +2 -2
  70. package/lib/lambdas/utils/websocket.d.ts +1 -1
  71. package/lib/lambdas/utils/websocket.js +2 -2
  72. package/lib/mocks/conversation.js +1 -1
  73. package/lib/mocks/file.js +1 -1
  74. package/lib/mocks/group.js +1 -1
  75. package/lib/mocks/image.js +1 -1
  76. package/lib/mocks/post.js +1 -1
  77. package/lib/mocks/tag.js +1 -1
  78. package/lib/mocks/user.js +1 -1
  79. package/lib/mocks/video.js +1 -1
  80. package/lib/mutations/analytics/analytics.d.ts +1 -0
  81. package/lib/mutations/analytics/analytics.js +35 -0
  82. package/lib/mutations/content/content.js +2 -2
  83. package/lib/mutations/crm/crm.js +57 -11
  84. package/lib/mutations/events/events.js +2 -2
  85. package/lib/mutations/flags/flags.d.ts +1 -0
  86. package/lib/mutations/flags/flags.js +33 -0
  87. package/lib/mutations/groups/groups.js +2 -2
  88. package/lib/mutations/images/images.js +2 -2
  89. package/lib/mutations/index.d.ts +3 -1
  90. package/lib/mutations/index.js +13 -3
  91. package/lib/mutations/locations/locations.js +2 -2
  92. package/lib/mutations/messages/messages.js +2 -2
  93. package/lib/mutations/personas/personas.js +2 -2
  94. package/lib/mutations/posts/posts.js +2 -2
  95. package/lib/mutations/reactions/reactions.js +2 -2
  96. package/lib/mutations/rum/rum.js +2 -2
  97. package/lib/mutations/statistics/statistics.js +2 -2
  98. package/lib/mutations/subscriptions/subscriptions.js +2 -2
  99. package/lib/mutations/tags/tags.js +2 -2
  100. package/lib/mutations/users/users.js +30 -17
  101. package/lib/mutations/videos/videos.js +2 -2
  102. package/lib/objectTypes/analytics.d.ts +8 -0
  103. package/lib/objectTypes/analytics.js +147 -0
  104. package/lib/objectTypes/app.js +2 -2
  105. package/lib/objectTypes/bankAccount.js +2 -2
  106. package/lib/objectTypes/connection.js +2 -2
  107. package/lib/objectTypes/content.js +2 -2
  108. package/lib/objectTypes/conversation.js +2 -2
  109. package/lib/objectTypes/creditCard.js +2 -2
  110. package/lib/objectTypes/crm.d.ts +5 -0
  111. package/lib/objectTypes/crm.js +68 -2
  112. package/lib/objectTypes/document.js +1 -1
  113. package/lib/objectTypes/error.js +2 -2
  114. package/lib/objectTypes/event.js +2 -2
  115. package/lib/objectTypes/external.js +2 -2
  116. package/lib/objectTypes/file.js +2 -2
  117. package/lib/objectTypes/filter.js +2 -2
  118. package/lib/objectTypes/flag.d.ts +1 -0
  119. package/lib/objectTypes/flag.js +35 -0
  120. package/lib/objectTypes/group.js +2 -2
  121. package/lib/objectTypes/iapSubscription.js +2 -2
  122. package/lib/objectTypes/image.d.ts +1 -1
  123. package/lib/objectTypes/image.js +2 -2
  124. package/lib/objectTypes/index.d.ts +2 -0
  125. package/lib/objectTypes/index.js +3 -1
  126. package/lib/objectTypes/location.js +2 -2
  127. package/lib/objectTypes/message.js +2 -2
  128. package/lib/objectTypes/passcode.js +2 -2
  129. package/lib/objectTypes/persona.js +2 -2
  130. package/lib/objectTypes/plan.js +2 -2
  131. package/lib/objectTypes/post.js +2 -2
  132. package/lib/objectTypes/query.js +2 -2
  133. package/lib/objectTypes/reaction.js +2 -2
  134. package/lib/objectTypes/relation.js +2 -2
  135. package/lib/objectTypes/rum.js +4 -4
  136. package/lib/objectTypes/search.js +2 -2
  137. package/lib/objectTypes/statistics.js +2 -2
  138. package/lib/objectTypes/subscription.js +2 -2
  139. package/lib/objectTypes/tag.js +2 -2
  140. package/lib/objectTypes/user.js +10 -2
  141. package/lib/objectTypes/video.d.ts +1 -1
  142. package/lib/objectTypes/video.js +2 -2
  143. package/lib/queries/analytics/analytics.d.ts +1 -0
  144. package/lib/queries/analytics/analytics.js +41 -0
  145. package/lib/queries/content/content.js +2 -2
  146. package/lib/queries/crm/crm.js +52 -13
  147. package/lib/queries/events/events.js +2 -2
  148. package/lib/queries/flags/flags.d.ts +1 -0
  149. package/lib/queries/flags/flags.js +16 -0
  150. package/lib/queries/groups/groups.js +2 -2
  151. package/lib/queries/images/images.js +2 -2
  152. package/lib/queries/index.d.ts +3 -1
  153. package/lib/queries/index.js +13 -3
  154. package/lib/queries/locations/locations.js +2 -2
  155. package/lib/queries/messages/messages.js +1 -1
  156. package/lib/queries/personas/personas.js +2 -2
  157. package/lib/queries/posts/posts.js +2 -2
  158. package/lib/queries/query/query.js +2 -2
  159. package/lib/queries/reactions/reactions.js +2 -2
  160. package/lib/queries/statistics/statistics.js +2 -2
  161. package/lib/queries/subscriptions/subscriptions.js +1 -1
  162. package/lib/queries/tags/tags.js +2 -2
  163. package/lib/queries/users/users.js +2 -2
  164. package/lib/queries/videos/videos.js +2 -2
  165. package/lib/templates/email/layout.js +1 -1
  166. package/lib/templates/email/passwordForgot.js +1 -1
  167. package/lib/templates/email/passwordRecovery.js +1 -1
  168. package/lib/templates/email/verifyEmail.js +1 -1
  169. package/lib/templates/email/welcome.js +1 -1
  170. package/lib/templates/sms/passwordForgot.js +1 -1
  171. package/lib/templates/sms/passwordRecovery.js +1 -1
  172. package/lib/templates/sms/verifyEmail.js +1 -1
  173. package/lib/templates/sms/verifyPhone.js +1 -1
  174. package/lib/templates/sms/welcome.js +1 -1
  175. package/lib/types/analytics.types.d.ts +92 -0
  176. package/lib/types/analytics.types.js +6 -0
  177. package/lib/types/apps.types.d.ts +1 -1
  178. package/lib/types/apps.types.js +2 -2
  179. package/lib/types/arangodb.types.d.ts +2 -2
  180. package/lib/types/arangodb.types.js +2 -2
  181. package/lib/types/auth.types.d.ts +4 -1
  182. package/lib/types/auth.types.js +2 -2
  183. package/lib/types/connections.types.d.ts +1 -1
  184. package/lib/types/connections.types.js +2 -2
  185. package/lib/types/content.types.d.ts +1 -1
  186. package/lib/types/content.types.js +2 -2
  187. package/lib/types/conversations.types.d.ts +1 -1
  188. package/lib/types/conversations.types.js +2 -2
  189. package/lib/types/crm.types.d.ts +58 -2
  190. package/lib/types/crm.types.js +2 -2
  191. package/lib/types/email.types.d.ts +1 -1
  192. package/lib/types/email.types.js +2 -2
  193. package/lib/types/error.types.js +1 -1
  194. package/lib/types/files.types.d.ts +1 -1
  195. package/lib/types/files.types.js +2 -2
  196. package/lib/types/flags.types.d.ts +28 -0
  197. package/lib/types/flags.types.js +3 -0
  198. package/lib/types/google.types.d.ts +1 -1
  199. package/lib/types/google.types.js +2 -2
  200. package/lib/types/groups.types.d.ts +1 -1
  201. package/lib/types/groups.types.js +2 -2
  202. package/lib/types/images.types.d.ts +1 -1
  203. package/lib/types/images.types.js +2 -2
  204. package/lib/types/index.d.ts +3 -1
  205. package/lib/types/index.js +4 -2
  206. package/lib/types/locations.types.d.ts +1 -1
  207. package/lib/types/locations.types.js +2 -2
  208. package/lib/types/messages.types.d.ts +1 -1
  209. package/lib/types/messages.types.js +2 -2
  210. package/lib/types/notifications.types.d.ts +1 -1
  211. package/lib/types/notifications.types.js +2 -2
  212. package/lib/types/payments.types.d.ts +4 -1
  213. package/lib/types/payments.types.js +2 -2
  214. package/lib/types/personas.types.js +1 -1
  215. package/lib/types/posts.types.d.ts +1 -1
  216. package/lib/types/posts.types.js +2 -2
  217. package/lib/types/rum.types.d.ts +3 -3
  218. package/lib/types/rum.types.js +2 -2
  219. package/lib/types/statistics.types.js +1 -1
  220. package/lib/types/tags.types.d.ts +1 -1
  221. package/lib/types/tags.types.js +2 -2
  222. package/lib/types/users.types.d.ts +2 -1
  223. package/lib/types/users.types.js +2 -2
  224. package/lib/types/videos.types.d.ts +1 -1
  225. package/lib/types/videos.types.js +2 -2
  226. package/lib/types/websockets.types.d.ts +1 -1
  227. package/lib/types/websockets.types.js +2 -2
  228. package/lib/upload.js +4 -9
  229. package/lib/utils/adapterUtils.d.ts +1 -1
  230. package/lib/utils/adapterUtils.js +2 -2
  231. package/lib/utils/analyticsUtils.d.ts +1 -1
  232. package/lib/utils/analyticsUtils.js +2 -2
  233. package/lib/utils/appContext.d.ts +2 -0
  234. package/lib/utils/appContext.js +10 -0
  235. package/lib/utils/aqlHelpers.d.ts +1 -1
  236. package/lib/utils/aqlHelpers.js +2 -2
  237. package/lib/utils/arangodbUtils.d.ts +9 -1
  238. package/lib/utils/arangodbUtils.js +10 -2
  239. package/lib/utils/authUtils.js +2 -2
  240. package/lib/utils/awsUtils.js +2 -2
  241. package/lib/utils/collectionRegistry.d.ts +1 -1
  242. package/lib/utils/collectionRegistry.js +17 -2
  243. package/lib/utils/contextUtils.d.ts +2 -2
  244. package/lib/utils/contextUtils.js +2 -2
  245. package/lib/utils/dbI18n.example.d.ts +1 -1
  246. package/lib/utils/dbI18n.example.js +2 -2
  247. package/lib/utils/dbI18n.js +2 -2
  248. package/lib/utils/googleTranslate.d.ts +1 -1
  249. package/lib/utils/googleTranslate.js +2 -2
  250. package/lib/utils/graphqlUtils.d.ts +2 -0
  251. package/lib/utils/graphqlUtils.js +1 -1
  252. package/lib/utils/imageUtils.js +1 -1
  253. package/lib/utils/index.d.ts +1 -1
  254. package/lib/utils/index.js +2 -2
  255. package/lib/utils/languageDetection.js +1 -1
  256. package/lib/utils/localeUtils.d.ts +1 -1
  257. package/lib/utils/localeUtils.example.d.ts +1 -1
  258. package/lib/utils/localeUtils.example.js +2 -2
  259. package/lib/utils/localeUtils.js +2 -2
  260. package/lib/utils/middlewareUtils.js +1 -1
  261. package/lib/utils/queryBuilder.d.ts +1 -1
  262. package/lib/utils/queryBuilder.js +2 -2
  263. package/lib/utils/schemaUtils.js +1 -1
  264. package/lib/utils/sessionUtils.d.ts +4 -0
  265. package/lib/utils/sessionUtils.js +2 -2
  266. package/lib/utils/stripeUtils.d.ts +1 -1
  267. package/lib/utils/stripeUtils.js +2 -2
  268. package/lib/utils/templateUtils.js +1 -1
  269. package/lib/utils/testUtils.js +2 -2
  270. package/lib/utils/translationQueue.d.ts +1 -1
  271. package/lib/utils/translationQueue.example.d.ts +1 -1
  272. package/lib/utils/translationQueue.example.js +2 -2
  273. package/lib/utils/translationQueue.js +2 -2
  274. package/lib/videoProcessing.js +1 -1
  275. package/package.json +49 -86
  276. package/lib/actions/websockets.d.ts +0 -20
  277. package/lib/actions/websockets.js +0 -164
  278. package/lib/mocks/nlabs.png +0 -0
@@ -1,15 +1,19 @@
1
1
  /**
2
2
  * Copyright (c) 2026-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
3
+ * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  */ import { PutRumEventsCommand, RUMClient } from '@aws-sdk/client-rum';
5
5
  import { createHash, randomUUID } from 'crypto';
6
6
  import { Config } from '../config.js';
7
+ import { COLLECTIONS } from '../constants/collections.js';
7
8
  import { UserError } from '../utils/analyticsUtils.js';
9
+ import { useDb } from '../utils/arangodbUtils.js';
10
+ import { getAnalyticsById } from './analytics.js';
8
11
  const MAX_BATCH_SIZE = 50;
9
12
  const MAX_PROPERTIES = 20;
10
13
  const MAX_SEQUENCE = 1_000_000;
11
14
  const MAX_TIMESTAMP_AGE_MS = 24 * 60 * 60 * 1000;
12
15
  const MAX_TIMESTAMP_FUTURE_MS = 5 * 60 * 1000;
16
+ const LOG_RETENTION_MS = 90 * 24 * 60 * 60 * 1000;
13
17
  const UUID_PATTERN = /^[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}$/i;
14
18
  const BLOCKED_PROPERTY_KEYS = new Set([
15
19
  'accountid',
@@ -31,6 +35,7 @@ const BLOCKED_PROPERTY_KEYS = new Set([
31
35
  'userid'
32
36
  ]);
33
37
  const EMAIL_PATTERN = /\b[^\s@]+@[^\s@]+\.[^\s@]+\b/i;
38
+ const logCollectionInitialization = new Map();
34
39
  const RUM_METADATA_PROPERTY_KEYS = {
35
40
  browserLanguage: [
36
41
  'browserlanguage'
@@ -83,10 +88,26 @@ const parseEnvironmentAppMonitors = ()=>{
83
88
  throw new UserError('invalid_rum_config');
84
89
  }
85
90
  };
86
- const getAppMonitor = (context, appId)=>{
91
+ const getAppMonitor = async (context, analyticsId)=>{
87
92
  const configuredMonitors = context.config?.aws?.rum?.appMonitors || Config.get('aws.rum.appMonitors', {});
88
93
  const environmentMonitors = parseEnvironmentAppMonitors();
89
- const configuredMonitor = environmentMonitors[appId] || configuredMonitors[appId];
94
+ const configuredMonitor = environmentMonitors[analyticsId] || configuredMonitors[analyticsId];
95
+ const analytics = await getAnalyticsById(context, analyticsId);
96
+ const appId = normalizeText(analytics?.appId || analyticsId, 128);
97
+ if (!configuredMonitor) {
98
+ if (!analytics || !appId) {
99
+ throw new UserError('invalid_rum_app');
100
+ }
101
+ return {
102
+ appId,
103
+ monitor: {
104
+ domain: analytics.domain,
105
+ id: analytics.monitorId,
106
+ name: analytics.monitorName,
107
+ version: normalizeText(context.config?.details?.version || Config.get('details.version') || '1.0.0', 255)
108
+ }
109
+ };
110
+ }
90
111
  const monitor = typeof configuredMonitor === 'string' ? {
91
112
  id: configuredMonitor
92
113
  } : configuredMonitor;
@@ -95,17 +116,21 @@ const getAppMonitor = (context, appId)=>{
95
116
  throw new UserError('invalid_rum_app');
96
117
  }
97
118
  return {
98
- ...monitor,
99
- domain: normalizeDomain(monitor.domain || context.config?.details?.url || Config.get('details.url') || appId),
100
- id: monitorId,
101
- name: normalizeText(monitor.name || appId, 255),
102
- version: normalizeText(monitor.version || context.config?.details?.version || Config.get('details.version') || '1.0.0', 255)
119
+ appId,
120
+ monitor: {
121
+ ...monitor,
122
+ domain: normalizeDomain(monitor.domain || context.config?.details?.url || Config.get('details.url') || analyticsId),
123
+ id: monitorId,
124
+ name: normalizeText(monitor.name || analyticsId, 255),
125
+ version: normalizeText(monitor.version || context.config?.details?.version || Config.get('details.version') || '1.0.0', 255)
126
+ }
103
127
  };
104
128
  };
105
129
  const getRumClient = (context)=>{
106
130
  const awsConfig = context.config?.aws || Config.get('aws', {});
107
131
  const { accessKeyId, secretAccessKey, sessionToken } = awsConfig.credentials || {};
108
- const credentials = accessKeyId && secretAccessKey ? {
132
+ const usesRuntimeCredentials = Boolean(process.env.AWS_SESSION_TOKEN && accessKeyId === process.env.AWS_ACCESS_KEY_ID && secretAccessKey === process.env.AWS_SECRET_ACCESS_KEY);
133
+ const credentials = accessKeyId && secretAccessKey && !usesRuntimeCredentials ? {
109
134
  accessKeyId,
110
135
  secretAccessKey,
111
136
  ...sessionToken ? {
@@ -195,52 +220,130 @@ const groupEventsByJourney = (events)=>events.reduce((groups, event)=>{
195
220
  groups.set(event.journeyId, journeyEvents);
196
221
  return groups;
197
222
  }, new Map());
223
+ const initializeLogCollection = async (databaseName)=>{
224
+ const cacheKey = databaseName || 'reaktor';
225
+ const existingInitialization = logCollectionInitialization.get(cacheKey);
226
+ if (existingInitialization) {
227
+ return existingInitialization;
228
+ }
229
+ const initialization = (async ()=>{
230
+ const database = useDb(databaseName);
231
+ const collection = database.collection(COLLECTIONS.LOGS);
232
+ if (!await collection.exists()) {
233
+ try {
234
+ await database.createCollection(COLLECTIONS.LOGS);
235
+ } catch (error) {
236
+ if (!await collection.exists()) {
237
+ throw error;
238
+ }
239
+ }
240
+ }
241
+ await Promise.all([
242
+ collection.ensureIndex({
243
+ fields: [
244
+ 'appId',
245
+ 'eventId'
246
+ ],
247
+ name: 'logs_app_event',
248
+ type: 'persistent',
249
+ unique: true
250
+ }),
251
+ collection.ensureIndex({
252
+ expireAfter: 0,
253
+ fields: [
254
+ 'expiresAt'
255
+ ],
256
+ name: 'logs_expiry',
257
+ type: 'ttl'
258
+ })
259
+ ]);
260
+ })();
261
+ logCollectionInitialization.set(cacheKey, initialization);
262
+ try {
263
+ await initialization;
264
+ } catch (error) {
265
+ logCollectionInitialization.delete(cacheKey);
266
+ throw error;
267
+ }
268
+ };
269
+ const persistRumEvents = async (databaseName, analyticsId, appId, events, now)=>{
270
+ await initializeLogCollection(databaseName);
271
+ const collection = useDb(databaseName).collection(COLLECTIONS.LOGS);
272
+ const expiresAt = Math.floor((now + LOG_RETENTION_MS) / 1000);
273
+ await Promise.all(events.map((event)=>collection.save({
274
+ _key: createHash('sha256').update(`${appId}:${event.eventId}`).digest('hex'),
275
+ added: now,
276
+ analyticsId,
277
+ appId,
278
+ eventId: event.eventId,
279
+ expiresAt,
280
+ journeyId: event.journeyId,
281
+ name: event.name,
282
+ ...event.path ? {
283
+ path: event.path
284
+ } : {},
285
+ properties: event.properties,
286
+ sequence: event.sequence,
287
+ timestamp: event.timestamp,
288
+ type: event.type
289
+ }, {
290
+ overwriteMode: 'ignore',
291
+ silent: true
292
+ })));
293
+ };
198
294
  export const trackRum = async (context, batch)=>{
199
- const appId = normalizeText(batch?.appId, 128);
295
+ const analyticsId = normalizeText(batch?.analyticsId, 128);
200
296
  const inputEvents = Array.isArray(batch?.events) ? batch.events : [];
201
- if (!appId || inputEvents.length === 0 || inputEvents.length > MAX_BATCH_SIZE) {
297
+ if (!analyticsId || inputEvents.length === 0 || inputEvents.length > MAX_BATCH_SIZE) {
202
298
  throw new UserError('invalid_rum_batch');
203
299
  }
204
300
  const now = Date.now();
205
- const monitor = getAppMonitor(context, appId);
301
+ const { appId, monitor } = await getAppMonitor(context, analyticsId);
302
+ if (!context.resolveAppDatabaseName) {
303
+ throw new UserError('app_database_resolver_unavailable');
304
+ }
305
+ const databaseName = await context.resolveAppDatabaseName(context, appId);
206
306
  const events = inputEvents.map((event)=>sanitizeEvent(event, now));
207
307
  const eventsByJourney = groupEventsByJourney(events);
208
308
  const client = getRumClient(context);
209
- await Promise.all(Array.from(eventsByJourney.entries()).map(([journeyId, journeyEvents])=>client.send(new PutRumEventsCommand({
210
- ...monitor.alias ? {
211
- Alias: monitor.alias
212
- } : {},
213
- AppMonitorDetails: {
214
- id: monitor.id,
215
- name: monitor.name,
216
- version: monitor.version
217
- },
218
- BatchId: randomUUID(),
219
- Id: monitor.id,
220
- RumEvents: journeyEvents.map((event)=>({
221
- details: JSON.stringify({
222
- appId,
223
- name: event.name,
224
- ...event.path ? {
225
- path: event.path
226
- } : {},
227
- properties: event.properties,
228
- sequence: event.sequence
229
- }),
230
- id: event.eventId,
231
- metadata: JSON.stringify(getRumMetadata(appId, monitor.domain, event.properties)),
232
- timestamp: new Date(event.timestamp),
233
- type: event.type
234
- })),
235
- UserDetails: {
236
- sessionId: journeyId,
237
- userId: journeyId
238
- }
239
- }))));
309
+ await Promise.all([
310
+ persistRumEvents(databaseName, analyticsId, appId, events, now),
311
+ ...Array.from(eventsByJourney.entries()).map(([journeyId, journeyEvents])=>client.send(new PutRumEventsCommand({
312
+ ...monitor.alias ? {
313
+ Alias: monitor.alias
314
+ } : {},
315
+ AppMonitorDetails: {
316
+ id: monitor.id,
317
+ name: monitor.name,
318
+ version: monitor.version
319
+ },
320
+ BatchId: randomUUID(),
321
+ Id: monitor.id,
322
+ RumEvents: journeyEvents.map((event)=>({
323
+ details: JSON.stringify({
324
+ appId,
325
+ name: event.name,
326
+ ...event.path ? {
327
+ path: event.path
328
+ } : {},
329
+ properties: event.properties,
330
+ sequence: event.sequence
331
+ }),
332
+ id: event.eventId,
333
+ metadata: JSON.stringify(getRumMetadata(appId, monitor.domain, event.properties)),
334
+ timestamp: new Date(event.timestamp),
335
+ type: event.type
336
+ })),
337
+ UserDetails: {
338
+ sessionId: journeyId,
339
+ userId: journeyId
340
+ }
341
+ })))
342
+ ]);
240
343
  return {
241
344
  accepted: events.length,
242
- appId
345
+ analyticsId
243
346
  };
244
347
  };
245
348
 
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FjdGlvbnMvcnVtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI2LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge1B1dFJ1bUV2ZW50c0NvbW1hbmQsIFJVTUNsaWVudH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXJ1bSc7XG5pbXBvcnQge2NyZWF0ZUhhc2gsIHJhbmRvbVVVSUR9IGZyb20gJ2NyeXB0byc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuaW1wb3J0IHtVc2VyRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcblxuaW1wb3J0IHR5cGUge0F3c0NvbmZpZywgQXdzUnVtQXBwTW9uaXRvckNvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtSdW1CYXRjaElucHV0VHlwZSwgUnVtRXZlbnRJbnB1dFR5cGUsIFJ1bVByb3BlcnR5LCBSdW1UcmFja1Jlc3VsdFR5cGV9IGZyb20gJy4uL3R5cGVzL3J1bS50eXBlcy5qcyc7XG5cbmNvbnN0IE1BWF9CQVRDSF9TSVpFID0gNTA7XG5jb25zdCBNQVhfUFJPUEVSVElFUyA9IDIwO1xuY29uc3QgTUFYX1NFUVVFTkNFID0gMV8wMDBfMDAwO1xuY29uc3QgTUFYX1RJTUVTVEFNUF9BR0VfTVMgPSAyNCAqIDYwICogNjAgKiAxMDAwO1xuY29uc3QgTUFYX1RJTUVTVEFNUF9GVVRVUkVfTVMgPSA1ICogNjAgKiAxMDAwO1xuY29uc3QgVVVJRF9QQVRURVJOID0gL15bYS1mXFxkXXs4fS1bYS1mXFxkXXs0fS1bYS1mXFxkXXs0fS1bYS1mXFxkXXs0fS1bYS1mXFxkXXsxMn0kL2k7XG5jb25zdCBCTE9DS0VEX1BST1BFUlRZX0tFWVMgPSBuZXcgU2V0KFtcbiAgJ2FjY291bnRpZCcsXG4gICdhZGRyZXNzJyxcbiAgJ2VtYWlsJyxcbiAgJ2ZpcnN0bmFtZScsXG4gICdmdWxsbmFtZScsXG4gICdnZW9sb2NhdGlvbicsXG4gICdpcCcsXG4gICdpcGFkZHJlc3MnLFxuICAnbGFzdG5hbWUnLFxuICAnbGF0aXR1ZGUnLFxuICAnbG9uZ2l0dWRlJyxcbiAgJ25hbWUnLFxuICAncGhvbmUnLFxuICAncmVmZXJyZXInLFxuICAndG9rZW4nLFxuICAndXNlcmFnZW50JyxcbiAgJ3VzZXJpZCdcbl0pO1xuY29uc3QgRU1BSUxfUEFUVEVSTiA9IC9cXGJbXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rXFxiL2k7XG5cbnR5cGUgUnVtQXBwTW9uaXRvck1hcCA9IFJlY29yZDxzdHJpbmcsIEF3c1J1bUFwcE1vbml0b3JDb25maWcgfCBzdHJpbmc+O1xudHlwZSBSdW1NZXRhZGF0YSA9IFJlY29yZDxzdHJpbmcsIFJ1bVByb3BlcnR5PjtcblxuY29uc3QgUlVNX01FVEFEQVRBX1BST1BFUlRZX0tFWVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHtcbiAgYnJvd3Nlckxhbmd1YWdlOiBbJ2Jyb3dzZXJsYW5ndWFnZSddLFxuICBicm93c2VyTmFtZTogWydicm93c2VybmFtZSddLFxuICBicm93c2VyVmVyc2lvbjogWydicm93c2VydmVyc2lvbiddLFxuICBkZXZpY2VUeXBlOiBbJ2RldmljZXR5cGUnXSxcbiAgaW50ZXJhY3Rpb246IFsnaW50ZXJhY3Rpb24nXSxcbiAgb3NOYW1lOiBbJ29zbmFtZSddLFxuICBvc1ZlcnNpb246IFsnb3N2ZXJzaW9uJ10sXG4gIHBhZ2VJZDogWydwYWdlaWQnXSxcbiAgcGFyZW50UGFnZUlkOiBbJ3BhcmVudHBhZ2VpZCcsICdwYXJlbnRwYWdlJ11cbn07XG5cbmNvbnN0IG5vcm1hbGl6ZVRleHQgPSAodmFsdWU6IHVua25vd24sIG1heExlbmd0aDogbnVtYmVyKTogc3RyaW5nID0+XG4gIFN0cmluZyh2YWx1ZSB8fCAnJykudHJpbSgpLnNsaWNlKDAsIG1heExlbmd0aCk7XG5cbmNvbnN0IG5vcm1hbGl6ZVByb3BlcnR5S2V5ID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgdmFsdWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOV0vZywgJycpO1xuXG5jb25zdCBub3JtYWxpemVEb21haW4gPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgPT4gbm9ybWFsaXplVGV4dCh2YWx1ZSwgMjUzKVxuICAucmVwbGFjZSgvXmh0dHBzPzpcXC9cXC8vaSwgJycpXG4gIC5zcGxpdCgnLycpWzBdXG4gIC5zcGxpdCgnOicpWzBdO1xuXG5jb25zdCBnZXRBd3NVdWlkID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZihVVUlEX1BBVFRFUk4udGVzdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBjb25zdCBoYXNoID0gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHZhbHVlKS5kaWdlc3QoJ2hleCcpO1xuICByZXR1cm4gYCR7aGFzaC5zbGljZSgwLCA4KX0tJHtoYXNoLnNsaWNlKDgsIDEyKX0tJHtoYXNoLnNsaWNlKDEyLCAxNil9LSR7aGFzaC5zbGljZSgxNiwgMjApfS0ke2hhc2guc2xpY2UoMjAsIDMyKX1gO1xufTtcblxuY29uc3QgcGFyc2VFbnZpcm9ubWVudEFwcE1vbml0b3JzID0gKCk6IFJ1bUFwcE1vbml0b3JNYXAgPT4ge1xuICBjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52LkFXU19SVU1fQVBQX01PTklUT1JTO1xuXG4gIGlmKCF2YWx1ZSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgcmV0dXJuIHBhcnNlZCAmJiB0eXBlb2YgcGFyc2VkID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShwYXJzZWQpID8gcGFyc2VkIDoge307XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ2ludmFsaWRfcnVtX2NvbmZpZycpO1xuICB9XG59O1xuXG5jb25zdCBnZXRBcHBNb25pdG9yID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcElkOiBzdHJpbmcpOiBBd3NSdW1BcHBNb25pdG9yQ29uZmlnID0+IHtcbiAgY29uc3QgY29uZmlndXJlZE1vbml0b3JzID0gY29udGV4dC5jb25maWc/LmF3cz8ucnVtPy5hcHBNb25pdG9ycyB8fFxuICAgIENvbmZpZy5nZXQ8UnVtQXBwTW9uaXRvck1hcD4oJ2F3cy5ydW0uYXBwTW9uaXRvcnMnLCB7fSk7XG4gIGNvbnN0IGVudmlyb25tZW50TW9uaXRvcnMgPSBwYXJzZUVudmlyb25tZW50QXBwTW9uaXRvcnMoKTtcbiAgY29uc3QgY29uZmlndXJlZE1vbml0b3IgPSBlbnZpcm9ubWVudE1vbml0b3JzW2FwcElkXSB8fCBjb25maWd1cmVkTW9uaXRvcnNbYXBwSWRdO1xuICBjb25zdCBtb25pdG9yID0gdHlwZW9mIGNvbmZpZ3VyZWRNb25pdG9yID09PSAnc3RyaW5nJyA/IHtpZDogY29uZmlndXJlZE1vbml0b3J9IDogY29uZmlndXJlZE1vbml0b3I7XG4gIGNvbnN0IG1vbml0b3JJZCA9IG5vcm1hbGl6ZVRleHQobW9uaXRvcj8uaWQsIDM2KTtcblxuICBpZighbW9uaXRvcklkIHx8ICFVVUlEX1BBVFRFUk4udGVzdChtb25pdG9ySWQpKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcignaW52YWxpZF9ydW1fYXBwJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLm1vbml0b3IsXG4gICAgZG9tYWluOiBub3JtYWxpemVEb21haW4oXG4gICAgICBtb25pdG9yLmRvbWFpbiB8fCBjb250ZXh0LmNvbmZpZz8uZGV0YWlscz8udXJsIHx8IENvbmZpZy5nZXQoJ2RldGFpbHMudXJsJykgfHwgYXBwSWRcbiAgICApLFxuICAgIGlkOiBtb25pdG9ySWQsXG4gICAgbmFtZTogbm9ybWFsaXplVGV4dChtb25pdG9yLm5hbWUgfHwgYXBwSWQsIDI1NSksXG4gICAgdmVyc2lvbjogbm9ybWFsaXplVGV4dChcbiAgICAgIG1vbml0b3IudmVyc2lvbiB8fCBjb250ZXh0LmNvbmZpZz8uZGV0YWlscz8udmVyc2lvbiB8fCBDb25maWcuZ2V0KCdkZXRhaWxzLnZlcnNpb24nKSB8fCAnMS4wLjAnLFxuICAgICAgMjU1XG4gICAgKVxuICB9O1xufTtcblxuY29uc3QgZ2V0UnVtQ2xpZW50ID0gKGNvbnRleHQ6IEFwaUNvbnRleHQpOiBSVU1DbGllbnQgPT4ge1xuICBjb25zdCBhd3NDb25maWc6IEF3c0NvbmZpZyA9IGNvbnRleHQuY29uZmlnPy5hd3MgfHwgQ29uZmlnLmdldDxBd3NDb25maWc+KCdhd3MnLCB7fSk7XG4gIGNvbnN0IHthY2Nlc3NLZXlJZCwgc2VjcmV0QWNjZXNzS2V5LCBzZXNzaW9uVG9rZW59ID0gYXdzQ29uZmlnLmNyZWRlbnRpYWxzIHx8IHt9O1xuICBjb25zdCBjcmVkZW50aWFscyA9IGFjY2Vzc0tleUlkICYmIHNlY3JldEFjY2Vzc0tleSA/IHtcbiAgICBhY2Nlc3NLZXlJZCxcbiAgICBzZWNyZXRBY2Nlc3NLZXksXG4gICAgLi4uKHNlc3Npb25Ub2tlbiA/IHtzZXNzaW9uVG9rZW59IDoge30pXG4gIH0gOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIG5ldyBSVU1DbGllbnQoe1xuICAgIC4uLihjcmVkZW50aWFscyA/IHtjcmVkZW50aWFsc30gOiB7fSksXG4gICAgLi4uKGF3c0NvbmZpZy5yZWdpb24gPyB7cmVnaW9uOiBhd3NDb25maWcucmVnaW9ufSA6IHt9KVxuICB9KTtcbn07XG5cbmNvbnN0IHNhbml0aXplVGltZXN0YW1wID0gKHZhbHVlOiB1bmtub3duLCBub3c6IG51bWJlcik6IG51bWJlciA9PiB7XG4gIGNvbnN0IHRpbWVzdGFtcCA9IE51bWJlcih2YWx1ZSk7XG5cbiAgaWYoXG4gICAgIU51bWJlci5pc0Zpbml0ZSh0aW1lc3RhbXApIHx8XG4gICAgdGltZXN0YW1wIDwgbm93IC0gTUFYX1RJTUVTVEFNUF9BR0VfTVMgfHxcbiAgICB0aW1lc3RhbXAgPiBub3cgKyBNQVhfVElNRVNUQU1QX0ZVVFVSRV9NU1xuICApIHtcbiAgICByZXR1cm4gbm93O1xuICB9XG5cbiAgcmV0dXJuIE1hdGguZmxvb3IodGltZXN0YW1wKTtcbn07XG5cbmNvbnN0IHNhbml0aXplUHJvcGVydGllcyA9IChcbiAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+ID0ge31cbik6IFJlY29yZDxzdHJpbmcsIFJ1bVByb3BlcnR5PiA9PiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKVxuICAuc2xpY2UoMCwgTUFYX1BST1BFUlRJRVMpXG4gIC5yZWR1Y2U8UmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+PigocmVzdWx0LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eUtleSA9IG5vcm1hbGl6ZVRleHQoa2V5LCA2NCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFByb3BlcnR5S2V5ID0gbm9ybWFsaXplUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuXG4gICAgaWYoXG4gICAgICBwcm9wZXJ0eUtleSAmJlxuICAgICAgIUJMT0NLRURfUFJPUEVSVFlfS0VZUy5oYXMobm9ybWFsaXplZFByb3BlcnR5S2V5KSAmJlxuICAgICAgWydib29sZWFuJywgJ251bWJlcicsICdzdHJpbmcnXS5pbmNsdWRlcyh0eXBlb2YgdmFsdWUpXG4gICAgKSB7XG4gICAgICBpZih0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHRleHRWYWx1ZSA9IG5vcm1hbGl6ZVRleHQodmFsdWUsIDI1Nik7XG5cbiAgICAgICAgaWYodGV4dFZhbHVlICYmICFFTUFJTF9QQVRURVJOLnRlc3QodGV4dFZhbHVlKSkge1xuICAgICAgICAgIHJlc3VsdFtwcm9wZXJ0eUtleV0gPSB0ZXh0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZih0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fCBOdW1iZXIuaXNGaW5pdGUodmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFtwcm9wZXJ0eUtleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCB7fSk7XG5cbmNvbnN0IGdldFJ1bU1ldGFkYXRhID0gKFxuICBhcHBJZDogc3RyaW5nLFxuICBkb21haW46IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+XG4pOiBSdW1NZXRhZGF0YSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRQcm9wZXJ0aWVzID0gT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykucmVkdWNlPFJlY29yZDxzdHJpbmcsIFJ1bVByb3BlcnR5Pj4oXG4gICAgKHJlc3VsdCwgW2tleSwgdmFsdWVdKSA9PiAoey4uLnJlc3VsdCwgW25vcm1hbGl6ZVByb3BlcnR5S2V5KGtleSldOiB2YWx1ZX0pLFxuICAgIHt9XG4gICk7XG5cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKFJVTV9NRVRBREFUQV9QUk9QRVJUWV9LRVlTKS5yZWR1Y2U8UnVtTWV0YWRhdGE+KChtZXRhZGF0YSwgW2tleSwgYWxpYXNlc10pID0+IHtcbiAgICBjb25zdCBhbGlhcyA9IGFsaWFzZXMuZmluZCgoY2FuZGlkYXRlKSA9PiBub3JtYWxpemVkUHJvcGVydGllc1tjYW5kaWRhdGVdICE9PSB1bmRlZmluZWQpO1xuXG4gICAgaWYoYWxpYXMpIHtcbiAgICAgIG1ldGFkYXRhW2tleV0gPSBub3JtYWxpemVkUHJvcGVydGllc1thbGlhc107XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9LCB7XG4gICAgYXBwbGljYXRpb25JZDogYXBwSWQsXG4gICAgLi4uKGRvbWFpbiA/IHtkb21haW59IDoge30pLFxuICAgIHBsYXRmb3JtVHlwZTogJ3dlYicsXG4gICAgdmVyc2lvbjogJzEuMC4wJ1xuICB9KTtcbn07XG5cbmNvbnN0IHNhbml0aXplRXZlbnQgPSAoZXZlbnQ6IFJ1bUV2ZW50SW5wdXRUeXBlLCBub3c6IG51bWJlcik6IFJ1bUV2ZW50SW5wdXRUeXBlID0+IHtcbiAgY29uc3QgaW5wdXRFdmVudElkID0gbm9ybWFsaXplVGV4dChldmVudC5ldmVudElkLCAxMjgpO1xuICBjb25zdCBqb3VybmV5SWQgPSBub3JtYWxpemVUZXh0KGV2ZW50LmpvdXJuZXlJZCwgMTI4KTtcbiAgY29uc3QgbmFtZSA9IG5vcm1hbGl6ZVRleHQoZXZlbnQubmFtZSwgMTI4KTtcbiAgY29uc3QgcGF0aCA9IG5vcm1hbGl6ZVRleHQoZXZlbnQucGF0aCwgMjU2KS5zcGxpdCgnPycpWzBdLnNwbGl0KCcjJylbMF07XG4gIGNvbnN0IHR5cGUgPSBub3JtYWxpemVUZXh0KGV2ZW50LnR5cGUsIDI1NikucmVwbGFjZSgvW15hLXpBLVowLTlfLi1dL2csICdfJyk7XG5cbiAgaWYoIWlucHV0RXZlbnRJZCB8fCAham91cm5leUlkIHx8ICFuYW1lIHx8ICF0eXBlKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcignaW52YWxpZF9ydW1fZXZlbnQnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXZlbnRJZDogZ2V0QXdzVXVpZChpbnB1dEV2ZW50SWQpLFxuICAgIGpvdXJuZXlJZDogZ2V0QXdzVXVpZChqb3VybmV5SWQpLFxuICAgIG5hbWUsXG4gICAgLi4uKHBhdGggPyB7cGF0aH0gOiB7fSksXG4gICAgcHJvcGVydGllczogc2FuaXRpemVQcm9wZXJ0aWVzKGV2ZW50LnByb3BlcnRpZXMpLFxuICAgIHNlcXVlbmNlOiBNYXRoLm1pbihNQVhfU0VRVUVOQ0UsIE1hdGgubWF4KDEsIE1hdGguZmxvb3IoTnVtYmVyKGV2ZW50LnNlcXVlbmNlKSB8fCAxKSkpLFxuICAgIHRpbWVzdGFtcDogc2FuaXRpemVUaW1lc3RhbXAoZXZlbnQudGltZXN0YW1wLCBub3cpLFxuICAgIHR5cGVcbiAgfTtcbn07XG5cbmNvbnN0IGdyb3VwRXZlbnRzQnlKb3VybmV5ID0gKGV2ZW50czogUnVtRXZlbnRJbnB1dFR5cGVbXSk6IE1hcDxzdHJpbmcsIFJ1bUV2ZW50SW5wdXRUeXBlW10+ID0+XG4gIGV2ZW50cy5yZWR1Y2U8TWFwPHN0cmluZywgUnVtRXZlbnRJbnB1dFR5cGVbXT4+KChncm91cHMsIGV2ZW50KSA9PiB7XG4gICAgY29uc3Qgam91cm5leUV2ZW50cyA9IGdyb3Vwcy5nZXQoZXZlbnQuam91cm5leUlkKSB8fCBbXTtcbiAgICBqb3VybmV5RXZlbnRzLnB1c2goZXZlbnQpO1xuICAgIGdyb3Vwcy5zZXQoZXZlbnQuam91cm5leUlkLCBqb3VybmV5RXZlbnRzKTtcbiAgICByZXR1cm4gZ3JvdXBzO1xuICB9LCBuZXcgTWFwKCkpO1xuXG5leHBvcnQgY29uc3QgdHJhY2tSdW0gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGJhdGNoOiBSdW1CYXRjaElucHV0VHlwZVxuKTogUHJvbWlzZTxSdW1UcmFja1Jlc3VsdFR5cGU+ID0+IHtcbiAgY29uc3QgYXBwSWQgPSBub3JtYWxpemVUZXh0KGJhdGNoPy5hcHBJZCwgMTI4KTtcbiAgY29uc3QgaW5wdXRFdmVudHMgPSBBcnJheS5pc0FycmF5KGJhdGNoPy5ldmVudHMpID8gYmF0Y2guZXZlbnRzIDogW107XG5cbiAgaWYoIWFwcElkIHx8IGlucHV0RXZlbnRzLmxlbmd0aCA9PT0gMCB8fCBpbnB1dEV2ZW50cy5sZW5ndGggPiBNQVhfQkFUQ0hfU0laRSkge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ2ludmFsaWRfcnVtX2JhdGNoJyk7XG4gIH1cblxuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBjb25zdCBtb25pdG9yID0gZ2V0QXBwTW9uaXRvcihjb250ZXh0LCBhcHBJZCk7XG4gIGNvbnN0IGV2ZW50cyA9IGlucHV0RXZlbnRzLm1hcCgoZXZlbnQpID0+IHNhbml0aXplRXZlbnQoZXZlbnQsIG5vdykpO1xuICBjb25zdCBldmVudHNCeUpvdXJuZXkgPSBncm91cEV2ZW50c0J5Sm91cm5leShldmVudHMpO1xuICBjb25zdCBjbGllbnQgPSBnZXRSdW1DbGllbnQoY29udGV4dCk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShldmVudHNCeUpvdXJuZXkuZW50cmllcygpKS5tYXAoKFtqb3VybmV5SWQsIGpvdXJuZXlFdmVudHNdKSA9PlxuICAgIGNsaWVudC5zZW5kKG5ldyBQdXRSdW1FdmVudHNDb21tYW5kKHtcbiAgICAgIC4uLihtb25pdG9yLmFsaWFzID8ge0FsaWFzOiBtb25pdG9yLmFsaWFzfSA6IHt9KSxcbiAgICAgIEFwcE1vbml0b3JEZXRhaWxzOiB7XG4gICAgICAgIGlkOiBtb25pdG9yLmlkLFxuICAgICAgICBuYW1lOiBtb25pdG9yLm5hbWUsXG4gICAgICAgIHZlcnNpb246IG1vbml0b3IudmVyc2lvblxuICAgICAgfSxcbiAgICAgIEJhdGNoSWQ6IHJhbmRvbVVVSUQoKSxcbiAgICAgIElkOiBtb25pdG9yLmlkLFxuICAgICAgUnVtRXZlbnRzOiBqb3VybmV5RXZlbnRzLm1hcCgoZXZlbnQpID0+ICh7XG4gICAgICAgIGRldGFpbHM6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBhcHBJZCxcbiAgICAgICAgICBuYW1lOiBldmVudC5uYW1lLFxuICAgICAgICAgIC4uLihldmVudC5wYXRoID8ge3BhdGg6IGV2ZW50LnBhdGh9IDoge30pLFxuICAgICAgICAgIHByb3BlcnRpZXM6IGV2ZW50LnByb3BlcnRpZXMsXG4gICAgICAgICAgc2VxdWVuY2U6IGV2ZW50LnNlcXVlbmNlXG4gICAgICAgIH0pLFxuICAgICAgICBpZDogZXZlbnQuZXZlbnRJZCxcbiAgICAgICAgbWV0YWRhdGE6IEpTT04uc3RyaW5naWZ5KGdldFJ1bU1ldGFkYXRhKFxuICAgICAgICAgIGFwcElkLFxuICAgICAgICAgIG1vbml0b3IuZG9tYWluLFxuICAgICAgICAgIGV2ZW50LnByb3BlcnRpZXMgYXMgUmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+XG4gICAgICAgICkpLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKGV2ZW50LnRpbWVzdGFtcCksXG4gICAgICAgIHR5cGU6IGV2ZW50LnR5cGVcbiAgICAgIH0pKSxcbiAgICAgIFVzZXJEZXRhaWxzOiB7XG4gICAgICAgIHNlc3Npb25JZDogam91cm5leUlkLFxuICAgICAgICB1c2VySWQ6IGpvdXJuZXlJZFxuICAgICAgfVxuICAgIH0pKVxuICApKTtcblxuICByZXR1cm4ge2FjY2VwdGVkOiBldmVudHMubGVuZ3RoLCBhcHBJZH07XG59O1xuIl0sIm5hbWVzIjpbIlB1dFJ1bUV2ZW50c0NvbW1hbmQiLCJSVU1DbGllbnQiLCJjcmVhdGVIYXNoIiwicmFuZG9tVVVJRCIsIkNvbmZpZyIsIlVzZXJFcnJvciIsIk1BWF9CQVRDSF9TSVpFIiwiTUFYX1BST1BFUlRJRVMiLCJNQVhfU0VRVUVOQ0UiLCJNQVhfVElNRVNUQU1QX0FHRV9NUyIsIk1BWF9USU1FU1RBTVBfRlVUVVJFX01TIiwiVVVJRF9QQVRURVJOIiwiQkxPQ0tFRF9QUk9QRVJUWV9LRVlTIiwiU2V0IiwiRU1BSUxfUEFUVEVSTiIsIlJVTV9NRVRBREFUQV9QUk9QRVJUWV9LRVlTIiwiYnJvd3Nlckxhbmd1YWdlIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyVmVyc2lvbiIsImRldmljZVR5cGUiLCJpbnRlcmFjdGlvbiIsIm9zTmFtZSIsIm9zVmVyc2lvbiIsInBhZ2VJZCIsInBhcmVudFBhZ2VJZCIsIm5vcm1hbGl6ZVRleHQiLCJ2YWx1ZSIsIm1heExlbmd0aCIsIlN0cmluZyIsInRyaW0iLCJzbGljZSIsIm5vcm1hbGl6ZVByb3BlcnR5S2V5IiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwibm9ybWFsaXplRG9tYWluIiwic3BsaXQiLCJnZXRBd3NVdWlkIiwidGVzdCIsImhhc2giLCJ1cGRhdGUiLCJkaWdlc3QiLCJwYXJzZUVudmlyb25tZW50QXBwTW9uaXRvcnMiLCJwcm9jZXNzIiwiZW52IiwiQVdTX1JVTV9BUFBfTU9OSVRPUlMiLCJwYXJzZWQiLCJKU09OIiwicGFyc2UiLCJBcnJheSIsImlzQXJyYXkiLCJnZXRBcHBNb25pdG9yIiwiY29udGV4dCIsImFwcElkIiwiY29uZmlndXJlZE1vbml0b3JzIiwiY29uZmlnIiwiYXdzIiwicnVtIiwiYXBwTW9uaXRvcnMiLCJnZXQiLCJlbnZpcm9ubWVudE1vbml0b3JzIiwiY29uZmlndXJlZE1vbml0b3IiLCJtb25pdG9yIiwiaWQiLCJtb25pdG9ySWQiLCJkb21haW4iLCJkZXRhaWxzIiwidXJsIiwibmFtZSIsInZlcnNpb24iLCJnZXRSdW1DbGllbnQiLCJhd3NDb25maWciLCJhY2Nlc3NLZXlJZCIsInNlY3JldEFjY2Vzc0tleSIsInNlc3Npb25Ub2tlbiIsImNyZWRlbnRpYWxzIiwidW5kZWZpbmVkIiwicmVnaW9uIiwic2FuaXRpemVUaW1lc3RhbXAiLCJub3ciLCJ0aW1lc3RhbXAiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsIk1hdGgiLCJmbG9vciIsInNhbml0aXplUHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJPYmplY3QiLCJlbnRyaWVzIiwicmVkdWNlIiwicmVzdWx0Iiwia2V5IiwicHJvcGVydHlLZXkiLCJub3JtYWxpemVkUHJvcGVydHlLZXkiLCJoYXMiLCJpbmNsdWRlcyIsInRleHRWYWx1ZSIsImdldFJ1bU1ldGFkYXRhIiwibm9ybWFsaXplZFByb3BlcnRpZXMiLCJtZXRhZGF0YSIsImFsaWFzZXMiLCJhbGlhcyIsImZpbmQiLCJjYW5kaWRhdGUiLCJhcHBsaWNhdGlvbklkIiwicGxhdGZvcm1UeXBlIiwic2FuaXRpemVFdmVudCIsImV2ZW50IiwiaW5wdXRFdmVudElkIiwiZXZlbnRJZCIsImpvdXJuZXlJZCIsInBhdGgiLCJ0eXBlIiwic2VxdWVuY2UiLCJtaW4iLCJtYXgiLCJncm91cEV2ZW50c0J5Sm91cm5leSIsImV2ZW50cyIsImdyb3VwcyIsImpvdXJuZXlFdmVudHMiLCJwdXNoIiwic2V0IiwiTWFwIiwidHJhY2tSdW0iLCJiYXRjaCIsImlucHV0RXZlbnRzIiwibGVuZ3RoIiwiRGF0ZSIsIm1hcCIsImV2ZW50c0J5Sm91cm5leSIsImNsaWVudCIsIlByb21pc2UiLCJhbGwiLCJmcm9tIiwic2VuZCIsIkFsaWFzIiwiQXBwTW9uaXRvckRldGFpbHMiLCJCYXRjaElkIiwiSWQiLCJSdW1FdmVudHMiLCJzdHJpbmdpZnkiLCJVc2VyRGV0YWlscyIsInNlc3Npb25JZCIsInVzZXJJZCIsImFjY2VwdGVkIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxtQkFBbUIsRUFBRUMsU0FBUyxRQUFPLHNCQUFzQjtBQUNuRSxTQUFRQyxVQUFVLEVBQUVDLFVBQVUsUUFBTyxTQUFTO0FBRTlDLFNBQVFDLE1BQU0sUUFBTyxlQUFlO0FBQ3BDLFNBQVFDLFNBQVMsUUFBTyw2QkFBNkI7QUFNckQsTUFBTUMsaUJBQWlCO0FBQ3ZCLE1BQU1DLGlCQUFpQjtBQUN2QixNQUFNQyxlQUFlO0FBQ3JCLE1BQU1DLHVCQUF1QixLQUFLLEtBQUssS0FBSztBQUM1QyxNQUFNQywwQkFBMEIsSUFBSSxLQUFLO0FBQ3pDLE1BQU1DLGVBQWU7QUFDckIsTUFBTUMsd0JBQXdCLElBQUlDLElBQUk7SUFDcEM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBQ0QsTUFBTUMsZ0JBQWdCO0FBS3RCLE1BQU1DLDZCQUF1RDtJQUMzREMsaUJBQWlCO1FBQUM7S0FBa0I7SUFDcENDLGFBQWE7UUFBQztLQUFjO0lBQzVCQyxnQkFBZ0I7UUFBQztLQUFpQjtJQUNsQ0MsWUFBWTtRQUFDO0tBQWE7SUFDMUJDLGFBQWE7UUFBQztLQUFjO0lBQzVCQyxRQUFR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
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy9hY3Rpb25zL3J1bS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNi1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuaW1wb3J0IHtQdXRSdW1FdmVudHNDb21tYW5kLCBSVU1DbGllbnR9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1ydW0nO1xuaW1wb3J0IHtjcmVhdGVIYXNoLCByYW5kb21VVUlEfSBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7Q09MTEVDVElPTlN9IGZyb20gJy4uL2NvbnN0YW50cy9jb2xsZWN0aW9ucy5qcyc7XG5pbXBvcnQge1VzZXJFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHt1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5pbXBvcnQge2dldEFuYWx5dGljc0J5SWR9IGZyb20gJy4vYW5hbHl0aWNzLmpzJztcblxuaW1wb3J0IHR5cGUge0F3c0NvbmZpZywgQXdzUnVtQXBwTW9uaXRvckNvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtSdW1CYXRjaElucHV0VHlwZSwgUnVtRXZlbnRJbnB1dFR5cGUsIFJ1bVByb3BlcnR5LCBSdW1UcmFja1Jlc3VsdFR5cGV9IGZyb20gJy4uL3R5cGVzL3J1bS50eXBlcy5qcyc7XG5cbmNvbnN0IE1BWF9CQVRDSF9TSVpFID0gNTA7XG5jb25zdCBNQVhfUFJPUEVSVElFUyA9IDIwO1xuY29uc3QgTUFYX1NFUVVFTkNFID0gMV8wMDBfMDAwO1xuY29uc3QgTUFYX1RJTUVTVEFNUF9BR0VfTVMgPSAyNCAqIDYwICogNjAgKiAxMDAwO1xuY29uc3QgTUFYX1RJTUVTVEFNUF9GVVRVUkVfTVMgPSA1ICogNjAgKiAxMDAwO1xuY29uc3QgTE9HX1JFVEVOVElPTl9NUyA9IDkwICogMjQgKiA2MCAqIDYwICogMTAwMDtcbmNvbnN0IFVVSURfUEFUVEVSTiA9IC9eW2EtZlxcZF17OH0tW2EtZlxcZF17NH0tW2EtZlxcZF17NH0tW2EtZlxcZF17NH0tW2EtZlxcZF17MTJ9JC9pO1xuY29uc3QgQkxPQ0tFRF9QUk9QRVJUWV9LRVlTID0gbmV3IFNldChbXG4gICdhY2NvdW50aWQnLFxuICAnYWRkcmVzcycsXG4gICdlbWFpbCcsXG4gICdmaXJzdG5hbWUnLFxuICAnZnVsbG5hbWUnLFxuICAnZ2VvbG9jYXRpb24nLFxuICAnaXAnLFxuICAnaXBhZGRyZXNzJyxcbiAgJ2xhc3RuYW1lJyxcbiAgJ2xhdGl0dWRlJyxcbiAgJ2xvbmdpdHVkZScsXG4gICduYW1lJyxcbiAgJ3Bob25lJyxcbiAgJ3JlZmVycmVyJyxcbiAgJ3Rva2VuJyxcbiAgJ3VzZXJhZ2VudCcsXG4gICd1c2VyaWQnXG5dKTtcbmNvbnN0IEVNQUlMX1BBVFRFUk4gPSAvXFxiW15cXHNAXStAW15cXHNAXStcXC5bXlxcc0BdK1xcYi9pO1xuY29uc3QgbG9nQ29sbGVjdGlvbkluaXRpYWxpemF0aW9uID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+KCk7XG5cbnR5cGUgUnVtQXBwTW9uaXRvck1hcCA9IFJlY29yZDxzdHJpbmcsIEF3c1J1bUFwcE1vbml0b3JDb25maWcgfCBzdHJpbmc+O1xudHlwZSBSdW1NZXRhZGF0YSA9IFJlY29yZDxzdHJpbmcsIFJ1bVByb3BlcnR5PjtcbnR5cGUgUmVzb2x2ZWRSdW1Nb25pdG9yID0ge1xuICByZWFkb25seSBhcHBJZDogc3RyaW5nO1xuICByZWFkb25seSBtb25pdG9yOiBBd3NSdW1BcHBNb25pdG9yQ29uZmlnO1xufTtcblxuY29uc3QgUlVNX01FVEFEQVRBX1BST1BFUlRZX0tFWVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHtcbiAgYnJvd3Nlckxhbmd1YWdlOiBbJ2Jyb3dzZXJsYW5ndWFnZSddLFxuICBicm93c2VyTmFtZTogWydicm93c2VybmFtZSddLFxuICBicm93c2VyVmVyc2lvbjogWydicm93c2VydmVyc2lvbiddLFxuICBkZXZpY2VUeXBlOiBbJ2RldmljZXR5cGUnXSxcbiAgaW50ZXJhY3Rpb246IFsnaW50ZXJhY3Rpb24nXSxcbiAgb3NOYW1lOiBbJ29zbmFtZSddLFxuICBvc1ZlcnNpb246IFsnb3N2ZXJzaW9uJ10sXG4gIHBhZ2VJZDogWydwYWdlaWQnXSxcbiAgcGFyZW50UGFnZUlkOiBbJ3BhcmVudHBhZ2VpZCcsICdwYXJlbnRwYWdlJ11cbn07XG5cbmNvbnN0IG5vcm1hbGl6ZVRleHQgPSAodmFsdWU6IHVua25vd24sIG1heExlbmd0aDogbnVtYmVyKTogc3RyaW5nID0+XG4gIFN0cmluZyh2YWx1ZSB8fCAnJykudHJpbSgpLnNsaWNlKDAsIG1heExlbmd0aCk7XG5cbmNvbnN0IG5vcm1hbGl6ZVByb3BlcnR5S2V5ID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgdmFsdWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOV0vZywgJycpO1xuXG5jb25zdCBub3JtYWxpemVEb21haW4gPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgPT4gbm9ybWFsaXplVGV4dCh2YWx1ZSwgMjUzKVxuICAucmVwbGFjZSgvXmh0dHBzPzpcXC9cXC8vaSwgJycpXG4gIC5zcGxpdCgnLycpWzBdXG4gIC5zcGxpdCgnOicpWzBdO1xuXG5jb25zdCBnZXRBd3NVdWlkID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZihVVUlEX1BBVFRFUk4udGVzdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBjb25zdCBoYXNoID0gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHZhbHVlKS5kaWdlc3QoJ2hleCcpO1xuICByZXR1cm4gYCR7aGFzaC5zbGljZSgwLCA4KX0tJHtoYXNoLnNsaWNlKDgsIDEyKX0tJHtoYXNoLnNsaWNlKDEyLCAxNil9LSR7aGFzaC5zbGljZSgxNiwgMjApfS0ke2hhc2guc2xpY2UoMjAsIDMyKX1gO1xufTtcblxuY29uc3QgcGFyc2VFbnZpcm9ubWVudEFwcE1vbml0b3JzID0gKCk6IFJ1bUFwcE1vbml0b3JNYXAgPT4ge1xuICBjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52LkFXU19SVU1fQVBQX01PTklUT1JTO1xuXG4gIGlmKCF2YWx1ZSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgcmV0dXJuIHBhcnNlZCAmJiB0eXBlb2YgcGFyc2VkID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShwYXJzZWQpID8gcGFyc2VkIDoge307XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ2ludmFsaWRfcnVtX2NvbmZpZycpO1xuICB9XG59O1xuXG5jb25zdCBnZXRBcHBNb25pdG9yID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBhbmFseXRpY3NJZDogc3RyaW5nXG4pOiBQcm9taXNlPFJlc29sdmVkUnVtTW9uaXRvcj4gPT4ge1xuICBjb25zdCBjb25maWd1cmVkTW9uaXRvcnMgPSBjb250ZXh0LmNvbmZpZz8uYXdzPy5ydW0/LmFwcE1vbml0b3JzIHx8XG4gICAgQ29uZmlnLmdldDxSdW1BcHBNb25pdG9yTWFwPignYXdzLnJ1bS5hcHBNb25pdG9ycycsIHt9KTtcbiAgY29uc3QgZW52aXJvbm1lbnRNb25pdG9ycyA9IHBhcnNlRW52aXJvbm1lbnRBcHBNb25pdG9ycygpO1xuICBjb25zdCBjb25maWd1cmVkTW9uaXRvciA9IGVudmlyb25tZW50TW9uaXRvcnNbYW5hbHl0aWNzSWRdIHx8IGNvbmZpZ3VyZWRNb25pdG9yc1thbmFseXRpY3NJZF07XG4gIGNvbnN0IGFuYWx5dGljcyA9IGF3YWl0IGdldEFuYWx5dGljc0J5SWQoY29udGV4dCwgYW5hbHl0aWNzSWQpO1xuICBjb25zdCBhcHBJZCA9IG5vcm1hbGl6ZVRleHQoYW5hbHl0aWNzPy5hcHBJZCB8fCBhbmFseXRpY3NJZCwgMTI4KTtcblxuICBpZighY29uZmlndXJlZE1vbml0b3IpIHtcbiAgICBpZighYW5hbHl0aWNzIHx8ICFhcHBJZCkge1xuICAgICAgdGhyb3cgbmV3IFVzZXJFcnJvcignaW52YWxpZF9ydW1fYXBwJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFwcElkLFxuICAgICAgbW9uaXRvcjoge1xuICAgICAgICBkb21haW46IGFuYWx5dGljcy5kb21haW4sXG4gICAgICAgIGlkOiBhbmFseXRpY3MubW9uaXRvcklkLFxuICAgICAgICBuYW1lOiBhbmFseXRpY3MubW9uaXRvck5hbWUsXG4gICAgICAgIHZlcnNpb246IG5vcm1hbGl6ZVRleHQoXG4gICAgICAgICAgY29udGV4dC5jb25maWc/LmRldGFpbHM/LnZlcnNpb24gfHwgQ29uZmlnLmdldCgnZGV0YWlscy52ZXJzaW9uJykgfHwgJzEuMC4wJyxcbiAgICAgICAgICAyNTVcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBjb25zdCBtb25pdG9yID0gdHlwZW9mIGNvbmZpZ3VyZWRNb25pdG9yID09PSAnc3RyaW5nJyA/IHtpZDogY29uZmlndXJlZE1vbml0b3J9IDogY29uZmlndXJlZE1vbml0b3I7XG4gIGNvbnN0IG1vbml0b3JJZCA9IG5vcm1hbGl6ZVRleHQobW9uaXRvcj8uaWQsIDM2KTtcblxuICBpZighbW9uaXRvcklkIHx8ICFVVUlEX1BBVFRFUk4udGVzdChtb25pdG9ySWQpKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcignaW52YWxpZF9ydW1fYXBwJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFwcElkLFxuICAgIG1vbml0b3I6IHtcbiAgICAgIC4uLm1vbml0b3IsXG4gICAgICBkb21haW46IG5vcm1hbGl6ZURvbWFpbihcbiAgICAgICAgbW9uaXRvci5kb21haW4gfHwgY29udGV4dC5jb25maWc/LmRldGFpbHM/LnVybCB8fCBDb25maWcuZ2V0KCdkZXRhaWxzLnVybCcpIHx8IGFuYWx5dGljc0lkXG4gICAgICApLFxuICAgICAgaWQ6IG1vbml0b3JJZCxcbiAgICAgIG5hbWU6IG5vcm1hbGl6ZVRleHQobW9uaXRvci5uYW1lIHx8IGFuYWx5dGljc0lkLCAyNTUpLFxuICAgICAgdmVyc2lvbjogbm9ybWFsaXplVGV4dChcbiAgICAgICAgbW9uaXRvci52ZXJzaW9uIHx8IGNvbnRleHQuY29uZmlnPy5kZXRhaWxzPy52ZXJzaW9uIHx8IENvbmZpZy5nZXQoJ2RldGFpbHMudmVyc2lvbicpIHx8ICcxLjAuMCcsXG4gICAgICAgIDI1NVxuICAgICAgKVxuICAgIH1cbiAgfTtcbn07XG5cbmNvbnN0IGdldFJ1bUNsaWVudCA9IChjb250ZXh0OiBBcGlDb250ZXh0KTogUlVNQ2xpZW50ID0+IHtcbiAgY29uc3QgYXdzQ29uZmlnOiBBd3NDb25maWcgPSBjb250ZXh0LmNvbmZpZz8uYXdzIHx8IENvbmZpZy5nZXQ8QXdzQ29uZmlnPignYXdzJywge30pO1xuICBjb25zdCB7YWNjZXNzS2V5SWQsIHNlY3JldEFjY2Vzc0tleSwgc2Vzc2lvblRva2VufSA9IGF3c0NvbmZpZy5jcmVkZW50aWFscyB8fCB7fTtcbiAgY29uc3QgdXNlc1J1bnRpbWVDcmVkZW50aWFscyA9IEJvb2xlYW4oXG4gICAgcHJvY2Vzcy5lbnYuQVdTX1NFU1NJT05fVE9LRU4gJiZcbiAgICBhY2Nlc3NLZXlJZCA9PT0gcHJvY2Vzcy5lbnYuQVdTX0FDQ0VTU19LRVlfSUQgJiZcbiAgICBzZWNyZXRBY2Nlc3NLZXkgPT09IHByb2Nlc3MuZW52LkFXU19TRUNSRVRfQUNDRVNTX0tFWVxuICApO1xuICBjb25zdCBjcmVkZW50aWFscyA9IGFjY2Vzc0tleUlkICYmIHNlY3JldEFjY2Vzc0tleSAmJiAhdXNlc1J1bnRpbWVDcmVkZW50aWFscyA/IHtcbiAgICBhY2Nlc3NLZXlJZCxcbiAgICBzZWNyZXRBY2Nlc3NLZXksXG4gICAgLi4uKHNlc3Npb25Ub2tlbiA/IHtzZXNzaW9uVG9rZW59IDoge30pXG4gIH0gOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIG5ldyBSVU1DbGllbnQoe1xuICAgIC4uLihjcmVkZW50aWFscyA/IHtjcmVkZW50aWFsc30gOiB7fSksXG4gICAgLi4uKGF3c0NvbmZpZy5yZWdpb24gPyB7cmVnaW9uOiBhd3NDb25maWcucmVnaW9ufSA6IHt9KVxuICB9KTtcbn07XG5cbmNvbnN0IHNhbml0aXplVGltZXN0YW1wID0gKHZhbHVlOiB1bmtub3duLCBub3c6IG51bWJlcik6IG51bWJlciA9PiB7XG4gIGNvbnN0IHRpbWVzdGFtcCA9IE51bWJlcih2YWx1ZSk7XG5cbiAgaWYoXG4gICAgIU51bWJlci5pc0Zpbml0ZSh0aW1lc3RhbXApIHx8XG4gICAgdGltZXN0YW1wIDwgbm93IC0gTUFYX1RJTUVTVEFNUF9BR0VfTVMgfHxcbiAgICB0aW1lc3RhbXAgPiBub3cgKyBNQVhfVElNRVNUQU1QX0ZVVFVSRV9NU1xuICApIHtcbiAgICByZXR1cm4gbm93O1xuICB9XG5cbiAgcmV0dXJuIE1hdGguZmxvb3IodGltZXN0YW1wKTtcbn07XG5cbmNvbnN0IHNhbml0aXplUHJvcGVydGllcyA9IChcbiAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+ID0ge31cbik6IFJlY29yZDxzdHJpbmcsIFJ1bVByb3BlcnR5PiA9PiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKVxuICAuc2xpY2UoMCwgTUFYX1BST1BFUlRJRVMpXG4gIC5yZWR1Y2U8UmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+PigocmVzdWx0LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eUtleSA9IG5vcm1hbGl6ZVRleHQoa2V5LCA2NCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFByb3BlcnR5S2V5ID0gbm9ybWFsaXplUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuXG4gICAgaWYoXG4gICAgICBwcm9wZXJ0eUtleSAmJlxuICAgICAgIUJMT0NLRURfUFJPUEVSVFlfS0VZUy5oYXMobm9ybWFsaXplZFByb3BlcnR5S2V5KSAmJlxuICAgICAgWydib29sZWFuJywgJ251bWJlcicsICdzdHJpbmcnXS5pbmNsdWRlcyh0eXBlb2YgdmFsdWUpXG4gICAgKSB7XG4gICAgICBpZih0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHRleHRWYWx1ZSA9IG5vcm1hbGl6ZVRleHQodmFsdWUsIDI1Nik7XG5cbiAgICAgICAgaWYodGV4dFZhbHVlICYmICFFTUFJTF9QQVRURVJOLnRlc3QodGV4dFZhbHVlKSkge1xuICAgICAgICAgIHJlc3VsdFtwcm9wZXJ0eUtleV0gPSB0ZXh0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZih0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fCBOdW1iZXIuaXNGaW5pdGUodmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFtwcm9wZXJ0eUtleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCB7fSk7XG5cbmNvbnN0IGdldFJ1bU1ldGFkYXRhID0gKFxuICBhcHBJZDogc3RyaW5nLFxuICBkb21haW46IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+XG4pOiBSdW1NZXRhZGF0YSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRQcm9wZXJ0aWVzID0gT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykucmVkdWNlPFJlY29yZDxzdHJpbmcsIFJ1bVByb3BlcnR5Pj4oXG4gICAgKHJlc3VsdCwgW2tleSwgdmFsdWVdKSA9PiAoey4uLnJlc3VsdCwgW25vcm1hbGl6ZVByb3BlcnR5S2V5KGtleSldOiB2YWx1ZX0pLFxuICAgIHt9XG4gICk7XG5cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKFJVTV9NRVRBREFUQV9QUk9QRVJUWV9LRVlTKS5yZWR1Y2U8UnVtTWV0YWRhdGE+KChtZXRhZGF0YSwgW2tleSwgYWxpYXNlc10pID0+IHtcbiAgICBjb25zdCBhbGlhcyA9IGFsaWFzZXMuZmluZCgoY2FuZGlkYXRlKSA9PiBub3JtYWxpemVkUHJvcGVydGllc1tjYW5kaWRhdGVdICE9PSB1bmRlZmluZWQpO1xuXG4gICAgaWYoYWxpYXMpIHtcbiAgICAgIG1ldGFkYXRhW2tleV0gPSBub3JtYWxpemVkUHJvcGVydGllc1thbGlhc107XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9LCB7XG4gICAgYXBwbGljYXRpb25JZDogYXBwSWQsXG4gICAgLi4uKGRvbWFpbiA/IHtkb21haW59IDoge30pLFxuICAgIHBsYXRmb3JtVHlwZTogJ3dlYicsXG4gICAgdmVyc2lvbjogJzEuMC4wJ1xuICB9KTtcbn07XG5cbmNvbnN0IHNhbml0aXplRXZlbnQgPSAoZXZlbnQ6IFJ1bUV2ZW50SW5wdXRUeXBlLCBub3c6IG51bWJlcik6IFJ1bUV2ZW50SW5wdXRUeXBlID0+IHtcbiAgY29uc3QgaW5wdXRFdmVudElkID0gbm9ybWFsaXplVGV4dChldmVudC5ldmVudElkLCAxMjgpO1xuICBjb25zdCBqb3VybmV5SWQgPSBub3JtYWxpemVUZXh0KGV2ZW50LmpvdXJuZXlJZCwgMTI4KTtcbiAgY29uc3QgbmFtZSA9IG5vcm1hbGl6ZVRleHQoZXZlbnQubmFtZSwgMTI4KTtcbiAgY29uc3QgcGF0aCA9IG5vcm1hbGl6ZVRleHQoZXZlbnQucGF0aCwgMjU2KS5zcGxpdCgnPycpWzBdLnNwbGl0KCcjJylbMF07XG4gIGNvbnN0IHR5cGUgPSBub3JtYWxpemVUZXh0KGV2ZW50LnR5cGUsIDI1NikucmVwbGFjZSgvW15hLXpBLVowLTlfLi1dL2csICdfJyk7XG5cbiAgaWYoIWlucHV0RXZlbnRJZCB8fCAham91cm5leUlkIHx8ICFuYW1lIHx8ICF0eXBlKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcignaW52YWxpZF9ydW1fZXZlbnQnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXZlbnRJZDogZ2V0QXdzVXVpZChpbnB1dEV2ZW50SWQpLFxuICAgIGpvdXJuZXlJZDogZ2V0QXdzVXVpZChqb3VybmV5SWQpLFxuICAgIG5hbWUsXG4gICAgLi4uKHBhdGggPyB7cGF0aH0gOiB7fSksXG4gICAgcHJvcGVydGllczogc2FuaXRpemVQcm9wZXJ0aWVzKGV2ZW50LnByb3BlcnRpZXMpLFxuICAgIHNlcXVlbmNlOiBNYXRoLm1pbihNQVhfU0VRVUVOQ0UsIE1hdGgubWF4KDEsIE1hdGguZmxvb3IoTnVtYmVyKGV2ZW50LnNlcXVlbmNlKSB8fCAxKSkpLFxuICAgIHRpbWVzdGFtcDogc2FuaXRpemVUaW1lc3RhbXAoZXZlbnQudGltZXN0YW1wLCBub3cpLFxuICAgIHR5cGVcbiAgfTtcbn07XG5cbmNvbnN0IGdyb3VwRXZlbnRzQnlKb3VybmV5ID0gKGV2ZW50czogUnVtRXZlbnRJbnB1dFR5cGVbXSk6IE1hcDxzdHJpbmcsIFJ1bUV2ZW50SW5wdXRUeXBlW10+ID0+XG4gIGV2ZW50cy5yZWR1Y2U8TWFwPHN0cmluZywgUnVtRXZlbnRJbnB1dFR5cGVbXT4+KChncm91cHMsIGV2ZW50KSA9PiB7XG4gICAgY29uc3Qgam91cm5leUV2ZW50cyA9IGdyb3Vwcy5nZXQoZXZlbnQuam91cm5leUlkKSB8fCBbXTtcbiAgICBqb3VybmV5RXZlbnRzLnB1c2goZXZlbnQpO1xuICAgIGdyb3Vwcy5zZXQoZXZlbnQuam91cm5leUlkLCBqb3VybmV5RXZlbnRzKTtcbiAgICByZXR1cm4gZ3JvdXBzO1xuICB9LCBuZXcgTWFwKCkpO1xuXG5jb25zdCBpbml0aWFsaXplTG9nQ29sbGVjdGlvbiA9IGFzeW5jIChkYXRhYmFzZU5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgY2FjaGVLZXkgPSBkYXRhYmFzZU5hbWUgfHwgJ3JlYWt0b3InO1xuICBjb25zdCBleGlzdGluZ0luaXRpYWxpemF0aW9uID0gbG9nQ29sbGVjdGlvbkluaXRpYWxpemF0aW9uLmdldChjYWNoZUtleSk7XG5cbiAgaWYoZXhpc3RpbmdJbml0aWFsaXphdGlvbikge1xuICAgIHJldHVybiBleGlzdGluZ0luaXRpYWxpemF0aW9uO1xuICB9XG5cbiAgY29uc3QgaW5pdGlhbGl6YXRpb24gPSAoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2VOYW1lKTtcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gZGF0YWJhc2UuY29sbGVjdGlvbihDT0xMRUNUSU9OUy5MT0dTKTtcblxuICAgIGlmKCFhd2FpdCBjb2xsZWN0aW9uLmV4aXN0cygpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBkYXRhYmFzZS5jcmVhdGVDb2xsZWN0aW9uKENPTExFQ1RJT05TLkxPR1MpO1xuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBpZighYXdhaXQgY29sbGVjdGlvbi5leGlzdHMoKSkge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgY29sbGVjdGlvbi5lbnN1cmVJbmRleCh7XG4gICAgICAgIGZpZWxkczogWydhcHBJZCcsICdldmVudElkJ10sXG4gICAgICAgIG5hbWU6ICdsb2dzX2FwcF9ldmVudCcsXG4gICAgICAgIHR5cGU6ICdwZXJzaXN0ZW50JyxcbiAgICAgICAgdW5pcXVlOiB0cnVlXG4gICAgICB9KSxcbiAgICAgIGNvbGxlY3Rpb24uZW5zdXJlSW5kZXgoe1xuICAgICAgICBleHBpcmVBZnRlcjogMCxcbiAgICAgICAgZmllbGRzOiBbJ2V4cGlyZXNBdCddLFxuICAgICAgICBuYW1lOiAnbG9nc19leHBpcnknLFxuICAgICAgICB0eXBlOiAndHRsJ1xuICAgICAgfSlcbiAgICBdKTtcbiAgfSkoKTtcblxuICBsb2dDb2xsZWN0aW9uSW5pdGlhbGl6YXRpb24uc2V0KGNhY2hlS2V5LCBpbml0aWFsaXphdGlvbik7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBpbml0aWFsaXphdGlvbjtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGxvZ0NvbGxlY3Rpb25Jbml0aWFsaXphdGlvbi5kZWxldGUoY2FjaGVLZXkpO1xuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5jb25zdCBwZXJzaXN0UnVtRXZlbnRzID0gYXN5bmMgKFxuICBkYXRhYmFzZU5hbWU6IHN0cmluZyxcbiAgYW5hbHl0aWNzSWQ6IHN0cmluZyxcbiAgYXBwSWQ6IHN0cmluZyxcbiAgZXZlbnRzOiBSdW1FdmVudElucHV0VHlwZVtdLFxuICBub3c6IG51bWJlclxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGF3YWl0IGluaXRpYWxpemVMb2dDb2xsZWN0aW9uKGRhdGFiYXNlTmFtZSk7XG4gIGNvbnN0IGNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZU5hbWUpLmNvbGxlY3Rpb24oQ09MTEVDVElPTlMuTE9HUyk7XG4gIGNvbnN0IGV4cGlyZXNBdCA9IE1hdGguZmxvb3IoKG5vdyArIExPR19SRVRFTlRJT05fTVMpIC8gMTAwMCk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoZXZlbnRzLm1hcCgoZXZlbnQpID0+IGNvbGxlY3Rpb24uc2F2ZSh7XG4gICAgX2tleTogY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGAke2FwcElkfToke2V2ZW50LmV2ZW50SWR9YCkuZGlnZXN0KCdoZXgnKSxcbiAgICBhZGRlZDogbm93LFxuICAgIGFuYWx5dGljc0lkLFxuICAgIGFwcElkLFxuICAgIGV2ZW50SWQ6IGV2ZW50LmV2ZW50SWQsXG4gICAgZXhwaXJlc0F0LFxuICAgIGpvdXJuZXlJZDogZXZlbnQuam91cm5leUlkLFxuICAgIG5hbWU6IGV2ZW50Lm5hbWUsXG4gICAgLi4uKGV2ZW50LnBhdGggPyB7cGF0aDogZXZlbnQucGF0aH0gOiB7fSksXG4gICAgcHJvcGVydGllczogZXZlbnQucHJvcGVydGllcyxcbiAgICBzZXF1ZW5jZTogZXZlbnQuc2VxdWVuY2UsXG4gICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgdHlwZTogZXZlbnQudHlwZVxuICB9LCB7b3ZlcndyaXRlTW9kZTogJ2lnbm9yZScsIHNpbGVudDogdHJ1ZX0pKSk7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhY2tSdW0gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGJhdGNoOiBSdW1CYXRjaElucHV0VHlwZVxuKTogUHJvbWlzZTxSdW1UcmFja1Jlc3VsdFR5cGU+ID0+IHtcbiAgY29uc3QgYW5hbHl0aWNzSWQgPSBub3JtYWxpemVUZXh0KGJhdGNoPy5hbmFseXRpY3NJZCwgMTI4KTtcbiAgY29uc3QgaW5wdXRFdmVudHMgPSBBcnJheS5pc0FycmF5KGJhdGNoPy5ldmVudHMpID8gYmF0Y2guZXZlbnRzIDogW107XG5cbiAgaWYoIWFuYWx5dGljc0lkIHx8IGlucHV0RXZlbnRzLmxlbmd0aCA9PT0gMCB8fCBpbnB1dEV2ZW50cy5sZW5ndGggPiBNQVhfQkFUQ0hfU0laRSkge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ2ludmFsaWRfcnVtX2JhdGNoJyk7XG4gIH1cblxuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBjb25zdCB7YXBwSWQsIG1vbml0b3J9ID0gYXdhaXQgZ2V0QXBwTW9uaXRvcihjb250ZXh0LCBhbmFseXRpY3NJZCk7XG4gIGlmKCFjb250ZXh0LnJlc29sdmVBcHBEYXRhYmFzZU5hbWUpIHtcbiAgICB0aHJvdyBuZXcgVXNlckVycm9yKCdhcHBfZGF0YWJhc2VfcmVzb2x2ZXJfdW5hdmFpbGFibGUnKTtcbiAgfVxuICBjb25zdCBkYXRhYmFzZU5hbWUgPSBhd2FpdCBjb250ZXh0LnJlc29sdmVBcHBEYXRhYmFzZU5hbWUoY29udGV4dCwgYXBwSWQpO1xuICBjb25zdCBldmVudHMgPSBpbnB1dEV2ZW50cy5tYXAoKGV2ZW50KSA9PiBzYW5pdGl6ZUV2ZW50KGV2ZW50LCBub3cpKTtcbiAgY29uc3QgZXZlbnRzQnlKb3VybmV5ID0gZ3JvdXBFdmVudHNCeUpvdXJuZXkoZXZlbnRzKTtcbiAgY29uc3QgY2xpZW50ID0gZ2V0UnVtQ2xpZW50KGNvbnRleHQpO1xuXG4gIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICBwZXJzaXN0UnVtRXZlbnRzKGRhdGFiYXNlTmFtZSwgYW5hbHl0aWNzSWQsIGFwcElkLCBldmVudHMsIG5vdyksXG4gICAgLi4uQXJyYXkuZnJvbShldmVudHNCeUpvdXJuZXkuZW50cmllcygpKS5tYXAoKFtqb3VybmV5SWQsIGpvdXJuZXlFdmVudHNdKSA9PlxuICAgICAgY2xpZW50LnNlbmQobmV3IFB1dFJ1bUV2ZW50c0NvbW1hbmQoe1xuICAgICAgLi4uKG1vbml0b3IuYWxpYXMgPyB7QWxpYXM6IG1vbml0b3IuYWxpYXN9IDoge30pLFxuICAgICAgQXBwTW9uaXRvckRldGFpbHM6IHtcbiAgICAgICAgaWQ6IG1vbml0b3IuaWQsXG4gICAgICAgIG5hbWU6IG1vbml0b3IubmFtZSxcbiAgICAgICAgdmVyc2lvbjogbW9uaXRvci52ZXJzaW9uXG4gICAgICB9LFxuICAgICAgQmF0Y2hJZDogcmFuZG9tVVVJRCgpLFxuICAgICAgSWQ6IG1vbml0b3IuaWQsXG4gICAgICBSdW1FdmVudHM6IGpvdXJuZXlFdmVudHMubWFwKChldmVudCkgPT4gKHtcbiAgICAgICAgZGV0YWlsczogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGFwcElkLFxuICAgICAgICAgIG5hbWU6IGV2ZW50Lm5hbWUsXG4gICAgICAgICAgLi4uKGV2ZW50LnBhdGggPyB7cGF0aDogZXZlbnQucGF0aH0gOiB7fSksXG4gICAgICAgICAgcHJvcGVydGllczogZXZlbnQucHJvcGVydGllcyxcbiAgICAgICAgICBzZXF1ZW5jZTogZXZlbnQuc2VxdWVuY2VcbiAgICAgICAgfSksXG4gICAgICAgIGlkOiBldmVudC5ldmVudElkLFxuICAgICAgICBtZXRhZGF0YTogSlNPTi5zdHJpbmdpZnkoZ2V0UnVtTWV0YWRhdGEoXG4gICAgICAgICAgYXBwSWQsXG4gICAgICAgICAgbW9uaXRvci5kb21haW4sXG4gICAgICAgICAgZXZlbnQucHJvcGVydGllcyBhcyBSZWNvcmQ8c3RyaW5nLCBSdW1Qcm9wZXJ0eT5cbiAgICAgICAgKSksXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoZXZlbnQudGltZXN0YW1wKSxcbiAgICAgICAgdHlwZTogZXZlbnQudHlwZVxuICAgICAgfSkpLFxuICAgICAgVXNlckRldGFpbHM6IHtcbiAgICAgICAgc2Vzc2lvbklkOiBqb3VybmV5SWQsXG4gICAgICAgIHVzZXJJZDogam91cm5leUlkXG4gICAgICB9XG4gICAgICB9KSlcbiAgICApXG4gIF0pO1xuXG4gIHJldHVybiB7YWNjZXB0ZWQ6IGV2ZW50cy5sZW5ndGgsIGFuYWx5dGljc0lkfTtcbn07XG4iXSwibmFtZXMiOlsiUHV0UnVtRXZlbnRzQ29tbWFuZCIsIlJVTUNsaWVudCIsImNyZWF0ZUhhc2giLCJyYW5kb21VVUlEIiwiQ29uZmlnIiwiQ09MTEVDVElPTlMiLCJVc2VyRXJyb3IiLCJ1c2VEYiIsImdldEFuYWx5dGljc0J5SWQiLCJNQVhfQkFUQ0hfU0laRSIsIk1BWF9QUk9QRVJUSUVTIiwiTUFYX1NFUVVFTkNFIiwiTUFYX1RJTUVTVEFNUF9BR0VfTVMiLCJNQVhfVElNRVNUQU1QX0ZVVFVSRV9NUyIsIkxPR19SRVRFTlRJT05fTVMiLCJVVUlEX1BBVFRFUk4iLCJCTE9DS0VEX1BST1BFUlRZX0tFWVMiLCJTZXQiLCJFTUFJTF9QQVRURVJOIiwibG9nQ29sbGVjdGlvbkluaXRpYWxpemF0aW9uIiwiTWFwIiwiUlVNX01FVEFEQVRBX1BST1BFUlRZX0tFWVMiLCJicm93c2VyTGFuZ3VhZ2UiLCJicm93c2VyTmFtZSIsImJyb3dzZXJWZXJzaW9uIiwiZGV2aWNlVHlwZSIsImludGVyYWN0aW9uIiwib3NOYW1lIiwib3NWZXJzaW9uIiwicGFnZUlkIiwicGFyZW50UGFnZUlkIiwibm9ybWFsaXplVGV4dCIsInZhbHVlIiwibWF4TGVuZ3RoIiwiU3RyaW5nIiwidHJpbSIsInNsaWNlIiwibm9ybWFsaXplUHJvcGVydHlLZXkiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJub3JtYWxpemVEb21haW4iLCJzcGxpdCIsImdldEF3c1V1aWQiLCJ0ZXN0IiwiaGFzaCIsInVwZGF0ZSIsImRpZ2VzdCIsInBhcnNlRW52aXJvbm1lbnRBcHBNb25pdG9ycyIsInByb2Nlc3MiLCJlbnYiLCJBV1NfUlVNX0FQUF9NT05JVE9SUyIsInBhcnNlZCIsIkpTT04iLCJwYXJzZSIsIkFycmF5IiwiaXNBcnJheSIsImdldEFwcE1vbml0b3IiLCJjb250ZXh0IiwiYW5hbHl0aWNzSWQiLCJjb25maWd1cmVkTW9uaXRvcnMiLCJjb25maWciLCJhd3MiLCJydW0iLCJhcHBNb25pdG9ycyIsImdldCIsImVudmlyb25tZW50TW9uaXRvcnMiLCJjb25maWd1cmVkTW9uaXRvciIsImFuYWx5dGljcyIsImFwcElkIiwibW9uaXRvciIsImRvbWFpbiIsImlkIiwibW9uaXRvcklkIiwibmFtZSIsIm1vbml0b3JOYW1lIiwidmVyc2lvbiIsImRldGFpbHMiLCJ1cmwiLCJnZXRSdW1DbGllbnQiLCJhd3NDb25maWciLCJhY2Nlc3NLZXlJZCIsInNlY3JldEFjY2Vzc0tleSIsInNlc3Npb25Ub2tlbiIsImNyZWRlbnRpYWxzIiwidXNlc1J1bnRpbWVDcmVkZW50aWFscyIsIkJvb2xlYW4iLCJBV1NfU0VTU0lPTl9UT0tFTiIsIkFXU19BQ0NFU1NfS0VZX0lEIiwiQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZIiwidW5kZWZpbmVkIiwicmVnaW9uIiwic2FuaXRpemVUaW1lc3RhbXAiLCJub3ciLCJ0aW1lc3RhbXAiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsIk1hdGgiLCJmbG9vciIsInNhbml0aXplUHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJPYmplY3QiLCJlbnRyaWVzIiwicmVkdWNlIiwicmVzdWx0Iiwia2V5IiwicHJvcGVydHlLZXkiLCJub3JtYWxpemVkUHJvcGVydHlLZXkiLCJoYXMiLCJpbmNsdWRlcyIsInRleHRWYWx1ZSIsImdldFJ1bU1ldGFkYXRhIiwibm9ybWFsaXplZFByb3BlcnRpZXMiLCJtZXRhZGF0YSIsImFsaWFzZXMiLCJhbGlhcyIsImZpbmQiLCJjYW5kaWRhdGUiLCJhcHBsaWNhdGlvbklkIiwicGxhdGZvcm1UeXBlIiwic2FuaXRpemVFdmVudCIsImV2ZW50IiwiaW5wdXRFdmVudElkIiwiZXZlbnRJZCIsImpvdXJuZXlJZCIsInBhdGgiLCJ0eXBlIiwic2VxdWVuY2UiLCJtaW4iLCJtYXgiLCJncm91cEV2ZW50c0J5Sm91cm5leSIsImV2ZW50cyIsImdyb3VwcyIsImpvdXJuZXlFdmVudHMiLCJwdXNoIiwic2V0IiwiaW5pdGlhbGl6ZUxvZ0NvbGxlY3Rpb24iLCJkYXRhYmFzZU5hbWUiLCJjYWNoZUtleSIsImV4aXN0aW5nSW5pdGlhbGl6YXRpb24iLCJpbml0aWFsaXphdGlvbiIsImRhdGFiYXNlIiwiY29sbGVjdGlvbiIsIkxPR1MiLCJleGlzdHMiLCJjcmVhdGVDb2xsZWN0aW9uIiwiZXJyb3IiLCJQcm9taXNlIiwiYWxsIiwiZW5zdXJlSW5kZXgiLCJmaWVsZHMiLCJ1bmlxdWUiLCJleHBpcmVBZnRlciIsImRlbGV0ZSIsInBlcnNpc3RSdW1FdmVudHMiLCJleHBpcmVzQXQiLCJtYXAiLCJzYXZlIiwiX2tleSIsImFkZGVkIiwib3ZlcndyaXRlTW9kZSIsInNpbGVudCIsInRyYWNrUnVtIiwiYmF0Y2giLCJpbnB1dEV2ZW50cyIsImxlbmd0aCIsIkRhdGUiLCJyZXNvbHZlQXBwRGF0YWJhc2VOYW1lIiwiZXZlbnRzQnlKb3VybmV5IiwiY2xpZW50IiwiZnJvbSIsInNlbmQiLCJBbGlhcyIsIkFwcE1vbml0b3JEZXRhaWxzIiwiQmF0Y2hJZCIsIklkIiwiUnVtRXZlbnRzIiwic3RyaW5naWZ5IiwiVXNlckRldGFpbHMiLCJzZXNzaW9uSWQiLCJ1c2VySWQiLCJhY2NlcHRlZCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsbUJBQW1CLEVBQUVDLFNBQVMsUUFBTyxzQkFBc0I7QUFDbkUsU0FBUUMsVUFBVSxFQUFFQyxVQUFVLFFBQU8sU0FBUztBQUU5QyxTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQUNwQyxTQUFRQyxXQUFXLFFBQU8sOEJBQThCO0FBQ3hELFNBQVFDLFNBQVMsUUFBTyw2QkFBNkI7QUFDckQsU0FBUUMsS0FBSyxRQUFPLDRCQUE0QjtBQUNoRCxTQUFRQyxnQkFBZ0IsUUFBTyxpQkFBaUI7QUFNaEQsTUFBTUMsaUJBQWlCO0FBQ3ZCLE1BQU1DLGlCQUFpQjtBQUN2QixNQUFNQyxlQUFlO0FBQ3JCLE1BQU1DLHVCQUF1QixLQUFLLEtBQUssS0FBSztBQUM1QyxNQUFNQywwQkFBMEIsSUFBSSxLQUFLO0FBQ3pDLE1BQU1DLG1CQUFtQixLQUFLLEtBQUssS0FBSyxLQUFLO0FBQzdDLE1BQU1DLGVBQWU7QUFDckIsTUFBTUMsd0JBQXdCLElBQUlDLElBQUk7SUFDcEM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBQ0QsTUFBTUMsZ0JBQWdCO0FBQ3RCLE1BQU1DLDhCQUE4QixJQUFJQztBQVN4QyxNQUFNQyw2QkFBdUQ7SUFDM0RDLGlCQUFpQjtRQUFDO0tBQWtCO0lBQ3BDQyxhQUFhO1FBQUM7S0FBYztJQUM1QkMsZ0JBQWdCO1FBQUM7S0FBaUI7SUFDbENDLFlBQVk7UUFBQztLQUFhO0lBQzFCQyxhQUFhO1FBQUM7S0FBYztJQUM1QkMsUUFBUTtRQUFDO0tBQVM7SUFDbEJDLFdBQVc7UUFBQztLQUFZO0lBQ3hCQyxRQUFRO1FBQUM7S0FBUztJQUNsQkMsY0FBYztRQUFDO1FB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
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
3
+ * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  */
5
5
  import { AbortMultipartUploadCommandInput, AbortMultipartUploadCommandOutput, CompleteMultipartUploadCommandInput, CompleteMultipartUploadCommandOutput, CreateMultipartUploadCommandInput, CreateMultipartUploadCommandOutput, DeleteObjectCommandInput, DeleteObjectCommandOutput, DeleteObjectsCommandInput, DeleteObjectsCommandOutput, GetObjectCommandInput, GetObjectCommandOutput, HeadObjectCommandInput, HeadObjectCommandOutput, PutObjectCommandInput, PutObjectCommandOutput, UploadPartCommandInput } from '@aws-sdk/client-s3';
6
6
  export declare const s3GetBucket: () => string | undefined;
package/lib/actions/s3.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
3
+ * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  */ import { AbortMultipartUploadCommand, CompleteMultipartUploadCommand, CreateMultipartUploadCommand, GetObjectCommand, S3, UploadPartCommand } from '@aws-sdk/client-s3';
5
5
  import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
6
6
  import { Config } from '../config.js';
@@ -120,4 +120,4 @@ export const s3AbortMultipartUpload = async (params)=>{
120
120
  return await s3.send(new AbortMultipartUploadCommand(params));
121
121
  };
122
122
 
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FjdGlvbnMvczMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7XG4gIEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCxcbiAgQWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXQsXG4gIEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dCxcbiAgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kLFxuICBDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRJbnB1dCxcbiAgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kLFxuICBDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXQsXG4gIENyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZU9iamVjdENvbW1hbmRJbnB1dCxcbiAgRGVsZXRlT2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmRJbnB1dCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQsXG4gIEdldE9iamVjdENvbW1hbmQsXG4gIEdldE9iamVjdENvbW1hbmRJbnB1dCxcbiAgR2V0T2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgSGVhZE9iamVjdENvbW1hbmRJbnB1dCxcbiAgSGVhZE9iamVjdENvbW1hbmRPdXRwdXQsXG4gIFB1dE9iamVjdENvbW1hbmRJbnB1dCxcbiAgUHV0T2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgUzMsXG4gIFVwbG9hZFBhcnRDb21tYW5kLFxuICBVcGxvYWRQYXJ0Q29tbWFuZElucHV0XG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zMyc7XG5pbXBvcnQge2dldFNpZ25lZFVybH0gZnJvbSAnQGF3cy1zZGsvczMtcmVxdWVzdC1wcmVzaWduZXInO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7Z2V0QXdzQ3JlZGVudGlhbHN9IGZyb20gJy4uL3V0aWxzL2F3c1V0aWxzLmpzJztcblxuY29uc3QgZ2V0UzNCdWNrZXQgPSAoKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+XG4gIENvbmZpZy5nZXQoJ2F3cy5zMy5CdWNrZXQnKSB8fCBDb25maWcuZ2V0KCdhd3MuczMuYnVja2V0Jyk7XG5cbmNvbnN0IGNyZWF0ZVMzQ2xpZW50ID0gKCk6IFMzID0+IG5ldyBTMyh7XG4gIGNyZWRlbnRpYWxzOiBnZXRBd3NDcmVkZW50aWFscygpLFxuICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxufSk7XG5cbmV4cG9ydCBjb25zdCBzM0dldEJ1Y2tldCA9ICgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4gZ2V0UzNCdWNrZXQoKTtcblxuLy8gY29uc3QgZXZlbnRDYXRlZ29yeSA9ICdzMyc7XG5leHBvcnQgY29uc3QgczNHZXQgPSAocGFyYW1zOiBHZXRPYmplY3RDb21tYW5kSW5wdXQpOiBQcm9taXNlPEdldE9iamVjdENvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBnZXRTM0J1Y2tldCgpO1xuICAgIH1cblxuICAgIHMzLmdldE9iamVjdChwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dD86IEdldE9iamVjdENvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQgYXMgR2V0T2JqZWN0Q29tbWFuZE91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgczNIZWFkID0gKHBhcmFtczogSGVhZE9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8SGVhZE9iamVjdENvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBnZXRTM0J1Y2tldCgpO1xuICAgIH1cblxuICAgIHMzLmhlYWRPYmplY3QocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ/OiBIZWFkT2JqZWN0Q29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQgYXMgSGVhZE9iamVjdENvbW1hbmRPdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzUHV0ID0gKHBhcmFtczogUHV0T2JqZWN0Q29tbWFuZElucHV0KTogUHJvbWlzZTxQdXRPYmplY3RDb21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgczMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBnZXRTM0J1Y2tldCgpO1xuICAgIH1cblxuICAgIGlmKCFwYXJhbXMuU3RvcmFnZUNsYXNzKSB7XG4gICAgICBwYXJhbXMuU3RvcmFnZUNsYXNzID0gJ1JFRFVDRURfUkVEVU5EQU5DWSc7XG4gICAgfVxuXG4gICAgczMucHV0T2JqZWN0KHBhcmFtcywgKGVycm9yOiBFcnJvciwgb3V0cHV0PzogUHV0T2JqZWN0Q29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCBhcyBQdXRPYmplY3RDb21tYW5kT3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBzM0RlbGV0ZSA9IChwYXJhbXM6IERlbGV0ZU9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8RGVsZXRlT2JqZWN0Q29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHMzOiBTMyA9IGNyZWF0ZVMzQ2xpZW50KCk7XG5cbiAgICBpZighcGFyYW1zLkJ1Y2tldCkge1xuICAgICAgcGFyYW1zLkJ1Y2tldCA9IGdldFMzQnVja2V0KCk7XG4gICAgfVxuXG4gICAgczMuZGVsZXRlT2JqZWN0KHBhcmFtcywgKGVycm9yLCBvdXRwdXQ/OiBEZWxldGVPYmplY3RDb21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0IGFzIERlbGV0ZU9iamVjdENvbW1hbmRPdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzRGVsZXRlTGlzdCA9IChwYXJhbXM6IERlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZU9iamVjdHNDb21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgczM6IFMzID0gY3JlYXRlUzNDbGllbnQoKTtcblxuICAgIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgICBwYXJhbXMuQnVja2V0ID0gZ2V0UzNCdWNrZXQoKTtcbiAgICB9XG5cbiAgICBzMy5kZWxldGVPYmplY3RzKHBhcmFtcywgKGVycm9yOiBFcnJvciwgb3V0cHV0PzogRGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQgYXMgRGVsZXRlT2JqZWN0c0NvbW1hbmRPdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzR2V0U2lnbmVkVXJsID0gYXN5bmMgKHBhcmFtczogYW55ID0ge30pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gIGlmKCFwYXJhbXMuRXhwaXJlcykge1xuICAgIHBhcmFtcy5FeHBpcmVzID0gMTIgKiA2MCAqIDYwO1xuICB9XG5cbiAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICBwYXJhbXMuQnVja2V0ID0gZ2V0UzNCdWNrZXQoKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBnZXRTaWduZWRVcmwoczMsIG5ldyBHZXRPYmplY3RDb21tYW5kKHBhcmFtcyksIHtcbiAgICBleHBpcmVzSW46IHBhcmFtcy5FeHBpcmVzXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHMzQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkID0gYXN5bmMgKFxuICBwYXJhbXM6IENyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRJbnB1dFxuKTogUHJvbWlzZTxDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0PiA9PiB7XG4gIGNvbnN0IHMzOiBTMyA9IGNyZWF0ZVMzQ2xpZW50KCk7XG5cbiAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICBwYXJhbXMuQnVja2V0ID0gZ2V0UzNCdWNrZXQoKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBzMy5zZW5kKG5ldyBDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kKHBhcmFtcykpO1xufTtcblxuZXhwb3J0IGNvbnN0IHMzR2V0VXBsb2FkUGFydFNpZ25lZFVybCA9IGFzeW5jIChwYXJhbXM6IFVwbG9hZFBhcnRDb21tYW5kSW5wdXQgJiB7RXhwaXJlcz86IG51bWJlcn0pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgcGFyYW1zLkJ1Y2tldCA9IGdldFMzQnVja2V0KCk7XG4gIH1cblxuICBjb25zdCBleHBpcmVzSW4gPSBwYXJhbXMuRXhwaXJlcyB8fCA2MCAqIDYwO1xuICBkZWxldGUgcGFyYW1zLkV4cGlyZXM7XG5cbiAgcmV0dXJuIGF3YWl0IGdldFNpZ25lZFVybChzMywgbmV3IFVwbG9hZFBhcnRDb21tYW5kKHBhcmFtcyksIHtleHBpcmVzSW59KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzM0NvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkID0gYXN5bmMgKFxuICBwYXJhbXM6IENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZElucHV0XG4pOiBQcm9taXNlPENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dD4gPT4ge1xuICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgcGFyYW1zLkJ1Y2tldCA9IGdldFMzQnVja2V0KCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgczMuc2VuZChuZXcgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kKHBhcmFtcykpO1xufTtcblxuZXhwb3J0IGNvbnN0IHMzQWJvcnRNdWx0aXBhcnRVcGxvYWQgPSBhc3luYyAoXG4gIHBhcmFtczogQWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXRcbik6IFByb21pc2U8QWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0PiA9PiB7XG4gIGNvbnN0IHMzOiBTMyA9IGNyZWF0ZVMzQ2xpZW50KCk7XG5cbiAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICBwYXJhbXMuQnVja2V0ID0gZ2V0UzNCdWNrZXQoKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBzMy5zZW5kKG5ldyBBYm9ydE11bHRpcGFydFVwbG9hZENvbW1hbmQocGFyYW1zKSk7XG59O1xuIl0sIm5hbWVzIjpbIkFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCIsIkNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCIsIkNyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmQiLCJHZXRPYmplY3RDb21tYW5kIiwiUzMiLCJVcGxvYWRQYXJ0Q29tbWFuZCIsImdldFNpZ25lZFVybCIsIkNvbmZpZyIsImdldEF3c0NyZWRlbnRpYWxzIiwiZ2V0UzNCdWNrZXQiLCJnZXQiLCJjcmVhdGVTM0NsaWVudCIsImNyZWRlbnRpYWxzIiwicmVnaW9uIiwiczNHZXRCdWNrZXQiLCJzM0dldCIsInBhcmFtcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiczMiLCJCdWNrZXQiLCJnZXRPYmplY3QiLCJlcnJvciIsIm91dHB1dCIsInMzSGVhZCIsImhlYWRPYmplY3QiLCJzM1B1dCIsIlN0b3JhZ2VDbGFzcyIsInB1dE9iamVjdCIsInMzRGVsZXRlIiwiZGVsZXRlT2JqZWN0IiwiczNEZWxldGVMaXN0IiwiZGVsZXRlT2JqZWN0cyIsInMzR2V0U2lnbmVkVXJsIiwiRXhwaXJlcyIsImV4cGlyZXNJbiIsInMzQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkIiwic2VuZCIsInMzR2V0VXBsb2FkUGFydFNpZ25lZFVybCIsInMzQ29tcGxldGVNdWx0aXBhcnRVcGxvYWQiLCJzM0Fib3J0TXVsdGlwYXJ0VXBsb2FkIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUNFQSwyQkFBMkIsRUFHM0JDLDhCQUE4QixFQUc5QkMs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
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy9hY3Rpb25zL3MzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge1xuICBBYm9ydE11bHRpcGFydFVwbG9hZENvbW1hbmQsXG4gIEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZElucHV0LFxuICBBYm9ydE11bHRpcGFydFVwbG9hZENvbW1hbmRPdXRwdXQsXG4gIENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCxcbiAgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXQsXG4gIENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCxcbiAgQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZElucHV0LFxuICBDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVPYmplY3RDb21tYW5kSW5wdXQsXG4gIERlbGV0ZU9iamVjdENvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQsXG4gIERlbGV0ZU9iamVjdHNDb21tYW5kT3V0cHV0LFxuICBHZXRPYmplY3RDb21tYW5kLFxuICBHZXRPYmplY3RDb21tYW5kSW5wdXQsXG4gIEdldE9iamVjdENvbW1hbmRPdXRwdXQsXG4gIEhlYWRPYmplY3RDb21tYW5kSW5wdXQsXG4gIEhlYWRPYmplY3RDb21tYW5kT3V0cHV0LFxuICBQdXRPYmplY3RDb21tYW5kSW5wdXQsXG4gIFB1dE9iamVjdENvbW1hbmRPdXRwdXQsXG4gIFMzLFxuICBVcGxvYWRQYXJ0Q29tbWFuZCxcbiAgVXBsb2FkUGFydENvbW1hbmRJbnB1dFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtczMnO1xuaW1wb3J0IHtnZXRTaWduZWRVcmx9IGZyb20gJ0Bhd3Mtc2RrL3MzLXJlcXVlc3QtcHJlc2lnbmVyJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5pbXBvcnQge2dldEF3c0NyZWRlbnRpYWxzfSBmcm9tICcuLi91dGlscy9hd3NVdGlscy5qcyc7XG5cbmNvbnN0IGdldFMzQnVja2V0ID0gKCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PlxuICBDb25maWcuZ2V0KCdhd3MuczMuQnVja2V0JykgfHwgQ29uZmlnLmdldCgnYXdzLnMzLmJ1Y2tldCcpO1xuXG5jb25zdCBjcmVhdGVTM0NsaWVudCA9ICgpOiBTMyA9PiBuZXcgUzMoe1xuICBjcmVkZW50aWFsczogZ2V0QXdzQ3JlZGVudGlhbHMoKSxcbiAgcmVnaW9uOiBDb25maWcuZ2V0KCdhd3MucmVnaW9uJylcbn0pO1xuXG5leHBvcnQgY29uc3QgczNHZXRCdWNrZXQgPSAoKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IGdldFMzQnVja2V0KCk7XG5cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnkgPSAnczMnO1xuZXhwb3J0IGNvbnN0IHMzR2V0ID0gKHBhcmFtczogR2V0T2JqZWN0Q29tbWFuZElucHV0KTogUHJvbWlzZTxHZXRPYmplY3RDb21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgczM6IFMzID0gY3JlYXRlUzNDbGllbnQoKTtcblxuICAgIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgICBwYXJhbXMuQnVja2V0ID0gZ2V0UzNCdWNrZXQoKTtcbiAgICB9XG5cbiAgICBzMy5nZXRPYmplY3QocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ/OiBHZXRPYmplY3RDb21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0IGFzIEdldE9iamVjdENvbW1hbmRPdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzSGVhZCA9IChwYXJhbXM6IEhlYWRPYmplY3RDb21tYW5kSW5wdXQpOiBQcm9taXNlPEhlYWRPYmplY3RDb21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgczM6IFMzID0gY3JlYXRlUzNDbGllbnQoKTtcblxuICAgIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgICBwYXJhbXMuQnVja2V0ID0gZ2V0UzNCdWNrZXQoKTtcbiAgICB9XG5cbiAgICBzMy5oZWFkT2JqZWN0KHBhcmFtcywgKGVycm9yOiBFcnJvciwgb3V0cHV0PzogSGVhZE9iamVjdENvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0IGFzIEhlYWRPYmplY3RDb21tYW5kT3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBzM1B1dCA9IChwYXJhbXM6IFB1dE9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8UHV0T2JqZWN0Q29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHMzID0gY3JlYXRlUzNDbGllbnQoKTtcblxuICAgIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgICBwYXJhbXMuQnVja2V0ID0gZ2V0UzNCdWNrZXQoKTtcbiAgICB9XG5cbiAgICBpZighcGFyYW1zLlN0b3JhZ2VDbGFzcykge1xuICAgICAgcGFyYW1zLlN0b3JhZ2VDbGFzcyA9ICdSRURVQ0VEX1JFRFVOREFOQ1knO1xuICAgIH1cblxuICAgIHMzLnB1dE9iamVjdChwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dD86IFB1dE9iamVjdENvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQgYXMgUHV0T2JqZWN0Q29tbWFuZE91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgczNEZWxldGUgPSAocGFyYW1zOiBEZWxldGVPYmplY3RDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZU9iamVjdENvbW1hbmRPdXRwdXQ+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBnZXRTM0J1Y2tldCgpO1xuICAgIH1cblxuICAgIHMzLmRlbGV0ZU9iamVjdChwYXJhbXMsIChlcnJvciwgb3V0cHV0PzogRGVsZXRlT2JqZWN0Q29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCBhcyBEZWxldGVPYmplY3RDb21tYW5kT3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBzM0RlbGV0ZUxpc3QgPSAocGFyYW1zOiBEZWxldGVPYmplY3RzQ29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVPYmplY3RzQ29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHMzOiBTMyA9IGNyZWF0ZVMzQ2xpZW50KCk7XG5cbiAgICBpZighcGFyYW1zLkJ1Y2tldCkge1xuICAgICAgcGFyYW1zLkJ1Y2tldCA9IGdldFMzQnVja2V0KCk7XG4gICAgfVxuXG4gICAgczMuZGVsZXRlT2JqZWN0cyhwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dD86IERlbGV0ZU9iamVjdHNDb21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0IGFzIERlbGV0ZU9iamVjdHNDb21tYW5kT3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBzM0dldFNpZ25lZFVybCA9IGFzeW5jIChwYXJhbXM6IGFueSA9IHt9KTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgY29uc3QgczM6IFMzID0gY3JlYXRlUzNDbGllbnQoKTtcblxuICBpZighcGFyYW1zLkV4cGlyZXMpIHtcbiAgICBwYXJhbXMuRXhwaXJlcyA9IDEyICogNjAgKiA2MDtcbiAgfVxuXG4gIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgcGFyYW1zLkJ1Y2tldCA9IGdldFMzQnVja2V0KCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgZ2V0U2lnbmVkVXJsKHMzLCBuZXcgR2V0T2JqZWN0Q29tbWFuZChwYXJhbXMpLCB7XG4gICAgZXhwaXJlc0luOiBwYXJhbXMuRXhwaXJlc1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzM0NyZWF0ZU11bHRpcGFydFVwbG9hZCA9IGFzeW5jIChcbiAgcGFyYW1zOiBDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXRcbik6IFByb21pc2U8Q3JlYXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dD4gPT4ge1xuICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgcGFyYW1zLkJ1Y2tldCA9IGdldFMzQnVja2V0KCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgczMuc2VuZChuZXcgQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZChwYXJhbXMpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzM0dldFVwbG9hZFBhcnRTaWduZWRVcmwgPSBhc3luYyAocGFyYW1zOiBVcGxvYWRQYXJ0Q29tbWFuZElucHV0ICYge0V4cGlyZXM/OiBudW1iZXJ9KTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgY29uc3QgczM6IFMzID0gY3JlYXRlUzNDbGllbnQoKTtcblxuICBpZighcGFyYW1zLkJ1Y2tldCkge1xuICAgIHBhcmFtcy5CdWNrZXQgPSBnZXRTM0J1Y2tldCgpO1xuICB9XG5cbiAgY29uc3QgZXhwaXJlc0luID0gcGFyYW1zLkV4cGlyZXMgfHwgNjAgKiA2MDtcbiAgZGVsZXRlIHBhcmFtcy5FeHBpcmVzO1xuXG4gIHJldHVybiBhd2FpdCBnZXRTaWduZWRVcmwoczMsIG5ldyBVcGxvYWRQYXJ0Q29tbWFuZChwYXJhbXMpLCB7ZXhwaXJlc0lufSk7XG59O1xuXG5leHBvcnQgY29uc3QgczNDb21wbGV0ZU11bHRpcGFydFVwbG9hZCA9IGFzeW5jIChcbiAgcGFyYW1zOiBDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRJbnB1dFxuKTogUHJvbWlzZTxDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRPdXRwdXQ+ID0+IHtcbiAgY29uc3QgczM6IFMzID0gY3JlYXRlUzNDbGllbnQoKTtcblxuICBpZighcGFyYW1zLkJ1Y2tldCkge1xuICAgIHBhcmFtcy5CdWNrZXQgPSBnZXRTM0J1Y2tldCgpO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IHMzLnNlbmQobmV3IENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZChwYXJhbXMpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzM0Fib3J0TXVsdGlwYXJ0VXBsb2FkID0gYXN5bmMgKFxuICBwYXJhbXM6IEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZElucHV0XG4pOiBQcm9taXNlPEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dD4gPT4ge1xuICBjb25zdCBzMzogUzMgPSBjcmVhdGVTM0NsaWVudCgpO1xuXG4gIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgcGFyYW1zLkJ1Y2tldCA9IGdldFMzQnVja2V0KCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgczMuc2VuZChuZXcgQWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kKHBhcmFtcykpO1xufTtcbiJdLCJuYW1lcyI6WyJBYm9ydE11bHRpcGFydFVwbG9hZENvbW1hbmQiLCJDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmQiLCJDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kIiwiR2V0T2JqZWN0Q29tbWFuZCIsIlMzIiwiVXBsb2FkUGFydENvbW1hbmQiLCJnZXRTaWduZWRVcmwiLCJDb25maWciLCJnZXRBd3NDcmVkZW50aWFscyIsImdldFMzQnVja2V0IiwiZ2V0IiwiY3JlYXRlUzNDbGllbnQiLCJjcmVkZW50aWFscyIsInJlZ2lvbiIsInMzR2V0QnVja2V0IiwiczNHZXQiLCJwYXJhbXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInMzIiwiQnVja2V0IiwiZ2V0T2JqZWN0IiwiZXJyb3IiLCJvdXRwdXQiLCJzM0hlYWQiLCJoZWFkT2JqZWN0IiwiczNQdXQiLCJTdG9yYWdlQ2xhc3MiLCJwdXRPYmplY3QiLCJzM0RlbGV0ZSIsImRlbGV0ZU9iamVjdCIsInMzRGVsZXRlTGlzdCIsImRlbGV0ZU9iamVjdHMiLCJzM0dldFNpZ25lZFVybCIsIkV4cGlyZXMiLCJleHBpcmVzSW4iLCJzM0NyZWF0ZU11bHRpcGFydFVwbG9hZCIsInNlbmQiLCJzM0dldFVwbG9hZFBhcnRTaWduZWRVcmwiLCJzM0NvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkIiwiczNBYm9ydE11bHRpcGFydFVwbG9hZCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FDRUEsMkJBQTJCLEVBRzNCQyw4QkFBOEIsRUFH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
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
3
+ * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  */ import { flatten } from '@nlabs/utils/arrays/flatten';
5
5
  import { uniqBy } from '@nlabs/utils/arrays/uniq';
6
6
  import { aql } from 'arangojs';
@@ -71,4 +71,4 @@ export const getSearchList = async (context, query, from, to)=>{
71
71
  }
72
72
  };
73
73
 
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FjdGlvbnMvc2VhcmNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2ZsYXR0ZW59IGZyb20gJ0BubGFicy91dGlscy9hcnJheXMvZmxhdHRlbic7XG5pbXBvcnQge3VuaXFCeX0gZnJvbSAnQG5sYWJzL3V0aWxzL2FycmF5cy91bmlxJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5cbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFeGNlcHRpb259IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcbmltcG9ydCB7dXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuaW1wb3J0IHtleGVjdXRlU2VhcmNofSBmcm9tICcuL3F1ZXJ5LmpzJztcbmltcG9ydCB7Z2V0VXNlckRpc3BsYXlOYW1lfSBmcm9tICcuL3VzZXJzLmpzJztcblxuaW1wb3J0IHR5cGUge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuaW1wb3J0IHR5cGUge1NlYXJjaE9wdGlvbnN9IGZyb20gJy4uL3R5cGVzL2FyYW5nb2RiLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtVc2VyVHlwZX0gZnJvbSAnLi4vdHlwZXMvdXNlcnMudHlwZXMuanMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5ID0gJ3NlYXJjaCc7XG5cbi8qKlxuICogRW5oYW5jZWQgc2VhcmNoIGZ1bmN0aW9uIHVzaW5nIHRoZSBuZXcgcXVlcnkgYnVpbGRlclxuICogUHJvdmlkZXMgbW9yZSBmbGV4aWJsZSBzZWFyY2ggY2FwYWJpbGl0aWVzXG4gKiBAcGFyYW0gY29udGV4dCAtIEFQSSBjb250ZXh0XG4gKiBAcGFyYW0gb3B0aW9ucyAtIFNlYXJjaCBvcHRpb25zXG4gKiBAcmV0dXJucyBTZWFyY2ggcmVzdWx0c1xuICovXG5leHBvcnQgY29uc3Qgc2VhcmNoRmxleGlibGUgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIG9wdGlvbnM6IFNlYXJjaE9wdGlvbnNcbik6IFByb21pc2U8YW55W10+ID0+IHtcbiAgcmV0dXJuIGV4ZWN1dGVTZWFyY2goY29udGV4dCwgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VhcmNoTGlzdCA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCBxdWVyeTogc3RyaW5nLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBQcm9taXNlPFVzZXJUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldExpc3QnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmaWVsZHM6IHtjb2xsZWN0aW9uOiBzdHJpbmcsIGZpZWxkOiBzdHJpbmd9W10gPSBbXG4gICAgICB7Y29sbGVjdGlvbjogJ3VzZXJzJywgZmllbGQ6ICdmaXJzdE5hbWUnfSxcbiAgICAgIHtjb2xsZWN0aW9uOiAndXNlcnMnLCBmaWVsZDogJ2xhc3ROYW1lJ30sXG4gICAgICB7Y29sbGVjdGlvbjogJ3VzZXJzJywgZmllbGQ6ICdlbWFpbCd9LFxuICAgICAge2NvbGxlY3Rpb246ICd1c2VycycsIGZpZWxkOiAndXNlcm5hbWUnfSxcbiAgICAgIHtjb2xsZWN0aW9uOiAndXNlcnMnLCBmaWVsZDogJ25hbWUnfVxuICAgIF07XG5cbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoZmllbGRzLm1hcCgob2JqKSA9PiB7XG4gICAgICBjb25zdCBxcnkgPSBgcHJlZml4OiR7cXVlcnl9YDtcbiAgICAgIGNvbnN0IHVzZXJRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiB1IElOIEZVTExURVhUKCR7b2JqLmNvbGxlY3Rpb259LCAke29iai5maWVsZH0sICR7cXJ5fSwgNTApIFJFVFVSTiB1YDtcbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KHVzZXJRcnkpLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKTtcbiAgICB9KSk7XG5cbiAgICBjb25zdCBsaXN0ID0gdW5pcUJ5KGZsYXR0ZW4ocmVzdWx0cyksIChpdGVtOiBhbnkpID0+IGl0ZW0/Ll9rZXkpO1xuXG4gICAgcmV0dXJuIGxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHtfaWQ6IGl0ZW1JZCwgbmFtZTogaXRlbU5hbWV9ID0gaXRlbSB8fCB7fTtcbiAgICAgIGNvbnN0IGNvbGxlY3Rpb25JZExpc3Q6IHN0cmluZ1tdID0gaXRlbUlkPy5zcGxpdCgnLycpIHx8IFtdO1xuICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGNvbGxlY3Rpb25JZExpc3RbMF0gfHwgJyc7XG4gICAgICBjb25zdCBuYW1lID0gY29sbGVjdGlvbiA9PT0gJ3VzZXJzJyA/IGdldFVzZXJEaXNwbGF5TmFtZShpdGVtKSA6IGl0ZW1OYW1lIHx8ICcnO1xuXG4gICAgICByZXR1cm4gey4uLml0ZW0sIG5hbWV9O1xuICAgIH0pO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgdGhyb3cgbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICB2YWx1ZTogKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlXG4gICAgfSwgY29udGV4dCk7XG4gIH1cbn07XG4iXSwibmFtZXMiOlsiZmxhdHRlbiIsInVuaXFCeSIsImFxbCIsIkVycm9yVHlwZXMiLCJsb2dFeGNlcHRpb24iLCJ1c2VEYiIsImV4ZWN1dGVTZWFyY2giLCJnZXRVc2VyRGlzcGxheU5hbWUiLCJldmVudENhdGVnb3J5Iiwic2VhcmNoRmxleGlibGUiLCJjb250ZXh0Iiwib3B0aW9ucyIsImdldFNlYXJjaExpc3QiLCJxdWVyeSIsImZyb20iLCJ0byIsImFjdGlvbiIsImRhdGFiYXNlTmFtZSIsImZpZWxkcyIsImNvbGxlY3Rpb24iLCJmaWVsZCIsInJlc3VsdHMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwib2JqIiwicXJ5IiwidXNlclFyeSIsInRoZW4iLCJjdXJzb3IiLCJsaXN0IiwiaXRlbSIsIl9rZXkiLCJfaWQiLCJpdGVtSWQiLCJuYW1lIiwiaXRlbU5hbWUiLCJjb2xsZWN0aW9uSWRMaXN0Iiwic3BsaXQiLCJlcnJvciIsImNhdGVnb3J5IiwibGFiZWwiLCJEQVRBQkFTRV9FUlJPUiIsInZhbHVlIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsT0FBTyxRQUFPLDhCQUE4QjtBQUNwRCxTQUFRQyxNQUFNLFFBQU8sMkJBQTJCO0FBQ2hELFNBQVFDLEdBQUcsUUFBTyxXQUFXO0FBRTdCLFNBQVFDLFVBQVUsUUFBTywwQkFBMEI7QUFDbkQsU0FBUUMsWUFBWSxRQUFPLDZCQUE2QjtBQUN4RCxTQUFRQyxLQUFLLFFBQU8sNEJBQTRCO0FBQ2hELFNBQVFDLGFBQWEsUUFBTyxhQUFhO0FBQ3pDLFNBQVFDLGtCQUFrQixRQUFPLGFBQWE7QUFPOUMsTUFBTUMsZ0JBQWdCO0FBRXRCOzs7Ozs7Q0FNQyxHQUNELE9BQU8sTUFBTUMsaUJBQWlCLE9BQzVCQyxTQUNBQztJQUVBLE9BQU9MLGNBQWNJLFNBQVNDO0FBQ2hDLEVBQUU7QUFFRixPQUFPLE1BQU1DLGdCQUFnQixPQUFPRixTQUFxQkcsT0FBZUMsTUFBY0M7SUFDcEYsTUFBTUMsU0FBUztJQUNmLE1BQU0sRUFBQ0MsWUFBWSxFQUFDLEdBQUdQO0lBRXZCLElBQUk7UUFDRixNQUFNUSxTQUFnRDtZQUNwRDtnQkFBQ0MsWUFBWTtnQkFBU0MsT0FBTztZQUFXO1lBQ3hDO2dCQUFDRCxZQUFZO2dCQUFTQyxPQUFPO1lBQVU7WUFDdkM7Z0JBQUNELFlBQVk7Z0JBQVNDLE9BQU87WUFBTztZQUNwQztnQkFBQ0QsWUFBWTtnQkFBU0MsT0FBTztZQUFVO1lBQ3ZDO2dCQUFDRCxZQUFZO2dCQUFTQyxPQUFPO1lBQU07U0FDcEM7UUFFRCxNQUFNQyxVQUFVLE1BQU1DLFFBQVFDLEdBQUcsQ0FBQ0wsT0FBT00sR0FBRyxDQUFDLENBQUNDO1lBQzVDLE1BQU1DLE1BQU0sQ0FBQyxPQUFPLEVBQUViLE9BQU87WUFDN0IsTUFBTWMsVUFBb0J6QixHQUFHLENBQUMsa0JBQWtCLEVBQUV1QixJQUFJTixVQUFVLENBQUMsRUFBRSxFQUFFTSxJQUFJTCxLQUFLLENBQUMsRUFBRSxFQUFFTSxJQUFJLGNBQWMsQ0FBQztZQUN0RyxPQUFPckIsTUFBTVksY0FBY0osS0FBSyxDQUFDYyxTQUFTQyxJQUFJLENBQUMsQ0FBQ0MsU0FBV0EsT0FBT04sR0FBRztRQUN2RTtRQUVBLE1BQU1PLE9BQU83QixPQUFPRCxRQUFRcUIsVUFBVSxDQUFDVSxPQUFjQSxNQUFNQztRQUUzRCxPQUFPRixLQUFLTixHQUFHLENBQUMsQ0FBQ087WUFDZixNQUFNLEVBQUNFLEtBQUtDLE1BQU0sRUFBRUMsTUFBTUMsUUFBUSxFQUFDLEdBQUdMLFFBQVEsQ0FBQztZQUMvQyxNQUFNTSxtQkFBNkJILFFBQVFJLE1BQU0sUUFBUSxFQUFFO1lBQzNELE1BQU1uQixhQUFha0IsZ0JBQWdCLENBQUMsRUFBRSxJQUFJO1lBQzFDLE1BQU1GLE9BQU9oQixlQUFlLFVBQVVaLG1CQUFtQndCLFFBQVFLLFlBQVk7WUFFN0UsT0FBTztnQkFBQyxHQUFHTCxJQUFJO2dCQUFFSTtZQUFJO1FBQ3ZCO0lBQ0YsRUFBRSxPQUFNSSxPQUFPO1FBQ2IsTUFBTW5DLGFBQWE7WUFDakJZO1lBQ0F3QixVQUFVaEM7WUFDVmlDLE9BQU90QyxXQUFXdUMsY0FBYztZQUNoQ0MsT0FBTyxBQUFDSixNQUFnQkssT0FBTztRQUNqQyxHQUFHbEM7SUFDTDtBQUNGLEVBQUUifQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy9hY3Rpb25zL3NlYXJjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuaW1wb3J0IHtmbGF0dGVufSBmcm9tICdAbmxhYnMvdXRpbHMvYXJyYXlzL2ZsYXR0ZW4nO1xuaW1wb3J0IHt1bmlxQnl9IGZyb20gJ0BubGFicy91dGlscy9hcnJheXMvdW5pcSc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuXG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB7bG9nRXhjZXB0aW9ufSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5pbXBvcnQge3VzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzLmpzJztcbmltcG9ydCB7ZXhlY3V0ZVNlYXJjaH0gZnJvbSAnLi9xdWVyeS5qcyc7XG5pbXBvcnQge2dldFVzZXJEaXNwbGF5TmFtZX0gZnJvbSAnLi91c2Vycy5qcyc7XG5cbmltcG9ydCB0eXBlIHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcbmltcG9ydCB0eXBlIHtTZWFyY2hPcHRpb25zfSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYi50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7VXNlclR5cGV9IGZyb20gJy4uL3R5cGVzL3VzZXJzLnR5cGVzLmpzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeSA9ICdzZWFyY2gnO1xuXG4vKipcbiAqIEVuaGFuY2VkIHNlYXJjaCBmdW5jdGlvbiB1c2luZyB0aGUgbmV3IHF1ZXJ5IGJ1aWxkZXJcbiAqIFByb3ZpZGVzIG1vcmUgZmxleGlibGUgc2VhcmNoIGNhcGFiaWxpdGllc1xuICogQHBhcmFtIGNvbnRleHQgLSBBUEkgY29udGV4dFxuICogQHBhcmFtIG9wdGlvbnMgLSBTZWFyY2ggb3B0aW9uc1xuICogQHJldHVybnMgU2VhcmNoIHJlc3VsdHNcbiAqL1xuZXhwb3J0IGNvbnN0IHNlYXJjaEZsZXhpYmxlID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBvcHRpb25zOiBTZWFyY2hPcHRpb25zXG4pOiBQcm9taXNlPGFueVtdPiA9PiB7XG4gIHJldHVybiBleGVjdXRlU2VhcmNoKGNvbnRleHQsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlYXJjaExpc3QgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgcXVlcnk6IHN0cmluZywgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKTogUHJvbWlzZTxVc2VyVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdnZXRMaXN0JztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZmllbGRzOiB7Y29sbGVjdGlvbjogc3RyaW5nLCBmaWVsZDogc3RyaW5nfVtdID0gW1xuICAgICAge2NvbGxlY3Rpb246ICd1c2VycycsIGZpZWxkOiAnZmlyc3ROYW1lJ30sXG4gICAgICB7Y29sbGVjdGlvbjogJ3VzZXJzJywgZmllbGQ6ICdsYXN0TmFtZSd9LFxuICAgICAge2NvbGxlY3Rpb246ICd1c2VycycsIGZpZWxkOiAnZW1haWwnfSxcbiAgICAgIHtjb2xsZWN0aW9uOiAndXNlcnMnLCBmaWVsZDogJ3VzZXJuYW1lJ30sXG4gICAgICB7Y29sbGVjdGlvbjogJ3VzZXJzJywgZmllbGQ6ICduYW1lJ31cbiAgICBdO1xuXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKGZpZWxkcy5tYXAoKG9iaikgPT4ge1xuICAgICAgY29uc3QgcXJ5ID0gYHByZWZpeDoke3F1ZXJ5fWA7XG4gICAgICBjb25zdCB1c2VyUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgdSBJTiBGVUxMVEVYVCgke29iai5jb2xsZWN0aW9ufSwgJHtvYmouZmllbGR9LCAke3FyeX0sIDUwKSBSRVRVUk4gdWA7XG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeSh1c2VyUXJ5KS50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSk7XG4gICAgfSkpO1xuXG4gICAgY29uc3QgbGlzdCA9IHVuaXFCeShmbGF0dGVuKHJlc3VsdHMpLCAoaXRlbTogYW55KSA9PiBpdGVtPy5fa2V5KTtcblxuICAgIHJldHVybiBsaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICBjb25zdCB7X2lkOiBpdGVtSWQsIG5hbWU6IGl0ZW1OYW1lfSA9IGl0ZW0gfHwge307XG4gICAgICBjb25zdCBjb2xsZWN0aW9uSWRMaXN0OiBzdHJpbmdbXSA9IGl0ZW1JZD8uc3BsaXQoJy8nKSB8fCBbXTtcbiAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBjb2xsZWN0aW9uSWRMaXN0WzBdIHx8ICcnO1xuICAgICAgY29uc3QgbmFtZSA9IGNvbGxlY3Rpb24gPT09ICd1c2VycycgPyBnZXRVc2VyRGlzcGxheU5hbWUoaXRlbSkgOiBpdGVtTmFtZSB8fCAnJztcblxuICAgICAgcmV0dXJuIHsuLi5pdGVtLCBuYW1lfTtcbiAgICB9KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRocm93IGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SLFxuICAgICAgdmFsdWU6IChlcnJvciBhcyBFcnJvcikubWVzc2FnZVxuICAgIH0sIGNvbnRleHQpO1xuICB9XG59O1xuIl0sIm5hbWVzIjpbImZsYXR0ZW4iLCJ1bmlxQnkiLCJhcWwiLCJFcnJvclR5cGVzIiwibG9nRXhjZXB0aW9uIiwidXNlRGIiLCJleGVjdXRlU2VhcmNoIiwiZ2V0VXNlckRpc3BsYXlOYW1lIiwiZXZlbnRDYXRlZ29yeSIsInNlYXJjaEZsZXhpYmxlIiwiY29udGV4dCIsIm9wdGlvbnMiLCJnZXRTZWFyY2hMaXN0IiwicXVlcnkiLCJmcm9tIiwidG8iLCJhY3Rpb24iLCJkYXRhYmFzZU5hbWUiLCJmaWVsZHMiLCJjb2xsZWN0aW9uIiwiZmllbGQiLCJyZXN1bHRzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsIm9iaiIsInFyeSIsInVzZXJRcnkiLCJ0aGVuIiwiY3Vyc29yIiwibGlzdCIsIml0ZW0iLCJfa2V5IiwiX2lkIiwiaXRlbUlkIiwibmFtZSIsIml0ZW1OYW1lIiwiY29sbGVjdGlvbklkTGlzdCIsInNwbGl0IiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIiwiREFUQUJBU0VfRVJST1IiLCJ2YWx1ZSIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLE9BQU8sUUFBTyw4QkFBOEI7QUFDcEQsU0FBUUMsTUFBTSxRQUFPLDJCQUEyQjtBQUNoRCxTQUFRQyxHQUFHLFFBQU8sV0FBVztBQUU3QixTQUFRQyxVQUFVLFFBQU8sMEJBQTBCO0FBQ25ELFNBQVFDLFlBQVksUUFBTyw2QkFBNkI7QUFDeEQsU0FBUUMsS0FBSyxRQUFPLDRCQUE0QjtBQUNoRCxTQUFRQyxhQUFhLFFBQU8sYUFBYTtBQUN6QyxTQUFRQyxrQkFBa0IsUUFBTyxhQUFhO0FBTzlDLE1BQU1DLGdCQUFnQjtBQUV0Qjs7Ozs7O0NBTUMsR0FDRCxPQUFPLE1BQU1DLGlCQUFpQixPQUM1QkMsU0FDQUM7SUFFQSxPQUFPTCxjQUFjSSxTQUFTQztBQUNoQyxFQUFFO0FBRUYsT0FBTyxNQUFNQyxnQkFBZ0IsT0FBT0YsU0FBcUJHLE9BQWVDLE1BQWNDO0lBQ3BGLE1BQU1DLFNBQVM7SUFDZixNQUFNLEVBQUNDLFlBQVksRUFBQyxHQUFHUDtJQUV2QixJQUFJO1FBQ0YsTUFBTVEsU0FBZ0Q7WUFDcEQ7Z0JBQUNDLFlBQVk7Z0JBQVNDLE9BQU87WUFBVztZQUN4QztnQkFBQ0QsWUFBWTtnQkFBU0MsT0FBTztZQUFVO1lBQ3ZDO2dCQUFDRCxZQUFZO2dCQUFTQyxPQUFPO1lBQU87WUFDcEM7Z0JBQUNELFlBQVk7Z0JBQVNDLE9BQU87WUFBVTtZQUN2QztnQkFBQ0QsWUFBWTtnQkFBU0MsT0FBTztZQUFNO1NBQ3BDO1FBRUQsTUFBTUMsVUFBVSxNQUFNQyxRQUFRQyxHQUFHLENBQUNMLE9BQU9NLEdBQUcsQ0FBQyxDQUFDQztZQUM1QyxNQUFNQyxNQUFNLENBQUMsT0FBTyxFQUFFYixPQUFPO1lBQzdCLE1BQU1jLFVBQW9CekIsR0FBRyxDQUFDLGtCQUFrQixFQUFFdUIsSUFBSU4sVUFBVSxDQUFDLEVBQUUsRUFBRU0sSUFBSUwsS0FBSyxDQUFDLEVBQUUsRUFBRU0sSUFBSSxjQUFjLENBQUM7WUFDdEcsT0FBT3JCLE1BQU1ZLGNBQWNKLEtBQUssQ0FBQ2MsU0FBU0MsSUFBSSxDQUFDLENBQUNDLFNBQVdBLE9BQU9OLEdBQUc7UUFDdkU7UUFFQSxNQUFNTyxPQUFPN0IsT0FBT0QsUUFBUXFCLFVBQVUsQ0FBQ1UsT0FBY0EsTUFBTUM7UUFFM0QsT0FBT0YsS0FBS04sR0FBRyxDQUFDLENBQUNPO1lBQ2YsTUFBTSxFQUFDRSxLQUFLQyxNQUFNLEVBQUVDLE1BQU1DLFFBQVEsRUFBQyxHQUFHTCxRQUFRLENBQUM7WUFDL0MsTUFBTU0sbUJBQTZCSCxRQUFRSSxNQUFNLFFBQVEsRUFBRTtZQUMzRCxNQUFNbkIsYUFBYWtCLGdCQUFnQixDQUFDLEVBQUUsSUFBSTtZQUMxQyxNQUFNRixPQUFPaEIsZUFBZSxVQUFVWixtQkFBbUJ3QixRQUFRSyxZQUFZO1lBRTdFLE9BQU87Z0JBQUMsR0FBR0wsSUFBSTtnQkFBRUk7WUFBSTtRQUN2QjtJQUNGLEVBQUUsT0FBTUksT0FBTztRQUNiLE1BQU1uQyxhQUFhO1lBQ2pCWTtZQUNBd0IsVUFBVWhDO1lBQ1ZpQyxPQUFPdEMsV0FBV3VDLGNBQWM7WUFDaENDLE9BQU8sQUFBQ0osTUFBZ0JLLE9BQU87UUFDakMsR0FBR2xDO0lBQ0w7QUFDRixFQUFFIn0=
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
3
+ * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  */ import { PublishCommand, SNSClient } from '@aws-sdk/client-sns';
5
5
  import { parsePhone, parseTemplate } from '@nlabs/utils/parsers/strings';
6
6
  import { Config } from '../config.js';
@@ -49,4 +49,4 @@ export const sendSms = async ({ context, text, user, variables = {} })=>{
49
49
  });
50
50
  };
51
51
 
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FjdGlvbnMvc21zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge1B1Ymxpc2hDb21tYW5kLCBTTlNDbGllbnR9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zbnMnO1xuaW1wb3J0IHtwYXJzZVBob25lLCBwYXJzZVRlbXBsYXRlfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9zdHJpbmdzJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB7U01TUGFyYW1zVHlwZX0gZnJvbSAnLi4vdHlwZXMvbm90aWZpY2F0aW9ucy50eXBlcy5qcyc7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5pbXBvcnQge1Nlc3Npb259IGZyb20gJy4uL3V0aWxzL3Nlc3Npb25VdGlscy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnkgPSAnc21zJztcblxuZXhwb3J0IGNvbnN0IHNlbmRTbXMgPSBhc3luYyAoe1xuICBjb250ZXh0LFxuICB0ZXh0LFxuICB1c2VyLFxuICB2YXJpYWJsZXMgPSB7fVxufTogU01TUGFyYW1zVHlwZSk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnc2VuZFNtcyc7XG4gIGNvbnN0IHNuc0NsaWVudCA9IG5ldyBTTlNDbGllbnQoe1xuICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICB9KTtcbiAgY29uc3Qge2NvdW50cnkgPSAnVVMnLCBwaG9uZSA9ICcnfSA9IHVzZXIgfHwge307XG4gIGNvbnN0IHBob25lTnVtYmVyID0gcGFyc2VQaG9uZShwaG9uZSwgY291bnRyeSk7XG4gIGNvbnN0IHRlbXBsYXRlQ29udGVudCA9IHBhcnNlVGVtcGxhdGUodGV4dCB8fCAnJywgdmFyaWFibGVzKTtcblxuICByZXR1cm4gYXdhaXQgc25zQ2xpZW50XG4gICAgLnNlbmQoXG4gICAgICBuZXcgUHVibGlzaENvbW1hbmQoe1xuICAgICAgICBNZXNzYWdlOiB0ZW1wbGF0ZUNvbnRlbnQsXG4gICAgICAgIE1lc3NhZ2VBdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgJ0FXUy5TTlMuU01TLlNNU1R5cGUnOiB7XG4gICAgICAgICAgICBEYXRhVHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICBTdHJpbmdWYWx1ZTogJ1RyYW5zYWN0aW9uYWwnXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnQVdTLlNOUy5TTVMuU2VuZGVySUQnOiB7XG4gICAgICAgICAgICBEYXRhVHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICBTdHJpbmdWYWx1ZTogY29udGV4dC5jb25maWc/LmRldGFpbHM/LmlkPy50cmltKCkucmVwbGFjZSgvIC9nLCAnJykuc3Vic3RyaW5nKDAsIDExKSB8fCAnJ1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgUGhvbmVOdW1iZXI6IHBob25lTnVtYmVyXG4gICAgICB9KVxuICAgIClcbiAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyh7cmVzfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKHtlcnJvcn0pO1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5TTVNfRVJST1JcbiAgICAgIH0sIGVycm9yLCB7c2Vzc2lvbjogdXNlciBhcyBTZXNzaW9ufSk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbn07XG4iXSwibmFtZXMiOlsiUHVibGlzaENvbW1hbmQiLCJTTlNDbGllbnQiLCJwYXJzZVBob25lIiwicGFyc2VUZW1wbGF0ZSIsIkNvbmZpZyIsIkVycm9yVHlwZXMiLCJsb2dFcnJvciIsImV2ZW50Q2F0ZWdvcnkiLCJzZW5kU21zIiwiY29udGV4dCIsInRleHQiLCJ1c2VyIiwidmFyaWFibGVzIiwiYWN0aW9uIiwic25zQ2xpZW50IiwiY3JlZGVudGlhbHMiLCJnZXQiLCJyZWdpb24iLCJjb3VudHJ5IiwicGhvbmUiLCJwaG9uZU51bWJlciIsInRlbXBsYXRlQ29udGVudCIsInNlbmQiLCJNZXNzYWdlIiwiTWVzc2FnZUF0dHJpYnV0ZXMiLCJEYXRhVHlwZSIsIlN0cmluZ1ZhbHVlIiwiY29uZmlnIiwiZGV0YWlscyIsImlkIiwidHJpbSIsInJlcGxhY2UiLCJzdWJzdHJpbmciLCJQaG9uZU51bWJlciIsInRoZW4iLCJyZXMiLCJjb25zb2xlIiwibG9nIiwiY2F0Y2giLCJlcnJvciIsImNhdGVnb3J5IiwibGFiZWwiLCJTTVNfRVJST1IiLCJzZXNzaW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxjQUFjLEVBQUVDLFNBQVMsUUFBTyxzQkFBc0I7QUFDOUQsU0FBUUMsVUFBVSxFQUFFQyxhQUFhLFFBQU8sK0JBQStCO0FBRXZFLFNBQVFDLE1BQU0sUUFBTyxlQUFlO0FBQ3BDLFNBQVFDLFVBQVUsUUFBTywwQkFBMEI7QUFFbkQsU0FBUUMsUUFBUSxRQUFPLDZCQUE2QjtBQUdwRCxNQUFNQyxnQkFBZ0I7QUFFdEIsT0FBTyxNQUFNQyxVQUFVLE9BQU8sRUFDNUJDLE9BQU8sRUFDUEMsSUFBSSxFQUNKQyxJQUFJLEVBQ0pDLFlBQVksQ0FBQyxDQUFDLEVBQ0E7SUFDZCxNQUFNQyxTQUFTO0lBQ2YsTUFBTUMsWUFBWSxJQUFJYixVQUFVO1FBQzlCYyxhQUFhWCxPQUFPWSxHQUFHLENBQUM7UUFDeEJDLFFBQVFiLE9BQU9ZLEdBQUcsQ0FBQztJQUNyQjtJQUNBLE1BQU0sRUFBQ0UsVUFBVSxJQUFJLEVBQUVDLFFBQVEsRUFBRSxFQUFDLEdBQUdSLFFBQVEsQ0FBQztJQUM5QyxNQUFNUyxjQUFjbEIsV0FBV2lCLE9BQU9EO0lBQ3RDLE1BQU1HLGtCQUFrQmxCLGNBQWNPLFFBQVEsSUFBSUU7SUFFbEQsT0FBTyxNQUFNRSxVQUNWUSxJQUFJLENBQ0gsSUFBSXRCLGVBQWU7UUFDakJ1QixTQUFTRjtRQUNURyxtQkFBbUI7WUFDakIsdUJBQXVCO2dCQUNyQkMsVUFBVTtnQkFDVkMsYUFBYTtZQUNmO1lBQ0Esd0JBQXdCO2dCQUN0QkQsVUFBVTtnQkFDVkMsYUFBYWpCLFFBQVFrQixNQUFNLEVBQUVDLFNBQVNDLElBQUlDLE9BQU9DLFFBQVEsTUFBTSxJQUFJQyxVQUFVLEdBQUcsT0FBTztZQUN6RjtRQUNGO1FBQ0FDLGFBQWFiO0lBQ2YsSUFFRGMsSUFBSSxDQUFDLENBQUNDO1FBQ0xDLFFBQVFDLEdBQUcsQ0FBQztZQUFDRjtRQUFHO1FBQ2hCLE9BQU87SUFDVCxHQUNDRyxLQUFLLENBQUMsQ0FBQ0M7UUFDTkgsUUFBUUMsR0FBRyxDQUFDO1lBQUNFO1FBQUs7UUFDbEJqQyxTQUFTO1lBQ1BPO1lBQ0EyQixVQUFVakM7WUFDVmtDLE9BQU9wQyxXQUFXcUMsU0FBUztRQUM3QixHQUFHSCxPQUFPO1lBQUNJLFNBQVNoQztRQUFlO1FBRW5DLE9BQU87SUFDVDtBQUNKLEVBQUUifQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy9hY3Rpb25zL3Ntcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuaW1wb3J0IHtQdWJsaXNoQ29tbWFuZCwgU05TQ2xpZW50fSBmcm9tICdAYXdzLXNkay9jbGllbnQtc25zJztcbmltcG9ydCB7cGFyc2VQaG9uZSwgcGFyc2VUZW1wbGF0ZX0gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tICcuLi90eXBlcy9lcnJvci50eXBlcy5qcyc7XG5pbXBvcnQge1NNU1BhcmFtc1R5cGV9IGZyb20gJy4uL3R5cGVzL25vdGlmaWNhdGlvbnMudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHtTZXNzaW9ufSBmcm9tICcuLi91dGlscy9zZXNzaW9uVXRpbHMuanMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5ID0gJ3Ntcyc7XG5cbmV4cG9ydCBjb25zdCBzZW5kU21zID0gYXN5bmMgKHtcbiAgY29udGV4dCxcbiAgdGV4dCxcbiAgdXNlcixcbiAgdmFyaWFibGVzID0ge31cbn06IFNNU1BhcmFtc1R5cGUpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ3NlbmRTbXMnO1xuICBjb25zdCBzbnNDbGllbnQgPSBuZXcgU05TQ2xpZW50KHtcbiAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgcmVnaW9uOiBDb25maWcuZ2V0KCdhd3MucmVnaW9uJylcbiAgfSk7XG4gIGNvbnN0IHtjb3VudHJ5ID0gJ1VTJywgcGhvbmUgPSAnJ30gPSB1c2VyIHx8IHt9O1xuICBjb25zdCBwaG9uZU51bWJlciA9IHBhcnNlUGhvbmUocGhvbmUsIGNvdW50cnkpO1xuICBjb25zdCB0ZW1wbGF0ZUNvbnRlbnQgPSBwYXJzZVRlbXBsYXRlKHRleHQgfHwgJycsIHZhcmlhYmxlcyk7XG5cbiAgcmV0dXJuIGF3YWl0IHNuc0NsaWVudFxuICAgIC5zZW5kKFxuICAgICAgbmV3IFB1Ymxpc2hDb21tYW5kKHtcbiAgICAgICAgTWVzc2FnZTogdGVtcGxhdGVDb250ZW50LFxuICAgICAgICBNZXNzYWdlQXR0cmlidXRlczoge1xuICAgICAgICAgICdBV1MuU05TLlNNUy5TTVNUeXBlJzoge1xuICAgICAgICAgICAgRGF0YVR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgU3RyaW5nVmFsdWU6ICdUcmFuc2FjdGlvbmFsJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgJ0FXUy5TTlMuU01TLlNlbmRlcklEJzoge1xuICAgICAgICAgICAgRGF0YVR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgU3RyaW5nVmFsdWU6IGNvbnRleHQuY29uZmlnPy5kZXRhaWxzPy5pZD8udHJpbSgpLnJlcGxhY2UoLyAvZywgJycpLnN1YnN0cmluZygwLCAxMSkgfHwgJydcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFBob25lTnVtYmVyOiBwaG9uZU51bWJlclxuICAgICAgfSlcbiAgICApXG4gICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgY29uc29sZS5sb2coe3Jlc30pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyh7ZXJyb3J9KTtcbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuU01TX0VSUk9SXG4gICAgICB9LCBlcnJvciwge3Nlc3Npb246IHVzZXIgYXMgU2Vzc2lvbn0pO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG59O1xuIl0sIm5hbWVzIjpbIlB1Ymxpc2hDb21tYW5kIiwiU05TQ2xpZW50IiwicGFyc2VQaG9uZSIsInBhcnNlVGVtcGxhdGUiLCJDb25maWciLCJFcnJvclR5cGVzIiwibG9nRXJyb3IiLCJldmVudENhdGVnb3J5Iiwic2VuZFNtcyIsImNvbnRleHQiLCJ0ZXh0IiwidXNlciIsInZhcmlhYmxlcyIsImFjdGlvbiIsInNuc0NsaWVudCIsImNyZWRlbnRpYWxzIiwiZ2V0IiwicmVnaW9uIiwiY291bnRyeSIsInBob25lIiwicGhvbmVOdW1iZXIiLCJ0ZW1wbGF0ZUNvbnRlbnQiLCJzZW5kIiwiTWVzc2FnZSIsIk1lc3NhZ2VBdHRyaWJ1dGVzIiwiRGF0YVR5cGUiLCJTdHJpbmdWYWx1ZSIsImNvbmZpZyIsImRldGFpbHMiLCJpZCIsInRyaW0iLCJyZXBsYWNlIiwic3Vic3RyaW5nIiwiUGhvbmVOdW1iZXIiLCJ0aGVuIiwicmVzIiwiY29uc29sZSIsImxvZyIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIiwiU01TX0VSUk9SIiwic2Vzc2lvbiJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsY0FBYyxFQUFFQyxTQUFTLFFBQU8sc0JBQXNCO0FBQzlELFNBQVFDLFVBQVUsRUFBRUMsYUFBYSxRQUFPLCtCQUErQjtBQUV2RSxTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQUNwQyxTQUFRQyxVQUFVLFFBQU8sMEJBQTBCO0FBRW5ELFNBQVFDLFFBQVEsUUFBTyw2QkFBNkI7QUFHcEQsTUFBTUMsZ0JBQWdCO0FBRXRCLE9BQU8sTUFBTUMsVUFBVSxPQUFPLEVBQzVCQyxPQUFPLEVBQ1BDLElBQUksRUFDSkMsSUFBSSxFQUNKQyxZQUFZLENBQUMsQ0FBQyxFQUNBO0lBQ2QsTUFBTUMsU0FBUztJQUNmLE1BQU1DLFlBQVksSUFBSWIsVUFBVTtRQUM5QmMsYUFBYVgsT0FBT1ksR0FBRyxDQUFDO1FBQ3hCQyxRQUFRYixPQUFPWSxHQUFHLENBQUM7SUFDckI7SUFDQSxNQUFNLEVBQUNFLFVBQVUsSUFBSSxFQUFFQyxRQUFRLEVBQUUsRUFBQyxHQUFHUixRQUFRLENBQUM7SUFDOUMsTUFBTVMsY0FBY2xCLFdBQVdpQixPQUFPRDtJQUN0QyxNQUFNRyxrQkFBa0JsQixjQUFjTyxRQUFRLElBQUlFO0lBRWxELE9BQU8sTUFBTUUsVUFDVlEsSUFBSSxDQUNILElBQUl0QixlQUFlO1FBQ2pCdUIsU0FBU0Y7UUFDVEcsbUJBQW1CO1lBQ2pCLHVCQUF1QjtnQkFDckJDLFVBQVU7Z0JBQ1ZDLGFBQWE7WUFDZjtZQUNBLHdCQUF3QjtnQkFDdEJELFVBQVU7Z0JBQ1ZDLGFBQWFqQixRQUFRa0IsTUFBTSxFQUFFQyxTQUFTQyxJQUFJQyxPQUFPQyxRQUFRLE1BQU0sSUFBSUMsVUFBVSxHQUFHLE9BQU87WUFDekY7UUFDRjtRQUNBQyxhQUFhYjtJQUNmLElBRURjLElBQUksQ0FBQyxDQUFDQztRQUNMQyxRQUFRQyxHQUFHLENBQUM7WUFBQ0Y7UUFBRztRQUNoQixPQUFPO0lBQ1QsR0FDQ0csS0FBSyxDQUFDLENBQUNDO1FBQ05ILFFBQVFDLEdBQUcsQ0FBQztZQUFDRTtRQUFLO1FBQ2xCakMsU0FBUztZQUNQTztZQUNBMkIsVUFBVWpDO1lBQ1ZrQyxPQUFPcEMsV0FBV3FDLFNBQVM7UUFDN0IsR0FBR0gsT0FBTztZQUFDSSxTQUFTaEM7UUFBZTtRQUVuQyxPQUFPO0lBQ1Q7QUFDSixFQUFFIn0=
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
3
+ * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  */ import { aql } from 'arangojs';
5
5
  import { ErrorTypes } from '../types/error.types.js';
6
6
  import { logError } from '../utils/analyticsUtils.js';
@@ -31,4 +31,4 @@ export const updateGlobalStatistics = (context)=>{
31
31
  }, error, context));
32
32
  };
33
33
 
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FjdGlvbnMvc3RhdGlzdGljcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5cbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHt1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5pbXBvcnQge2dldEl0ZW1CeX0gZnJvbSAnLi9jcnVkLmpzJztcbmltcG9ydCB7Z2V0QWN0aXZlVXNlckNvdW50fSBmcm9tICcuL3VzZXJzLmpzJztcblxuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge1N0YXRpc3RpY3NUeXBlfSBmcm9tICcuLi90eXBlcy9zdGF0aXN0aWNzLnR5cGVzLmpzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeSA9ICdzdGF0aXN0aWNzJztcblxuZXhwb3J0IGNvbnN0IGdldEdsb2JhbFN0YXRpc3RpY3MgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCk6IFByb21pc2U8U3RhdGlzdGljc1R5cGU+ID0+IHtcbiAgcmV0dXJuIGdldEl0ZW1CeTxTdGF0aXN0aWNzVHlwZT4oXG4gICAgY29udGV4dCxcbiAgICAnc3RhdGlzdGljcycsXG4gICAge2lzR2xvYmFsOiB0cnVlfVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUdsb2JhbFN0YXRpc3RpY3MgPSAoY29udGV4dDogQXBpQ29udGV4dCk6IFByb21pc2U8U3RhdGlzdGljc1R5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ3VwZGF0ZUdsb2JhbFN0YXRpc3RpY3MnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGFjdGl2ZVVzZXJzID0gZ2V0QWN0aXZlVXNlckNvdW50KGNvbnRleHQpO1xuICBjb25zdCB1cGRhdGVkRGF0YSA9IHthY3RpdmVVc2Vyc307XG5cbiAgY29uc3QgdXBkYXRlUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7aXNHbG9iYWw6IHRydWV9XG4gIElOU0VSVCAke3VwZGF0ZWREYXRhfVxuICBVUERBVEUgJHt1cGRhdGVkRGF0YX1cbiAgSU4gc3RhdGlzdGljcyBSRVRVUk4gTkVXYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeSh1cGRhdGVRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG4iXSwibmFtZXMiOlsiYXFsIiwiRXJyb3JUeXBlcyIsImxvZ0Vycm9yIiwidXNlRGIiLCJnZXRJdGVtQnkiLCJnZXRBY3RpdmVVc2VyQ291bnQiLCJldmVudENhdGVnb3J5IiwiZ2V0R2xvYmFsU3RhdGlzdGljcyIsImNvbnRleHQiLCJpc0dsb2JhbCIsInVwZGF0ZUdsb2JhbFN0YXRpc3RpY3MiLCJhY3Rpb24iLCJkYXRhYmFzZU5hbWUiLCJhY3RpdmVVc2VycyIsInVwZGF0ZWREYXRhIiwidXBkYXRlUXVlcnkiLCJxdWVyeSIsInRoZW4iLCJjdXJzb3IiLCJuZXh0IiwiY2F0Y2giLCJlcnJvciIsImNhdGVnb3J5IiwibGFiZWwiLCJEQVRBQkFTRV9FUlJPUiJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsR0FBRyxRQUFPLFdBQVc7QUFHN0IsU0FBUUMsVUFBVSxRQUFPLDBCQUEwQjtBQUNuRCxTQUFRQyxRQUFRLFFBQU8sNkJBQTZCO0FBQ3BELFNBQVFDLEtBQUssUUFBTyw0QkFBNEI7QUFDaEQsU0FBUUMsU0FBUyxRQUFPLFlBQVk7QUFDcEMsU0FBUUMsa0JBQWtCLFFBQU8sYUFBYTtBQUs5QyxNQUFNQyxnQkFBZ0I7QUFFdEIsT0FBTyxNQUFNQyxzQkFBc0IsT0FBT0M7SUFDeEMsT0FBT0osVUFDTEksU0FDQSxjQUNBO1FBQUNDLFVBQVU7SUFBSTtBQUVuQixFQUFFO0FBRUYsT0FBTyxNQUFNQyx5QkFBeUIsQ0FBQ0Y7SUFDckMsTUFBTUcsU0FBUztJQUNmLE1BQU0sRUFBQ0MsWUFBWSxFQUFDLEdBQUdKO0lBQ3ZCLE1BQU1LLGNBQWNSLG1CQUFtQkc7SUFDdkMsTUFBTU0sY0FBYztRQUFDRDtJQUFXO0lBRWhDLE1BQU1FLGNBQXdCZixHQUFHLENBQUM7U0FDM0IsRUFBRWMsWUFBWTtTQUNkLEVBQUVBLFlBQVk7MEJBQ0csQ0FBQztJQUV6QixPQUFPWCxNQUFNUyxjQUFjSSxLQUFLLENBQUNELGFBQzlCRSxJQUFJLENBQUMsQ0FBQ0MsU0FBV0EsT0FBT0MsSUFBSSxJQUM1QkMsS0FBSyxDQUFDLENBQUNDLFFBQWlCbkIsU0FBUztZQUNoQ1M7WUFDQVcsVUFBVWhCO1lBQ1ZpQixPQUFPdEIsV0FBV3VCLGNBQWM7UUFDbEMsR0FBR0gsT0FBT2I7QUFDZCxFQUFFIn0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3JlYWt0b3IvcmVha3Rvci9wYWNrYWdlcy9yZWFrdG9yL3NyYy9hY3Rpb25zL3N0YXRpc3RpY3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuXG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB7bG9nRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcbmltcG9ydCB7dXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuaW1wb3J0IHtnZXRJdGVtQnl9IGZyb20gJy4vY3J1ZC5qcyc7XG5pbXBvcnQge2dldEFjdGl2ZVVzZXJDb3VudH0gZnJvbSAnLi91c2Vycy5qcyc7XG5cbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtTdGF0aXN0aWNzVHlwZX0gZnJvbSAnLi4vdHlwZXMvc3RhdGlzdGljcy50eXBlcy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnkgPSAnc3RhdGlzdGljcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRHbG9iYWxTdGF0aXN0aWNzID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQpOiBQcm9taXNlPFN0YXRpc3RpY3NUeXBlPiA9PiB7XG4gIHJldHVybiBnZXRJdGVtQnk8U3RhdGlzdGljc1R5cGU+KFxuICAgIGNvbnRleHQsXG4gICAgJ3N0YXRpc3RpY3MnLFxuICAgIHtpc0dsb2JhbDogdHJ1ZX1cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVHbG9iYWxTdGF0aXN0aWNzID0gKGNvbnRleHQ6IEFwaUNvbnRleHQpOiBQcm9taXNlPFN0YXRpc3RpY3NUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICd1cGRhdGVHbG9iYWxTdGF0aXN0aWNzJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBhY3RpdmVVc2VycyA9IGdldEFjdGl2ZVVzZXJDb3VudChjb250ZXh0KTtcbiAgY29uc3QgdXBkYXRlZERhdGEgPSB7YWN0aXZlVXNlcnN9O1xuXG4gIGNvbnN0IHVwZGF0ZVF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQge2lzR2xvYmFsOiB0cnVlfVxuICBJTlNFUlQgJHt1cGRhdGVkRGF0YX1cbiAgVVBEQVRFICR7dXBkYXRlZERhdGF9XG4gIElOIHN0YXRpc3RpY3MgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkodXBkYXRlUXVlcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuIl0sIm5hbWVzIjpbImFxbCIsIkVycm9yVHlwZXMiLCJsb2dFcnJvciIsInVzZURiIiwiZ2V0SXRlbUJ5IiwiZ2V0QWN0aXZlVXNlckNvdW50IiwiZXZlbnRDYXRlZ29yeSIsImdldEdsb2JhbFN0YXRpc3RpY3MiLCJjb250ZXh0IiwiaXNHbG9iYWwiLCJ1cGRhdGVHbG9iYWxTdGF0aXN0aWNzIiwiYWN0aW9uIiwiZGF0YWJhc2VOYW1lIiwiYWN0aXZlVXNlcnMiLCJ1cGRhdGVkRGF0YSIsInVwZGF0ZVF1ZXJ5IiwicXVlcnkiLCJ0aGVuIiwiY3Vyc29yIiwibmV4dCIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIiwiREFUQUJBU0VfRVJST1IiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLEdBQUcsUUFBTyxXQUFXO0FBRzdCLFNBQVFDLFVBQVUsUUFBTywwQkFBMEI7QUFDbkQsU0FBUUMsUUFBUSxRQUFPLDZCQUE2QjtBQUNwRCxTQUFRQyxLQUFLLFFBQU8sNEJBQTRCO0FBQ2hELFNBQVFDLFNBQVMsUUFBTyxZQUFZO0FBQ3BDLFNBQVFDLGtCQUFrQixRQUFPLGFBQWE7QUFLOUMsTUFBTUMsZ0JBQWdCO0FBRXRCLE9BQU8sTUFBTUMsc0JBQXNCLE9BQU9DO0lBQ3hDLE9BQU9KLFVBQ0xJLFNBQ0EsY0FDQTtRQUFDQyxVQUFVO0lBQUk7QUFFbkIsRUFBRTtBQUVGLE9BQU8sTUFBTUMseUJBQXlCLENBQUNGO0lBQ3JDLE1BQU1HLFNBQVM7SUFDZixNQUFNLEVBQUNDLFlBQVksRUFBQyxHQUFHSjtJQUN2QixNQUFNSyxjQUFjUixtQkFBbUJHO0lBQ3ZDLE1BQU1NLGNBQWM7UUFBQ0Q7SUFBVztJQUVoQyxNQUFNRSxjQUF3QmYsR0FBRyxDQUFDO1NBQzNCLEVBQUVjLFlBQVk7U0FDZCxFQUFFQSxZQUFZOzBCQUNHLENBQUM7SUFFekIsT0FBT1gsTUFBTVMsY0FBY0ksS0FBSyxDQUFDRCxhQUM5QkUsSUFBSSxDQUFDLENBQUNDLFNBQVdBLE9BQU9DLElBQUksSUFDNUJDLEtBQUssQ0FBQyxDQUFDQyxRQUFpQm5CLFNBQVM7WUFDaENTO1lBQ0FXLFVBQVVoQjtZQUNWaUIsT0FBT3RCLFdBQVd1QixjQUFjO1FBQ2xDLEdBQUdILE9BQU9iO0FBQ2QsRUFBRSJ9