velocious 1.0.601 → 1.0.603

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 (80) hide show
  1. package/README.md +18 -7
  2. package/build/database/drivers/base.js +191 -39
  3. package/build/database/drivers/mysql/deadlock-diagnostic-parser.js +227 -0
  4. package/build/database/drivers/mysql/index.js +21 -30
  5. package/build/database/live-query.js +4 -1
  6. package/build/database/operation.js +9 -0
  7. package/build/database/pool/async-tracked-multi-connection.js +10 -15
  8. package/build/database/pool/base.js +19 -2
  9. package/build/database/record/index.js +50 -2
  10. package/build/database/record-changes.js +18 -4
  11. package/build/src/database/drivers/base.d.ts +110 -3
  12. package/build/src/database/drivers/base.d.ts.map +1 -1
  13. package/build/src/database/drivers/base.js +175 -37
  14. package/build/src/database/drivers/mysql/deadlock-diagnostic-parser.d.ts +80 -0
  15. package/build/src/database/drivers/mysql/deadlock-diagnostic-parser.d.ts.map +1 -0
  16. package/build/src/database/drivers/mysql/deadlock-diagnostic-parser.js +196 -0
  17. package/build/src/database/drivers/mysql/index.d.ts +21 -2
  18. package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
  19. package/build/src/database/drivers/mysql/index.js +19 -28
  20. package/build/src/database/live-query.d.ts +5 -0
  21. package/build/src/database/live-query.d.ts.map +1 -1
  22. package/build/src/database/live-query.js +4 -2
  23. package/build/src/database/operation.d.ts +5 -0
  24. package/build/src/database/operation.d.ts.map +1 -1
  25. package/build/src/database/operation.js +9 -1
  26. package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
  27. package/build/src/database/pool/async-tracked-multi-connection.js +11 -16
  28. package/build/src/database/pool/base.d.ts +7 -0
  29. package/build/src/database/pool/base.d.ts.map +1 -1
  30. package/build/src/database/pool/base.js +17 -2
  31. package/build/src/database/record/index.d.ts +36 -0
  32. package/build/src/database/record/index.d.ts.map +1 -1
  33. package/build/src/database/record/index.js +43 -3
  34. package/build/src/database/record-changes.d.ts +9 -1
  35. package/build/src/database/record-changes.d.ts.map +1 -1
  36. package/build/src/database/record-changes.js +18 -5
  37. package/build/src/sync/local-mutation-log.d.ts +7 -0
  38. package/build/src/sync/local-mutation-log.d.ts.map +1 -1
  39. package/build/src/sync/local-mutation-log.js +17 -1
  40. package/build/src/sync/sync-api-client-types.d.ts +8 -4
  41. package/build/src/sync/sync-api-client-types.d.ts.map +1 -1
  42. package/build/src/sync/sync-api-client-types.js +3 -3
  43. package/build/src/sync/sync-client-types.d.ts +25 -0
  44. package/build/src/sync/sync-client-types.d.ts.map +1 -1
  45. package/build/src/sync/sync-client-types.js +6 -1
  46. package/build/src/sync/sync-client.d.ts +43 -1
  47. package/build/src/sync/sync-client.d.ts.map +1 -1
  48. package/build/src/sync/sync-client.js +187 -37
  49. package/build/src/sync/sync-realtime-bridge.js +2 -2
  50. package/build/src/sync/sync-scope-store.d.ts +15 -1
  51. package/build/src/sync/sync-scope-store.d.ts.map +1 -1
  52. package/build/src/sync/sync-scope-store.js +31 -4
  53. package/build/src/tenants/tenant-handle.d.ts +81 -0
  54. package/build/src/tenants/tenant-handle.d.ts.map +1 -1
  55. package/build/src/tenants/tenant-handle.js +143 -1
  56. package/build/sync/local-mutation-log.js +17 -0
  57. package/build/sync/sync-api-client-types.js +2 -2
  58. package/build/sync/sync-client-types.js +5 -0
  59. package/build/sync/sync-client.js +198 -38
  60. package/build/sync/sync-realtime-bridge.js +1 -1
  61. package/build/sync/sync-scope-store.js +32 -3
  62. package/build/tenants/tenant-handle.js +165 -0
  63. package/build/tsconfig.tsbuildinfo +1 -1
  64. package/package.json +1 -1
  65. package/src/database/drivers/base.js +191 -39
  66. package/src/database/drivers/mysql/deadlock-diagnostic-parser.js +227 -0
  67. package/src/database/drivers/mysql/index.js +21 -30
  68. package/src/database/live-query.js +4 -1
  69. package/src/database/operation.js +9 -0
  70. package/src/database/pool/async-tracked-multi-connection.js +10 -15
  71. package/src/database/pool/base.js +19 -2
  72. package/src/database/record/index.js +50 -2
  73. package/src/database/record-changes.js +18 -4
  74. package/src/sync/local-mutation-log.js +17 -0
  75. package/src/sync/sync-api-client-types.js +2 -2
  76. package/src/sync/sync-client-types.js +5 -0
  77. package/src/sync/sync-client.js +198 -38
  78. package/src/sync/sync-realtime-bridge.js +1 -1
  79. package/src/sync/sync-scope-store.js +32 -3
  80. package/src/tenants/tenant-handle.js +165 -0
@@ -0,0 +1,80 @@
1
+ export type InnodbDeadlockLockNode = {
2
+ /**
3
+ * - Opaque index identity.
4
+ */
5
+ indexFingerprint: string;
6
+ /**
7
+ * - Allowlisted lock mode.
8
+ */
9
+ lockMode: string;
10
+ /**
11
+ * - Lock relationship to its transaction.
12
+ */
13
+ state: "conflicting" | "held" | "waiting";
14
+ /**
15
+ * - Opaque table identity.
16
+ */
17
+ tableFingerprint: string;
18
+ };
19
+ export type InnodbDeadlockTransactionNode = {
20
+ /**
21
+ * - Bounded counterparty conflict edges whose owner is unavailable.
22
+ */
23
+ conflictingLocks: InnodbDeadlockLockNode[];
24
+ /**
25
+ * - Bounded locks owned or awaited by this transaction.
26
+ */
27
+ locks: InnodbDeadlockLockNode[];
28
+ /**
29
+ * - Report-local transaction ordinal.
30
+ */
31
+ ordinal: number;
32
+ };
33
+ export type InnodbDeadlockParserState = {
34
+ /**
35
+ * - Current bounded transaction node.
36
+ */
37
+ currentTransaction: InnodbDeadlockTransactionNode | undefined;
38
+ /**
39
+ * - Current lock section state.
40
+ */
41
+ currentLockState: "conflicting" | "held" | "waiting" | undefined;
42
+ /**
43
+ * - Total emitted lock nodes.
44
+ */
45
+ lockRecordCount: number;
46
+ /**
47
+ * - Whether a lock-node bound was reached.
48
+ */
49
+ lockRecordsTruncated: boolean;
50
+ /**
51
+ * - Bounded transaction nodes.
52
+ */
53
+ transactionNodes: InnodbDeadlockTransactionNode[];
54
+ /**
55
+ * - Whether the transaction-node bound was reached.
56
+ */
57
+ transactionNodesTruncated: boolean;
58
+ /**
59
+ * - Transaction headers observed in the bounded section.
60
+ */
61
+ transactions: number;
62
+ /**
63
+ * - Victim ordinal.
64
+ */
65
+ victimTransaction: number | null;
66
+ };
67
+ /**
68
+ * Parses a bounded InnoDB latest-deadlock section into safe structural context.
69
+ * @param {string} status - SHOW ENGINE INNODB STATUS text.
70
+ * @returns {{lockRecordsTruncated: boolean, sectionTruncated: boolean, transactionNodes: InnodbDeadlockTransactionNode[], transactionNodesTruncated: boolean, transactions: number, victimTransaction: number | null}} - Structural deadlock summary.
71
+ */
72
+ export default function parseInnodbDeadlockSummary(status: string): {
73
+ lockRecordsTruncated: boolean;
74
+ sectionTruncated: boolean;
75
+ transactionNodes: InnodbDeadlockTransactionNode[];
76
+ transactionNodesTruncated: boolean;
77
+ transactions: number;
78
+ victimTransaction: number | null;
79
+ };
80
+ //# sourceMappingURL=deadlock-diagnostic-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deadlock-diagnostic-parser.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/mysql/deadlock-diagnostic-parser.js"],"names":[],"mappings":"AAIG,YAAkB,sBAAsB,GACxC;;;;IAAmB,gBAAgB,EAAxB,MAAM,CACjB;;;;IAAmB,QAAQ,EAAhB,MAAM,CACjB;;;;IAA+C,KAAK,EAAzC,aAAa,GAAG,MAAM,GAAG,SAAS,CAC7C;;;;IAAmB,gBAAgB,EAAxB,MAAM,CACnB;CAAA,CAAA;AAIE,YAAkB,6BAA6B,GAC/C;;;;IAAqC,gBAAgB,EAA1C,sBAAsB,EAAE,CACnC;;;;IAAqC,KAAK,EAA/B,sBAAsB,EAAE,CACnC;;;;IAAmB,OAAO,EAAf,MAAM,CACnB;CAAA,CAAA;AAIE,YAAkB,yBAAyB,GAC3C;;;;IAAsD,kBAAkB,EAA7D,6BAA6B,GAAG,SAAS,CACpD;;;;IAA2D,gBAAgB,EAAhE,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CACzD;;;;IAAmB,eAAe,EAAvB,MAAM,CACjB;;;;IAAoB,oBAAoB,EAA7B,OAAO,CAClB;;;;IAA4C,gBAAgB,EAAjD,6BAA6B,EAAE,CAC1C;;;;IAAoB,yBAAyB,EAAlC,OAAO,CAClB;;;;IAAmB,YAAY,EAApB,MAAM,CACjB;;;;IAA0B,iBAAiB,EAAhC,MAAM,GAAG,IAAI,CAC1B;CAAA,CAAA;AAWD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAAC,MAAM,EAH9C,MAG8C,GAF5C;IAAC,oBAAoB,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,6BAA6B,EAAE,CAAC;IAAC,yBAAyB,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAC,CA8CrN"}
@@ -0,0 +1,196 @@
1
+ // @ts-check
2
+ /**
3
+ * InnodbDeadlockLockNode type.
4
+ * @typedef {object} InnodbDeadlockLockNode
5
+ * @property {string} indexFingerprint - Opaque index identity.
6
+ * @property {string} lockMode - Allowlisted lock mode.
7
+ * @property {"conflicting" | "held" | "waiting"} state - Lock relationship to its transaction.
8
+ * @property {string} tableFingerprint - Opaque table identity.
9
+ */
10
+ /**
11
+ * InnodbDeadlockTransactionNode type.
12
+ * @typedef {object} InnodbDeadlockTransactionNode
13
+ * @property {InnodbDeadlockLockNode[]} conflictingLocks - Bounded counterparty conflict edges whose owner is unavailable.
14
+ * @property {InnodbDeadlockLockNode[]} locks - Bounded locks owned or awaited by this transaction.
15
+ * @property {number} ordinal - Report-local transaction ordinal.
16
+ */
17
+ /**
18
+ * InnodbDeadlockParserState type.
19
+ * @typedef {object} InnodbDeadlockParserState
20
+ * @property {InnodbDeadlockTransactionNode | undefined} currentTransaction - Current bounded transaction node.
21
+ * @property {"conflicting" | "held" | "waiting" | undefined} currentLockState - Current lock section state.
22
+ * @property {number} lockRecordCount - Total emitted lock nodes.
23
+ * @property {boolean} lockRecordsTruncated - Whether a lock-node bound was reached.
24
+ * @property {InnodbDeadlockTransactionNode[]} transactionNodes - Bounded transaction nodes.
25
+ * @property {boolean} transactionNodesTruncated - Whether the transaction-node bound was reached.
26
+ * @property {number} transactions - Transaction headers observed in the bounded section.
27
+ * @property {number | null} victimTransaction - Victim ordinal.
28
+ */
29
+ import sha256Hex from "../../../utils/sha256-hex.js";
30
+ const INNODB_STATUS_SCAN_MAX_CHARS = 65536;
31
+ const INNODB_DEADLOCK_SECTION_MAX_CHARS = 16384;
32
+ const INNODB_DEADLOCK_TRANSACTION_MAX = 8;
33
+ const INNODB_DEADLOCK_LOCKS_PER_TRANSACTION_MAX = 8;
34
+ const INNODB_DEADLOCK_LOCK_RECORD_MAX = 32;
35
+ const INNODB_DEADLOCK_LINE_MAX_CHARS = 1024;
36
+ /**
37
+ * Parses a bounded InnoDB latest-deadlock section into safe structural context.
38
+ * @param {string} status - SHOW ENGINE INNODB STATUS text.
39
+ * @returns {{lockRecordsTruncated: boolean, sectionTruncated: boolean, transactionNodes: InnodbDeadlockTransactionNode[], transactionNodesTruncated: boolean, transactions: number, victimTransaction: number | null}} - Structural deadlock summary.
40
+ */
41
+ export default function parseInnodbDeadlockSummary(status) {
42
+ const { candidate, sectionTruncated } = boundedDeadlockSection(status);
43
+ /** @type {InnodbDeadlockParserState} */
44
+ const state = {
45
+ currentTransaction: undefined,
46
+ currentLockState: undefined,
47
+ lockRecordCount: 0,
48
+ lockRecordsTruncated: false,
49
+ transactionNodes: [],
50
+ transactionNodesTruncated: false,
51
+ transactions: 0,
52
+ victimTransaction: null
53
+ };
54
+ for (const line of candidate.split(/\r?\n/)) {
55
+ const trimmed = line.slice(0, INNODB_DEADLOCK_LINE_MAX_CHARS).trim();
56
+ const transactionOrdinal = transactionHeaderOrdinal(trimmed);
57
+ if (transactionOrdinal !== undefined) {
58
+ startTransactionNode(state, transactionOrdinal);
59
+ continue;
60
+ }
61
+ const lockStateMarker = transactionLockStateMarker(trimmed, state.currentTransaction);
62
+ if (lockStateMarker.matched) {
63
+ state.currentLockState = lockStateMarker.state;
64
+ continue;
65
+ }
66
+ const victimOrdinal = victimTransactionOrdinal(trimmed);
67
+ if (victimOrdinal !== undefined)
68
+ state.victimTransaction = victimOrdinal;
69
+ appendLockNode(state, trimmed);
70
+ }
71
+ return {
72
+ lockRecordsTruncated: state.lockRecordsTruncated,
73
+ sectionTruncated,
74
+ transactionNodes: state.transactionNodes,
75
+ transactionNodesTruncated: state.transactionNodesTruncated,
76
+ transactions: state.transactions,
77
+ victimTransaction: state.victimTransaction
78
+ };
79
+ }
80
+ /**
81
+ * Extracts and caps the latest-deadlock section.
82
+ * @param {string} status - Raw server status.
83
+ * @returns {{candidate: string, sectionTruncated: boolean}} - Bounded candidate and truncation state.
84
+ */
85
+ function boundedDeadlockSection(status) {
86
+ const scannedStatus = status.slice(0, INNODB_STATUS_SCAN_MAX_CHARS);
87
+ const deadlockStart = scannedStatus.indexOf("LATEST DETECTED DEADLOCK");
88
+ const availableSection = deadlockStart >= 0 ? scannedStatus.slice(deadlockStart) : "";
89
+ const boundedSection = availableSection.slice(0, INNODB_DEADLOCK_SECTION_MAX_CHARS);
90
+ const sectionEndMatch = /\n-{10,}\r?\nTRANSACTIONS\r?\n-{10,}/.exec(boundedSection);
91
+ const scannedStatusTruncated = status.length > scannedStatus.length;
92
+ return {
93
+ candidate: sectionEndMatch ? boundedSection.slice(0, sectionEndMatch.index) : boundedSection,
94
+ sectionTruncated: !sectionEndMatch && deadlockStart >= 0 && (availableSection.length > boundedSection.length || scannedStatusTruncated)
95
+ };
96
+ }
97
+ /**
98
+ * Returns a fixed-format transaction header ordinal.
99
+ * @param {string} line - Bounded status line.
100
+ * @returns {number | undefined} - Transaction ordinal.
101
+ */
102
+ function transactionHeaderOrdinal(line) {
103
+ const match = /^\*\*\* \((\d{1,6})\) TRANSACTION:$/.exec(line);
104
+ return match ? Number(match[1]) : undefined;
105
+ }
106
+ /**
107
+ * Starts a bounded transaction node.
108
+ * @param {InnodbDeadlockParserState} state - Parser state.
109
+ * @param {number} ordinal - Transaction ordinal.
110
+ * @returns {void}
111
+ */
112
+ function startTransactionNode(state, ordinal) {
113
+ state.transactions++;
114
+ state.currentLockState = undefined;
115
+ if (state.transactionNodes.length >= INNODB_DEADLOCK_TRANSACTION_MAX) {
116
+ state.currentTransaction = undefined;
117
+ state.transactionNodesTruncated = true;
118
+ return;
119
+ }
120
+ state.currentTransaction = { conflictingLocks: [], locks: [], ordinal };
121
+ state.transactionNodes.push(state.currentTransaction);
122
+ }
123
+ /**
124
+ * Parses a fixed-format held/waiting marker for the current transaction.
125
+ * @param {string} line - Bounded status line.
126
+ * @param {InnodbDeadlockTransactionNode | undefined} currentTransaction - Current transaction.
127
+ * @returns {{matched: boolean, state: "conflicting" | "held" | "waiting" | undefined}} - Marker result.
128
+ */
129
+ function transactionLockStateMarker(line, currentTransaction) {
130
+ const numberedMatch = /^\*\*\* \((\d{1,6})\) (HOLDS THE LOCK\(S\)|WAITING FOR THIS LOCK TO BE GRANTED):$/.exec(line);
131
+ if (numberedMatch) {
132
+ if (!currentTransaction || currentTransaction.ordinal != Number(numberedMatch[1]))
133
+ return { matched: true, state: undefined };
134
+ return { matched: true, state: numberedMatch[2] == "HOLDS THE LOCK(S)" ? "held" : "waiting" };
135
+ }
136
+ const unnumberedMatch = /^\*\*\* (WAITING FOR THIS LOCK TO BE GRANTED|CONFLICTING WITH):$/.exec(line);
137
+ if (!unnumberedMatch)
138
+ return { matched: false, state: undefined };
139
+ if (!currentTransaction)
140
+ return { matched: true, state: undefined };
141
+ return { matched: true, state: unnumberedMatch[1] == "CONFLICTING WITH" ? "conflicting" : "waiting" };
142
+ }
143
+ /**
144
+ * Returns a fixed-format victim ordinal.
145
+ * @param {string} line - Bounded status line.
146
+ * @returns {number | undefined} - Victim ordinal.
147
+ */
148
+ function victimTransactionOrdinal(line) {
149
+ const match = /^\*\*\* WE ROLL BACK TRANSACTION \((\d{1,6})\)$/.exec(line);
150
+ return match ? Number(match[1]) : undefined;
151
+ }
152
+ /**
153
+ * Appends one bounded, fixed-format lock node when the line is eligible.
154
+ * @param {InnodbDeadlockParserState} state - Parser state.
155
+ * @param {string} line - Bounded status line.
156
+ * @returns {void}
157
+ */
158
+ function appendLockNode(state, line) {
159
+ if (!state.currentTransaction || !state.currentLockState || !line.startsWith("RECORD LOCKS "))
160
+ return;
161
+ if (state.lockRecordCount >= INNODB_DEADLOCK_LOCK_RECORD_MAX ||
162
+ state.currentTransaction.locks.length + state.currentTransaction.conflictingLocks.length >= INNODB_DEADLOCK_LOCKS_PER_TRANSACTION_MAX) {
163
+ state.lockRecordsTruncated = true;
164
+ return;
165
+ }
166
+ const lock = deadlockLockNode(line, state.currentLockState);
167
+ if (!lock)
168
+ return;
169
+ if (state.currentLockState == "conflicting") {
170
+ state.currentTransaction.conflictingLocks.push(lock);
171
+ }
172
+ else {
173
+ state.currentTransaction.locks.push(lock);
174
+ }
175
+ state.lockRecordCount++;
176
+ }
177
+ /**
178
+ * Parses one fixed-format RECORD LOCKS line into safe structural fields.
179
+ * @param {string} line - One bounded InnoDB status line.
180
+ * @param {"conflicting" | "held" | "waiting"} state - Lock relationship to its transaction.
181
+ * @returns {InnodbDeadlockLockNode | undefined} - Safe lock node.
182
+ */
183
+ function deadlockLockNode(line, state) {
184
+ const identifier = "(?:`(?:``|[^`\\r\\n]){1,128}`|[A-Za-z0-9_$-]{1,128})";
185
+ const tableIdentifier = `(?:${identifier}\\.)?${identifier}`;
186
+ const lockMatch = new RegExp(`^RECORD LOCKS .{1,512}? index (${identifier}) of table (${tableIdentifier}) trx id \\S{1,64}(?: \\S{1,64})? lock_mode (X|S|IX|IS|AUTO_INC)(?:\\s|$)`).exec(line);
187
+ if (!lockMatch)
188
+ return undefined;
189
+ return {
190
+ indexFingerprint: `sha256:${sha256Hex(`innodb-index:v1\0${lockMatch[1]}`)}`,
191
+ lockMode: lockMatch[3],
192
+ state,
193
+ tableFingerprint: `sha256:${sha256Hex(`innodb-table:v1\0${lockMatch[2]}`)}`
194
+ };
195
+ }
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVhZGxvY2stZGlhZ25vc3RpYy1wYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9teXNxbC9kZWFkbG9jay1kaWFnbm9zdGljLXBhcnNlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVo7Ozs7Ozs7R0FPRztBQUVIOzs7Ozs7R0FNRztBQUVIOzs7Ozs7Ozs7OztHQVdHO0FBRUgsT0FBTyxTQUFTLE1BQU0sOEJBQThCLENBQUE7QUFFcEQsTUFBTSw0QkFBNEIsR0FBRyxLQUFLLENBQUE7QUFDMUMsTUFBTSxpQ0FBaUMsR0FBRyxLQUFLLENBQUE7QUFDL0MsTUFBTSwrQkFBK0IsR0FBRyxDQUFDLENBQUE7QUFDekMsTUFBTSx5Q0FBeUMsR0FBRyxDQUFDLENBQUE7QUFDbkQsTUFBTSwrQkFBK0IsR0FBRyxFQUFFLENBQUE7QUFDMUMsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLENBQUE7QUFFM0M7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxPQUFPLFVBQVUsMEJBQTBCLENBQUMsTUFBTTtJQUN2RCxNQUFNLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDcEUsd0NBQXdDO0lBQ3hDLE1BQU0sS0FBSyxHQUFHO1FBQ1osa0JBQWtCLEVBQUUsU0FBUztRQUM3QixnQkFBZ0IsRUFBRSxTQUFTO1FBQzNCLGVBQWUsRUFBRSxDQUFDO1FBQ2xCLG9CQUFvQixFQUFFLEtBQUs7UUFDM0IsZ0JBQWdCLEVBQUUsRUFBRTtRQUNwQix5QkFBeUIsRUFBRSxLQUFLO1FBQ2hDLFlBQVksRUFBRSxDQUFDO1FBQ2YsaUJBQWlCLEVBQUUsSUFBSTtLQUN4QixDQUFBO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDNUMsTUFBTSxPQUFPLEdB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SUFBSSxhQUFhLEVBQUUsQ0FBQztRQUM1QyxLQUFLLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3RELENBQUM7U0FBTSxDQUFDO1FBQ04sS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDM0MsQ0FBQztJQUNELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQTtBQUN6QixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLElBQUksRUFBRSxLQUFLO0lBQ25DLE1BQU0sVUFBVSxHQUFHLHNEQUFzRCxDQUFBO0lBQ3pFLE1BQU0sZUFBZSxHQUFHLE1BQU0sVUFBVSxRQUFRLFVBQVUsRUFBRSxDQUFBO0lBQzVELE1BQU0sU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLGtDQUFrQyxVQUFVLGVBQWUsZUFBZSwyRUFBMkUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUU5TCxJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBRWhDLE9BQU87UUFDTCxnQkFBZ0IsRUFBRSxVQUFVLFNBQVMsQ0FBQyxvQkFBb0IsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUMzRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN0QixLQUFLO1FBQ0wsZ0JBQWdCLEVBQUUsVUFBVSxTQUFTLENBQUMsb0JBQW9CLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7S0FDNUUsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBJbm5vZGJEZWFkbG9ja0xvY2tOb2RlIHR5cGUuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBJbm5vZGJEZWFkbG9ja0xvY2tOb2RlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaW5kZXhGaW5nZXJwcmludCAtIE9wYXF1ZSBpbmRleCBpZGVudGl0eS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBsb2NrTW9kZSAtIEFsbG93bGlzdGVkIGxvY2sgbW9kZS5cbiAqIEBwcm9wZXJ0eSB7XCJjb25mbGljdGluZ1wiIHwgXCJoZWxkXCIgfCBcIndhaXRpbmdcIn0gc3RhdGUgLSBMb2NrIHJlbGF0aW9uc2hpcCB0byBpdHMgdHJhbnNhY3Rpb24uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGFibGVGaW5nZXJwcmludCAtIE9wYXF1ZSB0YWJsZSBpZGVudGl0eS5cbiAqL1xuXG4vKipcbiAqIElubm9kYkRlYWRsb2NrVHJhbnNhY3Rpb25Ob2RlIHR5cGUuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBJbm5vZGJEZWFkbG9ja1RyYW5zYWN0aW9uTm9kZVxuICogQHByb3BlcnR5IHtJbm5vZGJEZWFkbG9ja0xvY2tOb2RlW119IGNvbmZsaWN0aW5nTG9ja3MgLSBCb3VuZGVkIGNvdW50ZXJwYXJ0eSBjb25mbGljdCBlZGdlcyB3aG9zZSBvd25lciBpcyB1bmF2YWlsYWJsZS5cbiAqIEBwcm9wZXJ0eSB7SW5ub2RiRGVhZGxvY2tMb2NrTm9kZVtdfSBsb2NrcyAtIEJvdW5kZWQgbG9ja3Mgb3duZWQgb3IgYXdhaXRlZCBieSB0aGlzIHRyYW5zYWN0aW9uLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IG9yZGluYWwgLSBSZXBvcnQtbG9jYWwgdHJhbnNhY3Rpb24gb3JkaW5hbC5cbiAqL1xuXG4vKipcbiAqIElubm9kYkRlYWRsb2NrUGFyc2VyU3RhdGUgdHlwZS5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IElubm9kYkRlYWRsb2NrUGFyc2VyU3RhdGVcbiAqIEBwcm9wZXJ0eSB7SW5ub2RiRGVhZGxvY2tUcmFuc2FjdGlvbk5vZGUgfCB1bmRlZmluZWR9IGN1cnJlbnRUcmFuc2FjdGlvbiAtIEN1cnJlbnQgYm91bmRlZCB0cmFuc2FjdGlvbiBub2RlLlxuICogQHByb3BlcnR5IHtcImNvbmZsaWN0aW5nXCIgfCBcImhlbGRcIiB8IFwid2FpdGluZ1wiIHwgdW5kZWZpbmVkfSBjdXJyZW50TG9ja1N0YXRlIC0gQ3VycmVudCBsb2NrIHNlY3Rpb24gc3RhdGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gbG9ja1JlY29yZENvdW50IC0gVG90YWwgZW1pdHRlZCBsb2NrIG5vZGVzLlxuICogQHByb3BlcnR5IHtib29sZWFufSBsb2NrUmVjb3Jkc1RydW5jYXRlZCAtIFdoZXRoZXIgYSBsb2NrLW5vZGUgYm91bmQgd2FzIHJlYWNoZWQuXG4gKiBAcHJvcGVydHkge0lubm9kYkRlYWRsb2NrVHJhbnNhY3Rpb25Ob2RlW119IHRyYW5zYWN0aW9uTm9kZXMgLSBCb3VuZGVkIHRyYW5zYWN0aW9uIG5vZGVzLlxuICogQHByb3BlcnR5IHtib29sZWFufSB0cmFuc2FjdGlvbk5vZGVzVHJ1bmNhdGVkIC0gV2hldGhlciB0aGUgdHJhbnNhY3Rpb24tbm9kZSBib3VuZCB3YXMgcmVhY2hlZC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0cmFuc2FjdGlvbnMgLSBUcmFuc2FjdGlvbiBoZWFkZXJzIG9ic2VydmVkIGluIHRoZSBib3VuZGVkIHNlY3Rpb24uXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IHZpY3RpbVRyYW5zYWN0aW9uIC0gVmljdGltIG9yZGluYWwuXG4gKi9cblxuaW1wb3J0IHNoYTI1NkhleCBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvc2hhMjU2LWhleC5qc1wiXG5cbmNvbnN0IElOTk9EQl9TVEFUVVNfU0NBTl9NQVhfQ0hBUlMgPSA2NTUzNlxuY29uc3QgSU5OT0RCX0RFQURMT0NLX1NFQ1RJT05fTUFYX0NIQVJTID0gMTYzODRcbmNvbnN0IElOTk9EQl9ERUFETE9DS19UUkFOU0FDVElPTl9NQVggPSA4XG5jb25zdCBJTk5PREJfREVBRExPQ0tfTE9DS1NfUEVSX1RSQU5TQUNUSU9OX01BWCA9IDhcbmNvbnN0IElOTk9EQl9ERUFETE9DS19MT0NLX1JFQ09SRF9NQVggPSAzMlxuY29uc3QgSU5OT0RCX0RFQURMT0NLX0xJTkVfTUFYX0NIQVJTID0gMTAyNFxuXG4vKipcbiAqIFBhcnNlcyBhIGJvdW5kZWQgSW5ub0RCIGxhdGVzdC1kZWFkbG9jayBzZWN0aW9uIGludG8gc2FmZSBzdHJ1Y3R1cmFsIGNvbnRleHQuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdHVzIC0gU0hPVyBFTkdJTkUgSU5OT0RCIFNUQVRVUyB0ZXh0LlxuICogQHJldHVybnMge3tsb2NrUmVjb3Jkc1RydW5jYXRlZDogYm9vbGVhbiwgc2VjdGlvblRydW5jYXRlZDogYm9vbGVhbiwgdHJhbnNhY3Rpb25Ob2RlczogSW5ub2RiRGVhZGxvY2tUcmFuc2FjdGlvbk5vZGVbXSwgdHJhbnNhY3Rpb25Ob2Rlc1RydW5jYXRlZDogYm9vbGVhbiwgdHJhbnNhY3Rpb25zOiBudW1iZXIsIHZpY3RpbVRyYW5zYWN0aW9uOiBudW1iZXIgfCBudWxsfX0gLSBTdHJ1Y3R1cmFsIGRlYWRsb2NrIHN1bW1hcnkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlSW5ub2RiRGVhZGxvY2tTdW1tYXJ5KHN0YXR1cykge1xuICBjb25zdCB7Y2FuZGlkYXRlLCBzZWN0aW9uVHJ1bmNhdGVkfSA9IGJvdW5kZWREZWFkbG9ja1NlY3Rpb24oc3RhdHVzKVxuICAvKiogQHR5cGUge0lubm9kYkRlYWRsb2NrUGFyc2VyU3RhdGV9ICovXG4gIGNvbnN0IHN0YXRlID0ge1xuICAgIGN1cnJlbnRUcmFuc2FjdGlvbjogdW5kZWZpbmVkLFxuICAgIGN1cnJlbnRMb2NrU3RhdGU6IHVuZGVmaW5lZCxcbiAgICBsb2NrUmVjb3JkQ291bnQ6IDAsXG4gICAgbG9ja1JlY29yZHNUcnVuY2F0ZWQ6IGZhbHNlLFxuICAgIHRyYW5zYWN0aW9uTm9kZXM6IFtdLFxuICAgIHRyYW5zYWN0aW9uTm9kZXNUcnVuY2F0ZWQ6IGZhbHNlLFxuICAgIHRyYW5zYWN0aW9uczogMCxcbiAgICB2aWN0aW1UcmFuc2FjdGlvbjogbnVsbFxuICB9XG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIGNhbmRpZGF0ZS5zcGxpdCgvXFxyP1xcbi8pKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IGxpbmUuc2xpY2UoMCwgSU5OT0RCX0RFQURMT0NLX0xJTkVfTUFYX0NIQVJTKS50cmltKClcbiAgICBjb25zdCB0cmFuc2FjdGlvbk9yZGluYWwgPSB0cmFuc2FjdGlvbkhlYWRlck9yZGluYWwodHJpbW1lZClcblxuICAgIGlmICh0cmFuc2FjdGlvbk9yZGluYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc3RhcnRUcmFuc2FjdGlvbk5vZGUoc3RhdGUsIHRyYW5zYWN0aW9uT3JkaW5hbClcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgbG9ja1N0YXRlTWFya2VyID0gdHJhbnNhY3Rpb25Mb2NrU3RhdGVNYXJrZXIodHJpbW1lZCwgc3RhdGUuY3VycmVudFRyYW5zYWN0aW9uKVxuXG4gICAgaWYgKGxvY2tTdGF0ZU1hcmtlci5tYXRjaGVkKSB7XG4gICAgICBzdGF0ZS5jdXJyZW50TG9ja1N0YXRlID0gbG9ja1N0YXRlTWFya2VyLnN0YXRlXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IHZpY3RpbU9yZGluYWwgPSB2aWN0aW1UcmFuc2FjdGlvbk9yZGluYWwodHJpbW1lZClcblxuICAgIGlmICh2aWN0aW1PcmRpbmFsICE9PSB1bmRlZmluZWQpIHN0YXRlLnZpY3RpbVRyYW5zYWN0aW9uID0gdmljdGltT3JkaW5hbFxuICAgIGFwcGVuZExvY2tOb2RlKHN0YXRlLCB0cmltbWVkKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsb2NrUmVjb3Jkc1RydW5jYXRlZDogc3RhdGUubG9ja1JlY29yZHNUcnVuY2F0ZWQsXG4gICAgc2VjdGlvblRydW5jYXRlZCxcbiAgICB0cmFuc2FjdGlvbk5vZGVzOiBzdGF0ZS50cmFuc2FjdGlvbk5vZGVzLFxuICAgIHRyYW5zYWN0aW9uTm9kZXNUcnVuY2F0ZWQ6IHN0YXRlLnRyYW5zYWN0aW9uTm9kZXNUcnVuY2F0ZWQsXG4gICAgdHJhbnNhY3Rpb25zOiBzdGF0ZS50cmFuc2FjdGlvbnMsXG4gICAgdmljdGltVHJhbnNhY3Rpb246IHN0YXRlLnZpY3RpbVRyYW5zYWN0aW9uXG4gIH1cbn1cblxuLyoqXG4gKiBFeHRyYWN0cyBhbmQgY2FwcyB0aGUgbGF0ZXN0LWRlYWRsb2NrIHNlY3Rpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdHVzIC0gUmF3IHNlcnZlciBzdGF0dXMuXG4gKiBAcmV0dXJucyB7e2NhbmRpZGF0ZTogc3RyaW5nLCBzZWN0aW9uVHJ1bmNhdGVkOiBib29sZWFufX0gLSBCb3VuZGVkIGNhbmRpZGF0ZSBhbmQgdHJ1bmNhdGlvbiBzdGF0ZS5cbiAqL1xuZnVuY3Rpb24gYm91bmRlZERlYWRsb2NrU2VjdGlvbihzdGF0dXMpIHtcbiAgY29uc3Qgc2Nhbm5lZFN0YXR1cyA9IHN0YXR1cy5zbGljZSgwLCBJTk5PREJfU1RBVFVTX1NDQU5fTUFYX0NIQVJTKVxuICBjb25zdCBkZWFkbG9ja1N0YXJ0ID0gc2Nhbm5lZFN0YXR1cy5pbmRleE9mKFwiTEFURVNUIERFVEVDVEVEIERFQURMT0NLXCIpXG4gIGNvbnN0IGF2YWlsYWJsZVNlY3Rpb24gPSBkZWFkbG9ja1N0YXJ0ID49IDAgPyBzY2FubmVkU3RhdHVzLnNsaWNlKGRlYWRsb2NrU3RhcnQpIDogXCJcIlxuICBjb25zdCBib3VuZGVkU2VjdGlvbiA9IGF2YWlsYWJsZVNlY3Rpb24uc2xpY2UoMCwgSU5OT0RCX0RFQURMT0NLX1NFQ1RJT05fTUFYX0NIQVJTKVxuICBjb25zdCBzZWN0aW9uRW5kTWF0Y2ggPSAvXFxuLXsxMCx9XFxyP1xcblRSQU5TQUNUSU9OU1xccj9cXG4tezEwLH0vLmV4ZWMoYm91bmRlZFNlY3Rpb24pXG4gIGNvbnN0IHNjYW5uZWRTdGF0dXNUcnVuY2F0ZWQgPSBzdGF0dXMubGVuZ3RoID4gc2Nhbm5lZFN0YXR1cy5sZW5ndGhcblxuICByZXR1cm4ge1xuICAgIGNhbmRpZGF0ZTogc2VjdGlvbkVuZE1hdGNoID8gYm91bmRlZFNlY3Rpb24uc2xpY2UoMCwgc2VjdGlvbkVuZE1hdGNoLmluZGV4KSA6IGJvdW5kZWRTZWN0aW9uLFxuICAgIHNlY3Rpb25UcnVuY2F0ZWQ6ICFzZWN0aW9uRW5kTWF0Y2ggJiYgZGVhZGxvY2tTdGFydCA+PSAwICYmIChcbiAgICAgIGF2YWlsYWJsZVNlY3Rpb24ubGVuZ3RoID4gYm91bmRlZFNlY3Rpb24ubGVuZ3RoIHx8IHNjYW5uZWRTdGF0dXNUcnVuY2F0ZWRcbiAgICApXG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZml4ZWQtZm9ybWF0IHRyYW5zYWN0aW9uIGhlYWRlciBvcmRpbmFsLlxuICogQHBhcmFtIHtzdHJpbmd9IGxpbmUgLSBCb3VuZGVkIHN0YXR1cyBsaW5lLlxuICogQHJldHVybnMge251bWJlciB8IHVuZGVmaW5lZH0gLSBUcmFuc2FjdGlvbiBvcmRpbmFsLlxuICovXG5mdW5jdGlvbiB0cmFuc2FjdGlvbkhlYWRlck9yZGluYWwobGluZSkge1xuICBjb25zdCBtYXRjaCA9IC9eXFwqXFwqXFwqIFxcKChcXGR7MSw2fSlcXCkgVFJBTlNBQ1RJT046JC8uZXhlYyhsaW5lKVxuXG4gIHJldHVybiBtYXRjaCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBTdGFydHMgYSBib3VuZGVkIHRyYW5zYWN0aW9uIG5vZGUuXG4gKiBAcGFyYW0ge0lubm9kYkRlYWRsb2NrUGFyc2VyU3RhdGV9IHN0YXRlIC0gUGFyc2VyIHN0YXRlLlxuICogQHBhcmFtIHtudW1iZXJ9IG9yZGluYWwgLSBUcmFuc2FjdGlvbiBvcmRpbmFsLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHN0YXJ0VHJhbnNhY3Rpb25Ob2RlKHN0YXRlLCBvcmRpbmFsKSB7XG4gIHN0YXRlLnRyYW5zYWN0aW9ucysrXG4gIHN0YXRlLmN1cnJlbnRMb2NrU3RhdGUgPSB1bmRlZmluZWRcblxuICBpZiAoc3RhdGUudHJhbnNhY3Rpb25Ob2Rlcy5sZW5ndGggPj0gSU5OT0RCX0RFQURMT0NLX1RSQU5TQUNUSU9OX01BWCkge1xuICAgIHN0YXRlLmN1cnJlbnRUcmFuc2FjdGlvbiA9IHVuZGVmaW5lZFxuICAgIHN0YXRlLnRyYW5zYWN0aW9uTm9kZXNUcnVuY2F0ZWQgPSB0cnVlXG4gICAgcmV0dXJuXG4gIH1cblxuICBzdGF0ZS5jdXJyZW50VHJhbnNhY3Rpb24gPSB7Y29uZmxpY3RpbmdMb2NrczogW10sIGxvY2tzOiBbXSwgb3JkaW5hbH1cbiAgc3RhdGUudHJhbnNhY3Rpb25Ob2Rlcy5wdXNoKHN0YXRlLmN1cnJlbnRUcmFuc2FjdGlvbilcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBmaXhlZC1mb3JtYXQgaGVsZC93YWl0aW5nIG1hcmtlciBmb3IgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gbGluZSAtIEJvdW5kZWQgc3RhdHVzIGxpbmUuXG4gKiBAcGFyYW0ge0lubm9kYkRlYWRsb2NrVHJhbnNhY3Rpb25Ob2RlIHwgdW5kZWZpbmVkfSBjdXJyZW50VHJhbnNhY3Rpb24gLSBDdXJyZW50IHRyYW5zYWN0aW9uLlxuICogQHJldHVybnMge3ttYXRjaGVkOiBib29sZWFuLCBzdGF0ZTogXCJjb25mbGljdGluZ1wiIHwgXCJoZWxkXCIgfCBcIndhaXRpbmdcIiB8IHVuZGVmaW5lZH19IC0gTWFya2VyIHJlc3VsdC5cbiAqL1xuZnVuY3Rpb24gdHJhbnNhY3Rpb25Mb2NrU3RhdGVNYXJrZXIobGluZSwgY3VycmVudFRyYW5zYWN0aW9uKSB7XG4gIGNvbnN0IG51bWJlcmVkTWF0Y2ggPSAvXlxcKlxcKlxcKiBcXCgoXFxkezEsNn0pXFwpIChIT0xEUyBUSEUgTE9DS1xcKFNcXCl8V0FJVElORyBGT1IgVEhJUyBMT0NLIFRPIEJFIEdSQU5URUQpOiQvLmV4ZWMobGluZSlcblxuICBpZiAobnVtYmVyZWRNYXRjaCkge1xuICAgIGlmICghY3VycmVudFRyYW5zYWN0aW9uIHx8IGN1cnJlbnRUcmFuc2FjdGlvbi5vcmRpbmFsICE9IE51bWJlcihudW1iZXJlZE1hdGNoWzFdKSkgcmV0dXJuIHttYXRjaGVkOiB0cnVlLCBzdGF0ZTogdW5kZWZpbmVkfVxuXG4gICAgcmV0dXJuIHttYXRjaGVkOiB0cnVlLCBzdGF0ZTogbnVtYmVyZWRNYXRjaFsyXSA9PSBcIkhPTERTIFRIRSBMT0NLKFMpXCIgPyBcImhlbGRcIiA6IFwid2FpdGluZ1wifVxuICB9XG5cbiAgY29uc3QgdW5udW1iZXJlZE1hdGNoID0gL15cXCpcXCpcXCogKFdBSVRJTkcgRk9SIFRISVMgTE9DSyBUTyBCRSBHUkFOVEVEfENPTkZMSUNUSU5HIFdJVEgpOiQvLmV4ZWMobGluZSlcblxuICBpZiAoIXVubnVtYmVyZWRNYXRjaCkgcmV0dXJuIHttYXRjaGVkOiBmYWxzZSwgc3RhdGU6IHVuZGVmaW5lZH1cbiAgaWYgKCFjdXJyZW50VHJhbnNhY3Rpb24pIHJldHVybiB7bWF0Y2hlZDogdHJ1ZSwgc3RhdGU6IHVuZGVmaW5lZH1cblxuICByZXR1cm4ge21hdGNoZWQ6IHRydWUsIHN0YXRlOiB1bm51bWJlcmVkTWF0Y2hbMV0gPT0gXCJDT05GTElDVElORyBXSVRIXCIgPyBcImNvbmZsaWN0aW5nXCIgOiBcIndhaXRpbmdcIn1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZml4ZWQtZm9ybWF0IHZpY3RpbSBvcmRpbmFsLlxuICogQHBhcmFtIHtzdHJpbmd9IGxpbmUgLSBCb3VuZGVkIHN0YXR1cyBsaW5lLlxuICogQHJldHVybnMge251bWJlciB8IHVuZGVmaW5lZH0gLSBWaWN0aW0gb3JkaW5hbC5cbiAqL1xuZnVuY3Rpb24gdmljdGltVHJhbnNhY3Rpb25PcmRpbmFsKGxpbmUpIHtcbiAgY29uc3QgbWF0Y2ggPSAvXlxcKlxcKlxcKiBXRSBST0xMIEJBQ0sgVFJBTlNBQ1RJT04gXFwoKFxcZHsxLDZ9KVxcKSQvLmV4ZWMobGluZSlcblxuICByZXR1cm4gbWF0Y2ggPyBOdW1iZXIobWF0Y2hbMV0pIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQXBwZW5kcyBvbmUgYm91bmRlZCwgZml4ZWQtZm9ybWF0IGxvY2sgbm9kZSB3aGVuIHRoZSBsaW5lIGlzIGVsaWdpYmxlLlxuICogQHBhcmFtIHtJbm5vZGJEZWFkbG9ja1BhcnNlclN0YXRlfSBzdGF0ZSAtIFBhcnNlciBzdGF0ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBsaW5lIC0gQm91bmRlZCBzdGF0dXMgbGluZS5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBhcHBlbmRMb2NrTm9kZShzdGF0ZSwgbGluZSkge1xuICBpZiAoIXN0YXRlLmN1cnJlbnRUcmFuc2FjdGlvbiB8fCAhc3RhdGUuY3VycmVudExvY2tTdGF0ZSB8fCAhbGluZS5zdGFydHNXaXRoKFwiUkVDT1JEIExPQ0tTIFwiKSkgcmV0dXJuXG5cbiAgaWYgKFxuICAgIHN0YXRlLmxvY2tSZWNvcmRDb3VudCA+PSBJTk5PREJfREVBRExPQ0tfTE9DS19SRUNPUkRfTUFYIHx8XG4gICAgc3RhdGUuY3VycmVudFRyYW5zYWN0aW9uLmxvY2tzLmxlbmd0aCArIHN0YXRlLmN1cnJlbnRUcmFuc2FjdGlvbi5jb25mbGljdGluZ0xvY2tzLmxlbmd0aCA+PSBJTk5PREJfREVBRExPQ0tfTE9DS1NfUEVSX1RSQU5TQUNUSU9OX01BWFxuICApIHtcbiAgICBzdGF0ZS5sb2NrUmVjb3Jkc1RydW5jYXRlZCA9IHRydWVcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IGxvY2sgPSBkZWFkbG9ja0xvY2tOb2RlKGxpbmUsIHN0YXRlLmN1cnJlbnRMb2NrU3RhdGUpXG5cbiAgaWYgKCFsb2NrKSByZXR1cm5cblxuICBpZiAoc3RhdGUuY3VycmVudExvY2tTdGF0ZSA9PSBcImNvbmZsaWN0aW5nXCIpIHtcbiAgICBzdGF0ZS5jdXJyZW50VHJhbnNhY3Rpb24uY29uZmxpY3RpbmdMb2Nrcy5wdXNoKGxvY2spXG4gIH0gZWxzZSB7XG4gICAgc3RhdGUuY3VycmVudFRyYW5zYWN0aW9uLmxvY2tzLnB1c2gobG9jaylcbiAgfVxuICBzdGF0ZS5sb2NrUmVjb3JkQ291bnQrK1xufVxuXG4vKipcbiAqIFBhcnNlcyBvbmUgZml4ZWQtZm9ybWF0IFJFQ09SRCBMT0NLUyBsaW5lIGludG8gc2FmZSBzdHJ1Y3R1cmFsIGZpZWxkcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBsaW5lIC0gT25lIGJvdW5kZWQgSW5ub0RCIHN0YXR1cyBsaW5lLlxuICogQHBhcmFtIHtcImNvbmZsaWN0aW5nXCIgfCBcImhlbGRcIiB8IFwid2FpdGluZ1wifSBzdGF0ZSAtIExvY2sgcmVsYXRpb25zaGlwIHRvIGl0cyB0cmFuc2FjdGlvbi5cbiAqIEByZXR1cm5zIHtJbm5vZGJEZWFkbG9ja0xvY2tOb2RlIHwgdW5kZWZpbmVkfSAtIFNhZmUgbG9jayBub2RlLlxuICovXG5mdW5jdGlvbiBkZWFkbG9ja0xvY2tOb2RlKGxpbmUsIHN0YXRlKSB7XG4gIGNvbnN0IGlkZW50aWZpZXIgPSBcIig/OmAoPzpgYHxbXmBcXFxcclxcXFxuXSl7MSwxMjh9YHxbQS1aYS16MC05XyQtXXsxLDEyOH0pXCJcbiAgY29uc3QgdGFibGVJZGVudGlmaWVyID0gYCg/OiR7aWRlbnRpZmllcn1cXFxcLik/JHtpZGVudGlmaWVyfWBcbiAgY29uc3QgbG9ja01hdGNoID0gbmV3IFJlZ0V4cChgXlJFQ09SRCBMT0NLUyAuezEsNTEyfT8gaW5kZXggKCR7aWRlbnRpZmllcn0pIG9mIHRhYmxlICgke3RhYmxlSWRlbnRpZmllcn0pIHRyeCBpZCBcXFxcU3sxLDY0fSg/OiBcXFxcU3sxLDY0fSk/IGxvY2tfbW9kZSAoWHxTfElYfElTfEFVVE9fSU5DKSg/OlxcXFxzfCQpYCkuZXhlYyhsaW5lKVxuXG4gIGlmICghbG9ja01hdGNoKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgcmV0dXJuIHtcbiAgICBpbmRleEZpbmdlcnByaW50OiBgc2hhMjU2OiR7c2hhMjU2SGV4KGBpbm5vZGItaW5kZXg6djFcXDAke2xvY2tNYXRjaFsxXX1gKX1gLFxuICAgIGxvY2tNb2RlOiBsb2NrTWF0Y2hbM10sXG4gICAgc3RhdGUsXG4gICAgdGFibGVGaW5nZXJwcmludDogYHNoYTI1Njoke3NoYTI1NkhleChgaW5ub2RiLXRhYmxlOnYxXFwwJHtsb2NrTWF0Y2hbMl19YCl9YFxuICB9XG59XG4iXX0=
@@ -165,9 +165,10 @@ export default class VelociousDatabaseDriversMysql extends Base {
165
165
  * Adds a redacted, bounded excerpt from MySQL's latest InnoDB deadlock report. Capture uses a
166
166
  * separate short-lived connection so it cannot queue ahead of rollback or the next retry on this
167
167
  * driver's single-connection pool.
168
+ * @param {import("../base.js").DeadlockRetryDiagnosticSnapshot} snapshot - Immutable retry snapshot.
168
169
  * @returns {Promise<Record<string, ReturnType<typeof JSON.parse>>>} - Safe diagnostic context.
169
170
  */
170
- _deadlockDiagnosticContext(): Promise<Record<string, ReturnType<typeof JSON.parse>>>;
171
+ _deadlockDiagnosticContext(snapshot: import("../base.js").DeadlockRetryDiagnosticSnapshot): Promise<Record<string, ReturnType<typeof JSON.parse>>>;
171
172
  /**
172
173
  * Captures SHOW ENGINE INNODB STATUS on a bounded throwaway connection.
173
174
  * @returns {Promise<string>} - Raw server status, retained only inside the redaction path.
@@ -177,9 +178,27 @@ export default class VelociousDatabaseDriversMysql extends Base {
177
178
  * Extracts only fixed-format deadlock counters. The server report contains raw SQL, identifiers,
178
179
  * and physical record data, so no source text is ever included in an application diagnostic.
179
180
  * @param {string} status - SHOW ENGINE INNODB STATUS text.
180
- * @returns {{transactions: number, victimTransaction: number | null}} - Structural deadlock summary.
181
+ * @returns {{lockRecordsTruncated: boolean, sectionTruncated: boolean, transactionNodes: Array<{conflictingLocks: Array<{indexFingerprint: string, lockMode: string, state: string, tableFingerprint: string}>, locks: Array<{indexFingerprint: string, lockMode: string, state: string, tableFingerprint: string}>, ordinal: number}>, transactionNodesTruncated: boolean, transactions: number, victimTransaction: number | null}} - Structural deadlock summary.
181
182
  */
182
183
  _innodbDeadlockSummary(status: string): {
184
+ lockRecordsTruncated: boolean;
185
+ sectionTruncated: boolean;
186
+ transactionNodes: Array<{
187
+ conflictingLocks: Array<{
188
+ indexFingerprint: string;
189
+ lockMode: string;
190
+ state: string;
191
+ tableFingerprint: string;
192
+ }>;
193
+ locks: Array<{
194
+ indexFingerprint: string;
195
+ lockMode: string;
196
+ state: string;
197
+ tableFingerprint: string;
198
+ }>;
199
+ ordinal: number;
200
+ }>;
201
+ transactionNodesTruncated: boolean;
183
202
  transactions: number;
184
203
  victimTransaction: number | null;
185
204
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/mysql/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/mysql/index.js"],"names":[],"mappings":"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"}