@bitgo/utxo-ord 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +191 -0
- package/README.md +7 -0
- package/dist/src/OrdOutput.d.ts +65 -0
- package/dist/src/OrdOutput.d.ts.map +1 -0
- package/dist/src/OrdOutput.js +197 -0
- package/dist/src/OutputLayout.d.ts +47 -0
- package/dist/src/OutputLayout.d.ts.map +1 -0
- package/dist/src/OutputLayout.js +248 -0
- package/dist/src/SatPoint.d.ts +13 -0
- package/dist/src/SatPoint.d.ts.map +1 -0
- package/dist/src/SatPoint.js +49 -0
- package/dist/src/SatRange.d.ts +26 -0
- package/dist/src/SatRange.d.ts.map +1 -0
- package/dist/src/SatRange.js +58 -0
- package/dist/src/combinations.d.ts +2 -0
- package/dist/src/combinations.d.ts.map +1 -0
- package/dist/src/combinations.js +14 -0
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +23 -0
- package/dist/src/inscriptions.d.ts +32 -0
- package/dist/src/inscriptions.d.ts.map +1 -0
- package/dist/src/inscriptions.js +169 -0
- package/dist/src/psbt.d.ts +64 -0
- package/dist/src/psbt.d.ts.map +1 -0
- package/dist/src/psbt.js +143 -0
- package/dist/tsconfig.tsbuildinfo +8273 -0
- package/package.json +46 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
|
|
4
|
+
This file contains code for creating an output layouts for transactions that pass on inscriptions.
|
|
5
|
+
|
|
6
|
+
When passing on an inscription, we want to satisfy a few constraints:
|
|
7
|
+
|
|
8
|
+
* All outputs should be larger than a minimal value (dust limit)
|
|
9
|
+
* The sum of all output values needs to be less than the input to cover the transaction fee.
|
|
10
|
+
* The output containing the inscription should be as small as possible, but large enough to
|
|
11
|
+
contain the inscription.
|
|
12
|
+
|
|
13
|
+
To keep the inscription output small, we can pad the satoshi range preceding and following the range
|
|
14
|
+
with change outputs, which have a minimal size and incur a fee cost.
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
Broadly speaking, there are four scenarios:
|
|
18
|
+
|
|
19
|
+
(1) Small inscription input that has just enough value to pay for fee and a single inscription
|
|
20
|
+
output (u0). No padding outputs.
|
|
21
|
+
┌────────┬────────┐
|
|
22
|
+
│ │ u0 │
|
|
23
|
+
│ r ┼ │
|
|
24
|
+
│ ├────────┘
|
|
25
|
+
│ │ fee
|
|
26
|
+
└────────┘
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
(2) Large inscription input with inscription close to start of input.
|
|
30
|
+
Inscription output followed by change output (u1) padding the remaining value.
|
|
31
|
+
|
|
32
|
+
┌────────┬────────┐
|
|
33
|
+
│ │ u0 │
|
|
34
|
+
│ r ┼ │
|
|
35
|
+
│ ├────────┤
|
|
36
|
+
│ │ u1 │
|
|
37
|
+
│ │ │
|
|
38
|
+
│ │ │
|
|
39
|
+
│ │ │
|
|
40
|
+
│ │ │
|
|
41
|
+
│ │ │
|
|
42
|
+
│ │ │
|
|
43
|
+
│ │ │
|
|
44
|
+
│ │ │
|
|
45
|
+
│ │ │
|
|
46
|
+
│ ├────────┘
|
|
47
|
+
│ │
|
|
48
|
+
│ │ fee
|
|
49
|
+
│ │
|
|
50
|
+
└────────┘
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
(3) Large inscription input with inscription close to end of input.
|
|
54
|
+
Change output padding start followed by inscription output.
|
|
55
|
+
|
|
56
|
+
┌────────┬────────┐
|
|
57
|
+
│ │ u0 │
|
|
58
|
+
│ │ │
|
|
59
|
+
│ │ │
|
|
60
|
+
│ │ │
|
|
61
|
+
│ │ │
|
|
62
|
+
│ │ │
|
|
63
|
+
│ │ │
|
|
64
|
+
│ │ │
|
|
65
|
+
│ │ │
|
|
66
|
+
│ ├────────┤
|
|
67
|
+
│ r ┼ │
|
|
68
|
+
│ │ u1 │
|
|
69
|
+
│ ├────────┘
|
|
70
|
+
│ │
|
|
71
|
+
│ │ fee
|
|
72
|
+
│ │
|
|
73
|
+
└────────┘
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
(4) Large inscription input with inscription in the middle.
|
|
77
|
+
Inscription input (u1) with padding on both sides (u0 and u2)
|
|
78
|
+
|
|
79
|
+
┌────────┬────────┐
|
|
80
|
+
│ │ u0 │
|
|
81
|
+
│ │ │
|
|
82
|
+
│ │ │
|
|
83
|
+
│ │ │
|
|
84
|
+
│ │ │
|
|
85
|
+
│ ├────────┤
|
|
86
|
+
│ │ u1 │
|
|
87
|
+
│ r ┼ │
|
|
88
|
+
│ ├────────┤
|
|
89
|
+
│ │ u2 │
|
|
90
|
+
│ │ │
|
|
91
|
+
│ │ │
|
|
92
|
+
│ │ │
|
|
93
|
+
│ ├────────┘
|
|
94
|
+
│ │
|
|
95
|
+
│ │ fee
|
|
96
|
+
│ │
|
|
97
|
+
└────────┘
|
|
98
|
+
*/
|
|
99
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
100
|
+
exports.findOutputLayout = exports.getOrdOutputsForLayout = exports.toParameters = exports.toArray = void 0;
|
|
101
|
+
const ZERO = BigInt(0);
|
|
102
|
+
const ONE = BigInt(1);
|
|
103
|
+
function max(a, b) {
|
|
104
|
+
return a < b ? b : a;
|
|
105
|
+
}
|
|
106
|
+
function min(a, b) {
|
|
107
|
+
return a < b ? a : b;
|
|
108
|
+
}
|
|
109
|
+
function sum(arr) {
|
|
110
|
+
return arr.reduce((a, b) => a + b, ZERO);
|
|
111
|
+
}
|
|
112
|
+
/** @return canonical sequence of parameters */
|
|
113
|
+
function toArray(p) {
|
|
114
|
+
return [p.firstChangeOutput, p.inscriptionOutput, p.secondChangeOutput, p.feeOutput];
|
|
115
|
+
}
|
|
116
|
+
exports.toArray = toArray;
|
|
117
|
+
function toParameters(firstChangeOutput, inscriptionOutput, secondChangeOutput, feeOutput) {
|
|
118
|
+
return {
|
|
119
|
+
firstChangeOutput,
|
|
120
|
+
inscriptionOutput,
|
|
121
|
+
secondChangeOutput,
|
|
122
|
+
feeOutput,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
exports.toParameters = toParameters;
|
|
126
|
+
/**
|
|
127
|
+
* Translates a layout into OrdOutputs. Absent outputs are set to `null`.
|
|
128
|
+
*
|
|
129
|
+
* @param inscriptionInput
|
|
130
|
+
* @param layout
|
|
131
|
+
* @return OrdOutputs for layout
|
|
132
|
+
*/
|
|
133
|
+
function getOrdOutputsForLayout(inscriptionInput, layout) {
|
|
134
|
+
const outputs = inscriptionInput.splitAllWithParams(toArray(layout), { exact: true, allowZero: true });
|
|
135
|
+
if (outputs.length !== 4) {
|
|
136
|
+
throw new Error(`unexpected result`);
|
|
137
|
+
}
|
|
138
|
+
return toParameters(...outputs);
|
|
139
|
+
}
|
|
140
|
+
exports.getOrdOutputsForLayout = getOrdOutputsForLayout;
|
|
141
|
+
/**
|
|
142
|
+
* @param constraints
|
|
143
|
+
* @param inscriptionInput
|
|
144
|
+
* @param layout
|
|
145
|
+
* @return true iff layout satisfies constraints
|
|
146
|
+
*/
|
|
147
|
+
function check(constraints, inscriptionInput, layout) {
|
|
148
|
+
var _a;
|
|
149
|
+
if ((layout.firstChangeOutput === ZERO || constraints.minChangeOutput <= layout.firstChangeOutput) &&
|
|
150
|
+
(layout.secondChangeOutput === ZERO || constraints.minChangeOutput <= layout.secondChangeOutput) &&
|
|
151
|
+
constraints.minInscriptionOutput <= layout.inscriptionOutput &&
|
|
152
|
+
layout.inscriptionOutput <= constraints.maxInscriptionOutput &&
|
|
153
|
+
getFeeForOutputs(constraints, [layout.firstChangeOutput, layout.inscriptionOutput, layout.secondChangeOutput]) <=
|
|
154
|
+
layout.feeOutput &&
|
|
155
|
+
sum(toArray(layout)) === inscriptionInput.value) {
|
|
156
|
+
/* make sure inscription actually lies on the inscriptionOutput */
|
|
157
|
+
const outputs = getOrdOutputsForLayout(inscriptionInput, layout);
|
|
158
|
+
return ((_a = outputs.inscriptionOutput) === null || _a === void 0 ? void 0 : _a.ordinals.length) === 1;
|
|
159
|
+
}
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
function getFeeForOutputs(p, outputs) {
|
|
163
|
+
return outputs.reduce((sum, oValue) => sum + (oValue === ZERO ? ZERO : p.feePerOutput), p.feeFixed);
|
|
164
|
+
}
|
|
165
|
+
function getStartChangeOutput(c) {
|
|
166
|
+
// we don't need a change padding output
|
|
167
|
+
if (c.satPos < c.maxInscriptionOutput) {
|
|
168
|
+
return ZERO;
|
|
169
|
+
}
|
|
170
|
+
if (c.minChangeOutput <= c.satPos) {
|
|
171
|
+
return c.satPos;
|
|
172
|
+
}
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
function getInscriptionOutput(c, startChangeOutput) {
|
|
176
|
+
const result = min(c.maxInscriptionOutput, max(c.minInscriptionOutput, c.satPos - startChangeOutput + ONE));
|
|
177
|
+
if (c.satPos < startChangeOutput || startChangeOutput + result < c.satPos) {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
// if is not worth creating an end change output, let's maximize the inscription output
|
|
181
|
+
if (getEndChangeOutput(c, startChangeOutput, result) === ZERO) {
|
|
182
|
+
const remainder = c.total - startChangeOutput - getFeeForOutputs(c, [startChangeOutput, result]);
|
|
183
|
+
return min(remainder, c.maxInscriptionOutput);
|
|
184
|
+
}
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
function getEndChangeOutput(c, startChangeOutput, inscriptionOutput) {
|
|
188
|
+
const remainder = c.total - sum([startChangeOutput, inscriptionOutput]);
|
|
189
|
+
const minFeeWithoutSecondOutput = getFeeForOutputs(c, [startChangeOutput, inscriptionOutput]);
|
|
190
|
+
const minFeeWithSecondOutput = getFeeForOutputs(c, [startChangeOutput, inscriptionOutput, c.minChangeOutput]);
|
|
191
|
+
if (remainder < minFeeWithoutSecondOutput) {
|
|
192
|
+
// We cannot even pay the fee for the output(s) we have so far.
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
if (remainder - minFeeWithSecondOutput < c.minChangeOutput) {
|
|
196
|
+
// The remainder is too small to pay for the end change output. Let's skip it and pay a higher fee.
|
|
197
|
+
return ZERO;
|
|
198
|
+
}
|
|
199
|
+
// let's use as much as we can for fee while leaving enough for fee
|
|
200
|
+
return remainder - minFeeWithSecondOutput;
|
|
201
|
+
}
|
|
202
|
+
function getFeeOutput(c, startChangeOutput, inscriptionOutput, endChangeOutput) {
|
|
203
|
+
const minFee = getFeeForOutputs(c, [startChangeOutput, inscriptionOutput, endChangeOutput]);
|
|
204
|
+
const remainder = c.total - sum([startChangeOutput, inscriptionOutput, endChangeOutput]);
|
|
205
|
+
if (remainder < minFee) {
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
return remainder;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* @param inscriptionInput
|
|
212
|
+
* @param search
|
|
213
|
+
* @return a solution that satisfies constraints. If no solution can be found, return `undefined`.
|
|
214
|
+
*/
|
|
215
|
+
function findOutputLayout(inscriptionInput, search) {
|
|
216
|
+
if (inscriptionInput.ordinals.length !== 1) {
|
|
217
|
+
throw new Error(`unexpected ordinal count ${inscriptionInput.ordinals.length}`);
|
|
218
|
+
}
|
|
219
|
+
if (inscriptionInput.ordinals[0].size() !== ONE) {
|
|
220
|
+
throw new Error(`only single-satoshi inscriptions are supported`);
|
|
221
|
+
}
|
|
222
|
+
const satPos = inscriptionInput.ordinals[0].start;
|
|
223
|
+
const total = inscriptionInput.value;
|
|
224
|
+
const constraints = { ...search, satPos, total };
|
|
225
|
+
const startChangeOutput = getStartChangeOutput(constraints);
|
|
226
|
+
if (startChangeOutput === null) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
const inscriptionOutput = getInscriptionOutput(constraints, startChangeOutput);
|
|
230
|
+
if (inscriptionOutput === null) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
const endChangeOutput = getEndChangeOutput(constraints, startChangeOutput, inscriptionOutput);
|
|
234
|
+
if (endChangeOutput === null) {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
const feeOutput = getFeeOutput(constraints, startChangeOutput, inscriptionOutput, endChangeOutput);
|
|
238
|
+
if (feeOutput === null) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
const result = toParameters(startChangeOutput, inscriptionOutput, endChangeOutput, feeOutput);
|
|
242
|
+
if (!check(constraints, inscriptionInput, result)) {
|
|
243
|
+
throw new Error(`invalid result`);
|
|
244
|
+
}
|
|
245
|
+
return result;
|
|
246
|
+
}
|
|
247
|
+
exports.findOutputLayout = findOutputLayout;
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3V0cHV0TGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL091dHB1dExheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdHRzs7O0FBSUgsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUV0QixTQUFTLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxTQUFTLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxTQUFTLEdBQUcsQ0FBQyxHQUFhO0lBQ3hCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQWdCRCwrQ0FBK0M7QUFDL0MsU0FBZ0IsT0FBTyxDQUFJLENBQWdCO0lBQ3pDLE9BQU8sQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdkYsQ0FBQztBQUZELDBCQUVDO0FBRUQsU0FBZ0IsWUFBWSxDQUMxQixpQkFBb0IsRUFDcEIsaUJBQW9C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LG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVELElBQUksaUJBQWlCLEtBQUssSUFBSSxFQUFFO1FBQzlCLE9BQU87S0FDUjtJQUNELE1BQU0saUJBQWlCLEdBQUcsb0JBQW9CLENBQUMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDL0UsSUFBSSxpQkFBaUIsS0FBSyxJQUFJLEVBQUU7UUFDOUIsT0FBTztLQUNSO0lBQ0QsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDOUYsSUFBSSxlQUFlLEtBQUssSUFBSSxFQUFFO1FBQzVCLE9BQU87S0FDUjtJQUNELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbkcsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFO1FBQ3RCLE9BQU87S0FDUjtJQUNELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUYsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLEVBQUU7UUFDakQsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBQ25DO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQXJDRCw0Q0FxQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuXG5UaGlzIGZpbGUgY29udGFpbnMgY29kZSBmb3IgY3JlYXRpbmcgYW4gb3V0cHV0IGxheW91dHMgZm9yIHRyYW5zYWN0aW9ucyB0aGF0IHBhc3Mgb24gaW5zY3JpcHRpb25zLlxuXG5XaGVuIHBhc3Npbmcgb24gYW4gaW5zY3JpcHRpb24sIHdlIHdhbnQgdG8gc2F0aXNmeSBhIGZldyBjb25zdHJhaW50czpcblxuKiBBbGwgb3V0cHV0cyBzaG91bGQgYmUgbGFyZ2VyIHRoYW4gYSBtaW5pbWFsIHZhbHVlIChkdXN0IGxpbWl0KVxuKiBUaGUgc3VtIG9mIGFsbCBvdXRwdXQgdmFsdWVzIG5lZWRzIHRvIGJlIGxlc3MgdGhhbiB0aGUgaW5wdXQgdG8gY292ZXIgdGhlIHRyYW5zYWN0aW9uIGZlZS5cbiogVGhlIG91dHB1dCBjb250YWluaW5nIHRoZSBpbnNjcmlwdGlvbiBzaG91bGQgYmUgYXMgc21hbGwgYXMgcG9zc2libGUsIGJ1dCBsYXJnZSBlbm91Z2ggdG9cbiAgY29udGFpbiB0aGUgaW5zY3JpcHRpb24uXG5cblRvIGtlZXAgdGhlIGluc2NyaXB0aW9uIG91dHB1dCBzbWFsbCwgd2UgY2FuIHBhZCB0aGUgc2F0b3NoaSByYW5nZSBwcmVjZWRpbmcgYW5kIGZvbGxvd2luZyB0aGUgcmFuZ2VcbndpdGggY2hhbmdlIG91dHB1dHMsIHdoaWNoIGhhdmUgYSBtaW5pbWFsIHNpemUgYW5kIGluY3VyIGEgZmVlIGNvc3QuXG5cblxuQnJvYWRseSBzcGVha2luZywgdGhlcmUgYXJlIGZvdXIgc2NlbmFyaW9zOlxuXG4oMSkgU21hbGwgaW5zY3JpcHRpb24gaW5wdXQgdGhhdCBoYXMganVzdCBlbm91Z2ggdmFsdWUgdG8gcGF5IGZvciBmZWUgYW5kIGEgc2luZ2xlIGluc2NyaXB0aW9uXG4gICAgb3V0cHV0ICh1MCkuIE5vIHBhZGRpbmcgb3V0cHV0cy5cbiAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgICDilIIgICAgICAgIOKUgiB1MCAgICAg4pSCXG4gICAg4pSCICAgICAgciDilLwgICAgICAgIOKUglxuICAgIOKUgiAgICAgICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gICAg4pSCICAgICAgICDilIIgZmVlXG4gICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG5cblxuKDIpIExhcmdlIGluc2NyaXB0aW9uIGlucHV0IHdpdGggaW5zY3JpcHRpb24gY2xvc2UgdG8gc3RhcnQgb2YgaW5wdXQuXG4gICAgSW5zY3JpcHRpb24gb3V0cHV0IGZvbGxvd2VkIGJ5IGNoYW5nZSBvdXRwdXQgKHUxKSBwYWRkaW5nIHRoZSByZW1haW5pbmcgdmFsdWUuXG5cbiAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgICDilIIgICAgICAgIOKUgiB1MCAgICAg4pSCXG4gICAg4pSCICAgICAgciDilLwgICAgICAgIOKUglxuICAgIOKUgiAgICAgICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkXG4gICAg4pSCICAgICAgICDilIIgdTEgICAgIOKUglxuICAgIOKUgiAgICAgICAg4pSCICAgICAgICDilIJcbiAgICDilIIgICAgICAgIOKUgiAgICAgICAg4pSCXG4gICAg4pSCICAgICAgICDilIIgICAgICAgIOKUglxuICAgIOKUgiAgICAgICAg4pSCICAgICAgICDilIJcbiAgICDilIIgICAgICAgIOKUgiAgICAgICAg4pSCXG4gICAg4pSCICAgICAgICDilIIgICAgICAgIOKUglxuICAgIOKUgiAgICAgICAg4pSCICAgICAgICDilIJcbiAgICDilIIgICAgICAgIOKUgiAgICAgICAg4pSCXG4gICAg4pSCICAgICAgICDilIIgICAgICAgIOKUglxuICAgIOKUgiAgICAgICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gICAg4pSCICAgICAgICDilIJcbiAgICDilIIgICAgICAgIOKUgiBmZWVcbiAgICDilIIgICAgICAgIOKUglxuICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuXG5cbigzKSBMYXJnZSBpbnNjcmlwdGlvbiBpbnB1dCB3aXRoIGluc2NyaXB0aW9uIGNsb3NlIHRvIGVuZCBvZiBpbnB1dC5cbiAgICBDaGFuZ2Ugb3V0cHV0IHBhZGRpbmcgc3RhcnQgZm9sbG93ZWQgYnkgaW5zY3JpcHRpb24gb3V0cHV0LlxuXG4gICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICAg4pSCICAgICAgICDilIIgdTAgICAgIOKUglxuICAgIOKUgiAgICAgICAg4pSCICAgICAgICDilIJcbiAgICDilIIgICAgICAgIOKUgiAgICAgICAg4pSCXG4gICAg4pSCICAgICAgICDilIIgICAgICAgIOKUglxuICAgIOKUgiAgICAgICAg4pSCICAgICAgICDilIJcbiAgICDilIIgICAgICAgIOKUgiAgICAgICAg4pSCXG4gICAg4pSCICAgICAgICDilIIgICAgICAgIOKUglxuICAgIOKUgiAgICAgICAg4pSCICAgICAgICDilIJcbiAgICDilIIgICAgICAgIOKUgiAgICAgICAg4pSCXG4gICAg4pSCICAgICAgICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgICDilIIgICAgICByIOKUvCAgICAgICAg4pSCXG4gICAg4pSCICAgICAgICDilIIgdTEgICAgIOKUglxuICAgIOKUgiAgICAgICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gICAg4pSCICAgICAgICDilIJcbiAgICDilIIgICAgICAgIOKUgiBmZWVcbiAgICDilIIgICAgICAgIOKUglxuICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuXG5cbig0KSBMYXJnZSBpbnNjcmlwdGlvbiBpbnB1dCB3aXRoIGluc2NyaXB0aW9uIGluIHRoZSBtaWRkbGUuXG4gICAgSW5zY3JpcHRpb24gaW5wdXQgKHUxKSB3aXRoIHBhZGRpbmcgb24gYm90aCBzaWRlcyAodTAgYW5kIHUyKVxuXG4gICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICAg4pSCICAgICAgICDilIIgdTAgICAgIOKUglxuICAgIOKUgiAgICAgICAg4pSCICAgICAgICDilIJcbiAgICDilIIgICAgICAgIOKUgiAgICAgICAg4pSCXG4gICAg4pSCICAgICAgICDilIIgICAgICAgIOKUglxuICAgIOKUgiAgICAgICAg4pSCICAgICAgICDilIJcbiAgICDilIIgICAgICAgIOKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpFxuICAgIOKUgiAgICAgICAg4pSCIHUxICAgICDilIJcbiAgICDilIIgICAgICByIOKUvCAgICAgICAg4pSCXG4gICAg4pSCICAgICAgICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgICDilIIgICAgICAgIOKUgiB1MiAgICAg4pSCXG4gICAg4pSCICAgICAgICDilIIgICAgICAgIOKUglxuICAgIOKUgiAgICAgICAg4pSCICAgICAgICDilIJcbiAgICDilIIgICAgICAgIOKUgiAgICAgICAg4pSCXG4gICAg4pSCICAgICAgICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAgICDilIIgICAgICAgIOKUglxuICAgIOKUgiAgICAgICAg4pSCIGZlZVxuICAgIOKUgiAgICAgICAg4pSCXG4gICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gKi9cblxuaW1wb3J0IHsgT3JkT3V0cHV0IH0gZnJvbSAnLi9PcmRPdXRwdXQnO1xuXG5jb25zdCBaRVJPID0gQmlnSW50KDApO1xuY29uc3QgT05FID0gQmlnSW50KDEpO1xuXG5mdW5jdGlvbiBtYXgoYTogYmlnaW50LCBiOiBiaWdpbnQpOiBiaWdpbnQge1xuICByZXR1cm4gYSA8IGIgPyBiIDogYTtcbn1cblxuZnVuY3Rpb24gbWluKGE6IGJpZ2ludCwgYjogYmlnaW50KTogYmlnaW50IHtcbiAgcmV0dXJuIGEgPCBiID8gYSA6IGI7XG59XG5cbmZ1bmN0aW9uIHN1bShhcnI6IGJpZ2ludFtdKTogYmlnaW50IHtcbiAgcmV0dXJuIGFyci5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCBaRVJPKTtcbn1cblxuLyoqXG4gKiBBIHJhbmdlIGNvbnN0cmFpbnRcbiAqL1xudHlwZSBQYXJhbWV0ZXJzPFQ+ID0ge1xuICAvKiogUGFkZGluZyBwcmVjZWRpbmcgdGhlIGluc2NyaXB0aW9uIG91dHB1dCAqL1xuICBmaXJzdENoYW5nZU91dHB1dDogVDtcbiAgLyoqIFRoZSBpbnNjcmlwdGlvbiBvdXRwdXQgdGhhdCB3aWxsIGluaGVyaXQgdGhlIGlucHV0IGluc2NyaXB0aW9uICovXG4gIGluc2NyaXB0aW9uT3V0cHV0OiBUO1xuICAvKiogUGFkZGluZyBmb2xsb3dpbmcgdGhlIGluc2NyaXB0aW9uIG91dHB1dCAqL1xuICBzZWNvbmRDaGFuZ2VPdXRwdXQ6IFQ7XG4gIC8qKiBOb3QgYSByZWFsIG91dHB1dCwgdXNlZCBvbmx5IHRvIHNpbXBsaWZ5IGNhbGN1bGF0aW9ucyAqL1xuICBmZWVPdXRwdXQ6IFQ7XG59O1xuXG4vKiogQHJldHVybiBjYW5vbmljYWwgc2VxdWVuY2Ugb2YgcGFyYW1ldGVycyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQXJyYXk8VD4ocDogUGFyYW1ldGVyczxUPik6IFtULCBULCBULCBUXSB7XG4gIHJldHVybiBbcC5maXJzdENoYW5nZU91dHB1dCwgcC5pbnNjcmlwdGlvbk91dHB1dCwgcC5zZWNvbmRDaGFuZ2VPdXRwdXQsIHAuZmVlT3V0cHV0XTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvUGFyYW1ldGVyczxUPihcbiAgZmlyc3RDaGFuZ2VPdXRwdXQ6IFQsXG4gIGluc2NyaXB0aW9uT3V0cHV0OiBULFxuICBzZWNvbmRDaGFuZ2VPdXRwdXQ6IFQsXG4gIGZlZU91dHB1dDogVFxuKTogUGFyYW1ldGVyczxUPiB7XG4gIHJldHVybiB7XG4gICAgZmlyc3RDaGFuZ2VPdXRwdXQsXG4gICAgaW5zY3JpcHRpb25PdXRwdXQsXG4gICAgc2Vjb25kQ2hhbmdlT3V0cHV0LFxuICAgIGZlZU91dHB1dCxcbiAgfTtcbn1cblxuLyoqIEEgZmluaXNoZWQgb3V0cHV0IGxheW91dCAqL1xuZXhwb3J0IHR5cGUgT3V0cHV0TGF5b3V0ID0gUGFyYW1ldGVyczxiaWdpbnQ+O1xuXG4vKipcbiAqIFRyYW5zbGF0ZXMgYSBsYXlvdXQgaW50byBPcmRPdXRwdXRzLiBBYnNlbnQgb3V0cHV0cyBhcmUgc2V0IHRvIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gaW5zY3JpcHRpb25JbnB1dFxuICogQHBhcmFtIGxheW91dFxuICogQHJldHVybiBPcmRPdXRwdXRzIGZvciBsYXlvdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9yZE91dHB1dHNGb3JMYXlvdXQoXG4gIGluc2NyaXB0aW9uSW5wdXQ6IE9yZE91dHB1dCxcbiAgbGF5b3V0OiBPdXRwdXRMYXlvdXRcbik6IFBhcmFtZXRlcnM8T3JkT3V0cHV0IHwgbnVsbD4ge1xuICBjb25zdCBvdXRwdXRzID0gaW5zY3JpcHRpb25JbnB1dC5zcGxpdEFsbFdpdGhQYXJhbXModG9BcnJheShsYXlvdXQpLCB7IGV4YWN0OiB0cnVlLCBhbGxvd1plcm86IHRydWUgfSk7XG4gIGlmIChvdXRwdXRzLmxlbmd0aCAhPT0gNCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCByZXN1bHRgKTtcbiAgfVxuICB0eXBlIFQgPSBPcmRPdXRwdXQgfCBudWxsO1xuICByZXR1cm4gdG9QYXJhbWV0ZXJzKC4uLihvdXRwdXRzIGFzIFtULCBULCBULCBUXSkpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBjb25zdHJhaW50c1xuICogQHBhcmFtIGluc2NyaXB0aW9uSW5wdXRcbiAqIEBwYXJhbSBsYXlvdXRcbiAqIEByZXR1cm4gdHJ1ZSBpZmYgbGF5b3V0IHNhdGlzZmllcyBjb25zdHJhaW50c1xuICovXG5mdW5jdGlvbiBjaGVjayhjb25zdHJhaW50czogQ29uc3RyYWludHMsIGluc2NyaXB0aW9uSW5wdXQ6IE9yZE91dHB1dCwgbGF5b3V0OiBPdXRwdXRMYXlvdXQpOiBib29sZWFuIHtcbiAgaWYgKFxuICAgIChsYXlvdXQuZmlyc3RDaGFuZ2VPdXRwdXQgPT09IFpFUk8gfHwgY29uc3RyYWludHMubWluQ2hhbmdlT3V0cHV0IDw9IGxheW91dC5maXJzdENoYW5nZU91dHB1dCkgJiZcbiAgICAobGF5b3V0LnNlY29uZENoYW5nZU91dHB1dCA9PT0gWkVSTyB8fCBjb25zdHJhaW50cy5taW5DaGFuZ2VPdXRwdXQgPD0gbGF5b3V0LnNlY29uZENoYW5nZU91dHB1dCkgJiZcbiAgICBjb25zdHJhaW50cy5taW5JbnNjcmlwdGlvbk91dHB1dCA8PSBsYXlvdXQuaW5zY3JpcHRpb25PdXRwdXQgJiZcbiAgICBsYXlvdXQuaW5zY3JpcHRpb25PdXRwdXQgPD0gY29uc3RyYWludHMubWF4SW5zY3JpcHRpb25PdXRwdXQgJiZcbiAgICBnZXRGZWVGb3JPdXRwdXRzKGNvbnN0cmFpbnRzLCBbbGF5b3V0LmZpcnN0Q2hhbmdlT3V0cHV0LCBsYXlvdXQuaW5zY3JpcHRpb25PdXRwdXQsIGxheW91dC5zZWNvbmRDaGFuZ2VPdXRwdXRdKSA8PVxuICAgICAgbGF5b3V0LmZlZU91dHB1dCAmJlxuICAgIHN1bSh0b0FycmF5KGxheW91dCkpID09PSBpbnNjcmlwdGlvbklucHV0LnZhbHVlXG4gICkge1xuICAgIC8qIG1ha2Ugc3VyZSBpbnNjcmlwdGlvbiBhY3R1YWxseSBsaWVzIG9uIHRoZSBpbnNjcmlwdGlvbk91dHB1dCAqL1xuICAgIGNvbnN0IG91dHB1dHMgPSBnZXRPcmRPdXRwdXRzRm9yTGF5b3V0KGluc2NyaXB0aW9uSW5wdXQsIGxheW91dCk7XG4gICAgcmV0dXJuIG91dHB1dHMuaW5zY3JpcHRpb25PdXRwdXQ/Lm9yZGluYWxzLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBIaWdoLWxldmVsIGNvbnN0cmFpbnRzIGZvciBvdXRwdXQgbGF5b3V0XG4gKi9cbmV4cG9ydCB0eXBlIENvbnN0cmFpbnRzID0ge1xuICBtaW5DaGFuZ2VPdXRwdXQ6IGJpZ2ludDtcbiAgbWluSW5zY3JpcHRpb25PdXRwdXQ6IGJpZ2ludDtcbiAgbWF4SW5zY3JpcHRpb25PdXRwdXQ6IGJpZ2ludDtcbiAgZmVlRml4ZWQ6IGJpZ2ludDtcbiAgZmVlUGVyT3V0cHV0OiBiaWdpbnQ7XG4gIHNhdFBvczogYmlnaW50O1xuICB0b3RhbDogYmlnaW50O1xufTtcblxuZnVuY3Rpb24gZ2V0RmVlRm9yT3V0cHV0cyhwOiB7IGZlZVBlck91dHB1dDogYmlnaW50OyBmZWVGaXhlZDogYmlnaW50IH0sIG91dHB1dHM6IGJpZ2ludFtdKTogYmlnaW50IHtcbiAgcmV0dXJuIG91dHB1dHMucmVkdWNlKChzdW0sIG9WYWx1ZSk6IGJpZ2ludCA9PiBzdW0gKyAob1ZhbHVlID09PSBaRVJPID8gWkVSTyA6IHAuZmVlUGVyT3V0cHV0KSwgcC5mZWVGaXhlZCk7XG59XG5mdW5jdGlvbiBnZXRTdGFydENoYW5nZU91dHB1dChjOiBDb25zdHJhaW50cyk6IGJpZ2ludCB8IG51bGwge1xuICAvLyB3ZSBkb24ndCBuZWVkIGEgY2hhbmdlIHBhZGRpbmcgb3V0cHV0XG4gIGlmIChjLnNhdFBvcyA8IGMubWF4SW5zY3JpcHRpb25PdXRwdXQpIHtcbiAgICByZXR1cm4gWkVSTztcbiAgfVxuICBpZiAoYy5taW5DaGFuZ2VPdXRwdXQgPD0gYy5zYXRQb3MpIHtcbiAgICByZXR1cm4gYy5zYXRQb3M7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldEluc2NyaXB0aW9uT3V0cHV0KGM6IENvbnN0cmFpbnRzLCBzdGFydENoYW5nZU91dHB1dDogYmlnaW50KTogYmlnaW50IHwgbnVsbCB7XG4gIGNvbnN0IHJlc3VsdCA9IG1pbihjLm1heEluc2NyaXB0aW9uT3V0cHV0LCBtYXgoYy5taW5JbnNjcmlwdGlvbk91dHB1dCwgYy5zYXRQb3MgLSBzdGFydENoYW5nZU91dHB1dCArIE9ORSkpO1xuICBpZiAoYy5zYXRQb3MgPCBzdGFydENoYW5nZU91dHB1dCB8fCBzdGFydENoYW5nZU91dHB1dCArIHJlc3VsdCA8IGMuc2F0UG9zKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gaWYgaXMgbm90IHdvcnRoIGNyZWF0aW5nIGFuIGVuZCBjaGFuZ2Ugb3V0cHV0LCBsZXQncyBtYXhpbWl6ZSB0aGUgaW5zY3JpcHRpb24gb3V0cHV0XG4gIGlmIChnZXRFbmRDaGFuZ2VPdXRwdXQoYywgc3RhcnRDaGFuZ2VPdXRwdXQsIHJlc3VsdCkgPT09IFpFUk8pIHtcbiAgICBjb25zdCByZW1haW5kZXIgPSBjLnRvdGFsIC0gc3RhcnRDaGFuZ2VPdXRwdXQgLSBnZXRGZWVGb3JPdXRwdXRzKGMsIFtzdGFydENoYW5nZU91dHB1dCwgcmVzdWx0XSk7XG4gICAgcmV0dXJuIG1pbihyZW1haW5kZXIsIGMubWF4SW5zY3JpcHRpb25PdXRwdXQpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGdldEVuZENoYW5nZU91dHB1dChjOiBDb25zdHJhaW50cywgc3RhcnRDaGFuZ2VPdXRwdXQ6IGJpZ2ludCwgaW5zY3JpcHRpb25PdXRwdXQ6IGJpZ2ludCk6IGJpZ2ludCB8IG51bGwge1xuICBjb25zdCByZW1haW5kZXIgPSBjLnRvdGFsIC0gc3VtKFtzdGFydENoYW5nZU91dHB1dCwgaW5zY3JpcHRpb25PdXRwdXRdKTtcbiAgY29uc3QgbWluRmVlV2l0aG91dFNlY29uZE91dHB1dCA9IGdldEZlZUZvck91dHB1dHMoYywgW3N0YXJ0Q2hhbmdlT3V0cHV0LCBpbnNjcmlwdGlvbk91dHB1dF0pO1xuICBjb25zdCBtaW5GZWVXaXRoU2Vjb25kT3V0cHV0ID0gZ2V0RmVlRm9yT3V0cHV0cyhjLCBbc3RhcnRDaGFuZ2VPdXRwdXQsIGluc2NyaXB0aW9uT3V0cHV0LCBjLm1pbkNoYW5nZU91dHB1dF0pO1xuICBpZiAocmVtYWluZGVyIDwgbWluRmVlV2l0aG91dFNlY29uZE91dHB1dCkge1xuICAgIC8vIFdlIGNhbm5vdCBldmVuIHBheSB0aGUgZmVlIGZvciB0aGUgb3V0cHV0KHMpIHdlIGhhdmUgc28gZmFyLlxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChyZW1haW5kZXIgLSBtaW5GZWVXaXRoU2Vjb25kT3V0cHV0IDwgYy5taW5DaGFuZ2VPdXRwdXQpIHtcbiAgICAvLyBUaGUgcmVtYWluZGVyIGlzIHRvbyBzbWFsbCB0byBwYXkgZm9yIHRoZSBlbmQgY2hhbmdlIG91dHB1dC4gTGV0J3Mgc2tpcCBpdCBhbmQgcGF5IGEgaGlnaGVyIGZlZS5cbiAgICByZXR1cm4gWkVSTztcbiAgfVxuICAvLyBsZXQncyB1c2UgYXMgbXVjaCBhcyB3ZSBjYW4gZm9yIGZlZSB3aGlsZSBsZWF2aW5nIGVub3VnaCBmb3IgZmVlXG4gIHJldHVybiByZW1haW5kZXIgLSBtaW5GZWVXaXRoU2Vjb25kT3V0cHV0O1xufVxuXG5mdW5jdGlvbiBnZXRGZWVPdXRwdXQoXG4gIGM6IENvbnN0cmFpbnRzLFxuICBzdGFydENoYW5nZU91dHB1dDogYmlnaW50LFxuICBpbnNjcmlwdGlvbk91dHB1dDogYmlnaW50LFxuICBlbmRDaGFuZ2VPdXRwdXQ6IGJpZ2ludFxuKTogYmlnaW50IHwgbnVsbCB7XG4gIGNvbnN0IG1pbkZlZSA9IGdldEZlZUZvck91dHB1dHMoYywgW3N0YXJ0Q2hhbmdlT3V0cHV0LCBpbnNjcmlwdGlvbk91dHB1dCwgZW5kQ2hhbmdlT3V0cHV0XSk7XG4gIGNvbnN0IHJlbWFpbmRlciA9IGMudG90YWwgLSBzdW0oW3N0YXJ0Q2hhbmdlT3V0cHV0LCBpbnNjcmlwdGlvbk91dHB1dCwgZW5kQ2hhbmdlT3V0cHV0XSk7XG4gIGlmIChyZW1haW5kZXIgPCBtaW5GZWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gcmVtYWluZGVyO1xufVxuXG4vKipcbiAqIEBwYXJhbSBpbnNjcmlwdGlvbklucHV0XG4gKiBAcGFyYW0gc2VhcmNoXG4gKiBAcmV0dXJuIGEgc29sdXRpb24gdGhhdCBzYXRpc2ZpZXMgY29uc3RyYWludHMuIElmIG5vIHNvbHV0aW9uIGNhbiBiZSBmb3VuZCwgcmV0dXJuIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE91dHB1dExheW91dChcbiAgaW5zY3JpcHRpb25JbnB1dDogT3JkT3V0cHV0LFxuICBzZWFyY2g6IE9taXQ8Q29uc3RyYWludHMsICdzYXRQb3MnIHwgJ3RvdGFsJz5cbik6IE91dHB1dExheW91dCB8IHVuZGVmaW5lZCB7XG4gIGlmIChpbnNjcmlwdGlvbklucHV0Lm9yZGluYWxzLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBvcmRpbmFsIGNvdW50ICR7aW5zY3JpcHRpb25JbnB1dC5vcmRpbmFscy5sZW5ndGh9YCk7XG4gIH1cbiAgaWYgKGluc2NyaXB0aW9uSW5wdXQub3JkaW5hbHNbMF0uc2l6ZSgpICE9PSBPTkUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG9ubHkgc2luZ2xlLXNhdG9zaGkgaW5zY3JpcHRpb25zIGFyZSBzdXBwb3J0ZWRgKTtcbiAgfVxuXG4gIGNvbnN0IHNhdFBvcyA9IGluc2NyaXB0aW9uSW5wdXQub3JkaW5hbHNbMF0uc3RhcnQ7XG4gIGNvbnN0IHRvdGFsID0gaW5zY3JpcHRpb25JbnB1dC52YWx1ZTtcblxuICBjb25zdCBjb25zdHJhaW50czogQ29uc3RyYWludHMgPSB7IC4uLnNlYXJjaCwgc2F0UG9zLCB0b3RhbCB9O1xuXG4gIGNvbnN0IHN0YXJ0Q2hhbmdlT3V0cHV0ID0gZ2V0U3RhcnRDaGFuZ2VPdXRwdXQoY29uc3RyYWludHMpO1xuICBpZiAoc3RhcnRDaGFuZ2VPdXRwdXQgPT09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgaW5zY3JpcHRpb25PdXRwdXQgPSBnZXRJbnNjcmlwdGlvbk91dHB1dChjb25zdHJhaW50cywgc3RhcnRDaGFuZ2VPdXRwdXQpO1xuICBpZiAoaW5zY3JpcHRpb25PdXRwdXQgPT09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgZW5kQ2hhbmdlT3V0cHV0ID0gZ2V0RW5kQ2hhbmdlT3V0cHV0KGNvbnN0cmFpbnRzLCBzdGFydENoYW5nZU91dHB1dCwgaW5zY3JpcHRpb25PdXRwdXQpO1xuICBpZiAoZW5kQ2hhbmdlT3V0cHV0ID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGZlZU91dHB1dCA9IGdldEZlZU91dHB1dChjb25zdHJhaW50cywgc3RhcnRDaGFuZ2VPdXRwdXQsIGluc2NyaXB0aW9uT3V0cHV0LCBlbmRDaGFuZ2VPdXRwdXQpO1xuICBpZiAoZmVlT3V0cHV0ID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHRvUGFyYW1ldGVycyhzdGFydENoYW5nZU91dHB1dCwgaW5zY3JpcHRpb25PdXRwdXQsIGVuZENoYW5nZU91dHB1dCwgZmVlT3V0cHV0KTtcbiAgaWYgKCFjaGVjayhjb25zdHJhaW50cywgaW5zY3JpcHRpb25JbnB1dCwgcmVzdWx0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCByZXN1bHRgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare type SatPoint = `${string}:${number}:${bigint}`;
|
|
2
|
+
export declare function parseSatPoint(p: SatPoint): {
|
|
3
|
+
txid: string;
|
|
4
|
+
vout: number;
|
|
5
|
+
offset: bigint;
|
|
6
|
+
};
|
|
7
|
+
export declare function formatSatPoint(p: {
|
|
8
|
+
txid: string;
|
|
9
|
+
vout: number;
|
|
10
|
+
offset: bigint;
|
|
11
|
+
}): SatPoint;
|
|
12
|
+
export declare function isSatPoint(v: string): v is SatPoint;
|
|
13
|
+
//# sourceMappingURL=SatPoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SatPoint.d.ts","sourceRoot":"","sources":["../../src/SatPoint.ts"],"names":[],"mappings":"AAaA,oBAAY,QAAQ,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAEvD,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAiBzF;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,QAAQ,CAE1F;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,QAAQ,CAOnD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSatPoint = exports.formatSatPoint = exports.parseSatPoint = void 0;
|
|
4
|
+
/*
|
|
5
|
+
|
|
6
|
+
https://github.com/casey/ord/blob/master/bip.mediawiki#terminology-and-notation
|
|
7
|
+
|
|
8
|
+
> A satpoint may be used to indicate the location of a sat within an output.
|
|
9
|
+
> A satpoint consists of an outpoint, i.e., a transaction ID and output index, with the addition of
|
|
10
|
+
> the offset of the ordinal within that output. For example, if the sat in question is at offset 6
|
|
11
|
+
> in the first output of a transaction, its satpoint is:
|
|
12
|
+
> `680df1e4d43016571e504b0b142ee43c5c0b83398a97bdcfd94ea6f287322d22:0:6`
|
|
13
|
+
|
|
14
|
+
*/
|
|
15
|
+
const utxo_lib_1 = require("@bitgo/utxo-lib");
|
|
16
|
+
function parseSatPoint(p) {
|
|
17
|
+
const parts = p.split(':');
|
|
18
|
+
if (parts.length !== 3) {
|
|
19
|
+
throw new Error(`expected format txid:vout:sat`);
|
|
20
|
+
}
|
|
21
|
+
const [txid, vout, offsetStr] = parts;
|
|
22
|
+
const offset = BigInt(offsetStr);
|
|
23
|
+
if (offset.toString() !== offsetStr) {
|
|
24
|
+
throw new Error(`SatPoint offset must be base-10`);
|
|
25
|
+
}
|
|
26
|
+
if (offset < 0) {
|
|
27
|
+
throw new Error(`SatPoint offset must be positive`);
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
...utxo_lib_1.bitgo.parseOutputId([txid, vout].join(':')),
|
|
31
|
+
offset,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
exports.parseSatPoint = parseSatPoint;
|
|
35
|
+
function formatSatPoint(p) {
|
|
36
|
+
return `${p.txid}:${p.vout}:${p.offset}`;
|
|
37
|
+
}
|
|
38
|
+
exports.formatSatPoint = formatSatPoint;
|
|
39
|
+
function isSatPoint(v) {
|
|
40
|
+
try {
|
|
41
|
+
parseSatPoint(v);
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.isSatPoint = isSatPoint;
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2F0UG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2F0UG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7Ozs7RUFVRTtBQUNGLDhDQUF3QztBQUl4QyxTQUFnQixhQUFhLENBQUMsQ0FBVztJQUN2QyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0tBQ2xEO0lBQ0QsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3RDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxTQUFTLEVBQUU7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0tBQ3BEO0lBQ0QsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0QsT0FBTztRQUNMLEdBQUcsZ0JBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQztBQWpCRCxzQ0FpQkM7QUFFRCxTQUFnQixjQUFjLENBQUMsQ0FBaUQ7SUFDOUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFXLENBQUM7QUFDcEQsQ0FBQztBQUZELHdDQUVDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLENBQVM7SUFDbEMsSUFBSTtRQUNGLGFBQWEsQ0FBQyxDQUFhLENBQUMsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQztLQUNiO0lBQUMsTUFBTTtRQUNOLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBUEQsZ0NBT0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuXG5odHRwczovL2dpdGh1Yi5jb20vY2FzZXkvb3JkL2Jsb2IvbWFzdGVyL2JpcC5tZWRpYXdpa2kjdGVybWlub2xvZ3ktYW5kLW5vdGF0aW9uXG5cbj4gQSBzYXRwb2ludCBtYXkgYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGUgbG9jYXRpb24gb2YgYSBzYXQgd2l0aGluIGFuIG91dHB1dC5cbj4gQSBzYXRwb2ludCBjb25zaXN0cyBvZiBhbiBvdXRwb2ludCwgaS5lLiwgYSB0cmFuc2FjdGlvbiBJRCBhbmQgb3V0cHV0IGluZGV4LCB3aXRoIHRoZSBhZGRpdGlvbiBvZlxuPiB0aGUgb2Zmc2V0IG9mIHRoZSBvcmRpbmFsIHdpdGhpbiB0aGF0IG91dHB1dC4gRm9yIGV4YW1wbGUsIGlmIHRoZSBzYXQgaW4gcXVlc3Rpb24gaXMgYXQgb2Zmc2V0IDZcbj4gaW4gdGhlIGZpcnN0IG91dHB1dCBvZiBhIHRyYW5zYWN0aW9uLCBpdHMgc2F0cG9pbnQgaXM6XG4+IGA2ODBkZjFlNGQ0MzAxNjU3MWU1MDRiMGIxNDJlZTQzYzVjMGI4MzM5OGE5N2JkY2ZkOTRlYTZmMjg3MzIyZDIyOjA6NmBcblxuKi9cbmltcG9ydCB7IGJpdGdvIH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuZXhwb3J0IHR5cGUgU2F0UG9pbnQgPSBgJHtzdHJpbmd9OiR7bnVtYmVyfToke2JpZ2ludH1gO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTYXRQb2ludChwOiBTYXRQb2ludCk6IHsgdHhpZDogc3RyaW5nOyB2b3V0OiBudW1iZXI7IG9mZnNldDogYmlnaW50IH0ge1xuICBjb25zdCBwYXJ0cyA9IHAuc3BsaXQoJzonKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMykge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgZm9ybWF0IHR4aWQ6dm91dDpzYXRgKTtcbiAgfVxuICBjb25zdCBbdHhpZCwgdm91dCwgb2Zmc2V0U3RyXSA9IHBhcnRzO1xuICBjb25zdCBvZmZzZXQgPSBCaWdJbnQob2Zmc2V0U3RyKTtcbiAgaWYgKG9mZnNldC50b1N0cmluZygpICE9PSBvZmZzZXRTdHIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNhdFBvaW50IG9mZnNldCBtdXN0IGJlIGJhc2UtMTBgKTtcbiAgfVxuICBpZiAob2Zmc2V0IDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2F0UG9pbnQgb2Zmc2V0IG11c3QgYmUgcG9zaXRpdmVgKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLmJpdGdvLnBhcnNlT3V0cHV0SWQoW3R4aWQsIHZvdXRdLmpvaW4oJzonKSksXG4gICAgb2Zmc2V0LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0U2F0UG9pbnQocDogeyB0eGlkOiBzdHJpbmc7IHZvdXQ6IG51bWJlcjsgb2Zmc2V0OiBiaWdpbnQgfSk6IFNhdFBvaW50IHtcbiAgcmV0dXJuIGAke3AudHhpZH06JHtwLnZvdXR9OiR7cC5vZmZzZXR9YCBhcyBjb25zdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2F0UG9pbnQodjogc3RyaW5nKTogdiBpcyBTYXRQb2ludCB7XG4gIHRyeSB7XG4gICAgcGFyc2VTYXRQb2ludCh2IGFzIFNhdFBvaW50KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare class InvalidSatRange extends Error {
|
|
2
|
+
start: bigint;
|
|
3
|
+
end: bigint;
|
|
4
|
+
constructor(message: string, start: bigint, end: bigint);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Range of satoshi, inclusive.
|
|
8
|
+
* Inscriptions have start === end.
|
|
9
|
+
*/
|
|
10
|
+
export declare class SatRange {
|
|
11
|
+
start: bigint;
|
|
12
|
+
end: bigint;
|
|
13
|
+
constructor(start: bigint, end: bigint);
|
|
14
|
+
/**
|
|
15
|
+
* @param offset
|
|
16
|
+
* @return SatRange with start and end shifted by offset
|
|
17
|
+
*/
|
|
18
|
+
shiftedBy(offset: bigint): SatRange;
|
|
19
|
+
/** @return true iff this intersects with _other_ */
|
|
20
|
+
intersectsWith(other: bigint | SatRange): boolean;
|
|
21
|
+
/** @return true iff this is superset of _other_. */
|
|
22
|
+
isSupersetOf(other: bigint | SatRange): boolean;
|
|
23
|
+
toString(): string;
|
|
24
|
+
size(): bigint;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=SatRange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SatRange.d.ts","sourceRoot":"","sources":["../../src/SatRange.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAgB,SAAQ,KAAK;IACJ,KAAK,EAAE,MAAM;IAAS,GAAG,EAAE,MAAM;gBAAzD,OAAO,EAAE,MAAM,EAAS,KAAK,EAAE,MAAM,EAAS,GAAG,EAAE,MAAM;CAGtE;AAMD;;;GAGG;AACH,qBAAa,QAAQ;IACA,KAAK,EAAE,MAAM;IAAS,GAAG,EAAE,MAAM;gBAAjC,KAAK,EAAE,MAAM,EAAS,GAAG,EAAE,MAAM;IAMpD;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAInC,oDAAoD;IACpD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO;IAQjD,oDAAoD;IACpD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO;IAK/C,QAAQ,IAAI,MAAM;IAOlB,IAAI,IAAI,MAAM;CAGf"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SatRange = exports.InvalidSatRange = void 0;
|
|
4
|
+
class InvalidSatRange extends Error {
|
|
5
|
+
constructor(message, start, end) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.start = start;
|
|
8
|
+
this.end = end;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.InvalidSatRange = InvalidSatRange;
|
|
12
|
+
function toRange(v) {
|
|
13
|
+
return typeof v === 'bigint' ? new SatRange(v, v) : v;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Range of satoshi, inclusive.
|
|
17
|
+
* Inscriptions have start === end.
|
|
18
|
+
*/
|
|
19
|
+
class SatRange {
|
|
20
|
+
constructor(start, end) {
|
|
21
|
+
this.start = start;
|
|
22
|
+
this.end = end;
|
|
23
|
+
if (start < 0 || end < 0 || end < start) {
|
|
24
|
+
throw new InvalidSatRange(`Invalid SatRange [${start}, ${end}]`, start, end);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @param offset
|
|
29
|
+
* @return SatRange with start and end shifted by offset
|
|
30
|
+
*/
|
|
31
|
+
shiftedBy(offset) {
|
|
32
|
+
return new SatRange(this.start + offset, this.end + offset);
|
|
33
|
+
}
|
|
34
|
+
/** @return true iff this intersects with _other_ */
|
|
35
|
+
intersectsWith(other) {
|
|
36
|
+
other = toRange(other);
|
|
37
|
+
if (this.start <= other.start) {
|
|
38
|
+
return other.start <= this.end;
|
|
39
|
+
}
|
|
40
|
+
return other.intersectsWith(this);
|
|
41
|
+
}
|
|
42
|
+
/** @return true iff this is superset of _other_. */
|
|
43
|
+
isSupersetOf(other) {
|
|
44
|
+
other = toRange(other);
|
|
45
|
+
return this.start <= other.start && other.end <= this.end;
|
|
46
|
+
}
|
|
47
|
+
toString() {
|
|
48
|
+
if (this.start === this.end) {
|
|
49
|
+
return `[${this.start}]`;
|
|
50
|
+
}
|
|
51
|
+
return `[${this.start}..${this.end}]`;
|
|
52
|
+
}
|
|
53
|
+
size() {
|
|
54
|
+
return this.end - this.start + BigInt(1);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.SatRange = SatRange;
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2F0UmFuZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2F0UmFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBYSxlQUFnQixTQUFRLEtBQUs7SUFDeEMsWUFBWSxPQUFlLEVBQVMsS0FBYSxFQUFTLEdBQVc7UUFDbkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRG1CLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFRO0lBRXJFLENBQUM7Q0FDRjtBQUpELDBDQUlDO0FBRUQsU0FBUyxPQUFPLENBQUMsQ0FBb0I7SUFDbkMsT0FBTyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLFFBQVE7SUFDbkIsWUFBbUIsS0FBYSxFQUFTLEdBQVc7UUFBakMsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFDbEQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLEtBQUssRUFBRTtZQUN2QyxNQUFNLElBQUksZUFBZSxDQUFDLHFCQUFxQixLQUFLLEtBQUssR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlFO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxNQUFjO1FBQ3RCLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELGNBQWMsQ0FBQyxLQUF3QjtRQUNyQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQzdCLE9BQU8sS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsWUFBWSxDQUFDLEtBQXdCO1FBQ25DLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzVELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDM0IsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztTQUMxQjtRQUNELE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUF4Q0QsNEJBd0NDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEludmFsaWRTYXRSYW5nZSBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBwdWJsaWMgc3RhcnQ6IGJpZ2ludCwgcHVibGljIGVuZDogYmlnaW50KSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9SYW5nZSh2OiBiaWdpbnQgfCBTYXRSYW5nZSk6IFNhdFJhbmdlIHtcbiAgcmV0dXJuIHR5cGVvZiB2ID09PSAnYmlnaW50JyA/IG5ldyBTYXRSYW5nZSh2LCB2KSA6IHY7XG59XG5cbi8qKlxuICogUmFuZ2Ugb2Ygc2F0b3NoaSwgaW5jbHVzaXZlLlxuICogSW5zY3JpcHRpb25zIGhhdmUgc3RhcnQgPT09IGVuZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNhdFJhbmdlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHN0YXJ0OiBiaWdpbnQsIHB1YmxpYyBlbmQ6IGJpZ2ludCkge1xuICAgIGlmIChzdGFydCA8IDAgfHwgZW5kIDwgMCB8fCBlbmQgPCBzdGFydCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRTYXRSYW5nZShgSW52YWxpZCBTYXRSYW5nZSBbJHtzdGFydH0sICR7ZW5kfV1gLCBzdGFydCwgZW5kKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIG9mZnNldFxuICAgKiBAcmV0dXJuIFNhdFJhbmdlIHdpdGggc3RhcnQgYW5kIGVuZCBzaGlmdGVkIGJ5IG9mZnNldFxuICAgKi9cbiAgc2hpZnRlZEJ5KG9mZnNldDogYmlnaW50KTogU2F0UmFuZ2Uge1xuICAgIHJldHVybiBuZXcgU2F0UmFuZ2UodGhpcy5zdGFydCArIG9mZnNldCwgdGhpcy5lbmQgKyBvZmZzZXQpO1xuICB9XG5cbiAgLyoqIEByZXR1cm4gdHJ1ZSBpZmYgdGhpcyBpbnRlcnNlY3RzIHdpdGggX290aGVyXyAqL1xuICBpbnRlcnNlY3RzV2l0aChvdGhlcjogYmlnaW50IHwgU2F0UmFuZ2UpOiBib29sZWFuIHtcbiAgICBvdGhlciA9IHRvUmFuZ2Uob3RoZXIpO1xuICAgIGlmICh0aGlzLnN0YXJ0IDw9IG90aGVyLnN0YXJ0KSB7XG4gICAgICByZXR1cm4gb3RoZXIuc3RhcnQgPD0gdGhpcy5lbmQ7XG4gICAgfVxuICAgIHJldHVybiBvdGhlci5pbnRlcnNlY3RzV2l0aCh0aGlzKTtcbiAgfVxuXG4gIC8qKiBAcmV0dXJuIHRydWUgaWZmIHRoaXMgaXMgc3VwZXJzZXQgb2YgX290aGVyXy4gKi9cbiAgaXNTdXBlcnNldE9mKG90aGVyOiBiaWdpbnQgfCBTYXRSYW5nZSk6IGJvb2xlYW4ge1xuICAgIG90aGVyID0gdG9SYW5nZShvdGhlcik7XG4gICAgcmV0dXJuIHRoaXMuc3RhcnQgPD0gb3RoZXIuc3RhcnQgJiYgb3RoZXIuZW5kIDw9IHRoaXMuZW5kO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zdGFydCA9PT0gdGhpcy5lbmQpIHtcbiAgICAgIHJldHVybiBgWyR7dGhpcy5zdGFydH1dYDtcbiAgICB9XG4gICAgcmV0dXJuIGBbJHt0aGlzLnN0YXJ0fS4uJHt0aGlzLmVuZH1dYDtcbiAgfVxuXG4gIHNpemUoKTogYmlnaW50IHtcbiAgICByZXR1cm4gdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICsgQmlnSW50KDEpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combinations.d.ts","sourceRoot":"","sources":["../../src/combinations.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAO3C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.powerset = void 0;
|
|
4
|
+
function powerset(arr) {
|
|
5
|
+
if (arr.length === 0) {
|
|
6
|
+
return [[]];
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
const [a, ...rest] = arr;
|
|
10
|
+
return powerset(rest).flatMap((s) => [[a, ...s], s]);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.powerset = powerset;
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbWJpbmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFnQixRQUFRLENBQUksR0FBUTtJQUNsQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3BCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUNiO1NBQU07UUFDTCxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDdEQ7QUFDSCxDQUFDO0FBUEQsNEJBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcG93ZXJzZXQ8VD4oYXJyOiBUW10pOiBUW11bXSB7XG4gIGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtbXV07XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgW2EsIC4uLnJlc3RdID0gYXJyO1xuICAgIHJldHVybiBwb3dlcnNldChyZXN0KS5mbGF0TWFwKChzKSA9PiBbW2EsIC4uLnNdLCBzXSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* https://github.com/casey/ord/blob/0.5.1/bip.mediawiki
|
|
3
|
+
*/
|
|
4
|
+
export * from './SatRange';
|
|
5
|
+
export * from './OrdOutput';
|
|
6
|
+
export * from './OutputLayout';
|
|
7
|
+
export * from './SatPoint';
|
|
8
|
+
export * from './psbt';
|
|
9
|
+
export * as inscriptions from './inscriptions';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* https://github.com/casey/ord/blob/0.5.1/bip.mediawiki
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
8
|
+
}) : (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
o[k2] = m[k];
|
|
11
|
+
}));
|
|
12
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
13
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.inscriptions = void 0;
|
|
17
|
+
__exportStar(require("./SatRange"), exports);
|
|
18
|
+
__exportStar(require("./OrdOutput"), exports);
|
|
19
|
+
__exportStar(require("./OutputLayout"), exports);
|
|
20
|
+
__exportStar(require("./SatPoint"), exports);
|
|
21
|
+
__exportStar(require("./psbt"), exports);
|
|
22
|
+
exports.inscriptions = require("./inscriptions");
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7O0FBRUgsNkNBQTJCO0FBQzNCLDhDQUE0QjtBQUM1QixpREFBK0I7QUFDL0IsNkNBQTJCO0FBQzNCLHlDQUF1QjtBQUN2QixpREFBK0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9jYXNleS9vcmQvYmxvYi8wLjUuMS9iaXAubWVkaWF3aWtpXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9TYXRSYW5nZSc7XG5leHBvcnQgKiBmcm9tICcuL09yZE91dHB1dCc7XG5leHBvcnQgKiBmcm9tICcuL091dHB1dExheW91dCc7XG5leHBvcnQgKiBmcm9tICcuL1NhdFBvaW50JztcbmV4cG9ydCAqIGZyb20gJy4vcHNidCc7XG5leHBvcnQgKiBhcyBpbnNjcmlwdGlvbnMgZnJvbSAnLi9pbnNjcmlwdGlvbnMnO1xuIl19
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Network } from '@bitgo/utxo-lib';
|
|
3
|
+
import * as utxolib from '@bitgo/utxo-lib';
|
|
4
|
+
import { PreparedInscriptionRevealData } from '@bitgo/sdk-core';
|
|
5
|
+
/**
|
|
6
|
+
* @param pubkey
|
|
7
|
+
* @param contentType
|
|
8
|
+
* @param inscriptionData
|
|
9
|
+
* @param network
|
|
10
|
+
* @returns PreparedInscriptionRevealData
|
|
11
|
+
*/
|
|
12
|
+
export declare function createInscriptionRevealData(pubkey: Buffer, contentType: string, inscriptionData: Buffer, network: Network): PreparedInscriptionRevealData;
|
|
13
|
+
/**
|
|
14
|
+
* @param pubkey
|
|
15
|
+
* @param contentType
|
|
16
|
+
* @param inscriptionData
|
|
17
|
+
* @returns inscription address
|
|
18
|
+
*/
|
|
19
|
+
export declare function createOutputScriptForInscription(pubkey: Buffer, contentType: string, inscriptionData: Buffer): Buffer;
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
* @param privateKey
|
|
23
|
+
* @param tapLeafScript
|
|
24
|
+
* @param commitAddress
|
|
25
|
+
* @param recipientAddress
|
|
26
|
+
* @param unsignedCommitTx
|
|
27
|
+
* @param network
|
|
28
|
+
*
|
|
29
|
+
* @return a fully signed reveal transaction
|
|
30
|
+
*/
|
|
31
|
+
export declare function signRevealTransaction(privateKey: Buffer, tapLeafScript: utxolib.bitgo.TapLeafScript, commitAddress: string, recipientAddress: string, unsignedCommitTx: Buffer, network: Network): utxolib.bitgo.UtxoPsbt;
|
|
32
|
+
//# sourceMappingURL=inscriptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inscriptions.d.ts","sourceRoot":"","sources":["../../src/inscriptions.ts"],"names":[],"mappings":";AAOA,OAAO,EAKL,OAAO,EAKR,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAqGhE;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,OAAO,GACf,6BAA6B,CAuB/B;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAKrH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,EAC1C,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,KAAK,CAAC,QAAQ,CA2BxB"}
|