New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@sorare/crypto

Package Overview
Dependencies
Maintainers
34
Versions
40
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sorare/crypto - npm Package Compare versions

Comparing version 2.0.2 to 3.0.0

4

CHANGELOG.md

@@ -0,1 +1,5 @@

# 3.0.0
- Breaking change: Use bigint type for wei amounts
# 2.0.0

@@ -2,0 +6,0 @@

12

dist/index.test.js

@@ -20,3 +20,3 @@ "use strict";

var transfer = {
amount: '2154549703648910716',
amount: 2154549703648910716n,
nonce: 1,

@@ -52,3 +52,3 @@ senderVaultId: '34',

tokenId: '0x3003a65651d3b9fb2eff934a4416db301afd112a8492aaf8d7297fc87dcd9f4',
feeLimit: '10'
feeLimit: 10n
}

@@ -78,4 +78,4 @@ });

vaultIdBuy: 27,
amountSell: '2154686749748910716',
amountBuy: '1470242115489520459',
amountSell: 2154686749748910716n,
amountBuy: 1470242115489520459n,
tokenSell: '0x5fa3383597691ea9d827a79e1a4f0f7989c35ced18ca9619de8ab97e661020',

@@ -109,3 +109,3 @@ tokenBuy: '0x774961c824a3b0fb3d2965f01471c9c7734bf8dbde659e0c08dca2ef18d56a',

tokenId: '0x3003a65651d3b9fb2eff934a4416db301afd112a8492aaf8d7297fc87dcd9f4',
feeLimit: '10'
feeLimit: 10n
}

@@ -140,2 +140,2 @@ });

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50ZXN0LnRzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwibW5lbW9uaWMiLCJwcml2YXRlS2V5IiwiaXQiLCJleHBlY3QiLCJ0b0VxdWFsIiwidHJhbnNmZXIiLCJhbW91bnQiLCJub25jZSIsInNlbmRlclZhdWx0SWQiLCJ0b2tlbiIsInJlY2VpdmVyVmF1bHRJZCIsInJlY2VpdmVyUHVibGljS2V5IiwiZXhwaXJhdGlvblRpbWVzdGFtcCIsInIiLCJzIiwicHVibGljS2V5IiwidHJhbnNmZXJXaXRoRmVlIiwiZmVlSW5mb1VzZXIiLCJzb3VyY2VWYXVsdElkIiwidG9rZW5JZCIsImZlZUxpbWl0IiwibGltaXRPcmRlciIsInZhdWx0SWRTZWxsIiwidmF1bHRJZEJ1eSIsImFtb3VudFNlbGwiLCJhbW91bnRCdXkiLCJ0b2tlblNlbGwiLCJ0b2tlbkJ1eSIsImxpbWl0T3JkZXJXaXRoRmVlIiwiZmVlSW5mbyIsIm1lc3NhZ2UiLCJzaWduYXR1cmUiLCJ0b0JlVHJ1dGh5Il0sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7OztBQVlBQSxRQUFRLENBQUMsYUFBRCxFQUFnQixZQUFNO0FBQzVCLE1BQU1DLFFBQVEsR0FDWixrRkFDQSxzRkFGRjtBQUlBLE1BQU1DLFVBQVUsR0FBRyxtQkFBWUQsUUFBWixDQUFuQjtBQUVBRSxFQUFBQSxFQUFFLENBQUMsb0NBQUQsRUFBdUMsWUFBTTtBQUM3Q0MsSUFBQUEsTUFBTSxDQUFDRixVQUFELENBQU4sQ0FBbUJHLE9BQW5CLENBQ0Usb0VBREY7QUFHRCxHQUpDLENBQUY7QUFLRCxDQVpPLENBQVI7QUFjQUwsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFNO0FBQ3pCLE1BQU1NLFFBQWtCLEdBQUc7QUFDekJDLElBQUFBLE1BQU0sRUFBRSxxQkFEaUI7QUFFekJDLElBQUFBLEtBQUssRUFBRSxDQUZrQjtBQUd6QkMsSUFBQUEsYUFBYSxFQUFFLElBSFU7QUFJekJDLElBQUFBLEtBQUssRUFBRSxtRUFKa0I7QUFLekJDLElBQUFBLGVBQWUsRUFBRSxJQUxRO0FBTXpCQyxJQUFBQSxpQkFBaUIsRUFDZixrRUFQdUI7QUFRekJDLElBQUFBLG1CQUFtQixFQUFFO0FBUkksR0FBM0I7QUFXQSxNQUFNWCxVQUFVLEdBQ2Qsb0VBREY7QUFHQUYsRUFBQUEsUUFBUSxDQUFDLGNBQUQsRUFBaUIsWUFBTTtBQUM3Qix3QkFBaUIsb0JBQWFFLFVBQWIsRUFBeUJJLFFBQXpCLENBQWpCO0FBQUEsUUFBUVEsQ0FBUixpQkFBUUEsQ0FBUjtBQUFBLFFBQVdDLENBQVgsaUJBQVdBLENBQVg7O0FBRUFaLElBQUFBLEVBQUUsQ0FBQywrQkFBRCxFQUFrQyxZQUFNO0FBQ3hDQyxNQUFBQSxNQUFNLENBQUNVLENBQUQsQ0FBTixDQUFVVCxPQUFWLENBQ0UsbUVBREY7QUFHQUQsTUFBQUEsTUFBTSxDQUFDVyxDQUFELENBQU4sQ0FBVVYsT0FBVixDQUNFLG1FQURGO0FBR0QsS0FQQyxDQUFGO0FBU0FGLElBQUFBLEVBQUUsQ0FBQyxpQkFBRCxFQUFvQixZQUFNO0FBQzFCLFVBQU1hLFNBQVMsR0FBRyx1QkFBZ0JkLFVBQWhCLENBQWxCO0FBQ0FFLE1BQUFBLE1BQU0sQ0FBQyxzQkFBZVksU0FBZixFQUEwQlYsUUFBMUIsRUFBb0M7QUFBRVEsUUFBQUEsQ0FBQyxFQUFEQSxDQUFGO0FBQUtDLFFBQUFBLENBQUMsRUFBREE7QUFBTCxPQUFwQyxDQUFELENBQU4sQ0FBc0RWLE9BQXRELENBQThELElBQTlEO0FBQ0QsS0FIQyxDQUFGO0FBSUQsR0FoQk8sQ0FBUjtBQWtCQUwsRUFBQUEsUUFBUSxDQUFDLFdBQUQsRUFBYyxZQUFNO0FBQzFCLFFBQU1pQixlQUF5QixtQ0FDMUJYLFFBRDBCO0FBRTdCWSxNQUFBQSxXQUFXLEVBQUU7QUFDWEMsUUFBQUEsYUFBYSxFQUFFLElBREo7QUFFWEMsUUFBQUEsT0FBTyxFQUNMLG1FQUhTO0FBSVhDLFFBQUFBLFFBQVEsRUFBRTtBQUpDO0FBRmdCLE1BQS9COztBQVNBLHlCQUFpQixvQkFBYW5CLFVBQWIsRUFBeUJlLGVBQXpCLENBQWpCO0FBQUEsUUFBUUgsQ0FBUixrQkFBUUEsQ0FBUjtBQUFBLFFBQVdDLENBQVgsa0JBQVdBLENBQVg7O0FBRUFaLElBQUFBLEVBQUUsQ0FBQywrQkFBRCxFQUFrQyxZQUFNO0FBQ3hDQyxNQUFBQSxNQUFNLENBQUNVLENBQUQsQ0FBTixDQUFVVCxPQUFWLENBQ0UsbUVBREY7QUFHQUQsTUFBQUEsTUFBTSxDQUFDVyxDQUFELENBQU4sQ0FBVVYsT0FBVixDQUNFLG1FQURGO0FBR0QsS0FQQyxDQUFGO0FBU0FGLElBQUFBLEVBQUUsQ0FBQyxpQkFBRCxFQUFvQixZQUFNO0FBQzFCLFVBQU1hLFNBQVMsR0FBRyx1QkFBZ0JkLFVBQWhCLENBQWxCO0FBRUFFLE1BQUFBLE1BQU0sQ0FBQyxzQkFBZVksU0FBZixFQUEwQkMsZUFBMUIsRUFBMkM7QUFBRUgsUUFBQUEsQ0FBQyxFQUFEQSxDQUFGO0FBQUtDLFFBQUFBLENBQUMsRUFBREE7QUFBTCxPQUEzQyxDQUFELENBQU4sQ0FBNkRWLE9BQTdELENBQ0UsSUFERjtBQUdELEtBTkMsQ0FBRjtBQU9ELEdBNUJPLENBQVI7QUE2QkQsQ0E5RE8sQ0FBUjtBQWdFQUwsUUFBUSxDQUFDLFlBQUQsRUFBZSxZQUFNO0FBQzNCLE1BQU1zQixVQUFVLEdBQUc7QUFDakJDLElBQUFBLFdBQVcsRUFBRSxFQURJO0FBRWpCQyxJQUFBQSxVQUFVLEVBQUUsRUFGSztBQUdqQkMsSUFBQUEsVUFBVSxFQUFFLHFCQUhLO0FBSWpCQyxJQUFBQSxTQUFTLEVBQUUscUJBSk07QUFLakJDLElBQUFBLFNBQVMsRUFDUCxrRUFOZTtBQU9qQkMsSUFBQUEsUUFBUSxFQUNOLGtFQVJlO0FBU2pCcEIsSUFBQUEsS0FBSyxFQUFFLENBVFU7QUFVakJLLElBQUFBLG1CQUFtQixFQUFFO0FBVkosR0FBbkI7QUFhQSxNQUFNWCxVQUFVLEdBQ2Qsb0VBREY7QUFHQUYsRUFBQUEsUUFBUSxDQUFDLGNBQUQsRUFBaUIsWUFBTTtBQUM3QiwwQkFBaUIsc0JBQWVFLFVBQWYsRUFBMkJvQixVQUEzQixDQUFqQjtBQUFBLFFBQVFSLENBQVIsbUJBQVFBLENBQVI7QUFBQSxRQUFXQyxDQUFYLG1CQUFXQSxDQUFYOztBQUVBWixJQUFBQSxFQUFFLENBQUMsK0JBQUQsRUFBa0MsWUFBTTtBQUN4Q0MsTUFBQUEsTUFBTSxDQUFDVSxDQUFELENBQU4sQ0FBVVQsT0FBVixDQUNFLG1FQURGO0FBR0FELE1BQUFBLE1BQU0sQ0FBQ1csQ0FBRCxDQUFOLENBQVVWLE9BQVYsQ0FDRSxtRUFERjtBQUdELEtBUEMsQ0FBRjtBQVNBRixJQUFBQSxFQUFFLENBQUMsaUJBQUQsRUFBb0IsWUFBTTtBQUMxQixVQUFNYSxTQUFTLEdBQUcsdUJBQWdCZCxVQUFoQixDQUFsQjtBQUVBRSxNQUFBQSxNQUFNLENBQUMsd0JBQWlCWSxTQUFqQixFQUE0Qk0sVUFBNUIsRUFBd0M7QUFBRVIsUUFBQUEsQ0FBQyxFQUFEQSxDQUFGO0FBQUtDLFFBQUFBLENBQUMsRUFBREE7QUFBTCxPQUF4QyxDQUFELENBQU4sQ0FBMERWLE9BQTFELENBQWtFLElBQWxFO0FBQ0QsS0FKQyxDQUFGO0FBS0QsR0FqQk8sQ0FBUjtBQW1CQUwsRUFBQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFNO0FBQ3pCLFFBQU02QixpQkFBNkIsbUNBQzlCUCxVQUQ4QjtBQUVqQ1EsTUFBQUEsT0FBTyxFQUFFO0FBQ1BYLFFBQUFBLGFBQWEsRUFBRSxJQURSO0FBRVBDLFFBQUFBLE9BQU8sRUFDTCxtRUFISztBQUlQQyxRQUFBQSxRQUFRLEVBQUU7QUFKSDtBQUZ3QixNQUFuQzs7QUFVQSwyQkFBaUIsc0JBQWVuQixVQUFmLEVBQTJCMkIsaUJBQTNCLENBQWpCO0FBQUEsUUFBUWYsQ0FBUixvQkFBUUEsQ0FBUjtBQUFBLFFBQVdDLENBQVgsb0JBQVdBLENBQVg7O0FBRUFaLElBQUFBLEVBQUUsQ0FBQywrQkFBRCxFQUFrQyxZQUFNO0FBQ3hDQyxNQUFBQSxNQUFNLENBQUNVLENBQUQsQ0FBTixDQUFVVCxPQUFWLENBQ0UsbUVBREY7QUFHQUQsTUFBQUEsTUFBTSxDQUFDVyxDQUFELENBQU4sQ0FBVVYsT0FBVixDQUNFLGtFQURGO0FBR0QsS0FQQyxDQUFGO0FBU0FGLElBQUFBLEVBQUUsQ0FBQyxpQkFBRCxFQUFvQixZQUFNO0FBQzFCLFVBQU1hLFNBQVMsR0FBRyx1QkFBZ0JkLFVBQWhCLENBQWxCO0FBRUFFLE1BQUFBLE1BQU0sQ0FBQyx3QkFBaUJZLFNBQWpCLEVBQTRCYSxpQkFBNUIsRUFBK0M7QUFBRWYsUUFBQUEsQ0FBQyxFQUFEQSxDQUFGO0FBQUtDLFFBQUFBLENBQUMsRUFBREE7QUFBTCxPQUEvQyxDQUFELENBQU4sQ0FBaUVWLE9BQWpFLENBQ0UsSUFERjtBQUdELEtBTkMsQ0FBRjtBQU9ELEdBN0JPLENBQVI7QUE4QkQsQ0FsRU8sQ0FBUjtBQW9FQUwsUUFBUSxDQUFDLGFBQUQsRUFBZ0IsWUFBTTtBQUM1QixNQUFNK0IsT0FBTyxHQUFHLGdCQUFoQjtBQUNBLE1BQU03QixVQUFVLEdBQ2Qsb0VBREY7QUFFQSxNQUFNYyxTQUFTLEdBQUcsdUJBQWdCZCxVQUFoQixDQUFsQjtBQUVBQyxFQUFBQSxFQUFFLENBQUMsNENBQUQsRUFBK0MsWUFBTTtBQUNyRCxRQUFNNkIsU0FBUyxHQUFHLG1CQUFZOUIsVUFBWixFQUF3QjZCLE9BQXhCLENBQWxCO0FBQ0EzQixJQUFBQSxNQUFNLENBQUMscUJBQWNZLFNBQWQsRUFBeUJlLE9BQXpCLEVBQWtDQyxTQUFsQyxDQUFELENBQU4sQ0FBcURDLFVBQXJEO0FBQ0QsR0FIQyxDQUFGO0FBSUQsQ0FWTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZ2VuZXJhdGVLZXksXG4gIGV4cG9ydFB1YmxpY0tleSxcbiAgc2lnblRyYW5zZmVyLFxuICBzaWduTGltaXRPcmRlcixcbiAgdmVyaWZ5VHJhbnNmZXIsXG4gIHZlcmlmeUxpbWl0T3JkZXIsXG4gIHNpZ25NZXNzYWdlLFxuICB2ZXJpZnlNZXNzYWdlLFxufSBmcm9tICcuJztcbmltcG9ydCB7IExpbWl0T3JkZXIsIFRyYW5zZmVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbmRlc2NyaWJlKCdnZW5lcmF0ZUtleScsICgpID0+IHtcbiAgY29uc3QgbW5lbW9uaWMgPVxuICAgICdyYW5nZSBtb3VudGFpbiBibGFzdCBwcm9ibGVtIHZpYnJhbnQgdm9pZCB2aXZpZCBkb2N0b3IgY2x1c3RlciBlbm91Z2ggbWVsb2R5ICcgK1xuICAgICdzYWx0IGxheWVyIGxhbmd1YWdlIGxhcHRvcCBib2F0IG1ham9yIHNwYWNlIG1vbmtleSB1bml0IGdsaW1wc2UgcGF1c2UgY2hhbmdlIHZpYnJhbnQnO1xuXG4gIGNvbnN0IHByaXZhdGVLZXkgPSBnZW5lcmF0ZUtleShtbmVtb25pYyk7XG5cbiAgaXQoJ2dlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgcHJpdmF0ZSBrZXknLCAoKSA9PiB7XG4gICAgZXhwZWN0KHByaXZhdGVLZXkpLnRvRXF1YWwoXG4gICAgICAnMHgwNjQ2YmFhOWFlZmIwNTRkZmEyMDVjOTRiNDM3ODFiYWE3YjJlYzJkZmJjZWU2NGRiZDlkMjE3MjI4M2RlOTAyJ1xuICAgICk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCd0cmFuc2ZlcicsICgpID0+IHtcbiAgY29uc3QgdHJhbnNmZXI6IFRyYW5zZmVyID0ge1xuICAgIGFtb3VudDogJzIxNTQ1NDk3MDM2NDg5MTA3MTYnLFxuICAgIG5vbmNlOiAxLFxuICAgIHNlbmRlclZhdWx0SWQ6ICczNCcsXG4gICAgdG9rZW46ICcweDMwMDNhNjU2NTFkM2I5ZmIyZWZmOTM0YTQ0MTZkYjMwMWFmZDExMmE4NDkyYWFmOGQ3Mjk3ZmM4N2RjZDlmNCcsXG4gICAgcmVjZWl2ZXJWYXVsdElkOiAnMjEnLFxuICAgIHJlY2VpdmVyUHVibGljS2V5OlxuICAgICAgJzB4NWZhMzM4MzU5NzY5MWVhOWQ4MjdhNzllMWE0ZjBmNzk0OTQzNWNlZDE4Y2E5NjE5ZGU4YWI5N2U2NjEwMjAnLFxuICAgIGV4cGlyYXRpb25UaW1lc3RhbXA6IDQzODk1MyxcbiAgfTtcblxuICBjb25zdCBwcml2YXRlS2V5ID1cbiAgICAnMHgwN2NjMjc2N2ExNjBkNGVhMTEyYjQzNmRjNmY3OTAyNGRiNzBiMjZiMTFlZDdhYTJjYjZkN2VlZjE5YWNlNzAzJztcblxuICBkZXNjcmliZSgnd2l0aG91dCBmZWVzJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgciwgcyB9ID0gc2lnblRyYW5zZmVyKHByaXZhdGVLZXksIHRyYW5zZmVyKTtcblxuICAgIGl0KCdjcmVhdGVzIHRoZSBjb3JyZWN0IHNpZ25hdHVyZScsICgpID0+IHtcbiAgICAgIGV4cGVjdChyKS50b0VxdWFsKFxuICAgICAgICAnMHg0YzIxYjNkZjYzMGVhYjM4ZDc1YjU1MzhlOGY2MzUxNjdmNGY3MTA3YTg4NWQ3YWRmNTQyYTc1MjUyNDAzMjMnXG4gICAgICApO1xuICAgICAgZXhwZWN0KHMpLnRvRXF1YWwoXG4gICAgICAgICcweDVlYWNmYWE1OWVkMWI2M2Q3NTI0MWExZGJkOTI1NmQyZWZiZTk3Zjk0NTFmMmNmMmEyYWYwYmFkNWI1YWI2OSdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2FuIGJlIHZlcmlmaWVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgcHVibGljS2V5ID0gZXhwb3J0UHVibGljS2V5KHByaXZhdGVLZXkpO1xuICAgICAgZXhwZWN0KHZlcmlmeVRyYW5zZmVyKHB1YmxpY0tleSwgdHJhbnNmZXIsIHsgciwgcyB9KSkudG9FcXVhbCh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3dpdGggZmVlcycsICgpID0+IHtcbiAgICBjb25zdCB0cmFuc2ZlcldpdGhGZWU6IFRyYW5zZmVyID0ge1xuICAgICAgLi4udHJhbnNmZXIsXG4gICAgICBmZWVJbmZvVXNlcjoge1xuICAgICAgICBzb3VyY2VWYXVsdElkOiAnNDYnLFxuICAgICAgICB0b2tlbklkOlxuICAgICAgICAgICcweDMwMDNhNjU2NTFkM2I5ZmIyZWZmOTM0YTQ0MTZkYjMwMWFmZDExMmE4NDkyYWFmOGQ3Mjk3ZmM4N2RjZDlmNCcsXG4gICAgICAgIGZlZUxpbWl0OiAnMTAnLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IHsgciwgcyB9ID0gc2lnblRyYW5zZmVyKHByaXZhdGVLZXksIHRyYW5zZmVyV2l0aEZlZSk7XG5cbiAgICBpdCgnY3JlYXRlcyB0aGUgY29ycmVjdCBzaWduYXR1cmUnLCAoKSA9PiB7XG4gICAgICBleHBlY3QocikudG9FcXVhbChcbiAgICAgICAgJzB4Njc1ZGViMmI4ZWFhMGY0MjRkNjMwZmNiMDg5NmU0MmNjYWUyODFmNWM3YzAzMGFmODI3MDQ5NTRjY2ZhZmUzJ1xuICAgICAgKTtcbiAgICAgIGV4cGVjdChzKS50b0VxdWFsKFxuICAgICAgICAnMHg2MjM4NWNkZDFiNjI0YmEyYWMwOWIzZDBlZGVlNGFkNzQ1YjU0MDJmNTM2MzIxN2FkNzc2YWJiNWNlYzY1ZjgnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NhbiBiZSB2ZXJpZmllZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHB1YmxpY0tleSA9IGV4cG9ydFB1YmxpY0tleShwcml2YXRlS2V5KTtcblxuICAgICAgZXhwZWN0KHZlcmlmeVRyYW5zZmVyKHB1YmxpY0tleSwgdHJhbnNmZXJXaXRoRmVlLCB7IHIsIHMgfSkpLnRvRXF1YWwoXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdsaW1pdE9yZGVyJywgKCkgPT4ge1xuICBjb25zdCBsaW1pdE9yZGVyID0ge1xuICAgIHZhdWx0SWRTZWxsOiAyMSxcbiAgICB2YXVsdElkQnV5OiAyNyxcbiAgICBhbW91bnRTZWxsOiAnMjE1NDY4Njc0OTc0ODkxMDcxNicsXG4gICAgYW1vdW50QnV5OiAnMTQ3MDI0MjExNTQ4OTUyMDQ1OScsXG4gICAgdG9rZW5TZWxsOlxuICAgICAgJzB4NWZhMzM4MzU5NzY5MWVhOWQ4MjdhNzllMWE0ZjBmNzk4OWMzNWNlZDE4Y2E5NjE5ZGU4YWI5N2U2NjEwMjAnLFxuICAgIHRva2VuQnV5OlxuICAgICAgJzB4Nzc0OTYxYzgyNGEzYjBmYjNkMjk2NWYwMTQ3MWM5Yzc3MzRiZjhkYmRlNjU5ZTBjMDhkY2EyZWYxOGQ1NmEnLFxuICAgIG5vbmNlOiAwLFxuICAgIGV4cGlyYXRpb25UaW1lc3RhbXA6IDQzODk1MyxcbiAgfTtcblxuICBjb25zdCBwcml2YXRlS2V5ID1cbiAgICAnMHgwM2MxZTk1NTBlNjY5NTgyOTZkMTFiNjBmOGU4ZTdhN2FkOTkwZDA3ZmE2NWQ1Zjc2NTJjNGE2Yzg3ZDRlM2NjJztcblxuICBkZXNjcmliZSgnd2l0aG91dCBmZWVzJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgciwgcyB9ID0gc2lnbkxpbWl0T3JkZXIocHJpdmF0ZUtleSwgbGltaXRPcmRlcik7XG5cbiAgICBpdCgnY3JlYXRlcyB0aGUgY29ycmVjdCBzaWduYXR1cmUnLCAoKSA9PiB7XG4gICAgICBleHBlY3QocikudG9FcXVhbChcbiAgICAgICAgJzB4MTczZmQwM2Q4YjAwOGVlNzQzMjk3N2FjMjdkMWU5ZDFhMWY2Yzk4YjFhMmYwNWZhODRhMjFjODRjNDRlODgyJ1xuICAgICAgKTtcbiAgICAgIGV4cGVjdChzKS50b0VxdWFsKFxuICAgICAgICAnMHg0YjZkNzUzODVhZWQwMjVhYTIyMmYyOGEwYWRjNmQ1OGRiNzhmZjE3ZTUxYzNmNTllMjU5YjEzMWNkNWExY2MnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NhbiBiZSB2ZXJpZmllZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHB1YmxpY0tleSA9IGV4cG9ydFB1YmxpY0tleShwcml2YXRlS2V5KTtcblxuICAgICAgZXhwZWN0KHZlcmlmeUxpbWl0T3JkZXIocHVibGljS2V5LCBsaW1pdE9yZGVyLCB7IHIsIHMgfSkpLnRvRXF1YWwodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd3aXRoIGZlZScsICgpID0+IHtcbiAgICBjb25zdCBsaW1pdE9yZGVyV2l0aEZlZTogTGltaXRPcmRlciA9IHtcbiAgICAgIC4uLmxpbWl0T3JkZXIsXG4gICAgICBmZWVJbmZvOiB7XG4gICAgICAgIHNvdXJjZVZhdWx0SWQ6ICc0NicsXG4gICAgICAgIHRva2VuSWQ6XG4gICAgICAgICAgJzB4MzAwM2E2NTY1MWQzYjlmYjJlZmY5MzRhNDQxNmRiMzAxYWZkMTEyYTg0OTJhYWY4ZDcyOTdmYzg3ZGNkOWY0JyxcbiAgICAgICAgZmVlTGltaXQ6ICcxMCcsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCB7IHIsIHMgfSA9IHNpZ25MaW1pdE9yZGVyKHByaXZhdGVLZXksIGxpbWl0T3JkZXJXaXRoRmVlKTtcblxuICAgIGl0KCdjcmVhdGVzIHRoZSBjb3JyZWN0IHNpZ25hdHVyZScsICgpID0+IHtcbiAgICAgIGV4cGVjdChyKS50b0VxdWFsKFxuICAgICAgICAnMHg0NjFkZjQ4ODMyMTA0NDM4MTdhOTFiNzc5MmU4ZWUwMmIyMzU0YjI4ZjQxNWE1MWE4OTg0NDc1NTg0Njk2NjcnXG4gICAgICApO1xuICAgICAgZXhwZWN0KHMpLnRvRXF1YWwoXG4gICAgICAgICcweDFiNmQ0M2ZiYTBlM2E3MGRjZGE2ZmI1OTViYjdlOTA3ZjM5OTg3NzAzYTc4MTUwODExMjY3OTMzMmEwNDU0J1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYW4gYmUgdmVyaWZpZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwdWJsaWNLZXkgPSBleHBvcnRQdWJsaWNLZXkocHJpdmF0ZUtleSk7XG5cbiAgICAgIGV4cGVjdCh2ZXJpZnlMaW1pdE9yZGVyKHB1YmxpY0tleSwgbGltaXRPcmRlcldpdGhGZWUsIHsgciwgcyB9KSkudG9FcXVhbChcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3NpZ25NZXNzYWdlJywgKCkgPT4ge1xuICBjb25zdCBtZXNzYWdlID0gJ3JhbmRvbSBtZXNzYWdlJztcbiAgY29uc3QgcHJpdmF0ZUtleSA9XG4gICAgJzB4MDNjMWU5NTUwZTY2OTU4Mjk2ZDExYjYwZjhlOGU3YTdhZDk5MGQwN2ZhNjVkNWY3NjUyYzRhNmM4N2Q0ZTNjYyc7XG4gIGNvbnN0IHB1YmxpY0tleSA9IGV4cG9ydFB1YmxpY0tleShwcml2YXRlS2V5KTtcblxuICBpdCgnZ2VuZXJhdGVzIGEgc2lnbmF0dXJlIHRoYXQgY2FuIGJlIHZlcmlmaWVkJywgKCkgPT4ge1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IHNpZ25NZXNzYWdlKHByaXZhdGVLZXksIG1lc3NhZ2UpO1xuICAgIGV4cGVjdCh2ZXJpZnlNZXNzYWdlKHB1YmxpY0tleSwgbWVzc2FnZSwgc2lnbmF0dXJlKSkudG9CZVRydXRoeSgpO1xuICB9KTtcbn0pO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50ZXN0LnRzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwibW5lbW9uaWMiLCJwcml2YXRlS2V5IiwiaXQiLCJleHBlY3QiLCJ0b0VxdWFsIiwidHJhbnNmZXIiLCJhbW91bnQiLCJub25jZSIsInNlbmRlclZhdWx0SWQiLCJ0b2tlbiIsInJlY2VpdmVyVmF1bHRJZCIsInJlY2VpdmVyUHVibGljS2V5IiwiZXhwaXJhdGlvblRpbWVzdGFtcCIsInIiLCJzIiwicHVibGljS2V5IiwidHJhbnNmZXJXaXRoRmVlIiwiZmVlSW5mb1VzZXIiLCJzb3VyY2VWYXVsdElkIiwidG9rZW5JZCIsImZlZUxpbWl0IiwibGltaXRPcmRlciIsInZhdWx0SWRTZWxsIiwidmF1bHRJZEJ1eSIsImFtb3VudFNlbGwiLCJhbW91bnRCdXkiLCJ0b2tlblNlbGwiLCJ0b2tlbkJ1eSIsImxpbWl0T3JkZXJXaXRoRmVlIiwiZmVlSW5mbyIsIm1lc3NhZ2UiLCJzaWduYXR1cmUiLCJ0b0JlVHJ1dGh5Il0sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7OztBQVlBQSxRQUFRLENBQUMsYUFBRCxFQUFnQixZQUFNO0FBQzVCLE1BQU1DLFFBQVEsR0FDWixrRkFDQSxzRkFGRjtBQUlBLE1BQU1DLFVBQVUsR0FBRyxtQkFBWUQsUUFBWixDQUFuQjtBQUVBRSxFQUFBQSxFQUFFLENBQUMsb0NBQUQsRUFBdUMsWUFBTTtBQUM3Q0MsSUFBQUEsTUFBTSxDQUFDRixVQUFELENBQU4sQ0FBbUJHLE9BQW5CLENBQ0Usb0VBREY7QUFHRCxHQUpDLENBQUY7QUFLRCxDQVpPLENBQVI7QUFjQUwsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFNO0FBQ3pCLE1BQU1NLFFBQWtCLEdBQUc7QUFDekJDLElBQUFBLE1BQU0sRUFBRSxvQkFEaUI7QUFFekJDLElBQUFBLEtBQUssRUFBRSxDQUZrQjtBQUd6QkMsSUFBQUEsYUFBYSxFQUFFLElBSFU7QUFJekJDLElBQUFBLEtBQUssRUFBRSxtRUFKa0I7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QUQsTUFBQUEsTUFBTSxDQUFDVyxDQUFELENBQU4sQ0FBVVYsT0FBVixDQUNFLGtFQURGO0FBR0QsS0FQQyxDQUFGO0FBU0FGLElBQUFBLEVBQUUsQ0FBQyxpQkFBRCxFQUFvQixZQUFNO0FBQzFCLFVBQU1hLFNBQVMsR0FBRyx1QkFBZ0JkLFVBQWhCLENBQWxCO0FBRUFFLE1BQUFBLE1BQU0sQ0FBQyx3QkFBaUJZLFNBQWpCLEVBQTRCYSxpQkFBNUIsRUFBK0M7QUFBRWYsUUFBQUEsQ0FBQyxFQUFEQSxDQUFGO0FBQUtDLFFBQUFBLENBQUMsRUFBREE7QUFBTCxPQUEvQyxDQUFELENBQU4sQ0FBaUVWLE9BQWpFLENBQ0UsSUFERjtBQUdELEtBTkMsQ0FBRjtBQU9ELEdBN0JPLENBQVI7QUE4QkQsQ0FsRU8sQ0FBUjtBQW9FQUwsUUFBUSxDQUFDLGFBQUQsRUFBZ0IsWUFBTTtBQUM1QixNQUFNK0IsT0FBTyxHQUFHLGdCQUFoQjtBQUNBLE1BQU03QixVQUFVLEdBQ2Qsb0VBREY7QUFFQSxNQUFNYyxTQUFTLEdBQUcsdUJBQWdCZCxVQUFoQixDQUFsQjtBQUVBQyxFQUFBQSxFQUFFLENBQUMsNENBQUQsRUFBK0MsWUFBTTtBQUNyRCxRQUFNNkIsU0FBUyxHQUFHLG1CQUFZOUIsVUFBWixFQUF3QjZCLE9BQXhCLENBQWxCO0FBQ0EzQixJQUFBQSxNQUFNLENBQUMscUJBQWNZLFNBQWQsRUFBeUJlLE9BQXpCLEVBQWtDQyxTQUFsQyxDQUFELENBQU4sQ0FBcURDLFVBQXJEO0FBQ0QsR0FIQyxDQUFGO0FBSUQsQ0FWTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZ2VuZXJhdGVLZXksXG4gIGV4cG9ydFB1YmxpY0tleSxcbiAgc2lnblRyYW5zZmVyLFxuICBzaWduTGltaXRPcmRlcixcbiAgdmVyaWZ5VHJhbnNmZXIsXG4gIHZlcmlmeUxpbWl0T3JkZXIsXG4gIHNpZ25NZXNzYWdlLFxuICB2ZXJpZnlNZXNzYWdlLFxufSBmcm9tICcuJztcbmltcG9ydCB7IExpbWl0T3JkZXIsIFRyYW5zZmVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbmRlc2NyaWJlKCdnZW5lcmF0ZUtleScsICgpID0+IHtcbiAgY29uc3QgbW5lbW9uaWMgPVxuICAgICdyYW5nZSBtb3VudGFpbiBibGFzdCBwcm9ibGVtIHZpYnJhbnQgdm9pZCB2aXZpZCBkb2N0b3IgY2x1c3RlciBlbm91Z2ggbWVsb2R5ICcgK1xuICAgICdzYWx0IGxheWVyIGxhbmd1YWdlIGxhcHRvcCBib2F0IG1ham9yIHNwYWNlIG1vbmtleSB1bml0IGdsaW1wc2UgcGF1c2UgY2hhbmdlIHZpYnJhbnQnO1xuXG4gIGNvbnN0IHByaXZhdGVLZXkgPSBnZW5lcmF0ZUtleShtbmVtb25pYyk7XG5cbiAgaXQoJ2dlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgcHJpdmF0ZSBrZXknLCAoKSA9PiB7XG4gICAgZXhwZWN0KHByaXZhdGVLZXkpLnRvRXF1YWwoXG4gICAgICAnMHgwNjQ2YmFhOWFlZmIwNTRkZmEyMDVjOTRiNDM3ODFiYWE3YjJlYzJkZmJjZWU2NGRiZDlkMjE3MjI4M2RlOTAyJ1xuICAgICk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCd0cmFuc2ZlcicsICgpID0+IHtcbiAgY29uc3QgdHJhbnNmZXI6IFRyYW5zZmVyID0ge1xuICAgIGFtb3VudDogMjE1NDU0OTcwMzY0ODkxMDcxNm4sXG4gICAgbm9uY2U6IDEsXG4gICAgc2VuZGVyVmF1bHRJZDogJzM0JyxcbiAgICB0b2tlbjogJzB4MzAwM2E2NTY1MWQzYjlmYjJlZmY5MzRhNDQxNmRiMzAxYWZkMTEyYTg0OTJhYWY4ZDcyOTdmYzg3ZGNkOWY0JyxcbiAgICByZWNlaXZlclZhdWx0SWQ6ICcyMScsXG4gICAgcmVjZWl2ZXJQdWJsaWNLZXk6XG4gICAgICAnMHg1ZmEzMzgzNTk3NjkxZWE5ZDgyN2E3OWUxYTRmMGY3OTQ5NDM1Y2VkMThjYTk2MTlkZThhYjk3ZTY2MTAyMCcsXG4gICAgZXhwaXJhdGlvblRpbWVzdGFtcDogNDM4OTUzLFxuICB9O1xuXG4gIGNvbnN0IHByaXZhdGVLZXkgPVxuICAgICcweDA3Y2MyNzY3YTE2MGQ0ZWExMTJiNDM2ZGM2Zjc5MDI0ZGI3MGIyNmIxMWVkN2FhMmNiNmQ3ZWVmMTlhY2U3MDMnO1xuXG4gIGRlc2NyaWJlKCd3aXRob3V0IGZlZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgeyByLCBzIH0gPSBzaWduVHJhbnNmZXIocHJpdmF0ZUtleSwgdHJhbnNmZXIpO1xuXG4gICAgaXQoJ2NyZWF0ZXMgdGhlIGNvcnJlY3Qgc2lnbmF0dXJlJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHIpLnRvRXF1YWwoXG4gICAgICAgICcweDRjMjFiM2RmNjMwZWFiMzhkNzViNTUzOGU4ZjYzNTE2N2Y0ZjcxMDdhODg1ZDdhZGY1NDJhNzUyNTI0MDMyMydcbiAgICAgICk7XG4gICAgICBleHBlY3QocykudG9FcXVhbChcbiAgICAgICAgJzB4NWVhY2ZhYTU5ZWQxYjYzZDc1MjQxYTFkYmQ5MjU2ZDJlZmJlOTdmOTQ1MWYyY2YyYTJhZjBiYWQ1YjVhYjY5J1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYW4gYmUgdmVyaWZpZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwdWJsaWNLZXkgPSBleHBvcnRQdWJsaWNLZXkocHJpdmF0ZUtleSk7XG4gICAgICBleHBlY3QodmVyaWZ5VHJhbnNmZXIocHVibGljS2V5LCB0cmFuc2ZlciwgeyByLCBzIH0pKS50b0VxdWFsKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnd2l0aCBmZWVzJywgKCkgPT4ge1xuICAgIGNvbnN0IHRyYW5zZmVyV2l0aEZlZTogVHJhbnNmZXIgPSB7XG4gICAgICAuLi50cmFuc2ZlcixcbiAgICAgIGZlZUluZm9Vc2VyOiB7XG4gICAgICAgIHNvdXJjZVZhdWx0SWQ6ICc0NicsXG4gICAgICAgIHRva2VuSWQ6XG4gICAgICAgICAgJzB4MzAwM2E2NTY1MWQzYjlmYjJlZmY5MzRhNDQxNmRiMzAxYWZkMTEyYTg0OTJhYWY4ZDcyOTdmYzg3ZGNkOWY0JyxcbiAgICAgICAgZmVlTGltaXQ6IDEwbixcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCB7IHIsIHMgfSA9IHNpZ25UcmFuc2Zlcihwcml2YXRlS2V5LCB0cmFuc2ZlcldpdGhGZWUpO1xuXG4gICAgaXQoJ2NyZWF0ZXMgdGhlIGNvcnJlY3Qgc2lnbmF0dXJlJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHIpLnRvRXF1YWwoXG4gICAgICAgICcweDY3NWRlYjJiOGVhYTBmNDI0ZDYzMGZjYjA4OTZlNDJjY2FlMjgxZjVjN2MwMzBhZjgyNzA0OTU0Y2NmYWZlMydcbiAgICAgICk7XG4gICAgICBleHBlY3QocykudG9FcXVhbChcbiAgICAgICAgJzB4NjIzODVjZGQxYjYyNGJhMmFjMDliM2QwZWRlZTRhZDc0NWI1NDAyZjUzNjMyMTdhZDc3NmFiYjVjZWM2NWY4J1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYW4gYmUgdmVyaWZpZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwdWJsaWNLZXkgPSBleHBvcnRQdWJsaWNLZXkocHJpdmF0ZUtleSk7XG5cbiAgICAgIGV4cGVjdCh2ZXJpZnlUcmFuc2ZlcihwdWJsaWNLZXksIHRyYW5zZmVyV2l0aEZlZSwgeyByLCBzIH0pKS50b0VxdWFsKFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnbGltaXRPcmRlcicsICgpID0+IHtcbiAgY29uc3QgbGltaXRPcmRlciA9IHtcbiAgICB2YXVsdElkU2VsbDogMjEsXG4gICAgdmF1bHRJZEJ1eTogMjcsXG4gICAgYW1vdW50U2VsbDogMjE1NDY4Njc0OTc0ODkxMDcxNm4sXG4gICAgYW1vdW50QnV5OiAxNDcwMjQyMTE1NDg5NTIwNDU5bixcbiAgICB0b2tlblNlbGw6XG4gICAgICAnMHg1ZmEzMzgzNTk3NjkxZWE5ZDgyN2E3OWUxYTRmMGY3OTg5YzM1Y2VkMThjYTk2MTlkZThhYjk3ZTY2MTAyMCcsXG4gICAgdG9rZW5CdXk6XG4gICAgICAnMHg3NzQ5NjFjODI0YTNiMGZiM2QyOTY1ZjAxNDcxYzljNzczNGJmOGRiZGU2NTllMGMwOGRjYTJlZjE4ZDU2YScsXG4gICAgbm9uY2U6IDAsXG4gICAgZXhwaXJhdGlvblRpbWVzdGFtcDogNDM4OTUzLFxuICB9O1xuXG4gIGNvbnN0IHByaXZhdGVLZXkgPVxuICAgICcweDAzYzFlOTU1MGU2Njk1ODI5NmQxMWI2MGY4ZThlN2E3YWQ5OTBkMDdmYTY1ZDVmNzY1MmM0YTZjODdkNGUzY2MnO1xuXG4gIGRlc2NyaWJlKCd3aXRob3V0IGZlZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgeyByLCBzIH0gPSBzaWduTGltaXRPcmRlcihwcml2YXRlS2V5LCBsaW1pdE9yZGVyKTtcblxuICAgIGl0KCdjcmVhdGVzIHRoZSBjb3JyZWN0IHNpZ25hdHVyZScsICgpID0+IHtcbiAgICAgIGV4cGVjdChyKS50b0VxdWFsKFxuICAgICAgICAnMHgxNzNmZDAzZDhiMDA4ZWU3NDMyOTc3YWMyN2QxZTlkMWExZjZjOThiMWEyZjA1ZmE4NGEyMWM4NGM0NGU4ODInXG4gICAgICApO1xuICAgICAgZXhwZWN0KHMpLnRvRXF1YWwoXG4gICAgICAgICcweDRiNmQ3NTM4NWFlZDAyNWFhMjIyZjI4YTBhZGM2ZDU4ZGI3OGZmMTdlNTFjM2Y1OWUyNTliMTMxY2Q1YTFjYydcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2FuIGJlIHZlcmlmaWVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgcHVibGljS2V5ID0gZXhwb3J0UHVibGljS2V5KHByaXZhdGVLZXkpO1xuXG4gICAgICBleHBlY3QodmVyaWZ5TGltaXRPcmRlcihwdWJsaWNLZXksIGxpbWl0T3JkZXIsIHsgciwgcyB9KSkudG9FcXVhbCh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3dpdGggZmVlJywgKCkgPT4ge1xuICAgIGNvbnN0IGxpbWl0T3JkZXJXaXRoRmVlOiBMaW1pdE9yZGVyID0ge1xuICAgICAgLi4ubGltaXRPcmRlcixcbiAgICAgIGZlZUluZm86IHtcbiAgICAgICAgc291cmNlVmF1bHRJZDogJzQ2JyxcbiAgICAgICAgdG9rZW5JZDpcbiAgICAgICAgICAnMHgzMDAzYTY1NjUxZDNiOWZiMmVmZjkzNGE0NDE2ZGIzMDFhZmQxMTJhODQ5MmFhZjhkNzI5N2ZjODdkY2Q5ZjQnLFxuICAgICAgICBmZWVMaW1pdDogMTBuLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgeyByLCBzIH0gPSBzaWduTGltaXRPcmRlcihwcml2YXRlS2V5LCBsaW1pdE9yZGVyV2l0aEZlZSk7XG5cbiAgICBpdCgnY3JlYXRlcyB0aGUgY29ycmVjdCBzaWduYXR1cmUnLCAoKSA9PiB7XG4gICAgICBleHBlY3QocikudG9FcXVhbChcbiAgICAgICAgJzB4NDYxZGY0ODgzMjEwNDQzODE3YTkxYjc3OTJlOGVlMDJiMjM1NGIyOGY0MTVhNTFhODk4NDQ3NTU4NDY5NjY3J1xuICAgICAgKTtcbiAgICAgIGV4cGVjdChzKS50b0VxdWFsKFxuICAgICAgICAnMHgxYjZkNDNmYmEwZTNhNzBkY2RhNmZiNTk1YmI3ZTkwN2YzOTk4NzcwM2E3ODE1MDgxMTI2NzkzMzJhMDQ1NCdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2FuIGJlIHZlcmlmaWVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgcHVibGljS2V5ID0gZXhwb3J0UHVibGljS2V5KHByaXZhdGVLZXkpO1xuXG4gICAgICBleHBlY3QodmVyaWZ5TGltaXRPcmRlcihwdWJsaWNLZXksIGxpbWl0T3JkZXJXaXRoRmVlLCB7IHIsIHMgfSkpLnRvRXF1YWwoXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdzaWduTWVzc2FnZScsICgpID0+IHtcbiAgY29uc3QgbWVzc2FnZSA9ICdyYW5kb20gbWVzc2FnZSc7XG4gIGNvbnN0IHByaXZhdGVLZXkgPVxuICAgICcweDAzYzFlOTU1MGU2Njk1ODI5NmQxMWI2MGY4ZThlN2E3YWQ5OTBkMDdmYTY1ZDVmNzY1MmM0YTZjODdkNGUzY2MnO1xuICBjb25zdCBwdWJsaWNLZXkgPSBleHBvcnRQdWJsaWNLZXkocHJpdmF0ZUtleSk7XG5cbiAgaXQoJ2dlbmVyYXRlcyBhIHNpZ25hdHVyZSB0aGF0IGNhbiBiZSB2ZXJpZmllZCcsICgpID0+IHtcbiAgICBjb25zdCBzaWduYXR1cmUgPSBzaWduTWVzc2FnZShwcml2YXRlS2V5LCBtZXNzYWdlKTtcbiAgICBleHBlY3QodmVyaWZ5TWVzc2FnZShwdWJsaWNLZXksIG1lc3NhZ2UsIHNpZ25hdHVyZSkpLnRvQmVUcnV0aHkoKTtcbiAgfSk7XG59KTtcbiJdfQ==

@@ -9,4 +9,4 @@ /**

@param {string|number} vaultBuy - uint31 (as int)
@param {string} amountSell - uint63 (as decimal string)
@param {string} amountBuy - uint63 (as decimal string)
@param {bigint} amountSell - uint63 (as decimal string)
@param {bigint} amountBuy - uint63 (as decimal string)
@param {string} tokenSell - uint256 field element strictly less than the prime (as hex string with 0x)

@@ -17,3 +17,3 @@ @param {string} tokenBuy - uint256 field element strictly less than the prime (as hex string with 0x)

*/
export function getLimitOrderMsgHash(vaultSell: string | number, vaultBuy: string | number, amountSell: string, amountBuy: string, tokenSell: string, tokenBuy: string, nonce: number, expirationTimestamp: number): string;
export function getLimitOrderMsgHash(vaultSell: string | number, vaultBuy: string | number, amountSell: bigint, amountBuy: bigint, tokenSell: string, tokenBuy: string, nonce: number, expirationTimestamp: number): string;
/**

@@ -26,4 +26,4 @@ Same as getLimitOrderMsgHash, but also requires the fee info.

@param {string|number} vaultBuy - uint31 (as int)
@param {string} amountSell - uint63 (as decimal string)
@param {string} amountBuy - uint63 (as decimal string)
@param {bigint} amountSell - uint63 (as decimal string)
@param {bigint} amountBuy - uint63 (as decimal string)
@param {string} tokenSell - uint256 field element strictly less than the prime (as hex string with 0x)

@@ -34,6 +34,6 @@ @param {string} tokenBuy - uint256 field element strictly less than the prime (as hex string with 0x)

@param {string|number} feeVaultId - uint31 (as int)
@param {string} feeLimit - uint63 (as decimal string)
@param {bigint} feeLimit - uint63 (as decimal string)
@param {string} feeToken - uint256 field element strictly less than the prime (as hex string with 0x)
*/
export function getLimitOrderMsgHashWithFee(vaultSell: string | number, vaultBuy: string | number, amountSell: string, amountBuy: string, tokenSell: string, tokenBuy: string, nonce: number, expirationTimestamp: number, feeToken: string, feeVaultId: string | number, feeLimit: string): string;
export function getLimitOrderMsgHashWithFee(vaultSell: string | number, vaultBuy: string | number, amountSell: bigint, amountBuy: bigint, tokenSell: string, tokenBuy: string, nonce: number, expirationTimestamp: number, feeToken: string, feeVaultId: string | number, feeLimit: bigint): string;
/**

@@ -47,3 +47,3 @@ Serializes the transfer message in the canonical format expected by the verifier.

---------------
@param {string} amount - uint63 (as decimal string)
@param {bigint} amount - uint63 (as decimal string)
@param {number} nonce - uint31 (as int)

@@ -57,3 +57,3 @@ @param {string|number} senderVaultId - uint31 (as int)

*/
export function getTransferMsgHash(amount: string, nonce: number, senderVaultId: string | number, token: string, receiverVaultId: string | number, receiverPublicKey: string, expirationTimestamp: number, condition?: string | null | undefined): string;
export function getTransferMsgHash(amount: bigint, nonce: number, senderVaultId: string | number, token: string, receiverVaultId: string | number, receiverPublicKey: string, expirationTimestamp: number, condition?: string | null | undefined): string;
/**

@@ -64,3 +64,3 @@ Same as getTransferMsgHash, but also requires the fee info.

---------------
@param {string} amount - uint63 (as decimal string)
@param {bigint} amount - uint63 (as decimal string)
@param {number} nonce - uint31 (as int)

@@ -75,4 +75,4 @@ @param {string|number} senderVaultId - uint31 (as int)

@param {number|string} feeVaultId - uint31 (as int)
@param {string} feeLimit - uint63 (as decimal string)
@param {bigint} feeLimit - uint63 (as decimal string)
*/
export function getTransferMsgHashWithFee(amount: string, nonce: number, senderVaultId: string | number, token: string, receiverVaultId: string | number, receiverStarkKey: string, expirationTimestamp: number, condition: string | null | undefined, feeToken: string, feeVaultId: number | string, feeLimit: string): string;
export function getTransferMsgHashWithFee(amount: bigint, nonce: number, senderVaultId: string | number, token: string, receiverVaultId: string | number, receiverStarkKey: string, expirationTimestamp: number, condition: string | null | undefined, feeToken: string, feeVaultId: number | string, feeLimit: bigint): string;

@@ -202,4 +202,4 @@ "use strict";

@param {string|number} vaultBuy - uint31 (as int)
@param {string} amountSell - uint63 (as decimal string)
@param {string} amountBuy - uint63 (as decimal string)
@param {bigint} amountSell - uint63 (as decimal string)
@param {bigint} amountBuy - uint63 (as decimal string)
@param {string} tokenSell - uint256 field element strictly less than the prime (as hex string with 0x)

@@ -216,4 +216,2 @@ @param {string} tokenBuy - uint256 field element strictly less than the prime (as hex string with 0x)

var vaultBuyBi = BigInt(vaultBuy);
var amountSellBi = BigInt(amountSell);
var amountBuyBi = BigInt(amountBuy);
var tokenSellBi = BigInt(tokenSell);

@@ -225,4 +223,4 @@ var tokenBuyBi = BigInt(tokenBuy);

assertInRange(vaultBuyBi, BigInt(0), twoPow31);
assertInRange(amountSellBi, BigInt(0), twoPow63);
assertInRange(amountBuyBi, BigInt(0), twoPow63);
assertInRange(amountSell, BigInt(0), twoPow63);
assertInRange(amountBuy, BigInt(0), twoPow63);
assertInRange(tokenSellBi, BigInt(0), prime);

@@ -233,3 +231,3 @@ assertInRange(tokenBuyBi, BigInt(0), prime);

var instructionType = BigInt(0);
return hashMsg(instructionType, vaultSellBi, vaultBuyBi, amountSellBi, amountBuyBi, nonceBi, expirationTimestampBi, tokenSell.substring(2), tokenBuy.substring(2));
return hashMsg(instructionType, vaultSellBi, vaultBuyBi, amountSell, amountBuy, nonceBi, expirationTimestampBi, tokenSell.substring(2), tokenBuy.substring(2));
}

@@ -243,4 +241,4 @@ /**

@param {string|number} vaultBuy - uint31 (as int)
@param {string} amountSell - uint63 (as decimal string)
@param {string} amountBuy - uint63 (as decimal string)
@param {bigint} amountSell - uint63 (as decimal string)
@param {bigint} amountBuy - uint63 (as decimal string)
@param {string} tokenSell - uint256 field element strictly less than the prime (as hex string with 0x)

@@ -251,3 +249,3 @@ @param {string} tokenBuy - uint256 field element strictly less than the prime (as hex string with 0x)

@param {string|number} feeVaultId - uint31 (as int)
@param {string} feeLimit - uint63 (as decimal string)
@param {bigint} feeLimit - uint63 (as decimal string)
@param {string} feeToken - uint256 field element strictly less than the prime (as hex string with 0x)

@@ -261,4 +259,2 @@ */

var vaultBuyBi = BigInt(vaultBuy);
var amountSellBi = BigInt(amountSell);
var amountBuyBi = BigInt(amountBuy);
var tokenSellBi = BigInt(tokenSell);

@@ -270,7 +266,6 @@ var tokenBuyBi = BigInt(tokenBuy);

var feeVaultIdBi = BigInt(feeVaultId);
var feeLimitBi = BigInt(feeLimit);
assertInRange(vaultSellBi, BigInt(0), twoPow31);
assertInRange(vaultBuyBi, BigInt(0), twoPow31);
assertInRange(amountSellBi, BigInt(0), twoPow63);
assertInRange(amountBuyBi, BigInt(0), twoPow63);
assertInRange(amountSell, BigInt(0), twoPow63);
assertInRange(amountBuy, BigInt(0), twoPow63);
assertInRange(tokenSellBi, BigInt(0), prime);

@@ -282,5 +277,5 @@ assertInRange(tokenBuyBi, BigInt(0), prime);

assertInRange(feeVaultIdBi, BigInt(0), twoPow31);
assertInRange(feeLimitBi, BigInt(0), twoPow63);
assertInRange(feeLimit, BigInt(0), twoPow63);
var instructionType = BigInt(3);
return hashLimitOrderMsgWithFee(instructionType, vaultSellBi, vaultBuyBi, amountSellBi, amountBuyBi, nonceBi, expirationTimestampBi, tokenSell.substring(2), tokenBuy.substring(2), feeToken.substring(2), feeVaultIdBi, feeLimitBi);
return hashLimitOrderMsgWithFee(instructionType, vaultSellBi, vaultBuyBi, amountSell, amountBuy, nonceBi, expirationTimestampBi, tokenSell.substring(2), tokenBuy.substring(2), feeToken.substring(2), feeVaultIdBi, feeLimit);
}

@@ -295,3 +290,3 @@ /**

---------------
@param {string} amount - uint63 (as decimal string)
@param {bigint} amount - uint63 (as decimal string)
@param {number} nonce - uint31 (as int)

@@ -309,3 +304,2 @@ @param {string|number} senderVaultId - uint31 (as int)

(0, _assert.default)(hasHexPrefix(token) && hasHexPrefix(receiverPublicKey) && (!condition || hasHexPrefix(condition)), 'Hex strings expected to be prefixed with 0x.');
var amountBi = BigInt(amount);
var nonceBi = BigInt(nonce);

@@ -317,3 +311,3 @@ var senderVaultIdBi = BigInt(senderVaultId);

var expirationTimestampBi = BigInt(expirationTimestamp);
assertInRange(amountBi, BigInt(0), twoPow63);
assertInRange(amount, BigInt(0), twoPow63);
assertInRange(nonceBi, BigInt(0), twoPow31);

@@ -332,3 +326,3 @@ assertInRange(senderVaultIdBi, BigInt(0), twoPow31);

return hashMsg(instructionType, senderVaultIdBi, receiverVaultIdBi, amountBi, BigInt(0), nonceBi, expirationTimestampBi, token.substring(2), receiverPublicKey.substring(2), condition);
return hashMsg(instructionType, senderVaultIdBi, receiverVaultIdBi, amount, BigInt(0), nonceBi, expirationTimestampBi, token.substring(2), receiverPublicKey.substring(2), condition);
}

@@ -340,3 +334,3 @@ /**

---------------
@param {string} amount - uint63 (as decimal string)
@param {bigint} amount - uint63 (as decimal string)
@param {number} nonce - uint31 (as int)

@@ -351,3 +345,3 @@ @param {string|number} senderVaultId - uint31 (as int)

@param {number|string} feeVaultId - uint31 (as int)
@param {string} feeLimit - uint63 (as decimal string)
@param {bigint} feeLimit - uint63 (as decimal string)
*/

@@ -358,3 +352,2 @@

(0, _assert.default)(hasHexPrefix(feeToken) && hasHexPrefix(token) && hasHexPrefix(receiverStarkKey) && (!condition || hasHexPrefix(condition)), 'Hex strings expected to be prefixed with 0x.');
var amountBi = BigInt(amount);
var nonceBi = BigInt(nonce);

@@ -368,4 +361,3 @@ var senderVaultIdBi = BigInt(senderVaultId);

var feeVaultIdBi = BigInt(feeVaultId);
var feeLimitBi = BigInt(feeLimit);
assertInRange(amountBi, BigInt(0), twoPow63);
assertInRange(amount, BigInt(0), twoPow63);
assertInRange(nonceBi, BigInt(0), twoPow31);

@@ -379,3 +371,3 @@ assertInRange(senderVaultIdBi, BigInt(0), twoPow31);

assertInRange(feeVaultIdBi, BigInt(0), twoPow31);
assertInRange(feeLimitBi, BigInt(0), twoPow63);
assertInRange(feeLimit, BigInt(0), twoPow63);
var instructionType = BigInt(4);

@@ -388,4 +380,4 @@

return hashTransferMsgWithFee(instructionType, senderVaultIdBi, receiverVaultIdBi, amountBi, nonceBi, expirationTimestampBi, token.substring(2), receiverStarkKey.substring(2), feeToken.substring(2), feeVaultIdBi, feeLimitBi, condition);
return hashTransferMsgWithFee(instructionType, senderVaultIdBi, receiverVaultIdBi, amount, nonceBi, expirationTimestampBi, token.substring(2), receiverStarkKey.substring(2), feeToken.substring(2), feeVaultIdBi, feeLimit, condition);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGFya3dhcmUvc2lnbmF0dXJlLmpzIl0sIm5hbWVzIjpbInByaW1lIiwic3RhcmtuZXQiLCJDVVJWRSIsInAiLCJtYXhFY2RzYVZhbCIsIkJpZ0ludCIsInR3b1BvdzIyIiwidHdvUG93MzEiLCJ0d29Qb3c2MyIsImhhc0hleFByZWZpeCIsInN0ciIsInN1YnN0cmluZyIsImFzc2VydEluUmFuZ2UiLCJpbnB1dCIsImxvd2VyQm91bmQiLCJ1cHBlckJvdW5kIiwiaW5wdXROYW1lIiwibWVzc2FnZVN1ZmZpeCIsImhhc2hNc2ciLCJpbnN0cnVjdGlvblR5cGVCaSIsInZhdWx0MCIsInZhdWx0MSIsImFtb3VudDAiLCJhbW91bnQxIiwibm9uY2UiLCJleHBpcmF0aW9uVGltZXN0YW1wIiwidG9rZW4wIiwidG9rZW4xT3JQdWJLZXkiLCJjb25kaXRpb24iLCJwYWNrZWRNZXNzYWdlIiwibXNnSGFzaCIsInBlZGVyc2VuIiwidG9TdHJpbmciLCJoYXNoVHJhbnNmZXJNc2dXaXRoRmVlIiwiaW5zdHJ1Y3Rpb25UeXBlIiwic2VuZGVyVmF1bHRJZCIsInJlY2VpdmVyVmF1bHRJZCIsImFtb3VudCIsInRyYW5zZmVyVG9rZW4iLCJyZWNlaXZlclB1YmxpY0tleSIsImZlZVRva2VuIiwiZmVlVmF1bHRJZCIsImZlZUxpbWl0IiwicGFja2VkTWVzc2FnZTEiLCJwYWNrZWRNZXNzYWdlMiIsInRtcEhhc2giLCJoYXNoTGltaXRPcmRlck1zZ1dpdGhGZWUiLCJ2YXVsdFNlbGwiLCJ2YXVsdEJ1eSIsImFtb3VudFNlbGwiLCJhbW91bnRCdXkiLCJ0b2tlblNlbGwiLCJ0b2tlbkJ1eSIsImdldExpbWl0T3JkZXJNc2dIYXNoIiwidmF1bHRTZWxsQmkiLCJ2YXVsdEJ1eUJpIiwiYW1vdW50U2VsbEJpIiwiYW1vdW50QnV5QmkiLCJ0b2tlblNlbGxCaSIsInRva2VuQnV5QmkiLCJub25jZUJpIiwiZXhwaXJhdGlvblRpbWVzdGFtcEJpIiwiZ2V0TGltaXRPcmRlck1zZ0hhc2hXaXRoRmVlIiwiZmVlVG9rZW5CaSIsImZlZVZhdWx0SWRCaSIsImZlZUxpbWl0QmkiLCJnZXRUcmFuc2Zlck1zZ0hhc2giLCJ0b2tlbiIsImFtb3VudEJpIiwic2VuZGVyVmF1bHRJZEJpIiwidG9rZW5CaSIsInJlY2VpdmVyVmF1bHRJZEJpIiwicmVjZWl2ZXJQdWJsaWNLZXlCaSIsImdldFRyYW5zZmVyTXNnSGFzaFdpdGhGZWUiLCJyZWNlaXZlclN0YXJrS2V5IiwicmVjZWl2ZXJTdGFya0tleUJpIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFrQkE7O0FBQ0E7Ozs7Ozs7O0FBbkJBOztBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBLElBQU1BLEtBQUssR0FBR0MsUUFBUSxDQUFDQyxLQUFULENBQWVDLENBQTdCLEMsQ0FFQTs7QUFDQSxJQUFNQyxXQUFXLEdBQUdDLE1BQU0sQ0FDeEIsbUVBRHdCLENBQTFCO0FBSUEsSUFBTUMsUUFBUSxHQUFHRCxNQUFNLENBQUMsVUFBRCxDQUF2QjtBQUNBLElBQU1FLFFBQVEsR0FBR0YsTUFBTSxDQUFDLFlBQUQsQ0FBdkI7QUFDQSxJQUFNRyxRQUFRLEdBQUdILE1BQU0sQ0FBQyxvQkFBRCxDQUF2QjtBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLFNBQVNJLFlBQVQsQ0FBc0JDLEdBQXRCLEVBQTJCO0FBQ3pCLFNBQU9BLEdBQUcsQ0FBQ0MsU0FBSixDQUFjLENBQWQsRUFBaUIsQ0FBakIsTUFBd0IsSUFBL0I7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsU0FBU0MsYUFBVCxDQUF1QkMsS0FBdkIsRUFBOEJDLFVBQTlCLEVBQTBDQyxVQUExQyxFQUFzRTtBQUFBLE1BQWhCQyxT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bUQsVUFBRCxFQUFhMUQsTUFBTSxDQUFDLENBQUQsQ0FBbkIsRUFBd0JMLEtBQXhCLENBQWI7QUFDQVksRUFBQUEsYUFBYSxDQUFDb0QsWUFBRCxFQUFlM0QsTUFBTSxDQUFDLENBQUQsQ0FBckIsRUFBMEJFLFFBQTFCLENBQWI7QUFDQUssRUFBQUEsYUFBYSxDQUFDcUQsVUFBRCxFQUFhNUQsTUFBTSxDQUFDLENBQUQsQ0FBbkIsRUFBd0JHLFFBQXhCLENBQWI7QUFFQSxNQUFJMEIsZUFBZSxHQUFHN0IsTUFBTSxDQUFDLENBQUQsQ0FBNUI7O0FBQ0EsTUFBSXVCLFNBQUosRUFBZTtBQUNiaEIsSUFBQUEsYUFBYSxDQUFDUCxNQUFNLENBQUN1QixTQUFELENBQVAsRUFBb0J2QixNQUFNLENBQUMsQ0FBRCxDQUExQixFQUErQkwsS0FBL0IsRUFBc0MsV0FBdEMsQ0FBYjtBQUNBa0MsSUFBQUEsZUFBZSxHQUFHN0IsTUFBTSxDQUFDLENBQUQsQ0FBeEI7QUFDRDs7QUFDRCxTQUFPNEIsc0JBQXNCLENBQzNCQyxlQUQyQixFQUUzQm1DLGVBRjJCLEVBRzNCRSxpQkFIMkIsRUFJM0JILFFBSjJCLEVBSzNCUixPQUwyQixFQU0zQkMscUJBTjJCLEVBTzNCTSxLQUFLLENBQUN4RCxTQUFOLENBQWdCLENBQWhCLENBUDJCLEVBUTNCK0QsZ0JBQWdCLENBQUMvRCxTQUFqQixDQUEyQixDQUEzQixDQVIyQixFQVMzQjZCLFFBQVEsQ0FBQzdCLFNBQVQsQ0FBbUIsQ0FBbkIsQ0FUMkIsRUFVM0JxRCxZQVYyQixFQVczQkMsVUFYMkIsRUFZM0JyQyxTQVoyQixDQUE3QjtBQWNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlICovXG4vKiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvcHlyaWdodCAyMDE5IFN0YXJrV2FyZSBJbmR1c3RyaWVzIEx0ZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiAgICAgICAgICAgICAvL1xuLy8gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAgICAgICAgICAgIC8vXG4vLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1xuLy8gaHR0cHM6Ly93d3cuc3Rhcmt3YXJlLmNvL29wZW4tc291cmNlLWxpY2Vuc2UvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgICAgICAgICAgICAgICAgICAvL1xuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCAgLy9cbi8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgICAvL1xuLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zICAgICAgICAgICAgIC8vXG4vLyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAqL1xuXG5pbXBvcnQgKiBhcyBzdGFya25ldCBmcm9tICdtaWNyby1zdGFya25ldCc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG4vKipcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gdGVzdFxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VcbiAqL1xuLy8gY29uc3QgYXNzZXJ0ID0gKHRlc3QsIG1lc3NhZ2UpID0+IHtcbi8vICAgaWYgKCF0ZXN0KSB7XG4vLyAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuLy8gICB9XG4vLyB9O1xuXG4vLyBFcXVhbHMgMioqMjUxICsgMTcgKiAyKioxOTIgKyAxLlxuY29uc3QgcHJpbWUgPSBzdGFya25ldC5DVVJWRS5wO1xuXG4vLyBFcXVhbHMgMioqMjUxLiBUaGlzIHZhbHVlIGxpbWl0cyBtc2dIYXNoIGFuZCB0aGUgc2lnbmF0dXJlIHBhcnRzLlxuY29uc3QgbWF4RWNkc2FWYWwgPSBCaWdJbnQoXG4gICcweDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCdcbik7XG5cbmNvbnN0IHR3b1BvdzIyID0gQmlnSW50KCcweDQwMDAwMCcpO1xuY29uc3QgdHdvUG93MzEgPSBCaWdJbnQoJzB4ODAwMDAwMDAnKTtcbmNvbnN0IHR3b1BvdzYzID0gQmlnSW50KCcweDgwMDAwMDAwMDAwMDAwMDAnKTtcblxuLyoqXG4gKiBDaGVja3MgdGhhdCB0aGUgc3RyaW5nIHN0ciBzdGFydCB3aXRoICcweCcuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKi9cbmZ1bmN0aW9uIGhhc0hleFByZWZpeChzdHIpIHtcbiAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgMikgPT09ICcweCc7XG59XG5cbi8qKlxuICogQXNzZXJ0cyBpbnB1dCBpcyBlcXVhbCB0byBvciBncmVhdGVyIHRoZW4gbG93ZXJCb3VuZCBhbmQgbG93ZXIgdGhlbiB1cHBlckJvdW5kLlxuICogQXNzZXJ0IG1lc3NhZ2Ugc3BlY2lmaWVzIGlucHV0TmFtZS5cbiAqIGlucHV0TmFtZSBzaG91bGQgYmUgYSBzdHJpbmcuXG4gKiBAcGFyYW0ge2JpZ2ludH0gaW5wdXRcbiAqIEBwYXJhbSB7YmlnaW50fSBsb3dlckJvdW5kXG4gKiBAcGFyYW0ge2JpZ2ludH0gdXBwZXJCb3VuZFxuICogQHBhcmFtIHtzdHJpbmd9IFtpbnB1dE5hbWVdXG4gKi9cbmZ1bmN0aW9uIGFzc2VydEluUmFuZ2UoaW5wdXQsIGxvd2VyQm91bmQsIHVwcGVyQm91bmQsIGlucHV0TmFtZSA9ICcnKSB7XG4gIGNvbnN0IG1lc3NhZ2VTdWZmaXggPVxuICAgIGlucHV0TmFtZSA9PT0gJycgPyAnaW52YWxpZCBsZW5ndGgnIDogYGludmFsaWQgJHtpbnB1dE5hbWV9IGxlbmd0aGA7XG4gIGFzc2VydChcbiAgICBpbnB1dCA+PSBsb3dlckJvdW5kICYmIGlucHV0IDwgdXBwZXJCb3VuZCxcbiAgICBgTWVzc2FnZSBub3Qgc2lnbmFibGUsICR7bWVzc2FnZVN1ZmZpeH0uYFxuICApO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7YmlnaW50fSBpbnN0cnVjdGlvblR5cGVCaVxuICogQHBhcmFtIHtiaWdpbnR9IHZhdWx0MFxuICogQHBhcmFtIHtiaWdpbnR9IHZhdWx0MVxuICogQHBhcmFtIHtiaWdpbnR9IGFtb3VudDBcbiAqIEBwYXJhbSB7YmlnaW50fSBhbW91bnQxXG4gKiBAcGFyYW0ge2JpZ2ludH0gbm9uY2VcbiAqIEBwYXJhbSB7YmlnaW50fSBleHBpcmF0aW9uVGltZXN0YW1wXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9rZW4wXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9rZW4xT3JQdWJLZXlcbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gW2NvbmRpdGlvbl1cbiAqIEByZXR1cm5zXG4gKi9cbmZ1bmN0aW9uIGhhc2hNc2coXG4gIGluc3RydWN0aW9uVHlwZUJpLFxuICB2YXVsdDAsXG4gIHZhdWx0MSxcbiAgYW1vdW50MCxcbiAgYW1vdW50MSxcbiAgbm9uY2UsXG4gIGV4cGlyYXRpb25UaW1lc3RhbXAsXG4gIHRva2VuMCxcbiAgdG9rZW4xT3JQdWJLZXksXG4gIGNvbmRpdGlvbiA9IG51bGxcbikge1xuICBsZXQgcGFja2VkTWVzc2FnZSA9IGluc3RydWN0aW9uVHlwZUJpO1xuICBwYWNrZWRNZXNzYWdlID0gKHBhY2tlZE1lc3NhZ2UgPDwgQmlnSW50KDMxKSkgKyB2YXVsdDA7XG4gIHBhY2tlZE1lc3NhZ2UgPSAocGFja2VkTWVzc2FnZSA8PCBCaWdJbnQoMzEpKSArIHZhdWx0MTtcbiAgcGFja2VkTWVzc2FnZSA9IChwYWNrZWRNZXNzYWdlIDw8IEJpZ0ludCg2MykpICsgYW1vdW50MDtcbiAgcGFja2VkTWVzc2FnZSA9IChwYWNrZWRNZXNzYWdlIDw8IEJpZ0ludCg2MykpICsgYW1vdW50MTtcbiAgcGFja2VkTWVzc2FnZSA9IChwYWNrZWRNZXNzYWdlIDw8IEJpZ0ludCgzMSkpICsgbm9uY2U7XG4gIHBhY2tlZE1lc3NhZ2UgPSAocGFja2VkTWVzc2FnZSA8PCBCaWdJbnQoMjIpKSArIGV4cGlyYXRpb25UaW1lc3RhbXA7XG4gIGxldCBtc2dIYXNoID0gbnVsbDtcbiAgaWYgKGNvbmRpdGlvbiA9PT0gbnVsbCkge1xuICAgIG1zZ0hhc2ggPSBzdGFya25ldC5wZWRlcnNlbihcbiAgICAgIHN0YXJrbmV0LnBlZGVyc2VuKHRva2VuMCwgdG9rZW4xT3JQdWJLZXkpLFxuICAgICAgcGFja2VkTWVzc2FnZS50b1N0cmluZygxNilcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIG1zZ0hhc2ggPSBzdGFya25ldC5wZWRlcnNlbihcbiAgICAgIHN0YXJrbmV0LnBlZGVyc2VuKHN0YXJrbmV0LnBlZGVyc2VuKHRva2VuMCwgdG9rZW4xT3JQdWJLZXkpLCBjb25kaXRpb24pLFxuICAgICAgcGFja2VkTWVzc2FnZS50b1N0cmluZygxNilcbiAgICApO1xuICB9XG5cbiAgYXNzZXJ0SW5SYW5nZShCaWdJbnQobXNnSGFzaCksIEJpZ0ludCgwKSwgbWF4RWNkc2FWYWwsICdtc2dIYXNoJyk7XG4gIHJldHVybiBtc2dIYXNoO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0ge2JpZ2ludH0gaW5zdHJ1Y3Rpb25UeXBlXG4gKiBAcGFyYW0ge2JpZ2ludH0gc2VuZGVyVmF1bHRJZFxuICogQHBhcmFtIHtiaWdpbnR9IHJlY2VpdmVyVmF1bHRJZFxuICogQHBhcmFtIHtiaWdpbnR9IGFtb3VudFxuICogQHBhcmFtIHtiaWdpbnR9IG5vbmNlXG4gKiBAcGFyYW0ge2JpZ2ludH0gZXhwaXJhdGlvblRpbWVzdGFtcFxuICogQHBhcmFtIHtzdHJpbmd9IHRyYW5zZmVyVG9rZW4gLSBub24gaGV4IHByZWZpeGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVjZWl2ZXJQdWJsaWNLZXkgLSBub24gaGV4IHByZWZpeGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gZmVlVG9rZW4gLSBub24gaGV4IHByZWZpeGVkXG4gKiBAcGFyYW0ge2JpZ2ludH0gZmVlVmF1bHRJZFxuICogQHBhcmFtIHtiaWdpbnR9IGZlZUxpbWl0XG4gKiBAcGFyYW0ge3N0cmluZ3xudWxsfSBjb25kaXRpb25cbiAqIEByZXR1cm5zXG4gKi9cbmZ1bmN0aW9uIGhhc2hUcmFuc2Zlck1zZ1dpdGhGZWUoXG4gIGluc3RydWN0aW9uVHlwZSxcbiAgc2VuZGVyVmF1bHRJZCxcbiAgcmVjZWl2ZXJWYXVsdElkLFxuICBhbW91bnQsXG4gIG5vbmNlLFxuICBleHBpcmF0aW9uVGltZXN0YW1wLFxuICB0cmFuc2ZlclRva2VuLFxuICByZWNlaXZlclB1YmxpY0tleSxcbiAgZmVlVG9rZW4sXG4gIGZlZVZhdWx0SWQsXG4gIGZlZUxpbWl0LFxuICBjb25kaXRpb24gPSBudWxsXG4pIHtcbiAgbGV0IHBhY2tlZE1lc3NhZ2UxID0gc2VuZGVyVmF1bHRJZDtcbiAgcGFja2VkTWVzc2FnZTEgPSAocGFja2VkTWVzc2FnZTEgPDwgQmlnSW50KDY0KSkgKyByZWNlaXZlclZhdWx0SWQ7XG4gIHBhY2tlZE1lc3NhZ2UxID0gKHBhY2tlZE1lc3NhZ2UxIDw8IEJpZ0ludCg2NCkpICsgZmVlVmF1bHRJZDtcbiAgcGFja2VkTWVzc2FnZTEgPSAocGFja2VkTWVzc2FnZTEgPDwgQmlnSW50KDMyKSkgKyBub25jZTtcbiAgbGV0IHBhY2tlZE1lc3NhZ2UyID0gaW5zdHJ1Y3Rpb25UeXBlO1xuICBwYWNrZWRNZXNzYWdlMiA9IChwYWNrZWRNZXNzYWdlMiA8PCBCaWdJbnQoNjQpKSArIGFtb3VudDtcbiAgcGFja2VkTWVzc2FnZTIgPSAocGFja2VkTWVzc2FnZTIgPDwgQmlnSW50KDY0KSkgKyBmZWVMaW1pdDtcbiAgcGFja2VkTWVzc2FnZTIgPSAocGFja2VkTWVzc2FnZTIgPDwgQmlnSW50KDMyKSkgKyBleHBpcmF0aW9uVGltZXN0YW1wO1xuICBwYWNrZWRNZXNzYWdlMiA9IChwYWNrZWRNZXNzYWdlMiA8PCBCaWdJbnQoODEpKSArIEJpZ0ludCgwKTtcblxuICBsZXQgbXNnSGFzaCA9IG51bGw7XG4gIGNvbnN0IHRtcEhhc2ggPSBzdGFya25ldC5wZWRlcnNlbihcbiAgICBzdGFya25ldC5wZWRlcnNlbih0cmFuc2ZlclRva2VuLCBmZWVUb2tlbiksXG4gICAgcmVjZWl2ZXJQdWJsaWNLZXlcbiAgKTtcblxuICBpZiAoY29uZGl0aW9uID09PSBudWxsKSB7XG4gICAgbXNnSGFzaCA9IHN0YXJrbmV0LnBlZGVyc2VuKFxuICAgICAgc3RhcmtuZXQucGVkZXJzZW4odG1wSGFzaCwgcGFja2VkTWVzc2FnZTEudG9TdHJpbmcoMTYpKSxcbiAgICAgIHBhY2tlZE1lc3NhZ2UyLnRvU3RyaW5nKDE2KVxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgbXNnSGFzaCA9IHN0YXJrbmV0LnBlZGVyc2VuKFxuICAgICAgc3RhcmtuZXQucGVkZXJzZW4oXG4gICAgICAgIHN0YXJrbmV0LnBlZGVyc2VuKHRtcEhhc2gsIGNvbmRpdGlvbiksXG4gICAgICAgIHBhY2tlZE1lc3NhZ2UxLnRvU3RyaW5nKDE2KVxuICAgICAgKSxcbiAgICAgIHBhY2tlZE1lc3NhZ2UyLnRvU3RyaW5nKDE2KVxuICAgICk7XG4gIH1cblxuICBhc3NlcnRJblJhbmdlKEJpZ0ludChtc2dIYXNoKSwgQmlnSW50KDApLCBtYXhFY2RzYVZhbCwgJ21zZ0hhc2gnKTtcbiAgcmV0dXJuIG1zZ0hhc2g7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7YmlnaW50fSBpbnN0cnVjdGlvblR5cGVcbiAqIEBwYXJhbSB7YmlnaW50fSB2YXVsdFNlbGxcbiAqIEBwYXJhbSB7YmlnaW50fSB2YXVsdEJ1eVxuICogQHBhcmFtIHtiaWdpbnR9IGFtb3VudFNlbGxcbiAqIEBwYXJhbSB7YmlnaW50fSBhbW91bnRCdXlcbiAqIEBwYXJhbSB7YmlnaW50fSBub25jZVxuICogQHBhcmFtIHtiaWdpbnR9IGV4cGlyYXRpb25UaW1lc3RhbXBcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlblNlbGwgLSBoZXggd2l0aG91dCBwcmVmaXhcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlbkJ1eSAtIGhleCB3aXRob3V0IHByZWZpeFxuICogQHBhcmFtIHtzdHJpbmd9IGZlZVRva2VuIC0gaGV4IHdpdGhvdXQgcHJlZml4XG4gKiBAcGFyYW0ge2JpZ2ludH0gZmVlVmF1bHRJZFxuICogQHBhcmFtIHtiaWdpbnR9IGZlZUxpbWl0XG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiBoYXNoTGltaXRPcmRlck1zZ1dpdGhGZWUoXG4gIGluc3RydWN0aW9uVHlwZSxcbiAgdmF1bHRTZWxsLFxuICB2YXVsdEJ1eSxcbiAgYW1vdW50U2VsbCxcbiAgYW1vdW50QnV5LFxuICBub25jZSxcbiAgZXhwaXJhdGlvblRpbWVzdGFtcCxcbiAgdG9rZW5TZWxsLFxuICB0b2tlbkJ1eSxcbiAgZmVlVG9rZW4sXG4gIGZlZVZhdWx0SWQsXG4gIGZlZUxpbWl0XG4pIHtcbiAgbGV0IHBhY2tlZE1lc3NhZ2UxID0gYW1vdW50U2VsbDtcbiAgcGFja2VkTWVzc2FnZTEgPSAocGFja2VkTWVzc2FnZTEgPDwgQmlnSW50KDY0KSkgKyBhbW91bnRCdXk7XG4gIHBhY2tlZE1lc3NhZ2UxID0gKHBhY2tlZE1lc3NhZ2UxIDw8IEJpZ0ludCg2NCkpICsgZmVlTGltaXQ7XG4gIHBhY2tlZE1lc3NhZ2UxID0gKHBhY2tlZE1lc3NhZ2UxIDw8IEJpZ0ludCgzMikpICsgbm9uY2U7XG4gIGxldCBwYWNrZWRNZXNzYWdlMiA9IGluc3RydWN0aW9uVHlwZTtcbiAgcGFja2VkTWVzc2FnZTIgPSAocGFja2VkTWVzc2FnZTIgPDwgQmlnSW50KDY0KSkgKyBmZWVWYXVsdElkO1xuICBwYWNrZWRNZXNzYWdlMiA9IChwYWNrZWRNZXNzYWdlMiA8PCBCaWdJbnQoNjQpKSArIHZhdWx0U2VsbDtcbiAgcGFja2VkTWVzc2FnZTIgPSAocGFja2VkTWVzc2FnZTIgPDwgQmlnSW50KDY0KSkgKyB2YXVsdEJ1eTtcbiAgcGFja2VkTWVzc2FnZTIgPSAocGFja2VkTWVzc2FnZTIgPDwgQmlnSW50KDMyKSkgKyBleHBpcmF0aW9uVGltZXN0YW1wO1xuICBwYWNrZWRNZXNzYWdlMiA9IChwYWNrZWRNZXNzYWdlMiA8PCBCaWdJbnQoMTcpKSArIEJpZ0ludCgwKTtcblxuICBsZXQgbXNnSGFzaCA9IG51bGw7XG4gIGNvbnN0IHRtcEhhc2ggPSBzdGFya25ldC5wZWRlcnNlbihcbiAgICBzdGFya25ldC5wZWRlcnNlbih0b2tlblNlbGwsIHRva2VuQnV5KSxcbiAgICBmZWVUb2tlblxuICApO1xuXG4gIG1zZ0hhc2ggPSBzdGFya25ldC5wZWRlcnNlbihcbiAgICBzdGFya25ldC5wZWRlcnNlbih0bXBIYXNoLCBwYWNrZWRNZXNzYWdlMS50b1N0cmluZygxNikpLFxuICAgIHBhY2tlZE1lc3NhZ2UyLnRvU3RyaW5nKDE2KVxuICApO1xuXG4gIGFzc2VydEluUmFuZ2UoQmlnSW50KG1zZ0hhc2gpLCBCaWdJbnQoMCksIG1heEVjZHNhVmFsLCAnbXNnSGFzaCcpO1xuICByZXR1cm4gbXNnSGFzaDtcbn1cblxuLyoqXG4gU2VyaWFsaXplcyB0aGUgb3JkZXIgbWVzc2FnZSBpbiB0aGUgY2Fub25pY2FsIGZvcm1hdCBleHBlY3RlZCBieSB0aGUgdmVyaWZpZXIuXG4gcGFydHlfYSBzZWxscyBhbW91bnRTZWxsIGNvaW5zIG9mIHRva2VuU2VsbCBmcm9tIHZhdWx0U2VsbC5cbiBwYXJ0eV9hIGJ1eXMgYW1vdW50QnV5IGNvaW5zIG9mIHRva2VuQnV5IGludG8gdmF1bHRCdXkuXG4gRXhwZWN0ZWQgdHlwZXM6XG4gLS0tLS0tLS0tLS0tLS0tXG4gQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YXVsdFNlbGwgLSB1aW50MzEgKGFzIGludClcbiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHZhdWx0QnV5IC0gdWludDMxIChhcyBpbnQpXG4gQHBhcmFtIHtzdHJpbmd9IGFtb3VudFNlbGwgLSB1aW50NjMgKGFzIGRlY2ltYWwgc3RyaW5nKVxuIEBwYXJhbSB7c3RyaW5nfSBhbW91bnRCdXkgLSB1aW50NjMgKGFzIGRlY2ltYWwgc3RyaW5nKVxuIEBwYXJhbSB7c3RyaW5nfSB0b2tlblNlbGwgLSB1aW50MjU2IGZpZWxkIGVsZW1lbnQgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBwcmltZSAoYXMgaGV4IHN0cmluZyB3aXRoIDB4KVxuIEBwYXJhbSB7c3RyaW5nfSB0b2tlbkJ1eSAtIHVpbnQyNTYgZmllbGQgZWxlbWVudCBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIHByaW1lIChhcyBoZXggc3RyaW5nIHdpdGggMHgpXG4gQHBhcmFtIHtudW1iZXJ9IG5vbmNlIC0gdWludDMxIChhcyBpbnQpXG4gQHBhcmFtIHtudW1iZXJ9IGV4cGlyYXRpb25UaW1lc3RhbXAgLSB1aW50MjIgKGFzIGludCkuXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpbWl0T3JkZXJNc2dIYXNoKFxuICB2YXVsdFNlbGwsXG4gIHZhdWx0QnV5LFxuICBhbW91bnRTZWxsLFxuICBhbW91bnRCdXksXG4gIHRva2VuU2VsbCxcbiAgdG9rZW5CdXksXG4gIG5vbmNlLFxuICBleHBpcmF0aW9uVGltZXN0YW1wXG4pIHtcbiAgYXNzZXJ0KFxuICAgIGhhc0hleFByZWZpeCh0b2tlblNlbGwpICYmIGhhc0hleFByZWZpeCh0b2tlbkJ1eSksXG4gICAgJ0hleCBzdHJpbmdzIGV4cGVjdGVkIHRvIGJlIHByZWZpeGVkIHdpdGggMHguJ1xuICApO1xuICBjb25zdCB2YXVsdFNlbGxCaSA9IEJpZ0ludCh2YXVsdFNlbGwpO1xuICBjb25zdCB2YXVsdEJ1eUJpID0gQmlnSW50KHZhdWx0QnV5KTtcbiAgY29uc3QgYW1vdW50U2VsbEJpID0gQmlnSW50KGFtb3VudFNlbGwpO1xuICBjb25zdCBhbW91bnRCdXlCaSA9IEJpZ0ludChhbW91bnRCdXkpO1xuICBjb25zdCB0b2tlblNlbGxCaSA9IEJpZ0ludCh0b2tlblNlbGwpO1xuICBjb25zdCB0b2tlbkJ1eUJpID0gQmlnSW50KHRva2VuQnV5KTtcbiAgY29uc3Qgbm9uY2VCaSA9IEJpZ0ludChub25jZSk7XG4gIGNvbnN0IGV4cGlyYXRpb25UaW1lc3RhbXBCaSA9IEJpZ0ludChleHBpcmF0aW9uVGltZXN0YW1wKTtcblxuICBhc3NlcnRJblJhbmdlKHZhdWx0U2VsbEJpLCBCaWdJbnQoMCksIHR3b1BvdzMxKTtcbiAgYXNzZXJ0SW5SYW5nZSh2YXVsdEJ1eUJpLCBCaWdJbnQoMCksIHR3b1BvdzMxKTtcbiAgYXNzZXJ0SW5SYW5nZShhbW91bnRTZWxsQmksIEJpZ0ludCgwKSwgdHdvUG93NjMpO1xuICBhc3NlcnRJblJhbmdlKGFtb3VudEJ1eUJpLCBCaWdJbnQoMCksIHR3b1BvdzYzKTtcbiAgYXNzZXJ0SW5SYW5nZSh0b2tlblNlbGxCaSwgQmlnSW50KDApLCBwcmltZSk7XG4gIGFzc2VydEluUmFuZ2UodG9rZW5CdXlCaSwgQmlnSW50KDApLCBwcmltZSk7XG4gIGFzc2VydEluUmFuZ2Uobm9uY2VCaSwgQmlnSW50KDApLCB0d29Qb3czMSk7XG4gIGFzc2VydEluUmFuZ2UoZXhwaXJhdGlvblRpbWVzdGFtcEJpLCBCaWdJbnQoMCksIHR3b1BvdzIyKTtcblxuICBjb25zdCBpbnN0cnVjdGlvblR5cGUgPSBCaWdJbnQoMCk7XG4gIHJldHVybiBoYXNoTXNnKFxuICAgIGluc3RydWN0aW9uVHlwZSxcbiAgICB2YXVsdFNlbGxCaSxcbiAgICB2YXVsdEJ1eUJpLFxuICAgIGFtb3VudFNlbGxCaSxcbiAgICBhbW91bnRCdXlCaSxcbiAgICBub25jZUJpLFxuICAgIGV4cGlyYXRpb25UaW1lc3RhbXBCaSxcbiAgICB0b2tlblNlbGwuc3Vic3RyaW5nKDIpLFxuICAgIHRva2VuQnV5LnN1YnN0cmluZygyKVxuICApO1xufVxuXG4vKipcbiBTYW1lIGFzIGdldExpbWl0T3JkZXJNc2dIYXNoLCBidXQgYWxzbyByZXF1aXJlcyB0aGUgZmVlIGluZm8uXG5cbiBFeHBlY3RlZCB0eXBlcyBvZiBmZWUgaW5mbyBwYXJhbXM6XG4gLS0tLS0tLS0tLS0tLS0tXG4gQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YXVsdFNlbGwgLSB1aW50MzEgKGFzIGludClcbiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHZhdWx0QnV5IC0gdWludDMxIChhcyBpbnQpXG4gQHBhcmFtIHtzdHJpbmd9IGFtb3VudFNlbGwgLSB1aW50NjMgKGFzIGRlY2ltYWwgc3RyaW5nKVxuIEBwYXJhbSB7c3RyaW5nfSBhbW91bnRCdXkgLSB1aW50NjMgKGFzIGRlY2ltYWwgc3RyaW5nKVxuIEBwYXJhbSB7c3RyaW5nfSB0b2tlblNlbGwgLSB1aW50MjU2IGZpZWxkIGVsZW1lbnQgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBwcmltZSAoYXMgaGV4IHN0cmluZyB3aXRoIDB4KVxuIEBwYXJhbSB7c3RyaW5nfSB0b2tlbkJ1eSAtIHVpbnQyNTYgZmllbGQgZWxlbWVudCBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIHByaW1lIChhcyBoZXggc3RyaW5nIHdpdGggMHgpXG4gQHBhcmFtIHtudW1iZXJ9IG5vbmNlIC0gdWludDMxIChhcyBpbnQpXG4gQHBhcmFtIHtudW1iZXJ9IGV4cGlyYXRpb25UaW1lc3RhbXAgLSB1aW50MjIgKGFzIGludCkuXG4gQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBmZWVWYXVsdElkIC0gdWludDMxIChhcyBpbnQpXG4gQHBhcmFtIHtzdHJpbmd9IGZlZUxpbWl0IC0gdWludDYzIChhcyBkZWNpbWFsIHN0cmluZylcbiBAcGFyYW0ge3N0cmluZ30gZmVlVG9rZW4gLSB1aW50MjU2IGZpZWxkIGVsZW1lbnQgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBwcmltZSAoYXMgaGV4IHN0cmluZyB3aXRoIDB4KVxuKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW1pdE9yZGVyTXNnSGFzaFdpdGhGZWUoXG4gIHZhdWx0U2VsbCxcbiAgdmF1bHRCdXksXG4gIGFtb3VudFNlbGwsXG4gIGFtb3VudEJ1eSxcbiAgdG9rZW5TZWxsLFxuICB0b2tlbkJ1eSxcbiAgbm9uY2UsXG4gIGV4cGlyYXRpb25UaW1lc3RhbXAsXG4gIGZlZVRva2VuLFxuICBmZWVWYXVsdElkLFxuICBmZWVMaW1pdFxuKSB7XG4gIGFzc2VydChcbiAgICBoYXNIZXhQcmVmaXgodG9rZW5TZWxsKSAmJiBoYXNIZXhQcmVmaXgodG9rZW5CdXkpLFxuICAgICdIZXggc3RyaW5ncyBleHBlY3RlZCB0byBiZSBwcmVmaXhlZCB3aXRoIDB4LidcbiAgKTtcbiAgY29uc3QgdmF1bHRTZWxsQmkgPSBCaWdJbnQodmF1bHRTZWxsKTtcbiAgY29uc3QgdmF1bHRCdXlCaSA9IEJpZ0ludCh2YXVsdEJ1eSk7XG4gIGNvbnN0IGFtb3VudFNlbGxCaSA9IEJpZ0ludChhbW91bnRTZWxsKTtcbiAgY29uc3QgYW1vdW50QnV5QmkgPSBCaWdJbnQoYW1vdW50QnV5KTtcbiAgY29uc3QgdG9rZW5TZWxsQmkgPSBCaWdJbnQodG9rZW5TZWxsKTtcbiAgY29uc3QgdG9rZW5CdXlCaSA9IEJpZ0ludCh0b2tlbkJ1eSk7XG4gIGNvbnN0IG5vbmNlQmkgPSBCaWdJbnQobm9uY2UpO1xuICBjb25zdCBleHBpcmF0aW9uVGltZXN0YW1wQmkgPSBCaWdJbnQoZXhwaXJhdGlvblRpbWVzdGFtcCk7XG4gIGNvbnN0IGZlZVRva2VuQmkgPSBCaWdJbnQoZmVlVG9rZW4pO1xuICBjb25zdCBmZWVWYXVsdElkQmkgPSBCaWdJbnQoZmVlVmF1bHRJZCk7XG4gIGNvbnN0IGZlZUxpbWl0QmkgPSBCaWdJbnQoZmVlTGltaXQpO1xuXG4gIGFzc2VydEluUmFuZ2UodmF1bHRTZWxsQmksIEJpZ0ludCgwKSwgdHdvUG93MzEpO1xuICBhc3NlcnRJblJhbmdlKHZhdWx0QnV5QmksIEJpZ0ludCgwKSwgdHdvUG93MzEpO1xuICBhc3NlcnRJblJhbmdlKGFtb3VudFNlbGxCaSwgQmlnSW50KDApLCB0d29Qb3c2Myk7XG4gIGFzc2VydEluUmFuZ2UoYW1vdW50QnV5QmksIEJpZ0ludCgwKSwgdHdvUG93NjMpO1xuICBhc3NlcnRJblJhbmdlKHRva2VuU2VsbEJpLCBCaWdJbnQoMCksIHByaW1lKTtcbiAgYXNzZXJ0SW5SYW5nZSh0b2tlbkJ1eUJpLCBCaWdJbnQoMCksIHByaW1lKTtcbiAgYXNzZXJ0SW5SYW5nZShub25jZUJpLCBCaWdJbnQoMCksIHR3b1BvdzMxKTtcbiAgYXNzZXJ0SW5SYW5nZShleHBpcmF0aW9uVGltZXN0YW1wQmksIEJpZ0ludCgwKSwgdHdvUG93MjIpO1xuICBhc3NlcnRJblJhbmdlKGZlZVRva2VuQmksIEJpZ0ludCgwKSwgcHJpbWUpO1xuICBhc3NlcnRJblJhbmdlKGZlZVZhdWx0SWRCaSwgQmlnSW50KDApLCB0d29Qb3czMSk7XG4gIGFzc2VydEluUmFuZ2UoZmVlTGltaXRCaSwgQmlnSW50KDApLCB0d29Qb3c2Myk7XG5cbiAgY29uc3QgaW5zdHJ1Y3Rpb25UeXBlID0gQmlnSW50KDMpO1xuICByZXR1cm4gaGFzaExpbWl0T3JkZXJNc2dXaXRoRmVlKFxuICAgIGluc3RydWN0aW9uVHlwZSxcbiAgICB2YXVsdFNlbGxCaSxcbiAgICB2YXVsdEJ1eUJpLFxuICAgIGFtb3VudFNlbGxCaSxcbiAgICBhbW91bnRCdXlCaSxcbiAgICBub25jZUJpLFxuICAgIGV4cGlyYXRpb25UaW1lc3RhbXBCaSxcbiAgICB0b2tlblNlbGwuc3Vic3RyaW5nKDIpLFxuICAgIHRva2VuQnV5LnN1YnN0cmluZygyKSxcbiAgICBmZWVUb2tlbi5zdWJzdHJpbmcoMiksXG4gICAgZmVlVmF1bHRJZEJpLFxuICAgIGZlZUxpbWl0QmlcbiAgKTtcbn1cblxuLyoqXG4gU2VyaWFsaXplcyB0aGUgdHJhbnNmZXIgbWVzc2FnZSBpbiB0aGUgY2Fub25pY2FsIGZvcm1hdCBleHBlY3RlZCBieSB0aGUgdmVyaWZpZXIuXG4gVGhlIHNlbmRlciB0cmFuc2ZlciAnYW1vdW50JyBjb2lucyBvZiAndG9rZW4nIGZyb20gdmF1bHQgd2l0aCBpZCBzZW5kZXJWYXVsdElkIHRvIHZhdWx0IHdpdGggaWRcbiByZWNlaXZlclZhdWx0SWQuIFRoZSByZWNlaXZlcidzIHB1YmxpYyBrZXkgaXMgcmVjZWl2ZXJQdWJsaWNLZXkuXG4gSWYgYSBjb25kaXRpb24gaXMgYWRkZWQsIGl0IGlzIHZlcmlmaWVkIGJlZm9yZSBleGVjdXRpbmcgdGhlIHRyYW5zZmVyLiBUaGUgZm9ybWF0IG9mIHRoZSBjb25kaXRpb25cbiBpcyBkZWZpbmVkIGJ5IHRoZSBhcHBsaWNhdGlvbi5cbiBFeHBlY3RlZCB0eXBlczpcbiAtLS0tLS0tLS0tLS0tLS1cbiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IC0gdWludDYzIChhcyBkZWNpbWFsIHN0cmluZylcbiBAcGFyYW0ge251bWJlcn0gbm9uY2UgLSB1aW50MzEgKGFzIGludClcbiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHNlbmRlclZhdWx0SWQgLSB1aW50MzEgKGFzIGludClcbiBAcGFyYW0ge3N0cmluZ30gdG9rZW4gLSB1aW50MjU2IGZpZWxkIGVsZW1lbnQgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBwcmltZSAoYXMgaGV4IHN0cmluZyB3aXRoIDB4KVxuIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gcmVjZWl2ZXJWYXVsdElkIC0gdWludDMxIChhcyBpbnQpXG4gQHBhcmFtIHtzdHJpbmd9IHJlY2VpdmVyUHVibGljS2V5IC0gdWludDI1NiBmaWVsZCBlbGVtZW50IHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgcHJpbWUgKGFzIGhleCBzdHJpbmcgd2l0aCAweClcbiBAcGFyYW0ge251bWJlcn0gZXhwaXJhdGlvblRpbWVzdGFtcCAtIHVpbnQyMiAoYXMgaW50KS5cbiBAcGFyYW0ge3N0cmluZ3xudWxsfSBbY29uZGl0aW9uXSAtIHVpbnQyNTYgZmllbGQgZWxlbWVudCBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIHByaW1lIChhcyBoZXggc3RyaW5nIHdpdGggMHgpXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zZmVyTXNnSGFzaChcbiAgYW1vdW50LFxuICBub25jZSxcbiAgc2VuZGVyVmF1bHRJZCxcbiAgdG9rZW4sXG4gIHJlY2VpdmVyVmF1bHRJZCxcbiAgcmVjZWl2ZXJQdWJsaWNLZXksXG4gIGV4cGlyYXRpb25UaW1lc3RhbXAsXG4gIGNvbmRpdGlvblxuKSB7XG4gIGFzc2VydChcbiAgICBoYXNIZXhQcmVmaXgodG9rZW4pICYmXG4gICAgICBoYXNIZXhQcmVmaXgocmVjZWl2ZXJQdWJsaWNLZXkpICYmXG4gICAgICAoIWNvbmRpdGlvbiB8fCBoYXNIZXhQcmVmaXgoY29uZGl0aW9uKSksXG4gICAgJ0hleCBzdHJpbmdzIGV4cGVjdGVkIHRvIGJlIHByZWZpeGVkIHdpdGggMHguJ1xuICApO1xuICBjb25zdCBhbW91bnRCaSA9IEJpZ0ludChhbW91bnQpO1xuICBjb25zdCBub25jZUJpID0gQmlnSW50KG5vbmNlKTtcbiAgY29uc3Qgc2VuZGVyVmF1bHRJZEJpID0gQmlnSW50KHNlbmRlclZhdWx0SWQpO1xuICBjb25zdCB0b2tlbkJpID0gQmlnSW50KHRva2VuKTtcbiAgY29uc3QgcmVjZWl2ZXJWYXVsdElkQmkgPSBCaWdJbnQocmVjZWl2ZXJWYXVsdElkKTtcbiAgY29uc3QgcmVjZWl2ZXJQdWJsaWNLZXlCaSA9IEJpZ0ludChyZWNlaXZlclB1YmxpY0tleSk7XG4gIGNvbnN0IGV4cGlyYXRpb25UaW1lc3RhbXBCaSA9IEJpZ0ludChleHBpcmF0aW9uVGltZXN0YW1wKTtcblxuICBhc3NlcnRJblJhbmdlKGFtb3VudEJpLCBCaWdJbnQoMCksIHR3b1BvdzYzKTtcbiAgYXNzZXJ0SW5SYW5nZShub25jZUJpLCBCaWdJbnQoMCksIHR3b1BvdzMxKTtcbiAgYXNzZXJ0SW5SYW5nZShzZW5kZXJWYXVsdElkQmksIEJpZ0ludCgwKSwgdHdvUG93MzEpO1xuICBhc3NlcnRJblJhbmdlKHRva2VuQmksIEJpZ0ludCgwKSwgcHJpbWUpO1xuICBhc3NlcnRJblJhbmdlKHJlY2VpdmVyVmF1bHRJZEJpLCBCaWdJbnQoMCksIHR3b1BvdzMxKTtcbiAgYXNzZXJ0SW5SYW5nZShyZWNlaXZlclB1YmxpY0tleUJpLCBCaWdJbnQoMCksIHByaW1lKTtcbiAgYXNzZXJ0SW5SYW5nZShleHBpcmF0aW9uVGltZXN0YW1wQmksIEJpZ0ludCgwKSwgdHdvUG93MjIpO1xuICBsZXQgaW5zdHJ1Y3Rpb25UeXBlID0gQmlnSW50KDEpO1xuICBpZiAoY29uZGl0aW9uKSB7XG4gICAgYXNzZXJ0SW5SYW5nZShCaWdJbnQoY29uZGl0aW9uKSwgQmlnSW50KDApLCBwcmltZSwgJ2NvbmRpdGlvbicpO1xuICAgIGluc3RydWN0aW9uVHlwZSA9IEJpZ0ludCgyKTtcbiAgfVxuICByZXR1cm4gaGFzaE1zZyhcbiAgICBpbnN0cnVjdGlvblR5cGUsXG4gICAgc2VuZGVyVmF1bHRJZEJpLFxuICAgIHJlY2VpdmVyVmF1bHRJZEJpLFxuICAgIGFtb3VudEJpLFxuICAgIEJpZ0ludCgwKSxcbiAgICBub25jZUJpLFxuICAgIGV4cGlyYXRpb25UaW1lc3RhbXBCaSxcbiAgICB0b2tlbi5zdWJzdHJpbmcoMiksXG4gICAgcmVjZWl2ZXJQdWJsaWNLZXkuc3Vic3RyaW5nKDIpLFxuICAgIGNvbmRpdGlvblxuICApO1xufVxuXG4vKipcbiBTYW1lIGFzIGdldFRyYW5zZmVyTXNnSGFzaCwgYnV0IGFsc28gcmVxdWlyZXMgdGhlIGZlZSBpbmZvLlxuXG4gRXhwZWN0ZWQgdHlwZXMgb2YgZmVlIGluZm8gcGFyYW1zOlxuIC0tLS0tLS0tLS0tLS0tLVxuIEBwYXJhbSB7c3RyaW5nfSBhbW91bnQgLSB1aW50NjMgKGFzIGRlY2ltYWwgc3RyaW5nKVxuIEBwYXJhbSB7bnVtYmVyfSBub25jZSAtIHVpbnQzMSAoYXMgaW50KVxuIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gc2VuZGVyVmF1bHRJZCAtIHVpbnQzMSAoYXMgaW50KVxuIEBwYXJhbSB7c3RyaW5nfSB0b2tlbiAtIHVpbnQyNTYgZmllbGQgZWxlbWVudCBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIHByaW1lIChhcyBoZXggc3RyaW5nIHdpdGggMHgpXG4gQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSByZWNlaXZlclZhdWx0SWQgLSB1aW50MzEgKGFzIGludClcbiBAcGFyYW0ge3N0cmluZ30gcmVjZWl2ZXJTdGFya0tleSAtIHVpbnQyNTYgZmllbGQgZWxlbWVudCBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIHByaW1lIChhcyBoZXggc3RyaW5nIHdpdGggMHgpXG4gQHBhcmFtIHtudW1iZXJ9IGV4cGlyYXRpb25UaW1lc3RhbXAgLSB1aW50MjIgKGFzIGludCkuXG4gQHBhcmFtIHtzdHJpbmd8bnVsbHx1bmRlZmluZWR9IGNvbmRpdGlvbiAtIHVpbnQyNTYgZmllbGQgZWxlbWVudCBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIHByaW1lIChhcyBoZXggc3RyaW5nIHdpdGggMHgpXG4gQHBhcmFtIHtzdHJpbmd9IGZlZVRva2VuIC0gdWludDI1NiBmaWVsZCBlbGVtZW50IHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgcHJpbWUgKGFzIGhleCBzdHJpbmcgd2l0aCAweClcbiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZlZVZhdWx0SWQgLSB1aW50MzEgKGFzIGludClcbiBAcGFyYW0ge3N0cmluZ30gZmVlTGltaXQgLSB1aW50NjMgKGFzIGRlY2ltYWwgc3RyaW5nKVxuKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2Zlck1zZ0hhc2hXaXRoRmVlKFxuICBhbW91bnQsXG4gIG5vbmNlLFxuICBzZW5kZXJWYXVsdElkLFxuICB0b2tlbixcbiAgcmVjZWl2ZXJWYXVsdElkLFxuICByZWNlaXZlclN0YXJrS2V5LFxuICBleHBpcmF0aW9uVGltZXN0YW1wLFxuICBjb25kaXRpb24sXG4gIGZlZVRva2VuLFxuICBmZWVWYXVsdElkLFxuICBmZWVMaW1pdFxuKSB7XG4gIGFzc2VydChcbiAgICBoYXNIZXhQcmVmaXgoZmVlVG9rZW4pICYmXG4gICAgICBoYXNIZXhQcmVmaXgodG9rZW4pICYmXG4gICAgICBoYXNIZXhQcmVmaXgocmVjZWl2ZXJTdGFya0tleSkgJiZcbiAgICAgICghY29uZGl0aW9uIHx8IGhhc0hleFByZWZpeChjb25kaXRpb24pKSxcbiAgICAnSGV4IHN0cmluZ3MgZXhwZWN0ZWQgdG8gYmUgcHJlZml4ZWQgd2l0aCAweC4nXG4gICk7XG4gIGNvbnN0IGFtb3VudEJpID0gQmlnSW50KGFtb3VudCk7XG4gIGNvbnN0IG5vbmNlQmkgPSBCaWdJbnQobm9uY2UpO1xuICBjb25zdCBzZW5kZXJWYXVsdElkQmkgPSBCaWdJbnQoc2VuZGVyVmF1bHRJZCk7XG4gIGNvbnN0IHRva2VuQmkgPSBCaWdJbnQodG9rZW4pO1xuICBjb25zdCByZWNlaXZlclZhdWx0SWRCaSA9IEJpZ0ludChyZWNlaXZlclZhdWx0SWQpO1xuICBjb25zdCByZWNlaXZlclN0YXJrS2V5QmkgPSBCaWdJbnQocmVjZWl2ZXJTdGFya0tleSk7XG4gIGNvbnN0IGV4cGlyYXRpb25UaW1lc3RhbXBCaSA9IEJpZ0ludChleHBpcmF0aW9uVGltZXN0YW1wKTtcbiAgY29uc3QgZmVlVG9rZW5CaSA9IEJpZ0ludChmZWVUb2tlbik7XG4gIGNvbnN0IGZlZVZhdWx0SWRCaSA9IEJpZ0ludChmZWVWYXVsdElkKTtcbiAgY29uc3QgZmVlTGltaXRCaSA9IEJpZ0ludChmZWVMaW1pdCk7XG5cbiAgYXNzZXJ0SW5SYW5nZShhbW91bnRCaSwgQmlnSW50KDApLCB0d29Qb3c2Myk7XG4gIGFzc2VydEluUmFuZ2Uobm9uY2VCaSwgQmlnSW50KDApLCB0d29Qb3czMSk7XG4gIGFzc2VydEluUmFuZ2Uoc2VuZGVyVmF1bHRJZEJpLCBCaWdJbnQoMCksIHR3b1BvdzMxKTtcbiAgYXNzZXJ0SW5SYW5nZSh0b2tlbkJpLCBCaWdJbnQoMCksIHByaW1lKTtcbiAgYXNzZXJ0SW5SYW5nZShyZWNlaXZlclZhdWx0SWRCaSwgQmlnSW50KDApLCB0d29Qb3czMSk7XG4gIGFzc2VydEluUmFuZ2UocmVjZWl2ZXJTdGFya0tleUJpLCBCaWdJbnQoMCksIHByaW1lKTtcbiAgYXNzZXJ0SW5SYW5nZShleHBpcmF0aW9uVGltZXN0YW1wQmksIEJpZ0ludCgwKSwgdHdvUG93MjIpO1xuICBhc3NlcnRJblJhbmdlKGZlZVRva2VuQmksIEJpZ0ludCgwKSwgcHJpbWUpO1xuICBhc3NlcnRJblJhbmdlKGZlZVZhdWx0SWRCaSwgQmlnSW50KDApLCB0d29Qb3czMSk7XG4gIGFzc2VydEluUmFuZ2UoZmVlTGltaXRCaSwgQmlnSW50KDApLCB0d29Qb3c2Myk7XG5cbiAgbGV0IGluc3RydWN0aW9uVHlwZSA9IEJpZ0ludCg0KTtcbiAgaWYgKGNvbmRpdGlvbikge1xuICAgIGFzc2VydEluUmFuZ2UoQmlnSW50KGNvbmRpdGlvbiksIEJpZ0ludCgwKSwgcHJpbWUsICdjb25kaXRpb24nKTtcbiAgICBpbnN0cnVjdGlvblR5cGUgPSBCaWdJbnQoNSk7XG4gIH1cbiAgcmV0dXJuIGhhc2hUcmFuc2Zlck1zZ1dpdGhGZWUoXG4gICAgaW5zdHJ1Y3Rpb25UeXBlLFxuICAgIHNlbmRlclZhdWx0SWRCaSxcbiAgICByZWNlaXZlclZhdWx0SWRCaSxcbiAgICBhbW91bnRCaSxcbiAgICBub25jZUJpLFxuICAgIGV4cGlyYXRpb25UaW1lc3RhbXBCaSxcbiAgICB0b2tlbi5zdWJzdHJpbmcoMiksXG4gICAgcmVjZWl2ZXJTdGFya0tleS5zdWJzdHJpbmcoMiksXG4gICAgZmVlVG9rZW4uc3Vic3RyaW5nKDIpLFxuICAgIGZlZVZhdWx0SWRCaSxcbiAgICBmZWVMaW1pdEJpLFxuICAgIGNvbmRpdGlvblxuICApO1xufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGFya3dhcmUvc2lnbmF0dXJlLmpzIl0sIm5hbWVzIjpbInByaW1lIiwic3RhcmtuZXQiLCJDVVJWRSIsInAiLCJtYXhFY2RzYVZhbCIsIkJpZ0ludCIsInR3b1BvdzIyIiwidHdvUG93MzEiLCJ0d29Qb3c2MyIsImhhc0hleFByZWZpeCIsInN0ciIsInN1YnN0cmluZyIsImFzc2VydEluUmFuZ2UiLCJpbnB1dCIsImxvd2VyQm91bmQiLCJ1cHBlckJvdW5kIiwiaW5wdXROYW1lIiwibWVzc2FnZVN1ZmZpeCIsImhhc2hNc2ciLCJpbnN0cnVjdGlvblR5cGVCaSIsInZhdWx0MCIsInZhdWx0MSIsImFtb3VudDAiLCJhbW91bnQxIiwibm9uY2UiLCJleHBpcmF0aW9uVGltZXN0YW1wIiwidG9rZW4wIiwidG9rZW4xT3JQdWJLZXkiLCJjb25kaXRpb24iLCJwYWNrZWRNZXNzYWdlIiwibXNnSGFzaCIsInBlZGVyc2VuIiwidG9TdHJpbmciLCJoYXNoVHJhbnNmZXJNc2dXaXRoRmVlIiwiaW5zdHJ1Y3Rpb25UeXBlIiwic2VuZGVyVmF1bHRJZCIsInJlY2VpdmVyVmF1bHRJZCIsImFtb3VudCIsInRyYW5zZmVyVG9rZW4iLCJyZWNlaXZlclB1YmxpY0tleSIsImZlZVRva2VuIiwiZmVlVmF1bHRJZCIsImZlZUxpbWl0IiwicGFja2VkTWVzc2FnZTEiLCJwYWNrZWRNZXNzYWdlMiIsInRtcEhhc2giLCJoYXNoTGltaXRPcmRlck1zZ1dpdGhGZWUiLCJ2YXVsdFNlbGwiLCJ2YXVsdEJ1eSIsImFtb3VudFNlbGwiLCJhbW91bnRCdXkiLCJ0b2tlblNlbGwiLCJ0b2tlbkJ1eSIsImdldExpbWl0T3JkZXJNc2dIYXNoIiwidmF1bHRTZWxsQmkiLCJ2YXVsdEJ1eUJpIiwidG9rZW5TZWxsQmkiLCJ0b2tlbkJ1eUJpIiwibm9uY2VCaSIsImV4cGlyYXRpb25UaW1lc3RhbXBCaSIsImdldExpbWl0T3JkZXJNc2dIYXNoV2l0aEZlZSIsImZlZVRva2VuQmkiLCJmZWVWYXVsdElkQmkiLCJnZXRUcmFuc2Zlck1zZ0hhc2giLCJ0b2tlbiIsInNlbmRlclZhdWx0SWRCaSIsInRva2VuQmkiLCJyZWNlaXZlclZhdWx0SWRCaSIsInJlY2VpdmVyUHVibGljS2V5QmkiLCJnZXRUcmFuc2Zlck1zZ0hhc2hXaXRoRmVlIiwicmVjZWl2ZXJTdGFya0tleSIsInJlY2VpdmVyU3RhcmtLZXlCaSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBa0JBOztBQUNBOzs7Ozs7OztBQW5CQTs7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQSxJQUFNQSxLQUFLLEdBQUdDLFFBQVEsQ0FBQ0MsS0FBVCxDQUFlQyxDQUE3QixDLENBRUE7O0FBQ0EsSUFBTUMsV0FBVyxHQUFHQyxNQUFNLENBQ3hCLG1FQUR3QixDQUExQjtBQUlBLElBQU1DLFFBQVEsR0FBR0QsTUFBTSxDQUFDLFVBQUQsQ0FBdkI7QUFDQSxJQUFNRSxRQUFRLEdBQUdGLE1BQU0sQ0FBQyxZQUFELENBQXZCO0FBQ0EsSUFBTUcsUUFBUSxHQUFHSCxNQUFNLENBQUMsb0JBQUQsQ0FBdkI7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxTQUFTSSxZQUFULENBQXNCQyxHQUF0QixFQUEyQjtBQUN6QixTQUFPQSxHQUFHLENBQUNDLFNBQUosQ0FBYyxDQUFkLEVBQWlCLENBQWpCLE1BQXdCLElBQS9CO0FBQ0Q7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLEtBQXZCLEVBQThCQyxVQUE5QixFQUEwQ0MsVUFBMUMsRUFBc0U7QUFBQSxNQUFoQkMsU0FBZ0IsdUVBQUosRUFBSTtBQUNwRSxNQUFNQyxhQUFhLEdBQ2pCRCxTQUFTLEtBQUssRUFB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QUNEOztBQUNELFNBQU80QixzQkFBc0IsQ0FDM0JDLGVBRDJCLEVBRTNCK0IsZUFGMkIsRUFHM0JFLGlCQUgyQixFQUkzQjlCLE1BSjJCLEVBSzNCcUIsT0FMMkIsRUFNM0JDLHFCQU4yQixFQU8zQkssS0FBSyxDQUFDckQsU0FBTixDQUFnQixDQUFoQixDQVAyQixFQVEzQjJELGdCQUFnQixDQUFDM0QsU0FBakIsQ0FBMkIsQ0FBM0IsQ0FSMkIsRUFTM0I2QixRQUFRLENBQUM3QixTQUFULENBQW1CLENBQW5CLENBVDJCLEVBVTNCbUQsWUFWMkIsRUFXM0JwQixRQVgyQixFQVkzQmQsU0FaMkIsQ0FBN0I7QUFjRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuLyogZXNsaW50LWRpc2FibGUgbm8tYml0d2lzZSAqL1xuLyogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb3B5cmlnaHQgMjAxOSBTdGFya1dhcmUgSW5kdXN0cmllcyBMdGQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1xuLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gICAgICAgICAgICAgLy9cbi8vIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gICAgICAgICAgICAvL1xuLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cbi8vIGh0dHBzOi8vd3d3LnN0YXJrd2FyZS5jby9vcGVuLXNvdXJjZS1saWNlbnNlLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsICAgICAgICAgICAgICAgICAgLy9cbi8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgIC8vXG4vLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gICAgLy9cbi8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyAgICAgICAgICAgICAvL1xuLy8gYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gKi9cblxuaW1wb3J0ICogYXMgc3RhcmtuZXQgZnJvbSAnbWljcm8tc3RhcmtuZXQnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuLyoqXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHRlc3RcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlXG4gKi9cbi8vIGNvbnN0IGFzc2VydCA9ICh0ZXN0LCBtZXNzYWdlKSA9PiB7XG4vLyAgIGlmICghdGVzdCkge1xuLy8gICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbi8vICAgfVxuLy8gfTtcblxuLy8gRXF1YWxzIDIqKjI1MSArIDE3ICogMioqMTkyICsgMS5cbmNvbnN0IHByaW1lID0gc3RhcmtuZXQuQ1VSVkUucDtcblxuLy8gRXF1YWxzIDIqKjI1MS4gVGhpcyB2YWx1ZSBsaW1pdHMgbXNnSGFzaCBhbmQgdGhlIHNpZ25hdHVyZSBwYXJ0cy5cbmNvbnN0IG1heEVjZHNhVmFsID0gQmlnSW50KFxuICAnMHg4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4pO1xuXG5jb25zdCB0d29Qb3cyMiA9IEJpZ0ludCgnMHg0MDAwMDAnKTtcbmNvbnN0IHR3b1BvdzMxID0gQmlnSW50KCcweDgwMDAwMDAwJyk7XG5jb25zdCB0d29Qb3c2MyA9IEJpZ0ludCgnMHg4MDAwMDAwMDAwMDAwMDAwJyk7XG5cbi8qKlxuICogQ2hlY2tzIHRoYXQgdGhlIHN0cmluZyBzdHIgc3RhcnQgd2l0aCAnMHgnLlxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICovXG5mdW5jdGlvbiBoYXNIZXhQcmVmaXgoc3RyKSB7XG4gIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIDIpID09PSAnMHgnO1xufVxuXG4vKipcbiAqIEFzc2VydHMgaW5wdXQgaXMgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGVuIGxvd2VyQm91bmQgYW5kIGxvd2VyIHRoZW4gdXBwZXJCb3VuZC5cbiAqIEFzc2VydCBtZXNzYWdlIHNwZWNpZmllcyBpbnB1dE5hbWUuXG4gKiBpbnB1dE5hbWUgc2hvdWxkIGJlIGEgc3RyaW5nLlxuICogQHBhcmFtIHtiaWdpbnR9IGlucHV0XG4gKiBAcGFyYW0ge2JpZ2ludH0gbG93ZXJCb3VuZFxuICogQHBhcmFtIHtiaWdpbnR9IHVwcGVyQm91bmRcbiAqIEBwYXJhbSB7c3RyaW5nfSBbaW5wdXROYW1lXVxuICovXG5mdW5jdGlvbiBhc3NlcnRJblJhbmdlKGlucHV0LCBsb3dlckJvdW5kLCB1cHBlckJvdW5kLCBpbnB1dE5hbWUgPSAnJykge1xuICBjb25zdCBtZXNzYWdlU3VmZml4ID1cbiAgICBpbnB1dE5hbWUgPT09ICcnID8gJ2ludmFsaWQgbGVuZ3RoJyA6IGBpbnZhbGlkICR7aW5wdXROYW1lfSBsZW5ndGhgO1xuICBhc3NlcnQoXG4gICAgaW5wdXQgPj0gbG93ZXJCb3VuZCAmJiBpbnB1dCA8IHVwcGVyQm91bmQsXG4gICAgYE1lc3NhZ2Ugbm90IHNpZ25hYmxlLCAke21lc3NhZ2VTdWZmaXh9LmBcbiAgKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2JpZ2ludH0gaW5zdHJ1Y3Rpb25UeXBlQmlcbiAqIEBwYXJhbSB7YmlnaW50fSB2YXVsdDBcbiAqIEBwYXJhbSB7YmlnaW50fSB2YXVsdDFcbiAqIEBwYXJhbSB7YmlnaW50fSBhbW91bnQwXG4gKiBAcGFyYW0ge2JpZ2ludH0gYW1vdW50MVxuICogQHBhcmFtIHtiaWdpbnR9IG5vbmNlXG4gKiBAcGFyYW0ge2JpZ2ludH0gZXhwaXJhdGlvblRpbWVzdGFtcFxuICogQHBhcmFtIHtzdHJpbmd9IHRva2VuMFxuICogQHBhcmFtIHtzdHJpbmd9IHRva2VuMU9yUHViS2V5XG4gKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IFtjb25kaXRpb25dXG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiBoYXNoTXNnKFxuICBpbnN0cnVjdGlvblR5cGVCaSxcbiAgdmF1bHQwLFxuICB2YXVsdDEsXG4gIGFtb3VudDAsXG4gIGFtb3VudDEsXG4gIG5vbmNlLFxuICBleHBpcmF0aW9uVGltZXN0YW1wLFxuICB0b2tlbjAsXG4gIHRva2VuMU9yUHViS2V5LFxuICBjb25kaXRpb24gPSBudWxsXG4pIHtcbiAgbGV0IHBhY2tlZE1lc3NhZ2UgPSBpbnN0cnVjdGlvblR5cGVCaTtcbiAgcGFja2VkTWVzc2FnZSA9IChwYWNrZWRNZXNzYWdlIDw8IEJpZ0ludCgzMSkpICsgdmF1bHQwO1xuICBwYWNrZWRNZXNzYWdlID0gKHBhY2tlZE1lc3NhZ2UgPDwgQmlnSW50KDMxKSkgKyB2YXVsdDE7XG4gIHBhY2tlZE1lc3NhZ2UgPSAocGFja2VkTWVzc2FnZSA8PCBCaWdJbnQoNjMpKSArIGFtb3VudDA7XG4gIHBhY2tlZE1lc3NhZ2UgPSAocGFja2VkTWVzc2FnZSA8PCBCaWdJbnQoNjMpKSArIGFtb3VudDE7XG4gIHBhY2tlZE1lc3NhZ2UgPSAocGFja2VkTWVzc2FnZSA8PCBCaWdJbnQoMzEpKSArIG5vbmNlO1xuICBwYWNrZWRNZXNzYWdlID0gKHBhY2tlZE1lc3NhZ2UgPDwgQmlnSW50KDIyKSkgKyBleHBpcmF0aW9uVGltZXN0YW1wO1xuICBsZXQgbXNnSGFzaCA9IG51bGw7XG4gIGlmIChjb25kaXRpb24gPT09IG51bGwpIHtcbiAgICBtc2dIYXNoID0gc3RhcmtuZXQucGVkZXJzZW4oXG4gICAgICBzdGFya25ldC5wZWRlcnNlbih0b2tlbjAsIHRva2VuMU9yUHViS2V5KSxcbiAgICAgIHBhY2tlZE1lc3NhZ2UudG9TdHJpbmcoMTYpXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBtc2dIYXNoID0gc3RhcmtuZXQucGVkZXJzZW4oXG4gICAgICBzdGFya25ldC5wZWRlcnNlbihzdGFya25ldC5wZWRlcnNlbih0b2tlbjAsIHRva2VuMU9yUHViS2V5KSwgY29uZGl0aW9uKSxcbiAgICAgIHBhY2tlZE1lc3NhZ2UudG9TdHJpbmcoMTYpXG4gICAgKTtcbiAgfVxuXG4gIGFzc2VydEluUmFuZ2UoQmlnSW50KG1zZ0hhc2gpLCBCaWdJbnQoMCksIG1heEVjZHNhVmFsLCAnbXNnSGFzaCcpO1xuICByZXR1cm4gbXNnSGFzaDtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHtiaWdpbnR9IGluc3RydWN0aW9uVHlwZVxuICogQHBhcmFtIHtiaWdpbnR9IHNlbmRlclZhdWx0SWRcbiAqIEBwYXJhbSB7YmlnaW50fSByZWNlaXZlclZhdWx0SWRcbiAqIEBwYXJhbSB7YmlnaW50fSBhbW91bnRcbiAqIEBwYXJhbSB7YmlnaW50fSBub25jZVxuICogQHBhcmFtIHtiaWdpbnR9IGV4cGlyYXRpb25UaW1lc3RhbXBcbiAqIEBwYXJhbSB7c3RyaW5nfSB0cmFuc2ZlclRva2VuIC0gbm9uIGhleCBwcmVmaXhlZFxuICogQHBhcmFtIHtzdHJpbmd9IHJlY2VpdmVyUHVibGljS2V5IC0gbm9uIGhleCBwcmVmaXhlZFxuICogQHBhcmFtIHtzdHJpbmd9IGZlZVRva2VuIC0gbm9uIGhleCBwcmVmaXhlZFxuICogQHBhcmFtIHtiaWdpbnR9IGZlZVZhdWx0SWRcbiAqIEBwYXJhbSB7YmlnaW50fSBmZWVMaW1pdFxuICogQHBhcmFtIHtzdHJpbmd8bnVsbH0gY29uZGl0aW9uXG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiBoYXNoVHJhbnNmZXJNc2dXaXRoRmVlKFxuICBpbnN0cnVjdGlvblR5cGUsXG4gIHNlbmRlclZhdWx0SWQsXG4gIHJlY2VpdmVyVmF1bHRJZCxcbiAgYW1vdW50LFxuICBub25jZSxcbiAgZXhwaXJhdGlvblRpbWVzdGFtcCxcbiAgdHJhbnNmZXJUb2tlbixcbiAgcmVjZWl2ZXJQdWJsaWNLZXksXG4gIGZlZVRva2VuLFxuICBmZWVWYXVsdElkLFxuICBmZWVMaW1pdCxcbiAgY29uZGl0aW9uID0gbnVsbFxuKSB7XG4gIGxldCBwYWNrZWRNZXNzYWdlMSA9IHNlbmRlclZhdWx0SWQ7XG4gIHBhY2tlZE1lc3NhZ2UxID0gKHBhY2tlZE1lc3NhZ2UxIDw8IEJpZ0ludCg2NCkpICsgcmVjZWl2ZXJWYXVsdElkO1xuICBwYWNrZWRNZXNzYWdlMSA9IChwYWNrZWRNZXNzYWdlMSA8PCBCaWdJbnQoNjQpKSArIGZlZVZhdWx0SWQ7XG4gIHBhY2tlZE1lc3NhZ2UxID0gKHBhY2tlZE1lc3NhZ2UxIDw8IEJpZ0ludCgzMikpICsgbm9uY2U7XG4gIGxldCBwYWNrZWRNZXNzYWdlMiA9IGluc3RydWN0aW9uVHlwZTtcbiAgcGFja2VkTWVzc2FnZTIgPSAocGFja2VkTWVzc2FnZTIgPDwgQmlnSW50KDY0KSkgKyBhbW91bnQ7XG4gIHBhY2tlZE1lc3NhZ2UyID0gKHBhY2tlZE1lc3NhZ2UyIDw8IEJpZ0ludCg2NCkpICsgZmVlTGltaXQ7XG4gIHBhY2tlZE1lc3NhZ2UyID0gKHBhY2tlZE1lc3NhZ2UyIDw8IEJpZ0ludCgzMikpICsgZXhwaXJhdGlvblRpbWVzdGFtcDtcbiAgcGFja2VkTWVzc2FnZTIgPSAocGFja2VkTWVzc2FnZTIgPDwgQmlnSW50KDgxKSkgKyBCaWdJbnQoMCk7XG5cbiAgbGV0IG1zZ0hhc2ggPSBudWxsO1xuICBjb25zdCB0bXBIYXNoID0gc3RhcmtuZXQucGVkZXJzZW4oXG4gICAgc3RhcmtuZXQucGVkZXJzZW4odHJhbnNmZXJUb2tlbiwgZmVlVG9rZW4pLFxuICAgIHJlY2VpdmVyUHVibGljS2V5XG4gICk7XG5cbiAgaWYgKGNvbmRpdGlvbiA9PT0gbnVsbCkge1xuICAgIG1zZ0hhc2ggPSBzdGFya25ldC5wZWRlcnNlbihcbiAgICAgIHN0YXJrbmV0LnBlZGVyc2VuKHRtcEhhc2gsIHBhY2tlZE1lc3NhZ2UxLnRvU3RyaW5nKDE2KSksXG4gICAgICBwYWNrZWRNZXNzYWdlMi50b1N0cmluZygxNilcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIG1zZ0hhc2ggPSBzdGFya25ldC5wZWRlcnNlbihcbiAgICAgIHN0YXJrbmV0LnBlZGVyc2VuKFxuICAgICAgICBzdGFya25ldC5wZWRlcnNlbih0bXBIYXNoLCBjb25kaXRpb24pLFxuICAgICAgICBwYWNrZWRNZXNzYWdlMS50b1N0cmluZygxNilcbiAgICAgICksXG4gICAgICBwYWNrZWRNZXNzYWdlMi50b1N0cmluZygxNilcbiAgICApO1xuICB9XG5cbiAgYXNzZXJ0SW5SYW5nZShCaWdJbnQobXNnSGFzaCksIEJpZ0ludCgwKSwgbWF4RWNkc2FWYWwsICdtc2dIYXNoJyk7XG4gIHJldHVybiBtc2dIYXNoO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0ge2JpZ2ludH0gaW5zdHJ1Y3Rpb25UeXBlXG4gKiBAcGFyYW0ge2JpZ2ludH0gdmF1bHRTZWxsXG4gKiBAcGFyYW0ge2JpZ2ludH0gdmF1bHRCdXlcbiAqIEBwYXJhbSB7YmlnaW50fSBhbW91bnRTZWxsXG4gKiBAcGFyYW0ge2JpZ2ludH0gYW1vdW50QnV5XG4gKiBAcGFyYW0ge2JpZ2ludH0gbm9uY2VcbiAqIEBwYXJhbSB7YmlnaW50fSBleHBpcmF0aW9uVGltZXN0YW1wXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9rZW5TZWxsIC0gaGV4IHdpdGhvdXQgcHJlZml4XG4gKiBAcGFyYW0ge3N0cmluZ30gdG9rZW5CdXkgLSBoZXggd2l0aG91dCBwcmVmaXhcbiAqIEBwYXJhbSB7c3RyaW5nfSBmZWVUb2tlbiAtIGhleCB3aXRob3V0IHByZWZpeFxuICogQHBhcmFtIHtiaWdpbnR9IGZlZVZhdWx0SWRcbiAqIEBwYXJhbSB7YmlnaW50fSBmZWVMaW1pdFxuICogQHJldHVybnNcbiAqL1xuZnVuY3Rpb24gaGFzaExpbWl0T3JkZXJNc2dXaXRoRmVlKFxuICBpbnN0cnVjdGlvblR5cGUsXG4gIHZhdWx0U2VsbCxcbiAgdmF1bHRCdXksXG4gIGFtb3VudFNlbGwsXG4gIGFtb3VudEJ1eSxcbiAgbm9uY2UsXG4gIGV4cGlyYXRpb25UaW1lc3RhbXAsXG4gIHRva2VuU2VsbCxcbiAgdG9rZW5CdXksXG4gIGZlZVRva2VuLFxuICBmZWVWYXVsdElkLFxuICBmZWVMaW1pdFxuKSB7XG4gIGxldCBwYWNrZWRNZXNzYWdlMSA9IGFtb3VudFNlbGw7XG4gIHBhY2tlZE1lc3NhZ2UxID0gKHBhY2tlZE1lc3NhZ2UxIDw8IEJpZ0ludCg2NCkpICsgYW1vdW50QnV5O1xuICBwYWNrZWRNZXNzYWdlMSA9IChwYWNrZWRNZXNzYWdlMSA8PCBCaWdJbnQoNjQpKSArIGZlZUxpbWl0O1xuICBwYWNrZWRNZXNzYWdlMSA9IChwYWNrZWRNZXNzYWdlMSA8PCBCaWdJbnQoMzIpKSArIG5vbmNlO1xuICBsZXQgcGFja2VkTWVzc2FnZTIgPSBpbnN0cnVjdGlvblR5cGU7XG4gIHBhY2tlZE1lc3NhZ2UyID0gKHBhY2tlZE1lc3NhZ2UyIDw8IEJpZ0ludCg2NCkpICsgZmVlVmF1bHRJZDtcbiAgcGFja2VkTWVzc2FnZTIgPSAocGFja2VkTWVzc2FnZTIgPDwgQmlnSW50KDY0KSkgKyB2YXVsdFNlbGw7XG4gIHBhY2tlZE1lc3NhZ2UyID0gKHBhY2tlZE1lc3NhZ2UyIDw8IEJpZ0ludCg2NCkpICsgdmF1bHRCdXk7XG4gIHBhY2tlZE1lc3NhZ2UyID0gKHBhY2tlZE1lc3NhZ2UyIDw8IEJpZ0ludCgzMikpICsgZXhwaXJhdGlvblRpbWVzdGFtcDtcbiAgcGFja2VkTWVzc2FnZTIgPSAocGFja2VkTWVzc2FnZTIgPDwgQmlnSW50KDE3KSkgKyBCaWdJbnQoMCk7XG5cbiAgbGV0IG1zZ0hhc2ggPSBudWxsO1xuICBjb25zdCB0bXBIYXNoID0gc3RhcmtuZXQucGVkZXJzZW4oXG4gICAgc3RhcmtuZXQucGVkZXJzZW4odG9rZW5TZWxsLCB0b2tlbkJ1eSksXG4gICAgZmVlVG9rZW5cbiAgKTtcblxuICBtc2dIYXNoID0gc3RhcmtuZXQucGVkZXJzZW4oXG4gICAgc3RhcmtuZXQucGVkZXJzZW4odG1wSGFzaCwgcGFja2VkTWVzc2FnZTEudG9TdHJpbmcoMTYpKSxcbiAgICBwYWNrZWRNZXNzYWdlMi50b1N0cmluZygxNilcbiAgKTtcblxuICBhc3NlcnRJblJhbmdlKEJpZ0ludChtc2dIYXNoKSwgQmlnSW50KDApLCBtYXhFY2RzYVZhbCwgJ21zZ0hhc2gnKTtcbiAgcmV0dXJuIG1zZ0hhc2g7XG59XG5cbi8qKlxuIFNlcmlhbGl6ZXMgdGhlIG9yZGVyIG1lc3NhZ2UgaW4gdGhlIGNhbm9uaWNhbCBmb3JtYXQgZXhwZWN0ZWQgYnkgdGhlIHZlcmlmaWVyLlxuIHBhcnR5X2Egc2VsbHMgYW1vdW50U2VsbCBjb2lucyBvZiB0b2tlblNlbGwgZnJvbSB2YXVsdFNlbGwuXG4gcGFydHlfYSBidXlzIGFtb3VudEJ1eSBjb2lucyBvZiB0b2tlbkJ1eSBpbnRvIHZhdWx0QnV5LlxuIEV4cGVjdGVkIHR5cGVzOlxuIC0tLS0tLS0tLS0tLS0tLVxuIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gdmF1bHRTZWxsIC0gdWludDMxIChhcyBpbnQpXG4gQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YXVsdEJ1eSAtIHVpbnQzMSAoYXMgaW50KVxuIEBwYXJhbSB7YmlnaW50fSBhbW91bnRTZWxsIC0gdWludDYzIChhcyBkZWNpbWFsIHN0cmluZylcbiBAcGFyYW0ge2JpZ2ludH0gYW1vdW50QnV5IC0gdWludDYzIChhcyBkZWNpbWFsIHN0cmluZylcbiBAcGFyYW0ge3N0cmluZ30gdG9rZW5TZWxsIC0gdWludDI1NiBmaWVsZCBlbGVtZW50IHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgcHJpbWUgKGFzIGhleCBzdHJpbmcgd2l0aCAweClcbiBAcGFyYW0ge3N0cmluZ30gdG9rZW5CdXkgLSB1aW50MjU2IGZpZWxkIGVsZW1lbnQgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBwcmltZSAoYXMgaGV4IHN0cmluZyB3aXRoIDB4KVxuIEBwYXJhbSB7bnVtYmVyfSBub25jZSAtIHVpbnQzMSAoYXMgaW50KVxuIEBwYXJhbSB7bnVtYmVyfSBleHBpcmF0aW9uVGltZXN0YW1wIC0gdWludDIyIChhcyBpbnQpLlxuKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW1pdE9yZGVyTXNnSGFzaChcbiAgdmF1bHRTZWxsLFxuICB2YXVsdEJ1eSxcbiAgYW1vdW50U2VsbCxcbiAgYW1vdW50QnV5LFxuICB0b2tlblNlbGwsXG4gIHRva2VuQnV5LFxuICBub25jZSxcbiAgZXhwaXJhdGlvblRpbWVzdGFtcFxuKSB7XG4gIGFzc2VydChcbiAgICBoYXNIZXhQcmVmaXgodG9rZW5TZWxsKSAmJiBoYXNIZXhQcmVmaXgodG9rZW5CdXkpLFxuICAgICdIZXggc3RyaW5ncyBleHBlY3RlZCB0byBiZSBwcmVmaXhlZCB3aXRoIDB4LidcbiAgKTtcbiAgY29uc3QgdmF1bHRTZWxsQmkgPSBCaWdJbnQodmF1bHRTZWxsKTtcbiAgY29uc3QgdmF1bHRCdXlCaSA9IEJpZ0ludCh2YXVsdEJ1eSk7XG4gIGNvbnN0IHRva2VuU2VsbEJpID0gQmlnSW50KHRva2VuU2VsbCk7XG4gIGNvbnN0IHRva2VuQnV5QmkgPSBCaWdJbnQodG9rZW5CdXkpO1xuICBjb25zdCBub25jZUJpID0gQmlnSW50KG5vbmNlKTtcbiAgY29uc3QgZXhwaXJhdGlvblRpbWVzdGFtcEJpID0gQmlnSW50KGV4cGlyYXRpb25UaW1lc3RhbXApO1xuXG4gIGFzc2VydEluUmFuZ2UodmF1bHRTZWxsQmksIEJpZ0ludCgwKSwgdHdvUG93MzEpO1xuICBhc3NlcnRJblJhbmdlKHZhdWx0QnV5QmksIEJpZ0ludCgwKSwgdHdvUG93MzEpO1xuICBhc3NlcnRJblJhbmdlKGFtb3VudFNlbGwsIEJpZ0ludCgwKSwgdHdvUG93NjMpO1xuICBhc3NlcnRJblJhbmdlKGFtb3VudEJ1eSwgQmlnSW50KDApLCB0d29Qb3c2Myk7XG4gIGFzc2VydEluUmFuZ2UodG9rZW5TZWxsQmksIEJpZ0ludCgwKSwgcHJpbWUpO1xuICBhc3NlcnRJblJhbmdlKHRva2VuQnV5QmksIEJpZ0ludCgwKSwgcHJpbWUpO1xuICBhc3NlcnRJblJhbmdlKG5vbmNlQmksIEJpZ0ludCgwKSwgdHdvUG93MzEpO1xuICBhc3NlcnRJblJhbmdlKGV4cGlyYXRpb25UaW1lc3RhbXBCaSwgQmlnSW50KDApLCB0d29Qb3cyMik7XG5cbiAgY29uc3QgaW5zdHJ1Y3Rpb25UeXBlID0gQmlnSW50KDApO1xuICByZXR1cm4gaGFzaE1zZyhcbiAgICBpbnN0cnVjdGlvblR5cGUsXG4gICAgdmF1bHRTZWxsQmksXG4gICAgdmF1bHRCdXlCaSxcbiAgICBhbW91bnRTZWxsLFxuICAgIGFtb3VudEJ1eSxcbiAgICBub25jZUJpLFxuICAgIGV4cGlyYXRpb25UaW1lc3RhbXBCaSxcbiAgICB0b2tlblNlbGwuc3Vic3RyaW5nKDIpLFxuICAgIHRva2VuQnV5LnN1YnN0cmluZygyKVxuICApO1xufVxuXG4vKipcbiBTYW1lIGFzIGdldExpbWl0T3JkZXJNc2dIYXNoLCBidXQgYWxzbyByZXF1aXJlcyB0aGUgZmVlIGluZm8uXG5cbiBFeHBlY3RlZCB0eXBlcyBvZiBmZWUgaW5mbyBwYXJhbXM6XG4gLS0tLS0tLS0tLS0tLS0tXG4gQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YXVsdFNlbGwgLSB1aW50MzEgKGFzIGludClcbiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHZhdWx0QnV5IC0gdWludDMxIChhcyBpbnQpXG4gQHBhcmFtIHtiaWdpbnR9IGFtb3VudFNlbGwgLSB1aW50NjMgKGFzIGRlY2ltYWwgc3RyaW5nKVxuIEBwYXJhbSB7YmlnaW50fSBhbW91bnRCdXkgLSB1aW50NjMgKGFzIGRlY2ltYWwgc3RyaW5nKVxuIEBwYXJhbSB7c3RyaW5nfSB0b2tlblNlbGwgLSB1aW50MjU2IGZpZWxkIGVsZW1lbnQgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBwcmltZSAoYXMgaGV4IHN0cmluZyB3aXRoIDB4KVxuIEBwYXJhbSB7c3RyaW5nfSB0b2tlbkJ1eSAtIHVpbnQyNTYgZmllbGQgZWxlbWVudCBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIHByaW1lIChhcyBoZXggc3RyaW5nIHdpdGggMHgpXG4gQHBhcmFtIHtudW1iZXJ9IG5vbmNlIC0gdWludDMxIChhcyBpbnQpXG4gQHBhcmFtIHtudW1iZXJ9IGV4cGlyYXRpb25UaW1lc3RhbXAgLSB1aW50MjIgKGFzIGludCkuXG4gQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBmZWVWYXVsdElkIC0gdWludDMxIChhcyBpbnQpXG4gQHBhcmFtIHtiaWdpbnR9IGZlZUxpbWl0IC0gdWludDYzIChhcyBkZWNpbWFsIHN0cmluZylcbiBAcGFyYW0ge3N0cmluZ30gZmVlVG9rZW4gLSB1aW50MjU2IGZpZWxkIGVsZW1lbnQgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBwcmltZSAoYXMgaGV4IHN0cmluZyB3aXRoIDB4KVxuKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW1pdE9yZGVyTXNnSGFzaFdpdGhGZWUoXG4gIHZhdWx0U2VsbCxcbiAgdmF1bHRCdXksXG4gIGFtb3VudFNlbGwsXG4gIGFtb3VudEJ1eSxcbiAgdG9rZW5TZWxsLFxuICB0b2tlbkJ1eSxcbiAgbm9uY2UsXG4gIGV4cGlyYXRpb25UaW1lc3RhbXAsXG4gIGZlZVRva2VuLFxuICBmZWVWYXVsdElkLFxuICBmZWVMaW1pdFxuKSB7XG4gIGFzc2VydChcbiAgICBoYXNIZXhQcmVmaXgodG9rZW5TZWxsKSAmJiBoYXNIZXhQcmVmaXgodG9rZW5CdXkpLFxuICAgICdIZXggc3RyaW5ncyBleHBlY3RlZCB0byBiZSBwcmVmaXhlZCB3aXRoIDB4LidcbiAgKTtcbiAgY29uc3QgdmF1bHRTZWxsQmkgPSBCaWdJbnQodmF1bHRTZWxsKTtcbiAgY29uc3QgdmF1bHRCdXlCaSA9IEJpZ0ludCh2YXVsdEJ1eSk7XG4gIGNvbnN0IHRva2VuU2VsbEJpID0gQmlnSW50KHRva2VuU2VsbCk7XG4gIGNvbnN0IHRva2VuQnV5QmkgPSBCaWdJbnQodG9rZW5CdXkpO1xuICBjb25zdCBub25jZUJpID0gQmlnSW50KG5vbmNlKTtcbiAgY29uc3QgZXhwaXJhdGlvblRpbWVzdGFtcEJpID0gQmlnSW50KGV4cGlyYXRpb25UaW1lc3RhbXApO1xuICBjb25zdCBmZWVUb2tlbkJpID0gQmlnSW50KGZlZVRva2VuKTtcbiAgY29uc3QgZmVlVmF1bHRJZEJpID0gQmlnSW50KGZlZVZhdWx0SWQpO1xuXG4gIGFzc2VydEluUmFuZ2UodmF1bHRTZWxsQmksIEJpZ0ludCgwKSwgdHdvUG93MzEpO1xuICBhc3NlcnRJblJhbmdlKHZhdWx0QnV5QmksIEJpZ0ludCgwKSwgdHdvUG93MzEpO1xuICBhc3NlcnRJblJhbmdlKGFtb3VudFNlbGwsIEJpZ0ludCgwKSwgdHdvUG93NjMpO1xuICBhc3NlcnRJblJhbmdlKGFtb3VudEJ1eSwgQmlnSW50KDApLCB0d29Qb3c2Myk7XG4gIGFzc2VydEluUmFuZ2UodG9rZW5TZWxsQmksIEJpZ0ludCgwKSwgcHJpbWUpO1xuICBhc3NlcnRJblJhbmdlKHRva2VuQnV5QmksIEJpZ0ludCgwKSwgcHJpbWUpO1xuICBhc3NlcnRJblJhbmdlKG5vbmNlQmksIEJpZ0ludCgwKSwgdHdvUG93MzEpO1xuICBhc3NlcnRJblJhbmdlKGV4cGlyYXRpb25UaW1lc3RhbXBCaSwgQmlnSW50KDApLCB0d29Qb3cyMik7XG4gIGFzc2VydEluUmFuZ2UoZmVlVG9rZW5CaSwgQmlnSW50KDApLCBwcmltZSk7XG4gIGFzc2VydEluUmFuZ2UoZmVlVmF1bHRJZEJpLCBCaWdJbnQoMCksIHR3b1BvdzMxKTtcbiAgYXNzZXJ0SW5SYW5nZShmZWVMaW1pdCwgQmlnSW50KDApLCB0d29Qb3c2Myk7XG5cbiAgY29uc3QgaW5zdHJ1Y3Rpb25UeXBlID0gQmlnSW50KDMpO1xuICByZXR1cm4gaGFzaExpbWl0T3JkZXJNc2dXaXRoRmVlKFxuICAgIGluc3RydWN0aW9uVHlwZSxcbiAgICB2YXVsdFNlbGxCaSxcbiAgICB2YXVsdEJ1eUJpLFxuICAgIGFtb3VudFNlbGwsXG4gICAgYW1vdW50QnV5LFxuICAgIG5vbmNlQmksXG4gICAgZXhwaXJhdGlvblRpbWVzdGFtcEJpLFxuICAgIHRva2VuU2VsbC5zdWJzdHJpbmcoMiksXG4gICAgdG9rZW5CdXkuc3Vic3RyaW5nKDIpLFxuICAgIGZlZVRva2VuLnN1YnN0cmluZygyKSxcbiAgICBmZWVWYXVsdElkQmksXG4gICAgZmVlTGltaXRcbiAgKTtcbn1cblxuLyoqXG4gU2VyaWFsaXplcyB0aGUgdHJhbnNmZXIgbWVzc2FnZSBpbiB0aGUgY2Fub25pY2FsIGZvcm1hdCBleHBlY3RlZCBieSB0aGUgdmVyaWZpZXIuXG4gVGhlIHNlbmRlciB0cmFuc2ZlciAnYW1vdW50JyBjb2lucyBvZiAndG9rZW4nIGZyb20gdmF1bHQgd2l0aCBpZCBzZW5kZXJWYXVsdElkIHRvIHZhdWx0IHdpdGggaWRcbiByZWNlaXZlclZhdWx0SWQuIFRoZSByZWNlaXZlcidzIHB1YmxpYyBrZXkgaXMgcmVjZWl2ZXJQdWJsaWNLZXkuXG4gSWYgYSBjb25kaXRpb24gaXMgYWRkZWQsIGl0IGlzIHZlcmlmaWVkIGJlZm9yZSBleGVjdXRpbmcgdGhlIHRyYW5zZmVyLiBUaGUgZm9ybWF0IG9mIHRoZSBjb25kaXRpb25cbiBpcyBkZWZpbmVkIGJ5IHRoZSBhcHBsaWNhdGlvbi5cbiBFeHBlY3RlZCB0eXBlczpcbiAtLS0tLS0tLS0tLS0tLS1cbiBAcGFyYW0ge2JpZ2ludH0gYW1vdW50IC0gdWludDYzIChhcyBkZWNpbWFsIHN0cmluZylcbiBAcGFyYW0ge251bWJlcn0gbm9uY2UgLSB1aW50MzEgKGFzIGludClcbiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHNlbmRlclZhdWx0SWQgLSB1aW50MzEgKGFzIGludClcbiBAcGFyYW0ge3N0cmluZ30gdG9rZW4gLSB1aW50MjU2IGZpZWxkIGVsZW1lbnQgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBwcmltZSAoYXMgaGV4IHN0cmluZyB3aXRoIDB4KVxuIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gcmVjZWl2ZXJWYXVsdElkIC0gdWludDMxIChhcyBpbnQpXG4gQHBhcmFtIHtzdHJpbmd9IHJlY2VpdmVyUHVibGljS2V5IC0gdWludDI1NiBmaWVsZCBlbGVtZW50IHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgcHJpbWUgKGFzIGhleCBzdHJpbmcgd2l0aCAweClcbiBAcGFyYW0ge251bWJlcn0gZXhwaXJhdGlvblRpbWVzdGFtcCAtIHVpbnQyMiAoYXMgaW50KS5cbiBAcGFyYW0ge3N0cmluZ3xudWxsfSBbY29uZGl0aW9uXSAtIHVpbnQyNTYgZmllbGQgZWxlbWVudCBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIHByaW1lIChhcyBoZXggc3RyaW5nIHdpdGggMHgpXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zZmVyTXNnSGFzaChcbiAgYW1vdW50LFxuICBub25jZSxcbiAgc2VuZGVyVmF1bHRJZCxcbiAgdG9rZW4sXG4gIHJlY2VpdmVyVmF1bHRJZCxcbiAgcmVjZWl2ZXJQdWJsaWNLZXksXG4gIGV4cGlyYXRpb25UaW1lc3RhbXAsXG4gIGNvbmRpdGlvblxuKSB7XG4gIGFzc2VydChcbiAgICBoYXNIZXhQcmVmaXgodG9rZW4pICYmXG4gICAgICBoYXNIZXhQcmVmaXgocmVjZWl2ZXJQdWJsaWNLZXkpICYmXG4gICAgICAoIWNvbmRpdGlvbiB8fCBoYXNIZXhQcmVmaXgoY29uZGl0aW9uKSksXG4gICAgJ0hleCBzdHJpbmdzIGV4cGVjdGVkIHRvIGJlIHByZWZpeGVkIHdpdGggMHguJ1xuICApO1xuICBjb25zdCBub25jZUJpID0gQmlnSW50KG5vbmNlKTtcbiAgY29uc3Qgc2VuZGVyVmF1bHRJZEJpID0gQmlnSW50KHNlbmRlclZhdWx0SWQpO1xuICBjb25zdCB0b2tlbkJpID0gQmlnSW50KHRva2VuKTtcbiAgY29uc3QgcmVjZWl2ZXJWYXVsdElkQmkgPSBCaWdJbnQocmVjZWl2ZXJWYXVsdElkKTtcbiAgY29uc3QgcmVjZWl2ZXJQdWJsaWNLZXlCaSA9IEJpZ0ludChyZWNlaXZlclB1YmxpY0tleSk7XG4gIGNvbnN0IGV4cGlyYXRpb25UaW1lc3RhbXBCaSA9IEJpZ0ludChleHBpcmF0aW9uVGltZXN0YW1wKTtcblxuICBhc3NlcnRJblJhbmdlKGFtb3VudCwgQmlnSW50KDApLCB0d29Qb3c2Myk7XG4gIGFzc2VydEluUmFuZ2Uobm9uY2VCaSwgQmlnSW50KDApLCB0d29Qb3czMSk7XG4gIGFzc2VydEluUmFuZ2Uoc2VuZGVyVmF1bHRJZEJpLCBCaWdJbnQoMCksIHR3b1BvdzMxKTtcbiAgYXNzZXJ0SW5SYW5nZSh0b2tlbkJpLCBCaWdJbnQoMCksIHByaW1lKTtcbiAgYXNzZXJ0SW5SYW5nZShyZWNlaXZlclZhdWx0SWRCaSwgQmlnSW50KDApLCB0d29Qb3czMSk7XG4gIGFzc2VydEluUmFuZ2UocmVjZWl2ZXJQdWJsaWNLZXlCaSwgQmlnSW50KDApLCBwcmltZSk7XG4gIGFzc2VydEluUmFuZ2UoZXhwaXJhdGlvblRpbWVzdGFtcEJpLCBCaWdJbnQoMCksIHR3b1BvdzIyKTtcbiAgbGV0IGluc3RydWN0aW9uVHlwZSA9IEJpZ0ludCgxKTtcbiAgaWYgKGNvbmRpdGlvbikge1xuICAgIGFzc2VydEluUmFuZ2UoQmlnSW50KGNvbmRpdGlvbiksIEJpZ0ludCgwKSwgcHJpbWUsICdjb25kaXRpb24nKTtcbiAgICBpbnN0cnVjdGlvblR5cGUgPSBCaWdJbnQoMik7XG4gIH1cbiAgcmV0dXJuIGhhc2hNc2coXG4gICAgaW5zdHJ1Y3Rpb25UeXBlLFxuICAgIHNlbmRlclZhdWx0SWRCaSxcbiAgICByZWNlaXZlclZhdWx0SWRCaSxcbiAgICBhbW91bnQsXG4gICAgQmlnSW50KDApLFxuICAgIG5vbmNlQmksXG4gICAgZXhwaXJhdGlvblRpbWVzdGFtcEJpLFxuICAgIHRva2VuLnN1YnN0cmluZygyKSxcbiAgICByZWNlaXZlclB1YmxpY0tleS5zdWJzdHJpbmcoMiksXG4gICAgY29uZGl0aW9uXG4gICk7XG59XG5cbi8qKlxuIFNhbWUgYXMgZ2V0VHJhbnNmZXJNc2dIYXNoLCBidXQgYWxzbyByZXF1aXJlcyB0aGUgZmVlIGluZm8uXG5cbiBFeHBlY3RlZCB0eXBlcyBvZiBmZWUgaW5mbyBwYXJhbXM6XG4gLS0tLS0tLS0tLS0tLS0tXG4gQHBhcmFtIHtiaWdpbnR9IGFtb3VudCAtIHVpbnQ2MyAoYXMgZGVjaW1hbCBzdHJpbmcpXG4gQHBhcmFtIHtudW1iZXJ9IG5vbmNlIC0gdWludDMxIChhcyBpbnQpXG4gQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBzZW5kZXJWYXVsdElkIC0gdWludDMxIChhcyBpbnQpXG4gQHBhcmFtIHtzdHJpbmd9IHRva2VuIC0gdWludDI1NiBmaWVsZCBlbGVtZW50IHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgcHJpbWUgKGFzIGhleCBzdHJpbmcgd2l0aCAweClcbiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHJlY2VpdmVyVmF1bHRJZCAtIHVpbnQzMSAoYXMgaW50KVxuIEBwYXJhbSB7c3RyaW5nfSByZWNlaXZlclN0YXJrS2V5IC0gdWludDI1NiBmaWVsZCBlbGVtZW50IHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgcHJpbWUgKGFzIGhleCBzdHJpbmcgd2l0aCAweClcbiBAcGFyYW0ge251bWJlcn0gZXhwaXJhdGlvblRpbWVzdGFtcCAtIHVpbnQyMiAoYXMgaW50KS5cbiBAcGFyYW0ge3N0cmluZ3xudWxsfHVuZGVmaW5lZH0gY29uZGl0aW9uIC0gdWludDI1NiBmaWVsZCBlbGVtZW50IHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgcHJpbWUgKGFzIGhleCBzdHJpbmcgd2l0aCAweClcbiBAcGFyYW0ge3N0cmluZ30gZmVlVG9rZW4gLSB1aW50MjU2IGZpZWxkIGVsZW1lbnQgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBwcmltZSAoYXMgaGV4IHN0cmluZyB3aXRoIDB4KVxuIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gZmVlVmF1bHRJZCAtIHVpbnQzMSAoYXMgaW50KVxuIEBwYXJhbSB7YmlnaW50fSBmZWVMaW1pdCAtIHVpbnQ2MyAoYXMgZGVjaW1hbCBzdHJpbmcpXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zZmVyTXNnSGFzaFdpdGhGZWUoXG4gIGFtb3VudCxcbiAgbm9uY2UsXG4gIHNlbmRlclZhdWx0SWQsXG4gIHRva2VuLFxuICByZWNlaXZlclZhdWx0SWQsXG4gIHJlY2VpdmVyU3RhcmtLZXksXG4gIGV4cGlyYXRpb25UaW1lc3RhbXAsXG4gIGNvbmRpdGlvbixcbiAgZmVlVG9rZW4sXG4gIGZlZVZhdWx0SWQsXG4gIGZlZUxpbWl0XG4pIHtcbiAgYXNzZXJ0KFxuICAgIGhhc0hleFByZWZpeChmZWVUb2tlbikgJiZcbiAgICAgIGhhc0hleFByZWZpeCh0b2tlbikgJiZcbiAgICAgIGhhc0hleFByZWZpeChyZWNlaXZlclN0YXJrS2V5KSAmJlxuICAgICAgKCFjb25kaXRpb24gfHwgaGFzSGV4UHJlZml4KGNvbmRpdGlvbikpLFxuICAgICdIZXggc3RyaW5ncyBleHBlY3RlZCB0byBiZSBwcmVmaXhlZCB3aXRoIDB4LidcbiAgKTtcbiAgY29uc3Qgbm9uY2VCaSA9IEJpZ0ludChub25jZSk7XG4gIGNvbnN0IHNlbmRlclZhdWx0SWRCaSA9IEJpZ0ludChzZW5kZXJWYXVsdElkKTtcbiAgY29uc3QgdG9rZW5CaSA9IEJpZ0ludCh0b2tlbik7XG4gIGNvbnN0IHJlY2VpdmVyVmF1bHRJZEJpID0gQmlnSW50KHJlY2VpdmVyVmF1bHRJZCk7XG4gIGNvbnN0IHJlY2VpdmVyU3RhcmtLZXlCaSA9IEJpZ0ludChyZWNlaXZlclN0YXJrS2V5KTtcbiAgY29uc3QgZXhwaXJhdGlvblRpbWVzdGFtcEJpID0gQmlnSW50KGV4cGlyYXRpb25UaW1lc3RhbXApO1xuICBjb25zdCBmZWVUb2tlbkJpID0gQmlnSW50KGZlZVRva2VuKTtcbiAgY29uc3QgZmVlVmF1bHRJZEJpID0gQmlnSW50KGZlZVZhdWx0SWQpO1xuXG4gIGFzc2VydEluUmFuZ2UoYW1vdW50LCBCaWdJbnQoMCksIHR3b1BvdzYzKTtcbiAgYXNzZXJ0SW5SYW5nZShub25jZUJpLCBCaWdJbnQoMCksIHR3b1BvdzMxKTtcbiAgYXNzZXJ0SW5SYW5nZShzZW5kZXJWYXVsdElkQmksIEJpZ0ludCgwKSwgdHdvUG93MzEpO1xuICBhc3NlcnRJblJhbmdlKHRva2VuQmksIEJpZ0ludCgwKSwgcHJpbWUpO1xuICBhc3NlcnRJblJhbmdlKHJlY2VpdmVyVmF1bHRJZEJpLCBCaWdJbnQoMCksIHR3b1BvdzMxKTtcbiAgYXNzZXJ0SW5SYW5nZShyZWNlaXZlclN0YXJrS2V5QmksIEJpZ0ludCgwKSwgcHJpbWUpO1xuICBhc3NlcnRJblJhbmdlKGV4cGlyYXRpb25UaW1lc3RhbXBCaSwgQmlnSW50KDApLCB0d29Qb3cyMik7XG4gIGFzc2VydEluUmFuZ2UoZmVlVG9rZW5CaSwgQmlnSW50KDApLCBwcmltZSk7XG4gIGFzc2VydEluUmFuZ2UoZmVlVmF1bHRJZEJpLCBCaWdJbnQoMCksIHR3b1BvdzMxKTtcbiAgYXNzZXJ0SW5SYW5nZShmZWVMaW1pdCwgQmlnSW50KDApLCB0d29Qb3c2Myk7XG5cbiAgbGV0IGluc3RydWN0aW9uVHlwZSA9IEJpZ0ludCg0KTtcbiAgaWYgKGNvbmRpdGlvbikge1xuICAgIGFzc2VydEluUmFuZ2UoQmlnSW50KGNvbmRpdGlvbiksIEJpZ0ludCgwKSwgcHJpbWUsICdjb25kaXRpb24nKTtcbiAgICBpbnN0cnVjdGlvblR5cGUgPSBCaWdJbnQoNSk7XG4gIH1cbiAgcmV0dXJuIGhhc2hUcmFuc2Zlck1zZ1dpdGhGZWUoXG4gICAgaW5zdHJ1Y3Rpb25UeXBlLFxuICAgIHNlbmRlclZhdWx0SWRCaSxcbiAgICByZWNlaXZlclZhdWx0SWRCaSxcbiAgICBhbW91bnQsXG4gICAgbm9uY2VCaSxcbiAgICBleHBpcmF0aW9uVGltZXN0YW1wQmksXG4gICAgdG9rZW4uc3Vic3RyaW5nKDIpLFxuICAgIHJlY2VpdmVyU3RhcmtLZXkuc3Vic3RyaW5nKDIpLFxuICAgIGZlZVRva2VuLnN1YnN0cmluZygyKSxcbiAgICBmZWVWYXVsdElkQmksXG4gICAgZmVlTGltaXQsXG4gICAgY29uZGl0aW9uXG4gICk7XG59XG4iXX0=
export interface Fee {
tokenId: string;
sourceVaultId: number | string;
feeLimit: string;
feeLimit: bigint;
}

@@ -9,3 +9,3 @@ export interface Transfer {

receiverVaultId: number | string;
amount: string;
amount: bigint;
token: string;

@@ -21,4 +21,4 @@ receiverPublicKey: string;

vaultIdBuy: number | string;
amountSell: string;
amountBuy: string;
amountSell: bigint;
amountBuy: bigint;
tokenSell: string;

@@ -25,0 +25,0 @@ tokenBuy: string;

@@ -6,3 +6,3 @@ {

"license": "MIT",
"version": "2.0.2",
"version": "3.0.0",
"main": "lib.js",

@@ -9,0 +9,0 @@ "dependencies": {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc