@bitgo/sdk-core 26.3.0 → 26.5.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.
Files changed (118) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/src/account-lib/baseCoin/blsKeyPair.js +26 -22
  3. package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +20 -16
  4. package/dist/src/account-lib/baseCoin/enum.d.ts +3 -1
  5. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  6. package/dist/src/account-lib/baseCoin/enum.js +5 -1
  7. package/dist/src/account-lib/baseCoin/index.js +6 -2
  8. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +6 -2
  9. package/dist/src/account-lib/index.js +6 -2
  10. package/dist/src/account-lib/mpc/index.js +6 -2
  11. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +1 -0
  12. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
  13. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +346 -342
  14. package/dist/src/account-lib/mpc/tss/ecdsa/index.js +6 -2
  15. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts +2 -2
  16. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts.map +1 -1
  17. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.js +3 -3
  18. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +60 -60
  19. package/dist/src/account-lib/mpc/tss/eddsa/index.js +6 -2
  20. package/dist/src/account-lib/mpc/tss/index.js +6 -2
  21. package/dist/src/account-lib/staking/index.js +6 -2
  22. package/dist/src/account-lib/util/crypto.d.ts +8 -1
  23. package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
  24. package/dist/src/account-lib/util/crypto.js +28 -8
  25. package/dist/src/account-lib/util/ed25519KeyDeriver.js +3 -3
  26. package/dist/src/api/index.js +6 -2
  27. package/dist/src/bitgo/address-book/index.js +6 -2
  28. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +1 -0
  29. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  30. package/dist/src/bitgo/baseCoin/baseCoin.js +7 -3
  31. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +1 -0
  32. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  33. package/dist/src/bitgo/baseCoin/index.js +6 -2
  34. package/dist/src/bitgo/bip32util.js +6 -2
  35. package/dist/src/bitgo/bitcoin.js +6 -2
  36. package/dist/src/bitgo/config.js +6 -2
  37. package/dist/src/bitgo/ecdh.js +6 -2
  38. package/dist/src/bitgo/enterprise/enterprise.js +10 -6
  39. package/dist/src/bitgo/enterprise/enterprises.js +6 -2
  40. package/dist/src/bitgo/enterprise/index.js +6 -2
  41. package/dist/src/bitgo/environments.js +7 -7
  42. package/dist/src/bitgo/index.js +6 -2
  43. package/dist/src/bitgo/inscriptionBuilder/index.js +6 -2
  44. package/dist/src/bitgo/internal/index.js +6 -2
  45. package/dist/src/bitgo/internal/internal.js +4 -4
  46. package/dist/src/bitgo/internal/keycard.js +5 -5
  47. package/dist/src/bitgo/keychain/index.js +6 -2
  48. package/dist/src/bitgo/keychain/keychains.js +17 -13
  49. package/dist/src/bitgo/keychain/ovcJsonCodec.js +6 -2
  50. package/dist/src/bitgo/legacyBitcoin.js +7 -3
  51. package/dist/src/bitgo/lightning/iLightning.js +6 -2
  52. package/dist/src/bitgo/lightning/index.js +6 -2
  53. package/dist/src/bitgo/lightning/lightning.js +12 -12
  54. package/dist/src/bitgo/lightning/lightningUtils.js +8 -4
  55. package/dist/src/bitgo/market/index.js +6 -2
  56. package/dist/src/bitgo/market/markets.js +6 -2
  57. package/dist/src/bitgo/pendingApproval/index.js +6 -2
  58. package/dist/src/bitgo/pendingApproval/pendingApproval.js +6 -2
  59. package/dist/src/bitgo/pendingApproval/pendingApprovals.js +6 -2
  60. package/dist/src/bitgo/recovery/index.js +6 -2
  61. package/dist/src/bitgo/staking/iStakingWallet.d.ts +8 -0
  62. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  63. package/dist/src/bitgo/staking/iStakingWallet.js +1 -1
  64. package/dist/src/bitgo/staking/index.js +6 -2
  65. package/dist/src/bitgo/trading/index.js +6 -2
  66. package/dist/src/bitgo/trading/network/index.js +6 -2
  67. package/dist/src/bitgo/trading/network/network.js +2 -2
  68. package/dist/src/bitgo/tss/common.js +6 -6
  69. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +1 -0
  70. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
  71. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +18 -14
  72. package/dist/src/bitgo/tss/ecdsa/index.js +6 -2
  73. package/dist/src/bitgo/tss/eddsa/eddsa.js +9 -9
  74. package/dist/src/bitgo/tss/eddsa/index.js +6 -2
  75. package/dist/src/bitgo/tss/index.js +6 -2
  76. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +7 -3
  77. package/dist/src/bitgo/utils/blsUtils.js +5 -5
  78. package/dist/src/bitgo/utils/codecProps.js +6 -2
  79. package/dist/src/bitgo/utils/decode.js +10 -6
  80. package/dist/src/bitgo/utils/index.js +6 -2
  81. package/dist/src/bitgo/utils/mpcUtils.js +8 -8
  82. package/dist/src/bitgo/utils/opengpgUtils.js +26 -22
  83. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +9 -5
  84. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +43 -39
  85. package/dist/src/bitgo/utils/tss/ecdsa/index.js +6 -2
  86. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +45 -41
  87. package/dist/src/bitgo/utils/tss/eddsa/index.js +6 -2
  88. package/dist/src/bitgo/utils/tss/index.js +6 -2
  89. package/dist/src/bitgo/utils/util.js +7 -3
  90. package/dist/src/bitgo/wallet/BuildParams.js +7 -3
  91. package/dist/src/bitgo/wallet/index.js +6 -2
  92. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  93. package/dist/src/bitgo/wallet/wallet.js +35 -35
  94. package/dist/src/bitgo/wallet/wallets.js +17 -13
  95. package/dist/src/bitgo/webhook/index.js +6 -2
  96. package/dist/src/bitgo/webhook/webhooks.js +6 -2
  97. package/dist/src/coins/index.js +6 -2
  98. package/dist/src/coins/ofc.js +2 -2
  99. package/dist/src/coins/ofcToken.js +2 -2
  100. package/dist/src/common.js +6 -2
  101. package/dist/src/index.d.ts +0 -1
  102. package/dist/src/index.d.ts.map +1 -1
  103. package/dist/src/index.js +6 -3
  104. package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.js +22 -18
  105. package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.js +7 -7
  106. package/dist/test/unit/bitgo/utils/notEmpty.js +3 -3
  107. package/dist/test/unit/bitgo/utils/postWithCodec.js +7 -3
  108. package/dist/test/unit/bitgo/wallet/BuildParams.js +6 -2
  109. package/dist/test/unit/bitgo/wallet/SendTransactionRequest.js +6 -2
  110. package/dist/test/unit/units.js +63 -63
  111. package/dist/tsconfig.tsbuildinfo +1 -1
  112. package/package.json +4 -4
  113. package/dist/src/openssl/index.d.ts +0 -5
  114. package/dist/src/openssl/index.d.ts.map +0 -1
  115. package/dist/src/openssl/index.js +0 -9
  116. package/dist/test/unit/openssl.d.ts +0 -2
  117. package/dist/test/unit/openssl.d.ts.map +0 -1
  118. package/dist/test/unit/openssl.js +0 -39
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitgo/sdk-core",
3
- "version": "26.3.0",
3
+ "version": "26.5.0",
4
4
  "description": "core library functions for BitGoJS",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -39,8 +39,8 @@
39
39
  "dependencies": {
40
40
  "@bitgo/bls-dkg": "^1.3.1",
41
41
  "@bitgo/public-types": "2.1.0",
42
- "@bitgo/sdk-lib-mpc": "^9.1.1",
43
- "@bitgo/statics": "^48.1.0",
42
+ "@bitgo/sdk-lib-mpc": "^9.2.0",
43
+ "@bitgo/statics": "^48.3.0",
44
44
  "@bitgo/utxo-lib": "^9.34.0",
45
45
  "@noble/secp256k1": "1.6.3",
46
46
  "@stablelib/hex": "^1.0.0",
@@ -76,5 +76,5 @@
76
76
  "@types/lodash": "^4.14.151",
77
77
  "nyc": "^15.0.0"
78
78
  },
79
- "gitHead": "b4fdea76c96ed3475899aec21477a6dfb5b7db0e"
79
+ "gitHead": "836681179c597c51a4f60f4f8a5a684eebd49f98"
80
80
  }
@@ -1,5 +0,0 @@
1
- /**
2
- * @deprecated Use OpenSSL from sdk-lib-mpc instead
3
- */
4
- export { OpenSSL } from '@bitgo/sdk-lib-mpc';
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/openssl/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OpenSSL = void 0;
4
- /**
5
- * @deprecated Use OpenSSL from sdk-lib-mpc instead
6
- */
7
- var sdk_lib_mpc_1 = require("@bitgo/sdk-lib-mpc");
8
- Object.defineProperty(exports, "OpenSSL", { enumerable: true, get: function () { return sdk_lib_mpc_1.OpenSSL; } });
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvb3BlbnNzbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILGtEQUE2QztBQUFwQyxzR0FBQSxPQUFPLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXByZWNhdGVkIFVzZSBPcGVuU1NMIGZyb20gc2RrLWxpYi1tcGMgaW5zdGVhZFxuICovXG5leHBvcnQgeyBPcGVuU1NMIH0gZnJvbSAnQGJpdGdvL3Nkay1saWItbXBjJztcbiJdfQ==
@@ -1,2 +0,0 @@
1
- import 'should';
2
- //# sourceMappingURL=openssl.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openssl.d.ts","sourceRoot":"","sources":["../../../test/unit/openssl.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- require("should");
4
- const sdk_lib_mpc_1 = require("@bitgo/sdk-lib-mpc");
5
- const bigint_crypto_utils_1 = require("bigint-crypto-utils");
6
- const node_utils_1 = require("../node.utils");
7
- describe('openssl', function () {
8
- it('should throw an error if module is not initialized', async function () {
9
- const openssl = new sdk_lib_mpc_1.OpenSSL();
10
- await openssl
11
- .generateSafePrime(sdk_lib_mpc_1.minModulusBitLength)
12
- .should.be.rejectedWith('The OpenSSl class is not initialized! Please call OpenSSL.init().');
13
- });
14
- // node 14 requires --experimental-wasm-bigint node flag
15
- if (node_utils_1.NODE_MAJOR_VERSION > 14) {
16
- it('should generate a safe prime number of a certain bitLength', async function () {
17
- const openssl = new sdk_lib_mpc_1.OpenSSL();
18
- await openssl.init();
19
- const safePrime = await openssl.generateSafePrime(512);
20
- bigint_crypto_utils_1.bitLength(safePrime).should.equal(512);
21
- });
22
- it('should generate a safe prime number', async function () {
23
- const openssl = new sdk_lib_mpc_1.OpenSSL();
24
- await openssl.init();
25
- const safePrime = await openssl.generateSafePrime(512);
26
- let isPrime = await bigint_crypto_utils_1.isProbablyPrime(safePrime);
27
- isPrime.should.be.true();
28
- isPrime = await bigint_crypto_utils_1.isProbablyPrime((safePrime - BigInt(1)) / BigInt(2));
29
- isPrime.should.be.true();
30
- });
31
- it('should be able to generate multiple safe primes with the same openssl instance', async function () {
32
- const openssl = new sdk_lib_mpc_1.OpenSSL();
33
- await openssl.init();
34
- const safePrimes = await Promise.all([openssl.generateSafePrime(512), openssl.generateSafePrime(512)]);
35
- safePrimes.length.should.equal(2);
36
- });
37
- }
38
- });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnNzbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9vcGVuc3NsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0JBQWdCO0FBQ2hCLG9EQUFrRTtBQUNsRSw2REFBaUU7QUFDakUsOENBQW1EO0FBRW5ELFFBQVEsQ0FBQyxTQUFTLEVBQUU7SUFDbEIsRUFBRSxDQUFDLG9EQUFvRCxFQUFFLEtBQUs7UUFDNUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxxQkFBTyxFQUFFLENBQUM7UUFDOUIsTUFBTSxPQUFPO2FBQ1YsaUJBQWlCLENBQUMsaUNBQW1CLENBQUM7YUFDdEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsbUVBQW1FLENBQUMsQ0FBQztJQUNqRyxDQUFDLENBQUMsQ0FBQztJQUVILHdEQUF3RDtJQUN4RCxJQUFJLCtCQUFrQixHQUFHLEVBQUUsRUFBRTtRQUMzQixFQUFFLENBQUMsNERBQTRELEVBQUUsS0FBSztZQUNwRSxNQUFNLE9BQU8sR0FBRyxJQUFJLHFCQUFPLEVBQUUsQ0FBQztZQUM5QixNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixNQUFNLFNBQVMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2RCwrQkFBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscUNBQXFDLEVBQUUsS0FBSztZQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLHFCQUFPLEVBQUUsQ0FBQztZQUM5QixNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixNQUFNLFNBQVMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2RCxJQUFJLE9BQU8sR0FBRyxNQUFNLHFDQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDL0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekIsT0FBTyxHQUFHLE1BQU0scUNBQWUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnRkFBZ0YsRUFBRSxLQUFLO1lBQ3hGLE1BQU0sT0FBTyxHQUFHLElBQUkscUJBQU8sRUFBRSxDQUFDO1lBQzlCLE1BQU0sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLE1BQU0sVUFBVSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZHLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBPcGVuU1NMLCBtaW5Nb2R1bHVzQml0TGVuZ3RoIH0gZnJvbSAnQGJpdGdvL3Nkay1saWItbXBjJztcbmltcG9ydCB7IGJpdExlbmd0aCwgaXNQcm9iYWJseVByaW1lIH0gZnJvbSAnYmlnaW50LWNyeXB0by11dGlscyc7XG5pbXBvcnQgeyBOT0RFX01BSk9SX1ZFUlNJT04gfSBmcm9tICcuLi9ub2RlLnV0aWxzJztcblxuZGVzY3JpYmUoJ29wZW5zc2wnLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgbW9kdWxlIGlzIG5vdCBpbml0aWFsaXplZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBvcGVuc3NsID0gbmV3IE9wZW5TU0woKTtcbiAgICBhd2FpdCBvcGVuc3NsXG4gICAgICAuZ2VuZXJhdGVTYWZlUHJpbWUobWluTW9kdWx1c0JpdExlbmd0aClcbiAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdUaGUgT3BlblNTbCBjbGFzcyBpcyBub3QgaW5pdGlhbGl6ZWQhIFBsZWFzZSBjYWxsIE9wZW5TU0wuaW5pdCgpLicpO1xuICB9KTtcblxuICAvLyBub2RlIDE0IHJlcXVpcmVzIC0tZXhwZXJpbWVudGFsLXdhc20tYmlnaW50IG5vZGUgZmxhZ1xuICBpZiAoTk9ERV9NQUpPUl9WRVJTSU9OID4gMTQpIHtcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEgc2FmZSBwcmltZSBudW1iZXIgb2YgYSBjZXJ0YWluIGJpdExlbmd0aCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG9wZW5zc2wgPSBuZXcgT3BlblNTTCgpO1xuICAgICAgYXdhaXQgb3BlbnNzbC5pbml0KCk7XG4gICAgICBjb25zdCBzYWZlUHJpbWUgPSBhd2FpdCBvcGVuc3NsLmdlbmVyYXRlU2FmZVByaW1lKDUxMik7XG4gICAgICBiaXRMZW5ndGgoc2FmZVByaW1lKS5zaG91bGQuZXF1YWwoNTEyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgYSBzYWZlIHByaW1lIG51bWJlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG9wZW5zc2wgPSBuZXcgT3BlblNTTCgpO1xuICAgICAgYXdhaXQgb3BlbnNzbC5pbml0KCk7XG4gICAgICBjb25zdCBzYWZlUHJpbWUgPSBhd2FpdCBvcGVuc3NsLmdlbmVyYXRlU2FmZVByaW1lKDUxMik7XG4gICAgICBsZXQgaXNQcmltZSA9IGF3YWl0IGlzUHJvYmFibHlQcmltZShzYWZlUHJpbWUpO1xuICAgICAgaXNQcmltZS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgaXNQcmltZSA9IGF3YWl0IGlzUHJvYmFibHlQcmltZSgoc2FmZVByaW1lIC0gQmlnSW50KDEpKSAvIEJpZ0ludCgyKSk7XG4gICAgICBpc1ByaW1lLnNob3VsZC5iZS50cnVlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gZ2VuZXJhdGUgbXVsdGlwbGUgc2FmZSBwcmltZXMgd2l0aCB0aGUgc2FtZSBvcGVuc3NsIGluc3RhbmNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgb3BlbnNzbCA9IG5ldyBPcGVuU1NMKCk7XG4gICAgICBhd2FpdCBvcGVuc3NsLmluaXQoKTtcbiAgICAgIGNvbnN0IHNhZmVQcmltZXMgPSBhd2FpdCBQcm9taXNlLmFsbChbb3BlbnNzbC5nZW5lcmF0ZVNhZmVQcmltZSg1MTIpLCBvcGVuc3NsLmdlbmVyYXRlU2FmZVByaW1lKDUxMildKTtcbiAgICAgIHNhZmVQcmltZXMubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcbiAgICB9KTtcbiAgfVxufSk7XG4iXX0=