velocious 1.0.562 → 1.0.564

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 (245) hide show
  1. package/README.md +5 -1
  2. package/build/background-jobs/cron-expression.js +12 -13
  3. package/build/background-jobs/main.js +6 -6
  4. package/build/background-jobs/runner-graceful-shutdown.js +2 -3
  5. package/build/background-jobs/scheduler.js +3 -3
  6. package/build/background-jobs/worker.js +8 -9
  7. package/build/beacon/client.js +3 -4
  8. package/build/configuration-types.js +1 -0
  9. package/build/configuration.js +44 -3
  10. package/build/database/drivers/sqlite/web-persistence.js +2 -5
  11. package/build/database/pool/async-tracked-multi-connection.js +65 -15
  12. package/build/database/pool/base.js +23 -7
  13. package/build/database/query/index.js +21 -22
  14. package/build/database/query/model-class-query.js +5 -6
  15. package/build/database/record/attachments/normalize-input.js +9 -10
  16. package/build/database/record/attachments/store.js +2 -2
  17. package/build/database/record/auditing.js +7 -8
  18. package/build/database/record/index.js +4 -5
  19. package/build/environment-handlers/node/cli/commands/generate/frontend-models.js +1 -2
  20. package/build/frontend-model-controller.js +49 -56
  21. package/build/frontend-models/base.js +17 -19
  22. package/build/frontend-models/outgoing-event-buffer.js +3 -4
  23. package/build/frontend-models/query.js +40 -44
  24. package/build/frontend-models/resource-definition.js +7 -8
  25. package/build/frontend-models/transport-serialization.js +10 -12
  26. package/build/frontend-models/websocket-channel.js +12 -13
  27. package/build/http-server/client/websocket-session.js +7 -8
  28. package/build/http-server/client-delivery-queue.js +167 -0
  29. package/build/http-server/server-client.js +9 -0
  30. package/build/http-server/websocket-event-log-store.js +4 -6
  31. package/build/http-server/websocket-events-host.js +42 -12
  32. package/build/http-server/worker-handler/in-process.js +53 -14
  33. package/build/http-server/worker-handler/index.js +88 -18
  34. package/build/http-server/worker-handler/worker-thread.js +2 -2
  35. package/build/plugins/sqljs-wasm-route.js +3 -5
  36. package/build/src/background-jobs/cron-expression.d.ts +0 -12
  37. package/build/src/background-jobs/cron-expression.d.ts.map +1 -1
  38. package/build/src/background-jobs/cron-expression.js +13 -13
  39. package/build/src/background-jobs/main.d.ts.map +1 -1
  40. package/build/src/background-jobs/main.js +7 -7
  41. package/build/src/background-jobs/runner-graceful-shutdown.d.ts +0 -6
  42. package/build/src/background-jobs/runner-graceful-shutdown.d.ts.map +1 -1
  43. package/build/src/background-jobs/runner-graceful-shutdown.js +3 -3
  44. package/build/src/background-jobs/scheduler.d.ts +0 -3
  45. package/build/src/background-jobs/scheduler.d.ts.map +1 -1
  46. package/build/src/background-jobs/scheduler.js +4 -4
  47. package/build/src/background-jobs/worker.d.ts +0 -8
  48. package/build/src/background-jobs/worker.d.ts.map +1 -1
  49. package/build/src/background-jobs/worker.js +9 -9
  50. package/build/src/beacon/client.d.ts +0 -4
  51. package/build/src/beacon/client.d.ts.map +1 -1
  52. package/build/src/beacon/client.js +4 -4
  53. package/build/src/configuration-types.d.ts +8 -0
  54. package/build/src/configuration-types.d.ts.map +1 -1
  55. package/build/src/configuration-types.js +2 -1
  56. package/build/src/configuration.d.ts +34 -1
  57. package/build/src/configuration.d.ts.map +1 -1
  58. package/build/src/configuration.js +40 -4
  59. package/build/src/database/drivers/sqlite/web-persistence.d.ts +0 -14
  60. package/build/src/database/drivers/sqlite/web-persistence.d.ts.map +1 -1
  61. package/build/src/database/drivers/sqlite/web-persistence.js +3 -3
  62. package/build/src/database/pool/async-tracked-multi-connection.d.ts +29 -1
  63. package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
  64. package/build/src/database/pool/async-tracked-multi-connection.js +57 -15
  65. package/build/src/database/pool/base.d.ts +53 -4
  66. package/build/src/database/pool/base.d.ts.map +1 -1
  67. package/build/src/database/pool/base.js +23 -6
  68. package/build/src/database/query/index.d.ts +18 -39
  69. package/build/src/database/query/index.d.ts.map +1 -1
  70. package/build/src/database/query/index.js +22 -22
  71. package/build/src/database/query/model-class-query.d.ts +0 -5
  72. package/build/src/database/query/model-class-query.d.ts.map +1 -1
  73. package/build/src/database/query/model-class-query.js +6 -6
  74. package/build/src/database/record/attachments/normalize-input.d.ts +0 -9
  75. package/build/src/database/record/attachments/normalize-input.d.ts.map +1 -1
  76. package/build/src/database/record/attachments/normalize-input.js +10 -10
  77. package/build/src/database/record/attachments/store.d.ts.map +1 -1
  78. package/build/src/database/record/attachments/store.js +2 -2
  79. package/build/src/database/record/auditing.d.ts +17 -24
  80. package/build/src/database/record/auditing.d.ts.map +1 -1
  81. package/build/src/database/record/auditing.js +8 -8
  82. package/build/src/database/record/index.d.ts +4 -4
  83. package/build/src/database/record/index.d.ts.map +1 -1
  84. package/build/src/database/record/index.js +5 -5
  85. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +0 -39
  86. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
  87. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +2 -2
  88. package/build/src/frontend-model-controller.d.ts +1 -1
  89. package/build/src/frontend-model-controller.d.ts.map +1 -1
  90. package/build/src/frontend-model-controller.js +50 -50
  91. package/build/src/frontend-models/base.d.ts.map +1 -1
  92. package/build/src/frontend-models/base.js +18 -18
  93. package/build/src/frontend-models/outgoing-event-buffer.d.ts.map +1 -1
  94. package/build/src/frontend-models/outgoing-event-buffer.js +3 -3
  95. package/build/src/frontend-models/query.d.ts +56 -37
  96. package/build/src/frontend-models/query.d.ts.map +1 -1
  97. package/build/src/frontend-models/query.js +39 -39
  98. package/build/src/frontend-models/resource-definition.d.ts +0 -7
  99. package/build/src/frontend-models/resource-definition.d.ts.map +1 -1
  100. package/build/src/frontend-models/resource-definition.js +8 -8
  101. package/build/src/frontend-models/transport-serialization.d.ts +0 -10
  102. package/build/src/frontend-models/transport-serialization.d.ts.map +1 -1
  103. package/build/src/frontend-models/transport-serialization.js +11 -11
  104. package/build/src/frontend-models/websocket-channel.d.ts +0 -12
  105. package/build/src/frontend-models/websocket-channel.d.ts.map +1 -1
  106. package/build/src/frontend-models/websocket-channel.js +13 -13
  107. package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
  108. package/build/src/http-server/client/websocket-session.js +8 -8
  109. package/build/src/http-server/client-delivery-queue.d.ts +121 -0
  110. package/build/src/http-server/client-delivery-queue.d.ts.map +1 -0
  111. package/build/src/http-server/client-delivery-queue.js +152 -0
  112. package/build/src/http-server/server-client.d.ts +6 -0
  113. package/build/src/http-server/server-client.d.ts.map +1 -1
  114. package/build/src/http-server/server-client.js +10 -1
  115. package/build/src/http-server/websocket-event-log-store.d.ts +0 -14
  116. package/build/src/http-server/websocket-event-log-store.d.ts.map +1 -1
  117. package/build/src/http-server/websocket-event-log-store.js +5 -5
  118. package/build/src/http-server/websocket-events-host.d.ts +15 -4
  119. package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
  120. package/build/src/http-server/websocket-events-host.js +39 -13
  121. package/build/src/http-server/worker-handler/in-process.d.ts +19 -1
  122. package/build/src/http-server/worker-handler/in-process.d.ts.map +1 -1
  123. package/build/src/http-server/worker-handler/in-process.js +50 -14
  124. package/build/src/http-server/worker-handler/index.d.ts +36 -4
  125. package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
  126. package/build/src/http-server/worker-handler/index.js +82 -18
  127. package/build/src/http-server/worker-handler/worker-thread.js +3 -3
  128. package/build/src/plugins/sqljs-wasm-route.d.ts.map +1 -1
  129. package/build/src/plugins/sqljs-wasm-route.js +4 -4
  130. package/build/src/sync/conflict-strategy.d.ts +0 -15
  131. package/build/src/sync/conflict-strategy.d.ts.map +1 -1
  132. package/build/src/sync/conflict-strategy.js +3 -3
  133. package/build/src/sync/device-identity.d.ts +0 -45
  134. package/build/src/sync/device-identity.d.ts.map +1 -1
  135. package/build/src/sync/device-identity.js +4 -4
  136. package/build/src/sync/local-mutation-log.d.ts +0 -41
  137. package/build/src/sync/local-mutation-log.d.ts.map +1 -1
  138. package/build/src/sync/local-mutation-log.js +9 -9
  139. package/build/src/sync/offline-grant.d.ts +0 -26
  140. package/build/src/sync/offline-grant.d.ts.map +1 -1
  141. package/build/src/sync/offline-grant.js +4 -4
  142. package/build/src/sync/peer-mutation-bundle.d.ts +0 -14
  143. package/build/src/sync/peer-mutation-bundle.d.ts.map +1 -1
  144. package/build/src/sync/peer-mutation-bundle.js +3 -3
  145. package/build/src/sync/server-change-feed.d.ts.map +1 -1
  146. package/build/src/sync/server-change-feed.js +33 -33
  147. package/build/src/sync/sync-api-client.d.ts +0 -9
  148. package/build/src/sync/sync-api-client.d.ts.map +1 -1
  149. package/build/src/sync/sync-api-client.js +2 -2
  150. package/build/src/sync/sync-envelope-replay-service.d.ts +38 -21
  151. package/build/src/sync/sync-envelope-replay-service.d.ts.map +1 -1
  152. package/build/src/sync/sync-envelope-replay-service.js +18 -18
  153. package/build/src/sync/sync-resource-base.d.ts +0 -7
  154. package/build/src/sync/sync-resource-base.d.ts.map +1 -1
  155. package/build/src/sync/sync-resource-base.js +2 -2
  156. package/build/src/sync/sync-scope-store.d.ts +0 -9
  157. package/build/src/sync/sync-scope-store.d.ts.map +1 -1
  158. package/build/src/sync/sync-scope-store.js +10 -10
  159. package/build/src/testing/test-filter-parser.d.ts +0 -10
  160. package/build/src/testing/test-filter-parser.d.ts.map +1 -1
  161. package/build/src/testing/test-filter-parser.js +11 -11
  162. package/build/src/testing/test-runner.d.ts +25 -91
  163. package/build/src/testing/test-runner.d.ts.map +1 -1
  164. package/build/src/testing/test-runner.js +113 -98
  165. package/build/src/testing/test.d.ts +8 -0
  166. package/build/src/testing/test.d.ts.map +1 -1
  167. package/build/src/testing/test.js +9 -9
  168. package/build/src/utils/backtrace-cleaner.d.ts.map +1 -1
  169. package/build/src/utils/backtrace-cleaner.js +9 -9
  170. package/build/src/utils/model-scope.d.ts +0 -8
  171. package/build/src/utils/model-scope.d.ts.map +1 -1
  172. package/build/src/utils/model-scope.js +3 -3
  173. package/build/src/utils/ransack.d.ts +52 -19
  174. package/build/src/utils/ransack.d.ts.map +1 -1
  175. package/build/src/utils/ransack.js +26 -26
  176. package/build/sync/conflict-strategy.js +3 -6
  177. package/build/sync/device-identity.js +4 -9
  178. package/build/sync/local-mutation-log.js +9 -14
  179. package/build/sync/offline-grant.js +4 -7
  180. package/build/sync/peer-mutation-bundle.js +2 -4
  181. package/build/sync/server-change-feed.js +32 -34
  182. package/build/sync/sync-api-client.js +1 -2
  183. package/build/sync/sync-envelope-replay-service.js +17 -19
  184. package/build/sync/sync-resource-base.js +1 -2
  185. package/build/sync/sync-scope-store.js +9 -10
  186. package/build/testing/test-filter-parser.js +10 -11
  187. package/build/testing/test-runner.js +116 -108
  188. package/build/testing/test.js +8 -9
  189. package/build/tsconfig.tsbuildinfo +1 -1
  190. package/build/utils/backtrace-cleaner.js +8 -9
  191. package/build/utils/model-scope.js +3 -4
  192. package/build/utils/ransack.js +27 -34
  193. package/package.json +3 -1
  194. package/scripts/eslint-rules/typedefs-first.js +67 -0
  195. package/scripts/prewarm-chromedriver.js +26 -0
  196. package/src/background-jobs/cron-expression.js +12 -13
  197. package/src/background-jobs/main.js +6 -6
  198. package/src/background-jobs/runner-graceful-shutdown.js +2 -3
  199. package/src/background-jobs/scheduler.js +3 -3
  200. package/src/background-jobs/worker.js +8 -9
  201. package/src/beacon/client.js +3 -4
  202. package/src/configuration-types.js +1 -0
  203. package/src/configuration.js +44 -3
  204. package/src/database/drivers/sqlite/web-persistence.js +2 -5
  205. package/src/database/pool/async-tracked-multi-connection.js +65 -15
  206. package/src/database/pool/base.js +23 -7
  207. package/src/database/query/index.js +21 -22
  208. package/src/database/query/model-class-query.js +5 -6
  209. package/src/database/record/attachments/normalize-input.js +9 -10
  210. package/src/database/record/attachments/store.js +2 -2
  211. package/src/database/record/auditing.js +7 -8
  212. package/src/database/record/index.js +4 -5
  213. package/src/environment-handlers/node/cli/commands/generate/frontend-models.js +1 -2
  214. package/src/frontend-model-controller.js +49 -56
  215. package/src/frontend-models/base.js +17 -19
  216. package/src/frontend-models/outgoing-event-buffer.js +3 -4
  217. package/src/frontend-models/query.js +40 -44
  218. package/src/frontend-models/resource-definition.js +7 -8
  219. package/src/frontend-models/transport-serialization.js +10 -12
  220. package/src/frontend-models/websocket-channel.js +12 -13
  221. package/src/http-server/client/websocket-session.js +7 -8
  222. package/src/http-server/client-delivery-queue.js +167 -0
  223. package/src/http-server/server-client.js +9 -0
  224. package/src/http-server/websocket-event-log-store.js +4 -6
  225. package/src/http-server/websocket-events-host.js +42 -12
  226. package/src/http-server/worker-handler/in-process.js +53 -14
  227. package/src/http-server/worker-handler/index.js +88 -18
  228. package/src/http-server/worker-handler/worker-thread.js +2 -2
  229. package/src/plugins/sqljs-wasm-route.js +3 -5
  230. package/src/sync/conflict-strategy.js +3 -6
  231. package/src/sync/device-identity.js +4 -9
  232. package/src/sync/local-mutation-log.js +9 -14
  233. package/src/sync/offline-grant.js +4 -7
  234. package/src/sync/peer-mutation-bundle.js +2 -4
  235. package/src/sync/server-change-feed.js +32 -34
  236. package/src/sync/sync-api-client.js +1 -2
  237. package/src/sync/sync-envelope-replay-service.js +17 -19
  238. package/src/sync/sync-resource-base.js +1 -2
  239. package/src/sync/sync-scope-store.js +9 -10
  240. package/src/testing/test-filter-parser.js +10 -11
  241. package/src/testing/test-runner.js +116 -108
  242. package/src/testing/test.js +8 -9
  243. package/src/utils/backtrace-cleaner.js +8 -9
  244. package/src/utils/model-scope.js +3 -4
  245. package/src/utils/ransack.js +27 -34
@@ -1,15 +1,3 @@
1
- /**
2
- * ParsedCron type.
3
- * @typedef {object} ParsedCron
4
- * @property {Set<number>} minute - Allowed minute values (0-59).
5
- * @property {Set<number>} hour - Allowed hour values (0-23).
6
- * @property {Set<number>} dayOfMonth - Allowed day-of-month values (1-31).
7
- * @property {Set<number>} month - Allowed month values (1-12).
8
- * @property {Set<number>} dayOfWeek - Allowed day-of-week values (0-6, 0=Sun).
9
- * @property {boolean} dayOfMonthRestricted - True when the dayOfMonth field is not `?`.
10
- * @property {boolean} dayOfWeekRestricted - True when the dayOfWeek field is not `?`.
11
- * @property {string} expression - Original expression for diagnostics.
12
- */
13
1
  /**
14
2
  * Runs the parseCronExpression helper.
15
3
  * @param {string} expression - Cron expression or shortcut.
@@ -1 +1 @@
1
- {"version":3,"file":"cron-expression.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/cron-expression.js"],"names":[],"mappings":"AAsCA;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AACH,gDAHW,MAAM,GACJ,UAAU,CA+BtB;AA4ID;;;;;;;;GAQG;AACH,yCAJW,UAAU,QACV,IAAI,GACF,IAAI,CAehB;;;;;;;;YA9Ma,GAAG,CAAC,MAAM,CAAC;;;;UACX,GAAG,CAAC,MAAM,CAAC;;;;gBACX,GAAG,CAAC,MAAM,CAAC;;;;WACX,GAAG,CAAC,MAAM,CAAC;;;;eACX,GAAG,CAAC,MAAM,CAAC;;;;0BACX,OAAO;;;;yBACP,OAAO;;;;gBACP,MAAM"}
1
+ {"version":3,"file":"cron-expression.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/cron-expression.js"],"names":[],"mappings":"AAkDA;;;;GAIG;AACH,gDAHW,MAAM,GACJ,UAAU,CA+BtB;AA4ID;;;;;;;;GAQG;AACH,yCAJW,UAAU,QACV,IAAI,GACF,IAAI,CAehB;;;;;;;;YAnPa,GAAG,CAAC,MAAM,CAAC;;;;UACX,GAAG,CAAC,MAAM,CAAC;;;;gBACX,GAAG,CAAC,MAAM,CAAC;;;;WACX,GAAG,CAAC,MAAM,CAAC;;;;eACX,GAAG,CAAC,MAAM,CAAC;;;;0BACX,OAAO;;;;yBACP,OAAO;;;;gBACP,MAAM"}
@@ -1,3 +1,15 @@
1
+ /**
2
+ * ParsedCron type.
3
+ * @typedef {object} ParsedCron
4
+ * @property {Set<number>} minute - Allowed minute values (0-59).
5
+ * @property {Set<number>} hour - Allowed hour values (0-23).
6
+ * @property {Set<number>} dayOfMonth - Allowed day-of-month values (1-31).
7
+ * @property {Set<number>} month - Allowed month values (1-12).
8
+ * @property {Set<number>} dayOfWeek - Allowed day-of-week values (0-6, 0=Sun).
9
+ * @property {boolean} dayOfMonthRestricted - True when the dayOfMonth field is not `?`.
10
+ * @property {boolean} dayOfWeekRestricted - True when the dayOfWeek field is not `?`.
11
+ * @property {string} expression - Original expression for diagnostics.
12
+ */
1
13
  // @ts-check
2
14
  /**
3
15
  * Minimal POSIX-style 5-field cron parser used by the background-job
@@ -31,18 +43,6 @@ const FIELDS = [
31
43
  // down to 0 after parsing in `normalizeDayOfWeek` below.
32
44
  { name: "dayOfWeek", min: 0, max: 7, names: DAY_NAMES }
33
45
  ];
34
- /**
35
- * ParsedCron type.
36
- * @typedef {object} ParsedCron
37
- * @property {Set<number>} minute - Allowed minute values (0-59).
38
- * @property {Set<number>} hour - Allowed hour values (0-23).
39
- * @property {Set<number>} dayOfMonth - Allowed day-of-month values (1-31).
40
- * @property {Set<number>} month - Allowed month values (1-12).
41
- * @property {Set<number>} dayOfWeek - Allowed day-of-week values (0-6, 0=Sun).
42
- * @property {boolean} dayOfMonthRestricted - True when the dayOfMonth field is not `?`.
43
- * @property {boolean} dayOfWeekRestricted - True when the dayOfWeek field is not `?`.
44
- * @property {string} expression - Original expression for diagnostics.
45
- */
46
46
  /**
47
47
  * Runs the parseCronExpression helper.
48
48
  * @param {string} expression - Cron expression or shortcut.
@@ -233,4 +233,4 @@ function candidateMatches(candidate, parsed) {
233
233
  return dayOfWeekMatch;
234
234
  return true;
235
235
  }
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi1leHByZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy9jcm9uLWV4cHJlc3Npb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaOzs7Ozs7Ozs7OztHQVdHO0FBRUgsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ3hHLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFFbkUsTUFBTSxTQUFTLEdBQUc7SUFDaEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsUUFBUSxFQUFFLFdBQVc7SUFDckIsV0FBVyxFQUFFLFdBQVc7SUFDeEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsVUFBVSxFQUFFLFdBQVc7SUFDdkIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsV0FBVyxFQUFFLFdBQVc7Q0FDekIsQ0FBQTtBQUVELE1BQU0sTUFBTSxHQUFHO0lBQ2IsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBQztJQUNqQyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFDO0lBQy9CLEVBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUM7SUFDckMsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUs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QU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBRS9ELDBEQUEwRDtJQUMxRCx5REFBeUQ7SUFDekQscUNBQXFDO0lBQ3JDLElBQUksTUFBTSxDQUFDLG9CQUFvQixJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzlELE9BQU8sZUFBZSxJQUFJLGNBQWMsQ0FBQTtJQUMxQyxDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsb0JBQW9CO1FBQUUsT0FBTyxlQUFlLENBQUE7SUFDdkQsSUFBSSxNQUFNLENBQUMsbUJBQW1CO1FBQUUsT0FBTyxjQUFjLENBQUE7SUFFckQsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogTWluaW1hbCBQT1NJWC1zdHlsZSA1LWZpZWxkIGNyb24gcGFyc2VyIHVzZWQgYnkgdGhlIGJhY2tncm91bmQtam9iXG4gKiBzY2hlZHVsZXIuIFN1cHBvcnRzIGAqYCwgc2luZ2xlIHZhbHVlcywgcmFuZ2VzIChgTi1NYCksIHN0ZXBzXG4gKiAoYCpcXC9OYCBvciBgTi1NL05gKSwgY29tbWEtc2VwYXJhdGVkIGxpc3RzLCBhbmQgdGhlIGNvbW1vblxuICogYEBob3VybHlgL2BAZGFpbHlgL2BAd2Vla2x5YC9gQG1vbnRobHlgL2BAeWVhcmx5YC9gQG1pZG5pZ2h0YFxuICogc2hvcnRjdXRzLiBNb250aCBhbmQgZGF5LW9mLXdlZWsgbmFtZXMgKGBqYW5gLWBkZWNgLCBgc3VuYC1gc2F0YCxcbiAqIGNhc2UtaW5zZW5zaXRpdmUpIGFyZSBhbHNvIGFjY2VwdGVkLlxuICpcbiAqIEZvciBkYXktb2YtbW9udGggKyBkYXktb2Ytd2VlayBpbnRlcmFjdGlvbiwgZm9sbG93cyBQT1NJWC9WaXhpZVxuICogY3JvbiBzZW1hbnRpY3M6IHdoZW4gYm90aCBmaWVsZHMgYXJlIHJlc3RyaWN0ZWQgKG5laXRoZXIgYCpgKSwgdGhlXG4gKiBqb2IgZmlyZXMgd2hlbiBFSVRIRVIgbWF0Y2hlcy4gV2hlbiBvbmUgaXMgYCpgIGl0IGhhcyBubyBlZmZlY3QuXG4gKi9cblxuY29uc3QgTU9OVEhfTkFNRVMgPSBbXCJqYW5cIiwgXCJmZWJcIiwgXCJtYXJcIiwgXCJhcHJcIiwgXCJtYXlcIiwgXCJqdW5cIiwgXCJqdWxcIiwgXCJhdWdcIiwgXCJzZXBcIiwgXCJvY3RcIiwgXCJub3ZcIiwgXCJkZWNcIl1cbmNvbnN0IERBWV9OQU1FUyA9IFtcInN1blwiLCBcIm1vblwiLCBcInR1ZVwiLCBcIndlZFwiLCBcInRodVwiLCBcImZyaVwiLCBcInNhdFwiXVxuXG5jb25zdCBTSE9SVENVVFMgPSB7XG4gIFwiQGhvdXJseVwiOiBcIjAgKiAqICogKlwiLFxuICBcIkBkYWlseVwiOiBcIjAgMCAqICogKlwiLFxuICBcIkBtaWRuaWdodFwiOiBcIjAgMCAqICogKlwiLFxuICBcIkB3ZWVrbHlcIjogXCIwIDAgKiAqIDBcIixcbiAgXCJAbW9udGhseVwiOiBcIjAgMCAxICogKlwiLFxuICBcIkB5ZWFybHlcIjogXCIwIDAgMSAxICpcIixcbiAgXCJAYW5udWFsbHlcIjogXCIwIDAgMSAxICpcIlxufVxuXG5jb25zdCBGSUVMRFMgPSBbXG4gIHtuYW1lOiBcIm1pbnV0ZVwiLCBtaW46IDAsIG1heDogNTl9LFxuICB7bmFtZTogXCJob3VyXCIsIG1pbjogMCwgbWF4OiAyM30sXG4gIHtuYW1lOiBcImRheU9mTW9udGhcIiwgbWluOiAxLCBtYXg6IDMxfSxcbiAge25hbWU6IFwibW9udGhcIiwgbWluOiAxLCBtYXg6IDEyLCBuYW1lczogTU9OVEhfTkFNRVN9LFxuICAvLyBBY2NlcHQgMC03IHNvIHJhbmdlcyBsaWtlIGA1LTdgIChGcmktU3VuKSB3b3JrOyB3ZSBub3JtYWxpemUgN1xuICAvLyBkb3duIHRvIDAgYWZ0ZXIgcGFyc2luZyBpbiBgbm9ybWFsaXplRGF5T2ZXZWVrYCBiZWxvdy5cbiAge25hbWU6IFwiZGF5T2ZXZWVrXCIsIG1pbjogMCwgbWF4OiA3LCBuYW1lczogREFZX05BTUVTfVxuXVxuXG4vKipcbiAqIFBhcnNlZENyb24gdHlwZS5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFBhcnNlZENyb25cbiAqIEBwcm9wZXJ0eSB7U2V0PG51bWJlcj59IG1pbnV0ZSAtIEFsbG93ZWQgbWludXRlIHZhbHVlcyAoMC01OSkuXG4gKiBAcHJvcGVydHkge1NldDxudW1iZXI+fSBob3VyIC0gQWxsb3dlZCBob3VyIHZhbHVlcyAoMC0yMykuXG4gKiBAcHJvcGVydHkge1NldDxudW1iZXI+fSBkYXlPZk1vbnRoIC0gQWxsb3dlZCBkYXktb2YtbW9udGggdmFsdWVzICgxLTMxKS5cbiAqIEBwcm9wZXJ0eSB7U2V0PG51bWJlcj59IG1vbnRoIC0gQWxsb3dlZCBtb250aCB2YWx1ZXMgKDEtMTIpLlxuICogQHByb3BlcnR5IHtTZXQ8bnVtYmVyPn0gZGF5T2ZXZWVrIC0gQWxsb3dlZCBkYXktb2Ytd2VlayB2YWx1ZXMgKDAtNiwgMD1TdW4pLlxuICogQHByb3BlcnR5IHtib29sZWFufSBkYXlPZk1vbnRoUmVzdHJpY3RlZCAtIFRydWUgd2hlbiB0aGUgZGF5T2ZNb250aCBmaWVsZCBpcyBub3QgYD9gLlxuICogQHByb3BlcnR5IHtib29sZWFufSBkYXlPZldlZWtSZXN0cmljdGVkIC0gVHJ1ZSB3aGVuIHRoZSBkYXlPZldlZWsgZmllbGQgaXMgbm90IGA/YC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBleHByZXNzaW9uIC0gT3JpZ2luYWwgZXhwcmVzc2lvbiBmb3IgZGlhZ25vc3RpY3MuXG4gKi9cblxuLyoqXG4gKiBSdW5zIHRoZSBwYXJzZUNyb25FeHByZXNzaW9uIGhlbHBlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIC0gQ3JvbiBleHByZXNzaW9uIG9yIHNob3J0Y3V0LlxuICogQHJldHVybnMge1BhcnNlZENyb259IC0gUGFyc2VkIGNyb24gc2NoZWR1bGUgZmllbGRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDcm9uRXhwcmVzc2lvbihleHByZXNzaW9uKSB7XG4gIGlmICh0eXBlb2YgZXhwcmVzc2lvbiAhPT0gXCJzdHJpbmdcIiB8fCAhZXhwcmVzc2lvbi50cmltKCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY3JvbiBleHByZXNzaW9uOiAke2V4cHJlc3Npb259YClcbiAgfVxuXG4gIGNvbnN0IHRyaW1tZWQgPSBleHByZXNzaW9uLnRyaW0oKS50b0xvd2VyQ2FzZSgpXG4gIGNvbnN0IGV4cGFuZGVkID0gU0hPUlRDVVRTWy8qKiBAdHlwZSB7a2V5b2YgdHlwZW9mIFNIT1JUQ1VUU30gKi8gKHRyaW1tZWQpXSB8fCB0cmltbWVkXG4gIGNvbnN0IGZpZWxkcyA9IGV4cGFuZGVkLnNwbGl0KC9cXHMrLylcblxuICBpZiAoZmllbGRzLmxlbmd0aCAhPT0gNSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjcm9uIGV4cHJlc3Npb24gXCIke2V4cHJlc3Npb259XCI6IGV4cGVjdGVkIDUgZmllbGRzLCBnb3QgJHtmaWVsZHMubGVuZ3RofWApXG4gIH1cblxuICBjb25zdCBbbWludXRlRmllbGQsIGhvdXJGaWVsZCwgZGF5T2ZNb250aEZpZWxkLCBtb250aEZpZWxkLCBkYXlPZldlZWtGaWVsZF0gPSBmaWVsZHNcbiAgY29uc3QgcGFyc2VkID0ge1xuICAgIG1pbnV0ZTogcGFyc2VGaWVsZChtaW51dGVGaWVsZCwgRklFTERTWzBdLCBleHByZXNzaW9uKSxcbiAgICBob3VyOiBwYXJzZUZpZWxkKGhvdXJGaWVsZCwgRklFTERTWzFdLCBleHByZXNzaW9uKSxcbiAgICBkYXlPZk1vbnRoOiBwYXJzZUZpZWxkKGRheU9mTW9udGhGaWVsZCwgRklFTERTWzJdLCBleHByZXNzaW9uKSxcbiAgICBtb250aDogcGFyc2VGaWVsZChtb250aEZpZWxkLCBGSUVMRFNbM10sIGV4cHJlc3Npb24pLFxuICAgIC8vIENyb24gdHJlYXRzIGJvdGggMCBhbmQgNyBhcyBTdW5kYXkuIFdlIGFjY2VwdCA3IHRocm91Z2hvdXQgdGhlXG4gICAgLy8gcGFyc2UgcGFzcyAoc28gYDUtN2AgZm9yIEZyaS1TdW4gd29ya3MpIGFuZCB0aGVuIG5vcm1hbGl6ZSBhbnlcbiAgICAvLyA3cyBkb3duIHRvIDAgc28gdGhlIG1hdGNoZXIgb25seSBkZWFscyB3aXRoIDAtNi5cbiAgICBkYXlPZldlZWs6IG5vcm1hbGl6ZURheU9mV2VlayhwYXJzZUZpZWxkKGRheU9mV2Vla0ZpZWxkLCBGSUVMRFNbNF0sIGV4cHJlc3Npb24pKSxcbiAgICBkYXlPZk1vbnRoUmVzdHJpY3RlZDogZGF5T2ZNb250aEZpZWxkICE9PSBcIipcIixcbiAgICBkYXlPZldlZWtSZXN0cmljdGVkOiBkYXlPZldlZWtGaWVsZCAhPT0gXCIqXCIsXG4gICAgZXhwcmVzc2lvblxuICB9XG5cbiAgcmV0dXJuIHBhcnNlZFxufVxuXG4vKipcbiAqIFJ1bnMgbm9ybWFsaXplIGRheSBvZiB3ZWVrLlxuICogQHBhcmFtIHtTZXQ8bnVtYmVyPn0gZGF5T2ZXZWVrIC0gRGF5LW9mLXdlZWsgdmFsdWVzLlxuICogQHJldHVybnMge1NldDxudW1iZXI+fSAtIE5vcm1hbGl6ZWQgZGF5LW9mLXdlZWsgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVEYXlPZldlZWsoZGF5T2ZXZWVrKSB7XG4gIGlmIChkYXlPZldlZWsuaGFzKDcpKSB7XG4gICAgZGF5T2ZXZWVrLmRlbGV0ZSg3KVxuICAgIGRheU9mV2Vlay5hZGQoMClcbiAgfVxuXG4gIHJldHVybiBkYXlPZldlZWtcbn1cblxuLyoqXG4gKiBSdW5zIHBhcnNlIGZpZWxkLlxuICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkIC0gRmllbGQgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSB7e25hbWU6IHN0cmluZywgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBuYW1lcz86IHN0cmluZ1tdfX0gZmllbGRTcGVjIC0gRmllbGQgc3BlYy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIC0gV2hvbGUgY3JvbiBleHByZXNzaW9uIGZvciBlcnJvciBtZXNzYWdlcy5cbiAqIEByZXR1cm5zIHtTZXQ8bnVtYmVyPn0gLSBQYXJzZWQgYWxsb3dlZCBmaWVsZCB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQoZmllbGQsIGZpZWxkU3BlYywgZXhwcmVzc2lvbikge1xuICBjb25zdCByZXN1bHQgPSBuZXcgU2V0KClcblxuICBmb3IgKGNvbnN0IHBhcnQgb2YgZmllbGQuc3BsaXQoXCIsXCIpKSB7XG4gICAgYWRkUGFydFZhbHVlcyhwYXJ0LCBmaWVsZFNwZWMsIGV4cHJlc3Npb24sIHJlc3VsdClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBSdW5zIGFkZCBwYXJ0IHZhbHVlcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJ0IC0gU2luZ2xlIGNvbW1hLXNlcGFyYXRlZCBjaHVuay5cbiAqIEBwYXJhbSB7e25hbWU6IHN0cmluZywgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBuYW1lcz86IHN0cmluZ1tdfX0gZmllbGRTcGVjIC0gRmllbGQgc3BlYy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIC0gT3JpZ2luYWwgZXhwcmVzc2lvbiBmb3IgZXJyb3JzLlxuICogQHBhcmFtIHtTZXQ8bnVtYmVyPn0gcmVzdWx0IC0gQWNjdW11bGF0b3IuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gYWRkUGFydFZhbHVlcyhwYXJ0LCBmaWVsZFNwZWMsIGV4cHJlc3Npb24sIHJlc3VsdCkge1xuICBpZiAoIXBhcnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtmaWVsZFNwZWMubmFtZX0gZmllbGQgaW4gY3JvbiBleHByZXNzaW9uIFwiJHtleHByZXNzaW9ufVwiYClcbiAgfVxuXG4gIGNvbnN0IFtyYW5nZVBhcnQsIHN0ZXBQYXJ0XSA9IHBhcnQuc3BsaXQoXCIvXCIpXG4gIGNvbnN0IHN0ZXAgPSBzdGVwUGFydCA9PT0gdW5kZWZpbmVkID8gMSA6IHBhcnNlU3RlcChzdGVwUGFydCwgZmllbGRTcGVjLCBleHByZXNzaW9uKVxuICBjb25zdCBbc3RhcnQsIGVuZF0gPSBwYXJzZVJhbmdlKHJhbmdlUGFydCwgZmllbGRTcGVjLCBleHByZXNzaW9uLCBzdGVwUGFydCAhPT0gdW5kZWZpbmVkKVxuXG4gIGZvciAobGV0IHZhbHVlID0gc3RhcnQ7IHZhbHVlIDw9IGVuZDsgdmFsdWUgKz0gc3RlcCkge1xuICAgIGlmICh2YWx1ZSA8IGZpZWxkU3BlYy5taW4gfHwgdmFsdWUgPiBmaWVsZFNwZWMubWF4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFZhbHVlICR7dmFsdWV9IG91dCBvZiByYW5nZSBmb3IgJHtmaWVsZFNwZWMubmFtZX0gaW4gY3JvbiBleHByZXNzaW9uIFwiJHtleHByZXNzaW9ufVwiYClcbiAgICB9XG5cbiAgICByZXN1bHQuYWRkKHZhbHVlKVxuICB9XG59XG5cbi8qKlxuICogUnVucyBwYXJzZSBzdGVwLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gU3RlcCB2YWx1ZS5cbiAqIEBwYXJhbSB7e25hbWU6IHN0cmluZywgbWluOiBudW1iZXIsIG1heDogbnVtYmVyfX0gZmllbGRTcGVjIC0gRmllbGQgc3BlYy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIC0gT3JpZ2luYWwgZXhwcmVzc2lvbiBmb3IgZXJyb3JzLlxuICogQHJldHVybnMge251bWJlcn0gLSBQYXJzZWQgcG9zaXRpdmUgc3RlcCBzaXplLlxuICovXG5mdW5jdGlvbiBwYXJzZVN0ZXAodmFsdWUsIGZpZWxkU3BlYywgZXhwcmVzc2lvbikge1xuICBjb25zdCBzdGVwID0gTnVtYmVyKHZhbHVlKVxuXG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcihzdGVwKSB8fCBzdGVwIDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc3RlcCBcIiR7dmFsdWV9XCIgZm9yICR7ZmllbGRTcGVjLm5hbWV9IGluIGNyb24gZXhwcmVzc2lvbiBcIiR7ZXhwcmVzc2lvbn1cImApXG4gIH1cblxuICByZXR1cm4gc3RlcFxufVxuXG4vKipcbiAqIFJ1bnMgcGFyc2UgcmFuZ2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gcmFuZ2VQYXJ0IC0gUmFuZ2UgcG9ydGlvbiAoYmVmb3JlID8gYC9gKS5cbiAqIEBwYXJhbSB7e25hbWU6IHN0cmluZywgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBuYW1lcz86IHN0cmluZ1tdfX0gZmllbGRTcGVjIC0gRmllbGQgc3BlYy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIC0gT3JpZ2luYWwgZXhwcmVzc2lvbiBmb3IgZXJyb3JzLlxuICogQHBhcmFtIHtib29sZWFufSBoYXNTdGVwIC0gV2hldGhlciB0aGUgcGFydCBoYWQgYSBgL3N0ZXBgIHN1ZmZpeC5cbiAqIEByZXR1cm5zIHtbbnVtYmVyLCBudW1iZXJdfSAtIEluY2x1c2l2ZSBmaWVsZCByYW5nZS5cbiAqL1xuZnVuY3Rpb24gcGFyc2VSYW5nZShyYW5nZVBhcnQsIGZpZWxkU3BlYywgZXhwcmVzc2lvbiwgaGFzU3RlcCkge1xuICBpZiAocmFuZ2VQYXJ0ID09PSBcIipcIikge1xuICAgIHJldHVybiBbZmllbGRTcGVjLm1pbiwgZmllbGRTcGVjLm1heF1cbiAgfVxuXG4gIGNvbnN0IGRhc2hJbmRleCA9IHJhbmdlUGFydC5pbmRleE9mKFwiLVwiKVxuXG4gIGlmIChkYXNoSW5kZXggPT09IC0xKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZVZhbHVlKHJhbmdlUGFydCwgZmllbGRTcGVjLCBleHByZXNzaW9uKVxuXG4gICAgLy8gYE4vc3RlcGAgaXMgc2hvcnRoYW5kIGZvciBgTi1tYXgvc3RlcGAgKFZpeGllIGNyb24pLlxuICAgIHJldHVybiBbdmFsdWUsIGhhc1N0ZXAgPyBmaWVsZFNwZWMubWF4IDogdmFsdWVdXG4gIH1cblxuICBjb25zdCBzdGFydCA9IHBhcnNlVmFsdWUocmFuZ2VQYXJ0LnNsaWNlKDAsIGRhc2hJbmRleCksIGZpZWxkU3BlYywgZXhwcmVzc2lvbilcbiAgY29uc3QgZW5kID0gcGFyc2VWYWx1ZShyYW5nZVBhcnQuc2xpY2UoZGFzaEluZGV4ICsgMSksIGZpZWxkU3BlYywgZXhwcmVzc2lvbilcblxuICBpZiAoc3RhcnQgPiBlbmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFJhbmdlIHN0YXJ0ICR7c3RhcnR9ID4gZW5kICR7ZW5kfSBmb3IgJHtmaWVsZFNwZWMubmFtZX0gaW4gY3JvbiBleHByZXNzaW9uIFwiJHtleHByZXNzaW9ufVwiYClcbiAgfVxuXG4gIHJldHVybiBbc3RhcnQsIGVuZF1cbn1cblxuLyoqXG4gKiBSdW5zIHBhcnNlIHZhbHVlLlxuICogQHBhcmFtIHtzdHJpbmd9IHJhd1ZhbHVlIC0gUmF3IHZhbHVlIChtYXkgYmUgYSBuYW1lKS5cbiAqIEBwYXJhbSB7e25hbWU6IHN0cmluZywgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBuYW1lcz86IHN0cmluZ1tdfX0gZmllbGRTcGVjIC0gRmllbGQgc3BlYy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIC0gT3JpZ2luYWwgZXhwcmVzc2lvbiBmb3IgZXJyb3JzLlxuICogQHJldHVybnMge251bWJlcn0gLSBQYXJzZWQgbnVtZXJpYyBmaWVsZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gcGFyc2VWYWx1ZShyYXdWYWx1ZSwgZmllbGRTcGVjLCBleHByZXNzaW9uKSB7XG4gIGlmICghcmF3VmFsdWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtmaWVsZFNwZWMubmFtZX0gdmFsdWUgaW4gY3JvbiBleHByZXNzaW9uIFwiJHtleHByZXNzaW9ufVwiYClcbiAgfVxuXG4gIGNvbnN0IG5hbWVkSW5kZXggPSBmaWVsZFNwZWMubmFtZXM/LmluZGV4T2YocmF3VmFsdWUpXG5cbiAgaWYgKHR5cGVvZiBuYW1lZEluZGV4ID09PSBcIm51bWJlclwiICYmIG5hbWVkSW5kZXggIT09IC0xKSB7XG4gICAgcmV0dXJuIG5hbWVkSW5kZXggKyBmaWVsZFNwZWMubWluXG4gIH1cblxuICBjb25zdCB2YWx1ZSA9IE51bWJlcihyYXdWYWx1ZSlcblxuICBpZiAoIU51bWJlci5pc0ludGVnZXIodmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7ZmllbGRTcGVjLm5hbWV9IHZhbHVlIFwiJHtyYXdWYWx1ZX1cIiBpbiBjcm9uIGV4cHJlc3Npb24gXCIke2V4cHJlc3Npb259XCJgKVxuICB9XG5cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8vIDUgeWVhcnMgb2YgbWludXRlcyDigJQgY292ZXJzIHRoZSB3b3JzdC1jYXNlIGxlZ2l0aW1hdGUgZ2FwLCB0aGVcbi8vIGAwIDAgMjkgMiAqYCAoRmViIDI5KSBsZWFwLXllYXItb25seSBzY2hlZHVsZSwgd2l0aCBhIG9uZS15ZWFyXG4vLyBidWZmZXIgc28gd2UgbmV2ZXIgcmVwb3J0IGEgcmVhbCBjcm9uIHBhdHRlcm4gYXMgXCJuZXZlciBtYXRjaGVzXCIuXG5jb25zdCBNQVhfTkVYVF9GSVJFX0lURVJBVElPTlMgPSA1ICogMzY2ICogMjQgKiA2MFxuXG4vKipcbiAqIFJldHVybnMgdGhlIG5leHQgRGF0ZSBzdHJpY3RseSBhZnRlciBgZnJvbWAgdGhhdCBzYXRpc2ZpZXMgYHBhcnNlZGAuXG4gKiBPcGVyYXRlcyBhdCBtaW51dGUgZ3JhbnVsYXJpdHkuIEJhaWxzIG91dCB3aXRoIGFuIGVycm9yIGFmdGVyIGZpdmVcbiAqIHllYXJzIG9mIHNlYXJjaCwgd2hpY2ggb25seSBoYXBwZW5zIGlmIHRoZSBleHByZXNzaW9uIG1hdGNoZXMgbm9cbiAqIHJlYWwgdGltZSAoZS5nLiwgYDAgMCAzMSAyICpgIOKAlCBGZWIgMzFzdCkuXG4gKiBAcGFyYW0ge1BhcnNlZENyb259IHBhcnNlZCAtIFBhcnNlZCBjcm9uIGV4cHJlc3Npb24uXG4gKiBAcGFyYW0ge0RhdGV9IGZyb20gLSBSZWZlcmVuY2UgRGF0ZSDigJQgdGhlIG5leHQgbWF0Y2ggaXMgc3RyaWN0bHkgYWZ0ZXIgdGhpcy5cbiAqIEByZXR1cm5zIHtEYXRlfSAtIE5leHQgZGF0ZSBtYXRjaGluZyB0aGUgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHRDcm9uRmlyZURhdGUocGFyc2VkLCBmcm9tKSB7XG4gIGNvbnN0IGNhbmRpZGF0ZSA9IG5ldyBEYXRlKGZyb20uZ2V0VGltZSgpKVxuXG4gIGNhbmRpZGF0ZS5zZXRTZWNvbmRzKDAsIDApXG4gIGNhbmRpZGF0ZS5zZXRNaW51dGVzKGNhbmRpZGF0ZS5nZXRNaW51dGVzKCkgKyAxKVxuXG4gIGZvciAobGV0IGl0ZXJhdGlvbnMgPSAwOyBpdGVyYXRpb25zIDwgTUFYX05FWFRfRklSRV9JVEVSQVRJT05TOyBpdGVyYXRpb25zICs9IDEpIHtcbiAgICBpZiAoY2FuZGlkYXRlTWF0Y2hlcyhjYW5kaWRhdGUsIHBhcnNlZCkpIHJldHVybiBjYW5kaWRhdGVcblxuICAgIGNhbmRpZGF0ZS5zZXRNaW51dGVzKGNhbmRpZGF0ZS5nZXRNaW51dGVzKCkgKyAxKVxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBDcm9uIGV4cHJlc3Npb24gXCIke3BhcnNlZC5leHByZXNzaW9ufVwiIG5ldmVyIG1hdGNoZXNgKVxufVxuXG4vKipcbiAqIFJ1bnMgY2FuZGlkYXRlIG1hdGNoZXMuXG4gKiBAcGFyYW0ge0RhdGV9IGNhbmRpZGF0ZSAtIENhbmRpZGF0ZSBEYXRlIChpbiBsb2NhbCB0aW1lKS5cbiAqIEBwYXJhbSB7UGFyc2VkQ3Jvbn0gcGFyc2VkIC0gUGFyc2VkIGV4cHJlc3Npb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHRoZSBjYW5kaWRhdGUgbWF0Y2hlcyB0aGUgcGFyc2VkIHNjaGVkdWxlLlxuICovXG5mdW5jdGlvbiBjYW5kaWRhdGVNYXRjaGVzKGNhbmRpZGF0ZSwgcGFyc2VkKSB7XG4gIGlmICghcGFyc2VkLm1pbnV0ZS5oYXMoY2FuZGlkYXRlLmdldE1pbnV0ZXMoKSkpIHJldHVybiBmYWxzZVxuICBpZiAoIXBhcnNlZC5ob3VyLmhhcyhjYW5kaWRhdGUuZ2V0SG91cnMoKSkpIHJldHVybiBmYWxzZVxuICBpZiAoIXBhcnNlZC5tb250aC5oYXMoY2FuZGlkYXRlLmdldE1vbnRoKCkgKyAxKSkgcmV0dXJuIGZhbHNlXG5cbiAgY29uc3QgZGF5T2ZNb250aE1hdGNoID0gcGFyc2VkLmRheU9mTW9udGguaGFzKGNhbmRpZGF0ZS5nZXREYXRlKCkpXG4gIGNvbnN0IGRheU9mV2Vla01hdGNoID0gcGFyc2VkLmRheU9mV2Vlay5oYXMoY2FuZGlkYXRlLmdldERheSgpKVxuXG4gIC8vIFBPU0lYL1ZpeGllIGNyb24gT1Igc2VtYW50aWNzOiB3aGVuIGJvdGggZGF5IGZpZWxkcyBhcmVcbiAgLy8gcmVzdHJpY3RlZCwgZmlyZSB3aGVuIEVJVEhFUiBtYXRjaGVzLiBXaGVuIG9ubHkgb25lIGlzXG4gIC8vIHJlc3RyaWN0ZWQsIG9ubHkgdGhhdCBvbmUgYXBwbGllcy5cbiAgaWYgKHBhcnNlZC5kYXlPZk1vbnRoUmVzdHJpY3RlZCAmJiBwYXJzZWQuZGF5T2ZXZWVrUmVzdHJpY3RlZCkge1xuICAgIHJldHVybiBkYXlPZk1vbnRoTWF0Y2ggfHwgZGF5T2ZXZWVrTWF0Y2hcbiAgfVxuXG4gIGlmIChwYXJzZWQuZGF5T2ZNb250aFJlc3RyaWN0ZWQpIHJldHVybiBkYXlPZk1vbnRoTWF0Y2hcbiAgaWYgKHBhcnNlZC5kYXlPZldlZWtSZXN0cmljdGVkKSByZXR1cm4gZGF5T2ZXZWVrTWF0Y2hcblxuICByZXR1cm4gdHJ1ZVxufVxuIl19
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi1leHByZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy9jcm9uLWV4cHJlc3Npb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxZQUFZO0FBRVo7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDeEcsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUVuRSxNQUFNLFNBQVMsR0FBRztJQUNoQixTQUFTLEVBQUUsV0FBVztJQUN0QixRQUFRLEVBQUUsV0FBVztJQUNyQixXQUFXLEVBQUUsV0FBVztJQUN4QixTQUFTLEVBQUUsV0FBVztJQUN0QixVQUFVLEVBQUUsV0FBVztJQUN2QixTQUFTLEVBQUUsV0FBVztJQUN0QixXQUFXLEVBQUUsV0FBVztDQUN6QixDQUFBO0FBRUQsTUFBTSxNQUFNLEdBQUc7SUFDYixFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFDO0lBQ2pDLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUM7SUFDL0IsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBQztJQUNyQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMs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QU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBRS9ELDBEQUEwRDtJQUMxRCx5REFBeUQ7SUFDekQscUNBQXFDO0lBQ3JDLElBQUksTUFBTSxDQUFDLG9CQUFvQixJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzlELE9BQU8sZUFBZSxJQUFJLGNBQWMsQ0FBQTtJQUMxQyxDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsb0JBQW9CO1FBQUUsT0FBTyxlQUFlLENBQUE7SUFDdkQsSUFBSSxNQUFNLENBQUMsbUJBQW1CO1FBQUUsT0FBTyxjQUFjLENBQUE7SUFFckQsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQYXJzZWRDcm9uIHR5cGUuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQYXJzZWRDcm9uXG4gKiBAcHJvcGVydHkge1NldDxudW1iZXI+fSBtaW51dGUgLSBBbGxvd2VkIG1pbnV0ZSB2YWx1ZXMgKDAtNTkpLlxuICogQHByb3BlcnR5IHtTZXQ8bnVtYmVyPn0gaG91ciAtIEFsbG93ZWQgaG91ciB2YWx1ZXMgKDAtMjMpLlxuICogQHByb3BlcnR5IHtTZXQ8bnVtYmVyPn0gZGF5T2ZNb250aCAtIEFsbG93ZWQgZGF5LW9mLW1vbnRoIHZhbHVlcyAoMS0zMSkuXG4gKiBAcHJvcGVydHkge1NldDxudW1iZXI+fSBtb250aCAtIEFsbG93ZWQgbW9udGggdmFsdWVzICgxLTEyKS5cbiAqIEBwcm9wZXJ0eSB7U2V0PG51bWJlcj59IGRheU9mV2VlayAtIEFsbG93ZWQgZGF5LW9mLXdlZWsgdmFsdWVzICgwLTYsIDA9U3VuKS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZGF5T2ZNb250aFJlc3RyaWN0ZWQgLSBUcnVlIHdoZW4gdGhlIGRheU9mTW9udGggZmllbGQgaXMgbm90IGA/YC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZGF5T2ZXZWVrUmVzdHJpY3RlZCAtIFRydWUgd2hlbiB0aGUgZGF5T2ZXZWVrIGZpZWxkIGlzIG5vdCBgP2AuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZXhwcmVzc2lvbiAtIE9yaWdpbmFsIGV4cHJlc3Npb24gZm9yIGRpYWdub3N0aWNzLlxuICovXG4vLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBNaW5pbWFsIFBPU0lYLXN0eWxlIDUtZmllbGQgY3JvbiBwYXJzZXIgdXNlZCBieSB0aGUgYmFja2dyb3VuZC1qb2JcbiAqIHNjaGVkdWxlci4gU3VwcG9ydHMgYCpgLCBzaW5nbGUgdmFsdWVzLCByYW5nZXMgKGBOLU1gKSwgc3RlcHNcbiAqIChgKlxcL05gIG9yIGBOLU0vTmApLCBjb21tYS1zZXBhcmF0ZWQgbGlzdHMsIGFuZCB0aGUgY29tbW9uXG4gKiBgQGhvdXJseWAvYEBkYWlseWAvYEB3ZWVrbHlgL2BAbW9udGhseWAvYEB5ZWFybHlgL2BAbWlkbmlnaHRgXG4gKiBzaG9ydGN1dHMuIE1vbnRoIGFuZCBkYXktb2Ytd2VlayBuYW1lcyAoYGphbmAtYGRlY2AsIGBzdW5gLWBzYXRgLFxuICogY2FzZS1pbnNlbnNpdGl2ZSkgYXJlIGFsc28gYWNjZXB0ZWQuXG4gKlxuICogRm9yIGRheS1vZi1tb250aCArIGRheS1vZi13ZWVrIGludGVyYWN0aW9uLCBmb2xsb3dzIFBPU0lYL1ZpeGllXG4gKiBjcm9uIHNlbWFudGljczogd2hlbiBib3RoIGZpZWxkcyBhcmUgcmVzdHJpY3RlZCAobmVpdGhlciBgKmApLCB0aGVcbiAqIGpvYiBmaXJlcyB3aGVuIEVJVEhFUiBtYXRjaGVzLiBXaGVuIG9uZSBpcyBgKmAgaXQgaGFzIG5vIGVmZmVjdC5cbiAqL1xuXG5jb25zdCBNT05USF9OQU1FUyA9IFtcImphblwiLCBcImZlYlwiLCBcIm1hclwiLCBcImFwclwiLCBcIm1heVwiLCBcImp1blwiLCBcImp1bFwiLCBcImF1Z1wiLCBcInNlcFwiLCBcIm9jdFwiLCBcIm5vdlwiLCBcImRlY1wiXVxuY29uc3QgREFZX05BTUVTID0gW1wic3VuXCIsIFwibW9uXCIsIFwidHVlXCIsIFwid2VkXCIsIFwidGh1XCIsIFwiZnJpXCIsIFwic2F0XCJdXG5cbmNvbnN0IFNIT1JUQ1VUUyA9IHtcbiAgXCJAaG91cmx5XCI6IFwiMCAqICogKiAqXCIsXG4gIFwiQGRhaWx5XCI6IFwiMCAwICogKiAqXCIsXG4gIFwiQG1pZG5pZ2h0XCI6IFwiMCAwICogKiAqXCIsXG4gIFwiQHdlZWtseVwiOiBcIjAgMCAqICogMFwiLFxuICBcIkBtb250aGx5XCI6IFwiMCAwIDEgKiAqXCIsXG4gIFwiQHllYXJseVwiOiBcIjAgMCAxIDEgKlwiLFxuICBcIkBhbm51YWxseVwiOiBcIjAgMCAxIDEgKlwiXG59XG5cbmNvbnN0IEZJRUxEUyA9IFtcbiAge25hbWU6IFwibWludXRlXCIsIG1pbjogMCwgbWF4OiA1OX0sXG4gIHtuYW1lOiBcImhvdXJcIiwgbWluOiAwLCBtYXg6IDIzfSxcbiAge25hbWU6IFwiZGF5T2ZNb250aFwiLCBtaW46IDEsIG1heDogMzF9LFxuICB7bmFtZTogXCJtb250aFwiLCBtaW46IDEsIG1heDogMTIsIG5hbWVzOiBNT05USF9OQU1FU30sXG4gIC8vIEFjY2VwdCAwLTcgc28gcmFuZ2VzIGxpa2UgYDUtN2AgKEZyaS1TdW4pIHdvcms7IHdlIG5vcm1hbGl6ZSA3XG4gIC8vIGRvd24gdG8gMCBhZnRlciBwYXJzaW5nIGluIGBub3JtYWxpemVEYXlPZldlZWtgIGJlbG93LlxuICB7bmFtZTogXCJkYXlPZldlZWtcIiwgbWluOiAwLCBtYXg6IDcsIG5hbWVzOiBEQVlfTkFNRVN9XG5dXG5cbi8qKlxuICogUnVucyB0aGUgcGFyc2VDcm9uRXhwcmVzc2lvbiBoZWxwZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbiAtIENyb24gZXhwcmVzc2lvbiBvciBzaG9ydGN1dC5cbiAqIEByZXR1cm5zIHtQYXJzZWRDcm9ufSAtIFBhcnNlZCBjcm9uIHNjaGVkdWxlIGZpZWxkcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ3JvbkV4cHJlc3Npb24oZXhwcmVzc2lvbikge1xuICBpZiAodHlwZW9mIGV4cHJlc3Npb24gIT09IFwic3RyaW5nXCIgfHwgIWV4cHJlc3Npb24udHJpbSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNyb24gZXhwcmVzc2lvbjogJHtleHByZXNzaW9ufWApXG4gIH1cblxuICBjb25zdCB0cmltbWVkID0gZXhwcmVzc2lvbi50cmltKCkudG9Mb3dlckNhc2UoKVxuICBjb25zdCBleHBhbmRlZCA9IFNIT1JUQ1VUU1svKiogQHR5cGUge2tleW9mIHR5cGVvZiBTSE9SVENVVFN9ICovICh0cmltbWVkKV0gfHwgdHJpbW1lZFxuICBjb25zdCBmaWVsZHMgPSBleHBhbmRlZC5zcGxpdCgvXFxzKy8pXG5cbiAgaWYgKGZpZWxkcy5sZW5ndGggIT09IDUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY3JvbiBleHByZXNzaW9uIFwiJHtleHByZXNzaW9ufVwiOiBleHBlY3RlZCA1IGZpZWxkcywgZ290ICR7ZmllbGRzLmxlbmd0aH1gKVxuICB9XG5cbiAgY29uc3QgW21pbnV0ZUZpZWxkLCBob3VyRmllbGQsIGRheU9mTW9udGhGaWVsZCwgbW9udGhGaWVsZCwgZGF5T2ZXZWVrRmllbGRdID0gZmllbGRzXG4gIGNvbnN0IHBhcnNlZCA9IHtcbiAgICBtaW51dGU6IHBhcnNlRmllbGQobWludXRlRmllbGQsIEZJRUxEU1swXSwgZXhwcmVzc2lvbiksXG4gICAgaG91cjogcGFyc2VGaWVsZChob3VyRmllbGQsIEZJRUxEU1sxXSwgZXhwcmVzc2lvbiksXG4gICAgZGF5T2ZNb250aDogcGFyc2VGaWVsZChkYXlPZk1vbnRoRmllbGQsIEZJRUxEU1syXSwgZXhwcmVzc2lvbiksXG4gICAgbW9udGg6IHBhcnNlRmllbGQobW9udGhGaWVsZCwgRklFTERTWzNdLCBleHByZXNzaW9uKSxcbiAgICAvLyBDcm9uIHRyZWF0cyBib3RoIDAgYW5kIDcgYXMgU3VuZGF5LiBXZSBhY2NlcHQgNyB0aHJvdWdob3V0IHRoZVxuICAgIC8vIHBhcnNlIHBhc3MgKHNvIGA1LTdgIGZvciBGcmktU3VuIHdvcmtzKSBhbmQgdGhlbiBub3JtYWxpemUgYW55XG4gICAgLy8gN3MgZG93biB0byAwIHNvIHRoZSBtYXRjaGVyIG9ubHkgZGVhbHMgd2l0aCAwLTYuXG4gICAgZGF5T2ZXZWVrOiBub3JtYWxpemVEYXlPZldlZWsocGFyc2VGaWVsZChkYXlPZldlZWtGaWVsZCwgRklFTERTWzRdLCBleHByZXNzaW9uKSksXG4gICAgZGF5T2ZNb250aFJlc3RyaWN0ZWQ6IGRheU9mTW9udGhGaWVsZCAhPT0gXCIqXCIsXG4gICAgZGF5T2ZXZWVrUmVzdHJpY3RlZDogZGF5T2ZXZWVrRmllbGQgIT09IFwiKlwiLFxuICAgIGV4cHJlc3Npb25cbiAgfVxuXG4gIHJldHVybiBwYXJzZWRcbn1cblxuLyoqXG4gKiBSdW5zIG5vcm1hbGl6ZSBkYXkgb2Ygd2Vlay5cbiAqIEBwYXJhbSB7U2V0PG51bWJlcj59IGRheU9mV2VlayAtIERheS1vZi13ZWVrIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtTZXQ8bnVtYmVyPn0gLSBOb3JtYWxpemVkIGRheS1vZi13ZWVrIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplRGF5T2ZXZWVrKGRheU9mV2Vlaykge1xuICBpZiAoZGF5T2ZXZWVrLmhhcyg3KSkge1xuICAgIGRheU9mV2Vlay5kZWxldGUoNylcbiAgICBkYXlPZldlZWsuYWRkKDApXG4gIH1cblxuICByZXR1cm4gZGF5T2ZXZWVrXG59XG5cbi8qKlxuICogUnVucyBwYXJzZSBmaWVsZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZCAtIEZpZWxkIGV4cHJlc3Npb24uXG4gKiBAcGFyYW0ge3tuYW1lOiBzdHJpbmcsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgbmFtZXM/OiBzdHJpbmdbXX19IGZpZWxkU3BlYyAtIEZpZWxkIHNwZWMuXG4gKiBAcGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbiAtIFdob2xlIGNyb24gZXhwcmVzc2lvbiBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gKiBAcmV0dXJucyB7U2V0PG51bWJlcj59IC0gUGFyc2VkIGFsbG93ZWQgZmllbGQgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBwYXJzZUZpZWxkKGZpZWxkLCBmaWVsZFNwZWMsIGV4cHJlc3Npb24pIHtcbiAgY29uc3QgcmVzdWx0ID0gbmV3IFNldCgpXG5cbiAgZm9yIChjb25zdCBwYXJ0IG9mIGZpZWxkLnNwbGl0KFwiLFwiKSkge1xuICAgIGFkZFBhcnRWYWx1ZXMocGFydCwgZmllbGRTcGVjLCBleHByZXNzaW9uLCByZXN1bHQpXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICogUnVucyBhZGQgcGFydCB2YWx1ZXMuXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFydCAtIFNpbmdsZSBjb21tYS1zZXBhcmF0ZWQgY2h1bmsuXG4gKiBAcGFyYW0ge3tuYW1lOiBzdHJpbmcsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgbmFtZXM/OiBzdHJpbmdbXX19IGZpZWxkU3BlYyAtIEZpZWxkIHNwZWMuXG4gKiBAcGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbiAtIE9yaWdpbmFsIGV4cHJlc3Npb24gZm9yIGVycm9ycy5cbiAqIEBwYXJhbSB7U2V0PG51bWJlcj59IHJlc3VsdCAtIEFjY3VtdWxhdG9yLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGFkZFBhcnRWYWx1ZXMocGFydCwgZmllbGRTcGVjLCBleHByZXNzaW9uLCByZXN1bHQpIHtcbiAgaWYgKCFwYXJ0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7ZmllbGRTcGVjLm5hbWV9IGZpZWxkIGluIGNyb24gZXhwcmVzc2lvbiBcIiR7ZXhwcmVzc2lvbn1cImApXG4gIH1cblxuICBjb25zdCBbcmFuZ2VQYXJ0LCBzdGVwUGFydF0gPSBwYXJ0LnNwbGl0KFwiL1wiKVxuICBjb25zdCBzdGVwID0gc3RlcFBhcnQgPT09IHVuZGVmaW5lZCA/IDEgOiBwYXJzZVN0ZXAoc3RlcFBhcnQsIGZpZWxkU3BlYywgZXhwcmVzc2lvbilcbiAgY29uc3QgW3N0YXJ0LCBlbmRdID0gcGFyc2VSYW5nZShyYW5nZVBhcnQsIGZpZWxkU3BlYywgZXhwcmVzc2lvbiwgc3RlcFBhcnQgIT09IHVuZGVmaW5lZClcblxuICBmb3IgKGxldCB2YWx1ZSA9IHN0YXJ0OyB2YWx1ZSA8PSBlbmQ7IHZhbHVlICs9IHN0ZXApIHtcbiAgICBpZiAodmFsdWUgPCBmaWVsZFNwZWMubWluIHx8IHZhbHVlID4gZmllbGRTcGVjLm1heCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBWYWx1ZSAke3ZhbHVlfSBvdXQgb2YgcmFuZ2UgZm9yICR7ZmllbGRTcGVjLm5hbWV9IGluIGNyb24gZXhwcmVzc2lvbiBcIiR7ZXhwcmVzc2lvbn1cImApXG4gICAgfVxuXG4gICAgcmVzdWx0LmFkZCh2YWx1ZSlcbiAgfVxufVxuXG4vKipcbiAqIFJ1bnMgcGFyc2Ugc3RlcC5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFN0ZXAgdmFsdWUuXG4gKiBAcGFyYW0ge3tuYW1lOiBzdHJpbmcsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcn19IGZpZWxkU3BlYyAtIEZpZWxkIHNwZWMuXG4gKiBAcGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbiAtIE9yaWdpbmFsIGV4cHJlc3Npb24gZm9yIGVycm9ycy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IC0gUGFyc2VkIHBvc2l0aXZlIHN0ZXAgc2l6ZS5cbiAqL1xuZnVuY3Rpb24gcGFyc2VTdGVwKHZhbHVlLCBmaWVsZFNwZWMsIGV4cHJlc3Npb24pIHtcbiAgY29uc3Qgc3RlcCA9IE51bWJlcih2YWx1ZSlcblxuICBpZiAoIU51bWJlci5pc0ludGVnZXIoc3RlcCkgfHwgc3RlcCA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHN0ZXAgXCIke3ZhbHVlfVwiIGZvciAke2ZpZWxkU3BlYy5uYW1lfSBpbiBjcm9uIGV4cHJlc3Npb24gXCIke2V4cHJlc3Npb259XCJgKVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBcbn1cblxuLyoqXG4gKiBSdW5zIHBhcnNlIHJhbmdlLlxuICogQHBhcmFtIHtzdHJpbmd9IHJhbmdlUGFydCAtIFJhbmdlIHBvcnRpb24gKGJlZm9yZSA/IGAvYCkuXG4gKiBAcGFyYW0ge3tuYW1lOiBzdHJpbmcsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgbmFtZXM/OiBzdHJpbmdbXX19IGZpZWxkU3BlYyAtIEZpZWxkIHNwZWMuXG4gKiBAcGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbiAtIE9yaWdpbmFsIGV4cHJlc3Npb24gZm9yIGVycm9ycy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaGFzU3RlcCAtIFdoZXRoZXIgdGhlIHBhcnQgaGFkIGEgYC9zdGVwYCBzdWZmaXguXG4gKiBAcmV0dXJucyB7W251bWJlciwgbnVtYmVyXX0gLSBJbmNsdXNpdmUgZmllbGQgcmFuZ2UuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlUmFuZ2UocmFuZ2VQYXJ0LCBmaWVsZFNwZWMsIGV4cHJlc3Npb24sIGhhc1N0ZXApIHtcbiAgaWYgKHJhbmdlUGFydCA9PT0gXCIqXCIpIHtcbiAgICByZXR1cm4gW2ZpZWxkU3BlYy5taW4sIGZpZWxkU3BlYy5tYXhdXG4gIH1cblxuICBjb25zdCBkYXNoSW5kZXggPSByYW5nZVBhcnQuaW5kZXhPZihcIi1cIilcblxuICBpZiAoZGFzaEluZGV4ID09PSAtMSkge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VWYWx1ZShyYW5nZVBhcnQsIGZpZWxkU3BlYywgZXhwcmVzc2lvbilcblxuICAgIC8vIGBOL3N0ZXBgIGlzIHNob3J0aGFuZCBmb3IgYE4tbWF4L3N0ZXBgIChWaXhpZSBjcm9uKS5cbiAgICByZXR1cm4gW3ZhbHVlLCBoYXNTdGVwID8gZmllbGRTcGVjLm1heCA6IHZhbHVlXVxuICB9XG5cbiAgY29uc3Qgc3RhcnQgPSBwYXJzZVZhbHVlKHJhbmdlUGFydC5zbGljZSgwLCBkYXNoSW5kZXgpLCBmaWVsZFNwZWMsIGV4cHJlc3Npb24pXG4gIGNvbnN0IGVuZCA9IHBhcnNlVmFsdWUocmFuZ2VQYXJ0LnNsaWNlKGRhc2hJbmRleCArIDEpLCBmaWVsZFNwZWMsIGV4cHJlc3Npb24pXG5cbiAgaWYgKHN0YXJ0ID4gZW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBSYW5nZSBzdGFydCAke3N0YXJ0fSA+IGVuZCAke2VuZH0gZm9yICR7ZmllbGRTcGVjLm5hbWV9IGluIGNyb24gZXhwcmVzc2lvbiBcIiR7ZXhwcmVzc2lvbn1cImApXG4gIH1cblxuICByZXR1cm4gW3N0YXJ0LCBlbmRdXG59XG5cbi8qKlxuICogUnVucyBwYXJzZSB2YWx1ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSByYXdWYWx1ZSAtIFJhdyB2YWx1ZSAobWF5IGJlIGEgbmFtZSkuXG4gKiBAcGFyYW0ge3tuYW1lOiBzdHJpbmcsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgbmFtZXM/OiBzdHJpbmdbXX19IGZpZWxkU3BlYyAtIEZpZWxkIHNwZWMuXG4gKiBAcGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbiAtIE9yaWdpbmFsIGV4cHJlc3Npb24gZm9yIGVycm9ycy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IC0gUGFyc2VkIG51bWVyaWMgZmllbGQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlVmFsdWUocmF3VmFsdWUsIGZpZWxkU3BlYywgZXhwcmVzc2lvbikge1xuICBpZiAoIXJhd1ZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7ZmllbGRTcGVjLm5hbWV9IHZhbHVlIGluIGNyb24gZXhwcmVzc2lvbiBcIiR7ZXhwcmVzc2lvbn1cImApXG4gIH1cblxuICBjb25zdCBuYW1lZEluZGV4ID0gZmllbGRTcGVjLm5hbWVzPy5pbmRleE9mKHJhd1ZhbHVlKVxuXG4gIGlmICh0eXBlb2YgbmFtZWRJbmRleCA9PT0gXCJudW1iZXJcIiAmJiBuYW1lZEluZGV4ICE9PSAtMSkge1xuICAgIHJldHVybiBuYW1lZEluZGV4ICsgZmllbGRTcGVjLm1pblxuICB9XG5cbiAgY29uc3QgdmFsdWUgPSBOdW1iZXIocmF3VmFsdWUpXG5cbiAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCAke2ZpZWxkU3BlYy5uYW1lfSB2YWx1ZSBcIiR7cmF3VmFsdWV9XCIgaW4gY3JvbiBleHByZXNzaW9uIFwiJHtleHByZXNzaW9ufVwiYClcbiAgfVxuXG4gIHJldHVybiB2YWx1ZVxufVxuXG4vLyA1IHllYXJzIG9mIG1pbnV0ZXMg4oCUIGNvdmVycyB0aGUgd29yc3QtY2FzZSBsZWdpdGltYXRlIGdhcCwgdGhlXG4vLyBgMCAwIDI5IDIgKmAgKEZlYiAyOSkgbGVhcC15ZWFyLW9ubHkgc2NoZWR1bGUsIHdpdGggYSBvbmUteWVhclxuLy8gYnVmZmVyIHNvIHdlIG5ldmVyIHJlcG9ydCBhIHJlYWwgY3JvbiBwYXR0ZXJuIGFzIFwibmV2ZXIgbWF0Y2hlc1wiLlxuY29uc3QgTUFYX05FWFRfRklSRV9JVEVSQVRJT05TID0gNSAqIDM2NiAqIDI0ICogNjBcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBuZXh0IERhdGUgc3RyaWN0bHkgYWZ0ZXIgYGZyb21gIHRoYXQgc2F0aXNmaWVzIGBwYXJzZWRgLlxuICogT3BlcmF0ZXMgYXQgbWludXRlIGdyYW51bGFyaXR5LiBCYWlscyBvdXQgd2l0aCBhbiBlcnJvciBhZnRlciBmaXZlXG4gKiB5ZWFycyBvZiBzZWFyY2gsIHdoaWNoIG9ubHkgaGFwcGVucyBpZiB0aGUgZXhwcmVzc2lvbiBtYXRjaGVzIG5vXG4gKiByZWFsIHRpbWUgKGUuZy4sIGAwIDAgMzEgMiAqYCDigJQgRmViIDMxc3QpLlxuICogQHBhcmFtIHtQYXJzZWRDcm9ufSBwYXJzZWQgLSBQYXJzZWQgY3JvbiBleHByZXNzaW9uLlxuICogQHBhcmFtIHtEYXRlfSBmcm9tIC0gUmVmZXJlbmNlIERhdGUg4oCUIHRoZSBuZXh0IG1hdGNoIGlzIHN0cmljdGx5IGFmdGVyIHRoaXMuXG4gKiBAcmV0dXJucyB7RGF0ZX0gLSBOZXh0IGRhdGUgbWF0Y2hpbmcgdGhlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZXh0Q3JvbkZpcmVEYXRlKHBhcnNlZCwgZnJvbSkge1xuICBjb25zdCBjYW5kaWRhdGUgPSBuZXcgRGF0ZShmcm9tLmdldFRpbWUoKSlcblxuICBjYW5kaWRhdGUuc2V0U2Vjb25kcygwLCAwKVxuICBjYW5kaWRhdGUuc2V0TWludXRlcyhjYW5kaWRhdGUuZ2V0TWludXRlcygpICsgMSlcblxuICBmb3IgKGxldCBpdGVyYXRpb25zID0gMDsgaXRlcmF0aW9ucyA8IE1BWF9ORVhUX0ZJUkVfSVRFUkFUSU9OUzsgaXRlcmF0aW9ucyArPSAxKSB7XG4gICAgaWYgKGNhbmRpZGF0ZU1hdGNoZXMoY2FuZGlkYXRlLCBwYXJzZWQpKSByZXR1cm4gY2FuZGlkYXRlXG5cbiAgICBjYW5kaWRhdGUuc2V0TWludXRlcyhjYW5kaWRhdGUuZ2V0TWludXRlcygpICsgMSlcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgQ3JvbiBleHByZXNzaW9uIFwiJHtwYXJzZWQuZXhwcmVzc2lvbn1cIiBuZXZlciBtYXRjaGVzYClcbn1cblxuLyoqXG4gKiBSdW5zIGNhbmRpZGF0ZSBtYXRjaGVzLlxuICogQHBhcmFtIHtEYXRlfSBjYW5kaWRhdGUgLSBDYW5kaWRhdGUgRGF0ZSAoaW4gbG9jYWwgdGltZSkuXG4gKiBAcGFyYW0ge1BhcnNlZENyb259IHBhcnNlZCAtIFBhcnNlZCBleHByZXNzaW9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0aGUgY2FuZGlkYXRlIG1hdGNoZXMgdGhlIHBhcnNlZCBzY2hlZHVsZS5cbiAqL1xuZnVuY3Rpb24gY2FuZGlkYXRlTWF0Y2hlcyhjYW5kaWRhdGUsIHBhcnNlZCkge1xuICBpZiAoIXBhcnNlZC5taW51dGUuaGFzKGNhbmRpZGF0ZS5nZXRNaW51dGVzKCkpKSByZXR1cm4gZmFsc2VcbiAgaWYgKCFwYXJzZWQuaG91ci5oYXMoY2FuZGlkYXRlLmdldEhvdXJzKCkpKSByZXR1cm4gZmFsc2VcbiAgaWYgKCFwYXJzZWQubW9udGguaGFzKGNhbmRpZGF0ZS5nZXRNb250aCgpICsgMSkpIHJldHVybiBmYWxzZVxuXG4gIGNvbnN0IGRheU9mTW9udGhNYXRjaCA9IHBhcnNlZC5kYXlPZk1vbnRoLmhhcyhjYW5kaWRhdGUuZ2V0RGF0ZSgpKVxuICBjb25zdCBkYXlPZldlZWtNYXRjaCA9IHBhcnNlZC5kYXlPZldlZWsuaGFzKGNhbmRpZGF0ZS5nZXREYXkoKSlcblxuICAvLyBQT1NJWC9WaXhpZSBjcm9uIE9SIHNlbWFudGljczogd2hlbiBib3RoIGRheSBmaWVsZHMgYXJlXG4gIC8vIHJlc3RyaWN0ZWQsIGZpcmUgd2hlbiBFSVRIRVIgbWF0Y2hlcy4gV2hlbiBvbmx5IG9uZSBpc1xuICAvLyByZXN0cmljdGVkLCBvbmx5IHRoYXQgb25lIGFwcGxpZXMuXG4gIGlmIChwYXJzZWQuZGF5T2ZNb250aFJlc3RyaWN0ZWQgJiYgcGFyc2VkLmRheU9mV2Vla1Jlc3RyaWN0ZWQpIHtcbiAgICByZXR1cm4gZGF5T2ZNb250aE1hdGNoIHx8IGRheU9mV2Vla01hdGNoXG4gIH1cblxuICBpZiAocGFyc2VkLmRheU9mTW9udGhSZXN0cmljdGVkKSByZXR1cm4gZGF5T2ZNb250aE1hdGNoXG4gIGlmIChwYXJzZWQuZGF5T2ZXZWVrUmVzdHJpY3RlZCkgcmV0dXJuIGRheU9mV2Vla01hdGNoXG5cbiAgcmV0dXJuIHRydWVcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/main.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/main.js"],"names":[],"mappings":"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"}