velocious 1.0.574 → 1.0.576
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.
- package/README.md +17 -3
- package/build/background-jobs/client.js +71 -3
- package/build/background-jobs/job.js +30 -0
- package/build/background-jobs/main.js +100 -14
- package/build/background-jobs/store.js +344 -41
- package/build/background-jobs/types.js +25 -1
- package/build/background-jobs/web/controller.js +1 -0
- package/build/database/advisory-lock-runner.js +27 -17
- package/build/database/drivers/mssql/index.js +98 -3
- package/build/database/record/index.js +10 -8
- package/build/database/table-data/table-column.js +2 -0
- package/build/frontend-models/resource-definition.js +1 -138
- package/build/src/background-jobs/client.d.ts +30 -0
- package/build/src/background-jobs/client.d.ts.map +1 -1
- package/build/src/background-jobs/client.js +64 -4
- package/build/src/background-jobs/job.d.ts +19 -0
- package/build/src/background-jobs/job.d.ts.map +1 -1
- package/build/src/background-jobs/job.js +27 -1
- package/build/src/background-jobs/main.d.ts +41 -0
- package/build/src/background-jobs/main.d.ts.map +1 -1
- package/build/src/background-jobs/main.js +95 -14
- package/build/src/background-jobs/store.d.ts +136 -0
- package/build/src/background-jobs/store.d.ts.map +1 -1
- package/build/src/background-jobs/store.js +314 -42
- package/build/src/background-jobs/types.d.ts +86 -2
- package/build/src/background-jobs/types.d.ts.map +1 -1
- package/build/src/background-jobs/types.js +26 -2
- package/build/src/background-jobs/web/controller.d.ts.map +1 -1
- package/build/src/background-jobs/web/controller.js +2 -1
- package/build/src/database/advisory-lock-runner.d.ts +27 -14
- package/build/src/database/advisory-lock-runner.d.ts.map +1 -1
- package/build/src/database/advisory-lock-runner.js +27 -18
- package/build/src/database/drivers/mssql/index.d.ts +32 -0
- package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/index.js +86 -4
- package/build/src/database/record/index.d.ts +12 -8
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +11 -9
- package/build/src/database/table-data/table-column.d.ts.map +1 -1
- package/build/src/database/table-data/table-column.js +4 -1
- package/build/src/frontend-models/resource-definition.d.ts.map +1 -1
- package/build/src/frontend-models/resource-definition.js +2 -124
- package/build/src/sync/local-mutation-log.d.ts +7 -1
- package/build/src/sync/local-mutation-log.d.ts.map +1 -1
- package/build/src/sync/local-mutation-log.js +18 -7
- package/build/src/sync/peer-mutation-bundle.d.ts.map +1 -1
- package/build/src/sync/peer-mutation-bundle.js +9 -7
- package/build/src/sync/signed-sync-envelope-replay-service.d.ts.map +1 -1
- package/build/src/sync/signed-sync-envelope-replay-service.js +3 -1
- package/build/src/sync/sync-envelope-replay-service.d.ts +69 -0
- package/build/src/sync/sync-envelope-replay-service.d.ts.map +1 -1
- package/build/src/sync/sync-envelope-replay-service.js +186 -18
- package/build/src/testing/test-runner.d.ts.map +1 -1
- package/build/src/testing/test-runner.js +17 -22
- package/build/src/utils/sha256-hex.d.ts +10 -0
- package/build/src/utils/sha256-hex.d.ts.map +1 -0
- package/build/src/utils/sha256-hex.js +126 -0
- package/build/sync/local-mutation-log.js +19 -5
- package/build/sync/peer-mutation-bundle.js +8 -6
- package/build/sync/signed-sync-envelope-replay-service.js +2 -0
- package/build/sync/sync-envelope-replay-service.js +205 -17
- package/build/testing/test-runner.js +17 -22
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/utils/sha256-hex.js +141 -0
- package/package.json +1 -1
- package/src/background-jobs/client.js +71 -3
- package/src/background-jobs/job.js +30 -0
- package/src/background-jobs/main.js +100 -14
- package/src/background-jobs/store.js +344 -41
- package/src/background-jobs/types.js +25 -1
- package/src/background-jobs/web/controller.js +1 -0
- package/src/database/advisory-lock-runner.js +27 -17
- package/src/database/drivers/mssql/index.js +98 -3
- package/src/database/record/index.js +10 -8
- package/src/database/table-data/table-column.js +2 -0
- package/src/frontend-models/resource-definition.js +1 -138
- package/src/sync/local-mutation-log.js +19 -5
- package/src/sync/peer-mutation-bundle.js +8 -6
- package/src/sync/signed-sync-envelope-replay-service.js +2 -0
- package/src/sync/sync-envelope-replay-service.js +205 -17
- package/src/testing/test-runner.js +17 -22
- package/src/utils/sha256-hex.js +141 -0
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
* @property {Array<?>} args - Serialized job arguments.
|
|
34
34
|
* @property {BackgroundJobExecutionMode} executionMode - How the job should run.
|
|
35
35
|
* @property {string} queue - Queue name (defaults to `"default"`).
|
|
36
|
+
* @property {string | null} scheduleKey - Stable logical schedule key retained for history.
|
|
36
37
|
* @property {string} status - Current job status.
|
|
37
38
|
* @property {number | null} attempts - Failure attempts count.
|
|
38
39
|
* @property {number | null} maxRetries - Max retry attempts.
|
|
@@ -48,6 +49,23 @@
|
|
|
48
49
|
* @property {string | null} concurrencyKey - Durable concurrency key.
|
|
49
50
|
* @property {number | null} maxConcurrency - Durable per-key cap.
|
|
50
51
|
*/
|
|
52
|
+
/**
|
|
53
|
+
* @typedef {"queued" | "handed_off" | null} BackgroundJobReplacementPreviousStatus
|
|
54
|
+
*/
|
|
55
|
+
/**
|
|
56
|
+
* @typedef {object} BackgroundJobReplacementResult
|
|
57
|
+
* @property {string} jobId - Newly queued job id.
|
|
58
|
+
* @property {string | null} previousJobId - Previous active owner's job id.
|
|
59
|
+
* @property {BackgroundJobReplacementPreviousStatus} previousStatus - Previous owner's observed state.
|
|
60
|
+
*/
|
|
61
|
+
/**
|
|
62
|
+
* @typedef {"cancelled" | "handed_off" | "not_found"} BackgroundJobCancellationOutcome
|
|
63
|
+
*/
|
|
64
|
+
/**
|
|
65
|
+
* @typedef {object} BackgroundJobCancellationResult
|
|
66
|
+
* @property {string | null} jobId - Detached owner's job id, when one was active.
|
|
67
|
+
* @property {BackgroundJobCancellationOutcome} outcome - Truthful best-effort outcome.
|
|
68
|
+
*/
|
|
51
69
|
/**
|
|
52
70
|
* @typedef {object} BackgroundJobFailureEvent
|
|
53
71
|
* @property {BackgroundJobRow} job - Updated job row after failure handling.
|
|
@@ -70,6 +88,12 @@
|
|
|
70
88
|
* @typedef {{type: "enqueue", jobName: string, args?: Array<?>, options?: BackgroundJobOptions}} BackgroundJobEnqueueMessage
|
|
71
89
|
* @typedef {{type: "enqueued", jobId: string}} BackgroundJobEnqueuedMessage
|
|
72
90
|
* @typedef {{type: "enqueue-error", error?: string}} BackgroundJobEnqueueErrorMessage
|
|
91
|
+
* @typedef {{type: "replace-scheduled", scheduleKey: string, jobName: string, args?: Array<?>, options?: BackgroundJobOptions}} BackgroundJobReplaceScheduledMessage
|
|
92
|
+
* @typedef {{type: "schedule-replaced", jobId: string, previousJobId: string | null, previousStatus: BackgroundJobReplacementPreviousStatus}} BackgroundJobScheduleReplacedMessage
|
|
93
|
+
* @typedef {{type: "replace-scheduled-error", error?: string}} BackgroundJobReplaceScheduledErrorMessage
|
|
94
|
+
* @typedef {{type: "cancel-scheduled", scheduleKey: string}} BackgroundJobCancelScheduledMessage
|
|
95
|
+
* @typedef {{type: "schedule-cancelled", jobId: string | null, outcome: BackgroundJobCancellationOutcome}} BackgroundJobScheduleCancelledMessage
|
|
96
|
+
* @typedef {{type: "cancel-scheduled-error", error?: string}} BackgroundJobCancelScheduledErrorMessage
|
|
73
97
|
* @typedef {{type: "job", payload: BackgroundJobPayload}} BackgroundJobJobMessage
|
|
74
98
|
* @typedef {{type: "job-complete", jobId: string, handoffId?: string, workerId?: string, handedOffAtMs?: number}} BackgroundJobCompleteMessage
|
|
75
99
|
* @typedef {{type: "job-failed", jobId: string, error?: ?, handoffId?: string, workerId?: string, handedOffAtMs?: number}} BackgroundJobFailedMessage
|
|
@@ -77,7 +101,7 @@
|
|
|
77
101
|
* @typedef {{type: "job-update-error", jobId: string, error?: string}} BackgroundJobUpdateErrorMessage
|
|
78
102
|
*/
|
|
79
103
|
/**
|
|
80
|
-
* @typedef {BackgroundJobHelloMessage | BackgroundJobReadyMessage | BackgroundJobDrainingMessage | BackgroundJobHeartbeatMessage | BackgroundJobEnqueueMessage | BackgroundJobEnqueuedMessage | BackgroundJobEnqueueErrorMessage | BackgroundJobJobMessage | BackgroundJobCompleteMessage | BackgroundJobFailedMessage | BackgroundJobUpdatedMessage | BackgroundJobUpdateErrorMessage} BackgroundJobSocketMessage
|
|
104
|
+
* @typedef {BackgroundJobHelloMessage | BackgroundJobReadyMessage | BackgroundJobDrainingMessage | BackgroundJobHeartbeatMessage | BackgroundJobEnqueueMessage | BackgroundJobEnqueuedMessage | BackgroundJobEnqueueErrorMessage | BackgroundJobReplaceScheduledMessage | BackgroundJobScheduleReplacedMessage | BackgroundJobReplaceScheduledErrorMessage | BackgroundJobCancelScheduledMessage | BackgroundJobScheduleCancelledMessage | BackgroundJobCancelScheduledErrorMessage | BackgroundJobJobMessage | BackgroundJobCompleteMessage | BackgroundJobFailedMessage | BackgroundJobUpdatedMessage | BackgroundJobUpdateErrorMessage} BackgroundJobSocketMessage
|
|
81
105
|
*/
|
|
82
106
|
export const nothing: {};
|
|
83
107
|
export type BackgroundJobExecutionMode = "inline" | "forked" | "pooled" | "spawned";
|
|
@@ -172,6 +196,10 @@ export type BackgroundJobRow = {
|
|
|
172
196
|
* - Queue name (defaults to `"default"`).
|
|
173
197
|
*/
|
|
174
198
|
queue: string;
|
|
199
|
+
/**
|
|
200
|
+
* - Stable logical schedule key retained for history.
|
|
201
|
+
*/
|
|
202
|
+
scheduleKey: string | null;
|
|
175
203
|
/**
|
|
176
204
|
* - Current job status.
|
|
177
205
|
*/
|
|
@@ -229,6 +257,32 @@ export type BackgroundJobRow = {
|
|
|
229
257
|
*/
|
|
230
258
|
maxConcurrency: number | null;
|
|
231
259
|
};
|
|
260
|
+
export type BackgroundJobReplacementPreviousStatus = "queued" | "handed_off" | null;
|
|
261
|
+
export type BackgroundJobReplacementResult = {
|
|
262
|
+
/**
|
|
263
|
+
* - Newly queued job id.
|
|
264
|
+
*/
|
|
265
|
+
jobId: string;
|
|
266
|
+
/**
|
|
267
|
+
* - Previous active owner's job id.
|
|
268
|
+
*/
|
|
269
|
+
previousJobId: string | null;
|
|
270
|
+
/**
|
|
271
|
+
* - Previous owner's observed state.
|
|
272
|
+
*/
|
|
273
|
+
previousStatus: BackgroundJobReplacementPreviousStatus;
|
|
274
|
+
};
|
|
275
|
+
export type BackgroundJobCancellationOutcome = "cancelled" | "handed_off" | "not_found";
|
|
276
|
+
export type BackgroundJobCancellationResult = {
|
|
277
|
+
/**
|
|
278
|
+
* - Detached owner's job id, when one was active.
|
|
279
|
+
*/
|
|
280
|
+
jobId: string | null;
|
|
281
|
+
/**
|
|
282
|
+
* - Truthful best-effort outcome.
|
|
283
|
+
*/
|
|
284
|
+
outcome: BackgroundJobCancellationOutcome;
|
|
285
|
+
};
|
|
232
286
|
export type BackgroundJobFailureEvent = {
|
|
233
287
|
/**
|
|
234
288
|
* - Updated job row after failure handling.
|
|
@@ -300,6 +354,36 @@ export type BackgroundJobEnqueueErrorMessage = {
|
|
|
300
354
|
type: "enqueue-error";
|
|
301
355
|
error?: string;
|
|
302
356
|
};
|
|
357
|
+
export type BackgroundJobReplaceScheduledMessage = {
|
|
358
|
+
type: "replace-scheduled";
|
|
359
|
+
scheduleKey: string;
|
|
360
|
+
jobName: string;
|
|
361
|
+
args?: Array<unknown>;
|
|
362
|
+
options?: BackgroundJobOptions;
|
|
363
|
+
};
|
|
364
|
+
export type BackgroundJobScheduleReplacedMessage = {
|
|
365
|
+
type: "schedule-replaced";
|
|
366
|
+
jobId: string;
|
|
367
|
+
previousJobId: string | null;
|
|
368
|
+
previousStatus: BackgroundJobReplacementPreviousStatus;
|
|
369
|
+
};
|
|
370
|
+
export type BackgroundJobReplaceScheduledErrorMessage = {
|
|
371
|
+
type: "replace-scheduled-error";
|
|
372
|
+
error?: string;
|
|
373
|
+
};
|
|
374
|
+
export type BackgroundJobCancelScheduledMessage = {
|
|
375
|
+
type: "cancel-scheduled";
|
|
376
|
+
scheduleKey: string;
|
|
377
|
+
};
|
|
378
|
+
export type BackgroundJobScheduleCancelledMessage = {
|
|
379
|
+
type: "schedule-cancelled";
|
|
380
|
+
jobId: string | null;
|
|
381
|
+
outcome: BackgroundJobCancellationOutcome;
|
|
382
|
+
};
|
|
383
|
+
export type BackgroundJobCancelScheduledErrorMessage = {
|
|
384
|
+
type: "cancel-scheduled-error";
|
|
385
|
+
error?: string;
|
|
386
|
+
};
|
|
303
387
|
export type BackgroundJobJobMessage = {
|
|
304
388
|
type: "job";
|
|
305
389
|
payload: BackgroundJobPayload;
|
|
@@ -328,5 +412,5 @@ export type BackgroundJobUpdateErrorMessage = {
|
|
|
328
412
|
jobId: string;
|
|
329
413
|
error?: string;
|
|
330
414
|
};
|
|
331
|
-
export type BackgroundJobSocketMessage = BackgroundJobHelloMessage | BackgroundJobReadyMessage | BackgroundJobDrainingMessage | BackgroundJobHeartbeatMessage | BackgroundJobEnqueueMessage | BackgroundJobEnqueuedMessage | BackgroundJobEnqueueErrorMessage | BackgroundJobJobMessage | BackgroundJobCompleteMessage | BackgroundJobFailedMessage | BackgroundJobUpdatedMessage | BackgroundJobUpdateErrorMessage;
|
|
415
|
+
export type BackgroundJobSocketMessage = BackgroundJobHelloMessage | BackgroundJobReadyMessage | BackgroundJobDrainingMessage | BackgroundJobHeartbeatMessage | BackgroundJobEnqueueMessage | BackgroundJobEnqueuedMessage | BackgroundJobEnqueueErrorMessage | BackgroundJobReplaceScheduledMessage | BackgroundJobScheduleReplacedMessage | BackgroundJobReplaceScheduledErrorMessage | BackgroundJobCancelScheduledMessage | BackgroundJobScheduleCancelledMessage | BackgroundJobCancelScheduledErrorMessage | BackgroundJobJobMessage | BackgroundJobCompleteMessage | BackgroundJobFailedMessage | BackgroundJobUpdatedMessage | BackgroundJobUpdateErrorMessage;
|
|
332
416
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/types.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;;;;GAIG;AACH;;;;;;;;;GASG;AACH;;;;;;;;;GASG;AACH
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/types.js"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
* @property {Array<?>} args - Serialized job arguments.
|
|
35
35
|
* @property {BackgroundJobExecutionMode} executionMode - How the job should run.
|
|
36
36
|
* @property {string} queue - Queue name (defaults to `"default"`).
|
|
37
|
+
* @property {string | null} scheduleKey - Stable logical schedule key retained for history.
|
|
37
38
|
* @property {string} status - Current job status.
|
|
38
39
|
* @property {number | null} attempts - Failure attempts count.
|
|
39
40
|
* @property {number | null} maxRetries - Max retry attempts.
|
|
@@ -49,6 +50,23 @@
|
|
|
49
50
|
* @property {string | null} concurrencyKey - Durable concurrency key.
|
|
50
51
|
* @property {number | null} maxConcurrency - Durable per-key cap.
|
|
51
52
|
*/
|
|
53
|
+
/**
|
|
54
|
+
* @typedef {"queued" | "handed_off" | null} BackgroundJobReplacementPreviousStatus
|
|
55
|
+
*/
|
|
56
|
+
/**
|
|
57
|
+
* @typedef {object} BackgroundJobReplacementResult
|
|
58
|
+
* @property {string} jobId - Newly queued job id.
|
|
59
|
+
* @property {string | null} previousJobId - Previous active owner's job id.
|
|
60
|
+
* @property {BackgroundJobReplacementPreviousStatus} previousStatus - Previous owner's observed state.
|
|
61
|
+
*/
|
|
62
|
+
/**
|
|
63
|
+
* @typedef {"cancelled" | "handed_off" | "not_found"} BackgroundJobCancellationOutcome
|
|
64
|
+
*/
|
|
65
|
+
/**
|
|
66
|
+
* @typedef {object} BackgroundJobCancellationResult
|
|
67
|
+
* @property {string | null} jobId - Detached owner's job id, when one was active.
|
|
68
|
+
* @property {BackgroundJobCancellationOutcome} outcome - Truthful best-effort outcome.
|
|
69
|
+
*/
|
|
52
70
|
/**
|
|
53
71
|
* @typedef {object} BackgroundJobFailureEvent
|
|
54
72
|
* @property {BackgroundJobRow} job - Updated job row after failure handling.
|
|
@@ -71,6 +89,12 @@
|
|
|
71
89
|
* @typedef {{type: "enqueue", jobName: string, args?: Array<?>, options?: BackgroundJobOptions}} BackgroundJobEnqueueMessage
|
|
72
90
|
* @typedef {{type: "enqueued", jobId: string}} BackgroundJobEnqueuedMessage
|
|
73
91
|
* @typedef {{type: "enqueue-error", error?: string}} BackgroundJobEnqueueErrorMessage
|
|
92
|
+
* @typedef {{type: "replace-scheduled", scheduleKey: string, jobName: string, args?: Array<?>, options?: BackgroundJobOptions}} BackgroundJobReplaceScheduledMessage
|
|
93
|
+
* @typedef {{type: "schedule-replaced", jobId: string, previousJobId: string | null, previousStatus: BackgroundJobReplacementPreviousStatus}} BackgroundJobScheduleReplacedMessage
|
|
94
|
+
* @typedef {{type: "replace-scheduled-error", error?: string}} BackgroundJobReplaceScheduledErrorMessage
|
|
95
|
+
* @typedef {{type: "cancel-scheduled", scheduleKey: string}} BackgroundJobCancelScheduledMessage
|
|
96
|
+
* @typedef {{type: "schedule-cancelled", jobId: string | null, outcome: BackgroundJobCancellationOutcome}} BackgroundJobScheduleCancelledMessage
|
|
97
|
+
* @typedef {{type: "cancel-scheduled-error", error?: string}} BackgroundJobCancelScheduledErrorMessage
|
|
74
98
|
* @typedef {{type: "job", payload: BackgroundJobPayload}} BackgroundJobJobMessage
|
|
75
99
|
* @typedef {{type: "job-complete", jobId: string, handoffId?: string, workerId?: string, handedOffAtMs?: number}} BackgroundJobCompleteMessage
|
|
76
100
|
* @typedef {{type: "job-failed", jobId: string, error?: ?, handoffId?: string, workerId?: string, handedOffAtMs?: number}} BackgroundJobFailedMessage
|
|
@@ -78,7 +102,7 @@
|
|
|
78
102
|
* @typedef {{type: "job-update-error", jobId: string, error?: string}} BackgroundJobUpdateErrorMessage
|
|
79
103
|
*/
|
|
80
104
|
/**
|
|
81
|
-
* @typedef {BackgroundJobHelloMessage | BackgroundJobReadyMessage | BackgroundJobDrainingMessage | BackgroundJobHeartbeatMessage | BackgroundJobEnqueueMessage | BackgroundJobEnqueuedMessage | BackgroundJobEnqueueErrorMessage | BackgroundJobJobMessage | BackgroundJobCompleteMessage | BackgroundJobFailedMessage | BackgroundJobUpdatedMessage | BackgroundJobUpdateErrorMessage} BackgroundJobSocketMessage
|
|
105
|
+
* @typedef {BackgroundJobHelloMessage | BackgroundJobReadyMessage | BackgroundJobDrainingMessage | BackgroundJobHeartbeatMessage | BackgroundJobEnqueueMessage | BackgroundJobEnqueuedMessage | BackgroundJobEnqueueErrorMessage | BackgroundJobReplaceScheduledMessage | BackgroundJobScheduleReplacedMessage | BackgroundJobReplaceScheduledErrorMessage | BackgroundJobCancelScheduledMessage | BackgroundJobScheduleCancelledMessage | BackgroundJobCancelScheduledErrorMessage | BackgroundJobJobMessage | BackgroundJobCompleteMessage | BackgroundJobFailedMessage | BackgroundJobUpdatedMessage | BackgroundJobUpdateErrorMessage} BackgroundJobSocketMessage
|
|
82
106
|
*/
|
|
83
107
|
export const nothing = {};
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2dyb3VuZC1qb2JzL3R5cGVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7R0FFRztBQUNIOzs7O0dBSUc7QUFDSDs7Ozs7Ozs7O0dBU0c7QUFDSDs7Ozs7Ozs7O0dBU0c7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0g7Ozs7Ozs7Ozs7R0FVRztBQUNIOztHQUVHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNIOztHQUVHO0FBRUgsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKipcbiAqIEB0eXBlZGVmIHtcImlubGluZVwiIHwgXCJmb3JrZWRcIiB8IFwicG9vbGVkXCIgfCBcInNwYXduZWRcIn0gQmFja2dyb3VuZEpvYkV4ZWN1dGlvbk1vZGVcbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iSGFuZG9mZlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGhhbmRvZmZJZCAtIFVuaXF1ZSBoYW5kb2ZmIGxlYXNlIGlkLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGhhbmRlZE9mZkF0TXMgLSBUaW1lIGhhbmRlZCB0byBhIHdvcmtlciBpbiBtcy5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iT3B0aW9uc1xuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iRXhlY3V0aW9uTW9kZX0gW2V4ZWN1dGlvbk1vZGVdIC0gSG93IHRoZSBqb2Igc2hvdWxkIHJ1bi4gRGVmYXVsdHMgdG8gYFwicG9vbGVkXCJgIChhIHdhcm0sIHJldXNlZCBsb2NhbCBydW5uZXIgcHJvY2VzcykuIGBcImZvcmtlZFwiYCBydW5zIHRoZSBqb2IgaW4gYSBmcmVzaCBgY2hpbGRfcHJvY2Vzcy5mb3JrKClgIGNoaWxkLCBgXCJzcGF3bmVkXCJgIGluIGEgZGV0YWNoZWQgQ0xJIHJ1bm5lciwgYW5kIGBcImlubGluZVwiYCBpbnNpZGUgdGhlIHdvcmtlciBwcm9jZXNzLiBPbWl0IHRvIHVzZSB0aGUgZGVmYXVsdCBgXCJwb29sZWRcImAgbW9kZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbbWF4UmV0cmllc10gLSBNYXggcmV0cmllcyBmb3IgYSBmYWlsZWQgam9iIGJlZm9yZSBpdCBpcyBtYXJrZWQgZmFpbGVkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtxdWV1ZV0gLSBRdWV1ZSBuYW1lLiBEZWZhdWx0cyB0byBgXCJkZWZhdWx0XCJgLiBXaGVuIHRoZSBxdWV1ZSBoYXMgYSBjb25maWd1cmVkIGNhcCBpbiBgYmFja2dyb3VuZEpvYnMucXVldWVzYCwgdGhhdCBjYXAgaXMgZW5mb3JjZWQgY2x1c3Rlci13aWRlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtjb25jdXJyZW5jeUtleV0gLSBPcGFxdWUgbm9uLWVtcHR5IGtleSB1c2VkIHRvIHNoYXJlIGEgY29uY3VycmVuY3kgY2FwLiBPdmVycmlkZXMgYW55IHF1ZXVlLWRlcml2ZWQgY2FwLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IFttYXhDb25jdXJyZW5jeV0gLSBQb3NpdGl2ZSBpbnRlZ2VyIGNhcDsgbXVzdCBiZSBwYWlyZWQgd2l0aCBgY29uY3VycmVuY3lLZXlgLlxuICogQHByb3BlcnR5IHtib29sZWFufSBbZGVkdXBsaWNhdGVXaGlsZVF1ZXVlZF0gLSBXaGVuIHRydWUsIHNraXAgdGhlIGVucXVldWUgaWYgYW4gaWRlbnRpY2FsIHN0aWxsLXF1ZXVlZCBqb2IgKHNhbWUgam9iIG5hbWUsIGFyZ3MgYW5kIHF1ZXVlKSBpcyBzY2hlZHVsZWQgbm8gbGF0ZXIgdGhhbiB0aGlzIGVucXVldWUsIHJldHVybmluZyB0aGUgZWFybGllc3QgbWF0Y2hpbmcgam9iJ3MgaWQuIEEgZnV0dXJlIHJldHJ5IGRvZXMgbm90IHN1cHByZXNzIGVhcmxpZXIgd29yay4gRGVkdXBsaWNhdGlvbiBpcyBpbmRlcGVuZGVudCBvZiBgY29uY3VycmVuY3lLZXlgLCBzbyB0aGUgam9iIGtlZXBzIGl0cyBub3JtYWwgKGUuZy4gcXVldWUtZGVyaXZlZCkgY29uY3VycmVuY3kgY2FwLiBLZWVwcyBhbiBpbnRlcnZhbC1zY2hlZHVsZWQgcmVjdXJyaW5nIGpvYiAoZS5nLiByZXRlbnRpb24gcHJ1bmluZykgZnJvbSBwaWxpbmcgdXAgcmVkdW5kYW50IHF1ZXVlZCByb3dzIHdoZW4gaXQgcnVucyBzbG93ZXIgdGhhbiBpdHMgaW50ZXJ2YWwgb3Igbm8gd29ya2VyIGlzIGZyZWUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3NjaGVkdWxlZEF0TXNdIC0gRXBvY2ggdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcyB3aGVuIHRoZSBqb2IgYmVjb21lcyBlbGlnaWJsZSBmb3IgZGlzcGF0Y2guIERlZmF1bHRzIHRvIGVucXVldWUgdGltZS5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iUGF5bG9hZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtpZF0gLSBKb2IgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gam9iTmFtZSAtIEpvYiBjbGFzcyBuYW1lLlxuICogQHByb3BlcnR5IHtBcnJheTw/Pn0gW2FyZ3NdIC0gU2VyaWFsaXplZCBqb2IgYXJndW1lbnRzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtoYW5kb2ZmSWRdIC0gVW5pcXVlIGhhbmRvZmYgbGVhc2UgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3dvcmtlcklkXSAtIFdvcmtlciBpZCBoYW5kbGluZyB0aGUgam9iLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtoYW5kZWRPZmZBdE1zXSAtIFRpbWUgaGFuZGVkIHRvIGEgd29ya2VyIGluIG1zLlxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iT3B0aW9uc30gW29wdGlvbnNdIC0gUnVudGltZSBvcHRpb25zLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tncm91bmRKb2JSb3dcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBpZCAtIEpvYiBpZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBqb2JOYW1lIC0gSm9iIGNsYXNzIG5hbWUuXG4gKiBAcHJvcGVydHkge0FycmF5PD8+fSBhcmdzIC0gU2VyaWFsaXplZCBqb2IgYXJndW1lbnRzLlxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iRXhlY3V0aW9uTW9kZX0gZXhlY3V0aW9uTW9kZSAtIEhvdyB0aGUgam9iIHNob3VsZCBydW4uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcXVldWUgLSBRdWV1ZSBuYW1lIChkZWZhdWx0cyB0byBgXCJkZWZhdWx0XCJgKS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdGF0dXMgLSBDdXJyZW50IGpvYiBzdGF0dXMuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IGF0dGVtcHRzIC0gRmFpbHVyZSBhdHRlbXB0cyBjb3VudC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gbWF4UmV0cmllcyAtIE1heCByZXRyeSBhdHRlbXB0cy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gc2NoZWR1bGVkQXRNcyAtIE5leHQgc2NoZWR1bGVkIHRpbWUgaW4gbXMuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IGNyZWF0ZWRBdE1zIC0gQ3JlYXRpb24gdGltZSBpbiBtcy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gaGFuZGVkT2ZmQXRNcyAtIFRpbWUgaGFuZGVkIHRvIHdvcmtlciBpbiBtcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gaGFuZG9mZklkIC0gVW5pcXVlIGxhdGVzdCBoYW5kb2ZmIGxlYXNlIGlkLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBjb21wbGV0ZWRBdE1zIC0gQ29tcGxldGlvbiB0aW1lIGluIG1zLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBmYWlsZWRBdE1zIC0gRmFpbHVyZSB0aW1lIGluIG1zLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBvcnBoYW5lZEF0TXMgLSBPcnBoYW5lZCB0aW1lIGluIG1zLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsfSB3b3JrZXJJZCAtIFdvcmtlciBpZCBoYW5kbGluZyB0aGUgam9iLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsfSBsYXN0RXJyb3IgLSBMYXN0IGZhaWx1cmUgbWVzc2FnZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gY29uY3VycmVuY3lLZXkgLSBEdXJhYmxlIGNvbmN1cnJlbmN5IGtleS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gbWF4Q29uY3VycmVuY3kgLSBEdXJhYmxlIHBlci1rZXkgY2FwLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tncm91bmRKb2JGYWlsdXJlRXZlbnRcbiAqIEBwcm9wZXJ0eSB7QmFja2dyb3VuZEpvYlJvd30gam9iIC0gVXBkYXRlZCBqb2Igcm93IGFmdGVyIGZhaWx1cmUgaGFuZGxpbmcuXG4gKiBAcHJvcGVydHkgez99IGVycm9yIC0gRmFpbHVyZSBlcnJvci5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gYXR0ZW1wdHMgLSBVcGRhdGVkIGZhaWx1cmUgYXR0ZW1wdHMgY291bnQuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHRlcm1pbmFsIC0gV2hldGhlciB0aGlzIGZhaWx1cmUgZW5kZWQgdGhlIGpvYi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gd2lsbFJldHJ5IC0gV2hldGhlciB0aGUgam9iIHdhcyByZXR1cm5lZCB0byB0aGUgcXVldWUuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IHVuZGVmaW5lZH0gaGFuZG9mZklkIC0gSGFuZG9mZiBsZWFzZSBpZCBmcm9tIHRoZSB3b3JrZXIgcmVwb3J0LlxuICogQHByb3BlcnR5IHtudW1iZXIgfCB1bmRlZmluZWR9IGhhbmRlZE9mZkF0TXMgLSBIYW5kb2ZmIHRpbWVzdGFtcCBmcm9tIHRoZSB3b3JrZXIgcmVwb3J0LlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCB1bmRlZmluZWR9IHdvcmtlcklkIC0gV29ya2VyIGlkIGZyb20gdGhlIHdvcmtlciByZXBvcnQuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge1wid29ya2VyXCIgfCBcImNsaWVudFwiIHwgXCJyZXBvcnRlclwifSBCYWNrZ3JvdW5kSm9iU29ja2V0Um9sZVxuICovXG4vKipcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJoZWxsb1wiLCByb2xlOiBCYWNrZ3JvdW5kSm9iU29ja2V0Um9sZSwgc3VwcG9ydHNIYW5kb2ZmSWRSZXBvcnRpbmc/OiBib29sZWFuLCBzdXBwb3J0c0hlYXJ0YmVhdD86IGJvb2xlYW4sIHN1cHBvcnRzUG9vbGVkPzogYm9vbGVhbiwgd29ya2VySWQ/OiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iSGVsbG9NZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwicmVhZHlcIiwgYWNjZXB0c0ZvcmtlZD86IGJvb2xlYW4sIGFjY2VwdHNJbmxpbmU/OiBib29sZWFuLCBhY2NlcHRzUG9vbGVkPzogYm9vbGVhbiwgYWNjZXB0c1NwYXduZWQ/OiBib29sZWFufX0gQmFja2dyb3VuZEpvYlJlYWR5TWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImRyYWluaW5nXCJ9fSBCYWNrZ3JvdW5kSm9iRHJhaW5pbmdNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiaGVhcnRiZWF0XCIsIHdvcmtlcklkPzogc3RyaW5nfX0gQmFja2dyb3VuZEpvYkhlYXJ0YmVhdE1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJlbnF1ZXVlXCIsIGpvYk5hbWU6IHN0cmluZywgYXJncz86IEFycmF5PD8+LCBvcHRpb25zPzogQmFja2dyb3VuZEpvYk9wdGlvbnN9fSBCYWNrZ3JvdW5kSm9iRW5xdWV1ZU1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJlbnF1ZXVlZFwiLCBqb2JJZDogc3RyaW5nfX0gQmFja2dyb3VuZEpvYkVucXVldWVkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImVucXVldWUtZXJyb3JcIiwgZXJyb3I/OiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iRW5xdWV1ZUVycm9yTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImpvYlwiLCBwYXlsb2FkOiBCYWNrZ3JvdW5kSm9iUGF5bG9hZH19IEJhY2tncm91bmRKb2JKb2JNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiam9iLWNvbXBsZXRlXCIsIGpvYklkOiBzdHJpbmcsIGhhbmRvZmZJZD86IHN0cmluZywgd29ya2VySWQ/OiBzdHJpbmcsIGhhbmRlZE9mZkF0TXM/OiBudW1iZXJ9fSBCYWNrZ3JvdW5kSm9iQ29tcGxldGVNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiam9iLWZhaWxlZFwiLCBqb2JJZDogc3RyaW5nLCBlcnJvcj86ID8sIGhhbmRvZmZJZD86IHN0cmluZywgd29ya2VySWQ/OiBzdHJpbmcsIGhhbmRlZE9mZkF0TXM/OiBudW1iZXJ9fSBCYWNrZ3JvdW5kSm9iRmFpbGVkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImpvYi11cGRhdGVkXCIsIGpvYklkOiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iVXBkYXRlZE1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJqb2ItdXBkYXRlLWVycm9yXCIsIGpvYklkOiBzdHJpbmcsIGVycm9yPzogc3RyaW5nfX0gQmFja2dyb3VuZEpvYlVwZGF0ZUVycm9yTWVzc2FnZVxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtCYWNrZ3JvdW5kSm9iSGVsbG9NZXNzYWdlIHwgQmFja2dyb3VuZEpvYlJlYWR5TWVzc2FnZSB8IEJhY2tncm91bmRKb2JEcmFpbmluZ01lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iSGVhcnRiZWF0TWVzc2FnZSB8IEJhY2tncm91bmRKb2JFbnF1ZXVlTWVzc2FnZSB8IEJhY2tncm91bmRKb2JFbnF1ZXVlZE1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iRW5xdWV1ZUVycm9yTWVzc2FnZSB8IEJhY2tncm91bmRKb2JKb2JNZXNzYWdlIHwgQmFja2dyb3VuZEpvYkNvbXBsZXRlTWVzc2FnZSB8IEJhY2tncm91bmRKb2JGYWlsZWRNZXNzYWdlIHwgQmFja2dyb3VuZEpvYlVwZGF0ZWRNZXNzYWdlIHwgQmFja2dyb3VuZEpvYlVwZGF0ZUVycm9yTWVzc2FnZX0gQmFja2dyb3VuZEpvYlNvY2tldE1lc3NhZ2VcbiAqL1xuXG5leHBvcnQgY29uc3Qgbm90aGluZyA9IHt9XG4iXX0=
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2dyb3VuZC1qb2JzL3R5cGVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7R0FFRztBQUNIOzs7O0dBSUc7QUFDSDs7Ozs7Ozs7O0dBU0c7QUFDSDs7Ozs7Ozs7O0dBU0c7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNIOztHQUVHO0FBQ0g7Ozs7O0dBS0c7QUFDSDs7R0FFRztBQUNIOzs7O0dBSUc7QUFDSDs7Ozs7Ozs7OztHQVVHO0FBQ0g7O0dBRUc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNIOztHQUVHO0FBRUgsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKipcbiAqIEB0eXBlZGVmIHtcImlubGluZVwiIHwgXCJmb3JrZWRcIiB8IFwicG9vbGVkXCIgfCBcInNwYXduZWRcIn0gQmFja2dyb3VuZEpvYkV4ZWN1dGlvbk1vZGVcbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iSGFuZG9mZlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGhhbmRvZmZJZCAtIFVuaXF1ZSBoYW5kb2ZmIGxlYXNlIGlkLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGhhbmRlZE9mZkF0TXMgLSBUaW1lIGhhbmRlZCB0byBhIHdvcmtlciBpbiBtcy5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iT3B0aW9uc1xuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iRXhlY3V0aW9uTW9kZX0gW2V4ZWN1dGlvbk1vZGVdIC0gSG93IHRoZSBqb2Igc2hvdWxkIHJ1bi4gRGVmYXVsdHMgdG8gYFwicG9vbGVkXCJgIChhIHdhcm0sIHJldXNlZCBsb2NhbCBydW5uZXIgcHJvY2VzcykuIGBcImZvcmtlZFwiYCBydW5zIHRoZSBqb2IgaW4gYSBmcmVzaCBgY2hpbGRfcHJvY2Vzcy5mb3JrKClgIGNoaWxkLCBgXCJzcGF3bmVkXCJgIGluIGEgZGV0YWNoZWQgQ0xJIHJ1bm5lciwgYW5kIGBcImlubGluZVwiYCBpbnNpZGUgdGhlIHdvcmtlciBwcm9jZXNzLiBPbWl0IHRvIHVzZSB0aGUgZGVmYXVsdCBgXCJwb29sZWRcImAgbW9kZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbbWF4UmV0cmllc10gLSBNYXggcmV0cmllcyBmb3IgYSBmYWlsZWQgam9iIGJlZm9yZSBpdCBpcyBtYXJrZWQgZmFpbGVkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtxdWV1ZV0gLSBRdWV1ZSBuYW1lLiBEZWZhdWx0cyB0byBgXCJkZWZhdWx0XCJgLiBXaGVuIHRoZSBxdWV1ZSBoYXMgYSBjb25maWd1cmVkIGNhcCBpbiBgYmFja2dyb3VuZEpvYnMucXVldWVzYCwgdGhhdCBjYXAgaXMgZW5mb3JjZWQgY2x1c3Rlci13aWRlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtjb25jdXJyZW5jeUtleV0gLSBPcGFxdWUgbm9uLWVtcHR5IGtleSB1c2VkIHRvIHNoYXJlIGEgY29uY3VycmVuY3kgY2FwLiBPdmVycmlkZXMgYW55IHF1ZXVlLWRlcml2ZWQgY2FwLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IFttYXhDb25jdXJyZW5jeV0gLSBQb3NpdGl2ZSBpbnRlZ2VyIGNhcDsgbXVzdCBiZSBwYWlyZWQgd2l0aCBgY29uY3VycmVuY3lLZXlgLlxuICogQHByb3BlcnR5IHtib29sZWFufSBbZGVkdXBsaWNhdGVXaGlsZVF1ZXVlZF0gLSBXaGVuIHRydWUsIHNraXAgdGhlIGVucXVldWUgaWYgYW4gaWRlbnRpY2FsIHN0aWxsLXF1ZXVlZCBqb2IgKHNhbWUgam9iIG5hbWUsIGFyZ3MgYW5kIHF1ZXVlKSBpcyBzY2hlZHVsZWQgbm8gbGF0ZXIgdGhhbiB0aGlzIGVucXVldWUsIHJldHVybmluZyB0aGUgZWFybGllc3QgbWF0Y2hpbmcgam9iJ3MgaWQuIEEgZnV0dXJlIHJldHJ5IGRvZXMgbm90IHN1cHByZXNzIGVhcmxpZXIgd29yay4gRGVkdXBsaWNhdGlvbiBpcyBpbmRlcGVuZGVudCBvZiBgY29uY3VycmVuY3lLZXlgLCBzbyB0aGUgam9iIGtlZXBzIGl0cyBub3JtYWwgKGUuZy4gcXVldWUtZGVyaXZlZCkgY29uY3VycmVuY3kgY2FwLiBLZWVwcyBhbiBpbnRlcnZhbC1zY2hlZHVsZWQgcmVjdXJyaW5nIGpvYiAoZS5nLiByZXRlbnRpb24gcHJ1bmluZykgZnJvbSBwaWxpbmcgdXAgcmVkdW5kYW50IHF1ZXVlZCByb3dzIHdoZW4gaXQgcnVucyBzbG93ZXIgdGhhbiBpdHMgaW50ZXJ2YWwgb3Igbm8gd29ya2VyIGlzIGZyZWUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3NjaGVkdWxlZEF0TXNdIC0gRXBvY2ggdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcyB3aGVuIHRoZSBqb2IgYmVjb21lcyBlbGlnaWJsZSBmb3IgZGlzcGF0Y2guIERlZmF1bHRzIHRvIGVucXVldWUgdGltZS5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iUGF5bG9hZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtpZF0gLSBKb2IgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gam9iTmFtZSAtIEpvYiBjbGFzcyBuYW1lLlxuICogQHByb3BlcnR5IHtBcnJheTw/Pn0gW2FyZ3NdIC0gU2VyaWFsaXplZCBqb2IgYXJndW1lbnRzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtoYW5kb2ZmSWRdIC0gVW5pcXVlIGhhbmRvZmYgbGVhc2UgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3dvcmtlcklkXSAtIFdvcmtlciBpZCBoYW5kbGluZyB0aGUgam9iLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtoYW5kZWRPZmZBdE1zXSAtIFRpbWUgaGFuZGVkIHRvIGEgd29ya2VyIGluIG1zLlxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iT3B0aW9uc30gW29wdGlvbnNdIC0gUnVudGltZSBvcHRpb25zLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tncm91bmRKb2JSb3dcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBpZCAtIEpvYiBpZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBqb2JOYW1lIC0gSm9iIGNsYXNzIG5hbWUuXG4gKiBAcHJvcGVydHkge0FycmF5PD8+fSBhcmdzIC0gU2VyaWFsaXplZCBqb2IgYXJndW1lbnRzLlxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iRXhlY3V0aW9uTW9kZX0gZXhlY3V0aW9uTW9kZSAtIEhvdyB0aGUgam9iIHNob3VsZCBydW4uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcXVldWUgLSBRdWV1ZSBuYW1lIChkZWZhdWx0cyB0byBgXCJkZWZhdWx0XCJgKS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gc2NoZWR1bGVLZXkgLSBTdGFibGUgbG9naWNhbCBzY2hlZHVsZSBrZXkgcmV0YWluZWQgZm9yIGhpc3RvcnkuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc3RhdHVzIC0gQ3VycmVudCBqb2Igc3RhdHVzLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBhdHRlbXB0cyAtIEZhaWx1cmUgYXR0ZW1wdHMgY291bnQuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IG1heFJldHJpZXMgLSBNYXggcmV0cnkgYXR0ZW1wdHMuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IHNjaGVkdWxlZEF0TXMgLSBOZXh0IHNjaGVkdWxlZCB0aW1lIGluIG1zLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBjcmVhdGVkQXRNcyAtIENyZWF0aW9uIHRpbWUgaW4gbXMuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IGhhbmRlZE9mZkF0TXMgLSBUaW1lIGhhbmRlZCB0byB3b3JrZXIgaW4gbXMuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IGhhbmRvZmZJZCAtIFVuaXF1ZSBsYXRlc3QgaGFuZG9mZiBsZWFzZSBpZC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gY29tcGxldGVkQXRNcyAtIENvbXBsZXRpb24gdGltZSBpbiBtcy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gZmFpbGVkQXRNcyAtIEZhaWx1cmUgdGltZSBpbiBtcy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gb3JwaGFuZWRBdE1zIC0gT3JwaGFuZWQgdGltZSBpbiBtcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gd29ya2VySWQgLSBXb3JrZXIgaWQgaGFuZGxpbmcgdGhlIGpvYi5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gbGFzdEVycm9yIC0gTGFzdCBmYWlsdXJlIG1lc3NhZ2UuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IGNvbmN1cnJlbmN5S2V5IC0gRHVyYWJsZSBjb25jdXJyZW5jeSBrZXkuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IG1heENvbmN1cnJlbmN5IC0gRHVyYWJsZSBwZXIta2V5IGNhcC5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7XCJxdWV1ZWRcIiB8IFwiaGFuZGVkX29mZlwiIHwgbnVsbH0gQmFja2dyb3VuZEpvYlJlcGxhY2VtZW50UHJldmlvdXNTdGF0dXNcbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iUmVwbGFjZW1lbnRSZXN1bHRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBqb2JJZCAtIE5ld2x5IHF1ZXVlZCBqb2IgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IHByZXZpb3VzSm9iSWQgLSBQcmV2aW91cyBhY3RpdmUgb3duZXIncyBqb2IgaWQuXG4gKiBAcHJvcGVydHkge0JhY2tncm91bmRKb2JSZXBsYWNlbWVudFByZXZpb3VzU3RhdHVzfSBwcmV2aW91c1N0YXR1cyAtIFByZXZpb3VzIG93bmVyJ3Mgb2JzZXJ2ZWQgc3RhdGUuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge1wiY2FuY2VsbGVkXCIgfCBcImhhbmRlZF9vZmZcIiB8IFwibm90X2ZvdW5kXCJ9IEJhY2tncm91bmRKb2JDYW5jZWxsYXRpb25PdXRjb21lXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQmFja2dyb3VuZEpvYkNhbmNlbGxhdGlvblJlc3VsdFxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsfSBqb2JJZCAtIERldGFjaGVkIG93bmVyJ3Mgam9iIGlkLCB3aGVuIG9uZSB3YXMgYWN0aXZlLlxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iQ2FuY2VsbGF0aW9uT3V0Y29tZX0gb3V0Y29tZSAtIFRydXRoZnVsIGJlc3QtZWZmb3J0IG91dGNvbWUuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQmFja2dyb3VuZEpvYkZhaWx1cmVFdmVudFxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iUm93fSBqb2IgLSBVcGRhdGVkIGpvYiByb3cgYWZ0ZXIgZmFpbHVyZSBoYW5kbGluZy5cbiAqIEBwcm9wZXJ0eSB7P30gZXJyb3IgLSBGYWlsdXJlIGVycm9yLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBhdHRlbXB0cyAtIFVwZGF0ZWQgZmFpbHVyZSBhdHRlbXB0cyBjb3VudC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdGVybWluYWwgLSBXaGV0aGVyIHRoaXMgZmFpbHVyZSBlbmRlZCB0aGUgam9iLlxuICogQHByb3BlcnR5IHtib29sZWFufSB3aWxsUmV0cnkgLSBXaGV0aGVyIHRoZSBqb2Igd2FzIHJldHVybmVkIHRvIHRoZSBxdWV1ZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgdW5kZWZpbmVkfSBoYW5kb2ZmSWQgLSBIYW5kb2ZmIGxlYXNlIGlkIGZyb20gdGhlIHdvcmtlciByZXBvcnQuXG4gKiBAcHJvcGVydHkge251bWJlciB8IHVuZGVmaW5lZH0gaGFuZGVkT2ZmQXRNcyAtIEhhbmRvZmYgdGltZXN0YW1wIGZyb20gdGhlIHdvcmtlciByZXBvcnQuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IHVuZGVmaW5lZH0gd29ya2VySWQgLSBXb3JrZXIgaWQgZnJvbSB0aGUgd29ya2VyIHJlcG9ydC5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7XCJ3b3JrZXJcIiB8IFwiY2xpZW50XCIgfCBcInJlcG9ydGVyXCJ9IEJhY2tncm91bmRKb2JTb2NrZXRSb2xlXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge3t0eXBlOiBcImhlbGxvXCIsIHJvbGU6IEJhY2tncm91bmRKb2JTb2NrZXRSb2xlLCBzdXBwb3J0c0hhbmRvZmZJZFJlcG9ydGluZz86IGJvb2xlYW4sIHN1cHBvcnRzSGVhcnRiZWF0PzogYm9vbGVhbiwgc3VwcG9ydHNQb29sZWQ/OiBib29sZWFuLCB3b3JrZXJJZD86IHN0cmluZ319IEJhY2tncm91bmRKb2JIZWxsb01lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJyZWFkeVwiLCBhY2NlcHRzRm9ya2VkPzogYm9vbGVhbiwgYWNjZXB0c0lubGluZT86IGJvb2xlYW4sIGFjY2VwdHNQb29sZWQ/OiBib29sZWFuLCBhY2NlcHRzU3Bhd25lZD86IGJvb2xlYW59fSBCYWNrZ3JvdW5kSm9iUmVhZHlNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiZHJhaW5pbmdcIn19IEJhY2tncm91bmRKb2JEcmFpbmluZ01lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJoZWFydGJlYXRcIiwgd29ya2VySWQ/OiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iSGVhcnRiZWF0TWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImVucXVldWVcIiwgam9iTmFtZTogc3RyaW5nLCBhcmdzPzogQXJyYXk8Pz4sIG9wdGlvbnM/OiBCYWNrZ3JvdW5kSm9iT3B0aW9uc319IEJhY2tncm91bmRKb2JFbnF1ZXVlTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImVucXVldWVkXCIsIGpvYklkOiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iRW5xdWV1ZWRNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiZW5xdWV1ZS1lcnJvclwiLCBlcnJvcj86IHN0cmluZ319IEJhY2tncm91bmRKb2JFbnF1ZXVlRXJyb3JNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwicmVwbGFjZS1zY2hlZHVsZWRcIiwgc2NoZWR1bGVLZXk6IHN0cmluZywgam9iTmFtZTogc3RyaW5nLCBhcmdzPzogQXJyYXk8Pz4sIG9wdGlvbnM/OiBCYWNrZ3JvdW5kSm9iT3B0aW9uc319IEJhY2tncm91bmRKb2JSZXBsYWNlU2NoZWR1bGVkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcInNjaGVkdWxlLXJlcGxhY2VkXCIsIGpvYklkOiBzdHJpbmcsIHByZXZpb3VzSm9iSWQ6IHN0cmluZyB8IG51bGwsIHByZXZpb3VzU3RhdHVzOiBCYWNrZ3JvdW5kSm9iUmVwbGFjZW1lbnRQcmV2aW91c1N0YXR1c319IEJhY2tncm91bmRKb2JTY2hlZHVsZVJlcGxhY2VkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcInJlcGxhY2Utc2NoZWR1bGVkLWVycm9yXCIsIGVycm9yPzogc3RyaW5nfX0gQmFja2dyb3VuZEpvYlJlcGxhY2VTY2hlZHVsZWRFcnJvck1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJjYW5jZWwtc2NoZWR1bGVkXCIsIHNjaGVkdWxlS2V5OiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcInNjaGVkdWxlLWNhbmNlbGxlZFwiLCBqb2JJZDogc3RyaW5nIHwgbnVsbCwgb3V0Y29tZTogQmFja2dyb3VuZEpvYkNhbmNlbGxhdGlvbk91dGNvbWV9fSBCYWNrZ3JvdW5kSm9iU2NoZWR1bGVDYW5jZWxsZWRNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiY2FuY2VsLXNjaGVkdWxlZC1lcnJvclwiLCBlcnJvcj86IHN0cmluZ319IEJhY2tncm91bmRKb2JDYW5jZWxTY2hlZHVsZWRFcnJvck1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJqb2JcIiwgcGF5bG9hZDogQmFja2dyb3VuZEpvYlBheWxvYWR9fSBCYWNrZ3JvdW5kSm9iSm9iTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImpvYi1jb21wbGV0ZVwiLCBqb2JJZDogc3RyaW5nLCBoYW5kb2ZmSWQ/OiBzdHJpbmcsIHdvcmtlcklkPzogc3RyaW5nLCBoYW5kZWRPZmZBdE1zPzogbnVtYmVyfX0gQmFja2dyb3VuZEpvYkNvbXBsZXRlTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImpvYi1mYWlsZWRcIiwgam9iSWQ6IHN0cmluZywgZXJyb3I/OiA/LCBoYW5kb2ZmSWQ/OiBzdHJpbmcsIHdvcmtlcklkPzogc3RyaW5nLCBoYW5kZWRPZmZBdE1zPzogbnVtYmVyfX0gQmFja2dyb3VuZEpvYkZhaWxlZE1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJqb2ItdXBkYXRlZFwiLCBqb2JJZDogc3RyaW5nfX0gQmFja2dyb3VuZEpvYlVwZGF0ZWRNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiam9iLXVwZGF0ZS1lcnJvclwiLCBqb2JJZDogc3RyaW5nLCBlcnJvcj86IHN0cmluZ319IEJhY2tncm91bmRKb2JVcGRhdGVFcnJvck1lc3NhZ2VcbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7QmFja2dyb3VuZEpvYkhlbGxvTWVzc2FnZSB8IEJhY2tncm91bmRKb2JSZWFkeU1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iRHJhaW5pbmdNZXNzYWdlIHwgQmFja2dyb3VuZEpvYkhlYXJ0YmVhdE1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iRW5xdWV1ZU1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iRW5xdWV1ZWRNZXNzYWdlIHwgQmFja2dyb3VuZEpvYkVucXVldWVFcnJvck1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iUmVwbGFjZVNjaGVkdWxlZE1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iU2NoZWR1bGVSZXBsYWNlZE1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iUmVwbGFjZVNjaGVkdWxlZEVycm9yTWVzc2FnZSB8IEJhY2tncm91bmRKb2JDYW5jZWxTY2hlZHVsZWRNZXNzYWdlIHwgQmFja2dyb3VuZEpvYlNjaGVkdWxlQ2FuY2VsbGVkTWVzc2FnZSB8IEJhY2tncm91bmRKb2JDYW5jZWxTY2hlZHVsZWRFcnJvck1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iSm9iTWVzc2FnZSB8IEJhY2tncm91bmRKb2JDb21wbGV0ZU1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iRmFpbGVkTWVzc2FnZSB8IEJhY2tncm91bmRKb2JVcGRhdGVkTWVzc2FnZSB8IEJhY2tncm91bmRKb2JVcGRhdGVFcnJvck1lc3NhZ2V9IEJhY2tncm91bmRKb2JTb2NrZXRNZXNzYWdlXG4gKi9cblxuZXhwb3J0IGNvbnN0IG5vdGhpbmcgPSB7fVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../src/background-jobs/web/controller.js"],"names":[],"mappings":"AAYA;;;;GAIG;AACH;IACE;;;OAGG;IACH,iBAFa,OAAO,eAAe,EAAE,gBAAgB,CAMpD;IAED;;;OAGG;IACH,UAFa,mBAAmB,CAW/B;IAPG,4CAGE;IAMN;;;;;OAKG;IACH,2BAHW,OAAO,eAAe,EAAE,gBAAgB,GACtC,IAAI,CAmBhB;IAED;;;;;;OAMG;IACH,mBAHW,MAAM,OAAO,CAAC,IAAI,CAAC,GACjB,OAAO,CAAC,IAAI,CAAC,CAoBzB;IAED;;;OAGG;IACH,UAFa,OAAO,CAAC,IAAI,CAAC,CAUzB;IAED;;;OAGG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAczB;IAED;;;OAGG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAmBzB;IAED;;;OAGG;IACH,QAFa,OAAO,CAAC,IAAI,CAAC,CAazB;IAED;;;OAGG;IACH,YAFa,OAAO,CAAC,IAAI,CAAC,CAQzB;IAED;;;;OAIG;IACH,mBAHW,OAAO,aAAa,EAAE,gBAAgB,GACpC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../src/background-jobs/web/controller.js"],"names":[],"mappings":"AAYA;;;;GAIG;AACH;IACE;;;OAGG;IACH,iBAFa,OAAO,eAAe,EAAE,gBAAgB,CAMpD;IAED;;;OAGG;IACH,UAFa,mBAAmB,CAW/B;IAPG,4CAGE;IAMN;;;;;OAKG;IACH,2BAHW,OAAO,eAAe,EAAE,gBAAgB,GACtC,IAAI,CAmBhB;IAED;;;;;;OAMG;IACH,mBAHW,MAAM,OAAO,CAAC,IAAI,CAAC,GACjB,OAAO,CAAC,IAAI,CAAC,CAoBzB;IAED;;;OAGG;IACH,UAFa,OAAO,CAAC,IAAI,CAAC,CAUzB;IAED;;;OAGG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAczB;IAED;;;OAGG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAmBzB;IAED;;;OAGG;IACH,QAFa,OAAO,CAAC,IAAI,CAAC,CAazB;IAED;;;OAGG;IACH,YAFa,OAAO,CAAC,IAAI,CAAC,CAQzB;IAED;;;;OAIG;IACH,mBAHW,OAAO,aAAa,EAAE,gBAAgB,GACpC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAwB7B;IAED;;;;OAIG;IACH,8BAHW,OAAO,8BAA8B,EAAE,oCAAoC,GAAG,SAAS,GACrF,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC,CAsBpC;IAED;;;;OAIG;IACH,uBAHW,OAAC,GACC,MAAM,GAAG,SAAS,CAI9B;IAED;;;;OAIG;IACH,qBAHW,OAAC,GACC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,KAAK,GAAG,MAAM,CAAA;KAAC,CAY/D;IAED;;;;;OAKG;IACH,oBAJW,OAAC,YACD,MAAM,GACJ,MAAM,CAQlB;CACF;uBAhRsB,qBAAqB;gCACZ,aAAa"}
|
|
@@ -173,6 +173,7 @@ export default class VelociousBackgroundJobsWebController extends Controller {
|
|
|
173
173
|
lastError: job.lastError,
|
|
174
174
|
maxRetries: job.maxRetries,
|
|
175
175
|
orphanedAtMs: job.orphanedAtMs,
|
|
176
|
+
scheduleKey: job.scheduleKey,
|
|
176
177
|
scheduledAtMs: job.scheduledAtMs,
|
|
177
178
|
status: job.status,
|
|
178
179
|
workerId: job.workerId
|
|
@@ -236,4 +237,4 @@ export default class VelociousBackgroundJobsWebController extends Controller {
|
|
|
236
237
|
return Math.floor(numeric);
|
|
237
238
|
}
|
|
238
239
|
}
|
|
239
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvd2ViL2NvbnRyb2xsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sVUFBVSxNQUFNLHFCQUFxQixDQUFBO0FBQzVDLE9BQU8sbUJBQW1CLE1BQU0sYUFBYSxDQUFBO0FBQzdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLG9CQUFvQixDQUFBO0FBQ3ZELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUE7QUFFMUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQTtBQUN0RixNQUFNLGFBQWEsR0FBRyxDQUFDLFVBQVUsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUE7QUFDbEgsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUE7QUFDM0IsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFBO0FBRXhCOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLG9DQUFxQyxTQUFRLFVBQVU7SUFDMUU7OztPQUdHO0lBQ0gsYUFBYTtRQUNYLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQTtRQUU3QyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDeEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQztnQkFDeEMsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFB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SyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUUvRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQztZQUFFLE9BQU8sUUFBUSxDQUFBO1FBRTdELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM1QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSBcIi4uLy4uL2NvbnRyb2xsZXIuanNcIlxuaW1wb3J0IEJhY2tncm91bmRKb2JzU3RvcmUgZnJvbSBcIi4uL3N0b3JlLmpzXCJcbmltcG9ydCB7YXV0aG9yaXplSm9ic1JlcXVlc3R9IGZyb20gXCIuL2F1dGhvcml6YXRpb24uanNcIlxuaW1wb3J0IHtnZXRKb2JzTW91bnR9IGZyb20gXCIuL3JlZ2lzdHJ5LmpzXCJcblxuY29uc3QgREFTSEJPQVJEX1NUQVRVU0VTID0gW1wicXVldWVkXCIsIFwiaGFuZGVkX29mZlwiLCBcImNvbXBsZXRlZFwiLCBcImZhaWxlZFwiLCBcIm9ycGhhbmVkXCJdXG5jb25zdCBTT1JUQUJMRV9LRVlTID0gW1wiYXR0ZW1wdHNcIiwgXCJjb21wbGV0ZWRBdE1zXCIsIFwiY3JlYXRlZEF0TXNcIiwgXCJmYWlsZWRBdE1zXCIsIFwiaGFuZGVkT2ZmQXRNc1wiLCBcInNjaGVkdWxlZEF0TXNcIl1cbmNvbnN0IERFRkFVTFRfUEVSX1BBR0UgPSAyNVxuY29uc3QgTUFYX1BFUl9QQUdFID0gMTAwXG5cbi8qKlxuICogUmVhZC1vbmx5IEhUVFAgQVBJIGJhY2tpbmcgdGhlIGJhY2tncm91bmQtam9icyBkYXNoYm9hcmQuIE1vdW50ZWQgYnlcbiAqIHtAbGluayBpbXBvcnQoXCIuL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFzIGEgcm91dGUtcmVzb2x2ZXIgaG9vayBzbyBpdCBjYW4gc2hpcFxuICogaW5zaWRlIHRoZSB2ZWxvY2lvdXMgcGFja2FnZS4gRXZlcnkgYWN0aW9uIGlzIGdhdGVkIGJ5IHtAbGluayBhdXRob3JpemVKb2JzUmVxdWVzdH0uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0JhY2tncm91bmRKb2JzV2ViQ29udHJvbGxlciBleHRlbmRzIENvbnRyb2xsZXIge1xuICAvKipcbiAgICogUnVucyBtb3VudCBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9yZWdpc3RyeS5qc1wiKS5Kb2JzTW91bnRPcHRpb25zfSAtIE9wdGlvbnMgZm9yIHRoZSBtb3VudCB0aGF0IG1hdGNoZWQgdGhpcyByZXF1ZXN0LlxuICAgKi9cbiAgX21vdW50T3B0aW9ucygpIHtcbiAgICBjb25zdCBhdCA9IHRoaXMucGFyYW1zKCkudmVsb2Npb3VzSm9ic01vdW50QXRcblxuICAgIHJldHVybiBnZXRKb2JzTW91bnQodGhpcy5nZXRDb25maWd1cmF0aW9uKCksIGF0KSB8fCB7fVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc3RvcmUuXG4gICAqIEByZXR1cm5zIHtCYWNrZ3JvdW5kSm9ic1N0b3JlfSAtIEpvYnMgc3RvcmUgc2NvcGVkIHRvIHRoZSBtb3VudCdzIGRhdGFiYXNlLlxuICAgKi9cbiAgX3N0b3JlKCkge1xuICAgIGlmICghdGhpcy5fam9ic1N0b3JlKSB7XG4gICAgICB0aGlzLl9qb2JzU3RvcmUgPSBuZXcgQmFja2dyb3VuZEpvYnNTdG9yZSh7XG4gICAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuZ2V0Q29uZmlndXJhdGlvbigpLFxuICAgICAgICBkYXRhYmFzZUlkZW50aWZpZXI6IHRoaXMuX21vdW50T3B0aW9ucygpLmRhdGFiYXNlSWRlbnRpZmllclxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fam9ic1N0b3JlXG4gIH1cblxuICAvKipcbiAgICogQWRkcyBDT1JTIGhlYWRlcnMgd2hlbiB0aGUgcmVxdWVzdCBvcmlnaW4gaXMgYWxsb3dlZCwgc28gdGhlIHN0YW5kYWxvbmVcbiAgICogYnJvd3NlciBkYXNoYm9hcmQgY2FuIHJlYWQgdGhlIEFQSSBjcm9zcy1vcmlnaW4uXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9yZWdpc3RyeS5qc1wiKS5Kb2JzTW91bnRPcHRpb25zfSBvcHRpb25zIC0gTW91bnQgb3B0aW9ucy5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgX2FwcGx5Q29yc0hlYWRlcnMob3B0aW9ucykge1xuICAgIGNvbnN0IGFsbG93ZWRPcmlnaW5zID0gQXJyYXkuaXNBcnJheShvcHRpb25zLmFsbG93ZWRPcmlnaW5zKSA/IG9wdGlvbnMuYWxsb3dlZE9yaWdpbnMgOiBbXVxuXG4gICAgaWYgKGFsbG93ZWRPcmlnaW5zLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG5cbiAgICBjb25zdCBvcmlnaW4gPSB0aGlzLnJlcXVlc3QoKS5vcmlnaW4oKVxuICAgIGNvbnN0IGFsbG93QWxsID0gYWxsb3dlZE9yaWdpbnMuaW5jbHVkZXMoXCIqXCIpXG5cbiAgICBpZiAoIW9yaWdpbikgcmV0dXJuXG4gICAgaWYgKCFhbGxvd0FsbCAmJiAhYWxsb3dlZE9yaWdpbnMuaW5jbHVkZXMob3JpZ2luKSkgcmV0dXJuXG5cbiAgICBjb25zdCByZXNwb25zZSA9IHRoaXMucmVzcG9uc2UoKVxuXG4gICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luXCIsIGFsbG93QWxsID8gXCIqXCIgOiBvcmlnaW4pXG4gICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiVmFyeVwiLCBcIk9yaWdpblwiKVxuICAgIHJlc3BvbnNlLnNldEhlYWRlcihcIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnNcIiwgXCJhdXRob3JpemF0aW9uLCBjb250ZW50LXR5cGVcIilcbiAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzXCIsIFwiR0VULCBQT1NULCBERUxFVEUsIE9QVElPTlNcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIENPUlMgaGVhZGVycywgYXV0aG9yaXplcyB0aGUgcmVxdWVzdCwgYW5kIHJ1bnMgdGhlIGFjdGlvbiBib2R5IG9ubHlcbiAgICogd2hlbiBhdXRob3JpemVkLiBSZW5kZXJzIGEgNDAxIG90aGVyd2lzZS4gVGhlIGJhc2UgY29udHJvbGxlciBoYXMgbm9cbiAgICogYmVmb3JlLWFjdGlvbiBoYWx0aW5nLCBzbyBhdXRob3JpemF0aW9uIGlzIGVuZm9yY2VkIGhlcmUgcGVyIGFjdGlvbi5cbiAgICogQHBhcmFtIHsoKSA9PiBQcm9taXNlPHZvaWQ+fSBhY3Rpb25GbiAtIEFjdGlvbiBib2R5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgX3Jlc3BvbmQoYWN0aW9uRm4pIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fbW91bnRPcHRpb25zKClcblxuICAgIHRoaXMuX2FwcGx5Q29yc0hlYWRlcnMob3B0aW9ucylcblxuICAgIGNvbnN0IGF1dGhvcml6ZWQgPSBhd2FpdCBhdXRob3JpemVKb2JzUmVxdWVzdCh7XG4gICAgICBhYmlsaXR5OiB0aGlzLmN1cnJlbnRBYmlsaXR5KCksXG4gICAgICBjb25maWd1cmF0aW9uOiB0aGlzLmdldENvbmZpZ3VyYXRpb24oKSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICByZXF1ZXN0OiB0aGlzLnJlcXVlc3QoKVxuICAgIH0pXG5cbiAgICBpZiAoIWF1dGhvcml6ZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVuZGVyKHtqc29uOiB7ZXJyb3I6IFwidW5hdXRob3JpemVkXCJ9LCBzdGF0dXM6IDQwMX0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBhd2FpdCBhY3Rpb25GbigpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBoZWFsdGguXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBoZWFsdGgoKSB7XG4gICAgYXdhaXQgdGhpcy5fcmVzcG9uZChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLnJlbmRlcih7anNvbjoge1xuICAgICAgICBjYXBhYmlsaXRpZXM6IHtiYWNrZ3JvdW5kSm9iQ291bnREZWx0YXM6IDF9LFxuICAgICAgICBvazogdHJ1ZSxcbiAgICAgICAgc2VydmljZTogXCJ2ZWxvY2lvdXMtYmFja2dyb3VuZC1qb2JzXCJcbiAgICAgIH19KVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzdGF0cy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIHN0YXRzKCkge1xuICAgIGF3YWl0IHRoaXMuX3Jlc3BvbmQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc25hcHNob3QgPSBhd2FpdCB0aGlzLl9zdG9yZSgpLmNvdW50U25hcHNob3QoKVxuXG4gICAgICBhd2FpdCB0aGlzLnJlbmRlcih7anNvbjoge1xuICAgICAgICBjYXBhYmlsaXRpZXM6IHtiYWNrZ3JvdW5kSm9iQ291bnREZWx0YXM6IDF9LFxuICAgICAgICBjb3VudHM6IHNuYXBzaG90LmNvdW50cyxcbiAgICAgICAgZ2VuZXJhdGVkQXRNczogRGF0ZS5ub3coKSxcbiAgICAgICAgcmV2aXNpb246IHNuYXBzaG90LnJldmlzaW9uLFxuICAgICAgICB0b3RhbDogc25hcHNob3QudG90YWxcbiAgICAgIH19KVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBpbmRleC5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIGluZGV4KCkge1xuICAgIGF3YWl0IHRoaXMuX3Jlc3BvbmQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5wYXJhbXMoKVxuICAgICAgY29uc3Qgc3RhdHVzID0gdGhpcy5fc2FuaXRpemVTdGF0dXMocGFyYW1zLnN0YXR1cylcbiAgICAgIGNvbnN0IGpvYk5hbWUgPSB0eXBlb2YgcGFyYW1zLmpvYk5hbWUgPT09IFwic3RyaW5nXCIgJiYgcGFyYW1zLmpvYk5hbWUubGVuZ3RoID4gMCA/IHBhcmFtcy5qb2JOYW1lIDogdW5kZWZpbmVkXG4gICAgICBjb25zdCBwYWdlID0gdGhpcy5fcG9zaXRpdmVJbnQocGFyYW1zLnBhZ2UsIDEpXG4gICAgICBjb25zdCBwZXJQYWdlID0gTWF0aC5taW4odGhpcy5fcG9zaXRpdmVJbnQocGFyYW1zLnBlclBhZ2UsIERFRkFVTFRfUEVSX1BBR0UpLCBNQVhfUEVSX1BBR0UpXG4gICAgICBjb25zdCB7c29ydENvbHVtbiwgc29ydERpcmVjdGlvbn0gPSB0aGlzLl9zYW5pdGl6ZVNvcnQocGFyYW1zLnNvcnQpXG4gICAgICBjb25zdCBzdG9yZSA9IHRoaXMuX3N0b3JlKClcbiAgICAgIGNvbnN0IGpvYnMgPSBhd2FpdCBzdG9yZS5saXN0Sm9icyh7am9iTmFtZSwgbGltaXQ6IHBlclBhZ2UsIG9mZnNldDogKHBhZ2UgLSAxKSAqIHBlclBhZ2UsIHNvcnRDb2x1bW4sIHNvcnREaXJlY3Rpb24sIHN0YXR1c30pXG4gICAgICBjb25zdCB0b3RhbCA9IGF3YWl0IHN0b3JlLmNvdW50Sm9icyh7am9iTmFtZSwgc3RhdHVzfSlcblxuICAgICAgYXdhaXQgdGhpcy5yZW5kZXIoe2pzb246IHtcbiAgICAgICAgam9iczogam9icy5tYXAoKGpvYikgPT4gdGhpcy5fc2VyaWFsaXplSm9iKGpvYikpLFxuICAgICAgICBwYWdpbmF0aW9uOiB7cGFnZSwgcGVyUGFnZSwgdG90YWwsIHRvdGFsUGFnZXM6IHBlclBhZ2UgPiAwID8gTWF0aC5jZWlsKHRvdGFsIC8gcGVyUGFnZSkgOiAwfVxuICAgICAgfX0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNob3cuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBzaG93KCkge1xuICAgIGF3YWl0IHRoaXMuX3Jlc3BvbmQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgam9iID0gYXdhaXQgdGhpcy5fc3RvcmUoKS5nZXRKb2IodGhpcy5wYXJhbXMoKS5pZClcblxuICAgICAgaWYgKCFqb2IpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZW5kZXIoe2pzb246IHtlcnJvcjogXCJub3RfZm91bmRcIn0sIHN0YXR1czogNDA0fSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMucmVuZGVyKHtqc29uOiB7am9iOiB0aGlzLl9zZXJpYWxpemVKb2Ioam9iKX19KVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzY2hlZHVsZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIHNjaGVkdWxlKCkge1xuICAgIGF3YWl0IHRoaXMuX3Jlc3BvbmQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2NoZWR1bGVkID0gYXdhaXQgdGhpcy5nZXRDb25maWd1cmF0aW9uKCkuZ2V0U2NoZWR1bGVkQmFja2dyb3VuZEpvYnNDb25maWcoKVxuXG4gICAgICBhd2FpdCB0aGlzLnJlbmRlcih7anNvbjoge3NjaGVkdWxlOiB0aGlzLl9zZXJpYWxpemVTY2hlZHVsZShzY2hlZHVsZWQpfX0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNlcmlhbGl6ZSBqb2IuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlJvd30gam9iIC0gSm9iIHJvdy5cbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsID8+fSAtIFNlcmlhbGl6ZWQgam9iIGZvciB0aGUgQVBJLlxuICAgKi9cbiAgX3NlcmlhbGl6ZUpvYihqb2IpIHtcbiAgICBjb25zdCByZWRhY3RBcmdzID0gQm9vbGVhbih0aGlzLl9tb3VudE9wdGlvbnMoKS5yZWRhY3RBcmdzKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFyZ3M6IHJlZGFjdEFyZ3MgPyB1bmRlZmluZWQgOiBqb2IuYXJncyxcbiAgICAgIGFyZ3NSZWRhY3RlZDogcmVkYWN0QXJncyxcbiAgICAgIGF0dGVtcHRzOiBqb2IuYXR0ZW1wdHMsXG4gICAgICBjb21wbGV0ZWRBdE1zOiBqb2IuY29tcGxldGVkQXRNcyxcbiAgICAgIGNyZWF0ZWRBdE1zOiBqb2IuY3JlYXRlZEF0TXMsXG4gICAgICBleGVjdXRpb25Nb2RlOiBqb2IuZXhlY3V0aW9uTW9kZSxcbiAgICAgIGZhaWxlZEF0TXM6IGpvYi5mYWlsZWRBdE1zLFxuICAgICAgaGFuZGVkT2ZmQXRNczogam9iLmhhbmRlZE9mZkF0TXMsXG4gICAgICBpZDogam9iLmlkLFxuICAgICAgam9iTmFtZTogam9iLmpvYk5hbWUsXG4gICAgICBsYXN0RXJyb3I6IGpvYi5sYXN0RXJyb3IsXG4gICAgICBtYXhSZXRyaWVzOiBqb2IubWF4UmV0cmllcyxcbiAgICAgIG9ycGhhbmVkQXRNczogam9iLm9ycGhhbmVkQXRNcyxcbiAgICAgIHNjaGVkdWxlZEF0TXM6IGpvYi5zY2hlZHVsZWRBdE1zLFxuICAgICAgc3RhdHVzOiBqb2Iuc3RhdHVzLFxuICAgICAgd29ya2VySWQ6IGpvYi53b3JrZXJJZFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNlcmlhbGl6ZSBzY2hlZHVsZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLlNjaGVkdWxlZEJhY2tncm91bmRKb2JzQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZH0gc2NoZWR1bGVkIC0gU2NoZWR1bGVkIGpvYnMgY29uZmlnLlxuICAgKiBAcmV0dXJucyB7QXJyYXk8UmVjb3JkPHN0cmluZywgPz4+fSAtIFNlcmlhbGl6ZWQgcmVjdXJyaW5nIGpvYnMuXG4gICAqL1xuICBfc2VyaWFsaXplU2NoZWR1bGUoc2NoZWR1bGVkKSB7XG4gICAgY29uc3Qgam9icyA9IHNjaGVkdWxlZD8uam9ic1xuXG4gICAgaWYgKCFqb2JzIHx8IHR5cGVvZiBqb2JzICE9PSBcIm9iamVjdFwiKSByZXR1cm4gW11cblxuICAgIGNvbnN0IHJlZGFjdEFyZ3MgPSBCb29sZWFuKHRoaXMuX21vdW50T3B0aW9ucygpLnJlZGFjdEFyZ3MpXG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoam9icykubWFwKChuYW1lKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IGpvYnNbbmFtZV0gfHwgLyoqIEB0eXBlIHs/fSAqLyAoe30pXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFyZ3M6IHJlZGFjdEFyZ3MgPyB1bmRlZmluZWQgOiAoZW50cnkuYXJncyB8fCBbXSksXG4gICAgICAgIGNyb246IGVudHJ5LmNyb24sXG4gICAgICAgIGVuYWJsZWQ6IGVudHJ5LmVuYWJsZWQgIT09IGZhbHNlLFxuICAgICAgICBldmVyeTogZW50cnkuZXZlcnksXG4gICAgICAgIGpvYk5hbWU6IHR5cGVvZiBlbnRyeS5jbGFzcyA9PT0gXCJmdW5jdGlvblwiID8gZW50cnkuY2xhc3MubmFtZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgb3B0aW9uczogZW50cnkub3B0aW9ucyB8fCB7fVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzYW5pdGl6ZSBzdGF0dXMuXG4gICAqIEBwYXJhbSB7P30gdmFsdWUgLSBSYXcgc3RhdHVzIHBhcmFtLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSAtIFZhbGlkIHN0YXR1cyBvciB1bmRlZmluZWQuXG4gICAqL1xuICBfc2FuaXRpemVTdGF0dXModmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIERBU0hCT0FSRF9TVEFUVVNFUy5pbmNsdWRlcyh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc2FuaXRpemUgc29ydC5cbiAgICogQHBhcmFtIHs/fSB2YWx1ZSAtIFJhdyBzb3J0IHBhcmFtIChlLmcuIFwiY3JlYXRlZEF0TXNcIiBvciBcIi1mYWlsZWRBdE1zXCIpLlxuICAgKiBAcmV0dXJucyB7e3NvcnRDb2x1bW46IHN0cmluZywgc29ydERpcmVjdGlvbjogXCJBU0NcIiB8IFwiREVTQ1wifX0gLSBOb3JtYWxpemVkIHNvcnQuXG4gICAqL1xuICBfc2FuaXRpemVTb3J0KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiB8fCB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7c29ydENvbHVtbjogXCJjcmVhdGVkQXRNc1wiLCBzb3J0RGlyZWN0aW9uOiBcIkRFU0NcIn1cbiAgICB9XG5cbiAgICBjb25zdCBkZXNjZW5kaW5nID0gdmFsdWUuc3RhcnRzV2l0aChcIi1cIilcbiAgICBjb25zdCBrZXkgPSBkZXNjZW5kaW5nID8gdmFsdWUuc2xpY2UoMSkgOiB2YWx1ZVxuICAgIGNvbnN0IHNvcnRDb2x1bW4gPSBTT1JUQUJMRV9LRVlTLmluY2x1ZGVzKGtleSkgPyBrZXkgOiBcImNyZWF0ZWRBdE1zXCJcblxuICAgIHJldHVybiB7c29ydENvbHVtbiwgc29ydERpcmVjdGlvbjogZGVzY2VuZGluZyA/IFwiREVTQ1wiIDogXCJBU0NcIn1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHBvc2l0aXZlIGludC5cbiAgICogQHBhcmFtIHs/fSB2YWx1ZSAtIFJhdyBudW1lcmljIHBhcmFtLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZmFsbGJhY2sgLSBGYWxsYmFjayB3aGVuIGludmFsaWQuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IC0gUG9zaXRpdmUgaW50ZWdlci5cbiAgICovXG4gIF9wb3NpdGl2ZUludCh2YWx1ZSwgZmFsbGJhY2spIHtcbiAgICBjb25zdCBudW1lcmljID0gTnVtYmVyKEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWVbMF0gOiB2YWx1ZSlcblxuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG51bWVyaWMpIHx8IG51bWVyaWMgPCAxKSByZXR1cm4gZmFsbGJhY2tcblxuICAgIHJldHVybiBNYXRoLmZsb29yKG51bWVyaWMpXG4gIH1cbn1cbiJdfQ==
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvd2ViL2NvbnRyb2xsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sVUFBVSxNQUFNLHFCQUFxQixDQUFBO0FBQzVDLE9BQU8sbUJBQW1CLE1BQU0sYUFBYSxDQUFBO0FBQzdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLG9CQUFvQixDQUFBO0FBQ3ZELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUE7QUFFMUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQTtBQUN0RixNQUFNLGFBQWEsR0FBRyxDQUFDLFVBQVUsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUE7QUFDbEgsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUE7QUFDM0IsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFBO0FBRXhCOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLG9DQUFxQyxTQUFRLFVBQVU7SUFDMUU7OztPQUdHO0lBQ0gsYUFBYTtRQUNYLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQTtRQUU3QyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDeEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQztnQkFDeEMsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFB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QUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxHQUFHLENBQUM7WUFBRSxPQUFPLFFBQVEsQ0FBQTtRQUU3RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDNUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBDb250cm9sbGVyIGZyb20gXCIuLi8uLi9jb250cm9sbGVyLmpzXCJcbmltcG9ydCBCYWNrZ3JvdW5kSm9ic1N0b3JlIGZyb20gXCIuLi9zdG9yZS5qc1wiXG5pbXBvcnQge2F1dGhvcml6ZUpvYnNSZXF1ZXN0fSBmcm9tIFwiLi9hdXRob3JpemF0aW9uLmpzXCJcbmltcG9ydCB7Z2V0Sm9ic01vdW50fSBmcm9tIFwiLi9yZWdpc3RyeS5qc1wiXG5cbmNvbnN0IERBU0hCT0FSRF9TVEFUVVNFUyA9IFtcInF1ZXVlZFwiLCBcImhhbmRlZF9vZmZcIiwgXCJjb21wbGV0ZWRcIiwgXCJmYWlsZWRcIiwgXCJvcnBoYW5lZFwiXVxuY29uc3QgU09SVEFCTEVfS0VZUyA9IFtcImF0dGVtcHRzXCIsIFwiY29tcGxldGVkQXRNc1wiLCBcImNyZWF0ZWRBdE1zXCIsIFwiZmFpbGVkQXRNc1wiLCBcImhhbmRlZE9mZkF0TXNcIiwgXCJzY2hlZHVsZWRBdE1zXCJdXG5jb25zdCBERUZBVUxUX1BFUl9QQUdFID0gMjVcbmNvbnN0IE1BWF9QRVJfUEFHRSA9IDEwMFxuXG4vKipcbiAqIFJlYWQtb25seSBIVFRQIEFQSSBiYWNraW5nIHRoZSBiYWNrZ3JvdW5kLWpvYnMgZGFzaGJvYXJkLiBNb3VudGVkIGJ5XG4gKiB7QGxpbmsgaW1wb3J0KFwiLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcyBhIHJvdXRlLXJlc29sdmVyIGhvb2sgc28gaXQgY2FuIHNoaXBcbiAqIGluc2lkZSB0aGUgdmVsb2Npb3VzIHBhY2thZ2UuIEV2ZXJ5IGFjdGlvbiBpcyBnYXRlZCBieSB7QGxpbmsgYXV0aG9yaXplSm9ic1JlcXVlc3R9LlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNCYWNrZ3JvdW5kSm9ic1dlYkNvbnRyb2xsZXIgZXh0ZW5kcyBDb250cm9sbGVyIHtcbiAgLyoqXG4gICAqIFJ1bnMgbW91bnQgb3B0aW9ucy5cbiAgICogQHJldHVybnMge2ltcG9ydChcIi4vcmVnaXN0cnkuanNcIikuSm9ic01vdW50T3B0aW9uc30gLSBPcHRpb25zIGZvciB0aGUgbW91bnQgdGhhdCBtYXRjaGVkIHRoaXMgcmVxdWVzdC5cbiAgICovXG4gIF9tb3VudE9wdGlvbnMoKSB7XG4gICAgY29uc3QgYXQgPSB0aGlzLnBhcmFtcygpLnZlbG9jaW91c0pvYnNNb3VudEF0XG5cbiAgICByZXR1cm4gZ2V0Sm9ic01vdW50KHRoaXMuZ2V0Q29uZmlndXJhdGlvbigpLCBhdCkgfHwge31cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHN0b3JlLlxuICAgKiBAcmV0dXJucyB7QmFja2dyb3VuZEpvYnNTdG9yZX0gLSBKb2JzIHN0b3JlIHNjb3BlZCB0byB0aGUgbW91bnQncyBkYXRhYmFzZS5cbiAgICovXG4gIF9zdG9yZSgpIHtcbiAgICBpZiAoIXRoaXMuX2pvYnNTdG9yZSkge1xuICAgICAgdGhpcy5fam9ic1N0b3JlID0gbmV3IEJhY2tncm91bmRKb2JzU3RvcmUoe1xuICAgICAgICBjb25maWd1cmF0aW9uOiB0aGlzLmdldENvbmZpZ3VyYXRpb24oKSxcbiAgICAgICAgZGF0YWJhc2VJZGVudGlmaWVyOiB0aGlzLl9tb3VudE9wdGlvbnMoKS5kYXRhYmFzZUlkZW50aWZpZXJcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2pvYnNTdG9yZVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgQ09SUyBoZWFkZXJzIHdoZW4gdGhlIHJlcXVlc3Qgb3JpZ2luIGlzIGFsbG93ZWQsIHNvIHRoZSBzdGFuZGFsb25lXG4gICAqIGJyb3dzZXIgZGFzaGJvYXJkIGNhbiByZWFkIHRoZSBBUEkgY3Jvc3Mtb3JpZ2luLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vcmVnaXN0cnkuanNcIikuSm9ic01vdW50T3B0aW9uc30gb3B0aW9ucyAtIE1vdW50IG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIF9hcHBseUNvcnNIZWFkZXJzKG9wdGlvbnMpIHtcbiAgICBjb25zdCBhbGxvd2VkT3JpZ2lucyA9IEFycmF5LmlzQXJyYXkob3B0aW9ucy5hbGxvd2VkT3JpZ2lucykgPyBvcHRpb25zLmFsbG93ZWRPcmlnaW5zIDogW11cblxuICAgIGlmIChhbGxvd2VkT3JpZ2lucy5sZW5ndGggPT09IDApIHJldHVyblxuXG4gICAgY29uc3Qgb3JpZ2luID0gdGhpcy5yZXF1ZXN0KCkub3JpZ2luKClcbiAgICBjb25zdCBhbGxvd0FsbCA9IGFsbG93ZWRPcmlnaW5zLmluY2x1ZGVzKFwiKlwiKVxuXG4gICAgaWYgKCFvcmlnaW4pIHJldHVyblxuICAgIGlmICghYWxsb3dBbGwgJiYgIWFsbG93ZWRPcmlnaW5zLmluY2x1ZGVzKG9yaWdpbikpIHJldHVyblxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLnJlc3BvbnNlKClcblxuICAgIHJlc3BvbnNlLnNldEhlYWRlcihcIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpblwiLCBhbGxvd0FsbCA/IFwiKlwiIDogb3JpZ2luKVxuICAgIHJlc3BvbnNlLnNldEhlYWRlcihcIlZhcnlcIiwgXCJPcmlnaW5cIilcbiAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzXCIsIFwiYXV0aG9yaXphdGlvbiwgY29udGVudC10eXBlXCIpXG4gICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kc1wiLCBcIkdFVCwgUE9TVCwgREVMRVRFLCBPUFRJT05TXCIpXG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBDT1JTIGhlYWRlcnMsIGF1dGhvcml6ZXMgdGhlIHJlcXVlc3QsIGFuZCBydW5zIHRoZSBhY3Rpb24gYm9keSBvbmx5XG4gICAqIHdoZW4gYXV0aG9yaXplZC4gUmVuZGVycyBhIDQwMSBvdGhlcndpc2UuIFRoZSBiYXNlIGNvbnRyb2xsZXIgaGFzIG5vXG4gICAqIGJlZm9yZS1hY3Rpb24gaGFsdGluZywgc28gYXV0aG9yaXphdGlvbiBpcyBlbmZvcmNlZCBoZXJlIHBlciBhY3Rpb24uXG4gICAqIEBwYXJhbSB7KCkgPT4gUHJvbWlzZTx2b2lkPn0gYWN0aW9uRm4gLSBBY3Rpb24gYm9keS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIF9yZXNwb25kKGFjdGlvbkZuKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX21vdW50T3B0aW9ucygpXG5cbiAgICB0aGlzLl9hcHBseUNvcnNIZWFkZXJzKG9wdGlvbnMpXG5cbiAgICBjb25zdCBhdXRob3JpemVkID0gYXdhaXQgYXV0aG9yaXplSm9ic1JlcXVlc3Qoe1xuICAgICAgYWJpbGl0eTogdGhpcy5jdXJyZW50QWJpbGl0eSgpLFxuICAgICAgY29uZmlndXJhdGlvbjogdGhpcy5nZXRDb25maWd1cmF0aW9uKCksXG4gICAgICBvcHRpb25zLFxuICAgICAgcmVxdWVzdDogdGhpcy5yZXF1ZXN0KClcbiAgICB9KVxuXG4gICAgaWYgKCFhdXRob3JpemVkKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlbmRlcih7anNvbjoge2Vycm9yOiBcInVuYXV0aG9yaXplZFwifSwgc3RhdHVzOiA0MDF9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYXdhaXQgYWN0aW9uRm4oKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgaGVhbHRoLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgaGVhbHRoKCkge1xuICAgIGF3YWl0IHRoaXMuX3Jlc3BvbmQoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5yZW5kZXIoe2pzb246IHtcbiAgICAgICAgY2FwYWJpbGl0aWVzOiB7YmFja2dyb3VuZEpvYkNvdW50RGVsdGFzOiAxfSxcbiAgICAgICAgb2s6IHRydWUsXG4gICAgICAgIHNlcnZpY2U6IFwidmVsb2Npb3VzLWJhY2tncm91bmQtam9ic1wiXG4gICAgICB9fSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc3RhdHMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBzdGF0cygpIHtcbiAgICBhd2FpdCB0aGlzLl9yZXNwb25kKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNuYXBzaG90ID0gYXdhaXQgdGhpcy5fc3RvcmUoKS5jb3VudFNuYXBzaG90KClcblxuICAgICAgYXdhaXQgdGhpcy5yZW5kZXIoe2pzb246IHtcbiAgICAgICAgY2FwYWJpbGl0aWVzOiB7YmFja2dyb3VuZEpvYkNvdW50RGVsdGFzOiAxfSxcbiAgICAgICAgY291bnRzOiBzbmFwc2hvdC5jb3VudHMsXG4gICAgICAgIGdlbmVyYXRlZEF0TXM6IERhdGUubm93KCksXG4gICAgICAgIHJldmlzaW9uOiBzbmFwc2hvdC5yZXZpc2lvbixcbiAgICAgICAgdG90YWw6IHNuYXBzaG90LnRvdGFsXG4gICAgICB9fSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgaW5kZXguXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBpbmRleCgpIHtcbiAgICBhd2FpdCB0aGlzLl9yZXNwb25kKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucGFyYW1zKClcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuX3Nhbml0aXplU3RhdHVzKHBhcmFtcy5zdGF0dXMpXG4gICAgICBjb25zdCBqb2JOYW1lID0gdHlwZW9mIHBhcmFtcy5qb2JOYW1lID09PSBcInN0cmluZ1wiICYmIHBhcmFtcy5qb2JOYW1lLmxlbmd0aCA+IDAgPyBwYXJhbXMuam9iTmFtZSA6IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcGFnZSA9IHRoaXMuX3Bvc2l0aXZlSW50KHBhcmFtcy5wYWdlLCAxKVxuICAgICAgY29uc3QgcGVyUGFnZSA9IE1hdGgubWluKHRoaXMuX3Bvc2l0aXZlSW50KHBhcmFtcy5wZXJQYWdlLCBERUZBVUxUX1BFUl9QQUdFKSwgTUFYX1BFUl9QQUdFKVxuICAgICAgY29uc3Qge3NvcnRDb2x1bW4sIHNvcnREaXJlY3Rpb259ID0gdGhpcy5fc2FuaXRpemVTb3J0KHBhcmFtcy5zb3J0KVxuICAgICAgY29uc3Qgc3RvcmUgPSB0aGlzLl9zdG9yZSgpXG4gICAgICBjb25zdCBqb2JzID0gYXdhaXQgc3RvcmUubGlzdEpvYnMoe2pvYk5hbWUsIGxpbWl0OiBwZXJQYWdlLCBvZmZzZXQ6IChwYWdlIC0gMSkgKiBwZXJQYWdlLCBzb3J0Q29sdW1uLCBzb3J0RGlyZWN0aW9uLCBzdGF0dXN9KVxuICAgICAgY29uc3QgdG90YWwgPSBhd2FpdCBzdG9yZS5jb3VudEpvYnMoe2pvYk5hbWUsIHN0YXR1c30pXG5cbiAgICAgIGF3YWl0IHRoaXMucmVuZGVyKHtqc29uOiB7XG4gICAgICAgIGpvYnM6IGpvYnMubWFwKChqb2IpID0+IHRoaXMuX3NlcmlhbGl6ZUpvYihqb2IpKSxcbiAgICAgICAgcGFnaW5hdGlvbjoge3BhZ2UsIHBlclBhZ2UsIHRvdGFsLCB0b3RhbFBhZ2VzOiBwZXJQYWdlID4gMCA/IE1hdGguY2VpbCh0b3RhbCAvIHBlclBhZ2UpIDogMH1cbiAgICAgIH19KVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzaG93LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgc2hvdygpIHtcbiAgICBhd2FpdCB0aGlzLl9yZXNwb25kKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGpvYiA9IGF3YWl0IHRoaXMuX3N0b3JlKCkuZ2V0Sm9iKHRoaXMucGFyYW1zKCkuaWQpXG5cbiAgICAgIGlmICgham9iKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVuZGVyKHtqc29uOiB7ZXJyb3I6IFwibm90X2ZvdW5kXCJ9LCBzdGF0dXM6IDQwNH0pXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLnJlbmRlcih7anNvbjoge2pvYjogdGhpcy5fc2VyaWFsaXplSm9iKGpvYil9fSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc2NoZWR1bGUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBzY2hlZHVsZSgpIHtcbiAgICBhd2FpdCB0aGlzLl9yZXNwb25kKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNjaGVkdWxlZCA9IGF3YWl0IHRoaXMuZ2V0Q29uZmlndXJhdGlvbigpLmdldFNjaGVkdWxlZEJhY2tncm91bmRKb2JzQ29uZmlnKClcblxuICAgICAgYXdhaXQgdGhpcy5yZW5kZXIoe2pzb246IHtzY2hlZHVsZTogdGhpcy5fc2VyaWFsaXplU2NoZWR1bGUoc2NoZWR1bGVkKX19KVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzZXJpYWxpemUgam9iLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JSb3d9IGpvYiAtIEpvYiByb3cuXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gLSBTZXJpYWxpemVkIGpvYiBmb3IgdGhlIEFQSS5cbiAgICovXG4gIF9zZXJpYWxpemVKb2Ioam9iKSB7XG4gICAgY29uc3QgcmVkYWN0QXJncyA9IEJvb2xlYW4odGhpcy5fbW91bnRPcHRpb25zKCkucmVkYWN0QXJncylcblxuICAgIHJldHVybiB7XG4gICAgICBhcmdzOiByZWRhY3RBcmdzID8gdW5kZWZpbmVkIDogam9iLmFyZ3MsXG4gICAgICBhcmdzUmVkYWN0ZWQ6IHJlZGFjdEFyZ3MsXG4gICAgICBhdHRlbXB0czogam9iLmF0dGVtcHRzLFxuICAgICAgY29tcGxldGVkQXRNczogam9iLmNvbXBsZXRlZEF0TXMsXG4gICAgICBjcmVhdGVkQXRNczogam9iLmNyZWF0ZWRBdE1zLFxuICAgICAgZXhlY3V0aW9uTW9kZTogam9iLmV4ZWN1dGlvbk1vZGUsXG4gICAgICBmYWlsZWRBdE1zOiBqb2IuZmFpbGVkQXRNcyxcbiAgICAgIGhhbmRlZE9mZkF0TXM6IGpvYi5oYW5kZWRPZmZBdE1zLFxuICAgICAgaWQ6IGpvYi5pZCxcbiAgICAgIGpvYk5hbWU6IGpvYi5qb2JOYW1lLFxuICAgICAgbGFzdEVycm9yOiBqb2IubGFzdEVycm9yLFxuICAgICAgbWF4UmV0cmllczogam9iLm1heFJldHJpZXMsXG4gICAgICBvcnBoYW5lZEF0TXM6IGpvYi5vcnBoYW5lZEF0TXMsXG4gICAgICBzY2hlZHVsZUtleTogam9iLnNjaGVkdWxlS2V5LFxuICAgICAgc2NoZWR1bGVkQXRNczogam9iLnNjaGVkdWxlZEF0TXMsXG4gICAgICBzdGF0dXM6IGpvYi5zdGF0dXMsXG4gICAgICB3b3JrZXJJZDogam9iLndvcmtlcklkXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc2VyaWFsaXplIHNjaGVkdWxlLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuU2NoZWR1bGVkQmFja2dyb3VuZEpvYnNDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkfSBzY2hlZHVsZWQgLSBTY2hlZHVsZWQgam9icyBjb25maWcuXG4gICAqIEByZXR1cm5zIHtBcnJheTxSZWNvcmQ8c3RyaW5nLCA/Pj59IC0gU2VyaWFsaXplZCByZWN1cnJpbmcgam9icy5cbiAgICovXG4gIF9zZXJpYWxpemVTY2hlZHVsZShzY2hlZHVsZWQpIHtcbiAgICBjb25zdCBqb2JzID0gc2NoZWR1bGVkPy5qb2JzXG5cbiAgICBpZiAoIWpvYnMgfHwgdHlwZW9mIGpvYnMgIT09IFwib2JqZWN0XCIpIHJldHVybiBbXVxuXG4gICAgY29uc3QgcmVkYWN0QXJncyA9IEJvb2xlYW4odGhpcy5fbW91bnRPcHRpb25zKCkucmVkYWN0QXJncylcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhqb2JzKS5tYXAoKG5hbWUpID0+IHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gam9ic1tuYW1lXSB8fCAvKiogQHR5cGUgez99ICovICh7fSlcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXJnczogcmVkYWN0QXJncyA/IHVuZGVmaW5lZCA6IChlbnRyeS5hcmdzIHx8IFtdKSxcbiAgICAgICAgY3JvbjogZW50cnkuY3JvbixcbiAgICAgICAgZW5hYmxlZDogZW50cnkuZW5hYmxlZCAhPT0gZmFsc2UsXG4gICAgICAgIGV2ZXJ5OiBlbnRyeS5ldmVyeSxcbiAgICAgICAgam9iTmFtZTogdHlwZW9mIGVudHJ5LmNsYXNzID09PSBcImZ1bmN0aW9uXCIgPyBlbnRyeS5jbGFzcy5uYW1lIDogdW5kZWZpbmVkLFxuICAgICAgICBuYW1lLFxuICAgICAgICBvcHRpb25zOiBlbnRyeS5vcHRpb25zIHx8IHt9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNhbml0aXplIHN0YXR1cy5cbiAgICogQHBhcmFtIHs/fSB2YWx1ZSAtIFJhdyBzdGF0dXMgcGFyYW0uXG4gICAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gVmFsaWQgc3RhdHVzIG9yIHVuZGVmaW5lZC5cbiAgICovXG4gIF9zYW5pdGl6ZVN0YXR1cyh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgREFTSEJPQVJEX1NUQVRVU0VTLmluY2x1ZGVzKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzYW5pdGl6ZSBzb3J0LlxuICAgKiBAcGFyYW0gez99IHZhbHVlIC0gUmF3IHNvcnQgcGFyYW0gKGUuZy4gXCJjcmVhdGVkQXRNc1wiIG9yIFwiLWZhaWxlZEF0TXNcIikuXG4gICAqIEByZXR1cm5zIHt7c29ydENvbHVtbjogc3RyaW5nLCBzb3J0RGlyZWN0aW9uOiBcIkFTQ1wiIHwgXCJERVNDXCJ9fSAtIE5vcm1hbGl6ZWQgc29ydC5cbiAgICovXG4gIF9zYW5pdGl6ZVNvcnQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtzb3J0Q29sdW1uOiBcImNyZWF0ZWRBdE1zXCIsIHNvcnREaXJlY3Rpb246IFwiREVTQ1wifVxuICAgIH1cblxuICAgIGNvbnN0IGRlc2NlbmRpbmcgPSB2YWx1ZS5zdGFydHNXaXRoKFwiLVwiKVxuICAgIGNvbnN0IGtleSA9IGRlc2NlbmRpbmcgPyB2YWx1ZS5zbGljZSgxKSA6IHZhbHVlXG4gICAgY29uc3Qgc29ydENvbHVtbiA9IFNPUlRBQkxFX0tFWVMuaW5jbHVkZXMoa2V5KSA/IGtleSA6IFwiY3JlYXRlZEF0TXNcIlxuXG4gICAgcmV0dXJuIHtzb3J0Q29sdW1uLCBzb3J0RGlyZWN0aW9uOiBkZXNjZW5kaW5nID8gXCJERVNDXCIgOiBcIkFTQ1wifVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcG9zaXRpdmUgaW50LlxuICAgKiBAcGFyYW0gez99IHZhbHVlIC0gUmF3IG51bWVyaWMgcGFyYW0uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmYWxsYmFjayAtIEZhbGxiYWNrIHdoZW4gaW52YWxpZC5cbiAgICogQHJldHVybnMge251bWJlcn0gLSBQb3NpdGl2ZSBpbnRlZ2VyLlxuICAgKi9cbiAgX3Bvc2l0aXZlSW50KHZhbHVlLCBmYWxsYmFjaykge1xuICAgIGNvbnN0IG51bWVyaWMgPSBOdW1iZXIoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZVswXSA6IHZhbHVlKVxuXG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobnVtZXJpYykgfHwgbnVtZXJpYyA8IDEpIHJldHVybiBmYWxsYmFja1xuXG4gICAgcmV0dXJuIE1hdGguZmxvb3IobnVtZXJpYylcbiAgfVxufVxuIl19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Runs advisory locks on the caller connection by default, using a dedicated
|
|
3
|
-
* lock connection
|
|
3
|
+
* lock connection when `dedicatedConnection` is requested or when a positive
|
|
4
|
+
* hold timeout needs separate ownership.
|
|
4
5
|
*/
|
|
5
6
|
export default class AdvisoryLockRunner {
|
|
6
7
|
/**
|
|
@@ -34,13 +35,17 @@ export default class AdvisoryLockRunner {
|
|
|
34
35
|
databaseIdentifier: string;
|
|
35
36
|
/**
|
|
36
37
|
* Runs a callback after acquiring the advisory lock, waiting up to `timeoutMs`.
|
|
37
|
-
* When
|
|
38
|
-
*
|
|
39
|
-
*
|
|
38
|
+
* When `dedicatedConnection` is true the lock is acquired on a spawned
|
|
39
|
+
* connection that is released after the callback finishes, while the callback
|
|
40
|
+
* itself still runs against the caller/model connection. When a `holdTimeoutMs`
|
|
41
|
+
* is set the callback receives a `TimeoutControl` from awaitery for cooperative
|
|
42
|
+
* cancellation (`control.check()`, `control.signal`, `control.timedOut`,
|
|
43
|
+
* `control.remaining()`); a dedicated connection is also used so timeout
|
|
44
|
+
* cleanup can release the lock even if callback database work is stuck.
|
|
40
45
|
* @template T
|
|
41
46
|
* @param {string} name - Lock name.
|
|
42
47
|
* @param {(args?: {control: import("awaitery/build/timeout.js").TimeoutControl}) => Promise<T>} callback - Callback to invoke while the lock is held.
|
|
43
|
-
* @param {{timeoutMs?: number | null, holdTimeoutMs?: number | null}} [args] - Lock and hold timeout options.
|
|
48
|
+
* @param {{timeoutMs?: number | null, holdTimeoutMs?: number | null, dedicatedConnection?: boolean}} [args] - Lock and hold timeout options.
|
|
44
49
|
* @returns {Promise<T>} - Resolves with the callback result.
|
|
45
50
|
*/
|
|
46
51
|
withAdvisoryLock<T>(name: string, callback: (args?: {
|
|
@@ -48,21 +53,26 @@ export default class AdvisoryLockRunner {
|
|
|
48
53
|
}) => Promise<T>, args?: {
|
|
49
54
|
timeoutMs?: number | null;
|
|
50
55
|
holdTimeoutMs?: number | null;
|
|
56
|
+
dedicatedConnection?: boolean;
|
|
51
57
|
}): Promise<T>;
|
|
52
58
|
/**
|
|
53
59
|
* Runs a callback only if the advisory lock can be acquired immediately.
|
|
54
|
-
* When
|
|
55
|
-
*
|
|
60
|
+
* When `dedicatedConnection` is true the lock is acquired on a spawned
|
|
61
|
+
* connection that is released after the callback finishes, while the callback
|
|
62
|
+
* itself still runs against the caller/model connection. When a `holdTimeoutMs`
|
|
63
|
+
* is set the callback receives a `TimeoutControl` from awaitery for cooperative
|
|
64
|
+
* cancellation.
|
|
56
65
|
* @template T
|
|
57
66
|
* @param {string} name - Lock name.
|
|
58
67
|
* @param {(args?: {control: import("awaitery/build/timeout.js").TimeoutControl}) => Promise<T>} callback - Callback to invoke while the lock is held.
|
|
59
|
-
* @param {{holdTimeoutMs?: number | null}} [args] - Hold timeout options.
|
|
68
|
+
* @param {{holdTimeoutMs?: number | null, dedicatedConnection?: boolean}} [args] - Hold timeout options.
|
|
60
69
|
* @returns {Promise<T>} - Resolves with the callback result.
|
|
61
70
|
*/
|
|
62
71
|
withAdvisoryLockOrFail<T>(name: string, callback: (args?: {
|
|
63
72
|
control: import("awaitery/build/timeout.js").TimeoutControl;
|
|
64
73
|
}) => Promise<T>, args?: {
|
|
65
74
|
holdTimeoutMs?: number | null;
|
|
75
|
+
dedicatedConnection?: boolean;
|
|
66
76
|
}): Promise<T>;
|
|
67
77
|
/**
|
|
68
78
|
* Runs the lock holder callback and releases the lock from its owning connection.
|
|
@@ -79,17 +89,20 @@ export default class AdvisoryLockRunner {
|
|
|
79
89
|
name: string;
|
|
80
90
|
}): Promise<T>;
|
|
81
91
|
/**
|
|
82
|
-
* Runs lock work on the caller connection unless
|
|
83
|
-
* its own lock connection.
|
|
92
|
+
* Runs lock work on the caller connection unless `dedicatedConnection` is
|
|
93
|
+
* requested or a positive hold timeout needs its own lock connection.
|
|
84
94
|
* @template T
|
|
85
|
-
* @param {number | null
|
|
95
|
+
* @param {{dedicatedConnection?: boolean, holdTimeoutMs?: number | null}} args - Lock connection options.
|
|
86
96
|
* @param {(connection: import("./drivers/base.js").default) => Promise<T>} callback - Callback receiving the connection that owns the advisory lock.
|
|
87
97
|
* @returns {Promise<T>} - Resolves with the callback result.
|
|
88
98
|
*/
|
|
89
|
-
withLockConnection<T>(
|
|
99
|
+
withLockConnection<T>(args: {
|
|
100
|
+
dedicatedConnection?: boolean;
|
|
101
|
+
holdTimeoutMs?: number | null;
|
|
102
|
+
}, callback: (connection: import("./drivers/base.js").default) => Promise<T>): Promise<T>;
|
|
90
103
|
/**
|
|
91
|
-
* Spawns a
|
|
92
|
-
* the spawned driver owns the underlying physical connection.
|
|
104
|
+
* Spawns a dedicated lock connection and closes it after lock work completes
|
|
105
|
+
* when the spawned driver owns the underlying physical connection.
|
|
93
106
|
* @template T
|
|
94
107
|
* @param {(connection: import("./drivers/base.js").default) => Promise<T>} callback - Callback that receives the dedicated lock connection.
|
|
95
108
|
* @returns {Promise<T>} - Resolves with the callback result.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advisory-lock-runner.d.ts","sourceRoot":"","sources":["../../../src/database/advisory-lock-runner.js"],"names":[],"mappings":"AAoDA
|
|
1
|
+
{"version":3,"file":"advisory-lock-runner.d.ts","sourceRoot":"","sources":["../../../src/database/advisory-lock-runner.js"],"names":[],"mappings":"AAoDA;;;;GAIG;AACH;IA6HE;;;;;;;;;;;;;OAaG;IACH,sCANa,CAAC,QACH,MAAM,YACN,CAAC,IAAI,CAAC,EAAE;QAAC,OAAO,EAAE,OAAO,2BAA2B,EAAE,cAAc,CAAA;KAAC,KAAK,OAAO,CAAC,CAAC,CAAC,kBACpF,MAAM,GAAG,IAAI,GACX,OAAO,CAAC,CAAC,CAAC,CAwBtB;IAhKD;;;OAGG;IACH,uEAFW;QAAC,aAAa,EAAE,OAAO,qBAAqB,EAAE,OAAO,CAAC;QAAC,kBAAkB,EAAE,MAAM,OAAO,mBAAmB,EAAE,OAAO,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAC,EAM3J;IAHC,qDAAkC;IAClC,0BAJ0F,OAAO,mBAAmB,EAAE,OAAO,CAIjF;IAC5C,2BAA4C;IAG9C;;;;;;;;;;;;;;OAcG;IACH,iBANa,CAAC,QACH,MAAM,YACN,CAAC,IAAI,CAAC,EAAE;QAAC,OAAO,EAAE,OAAO,2BAA2B,EAAE,cAAc,CAAA;KAAC,KAAK,OAAO,CAAC,CAAC,CAAC,SACpF;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAC,GACvF,OAAO,CAAC,CAAC,CAAC,CAYtB;IAED;;;;;;;;;;;;OAYG;IACH,uBANa,CAAC,QACH,MAAM,YACN,CAAC,IAAI,CAAC,EAAE;QAAC,OAAO,EAAE,OAAO,2BAA2B,EAAE,cAAc,CAAA;KAAC,KAAK,OAAO,CAAC,CAAC,CAAC,SACpF;QAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAC,GAC5D,OAAO,CAAC,CAAC,CAAC,CAYtB;IAED;;;;;OAKG;IACH,kBAJa,CAAC,iDACH;QAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE;YAAC,OAAO,EAAE,OAAO,2BAA2B,EAAE,cAAc,CAAA;SAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;QAAC,UAAU,EAAE,OAAO,mBAAmB,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,GAC5L,OAAO,CAAC,CAAC,CAAC,CAQtB;IAED;;;;;;;OAOG;IACH,mBALa,CAAC,QACH;QAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAC,YAC9D,CAAC,UAAU,EAAE,OAAO,mBAAmB,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAC7D,OAAO,CAAC,CAAC,CAAC,CAUtB;IAED;;;;;;OAMG;IACH,wBAJa,CAAC,YACH,CAAC,UAAU,EAAE,OAAO,mBAAmB,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAC7D,OAAO,CAAC,CAAC,CAAC,CAuBtB;CAuCF;AAvMD;;GAEG;AACH;IACE;;;;OAIG;IACH,qBAHW,MAAM,YACN;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,EAMxB;IADC,iBAAoB;CAEvB;AAED;;GAEG;AACH;IACE;;;;OAIG;IACH,qBAHW,MAAM,YACN;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,EAMxB;IADC,iBAAoB;CAEvB;AA9CD;;GAEG;AACH;IACE;;;;OAIG;IACH,qBAHW,MAAM,YACN;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,EAMxB;IADC,iBAAoB;CAEvB"}
|