@rosen-bridge/minimum-fee 2.2.3 → 3.0.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/CHANGELOG.md +86 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +3 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +26 -0
- package/dist/{lib/handleApiError.d.ts → handleApiError.d.ts} +4 -4
- package/dist/handleApiError.d.ts.map +1 -0
- package/dist/handleApiError.js +35 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/{lib/MinimumFeeBox.d.ts → minimumFeeBox.d.ts} +2 -2
- package/dist/minimumFeeBox.d.ts.map +1 -0
- package/dist/minimumFeeBox.js +219 -0
- package/dist/{lib/MinimumFeeBoxBuilder.d.ts → minimumFeeBoxBuilder.d.ts} +2 -2
- package/dist/minimumFeeBoxBuilder.d.ts.map +1 -0
- package/dist/minimumFeeBoxBuilder.js +138 -0
- package/dist/{lib/MinimumFeeConfig.d.ts → minimumFeeConfig.d.ts} +1 -1
- package/dist/minimumFeeConfig.d.ts.map +1 -0
- package/dist/minimumFeeConfig.js +41 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +22 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +111 -0
- package/package.json +24 -26
- package/dist/lib/MinimumFeeBox.d.ts.map +0 -1
- package/dist/lib/MinimumFeeBox.js +0 -219
- package/dist/lib/MinimumFeeBoxBuilder.d.ts.map +0 -1
- package/dist/lib/MinimumFeeBoxBuilder.js +0 -138
- package/dist/lib/MinimumFeeConfig.d.ts.map +0 -1
- package/dist/lib/MinimumFeeConfig.js +0 -41
- package/dist/lib/constants.d.ts.map +0 -1
- package/dist/lib/constants.js +0 -3
- package/dist/lib/errors.d.ts.map +0 -1
- package/dist/lib/errors.js +0 -26
- package/dist/lib/handleApiError.d.ts.map +0 -1
- package/dist/lib/handleApiError.js +0 -35
- package/dist/lib/index.d.ts +0 -8
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/index.js +0 -8
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js +0 -22
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/utils.js +0 -111
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- /package/dist/{lib/constants.d.ts → constants.d.ts} +0 -0
- /package/dist/{lib/errors.d.ts → errors.d.ts} +0 -0
- /package/dist/{lib/types.d.ts → types.d.ts} +0 -0
- /package/dist/{lib/utils.d.ts → utils.d.ts} +0 -0
package/dist/lib/utils.js
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { Constant } from 'ergo-lib-wasm-nodejs';
|
|
2
|
-
/**
|
|
3
|
-
* extracts Fee config from box registers
|
|
4
|
-
* @param box
|
|
5
|
-
*/
|
|
6
|
-
export const extractFeeFromBox = (box) => {
|
|
7
|
-
const R4 = box.register_value(4);
|
|
8
|
-
const R5 = box.register_value(5);
|
|
9
|
-
const R6 = box.register_value(6);
|
|
10
|
-
const R7 = box.register_value(7);
|
|
11
|
-
const R8 = box.register_value(8);
|
|
12
|
-
const R9 = box.register_value(9);
|
|
13
|
-
if (!R4 || !R5 || !R6 || !R7 || !R8 || !R9)
|
|
14
|
-
throw Error(`Incomplete register data for minimum-fee config box [${box
|
|
15
|
-
.box_id()
|
|
16
|
-
.to_str()}]`);
|
|
17
|
-
const fees = [];
|
|
18
|
-
const chains = R4.to_coll_coll_byte().map((element) => Buffer.from(element).toString());
|
|
19
|
-
const heights = R5.to_js();
|
|
20
|
-
const bridgeFees = R6.to_js();
|
|
21
|
-
const networkFees = R7.to_js();
|
|
22
|
-
const rsnRatios = R8.to_js();
|
|
23
|
-
const feeRatios = R9.to_js();
|
|
24
|
-
for (let feeIdx = 0; feeIdx < heights.length; feeIdx++) {
|
|
25
|
-
const fee = {
|
|
26
|
-
heights: {},
|
|
27
|
-
configs: {},
|
|
28
|
-
};
|
|
29
|
-
for (let chainIdx = 0; chainIdx < chains.length; chainIdx++) {
|
|
30
|
-
const chain = chains[chainIdx];
|
|
31
|
-
if (heights[feeIdx][chainIdx] === -1)
|
|
32
|
-
continue;
|
|
33
|
-
fee.heights[chain] = heights[feeIdx][chainIdx];
|
|
34
|
-
if (bridgeFees[feeIdx][chainIdx] === '-1')
|
|
35
|
-
continue;
|
|
36
|
-
fee.configs[chain] = {
|
|
37
|
-
bridgeFee: BigInt(bridgeFees[feeIdx][chainIdx]),
|
|
38
|
-
networkFee: BigInt(networkFees[feeIdx][chainIdx]),
|
|
39
|
-
rsnRatio: BigInt(rsnRatios[feeIdx][chainIdx][0]),
|
|
40
|
-
rsnRatioDivisor: BigInt(rsnRatios[feeIdx][chainIdx][1]),
|
|
41
|
-
feeRatio: BigInt(feeRatios[feeIdx][chainIdx]),
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
fees.push(fee);
|
|
45
|
-
}
|
|
46
|
-
return fees;
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* converts fee config to register values
|
|
50
|
-
* @param fees
|
|
51
|
-
* @returns
|
|
52
|
-
*/
|
|
53
|
-
export const feeToRegisterValues = (fees) => {
|
|
54
|
-
// extract chains
|
|
55
|
-
const chains = [];
|
|
56
|
-
fees.forEach((fee) => {
|
|
57
|
-
Object.keys(fee.heights).forEach((feeChain) => {
|
|
58
|
-
if (!chains.includes(feeChain))
|
|
59
|
-
chains.push(feeChain);
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
chains.sort();
|
|
63
|
-
// extract configs
|
|
64
|
-
const heights = [];
|
|
65
|
-
const bridgeFees = [];
|
|
66
|
-
const networkFees = [];
|
|
67
|
-
const rsnRatios = [];
|
|
68
|
-
const feeRatios = [];
|
|
69
|
-
fees.forEach((fee) => {
|
|
70
|
-
const heightsConfigs = [];
|
|
71
|
-
const bridgeFeesConfigs = [];
|
|
72
|
-
const networkFeesConfigs = [];
|
|
73
|
-
const rsnRatiosConfigs = [];
|
|
74
|
-
const feeRatiosConfigs = [];
|
|
75
|
-
chains.forEach((chain) => {
|
|
76
|
-
if (Object.hasOwn(fee.heights, chain))
|
|
77
|
-
heightsConfigs.push(fee.heights[chain]);
|
|
78
|
-
else
|
|
79
|
-
heightsConfigs.push(-1);
|
|
80
|
-
if (Object.hasOwn(fee.configs, chain)) {
|
|
81
|
-
bridgeFeesConfigs.push(fee.configs[chain].bridgeFee.toString());
|
|
82
|
-
networkFeesConfigs.push(fee.configs[chain].networkFee.toString());
|
|
83
|
-
rsnRatiosConfigs.push([
|
|
84
|
-
fee.configs[chain].rsnRatio.toString(),
|
|
85
|
-
fee.configs[chain].rsnRatioDivisor.toString(),
|
|
86
|
-
]);
|
|
87
|
-
feeRatiosConfigs.push(fee.configs[chain].feeRatio.toString());
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
bridgeFeesConfigs.push('-1');
|
|
91
|
-
networkFeesConfigs.push('-1');
|
|
92
|
-
rsnRatiosConfigs.push(['-1', '-1']);
|
|
93
|
-
feeRatiosConfigs.push('-1');
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
heights.push(heightsConfigs);
|
|
97
|
-
bridgeFees.push(bridgeFeesConfigs);
|
|
98
|
-
networkFees.push(networkFeesConfigs);
|
|
99
|
-
rsnRatios.push(rsnRatiosConfigs);
|
|
100
|
-
feeRatios.push(feeRatiosConfigs);
|
|
101
|
-
});
|
|
102
|
-
return {
|
|
103
|
-
R4: Constant.from_coll_coll_byte(chains.map((chain) => Buffer.from(chain))),
|
|
104
|
-
R5: Constant.from_js(heights),
|
|
105
|
-
R6: Constant.from_js(bridgeFees),
|
|
106
|
-
R7: Constant.from_js(networkFees),
|
|
107
|
-
R8: Constant.from_js(rsnRatios),
|
|
108
|
-
R9: Constant.from_js(feeRatios),
|
|
109
|
-
};
|
|
110
|
-
};
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBVyxNQUFNLHNCQUFzQixDQUFDO0FBR3pEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBWSxFQUFjLEVBQUU7SUFDNUQsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFakMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDeEMsTUFBTSxLQUFLLENBQ1Qsd0RBQXdELEdBQUc7YUFDeEQsTUFBTSxFQUFFO2FBQ1IsTUFBTSxFQUFFLEdBQUcsQ0FDZixDQUFDO0lBRUosTUFBTSxJQUFJLEdBQWUsRUFBRSxDQUFDO0lBQzVCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ3BELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQ2hDLENBQUM7SUFDRixNQUFN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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RhbnQsIEVyZ29Cb3ggfSBmcm9tICdlcmdvLWxpYi13YXNtLW5vZGVqcyc7XG5pbXBvcnQgeyBGZWUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBleHRyYWN0cyBGZWUgY29uZmlnIGZyb20gYm94IHJlZ2lzdGVyc1xuICogQHBhcmFtIGJveFxuICovXG5leHBvcnQgY29uc3QgZXh0cmFjdEZlZUZyb21Cb3ggPSAoYm94OiBFcmdvQm94KTogQXJyYXk8RmVlPiA9PiB7XG4gIGNvbnN0IFI0ID0gYm94LnJlZ2lzdGVyX3ZhbHVlKDQpO1xuICBjb25zdCBSNSA9IGJveC5yZWdpc3Rlcl92YWx1ZSg1KTtcbiAgY29uc3QgUjYgPSBib3gucmVnaXN0ZXJfdmFsdWUoNik7XG4gIGNvbnN0IFI3ID0gYm94LnJlZ2lzdGVyX3ZhbHVlKDcpO1xuICBjb25zdCBSOCA9IGJveC5yZWdpc3Rlcl92YWx1ZSg4KTtcbiAgY29uc3QgUjkgPSBib3gucmVnaXN0ZXJfdmFsdWUoOSk7XG5cbiAgaWYgKCFSNCB8fCAhUjUgfHwgIVI2IHx8ICFSNyB8fCAhUjggfHwgIVI5KVxuICAgIHRocm93IEVycm9yKFxuICAgICAgYEluY29tcGxldGUgcmVnaXN0ZXIgZGF0YSBmb3IgbWluaW11bS1mZWUgY29uZmlnIGJveCBbJHtib3hcbiAgICAgICAgLmJveF9pZCgpXG4gICAgICAgIC50b19zdHIoKX1dYFxuICAgICk7XG5cbiAgY29uc3QgZmVlczogQXJyYXk8RmVlPiA9IFtdO1xuICBjb25zdCBjaGFpbnMgPSBSNC50b19jb2xsX2NvbGxfYnl0ZSgpLm1hcCgoZWxlbWVudCkgPT5cbiAgICBCdWZmZXIuZnJvbShlbGVtZW50KS50b1N0cmluZygpXG4gICk7XG4gIGNvbnN0IGhlaWdodHMgPSBSNS50b19qcygpIGFzIEFycmF5PEFycmF5PG51bWJlcj4+O1xuICBjb25zdCBicmlkZ2VGZWVzID0gUjYudG9fanMoKSBhcyBBcnJheTxBcnJheTxzdHJpbmc+PjtcbiAgY29uc3QgbmV0d29ya0ZlZXMgPSBSNy50b19qcygpIGFzIEFycmF5PEFycmF5PHN0cmluZz4+O1xuICBjb25zdCByc25SYXRpb3MgPSBSOC50b19qcygpIGFzIEFycmF5PEFycmF5PEFycmF5PHN0cmluZz4+PjtcbiAgY29uc3QgZmVlUmF0aW9zID0gUjkudG9fanMoKSBhcyBBcnJheTxBcnJheTxzdHJpbmc+PjtcblxuICBmb3IgKGxldCBmZWVJZHggPSAwOyBmZWVJZHggPCBoZWlnaHRzLmxlbmd0aDsgZmVlSWR4KyspIHtcbiAgICBjb25zdCBmZWU6IEZlZSA9IHtcbiAgICAgIGhlaWdodHM6IHt9LFxuICAgICAgY29uZmlnczoge30sXG4gICAgfTtcbiAgICBmb3IgKGxldCBjaGFpbklkeCA9IDA7IGNoYWluSWR4IDwgY2hhaW5zLmxlbmd0aDsgY2hhaW5JZHgrKykge1xuICAgICAgY29uc3QgY2hhaW4gPSBjaGFpbnNbY2hhaW5JZHhdO1xuXG4gICAgICBpZiAoaGVpZ2h0c1tmZWVJZHhdW2NoYWluSWR4XSA9PT0gLTEpIGNvbnRpbnVlO1xuICAgICAgZmVlLmhlaWdodHNbY2hhaW5dID0gaGVpZ2h0c1tmZWVJZHhdW2NoYWluSWR4XTtcblxuICAgICAgaWYgKGJyaWRnZUZlZXNbZmVlSWR4XVtjaGFpbklkeF0gPT09ICctMScpIGNvbnRpbnVlO1xuICAgICAgZmVlLmNvbmZpZ3NbY2hhaW5dID0ge1xuICAgICAgICBicmlkZ2VGZWU6IEJpZ0ludChicmlkZ2VGZWVzW2ZlZUlkeF1bY2hhaW5JZHhdKSxcbiAgICAgICAgbmV0d29ya0ZlZTogQmlnSW50KG5ldHdvcmtGZWVzW2ZlZUlkeF1bY2hhaW5JZHhdKSxcbiAgICAgICAgcnNuUmF0aW86IEJpZ0ludChyc25SYXRpb3NbZmVlSWR4XVtjaGFpbklkeF1bMF0pLFxuICAgICAgICByc25SYXRpb0Rpdmlzb3I6IEJpZ0ludChyc25SYXRpb3NbZmVlSWR4XVtjaGFpbklkeF1bMV0pLFxuICAgICAgICBmZWVSYXRpbzogQmlnSW50KGZlZVJhdGlvc1tmZWVJZHhdW2NoYWluSWR4XSksXG4gICAgICB9O1xuICAgIH1cbiAgICBmZWVzLnB1c2goZmVlKTtcbiAgfVxuXG4gIHJldHVybiBmZWVzO1xufTtcblxuLyoqXG4gKiBjb252ZXJ0cyBmZWUgY29uZmlnIHRvIHJlZ2lzdGVyIHZhbHVlc1xuICogQHBhcmFtIGZlZXNcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBmZWVUb1JlZ2lzdGVyVmFsdWVzID0gKGZlZXM6IEFycmF5PEZlZT4pID0+IHtcbiAgLy8gIGV4dHJhY3QgY2hhaW5zXG4gIGNvbnN0IGNoYWluczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBmZWVzLmZvckVhY2goKGZlZSkgPT4ge1xuICAgIE9iamVjdC5rZXlzKGZlZS5oZWlnaHRzKS5mb3JFYWNoKChmZWVDaGFpbikgPT4ge1xuICAgICAgaWYgKCFjaGFpbnMuaW5jbHVkZXMoZmVlQ2hhaW4pKSBjaGFpbnMucHVzaChmZWVDaGFpbik7XG4gICAgfSk7XG4gIH0pO1xuICBjaGFpbnMuc29ydCgpO1xuICAvLyAgZXh0cmFjdCBjb25maWdzXG4gIGNvbnN0IGhlaWdodHM6IEFycmF5PEFycmF5PG51bWJlcj4+ID0gW107XG4gIGNvbnN0IGJyaWRnZUZlZXM6IEFycmF5PEFycmF5PHN0cmluZz4+ID0gW107XG4gIGNvbnN0IG5ldHdvcmtGZWVzOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IFtdO1xuICBjb25zdCByc25SYXRpb3M6IEFycmF5PEFycmF5PEFycmF5PHN0cmluZz4+PiA9IFtdO1xuICBjb25zdCBmZWVSYXRpb3M6IEFycmF5PEFycmF5PHN0cmluZz4+ID0gW107XG4gIGZlZXMuZm9yRWFjaCgoZmVlKSA9PiB7XG4gICAgY29uc3QgaGVpZ2h0c0NvbmZpZ3M6IEFycmF5PG51bWJlcj4gPSBbXTtcbiAgICBjb25zdCBicmlkZ2VGZWVzQ29uZmlnczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIGNvbnN0IG5ldHdvcmtGZWVzQ29uZmlnczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIGNvbnN0IHJzblJhdGlvc0NvbmZpZ3M6IEFycmF5PEFycmF5PHN0cmluZz4+ID0gW107XG4gICAgY29uc3QgZmVlUmF0aW9zQ29uZmlnczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG4gICAgY2hhaW5zLmZvckVhY2goKGNoYWluKSA9PiB7XG4gICAgICBpZiAoT2JqZWN0Lmhhc093bihmZWUuaGVpZ2h0cywgY2hhaW4pKVxuICAgICAgICBoZWlnaHRzQ29uZmlncy5wdXNoKGZlZS5oZWlnaHRzW2NoYWluXSk7XG4gICAgICBlbHNlIGhlaWdodHNDb25maWdzLnB1c2goLTEpO1xuXG4gICAgICBpZiAoT2JqZWN0Lmhhc093bihmZWUuY29uZmlncywgY2hhaW4pKSB7XG4gICAgICAgIGJyaWRnZUZlZXNDb25maWdzLnB1c2goZmVlLmNvbmZpZ3NbY2hhaW5dLmJyaWRnZUZlZS50b1N0cmluZygpKTtcbiAgICAgICAgbmV0d29ya0ZlZXNDb25maWdzLnB1c2goZmVlLmNvbmZpZ3NbY2hhaW5dLm5ldHdvcmtGZWUudG9TdHJpbmcoKSk7XG4gICAgICAgIHJzblJhdGlvc0NvbmZpZ3MucHVzaChbXG4gICAgICAgICAgZmVlLmNvbmZpZ3NbY2hhaW5dLnJzblJhdGlvLnRvU3RyaW5nKCksXG4gICAgICAgICAgZmVlLmNvbmZpZ3NbY2hhaW5dLnJzblJhdGlvRGl2aXNvci50b1N0cmluZygpLFxuICAgICAgICBdKTtcbiAgICAgICAgZmVlUmF0aW9zQ29uZmlncy5wdXNoKGZlZS5jb25maWdzW2NoYWluXS5mZWVSYXRpby50b1N0cmluZygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyaWRnZUZlZXNDb25maWdzLnB1c2goJy0xJyk7XG4gICAgICAgIG5ldHdvcmtGZWVzQ29uZmlncy5wdXNoKCctMScpO1xuICAgICAgICByc25SYXRpb3NDb25maWdzLnB1c2goWyctMScsICctMSddKTtcbiAgICAgICAgZmVlUmF0aW9zQ29uZmlncy5wdXNoKCctMScpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaGVpZ2h0cy5wdXNoKGhlaWdodHNDb25maWdzKTtcbiAgICBicmlkZ2VGZWVzLnB1c2goYnJpZGdlRmVlc0NvbmZpZ3MpO1xuICAgIG5ldHdvcmtGZWVzLnB1c2gobmV0d29ya0ZlZXNDb25maWdzKTtcbiAgICByc25SYXRpb3MucHVzaChyc25SYXRpb3NDb25maWdzKTtcbiAgICBmZWVSYXRpb3MucHVzaChmZWVSYXRpb3NDb25maWdzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBSNDogQ29uc3RhbnQuZnJvbV9jb2xsX2NvbGxfYnl0ZShjaGFpbnMubWFwKChjaGFpbikgPT4gQnVmZmVyLmZyb20oY2hhaW4pKSksXG4gICAgUjU6IENvbnN0YW50LmZyb21fanMoaGVpZ2h0cyksXG4gICAgUjY6IENvbnN0YW50LmZyb21fanMoYnJpZGdlRmVlcyksXG4gICAgUjc6IENvbnN0YW50LmZyb21fanMobmV0d29ya0ZlZXMpLFxuICAgIFI4OiBDb25zdGFudC5mcm9tX2pzKHJzblJhdGlvcyksXG4gICAgUjk6IENvbnN0YW50LmZyb21fanMoZmVlUmF0aW9zKSxcbiAgfTtcbn07XG4iXX0=
|