@nlabs/reaktor 0.5.4 → 0.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 (135) hide show
  1. package/README.md +7 -7
  2. package/lib/actions/conversations.js +68 -69
  3. package/lib/actions/dynamodb.js +22 -33
  4. package/lib/actions/email.js +32 -30
  5. package/lib/actions/files.js +39 -58
  6. package/lib/actions/groups.js +33 -28
  7. package/lib/actions/images.js +71 -82
  8. package/lib/actions/index.js +54 -37
  9. package/lib/actions/ios.js +21 -40
  10. package/lib/actions/locations.js +25 -22
  11. package/lib/actions/messages.js +31 -45
  12. package/lib/actions/notifications.js +13 -20
  13. package/lib/actions/payments.js +40 -52
  14. package/lib/actions/posts.js +68 -48
  15. package/lib/actions/reactions.js +29 -52
  16. package/lib/actions/s3.js +21 -18
  17. package/lib/actions/search.js +26 -40
  18. package/lib/actions/sms.js +24 -21
  19. package/lib/actions/statistics.js +14 -21
  20. package/lib/actions/subscription.js +27 -24
  21. package/lib/actions/tags.js +49 -56
  22. package/lib/actions/users.js +92 -106
  23. package/lib/actions/websockets.js +28 -41
  24. package/lib/config.js +21 -18
  25. package/lib/index.js +24 -22
  26. package/lib/lambdas/actions/websockets.js +21 -45
  27. package/lib/lambdas/authorizer.js +16 -24
  28. package/lib/lambdas/connection.js +18 -43
  29. package/lib/lambdas/utils/message.js +20 -17
  30. package/lib/lambdas/utils/websocket.js +33 -25
  31. package/lib/templates/email/layout.js +16 -9
  32. package/lib/templates/email/passwordForgot.js +16 -9
  33. package/lib/templates/email/passwordRecovery.js +16 -9
  34. package/lib/templates/email/verifyEmail.js +16 -9
  35. package/lib/templates/email/welcome.js +16 -9
  36. package/lib/templates/sms/passwordForgot.js +16 -9
  37. package/lib/templates/sms/passwordRecovery.js +16 -9
  38. package/lib/templates/sms/verifyEmail.js +16 -9
  39. package/lib/templates/sms/verifyPhone.js +16 -9
  40. package/lib/templates/sms/welcome.js +16 -9
  41. package/lib/types/apps.js +14 -5
  42. package/lib/types/arangodb.js +14 -5
  43. package/lib/types/auth.js +14 -5
  44. package/lib/types/connections.js +14 -5
  45. package/lib/types/conversations.js +14 -5
  46. package/lib/types/email.js +14 -5
  47. package/lib/types/files.js +14 -5
  48. package/lib/types/google.js +14 -5
  49. package/lib/types/groups.js +14 -5
  50. package/lib/types/images.js +14 -5
  51. package/lib/types/index.js +50 -35
  52. package/lib/types/locations.js +14 -5
  53. package/lib/types/messages.js +14 -5
  54. package/lib/types/notifications.js +14 -5
  55. package/lib/types/payments.js +14 -5
  56. package/lib/types/posts.js +14 -5
  57. package/lib/types/statistics.js +14 -5
  58. package/lib/types/tags.js +14 -5
  59. package/lib/types/users.js +14 -5
  60. package/lib/types/websocket.js +14 -5
  61. package/lib/utils/analytics.js +24 -44
  62. package/lib/utils/arangodb.js +15 -22
  63. package/lib/utils/auth.js +22 -36
  64. package/lib/utils/graphql.js +20 -17
  65. package/lib/utils/index.js +26 -23
  66. package/lib/utils/objects.js +22 -19
  67. package/lib/utils/session.js +20 -17
  68. package/package.json +31 -33
  69. package/.eslintrc +0 -18
  70. package/lib/actions/conversations.d.ts +0 -14
  71. package/lib/actions/dynamodb.d.ts +0 -8
  72. package/lib/actions/email.d.ts +0 -7
  73. package/lib/actions/files.d.ts +0 -16
  74. package/lib/actions/groups.d.ts +0 -14
  75. package/lib/actions/images.d.ts +0 -22
  76. package/lib/actions/index.d.ts +0 -20
  77. package/lib/actions/ios.d.ts +0 -7
  78. package/lib/actions/locations.d.ts +0 -3
  79. package/lib/actions/messages.d.ts +0 -13
  80. package/lib/actions/notifications.d.ts +0 -5
  81. package/lib/actions/payments.d.ts +0 -10
  82. package/lib/actions/posts.d.ts +0 -19
  83. package/lib/actions/reactions.d.ts +0 -30
  84. package/lib/actions/s3.d.ts +0 -7
  85. package/lib/actions/search.d.ts +0 -3
  86. package/lib/actions/sms.d.ts +0 -3
  87. package/lib/actions/statistics.d.ts +0 -2
  88. package/lib/actions/subscription.d.ts +0 -7
  89. package/lib/actions/tags.d.ts +0 -26
  90. package/lib/actions/users.d.ts +0 -44
  91. package/lib/actions/websockets.d.ts +0 -6
  92. package/lib/config.d.ts +0 -20
  93. package/lib/index.d.ts +0 -5
  94. package/lib/lambdas/actions/websockets.d.ts +0 -6
  95. package/lib/lambdas/authorizer.d.ts +0 -20
  96. package/lib/lambdas/connection.d.ts +0 -12
  97. package/lib/lambdas/utils/message.d.ts +0 -1
  98. package/lib/lambdas/utils/websocket.d.ts +0 -7
  99. package/lib/templates/email/layout.d.ts +0 -2
  100. package/lib/templates/email/passwordForgot.d.ts +0 -2
  101. package/lib/templates/email/passwordRecovery.d.ts +0 -2
  102. package/lib/templates/email/verifyEmail.d.ts +0 -2
  103. package/lib/templates/email/welcome.d.ts +0 -2
  104. package/lib/templates/sms/passwordForgot.d.ts +0 -2
  105. package/lib/templates/sms/passwordRecovery.d.ts +0 -2
  106. package/lib/templates/sms/verifyEmail.d.ts +0 -2
  107. package/lib/templates/sms/verifyPhone.d.ts +0 -2
  108. package/lib/templates/sms/welcome.d.ts +0 -2
  109. package/lib/types/apps.d.ts +0 -44
  110. package/lib/types/arangodb.d.ts +0 -17
  111. package/lib/types/auth.d.ts +0 -7
  112. package/lib/types/connections.d.ts +0 -8
  113. package/lib/types/conversations.d.ts +0 -11
  114. package/lib/types/email.d.ts +0 -12
  115. package/lib/types/files.d.ts +0 -26
  116. package/lib/types/google.d.ts +0 -27
  117. package/lib/types/groups.d.ts +0 -22
  118. package/lib/types/images.d.ts +0 -42
  119. package/lib/types/index.d.ts +0 -18
  120. package/lib/types/locations.d.ts +0 -20
  121. package/lib/types/messages.d.ts +0 -27
  122. package/lib/types/notifications.d.ts +0 -19
  123. package/lib/types/payments.d.ts +0 -115
  124. package/lib/types/posts.d.ts +0 -47
  125. package/lib/types/statistics.d.ts +0 -3
  126. package/lib/types/tags.d.ts +0 -15
  127. package/lib/types/users.d.ts +0 -80
  128. package/lib/types/websocket.d.ts +0 -14
  129. package/lib/utils/analytics.d.ts +0 -14
  130. package/lib/utils/arangodb.d.ts +0 -9
  131. package/lib/utils/auth.d.ts +0 -5
  132. package/lib/utils/graphql.d.ts +0 -1
  133. package/lib/utils/index.d.ts +0 -6
  134. package/lib/utils/objects.d.ts +0 -3
  135. package/lib/utils/session.d.ts +0 -18
@@ -1,47 +1,22 @@
1
- var __create = Object.create;
2
1
  var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
- var __getProtoOf = Object.getPrototypeOf;
9
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
- var __spreadValues = (a, b) => {
13
- for (var prop in b || (b = {}))
14
- if (__hasOwnProp.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- if (__getOwnPropSymbols)
17
- for (var prop of __getOwnPropSymbols(b)) {
18
- if (__propIsEnum.call(b, prop))
19
- __defNormalProp(a, prop, b[prop]);
20
- }
21
- return a;
22
- };
23
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
25
- var __require = typeof require !== "undefined" ? require : (x) => {
26
- throw new Error('Dynamic require of "' + x + '" is not supported');
27
- };
28
5
  var __export = (target, all) => {
29
- __markAsModule(target);
30
6
  for (var name in all)
31
7
  __defProp(target, name, { get: all[name], enumerable: true });
32
8
  };
33
- var __reExport = (target, module2, desc) => {
34
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
35
- for (let key of __getOwnPropNames(module2))
36
- if (!__hasOwnProp.call(target, key) && key !== "default")
37
- __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
38
14
  }
39
- return target;
15
+ return to;
40
16
  };
41
- var __toModule = (module2) => {
42
- return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
43
- };
44
- __export(exports, {
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var reactions_exports = {};
19
+ __export(reactions_exports, {
45
20
  addReaction: () => addReaction,
46
21
  deleteReaction: () => deleteReaction,
47
22
  deleteReactionByItem: () => deleteReactionByItem,
@@ -54,9 +29,10 @@ __export(exports, {
54
29
  parseReactionOptions: () => parseReactionOptions,
55
30
  updateReaction: () => updateReaction
56
31
  });
57
- var import_utils = __toModule(require("@nlabs/utils"));
58
- var import_arangojs = __toModule(require("arangojs"));
59
- var import_utils2 = __toModule(require("../utils"));
32
+ module.exports = __toCommonJS(reactions_exports);
33
+ var import_utils = require("@nlabs/utils");
34
+ var import_arangojs = require("arangojs");
35
+ var import_utils2 = require("../utils");
60
36
  const eventCategory = "reactions";
61
37
  const parseReactionOptions = (options = {}) => {
62
38
  const {
@@ -85,7 +61,7 @@ const addReaction = (context, itemId, reaction = {}, allowDuplicate = false) =>
85
61
  const formatItemId = (0, import_utils.parseArangoId)(itemId);
86
62
  const formatReactionName = (0, import_utils.parseChar)(itemName, 32);
87
63
  const formatValue = (0, import_utils.parseString)(itemValue, 32);
88
- const edgeCollection = database.collection("hasReactions");
64
+ const edgeCollection = database.collection("hasReaction");
89
65
  const sessionDocId = `users/${sessionId}`;
90
66
  const edgeId = (0, import_utils.createHash)(`reaction-${formatItemId}-${sessionId}`);
91
67
  const edge = {
@@ -97,7 +73,7 @@ const addReaction = (context, itemId, reaction = {}, allowDuplicate = false) =>
97
73
  value: itemValue !== void 0 ? formatValue : void 0
98
74
  };
99
75
  if (!allowDuplicate) {
100
- const aqlQry = import_arangojs.aql`FOR r IN hasReactions
76
+ const aqlQry = import_arangojs.aql`FOR r IN hasReaction
101
77
  FILTER r._from == ${sessionDocId} && r._to == ${formatItemId} && r.name == ${formatReactionName}
102
78
  LIMIT 1
103
79
  RETURN r`;
@@ -129,11 +105,11 @@ const deleteReaction = (context, reactionId) => {
129
105
  }, context).then(() => null);
130
106
  }
131
107
  const formatSessionId = `users/${(0, import_utils.parseId)(sessionId)}`;
132
- const formatReactionId = `hasReactions/${(0, import_utils.parseId)(reactionId)}`;
108
+ const formatReactionId = `hasReaction/${(0, import_utils.parseId)(reactionId)}`;
133
109
  const aqlQry = import_arangojs.aql`LET r = DOCUMENT(${formatReactionId})
134
110
  FILTER r._from == ${formatSessionId}
135
111
  LIMIT 1
136
- REMOVE r IN hasReactions
112
+ REMOVE r IN hasReaction
137
113
  RETURN OLD`;
138
114
  return database.query(aqlQry).then((cursor) => cursor.next()).catch((error) => (0, import_utils2.logError)({
139
115
  action,
@@ -155,10 +131,10 @@ const deleteReactionByItem = (context, itemId, reactionName) => {
155
131
  const formatSessionId = `users/${(0, import_utils.parseId)(sessionId)}`;
156
132
  const formatItemDocId = (0, import_utils.parseArangoId)(itemId);
157
133
  const formatReactionName = (0, import_utils.parseChar)(reactionName);
158
- const aqlQry = import_arangojs.aql`FOR r in hasReactions
134
+ const aqlQry = import_arangojs.aql`FOR r in hasReaction
159
135
  FILTER r._from == ${formatSessionId} && r._to == ${formatItemDocId} && r.name == ${formatReactionName}
160
136
  LIMIT 1
161
- REMOVE r IN hasReactions
137
+ REMOVE r IN hasReaction
162
138
  RETURN OLD`;
163
139
  return database.query(aqlQry).then((cursor) => cursor.next()).catch((error) => (0, import_utils2.logError)({
164
140
  action,
@@ -190,10 +166,11 @@ const updateReaction = (context, reaction = {}) => {
190
166
  name: formatName,
191
167
  value: formatValue
192
168
  };
193
- const insert = __spreadProps(__spreadValues({}, update), {
169
+ const insert = {
170
+ ...update,
194
171
  _key: edgeId,
195
172
  added: Date.now()
196
- });
173
+ };
197
174
  const aqlQry = import_arangojs.aql`UPSERT ${{ _id: formatId }}
198
175
  INSERT ${insert}
199
176
  UPDATE ${update}
@@ -210,7 +187,7 @@ const getReactionCount = (context, itemId, reactionName) => {
210
187
  const { database } = context;
211
188
  const formatItemId = (0, import_utils.parseArangoId)(itemId);
212
189
  const formatReactionName = (0, import_utils.parseChar)(reactionName, 32);
213
- const aqlQry = import_arangojs.aql`FOR i, r IN INBOUND ${formatItemId} hasReactions
190
+ const aqlQry = import_arangojs.aql`FOR i, r IN INBOUND ${formatItemId} hasReaction
214
191
  FILTER r.name == ${formatReactionName}
215
192
  COLLECT WITH COUNT INTO count
216
193
  RETURN count`;
@@ -226,7 +203,7 @@ const getReactionCountByUser = (context, itemId, itemType, reactionName) => {
226
203
  const formatItemId = (0, import_utils.parseArangoId)(itemId);
227
204
  const formatReactionName = (0, import_utils.parseChar)(reactionName, 32);
228
205
  const sessionDocId = `users/${sessionId}`;
229
- const aqlQry = import_arangojs.aql`FOR i, r IN INBOUND ${formatItemId} hasReactions
206
+ const aqlQry = import_arangojs.aql`FOR i, r IN INBOUND ${formatItemId} hasReaction
230
207
  FILTER r.name == ${formatReactionName} && r._from == ${sessionDocId}
231
208
  COLLECT reactionValue = r.value INTO reactionItems
232
209
  RETURN MERGE(r, {count: LENGTH(reactionItems[*].r.value)})`;
@@ -266,7 +243,7 @@ const getGroupUsersByReaction = (context, params = {}) => {
266
243
  `r.value == "${reaction}"`,
267
244
  "u._id == r._from"
268
245
  ]).join(" && ");
269
- const aqlQry = `FOR g, r IN INBOUND "${groupDocId}" hasReactions
246
+ const aqlQry = `FOR g, r IN INBOUND "${groupDocId}" hasReaction
270
247
  FOR u IN users
271
248
  FILTER ${filterStr}
272
249
  RETURN u`;
@@ -282,7 +259,7 @@ const getReactionsByItem = (context, itemId, reactionName, options) => {
282
259
  const formatItemId = (0, import_utils.parseArangoId)(itemId);
283
260
  const formatReactionName = (0, import_utils.parseChar)(reactionName, 32);
284
261
  const { limit } = parseReactionOptions(options);
285
- const aqlQry = `FOR i, r IN INBOUND "${formatItemId}" hasReactions
262
+ const aqlQry = `FOR i, r IN INBOUND "${formatItemId}" hasReaction
286
263
  FILTER r.name == "${formatReactionName}"
287
264
  ${limit.aql}
288
265
  RETURN MERGE(i, {reaction: r})`;
@@ -298,7 +275,7 @@ const getItemsByReaction = (context, itemId, reactionName, options) => {
298
275
  const formatItemId = (0, import_utils.parseArangoId)(itemId);
299
276
  const formatReactionName = (0, import_utils.parseChar)(reactionName, 32);
300
277
  const { limit } = parseReactionOptions(options);
301
- const aqlQry = `FOR u, r IN OUTBOUND "${formatItemId}" hasReactions
278
+ const aqlQry = `FOR u, r IN OUTBOUND "${formatItemId}" hasReaction
302
279
  FILTER r.name == ${formatReactionName}
303
280
  ${limit.aql}
304
281
  RETURN MERGE(u, {reaction: r})`;
@@ -315,7 +292,7 @@ const hasReaction = (context, itemId, reactionName, direction = "OUTBOUND") => {
315
292
  const formatItemId = (0, import_utils.parseArangoId)(itemId);
316
293
  const formatDirection = direction === "OUTBOUND" ? "OUTBOUND" : "INBOUND";
317
294
  const itemDirection = direction === "OUTBOUND" ? "r._to" : "r._from";
318
- const aqlQry = `FOR i, r IN ${formatDirection} "${sessionDocId}" hasReactions
295
+ const aqlQry = `FOR i, r IN ${formatDirection} "${sessionDocId}" hasReaction
319
296
  FILTER r.name == "${reactionName}" && ${itemDirection} == "${formatItemId}"
320
297
  LIMIT 1
321
298
  RETURN r`;
@@ -340,4 +317,4 @@ const hasReaction = (context, itemId, reactionName, direction = "OUTBOUND") => {
340
317
  parseReactionOptions,
341
318
  updateReaction
342
319
  });
343
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvcmVhY3Rpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlQXJhbmdvSWQsIHBhcnNlQ2hhciwgcGFyc2VJZCwgcGFyc2VOdW0sIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQge0VkZ2VDb2xsZWN0aW9ufSBmcm9tICdhcmFuZ29qcy9jb2xsZWN0aW9uJztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2N1cnNvcic7XG5cbmltcG9ydCB7QXBpQ29udGV4dCwgQXBwQ29sbGVjdGlvblR5cGVzLCBRdWVyeUZpbHRlciwgVXNlciwgVXNlclJlYWN0aW9uUXVlcnl9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Z2V0TGltaXQsIGxvZ0Vycm9yLCBsb2dFeGNlcHRpb259IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ3JlYWN0aW9ucyc7XG5cbmV4cG9ydCB0eXBlIFJlYWN0aW9uRGlyZWN0aW9uID0gJ0lOQk9VTkQnIHwgJ09VVEJPVU5EJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdGlvbiB7XG4gIHJlYWRvbmx5IF9mcm9tPzogc3RyaW5nO1xuICByZWFkb25seSBfa2V5Pzogc3RyaW5nO1xuICByZWFkb25seSBfdG8/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFkZGVkPzogbnVtYmVyO1xuICByZWFkb25seSBjb3VudD86IG51bWJlcjtcbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHR5cGU/OiBBcHBDb2xsZWN0aW9uVHlwZXM7XG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0aW9uT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGZyb20/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHRvPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgcGFyc2VSZWFjdGlvbk9wdGlvbnMgPSAob3B0aW9uczogUmVhY3Rpb25PcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGZyb20gPSAwLFxuICAgIHRvID0gMzBcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIHtcbiAgICBsaW1pdDogZ2V0TGltaXQoZnJvbSwgdG8pXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgYWRkUmVhY3Rpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbjogUmVhY3Rpb24gPSB7fSxcbiAgYWxsb3dEdXBsaWNhdGU6IGJvb2xlYW4gPSBmYWxzZVxuKTogUHJvbWlzZTxSZWFjdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdhZGRSZWFjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuXG4gIGlmKCFzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICd1bmF1dGhvcml6ZWQnLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBuYW1lOiBpdGVtTmFtZSA9ICdsaWtlJyxcbiAgICB2YWx1ZTogaXRlbVZhbHVlXG4gIH0gPSByZWFjdGlvbjtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uTmFtZTogc3RyaW5nID0gcGFyc2VDaGFyKGl0ZW1OYW1lLCAzMik7XG4gIGNvbnN0IGZvcm1hdFZhbHVlOiBzdHJpbmcgPSBwYXJzZVN0cmluZyhpdGVtVmFsdWUsIDMyKTtcbiAgY29uc3QgZWRnZUNvbGxlY3Rpb246IEVkZ2VDb2xsZWN0aW9uID0gZGF0YWJhc2UuY29sbGVjdGlvbignaGFzUmVhY3Rpb25zJyk7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG4gIGNvbnN0IGVkZ2VJZDogc3RyaW5nID0gY3JlYXRlSGFzaChgcmVhY3Rpb24tJHtmb3JtYXRJdGVtSWR9LSR7c2Vzc2lvbklkfWApO1xuICBjb25zdCBlZGdlOiBSZWFjdGlvbiA9IHtcbiAgICBfZnJvbTogc2Vzc2lvbkRvY0lkLFxuICAgIF9rZXk6IGVkZ2VJZCxcbiAgICBfdG86IGZvcm1hdEl0ZW1JZCxcbiAgICBhZGRlZDogRGF0ZS5ub3coKSxcbiAgICBuYW1lOiBmb3JtYXRSZWFjdGlvbk5hbWUsXG4gICAgdmFsdWU6IGl0ZW1WYWx1ZSAhPT0gdW5kZWZpbmVkID8gZm9ybWF0VmFsdWUgOiB1bmRlZmluZWRcbiAgfTtcblxuICAvLyBDaGVjayBmb3IgZHVwbGljYXRlcyBpZiBub3QgYWxsb3dlZFxuICBpZighYWxsb3dEdXBsaWNhdGUpIHtcbiAgICAvLyBRdWVyeVxuICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIHIgSU4gaGFzUmVhY3Rpb25zXG4gICAgICBGSUxURVIgci5fZnJvbSA9PSAke3Nlc3Npb25Eb2NJZH0gJiYgci5fdG8gPT0gJHtmb3JtYXRJdGVtSWR9ICYmIHIubmFtZSA9PSAke2Zvcm1hdFJlYWN0aW9uTmFtZX1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFVFVSTiByYDtcblxuICAgIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgIC50aGVuKChyZWFjdGlvbikgPT4ge1xuICAgICAgICBpZighIXJlYWN0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIHJlYWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVkZ2VDb2xsZWN0aW9uLnNhdmUoZWRnZSwge3JldHVybk5ldzogdHJ1ZX0pLnRoZW4oKCkgPT4gZWRnZSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ2FkZFJlYWN0aW9uOjplcnJvcicsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIGxvZ0Vycm9yKHtcbiAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICAgICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBlZGdlQ29sbGVjdGlvbi5zYXZlKGVkZ2UsIHtyZXR1cm5OZXc6IHRydWV9KS50aGVuKCgpID0+IGVkZ2UpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZVJlYWN0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHJlYWN0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8UmVhY3Rpb24+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZGVsZXRlUmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcblxuICBpZighc2Vzc2lvbklkKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAndW5hdXRob3JpemVkJyxcbiAgICAgIHZhbHVlOiAnaW52YWxpZF9zZXNzaW9uJ1xuICAgIH0sIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCk7XG4gIH1cblxuICBjb25zdCBmb3JtYXRTZXNzaW9uSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3BhcnNlSWQoc2Vzc2lvbklkKX1gO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbklkOiBzdHJpbmcgPSBgaGFzUmVhY3Rpb25zLyR7cGFyc2VJZChyZWFjdGlvbklkKX1gO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgTEVUIHIgPSBET0NVTUVOVCgke2Zvcm1hdFJlYWN0aW9uSWR9KVxuICAgIEZJTFRFUiByLl9mcm9tID09ICR7Zm9ybWF0U2Vzc2lvbklkfVxuICAgIExJTUlUIDFcbiAgICBSRU1PVkUgciBJTiBoYXNSZWFjdGlvbnNcbiAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZVJlYWN0aW9uQnlJdGVtID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpdGVtSWQ6IHN0cmluZyxcbiAgcmVhY3Rpb25OYW1lOiBzdHJpbmdcbik6IFByb21pc2U8UmVhY3Rpb24+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZGVsZXRlUmVhY3Rpb25CeUl0ZW0nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcblxuICBpZighc2Vzc2lvbklkKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAndW5hdXRob3JpemVkJyxcbiAgICAgIHZhbHVlOiAnaW52YWxpZF9zZXNzaW9uJ1xuICAgIH0sIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCk7XG4gIH1cblxuICBjb25zdCBmb3JtYXRTZXNzaW9uSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3BhcnNlSWQoc2Vzc2lvbklkKX1gO1xuICBjb25zdCBmb3JtYXRJdGVtRG9jSWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lOiBzdHJpbmcgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lKTtcblxuICAvLyBRdWVyeVxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiByIGluIGhhc1JlYWN0aW9uc1xuICAgIEZJTFRFUiByLl9mcm9tID09ICR7Zm9ybWF0U2Vzc2lvbklkfSAmJiByLl90byA9PSAke2Zvcm1hdEl0ZW1Eb2NJZH0gJiYgci5uYW1lID09ICR7Zm9ybWF0UmVhY3Rpb25OYW1lfVxuICAgIExJTUlUIDFcbiAgICBSRU1PVkUgciBJTiBoYXNSZWFjdGlvbnNcbiAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVJlYWN0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHJlYWN0aW9uOiBSZWFjdGlvbiA9IHt9KTogUHJvbWlzZTxSZWFjdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICd1cGRhdGVSZWFjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuXG4gIGlmKCFzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICd1bmF1dGhvcml6ZWQnLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpZDogaXRlbUlkLFxuICAgIG5hbWU6IGl0ZW1OYW1lLFxuICAgIHZhbHVlOiBpdGVtVmFsdWVcbiAgfSA9IHJlYWN0aW9uO1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXROYW1lOiBzdHJpbmcgPSBwYXJzZUNoYXIoaXRlbU5hbWUsIDMyKTtcbiAgY29uc3QgZm9ybWF0VmFsdWU6IHN0cmluZyA9IHBhcnNlU3RyaW5nKGl0ZW1WYWx1ZSwgMzIpO1xuICBjb25zdCBlZGdlSWQ6IHN0cmluZyA9IGNyZWF0ZUhhc2goYHJlYWN0aW9uLSR7Zm9ybWF0SWR9LSR7c2Vzc2lvbklkfWApO1xuICBjb25zdCB1cGRhdGU6IFJlYWN0aW9uID0ge1xuICAgIG5hbWU6IGZvcm1hdE5hbWUsXG4gICAgdmFsdWU6IGZvcm1hdFZhbHVlXG4gIH07XG4gIGNvbnN0IGluc2VydDogUmVhY3Rpb24gPSB7XG4gICAgLi4udXBkYXRlLFxuICAgIF9rZXk6IGVkZ2VJZCxcbiAgICBhZGRlZDogRGF0ZS5ub3coKVxuICB9O1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBTRVJUICR7e19pZDogZm9ybWF0SWR9fVxuICAgIElOU0VSVCAke2luc2VydH1cbiAgICBVUERBVEUgJHt1cGRhdGV9XG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhY3Rpb25Db3VudCA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPFJlYWN0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFJlYWN0aW9uQ291bnQnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uTmFtZTogYW55ID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGksIHIgSU4gSU5CT1VORCAke2Zvcm1hdEl0ZW1JZH0gaGFzUmVhY3Rpb25zXG4gICAgRklMVEVSIHIubmFtZSA9PSAke2Zvcm1hdFJlYWN0aW9uTmFtZX1cbiAgICBDT0xMRUNUIFdJVEggQ09VTlQgSU5UTyBjb3VudFxuICAgIFJFVFVSTiBjb3VudGA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IHVuZGVmaW5lZCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlYWN0aW9uQ291bnRCeVVzZXIgPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICBpdGVtVHlwZTogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZ1xuKTogUHJvbWlzZTxSZWFjdGlvbltdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFJlYWN0aW9uQ291bnRCeVVzZXInO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uTmFtZTogYW55ID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpO1xuICBjb25zdCBzZXNzaW9uRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGksIHIgSU4gSU5CT1VORCAke2Zvcm1hdEl0ZW1JZH0gaGFzUmVhY3Rpb25zXG4gICAgICBGSUxURVIgci5uYW1lID09ICR7Zm9ybWF0UmVhY3Rpb25OYW1lfSAmJiByLl9mcm9tID09ICR7c2Vzc2lvbkRvY0lkfVxuICAgICAgQ09MTEVDVCByZWFjdGlvblZhbHVlID0gci52YWx1ZSBJTlRPIHJlYWN0aW9uSXRlbXNcbiAgICAgIFJFVFVSTiBNRVJHRShyLCB7Y291bnQ6IExFTkdUSChyZWFjdGlvbkl0ZW1zWypdLnIudmFsdWUpfSlgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IFtdKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R3JvdXBVc2Vyc0J5UmVhY3Rpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCwgcGFyYW1zOiBVc2VyUmVhY3Rpb25RdWVyeSA9IHt9KTogUHJvbWlzZTxVc2VyW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0R3JvdXBVc2Vyc0J5UmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcblxuICBpZighc2Vzc2lvbklkKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAndW5hdXRob3JpemVkJyxcbiAgICAgIHZhbHVlOiAnaW52YWxpZF9zZXNzaW9uJ1xuICAgIH0sIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCk7XG4gIH1cblxuICBjb25zdCB7ZmlsdGVycyA9IFtdLCBpZDogZ3JvdXBJZCwgdmFsdWV9OiBVc2VyUmVhY3Rpb25RdWVyeSA9IHBhcmFtcztcbiAgY29uc3QgcmVhY3Rpb24gPSBwYXJzZUNoYXIodmFsdWUsIDMyKTtcbiAgY29uc3QgZ3JvdXBEb2NJZCA9IHBhcnNlQXJhbmdvSWQoZ3JvdXBJZCk7XG4gIGNvbnN0IGZpbHRlclN0cjogc3RyaW5nID0gZmlsdGVyc1xuICAgIC5tYXAoKGZpbHRlcjogUXVlcnlGaWx0ZXIpID0+IHtcbiAgICAgIGNvbnN0IHtjb25kaXRpb25hbCwgbmFtZSwgdmFsdWU6IHF1ZXJ5VmFsdWV9OiBRdWVyeUZpbHRlciA9IGZpbHRlcjtcbiAgICAgIGxldCBmaWx0ZXJDb25kOiBzdHJpbmcgPSBjb25kaXRpb25hbDtcblxuICAgICAgaWYoY29uZGl0aW9uYWwgIT09ICc+PScgJiYgY29uZGl0aW9uYWwgIT09ICc8PScgJiYgY29uZGl0aW9uYWwgIT09ICc+JyAmJiBjb25kaXRpb25hbCAhPT0gJzwnKSB7XG4gICAgICAgIGZpbHRlckNvbmQgPSAnPT0nO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2gobmFtZSkge1xuICAgICAgICBjYXNlICdhZGRlZCc6XG4gICAgICAgICAgcmV0dXJuIGByLmFkZGVkICR7ZmlsdGVyQ29uZH0gJHtwYXJzZU51bShxdWVyeVZhbHVlKX1gO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICB9KVxuICAgIC5jb25jYXQoW1xuICAgICAgYHIudmFsdWUgPT0gXCIke3JlYWN0aW9ufVwiYCxcbiAgICAgICd1Ll9pZCA9PSByLl9mcm9tJ1xuICAgIF0pXG4gICAgLmpvaW4oJyAmJiAnKTtcblxuICAvLyBRdWVyeVxuICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgZywgciBJTiBJTkJPVU5EIFwiJHtncm91cERvY0lkfVwiIGhhc1JlYWN0aW9uc1xuICAgICAgRk9SIHUgSU4gdXNlcnNcbiAgICAgIEZJTFRFUiAke2ZpbHRlclN0cn1cbiAgICAgIFJFVFVSTiB1YDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBbXSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlYWN0aW9uc0J5SXRlbSA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiBSZWFjdGlvbk9wdGlvbnNcbik6IFByb21pc2U8VXNlcltdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFJlYWN0aW9uc0J5SXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lOiBzdHJpbmcgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG4gIGNvbnN0IHtsaW1pdH0gPSBwYXJzZVJlYWN0aW9uT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGksIHIgSU4gSU5CT1VORCBcIiR7Zm9ybWF0SXRlbUlkfVwiIGhhc1JlYWN0aW9uc1xuICAgIEZJTFRFUiByLm5hbWUgPT0gXCIke2Zvcm1hdFJlYWN0aW9uTmFtZX1cIlxuICAgICR7bGltaXQuYXFsfVxuICAgIFJFVFVSTiBNRVJHRShpLCB7cmVhY3Rpb246IHJ9KWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gW10pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJdGVtc0J5UmVhY3Rpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogUmVhY3Rpb25PcHRpb25zXG4pOiBQcm9taXNlPFJlYWN0aW9uW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0SXRlbXNCeVJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEl0ZW1JZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbk5hbWU6IHN0cmluZyA9IHBhcnNlQ2hhcihyZWFjdGlvbk5hbWUsIDMyKTtcbiAgY29uc3Qge2xpbWl0fSA9IHBhcnNlUmVhY3Rpb25PcHRpb25zKG9wdGlvbnMpO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiB1LCByIElOIE9VVEJPVU5EIFwiJHtmb3JtYXRJdGVtSWR9XCIgaGFzUmVhY3Rpb25zXG4gICAgRklMVEVSIHIubmFtZSA9PSAke2Zvcm1hdFJlYWN0aW9uTmFtZX1cbiAgICAke2xpbWl0LmFxbH1cbiAgICBSRVRVUk4gTUVSR0UodSwge3JlYWN0aW9uOiByfSlgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IFtdKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzUmVhY3Rpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZyxcbiAgZGlyZWN0aW9uOiBSZWFjdGlvbkRpcmVjdGlvbiA9ICdPVVRCT1VORCdcbik6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdoYXNSZWFjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBzZXNzaW9uRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0RGlyZWN0aW9uID0gZGlyZWN0aW9uID09PSAnT1VUQk9VTkQnID8gJ09VVEJPVU5EJyA6ICdJTkJPVU5EJztcbiAgY29uc3QgaXRlbURpcmVjdGlvbjogc3RyaW5nID0gZGlyZWN0aW9uID09PSAnT1VUQk9VTkQnID8gJ3IuX3RvJyA6ICdyLl9mcm9tJztcblxuICAvLyBRdWVyeVxuICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgaSwgciBJTiAke2Zvcm1hdERpcmVjdGlvbn0gXCIke3Nlc3Npb25Eb2NJZH1cIiBoYXNSZWFjdGlvbnNcbiAgICBGSUxURVIgci5uYW1lID09IFwiJHtyZWFjdGlvbk5hbWV9XCIgJiYgJHtpdGVtRGlyZWN0aW9ufSA9PSBcIiR7Zm9ybWF0SXRlbUlkfVwiXG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiByYDtcblxuICBjb25zb2xlLmxvZyh7YXFsUXJ5fSk7XG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHJlYWN0aW9ucykgPT4gKHJlYWN0aW9ucyA/IHJlYWN0aW9ucy52YWx1ZSA9PT0gJ3RydWUnIDogZmFsc2UpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gZmFsc2UpKTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFBbUY7QUFDbkYsc0JBQWtCO0FBTWxCLG9CQUErQztBQUUvQyxNQUFNLGdCQUF3QjtBQXFCdkIsTUFBTSx1QkFBdUIsQ0FBQyxVQUEyQixPQUFPO0FBQ3JFLFFBQU07QUFBQSxJQUNKLE9BQU87QUFBQSxJQUNQLEtBQUs7QUFBQSxNQUNIO0FBRUosU0FBTztBQUFBLElBQ0wsT0FBTyw0QkFBUyxNQUFNO0FBQUE7QUFBQTtBQUluQixNQUFNLGNBQWMsQ0FDekIsU0FDQSxRQUNBLFdBQXFCLElBQ3JCLGlCQUEwQixVQUNKO0FBQ3RCLFFBQU0sU0FBaUI7QUFDdkIsUUFBTSxFQUFDLFVBQVUsU0FBUyxFQUFDLFFBQVEsZ0JBQWM7QUFFakQsTUFBRyxDQUFDLFdBQVc7QUFDYixXQUFPLGdDQUFhO0FBQUEsTUFDbEI7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLE9BQU87QUFBQSxNQUNQLE9BQU87QUFBQSxPQUNOLFNBQVMsS0FBSyxNQUFNO0FBQUE7QUFHekIsUUFBTTtBQUFBLElBQ0osTUFBTSxXQUFXO0FBQUEsSUFDakIsT0FBTztBQUFBLE1BQ0w7QUFDSixRQUFNLGVBQXVCLGdDQUFjO0FBQzNDLFFBQU0scUJBQTZCLDRCQUFVLFVBQVU7QUFDdkQsUUFBTSxjQUFzQiw4QkFBWSxXQUFXO0FBQ25ELFFB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
320
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvcmVhY3Rpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlQXJhbmdvSWQsIHBhcnNlQ2hhciwgcGFyc2VJZCwgcGFyc2VOdW0sIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQge0VkZ2VDb2xsZWN0aW9ufSBmcm9tICdhcmFuZ29qcy9jb2xsZWN0aW9uJztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2N1cnNvcic7XG5cbmltcG9ydCB7QXBpQ29udGV4dCwgQXBwQ29sbGVjdGlvblR5cGVzLCBRdWVyeUZpbHRlciwgVXNlciwgVXNlclJlYWN0aW9uUXVlcnl9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Z2V0TGltaXQsIGxvZ0Vycm9yLCBsb2dFeGNlcHRpb259IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ3JlYWN0aW9ucyc7XG5cbmV4cG9ydCB0eXBlIFJlYWN0aW9uRGlyZWN0aW9uID0gJ0lOQk9VTkQnIHwgJ09VVEJPVU5EJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdGlvbiB7XG4gIHJlYWRvbmx5IF9mcm9tPzogc3RyaW5nO1xuICByZWFkb25seSBfa2V5Pzogc3RyaW5nO1xuICByZWFkb25seSBfdG8/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFkZGVkPzogbnVtYmVyO1xuICByZWFkb25seSBjb3VudD86IG51bWJlcjtcbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHR5cGU/OiBBcHBDb2xsZWN0aW9uVHlwZXM7XG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0aW9uT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGZyb20/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHRvPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgcGFyc2VSZWFjdGlvbk9wdGlvbnMgPSAob3B0aW9uczogUmVhY3Rpb25PcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGZyb20gPSAwLFxuICAgIHRvID0gMzBcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIHtcbiAgICBsaW1pdDogZ2V0TGltaXQoZnJvbSwgdG8pXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgYWRkUmVhY3Rpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbjogUmVhY3Rpb24gPSB7fSxcbiAgYWxsb3dEdXBsaWNhdGU6IGJvb2xlYW4gPSBmYWxzZVxuKTogUHJvbWlzZTxSZWFjdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdhZGRSZWFjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuXG4gIGlmKCFzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICd1bmF1dGhvcml6ZWQnLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBuYW1lOiBpdGVtTmFtZSA9ICdsaWtlJyxcbiAgICB2YWx1ZTogaXRlbVZhbHVlXG4gIH0gPSByZWFjdGlvbjtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uTmFtZTogc3RyaW5nID0gcGFyc2VDaGFyKGl0ZW1OYW1lLCAzMik7XG4gIGNvbnN0IGZvcm1hdFZhbHVlOiBzdHJpbmcgPSBwYXJzZVN0cmluZyhpdGVtVmFsdWUsIDMyKTtcbiAgY29uc3QgZWRnZUNvbGxlY3Rpb246IEVkZ2VDb2xsZWN0aW9uID0gZGF0YWJhc2UuY29sbGVjdGlvbignaGFzUmVhY3Rpb24nKTtcbiAgY29uc3Qgc2Vzc2lvbkRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtzZXNzaW9uSWR9YDtcbiAgY29uc3QgZWRnZUlkOiBzdHJpbmcgPSBjcmVhdGVIYXNoKGByZWFjdGlvbi0ke2Zvcm1hdEl0ZW1JZH0tJHtzZXNzaW9uSWR9YCk7XG4gIGNvbnN0IGVkZ2U6IFJlYWN0aW9uID0ge1xuICAgIF9mcm9tOiBzZXNzaW9uRG9jSWQsXG4gICAgX2tleTogZWRnZUlkLFxuICAgIF90bzogZm9ybWF0SXRlbUlkLFxuICAgIGFkZGVkOiBEYXRlLm5vdygpLFxuICAgIG5hbWU6IGZvcm1hdFJlYWN0aW9uTmFtZSxcbiAgICB2YWx1ZTogaXRlbVZhbHVlICE9PSB1bmRlZmluZWQgPyBmb3JtYXRWYWx1ZSA6IHVuZGVmaW5lZFxuICB9O1xuXG4gIC8vIENoZWNrIGZvciBkdXBsaWNhdGVzIGlmIG5vdCBhbGxvd2VkXG4gIGlmKCFhbGxvd0R1cGxpY2F0ZSkge1xuICAgIC8vIFF1ZXJ5XG4gICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgciBJTiBoYXNSZWFjdGlvblxuICAgICAgRklMVEVSIHIuX2Zyb20gPT0gJHtzZXNzaW9uRG9jSWR9ICYmIHIuX3RvID09ICR7Zm9ybWF0SXRlbUlkfSAmJiByLm5hbWUgPT0gJHtmb3JtYXRSZWFjdGlvbk5hbWV9XG4gICAgICBMSU1JVCAxXG4gICAgICBSRVRVUk4gcmA7XG5cbiAgICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAudGhlbigocmVhY3Rpb24pID0+IHtcbiAgICAgICAgaWYoISFyZWFjdGlvbikge1xuICAgICAgICAgIHJldHVybiByZWFjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlZGdlQ29sbGVjdGlvbi5zYXZlKGVkZ2UsIHtyZXR1cm5OZXc6IHRydWV9KS50aGVuKCgpID0+IGVkZ2UpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdhZGRSZWFjdGlvbjo6ZXJyb3InLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBsb2dFcnJvcih7XG4gICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuICAgICAgfSk7XG4gIH1cblxuICByZXR1cm4gZWRnZUNvbGxlY3Rpb24uc2F2ZShlZGdlLCB7cmV0dXJuTmV3OiB0cnVlfSkudGhlbigoKSA9PiBlZGdlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVSZWFjdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCByZWFjdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPFJlYWN0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZVJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG5cbiAgaWYoIXNlc3Npb25JZCkge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ3VuYXV0aG9yaXplZCcsXG4gICAgICB2YWx1ZTogJ2ludmFsaWRfc2Vzc2lvbidcbiAgICB9LCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuICB9XG5cbiAgY29uc3QgZm9ybWF0U2Vzc2lvbklkOiBzdHJpbmcgPSBgdXNlcnMvJHtwYXJzZUlkKHNlc3Npb25JZCl9YDtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25JZDogc3RyaW5nID0gYGhhc1JlYWN0aW9uLyR7cGFyc2VJZChyZWFjdGlvbklkKX1gO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgTEVUIHIgPSBET0NVTUVOVCgke2Zvcm1hdFJlYWN0aW9uSWR9KVxuICAgIEZJTFRFUiByLl9mcm9tID09ICR7Zm9ybWF0U2Vzc2lvbklkfVxuICAgIExJTUlUIDFcbiAgICBSRU1PVkUgciBJTiBoYXNSZWFjdGlvblxuICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlUmVhY3Rpb25CeUl0ZW0gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZ1xuKTogUHJvbWlzZTxSZWFjdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdkZWxldGVSZWFjdGlvbkJ5SXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuXG4gIGlmKCFzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICd1bmF1dGhvcml6ZWQnLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0IGZvcm1hdFNlc3Npb25JZDogc3RyaW5nID0gYHVzZXJzLyR7cGFyc2VJZChzZXNzaW9uSWQpfWA7XG4gIGNvbnN0IGZvcm1hdEl0ZW1Eb2NJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbk5hbWU6IHN0cmluZyA9IHBhcnNlQ2hhcihyZWFjdGlvbk5hbWUpO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIHIgaW4gaGFzUmVhY3Rpb25cbiAgICBGSUxURVIgci5fZnJvbSA9PSAke2Zvcm1hdFNlc3Npb25JZH0gJiYgci5fdG8gPT0gJHtmb3JtYXRJdGVtRG9jSWR9ICYmIHIubmFtZSA9PSAke2Zvcm1hdFJlYWN0aW9uTmFtZX1cbiAgICBMSU1JVCAxXG4gICAgUkVNT1ZFIHIgSU4gaGFzUmVhY3Rpb25cbiAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVJlYWN0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHJlYWN0aW9uOiBSZWFjdGlvbiA9IHt9KTogUHJvbWlzZTxSZWFjdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICd1cGRhdGVSZWFjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuXG4gIGlmKCFzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICd1bmF1dGhvcml6ZWQnLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpZDogaXRlbUlkLFxuICAgIG5hbWU6IGl0ZW1OYW1lLFxuICAgIHZhbHVlOiBpdGVtVmFsdWVcbiAgfSA9IHJlYWN0aW9uO1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXROYW1lOiBzdHJpbmcgPSBwYXJzZUNoYXIoaXRlbU5hbWUsIDMyKTtcbiAgY29uc3QgZm9ybWF0VmFsdWU6IHN0cmluZyA9IHBhcnNlU3RyaW5nKGl0ZW1WYWx1ZSwgMzIpO1xuICBjb25zdCBlZGdlSWQ6IHN0cmluZyA9IGNyZWF0ZUhhc2goYHJlYWN0aW9uLSR7Zm9ybWF0SWR9LSR7c2Vzc2lvbklkfWApO1xuICBjb25zdCB1cGRhdGU6IFJlYWN0aW9uID0ge1xuICAgIG5hbWU6IGZvcm1hdE5hbWUsXG4gICAgdmFsdWU6IGZvcm1hdFZhbHVlXG4gIH07XG4gIGNvbnN0IGluc2VydDogUmVhY3Rpb24gPSB7XG4gICAgLi4udXBkYXRlLFxuICAgIF9rZXk6IGVkZ2VJZCxcbiAgICBhZGRlZDogRGF0ZS5ub3coKVxuICB9O1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBTRVJUICR7e19pZDogZm9ybWF0SWR9fVxuICAgIElOU0VSVCAke2luc2VydH1cbiAgICBVUERBVEUgJHt1cGRhdGV9XG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhY3Rpb25Db3VudCA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPFJlYWN0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFJlYWN0aW9uQ291bnQnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uTmFtZTogYW55ID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGksIHIgSU4gSU5CT1VORCAke2Zvcm1hdEl0ZW1JZH0gaGFzUmVhY3Rpb25cbiAgICBGSUxURVIgci5uYW1lID09ICR7Zm9ybWF0UmVhY3Rpb25OYW1lfVxuICAgIENPTExFQ1QgV0lUSCBDT1VOVCBJTlRPIGNvdW50XG4gICAgUkVUVVJOIGNvdW50YDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gdW5kZWZpbmVkKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhY3Rpb25Db3VudEJ5VXNlciA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIGl0ZW1UeXBlOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPFJlYWN0aW9uW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0UmVhY3Rpb25Db3VudEJ5VXNlcic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lOiBhbnkgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgaSwgciBJTiBJTkJPVU5EICR7Zm9ybWF0SXRlbUlkfSBoYXNSZWFjdGlvblxuICAgICAgRklMVEVSIHIubmFtZSA9PSAke2Zvcm1hdFJlYWN0aW9uTmFtZX0gJiYgci5fZnJvbSA9PSAke3Nlc3Npb25Eb2NJZH1cbiAgICAgIENPTExFQ1QgcmVhY3Rpb25WYWx1ZSA9IHIudmFsdWUgSU5UTyByZWFjdGlvbkl0ZW1zXG4gICAgICBSRVRVUk4gTUVSR0Uociwge2NvdW50OiBMRU5HVEgocmVhY3Rpb25JdGVtc1sqXS5yLnZhbHVlKX0pYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBbXSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyb3VwVXNlcnNCeVJlYWN0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHBhcmFtczogVXNlclJlYWN0aW9uUXVlcnkgPSB7fSk6IFByb21pc2U8VXNlcltdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldEdyb3VwVXNlcnNCeVJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG5cbiAgaWYoIXNlc3Npb25JZCkge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ3VuYXV0aG9yaXplZCcsXG4gICAgICB2YWx1ZTogJ2ludmFsaWRfc2Vzc2lvbidcbiAgICB9LCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuICB9XG5cbiAgY29uc3Qge2ZpbHRlcnMgPSBbXSwgaWQ6IGdyb3VwSWQsIHZhbHVlfTogVXNlclJlYWN0aW9uUXVlcnkgPSBwYXJhbXM7XG4gIGNvbnN0IHJlYWN0aW9uID0gcGFyc2VDaGFyKHZhbHVlLCAzMik7XG4gIGNvbnN0IGdyb3VwRG9jSWQgPSBwYXJzZUFyYW5nb0lkKGdyb3VwSWQpO1xuICBjb25zdCBmaWx0ZXJTdHI6IHN0cmluZyA9IGZpbHRlcnNcbiAgICAubWFwKChmaWx0ZXI6IFF1ZXJ5RmlsdGVyKSA9PiB7XG4gICAgICBjb25zdCB7Y29uZGl0aW9uYWwsIG5hbWUsIHZhbHVlOiBxdWVyeVZhbHVlfTogUXVlcnlGaWx0ZXIgPSBmaWx0ZXI7XG4gICAgICBsZXQgZmlsdGVyQ29uZDogc3RyaW5nID0gY29uZGl0aW9uYWw7XG5cbiAgICAgIGlmKGNvbmRpdGlvbmFsICE9PSAnPj0nICYmIGNvbmRpdGlvbmFsICE9PSAnPD0nICYmIGNvbmRpdGlvbmFsICE9PSAnPicgJiYgY29uZGl0aW9uYWwgIT09ICc8Jykge1xuICAgICAgICBmaWx0ZXJDb25kID0gJz09JztcbiAgICAgIH1cblxuICAgICAgc3dpdGNoKG5hbWUpIHtcbiAgICAgICAgY2FzZSAnYWRkZWQnOlxuICAgICAgICAgIHJldHVybiBgci5hZGRlZCAke2ZpbHRlckNvbmR9ICR7cGFyc2VOdW0ocXVlcnlWYWx1ZSl9YDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfSlcbiAgICAuY29uY2F0KFtcbiAgICAgIGByLnZhbHVlID09IFwiJHtyZWFjdGlvbn1cImAsXG4gICAgICAndS5faWQgPT0gci5fZnJvbSdcbiAgICBdKVxuICAgIC5qb2luKCcgJiYgJyk7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGcsIHIgSU4gSU5CT1VORCBcIiR7Z3JvdXBEb2NJZH1cIiBoYXNSZWFjdGlvblxuICAgICAgRk9SIHUgSU4gdXNlcnNcbiAgICAgIEZJTFRFUiAke2ZpbHRlclN0cn1cbiAgICAgIFJFVFVSTiB1YDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBbXSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlYWN0aW9uc0J5SXRlbSA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiBSZWFjdGlvbk9wdGlvbnNcbik6IFByb21pc2U8VXNlcltdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFJlYWN0aW9uc0J5SXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lOiBzdHJpbmcgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG4gIGNvbnN0IHtsaW1pdH0gPSBwYXJzZVJlYWN0aW9uT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGksIHIgSU4gSU5CT1VORCBcIiR7Zm9ybWF0SXRlbUlkfVwiIGhhc1JlYWN0aW9uXG4gICAgRklMVEVSIHIubmFtZSA9PSBcIiR7Zm9ybWF0UmVhY3Rpb25OYW1lfVwiXG4gICAgJHtsaW1pdC5hcWx9XG4gICAgUkVUVVJOIE1FUkdFKGksIHtyZWFjdGlvbjogcn0pYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBbXSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEl0ZW1zQnlSZWFjdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiBSZWFjdGlvbk9wdGlvbnNcbik6IFByb21pc2U8UmVhY3Rpb25bXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRJdGVtc0J5UmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uTmFtZTogc3RyaW5nID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpO1xuICBjb25zdCB7bGltaXR9ID0gcGFyc2VSZWFjdGlvbk9wdGlvbnMob3B0aW9ucyk7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIHUsIHIgSU4gT1VUQk9VTkQgXCIke2Zvcm1hdEl0ZW1JZH1cIiBoYXNSZWFjdGlvblxuICAgIEZJTFRFUiByLm5hbWUgPT0gJHtmb3JtYXRSZWFjdGlvbk5hbWV9XG4gICAgJHtsaW1pdC5hcWx9XG4gICAgUkVUVVJOIE1FUkdFKHUsIHtyZWFjdGlvbjogcn0pYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBbXSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhc1JlYWN0aW9uID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpdGVtSWQ6IHN0cmluZyxcbiAgcmVhY3Rpb25OYW1lOiBzdHJpbmcsXG4gIGRpcmVjdGlvbjogUmVhY3Rpb25EaXJlY3Rpb24gPSAnT1VUQk9VTkQnXG4pOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnaGFzUmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qgc2Vzc2lvbkRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtzZXNzaW9uSWR9YDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdERpcmVjdGlvbiA9IGRpcmVjdGlvbiA9PT0gJ09VVEJPVU5EJyA/ICdPVVRCT1VORCcgOiAnSU5CT1VORCc7XG4gIGNvbnN0IGl0ZW1EaXJlY3Rpb246IHN0cmluZyA9IGRpcmVjdGlvbiA9PT0gJ09VVEJPVU5EJyA/ICdyLl90bycgOiAnci5fZnJvbSc7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGksIHIgSU4gJHtmb3JtYXREaXJlY3Rpb259IFwiJHtzZXNzaW9uRG9jSWR9XCIgaGFzUmVhY3Rpb25cbiAgICBGSUxURVIgci5uYW1lID09IFwiJHtyZWFjdGlvbk5hbWV9XCIgJiYgJHtpdGVtRGlyZWN0aW9ufSA9PSBcIiR7Zm9ybWF0SXRlbUlkfVwiXG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiByYDtcblxuICBjb25zb2xlLmxvZyh7YXFsUXJ5fSk7XG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHJlYWN0aW9ucykgPT4gKHJlYWN0aW9ucyA/IHJlYWN0aW9ucy52YWx1ZSA9PT0gJ3RydWUnIDogZmFsc2UpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gZmFsc2UpKTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUFtRjtBQUNuRixzQkFBa0I7QUFNbEIsSUFBQUEsZ0JBQStDO0FBRS9DLE1BQU0sZ0JBQXdCO0FBcUJ2QixNQUFNLHVCQUF1QixDQUFDLFVBQTJCLENBQUMsTUFBTTtBQUNyRSxRQUFNO0FBQUEsSUFDSixPQUFPO0FBQUEsSUFDUCxLQUFLO0FBQUEsRUFDUCxJQUFJO0FBRUosU0FBTztBQUFBLElBQ0wsV0FBTyx3QkFBUyxNQUFNLEVBQUU7QUFBQSxFQUMxQjtBQUNGO0FBRU8sTUFBTSxjQUFjLENBQ3pCLFNBQ0EsUUFDQSxXQUFxQixDQUFDLEdBQ3RCLGlCQUEwQixVQUNKO0FBQ3RCLFFBQU0sU0FBaUI7QUFDdkIsUUFBTSxFQUFDLFVBQVUsU0FBUyxFQUFDLFFBQVEsVUFBUyxFQUFDLElBQUk7QUFFakQsTUFBRyxDQUFDLFdBQVc7QUFDYixlQUFPLDRCQUFhO0FBQUEsTUFDbEI7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLE9BQU87QUFBQSxNQUNQLE9BQU87QUFBQSxJQUNULEdBQUcsT0FBTyxFQUFFLEtBQUssTUFBTSxJQUFJO0FBQUEsRUFDN0I7QUFFQSxRQUFNO0FBQUEsSUFDSixNQUFNLFdBQVc7QUFBQSxJQUNqQixPQUFPO0FBQUEsRUFDVCxJQUFJO0FBQ0osUUFBTSxtQkFBdUIsNEJBQWMsTUFBTTtBQUNqRCxRQUFNLHlCQUE2Qix3QkFB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
package/lib/actions/s3.js CHANGED
@@ -4,27 +4,29 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
- var __require = typeof require !== "undefined" ? require : (x) => {
9
- throw new Error('Dynamic require of "' + x + '" is not supported');
10
- };
11
7
  var __export = (target, all) => {
12
- __markAsModule(target);
13
8
  for (var name in all)
14
9
  __defProp(target, name, { get: all[name], enumerable: true });
15
10
  };
16
- var __reExport = (target, module2, desc) => {
17
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
18
- for (let key of __getOwnPropNames(module2))
19
- if (!__hasOwnProp.call(target, key) && key !== "default")
20
- __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
16
  }
22
- return target;
23
- };
24
- var __toModule = (module2) => {
25
- return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
17
+ return to;
26
18
  };
27
- __export(exports, {
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var s3_exports = {};
29
+ __export(s3_exports, {
28
30
  s3Delete: () => s3Delete,
29
31
  s3DeleteList: () => s3DeleteList,
30
32
  s3Get: () => s3Get,
@@ -32,8 +34,9 @@ __export(exports, {
32
34
  s3Head: () => s3Head,
33
35
  s3Put: () => s3Put
34
36
  });
35
- var import_aws_sdk = __toModule(require("aws-sdk"));
36
- var import_config = __toModule(require("../config"));
37
+ module.exports = __toCommonJS(s3_exports);
38
+ var import_aws_sdk = __toESM(require("aws-sdk"));
39
+ var import_config = require("../config");
37
40
  const s3Get = (params) => new Promise((resolve, reject) => {
38
41
  import_aws_sdk.default.config.update(import_config.Config.get("aws"));
39
42
  const s3 = new import_aws_sdk.S3();
@@ -122,4 +125,4 @@ const s3GetSignedUrl = (params = {}) => {
122
125
  s3Head,
123
126
  s3Put
124
127
  });
125
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvczMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYXdzLCB7UzN9IGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHtcbiAgRGVsZXRlT2JqZWN0T3V0cHV0LFxuICBEZWxldGVPYmplY3RSZXF1ZXN0LFxuICBEZWxldGVPYmplY3RzT3V0cHV0LFxuICBEZWxldGVPYmplY3RzUmVxdWVzdCxcbiAgR2V0T2JqZWN0T3V0cHV0LFxuICBHZXRPYmplY3RSZXF1ZXN0LFxuICBIZWFkT2JqZWN0T3V0cHV0LFxuICBIZWFkT2JqZWN0UmVxdWVzdCxcbiAgUHV0T2JqZWN0T3V0cHV0LFxuICBQdXRPYmplY3RSZXF1ZXN0XG59IGZyb20gJ2F3cy1zZGsvY2xpZW50cy9zMyc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcnO1xuXG4vLyBBV1MgUzNcbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdzMyc7XG5cbmV4cG9ydCBjb25zdCBzM0dldCA9IChwYXJhbXM6IEdldE9iamVjdFJlcXVlc3QpOiBQcm9taXNlPEdldE9iamVjdE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGF3cy5jb25maWcudXBkYXRlKENvbmZpZy5nZXQoJ2F3cycpKTtcbiAgICBjb25zdCBzMzogUzMgPSBuZXcgUzMoKTtcblxuICAgIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgICBwYXJhbXMuQnVja2V0ID0gQ29uZmlnLmdldCgnYXdzLkJ1Y2tldCcpO1xuICAgIH1cblxuICAgIHMzLmdldE9iamVjdChwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogR2V0T2JqZWN0T3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBzM0hlYWQgPSAocGFyYW1zOiBIZWFkT2JqZWN0UmVxdWVzdCk6IFByb21pc2U8SGVhZE9iamVjdE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGF3cy5jb25maWcudXBkYXRlKENvbmZpZy5nZXQoJ2F3cycpKTtcbiAgICBjb25zdCBzMzogUzMgPSBuZXcgUzMoKTtcblxuICAgIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgICBwYXJhbXMuQnVja2V0ID0gQ29uZmlnLmdldCgnYXdzLkJ1Y2tldCcpO1xuICAgIH1cblxuICAgIHMzLmhlYWRPYmplY3QocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IEhlYWRPYmplY3RPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cblxuZXhwb3J0IGNvbnN0IHMzUHV0ID0gKHBhcmFtczogUHV0T2JqZWN0UmVxdWVzdCk6IFByb21pc2U8UHV0T2JqZWN0T3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IHMzID0gbmV3IGF3cy5TMygpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBDb25maWcuZ2V0KCdhd3MuQnVja2V0Jyk7XG4gICAgfVxuXG4gICAgaWYoIXBhcmFtcy5TdG9yYWdlQ2xhc3MpIHtcbiAgICAgIHBhcmFtcy5TdG9yYWdlQ2xhc3MgPSAnUkVEVUNFRF9SRURVTkRBTkNZJztcbiAgICB9XG5cbiAgICBzMy5wdXRPYmplY3QocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IFB1dE9iamVjdE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzRGVsZXRlID0gKHBhcmFtczogRGVsZXRlT2JqZWN0UmVxdWVzdCk6IFByb21pc2U8RGVsZXRlT2JqZWN0T3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IHMzOiBTMyA9IG5ldyBTMygpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBDb25maWcuZ2V0KCdhd3MuQnVja2V0Jyk7XG4gICAgfVxuXG4gICAgczMuZGVsZXRlT2JqZWN0KHBhcmFtcywgKGVycm9yLCBvdXRwdXQ6IERlbGV0ZU9iamVjdE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzRGVsZXRlTGlzdCA9IChwYXJhbXM6IERlbGV0ZU9iamVjdHNSZXF1ZXN0KTogUHJvbWlzZTxEZWxldGVPYmplY3RzT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IHMzOiBTMyA9IG5ldyBTMygpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBDb25maWcuZ2V0KCdhd3MuQnVja2V0Jyk7XG4gICAgfVxuXG4gICAgczMuZGVsZXRlT2JqZWN0cyhwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogRGVsZXRlT2JqZWN0c091dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzR2V0U2lnbmVkVXJsID0gKHBhcmFtczogYW55ID0ge30pOiBzdHJpbmcgPT4ge1xuICBhd3MuY29uZmlnLnVwZGF0ZShDb25maWcuZ2V0KCdhd3MnKSk7XG4gIGNvbnN0IHMzOiBTMyA9IG5ldyBTMygpO1xuXG4gIGlmKCFwYXJhbXMuRXhwaXJlcykge1xuICAgIHBhcmFtcy5FeHBpcmVzID0gMTIgKiA2MCAqIDYwO1xuICB9XG5cbiAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICBwYXJhbXMuQnVja2V0ID0gQ29uZmlnLmdldCgnYXdzLkJ1Y2tldCcpO1xuICB9XG5cbiAgcmV0dXJuIHMzLmdldFNpZ25lZFVybCgnZ2V0T2JqZWN0JywgcGFyYW1zKTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQSxxQkFBc0I7QUFjdEIsb0JBQXFCO0FBS2QsTUFBTSxRQUFRLENBQUMsV0FDcEIsSUFBSSxRQUFRLENBQUMsU0FBUyxXQUFXO0FBQy9CLHlCQUFJLE9BQU8sT0FBTyxxQkFBTyxJQUFJO0FBQzdCLFFBQU0sS0FBUyxJQUFJO0FBRW5CLE1BQUcsQ0FBQyxPQUFPLFFBQVE7QUFDakIsV0FBTyxTQUFTLHFCQUFPLElBQUk7QUFBQTtBQUc3QixLQUFHLFVBQVUsUUFBUSxDQUFDLE9BQWMsV0FBNEI7QUFDOUQsUUFBRyxPQUFPO0FBQ1IsYUFBTyxPQUFPO0FBQUE7QUFHaEIsV0FBTyxRQUFRO0FBQUE7QUFBQTtBQUlkLE1BQU0sU0FBUyxDQUFDLFdBQ3JCLElBQUksUUFBUSxDQUFDLFNBQVMsV0FBVztBQUMvQix5QkFBSSxPQUFPLE9BQU8scUJBQU8sSUFBSTtBQUM3QixRQUFNLEtBQVMsSUFBSTtBQUVuQixNQUFHLENBQUMsT0FBTyxRQUFRO0FBQ2pCLFdBQU8sU0FBUyxxQkFBTyxJQUFJO0FBQUE7QUFHN0IsS0FBRyxXQUFXLFFBQVEsQ0FBQyxPQUFjLFdBQTZCO0FBQ2hFLFFBQUcsT0FBTztBQUNSLGFBQU8sT0FBTztBQUFBO0FBRWhCLFdBQU8sUUFBUTtBQUFBO0FBQUE7QUFLZCxNQUFNLFFBQVEsQ0FBQyxXQUNwQixJQUFJLFFBQVEsQ0FBQyxTQUFTLFdBQVc7QUFDL0IseUJBQUksT0FBTyxPQUFPLHFCQUFPLElBQUk7QUFDN0IsUUFBTSxLQUFLLElBQUksdUJBQUk7QUFFbkIsTUFBRyxDQUFDLE9BQU8sUUFBUTtBQUNqQixXQUFPLFNBQVMscUJBQU8sSUFBSTtBQUFBO0FBRzdCLE1BQUcsQ0FBQyxPQUFPLGNBQWM7QUFDdkIsV0FBTyxlQUFlO0FBQUE7QUFHeEIsS0FBRyxVQUFVLFFBQVEsQ0FBQyxPQUFjLFdBQTRCO0FBQzlELFFBQUcsT0FBTztBQUNSLGFBQU8sT0FBTztBQUFBO0FBRWhCLFdBQU8sUUFBUTtBQUFBO0FBQUE7QUFJZCxNQUFNLFdBQVcsQ0FBQyxXQUN2QixJQUFJLFFBQVEsQ0FBQyxTQUFTLFdBQVc7QUFDL0IseUJBQUksT0FBTyxPQUFPLHFCQUFPLElBQUk7QUFDN0IsUUFBTSxLQUFTLElBQUk7QUFFbkIsTUFBRyxDQUFDLE9BQU8sUUFBUTtBQUNqQixXQUFPLFNBQVMscUJBQU8sSUFBSTtBQUFBO0FBRzdCLEtBQUcsYUFBYSxRQUFRLENBQUMsT0FBTyxXQUErQjtBQUM3RCxRQUFHLE9BQU87QUFDUixhQUFPLE9BQU87QUFBQTtBQUVoQixXQUFPLFFBQVE7QUFBQTtBQUFBO0FBSWQsTUFBTSxlQUFlLENBQUMsV0FDM0IsSUFBSSxRQUFRLENBQUMsU0FBUyxXQUFXO0FBQy9CLHlCQUFJLE9BQU8sT0FBTyxxQkFBTyxJQUFJO0FBQzdCLFFBQU0sS0FBUyxJQUFJO0FBRW5CLE1BQUcsQ0FBQyxPQUFPLFFBQVE7QUFDakIsV0FBTyxTQUFTLHFCQUFPLElBQUk7QUFBQTtBQUc3QixLQUFHLGNBQWMsUUFBUSxDQUFDLE9BQWMsV0FBZ0M7QUFDdEUsUUFBRyxPQUFPO0FBQ1IsYUFBTyxPQUFPO0FBQUE7QUFFaEIsV0FBTyxRQUFRO0FBQUE7QUFBQTtBQUlkLE1BQU0saUJBQWlCLENBQUMsU0FBYyxPQUFlO0FBQzFELHlCQUFJLE9BQU8sT0FBTyxxQkFBTyxJQUFJO0FBQzdCLFFBQU0sS0FBUyxJQUFJO0FBRW5CLE1BQUcsQ0FBQyxPQUFPLFNBQVM7QUFDbEIsV0FBTyxVQUFVLEtBQUssS0FBSztBQUFBO0FBRzdCLE1BQUcsQ0FBQyxPQUFPLFFBQVE7QUFDakIsV0FBTyxTQUFTLHFCQUFPLElBQUk7QUFBQTtBQUc3QixTQUFPLEdBQUcsYUFBYSxhQUFhO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
128
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvczMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYXdzLCB7UzN9IGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHtcbiAgRGVsZXRlT2JqZWN0T3V0cHV0LFxuICBEZWxldGVPYmplY3RSZXF1ZXN0LFxuICBEZWxldGVPYmplY3RzT3V0cHV0LFxuICBEZWxldGVPYmplY3RzUmVxdWVzdCxcbiAgR2V0T2JqZWN0T3V0cHV0LFxuICBHZXRPYmplY3RSZXF1ZXN0LFxuICBIZWFkT2JqZWN0T3V0cHV0LFxuICBIZWFkT2JqZWN0UmVxdWVzdCxcbiAgUHV0T2JqZWN0T3V0cHV0LFxuICBQdXRPYmplY3RSZXF1ZXN0XG59IGZyb20gJ2F3cy1zZGsvY2xpZW50cy9zMyc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcnO1xuXG4vLyBBV1MgUzNcbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdzMyc7XG5cbmV4cG9ydCBjb25zdCBzM0dldCA9IChwYXJhbXM6IEdldE9iamVjdFJlcXVlc3QpOiBQcm9taXNlPEdldE9iamVjdE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGF3cy5jb25maWcudXBkYXRlKENvbmZpZy5nZXQoJ2F3cycpKTtcbiAgICBjb25zdCBzMzogUzMgPSBuZXcgUzMoKTtcblxuICAgIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgICBwYXJhbXMuQnVja2V0ID0gQ29uZmlnLmdldCgnYXdzLkJ1Y2tldCcpO1xuICAgIH1cblxuICAgIHMzLmdldE9iamVjdChwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogR2V0T2JqZWN0T3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBzM0hlYWQgPSAocGFyYW1zOiBIZWFkT2JqZWN0UmVxdWVzdCk6IFByb21pc2U8SGVhZE9iamVjdE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGF3cy5jb25maWcudXBkYXRlKENvbmZpZy5nZXQoJ2F3cycpKTtcbiAgICBjb25zdCBzMzogUzMgPSBuZXcgUzMoKTtcblxuICAgIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgICBwYXJhbXMuQnVja2V0ID0gQ29uZmlnLmdldCgnYXdzLkJ1Y2tldCcpO1xuICAgIH1cblxuICAgIHMzLmhlYWRPYmplY3QocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IEhlYWRPYmplY3RPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cblxuZXhwb3J0IGNvbnN0IHMzUHV0ID0gKHBhcmFtczogUHV0T2JqZWN0UmVxdWVzdCk6IFByb21pc2U8UHV0T2JqZWN0T3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IHMzID0gbmV3IGF3cy5TMygpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBDb25maWcuZ2V0KCdhd3MuQnVja2V0Jyk7XG4gICAgfVxuXG4gICAgaWYoIXBhcmFtcy5TdG9yYWdlQ2xhc3MpIHtcbiAgICAgIHBhcmFtcy5TdG9yYWdlQ2xhc3MgPSAnUkVEVUNFRF9SRURVTkRBTkNZJztcbiAgICB9XG5cbiAgICBzMy5wdXRPYmplY3QocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IFB1dE9iamVjdE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzRGVsZXRlID0gKHBhcmFtczogRGVsZXRlT2JqZWN0UmVxdWVzdCk6IFByb21pc2U8RGVsZXRlT2JqZWN0T3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IHMzOiBTMyA9IG5ldyBTMygpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBDb25maWcuZ2V0KCdhd3MuQnVja2V0Jyk7XG4gICAgfVxuXG4gICAgczMuZGVsZXRlT2JqZWN0KHBhcmFtcywgKGVycm9yLCBvdXRwdXQ6IERlbGV0ZU9iamVjdE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzRGVsZXRlTGlzdCA9IChwYXJhbXM6IERlbGV0ZU9iamVjdHNSZXF1ZXN0KTogUHJvbWlzZTxEZWxldGVPYmplY3RzT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IHMzOiBTMyA9IG5ldyBTMygpO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBDb25maWcuZ2V0KCdhd3MuQnVja2V0Jyk7XG4gICAgfVxuXG4gICAgczMuZGVsZXRlT2JqZWN0cyhwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogRGVsZXRlT2JqZWN0c091dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzR2V0U2lnbmVkVXJsID0gKHBhcmFtczogYW55ID0ge30pOiBzdHJpbmcgPT4ge1xuICBhd3MuY29uZmlnLnVwZGF0ZShDb25maWcuZ2V0KCdhd3MnKSk7XG4gIGNvbnN0IHMzOiBTMyA9IG5ldyBTMygpO1xuXG4gIGlmKCFwYXJhbXMuRXhwaXJlcykge1xuICAgIHBhcmFtcy5FeHBpcmVzID0gMTIgKiA2MCAqIDYwO1xuICB9XG5cbiAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICBwYXJhbXMuQnVja2V0ID0gQ29uZmlnLmdldCgnYXdzLkJ1Y2tldCcpO1xuICB9XG5cbiAgcmV0dXJuIHMzLmdldFNpZ25lZFVybCgnZ2V0T2JqZWN0JywgcGFyYW1zKTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBLHFCQUFzQjtBQWN0QixvQkFBcUI7QUFLZCxNQUFNLFFBQVEsQ0FBQyxXQUNwQixJQUFJLFFBQVEsQ0FBQyxTQUFTLFdBQVc7QUFDL0IsaUJBQUFBLFFBQUksT0FBTyxPQUFPLHFCQUFPLElBQUksS0FBSyxDQUFDO0FBQ25DLFFBQU0sS0FBUyxJQUFJLGtC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
@@ -1,54 +1,40 @@
1
1
  var __create = Object.create;
2
2
  var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
5
  var __getProtoOf = Object.getPrototypeOf;
9
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
- var __spreadValues = (a, b) => {
13
- for (var prop in b || (b = {}))
14
- if (__hasOwnProp.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- if (__getOwnPropSymbols)
17
- for (var prop of __getOwnPropSymbols(b)) {
18
- if (__propIsEnum.call(b, prop))
19
- __defNormalProp(a, prop, b[prop]);
20
- }
21
- return a;
22
- };
23
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
25
- var __require = typeof require !== "undefined" ? require : (x) => {
26
- throw new Error('Dynamic require of "' + x + '" is not supported');
27
- };
28
7
  var __export = (target, all) => {
29
- __markAsModule(target);
30
8
  for (var name in all)
31
9
  __defProp(target, name, { get: all[name], enumerable: true });
32
10
  };
33
- var __reExport = (target, module2, desc) => {
34
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
35
- for (let key of __getOwnPropNames(module2))
36
- if (!__hasOwnProp.call(target, key) && key !== "default")
37
- __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
38
16
  }
39
- return target;
40
- };
41
- var __toModule = (module2) => {
42
- return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
17
+ return to;
43
18
  };
44
- __export(exports, {
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var search_exports = {};
29
+ __export(search_exports, {
45
30
  getSearchList: () => getSearchList
46
31
  });
47
- var import_arangojs = __toModule(require("arangojs"));
48
- var import_flatten = __toModule(require("lodash/flatten"));
49
- var import_uniqBy = __toModule(require("lodash/uniqBy"));
50
- var import_utils = __toModule(require("../utils"));
51
- var import_users2 = __toModule(require("./users"));
32
+ module.exports = __toCommonJS(search_exports);
33
+ var import_arangojs = require("arangojs");
34
+ var import_flatten = __toESM(require("lodash/flatten"));
35
+ var import_uniqBy = __toESM(require("lodash/uniqBy"));
36
+ var import_utils = require("../utils");
37
+ var import_users2 = require("./users");
52
38
  const eventCategory = "search";
53
39
  const getSearchList = (context, query, from, to) => {
54
40
  const action = "getList";
@@ -73,7 +59,7 @@ const getSearchList = (context, query, from, to) => {
73
59
  const collectionIdList = itemId.split("/");
74
60
  const collection = collectionIdList[0];
75
61
  const name = collection === "users" ? (0, import_users2.getDisplayName)(item) : itemName;
76
- return __spreadProps(__spreadValues({}, item), { name });
62
+ return { ...item, name };
77
63
  });
78
64
  });
79
65
  }
@@ -87,7 +73,7 @@ const getSearchList = (context, query, from, to) => {
87
73
  const collectionIdList = itemId.split("/");
88
74
  const collection = collectionIdList[0];
89
75
  const name = collection === "users" ? (0, import_users2.getDisplayName)(item) : itemName;
90
- return __spreadProps(__spreadValues({}, item), { name });
76
+ return { ...item, name };
91
77
  })).catch((error) => (0, import_utils.logException)({
92
78
  action,
93
79
  category: eventCategory,
@@ -99,4 +85,4 @@ const getSearchList = (context, query, from, to) => {
99
85
  0 && (module.exports = {
100
86
  getSearchList
101
87
  });
102
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvc2VhcmNoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQge0FycmF5Q3Vyc29yfSBmcm9tICdhcmFuZ29qcy9jdXJzb3InO1xuaW1wb3J0IGZsYXR0ZW4gZnJvbSAnbG9kYXNoL2ZsYXR0ZW4nO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gvdW5pcUJ5JztcblxuaW1wb3J0IHtBcmFuZ29EQkxpbWl0fSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYic7XG5pbXBvcnQge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgnO1xuaW1wb3J0IHtVc2VyfSBmcm9tICcuLi90eXBlcy91c2Vycyc7XG5pbXBvcnQge2dldExpbWl0LCBsb2dFeGNlcHRpb259IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7Z2V0RGlzcGxheU5hbWV9IGZyb20gJy4vdXNlcnMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnc2VhcmNoJztcblxuZXhwb3J0IGNvbnN0IGdldFNlYXJjaExpc3QgPSAoY29udGV4dDogQXBpQ29udGV4dCwgcXVlcnk6IHN0cmluZywgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKTogUHJvbWlzZTxVc2VyW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0TGlzdCc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBpc1N0cmluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgaWYoaXNTdHJpbmcpIHtcbiAgICBjb25zdCBmaWVsZHM6IGFueVtdID0gW1xuICAgICAge2NvbGxlY3Rpb246ICd1c2VycycsIGZpZWxkOiAnZmlyc3QnfSxcbiAgICAgIHtjb2xsZWN0aW9uOiAndXNlcnMnLCBmaWVsZDogJ2xhc3QnfSxcbiAgICAgIHtjb2xsZWN0aW9uOiAndXNlcnMnLCBmaWVsZDogJ2VtYWlsJ30sXG4gICAgICB7Y29sbGVjdGlvbjogJ3VzZXJzJywgZmllbGQ6ICd1c2VybmFtZSd9LFxuICAgICAge2NvbGxlY3Rpb246ICd1c2VycycsIGZpZWxkOiAnbmFtZSd9XG4gICAgXTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChmaWVsZHMubWFwKChvYmopID0+IHtcbiAgICAgIGNvbnN0IHFyeTogc3RyaW5nID0gYHByZWZpeDoke3F1ZXJ5fWA7XG4gICAgICBjb25zdCB1c2VyUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgdSBJTiBGVUxMVEVYVCgke29iai5jb2xsZWN0aW9ufSwgJHtvYmouZmllbGR9LCAke3FyeX0sIDUwKSBSRVRVUk4gdWA7XG4gICAgICByZXR1cm4gZGF0YWJhc2UucXVlcnkodXNlclFyeSkudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKTtcbiAgICB9KSlcbiAgICAgIC50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB1bmlxQnkoZmxhdHRlbihyZXN1bHRzKSwgJ19rZXknKTtcblxuICAgICAgICByZXR1cm4gbGlzdC5tYXAoKGl0ZW06IFVzZXIpID0+IHtcbiAgICAgICAgICBjb25zdCB7X2lkOiBpdGVtSWQsIG5hbWU6IGl0ZW1OYW1lfSA9IGl0ZW07XG4gICAgICAgICAgY29uc3QgY29sbGVjdGlvbklkTGlzdDogc3RyaW5nW10gPSBpdGVtSWQuc3BsaXQoJy8nKTtcbiAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uOiBzdHJpbmcgPSBjb2xsZWN0aW9uSWRMaXN0WzBdO1xuICAgICAgICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IGNvbGxlY3Rpb24gPT09ICd1c2VycycgPyBnZXREaXNwbGF5TmFtZShpdGVtKSA6IGl0ZW1OYW1lO1xuXG4gICAgICAgICAgcmV0dXJuIHsuLi5pdGVtLCBuYW1lfTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGxpbWl0OiBBcmFuZ29EQkxpbWl0ID0gZ2V0TGltaXQoZnJvbSwgdG8pO1xuICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgdSBJTiB1c2Vyc1xuICAgICAgICBGSUxURVIgdS5waG9uZSA9PSBcIiR7cXVlcnl9XCJcbiAgICAgICAgJHtsaW1pdC5hcWx9XG4gICAgICAgIFJFVFVSTiB1YDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLnRoZW4oKGxpc3Q6IFVzZXJbXSA9IFtdKSA9PiBsaXN0Lm1hcCgoaXRlbSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCB7X2lkOiBpdGVtSWQsIG5hbWU6IGl0ZW1OYW1lfSA9IGl0ZW07XG4gICAgICBjb25zdCBjb2xsZWN0aW9uSWRMaXN0OiBzdHJpbmdbXSA9IGl0ZW1JZC5zcGxpdCgnLycpO1xuICAgICAgY29uc3QgY29sbGVjdGlvbjogc3RyaW5nID0gY29sbGVjdGlvbklkTGlzdFswXTtcbiAgICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IGNvbGxlY3Rpb24gPT09ICd1c2VycycgPyBnZXREaXNwbGF5TmFtZShpdGVtKSA6IGl0ZW1OYW1lO1xuXG4gICAgICByZXR1cm4gey4uLml0ZW0sIG5hbWV9O1xuICAgIH0pKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJyxcbiAgICAgIHZhbHVlOiBlcnJvci5tZXNzYWdlXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUlBLHNCQUFrQjtBQUdsQixxQkFBb0I7QUFDcEIsb0JBQW1CO0FBS25CLG1CQUFxQztBQUNyQyxvQkFBNkI7QUFFN0IsTUFBTSxnQkFBd0I7QUFFdkIsTUFBTSxnQkFBZ0IsQ0FBQyxTQUFxQixPQUFlLE1BQWMsT0FBZ0M7QUFDOUcsUUFBTSxTQUFpQjtBQUN2QixRQUFNLEVBQUMsYUFBWTtBQUNuQixRQUFNLFdBQW9CO0FBRTFCLE1BQUcsVUFBVTtBQUNYLFVBQU0sU0FBZ0I7QUFBQSxNQUNwQixFQUFDLFlBQVksU0FBUyxPQUFPO0FBQUEsTUFDN0IsRUFBQyxZQUFZLFNBQVMsT0FBTztBQUFBLE1BQzdCLEVBQUMsWUFBWSxTQUFTLE9BQU87QUFBQSxNQUM3QixFQUFDLFlBQVksU0FBUyxPQUFPO0FBQUEsTUFDN0IsRUFBQyxZQUFZLFNBQVMsT0FBTztBQUFBO0FBRy9CLFdBQU8sUUFBUSxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVE7QUFDckMsWUFBTSxNQUFjLFVBQVU7QUFDOUIsWUFBTSxVQUFvQix3Q0FBd0IsSUFBSSxlQUFlLElBQUksVUFBVTtBQUNuRixhQUFPLFNBQVMsTUFBTSxTQUFTLEtBQUssQ0FBQyxXQUF3QixPQUFPO0FBQUEsUUFFbkUsS0FBSyxDQUFDLFlBQVk7QUFDakIsWUFBTSxPQUFPLDJCQUFPLDRCQUFRLFVBQVU7QUFFdEMsYUFBTyxLQUFLLElBQUksQ0FBQyxTQUFlO0FBQzlCLGNBQU0sRUFBQyxLQUFLLFFBQVEsTUFBTSxhQUFZO0FBQ3RDLGNBQU0sbUJBQTZCLE9BQU8sTUFBTTtBQUNoRCxjQUFNLGFBQXFCLGlCQUFpQjtBQUM1QyxjQUFNLE9BQWUsZUFBZSxVQUFVLGtDQUFlLFFBQVE7QUFFckUsZUFBTyxpQ0FBSSxPQUFKLEVBQVU7QUFBQTtBQUFBO0FBQUE7QUFLekIsUUFBTSxRQUF1QiwyQkFBUyxNQUFNO0FBQzVDLFFBQU0sU0FBaUI7QUFBQSw2QkFDSTtBQUFBLFVBQ25CLE1BQU07QUFBQTtBQUdkLFNBQU8sU0FBUyxNQUFNLFFBQ25CLEtBQUssQ0FBQyxXQUF3QixPQUFPLE9BQ3JDLEtBQUssQ0FBQyxPQUFlLE9BQU8sS0FBSyxJQUFJLENBQUMsT0FBTyxPQUFPO0FBQ25ELFVBQU0sRUFBQyxLQUFLLFFBQVEsTUFBTSxhQUFZO0FBQ3RDLFVBQU0sbUJBQTZCLE9BQU8sTUFBTTtBQUNoRCxVQUFNLGFBQXFCLGlCQUFpQjtBQUM1QyxVQUFNLE9BQWUsZUFBZSxVQUFVLGtDQUFlLFFBQVE7QUFFckUsV0FBTyxpQ0FBSSxPQUFKLEVBQVU7QUFBQSxNQUVsQixNQUFNLENBQUMsVUFBaUIsK0JBQWE7QUFBQSxJQUNwQztBQUFBLElBQ0EsVUFBVTtBQUFBLElBQ1YsT0FBTztBQUFBLElBQ1AsT0FBTyxNQUFNO0FBQUEsS0FDWixTQUFTLEtBQUssTUFBTTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
88
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvc2VhcmNoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQge0FycmF5Q3Vyc29yfSBmcm9tICdhcmFuZ29qcy9jdXJzb3InO1xuaW1wb3J0IGZsYXR0ZW4gZnJvbSAnbG9kYXNoL2ZsYXR0ZW4nO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gvdW5pcUJ5JztcblxuaW1wb3J0IHtBcmFuZ29EQkxpbWl0fSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYic7XG5pbXBvcnQge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgnO1xuaW1wb3J0IHtVc2VyfSBmcm9tICcuLi90eXBlcy91c2Vycyc7XG5pbXBvcnQge2dldExpbWl0LCBsb2dFeGNlcHRpb259IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7Z2V0RGlzcGxheU5hbWV9IGZyb20gJy4vdXNlcnMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnc2VhcmNoJztcblxuZXhwb3J0IGNvbnN0IGdldFNlYXJjaExpc3QgPSAoY29udGV4dDogQXBpQ29udGV4dCwgcXVlcnk6IHN0cmluZywgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKTogUHJvbWlzZTxVc2VyW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0TGlzdCc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBpc1N0cmluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgaWYoaXNTdHJpbmcpIHtcbiAgICBjb25zdCBmaWVsZHM6IGFueVtdID0gW1xuICAgICAge2NvbGxlY3Rpb246ICd1c2VycycsIGZpZWxkOiAnZmlyc3QnfSxcbiAgICAgIHtjb2xsZWN0aW9uOiAndXNlcnMnLCBmaWVsZDogJ2xhc3QnfSxcbiAgICAgIHtjb2xsZWN0aW9uOiAndXNlcnMnLCBmaWVsZDogJ2VtYWlsJ30sXG4gICAgICB7Y29sbGVjdGlvbjogJ3VzZXJzJywgZmllbGQ6ICd1c2VybmFtZSd9LFxuICAgICAge2NvbGxlY3Rpb246ICd1c2VycycsIGZpZWxkOiAnbmFtZSd9XG4gICAgXTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChmaWVsZHMubWFwKChvYmopID0+IHtcbiAgICAgIGNvbnN0IHFyeTogc3RyaW5nID0gYHByZWZpeDoke3F1ZXJ5fWA7XG4gICAgICBjb25zdCB1c2VyUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgdSBJTiBGVUxMVEVYVCgke29iai5jb2xsZWN0aW9ufSwgJHtvYmouZmllbGR9LCAke3FyeX0sIDUwKSBSRVRVUk4gdWA7XG4gICAgICByZXR1cm4gZGF0YWJhc2UucXVlcnkodXNlclFyeSkudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKTtcbiAgICB9KSlcbiAgICAgIC50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB1bmlxQnkoZmxhdHRlbihyZXN1bHRzKSwgJ19rZXknKTtcblxuICAgICAgICByZXR1cm4gbGlzdC5tYXAoKGl0ZW06IFVzZXIpID0+IHtcbiAgICAgICAgICBjb25zdCB7X2lkOiBpdGVtSWQsIG5hbWU6IGl0ZW1OYW1lfSA9IGl0ZW07XG4gICAgICAgICAgY29uc3QgY29sbGVjdGlvbklkTGlzdDogc3RyaW5nW10gPSBpdGVtSWQuc3BsaXQoJy8nKTtcbiAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uOiBzdHJpbmcgPSBjb2xsZWN0aW9uSWRMaXN0WzBdO1xuICAgICAgICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IGNvbGxlY3Rpb24gPT09ICd1c2VycycgPyBnZXREaXNwbGF5TmFtZShpdGVtKSA6IGl0ZW1OYW1lO1xuXG4gICAgICAgICAgcmV0dXJuIHsuLi5pdGVtLCBuYW1lfTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGxpbWl0OiBBcmFuZ29EQkxpbWl0ID0gZ2V0TGltaXQoZnJvbSwgdG8pO1xuICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgdSBJTiB1c2Vyc1xuICAgICAgICBGSUxURVIgdS5waG9uZSA9PSBcIiR7cXVlcnl9XCJcbiAgICAgICAgJHtsaW1pdC5hcWx9XG4gICAgICAgIFJFVFVSTiB1YDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLnRoZW4oKGxpc3Q6IFVzZXJbXSA9IFtdKSA9PiBsaXN0Lm1hcCgoaXRlbSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCB7X2lkOiBpdGVtSWQsIG5hbWU6IGl0ZW1OYW1lfSA9IGl0ZW07XG4gICAgICBjb25zdCBjb2xsZWN0aW9uSWRMaXN0OiBzdHJpbmdbXSA9IGl0ZW1JZC5zcGxpdCgnLycpO1xuICAgICAgY29uc3QgY29sbGVjdGlvbjogc3RyaW5nID0gY29sbGVjdGlvbklkTGlzdFswXTtcbiAgICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IGNvbGxlY3Rpb24gPT09ICd1c2VycycgPyBnZXREaXNwbGF5TmFtZShpdGVtKSA6IGl0ZW1OYW1lO1xuXG4gICAgICByZXR1cm4gey4uLml0ZW0sIG5hbWV9O1xuICAgIH0pKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJyxcbiAgICAgIHZhbHVlOiBlcnJvci5tZXNzYWdlXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBLHNCQUFrQjtBQUdsQixxQkFBb0I7QUFDcEIsb0JBQW1CO0FBS25CLG1CQUFxQztBQUNyQyxJQUFBQSxnQkFBNkI7QUFFN0IsTUFBTSxnQkFBd0I7QUFFdkIsTUFBTSxnQkFBZ0IsQ0FBQyxTQUFxQixPQUFlLE1BQWMsT0FBZ0M7QUFDOUcsUUFBTSxTQUFpQjtBQUN2QixRQUFNLEVBQUMsU0FBUSxJQUFJO0FBQ25CLFFBQU0sV0FBb0I7QUFFMUIsTUFBRyxVQUFVO0FBQ1gsVUFBTSxTQUFnQjtBQUFBLE1BQ3BCLEVBQUMsWUFBWSxTQUFTLE9BQU8sUUFBTztBQUFBLE1BQ3BDLEVBQUMsWUFBWSxTQUFTLE9BQU8sT0FBTTtBQUFBLE1BQ25DLEVBQUMsWUFBWSxTQUFTLE9BQU8sUUFBTztBQUFBLE1BQ3BDLEVBQUMsWUFBWSxTQUFTLE9BQU8sV0FBVTtBQUFBLE1BQ3ZDLEVBQUMsWUFBWSxTQUFTLE9BQU8sT0FBTTtBQUFBLElBQ3JDO0FBRUEsV0FBTyxRQUFRLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUTtBQUNyQyxZQUFNLE1BQWMsVUFBVSxLQUFLO0FBQ25DLFlBQU0sVUFBb0Isd0NBQXdCLElBQUksVUFBVSxLQUFLLElBQUksS0FBSyxLQUFLLEdBQUc7QUFDdEYsYUFBTyxTQUFTLE1BQU0sT0FBTyxFQUFFLEtBQUssQ0FBQyxXQUF3QixPQUFPLElBQUksQ0FBQztBQUFBLElBQzNFLENBQUMsQ0FBQyxFQUNDLEtBQUssQ0FBQyxZQUFZO0FBQ2pCLFlBQU0sV0FBTyxjQUFBQyxhQUFPLGVBQUFDLFNBQVEsT0FBTyxHQUFHLE1BQU07QUFFNUMsYUFBTyxLQUFLLElBQUksQ0FBQyxTQUFlO0FBQzlCLGNBQU0sRUFBQyxLQUFLLFFBQVEsTUFBTSxTQUFRLElBQUk7QUFDdEMsY0FBTSxtQkFBNkIsT0FBTyxNQUFNLEdBQUc7QUFDbkQsY0FBTSxhQUFxQixpQkFBaUIsQ0FBQztBQUM3QyxjQUFNLE9BQWUsZUFBZSxjQUFVLDhCQUFlLElBQUksSUFBSTtBQUVyRSxlQUFPLEVBQUMsR0FBRyxNQUFNLEtBQUk7QUFBQSxNQUN2QixDQUFDO0FBQUEsSUFDSCxDQUFDO0FBQUEsRUFDTDtBQUVBLFFBQU0sWUFBdUIsdUJBQVMsTUFBTSxFQUFFO0FBQzlDLFFBQU0sU0FBaUI7QUFBQSw2QkFDSSxLQUFLO0FBQUEsVUFDeEIsTUFBTSxHQUFHO0FBQUE7QUFHakIsU0FBTyxTQUFTLE1BQU0sTUFBTSxFQUN6QixLQUFLLENBQUMsV0FBd0IsT0FBTyxJQUFJLENBQUMsRUFDMUMsS0FBSyxDQUFDLE9BQWUsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO0FBQ25ELFVBQU0sRUFBQyxLQUFLLFFBQVEsTUFBTSxTQUFRLElBQUk7QUFDdEMsVUFBTSxtQkFBNkIsT0FBTyxNQUFNLEdBQUc7QUFDbkQsVUFBTSxhQUFxQixpQkFBaUIsQ0FBQztBQUM3QyxVQUFNLE9BQWUsZUFBZSxjQUFVLDhCQUFlLElBQUksSUFBSTtBQUVyRSxXQUFPLEVBQUMsR0FBRyxNQUFNLEtBQUk7QUFBQSxFQUN2QixDQUFDLENBQUMsRUFDRCxNQUFNLENBQUMsY0FBaUIsMkJBQWE7QUFBQSxJQUNwQztBQUFBLElBQ0EsVUFBVTtBQUFBLElBQ1YsT0FBTztBQUFBLElBQ1AsT0FBTyxNQUFNO0FBQUEsRUFDZixHQUFHLE9BQU8sRUFBRSxLQUFLLE1BQU0sSUFBSSxDQUFDO0FBQ2hDOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfdXNlcnMiLCAidW5pcUJ5IiwgImZsYXR0ZW4iXQp9Cg==
@@ -4,35 +4,38 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
- var __require = typeof require !== "undefined" ? require : (x) => {
9
- throw new Error('Dynamic require of "' + x + '" is not supported');
10
- };
11
7
  var __export = (target, all) => {
12
- __markAsModule(target);
13
8
  for (var name in all)
14
9
  __defProp(target, name, { get: all[name], enumerable: true });
15
10
  };
16
- var __reExport = (target, module2, desc) => {
17
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
18
- for (let key of __getOwnPropNames(module2))
19
- if (!__hasOwnProp.call(target, key) && key !== "default")
20
- __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
16
  }
22
- return target;
23
- };
24
- var __toModule = (module2) => {
25
- return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
17
+ return to;
26
18
  };
27
- __export(exports, {
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var sms_exports = {};
29
+ __export(sms_exports, {
28
30
  sendSms: () => sendSms,
29
31
  sendSmsTemplate: () => sendSmsTemplate
30
32
  });
31
- var import_utils = __toModule(require("@nlabs/utils"));
32
- var import_fs = __toModule(require("fs"));
33
- var import_twilio = __toModule(require("twilio"));
34
- var import_config = __toModule(require("../config"));
35
- var import_email = __toModule(require("./email"));
33
+ module.exports = __toCommonJS(sms_exports);
34
+ var import_utils = require("@nlabs/utils");
35
+ var import_fs = __toESM(require("fs"));
36
+ var import_twilio = __toESM(require("twilio"));
37
+ var import_config = require("../config");
38
+ var import_email = require("./email");
36
39
  const sendSms = (params) => {
37
40
  const {
38
41
  app = {},
@@ -76,4 +79,4 @@ const sendSmsTemplate = (templateName, smsParams) => {
76
79
  sendSms,
77
80
  sendSmsTemplate
78
81
  });
79
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvc21zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtwYXJzZVBob25lfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCB0d2lsaW9TZGsgZnJvbSAndHdpbGlvJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQge1NNU1BhcmFtc1R5cGUsIFR3aWxpb09wdGlvbnNUeXBlfSBmcm9tICcuLi90eXBlcy9ub3RpZmljYXRpb25zJztcbmltcG9ydCB7YXBwVGVtcGxhdGV9IGZyb20gJy4vZW1haWwnO1xuXG4vLyBjb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnc21zJztcblxuLy8gVHdpbGlvXG5leHBvcnQgY29uc3Qgc2VuZFNtcyA9IChwYXJhbXM6IFNNU1BhcmFtc1R5cGUpOiBhbnkgPT4ge1xuICBjb25zdCB7XG4gICAgYXBwID0ge30sXG4gICAgY29udGVudCxcbiAgICB1c2VyID0ge31cbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBjb3VudHJ5ID0gdXNlci5jb3VudHJ5IHx8ICdVUyc7XG4gIGNvbnN0IHBob25lID0gcGFyc2VQaG9uZSh1c2VyLnBob25lLCBjb3VudHJ5KTtcbiAgY29uc3QgdGVtcGxhdGVDb250ZW50OiBzdHJpbmcgPSBhcHBUZW1wbGF0ZShhcHAsIGNvbnRlbnQpO1xuXG4gIGNvbnN0IHR3aWxpbzogYW55ID0gdHdpbGlvU2RrKENvbmZpZy5nZXQoJ3R3aWxpby5zaWQnKSwgQ29uZmlnLmdldCgndHdpbGlvLnRva2VuJykpO1xuICBjb25zdCBjZmc6IFR3aWxpb09wdGlvbnNUeXBlID0ge1xuICAgIGJvZHk6IHRlbXBsYXRlQ29udGVudCxcbiAgICBmcm9tOiBDb25maWcuZ2V0KCd0d2lsaW8ubnVtYmVyJyksXG4gICAgdG86IHBob25lXG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB0d2lsaW8uc2VuZE1lc3NhZ2UoY2ZnLCAoZXJyb3IsIGRhdGEpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoZXJyb3IuZXJyb3JfbWVzc2FnZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VuZFNtc1RlbXBsYXRlID0gKHRlbXBsYXRlTmFtZTogc3RyaW5nLCBzbXNQYXJhbXM6IFNNU1BhcmFtc1R5cGUpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3Qge2FwcCwgdXNlciwgdmFyc30gPSBzbXNQYXJhbXM7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyhgLi90ZW1wbGF0ZXMvc21zLyR7dGVtcGxhdGVOYW1lfS50eHRgLCAndXRmOCcpO1xuICAgIGNvbnN0IHRleHQgPSBhcHBUZW1wbGF0ZShhcHAsIGRhdGEsIHZhcnMpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHthcHAsIHRleHQsIHVzZXJ9O1xuXG4gICAgcmV0dXJuIHNlbmRTbXMocGFyYW1zKVxuICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLnN0YXR1cyA9PT0gJ3F1ZXVlZCcpXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgfVxufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQSxtQkFBeUI7QUFDekIsZ0JBQWU7QUFDZixvQkFBc0I7QUFFdEIsb0JBQXFCO0FBRXJCLG1CQUEwQjtBQUtuQixNQUFNLFVBQVUsQ0FBQyxXQUErQjtBQUNyRCxRQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTjtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ0w7QUFFSixRQUFNLFVBQVUsS0FBSyxXQUFXO0FBQ2hDLFFBQU0sUUFBUSw2QkFBVyxLQUFLLE9BQU87QUFDckMsUUFBTSxrQkFBMEIsOEJBQVksS0FBSztBQUVqRCxRQUFNLFNBQWMsMkJBQVUscUJBQU8sSUFBSSxlQUFlLHFCQUFPLElBQUk7QUFDbkUsUUFBTSxNQUF5QjtBQUFBLElBQzdCLE1BQU07QUFBQSxJQUNOLE1BQU0scUJBQU8sSUFBSTtBQUFBLElBQ2pCLElBQUk7QUFBQTtBQUdOLFNBQU8sSUFBSSxRQUFRLENBQUMsU0FBUyxXQUFXO0FBQ3RDLFdBQU8sWUFBWSxLQUFLLENBQUMsT0FBTyxTQUFTO0FBQ3ZDLFVBQUcsT0FBTztBQUNSLGVBQU8sSUFBSSxNQUFNLE1BQU07QUFBQSxhQUNsQjtBQUNMLGdCQUFRO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNVCxNQUFNLGtCQUFrQixDQUFDLGNBQXNCLGNBQStDO0FBQ25HLFFBQU0sRUFBQyxLQUFLLE1BQU0sU0FBUTtBQUMxQixNQUFJO0FBQ0YsVUFBTSxPQUFPLGtCQUFHLGFBQWEsbUJBQW1CLG9CQUFvQjtBQUNwRSxVQUFNLE9BQU8sOEJBQVksS0FBSyxNQUFNO0FBQ3BDLFVBQU0sU0FBUyxFQUFDLEtBQUssTUFBTTtBQUUzQixXQUFPLFFBQVEsUUFDWixLQUFLLENBQUMsUUFBUSxJQUFJLFdBQVcsVUFDN0IsTUFBTSxDQUFDLFVBQWlCO0FBQ3ZCLFlBQU07QUFBQTtBQUFBLFdBRUosT0FBTjtBQUNBLFdBQU8sUUFBUSxPQUFPO0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
82
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvc21zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtwYXJzZVBob25lfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCB0d2lsaW9TZGsgZnJvbSAndHdpbGlvJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQge1NNU1BhcmFtc1R5cGUsIFR3aWxpb09wdGlvbnNUeXBlfSBmcm9tICcuLi90eXBlcy9ub3RpZmljYXRpb25zJztcbmltcG9ydCB7YXBwVGVtcGxhdGV9IGZyb20gJy4vZW1haWwnO1xuXG4vLyBjb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnc21zJztcblxuLy8gVHdpbGlvXG5leHBvcnQgY29uc3Qgc2VuZFNtcyA9IChwYXJhbXM6IFNNU1BhcmFtc1R5cGUpOiBhbnkgPT4ge1xuICBjb25zdCB7XG4gICAgYXBwID0ge30sXG4gICAgY29udGVudCxcbiAgICB1c2VyID0ge31cbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBjb3VudHJ5ID0gdXNlci5jb3VudHJ5IHx8ICdVUyc7XG4gIGNvbnN0IHBob25lID0gcGFyc2VQaG9uZSh1c2VyLnBob25lLCBjb3VudHJ5KTtcbiAgY29uc3QgdGVtcGxhdGVDb250ZW50OiBzdHJpbmcgPSBhcHBUZW1wbGF0ZShhcHAsIGNvbnRlbnQpO1xuXG4gIGNvbnN0IHR3aWxpbzogYW55ID0gdHdpbGlvU2RrKENvbmZpZy5nZXQoJ3R3aWxpby5zaWQnKSwgQ29uZmlnLmdldCgndHdpbGlvLnRva2VuJykpO1xuICBjb25zdCBjZmc6IFR3aWxpb09wdGlvbnNUeXBlID0ge1xuICAgIGJvZHk6IHRlbXBsYXRlQ29udGVudCxcbiAgICBmcm9tOiBDb25maWcuZ2V0KCd0d2lsaW8ubnVtYmVyJyksXG4gICAgdG86IHBob25lXG4gIH07XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB0d2lsaW8uc2VuZE1lc3NhZ2UoY2ZnLCAoZXJyb3IsIGRhdGEpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoZXJyb3IuZXJyb3JfbWVzc2FnZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VuZFNtc1RlbXBsYXRlID0gKHRlbXBsYXRlTmFtZTogc3RyaW5nLCBzbXNQYXJhbXM6IFNNU1BhcmFtc1R5cGUpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3Qge2FwcCwgdXNlciwgdmFyc30gPSBzbXNQYXJhbXM7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyhgLi90ZW1wbGF0ZXMvc21zLyR7dGVtcGxhdGVOYW1lfS50eHRgLCAndXRmOCcpO1xuICAgIGNvbnN0IHRleHQgPSBhcHBUZW1wbGF0ZShhcHAsIGRhdGEsIHZhcnMpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHthcHAsIHRleHQsIHVzZXJ9O1xuXG4gICAgcmV0dXJuIHNlbmRTbXMocGFyYW1zKVxuICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLnN0YXR1cyA9PT0gJ3F1ZXVlZCcpXG4gICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgfVxufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBLG1CQUF5QjtBQUN6QixnQkFBZTtBQUNmLG9CQUFzQjtBQUV0QixvQkFBcUI7QUFFckIsbUJBQTBCO0FBS25CLE1BQU0sVUFBVSxDQUFDLFdBQStCO0FBQ3JELFFBQU07QUFBQSxJQUNKLE1BQU0sQ0FBQztBQUFBLElBQ1A7QUFBQSxJQUNBLE9BQU8sQ0FBQztBQUFBLEVBQ1YsSUFBSTtBQUVKLFFBQU0sVUFBVSxLQUFLLFdBQVc7QUFDaEMsUUFBTSxZQUFRLHlCQUFXLEtBQUssT0FBTyxPQUFPO0FBQzVDLFFBQU0sc0JBQTBCLDBCQUFZLEtBQUssT0FBTztBQUV4RCxRQUFNLGFBQWMsY0FBQUEsU0FBVSxxQkFBTyxJQUFJLFlBQVksR0FBRyxxQkFBTyxJQUFJLGNBQWMsQ0FBQztBQUNsRixRQUFNLE1BQXlCO0FBQUEsSUFDN0IsTUFBTTtBQUFBLElBQ04sTUFBTSxxQkFBTyxJQUFJLGVBQWU7QUFBQSxJQUNoQyxJQUFJO0FBQUEsRUFDTjtBQUVBLFNBQU8sSUFBSSxRQUFRLENBQUMsU0FBUyxXQUFXO0FBQ3RDLFdBQU8sWUFBWSxLQUFLLENBQUMsT0FBTyxTQUFTO0FBQ3ZDLFVBQUcsT0FBTztBQUNSLGVBQU8sSUFBSSxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQUEsTUFDdkMsT0FBTztBQUNMLGdCQUFRLElBQUk7QUFBQSxNQUNkO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7QUFFTyxNQUFNLGtCQUFrQixDQUFDLGNBQXNCLGNBQStDO0FBQ25HLFFBQU0sRUFBQyxLQUFLLE1BQU0sS0FBSSxJQUFJO0FBQzFCLE1BQUk7QUFDRixVQUFNLE9BQU8sVUFBQUMsUUFBRyxhQUFhLG1CQUFtQixZQUFZLFFBQVEsTUFBTTtBQUMxRSxVQUFNLFdBQU8sMEJBQVksS0FBSyxNQUFNLElBQUk7QUFDeEMsVUFBTSxTQUFTLEVBQUMsS0FBSyxNQUFNLEtBQUk7QUFFL0IsV0FBTyxRQUFRLE1BQU0sRUFDbEIsS0FBSyxDQUFDLFFBQVEsSUFBSSxXQUFXLFFBQVEsRUFDckMsTUFBTSxDQUFDLFVBQWlCO0FBQ3ZCLFlBQU07QUFBQSxJQUNSLENBQUM7QUFBQSxFQUNMLFNBQVEsT0FBTztBQUNiLFdBQU8sUUFBUSxPQUFPLEtBQUs7QUFBQSxFQUM3QjtBQUNGOyIsCiAgIm5hbWVzIjogWyJ0d2lsaW9TZGsiLCAiZnMiXQp9Cg==